units-2.19/0000777000175000017500000000000013474326073012102 5ustar adrianadrianunits-2.19/units.man0000664000175000017500000040100513473351424013734 0ustar adrianadrian.\"Do not edit this file. It was created from units.texinfo .\"using texi2man version 1.01w on Tue 28 May 2019 08:32:20 PM EDT .\"This manual is for GNU Units (version 2.18), .\"which performs units conversions and units calculations. .\" .\"Copyright \(co 1996, 1997, 1999, 2000, 2001, 2002, 2004, 2005, 2007, .\"2011\-2019 Free Software Foundation, Inc. .\" .\"Permission is granted to copy, distribute and/or modify this document .\"under the terms of the GNU Free Documentation License, Version 1.3 or .\"any later version published by the Free Software Foundation; with no .\"Invariant Sections, with no Front-Cover Texts, and with no Back-Cover .\"Texts. .TH UNITS 1 "19 March 2019" .\" .if \n(.g \{\ . \" ensure that ASCII circumflex U+005E (^) is not remapped . tr ^\(ha . \" override translation in troffrc . ie '\*[.T]'utf8' .tr `\(oq'\(cq . \" override mapping of ` to 60h with Tascii; assume . \" we don't need a backquote for an example . el .if n .tr `' .\} .\" ellipsis: space periods with troff but not with nroff .if n .ds El \&... .if t .ds El \&.\ .\ . .if n \{\ . tr \(bu* . \" override translation to MIDDLE DOT . if \n(.g .if '\*(.T'utf8' .tr \(bu\(bu . if \n(.g .if '\*(.T'cp1252' .tr \(bu\(bu . if \n(.g .if '\*(.T'ansi' .tr \(bu\(bu .\} .\" .\" Extensions to man macros .\" .\" set handling of single quotes: 0=>straight, >0=>left and right .nr tQ 0 .\" groff only .if '\*(.T'utf8' .nr tQ 1 .\" non-standard devices: Windows code page 1252 .if '\*(.T'cp1252' .nr tQ 1 .if '\*(.T'ansi' .nr tQ 1 .\" Constant-width font .de CW .hy 0 .\" nroff can't show CW font, so enclose in single quotes .if n \{\ . ie \\n(.g \{\ . \" use proper opening and closing single quotes . ie \\n(tQ>0 \{\ . ie \\n(.$>2 \&\\$1\(oq\\$2\(cq\\$3 . el \&\(oq\\$1\(cq\\$2 . \} . \" ensure neutral single quotes with Tascii . el \{\ . ie \\n(.$>2 \&\\$1\(aq\\$2\(aq\\$3 . el \&\(aq\\$1\(aq\\$2 . \} . \} . \" legacy nroff doesn't have 'aq', so use ' and hope for the best . el \{\ . ie \\n(.$>2 \&\\$1'\\$2'\\$3 . el \&'\\$1'\\$2 . \} .\} .\" troff can change fonts, so no need for quotes .if t \{\ . ie \\n(.$>2 \&\\$1\f(CW\\$2\fR\\$3 . el \&\f(CW\\$1\fR\\$2 .\} .hy 14 .. .\" Constant-width oblique font .de CI .hy 0 .\" nroff can't show CW font, so enclose in single quotes .if n \{\ . ie \\n(.g \{\ . \" use proper opening and closing single quotes . ie \\n(tQ \{\ . ie \\n(.$>2 \&\\$1\(oq\fI\\$2\fR\(cq\\$3 . el \&\(oq\fI\\$1\fR\(cq\\$2 . \} . \" ensure neutral single quotes with Tascii . el \{\ . ie \\n(.$>2 \&\\$1\(aq\fI\\$2\fR\(aq\\$3 . el \&\(aq\fI\\$1\fR\(aq\\$2 . \} . \} . \" legacy nroff doesn't have 'aq', so use ' and hope for the best . el \{ . ie \\n(.$>2 \&\\$1'\fI\\$2\fR'\\$3 . el \&'\fI\\$1\fR'\\$2 . \} .\} .\" troff can change fonts, so no need for quotes .if t \{\ . ie \\n(.$>2 \&\\$1\f(CI\\$2\fR\\$3 . el \&\f(CI\\$1\fR\\$2 .\} .hy 14 .. .\" Constant-width font with quotes with nroff and troff .de CQ .hy 0 .if n \{\ . ie \\n(.g \{\ . \" use proper opening and closing single quotes . ie \\n(tQ \{\ . ie \\n(.$>2 \&\\$1\(oq\\$2\(cq\\$3 . el \&\(oq\\$1\(cq\\$2 . \} . \" ensure neutral single quotes with Tascii . el \{\ . ie \\n(.$>2 \&\\$1\(aq\\$2\(aq\\$3 . el \&\(aq\\$1\(aq\\$2 . \} . \} . \" legacy nroff doesn't have 'aq', so use ' and hope for the best . el \{\ . ie \\n(.$>2 \&\\$1'\\$2'\\$3 . el \&'\\$1'\\$2 . \} .\} .if t \{\ . ie \\n(.g \{\ . ie \\n(.$>2 \&\\$1\(oq\f(CW\\$2\fR\(cq\\$3 . el \&\(oq\f(CW\\$1\fR\(cq\\$2 . \} . \" legacy troff doesn't have 'oq' or 'cq' . el \{\ . ie \\n(.$>2 \&\\$1`\f(CW\\$2\fR'\\$3 . el \&`\f(CW\\$1\fR'\\$2 . \} .\} .hy 14 .. .\" equivalent of @set codequoteundirected .de aQ .if \\n(.g .tr '\(aq .. .\" equivalent of @clear codequoteundirected .de aE .if \\n(.g \{ .ie \\n(tQ>0 .tr '\(cq .el .tr '' \} .. .\" opening and closing double quotes .\" groff: true opening and closing quotes .ie \n(.g \{\ . ds lQ \(lq . ds rQ \(rq .\} .el \{\ .\" legacy nroff: ASCII neutral double quotes . ie n \{\ . ds lQ "" . ds rQ "" . \} .\" legacy troff: adjacent opening and closing single quotes . el \{\ . ds lQ `` . ds rQ '' . \} .\} .\" Display start .de DS .hy 0 .if t .in +4n .if n .in +3n .nf .. .\" Display end .de DE .fi .in .hy 14 .. .\" Example start .de ES .DS .if t \{\ .if '\\$1'S' \{\ .nr Ex 1 .ps -1 .\} .el .nr Ex 0 .nr mE \\n(.f .ft CW .\} .. .\" Example end .de EE .if t \{\ .ft \\n(mE .if \\n(Ex=1 .ps .\} .DE .. .SH NAME units \(em unit conversion and calculation program .\" hack to prevent very thick fraction bars with gropdf .\" '-1' makes thickness proportional to type size .if \n(.g .if t \Z@\D't -1'@ .PP .SH SYNOPSIS .PP .CW units .RI [ options ] .RI [ from-unit .RI [ to-unit ]] .PP .SH DESCRIPTION The .CW "units" program converts quantities expressed in various systems of measurement to their equivalents in other systems of measurement. Like many similar programs, it can handle multiplicative scale changes. It can also handle nonlinear conversions such as Fahrenheit to Celsius; see \fITemperature Conversions\fP. The program can also perform conversions from and to sums of units, such as converting between meters and feet plus inches. .PP Basic operation is simple: you enter the units that you want to convert \fIfrom\fP and the units that you want to convert \fIto\fP. You can use the program interactively with prompts, or you can use it from the command line. .PP Beyond simple unit conversions, .CW "units" can be used as a general-purpose scientific calculator that keeps track of units in its calculations. You can form arbitrary complex mathematical expressions of dimensions including sums, products, quotients, powers, and even roots of dimensions. Thus you can ensure accuracy and dimensional consistency when working with long expressions that involve many different units that may combine in complex ways; for an illustration, see \fIComplicated Unit Expressions\fP. .PP The units are defined in an external data file. You can use the extensive data file that comes with this program, or you can provide your own data file to suit your needs. You can also use your own data file to supplement the standard data file. .PP You can change the default behavior of .CW "units" with various options given on the command line. See \fIInvoking Units\fP for a description of the available options. .PP .SH INTERACTING WITH \f(BIUNITS\fP To invoke .CW "units" for interactive use, type .CI "units" at your shell prompt. The program will print something like this: .PP .ES Currency exchange rates from www.timegenie.com on 2014-03-05 2860 units, 109 prefixes, 85 nonlinear units You have: .EE .PP At the .CQ "You\ have:" prompt, type the quantity and units that you are converting \fIfrom\fP. For example, if you want to convert ten meters to feet, type .CI "10 meters" . Next, .CW "units" will print .CQ "You\ want:" . You should type the units you want to convert \fIto\fP. To convert to feet, you would type .CI "feet" . If the .CW "readline" library was compiled in, then \fItab\fP will complete unit names. See \fIReadline Support\fP for more information about .CW "readline" . To quit the program type .CI "quit" or .CI "exit" at either prompt. .PP The result will be displayed in two ways. The first line of output, which is marked with a .CQ "*" to indicate multiplication, gives the result of the conversion you have asked for. The second line of output, which is marked with a .CQ "/" to indicate division, gives the inverse of the conversion factor. If you convert 10 meters to feet, .CW "units" will print .PP .ES * 32.808399 / 0.03048 .EE .PP which tells you that 10 meters equals about 32.8 feet. The second number gives the conversion in the opposite direction. In this case, it tells you that 1 foot is equal to about 0.03 dekameters since the dekameter is 10 meters. It also tells you that 1/32.8 is about 0.03. .PP The .CW "units" program prints the inverse because sometimes it is a more convenient number. In the example above, for example, the inverse value is an exact conversion: a foot is exactly 0.03048 dekameters. But the number given the other direction is inexact. .PP If you convert grains to pounds, you will see the following: .PP .ES You have: grains You want: pounds * 0.00014285714 / 7000 .EE .PP From the second line of the output you can immediately see that a grain is equal to a seven thousandth of a pound. This is not so obvious from the first line of the output. If you find the output format confusing, try using the .CQ "--verbose" option: .PP .ES You have: grain You want: aeginamina grain = 0.00010416667 aeginamina grain = (1 / 9600) aeginamina .EE .PP If you request a conversion between units that measure reciprocal dimensions, then .CW "units" will display the conversion results with an extra note indicating that reciprocal conversion has been done: .PP .ES You have: 6 ohms You want: siemens reciprocal conversion * 0.16666667 / 6 .EE .PP Reciprocal conversion can be suppressed by using the .CQ "--strict" option. As usual, use the .CQ "--verbose" option to get more comprehensible output: .PP .ES You have: tex You want: typp reciprocal conversion 1 / tex = 496.05465 typp 1 / tex = (1 / 0.0020159069) typp You have: 20 mph You want: sec/mile reciprocal conversion 1 / 20 mph = 180 sec/mile 1 / 20 mph = (1 / 0.0055555556) sec/mile .EE .PP If you enter incompatible unit types, the .CW "units" program will print a message indicating that the units are not conformable and it will display the reduced form for each unit: .PP .ES You have: ergs/hour You want: fathoms kg^2 / day conformability error 2.7777778e-11 kg m^2 / sec^3 2.1166667e-05 kg^2 m / sec .EE .PP If you only want to find the reduced form or definition of a unit, simply press \fIEnter\fP at the .CQ "You\ want:" prompt. Here is an example: .PP .ES You have: jansky You want: Definition: fluxunit = 1e-26 W/m^2 Hz = 1e-26 kg / s^2 .EE .PP The output from .CW "units" indicates that the jansky is defined to be equal to a fluxunit which in turn is defined to be a certain combination of watts, meters, and hertz. The fully reduced (and in this case somewhat more cryptic) form appears on the far right. .PP Some named units are treated as dimensionless in some situations. These units include the radian and steradian. These units will be treated as equal to 1 in units conversions. Power is equal to torque times angular velocity. This conversion can only be performed if the radian is dimensionless. .PP .ES You have: (14 ft lbf) (12 radians/sec) You want: watts * 227.77742 / 0.0043902509 .EE .PP It is also possible to compute roots and other non-integer powers of dimensionless units; this allows computations such as the altitude of geosynchronous orbit: .PP .ES You have: cuberoot(G earthmass / (circle/siderealday)^2) - earthradius You want: miles * 22243.267 / 4.4957425e-05 .EE .PP Named dimensionless units are not treated as dimensionless in other contexts. They cannot be used as exponents so for example, .CQ "meter^radian" is forbidden. .PP If you want a list of options you can type .CI "?" at the .CQ "You\ want:" prompt. The program will display a list of named units that are conformable with the unit that you entered at the .CQ "You\ have:" prompt above. Conformable unit \fIcombinations\fP will not appear on this list. .PP Typing .CI "help" at either prompt displays a short help message. You can also type .CI "help" followed by a unit name. This will invoke a pager on the units data base at the point where that unit is defined. You can read the definition and comments that may give more details or historical information about the unit. (You can generally quit out of the page by pressing .CQ "q" .) .PP Typing .CI "search" \fItext\fP will display a list of all of the units whose names contain \fItext\fP as a substring along with their definitions. This may help in the case where you aren't sure of the right unit name. .PP .SH USING \f(BIUNITS\fP NON-INTERACTIVELY The .CW "units" program can perform units conversions non-interactively from the command line. To do this, type the command, type the original unit expression, and type the new units you want. If a units expression contains non-alphanumeric characters, you may need to protect it from interpretation by the shell using single or double quote characters. .PP If you type .PP .ES units "2 liters" quarts .EE .PP then .CW "units" will print .PP .ES * 2.1133764 / 0.47317647 .EE .PP and then exit. The output tells you that 2 liters is about 2.1 quarts, or alternatively that a quart is about 0.47 times 2 liters. .PP .CW "units" does not require a space between a numerical value and the unit, so the previous example can be given as .PP .ES units 2liters quarts .EE .PP to avoid having to quote the first argument. .PP If the conversion is successful, then .CW "units" will return success (zero) to the calling environment. If you enter non-conformable units, then .CW "units" will print a message giving the reduced form of each unit and it will return failure (nonzero) to the calling environment. .PP When you invoke .CW "units" with only one argument, it will print the definition of the specified unit. It will return failure if the unit is not defined and success if the unit is defined. .PP .SH UNIT DEFINITIONS The conversion information is read from a units data file that is called .CQ "definitions.units" and is usually located in the .CQ "/usr/share/units" directory. If you invoke .CW "units" with the .CQ "-V" option, it will print the location of this file. The default file includes definitions for all familiar units, abbreviations and metric prefixes. It also includes many obscure or archaic units. Many common spelled-out numbers (e.g., .CQ "seventeen" ) are recognized. .PP Many constants of nature are defined, including these: .PP .ES pi \fRratio of circumference to diameter\fP c \fRspeed of light\fP e \fRcharge on an electron\fP force \fRacceleration of gravity\fP mole \fRAvogadro's number\fP water \fRpressure per unit height of water\fP Hg \fRpressure per unit height of mercury\fP au \fRastronomical unit\fP k \fRBoltzman's constant\fP mu0 \fRpermeability of vacuum\fP epsilon0 \fRpermittivity of vacuum\fP G \fRGravitational constant\fP mach \fRspeed of sound\fP .EE .PP The standard data file includes atomic masses for all of the elements and numerous other constants. Also included are the densities of various ingredients used in baking so that .CQ "2\ cups flour_sifted" can be converted to .CQ "grams" . This is not an exhaustive list. Consult the units data file to see the complete list, or to see the definitions that are used. .PP The .CQ "pound" is a unit of mass. To get force, multiply by the force conversion unit .CQ "force" or use the shorthand .CQ "lbf" . (Note that .CQ "g" is already taken as the standard abbreviation for the gram.) The unit .CQ "ounce" is also a unit of mass. The fluid ounce is .CQ "fluidounce" or .CQ "floz" . When British capacity units differ from their US counterparts, such as the British Imperial gallon, the unit is defined both ways with .CQ "br" and .CQ "us" prefixes. Your locale settings will determine the value of the unprefixed unit. Currency is prefixed with its country name: .CQ "belgiumfranc" , .CQ "britainpound" . .PP When searching for a unit, if the specified string does not appear exactly as a unit name, then the .CW "units" program will try to remove a trailing .CQ "s" , .CQ "es" . Next units will replace a trailing .CQ "ies" with .CQ "y" . If that fails, .CW "units" will check for a prefix. The database includes all of the standard metric prefixes. Only one prefix is permitted per unit, so .CQ "micromicrofarad" will fail. However, prefixes can appear alone with no unit following them, so .CQ "micro*microfarad" will work, as will .CQ "micro microfarad" . .PP To find out which units and prefixes are available, read the standard units data file, which is extensively annotated. .PP .SS English Customary Units English customary units differ in various ways in different regions. In Britain a complex system of volume measurements featured different gallons for different materials such as a wine gallon and ale gallon that different by twenty percent. This complexity was swept away in 1824 by a reform that created an entirely new gallon, the British Imperial gallon defined as the volume occupied by ten pounds of water. Meanwhile in the USA the gallon is derived from the 1707 Winchester wine gallon, which is 231 cubic inches. These gallons differ by about twenty percent. By default if .CW "units" runs in the .CQ "en_GB" locale you will get the British volume measures. If it runs in the .CQ "en_US" locale you will get the US volume measures. In other locales the default values are the US definitions. If you wish to force different definitions, then set the environment variable .CW "UNITS_ENGLISH" to either .CQ "US" or .CQ "GB" to set the desired definitions independent of the locale. .PP Before 1959, the value of a yard (and other units of measure defined in terms of it) differed slightly among English-speaking countries. In 1959, Australia, Canada, New Zealand, the United Kingdom, the United States, and South Africa adopted the Canadian value of 1\ yard = 0.9144\ m (exactly), which was approximately halfway between the values used by the UK and the US; it had the additional advantage of making 1\ inch = 2.54\ cm (exactly). This new standard was termed the \fIInternational Yard\fP. Australia, Canada, and the UK then defined all customary lengths in terms of the International Yard (Australia did not define the furlong or rod); because many US land surveys were in terms of the pre-1959 units, the US continued to define customary surveyors' units (furlong, chain, rod, and link) in terms of the previous value for the foot, which was termed the \fIUS survey foot\fP. The US defined a \fIUS survey mile\fP as 5280 US survey feet, and defined a \fIstatute mile\fP as a US survey mile. The US values for these units differ from the international values by about 2\ ppm. .PP The .CW "units" program uses the international values for these units; the US values can be obtained by using either the .CQ "US" or the .CQ "survey" prefix. In either case, the simple familiar relationships among the units are maintained, e.g., 1 .CQ "furlong" = 660 .CQ "ft" , and 1 .CQ "USfurlong" = 660 .CQ "USft" , though the metric equivalents differ slightly between the two cases. The .CQ "US" prefix or the .CQ "survey" prefix can also be used to obtain the US survey mile and the value of the US yard prior to 1959, e.g., .CQ "USmile" or .CQ "surveymile" (but \fInot\fP .CQ "USsurveymile" ). To get the US value of the statute mile, use either .CQ "USstatutemile" or .CQ "USmile" . .PP Except for distances that extend over hundreds of miles (such as in the US State Plane Coordinate System), the differences in the miles are usually insignificant: .PP .ES You have: 100 surveymile - 100 mile You want: inch * 12.672025 / 0.078913984 .EE .PP The pre-1959 UK values for these units can be obtained with the prefix .CQ "UK" . .PP In the US, the acre is officially defined in terms of the US survey foot, but .CW "units" uses a definition based on the international foot. If you want the official US acre use .CQ "USacre" and similarly use .CQ "USacrefoot" for the official US version of that unit. The difference between these units is about 4 parts per million. .PP .SH UNIT EXPRESSIONS .SS Operators You can enter more complicated units by combining units with operations such as multiplication, division, powers, addition, subtraction, and parentheses for grouping. You can use the customary symbols for these operators when .CW "units" is invoked with its default options. Additionally, .CW "units" supports some extensions, including high priority multiplication using a space, and a high priority numerical division operator .CQ ( "|" ) that can simplify some expressions. .PP You multiply units using a space or an asterisk .CQ ( "*" ). The next example shows both forms: .PP .ES You have: arabicfoot * arabictradepound * force You want: ft lbf * 0.7296 / 1.370614 .EE .PP You can divide units using the slash .CQ ( "/" ) or with .CQ "per" : .PP .ES You have: furlongs per fortnight You want: m/s * 0.00016630986 / 6012.8727 .EE .PP You can use parentheses for grouping: .PP .ES You have: (1/2) kg / (kg/meter) You want: league * 0.00010356166 / 9656.0833 .EE .PP White space surrounding operators is optional, so the previous example could have used .CQ "(1/2)kg/(kg/meter)" . As a consequence, however, hyphenated spelled-out numbers (e.g., .CQ "forty-two" ) cannot be used; .CQ "forty-two" is interpreted as .CQ "40 - 2" . .PP Multiplication using a space has a higher precedence than division using a slash and is evaluated left to right; in effect, the first .CQ "/" character marks the beginning of the denominator of a unit expression. This makes it simple to enter a quotient with several terms in the denominator: .CQ "J\ /\ mol\ K" . The .CQ "*" and .CQ "/" operators have the same precedence, and are evaluated left to right; if you multiply with .CQ "*" , you must group the terms in the denominator with parentheses: .CQ "J\ /\ (mol\ *\ K)" . .PP The higher precedence of the space operator may not always be advantageous. For example, .CQ "m/s\ s/day" is equivalent to .CQ "m\ /\ s\ s\ day" and has dimensions of length per time cubed. Similarly, .CQ "1/2\ meter" refers to a unit of reciprocal length equivalent to 0.5/meter, perhaps not what you would intend if you entered that expression. The get a half meter you would need to use parentheses: .CQ "(1/2)\ meter" . The .CQ "*" operator is convenient for multiplying a sequence of quotients. For example, .CQ "m/s\ *\ s/day" is equivalent to .CQ "m/day" . Similarly, you could write .CQ "1/2\ *\ meter" to get half a meter. .PP The .CW "units" program supports another option for numerical fractions: you can indicate division of \fInumbers\fP with the vertical bar .CQ ( "|" ), so if you wanted half a meter you could write .CQ "1|2\ meter" . You cannot use the vertical bar to indicate division of non-numerical units (e.g., .CQ "m|s" results in an error message). .PP Powers of units can be specified using the .CQ "^" character, as shown in the following example, or by simple concatenation of a unit and its exponent: .CQ "cm3" is equivalent to .CQ "cm^3" ; if the exponent is more than one digit, the .CQ "^" is required. You can also use .CQ "**" as an exponent operator. .PP .ES You have: cm^3 You want: gallons * 0.00026417205 / 3785.4118 .EE .PP Concatenation only works with a single unit name: if you write .CQ "(m/s)2" , .CW "units" will treat it as multiplication by 2. When a unit includes a prefix, exponent operators apply to the combination, so .CQ "centimeter3" gives cubic centimeters. If you separate the prefix from the unit with any multiplication operator (e.g., .CQ "centi meter^3" ), the prefix is treated as a separate unit, so the exponent applies only to the unit without the prefix. The second example is equivalent to .CQ "centi * (meter^3)" , and gives a hundredth of a cubic meter, not a cubic centimeter. The .CW "units" program is limited internally to products of 99 units; accordingly, expressions like .CQ "meter^100" or .CQ "joule^34" (represented internally as .CQ "kg^34\ m^68\ /\ s^68" ) will fail. .PP The .CQ "|" operator has the highest precedence, so you can write the square root of two thirds as .CQ "2|3^1|2" . The .CQ "^" operator has the second highest precedence, and is evaluated right to left, as usual: .PP .ES You have: 5 * 2^3^2 You want: Definition: 2560 .EE .PP With a dimensionless base unit, any dimensionless exponent is meaningful (e.g., .CQ "pi^exp(2.371)" ). Even though angle is sometimes treated as dimensionless, exponents cannot have dimensions of angle: .PP .ES You have: 2^radian ^ Exponent not dimensionless .EE .PP If the base unit is not dimensionless, the exponent must be a rational number \fIp\fP/\fIq\fP, and the dimension of the unit must be a power of \fIq\fP, so .CQ "gallon^2|3" works but .CQ "acre^2|3" fails. An exponent using the slash .CQ ( "/" ) operator (e.g., .CQ "gallon^(2/3)" ) is also acceptable; the parentheses are needed because the precedence of .CQ "^" is higher than that of .CQ "/" . Since .CW "units" cannot represent dimensions with exponents greater than 99, a fully reduced exponent must have \fIq\fP\ <\ 100. When raising a non-dimensionless unit to a power, .CW "units" attempts to convert a decimal exponent to a rational number with \fIq\fP\ <\ 100. If this is not possible .CW "units" displays an error message: .PP .ES You have: ft^1.234 Base unit not dimensionless; rational exponent required .EE .PP A decimal exponent must match its rational representation to machine precision, so .CQ "acre^1.5" works but .CQ "gallon^0.666" does not. .PP .SS Sums and Differences of Units You may sometimes want to add values of different units that are outside the SI. You may also wish to use .CW "units" as a calculator that keeps track of units. Sums of conformable units are written with the .CQ "+" character, and differences with the .CQ "-" character. .PP .ES You have: 2 hours + 23 minutes + 32 seconds You want: seconds * 8612 / 0.00011611705 .EE .PP .ES You have: 12 ft + 3 in You want: cm * 373.38 / 0.0026782366 .EE .PP .ES You have: 2 btu + 450 ft lbf You want: btu * 2.5782804 / 0.38785542 .EE .PP The expressions that are added or subtracted must reduce to identical expressions in primitive units, or an error message will be displayed: .PP .ES You have: 12 printerspoint - 4 heredium ^ Illegal sum of non-conformable units .EE .PP As usual, the precedence for .CQ "+" and .CQ "-" is lower than that of the other operators. A fractional quantity such as 2\ 1/2 cups can be given as .CQ "(2+1|2) cups" ; the parentheses are necessary because multiplication has higher precedence than addition. If you omit the parentheses, .CW "units" attempts to add .CQ "2" and .CQ "1|2 cups" , and you get an error message: .PP .ES You have: 2+1|2 cups ^ Illegal sum or difference of non-conformable units .EE .PP The expression could also be correctly written as .CQ "(2+1/2) cups" . If you write .CQ "2\ 1|2 cups" the space is interpreted as \fImultiplication\fP so the result is the same as .CQ "1 cup" . .PP The .CQ "+" and .CQ "-" characters sometimes appears in exponents like .CQ "3.43e+8" . This leads to an ambiguity in an expression like .CQ "3e+2 yC" . The unit .CQ "e" is a small unit of charge, so this can be regarded as equivalent to .CQ "(3e+2) yC" or .CQ "(3 e)+(2 yC)" . This ambiguity is resolved by always interpreting .CQ "+" and .CQ "-" as part of an exponent if possible. .PP .SS Numbers as Units For .CW "units" , numbers are just another kind of unit. They can appear as many times as you like and in any order in a unit expression. For example, to find the volume of a box that is 2 ft by 3 ft by 12 ft in steres, you could do the following: .PP .ES You have: 2 ft 3 ft 12 ft You want: stere * 2.038813 / 0.49048148 You have: $ 5 / yard You want: cents / inch * 13.888889 / 0.072 .EE .PP And the second example shows how the dollar sign in the units conversion can precede the five. Be careful: .CW "units" will interpret .CQ "$5" with no space as equivalent to .CQ "dollar^5" . .PP .SS Built-in Functions Several built-in functions are provided: .CQ "sin" , .CQ "cos" , .CQ "tan" , .CQ "ln" , .CQ "log" , .CQ "exp" , .CQ "acos" , .CQ "atan" , .CQ "asin" , .CQ "cosh" , .CQ "sinh" , .CQ "tanh" , .CQ "acosh" , .CQ "asinh" , and .CQ "atanh" . The .CQ "sin" , .CQ "cos" , and .CQ "tan" functions require either a dimensionless argument or an argument with dimensions of angle. .PP .ES You have: sin(30 degrees) You want: Definition: 0.5 You have: sin(pi/2) You want: Definition: 1 You have: sin(3 kg) ^ Unit not dimensionless .EE .PP The other functions on the list require dimensionless arguments. The inverse trigonometric functions return arguments with dimensions of angle. .PP The .CQ "ln" and .CQ "log" functions give natural log and log base 10 respectively. To obtain logs for any integer base, enter the desired base immediately after .CQ "log" . For example, to get log base 2 you would write .CQ "log2" and to get log base 47 you could write .CQ "log47" . .PP .ES You have: log2(32) You want: Definition: 5 You have: log3(32) You want: Definition: 3.1546488 You have: log4(32) You want: Definition: 2.5 You have: log32(32) You want: Definition: 1 You have: log(32) You want: Definition: 1.50515 You have: log10(32) You want: Definition: 1.50515 .EE .PP If you wish to take roots of units, you may use the .CQ "sqrt" or .CQ "cuberoot" functions. These functions require that the argument have the appropriate root. You can obtain higher roots by using fractional exponents: .PP .ES You have: sqrt(acre) You want: feet * 208.71074 / 0.0047913202 You have: (400 W/m^2 / stefanboltzmann)^(1/4) You have: Definition: 289.80882 K You have: cuberoot(hectare) ^ Unit not a root .EE .PP .SS Previous Result You can insert the result of the previous conversion using the underscore .CQ ( "_" ). It is useful when you want to convert the same input to several different units, for example .PP .ES You have: 2.3 tonrefrigeration You want: btu/hr * 27600 / 3.6231884e-005 You have: _ You want: kW * 8.0887615 / 0.12362832 .EE .PP Suppose you want to do some deep frying that requires an oil depth of 2\ inches. You have 1/2 gallon of oil, and want to know the largest-diameter pan that will maintain the required depth. The nonlinear unit .CQ "circlearea" gives the \fIradius\fP of the circle (see \fIOther Nonlinear Units\fP, for a more detailed description) in SI units; you want the \fIdiameter\fP in \fIinches\fP: .PP .ES You have: 1|2 gallon / 2 in You want: circlearea 0.10890173 m You have: 2 _ You want: in * 8.5749393 / 0.1166189 .EE .PP In most cases, surrounding white space is optional, so the previous example could have used .CQ "2_" . If .CQ "_" follows a non-numerical unit symbol, however, the space is required: .PP .ES You have: m_ ^ Parse error .EE .PP When .CQ "_" is followed by a digit, the operation is multiplication rather than exponentiation, so that .CQ "_2" , is equivalent to .CQ "_\ *\ 2" rather than .CQ "_^2" . .PP You can use the .CQ "_" symbol any number of times; for example, .PP .ES You have: m You want: Definition: 1 m You have: _ _ You want: Definition: 1 m^2 .EE .PP Using .CQ "_" before a conversion has been performed (e.g., immediately after invocation) generates an error: .aQ .PP .ES You have: _ ^ No previous result; '_' not set .EE .aE .PP Accordingly, .CQ "_" serves no purpose when .CW "units" is invoked non-interactively. .PP If .CW "units" is invoked with the .CQ "--verbose" option (see \fIInvoking Units\fP), the value of .CQ "_" is not expanded: .PP .ES You have: mile You want: ft mile = 5280 ft mile = (1 / 0.00018939394) ft You have: _ You want: m _ = 1609.344 m _ = (1 / 0.00062137119) m .EE .PP You can give .CQ "_" at the .CQ "You\ want:" prompt, but it usually is not very useful. .PP .SS Complicated Unit Expressions The .CW "units" program is especially helpful in ensuring accuracy and dimensional consistency when converting lengthy unit expressions. .if t .ig ++ For example, one form of the Darcy-Weisbach fluid-flow equation is .RS 5n .PP Delta \fIP\fP = (8 / pi)^2 (\fIrho\fP \fIfLQ\fP^2) / \fId\fP^5, .RE .PP where Delta \fIP\fP is the pressure drop, \fIrho\fP is the mass density, \fIf\fP is the (dimensionless) friction factor, \fIL\fP is the length of the pipe, \fIQ\fP is the volumetric flow rate, and \fId\fP is the pipe diameter. It might be desired to have the equation in the form .RS 5n .PP Delta \fIP\fP = A1 \fIrho\fP \fIfLQ\fP^2 / \fId\fP^5 .RE .PP .++ .if n .ig ++ .EQ delim $$ .EN For example, one form of the Darcy\-Weisbach fluid-flow equation is .RS 5n .PP .EQ DELTA P = 8 over pi sup 2 rho fL Q sup 2 over d sup 5 , .EN .RE .PP where $DELTA P$ is the pressure drop, $rho$ is the mass density, $f$ is the (dimensionless) friction factor, $L$ is the length of the pipe, $Q$ is the volumetric flow rate, and $d$ is the pipe diameter. It might be desired to have the equation in the form .RS 5n .PP .EQ DELTA P = A sub 1 rho fL Q sup 2 over d sup 5 .EN .RE .PP .EQ delim off .EN .++ .PP that accepted the user's normal units; for typical units used in the US, the required conversion could be something like .PP .ES You have: (8/pi^2)(lbm/ft^3)ft(ft^3/s)^2(1/in^5) You want: psi * 43.533969 / 0.022970568 .EE .PP The parentheses allow individual terms in the expression to be entered naturally, as they might be read from the formula. Alternatively, the multiplication could be done with the .CQ "*" rather than a space; then parentheses are needed only around .CQ "ft^3/s" because of its exponent: .PP .ES You have: 8/pi^2 * lbm/ft^3 * ft * (ft^3/s)^2 /in^5 You want: psi * 43.533969 / 0.022970568 .EE .PP Without parentheses, and using spaces for multiplication, the previous conversion would need to be entered as .PP .ES You have: 8 lb ft ft^3 ft^3 / pi^2 ft^3 s^2 in^5 You want: psi * 43.533969 / 0.022970568 .EE .PP .SS Backwards Compatibility: .CQ "*" and .CQ "-" The original .CW "units" assigned multiplication a higher precedence than division using the slash. This differs from the usual precedence rules, which give multiplication and division equal precedence, and can be confusing for people who think of units as a calculator. .PP The star operator .CQ ( "*" ) included in this .CW "units" program has, by default, the same precedence as division, and hence follows the usual precedence rules. For backwards compatibility you can invoke .CW "units" with the .CQ "--oldstar" option. Then .CQ "*" has a higher precedence than division, and the same precedence as multiplication using the space. .PP Historically, the hyphen .CQ ( "-" ) has been used in technical publications to indicate products of units, and the original .CW "units" program treated it as a multiplication operator. Because .CW "units" provides several other ways to obtain unit products, and because .CQ "-" is a subtraction operator in general algebraic expressions, .CW "units" treats the binary .CQ "-" as a subtraction operator by default. For backwards compatibility use the .CQ "--product" option, which causes .CW "units" to treat the binary .CQ "-" operator as a product operator. When .CQ "-" is a multiplication operator it has the same precedence as multiplication with a space, giving it a higher precedence than division. .PP When .CQ "-" is used as a unary operator it negates its operand. Regardless of the .CW "units" options, if .CQ "-" appears after .CQ "(" or after .CQ "+" , then it will act as a negation operator. So you can always compute 20 degrees minus 12 minutes by entering .CQ "20\ degrees + -12\ arcmin" . You must use this construction when you define new units because you cannot know what options will be in force when your definition is processed. .PP .SH NONLINEAR UNIT CONVERSIONS Nonlinear units are represented using functional notation. They make possible nonlinear unit conversions such as temperature. .PP .SS Temperature Conversions Conversions between temperatures are different from linear conversions between temperature \fIincrements\fP\(emsee the example below. The absolute temperature conversions are handled by units starting with .CQ "temp" , and you must use functional notation. The temperature-increment conversions are done using units starting with .CQ "deg" and they do not require functional notation. .PP .ES You have: tempF(45) You want: tempC 7.2222222 You have: 45 degF You want: degC * 25 / 0.04 .EE .PP Think of .CQ "tempF(\fIx\fP)" not as a function but as a notation that indicates that \fIx\fP should have units of .CQ "tempF" attached to it. See \fIDefining Nonlinear Units\fP. The first conversion shows that if it's 45 degrees Fahrenheit outside, it's 7.2 degrees Celsius. The second conversion indicates that a change of 45 degrees Fahrenheit corresponds to a change of 25 degrees Celsius. The conversion from .CQ "tempF(\fIx\fP)" is to absolute temperature, so that .PP .ES You have: tempF(45) You want: degR * 504.67 / 0.0019814929 .EE .PP gives the same result as .PP .ES You have: tempF(45) You want: tempR * 504.67 / 0.0019814929 .EE .PP But if you convert .CQ "tempF(\fIx\fP)" to .CQ "degC" , the output is probably not what you expect: .PP .ES You have: tempF(45) You want: degC * 280.37222 / 0.0035666871 .EE .PP The result is the temperature in K, because .CQ "degC" is defined as .CQ "K" , the Kelvin. For consistent results, use the .CQ "temp\fIX\fP" units when converting to a temperature rather than converting a temperature increment. .PP The .CQ "tempC()" and .CQ "tempF()" definitions are limited to positive absolute temperatures, and giving a value that would result in a negative absolute temperature generates an error message: .PP .ES You have: tempC(-275) ^ Argument of function outside domain ^ .EE .PP .SS Other Nonlinear Units Some other examples of nonlinear units are numerous different ring sizes and wire gauges, the grit sizes used for abrasives, the decibel scale, shoe size, scales for the density of sugar (e.g., baume). The standard data file also supplies units for computing the area of a circle and the volume of a sphere. See the standard units data file for more details. Wire gauges with multiple zeroes are signified using negative numbers where two zeroes is .CQ "-1" . Alternatively, you can use the synonyms .CQ "g00" , .CQ "g000" , and so on that are defined in the standard units data file. .PP .ES You have: wiregauge(11) You want: inches * 0.090742002 / 11.020255 You have: brwiregauge(g00) You want: inches * 0.348 / 2.8735632 You have: 1 mm You want: wiregauge 18.201919 You have: grit_P(600) You want: grit_ansicoated 342.76923 .EE .PP The last example shows the conversion from P graded sand paper, which is the European standard and may be marked \*(lQP600\*(rQ on the back, to the USA standard. .PP You can compute the area of a circle using the nonlinear unit, .CQ "circlearea" . You can also do this using the circularinch or circleinch. The next example shows two ways to compute the area of a circle with a five inch radius and one way to compute the volume of a sphere with a radius of one meter. .PP .ES You have: circlearea(5 in) You want: in2 * 78.539816 / 0.012732395 You have: 10^2 circleinch You want: in2 * 78.539816 / 0.012732395 You have: spherevol(meter) You want: ft3 * 147.92573 / 0.0067601492 .EE .PP The inverse of a nonlinear conversion is indicated by prefixing a tilde .CQ ( "~" ) to the nonlinear unit name: .PP .ES You have: ~wiregauge(0.090742002 inches) You want: Definition: 11 .EE .PP You can give a nonlinear unit definition without an argument or parentheses, and press \fIEnter\fP at the .CQ "You\ want:" prompt to get the definition of a nonlinear unit; if the definition is not valid for all real numbers, the range of validity is also given. If the definition requires specific units this information is also displayed: .PP .ES You have: tempC Definition: tempC(x) = x K + stdtemp defined for x >= -273.15 You have: ~tempC Definition: ~tempC(tempC) = (tempC +(-stdtemp))/K defined for tempC >= 0 K You have: circlearea Definition: circlearea(r) = pi r^2 r has units m .EE .PP To see the definition of the inverse use the .CQ "~" notation. In this case the parameter in the functional definition will usually be the name of the unit. Note that the inverse for .CQ "tempC" shows that it requires units of .CQ "K" in the specification of the allowed range of values. Nonlinear unit conversions are described in more detail in \fIDefining Nonlinear Units\fP. .PP .SH UNIT LISTS: CONVERSION TO SUMS OF UNITS Outside of the SI, it is sometimes desirable to convert a single unit to a sum of units\(emfor example, feet to feet plus inches. The conversion \fIfrom\fP sums of units was described in \fISums and Differences of Units\fP, and is a simple matter of adding the units with the .CQ "+" sign: .PP .ES You have: 12 ft + 3 in + 3|8 in You want: ft * 12.28125 / 0.081424936 .EE .PP Although you can similarly write a sum of units to convert \fIto\fP, the result will not be the conversion to the units in the sum, but rather the conversion to the particular sum that you have entered: .PP .ES You have: 12.28125 ft You want: ft + in + 1|8 in * 11.228571 / 0.089058524 .EE .PP The unit expression given at the .CQ "You\ want:" prompt is equivalent to asking for conversion to multiples of .CQ "1\ ft + 1\ in + 1|8\ in" , which is 1.09375 ft, so the conversion in the previous example is equivalent to .PP .ES You have: 12.28125 ft You want: 1.09375 ft * 11.228571 / 0.089058524 .EE .PP In converting to a sum of units like miles, feet and inches, you typically want the largest integral value for the first unit, followed by the largest integral value for the next, and the remainder converted to the last unit. You can do this conversion easily with .CW "units" using a special syntax for lists of units. You must list the desired units in order from largest to smallest, separated by the semicolon .CQ ( ";" ) character: .PP .ES You have: 12.28125 ft You want: ft;in;1|8 in 12 ft + 3 in + 3|8 in .EE .PP The conversion always gives integer coefficients on the units in the list, except possibly the last unit when the conversion is not exact: .PP .ES You have: 12.28126 ft You want: ft;in;1|8 in 12 ft + 3 in + 3.00096 * 1|8 in .EE .PP The order in which you list the units is important: .PP .ES You have: 3 kg You want: oz;lb 105 oz + 0.051367866 lb You have: 3 kg You want: lb;oz 6 lb + 9.8218858 oz .EE .PP Listing ounces before pounds produces a technically correct result, but not a very useful one. You must list the units in descending order of size in order to get the most useful result. .PP Ending a unit list with the separator .CQ ";" has the same effect as repeating the last unit on the list, so .CQ "ft;in;1|8 in;" is equivalent to .CQ "ft;in;1|8 in;1|8 in" . With the example above, this gives .PP .ES You have: 12.28126 ft You want: ft;in;1|8 in; 12 ft + 3 in + 3|8 in + 0.00096 * 1|8 in .EE .PP in effect separating the integer and fractional parts of the coefficient for the last unit. If you instead prefer to round the last coefficient to an integer you can do this with the .CQ "--round" .CQ ( "-r" ) option. With the previous example, the result is .PP .ES You have: 12.28126 ft You want: ft;in;1|8 in 12 ft + 3 in + 3|8 in (rounded down to nearest 1|8 in) .EE .PP When you use the .CQ "-r" option, repeating the last unit on the list has no effect (e.g., .CQ "ft;in;1|8 in;1|8 in" is equivalent to .CQ "ft;in;1|8 in" ), and hence neither does ending a list with a .CQ ";" . With a single unit and the .CQ "-r" option, a terminal .CQ ";" \fIdoes\fP have an effect: it causes .CW "units" to treat the single unit as a list and produce a rounded value for the single unit. Without the extra .CQ ";" , the .CQ "-r" option has no effect on single unit conversions. This example shows the output using the .CQ "-r" option: .PP .ES You have: 12.28126 ft You want: in * 147.37512 / 0.0067854058 You have: 12.28126 ft You want: in; 147 in (rounded down to nearest in) .EE .PP Each unit that appears in the list must be conformable with the first unit on the list, and of course the listed units must also be conformable with the unit that you enter at the .CQ "You\ have:" prompt. .PP .ES You have: meter You want: ft;kg ^ conformability error ft = 0.3048 m kg = 1 kg You have: meter You want: lb;oz conformability error 1 m 0.45359237 kg .EE .PP In the first case, .CW "units" reports the disagreement between units appearing on the list. In the second case, .CW "units" reports disagreement between the unit you entered and the desired conversion. This conformability error is based on the first unit on the unit list. .PP Other common candidates for conversion to sums of units are angles and time: .PP .ES You have: 23.437754 deg You want; deg;arcmin;arcsec 23 deg + 26 arcmin + 15.9144 arcsec You have: 7.2319 hr You want: hr;min;sec 7 hr + 13 min + 54.84 sec .EE .PP In North America, recipes for cooking typically measure ingredients by volume, and use units that are not always convenient multiples of each other. Suppose that you have a recipe for 6 and you wish to make a portion for 1. If the recipe calls for 2\ 1/2 cups of an ingredient, you might wish to know the measurements in terms of measuring devices you have available, you could use .CW "units" and enter .PP .ES You have: (2+1|2) cup / 6 You want: cup;1|2 cup;1|3 cup;1|4 cup;tbsp;tsp;1|2 tsp;1|4 tsp 1|3 cup + 1 tbsp + 1 tsp .EE .PP By default, if a unit in a list begins with fraction of the form 1|\fIx\fP and its multiplier is an integer, the fraction is given as the product of the multiplier and the numerator; for example, .PP .ES You have: 12.28125 ft You want: ft;in;1|8 in; 12 ft + 3 in + 3|8 in .EE .PP In many cases, such as the example above, this is what is wanted, but sometimes it is not. For example, a cooking recipe for 6 might call for 5\ 1/4 cup of an ingredient, but you want a portion for 2, and your 1-cup measure is not available; you might try .PP .ES You have: (5+1|4) cup / 3 You want: 1|2 cup;1|3 cup;1|4 cup 3|2 cup + 1|4 cup .EE .PP This result might be fine for a baker who has a 1\ 1/2-cup measure (and recognizes the equivalence), but it may not be as useful to someone with more limited set of measures, who does want to do additional calculations, and only wants to know \*(lQHow many 1/2-cup measures to I need to add?\*(rQ After all, that's what was actually asked. With the .CQ "--show-factor" option, the factor will not be combined with a unity numerator, so that you get .PP .ES You have: (5+1|4) cup / 3 You want: 1|2 cup;1|3 cup;1|4 cup 3 * 1|2 cup + 1|4 cup .EE .PP A user-specified fractional unit with a numerator other than 1 is never overridden, however\(emif a unit list specifies .CQ "3|4 cup;1|2 cup" , a result equivalent to 1\ 1/2 cups will always be shown as .CQ "2 * 3|4\ cup" whether or not the .CQ "--show-factor" option is given. .PP Some applications for unit lists may be less obvious. Suppose that you have a postal scale and wish to ensure that it's accurate at 1\ oz, but have only metric calibration weights. You might try .PP .ES You have: 1 oz You want: 100 g;50 g; 20 g;10 g;5 g;2 g;1 g; 20 g + 5 g + 2 g + 1 g + 0.34952312 * 1 g .EE .PP You might then place one each of the 20\ g, 5\ g, 2\ g, and 1\ g weights on the scale and hope that it indicates close to .PP .ES You have: 20 g + 5 g + 2 g + 1 g You want: oz; 0.98767093 oz .EE .PP Appending .CQ ";" to .CQ "oz" forces a one-line display that includes the unit; here the integer part of the result is zero, so it is not displayed. .PP A unit list such as .PP .ES cup;1|2\ cup;1|3\ cup;1|4\ cup;tbsp;tsp;1|2\ tsp;1|4\ tsp .EE .PP can be tedious to enter. The .CW "units" program provides shorthand names for some common combinations: .PP .ES hms \fRhours, minutes, seconds\fP dms \fRangle: degrees, minutes, seconds\fP time \fRyears, days, hours, minutes and seconds\fP usvol \fRUS cooking volume: cups and smaller\fP .EE .PP Using these shorthands, or \fIunit list aliases\fP, you can do the following conversions: .PP .ES You have: anomalisticyear You want: time 1 year + 25 min + 3.4653216 sec You have: 1|6 cup You want: usvol 2 tbsp + 2 tsp .EE .PP You cannot combine a unit list alias with other units: it must appear alone at the .CQ "You\ want:" prompt. .PP You can display the definition of a unit list alias by entering it at the .CQ "You\ have:" prompt: .PP .ES You have: dms Definition: unit list, deg;arcmin;arcsec .EE .PP When you specify compact output with .CQ "--compact" , .CQ "--terse" or .CQ "-t" and perform conversion to a unit list, .CW "units" lists the conversion factors for each unit in the list, separated by semicolons. .PP .ES You have: year You want: day;min;sec 365;348;45.974678 .EE .PP Unlike the case of regular output, zeros \fIare\fP included in this output list: .PP .ES You have: liter You want: cup;1|2 cup;1|4 cup;tbsp 4;0;0;3.6280454 .EE .PP .SH USING CGS UNITS The SI\(eman extension of the MKS (meter\-kilogram\-second) system\(emhas largely supplanted the older CGS (centimeter\-gram\-second) system, but CGS units are still used in a few specialized fields, especially in physics where they lead to a more elegant formulation of Maxwell's equations. Conversions between SI and CGS involving mechanical units are straightforward, involving powers of 10 (e.g., 1\ m\ =\ 100\ cm). Conversions involving electromagnetic units are more complicated, and .CW "units" supports three different systems of CGS units: electrostatic units (ESU), electromagnetic units (EMU), and the Gaussian system. The differences between these systems arise from different choices made for proportionality constants in electromagnetic equations. Coulomb's law gives electrostatic force between two charges separated by a distance .EQ delim $$ .EN .if n \fIr\fP: .if t $r$: .RS 5n .PP .if n \fIF\fP = \fIk\fP_C \fIq\fP_1\ \fIq\fP_2\ /\ \fIr\fP^2. .if t \{ .EQ F = k sub roman C { q sub 1 q sub 2} over r sup 2. .EN .\} .RE .PP .PP Ampere's law gives the electromagnetic force per unit length between two current-carrying conductors separated by a distance .if n \fIr\fP: .if t $r$: .RS 5n .PP .if n \fIF\fP/\fIl\fP = 2 \fIk\fP_A \fII\fP_1\ \fII\fP_2\ /\ \fIr\fP. .if t \{ .EQ F over l = 2 k sub roman A { I sub 1 I sub 2 } over r . .EN .\} .RE .PP .PP The two constants, .if n \fIk\fP_C and \fIk\fP_A, .if t $k sub roman C$ and $k sub roman A$, are related by the square of the speed of light: .if n \fIk\fP_A\ =\ \fIk\fP_C\ /\ \fIc\fP^2. .if t $k sub roman A = k sub roman C / c sup 2$. .PP In the SI, the constants have dimensions, and an additional base unit, the ampere, measures electric current. The CGS systems do not define new base units, but express charge and current as derived units in terms of mass, length, and time. In the ESU system, the constant for Coulomb's law is chosen to be unity and dimensionless, which defines the unit of charge. In the EMU system, the constant for Ampere's law is chosen to be unity and dimensionless, which defines a unit of current. The Gaussian system usually uses the ESU units for charge and current; it chooses another constant so that the units for the electric and magnetic fields are the same. .PP The dimensions of electrical quantities in the various CGS systems are different from the SI dimensions for the same units; strictly, conversions between these systems and SI are not possible. But units in different systems relate to the same physical quantities, so there is a \fIcorrespondence\fP between these units. The .CW "units" program defines the units so that you can convert between corresponding units in the various systems. .PP .SS Specifying CGS Units The CGS definitions involve .if n cm^(1/2) and g^(1/2), .if t cm$"" sup {1/2}$ and g$"" sup {1/2}$, which is problematic because .CW "units" does not normally support fractional roots of base units. The .CQ "--units" .CQ ( "-u" ) option allows selection of a CGS unit system and works around this restriction by introducing base units for the square roots of length and mass: .CQ "sqrt_cm" and .CQ "sqrt_g" . The centimeter then becomes .CQ "sqrt_cm^2" and the gram, .CQ "sqrt_g^2" . This allows working from equations using the units in the CGS system, and enforcing dimensional conformity within that system. Recognized arguments to the .CQ "--units" option are .CQ "gauss[ian]" , .CQ "esu" , .CQ "emu" , and .CQ "si" ; the argument is case insensitive. The default mode for .CW "units" is SI units; the only effect of giving .CQ "si" with the .CQ "--units" option is to prepend .CQ "(SI)" to the .CQ "You\ have:" prompt. Giving an unrecognized system generates a warning, and .CW "units" uses SI units. .PP The changes resulting from the .CQ "--units" option are actually controlled by the .CW "UNITS_SYSTEM" environment variable. If you frequently work with one of the supported CGS units systems, you may set this environment variable rather than giving the .CQ "--units" option at each invocation. As usual, an option given on the command line overrides the setting of the environment variable. For example, if you would normally work with Gaussian units but might occasionally work with SI, you could set .CW "UNITS_SYSTEM" to .CQ "gaussian" and specify SI with the .CQ "--units" option. Unlike the argument to the .CQ "--units" option, the value of .CW "UNITS_SYSTEM" \fIis\fP case sensitive, so setting a value of .CQ "EMU" will have no effect other than to give an error message and set SI units. .PP The CGS definitions appear as conditional settings in the standard units data file, which you can consult for more information on how these units are defined, or on how to define an alternate units system. .PP .SS CGS Units Systems The ESU system derives the electromagnetic units from its unit of charge, the statcoulomb, which is defined from Coulomb's law. The statcoulomb equals .if n dyne^(1/2)\ cm, or cm^(3/2)\ g^(1/2)\ s^(\(mi1). .if t $roman dyne sup {1/2} ^ roman cm$, .if t or $roman cm sup {3/2} ^ roman g sup {1/2} ^ roman s sup {-1}$. The unit of current, the statampere, is statcoulomb\ sec, analogous to the relationship in SI. Other electrical units are then derived in a manner similar to that for SI units; the units use the SI names prefixed by .CQ "stat-" , e.g., .CQ "statvolt" or .CQ "statV" . The prefix .CQ "st-" is also recognized (e.g., .CQ "stV" ). .PP The EMU system derives the electromagnetic units from its unit of current, the abampere, which is defined in terms of Ampere's law. The abampere is equal to .if n dyne^(1/2), or cm^(1/2)\ g^(1/2)\ s^(\(mi1). .if t $roman dyne sup {1/2}$, .if t or $roman cm sup {1/2} ^ roman g sup {1/2} ^ roman s sup{-1}$. .EQ delim off .EN The unit of charge, the abcoulomb, is abampere\ sec, again analogous to the SI relationship. Other electrical units are then derived in a manner similar to that for SI units; the units use the SI names prefixed by .CQ "ab-" , e.g., .CQ "abvolt" or .CQ "abV" . The magnetic field units include the gauss, the oersted and the maxwell. .PP The Gaussian units system, which was also known as the Symmetric System, uses the same charge and current units as the ESU system (e.g., .CQ "statC" , .CQ "statA" ); it differs by defining the magnetic field so that it has the same units as the electric field. The resulting magnetic field units are the same ones used in the EMU system: the gauss, the oersted and the maxwell. .PP .SS Conversions Between Different Systems The CGS systems define units that measure the same thing but may have conflicting dimensions. Furthermore, the dimensions of the electromagnetic CGS units are never compatible with SI. But if you measure charge in two different systems you have measured the same physical thing, so there is a \fIcorrespondence\fP between the units in the different systems, and .CW "units" supports conversions between corresponding units. When running with SI, .CW "units" defines all of the CGS units in terms of SI. When you select a CGS system, .CW "units" defines the SI units and the other CGS system units in terms of the system you have selected. .PP .ES (Gaussian) You have: statA You want: abA * 3.335641e-11 / 2.9979246e+10 (Gaussian) You have: abA You want: sqrt(dyne) conformability error 2.9979246e+10 sqrt_cm^3 sqrt_g / s^2 1 sqrt_cm sqrt_g / s .EE .PP In the above example, .CW "units" converts between the current units statA and abA even though the abA, from the EMU system, has incompatible dimensions. This works because in Gaussian mode, the abA is defined in terms of the statA, so it does not have the correct definition for EMU; consequently, you cannot convert the abA to its EMU definition. .PP One challenge of conversion is that because the CGS system has fewer base units, quantities that have different dimensions in SI may have the same dimension in a CGS system. And yet, they may not have the same conversion factor. For example, the unit for the E field and B fields are the same in the Gaussian system, but the conversion factors to SI are quite different. This means that correct conversion is only possible if you keep track of what quantity is being measured. You cannot convert statV/cm to SI without indicating which type of field the unit measures. To aid in dimensional analysis, .CW "units" defines various dimension units such as LENGTH, TIME, and CHARGE to be the appropriate dimension in SI. The electromagnetic dimensions such as B_FIELD or E_FIELD may be useful aids both for conversion and dimensional analysis in CGS. You can convert them to or from CGS in order to perform SI conversions that in some cases will not work directly due to dimensional incompatibilities. This example shows how the Gaussian system uses the same units for all of the fields, but they all have different conversion factors with SI. .PP .ES (Gaussian) You have: statV/cm You want: E_FIELD * 29979.246 / 3.335641e-05 (Gaussian) You have: statV/cm You want: B_FIELD * 0.0001 / 10000 (Gaussian) You have: statV/cm You want: H_FIELD * 79.577472 / 0.012566371 (Gaussian) You have: statV/cm You want: D_FIELD * 2.6544187e-07 / 3767303.1 .EE .PP The next example shows that the oersted cannot be converted directly to the SI unit of magnetic field, A/m, because the dimensions conflict. We cannot redefine the ampere to make this work because then it would not convert with the statampere. But you can still do this conversion as shown below. .PP .ES (Gaussian) You have: oersted You want: A/m conformability error 1 sqrt_g / s sqrt_cm 29979246 sqrt_cm sqrt_g / s^2 (Gaussian) You have: oersted You want: H_FIELD * 79.577472 / 0.012566371 .EE .PP .SS Prompt Prefix If a unit system is specified with the .CQ "--units" option, the selected system's name is prepended to the .CQ "You\ have:" prompt as a reminder, e.g., .PP .ES (Gaussian) You have: stC You want: Definition: statcoulomb = sqrt(dyne) cm = 1 sqrt_cm^3 sqrt_g / s .EE .PP You can suppressed the prefix by including a line .PP .ES !prompt .EE .PP with no argument in a site or personal units data file. The prompt can be conditionally suppressed by including such a line within .CQ "!var" ... .CQ "!endvar" constructs, e.g., .PP .ES !var UNITS_SYSTEM gaussian gauss !prompt !endvar .EE .PP This might be appropriate if you normally use Gaussian units and find the prefix distracting but want to be reminded when you have selected a different CGS system. .PP .SH LOGGING CALCULATIONS The .CQ "--log" option allows you to save the results of calculations in a file; this can be useful if you need a permanent record of your work. For example, the fluid-flow conversion in \fIComplicated Unit Expressions\fP, is lengthy, and if you were to use it in designing a piping system, you might want a record of it for the project file. If the interactive session .PP .ES # Conversion factor A1 for pressure drop # dP = A1 rho f L Q^2/d^5 You have: (8/pi^2) (lbm/ft^3)ft(ft^3/s)^2(1/in^5) # Input units You want: psi * 43.533969 / 0.022970568 .EE .PP were logged, the log file would contain .PP .ES ### Log started Fri Oct 02 15:55:35 2015 # Conversion factor A1 for pressure drop # dP = A1 rho f L Q^2/d^5 From: (8/pi^2) (lbm/ft^3)ft(ft^3/s)^2(1/in^5) # Input units To: psi * 43.533969 / 0.022970568 .EE .PP The time is written to the log file when the file is opened. .PP The use of comments can help clarify the meaning of calculations for the log. The log includes conformability errors between the units at the .CQ "You\ have:" and .CQ "You\ want:" prompts, but not other errors, including lack of conformability of items in sums or differences or among items in a unit list. For example, a conversion between zenith angle and elevation angle could involve .PP .ES You have: 90 deg - (5 deg + 22 min + 9 sec) ^ Illegal sum or difference of non-conformable units You have: 90 deg - (5 deg + 22 arcmin + 9 arcsec) You want: dms 84 deg + 37 arcmin + 51 arcsec You have: _ You want: deg * 84.630833 / 0.011816024 You have: .EE .PP The log file would contain .PP .ES From: 90 deg - (5 deg + 22 arcmin + 9 arcsec) To: deg;arcmin;arcsec 84 deg + 37 arcmin + 51 arcsec From: _ To: deg * 84.630833 / 0.011816024 .EE .PP The initial entry error (forgetting that minutes have dimension of time, and that arcminutes must be used for dimensions of angle) does not appear in the output. When converting to a unit list alias, .CW "units" expands the alias in the log file. .PP The .CQ "From:" and .CQ "To:" tags are written to the log file even if the .CQ "--quiet" option is given. If the log file exists when .CW "units" is invoked, the new results are appended to the log file. The time is written to the log file each time the file is opened. The .CQ "--log" option is ignored when .CW "units" is used non-interactively. .PP .SH INVOKING \f(BIUNITS\fP You invoke .CW "units" like this: .PP .ES units [\fIoptions\fP] [\fIfrom-unit\fP [\fIto-unit\fP]] .EE .PP If the \fIfrom-unit\fP and \fIto-unit\fP are omitted, the program will use interactive prompts to determine which conversions to perform. See \fIInteractive Use\fP. If both \fIfrom-unit\fP and \fIto-unit\fP are given, .CW "units" will print the result of that single conversion and then exit. If only \fIfrom-unit\fP appears on the command line, .CW "units" will display the definition of that unit and exit. Units specified on the command line may need to be quoted to protect them from shell interpretation and to group them into two arguments. Note also that the .CQ "--quiet" option is enabled by default if you specify \fIfrom-unit\fP on the command line. See \fICommand Line Use\fP. .PP The default behavior of .CW "units" can be changed by various options given on the command line. In most cases, the options may be given in either short form (a single .CQ "-" followed by a single character) or long form .CQ ( "--" "" followed by a word or hyphen-separated words). Short-form options are cryptic but require less typing; long-form options require more typing but are more explanatory and may be more mnemonic. With long-form options you need only enter sufficient characters to uniquely identify the option to the program. For example, .CQ "--out\ %f" works, but .CQ "--o\ %f" fails because .CW "units" has other long options beginning with .CQ "o" . However, .CQ "--q" works because .CQ "--quiet" is the only long option beginning with .CQ "q" . .PP Some options require arguments to specify a value (e.g., .CQ "-d\ 12" or .CQ "--digits\ 12" ). Short-form options that do not take arguments may be concatenated (e.g., .CQ "-erS" is equivalent to .CQ "-e\ -r\ -S" ); the last option in such a list may be one that takes an argument (e.g., .CQ "-ed\ 12" ). With short-form options, the space between an option and its argument is optional (e.g., .CQ "-d12" is equivalent to .CQ "-d\ 12" ). Long-form options may not be concatenated, and the space between a long-form option and its argument is required. Short-form and long-form options may be intermixed on the command line. Options may be given in any order, but when incompatible options (e.g., .CQ "--output-format" and .CQ "--exponential" ) are given in combination, behavior is controlled by the last option given. For example, .CQ "-o%.12f\ -e" gives exponential format with the default eight significant digits). .PP The following options are available: .TP .BR "-\^c" ", " "-\^-\^check" Check that all units and prefixes defined in the units data file reduce to primitive units. Print a list of all units that cannot be reduced. Also display some other diagnostics about suspicious definitions in the units data file. Only definitions active in the current locale are checked. You should always run .CW "units" with this option after modifying a units data file. .TP .BR "-\^-\^check-verbose" ", " "-\^-\^verbose-check" Like the .CQ "--check" option, this option prints a list of units that cannot be reduced. But to help find unit definitions that cause endless loops, it lists the units as they are checked. If .CW "units" hangs, then the last unit to be printed has a bad definition. Only definitions active in the current locale are checked. .TP .BR "-\^d \fIndigits\fP" ", " "-\^-\^digits \fIndigits\fP" Set the number of significant digits in the output to the value specified (which must be greater than zero). For example, .CQ "-d\ 12" sets the number of significant digits to 12. With exponential output .CW "units" displays one digit to the left of the decimal point and eleven digits to the right of the decimal point. On most systems, the maximum number of internally meaningful digits is 15; if you specify a greater number than your system's maximum, .CW "units" will print a warning and set the number to the largest meaningful value. To directly set the maximum value, give an argument of .CW "max" (e.g., .CQ "-d\ max" ). Be aware, of course, that \*(lQsignificant\*(rQ here refers only to the \fIdisplay\fP of numbers; if results depend on physical constants not known to this precision, the physically meaningful precision may be less than that shown. The .CQ "--digits" option conflicts with the .CQ "--output-format" option. .TP .BR "-\^e" ", " "-\^-\^exponential" Set the numeric output format to exponential (i.e., scientific notation), like that used in the Unix .CW "units" program. The default precision is eight significant digits (seven digits to the right of the decimal point); this can be changed with the .CQ "--digits" option. The .CQ "--exponential" option conflicts with the .CQ "--output-format" option. .TP .BR "-\^o \fIformat\fP" ", " "-\^-\^output-format \fIformat\fP" This option affords complete control over the numeric output format using the specified \fIformat\fP. The format is a single floating point numeric format for the .CW "printf()" function in the C programming language. All compilers support the format types .CQ "g" and .CQ "G" to specify significant digits, .CQ "e" and .CQ "E" for scientific notation, and .CQ "f" for fixed-point decimal. The ISO C99 standard introduced the .CQ "F" type for fixed-point decimal and the .CQ "a" and .CQ "A" types for hexadecimal floating point; these types are allowed with compilers that support them. The default format is .CQ "%.8g" ; for greater precision, you could specify .CQ "-o\ %.15g" . See \fINumeric Output Format\fP and the documentation for .CW "printf()" for more detailed descriptions of the format specification. The .CQ "--output-format" option affords the greatest control of the output appearance, but requires at least rudimentary knowledge of the .CW "printf()" format syntax. If you don't want to bother with the .CW "printf()" syntax, you can specify greater precision more simply with the .CQ "--digits" option or select exponential format with .CQ "--exponential" . The .CQ "--output-format" option is incompatible with the .CQ "--exponential" and .CQ "--digits" options. .TP .BR "-\^f \fIfilename\fP" ", " "-\^-\^file \fIfilename\fP" Instruct .CW "units" to load the units file \fIfilename\fP. You can specify up to 25 units files on the command line. When you use this option, .CW "units" will load \fIonly\fP the files you list on the command line; it will not load the standard file or your personal units file unless you explicitly list them. If \fIfilename\fP is the empty string .CQ ( "-f\ """"" ), the default units file (or that specified by .CW "UNITSFILE" ) will be loaded in addition to any others specified with .CQ "-f" . .TP .BR "-\^L \fIlogfile\fP" ", " "-\^-\^log \fIlogfile\fP" Save the results of calculations in the file \fIlogfile\fP; this can be useful if it is important to have a record of unit conversions or other calculations that are to be used extensively or in a critical activity such as a program or design project. If \fIlogfile\fP exits, the new results are appended to the file. This option is ignored when .CW "units" is used non-interactively. See \fILogging Calculations\fP for a more detailed description and some examples. .TP .BR "-\^H \fIfilename\fP" ", " "-\^-\^history \fIfilename\fP" Instruct .CW "units" to save history to \fIfilename\fP, so that a record of your commands is available for retrieval across different .CW "units" invocations. To prevent the history from being saved set \fIfilename\fP to the empty string .CQ ( "-H\ """"" ). This option has no effect if readline is not available. .TP .BR "-\^h" ", " "-\^-\^help" Print out a summary of the options for .CW "units" . .TP .BR "-\^m" ", " "-\^-\^minus" Causes .CQ "-" to be interpreted as a subtraction operator. This is the default behavior. .TP .BR "-\^p" ", " "-\^-\^product" Causes .CQ "-" to be interpreted as a multiplication operator when it has two operands. It will act as a negation operator when it has only one operand: .CQ "(-3)" . By default .CQ "-" is treated as a subtraction operator. .TP .BR "-\^-\^oldstar" Causes .CQ "*" to have the old-style precedence, higher than the precedence of division so that .CQ "1/2*3" will equal .CQ "1/6" . .TP .BR "-\^-\^newstar" Forces .CQ "*" to have the new (default) precedence that follows the usual rules of algebra: the precedence of .CQ "*" is the same as the precedence of .CQ "/" , so that .CQ "1/2*3" will equal .CQ "3/2" . .TP .BR "-\^r" ", " "-\^-\^round" When converting to a combination of units given by a unit list, round the value of the last unit in the list to the nearest integer. .TP .BR "-\^S" ", " "-\^-\^show-factor" When converting to a combination of units specified in a list, always show a non-unity factor before a unit that begins with a fraction with a unity denominator. By default, if the unit in a list begins with fraction of the form 1|\fIx\fP and its multiplier is an integer other than 1, the fraction is given as the product of the multiplier and the numerator (e.g., .CQ "3|8\ in" rather than .CQ "3 * 1|8\ in" ). In some cases, this is not what is wanted; for example, the results for a cooking recipe might show .CQ "3 * 1|2\ cup" as .CQ "3|2\ cup" . With the .CQ "--show-factor" option, a result equivalent to 1.5 cups will display as .CQ "3 * 1|2\ cup" rather than .CQ "3|2\ cup" . A user-specified fractional unit with a numerator other than 1 is never overridden, however\(emif a unit list specifies .CQ "3|4 cup;1|2 cup" , a result equivalent to 1\ 1/2 cups will always be shown as .CQ "2 * 3|4\ cup" whether or not the .CQ "--show-factor" option is given. .IP .TP .BR "-\^v" ", " "-\^-\^verbose" Give slightly more verbose output when converting units. When combined with the .CQ "-c" option this gives the same effect as .CQ "--check-verbose" . When combined with .CQ "--version" produces a more detailed output, equivalent to the .CQ "--info" option. .TP .BR "-\^V" ", " "-\^-\^version" Print the program version number, tell whether the .CW "readline" library has been included, tell whether UTF-8 support has been included; give the locale, the location of the default units data file, and the location of the personal units data file; indicate if the personal units data file does not exist. .IP When given in combination with the .CQ "--terse" option, the program prints only the version number and exits. .IP When given in combination with the .CQ "--verbose" option, the program, the .CQ "--version" option has the same effect as the .CQ "--info" option below. .TP .BR "-\^I" ", " "-\^-\^info" Print the information given with the .CQ "--version" option, show the pathname of the units program, show the status of the .CW "UNITSFILE" and .CW "MYUNITSFILE" environment variables, and additional information about how .CW "units" locates the related files. On systems running Microsoft Windows, the status of the .CW "UNITSLOCALE" environment variable and information about the related locale map are also given. This option is usually of interest only to developers and administrators, but it can sometimes be useful for troubleshooting. .IP Combining the .CQ "--version" and .CQ "--verbose" options has the same effect as giving .CQ "--info" . .TP .BR "-\^U" ", " "-\^-\^unitsfile" Print the location of the default units data file and exit; if the file cannot be found, print \*(lQUnits data file not found\*(rQ. .TP .BR "-\^u (gauss[ian]|esu|emu)" ", " "-\^-\^units (gauss[ian]|esu|emu)" Specify a CGS units system: Gaussian, ESU, or EMU. .TP .BR "-\^l \fIlocale\fP" ", " "-\^-\^locale \fIlocale\fP" Force a specified locale such as .CQ "en_GB" to get British definitions by default. This overrides the locale determined from system settings or environment variables. See \fILocale\fP for a description of locale format. .TP .BR "-\^n" ", " "-\^-\^nolists" Disable conversion to unit lists. .TP .BR "-\^s" ", " "-\^-\^strict" Suppress conversion of units to their reciprocal units. For example, .CW "units" will normally convert hertz to seconds because these units are reciprocals of each other. The strict option requires that units be strictly conformable to perform a conversion, and will give an error if you attempt to convert hertz to seconds. .TP .BR "-\^1" ", " "-\^-\^one-line" Give only one line of output (the forward conversion); do not print the reverse conversion. If a reciprocal conversion is performed, then .CW "units" will still print the \*(lQreciprocal conversion\*(rQ line. .TP .BR "-\^t" ", " "-\^-\^terse" Print only a single conversion factor. This option can be used when calling .CW "units" from another program so that the output is easy to parse. This option has the combined effect of these options: .CQ "--strict" .CQ "--quiet" .CQ "--one-line" .CQ "--compact" . When combined with .CQ "--version" it produces a display showing only the program name and version number. .TP .BR "-\^-\^compact" Give compact output featuring only the conversion factor; the multiplication and division signs are not shown, and there is no leading whitespace. If you convert to a unit list, then the output is a semicolon separated list of factors. This turns off the .CQ "--verbose" option. .TP .BR "-\^q" ", " "-\^-\^quiet" ", " "-\^-\^silent" Suppress the display of statistics about the number of units loaded, any messages printed by the units database, and the prompting of the user for units. This option does not affect how .CW "units" displays the results. This option is turned on by default if you invoke .CW "units" with a unit expression on the command line. .IP .SH OUTPUT STYLES The output can be tweaked in various ways using command line options. With no options, the output looks like this .PP .ES $ units Currency exchange rates from FloatRates (USD base) on 2019-02-20 3070 units, 109 prefixes, 109 nonlinear units You have: 23ft You want: m * 7.0104 / 0.14264521 You have: m You want: ft;in 3 ft + 3.3700787 in .EE .PP This is arguably a bit cryptic; the .CQ "--verbose" option makes clear what the output means: .PP .ES $ units --verbose Currency exchange rates from FloatRates (USD base) on 2019-02-20 3070 units, 109 prefixes, 109 nonlinear units You have: 23 ft You want: m 23 ft = 7.0104 m 23 ft = (1 / 0.14264521) m You have: meter You want: ft;in meter = 3 ft + 3.3700787 in .EE .PP The .CQ "--quiet" option suppresses the clutter displayed when .CW "units" starts, as well as the prompts to the user. This option is enabled by default when you give units on the command line. .PP .ES $ units --quiet 23 ft m * 7.0104 / 0.14264521 $ units 23ft m * 7.0104 / 0.14264521 .EE .PP The remaining style options allow you to display only numerical values without the tab or the multiplication and division signs, or to display just a single line showing the forward conversion: .aQ .PP .ES $ units --compact 23ft m 7.0104 0.14264521 $ units --compact m 'ft;in' 3;3.3700787 $ units --one-line 23ft m * 7.0104 $ units --one-line 23ft 1/m reciprocal conversion * 0.14264521 $ units --one-line 23ft kg conformability error 7.0104 m 1 kg .EE .PP Note that when converting to a unit list, the .CQ "--compact" option displays a semicolon separated list of results. Also be aware that the .CQ "one-line" option doesn't live up to its name if you execute a reciprocal conversion or if you get a conformability error. The former case can be prevented using the .CQ "--strict" option, which suppresses reciprocal conversions. Similarly you can suppress unit list conversion using .CQ "--nolists" . It is impossible to prevent the three line error output. .PP .ES $ units --compact --nolists m 'ft;in' Error in 'ft;in': Parse error $ units --one-line --strict 23ft 1/m .EE .PP The various style options can be combined appropriately. The ultimate combination is the .CQ "--terse" option, which combines .CQ "--strict" , .CQ "--quiet" , .CQ "--one-line" , and .CQ "--compact" to produce the minimal output, just a single number for regular conversions and a semicolon separated list for conversion to unit lists. This will likely be the best choice for programs that want to call .CW "units" and then process its result. .PP .ES $ units --terse 23ft m 7.0104 $ units --terse m 'ft;in' 3;3.3700787 $ units --terse 23ft 1/m conformability error 7.0104 m 1 / m .EE .aE .PP .SH ADDING YOUR OWN DEFINITIONS .SS Units Data Files The units and prefixes that .CW "units" can convert are defined in the units data file, typically .CQ "/usr/share/units/definitions.units" . If you can't find this file, run .CW "units\ --version" to get information on the file locations for your installation. Although you can extend or modify this data file if you have appropriate user privileges, it's usually better to put extensions in separate files so that the definitions will be preserved if you update .CW "units" . .PP You can include additional data files in the units database using the .CQ "!include" command in the standard units data file. For example .PP .ES !include /usr/local/share/units/local.units .EE .PP might be appropriate for a site-wide supplemental data file. The location of the .CQ "!include" statement in the standard units data file is important; later definitions replace earlier ones, so any definitions in an included file will override definitions before the .CQ "!include" statement in the standard units data file. With normal invocation, no warning is given about redefinitions; to ensure that you don't have an unintended redefinition, run .CW "units\ -c" after making changes to any units data file. .PP If you want to add your own units in addition to or in place of standard or site-wide supplemental units data files, you can include them in the .CQ ".units" file in your home directory. If this file exists it is read after the standard units data file, so that any definitions in this file will replace definitions of the same units in the standard data file or in files included from the standard data file. This file will not be read if any units files are specified on the command line. (Under Windows the personal units file is named .CQ "unitdef.units" .) Running .CW "units\ -V" will display the location and name of your personal units file. .PP The .CW "units" program first tries to determine your home directory from the .CW "HOME" environment variable. On systems running Microsoft Windows, if .CW "HOME" does not exist, .CW "units" attempts to find your home directory from .CW "HOMEDRIVE" , .CW "HOMEPATH" and .CW "USERPROFILE" . You can specify an arbitrary file as your personal units data file with the .CW "MYUNITSFILE" environment variable; if this variable exists, its value is used without searching your home directory. The default units data files are described in more detail in \fIData Files\fP. .PP .SS Defining New Units and Prefixes A unit is specified on a single line by giving its name and an equivalence. Comments start with a .CQ "#" character, which can appear anywhere in a line. The backslash character .CQ ( "\e" ) acts as a continuation character if it appears as the last character on a line, making it possible to spread definitions out over several lines if desired. A file can be included by giving the command .CQ "!include" followed by the file's name. The .CQ "!" must be the first character on the line. The file will be sought in the same directory as the parent file unless you give a full path. The name of the file to be included cannot contain spaces or the comment character .CQ "#" . .PP Unit names must not contain any of the operator characters .CQ "+" , .CQ "-" , .CQ "*" , .CQ "/" , .CQ "|" , .CQ "^" , .CQ ";" , .CQ "~" , the comment character .CQ "#" , or parentheses. They cannot begin or end with an underscore .CQ ( "_" ), a comma .CQ ( "," ) or a decimal point .CQ ( "." ). The figure dash (U+2012), typographical minus (`\-'; U+2212), and en dash (`\-'; U+2013) are converted to the operator .CQ "-" , so none of these characters can appear in unit names. Names cannot begin with a digit, and if a name ends in a digit other than zero, the digit must be preceded by a string beginning with an underscore, and afterwards consisting only of digits, decimal points, or commas. For example, .CQ "foo_2" , .CQ "foo_2,1" , or .CQ "foo_3.14" are valid names but .CQ "foo2" or .CQ "foo_a2" are invalid. You could define nitrous oxide as .PP .ES N2O nitrogen 2 + oxygen .EE .PP but would need to define nitrogen dioxide as .PP .ES NO_2 nitrogen + oxygen 2 .EE .PP Be careful to define new units in terms of old ones so that a reduction leads to the primitive units, which are marked with .CQ "!" characters. Dimensionless units are indicated by using the string .CQ "!dimensionless" for the unit definition. .PP When adding new units, be sure to use the .CQ "-c" option to check that the new units reduce properly. If you create a loop in the units definitions, then .CW "units" will hang when invoked with the .CQ "-c" option. You will need to use the .CQ "--check-verbose" option, which prints out each unit as it is checked. The program will still hang, but the last unit printed will be the unit that caused the infinite loop. .PP If you define any units that contain .CQ "+" characters in their definitions, carefully check them because the .CQ "-c" option will not catch non-conformable sums. Be careful with the .CQ "-" operator as well. When used as a binary operator, the .CQ "-" character can perform addition or multiplication depending on the options used to invoke .CW "units" . To ensure consistent behavior use .CQ "-" only as a unary negation operator when writing units definitions. To multiply two units leave a space or use the .CQ "*" operator with care, recalling that it has two possible precedence values and may require parentheses to ensure consistent behavior. To compute the difference of .CQ "foo" and .CQ "bar" write .CQ "foo+(-bar)" or even .CQ "foo+-bar" . .PP You may wish to intentionally redefine a unit. When you do this, and use the .CQ "-c" option, .CW "units" displays a warning message about the redefinition. You can suppress these warnings by redefining a unit using a .CQ "+" at the beginning of the unit name. Do not include any white space between the .CQ "+" and the redefined unit name. .PP Here is an example of a short data file that defines some basic units: .PP .ES m ! # The meter is a primitive unit sec ! # The second is a primitive unit rad !dimensionless # A dimensionless primitive unit micro- 1e-6 # Define a prefix minute 60 sec # A minute is 60 seconds hour 60 min # An hour is 60 minutes inch 72 m # Inch defined incorrectly terms of meters ft 12 inches # The foot defined in terms of inches mile 5280 ft # And the mile +inch 0.0254 m # Correct redefinition, warning suppressed .EE .PP A unit that ends with a .CQ "-" character is a prefix. If a prefix definition contains any .CQ "/" characters, be sure they are protected by parentheses. If you define .CQ "half- 1/2" , then .CQ "halfmeter" would be equivalent to .CQ "1 / (2\ meter)" . .PP .SS Defining Nonlinear Units Some unit conversions of interest are nonlinear; for example, temperature conversions between the Fahrenheit and Celsius scales cannot be done by simply multiplying by conversion factors. .PP When you give a linear unit definition such as .CQ "inch 2.54\ cm" you are providing information that .CW "units" uses to convert values in inches into primitive units of meters. For nonlinear units, you give a functional definition that provides the same information. .PP Nonlinear units are represented using a functional notation. It is best to regard this notation not as a function call but as a way of adding units to a number, much the same way that writing a linear unit name after a number adds units to that number. Internally, nonlinear units are defined by a pair of functions that convert to and from linear units in the database, so that an eventual conversion to primitive units is possible. .PP Here is an example nonlinear unit definition: .PP .ES tempF(x) units=[1;K] domain=[-459.67,) range=[0,) \e (x+(-32)) degF + stdtemp ; (tempF+(-stdtemp))/degF + 32 .EE .PP A nonlinear unit definition comprises a unit name, a formal parameter name, two functions, and optional specifications for units, the domain, and the range (the domain of the inverse function). The functions tell .CW "units" how to convert to and from the new unit. To produce valid results, the arguments of these functions need to have the correct dimensions and be within the domains for which the functions are defined. .PP The definition begins with the unit name followed immediately (with no spaces) by a .CQ "(" character. In the parentheses is the name of the formal parameter. Next is an optional specification of the units required by the functions in the definition. In the example above, the .CQ "units=[1;K]" specification indicates that the .CQ "tempF" function requires an input argument conformable with .CQ "1" (i.e., the argument is dimensionless), and that the inverse function requires an input argument conformable with .CQ "K" . For normal nonlinear units definition, the forward function will always take a dimensionless argument; in general, the inverse function will need units that match the quantity measured by your nonlinear unit. Specifying the units enables .CW "units" to perform error checking on function arguments, and also to assign units to domain and range specifications, which are described later. .PP Next the function definitions appear. In the example above, the .CQ "tempF" function is defined by .PP .ES tempF(x) = (x+(-32)) degF + stdtemp .EE .PP This gives a rule for converting .CQ "x" in the units .CQ "tempF" to linear units of absolute temperature, which makes it possible to convert from tempF to other units. .PP To enable conversions to Fahrenheit, you must give a rule for the inverse conversions. The inverse will be .CQ "x(tempF)" and its definition appears after a .CQ ";" character. In our example, the inverse is .PP .ES x(tempF) = (tempF+(-stdtemp))/degF + 32 .EE .PP This inverse definition takes an absolute temperature as its argument and converts it to the Fahrenheit temperature. The inverse can be omitted by leaving out the .CQ ";" character and the inverse definition, but then conversions \fIto\fP the unit will not be possible. If the inverse definition is omitted, the .CQ "--check" option will display a warning. It is up to you to calculate and enter the correct inverse function to obtain proper conversions; the .CQ "--check" option tests the inverse at one point and prints an error if it is not valid there, but this is not a guarantee that your inverse is correct. .PP With some definitions, the units may vary. For example, the definition .PP .ES square(x) x^2 .EE .PP can have any arbitrary units, and can also take dimensionless arguments. In such a case, you should \fInot\fP specify units. If a definition takes a root of its arguments, the definition is valid only for units that yield such a root. For example, .PP .ES squirt(x) sqrt(x) .EE .PP is valid for a dimensionless argument, and for arguments with even powers of units. .PP Some definitions may not be valid for all real numbers. In such cases, .CW "units" can handle errors better if you specify an appropriate domain and range. You specify the domain and range as shown below: .PP .ES baume(d) units=[1;g/cm^3] domain=[0,130.5] range=[1,10] \e (145/(145-d)) g/cm^3 ; (baume+-g/cm^3) 145 / baume .EE .PP In this example the domain is specified after .CQ "domain=" with the endpoints given in brackets. In accord with mathematical convention, square brackets indicate a closed interval (one that includes its endpoints), and parentheses indicate an open interval (one that does not include its endpoints). An interval can be open or closed on one or both ends; an interval that is unbounded on either end is indicated by omitting the limit on that end. For example, a quantity to which decibel (dB) is applied may have any value greater than zero, so the range is indicated by .CQ "(0,)" : .PP .ES decibel(x) units=[1;1] range=(0,) 10^(x/10); 10 log(decibel) .EE .PP If the domain or range is given, the second endpoint must be greater than the first. .PP The domain and range specifications can appear independently and in any order along with the units specification. The values for the domain and range endpoints are attached to the units given in the units specification, and if necessary, the parameter value is adjusted for comparison with the endpoints. For example, if a definition includes .CQ "units=[1;ft]" and .CQ "range=[3,)" , the range will be taken as 3\ ft to infinity. If the function is passed a parameter of .CQ "900\ mm" , that value will be adjusted to 2.9527559\ ft, which is outside the specified range. If you omit the units specification from the previous example, .CW "units" can not tell whether you intend the lower endpoint to be 3\ ft or 3\ microfurlongs, and can not adjust the parameter value of 900\ mm for comparison. Without units, numerical values other than zero or plus or minus infinity for domain or range endpoints are meaningless, and accordingly they are not allowed. If you give other values without units, then the definition will be ignored and you will get an error message. .PP Although the units, domain, and range specifications are optional, it's best to give them when they are applicable; doing so allows .CW "units" to perform better error checking and give more helpful error messages. Giving the domain and range also enables the .CQ "--check" option to find a point in the domain to use for its point check of your inverse definition. .PP You can make synonyms for nonlinear units by providing both the forward and inverse functions; inverse functions can be obtained using the .CQ "~" operator. So to create a synonym for .CQ "tempF" you could write .PP .ES fahrenheit(x) units=[1;K] tempF(x); ~tempF(fahrenheit) .EE .PP This is useful for creating a nonlinear unit definition that differs slightly from an existing definition without having to repeat the original functions. For example, .PP .ES dBW(x) units=[1;W] range=[0,) dB(x) W ; ~dB(dBW/W) .EE .PP If you wish a synonym to refer to an existing nonlinear unit without modification, you can do so more simply by adding the synonym with appended parentheses as a new unit, with the existing nonlinear unit\(emwithout parentheses\(emas the definition. So to create a synonym for .CQ "tempF" you could write .PP .ES fahrenheit() tempF .EE .PP The definition must be a nonlinear unit; for example, the synonym .PP .ES fahrenheit() meter .EE .PP will result in an error message when .CW "units" starts. .PP You may occasionally wish to define a function that operates on units. This can be done using a nonlinear unit definition. For example, the definition below provides conversion between radius and the area of a circle. This definition requires a length as input and produces an area as output, as indicated by the .CQ "units=" specification. Specifying the range as the nonnegative numbers can prevent cryptic error messages. .PP .ES circlearea(r) units=[m;m^2] range=[0,) pi r^2 ; sqrt(circlearea/pi) .EE .PP .SS Defining Piecewise Linear Units Sometimes you may be interested in a piecewise linear unit such as many wire gauges. Piecewise linear units can be defined by specifying conversions to linear units on a list of points. Conversion at other points will be done by linear interpolation. A partial definition of zinc gauge is .PP .ES zincgauge[in] 1 0.002, 10 0.02, 15 0.04, 19 0.06, 23 0.1 .EE .PP In this example, .CQ "zincgauge" is the name of the piecewise linear unit. The definition of such a unit is indicated by the embedded .CQ "[" character. After the bracket, you should indicate the units to be attached to the numbers in the table. No spaces can appear before the .CQ "]" character, so a definition like .CQ "foo[kg meters]" is invalid; instead write .CQ "foo[kg*meters]" . The definition of the unit consists of a list of pairs optionally separated by commas. This list defines a function for converting from the piecewise linear unit to linear units. The first item in each pair is the function argument; the second item is the value of the function at that argument (in the units specified in brackets). In this example, we define .CQ "zincgauge" at five points. For example, we set .CQ "zincgauge(1)" equal to .CQ "0.002\ in" . Definitions like this may be more readable if written using continuation characters as .PP .ES zincgauge[in] \e 1 0.002 \e 10 0.02 \e 15 0.04 \e 19 0.06 \e 23 0.1 .EE .PP With the preceding definition, the following conversion can be performed: .PP .ES You have: zincgauge(10) You want: in * 0.02 / 50 You have: .01 inch You want: zincgauge 5 .EE .PP If you define a piecewise linear unit that is not strictly monotonic, then the inverse will not be well defined. If the inverse is requested for such a unit, .CW "units" will return the smallest inverse. .PP After adding nonlinear units definitions, you should normally run .CW "units\ --check" to check for errors. If the .CQ "units" keyword is not given, the .CQ "--check" option checks a nonlinear unit definition using a dimensionless argument, and then checks using an arbitrary combination of units, as well as the square and cube of that combination; a warning is given if any of these tests fail. For example, .aQ .PP .ES Warning: function 'squirt(x)' defined as 'sqrt(x)' failed for some test inputs: squirt(7(kg K)^1): Unit not a root squirt(7(kg K)^3): Unit not a root .EE .aE .PP Running .CW "units\ --check" will print a warning if a non-monotonic piecewise linear unit is encountered. For example, the relationship between ANSI coated abrasive designation and mean particle size is non-monotonic in the vicinity of 800 grit: .PP .ES ansicoated[micron] \e . . . 600 10.55 \e 800 11.5 \e 1000 9.5 \e .EE .PP Running .CW "units\ --check" would give the error message .aQ .PP .ES Table 'ansicoated' lacks unique inverse around entry 800 .EE .aE .PP Although the inverse is not well defined in this region, it's not really an error. Viewing such error messages can be tedious, and if there are enough of them, they can distract from true errors. Error checking for nonlinear unit definitions can be suppressed by giving the .CQ "noerror" keyword; for the examples above, this could be done as .PP .ES squirt(x) noerror domain=[0,) range=[0,) sqrt(x); squirt^2 ansicoated[micron] noerror \e . . . .EE .PP Use the .CQ "noerror" keyword with caution. The safest approach after adding a nonlinear unit definition is to run .CW "units\ --check" and confirm that there are no actual errors before adding the .CQ "noerror" keyword. .PP .SS Defining Unit List Aliases Unit list aliases are treated differently from unit definitions, because they are a data entry shorthand rather than a true definition for a new unit. A unit list alias definition begins with .CQ "!unitlist" and includes the alias and the definition; for example, the aliases included in the standard units data file are .PP .ES !unitlist hms hr;min;sec !unitlist time year;day;hr;min;sec !unitlist dms deg;arcmin;arcsec !unitlist ftin ft;in;1|8 in !unitlist usvol cup;3|4 cup;2|3 cup;1|2 cup;1|3 cup;1|4 cup;\e tbsp;tsp;1|2 tsp;1|4 tsp;1|8 tsp .EE .PP Unit list aliases are only for unit lists, so the definition must include a .CQ ";" . Unit list aliases can never be combined with units or other unit list aliases, so the definition of .CQ "time" shown above could \fInot\fP have been shortened to .CQ "year;day;hms" . .PP As usual, be sure to run .CW "units\ --check" to ensure that the units listed in unit list aliases are conformable. .PP .SH NUMERIC OUTPUT FORMAT By default, .CW "units" shows results to eight significant digits. You can change this with the .CQ "--exponential" , .CQ "--digits" , and .CQ "--output-format" options. The first sets an exponential format (i.e., scientific notation) like that used in the original Unix .CW "units" program, the second allows you to specify a different number of significant digits, and the last allows you to control the output appearance using the format for the .CW "printf()" function in the C programming language. If you only want to change the number of significant digits or specify exponential format type, use the .CQ "--digits" and .CQ "--exponential" options. The .CQ "--output-format" option affords the greatest control of the output appearance, but requires at least rudimentary knowledge of the .CW "printf()" format syntax. See \fIInvoking Units\fP for descriptions of these options. .PP .SS Format Specification The format specification recognized with the .CQ "--output-format" option is a subset of that for .CW "printf()" . The format specification has the form .\".CW "%\fR[\fP\fIflags\fP\fR][\fP\fIwidth\fP\fR][\fP.\fIprecision\fP\fR]\fP\fItype\fP" ; .CW "%" [\fIflags\fP][\fIwidth\fP][\c .CW "." \fIprecision\fP]\fItype\fP; it must begin with .CQ "%" , and must end with a floating-point type specifier: .CQ "g" or .CQ "G" to specify the number of significant digits, .CQ "e" or .CQ "E" for scientific notation, and .CQ "f" for fixed-point decimal. The ISO C99 standard added the .CQ "F" type for fixed-point decimal and the .CQ "a" and .CQ "A" types for hexadecimal floating point; these types are allowed with compilers that support them. Type length modifiers (e.g., .CQ "L" to indicate a long double) are inapplicable and are not allowed. .PP The default format for .CW "units" is .CQ "%.8g" ; for greater precision, you could specify .CQ "-o\ %.15g" . The .CQ "g" and .CQ "G" format types use exponential format whenever the exponent would be less than \-4, so the value 0.000013 displays as .CQ "1.3e-005" . These types also use exponential notation when the exponent is greater than or equal to the precision, so with the default format, the value .if t .ig ++ 5e7 .++ .if n .ig ++ .EQ 5 times 10 sup 7 .EN .++ displays as .CQ "50000000" and the value .if t .ig ++ 5e8 .++ .if n .ig ++ .EQ 5 times 10 sup 8 .EN .++ displays as .CQ "5e+008" . If you prefer fixed-point display, you might specify .CQ "-o\ %.8f" ; however, small numbers will display very few significant digits, and values less than .if t .ig ++ 0.5e\-8 .++ .if n .ig ++ .EQ 0.5 times 10 sup -8 .EN .++ will show nothing but zeros. .PP The format specification may include one or more optional flags: .CQ "+" , .CQ "\ " (space), .CQ "#" , .CQ "-" , or .CQ "0" (the digit zero). The digit-grouping flag .ie \n(.g .CQ "\(aq" .el .CQ "'" is allowed with compilers that support it. Flags are followed by an optional value for the minimum field width, and an optional precision specification that begins with a period (e.g., .CQ ".6" ). The field width includes the digits, decimal point, the exponent, thousands separators (with the digit-grouping flag), and the sign if any of these are shown. .PP .SS Flags The .CQ "+" flag causes the output to have a sign .CQ ( "+" "" or .CQ "-" ). The space flag .CQ "\ " is similar to the .CQ "+" flag, except that when the value is positive, it is prefixed with a space rather than a plus sign; this flag is ignored if the .CQ "+" flag is also given. The .CQ "+" or .CQ "\ " flag could be useful if conversions might include positive and negative results, and you wanted to align the decimal points in exponential notation. The .CQ "#" flag causes the output value to contain a decimal point in all cases; by default, the output contains a decimal point only if there are digits (which can be trailing zeros) to the right of the point. With the .CQ "g" or .CQ "G" types, the .CQ "#" flag also prevents the suppression of trailing zeros. The digit-grouping flag .ie \n(.g .CQ "\(aq" .el .CQ "'" shows a thousands separator in digits to the left of the decimal point. This can be useful when displaying large numbers in fixed-point decimal; for example, with the format .CQ "%f" , .PP .ES You have: mile You want: microfurlong * 8000000.000000 / 0.000000 .EE .PP the magnitude of the first result may not be immediately obvious without counting the digits to the left of the decimal point. If the thousands separator is the comma .CQ ( "," ), the output with the format .ie \n(.g .CQ "%\(aqf" .el .CQ "%'f" might be .PP .ES You have: mile You want: microfurlong * 8,000,000.000000 / 0.000000 .EE .PP making the magnitude readily apparent. Unfortunately, few compilers support the digit-grouping flag. .PP With the .CQ "-" flag, the output value is left aligned within the specified field width. If a field width greater than needed to show the output value is specified, the .CQ "0" (zero) flag causes the output value to be left padded with zeros until the specified field width is reached; for example, with the format .CQ "%011.6f" , .PP .ES You have: troypound You want: grain * 5760.000000 / 0000.000174 .EE .PP The .CQ "0" flag has no effect if the .CQ "-" (left align) flag is given. .PP .SS Field Width By default, the output value is left aligned and shown with the minimum width necessary for the specified (or default) precision. If a field width greater than this is specified, the value shown is right aligned, and padded on the left with enough spaces to provide the specified field width. A width specification is typically used with fixed-point decimal to have columns of numbers align at the decimal point; this arguably is less useful with .CW "units" than with long columnar output, but it may nonetheless assist in quickly assessing the relative magnitudes of results. For example, with the format .CQ "%12.6f" , .PP .ES You have: km You want: in * 39370.078740 / 0.000025 You have: km You want: rod * 198.838782 / 0.005029 You have: km You want: furlong * 4.970970 / 0.201168 .EE .PP .SS Precision The meaning of \*(lQprecision\*(rQ depends on the format type. With .CQ "g" or .CQ "G" , it specifies the number of significant digits (like the .CQ "--digits" option); with .CQ "e" , .CQ "E" , .CQ "f" , or .CQ "F" , it specifies the maximum number of digits to be shown after the decimal point. .PP With the .CQ "g" and .CQ "G" format types, trailing zeros are suppressed, so the results may sometimes have fewer digits than the specified precision (as indicated above, the .CQ "#" flag causes trailing zeros to be displayed). .PP The default precision is 6, so .CQ "%g" is equivalent to .CQ "%.6g" , and would show the output to six significant digits. Similarly, .CQ "%e" or .CQ "%f" would show the output with six digits after the decimal point. .PP The C .CW "printf()" function allows a precision of arbitrary size, whether or not all of the digits are meaningful. With most compilers, the maximum internal precision with .CW "units" is 15 decimal digits (or 13 hexadecimal digits). With the .CQ "--digits" option, you are limited to the maximum internal precision; with the .CQ "--output-format" option, you may specify a precision greater than this, but it may not be meaningful. In some cases, specifying excess precision can result in rounding artifacts. For example, a pound is exactly 7000 grains, but with the format .CQ "%.18g" , the output might be .PP .ES You have: pound You want: grain * 6999.9999999999991 / 0.00014285714285714287 .EE .PP With the format .CQ "%.25g" you might get the following: .PP .ES You have: 1/3 You want: Definition: 0.333333333333333314829616256247 .EE .PP In this case the displayed value includes a series of digits that represent the underlying binary floating-point approximation to 1/3 but are not meaningful for the desired computation. In general, the result with excess precision is system dependent. The precision affects only the \fIdisplay\fP of numbers; if a result relies on physical constants that are not known to the specified precision, the number of physically meaningful digits may be less than the number of digits shown. .PP See the documentation for .CW "printf()" for more detailed descriptions of the format specification. .PP The .CQ "--output-format" option is incompatible with the .CQ "--exponential" or .CQ "--digits" options; if the former is given in combination with either of the latter, the format is controlled by the last option given. .PP .SH LOCALIZATION Some units have different values in different locations. The localization feature accommodates this by allowing a units data file to specify definitions that depend on the user's locale. .PP .SS Locale A locale is a subset of a user's environment that indicates the user's language and country, and some attendant preferences, such as the formatting of dates. The .CW "units" program attempts to determine the locale from the POSIX setlocale function; if this cannot be done, .CW "units" examines the environment variables .CW "LC_CTYPE" and .CW "LANG" . On POSIX systems, a locale is of the form .CW \fIlanguage\fP "_" \fIcountry\fP, where \fIlanguage\fP is the two-character code from ISO 639-1 and \fIcountry\fP is the two-character code from ISO 3166-1; \fIlanguage\fP is lower case and \fIcountry\fP is upper case. For example, the POSIX locale for the United Kingdom is .CW "en_GB" . .PP On systems running Microsoft Windows, the value returned by setlocale() is different from that on POSIX systems; .CW "units" attempts to map the Windows value to a POSIX value by means of a table in the file .CQ "locale_map.txt" in the same directory as the other data files. The file includes entries for many combinations of language and country, and can be extended to include other combinations. The .CQ "locale_map.txt" file comprises two tab-separated columns; each entry is of the form .PP .DS \fIWindows-locale\fP \fIPOSIX-locale\fP .DE .PP where \fIPOSIX-locale\fP is as described above, and \fIWindows-locale\fP typically spells out both the language and country. For example, the entry for the United States is .PP .ES English_United States en_US .EE .PP You can force .CW "units" to run in a desired locale by using the .CQ "-l" option. .PP In order to create unit definitions for a particular locale you begin a block of definitions in a unit datafile with .CQ "!locale" followed by a locale name. The .CQ "!" must be the first character on the line. The .CW "units" program reads the following definitions only if the current locale matches. You end the block of localized units with .CQ "!endlocale" . Here is an example, which defines the British gallon. .PP .ES !locale en_GB gallon 4.54609 liter !endlocale .EE .PP .SS Additional Localization Sometimes the locale isn't sufficient to determine unit preferences. There could be regional preferences, or a company could have specific preferences. Though probably uncommon, such differences could arise with the choice of English customary units outside of English-speaking countries. To address this, .CW "units" allows specifying definitions that depend on environment variable settings. The environment variables can be controled based on the current locale, or the user can set them to force a particular group of definitions. .PP A conditional block of definitions in a units data file begins with either .CQ "!var" or .CQ "!varnot" following by an environment variable name and then a space separated list of values. The leading .CQ "!" must appear in the first column of a units data file, and the conditional block is terminated by .CQ "!endvar" . Definitions in blocks beginning with .CQ "!var" are executed only if the environment variable is exactly equal to one of the listed values. Definitions in blocks beginning with .CQ "!varnot" are executed only if the environment variable does \fInot\fP equal any of the list values. .PP The inch has long been a customary measure of length in many places. The word comes from the Latin \fIuncia\fP meaning \*(lQone twelfth,\*(rQ referring to its relationship with the foot. By the 20th century, the inch was officially defined in English-speaking countries relative to the yard, but until 1959, the yard differed slightly among those countries. In France the customary inch, which was displaced in 1799 by the meter, had a different length based on a french foot. These customary definitions could be accommodated as follows: .PP .ES !var INCH_UNIT usa yard 3600|3937 m !endvar !var INCH_UNIT canada yard 0.9144 meter !endvar !var INCH_UNIT uk yard 0.91439841 meter !endvar !var INCH_UNIT canada uk usa foot 1|3 yard inch 1|12 foot !endvar !var INCH_UNIT france foot 144|443.296 m inch 1|12 foot line 1|12 inch !endvar !varnot INCH_UNIT usa uk france canada !message Unknown value for INCH_UNIT !endvar .EE .PP When .CW "units" reads the above definitions it will check the environment variable .CW "INCH_UNIT" and load only the definitions for the appropriate section. If .CW "INCH_UNIT" is unset or is not set to one of the four values listed, then .CW "units" will run the last block. In this case that block uses the .CQ "!message" command to display a warning message. Alternatively that block could set default values. .PP In order to create default values that are overridden by user settings the data file can use the .CQ "!set" command, which sets an environment variable \fIonly if it is not already set\fP; these settings are only for the current .CW "units" invocation and do not persist. So if the example above were preceded by .CQ "!set INCH_UNIT france" , then this would make .CQ "france" the default value for .CW "INCH_UNIT" . If the user had set the variable in the environment before invoking .CW "units" , then .CW "units" would use the user's value. .PP To link these settings to the user's locale you combine the .CQ "!set" command with the .CQ "!locale" command. If you wanted to combine the above example with suitable locales you could do by \fIpreceding\fP the above definition with the following: .PP .ES !locale en_US !set INCH_UNIT usa !endlocale !locale en_GB !set INCH_UNIT uk !endlocale !locale en_CA !set INCH_UNIT canada !endlocale !locale fr_FR !set INCH_UNIT france !endlocale !set INCH_UNIT france .EE .PP These definitions set the overall default for .CW "INCH_UNIT" to .CQ "france" and set default values for four locales appropriately. The overall default setting comes last so that it only applies when .CW "INCH_UNIT" was not set by one of the other commands or by the user. .PP If the variable given after .CQ "!var" or .CQ "!varnot" is undefined, then .CW "units" prints an error message and ignores the definitions that follow. Use .CQ "!set" to create defaults to prevent this situation from arising. The .CQ "-c" option only checks the definitions that are active for the current environment and locale, so when adding new definitions take care to check that all cases give rise to a well defined set of definitions. .PP .SH ENVIRONMENT VARIABLES The .CW "units" program uses the following environment variables: .TP .BR "HOME" Specifies the location of your home directory; it is used by .CW "units" to find a personal units data file .CQ ".units" . On systems running Microsoft Windows, the file is .CQ "unitdef.units" , and if .CW "HOME" does not exist, .CW "units" tries to determine your home directory from the .CW "HOMEDRIVE" and .CW "HOMEPATH" environment variables; if these variables do not exist, units finally tries .CW "USERPROFILE" \(emtypically .CQ "C:\eUsers\e\fIusername\fP" (Windows Vista and Windows\ 7) or .CQ "C:\eDocuments\ and\ Settings\e\fIusername\fP" (Windows\ XP). .TP .BR "LC_CTYPE, LANG" Checked to determine the locale if .CW "units" cannot obtain it from the operating system. Sections of the standard units data file are specific to certain locales. .TP .BR "MYUNITSFILE" Specifies your personal units data file. If this variable exists, .CW "units" uses its value rather than searching your home directory for .CQ ".units" . The personal units file will not be loaded if any data files are given using the .CQ "-f" option. .TP .BR "PAGER" Specifies the pager to use for help and for displaying the conformable units. The help function browses the units database and calls the pager using the .CQ "+n" \fIn\fP syntax for specifying a line number. The default pager is .CW "more" ; .CW "PAGER" can be used to specify alternatives such as .CW "less" , .CW "pg" , .CW "emacs" , or .CW "vi" . .TP .BR "UNITS_ENGLISH" Set to either .CQ "US" or .CQ "GB" to choose United States or British volume definitions, overriding the default from your locale. .TP .BR "UNITSFILE" Specifies the units data file to use (instead of the default). You can only specify a single units data file using this environment variable. If units data files are given using the .CQ "-f" option, the file specified by .CW "UNITSFILE" will be not be loaded unless the .CQ "-f" option is given with the empty string .CQ ( "units\ -f\ """"" ). .TP .BR "UNITSLOCALEMAP" Windows only; this variable has no effect on Unix-like systems. Specifies the units locale map file to use (instead of the default). This variable seldom needs to be set, but you can use it to ensure that the locale map file will be found if you specify a location for the units data file using either the .CQ "-f" option or the .CW "UNITSFILE" environment variable, and that location does not also contain the locale map file. .TP .BR "UNITS_SYSTEM" This environment variable is used in the standard data file to select CGS measurement systems. Currently supported systems are .CQ "esu" , .CQ "emu" , .CQ "gauss[ian]" , and .CQ "si" . The default is .CQ "si" . .IP .SH DATA FILES The .CW "units" program uses two default data files: .CQ "definitions.units" and .CQ "currency.units" . The program can also use an optional personal units data file .CQ ".units" .CQ ( "unitdef.units" "" under Windows) located in the user's home directory. The personal units data file is described in more detail in \fIUnits Data Files\fP. .PP On Unix-like systems, the data files are typically located in .CQ "/usr/share/units" if .CW "units" is provided with the operating system, or in .CQ "/usr/local/share/units" if .CW "units" is compiled from the source distribution. Note that the currency file .CQ "currency.units" is a symbolic link to another location. .PP On systems running Microsoft Windows, the files may be in the same locations if Unix-like commands are available, a Unix-like file structure is present (e.g., .CQ "C:/usr/local" ), and .CW "units" is compiled from the source distribution. If Unix-like commands are not available, a more common location is .CQ "C:\eProgram\ Files\ (x86)\eGNU\eunits" (for 64-bit Windows installations) or .CQ "C:\eProgram\ Files\eGNU\eunits" (for 32-bit installations). .PP If .CW "units" is obtained from the GNU Win32 Project (\fRhttp://gnuwin32.sourceforge.net/\fP), the files are commonly in .CQ "C:\eProgram\ Files\eGnuWin32\eshare\eunits" . .PP If the default units data file is not an absolute pathname, .CW "units" will look for the file in the directory that contains the .CW "units" program; if the file is not found there, .CW "units" will look in a directory .CW "../share/units" relative to the directory with the .CW "units" program. .PP You can determine the location of the files by running .CW "units\ --version" . Running .CW "units\ --info" will give you additional information about the files, how .CW "units" will attempt to find them, and the status of the related environment variables. .PP .SH UNICODE SUPPORT The standard units data file is in Unicode, using UTF-8 encoding. Most definitions use only ASCII characters (i.e., code points U+0000 through U+007F); definitions using non-ASCII characters appear in blocks beginning with .CQ "!utf8" and ending with .CQ "!endutf8" . .PP The non-ASCII definitions are loaded only if the platform and the locale support UTF-8. Platform support is determined when .CW "units" is compiled; the locale is checked at every invocation of .CW "units" . To see if your version of .CW "units" includes Unicode support, invoke the program with the .CQ "--version" option. .PP When Unicode support is available, .CW "units" checks every line within UTF-8 blocks in all of the units data files for invalid or non-printing UTF-8 sequences; if such sequences occur, .CW "units" ignores the entire line. In addition to checking validity, .CW "units" determines the display width of non-ASCII characters to ensure proper positioning of the pointer in some error messages and to align columns for the .CQ "search" and .CQ "?" commands. .PP As of early 2019, Microsoft Windows provides limited support for UTF-8 in console applications, and accordingly, .CW "units" does not support Unicode on Windows. The UTF-16 and UTF-32 encodings are not supported on any platforms. .PP If Unicode support is available and definitions that contain non-ASCII UTF-8 characters are added to a units data file, those definitions should be enclosed within .CQ "!utf8" \*(El .CQ "!endutf8" to ensure that they are only loaded when Unicode support is available. As usual, the .CQ "!" must appear as the first character on the line. As discussed in \fIUnits Data Files\fP, it's usually best to put such definitions in supplemental data files linked by an .CQ "!include" command or in a personal units data file. .PP When Unicode support is not available, .CW "units" makes no assumptions about character encoding, except that characters in the range 00\-7F hexadecimal correspond to ASCII encoding. Non-ASCII characters are simply sequences of bytes, and have no special meanings; for definitions in supplementary units data files, you can use any encoding consistent with this assumption. For example, if you wish to use non-ASCII characters in definitions when running .CW "units" under Windows, you can use a character set such as Windows \*(lQANSI\*(rQ (code page 1252 in the US and Western Europe); if this is done, the console code page must be set to the same encoding for the characters to display properly. You can even use UTF-8, though some messages may be improperly aligned, and .CW "units" will not detect invalid UTF-8 sequences. If you use UTF-8 encoding when Unicode support is not available, you should place any definitions with non-ASCII characters \fIoutside\fP .CQ "!utf8" \*(El .CQ "!endutf8" blocks\(emotherwise, they will be ignored. .PP Typeset material other than code examples usually uses the Unicode minus (U+2212) rather than the ASCII hyphen-minus operator (U+002D) used in .CW "units" ; the figure dash (U+2012) and en dash (U+2013) are also occasionally used. To allow such material to be copied and pasted for interactive use or in units data files, .CW "units" converts these characters to U+002D before further processing. Because of this, none of these characters can appear in unit names. .PP .SH READLINE SUPPORT If the .CW "readline" package has been compiled in, then when .CW "units" is used interactively, numerous command line editing features are available. To check if your version of .CW "units" includes .CW "readline" , invoke the program with the .CQ "--version" option. .PP For complete information about .CW "readline" , consult the documentation for the .CW "readline" package. Without any configuration, .CW "units" will allow editing in the style of emacs. Of particular use with .CW "units" are the completion commands. .PP If you type a few characters and then hit \fIESC\fP followed by .CI "?" , then .CW "units" will display a list of all the units that start with the characters typed. For example, if you type .CI "metr" and then request completion, you will see something like this: .PP .ES You have: metr metre metriccup metrichorsepower metrictenth metretes metricfifth metricounce metricton metriccarat metricgrain metricquart metricyarncount You have: metr .EE .PP If there is a unique way to complete a unit name, you can hit the \fITAB\fP key and .CW "units" will provide the rest of the unit name. If .CW "units" beeps, it means that there is no unique completion. Pressing the \fITAB\fP key a second time will print the list of all completions. .PP The readline library also keeps a history of the values you enter. You can move through this history using the up and down arrows. The history is saved to the file .CQ ".units_history" in your home directory so that it will persist across multiple .CW "units" invocations. If you wish to keep work for a certain project separate you can change the history filename using the .CQ "--history" option. You could, for example, make an alias for .CW "units" to .CW "units --history .units_history" so that .CW "units" would save separate history in the current directory. The length of each history file is limited to 5000 lines. Note also that if you run several concurrent copies of .CW "units" each one will save its new history to the history file upon exit. .PP .SH UPDATING CURRENCY EXCHANGE RATES .na The units program database includes currency exchange rates and prices for some precious metals. Of course, these values change over time, sometimes very rapidly, and .CW "units" cannot provide real-time values. To update the exchange rates, run .CW "units_cur" , which rewrites the file containing the currency rates, typically .CQ "/var/lib/\:units/\:currency.units" or .CQ "/usr/local/\:com/\:units/\:currency.units" on a Unix-like system or .CQ "C:\eProgram\ Files\ (x86)\e\:GNU\e\:units\e\:definitions.units" on a Windows system. .ad b .PP This program requires Python (\fRhttps://www.python.org\fP); either version 2 or 3 will work. The program must be run with suitable permissions to write the file. To keep the rates updated automatically, run it using a cron job on a Unix-like system, or a similar scheduling program on a different system. .PP Reliable free sources of currency exchange rates have been annoyingly ephemeral. The program currently supports several sources: .PP .IP \h'1n'\(bu 4n FloatRates (\fRhttps://www/floatrates.com\fP). The US dollar .CQ ( "USD" ) is the default base currency. You can change the base currency with the .CQ "-b" option described below. Allowable base currencies are listed on the FloatRates website. Exchange rates update daily. .PP .IP \h'1n'\(bu 4n The European Central Bank (\fRhttps://www.ecb.europa.eu\fP). The base currency is always the euro .CQ ( "EUR" ). Exchange rates update daily. This source offers a more limited list of currencies than the others. .PP .IP \h'1n'\(bu 4n Fixer (\fRhttps://fixer.io\fP). Registration for a free API key is required. With a free API key, base currency is the euro; exchange rates are updated hourly, the service has a limit of 1,000 API calls per month, and SSL encryption (https protocol) is not available. Most of these restrictions are eliminated or reduced with paid plans. .PP .IP \h'1n'\(bu 4n open exchange rates (\fRhttps://openexchangerates.org\fP). Registration for a free API key is required. With a free API key, the base currency is the US dollar; exchange rates are updated hourly, and there is a limit of 1,000 API calls per month. Most of these restrictions are eliminated or reduced with paid plans. .PP The default source is FloatRates; you can select a different one using .CQ "-s" option described below. .PP Precious metals pricing is obtained from Packetizer (\fRwww.packetizer.com\fP). This site updates once per day. .PP You invoke .CW "units_cur" like this: .PP .ES units_cur [\fIoptions\fP] [\fIoutfile\fP] .EE .PP By default, the output is written to the default currency file described above; this is usually what you want, because this is where .CW "units" looks for the file. If you wish, you can specify a different filename on the command line and .CW "units_cur" will write the data to that file. If you give .CQ "-" for the file it will write to standard output. .PP The following options are available: .TP .BR "-\^h" ", " "-\^-\^help" Print a summary of the options for .CW "units_cur" . .TP .BR "-\^V" ", " "-\^-\^version" Print the .CW "units_cur" version number. .TP .BR "-\^v" ", " "-\^-\^verbose" Give slightly more verbose output when attempting to update currency exchange rates. .TP .BR "-\^s \fIsource\fP" ", " "-\^-\^source \fIsource\fP" Specify the source for currency exchange rates; currently supported values are .CQ "floatrates" (for FloatRates), .CQ "eubank" (for the European Central Bank), .CQ "fixer" (for Fixer), and .CQ "openexchangerates" (for open exchange rates); the last two require an API key to be given with the .CQ "-k" option. .TP .BR "-\^b \fIbase\fP" ", " "-\^-\^base \fIbase\fP" Set the base currency (when allowed by the site providing the data). \fIbase\fP should be a 3-letter ISO currency code, e.g., .CQ "USD" . The specified currency will be the primitive currency unit used by .CW "units" . You may find it convenient to specify your local currency. Conversions may be more accurate and you will be able to convert to your currency by simply hitting \fIEnter\fP at the .CQ "You\ want:" prompt. This option is ignored if the source does not allow specifying the base currency. (Currently only floatrates supports this option.) .TP .BR "-\^k \fIkey\fP" ", " "-\^-\^key \fIkey\fP" Set the API key to \fIkey\fP for sources that require it. .IP .SH DATABASE COMMAND SYNTAX .TP .BR "\fIunit\fP \fIdefinition\fP" Define a regular unit. .TP .BR "\fIprefix\fP- \fIdefinition\fP" Define a prefix. .TP .BR "\fIfuncname\fP(\fIvar\fP) noerror units=[\fIin-\^units\fP,\fIout-units\fP] domain=[\fIx1\fP,\fIx2\fP] range=[\fIy1\fP,\fIy2\fP] \fIdefinition(var)\fP ; \fIinverse(funcname)\fP" Define a nonlinear unit or unit function. The four optional keywords .CW "noerror" , .CW "units=" , .CW "range=" and .CW "domain=" can appear in any order. The definition of the inverse is optional. .TP .BR "\fItabname\fP[\fIout-\^units\fP] noerror \fIpair-list\fP" Define a piecewise linear unit. The pair list gives the points on the table listed in ascending order. The .CW "noerror" keyword is optional. .TP .BR "!endlocale" End a block of definitions beginning with .CQ "!locale" .TP .BR "!endutf8" End a block of definitions begun with .CQ "!utf8" .TP .BR "!endvar" End a block of definitions begun with .CQ "!var" or .CQ "!varnot" .TP .BR "!include \fIfile\fP" Include the specified file. .TP .BR "!locale \fIvalue\fP" Load the following definitions only of the locale is set to \fIvalue\fP. .TP .BR "!message \fItext\fP" Display \fItext\fP when the database is read unless the quiet option .CQ ( "-q" ) is enabled. If you omit \fItext\fP, then units will display a blank line. Messages will also appear in the log file. .TP .BR "!prompt \fItext\fP" Prefix the .CQ "You\ have:" prompt with the specified text. If you omit \fItext\fP, then any existing prefix is canceled. .TP .BR "!set \fIvariable\fP \fIvalue\fP" Sets the environment variable, \fIvariable\fP, to the specified value \fIonly if\fP it is not already set. .TP .BR "!unitlist \fIalias\fP \fIdefinition\fP" Define a unit list alias. .TP .BR "!utf8" Load the following definitions only if .CW "units" is running with UTF-8 enabled. .TP .BR "!var \fIenvar\fP \fIvalue-\^list\fP" Load the block of definitions that follows only if the environment variable \fIenvar\fP is set to one of the values listed in the space-separated value list. If \fIenvar\fP is not set, .CW "units" prints an error message and ignores the block of definitions. .TP .BR "!varnot \fIenvar\fP \fIvalue-\^list\fP" Load the block of definitions that follows only if the environment variable \fIenvar\fP is set to value that is \fInot\fP listed in the space-separated value list. If \fIenvar\fP is not set, .CW "units" prints an error message and ignores the block of definitions. .IP .SH FILES @DATAFILE@ \(em the standard units data file .SH AUTHOR .I units was written by Adrian Mariano units-2.19/icon_ms.png0000664000175000017500000000051612312651560014227 0ustar adrianadrian‰PNG  IHDRóÿasRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÜC%+ÎIDAT8Ë­Ó½jBA†á'•RÚ™:XŸJHS¤³°’$×`¡¼Œx‚—›ÖFmì‚X& XXi³²Ž?,ìÌð~3̲\A;t±Ä/èà?x,bð‰ ÚØÄ_G¸’Ô ’¥H¼À}¬³N”÷Cwçô"õÂI .ª‹àtŠä\xƒ÷p¯‡gýÃ<“?ªUØzª)š¸Cƒ $(MAN) sed s!@DATAFILE@!units.dat! $(NAME).man > $(NAME).1 groff -man $(NAME).1 > $(NAME).less # col -b $(NAME).less > $(DOC) sed -e "s/_//g" -e "s/.//g" units.less > units.doc dist: all @mkdir dist @cp -f $(DISTFILES) dist @zip -9rSq dist\units-src.zip $(SRCFILES) @rm -f $(OBJECTS) check: $(EXE) @echo Checking $(EXE) @echo If output is "* 25.4" the program should be OK @$(EXE) -f .\units.dat kiloinch meter | grep "\*" @echo End check clean: rm -f $(OBJECTS) $(EXE) $(MAN) $(NAME).1 $(NAME).less $(DOC) rm -rf dist units-2.19/Makefile.in0000664000175000017500000002663313473454141014154 0ustar adrianadrian# @configure_input@ # Makefile for units, a program for units conversion # # Copyright (C) 1996, 1997, 1999, 2005, 2006, 2012, 2014, 2017, 2018 # Free Software Foundation, Inc # # 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 3 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 program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA # # # This program was written by Adrian Mariano (adrianm@gnu.org) # @MKS_POSIX@ SHELL = /bin/sh prefix = @MKS_DRIVE@@prefix@ exec_prefix = @exec_prefix@ srcdir = @srcdir@ CC = @CC@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ MAKEINFO = makeinfo TEXI2DVI = texi2dvi TEXI2PDF = texi2pdf MKDIR_P = @MKDIR_P@ LDFLAGS = @LDFLAGS@ LIBS= @LIBS@ VPATH = @srcdir@ HAVE_PYTHON = @HAVE_PYTHON@ PYTHON = @PYTHON@ HAVE_MKS = @HAVE_MKS@ datarootdir = @datarootdir@ datadir = @datadir@ sharedstatedir = @sharedstatedir@ bindir = @bindir@ infodir = @infodir@ mandir = @mandir@ transform=@program_transform_name@ DEFS=-DUNITSFILE=\"@UDATADIR@definitions.units\" -DLOCALEMAP=\"@UDATADIR@locale_map.txt\" \ @DEFIS@ @DEFS@ CFLAGS = @CFLAGS@ CPPFLAGS = @CPPFLAGS@ OBJECTS = units.@OBJEXT@ parse.tab.@OBJEXT@ getopt.@OBJEXT@ getopt1.@OBJEXT@ @STRFUNC@ .PHONY: currency-units-update .SUFFIXES: .SUFFIXES: .c .@OBJEXT@ .rc .res .texinfo .pdf RC = rc.exe RES = units.res .rc.res: $(RC) -fo $@ $< .texinfo.pdf: $(TEXI2PDF) $< .c.@OBJEXT@: $(CC) $(DEFS) $(CPPFLAGS) $(CFLAGS) -I$(srcdir) -c $< # %.@OBJEXT@: %.c # $(CC) $(DEFS) $(CFLAGS) -I$(srcdir) -c %.c DISTFILES = README ChangeLog units.info units.txt getopt1.c units.dvi \ Makefile.in units.c getopt.c getopt.h definitions.units units.texinfo \ configure.ac configure strfunc.c COPYING install-sh \ units.man NEWS texi2man INSTALL units.pdf units_cur \ parse.tab.c parse.y units.h locale_map.txt fdl-1.3.texi currency.units \ unitsfile.ico unitsprog.ico units.rc icon_ms.png \ Makefile.OS2 makeobjs.cmd README.OS2 \ UnitsMKS.texinfo UnitsMKS.pdf setvcvars.sh \ UnitsWin.texinfo UnitsWin.pdf winmkdirs.bat Makefile.Win all: units@EXEEXT@ units.1 units.info units_cur_inst units.@OBJEXT@: units.c units.h parse.tab.c: parse.y bison parse.y parse.tab.@OBJEXT@: parse.tab.c units.h units@EXEEXT@: $(OBJECTS) @MKS_RES@ $(CC) $(CFLAGS) $(LDFLAGS) -o units@EXEEXT@ $(OBJECTS) @MKS_RES@ $(LIBS) units_cur_inst: units_cur sed -e "s@outfile_name = 'currency.units'@outfile_name='@CDAT@currency.units'@"\ -e "s@/usr/bin/python@$(PYTHON)@" \ $(srcdir)/units_cur > units_cur_inst install-support: definitions.units units_cur_inst currency-units-update $(MKDIR_P) $(DESTDIR)@UDAT@ $(DESTDIR)$(bindir) $(DESTDIR)@CDAT@ $(INSTALL_DATA) $(srcdir)/definitions.units $(DESTDIR)@UDAT@definitions.units -rm -f $(DESTDIR)@UDAT@currency.units $(INSTALL_DATA) currency.units $(DESTDIR)@CDAT@currency.units if [ @CDAT@ != @UDAT@ ];then ln -sf @CDAT@currency.units $(DESTDIR)@UDAT@currency.units;fi $(INSTALL_DATA) $(srcdir)/locale_map.txt $(DESTDIR)@UDAT@locale_map.txt if test $(HAVE_PYTHON) = yes; then \ $(INSTALL_PROGRAM) units_cur_inst $(DESTDIR)$(bindir)/`echo units_cur|sed '$(transform)'`;fi if test $(HAVE_MKS) = yes; then make install-mks; fi install: units@EXEEXT@ install-doc install-support $(MKDIR_P) $(DESTDIR)$(bindir) $(INSTALL_PROGRAM) units@EXEEXT@ $(DESTDIR)$(bindir)/`echo units@EXEEXT@|sed '$(transform)'` install-strip: units@EXEEXT@ install-doc install-support $(MKDIR_P) $(DESTDIR)$(bindir) $(INSTALL_PROGRAM) -s units@EXEEXT@ $(DESTDIR)$(bindir)/`echo units@EXEEXT@|sed '$(transform)'` install-doc: install-man install-info install-man: units.1 $(MKDIR_P) $(DESTDIR)$(mandir)/man1 $(INSTALL_DATA) units.1 $(DESTDIR)$(mandir)/man1/`echo units|sed '$(transform)'`.1 # file association and DefaultIcon # assume that if we're running the MKS Toolkit, we're running the Korn # shell, and can use pattern replacement install-mks: $(INSTALL_DATA) $(srcdir)/unitsfile.ico $(DESTDIR)@UDAT@unitsfile.ico $(INSTALL_DATA) $(srcdir)/unitsprog.ico $(DESTDIR)@UDAT@unitsprog.ico assoc .units Units.DataFile vidir="$${ROOTDIR//\//\\}"; \ ftype Units.DataFile "\"$$vidir"'\mksnt\viw.exe" -Uc8p8 "%1"' registry -s -k "HKCR\\Units.DataFile" -v 'GNU units data file' iconfile=$(DESTDIR)@UDAT@unitsfile.ico; \ registry -s -k "HKCR\\Units.DataFile\\DefaultIcon" -n '' -v "$${iconfile//\//\\}" units.man: units.texinfo texi2man ./texi2man units.texinfo > units.man units.1: units.man sed s!@DATAFILE@!@UDAT@definitions.units! $(srcdir)/units.man > units.1 install-info: units.info $(POST_INSTALL) $(MKDIR_P) $(DESTDIR)$(infodir) $(INSTALL_DATA) units.info $(DESTDIR)$(infodir) # Run install-info only if it exists. # Use `if' instead of just prepending `-' to the # line so we notice real errors from install-info. # We use `$(SHELL) -c' because some shells do not # fail gracefully when there is an unknown command. if test -f $(DESTDIR)$(infodir)/dir; then \ if $(SHELL) -c 'install-info --version' >/dev/null 2>&1; then \ install-info --dir-file=$(DESTDIR)$(infodir)/dir \ $(DESTDIR)$(infodir)/units.info; \ else true; fi \ else true; fi Makefile: Makefile.in config.status ./config.status uninstall: -rm -f $(DESTDIR)$(bindir)/`echo units@EXEEXT@|sed '$(transform)'` \ $(DESTDIR)$(mandir)/man1/`echo units|sed '$(transform)'`.1 \ $(DESTDIR)$(infodir)/units.info \ $(DESTDIR)@UDAT@definitions.units \ $(DESTDIR)@CDAT@currency.units \ $(DESTDIR)@UDAT@currency.units \ $(DESTDIR)@UDAT@locale_map.txt \ $(DESTDIR)@UDAT@unitsfile.ico \ $(DESTDIR)@UDAT@unitsprog.ico \ $(DESTDIR)$(bindir)/`echo units_cur|sed '$(transform)'` -rmdir $(DESTDIR)@UDAT@ @if test -f $(DESTDIR)$(infodir)/dir; then \ echo You may need to remove units.info from $(DESTDIR)$(infodir)/dir; \ else true; fi clean mostlyclean: texclean -rm -f *.@OBJEXT@ *.res units@EXEEXT@ units.dvi units.1 distname .chk units_cur_inst -rm -rf wwwold wwwnew distclean: clean -rm -f config.* Makefile TAGS maintainer-clean: clean -rm -f units.txt units.info units.pdf units.dvi \ UnitsMKS.pdf UnitsWin.pdf \ units-*.tar.gz parse.tab.c currency.units # get rid of the TeX auxilliary files texclean: -rm -f units.log UnitsMKS.log UnitsWin.log \ *.aux *.cp *.fn *.ky *.op *.pg *.toc *.tp *.vr currency-units-update: @echo "Trying to update currency.units (will use existing file if this fails)" -$(srcdir)/units_cur currency.units if [ ! -s currency.units ]; then cp $(srcdir)/currency.units currency.units;fi sig: echo units-`sed -n -e '/\#.*VERSION/s/.*"\(.*\)"/\1/gp' \ $(srcdir)/units.c`.tar.gz > distname echo 'version: 1.2' > `cat distname`.directive echo 'directory: units' >> `cat distname`.directive echo 'filename: '`cat distname` >> `cat distname`.directive gpg --clearsign `cat distname`.directive gpg -b `cat distname` -rm -f `cat distname`.directive distname dist: $(DISTFILES) units @./units_cur @echo Updated currencies, running check: ./units -f definitions.units -c @echo '' @chmod g+rw,o+r * @echo units-`sed -n -e '/\#.*VERSION/s/.*"\(.*\)"/\1/gp' \ $(srcdir)/units.c` > distname -@if [ -d `cat distname` ]; then rm -r `cat distname`; fi -@if [ -e `cat distname`.tar.gz ]; then rm `cat distname`.tar.gz; fi @mkdir `cat distname` @dst=`cat distname`; for f in $(DISTFILES); do \ ln $(srcdir)/$$f $$dst/$$f || { echo copying $$f; \ cp -p $(srcdir)/$$f $$dst/$$f ; } \ done @chmod 777 `cat distname` @tar czf `cat distname`.tar.gz `cat distname` @echo `cat distname`.tar.gz created -@rm -rf `cat distname` distname dvi: units.dvi pdf: units.pdf winpdf winpdf: UnitsWin.pdf UnitsMKS.pdf units.dvi: units.texinfo $(TEXI2DVI) $(srcdir)/units.texinfo info: units.info units.info: units.texinfo $(MAKEINFO) $(srcdir)/units.texinfo units.txt: units.1 nroff -Tascii -man $(srcdir)/units.1 | col -b > units.txt doc: units.dvi units.info units.txt units.pdf UnitsMKS.pdf UnitsWin.pdf check: all @echo Checking units @./units -f $(srcdir)/definitions.units \ '(((square(kiloinch)+2.84m2) /0.5) meters^2)^(1|4)' m \ | sed -n -e 's/ \* //p' > .chk @if [ "`cat .chk`" = 6 ]; then echo Units seems to work; \ else echo Something is wrong: units failed the check: ;cat .chk; fi @rm -f .chk configure: configure.ac autoconf TAGS: units.c etags $(srcdir)/units.c $(srcdir)/parse.y tags: units.c ctags $(srcdir)/units.c smalldist: units.c units.h parse.y parse.tab.c echo units-`sed -n -e '/\#.*VERSION/s/.*"\(.*\)"/\1/gp' \ $(srcdir)/units.c` > distname -rm -r `cat distname` `cat distname`.tar `cat distname`.tar.gz tar cf `cat distname`.tar units.c units.h parse.y parse.tab.c\ getopt1.c getopt.c getopt.h gzip `cat distname`.tar # # This section attempts to update the manual on the GNU web server # If all works correctly, it will add/remove files from the CVS tree as required. # It assumes there are only files in the manual and manual/html_node directories. # www: doc -rm -r wwwold wwwnew mkdir wwwnew ./mygendocs.sh --email adrianm@gnu.org -o wwwnew/units/manual units "GNU Units Manual" mkdir wwwold cd wwwold;CVS_RSH=ssh cvs -z3 -d:ext:adrianm@cvs.savannah.gnu.org:/webcvs/units co units cd wwwold/units/manual;ls > /tmp/wwwunits.listold cd wwwnew/units/manual;ls > /tmp/wwwunits.listnew cd wwwold/units/manual/html_node;ls > /tmp/wwwunits.hlistold cd wwwnew/units/manual/html_node;ls > /tmp/wwwunits.hlistnew -grep -vf /tmp/wwwunits.listold /tmp/wwwunits.listnew > /tmp/wwwunits.add -grep -vf /tmp/wwwunits.listnew /tmp/wwwunits.listold | grep -v CVS > /tmp/wwwunits.rm -grep -vf /tmp/wwwunits.hlistold /tmp/wwwunits.hlistnew > /tmp/wwwunits.html.add -grep -vf /tmp/wwwunits.hlistnew /tmp/wwwunits.hlistold | grep -v CVS > /tmp/wwwunits.html.rm rsync -Cr --del -v wwwnew/units/manual wwwold/units/ @if [ -s /tmp/wwwunits.add ]; then cd wwwold/units/manual; cvs add `cat /tmp/wwwunits.add`; \ cvs commit `cat /tmp/wwwunits.add`; fi @if [ -s /tmp/wwwunits.rm ]; then cd wwwold/units/manual; cvs remove `cat /tmp/wwwunits.rm`; \ cvs commit `cat /tmp/wwwunits.rm`; fi @if [ -s /tmp/wwwunits.html.add ]; then cd wwwold/units/manual/html_node; \ cvs add `cat /tmp/wwwunits.add`; cvs add `cat /tmp/wwwunits.add`; fi @if [ -s /tmp/wwwunits.html.rm ]; then cd wwwold/units/manual/html_node; \ cvs remove `cat /tmp/wwwunits.htmlrm`; cvs remove `cat /tmp/wwwunits.rm`; fi cd wwwold/units; cvs commit -rm /tmp/wwwunits.hlistnew /tmp/wwwunits.hlistold /tmp/wwwunits.listnew /tmp/wwwunits.listold -rm /tmp/wwwunits.html.rm /tmp/wwwunits.html.add /tmp/wwwunits.add /tmp/wwwunits.rm -rm -r wwwold wwwnew # # Not very portable code to compile into library (written for Linux) # libunits.a: $(OBJECTS) ar -r libunits.a $^ libunits.so: $(OBJECTS) $(CC) $(LDFLAGS) -shared -o $@ $^ # Tell versions [3.59,3.63) of GNU make not to export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: units-2.19/parse.y0000664000175000017500000003444413473351423013411 0ustar adrianadrian/* * parse.y: the parser for GNU units, a program for units conversion * Copyright (C) 1999-2002, 2007, 2009, 2014, 2017-2018 Free Software * Foundation, Inc * * 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 3 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 program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * This program was written by Adrian Mariano (adrianm@gnu.org) */ %{ #include #include "units.h" struct commtype { int location; const char *data; struct unittype *result; int errorcode; }; static int err; /* value used by parser to store return values */ /* The CHECK macro aborts parse if an error has occurred. It optionally destroys a variable. Call with CHECK(0) if no variables need destruction on error. */ #define CHECK(var) if (err) { comm->errorcode=err; \ if (var) destroyunit(var); \ YYABORT; } int yylex(); void yyerror(struct commtype *comm, char *); #define MAXMEM 100 int unitcount=0; /* Counts the number of units allocated by the parser */ struct function { char *name; double (*func)(double); int type; }; #define DIMENSIONLESS 0 #define ANGLEIN 1 #define ANGLEOUT 2 struct unittype * getnewunit() { struct unittype *unit; if (unitcount>=MAXMEM) return 0; unit = (struct unittype *) mymalloc(sizeof(struct unittype),"(getnewunit)"); if (!unit) return 0; initializeunit(unit); unitcount++; return unit; } void destroyunit(struct unittype *unit) { freeunit(unit); free(unit); unitcount--; } struct unittype * makenumunit(double num,int *myerr) { struct unittype *ret; ret=getnewunit(); if (!ret){ *myerr = E_PARSEMEM; return 0; } ret->factor = num; *myerr = 0; return ret; } int logunit(struct unittype *theunit, int base) { if ((err=unit2num(theunit))) return err; theunit->factor = log(theunit->factor)/log((double)base); if (errno) return E_FUNC; return 0; } int funcunit(struct unittype *theunit, struct function const *fun) { struct unittype angleunit; if (fun->type==ANGLEIN){ err=unit2num(theunit); if (err==E_NOTANUMBER){ initializeunit(&angleunit); angleunit.denominator[0] = dupstr("radian"); angleunit.denominator[1] = 0; err = multunit(theunit, &angleunit); freeunit(&angleunit); if (!err) err = unit2num(theunit); } if (err) return err; } else if (fun->type==ANGLEOUT || fun->type == DIMENSIONLESS) { if ((err=unit2num(theunit))) return err; } else return E_BADFUNCTYPE; errno = 0; theunit->factor = (*(fun->func))(theunit->factor); if (errno) return E_FUNC; if (fun->type==ANGLEOUT) { theunit->numerator[0] = dupstr("radian"); theunit->numerator[1] = 0; } return 0; } %} %parse-param {struct commtype *comm} %lex-param {struct commtype *comm} %define api.pure full %define api.prefix {units} %union { double number; int integer; struct unittype *unit; struct function *realfunc; struct func *unitfunc; } %token REAL %token UNIT %token REALFUNC %token LOG %token UNITFUNC %token EXPONENT %token MULTIPLY %token MULTSTAR %token DIVIDE %token NUMDIV %token SQRT %token CUBEROOT %token MULTMINUS %token EOL %token FUNCINV %token MEMERROR %token BADNUMBER %token UNITEND %token LASTUNSET %type numexpr %type expr %type list %type pexpr %type unitexpr %destructor { destroyunit($$);} %left ADD MINUS %left UNARY %left DIVIDE MULTSTAR %left MULTIPLY MULTMINUS %nonassoc '(' SQRT CUBEROOT REALFUNC LOG UNIT REAL UNITFUNC FUNCINV MEMERROR BADNUMBER UNITEND LASTUNSET %right EXPONENT %left NUMDIV %% input: EOL { comm->result = makenumunit(1,&err); CHECK(0); comm->errorcode = 0; YYACCEPT; } | unitexpr EOL { comm->result = $1; comm->errorcode = 0; YYACCEPT; } | error { YYABORT; } ; unitexpr: expr { $$ = $1;} | DIVIDE list { invertunit($2); $$=$2;} ; expr: list { $$ = $1; } | MULTMINUS list %prec UNARY { $$ = $2; $$->factor *= -1; } | MINUS list %prec UNARY { $$ = $2; $$->factor *= -1; } | expr ADD expr { err = addunit($1,$3); destroyunit($3); CHECK($1);$$=$1;} | expr MINUS expr { $3->factor *= -1; err = addunit($1,$3); destroyunit($3); CHECK($1);$$=$1;} | expr DIVIDE expr { err = divunit($1, $3); destroyunit($3); CHECK($1);$$=$1;} | expr MULTIPLY expr { err = multunit($1,$3); destroyunit($3); CHECK($1);$$=$1;} | expr MULTSTAR expr { err = multunit($1,$3); destroyunit($3); CHECK($1);$$=$1;} ; numexpr: REAL { $$ = $1; } | numexpr NUMDIV numexpr { $$ = $1 / $3; } ; pexpr: '(' expr ')' { $$ = $2; } ; /* list is a list of units, possibly raised to powers, to be multiplied together. */ list: numexpr { $$ = makenumunit($1,&err); CHECK(0);} | UNIT { $$ = $1; } | list EXPONENT list { err = unitpower($1,$3);destroyunit($3); CHECK($1);$$=$1;} | list MULTMINUS list { err = multunit($1,$3); destroyunit($3); CHECK($1);$$=$1;} | list list %prec MULTIPLY { err = multunit($1,$2); destroyunit($2); CHECK($1);$$=$1;} | pexpr { $$=$1; } | SQRT pexpr { err = rootunit($2,2); CHECK($2); $$=$2;} | CUBEROOT pexpr { err = rootunit($2,3); CHECK($2); $$=$2;} | REALFUNC pexpr { err = funcunit($2,$1);CHECK($2); $$=$2;} | LOG pexpr { err = logunit($2,$1); CHECK($2); $$=$2;} | UNITFUNC pexpr { err = evalfunc($2,$1,0,0); CHECK($2);$$=$2;} | FUNCINV UNITFUNC pexpr { err = evalfunc($3,$2,1,0); CHECK($3);$$=$3;} | list EXPONENT MULTMINUS list %prec EXPONENT { $4->factor *= -1; err = unitpower($1,$4); destroyunit($4);CHECK($1);$$=$1;} | list EXPONENT MINUS list %prec EXPONENT { $4->factor *= -1; err = unitpower($1,$4); destroyunit($4);CHECK($1);$$=$1;} | BADNUMBER { err = E_BADNUM; CHECK(0); } | MEMERROR { err = E_PARSEMEM; CHECK(0); } | UNITEND { err = E_UNITEND; CHECK(0); } | LASTUNSET { err = E_LASTUNSET;CHECK(0); } | FUNCINV UNIT { err = E_NOTAFUNC; CHECK($2);} ; %% struct function realfunctions[] = { {"sin", sin, ANGLEIN}, {"cos", cos, ANGLEIN}, {"tan", tan, ANGLEIN}, {"ln", log, DIMENSIONLESS}, {"log", log10, DIMENSIONLESS}, {"exp", exp, DIMENSIONLESS}, {"acos", acos, ANGLEOUT}, {"atan", atan, ANGLEOUT}, {"asin", asin, ANGLEOUT}, {"sinh", sinh, DIMENSIONLESS}, {"cosh", cosh, DIMENSIONLESS}, {"tanh", tanh, DIMENSIONLESS}, {"asinh", asinh, DIMENSIONLESS}, {"acosh", acosh, DIMENSIONLESS}, {"atanh", atanh, DIMENSIONLESS}, {0, 0, 0}}; struct { char op; int value; } optable[] = { {'*', MULTIPLY}, {'/', DIVIDE}, {'|', NUMDIV}, {'+', ADD}, {'(', '('}, {')', ')'}, {'^', EXPONENT}, {'~', FUNCINV}, {0, 0}}; struct { char *name; int value; } strtable[] = { {"sqrt", SQRT}, {"cuberoot", CUBEROOT}, {"per" , DIVIDE}, {0, 0}}; #define LASTUNIT '_' /* Last unit symbol */ int yylex(YYSTYPE *lvalp, struct commtype *comm) { int length, count; struct unittype *output; const char *inptr; char *name; char *nonunitchars = "~;+-*/|\t\n^ ()"; /* Chars not allowed in unit name --- also defined in units.c */ char *nonunitends = ".,_"; /* Can't start or end a unit */ char *number_start = ".,0123456789"; /* Can be first char of a number */ if (comm->location==-1) return 0; inptr = comm->data + comm->location; /* Point to start of data */ /* Skip spaces */ while(*inptr==' ') inptr++, comm->location++; if (*inptr==0) { comm->location = -1; return EOL; /* Return failure if string has ended */ } /* Check for **, an exponent operator. */ if (0==strncmp("**",inptr,2)){ comm->location += 2; return EXPONENT; } /* Check for '-' and '*' which get special handling */ if (*inptr=='-'){ comm->location++; if (parserflags.minusminus) return MINUS; return MULTMINUS; } if (*inptr=='*'){ comm->location++; if (parserflags.oldstar) return MULTIPLY; return MULTSTAR; } /* Check for the "last unit" symbol */ if (*inptr == LASTUNIT) { comm->location++; if (!lastunitset) return LASTUNSET; output = getnewunit(); if (!output) return MEMERROR; unitcopy(output, &lastunit); lvalp->unit = output; return UNIT; } /* Look for single character ops */ for(count=0; optable[count].op; count++){ if (*inptr==optable[count].op) { comm->location++; return optable[count].value; } } /* Look for numbers */ if (strchr(number_start,*inptr)){ /* prevent "nan" from being recognized */ char *endloc; lvalp->number = strtod(inptr, &endloc); if (inptr != endloc) { comm->location += (endloc-inptr); if (*endloc && strchr(number_start,*endloc)) return BADNUMBER; else return REAL; } } /* Look for a word (function name or unit name) */ length = strcspn(inptr,nonunitchars); if (!length){ /* Next char is not a valid unit char */ comm->location++; return 0; } /* Check that unit name doesn't start or end with forbidden chars */ if (strchr(nonunitends,*inptr)){ comm->location++; return 0; } if (strchr(nonunitends, inptr[length-1])){ comm->location+=length; return 0; } name = dupnstr(inptr, length); /* Look for string operators */ for(count=0;strtable[count].name;count++){ if (!strcmp(name,strtable[count].name)){ free(name); comm->location += length; return strtable[count].value; } } /* Look for real function names */ for(count=0;realfunctions[count].name;count++){ if (!strcmp(name,realfunctions[count].name)){ lvalp->realfunc = realfunctions+count; comm->location += length; free(name); return REALFUNC; } } /* Check for arbitrary base log */ if (!strncmp(name, "log",3)){ count = strspn(name+3,"1234567890"); if (count+3 == strlen(name)){ lvalp->integer=atoi(name+3); if (lvalp->integer>1){ /* Log base must be larger than 1 */ comm->location += length; free(name); return LOG; } } } /* Look for function parameter */ if (function_parameter && !strcmp(name,function_parameter)){ free(name); output = getnewunit(); if (!output) return MEMERROR; unitcopy(output, parameter_value); lvalp->unit = output; comm->location += length; return UNIT; } /* Look for user defined function */ lvalp->unitfunc = fnlookup(name); if (lvalp->unitfunc){ comm->location += length; free(name); return UNITFUNC; } /* Didn't find a special string, so treat it as unit name */ comm->location+=length; if (strchr("23456789",inptr[length-1]) && !hassubscript(name)) { /* ends with digit but not a subscript, so do exponent handling like m3 */ count = name[length-1] - '0'; length--; if (strchr(number_start, name[length-1])){ free(name); return UNITEND; } } else count=1; free(name); output = getnewunit(); if (!output) return MEMERROR; output->numerator[count--]=0; for(;count>=0;count--) output->numerator[count] = dupnstr(inptr, length); lvalp->unit=output; return UNIT; } void yyerror(struct commtype *comm, char *s){} int parseunit(struct unittype *output, char const *input,char **errstr,int *errloc) { struct commtype comm; int saveunitcount; saveunitcount = unitcount; initializeunit(output); comm.result = 0; comm.location = 0; comm.data = input; comm.errorcode = E_PARSE; /* Assume parse error */ errno=0; if (yyparse(&comm) || errno){ if (comm.location==-1) comm.location = strlen(input); if (errstr){ if (comm.errorcode==E_FUNC || errno) *errstr = strerror(errno); else *errstr=errormsg[comm.errorcode]; } if (errloc) *errloc = comm.location; if (unitcount!=saveunitcount) fprintf(stderr,"units: Parser leaked memory with error: %d in %d out\n", saveunitcount, unitcount); return comm.errorcode; } else { if (errstr) *errstr = 0; multunit(output,comm.result); destroyunit(comm.result); if (unitcount!=saveunitcount) fprintf(stderr,"units: Parser leaked memory without error: %d in %d out\n", saveunitcount, unitcount); return 0; } } units-2.19/getopt1.c0000664000175000017500000001030412301221017013601 0ustar adrianadrian/* getopt_long and getopt_long_only entry points for GNU getopt. Copyright (C) 1987, 88, 89, 90, 91, 92, 1993, 1994 Free Software Foundation, Inc. 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 3, 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 program; if not, write to the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02111 USA. */ #ifdef HAVE_CONFIG_H #include #endif #include "getopt.h" #if !defined (__STDC__) && !defined (_MSC_VER) || !__STDC__ /* This is a separate conditional since some stdc systems reject `defined (const)'. */ #ifndef const #define const #endif #endif #include /* Comment out all this code if we are using the GNU C Library, and are not actually compiling the library itself. This code is part of the GNU C Library, but also included in many other GNU distributions. Compiling and linking in this code is a waste when using the GNU C library (especially if it is a shared library). Rather than having every GNU program understand `configure --with-gnu-libc' and omit the object files, it is simpler to just do this in the source for each such file. */ #if defined (_LIBC) || !defined (__GNU_LIBRARY__) /* This needs to come after some library #include to get __GNU_LIBRARY__ defined. */ #ifdef __GNU_LIBRARY__ #include #else char *getenv (); #endif #ifndef NULL #define NULL 0 #endif int getopt_long (argc, argv, options, long_options, opt_index) int argc; char *const *argv; const char *options; const struct option *long_options; int *opt_index; { return _getopt_internal (argc, argv, options, long_options, opt_index, 0); } /* Like getopt_long, but '-' as well as '--' can indicate a long option. If an option that starts with '-' (not '--') doesn't match a long option, but does match a short option, it is parsed as a short option instead. */ int getopt_long_only (argc, argv, options, long_options, opt_index) int argc; char *const *argv; const char *options; const struct option *long_options; int *opt_index; { return _getopt_internal (argc, argv, options, long_options, opt_index, 1); } #endif /* _LIBC or not __GNU_LIBRARY__. */ #ifdef TEST #include int main (argc, argv) int argc; char **argv; { int c; int digit_optind = 0; while (1) { int this_option_optind = optind ? optind : 1; int option_index = 0; static struct option long_options[] = { {"add", 1, 0, 0}, {"append", 0, 0, 0}, {"delete", 1, 0, 0}, {"verbose", 0, 0, 0}, {"create", 0, 0, 0}, {"file", 1, 0, 0}, {0, 0, 0, 0} }; c = getopt_long (argc, argv, "abc:d:0123456789", long_options, &option_index); if (c == EOF) break; switch (c) { case 0: printf ("option %s", long_options[option_index].name); if (optarg) printf (" with arg %s", optarg); printf ("\n"); break; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': if (digit_optind != 0 && digit_optind != this_option_optind) printf ("digits occur in two different argv-elements.\n"); digit_optind = this_option_optind; printf ("option %c\n", c); break; case 'a': printf ("option a\n"); break; case 'b': printf ("option b\n"); break; case 'c': printf ("option c with value `%s'\n", optarg); break; case 'd': printf ("option d with value `%s'\n", optarg); break; case '?': break; default: printf ("?? getopt returned character code 0%o ??\n", c); } } if (optind < argc) { printf ("non-option ARGV-elements: "); while (optind < argc) printf ("%s ", argv[optind++]); printf ("\n"); } exit (0); } #endif /* TEST */ units-2.19/units.texinfo0000664000175000017500000045511713473347526014662 0ustar adrianadrian\input texinfo @c -*-texinfo-*- @c %**start of header @setfilename units.info @settitle Units: A Unit Conversion Program and Scientific Calculator @finalout @setchapternewpage off @firstparagraphindent none @set EDITION 2.16 @set VERSION 2.18 @c %**end of header @c for AUTHOR section @c man program units @c ifman .\" @copying This manual is for GNU Units (version @value{VERSION}), which performs units conversions and units calculations. Copyright @copyright{} 1996, 1997, 1999, 2000, 2001, 2002, 2004, 2005, 2007, 2011--2019 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, with no Front-Cover Texts, and with no Back-Cover Texts. @c end ifman @c noman A copy of the license is included in the section entitled ``GNU Free Documentation License''. @end quotation @end copying @c end noman @defcodeindex op @syncodeindex op cp @c noman @dircategory Science @direntry * Units: (units). Units conversion and scientific calculation. @end direntry @c end noman @c man .TH UNITS 1 "19 March 2019" @c man .SH NAME @c man units \(em unit conversion and calculation program @c man .\" hack to prevent very thick fraction bars with gropdf @c man .\" '-1' makes thickness proportional to type size @c man .if \n(.g .if t \Z@\D't -1'@ @titlepage @title Units Conversion @subtitle Edition @value{EDITION} for @command{units} Version @value{VERSION} @author Adrian Mariano @page @vskip 0pt plus 1filll @insertcopying @end titlepage @contents @iftex @headings off @everyheading Units Conversion @| @| @thispage @end iftex @ifnottex @node Top @top Units Conversion @c noman This manual describes the @command{units} command for units conversion and how you can use it as a powerful scientific calculator that keeps track of units. This is Edition @value{EDITION} of @cite{The Units Conversion Manual} for @command{units} Version @value{VERSION}. @c end noman @end ifnottex @menu * Overview:: What does @command{units} do? * Interactive Use:: How to use @command{units}. * Command Line Use:: How to use @command{units} non-interactively. * Unit Definitions:: What units are defined? * Unit Expressions:: Forming compound units. * Nonlinear Conversions:: Nonlinear unit conversions (e.g., temperature). * Unit Lists:: Conversion to sums of units (e.g., feet and inches). * Using CGS Units:: Using CGS units: Gaussian, ESU, or EMU * Logging Calculations:: Logging conversions and calculations in a file. * Invoking Units:: Command line options. * Output Styles:: Different ways units can print the output. * Defining Your Own Units:: Adding your own unit definitions * Numeric Output Format:: How to change the output format * Localization:: How to define and use regional unit names. * Environment Vars:: Environment variables used by @command{units}. * Data Files:: Descriptions and locations of units data files. * Unicode Support:: Support for Unicode (UTF-8). * Readline Support:: Unit name completion and editing. * Currency:: Updating currency exchange rates. * Database Syntax:: Summary of database command syntax. * GNU Free Documentation License:: License. * Index:: General index. @end menu @c noman @node Overview @chapter Overview of @command{units} @c end noman @c ifman @ignore @c '.PP' for consistency with spacing before other sections. .PP .SH SYNOPSIS .PP .CW units .RI [ options ] .RI [ from-unit .RI [ to-unit ]] .PP .SH DESCRIPTION @end ignore @c end ifman @html @end html The @command{units} program converts quantities expressed in various systems of measurement to their equivalents in other systems of measurement. Like many similar programs, it can handle multiplicative scale changes. It can also handle nonlinear conversions such as Fahrenheit to @c man Celsius; @c noman Celsius;@footnote{But Fahrenheit to Celsius is linear, you insist. Not so. A transformation @math{T} is linear if @math{T(x+y)=T(x)+T(y)} and this fails for @math{T(x)=ax+b}. This transformation is affine, but not linear. } @pxref{Temperature Conversions}. @c end noman @c man see \fITemperature Conversions\fP. The program can also perform conversions from and to sums of units, such as converting between meters and feet plus inches. Basic operation is simple: you enter the units that you want to convert @emph{from} and the units that you want to convert @emph{to}. You can use the program interactively with prompts, or you can use it from the command line. Beyond simple unit conversions, @command{units} can be used as a general-purpose scientific calculator that keeps track of units in its calculations. You can form arbitrary complex mathematical expressions of dimensions including sums, products, quotients, powers, and even roots of dimensions. Thus you can ensure accuracy and dimensional consistency when working with long expressions that involve many different units that may combine in complex ways; for an illustration, @c man see \fIComplicated Unit Expressions\fP. @c noman @pxref{Complicated Unit Expressions}. @c end noman The units are defined in an external data file. You can use the extensive data file that comes with this program, or you can provide your own data file to suit your needs. You can also use your own data file to supplement the standard data file. You can change the default behavior of @command{units} with various options given on the command line. @xref{Invoking Units}, for a description of the available options. @node Interactive Use @chapter Interacting with @command{units} @cindex interactive use To invoke @command{units} for interactive use, type @kbd{units} at your shell prompt. The program will print something like this: @example @group Currency exchange rates from www.timegenie.com on 2014-03-05 2860 units, 109 prefixes, 85 nonlinear units You have: @end group @end example @noindent At the @w{@samp{You have:}} prompt, type the quantity and units that you are converting @emph{from}. For example, if you want to convert ten meters to feet, type @kbd{10 meters}. Next, @command{units} will print @w{@samp{You want:}}. You should type the units you want to convert @emph{to}. To convert to feet, you would type @kbd{feet}. If the @command{readline} library was compiled in, then @key{tab} will complete unit names. @xref{Readline Support}, for more information about @command{readline}. To quit the program type @kbd{quit} or @kbd{exit} at either prompt. The result will be displayed in two ways. The first line of output, which is marked with a @samp{*} to indicate multiplication, gives the result of the conversion you have asked for. The second line of output, which is marked with a @samp{/} to indicate division, gives the inverse of the conversion factor. If you convert 10 meters to feet, @command{units} will print @example @group * 32.808399 / 0.03048 @end group @end example @noindent which tells you that 10 meters equals about 32.8 feet. The second number gives the conversion in the opposite direction. In this case, it tells you that 1 foot is equal to about 0.03 dekameters since the dekameter is 10 meters. It also tells you that 1/32.8 is about 0.03. The @command{units} program prints the inverse because sometimes it is a more convenient number. In the example above, for example, the inverse value is an exact conversion: a foot is exactly 0.03048 dekameters. But the number given the other direction is inexact. If you convert grains to pounds, you will see the following: @example @group You have: grains You want: pounds * 0.00014285714 / 7000 @end group @end example @noindent From the second line of the output you can immediately see that a grain is equal to a seven thousandth of a pound. This is not so obvious from the first line of the output. If you find the output format confusing, try using the @option{--verbose} option: @cindex verbose output @example @group You have: grain You want: aeginamina grain = 0.00010416667 aeginamina grain = (1 / 9600) aeginamina @end group @end example @noindent If you request a conversion between units that measure reciprocal dimensions, then @command{units} will display the conversion results with an extra note indicating that reciprocal conversion has been done: @cindex reciprocal conversion @example @group You have: 6 ohms You want: siemens reciprocal conversion * 0.16666667 / 6 @end group @end example @noindent Reciprocal conversion can be suppressed by using the @option{--strict} option. As usual, use the @option{--verbose} option to get more comprehensible output: @cindex verbose output @cindex strict conversion @example @group You have: tex You want: typp reciprocal conversion 1 / tex = 496.05465 typp 1 / tex = (1 / 0.0020159069) typp You have: 20 mph You want: sec/mile reciprocal conversion 1 / 20 mph = 180 sec/mile 1 / 20 mph = (1 / 0.0055555556) sec/mile @end group @end example @noindent If you enter incompatible unit types, the @command{units} program will print a message indicating that the units are not conformable and it will display the reduced form for each unit: @cindex incompatible units @cindex non-conformable units @example @group You have: ergs/hour You want: fathoms kg^2 / day conformability error 2.7777778e-11 kg m^2 / sec^3 2.1166667e-05 kg^2 m / sec @end group @end example @noindent If you only want to find the reduced form or definition of a unit, simply press @key{Enter} at the @w{@samp{You want:}} prompt. Here is an example: @example @group You have: jansky You want: Definition: fluxunit = 1e-26 W/m^2 Hz = 1e-26 kg / s^2 @end group @end example @noindent The output from @command{units} indicates that the jansky is defined to be equal to a fluxunit which in turn is defined to be a certain combination of watts, meters, and hertz. The fully reduced (and in this case somewhat more cryptic) form appears on the far right. Some named units are treated as dimensionless in some situations. These units include the radian and steradian. These units will be treated as equal to 1 in units conversions. Power is equal to torque times angular velocity. This conversion can only be performed if the radian is dimensionless. @example @group You have: (14 ft lbf) (12 radians/sec) You want: watts * 227.77742 / 0.0043902509 @end group @end example @noindent It is also possible to compute roots and other non-integer powers of dimensionless units; this allows computations such as the altitude of geosynchronous orbit: @example @group You have: cuberoot(G earthmass / (circle/siderealday)^2) - earthradius You want: miles * 22243.267 / 4.4957425e-05 @end group @end example @noindent Named dimensionless units are not treated as dimensionless in other contexts. They cannot be used as exponents so for example, @samp{meter^radian} is forbidden. @cindex dimensionless units @cindex @samp{?} to show conformable units @cindex conformable units, @samp{?} to show If you want a list of options you can type @kbd{?} at the @w{@samp{You want:}} prompt. The program will display a list of named units that are conformable with the unit that you entered at the @w{@samp{You have:}} prompt above. Conformable unit @emph{combinations} will not appear on this list. @cindex help Typing @kbd{help} at either prompt displays a short help message. You can also type @kbd{help} followed by a unit name. This will invoke a pager on the units data base at the point where that unit is defined. You can read the definition and comments that may give more details or historical information about the unit. (You can generally quit out of the page by pressing @samp{q}.) Typing @kbd{search} @var{text} will display a list of all of the units whose names contain @var{text} as a substring along with their definitions. This may help in the case where you aren't sure of the right unit name. @node Command Line Use @chapter Using @command{units} Non-Interactively @cindex command-line unit conversion @cindex non-interactive unit conversion The @command{units} program can perform units conversions non-interactively from the command line. To do this, type the command, type the original unit expression, and type the new units you want. If a units expression contains non-alphanumeric characters, you may need to protect it from interpretation by the shell using single or double quote characters. If you type @example units "2 liters" quarts @end example @noindent then @command{units} will print @example @group * 2.1133764 / 0.47317647 @end group @end example @noindent and then exit. The output tells you that 2 liters is about 2.1 quarts, or alternatively that a quart is about 0.47 times 2 liters. @command{units} does not require a space between a numerical value and the unit, so the previous example can be given as @example units 2liters quarts @end example @noindent to avoid having to quote the first argument. If the conversion is successful, then @command{units} will return success (zero) to the calling environment. If you enter non-conformable units, then @command{units} will print a message giving the reduced form of each unit and it will return failure (nonzero) to the calling environment. When you invoke @command{units} with only one argument, it will print the definition of the specified unit. It will return failure if the unit is not defined and success if the unit is defined. @node Unit Definitions @chapter Unit Definitions @cindex unit definitions The conversion information is read from a units data file that is called @file{definitions.units} and is usually located in the @file{/usr/share/units} directory. If you invoke @command{units} with the @option{-V} option, it will print the location of this file. The default file includes definitions for all familiar units, abbreviations and metric prefixes. It also includes many obscure or archaic units. Many common spelled-out numbers (e.g., @samp{seventeen}) are recognized. Many constants of nature are defined, including these: @example pi @r{ratio of circumference to diameter} c @r{speed of light} e @r{charge on an electron} force @r{acceleration of gravity} mole @r{Avogadro's number} water @r{pressure per unit height of water} Hg @r{pressure per unit height of mercury} au @r{astronomical unit} k @r{Boltzman's constant} mu0 @r{permeability of vacuum} epsilon0 @r{permittivity of vacuum} G @r{Gravitational constant} mach @r{speed of sound} @end example @noindent The standard data file includes atomic masses for all of the elements and numerous other constants. Also included are the densities of various ingredients used in baking so that @samp{2@tie{}cups flour_sifted} can be converted to @samp{grams}. This is not an exhaustive list. Consult the units data file to see the complete list, or to see the definitions that are used. @cindex measure, Imperial @cindex Imperial measure @cindex British Imperial measure The @samp{pound} is a unit of mass. To get force, multiply by the force conversion unit @samp{force} or use the shorthand @samp{lbf}. (Note that @samp{g} is already taken as the standard abbreviation for the gram.) The unit @samp{ounce} is also a unit of mass. The fluid ounce is @samp{fluidounce} or @samp{floz}. When British capacity units differ from their US counterparts, such as the British Imperial gallon, the unit is defined both ways with @samp{br} and @samp{us} prefixes. Your locale settings will determine the value of the unprefixed unit. Currency is prefixed with its country name: @samp{belgiumfranc}, @samp{britainpound}. @cindex units, lookup method When searching for a unit, if the specified string does not appear exactly as a unit name, then the @command{units} program will try to remove a trailing @samp{s}, @samp{es}. Next units will replace a trailing @samp{ies} with @samp{y}. If that fails, @command{units} will check for a prefix. The database includes all of the standard metric prefixes. Only one prefix is permitted per unit, so @samp{micromicrofarad} will fail. However, prefixes can appear alone with no unit following them, so @samp{micro*microfarad} will work, as will @samp{micro microfarad}. @cindex prefixes To find out which units and prefixes are available, read the standard units data file, which is extensively annotated. @section English Customary Units @cindex volume measure, English customary English customary units differ in various ways in different regions. In Britain a complex system of volume measurements featured different gallons for different materials such as a wine gallon and ale gallon that different by twenty percent. This complexity was swept away in 1824 by a reform that created an entirely new gallon, the British Imperial gallon defined as the volume occupied by ten pounds of water. Meanwhile in the USA the gallon is derived from the 1707 Winchester wine gallon, which is 231 cubic inches. These gallons differ by about twenty percent. By default if @command{units} runs in the @samp{en_GB} locale you will get the British volume measures. If it runs in the @samp{en_US} locale you will get the US volume measures. In other locales the default values are the US definitions. If you wish to force different definitions, then set the environment variable @env{UNITS_ENGLISH} to either @samp{US} or @samp{GB} to set the desired definitions independent of the locale. @cindex length measure, English customary @cindex length measure, UK @cindex survey measure, US @cindex US survey measure @cindex survey mile, US @cindex US survey foot @cindex State Plane Coordinate System, US @cindex US State Plane Coordinate System @cindex survey foot, US @cindex US survey mile @cindex mile, international @cindex international mile @cindex yard, international @cindex international yard Before 1959, the value of a yard (and other units of measure defined in terms of it) differed slightly among English-speaking countries. In 1959, Australia, Canada, New Zealand, the United Kingdom, the United States, and South Africa adopted the Canadian value of 1@tie{}yard = 0.9144@tie{}m (exactly), which was approximately halfway between the values used by the UK and the US; it had the additional advantage of making 1@tie{}inch = 2.54@tie{}cm (exactly). This new standard was termed the @dfn{International Yard}. Australia, Canada, and the UK then defined all customary lengths in terms of the International Yard (Australia did not define the furlong or rod); because many US land surveys were in terms of the pre-1959 units, the US continued to define customary surveyors' units (furlong, chain, rod, and link) in terms of the previous value for the foot, which was termed the @dfn{US survey foot}. The US defined a @dfn{US survey mile} as 5280 US survey feet, and defined a @dfn{statute mile} as a US survey mile. The US values for these units differ from the international values by about 2@tie{}ppm. The @command{units} program uses the international values for these units; the US values can be obtained by using either the @samp{US} or the @samp{survey} prefix. In either case, the simple familiar relationships among the units are maintained, e.g., 1 @samp{furlong} = 660 @samp{ft}, and 1 @samp{USfurlong} = 660 @samp{USft}, though the metric equivalents differ slightly between the two cases. The @samp{US} prefix or the @samp{survey} prefix can also be used to obtain the US survey mile and the value of the US yard prior to 1959, e.g., @samp{USmile} or @samp{surveymile} (but @emph{not} @samp{USsurveymile}). To get the US value of the statute mile, use either @samp{USstatutemile} or @samp{USmile}. Except for distances that extend over hundreds of miles (such as in the US State Plane Coordinate System), the differences in the miles are usually insignificant: @example @group You have: 100 surveymile - 100 mile You want: inch * 12.672025 / 0.078913984 @end group @end example @noindent The pre-1959 UK values for these units can be obtained with the prefix @samp{UK}. In the US, the acre is officially defined in terms of the US survey foot, but @command{units} uses a definition based on the international foot. If you want the official US acre use @samp{USacre} and similarly use @samp{USacrefoot} for the official US version of that unit. The difference between these units is about 4 parts per million. @node Unit Expressions @chapter Unit Expressions @cindex unit expressions @menu * Operators:: The usual arithmetic operators, with a few extras * Sums and Differences of Units:: Adding and subtracting units * Numbers as Units:: A number is a dimensionless unit * Built-in Functions:: Trigonometric functions, logarithms, roots * Previous Result:: Inserting the result of the previous conversion * Complicated Unit Expressions:: A complicated example * Backwards Compatibility:: Alternate behavior for @samp{*} and @samp{-} @end menu @node Operators @section Operators @cindex operators You can enter more complicated units by combining units with operations such as multiplication, division, powers, addition, subtraction, and parentheses for grouping. You can use the customary symbols for these operators when @command{units} is invoked with its default options. Additionally, @command{units} supports some extensions, including high priority multiplication using a space, and a high priority numerical division operator (@samp{|}) that can simplify some expressions. @cindex products of units @cindex quotients of units @cindex units quotients @cindex multiplication of units @cindex division of units @cindex operator, @samp{per} @cindex @samp{per} operator @cindex operator, space @cindex operator, star (@samp{*}) @cindex star (@samp{*}) operator @cindex @samp{*} operator @cindex operator, slash (@samp{/}) @cindex slash (@samp{/}) operator @cindex operator, solidus (@samp{/}) @cindex solidus (@samp{/}) operator You multiply units using a space or an asterisk (@samp{*}). The next example shows both forms: @example @group You have: arabicfoot * arabictradepound * force You want: ft lbf * 0.7296 / 1.370614 @end group @end example @noindent You can divide units using the slash (@samp{/}) or with @samp{per}: @example @group You have: furlongs per fortnight You want: m/s * 0.00016630986 / 6012.8727 @end group @end example @cindex parentheses @noindent You can use parentheses for grouping: @example @group You have: (1/2) kg / (kg/meter) You want: league * 0.00010356166 / 9656.0833 @end group @end example @cindex operator precedence @cindex parentheses @cindex white space @noindent White space surrounding operators is optional, so the previous example could have used @samp{(1/2)kg/(kg/meter)}. As a consequence, however, hyphenated spelled-out numbers (e.g., @samp{forty-two}) cannot be used; @samp{forty-two} is interpreted as @samp{40 - 2}. Multiplication using a space has a higher precedence than division using a slash and is evaluated left to right; in effect, the first @samp{/} character marks the beginning of the denominator of a unit expression. This makes it simple to enter a quotient with several terms in the denominator: @w{@samp{J / mol K}}. The @samp{*} and @samp{/} operators have the same precedence, and are evaluated left to right; if you multiply with @samp{*}, you must group the terms in the denominator with parentheses: @w{@samp{J / (mol * K)}}. @cindex fractions, numerical @cindex numerical fractions @cindex division of numbers @cindex operator, vertical bar (@samp{|}) @cindex vertical bar (@samp{|}) operator @cindex @samp{|} operator The higher precedence of the space operator may not always be advantageous. For example, @w{@samp{m/s s/day}} is equivalent to @w{@samp{m / s s day}} and has dimensions of length per time cubed. Similarly, @w{@samp{1/2 meter}} refers to a unit of reciprocal length equivalent to 0.5/meter, perhaps not what you would intend if you entered that expression. The get a half meter you would need to use parentheses: @w{@samp{(1/2) meter}}. The @samp{*} operator is convenient for multiplying a sequence of quotients. For example, @w{@samp{m/s * s/day}} is equivalent to @samp{m/day}. Similarly, you could write @w{@samp{1/2 * meter}} to get half a meter. The @command{units} program supports another option for numerical fractions: you can indicate division of @emph{numbers} with the vertical bar (@samp{|}), so if you wanted half a meter you could write @w{@samp{1|2 meter}}. You cannot use the vertical bar to indicate division of non-numerical units (e.g., @samp{m|s} results in an error message). @cindex powers @cindex exponent operator @cindex operator, caret (@samp{^}) @cindex operator, (@samp{**}) @cindex @samp{**} operator @cindex parentheses Powers of units can be specified using the @samp{^} character, as shown in the following example, or by simple concatenation of a unit and its exponent: @samp{cm3} is equivalent to @samp{cm^3}; if the exponent is more than one digit, the @samp{^} is required. You can also use @samp{**} as an exponent operator. @example @group You have: cm^3 You want: gallons * 0.00026417205 / 3785.4118 @end group @end example @noindent Concatenation only works with a single unit name: if you write @samp{(m/s)2}, @command{units} will treat it as multiplication by 2. @cindex prefixes and exponents When a unit includes a prefix, exponent operators apply to the combination, so @samp{centimeter3} gives cubic centimeters. If you separate the prefix from the unit with any multiplication operator (e.g., @samp{centi meter^3}), the prefix is treated as a separate unit, so the exponent applies only to the unit without the prefix. The second example is equivalent to @samp{centi * (meter^3)}, and gives a hundredth of a cubic meter, not a cubic centimeter. The @command{units} program is limited internally to products of 99 units; accordingly, expressions like @samp{meter^100} or @samp{joule^34} (represented internally as @w{@samp{kg^34 m^68 / s^68}}) will fail. The @samp{|} operator has the highest precedence, so you can write the square root of two thirds as @samp{2|3^1|2}. The @samp{^} operator has the second highest precedence, and is evaluated right to left, as usual: @example @group You have: 5 * 2^3^2 You want: Definition: 2560 @end group @end example @noindent With a dimensionless base unit, any dimensionless exponent is meaningful (e.g., @samp{pi^exp(2.371)}). Even though angle is sometimes treated as dimensionless, exponents cannot have dimensions of angle: @example @group You have: 2^radian ^ Exponent not dimensionless @end group @end example @noindent If the base unit is not dimensionless, the exponent must be a rational number @w{@var{p}/@var{q}}, and the dimension of the unit must be a power of @var{q}, so @samp{gallon^2|3} works but @samp{acre^2|3} fails. An exponent using the slash (@samp{/}) operator (e.g., @samp{gallon^(2/3)}) is also acceptable; the parentheses are needed because the precedence of @samp{^} is higher than that of @samp{/}. Since @command{units} cannot represent dimensions with exponents greater than 99, a fully reduced exponent must have @w{@var{q} < 100}. When raising a non-dimensionless unit to a power, @command{units} attempts to convert a decimal exponent to a rational number with @w{@var{q} < 100}. If this is not possible @command{units} displays an error message: @example @group You have: ft^1.234 Base unit not dimensionless; rational exponent required @end group @end example @noindent A decimal exponent must match its rational representation to machine precision, so @samp{acre^1.5} works but @samp{gallon^0.666} does not. @node Sums and Differences of Units @section Sums and Differences of Units @cindex sums and differences of units @cindex units, sums and differences @cindex operator, plus (@samp{+}) @cindex plus (@samp{+}) operator @cindex @samp{+} operator @cindex operator, minus (@samp{-}) @cindex minus (@samp{-}) operator, subtraction @cindex operator, hyphen (@samp{-}) as subtraction @cindex @samp{-} as subtraction operator @noindent You may sometimes want to add values of different units that are outside the SI. You may also wish to use @command{units} as a calculator that keeps track of units. Sums of conformable units are written with the @samp{+} character, and differences with the @samp{-} character. @cindex sums of units @cindex addition of units @cindex subtraction of units @cindex differences of units @example @group You have: 2 hours + 23 minutes + 32 seconds You want: seconds * 8612 / 0.00011611705 @end group @end example @example @group You have: 12 ft + 3 in You want: cm * 373.38 / 0.0026782366 @end group @end example @example @group You have: 2 btu + 450 ft lbf You want: btu * 2.5782804 / 0.38785542 @end group @end example @noindent The expressions that are added or subtracted must reduce to identical expressions in primitive units, or an error message will be displayed: @example @group You have: 12 printerspoint - 4 heredium ^ Illegal sum of non-conformable units @end group @end example @cindex parentheses @noindent As usual, the precedence for @samp{+} and @samp{-} is lower than that of the other operators. A fractional quantity such as 2@tie{}1/2 cups can be given as @samp{(2+1|2) cups}; the parentheses are necessary because multiplication has higher precedence than addition. If you omit the parentheses, @command{units} attempts to add @samp{2} and @samp{1|2 cups}, and you get an error message: @example @group You have: 2+1|2 cups ^ Illegal sum or difference of non-conformable units @end group @end example @noindent The expression could also be correctly written as @samp{(2+1/2) cups}. If you write @samp{2@tie{}1|2 cups} the space is interpreted as @emph{multiplication} so the result is the same as @samp{1 cup}. The @samp{+} and @samp{-} characters sometimes appears in exponents like @samp{3.43e+8}. This leads to an ambiguity in an expression like @samp{3e+2 yC}. The unit @samp{e} is a small unit of charge, so this can be regarded as equivalent to @samp{(3e+2) yC} or @samp{(3 e)+(2 yC)}. This ambiguity is resolved by always interpreting @samp{+} and @samp{-} as part of an exponent if possible. @node Numbers as Units @section Numbers as Units @cindex numbers as units For @command{units}, numbers are just another kind of unit. They can appear as many times as you like and in any order in a unit expression. For example, to find the volume of a box that is 2 ft by 3 ft by 12 ft in steres, you could do the following: @example @group You have: 2 ft 3 ft 12 ft You want: stere * 2.038813 / 0.49048148 You have: $ 5 / yard You want: cents / inch * 13.888889 / 0.072 @end group @end example @noindent And the second example shows how the dollar sign in the units conversion can precede the five. Be careful: @command{units} will interpret @samp{$5} with no space as equivalent to @samp{dollar^5}. @node Built-in Functions @section Built-in Functions @cindex functions, built in @cindex built-in functions Several built-in functions are provided: @samp{sin}, @samp{cos}, @samp{tan}, @samp{ln}, @samp{log}, @samp{exp}, @samp{acos}, @samp{atan}, @samp{asin}, @samp{cosh}, @samp{sinh}, @samp{tanh}, @samp{acosh}, @samp{asinh}, and @samp{atanh}. The @samp{sin}, @samp{cos}, and @samp{tan} functions require either a dimensionless argument or an argument with dimensions of angle. @example @group You have: sin(30 degrees) You want: Definition: 0.5 You have: sin(pi/2) You want: Definition: 1 You have: sin(3 kg) ^ Unit not dimensionless @end group @end example @noindent The other functions on the list require dimensionless arguments. The inverse trigonometric functions return arguments with dimensions of angle. @cindex logs The @samp{ln} and @samp{log} functions give natural log and log base 10 respectively. To obtain logs for any integer base, enter the desired base immediately after @samp{log}. For example, to get log base 2 you would write @samp{log2} and to get log base 47 you could write @samp{log47}. @example @group You have: log2(32) You want: Definition: 5 You have: log3(32) You want: Definition: 3.1546488 You have: log4(32) You want: Definition: 2.5 You have: log32(32) You want: Definition: 1 You have: log(32) You want: Definition: 1.50515 You have: log10(32) You want: Definition: 1.50515 @end group @end example @cindex roots @cindex square roots If you wish to take roots of units, you may use the @samp{sqrt} or @samp{cuberoot} functions. These functions require that the argument have the appropriate root. You can obtain higher roots by using fractional exponents: @example @group You have: sqrt(acre) You want: feet * 208.71074 / 0.0047913202 You have: (400 W/m^2 / stefanboltzmann)^(1/4) You have: Definition: 289.80882 K You have: cuberoot(hectare) ^ Unit not a root @end group @end example @node Previous Result @section Previous Result @cindex previous result @cindex @samp{_} to use result of previous conversion @noindent You can insert the result of the previous conversion using the underscore (@samp{_}). It is useful when you want to convert the same input to several different units, for example @example @group You have: 2.3 tonrefrigeration You want: btu/hr * 27600 / 3.6231884e-005 You have: _ You want: kW * 8.0887615 / 0.12362832 @end group @end example @noindent Suppose you want to do some deep frying that requires an oil depth of 2@tie{}inches. You have 1/2 gallon of oil, and want to know the largest-diameter pan that will maintain the required depth. The nonlinear unit @samp{circlearea} gives the @emph{radius} of the circle (@pxref{Other Nonlinear Units}, for a more detailed description) in SI units; you want the @emph{diameter} in @emph{inches}: @example @group You have: 1|2 gallon / 2 in You want: circlearea 0.10890173 m You have: 2 _ You want: in * 8.5749393 / 0.1166189 @end group @end example @cindex white space @noindent In most cases, surrounding white space is optional, so the previous example could have used @samp{2_}. If @samp{_} follows a non-numerical unit symbol, however, the space is required: @example @group You have: m_ ^ Parse error @end group @end example @noindent When @samp{_} is followed by a digit, the operation is multiplication rather than exponentiation, so that @samp{_2}, is equivalent to @w{@samp{_ * 2}} rather than @samp{_^2}. You can use the @samp{_} symbol any number of times; for example, @example @group You have: m You want: Definition: 1 m You have: _ _ You want: Definition: 1 m^2 @end group @end example @noindent Using @samp{_} before a conversion has been performed (e.g., immediately after invocation) generates an error: @set codequoteundirected @example @group You have: _ ^ No previous result; '_' not set @end group @end example @clear codequoteundirected @noindent Accordingly, @samp{_} serves no purpose when @command{units} is invoked non-interactively. If @command{units} is invoked with the @option{--verbose} option (@pxref{Invoking Units}), the value of @samp{_} is not expanded: @example @group You have: mile You want: ft mile = 5280 ft mile = (1 / 0.00018939394) ft You have: _ You want: m _ = 1609.344 m _ = (1 / 0.00062137119) m @end group @end example @noindent You can give @samp{_} at the @w{@samp{You want:}} prompt, but it usually is not very useful. @node Complicated Unit Expressions @section Complicated Unit Expressions @cindex unit expressions, complicated @html @end html @noindent The @command{units} program is especially helpful in ensuring accuracy and dimensional consistency when converting lengthy unit expressions. @c noman @cindex Darcy--Weisbach equation For example, one form of the Darcy--Weisbach fluid-flow equation is @tex $$ \Delta P = {8 \over \pi^2} \rho fL { Q^2 \over d^5} $$ @end tex @ifinfo @example Delta P = (8/pi^2) rho f L (Q^2 / d^5) @end example @end ifinfo @html \[ \Delta P = \frac{8}{\pi^2} \rho fL \frac{Q^2}{d^5} \] @end html @noindent @ifinfo where @w{Delta P} is the pressure drop, rho @end ifinfo @ifnotinfo where @math{ \Delta P} is the pressure drop, @math{\rho} @end ifnotinfo is the mass density, @math{f} is the (dimensionless) friction factor, @math{L} is the length of the pipe, @math{Q} is the volumetric flow rate, and @math{d} is the pipe diameter. It might be desired to have the equation in the form @tex $$ \Delta P = A_1 \rho fL {Q^2 \over d^5} $$ @end tex @html \[ \Delta P = A_1 \rho fL \frac{Q^2}{d^5} \] @end html @ifinfo @example Delta P = A1 rho f L (Q^2 / d^5) @end example @end ifinfo @c end noman @c ----------------------------------- @c nroff--assume neqn is not available @c ----------------------------------- @c man .if t .ig ++ @c man For example, one form of the Darcy-Weisbach fluid-flow equation is @c man .RS 5n @c man .PP @c man Delta \fIP\fP = (8 / pi)^2 (\fIrho\fP \fIfLQ\fP^2) / \fId\fP^5, @c man .RE @c man .PP @c man where Delta \fIP\fP is the pressure drop, \fIrho\fP is the mass density, @c man \fIf\fP is the (dimensionless) friction factor, \fIL\fP is the length @c man of the pipe, \fIQ\fP is the volumetric flow rate, and \fId\fP @c man is the pipe diameter. @c man It might be desired to have the equation in the form @c man .RS 5n @c man .PP @c man Delta \fIP\fP = A1 \fIrho\fP \fIfLQ\fP^2 / \fId\fP^5 @c man .RE @c man .PP @c man .++ @c ----- @c troff @c ----- @c man .if n .ig ++ @c man .EQ @c man delim $$ @c man .EN @c don't assume en dash is available @c man For example, one form of the Darcy\-Weisbach fluid-flow equation is @c man .RS 5n @c man .PP @c man .EQ @c man DELTA P = 8 over pi sup 2 rho fL Q sup 2 over d sup 5 , @c man .EN @c man .RE @c man .PP @c man where $DELTA P$ is the pressure drop, $rho$ is the mass density, @c man $f$ is the (dimensionless) friction factor, $L$ is the length @c man of the pipe, $Q$ is the volumetric flow rate, and $d$ @c man is the pipe diameter. @c man It might be desired to have the equation in the form @c man .RS 5n @c man .PP @c man .EQ @c man DELTA P = A sub 1 rho fL Q sup 2 over d sup 5 @c man .EN @c man .RE @c man .PP @c man .EQ @c man delim off @c man .EN @c man .++ @c @noindent that accepted the user's normal units; for typical units used in the US, the required conversion could be something like @example @group You have: (8/pi^2)(lbm/ft^3)ft(ft^3/s)^2(1/in^5) You want: psi * 43.533969 / 0.022970568 @end group @end example @cindex parentheses @noindent The parentheses allow individual terms in the expression to be entered naturally, as they might be read from the formula. Alternatively, the multiplication could be done with the @samp{*} rather than a space; then parentheses are needed only around @samp{ft^3/s} because of its exponent: @example @group You have: 8/pi^2 * lbm/ft^3 * ft * (ft^3/s)^2 /in^5 You want: psi * 43.533969 / 0.022970568 @end group @end example @noindent Without parentheses, and using spaces for multiplication, the previous conversion would need to be entered as @example @group You have: 8 lb ft ft^3 ft^3 / pi^2 ft^3 s^2 in^5 You want: psi * 43.533969 / 0.022970568 @end group @end example @node Backwards Compatibility @section Backwards Compatibility: @samp{*} and @samp{-} @cindex backwards compatibility @cindex compatibility @cindex compatibility with earlier versions The original @command{units} assigned multiplication a higher precedence than division using the slash. This differs from the usual precedence rules, which give multiplication and division equal precedence, and can be confusing for people who think of units as a calculator. The star operator (@samp{*}) included in this @command{units} program has, by default, the same precedence as division, and hence follows the usual precedence rules. For backwards compatibility you can invoke @command{units} with the @option{--oldstar} option. Then @samp{*} has a higher precedence than division, and the same precedence as multiplication using the space. @cindex @samp{-} as multiplication operator @cindex operator, hyphen (@samp{-}) as multiplication @cindex multiplication, hyphen @cindex hyphen as multiplication operator Historically, the hyphen (@samp{-}) has been used in technical publications to indicate products of units, and the original @command{units} program treated it as a multiplication operator. Because @command{units} provides several other ways to obtain unit products, and because @samp{-} is a subtraction operator in general algebraic expressions, @command{units} treats the binary @samp{-} as a subtraction operator by default. For backwards compatibility use the @option{--product} option, which causes @command{units} to treat the binary @samp{-} operator as a product operator. When @samp{-} is a multiplication operator it has the same precedence as multiplication with a space, giving it a higher precedence than division. When @samp{-} is used as a unary operator it negates its operand. Regardless of the @command{units} options, if @samp{-} appears after @samp{(} or after @samp{+}, then it will act as a negation operator. So you can always compute 20 degrees minus 12 minutes by entering @samp{20@tie{}degrees + -12@tie{}arcmin}. You must use this construction when you define new units because you cannot know what options will be in force when your definition is processed. @cindex defining units with `-' @node Nonlinear Conversions @chapter Nonlinear Unit Conversions @cindex nonlinear unit conversions Nonlinear units are represented using functional notation. They make possible nonlinear unit conversions such as temperature. @menu * Temperature Conversions:: Conversion between temperature scales * Other Nonlinear Units:: Ring size, wire gauge, abrasive grit size @end menu @node Temperature Conversions @section Temperature Conversions @cindex temperature conversions Conversions between temperatures are different from linear conversions between temperature @emph{increments}---see the example below. The absolute temperature conversions are handled by units starting with @samp{temp}, and you must use functional notation. The temperature-increment conversions are done using units starting with @samp{deg} and they do not require functional notation. @example @group You have: tempF(45) You want: tempC 7.2222222 You have: 45 degF You want: degC * 25 / 0.04 @end group @end example @noindent Think of @samp{tempF(@var{x})} not as a function but as a notation that indicates that @var{x} should have units of @samp{tempF} attached to it. @xref{Defining Nonlinear Units}. The first conversion shows that if it's 45 degrees Fahrenheit outside, it's 7.2 degrees Celsius. The second conversion indicates that a change of 45 degrees Fahrenheit corresponds to a change of 25 degrees Celsius. The conversion from @samp{tempF(@var{x})} is to absolute temperature, so that @example @group You have: tempF(45) You want: degR * 504.67 / 0.0019814929 @end group @end example @noindent gives the same result as @example @group You have: tempF(45) You want: tempR * 504.67 / 0.0019814929 @end group @end example @noindent But if you convert @samp{tempF(@var{x})} to @samp{degC}, the output is probably not what you expect: @example @group You have: tempF(45) You want: degC * 280.37222 / 0.0035666871 @end group @end example @noindent The result is the temperature in K, because @samp{degC} is defined as @samp{K}, the Kelvin. For consistent results, use the @samp{temp@var{X}} units when converting to a temperature rather than converting a temperature increment. The @samp{tempC()} and @samp{tempF()} definitions are limited to positive absolute temperatures, and giving a value that would result in a negative absolute temperature generates an error message: @example @group You have: tempC(-275) ^ Argument of function outside domain ^ @end group @end example @node Other Nonlinear Units @section Other Nonlinear Units @cindex nonlinear units, other Some other examples of nonlinear units are numerous different ring sizes and wire gauges, the grit sizes used for abrasives, the decibel scale, shoe size, scales for the density of sugar (e.g., baume). The standard data file also supplies units for computing the area of a circle and the volume of a sphere. See the standard units data file for more details. Wire gauges with multiple zeroes are signified using negative numbers where two zeroes is @samp{-1}. Alternatively, you can use the synonyms @samp{g00}, @samp{g000}, and so on that are defined in the standard units data file. @cindex wire gauge @example @group You have: wiregauge(11) You want: inches * 0.090742002 / 11.020255 You have: brwiregauge(g00) You want: inches * 0.348 / 2.8735632 You have: 1 mm You want: wiregauge 18.201919 You have: grit_P(600) You want: grit_ansicoated 342.76923 @end group @end example @noindent The last example shows the conversion from P graded sand paper, which is the European standard and may be marked ``P600'' on the back, to the USA standard. @cindex abrasive grit size You can compute the area of a circle using the nonlinear unit, @samp{circlearea}. You can also do this using the circularinch or circleinch. The next example shows two ways to compute the area of a circle with a five inch radius and one way to compute the volume of a sphere with a radius of one meter. @cindex circle, area of @cindex sphere, volume of @example @group You have: circlearea(5 in) You want: in2 * 78.539816 / 0.012732395 You have: 10^2 circleinch You want: in2 * 78.539816 / 0.012732395 You have: spherevol(meter) You want: ft3 * 147.92573 / 0.0067601492 @end group @end example @noindent The inverse of a nonlinear conversion is indicated by prefixing a tilde (@samp{~}) to the nonlinear unit name: @example @group You have: ~wiregauge(0.090742002 inches) You want: Definition: 11 @end group @end example @noindent You can give a nonlinear unit definition without an argument or parentheses, and press @key{Enter} at the @w{@samp{You want:}} prompt to get the definition of a nonlinear unit; if the definition is not valid for all real numbers, the range of validity is also given. If the definition requires specific units this information is also displayed: @example @group You have: tempC Definition: tempC(x) = x K + stdtemp defined for x >= -273.15 You have: ~tempC Definition: ~tempC(tempC) = (tempC +(-stdtemp))/K defined for tempC >= 0 K You have: circlearea Definition: circlearea(r) = pi r^2 r has units m @end group @end example @noindent To see the definition of the inverse use the @samp{~} notation. In this case the parameter in the functional definition will usually be the name of the unit. Note that the inverse for @samp{tempC} shows that it requires units of @samp{K} in the specification of the allowed range of values. Nonlinear unit conversions are described in more detail in @ref{Defining Nonlinear Units}. @node Unit Lists @chapter Unit Lists: Conversion to Sums of Units @cindex sums of units @cindex unit lists @cindex units, sums of Outside of the SI, it is sometimes desirable to convert a single unit to a sum of units---for example, feet to feet plus inches. The conversion @emph{from} sums of units was described in @ref{Sums and Differences of Units}, and is a simple matter of adding the units with the @samp{+} sign: @example @group You have: 12 ft + 3 in + 3|8 in You want: ft * 12.28125 / 0.081424936 @end group @end example @noindent Although you can similarly write a sum of units to convert @emph{to}, the result will not be the conversion to the units in the sum, but rather the conversion to the particular sum that you have entered: @example @group You have: 12.28125 ft You want: ft + in + 1|8 in * 11.228571 / 0.089058524 @end group @end example @noindent The unit expression given at the @w{@samp{You want:}} prompt is equivalent to asking for conversion to multiples of @samp{1@tie{}ft + 1@tie{}in + 1|8@tie{}in}, which is 1.09375 ft, so the conversion in the previous example is equivalent to @example @group You have: 12.28125 ft You want: 1.09375 ft * 11.228571 / 0.089058524 @end group @end example @noindent In converting to a sum of units like miles, feet and inches, you typically want the largest integral value for the first unit, followed by the largest integral value for the next, and the remainder converted to the last unit. You can do this conversion easily with @command{units} using a special syntax for lists of units. You must list the desired units in order from largest to smallest, separated by the semicolon (@samp{;}) character: @example @group You have: 12.28125 ft You want: ft;in;1|8 in 12 ft + 3 in + 3|8 in @end group @end example @noindent The conversion always gives integer coefficients on the units in the list, except possibly the last unit when the conversion is not exact: @example @group You have: 12.28126 ft You want: ft;in;1|8 in 12 ft + 3 in + 3.00096 * 1|8 in @end group @end example @noindent The order in which you list the units is important: @example @group You have: 3 kg You want: oz;lb 105 oz + 0.051367866 lb You have: 3 kg You want: lb;oz 6 lb + 9.8218858 oz @end group @end example @noindent Listing ounces before pounds produces a technically correct result, but not a very useful one. You must list the units in descending order of size in order to get the most useful result. Ending a unit list with the separator @samp{;} has the same effect as repeating the last unit on the list, so @samp{ft;in;1|8 in;} is equivalent to @samp{ft;in;1|8 in;1|8 in}. With the example above, this gives @example @group You have: 12.28126 ft You want: ft;in;1|8 in; 12 ft + 3 in + 3|8 in + 0.00096 * 1|8 in @end group @end example @noindent in effect separating the integer and fractional parts of the coefficient for the last unit. If you instead prefer to round the last coefficient to an integer you can do this with the @option{--round} (@option{-r}) option. With the previous example, the result is @example @group You have: 12.28126 ft You want: ft;in;1|8 in 12 ft + 3 in + 3|8 in (rounded down to nearest 1|8 in) @end group @end example @noindent When you use the @option{-r} option, repeating the last unit on the list has no effect (e.g., @samp{ft;in;1|8 in;1|8 in} is equivalent to @samp{ft;in;1|8 in}), and hence neither does ending a list with a @samp{;}. With a single unit and the @option{-r} option, a terminal @samp{;} @emph{does} have an effect: it causes @command{units} to treat the single unit as a list and produce a rounded value for the single unit. Without the extra @samp{;}, the @option{-r} option has no effect on single unit conversions. This example shows the output using the @option{-r} option: @example @group You have: 12.28126 ft You want: in * 147.37512 / 0.0067854058 You have: 12.28126 ft You want: in; 147 in (rounded down to nearest in) @end group @end example @noindent Each unit that appears in the list must be conformable with the first unit on the list, and of course the listed units must also be conformable with the unit that you enter at the @w{@samp{You have:}} prompt. @example @group You have: meter You want: ft;kg ^ conformability error ft = 0.3048 m kg = 1 kg You have: meter You want: lb;oz conformability error 1 m 0.45359237 kg @end group @end example @noindent In the first case, @command{units} reports the disagreement between units appearing on the list. In the second case, @command{units} reports disagreement between the unit you entered and the desired conversion. This conformability error is based on the first unit on the unit list. Other common candidates for conversion to sums of units are angles and time: @example @group You have: 23.437754 deg You want; deg;arcmin;arcsec 23 deg + 26 arcmin + 15.9144 arcsec You have: 7.2319 hr You want: hr;min;sec 7 hr + 13 min + 54.84 sec @end group @end example @noindent In North America, recipes for cooking typically measure ingredients by volume, and use units that are not always convenient multiples of each other. Suppose that you have a recipe for 6 and you wish to make a portion for 1. If the recipe calls for 2@tie{}1/2 cups of an ingredient, you might wish to know the measurements in terms of measuring devices you have available, you could use @command{units} and enter @example @group You have: (2+1|2) cup / 6 You want: cup;1|2 cup;1|3 cup;1|4 cup;tbsp;tsp;1|2 tsp;1|4 tsp 1|3 cup + 1 tbsp + 1 tsp @end group @end example @noindent By default, if a unit in a list begins with fraction of the form 1|@var{x} and its multiplier is an integer, the fraction is given as the product of the multiplier and the numerator; for example, @example @group You have: 12.28125 ft You want: ft;in;1|8 in; 12 ft + 3 in + 3|8 in @end group @end example @noindent In many cases, such as the example above, this is what is wanted, but sometimes it is not. For example, a cooking recipe for 6 might call for 5@tie{}1/4 cup of an ingredient, but you want a portion for 2, and your 1-cup measure is not available; you might try @example @group You have: (5+1|4) cup / 3 You want: 1|2 cup;1|3 cup;1|4 cup 3|2 cup + 1|4 cup @end group @end example @noindent This result might be fine for a baker who has a 1@tie{}1/2-cup measure (and recognizes the equivalence), but it may not be as useful to someone with more limited set of measures, who does want to do additional calculations, and only wants to know ``How many 1/2-cup measures to I need to add?'' After all, that's what was actually asked. With the @option{--show-factor} option, the factor will not be combined with a unity numerator, so that you get @example @group You have: (5+1|4) cup / 3 You want: 1|2 cup;1|3 cup;1|4 cup 3 * 1|2 cup + 1|4 cup @end group @end example @noindent A user-specified fractional unit with a numerator other than 1 is never overridden, however---if a unit list specifies @samp{3|4 cup;1|2 cup}, a result equivalent to 1@tie{}1/2 cups will always be shown as @samp{2 * 3|4@tie{}cup} whether or not the @option{--show-factor} option is given. Some applications for unit lists may be less obvious. Suppose that you have a postal scale and wish to ensure that it's accurate at 1@tie{}oz, but have only metric calibration weights. You might try @example @group You have: 1 oz You want: 100 g;50 g; 20 g;10 g;5 g;2 g;1 g; 20 g + 5 g + 2 g + 1 g + 0.34952312 * 1 g @end group @end example @noindent You might then place one each of the 20@tie{}g, 5@tie{}g, 2@tie{}g, and 1@tie{}g weights on the scale and hope that it indicates close to @example @group You have: 20 g + 5 g + 2 g + 1 g You want: oz; 0.98767093 oz @end group @end example @noindent Appending @samp{;} to @samp{oz} forces a one-line display that includes the unit; here the integer part of the result is zero, so it is not displayed. A unit list such as @example cup;1|2@tie{}cup;1|3@tie{}cup;1|4@tie{}cup;tbsp;tsp;1|2@tie{}tsp;1|4@tie{}tsp @end example @noindent can be tedious to enter. The @command{units} program provides shorthand names for some common combinations: @example hms @r{hours, minutes, seconds} dms @r{angle: degrees, minutes, seconds} time @r{years, days, hours, minutes and seconds} usvol @r{US cooking volume: cups and smaller} @end example @noindent Using these shorthands, or @dfn{unit list aliases}, you can do the following conversions: @example @group You have: anomalisticyear You want: time 1 year + 25 min + 3.4653216 sec You have: 1|6 cup You want: usvol 2 tbsp + 2 tsp @end group @end example @noindent You cannot combine a unit list alias with other units: it must appear alone at the @w{@samp{You want:}} prompt. You can display the definition of a unit list alias by entering it at the @w{@samp{You have:}} prompt: @example @group You have: dms Definition: unit list, deg;arcmin;arcsec @end group @end example @noindent When you specify compact output with @option{--compact}, @option{--terse} or @option{-t} and perform conversion to a unit list, @command{units} lists the conversion factors for each unit in the list, separated by semicolons. @example @group You have: year You want: day;min;sec 365;348;45.974678 @end group @end example @noindent Unlike the case of regular output, zeros @emph{are} included in this output list: @example @group You have: liter You want: cup;1|2 cup;1|4 cup;tbsp 4;0;0;3.6280454 @end group @end example @node Using CGS Units @chapter Using CGS Units @cindex CGS units, using @html @end html @menu * Specifying CGS Units:: How to specify the desired CGS units * CGS Units Systems:: The various CGS units systems * Conversions Between Systems:: Conversions between units in different systems * Prompt Prefix:: The prompt prefix shows specified CGS units @end menu The SI---an extension of the MKS (meter--kilogram--second) system---has largely supplanted the older CGS (centimeter--gram--second) system, but CGS units are still used in a few specialized fields, especially in physics where they lead to a more elegant formulation of Maxwell's equations. Conversions between SI and CGS involving mechanical units are straightforward, involving powers of 10 (e.g., @w{1 m = 100 cm}). Conversions involving electromagnetic units are more complicated, and @command{units} supports three different systems of CGS units: electrostatic units (ESU), electromagnetic units (EMU), and the Gaussian system. The differences between these systems arise from different choices made for proportionality constants in electromagnetic equations. Coulomb's law gives electrostatic force between two charges separated by a distance @c noman @math{r}: @ifinfo @display F = k_C q_1 q_2 / r^2. @end display @end ifinfo @html \[ F = k_{\text{C}} \frac{q_1q^2}{r^2}. \] @end html @iftex @tex $$ F = k_{\rm C} { {q_1 q_2} \over {r^2} }. $$ @end tex @end iftex @c end noman @c @c man .EQ @c man delim $$ @c man .EN @c man .if n \fIr\fP: @c man .if t $r$: @c man .RS 5n @c man .PP @c man .if n \fIF\fP = \fIk\fP_C \fIq\fP_1\ \fIq\fP_2\ /\ \fIr\fP^2. @c man .if t \{ @c man .EQ @c man F = k sub roman C { q sub 1 q sub 2} over r sup 2. @c man .EN @c man .\} @c man .RE @c man .PP @noindent Ampere's law gives the electromagnetic force per unit length between two current-carrying conductors separated by a distance @c noman @math{r}: @ifinfo @display F/l = 2 k_A I_1 I_2 / r. @end display @end ifinfo @html \[ \frac{F}{l} = 2 k_{\text{A}} \frac{I_1I_2}{r}.\] @end html @iftex @tex $$ { F \over l } = 2 k_{\rm A} { {I_1 I_2} \over {r} } . $$ @end tex @end iftex @c end noman @c @c man .if n \fIr\fP: @c man .if t $r$: @c man .RS 5n @c man .PP @c man .if n \fIF\fP/\fIl\fP = 2 \fIk\fP_A \fII\fP_1\ \fII\fP_2\ /\ \fIr\fP. @c man .if t \{ @c man .EQ @c man F over l = 2 k sub roman A { I sub 1 I sub 2 } over r . @c man .EN @c man .\} @c man .RE @c man .PP @noindent The two constants, @c noman @ifinfo @math{k_C} and @math{k_A}, @end ifinfo @html \(k_{\text{C}}\) and \(k_{\text{A}}\), @end html @iftex @math{k_{\rm C}} and @math{k_{\rm A}}, @end iftex are related by the square of the speed of light: @ifinfo k_A = k_C / c^2. @end ifinfo @html \(k_{\text{A}} = k_{\text{C}}/c^2\). @end html @iftex @math{k_{\rm A} = k_{\rm C} / c^{2}}. @end iftex @c end noman @c @c man .if n \fIk\fP_C and \fIk\fP_A, @c man .if t $k sub roman C$ and $k sub roman A$, @c man are related by the square of the speed of light: @c man .if n \fIk\fP_A\ =\ \fIk\fP_C\ /\ \fIc\fP^2. @c man .if t $k sub roman A = k sub roman C / c sup 2$. In the SI, the constants have dimensions, and an additional base unit, the ampere, measures electric current. The CGS systems do not define new base units, but express charge and current as derived units in terms of mass, length, and time. In the ESU system, the constant for Coulomb's law is chosen to be unity and dimensionless, which defines the unit of charge. In the EMU system, the constant for Ampere's law is chosen to be unity and dimensionless, which defines a unit of current. The Gaussian system usually uses the ESU units for charge and current; it chooses another constant so that the units for the electric and magnetic fields are the same. The dimensions of electrical quantities in the various CGS systems are different from the SI dimensions for the same units; strictly, conversions between these systems and SI are not possible. But units in different systems relate to the same physical quantities, so there is a @emph{correspondence} between these units. The @command{units} program defines the units so that you can convert between corresponding units in the various systems. @node Specifying CGS Units @section Specifying CGS Units @cindex CGS units, specifying @html @end html The CGS definitions involve @c noman @ifinfo cm^(1/2) and g^(1/2) @end ifinfo @html \(\text{cm}^{1/2}\) and \(\text{g}^{1/2}\) @end html @iftex @math {{\rm cm}^{1/2}} and @math{{\rm g}^{1/2}}, @end iftex @c end noman @c @c man .if n cm^(1/2) and g^(1/2), @c man .if t cm$"" sup {1/2}$ and g$"" sup {1/2}$, @c man @c which is problematic because @command{units} does not normally support fractional roots of base units. The @option{--units} (@option{-u}) option allows selection of a CGS unit system and works around this restriction by introducing base units for the square roots of length and mass: @samp{sqrt_cm} and @samp{sqrt_g}. The centimeter then becomes @samp{sqrt_cm^2} and the gram, @samp{sqrt_g^2}. This allows working from equations using the units in the CGS system, and enforcing dimensional conformity within that system. Recognized arguments to the @option{--units} option are @samp{gauss[ian]}, @samp{esu}, @samp{emu}, and @samp{si}; the argument is case insensitive. The default mode for @command{units} is SI units; the only effect of giving @samp{si} with the @option{--units} option is to prepend @samp{(SI)} to the @w{@samp{You have:}} prompt. Giving an unrecognized system generates a warning, and @command{units} uses SI units. The changes resulting from the @option{--units} option are actually controlled by the @env{UNITS_SYSTEM} environment variable. If you frequently work with one of the supported CGS units systems, you may set this environment variable rather than giving the @option{--units} option at each invocation. As usual, an option given on the command line overrides the setting of the environment variable. For example, if you would normally work with Gaussian units but might occasionally work with SI, you could set @env{UNITS_SYSTEM} to @samp{gaussian} and specify SI with the @option{--units} option. Unlike the argument to the @option{--units} option, the value of @env{UNITS_SYSTEM} @emph{is} case sensitive, so setting a value of @samp{EMU} will have no effect other than to give an error message and set SI units. The CGS definitions appear as conditional settings in the standard units data file, which you can consult for more information on how these units are defined, or on how to define an alternate units system. @node CGS Units Systems @section CGS Units Systems @cindex CGS Units Systems @cindex units systems, CGS @html @end html The ESU system derives the electromagnetic units from its unit of charge, the statcoulomb, which is defined from Coulomb's law. The statcoulomb equals @c noman @ifinfo @w{dyne^(1/2) cm} or @w{cm^(3/2) g^(1/2) s^(-1)}. @end ifinfo @html \(\text{dyne}^{1/2}\text{cm}\) or \(\text{cm}^{3/2}\text{g}^{1/2}\text{s}^{-1}\). @end html @c @iftex @math{{\rm dyne}^{1/2}\,{\rm cm}} or @math{{\rm cm}^{3/2}\,{\rm g}^{1/2}\,{\rm s}^{-1}}. @end iftex @c end noman @c @c man .if n dyne^(1/2)\ cm, or cm^(3/2)\ g^(1/2)\ s^(\(mi1). @c man .if t $roman dyne sup {1/2} ^ roman cm$, @c man .if t or $roman cm sup {3/2} ^ roman g sup {1/2} ^ roman s sup {-1}$. The unit of current, the statampere, is @w{statcoulomb sec}, analogous to the relationship in SI. Other electrical units are then derived in a manner similar to that for SI units; the units use the SI names prefixed by @samp{stat-}, e.g., @samp{statvolt} or @samp{statV}. The prefix @samp{st-} is also recognized (e.g., @samp{stV}). The EMU system derives the electromagnetic units from its unit of current, the abampere, which is defined in terms of Ampere's law. The abampere is equal to @c noman @ifinfo dyne^(1/2) or @w{cm^(1/2) g^(1/2) s^(-1)}. @end ifinfo @html \(\text{dyne}^{1/2}\) or \(\text{cm}^{1/2}\text{g}^{1/2}\text{s}^{-1}\). @end html @c @iftex @math{{\rm dyne}^{1/2}}, or @math{{\rm cm}^{1/2}\,{\rm g}^{1/2}\,{\rm s}^{-1}}. @end iftex @c end noman @c @c man .if n dyne^(1/2), or cm^(1/2)\ g^(1/2)\ s^(\(mi1). @c man .if t $roman dyne sup {1/2}$, @c man .if t or $roman cm sup {1/2} ^ roman g sup {1/2} ^ roman s sup{-1}$. @c man .EQ @c man delim off @c man .EN The unit of charge, the abcoulomb, is @w{abampere sec}, again analogous to the SI relationship. Other electrical units are then derived in a manner similar to that for SI units; the units use the SI names prefixed by @samp{ab-}, e.g., @samp{abvolt} or @samp{abV}. The magnetic field units include the gauss, the oersted and the maxwell. The Gaussian units system, which was also known as the Symmetric System, uses the same charge and current units as the ESU system (e.g., @samp{statC}, @samp{statA}); it differs by defining the magnetic field so that it has the same units as the electric field. The resulting magnetic field units are the same ones used in the EMU system: the gauss, the oersted and the maxwell. @node Conversions Between Systems @section Conversions Between Different Systems The CGS systems define units that measure the same thing but may have conflicting dimensions. Furthermore, the dimensions of the electromagnetic CGS units are never compatible with SI. But if you measure charge in two different systems you have measured the same physical thing, so there is a @emph{correspondence} between the units in the different systems, and @command{units} supports conversions between corresponding units. When running with SI, @command{units} defines all of the CGS units in terms of SI. When you select a CGS system, @command{units} defines the SI units and the other CGS system units in terms of the system you have selected. @example @group (Gaussian) You have: statA You want: abA * 3.335641e-11 / 2.9979246e+10 (Gaussian) You have: abA You want: sqrt(dyne) conformability error 2.9979246e+10 sqrt_cm^3 sqrt_g / s^2 1 sqrt_cm sqrt_g / s @end group @end example @noindent In the above example, @command{units} converts between the current units statA and abA even though the abA, from the EMU system, has incompatible dimensions. This works because in Gaussian mode, the abA is defined in terms of the statA, so it does not have the correct definition for EMU; consequently, you cannot convert the abA to its EMU definition. One challenge of conversion is that because the CGS system has fewer base units, quantities that have different dimensions in SI may have the same dimension in a CGS system. And yet, they may not have the same conversion factor. For example, the unit for the @math{E} field and @math{B} fields are the same in the Gaussian system, but the conversion factors to SI are quite different. This means that correct conversion is only possible if you keep track of what quantity is being measured. You cannot convert statV/cm to SI without indicating which type of field the unit measures. To aid in dimensional analysis, @command{units} defines various dimension units such as LENGTH, TIME, and CHARGE to be the appropriate dimension in SI. The electromagnetic dimensions such as B_FIELD or E_FIELD may be useful aids both for conversion and dimensional analysis in CGS. You can convert them to or from CGS in order to perform SI conversions that in some cases will not work directly due to dimensional incompatibilities. This example shows how the Gaussian system uses the same units for all of the fields, but they all have different conversion factors with SI. @example @group (Gaussian) You have: statV/cm You want: E_FIELD * 29979.246 / 3.335641e-05 @end group @group (Gaussian) You have: statV/cm You want: B_FIELD * 0.0001 / 10000 @end group @group (Gaussian) You have: statV/cm You want: H_FIELD * 79.577472 / 0.012566371 @end group @group (Gaussian) You have: statV/cm You want: D_FIELD * 2.6544187e-07 / 3767303.1 @end group @end example @noindent The next example shows that the oersted cannot be converted directly to the SI unit of magnetic field, A/m, because the dimensions conflict. We cannot redefine the ampere to make this work because then it would not convert with the statampere. But you can still do this conversion as shown below. @example @group (Gaussian) You have: oersted You want: A/m conformability error 1 sqrt_g / s sqrt_cm 29979246 sqrt_cm sqrt_g / s^2 (Gaussian) You have: oersted You want: H_FIELD * 79.577472 / 0.012566371 @end group @end example @node Prompt Prefix @section Prompt Prefix @cindex prompt prefix with CGS units @cindex CGS units, prompt prefix If a unit system is specified with the @option{--units} option, the selected system's name is prepended to the @w{@samp{You have:}} prompt as a reminder, e.g., @example @group (Gaussian) You have: stC You want: Definition: statcoulomb = sqrt(dyne) cm = 1 sqrt_cm^3 sqrt_g / s @end group @end example @noindent You can suppressed the prefix by including a line @example !prompt @end example @noindent with no argument in a site or personal units data file. The prompt can be conditionally suppressed by including such a line within @samp{!var} ... @samp{!endvar} constructs, e.g., @example @group !var UNITS_SYSTEM gaussian gauss !prompt !endvar @end group @end example @noindent This might be appropriate if you normally use Gaussian units and find the prefix distracting but want to be reminded when you have selected a different CGS system. @node Logging Calculations @chapter Logging Calculations @cindex logging calculations @cindex log file The @option{--log} option allows you to save the results of calculations in a file; this can be useful if you need a permanent record of your work. For example, the fluid-flow conversion in @ref{Complicated Unit Expressions}, is lengthy, and if you were to use it in designing a piping system, you might want a record of it for the project file. If the interactive session @example @group # Conversion factor A1 for pressure drop # dP = A1 rho f L Q^2/d^5 You have: (8/pi^2) (lbm/ft^3)ft(ft^3/s)^2(1/in^5) # Input units You want: psi * 43.533969 / 0.022970568 @end group @end example @noindent were logged, the log file would contain @example @group ### Log started Fri Oct 02 15:55:35 2015 # Conversion factor A1 for pressure drop # dP = A1 rho f L Q^2/d^5 From: (8/pi^2) (lbm/ft^3)ft(ft^3/s)^2(1/in^5) # Input units To: psi * 43.533969 / 0.022970568 @end group @end example @noindent The time is written to the log file when the file is opened. The use of comments can help clarify the meaning of calculations for the log. The log includes conformability errors between the units at the @w{@samp{You have:}} and @w{@samp{You want:}} prompts, but not other errors, including lack of conformability of items in sums or differences or among items in a unit list. For example, a conversion between zenith angle and elevation angle could involve @example @group You have: 90 deg - (5 deg + 22 min + 9 sec) ^ Illegal sum or difference of non-conformable units You have: 90 deg - (5 deg + 22 arcmin + 9 arcsec) You want: dms 84 deg + 37 arcmin + 51 arcsec You have: _ You want: deg * 84.630833 / 0.011816024 You have: @end group @end example @noindent The log file would contain @example @group From: 90 deg - (5 deg + 22 arcmin + 9 arcsec) To: deg;arcmin;arcsec 84 deg + 37 arcmin + 51 arcsec From: _ To: deg * 84.630833 / 0.011816024 @end group @end example @noindent The initial entry error (forgetting that minutes have dimension of time, and that arcminutes must be used for dimensions of angle) does not appear in the output. When converting to a unit list alias, @command{units} expands the alias in the log file. The @samp{From:} and @samp{To:} tags are written to the log file even if the @option{--quiet} option is given. If the log file exists when @command{units} is invoked, the new results are appended to the log file. The time is written to the log file each time the file is opened. The @option{--log} option is ignored when @command{units} is used non-interactively. @node Invoking Units @chapter Invoking @command{units} @cindex invoking units @cindex command-line options You invoke @command{units} like this: @example units [@var{options}] [@var{from-unit} [@var{to-unit}]] @end example @noindent If the @var{from-unit} and @var{to-unit} are omitted, the program will use interactive prompts to determine which conversions to perform. @xref{Interactive Use}. If both @var{from-unit} and @var{to-unit} are given, @command{units} will print the result of that single conversion and then exit. If only @var{from-unit} appears on the command line, @command{units} will display the definition of that unit and exit. Units specified on the command line may need to be quoted to protect them from shell interpretation and to group them into two arguments. Note also that the @option{--quiet} option is enabled by default if you specify @var{from-unit} on the command line. @xref{Command Line Use}. The default behavior of @command{units} can be changed by various options given on the command line. In most cases, the options may be given in either short form (a single @samp{-} followed by a single character) or long form (@samp{--} followed by a word or hyphen-separated words). Short-form options are cryptic but require less typing; long-form options require more typing but are more explanatory and may be more mnemonic. With long-form options you need only enter sufficient characters to uniquely identify the option to the program. For example, @samp{--out@tie{}%f} works, but @samp{--o@tie{}%f} fails because @command{units} has other long options beginning with @samp{o}. However, @samp{--q} works because @samp{--quiet} is the only long option beginning with @samp{q}. Some options require arguments to specify a value (e.g., @samp{-d@tie{}12} or @samp{--digits@tie{}12}). Short-form options that do not take arguments may be concatenated (e.g., @samp{-erS} is equivalent to @samp{-e@tie{}-r@tie{}-S}); the last option in such a list may be one that takes an argument (e.g., @samp{-ed@tie{}12}). With short-form options, the space between an option and its argument is optional (e.g., @samp{-d12} is equivalent to @samp{-d@tie{}12}). Long-form options may not be concatenated, and the space between a long-form option and its argument is required. Short-form and long-form options may be intermixed on the command line. Options may be given in any order, but when incompatible options (e.g., @option{--output-format} and @option{--exponential}) are given in combination, behavior is controlled by the last option given. For example, @samp{-o%.12f@tie{}-e} gives exponential format with the default eight significant digits). The following options are available: @table @env @item -c @itemx --check @opindex -c @r{(option for} @command{units}@r{)} @opindex --check @r{(option for} @command{units}@r{)} Check that all units and prefixes defined in the units data file reduce to primitive units. Print a list of all units that cannot be reduced. Also display some other diagnostics about suspicious definitions in the units data file. Only definitions active in the current locale are checked. You should always run @command{units} with this option after modifying a units data file. @item --check-verbose @itemx --verbose-check @opindex --check-verbose @r{(option for} @command{units}@r{)} @opindex --verbose-check @r{(option for} @command{units}@r{)} Like the @option{--check} option, this option prints a list of units that cannot be reduced. But to help find unit definitions that cause endless loops, it lists the units as they are checked. If @command{units} hangs, then the last unit to be printed has a bad definition. Only definitions active in the current locale are checked. @item -d @var{ndigits} @itemx --digits @var{ndigits} @opindex -d @r{(option for} @command{units}@r{)} @opindex --digits @r{(option for} @command{units}@r{)} Set the number of significant digits in the output to the value specified (which must be greater than zero). For example, @samp{-d@tie{}12} sets the number of significant digits to 12. With exponential output @command{units} displays one digit to the left of the decimal @c man point @c noman point@footnote{This document refers to ``decimal point,'' but strictly, the @dfn{radix} separates the integer and fractional parts of a floating-point number; in English-speaking countries, the radix is a point (@samp{.}), but in most other countries it is a comma (@samp{,}).} @c end noman and eleven digits to the right of the decimal point. On most systems, the maximum number of internally meaningful digits is 15; if you specify a greater number than your system's maximum, @command{units} will print a warning and set the number to the largest meaningful value. To directly set the maximum value, give an argument of @code{max} (e.g., @samp{-d@tie{}max}). Be aware, of course, that ``significant'' here refers only to the @emph{display} of numbers; if results depend on physical constants not known to this precision, the physically meaningful precision may be less than that shown. The @option{--digits} option conflicts with the @option{--output-format} option. @item -e @itemx --exponential @opindex -e @r{(option for} @command{units}@r{)} @opindex --exponential @r{(option for} @command{units}@r{)} Set the numeric output format to exponential (i.e., scientific notation), like that used in the Unix @command{units} program. The default precision is eight significant digits (seven digits to the right of the decimal point); this can be changed with the @option{--digits} option. The @option{--exponential} option conflicts with the @option{--output-format} option. @item -o @var{format} @itemx --output-format @var{format} @opindex -o @r{(option for} @command{units}@r{)} @opindex --output-format @r{(option for} @command{units}@r{)} This option affords complete control over the numeric output format using the specified @var{format}. The format is a single floating point numeric format for the @code{printf()} function in the C programming language. All compilers support the format types @samp{g} and @samp{G} to specify significant digits, @samp{e} and @samp{E} for scientific notation, and @samp{f} for fixed-point decimal. The ISO C99 standard introduced the @samp{F} type for fixed-point decimal and the @samp{a} and @samp{A} types for hexadecimal floating point; these types are allowed with compilers that support them. The default format is @samp{%.8g}; for greater precision, you could specify @samp{-o@tie{}%.15g}. @xref{Numeric Output Format}, and the documentation for @code{printf()} for more detailed descriptions of the format specification. The @option{--output-format} option affords the greatest control of the output appearance, but requires at least rudimentary knowledge of the @code{printf()} format syntax. If you don't want to bother with the @code{printf()} syntax, you can specify greater precision more simply with the @option{--digits} option or select exponential format with @option{--exponential}. The @option{--output-format} option is incompatible with the @option{--exponential} and @option{--digits} options. @item -f @var{filename} @itemx --file @var{filename} @opindex -f @r{(option for} @command{units}@r{)} @opindex --file @r{(option for} @command{units}@r{)} Instruct @command{units} to load the units file @var{filename}. You can specify up to 25 units files on the command line. When you use this option, @command{units} will load @emph{only} the files you list on the command line; it will not load the standard file or your personal units file unless you explicitly list them. If @var{filename} is the empty string (@w{@samp{-f ""}}), the default units file (or that specified by @env{UNITSFILE}) will be loaded in addition to any others specified with @samp{-f}. @item -L @var{logfile} @itemx --log @var{logfile} @opindex -L @r{(option for} @command{units}@r{)} @opindex --log @r{(option for} @command{units}@r{)} Save the results of calculations in the file @var{logfile}; this can be useful if it is important to have a record of unit conversions or other calculations that are to be used extensively or in a critical activity such as a program or design project. If @var{logfile} exits, the new results are appended to the file. This option is ignored when @command{units} is used non-interactively. @xref{Logging Calculations}, for a more detailed description and some examples. @item -H @var{filename} @itemx --history @var{filename} @opindex -f @r{(option for} @command{units}@r{)} @opindex --file @r{(option for} @command{units}@r{)} Instruct @command{units} to save history to @var{filename}, so that a record of your commands is available for retrieval across different @command{units} invocations. To prevent the history from being saved set @var{filename} to the empty string (@w{@samp{-H ""}}). This option has no effect if readline is not available. @item -h @itemx --help @opindex -h @r{(option for} @command{units}@r{)} @opindex --help @r{(option for} @command{units}@r{)} Print out a summary of the options for @command{units}. @item -m @itemx --minus @opindex -m @r{(option for} @command{units}@r{)} @opindex --minus @r{(option for} @command{units}@r{)} Causes @samp{-} to be interpreted as a subtraction operator. This is the default behavior. @item -p @itemx --product @opindex -p @r{(option for} @command{units}@r{)} @opindex --product @r{(option for} @command{units}@r{)} Causes @samp{-} to be interpreted as a multiplication operator when it has two operands. It will act as a negation operator when it has only one operand: @samp{(-3)}. By default @samp{-} is treated as a subtraction operator. @item --oldstar @opindex --oldstar @r{(option for} @command{units}@r{)} Causes @samp{*} to have the old-style precedence, higher than the precedence of division so that @samp{1/2*3} will equal @samp{1/6}. @item --newstar @opindex --newstar @r{(option for} @command{units}@r{)} Forces @samp{*} to have the new (default) precedence that follows the usual rules of algebra: the precedence of @samp{*} is the same as the precedence of @samp{/}, so that @samp{1/2*3} will equal @samp{3/2}. @item -r @itemx --round When converting to a combination of units given by a unit list, round the value of the last unit in the list to the nearest integer. @item -S @itemx --show-factor When converting to a combination of units specified in a list, always show a non-unity factor before a unit that begins with a fraction with a unity denominator. By default, if the unit in a list begins with fraction of the form 1|@var{x} and its multiplier is an integer other than 1, the fraction is given as the product of the multiplier and the numerator (e.g., @samp{3|8@tie{}in} rather than @samp{3 * 1|8@tie{}in}). In some cases, this is not what is wanted; for example, the results for a cooking recipe might show @samp{3 * 1|2@tie{}cup} as @samp{3|2@tie{}cup}. With the @option{--show-factor} option, a result equivalent to 1.5 cups will display as @samp{3 * 1|2@tie{}cup} rather than @samp{3|2@tie{}cup}. A user-specified fractional unit with a numerator other than 1 is never overridden, however---if a unit list specifies @samp{3|4 cup;1|2 cup}, a result equivalent to 1@tie{}1/2 cups will always be shown as @samp{2 * 3|4@tie{}cup} whether or not the @option{--show-factor} option is given. @item -v @itemx --verbose @opindex -v @r{(option for} @command{units}@r{)} @opindex --verbose @r{(option for} @command{units}@r{)} Give slightly more verbose output when converting units. When combined with the @option{-c} option this gives the same effect as @option{--check-verbose}. When combined with @option{--version} produces a more detailed output, equivalent to the @option{--info} option. @item -V @itemx --version @opindex -V @r{(option for} @command{units}@r{)} @opindex --version @r{(option for} @command{units}@r{)} Print the program version number, tell whether the @command{readline} library has been included, tell whether UTF-8 support has been included; give the locale, the location of the default units data file, and the location of the personal units data file; indicate if the personal units data file does not exist. When given in combination with the @option{--terse} option, the program prints only the version number and exits. When given in combination with the @option{--verbose} option, the program, the @option{--version} option has the same effect as the @option{--info} option below. @item -I @itemx --info @opindex -I @r{(option for} @command{units}@r{)} @opindex --info @r{(option for} @command{units}@r{)} Print the information given with the @option{--version} option, show the pathname of the units program, show the status of the @env{UNITSFILE} and @env{MYUNITSFILE} environment variables, and additional information about how @command{units} locates the related files. On systems running Microsoft Windows, the status of the @env{UNITSLOCALE} environment variable and information about the related locale map are also given. This option is usually of interest only to developers and administrators, but it can sometimes be useful for troubleshooting. Combining the @option{--version} and @option{--verbose} options has the same effect as giving @option{--info}. @item -U @itemx --unitsfile @opindex -U @r{(option for} @command{units}@r{)} @opindex --unitsfile @r{(option for} @command{units}@r{)} Print the location of the default units data file and exit; if the file cannot be found, print ``Units data file not found''. @item -u (gauss[ian]|esu|emu) @itemx --units (gauss[ian]|esu|emu) @opindex -u @r{(option for} @command{units}@r{)} @opindex --units @r{(option for} @command{units}@r{)} Specify a CGS units system: Gaussian, ESU, or EMU. @item -l @var{locale} @itemx --locale @var{locale} @opindex --locale @r{(option for} @command{units}@r{)} @opindex -l @r{(option for} @command{units}@r{)} Force a specified locale such as @samp{en_GB} to get British definitions by default. This overrides the locale determined from system settings or environment variables. @xref{Locale}, for a description of locale format. @item -n @itemx --nolists Disable conversion to unit lists. @item -s @itemx --strict @opindex -s @r{(option for} @command{units}@r{)} @opindex --strict @r{(option for} @command{units}@r{)} Suppress conversion of units to their reciprocal units. For example, @command{units} will normally convert hertz to seconds because these units are reciprocals of each other. The strict option requires that units be strictly conformable to perform a conversion, and will give an error if you attempt to convert hertz to seconds. @item -1 @itemx --one-line @opindex -1 @r{(option for} @command{units}@r{)} @opindex --one-line @r{(option for} @command{units}@r{)} Give only one line of output (the forward conversion); do not print the reverse conversion. If a reciprocal conversion is performed, then @command{units} will still print the ``reciprocal conversion'' line. @item -t @itemx --terse @opindex -t @r{(option for} @command{units}@r{)} @opindex --terse @r{(option for} @command{units}@r{)} Print only a single conversion factor. This option can be used when calling @command{units} from another program so that the output is easy to parse. This option has the combined effect of these options: @option{--strict} @option{--quiet} @option{--one-line} @option{--compact}. When combined with @option{--version} it produces a display showing only the program name and version number. @item --compact @opindex --compact @r{(option for} @command{units}@r{)} Give compact output featuring only the conversion factor; the multiplication and division signs are not shown, and there is no leading whitespace. If you convert to a unit list, then the output is a semicolon separated list of factors. This turns off the @option{--verbose} option. @item -q @itemx --quiet @itemx --silent @opindex -q @r{(option for} @command{units}@r{)} @opindex --quiet @r{(option for} @command{units}@r{)} @opindex --silent @r{(option for} @command{units}@r{)} Suppress the display of statistics about the number of units loaded, any messages printed by the units database, and the prompting of the user for units. This option does not affect how @command{units} displays the results. This option is turned on by default if you invoke @command{units} with a unit expression on the command line. @end table @node Output Styles @chapter Output Styles The output can be tweaked in various ways using command line options. With no options, the output looks like this @example @group $ units Currency exchange rates from FloatRates (USD base) on 2019-02-20 3070 units, 109 prefixes, 109 nonlinear units You have: 23ft You want: m * 7.0104 / 0.14264521 You have: m You want: ft;in 3 ft + 3.3700787 in @end group @end example @noindent This is arguably a bit cryptic; the @option{--verbose} option makes clear what the output means: @example @group $ units --verbose Currency exchange rates from FloatRates (USD base) on 2019-02-20 3070 units, 109 prefixes, 109 nonlinear units You have: 23 ft You want: m 23 ft = 7.0104 m 23 ft = (1 / 0.14264521) m You have: meter You want: ft;in meter = 3 ft + 3.3700787 in @end group @end example @noindent The @option{--quiet} option suppresses the clutter displayed when @command{units} starts, as well as the prompts to the user. This option is enabled by default when you give units on the command line. @example @group $ units --quiet 23 ft m * 7.0104 / 0.14264521 $ units 23ft m * 7.0104 / 0.14264521 @end group @end example @noindent The remaining style options allow you to display only numerical values without the tab or the multiplication and division signs, or to display just a single line showing the forward conversion: @set codequoteundirected @example @group $ units --compact 23ft m 7.0104 0.14264521 $ units --compact m 'ft;in' 3;3.3700787 $ units --one-line 23ft m * 7.0104 $ units --one-line 23ft 1/m reciprocal conversion * 0.14264521 $ units --one-line 23ft kg conformability error 7.0104 m 1 kg @end group @end example @noindent Note that when converting to a unit list, the @option{--compact} option displays a semicolon separated list of results. Also be aware that the @option{one-line} option doesn't live up to its name if you execute a reciprocal conversion or if you get a conformability error. The former case can be prevented using the @option{--strict} option, which suppresses reciprocal conversions. Similarly you can suppress unit list conversion using @option{--nolists}. It is impossible to prevent the three line error output. @example @group $ units --compact --nolists m 'ft;in' Error in 'ft;in': Parse error $ units --one-line --strict 23ft 1/m @end group @end example @noindent The various style options can be combined appropriately. The ultimate combination is the @option{--terse} option, which combines @option{--strict}, @option{--quiet}, @option{--one-line}, and @option{--compact} to produce the minimal output, just a single number for regular conversions and a semicolon separated list for conversion to unit lists. This will likely be the best choice for programs that want to call @command{units} and then process its result. @example @group $ units --terse 23ft m 7.0104 $ units --terse m 'ft;in' 3;3.3700787 $ units --terse 23ft 1/m conformability error 7.0104 m 1 / m @end group @end example @clear codequoteundirected @node Defining Your Own Units @chapter Adding Your Own Definitions @menu * Units Data Files:: Where are units defined? * Defining New Units:: Writing your own unit and prefix definitions * Defining Nonlinear Units:: Writing your own nonlinear unit definitions * Piecewise Linear Units:: Writing your own piecewise linear definitions * Defining Unit List Aliases:: Writing your own unit list aliases @end menu @node Units Data Files @section Units Data Files @cindex additional units data files @cindex data files, additional @cindex units data files, additional @cindex @samp{!include} @cindex command, @samp{!include} @cindex including additional units data files The units and prefixes that @command{units} can convert are defined in the units data file, typically @file{/usr/share/units/definitions.units}. If you can't find this file, run @command{units@tie{}--version} to get information on the file locations for your installation. Although you can extend or modify this data file if you have appropriate user privileges, it's usually better to put extensions in separate files so that the definitions will be preserved if you update @command{units}. You can include additional data files in the units database using the @samp{!include} command in the standard units data file. For example @example !include /usr/local/share/units/local.units @end example @noindent might be appropriate for a site-wide supplemental data file. The location of the @samp{!include} statement in the standard units data file is important; later definitions replace earlier ones, so any definitions in an included file will override definitions before the @samp{!include} statement in the standard units data file. With normal invocation, no warning is given about redefinitions; to ensure that you don't have an unintended redefinition, run @command{units@tie{}-c} after making changes to any units data file. @cindex personal units data file @cindex units data file, personal If you want to add your own units in addition to or in place of standard or site-wide supplemental units data files, you can include them in the @file{.units} file in your home directory. If this file exists it is read after the standard units data file, so that any definitions in this file will replace definitions of the same units in the standard data file or in files included from the standard data file. This file will not be read if any units files are specified on the command line. (Under Windows the personal units file is named @file{unitdef.units}.) Running @w{@command{units -V}} will display the location and name of your personal units file. The @command{units} program first tries to determine your home directory from the @env{HOME} environment variable. On systems running Microsoft Windows, if @env{HOME} does not exist, @command{units} attempts to find your home directory from @env{HOMEDRIVE}, @env{HOMEPATH} and @env{USERPROFILE}. @cindex MYUNITSFILE environment variable @cindex environment variable, MYUNITSFILE You can specify an arbitrary file as your personal units data file with the @env{MYUNITSFILE} environment variable; if this variable exists, its value is used without searching your home directory. The default units data files are described in more detail in @ref{Data Files}. @node Defining New Units @section Defining New Units and Prefixes @cindex defining units @cindex units, definition of @cindex units definitions, adding @cindex units definitions, changing @cindex prefixes, definition of @cindex defining prefixes @cindex primitive units @cindex units, primitive @cindex @samp{!} to indicate primitive units @cindex command, @samp{!} to indicate primitive units A unit is specified on a single line by giving its name and an equivalence. Comments start with a @samp{#} character, which can appear anywhere in a line. The backslash character (@samp{\}) acts as a continuation character if it appears as the last character on a line, making it possible to spread definitions out over several lines if desired. A file can be included by giving the command @samp{!include} followed by the file's name. The @samp{!} must be the first character on the line. The file will be sought in the same directory as the parent file unless you give a full path. The name of the file to be included cannot contain spaces or the comment character @samp{#}. @cindex include files Unit names must not contain any of the operator characters @samp{+}, @samp{-}, @samp{*}, @samp{/}, @samp{|}, @samp{^}, @samp{;}, @samp{~}, the comment character @samp{#}, or parentheses. They cannot begin or end with an underscore (@samp{_}), a comma (@samp{,}) or a decimal point (@samp{.}). The figure dash (U+2012), typographical minus (`@minus{}'; U+2212), and en dash (`--'; U+2013) are converted to the operator @samp{-}, so none of these characters can appear in unit names. Names cannot begin with a digit, and if a name ends in a digit other than zero, the digit must be preceded by a string beginning with an underscore, and afterwards consisting only of digits, decimal points, or commas. For example, @samp{foo_2}, @samp{foo_2,1}, or @samp{foo_3.14} are valid names but @samp{foo2} or @samp{foo_a2} are invalid. You could define nitrous oxide as @example N2O nitrogen 2 + oxygen @end example @noindent but would need to define nitrogen dioxide as @example NO_2 nitrogen + oxygen 2 @end example @noindent Be careful to define new units in terms of old ones so that a reduction leads to the primitive units, which are marked with @samp{!} characters. Dimensionless units are indicated by using the string @samp{!dimensionless} for the unit definition. @cindex dimensionless units, defining When adding new units, be sure to use the @option{-c} option to check that the new units reduce properly. If you create a loop in the units definitions, then @command{units} will hang when invoked with the @option{-c} option. You will need to use the @option{--check-verbose} option, which prints out each unit as it is checked. The program will still hang, but the last unit printed will be the unit that caused the infinite loop. @cindex parentheses If you define any units that contain @samp{+} characters in their definitions, carefully check them because the @option{-c} option will not catch non-conformable sums. Be careful with the @samp{-} operator as well. When used as a binary operator, the @samp{-} character can perform addition or multiplication depending on the options used to invoke @command{units}. To ensure consistent behavior use @samp{-} only as a unary negation operator when writing units definitions. To multiply two units leave a space or use the @samp{*} operator with care, recalling that it has two possible precedence values and may require parentheses to ensure consistent behavior. To compute the difference of @samp{foo} and @samp{bar} write @samp{foo+(-bar)} or even @samp{foo+-bar}. You may wish to intentionally redefine a unit. When you do this, and use the @option{-c} option, @command{units} displays a warning message about the redefinition. You can suppress these warnings by redefining a unit using a @samp{+} at the beginning of the unit name. Do not include any white space between the @samp{+} and the redefined unit name. Here is an example of a short data file that defines some basic units: @example @group m ! # The meter is a primitive unit sec ! # The second is a primitive unit rad !dimensionless # A dimensionless primitive unit micro- 1e-6 # Define a prefix minute 60 sec # A minute is 60 seconds hour 60 min # An hour is 60 minutes inch 72 m # Inch defined incorrectly terms of meters ft 12 inches # The foot defined in terms of inches mile 5280 ft # And the mile +inch 0.0254 m # Correct redefinition, warning suppressed @end group @end example @cindex parentheses @noindent A unit that ends with a @samp{-} character is a prefix. If a prefix definition contains any @samp{/} characters, be sure they are protected by parentheses. If you define @samp{half- 1/2}, then @samp{halfmeter} would be equivalent to @samp{1 / (2@tie{}meter)}. @node Defining Nonlinear Units @section Defining Nonlinear Units @cindex defining nonlinear units @cindex nonlinear units, defining @cindex nonlinear unit conversions Some unit conversions of interest are nonlinear; for example, temperature conversions between the Fahrenheit and Celsius scales cannot be done by simply multiplying by conversion factors. When you give a linear unit definition such as @samp{inch 2.54@tie{}cm} you are providing information that @command{units} uses to convert values in inches into primitive units of meters. For nonlinear units, you give a functional definition that provides the same information. Nonlinear units are represented using a functional notation. It is best to regard this notation not as a function call but as a way of adding units to a number, much the same way that writing a linear unit name after a number adds units to that number. Internally, nonlinear units are defined by a pair of functions that convert to and from linear units in the database, so that an eventual conversion to primitive units is possible. Here is an example nonlinear unit definition: @example @group tempF(x) units=[1;K] domain=[-459.67,) range=[0,) \ (x+(-32)) degF + stdtemp ; (tempF+(-stdtemp))/degF + 32 @end group @end example @noindent A nonlinear unit definition comprises a unit name, a formal parameter name, two functions, and optional specifications for units, the domain, and the range (the domain of the inverse function). The functions tell @command{units} how to convert to and from the new unit. To produce valid results, the arguments of these functions need to have the correct dimensions and be within the domains for which the functions are defined. @cindex parentheses The definition begins with the unit name followed immediately (with no spaces) by a @samp{(} character. In the parentheses is the name of the formal parameter. Next is an optional specification of the units required by the functions in the definition. In the example above, the @samp{units=[1;K]} specification indicates that the @samp{tempF} function requires an input argument conformable with @samp{1} (i.e., the argument is dimensionless), and that the inverse function requires an input argument conformable with @samp{K}. For normal nonlinear units definition, the forward function will always take a dimensionless argument; in general, the inverse function will need units that match the quantity measured by your nonlinear unit. Specifying the units enables @command{units} to perform error checking on function arguments, and also to assign units to domain and range specifications, which are described later. Next the function definitions appear. In the example above, the @samp{tempF} function is defined by @example @group tempF(x) = (x+(-32)) degF + stdtemp @end group @end example @noindent This gives a rule for converting @samp{x} in the units @samp{tempF} to linear units of absolute temperature, which makes it possible to convert from tempF to other units. To enable conversions to Fahrenheit, you must give a rule for the inverse conversions. The inverse will be @samp{x(tempF)} and its definition appears after a @samp{;} character. In our example, the inverse is @example @group x(tempF) = (tempF+(-stdtemp))/degF + 32 @end group @end example @noindent This inverse definition takes an absolute temperature as its argument and converts it to the Fahrenheit temperature. The inverse can be omitted by leaving out the @samp{;} character and the inverse definition, but then conversions @emph{to} the unit will not be possible. If the inverse definition is omitted, the @option{--check} option will display a warning. It is up to you to calculate and enter the correct inverse function to obtain proper conversions; the @option{--check} option tests the inverse at one point and prints an error if it is not valid there, but this is not a guarantee that your inverse is correct. With some definitions, the units may vary. For example, the definition @example @group square(x) x^2 @end group @end example @noindent can have any arbitrary units, and can also take dimensionless arguments. In such a case, you should @emph{not} specify units. If a definition takes a root of its arguments, the definition is valid only for units that yield such a root. For example, @example @group squirt(x) sqrt(x) @end group @end example @noindent is valid for a dimensionless argument, and for arguments with even powers of units. @cindex domain, nonlinear unit definitions @cindex range, nonlinear unit definitions Some definitions may not be valid for all real numbers. In such cases, @command{units} can handle errors better if you specify an appropriate domain and range. You specify the domain and range as shown below: @example @group baume(d) units=[1;g/cm^3] domain=[0,130.5] range=[1,10] \ (145/(145-d)) g/cm^3 ; (baume+-g/cm^3) 145 / baume @end group @end example @noindent In this example the domain is specified after @samp{domain=} with the endpoints given in brackets. In accord with mathematical convention, square brackets indicate a closed interval (one that includes its endpoints), and parentheses indicate an open interval (one that does not include its endpoints). An interval can be open or closed on one or both ends; an interval that is unbounded on either end is indicated by omitting the limit on that end. For example, a quantity to which decibel (dB) is applied may have any value greater than zero, so the range is indicated by @samp{(0,)}: @example @group decibel(x) units=[1;1] range=(0,) 10^(x/10); 10 log(decibel) @end group @end example @noindent If the domain or range is given, the second endpoint must be greater than the first. The domain and range specifications can appear independently and in any order along with the units specification. The values for the domain and range endpoints are attached to the units given in the units specification, and if necessary, the parameter value is adjusted for comparison with the endpoints. For example, if a definition includes @samp{units=[1;ft]} and @samp{range=[3,)}, the range will be taken as 3@tie{}ft to infinity. If the function is passed a parameter of @w{@samp{900 mm}}, that value will be adjusted to 2.9527559@tie{}ft, which is outside the specified range. If you omit the units specification from the previous example, @command{units} can not tell whether you intend the lower endpoint to be 3@tie{}ft or 3@tie{}microfurlongs, and can not adjust the parameter value of 900@tie{}mm for comparison. Without units, numerical values other than zero or plus or minus infinity for domain or range endpoints are meaningless, and accordingly they are not allowed. If you give other values without units, then the definition will be ignored and you will get an error message. Although the units, domain, and range specifications are optional, it's best to give them when they are applicable; doing so allows @command{units} to perform better error checking and give more helpful error messages. Giving the domain and range also enables the @option{--check} option to find a point in the domain to use for its point check of your inverse definition. You can make synonyms for nonlinear units by providing both the forward and inverse functions; inverse functions can be obtained using the @samp{~} operator. So to create a synonym for @samp{tempF} you could write @example @group fahrenheit(x) units=[1;K] tempF(x); ~tempF(fahrenheit) @end group @end example @noindent This is useful for creating a nonlinear unit definition that differs slightly from an existing definition without having to repeat the original functions. For example, @example dBW(x) units=[1;W] range=[0,) dB(x) W ; ~dB(dBW/W) @end example @noindent If you wish a synonym to refer to an existing nonlinear unit without modification, you can do so more simply by adding the synonym with appended parentheses as a new unit, with the existing nonlinear unit---without parentheses---as the definition. So to create a synonym for @samp{tempF} you could write @example fahrenheit() tempF @end example @noindent The definition must be a nonlinear unit; for example, the synonym @example fahrenheit() meter @end example @noindent will result in an error message when @command{units} starts. @cindex units functions @cindex functions of units You may occasionally wish to define a function that operates on units. This can be done using a nonlinear unit definition. For example, the definition below provides conversion between radius and the area of a circle. This definition requires a length as input and produces an area as output, as indicated by the @samp{units=} specification. Specifying the range as the nonnegative numbers can prevent cryptic error messages. @example @group circlearea(r) units=[m;m^2] range=[0,) pi r^2 ; sqrt(circlearea/pi) @end group @end example @node Piecewise Linear Units @section Defining Piecewise Linear Units @cindex defining piecewise linear units @cindex linear interpolation @cindex units, piecewise linear @cindex piecewise linear units Sometimes you may be interested in a piecewise linear unit such as many wire gauges. Piecewise linear units can be defined by specifying conversions to linear units on a list of points. Conversion at other points will be done by linear interpolation. A partial definition of zinc gauge is @example @group zincgauge[in] 1 0.002, 10 0.02, 15 0.04, 19 0.06, 23 0.1 @end group @end example @noindent In this example, @samp{zincgauge} is the name of the piecewise linear unit. The definition of such a unit is indicated by the embedded @samp{[} character. After the bracket, you should indicate the units to be attached to the numbers in the table. No spaces can appear before the @samp{]} character, so a definition like @samp{foo[kg meters]} is invalid; instead write @samp{foo[kg*meters]}. The definition of the unit consists of a list of pairs optionally separated by commas. This list defines a function for converting from the piecewise linear unit to linear units. The first item in each pair is the function argument; the second item is the value of the function at that argument (in the units specified in brackets). In this example, we define @samp{zincgauge} at five points. For example, we set @samp{zincgauge(1)} equal to @w{@samp{0.002 in}}. Definitions like this may be more readable if written using continuation characters as @example @group zincgauge[in] \ 1 0.002 \ 10 0.02 \ 15 0.04 \ 19 0.06 \ 23 0.1 @end group @end example @noindent With the preceding definition, the following conversion can be performed: @example @group You have: zincgauge(10) You want: in * 0.02 / 50 You have: .01 inch You want: zincgauge 5 @end group @end example @noindent If you define a piecewise linear unit that is not strictly monotonic, then the inverse will not be well defined. If the inverse is requested for such a unit, @command{units} will return the smallest inverse. After adding nonlinear units definitions, you should normally run @w{@command{units --check}} to check for errors. If the @samp{units} keyword is not given, the @option{--check} option checks a nonlinear unit definition using a dimensionless argument, and then checks using an arbitrary combination of units, as well as the square and cube of that combination; a warning is given if any of these tests fail. For example, @set codequoteundirected @example @group Warning: function 'squirt(x)' defined as 'sqrt(x)' failed for some test inputs: squirt(7(kg K)^1): Unit not a root squirt(7(kg K)^3): Unit not a root @end group @end example @clear codequoteundirected @noindent Running @w{@command{units --check}} will print a warning if a non-monotonic piecewise linear unit is encountered. For example, the relationship between ANSI coated abrasive designation and mean particle size is non-monotonic in the vicinity of 800 grit: @example @group ansicoated[micron] \ . . . 600 10.55 \ 800 11.5 \ 1000 9.5 \ @end group @end example @noindent Running @w{@command{units --check}} would give the error message @set codequoteundirected @example @group Table 'ansicoated' lacks unique inverse around entry 800 @end group @end example @clear codequoteundirected @noindent Although the inverse is not well defined in this region, it's not really an error. Viewing such error messages can be tedious, and if there are enough of them, they can distract from true errors. Error checking for nonlinear unit definitions can be suppressed by giving the @samp{noerror} keyword; for the examples above, this could be done as @example @group squirt(x) noerror domain=[0,) range=[0,) sqrt(x); squirt^2 ansicoated[micron] noerror \ . . . @end group @end example @noindent Use the @samp{noerror} keyword with caution. The safest approach after adding a nonlinear unit definition is to run @w{@command{units --check}} and confirm that there are no actual errors before adding the @samp{noerror} keyword. @node Defining Unit List Aliases @section Defining Unit List Aliases @cindex defining unit list aliases @cindex unit list aliases, defining @cindex @samp{!unitlist} @cindex command, @samp{!unitlist} Unit list aliases are treated differently from unit definitions, because they are a data entry shorthand rather than a true definition for a new unit. A unit list alias definition begins with @samp{!unitlist} and includes the alias and the definition; for example, the aliases included in the standard units data file are @example @group !unitlist hms hr;min;sec !unitlist time year;day;hr;min;sec !unitlist dms deg;arcmin;arcsec !unitlist ftin ft;in;1|8 in !unitlist usvol cup;3|4 cup;2|3 cup;1|2 cup;1|3 cup;1|4 cup;\ tbsp;tsp;1|2 tsp;1|4 tsp;1|8 tsp @end group @end example @noindent Unit list aliases are only for unit lists, so the definition must include a @samp{;}. Unit list aliases can never be combined with units or other unit list aliases, so the definition of @samp{time} shown above could @emph{not} have been shortened to @samp{year;day;hms}. As usual, be sure to run @w{@command{units --check}} to ensure that the units listed in unit list aliases are conformable. @node Numeric Output Format @chapter Numeric Output Format @cindex numeric output format @cindex output format @menu * Format Specification:: The output format specification * Flags:: Optional format flags * Field Width:: Specifying output field width * Precision:: Specifying output precision @end menu By default, @code{units} shows results to eight significant digits. You can change this with the @option{--exponential}, @option{--digits}, and @option{--output-format} options. The first sets an exponential format (i.e., scientific notation) like that used in the original Unix @command{units} program, the second allows you to specify a different number of significant digits, and the last allows you to control the output appearance using the format for the @code{printf()} function in the C programming language. If you only want to change the number of significant digits or specify exponential format type, use the @option{--digits} and @option{--exponential} options. The @option{--output-format} option affords the greatest control of the output appearance, but requires at least rudimentary knowledge of the @code{printf()} format syntax. @xref{Invoking Units}, for descriptions of these options. @node Format Specification @section Format Specification @cindex output format specification @cindex format specification, output The format specification recognized with the @option{--output-format} option is a subset of that for @code{printf()}. The format specification has the form @c noman @code{%}[@i{flags}][@i{width}][@code{.}@i{precision}]@i{type}; @c end noman @c ifman @ignore .\".CW "%\fR[\fP\fIflags\fP\fR][\fP\fIwidth\fP\fR][\fP.\fIprecision\fP\fR]\fP\fItype\fP" ; @code{%}[@i{flags}][@i{width}][\c @code{.}@i{precision}]@i{type}; @end ignore @c end ifman it must begin with @samp{%}, and must end with a floating-point type specifier: @samp{g} or @samp{G} to specify the number of significant digits, @samp{e} or @samp{E} for scientific notation, and @samp{f} for fixed-point decimal. The ISO C99 standard added the @samp{F} type for fixed-point decimal and the @samp{a} and @samp{A} types for hexadecimal floating point; these types are allowed with compilers that support them. Type length modifiers (e.g., @samp{L} to indicate a long double) are inapplicable and are not allowed. The default format for @command{units} is @samp{%.8g}; for greater precision, you could specify @samp{-o@tie{}%.15g}. The @samp{g} and @samp{G} format types use exponential format whenever the exponent would be less than @minus{}4, so the value 0.000013 displays as @samp{1.3e-005}. These types also use exponential notation when the exponent is greater than or equal to the precision, so with the default format, the value @c @tex $5\times 10^7$ @end tex @ifnottex @c noman 5e7 @c end noman @c man .if t .ig ++ @c man 5e7 @c man .++ @c man .if n .ig ++ @c man .EQ @c man 5 times 10 sup 7 @c man .EN @c man .++ @end ifnottex displays as @samp{50000000} and the value @tex $5\times 10^8$ @end tex @ifnottex @c noman 5e8 @c end noman @c man .if t .ig ++ @c man 5e8 @c man .++ @c man .if n .ig ++ @c man .EQ @c man 5 times 10 sup 8 @c man .EN @c man .++ @end ifnottex displays as @samp{5e+008}. If you prefer fixed-point display, you might specify @samp{-o@tie{}%.8f}; however, small numbers will display very few significant digits, and values less than @tex $0.5\times10^{-8}$ @end tex @ifnottex @c noman 0.5e@minus{}8 @c end noman @c man .if t .ig ++ @c man 0.5e\-8 @c man .++ @c man .if n .ig ++ @c man .EQ @c man 0.5 times 10 sup -8 @c man .EN @c man .++ @end ifnottex will show nothing but zeros. The format specification may include one or more optional flags: @samp{+}, @samp{@tie{}} (space), @samp{#}, @samp{-}, or @samp{0} (the digit zero). The digit-grouping flag @c noman @set codequoteundirected @samp{'} (apostrophe) @clear codequoteundirected @c end noman @c if the troff formatter is groff, ensure an ASCII single quote @c man .ie \n(.g .CQ "\(aq" @c man .el .CQ "'" is allowed with compilers that support it. Flags are followed by an optional value for the minimum field width, and an optional precision specification that begins with a period (e.g., @samp{.6}). The field width includes the digits, decimal point, the exponent, thousands separators (with the digit-grouping flag), and the sign if any of these are shown. @node Flags @section Flags @cindex output format flags @cindex flags, output format The @samp{+} flag causes the output to have a sign (@samp{+} or @samp{-}). The space flag @samp{@tie{}} is similar to the @samp{+} flag, except that when the value is positive, it is prefixed with a space rather than a plus sign; this flag is ignored if the @samp{+} flag is also given. The @samp{+} or @samp{@tie{}} flag could be useful if conversions might include positive and negative results, and you wanted to align the decimal points in exponential notation. @c The @samp{#} flag causes the output value to contain a decimal point in all cases; by default, the output contains a decimal point only if there are digits (which can be trailing zeros) to the right of the point. With the @samp{g} or @samp{G} types, the @samp{#} flag also prevents the suppression of trailing zeros. @c The digit-grouping flag @c noman @set codequoteundirected @samp{'} @clear codequoteundirected @c end noman @c if the troff formatter is groff, ensure an ASCII single quote @c man .ie \n(.g .CQ "\(aq" @c man .el .CQ "'" shows a thousands separator in digits to the left of the decimal point. @c (e.g., @samp{1,234.56}). This can be useful when displaying large numbers in fixed-point decimal; for example, with the format @samp{%f}, @example You have: mile You want: microfurlong * 8000000.000000 / 0.000000 @end example @noindent the magnitude of the first result may not be immediately obvious without counting the digits to the left of the decimal point. If the thousands separator is the comma (@samp{,}), the output with the format @c noman @set codequoteundirected @samp{%'f} @clear codequoteundirected @c end noman @c if the troff formatter is groff, ensure an ASCII single quote @c man .ie \n(.g .CQ "%\(aqf" @c man .el .CQ "%'f" might be @example You have: mile You want: microfurlong * 8,000,000.000000 / 0.000000 @end example @noindent making the magnitude readily apparent. Unfortunately, few compilers support the digit-grouping flag. @c With the @samp{-} flag, the output value is left aligned within the specified field width. If a field width greater than needed to show the output value is specified, the @samp{0} (zero) flag causes the output value to be left padded with zeros until the specified field width is reached; for example, with the format @samp{%011.6f}, @example You have: troypound You want: grain * 5760.000000 / 0000.000174 @end example @noindent The @samp{0} flag has no effect if the @samp{-} (left align) flag is given. @node Field Width @section Field Width @cindex output field width By default, the output value is left aligned and shown with the minimum width necessary for the specified (or default) precision. If a field width greater than this is specified, the value shown is right aligned, and padded on the left with enough spaces to provide the specified field width. A width specification is typically used with fixed-point decimal to have columns of numbers align at the decimal point; this arguably is less useful with @command{units} than with long columnar output, but it may nonetheless assist in quickly assessing the relative magnitudes of results. For example, with the format @samp{%12.6f}, @example @group You have: km You want: in * 39370.078740 / 0.000025 @end group @group You have: km You want: rod * 198.838782 / 0.005029 @end group @group You have: km You want: furlong * 4.970970 / 0.201168 @end group @end example @node Precision @section Precision @cindex output precision @cindex precision, output The meaning of ``precision'' depends on the format type. With @samp{g} or @samp{G}, it specifies the number of significant digits (like the @option{--digits} option); with @samp{e}, @samp{E}, @samp{f}, or @samp{F}, it specifies the maximum number of digits to be shown after the decimal point. @c With the @samp{g} and @samp{G} format types, trailing zeros are suppressed, so the results may sometimes have fewer digits than the specified precision (as indicated above, the @samp{#} flag causes trailing zeros to be displayed). The default precision is 6, so @samp{%g} is equivalent to @samp{%.6g}, and would show the output to six significant digits. Similarly, @samp{%e} or @samp{%f} would show the output with six digits after the decimal point. The C @code{printf()} function allows a precision of arbitrary size, whether or not all of the digits are meaningful. With most compilers, the maximum internal precision with @command{units} is 15 decimal digits (or 13 hexadecimal digits). With the @option{--digits} option, you are limited to the maximum internal precision; with the @option{--output-format} option, you may specify a precision greater than this, but it may not be meaningful. In some cases, specifying excess precision can result in rounding artifacts. For example, a pound is exactly 7000 grains, but with the format @samp{%.18g}, the output might be @example You have: pound You want: grain * 6999.9999999999991 / 0.00014285714285714287 @end example @noindent With the format @samp{%.25g} you might get the following: @example You have: 1/3 You want: Definition: 0.333333333333333314829616256247 @end example @noindent In this case the displayed value includes a series of digits that represent the underlying binary floating-point approximation to 1/3 but are not meaningful for the desired computation. In general, the result with excess precision is system dependent. @c The precision affects only the @emph{display} of numbers; if a result relies on physical constants that are not known to the specified precision, the number of physically meaningful digits may be less than the number of digits shown. See the documentation for @code{printf()} for more detailed descriptions of the format specification. The @option{--output-format} option is incompatible with the @option{--exponential} or @option{--digits} options; if the former is given in combination with either of the latter, the format is controlled by the last option given. @node Localization @chapter Localization @cindex environment dependent definitions @cindex localization @cindex @samp{!locale} @cindex command, @samp{!locale} @cindex @samp{!endlocale} @cindex command, @samp{!endlocale} @cindex command, @samp{!endvar} @cindex command, @samp{!var} @cindex command, @samp{!varnot} @cindex command, @samp{!set} @cindex command, @samp{!message} @menu * Locale:: What is a locale? * Additional Localization:: When the locale isn't enough @end menu Some units have different values in different locations. The localization feature accommodates this by allowing a units data file to specify definitions that depend on the user's locale. @node Locale @section Locale @cindex locale A locale is a subset of a user's environment that indicates the user's language and country, and some attendant preferences, such as the formatting of dates. The @command{units} program attempts to determine the locale from the POSIX setlocale function; if this cannot be done, @command{units} examines the environment variables @env{LC_CTYPE} and @env{LANG}. On POSIX systems, a locale is of the form @var{language}@code{_}@var{country}, where @var{language} is the two-character code from ISO 639-1 and @var{country} is the two-character code from ISO 3166-1; @var{language} is lower case and @var{country} is upper case. For example, the POSIX locale for the United Kingdom is @code{en_GB}. @cindex @file{locale_map.txt} @cindex setlocale function On systems running Microsoft Windows, the value returned by setlocale() is different from that on POSIX systems; @command{units} attempts to map the Windows value to a POSIX value by means of a table in the file @file{locale_map.txt} in the same directory as the other data files. The file includes entries for many combinations of language and country, and can be extended to include other combinations. The @file{locale_map.txt} file comprises two tab-separated columns; each entry is of the form @display @var{Windows-locale}@ @ @ @var{POSIX-locale} @end display @noindent where @var{POSIX-locale} is as described above, and @var{Windows-locale} typically spells out both the language and country. For example, the entry for the United States is @example English_United States en_US @end example @noindent You can force @command{units} to run in a desired locale by using the @option{-l} option. In order to create unit definitions for a particular locale you begin a block of definitions in a unit datafile with @samp{!locale} followed by a locale name. The @samp{!} must be the first character on the line. The @command{units} program reads the following definitions only if the current locale matches. You end the block of localized units with @samp{!endlocale}. Here is an example, which defines the British gallon. @example @group !locale en_GB gallon 4.54609 liter !endlocale @end group @end example @node Additional Localization @section Additional Localization Sometimes the locale isn't sufficient to determine unit preferences. There could be regional preferences, or a company could have specific preferences. Though probably uncommon, such differences could arise with the choice of English customary units outside of English-speaking countries. To address this, @command{units} allows specifying definitions that depend on environment variable settings. The environment variables can be controled based on the current locale, or the user can set them to force a particular group of definitions. A conditional block of definitions in a units data file begins with either @samp{!var} or @samp{!varnot} following by an environment variable name and then a space separated list of values. The leading @samp{!} must appear in the first column of a units data file, and the conditional block is terminated by @samp{!endvar}. Definitions in blocks beginning with @samp{!var} are executed only if the environment variable is exactly equal to one of the listed values. Definitions in blocks beginning with @samp{!varnot} are executed only if the environment variable does @emph{not} equal any of the list values. The inch has long been a customary measure of length in many places. The word comes from the Latin @emph{uncia} meaning ``one twelfth,'' referring to its relationship with the foot. By the 20th century, the inch was officially defined in English-speaking countries relative to the yard, but until 1959, the yard differed slightly among those countries. In France the customary inch, which was displaced in 1799 by the meter, had a different length based on a french foot. These customary definitions could be accommodated as follows: @example @group !var INCH_UNIT usa yard 3600|3937 m !endvar @end group @group !var INCH_UNIT canada yard 0.9144 meter !endvar @end group @group !var INCH_UNIT uk yard 0.91439841 meter !endvar @end group @group !var INCH_UNIT canada uk usa foot 1|3 yard inch 1|12 foot !endvar @end group @group !var INCH_UNIT france foot 144|443.296 m inch 1|12 foot line 1|12 inch !endvar @end group @group !varnot INCH_UNIT usa uk france canada !message Unknown value for INCH_UNIT !endvar @end group @end example @noindent When @command{units} reads the above definitions it will check the environment variable @env{INCH_UNIT} and load only the definitions for the appropriate section. If @env{INCH_UNIT} is unset or is not set to one of the four values listed, then @command{units} will run the last block. In this case that block uses the @samp{!message} command to display a warning message. Alternatively that block could set default values. In order to create default values that are overridden by user settings the data file can use the @samp{!set} command, which sets an environment variable @emph{only if it is not already set}; these settings are only for the current @command{units} invocation and do not persist. So if the example above were preceded by @samp{!set INCH_UNIT france}, then this would make @samp{france} the default value for @env{INCH_UNIT}. If the user had set the variable in the environment before invoking @command{units}, then @command{units} would use the user's value. To link these settings to the user's locale you combine the @samp{!set} command with the @samp{!locale} command. If you wanted to combine the above example with suitable locales you could do by @emph{preceding} the above definition with the following: @example @group !locale en_US !set INCH_UNIT usa !endlocale !locale en_GB !set INCH_UNIT uk !endlocale !locale en_CA !set INCH_UNIT canada !endlocale !locale fr_FR !set INCH_UNIT france !endlocale !set INCH_UNIT france @end group @end example @noindent These definitions set the overall default for @env{INCH_UNIT} to @samp{france} and set default values for four locales appropriately. The overall default setting comes last so that it only applies when @env{INCH_UNIT} was not set by one of the other commands or by the user. If the variable given after @samp{!var} or @samp{!varnot} is undefined, then @command{units} prints an error message and ignores the definitions that follow. Use @samp{!set} to create defaults to prevent this situation from arising. The @option{-c} option only checks the definitions that are active for the current environment and locale, so when adding new definitions take care to check that all cases give rise to a well defined set of definitions. @node Environment Vars @chapter Environment Variables @cindex environment variables The @command{units} program uses the following environment variables: @table @env @item HOME @cindex HOME environment variable @cindex environment variable, HOME Specifies the location of your home directory; it is used by @command{units} to find a personal units data file @samp{.units}. On systems running Microsoft Windows, the file is @samp{unitdef.units}, and if @env{HOME} does not exist, @command{units} tries to determine your home directory from the @env{HOMEDRIVE} and @env{HOMEPATH} environment variables; if these variables do not exist, units finally tries @env{USERPROFILE}---typically @file{C:\Users\@var{username}} (Windows Vista and Windows@tie{}7) or @w{@file{C:\Documents and Settings\@var{username}}} (Windows@tie{}XP). @item LC_CTYPE, LANG @cindex LANG environment variable @cindex LC_CTYPE environment variable @cindex environment variable, LANG @cindex environment variable, LC_CTYPE Checked to determine the locale if @command{units} cannot obtain it from the operating system. Sections of the standard units data file are specific to certain locales. @item MYUNITSFILE @cindex MYUNITSFILE environment variable @cindex environment variable, MYUNITSFILE Specifies your personal units data file. If this variable exists, @command{units} uses its value rather than searching your home directory for @samp{.units}. The personal units file will not be loaded if any data files are given using the @option{-f} option. @item PAGER @cindex PAGER environment variable @cindex environment variable, PAGER @cindex help Specifies the pager to use for help and for displaying the conformable units. The help function browses the units database and calls the pager using the @samp{+n}@var{n} syntax for specifying a line number. The default pager is @command{more}; @env{PAGER} can be used to specify alternatives such as @command{less}, @command{pg}, @command{emacs}, or @command{vi}. @item UNITS_ENGLISH @cindex UNITS_ENGLISH environment variable @cindex environment variable, UNITS_ENGLISH Set to either @samp{US} or @samp{GB} to choose United States or British volume definitions, overriding the default from your locale. @item UNITSFILE @cindex UNITSFILE environment variable @cindex environment variable, UNITSFILE Specifies the units data file to use (instead of the default). You can only specify a single units data file using this environment variable. If units data files are given using the @option{-f} option, the file specified by @env{UNITSFILE} will be not be loaded unless the @option{-f} option is given with the empty string (@w{@samp{units -f ""}}). @item UNITSLOCALEMAP @cindex UNITSLOCALEMAP environment variable @cindex environment variable, UNITSLOCALEMAP Windows only; this variable has no effect on Unix-like systems. Specifies the units locale map file to use (instead of the default). This variable seldom needs to be set, but you can use it to ensure that the locale map file will be found if you specify a location for the units data file using either the @option{-f} option or the @env{UNITSFILE} environment variable, and that location does not also contain the locale map file. @item UNITS_SYSTEM @cindex UNITS_SYSTEM environment variable @cindex environment variable, UNITS_SYSTEM This environment variable is used in the standard data file to select CGS measurement systems. Currently supported systems are @samp{esu}, @samp{emu}, @samp{gauss[ian]}, and @samp{si}. The default is @samp{si}. @end table @node Data Files @chapter Data Files @cindex files, data @cindex data files The @command{units} program uses two default data files: @file{definitions.units} and @file{currency.units}. The program can also use an optional personal units data file @file{.units} (@file{unitdef.units} under Windows) located in the user's home directory. The personal units data file is described in more detail in @ref{Units Data Files}. On Unix-like systems, the data files are typically located in @file{/usr/share/units} if @command{units} is provided with the operating system, or in @file{/usr/local/share/units} if @command{units} is compiled from the source distribution. Note that the currency file @file{currency.units} is a symbolic link to another location. On systems running Microsoft Windows, the files may be in the same locations if Unix-like commands are available, a Unix-like file structure is present (e.g., @file{C:/usr/local}), and @command{units} is compiled from the source distribution. If Unix-like commands are not available, a more common location is @w{@file{C:\Program Files (x86)\GNU\units}} (for 64-bit Windows installations) or @w{@file{C:\Program Files\GNU\units}} (for 32-bit installations). If @command{units} is obtained from the GNU Win32 Project (@uref{http://gnuwin32.sourceforge.net/}), the files are commonly in @w{@file{C:\Program Files\GnuWin32\share\units}}. If the default units data file is not an absolute pathname, @command{units} will look for the file in the directory that contains the @command{units} program; if the file is not found there, @command{units} will look in a directory @code{../share/units} relative to the directory with the @command{units} program. You can determine the location of the files by running @w{@command{units --version}}. Running @w{@command{units --info}} will give you additional information about the files, how @command{units} will attempt to find them, and the status of the related environment variables. @node Unicode Support @chapter Unicode Support @cindex Unicode support @cindex UTF-8 @cindex @samp{!utf8} @cindex command, @samp{!utf8} @cindex @samp{!endutf8} @cindex command, @samp{!endutf8} The standard units data file is in Unicode, using UTF-8 encoding. Most definitions use only ASCII characters (i.e., code points U+0000 through U+007F); definitions using non-ASCII characters appear in blocks beginning with @samp{!utf8} and ending with @samp{!endutf8}. The non-ASCII definitions are loaded only if the platform and the locale support @w{UTF-8}. Platform support is determined when @command{units} is compiled; the locale is checked at every invocation of @command{units}. To see if your version of @command{units} includes Unicode support, invoke the program with the @option{--version} option. When Unicode support is available, @command{units} checks every line within UTF-8 blocks in all of the units data files for invalid or non-printing UTF-8 sequences; if such sequences occur, @command{units} ignores the entire line. In addition to checking validity, @command{units} determines the display width of non-ASCII characters to ensure proper positioning of the pointer in some error messages and to align columns for the @samp{search} and @samp{?} commands. As of early 2019, Microsoft Windows provides limited support for UTF-8 in console applications, and accordingly, @command{units} does not support Unicode on Windows. The UTF-16 and UTF-32 encodings are not supported on any platforms. If Unicode support is available and definitions that contain non-ASCII UTF-8 characters are added to a units data file, those definitions should be enclosed within @samp{!utf8} @dots{} @samp{!endutf8} to ensure that they are only loaded when Unicode support is available. As usual, the @samp{!} must appear as the first character on the line. As discussed in @ref{Units Data Files}, it's usually best to put such definitions in supplemental data files linked by an @samp{!include} command or in a personal units data file. When Unicode support is not available, @command{units} makes no assumptions about character encoding, except that characters in the range 00--7F hexadecimal correspond to ASCII encoding. Non-ASCII characters are simply sequences of bytes, and have no special meanings; for definitions in supplementary units data files, you can use any encoding consistent with this assumption. For example, if you wish to use non-ASCII characters in definitions when running @command{units} under Windows, you can use a character set such as Windows ``ANSI'' (code page 1252 in the US and Western Europe); if this is done, the console code page must be set to the same encoding for the characters to display properly. You can even use UTF-8, though some messages may be improperly aligned, and @command{units} will not detect invalid UTF-8 sequences. If you use UTF-8 encoding when Unicode support is not available, you should place any definitions with non-ASCII characters @emph{outside} @samp{!utf8} @dots{} @samp{!endutf8} blocks---otherwise, they will be ignored. Typeset material other than code examples usually uses the Unicode minus (U+2212) rather than the ASCII hyphen-minus operator (U+002D) used in @command{units}; the figure dash (U+2012) and en dash (U+2013) are also occasionally used. To allow such material to be copied and pasted for interactive use or in units data files, @command{units} converts these characters to U+002D before further processing. Because of this, none of these characters can appear in unit names. @node Readline Support @chapter Readline Support @cindex @command{readline}, use with @command{units} If the @command{readline} package has been compiled in, then when @command{units} is used interactively, numerous command line editing features are available. To check if your version of @command{units} includes @command{readline}, invoke the program with the @option{--version} option. For complete information about @command{readline}, consult the documentation for the @command{readline} package. Without any configuration, @command{units} will allow editing in the style of emacs. Of particular use with @command{units} are the completion commands. @cindex @samp{?} for unit completion with @command{readline} @cindex unit completion using @samp{?} (@command{readline} only) @cindex completion, unit, using @samp{?} (@command{readline} only) If you type a few characters and then hit @key{ESC} followed by @kbd{?}, then @command{units} will display a list of all the units that start with the characters typed. For example, if you type @kbd{metr} and then request completion, you will see something like this: @cindex unit name completion @example @group You have: metr metre metriccup metrichorsepower metrictenth metretes metricfifth metricounce metricton metriccarat metricgrain metricquart metricyarncount You have: metr @end group @end example @noindent If there is a unique way to complete a unit name, you can hit the @key{TAB} key and @command{units} will provide the rest of the unit name. If @command{units} beeps, it means that there is no unique completion. Pressing the @key{TAB} key a second time will print the list of all completions. The readline library also keeps a history of the values you enter. You can move through this history using the up and down arrows. The history is saved to the file @file{.units_history} in your home directory so that it will persist across multiple @command{units} invocations. If you wish to keep work for a certain project separate you can change the history filename using the @option{--history} option. You could, for example, make an alias for @command{units} to @command{units --history .units_history} so that @command{units} would save separate history in the current directory. The length of each history file is limited to 5000 lines. Note also that if you run several concurrent copies of @command{units} each one will save its new history to the history file upon exit. @node Currency @chapter Updating Currency Exchange Rates @cindex currency, updating @cindex exchange rates, updating @c man .na The units program database includes currency exchange rates and prices for some precious metals. Of course, these values change over time, sometimes very rapidly, and @command{units} cannot provide real-time values. To update the exchange rates, run @command{units_cur}, which rewrites the file containing the currency rates, typically @file{/var/lib/@/units/@/currency.units} or @file{/usr/local/@/com/@/units/@/currency.units} on a Unix-like system or @file{@w{C:\Program Files (x86)}\@/GNU\@/units\@/definitions.units} on a Windows system. @c man .ad b This program requires Python (@uref{https://www.python.org}); either version 2 or 3 will work. The program must be run with suitable permissions to write the file. To keep the rates updated automatically, run it using a cron job on a Unix-like system, or a similar scheduling program on a different system. Reliable free sources of currency exchange rates have been annoyingly ephemeral. The program currently supports several sources: @itemize @bullet @item FloatRates (@uref{https://www/floatrates.com}). The US dollar (@samp{USD}) is the default base currency. You can change the base currency with the @option{-b} option described below. Allowable base currencies are listed on the FloatRates website. Exchange rates update daily. @item The European Central Bank (@uref{https://www.ecb.europa.eu}). The base currency is always the euro (@samp{EUR}). Exchange rates update daily. This source offers a more limited list of currencies than the others. @item Fixer (@uref{https://fixer.io}). Registration for a free API key is required. With a free API key, base currency is the euro; exchange rates are updated hourly, the service has a limit of 1,000 API calls per month, and SSL encryption (https protocol) is not available. Most of these restrictions are eliminated or reduced with paid plans. @item open exchange rates (@uref{https://openexchangerates.org}). Registration for a free API key is required. With a free API key, the base currency is the US dollar; exchange rates are updated hourly, and there is a limit of 1,000 API calls per month. Most of these restrictions are eliminated or reduced with paid plans. @end itemize @noindent The default source is FloatRates; you can select a different one using @option{-s} option described below. Precious metals pricing is obtained from Packetizer (@uref{www.packetizer.com}). This site updates once per day. You invoke @command{units_cur} like this: @example units_cur [@var{options}] [@var{outfile}] @end example @noindent By default, the output is written to the default currency file described above; this is usually what you want, because this is where @command{units} looks for the file. If you wish, you can specify a different filename on the command line and @command{units_cur} will write the data to that file. If you give @samp{-} for the file it will write to standard output. @noindent The following options are available: @table @env @item -h @itemx --help Print a summary of the options for @command{units_cur}. @item -V @itemx --version Print the @command{units_cur} version number. @item -v @itemx --verbose Give slightly more verbose output when attempting to update currency exchange rates. @item -s @var{source} @itemx --source @var{source} Specify the source for currency exchange rates; currently supported values are @samp{floatrates} (for FloatRates), @samp{eubank} (for the European Central Bank), @samp{fixer} (for Fixer), and @samp{openexchangerates} (for open exchange rates); the last two require an API key to be given with the @option{-k} option. @item -b @var{base} @itemx --base @var{base} Set the base currency (when allowed by the site providing the data). @var{base} should be a 3-letter ISO currency code, e.g., @samp{USD}. The specified currency will be the primitive currency unit used by @command{units}. You may find it convenient to specify your local currency. Conversions may be more accurate and you will be able to convert to your currency by simply hitting @key{Enter} at the @w{@samp{You want:}} prompt. This option is ignored if the source does not allow specifying the base currency. (Currently only floatrates supports this option.) @item -k @var{key} @itemx --key @var{key} Set the API key to @var{key} for sources that require it. @end table @node Database Syntax @chapter Database Command Syntax @cindex database syntax summary @cindex syntax of units database @cindex commands in units database @table @t @item @var{unit} @var{definition} Define a regular unit. @item @var{prefix}- @var{definition} Define a prefix. @item @var{funcname}(@var{var}) noerror units=[@var{in-units},@var{out-units}] domain=[@var{x1},@var{x2}] range=[@var{y1},@var{y2}] @var{definition(var)} ; @var{inverse(funcname)} Define a nonlinear unit or unit function. The four optional keywords @command{noerror}, @command{units=}, @command{range=} and @command{domain=} can appear in any order. The definition of the inverse is optional. @item @var{tabname}[@var{out-units}] noerror @var{pair-list} Define a piecewise linear unit. The pair list gives the points on the table listed in ascending order. The @command{noerror} keyword is optional. @item !endlocale End a block of definitions beginning with @samp{!locale} @item !endutf8 End a block of definitions begun with @samp{!utf8} @item !endvar End a block of definitions begun with @samp{!var} or @samp{!varnot} @item !include @var{file} Include the specified file. @item !locale @var{value} Load the following definitions only of the locale is set to @var{value}. @item !message @var{text} Display @var{text} when the database is read unless the quiet option (@option{-q}) is enabled. If you omit @var{text}, then units will display a blank line. Messages will also appear in the log file. @item !prompt @var{text} Prefix the @w{@samp{You have:}} prompt with the specified text. If you omit @var{text}, then any existing prefix is canceled. @item !set @var{variable} @var{value} Sets the environment variable, @var{variable}, to the specified value @emph{only if} it is not already set. @item !unitlist @var{alias} @var{definition} Define a unit list alias. @item !utf8 Load the following definitions only if @command{units} is running with UTF-8 enabled. @item !var @var{envar} @var{value-list} Load the block of definitions that follows only if the environment variable @var{envar} is set to one of the values listed in the space-separated value list. If @var{envar} is not set, @command{units} prints an error message and ignores the block of definitions. @item !varnot @var{envar} @var{value-list} Load the block of definitions that follows only if the environment variable @var{envar} is set to value that is @emph{not} listed in the space-separated value list. If @var{envar} is not set, @command{units} prints an error message and ignores the block of definitions. @end table @node GNU Free Documentation License @chapter GNU Free Documentation License @include fdl-1.3.texi @node Index @unnumbered Index @printindex cp @bye @c man .SH FILES @c man @DATAFILE@ \(em the standard units data file @c man .SH AUTHOR units-2.19/parse.tab.c0000664000175000017500000020211513473351424014121 0ustar adrianadrian/* A Bison parser, made by GNU Bison 3.3.2. */ /* Bison implementation for Yacc-like parsers in C Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2019 Free Software Foundation, Inc. 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 3 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 program. If not, see . */ /* As a special exception, you may create a larger work that contains part or all of the Bison parser skeleton and distribute that work under terms of your choice, so long as that work isn't itself a parser generator using the skeleton or a modified version thereof as a parser skeleton. Alternatively, if you modify or redistribute the parser skeleton itself, you may (at your option) remove this special exception, which will cause the skeleton and the resulting Bison output files to be licensed under the GNU General Public License without this special exception. This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ /* C LALR(1) parser skeleton written by Richard Stallman, by simplifying the original so-called "semantic" parser. */ /* All symbols defined below should begin with yy or YY, to avoid infringing on user name space. This should be done even for local variables, as they might otherwise be expanded by user macros. There are some unavoidable exceptions within include files to define necessary library symbols; they are noted "INFRINGES ON USER NAME SPACE" below. */ /* Undocumented macros, especially those whose name start with YY_, are private implementation details. Do not rely on them. */ /* Identify Bison output. */ #define YYBISON 1 /* Bison version. */ #define YYBISON_VERSION "3.3.2" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" /* Pure parsers. */ #define YYPURE 2 /* Push parsers. */ #define YYPUSH 0 /* Pull parsers. */ #define YYPULL 1 /* Substitute the type names. */ #define YYSTYPE UNITSSTYPE /* Substitute the variable and function names. */ #define yyparse unitsparse #define yylex unitslex #define yyerror unitserror #define yydebug unitsdebug #define yynerrs unitsnerrs /* First part of user prologue. */ #line 24 "parse.y" /* yacc.c:337 */ #include #include "units.h" struct commtype { int location; const char *data; struct unittype *result; int errorcode; }; static int err; /* value used by parser to store return values */ /* The CHECK macro aborts parse if an error has occurred. It optionally destroys a variable. Call with CHECK(0) if no variables need destruction on error. */ #define CHECK(var) if (err) { comm->errorcode=err; \ if (var) destroyunit(var); \ YYABORT; } int yylex(); void yyerror(struct commtype *comm, char *); #define MAXMEM 100 int unitcount=0; /* Counts the number of units allocated by the parser */ struct function { char *name; double (*func)(double); int type; }; #define DIMENSIONLESS 0 #define ANGLEIN 1 #define ANGLEOUT 2 struct unittype * getnewunit() { struct unittype *unit; if (unitcount>=MAXMEM) return 0; unit = (struct unittype *) mymalloc(sizeof(struct unittype),"(getnewunit)"); if (!unit) return 0; initializeunit(unit); unitcount++; return unit; } void destroyunit(struct unittype *unit) { freeunit(unit); free(unit); unitcount--; } struct unittype * makenumunit(double num,int *myerr) { struct unittype *ret; ret=getnewunit(); if (!ret){ *myerr = E_PARSEMEM; return 0; } ret->factor = num; *myerr = 0; return ret; } int logunit(struct unittype *theunit, int base) { if ((err=unit2num(theunit))) return err; theunit->factor = log(theunit->factor)/log((double)base); if (errno) return E_FUNC; return 0; } int funcunit(struct unittype *theunit, struct function const *fun) { struct unittype angleunit; if (fun->type==ANGLEIN){ err=unit2num(theunit); if (err==E_NOTANUMBER){ initializeunit(&angleunit); angleunit.denominator[0] = dupstr("radian"); angleunit.denominator[1] = 0; err = multunit(theunit, &angleunit); freeunit(&angleunit); if (!err) err = unit2num(theunit); } if (err) return err; } else if (fun->type==ANGLEOUT || fun->type == DIMENSIONLESS) { if ((err=unit2num(theunit))) return err; } else return E_BADFUNCTYPE; errno = 0; theunit->factor = (*(fun->func))(theunit->factor); if (errno) return E_FUNC; if (fun->type==ANGLEOUT) { theunit->numerator[0] = dupstr("radian"); theunit->numerator[1] = 0; } return 0; } #line 205 "parse.tab.c" /* yacc.c:337 */ # ifndef YY_NULLPTR # if defined __cplusplus # if 201103L <= __cplusplus # define YY_NULLPTR nullptr # else # define YY_NULLPTR 0 # endif # else # define YY_NULLPTR ((void*)0) # endif # endif /* Enabling verbose error messages. */ #ifdef YYERROR_VERBOSE # undef YYERROR_VERBOSE # define YYERROR_VERBOSE 1 #else # define YYERROR_VERBOSE 0 #endif /* Debug traces. */ #ifndef UNITSDEBUG # if defined YYDEBUG #if YYDEBUG # define UNITSDEBUG 1 # else # define UNITSDEBUG 0 # endif # else /* ! defined YYDEBUG */ # define UNITSDEBUG 0 # endif /* ! defined YYDEBUG */ #endif /* ! defined UNITSDEBUG */ #if UNITSDEBUG extern int unitsdebug; #endif /* Token type. */ #ifndef UNITSTOKENTYPE # define UNITSTOKENTYPE enum unitstokentype { REAL = 258, UNIT = 259, REALFUNC = 260, LOG = 261, UNITFUNC = 262, EXPONENT = 263, MULTIPLY = 264, MULTSTAR = 265, DIVIDE = 266, NUMDIV = 267, SQRT = 268, CUBEROOT = 269, MULTMINUS = 270, EOL = 271, FUNCINV = 272, MEMERROR = 273, BADNUMBER = 274, UNITEND = 275, LASTUNSET = 276, ADD = 277, MINUS = 278, UNARY = 279 }; #endif /* Value type. */ #if ! defined UNITSSTYPE && ! defined UNITSSTYPE_IS_DECLARED union UNITSSTYPE { #line 157 "parse.y" /* yacc.c:352 */ double number; int integer; struct unittype *unit; struct function *realfunc; struct func *unitfunc; #line 286 "parse.tab.c" /* yacc.c:352 */ }; typedef union UNITSSTYPE UNITSSTYPE; # define UNITSSTYPE_IS_TRIVIAL 1 # define UNITSSTYPE_IS_DECLARED 1 #endif int unitsparse (struct commtype *comm); #ifdef short # undef short #endif #ifdef YYTYPE_UINT8 typedef YYTYPE_UINT8 yytype_uint8; #else typedef unsigned char yytype_uint8; #endif #ifdef YYTYPE_INT8 typedef YYTYPE_INT8 yytype_int8; #else typedef signed char yytype_int8; #endif #ifdef YYTYPE_UINT16 typedef YYTYPE_UINT16 yytype_uint16; #else typedef unsigned short yytype_uint16; #endif #ifdef YYTYPE_INT16 typedef YYTYPE_INT16 yytype_int16; #else typedef short yytype_int16; #endif #ifndef YYSIZE_T # ifdef __SIZE_TYPE__ # define YYSIZE_T __SIZE_TYPE__ # elif defined size_t # define YYSIZE_T size_t # elif ! defined YYSIZE_T # include /* INFRINGES ON USER NAME SPACE */ # define YYSIZE_T size_t # else # define YYSIZE_T unsigned # endif #endif #define YYSIZE_MAXIMUM ((YYSIZE_T) -1) #ifndef YY_ # if defined YYENABLE_NLS && YYENABLE_NLS # if ENABLE_NLS # include /* INFRINGES ON USER NAME SPACE */ # define YY_(Msgid) dgettext ("bison-runtime", Msgid) # endif # endif # ifndef YY_ # define YY_(Msgid) Msgid # endif #endif #ifndef YY_ATTRIBUTE # if (defined __GNUC__ \ && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \ || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C # define YY_ATTRIBUTE(Spec) __attribute__(Spec) # else # define YY_ATTRIBUTE(Spec) /* empty */ # endif #endif #ifndef YY_ATTRIBUTE_PURE # define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__)) #endif #ifndef YY_ATTRIBUTE_UNUSED # define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__)) #endif /* Suppress unused-variable warnings by "using" E. */ #if ! defined lint || defined __GNUC__ # define YYUSE(E) ((void) (E)) #else # define YYUSE(E) /* empty */ #endif #if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ /* Suppress an incorrect diagnostic about yylval being uninitialized. */ # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ _Pragma ("GCC diagnostic push") \ _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\ _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") # define YY_IGNORE_MAYBE_UNINITIALIZED_END \ _Pragma ("GCC diagnostic pop") #else # define YY_INITIAL_VALUE(Value) Value #endif #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN # define YY_IGNORE_MAYBE_UNINITIALIZED_END #endif #ifndef YY_INITIAL_VALUE # define YY_INITIAL_VALUE(Value) /* Nothing. */ #endif #if ! defined yyoverflow || YYERROR_VERBOSE /* The parser invokes alloca or malloc; define the necessary symbols. */ # ifdef YYSTACK_USE_ALLOCA # if YYSTACK_USE_ALLOCA # ifdef __GNUC__ # define YYSTACK_ALLOC __builtin_alloca # elif defined __BUILTIN_VA_ARG_INCR # include /* INFRINGES ON USER NAME SPACE */ # elif defined _AIX # define YYSTACK_ALLOC __alloca # elif defined _MSC_VER # include /* INFRINGES ON USER NAME SPACE */ # define alloca _alloca # else # define YYSTACK_ALLOC alloca # if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS # include /* INFRINGES ON USER NAME SPACE */ /* Use EXIT_SUCCESS as a witness for stdlib.h. */ # ifndef EXIT_SUCCESS # define EXIT_SUCCESS 0 # endif # endif # endif # endif # endif # ifdef YYSTACK_ALLOC /* Pacify GCC's 'empty if-body' warning. */ # define YYSTACK_FREE(Ptr) do { /* empty */; } while (0) # ifndef YYSTACK_ALLOC_MAXIMUM /* The OS might guarantee only one guard page at the bottom of the stack, and a page size can be as small as 4096 bytes. So we cannot safely invoke alloca (N) if N exceeds 4096. Use a slightly smaller number to allow for a few compiler-allocated temporary stack slots. */ # define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ # endif # else # define YYSTACK_ALLOC YYMALLOC # define YYSTACK_FREE YYFREE # ifndef YYSTACK_ALLOC_MAXIMUM # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM # endif # if (defined __cplusplus && ! defined EXIT_SUCCESS \ && ! ((defined YYMALLOC || defined malloc) \ && (defined YYFREE || defined free))) # include /* INFRINGES ON USER NAME SPACE */ # ifndef EXIT_SUCCESS # define EXIT_SUCCESS 0 # endif # endif # ifndef YYMALLOC # define YYMALLOC malloc # if ! defined malloc && ! defined EXIT_SUCCESS void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ # endif # endif # ifndef YYFREE # define YYFREE free # if ! defined free && ! defined EXIT_SUCCESS void free (void *); /* INFRINGES ON USER NAME SPACE */ # endif # endif # endif #endif /* ! defined yyoverflow || YYERROR_VERBOSE */ #if (! defined yyoverflow \ && (! defined __cplusplus \ || (defined UNITSSTYPE_IS_TRIVIAL && UNITSSTYPE_IS_TRIVIAL))) /* A type that is properly aligned for any stack member. */ union yyalloc { yytype_int16 yyss_alloc; YYSTYPE yyvs_alloc; }; /* The size of the maximum gap between one aligned stack and the next. */ # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) /* The size of an array large to enough to hold all stacks, each with N elements. */ # define YYSTACK_BYTES(N) \ ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ + YYSTACK_GAP_MAXIMUM) # define YYCOPY_NEEDED 1 /* Relocate STACK from its old location to the new one. The local variables YYSIZE and YYSTACKSIZE give the old and new number of elements in the stack, and YYPTR gives the new location of the stack. Advance YYPTR to a properly aligned location for the next stack. */ # define YYSTACK_RELOCATE(Stack_alloc, Stack) \ do \ { \ YYSIZE_T yynewbytes; \ YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ Stack = &yyptr->Stack_alloc; \ yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ yyptr += yynewbytes / sizeof (*yyptr); \ } \ while (0) #endif #if defined YYCOPY_NEEDED && YYCOPY_NEEDED /* Copy COUNT objects from SRC to DST. The source and destination do not overlap. */ # ifndef YYCOPY # if defined __GNUC__ && 1 < __GNUC__ # define YYCOPY(Dst, Src, Count) \ __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src))) # else # define YYCOPY(Dst, Src, Count) \ do \ { \ YYSIZE_T yyi; \ for (yyi = 0; yyi < (Count); yyi++) \ (Dst)[yyi] = (Src)[yyi]; \ } \ while (0) # endif # endif #endif /* !YYCOPY_NEEDED */ /* YYFINAL -- State number of the termination state. */ #define YYFINAL 36 /* YYLAST -- Last index in YYTABLE. */ #define YYLAST 176 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 27 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 7 /* YYNRULES -- Number of rules. */ #define YYNRULES 36 /* YYNSTATES -- Number of states. */ #define YYNSTATES 61 #define YYUNDEFTOK 2 #define YYMAXUTOK 279 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM as returned by yylex, with out-of-bounds checking. */ #define YYTRANSLATE(YYX) \ ((unsigned) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM as returned by yylex. */ static const yytype_uint8 yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 25, 26, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24 }; #if UNITSDEBUG /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { 0, 203, 203, 205, 206, 209, 210, 213, 214, 215, 216, 218, 221, 223, 225, 229, 230, 233, 239, 240, 241, 243, 245, 247, 248, 249, 250, 251, 252, 253, 254, 257, 260, 261, 262, 263, 264 }; #endif #if UNITSDEBUG || YYERROR_VERBOSE || 0 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. First, the terminals, then, starting at YYNTOKENS, nonterminals. */ static const char *const yytname[] = { "$end", "error", "$undefined", "REAL", "UNIT", "REALFUNC", "LOG", "UNITFUNC", "EXPONENT", "MULTIPLY", "MULTSTAR", "DIVIDE", "NUMDIV", "SQRT", "CUBEROOT", "MULTMINUS", "EOL", "FUNCINV", "MEMERROR", "BADNUMBER", "UNITEND", "LASTUNSET", "ADD", "MINUS", "UNARY", "'('", "')'", "$accept", "input", "unitexpr", "expr", "numexpr", "pexpr", "list", YY_NULLPTR }; #endif # ifdef YYPRINT /* YYTOKNUM[NUM] -- (External) token number corresponding to the (internal) symbol number NUM (which must be that of a token). */ static const yytype_uint16 yytoknum[] = { 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 40, 41 }; # endif #define YYPACT_NINF -22 #define yypact_value_is_default(Yystate) \ (!!((Yystate) == (-22))) #define YYTABLE_NINF -1 #define yytable_value_is_error(Yytable_value) \ 0 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ static const yytype_int16 yypact[] = { 8, -22, -22, -22, -21, -21, -21, 151, -21, -21, 151, -22, 39, -22, -22, -22, -22, 151, 59, 16, -8, 83, 20, -22, 82, -22, -22, -22, 82, -22, -22, 82, -22, -21, 82, 25, -22, -22, 59, 59, 59, 59, 59, 17, 105, 151, 128, -22, -22, -22, 40, 40, 43, 43, -22, 151, 151, 42, 128, 42, 42 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. Performed when YYTABLE does not specify something else to do. Zero means the default is an error. */ static const yytype_uint8 yydefact[] = { 0, 4, 15, 19, 0, 0, 0, 0, 0, 0, 0, 2, 0, 33, 32, 34, 35, 0, 0, 0, 0, 5, 18, 23, 7, 26, 27, 28, 6, 24, 25, 8, 36, 0, 9, 0, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 22, 29, 17, 13, 14, 12, 10, 11, 16, 0, 0, 20, 21, 30, 31 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int8 yypgoto[] = { -22, -22, -22, 19, 24, -3, 0 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int8 yydefgoto[] = { -1, 19, 20, 21, 22, 23, 46 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If positive, shift that token. If negative, reduce the rule whose number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_uint8 yytable[] = { 24, 25, 26, 27, 18, 29, 30, 28, 37, 1, 31, 2, 3, 4, 5, 6, 36, 34, 24, 7, 2, 8, 9, 10, 11, 12, 13, 14, 15, 16, 47, 17, 43, 18, 38, 39, 40, 35, 24, 24, 24, 24, 24, 32, 57, 58, 33, 41, 42, 38, 44, 48, 38, 39, 40, 59, 60, 49, 50, 51, 52, 53, 2, 3, 4, 5, 6, 54, 0, 0, 0, 0, 8, 9, 10, 0, 12, 13, 14, 15, 16, 0, 17, 0, 18, 2, 3, 4, 5, 6, 44, 0, 38, 39, 40, 8, 9, 45, 0, 12, 13, 14, 15, 16, 0, 41, 42, 18, 2, 3, 4, 5, 6, 0, 0, 0, 0, 0, 8, 9, 55, 0, 12, 13, 14, 15, 16, 0, 56, 0, 18, 2, 3, 4, 5, 6, 44, 0, 0, 0, 0, 8, 9, 0, 0, 12, 13, 14, 15, 16, 0, 0, 0, 18, 2, 3, 4, 5, 6, 0, 0, 0, 0, 0, 8, 9, 0, 0, 12, 13, 14, 15, 16, 0, 0, 0, 18 }; static const yytype_int8 yycheck[] = { 0, 4, 5, 6, 25, 8, 9, 7, 16, 1, 10, 3, 4, 5, 6, 7, 0, 17, 18, 11, 3, 13, 14, 15, 16, 17, 18, 19, 20, 21, 33, 23, 12, 25, 9, 10, 11, 18, 38, 39, 40, 41, 42, 4, 44, 45, 7, 22, 23, 9, 8, 26, 9, 10, 11, 55, 56, 38, 39, 40, 41, 42, 3, 4, 5, 6, 7, 43, -1, -1, -1, -1, 13, 14, 15, -1, 17, 18, 19, 20, 21, -1, 23, -1, 25, 3, 4, 5, 6, 7, 8, -1, 9, 10, 11, 13, 14, 15, -1, 17, 18, 19, 20, 21, -1, 22, 23, 25, 3, 4, 5, 6, 7, -1, -1, -1, -1, -1, 13, 14, 15, -1, 17, 18, 19, 20, 21, -1, 23, -1, 25, 3, 4, 5, 6, 7, 8, -1, -1, -1, -1, 13, 14, -1, -1, 17, 18, 19, 20, 21, -1, -1, -1, 25, 3, 4, 5, 6, 7, -1, -1, -1, -1, -1, 13, 14, -1, -1, 17, 18, 19, 20, 21, -1, -1, -1, 25 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_uint8 yystos[] = { 0, 1, 3, 4, 5, 6, 7, 11, 13, 14, 15, 16, 17, 18, 19, 20, 21, 23, 25, 28, 29, 30, 31, 32, 33, 32, 32, 32, 33, 32, 32, 33, 4, 7, 33, 30, 0, 16, 9, 10, 11, 22, 23, 12, 8, 15, 33, 32, 26, 30, 30, 30, 30, 30, 31, 15, 23, 33, 33, 33, 33 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint8 yyr1[] = { 0, 27, 28, 28, 28, 29, 29, 30, 30, 30, 30, 30, 30, 30, 30, 31, 31, 32, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ static const yytype_uint8 yyr2[] = { 0, 2, 1, 2, 1, 1, 2, 1, 2, 2, 3, 3, 3, 3, 3, 1, 3, 3, 1, 1, 3, 3, 2, 1, 2, 2, 2, 2, 2, 3, 4, 4, 1, 1, 1, 1, 2 }; #define yyerrok (yyerrstatus = 0) #define yyclearin (yychar = YYEMPTY) #define YYEMPTY (-2) #define YYEOF 0 #define YYACCEPT goto yyacceptlab #define YYABORT goto yyabortlab #define YYERROR goto yyerrorlab #define YYRECOVERING() (!!yyerrstatus) #define YYBACKUP(Token, Value) \ do \ if (yychar == YYEMPTY) \ { \ yychar = (Token); \ yylval = (Value); \ YYPOPSTACK (yylen); \ yystate = *yyssp; \ goto yybackup; \ } \ else \ { \ yyerror (comm, YY_("syntax error: cannot back up")); \ YYERROR; \ } \ while (0) /* Error token number */ #define YYTERROR 1 #define YYERRCODE 256 /* Enable debugging if requested. */ #if UNITSDEBUG # ifndef YYFPRINTF # include /* INFRINGES ON USER NAME SPACE */ # define YYFPRINTF fprintf # endif # define YYDPRINTF(Args) \ do { \ if (yydebug) \ YYFPRINTF Args; \ } while (0) /* This macro is provided for backward compatibility. */ #ifndef YY_LOCATION_PRINT # define YY_LOCATION_PRINT(File, Loc) ((void) 0) #endif # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ do { \ if (yydebug) \ { \ YYFPRINTF (stderr, "%s ", Title); \ yy_symbol_print (stderr, \ Type, Value, comm); \ YYFPRINTF (stderr, "\n"); \ } \ } while (0) /*-----------------------------------. | Print this symbol's value on YYO. | `-----------------------------------*/ static void yy_symbol_value_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep, struct commtype *comm) { FILE *yyoutput = yyo; YYUSE (yyoutput); YYUSE (comm); if (!yyvaluep) return; # ifdef YYPRINT if (yytype < YYNTOKENS) YYPRINT (yyo, yytoknum[yytype], *yyvaluep); # endif YYUSE (yytype); } /*---------------------------. | Print this symbol on YYO. | `---------------------------*/ static void yy_symbol_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep, struct commtype *comm) { YYFPRINTF (yyo, "%s %s (", yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]); yy_symbol_value_print (yyo, yytype, yyvaluep, comm); YYFPRINTF (yyo, ")"); } /*------------------------------------------------------------------. | yy_stack_print -- Print the state stack from its BOTTOM up to its | | TOP (included). | `------------------------------------------------------------------*/ static void yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) { YYFPRINTF (stderr, "Stack now"); for (; yybottom <= yytop; yybottom++) { int yybot = *yybottom; YYFPRINTF (stderr, " %d", yybot); } YYFPRINTF (stderr, "\n"); } # define YY_STACK_PRINT(Bottom, Top) \ do { \ if (yydebug) \ yy_stack_print ((Bottom), (Top)); \ } while (0) /*------------------------------------------------. | Report that the YYRULE is going to be reduced. | `------------------------------------------------*/ static void yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule, struct commtype *comm) { unsigned long yylno = yyrline[yyrule]; int yynrhs = yyr2[yyrule]; int yyi; YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", yyrule - 1, yylno); /* The symbols being reduced. */ for (yyi = 0; yyi < yynrhs; yyi++) { YYFPRINTF (stderr, " $%d = ", yyi + 1); yy_symbol_print (stderr, yystos[yyssp[yyi + 1 - yynrhs]], &yyvsp[(yyi + 1) - (yynrhs)] , comm); YYFPRINTF (stderr, "\n"); } } # define YY_REDUCE_PRINT(Rule) \ do { \ if (yydebug) \ yy_reduce_print (yyssp, yyvsp, Rule, comm); \ } while (0) /* Nonzero means print parse trace. It is left uninitialized so that multiple parsers can coexist. */ int yydebug; #else /* !UNITSDEBUG */ # define YYDPRINTF(Args) # define YY_SYMBOL_PRINT(Title, Type, Value, Location) # define YY_STACK_PRINT(Bottom, Top) # define YY_REDUCE_PRINT(Rule) #endif /* !UNITSDEBUG */ /* YYINITDEPTH -- initial size of the parser's stacks. */ #ifndef YYINITDEPTH # define YYINITDEPTH 200 #endif /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only if the built-in stack extension method is used). Do not make this value too large; the results are undefined if YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) evaluated with infinite-precision integer arithmetic. */ #ifndef YYMAXDEPTH # define YYMAXDEPTH 10000 #endif #if YYERROR_VERBOSE # ifndef yystrlen # if defined __GLIBC__ && defined _STRING_H # define yystrlen strlen # else /* Return the length of YYSTR. */ static YYSIZE_T yystrlen (const char *yystr) { YYSIZE_T yylen; for (yylen = 0; yystr[yylen]; yylen++) continue; return yylen; } # endif # endif # ifndef yystpcpy # if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE # define yystpcpy stpcpy # else /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in YYDEST. */ static char * yystpcpy (char *yydest, const char *yysrc) { char *yyd = yydest; const char *yys = yysrc; while ((*yyd++ = *yys++) != '\0') continue; return yyd - 1; } # endif # endif # ifndef yytnamerr /* Copy to YYRES the contents of YYSTR after stripping away unnecessary quotes and backslashes, so that it's suitable for yyerror. The heuristic is that double-quoting is unnecessary unless the string contains an apostrophe, a comma, or backslash (other than backslash-backslash). YYSTR is taken from yytname. If YYRES is null, do not copy; instead, return the length of what the result would have been. */ static YYSIZE_T yytnamerr (char *yyres, const char *yystr) { if (*yystr == '"') { YYSIZE_T yyn = 0; char const *yyp = yystr; for (;;) switch (*++yyp) { case '\'': case ',': goto do_not_strip_quotes; case '\\': if (*++yyp != '\\') goto do_not_strip_quotes; else goto append; append: default: if (yyres) yyres[yyn] = *yyp; yyn++; break; case '"': if (yyres) yyres[yyn] = '\0'; return yyn; } do_not_strip_quotes: ; } if (! yyres) return yystrlen (yystr); return (YYSIZE_T) (yystpcpy (yyres, yystr) - yyres); } # endif /* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message about the unexpected token YYTOKEN for the state stack whose top is YYSSP. Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is not large enough to hold the message. In that case, also set *YYMSG_ALLOC to the required number of bytes. Return 2 if the required number of bytes is too large to store. */ static int yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, yytype_int16 *yyssp, int yytoken) { YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]); YYSIZE_T yysize = yysize0; enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; /* Internationalized format string. */ const char *yyformat = YY_NULLPTR; /* Arguments of yyformat. */ char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; /* Number of reported tokens (one for the "unexpected", one per "expected"). */ int yycount = 0; /* There are many possibilities here to consider: - If this state is a consistent state with a default action, then the only way this function was invoked is if the default action is an error action. In that case, don't check for expected tokens because there are none. - The only way there can be no lookahead present (in yychar) is if this state is a consistent state with a default action. Thus, detecting the absence of a lookahead is sufficient to determine that there is no unexpected or expected token to report. In that case, just report a simple "syntax error". - Don't assume there isn't a lookahead just because this state is a consistent state with a default action. There might have been a previous inconsistent state, consistent state with a non-default action, or user semantic action that manipulated yychar. - Of course, the expected token list depends on states to have correct lookahead information, and it depends on the parser not to perform extra reductions after fetching a lookahead from the scanner and before detecting a syntax error. Thus, state merging (from LALR or IELR) and default reductions corrupt the expected token list. However, the list is correct for canonical LR with one exception: it will still contain any token that will not be accepted due to an error action in a later state. */ if (yytoken != YYEMPTY) { int yyn = yypact[*yyssp]; yyarg[yycount++] = yytname[yytoken]; if (!yypact_value_is_default (yyn)) { /* Start YYX at -YYN if negative to avoid negative indexes in YYCHECK. In other words, skip the first -YYN actions for this state because they are default actions. */ int yyxbegin = yyn < 0 ? -yyn : 0; /* Stay within bounds of both yycheck and yytname. */ int yychecklim = YYLAST - yyn + 1; int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; int yyx; for (yyx = yyxbegin; yyx < yyxend; ++yyx) if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR && !yytable_value_is_error (yytable[yyx + yyn])) { if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) { yycount = 1; yysize = yysize0; break; } yyarg[yycount++] = yytname[yyx]; { YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]); if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM) yysize = yysize1; else return 2; } } } } switch (yycount) { # define YYCASE_(N, S) \ case N: \ yyformat = S; \ break default: /* Avoid compiler warnings. */ YYCASE_(0, YY_("syntax error")); YYCASE_(1, YY_("syntax error, unexpected %s")); YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s")); YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s")); YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s")); YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s")); # undef YYCASE_ } { YYSIZE_T yysize1 = yysize + yystrlen (yyformat); if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM) yysize = yysize1; else return 2; } if (*yymsg_alloc < yysize) { *yymsg_alloc = 2 * yysize; if (! (yysize <= *yymsg_alloc && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM)) *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM; return 1; } /* Avoid sprintf, as that infringes on the user's name space. Don't have undefined behavior even if the translation produced a string with the wrong number of "%s"s. */ { char *yyp = *yymsg; int yyi = 0; while ((*yyp = *yyformat) != '\0') if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount) { yyp += yytnamerr (yyp, yyarg[yyi++]); yyformat += 2; } else { yyp++; yyformat++; } } return 0; } #endif /* YYERROR_VERBOSE */ /*-----------------------------------------------. | Release the memory associated to this symbol. | `-----------------------------------------------*/ static void yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, struct commtype *comm) { YYUSE (yyvaluep); YYUSE (comm); if (!yymsg) yymsg = "Deleting"; YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN switch (yytype) { case 4: /* UNIT */ #line 191 "parse.y" /* yacc.c:1257 */ { destroyunit(((*yyvaluep).unit));} #line 1179 "parse.tab.c" /* yacc.c:1257 */ break; case 29: /* unitexpr */ #line 191 "parse.y" /* yacc.c:1257 */ { destroyunit(((*yyvaluep).unit));} #line 1185 "parse.tab.c" /* yacc.c:1257 */ break; case 30: /* expr */ #line 191 "parse.y" /* yacc.c:1257 */ { destroyunit(((*yyvaluep).unit));} #line 1191 "parse.tab.c" /* yacc.c:1257 */ break; case 32: /* pexpr */ #line 191 "parse.y" /* yacc.c:1257 */ { destroyunit(((*yyvaluep).unit));} #line 1197 "parse.tab.c" /* yacc.c:1257 */ break; case 33: /* list */ #line 191 "parse.y" /* yacc.c:1257 */ { destroyunit(((*yyvaluep).unit));} #line 1203 "parse.tab.c" /* yacc.c:1257 */ break; default: break; } YY_IGNORE_MAYBE_UNINITIALIZED_END } /*----------. | yyparse. | `----------*/ int yyparse (struct commtype *comm) { /* The lookahead symbol. */ int yychar; /* The semantic value of the lookahead symbol. */ /* Default value used for initialization, for pacifying older GCCs or non-GCC compilers. */ YY_INITIAL_VALUE (static YYSTYPE yyval_default;) YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); /* Number of syntax errors so far. */ int yynerrs; int yystate; /* Number of tokens to shift before error messages enabled. */ int yyerrstatus; /* The stacks and their tools: 'yyss': related to states. 'yyvs': related to semantic values. Refer to the stacks through separate pointers, to allow yyoverflow to reallocate them elsewhere. */ /* The state stack. */ yytype_int16 yyssa[YYINITDEPTH]; yytype_int16 *yyss; yytype_int16 *yyssp; /* The semantic value stack. */ YYSTYPE yyvsa[YYINITDEPTH]; YYSTYPE *yyvs; YYSTYPE *yyvsp; YYSIZE_T yystacksize; int yyn; int yyresult; /* Lookahead token as an internal (translated) token number. */ int yytoken = 0; /* The variables used to return semantic value and location from the action routines. */ YYSTYPE yyval; #if YYERROR_VERBOSE /* Buffer for error messages, and its allocated size. */ char yymsgbuf[128]; char *yymsg = yymsgbuf; YYSIZE_T yymsg_alloc = sizeof yymsgbuf; #endif #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) /* The number of symbols on the RHS of the reduced rule. Keep to zero when no symbol should be popped. */ int yylen = 0; yyssp = yyss = yyssa; yyvsp = yyvs = yyvsa; yystacksize = YYINITDEPTH; YYDPRINTF ((stderr, "Starting parse\n")); yystate = 0; yyerrstatus = 0; yynerrs = 0; yychar = YYEMPTY; /* Cause a token to be read. */ goto yysetstate; /*------------------------------------------------------------. | yynewstate -- push a new state, which is found in yystate. | `------------------------------------------------------------*/ yynewstate: /* In all cases, when you get here, the value and location stacks have just been pushed. So pushing a state here evens the stacks. */ yyssp++; /*--------------------------------------------------------------------. | yynewstate -- set current state (the top of the stack) to yystate. | `--------------------------------------------------------------------*/ yysetstate: *yyssp = (yytype_int16) yystate; if (yyss + yystacksize - 1 <= yyssp) #if !defined yyoverflow && !defined YYSTACK_RELOCATE goto yyexhaustedlab; #else { /* Get the current used size of the three stacks, in elements. */ YYSIZE_T yysize = (YYSIZE_T) (yyssp - yyss + 1); # if defined yyoverflow { /* Give user a chance to reallocate the stack. Use copies of these so that the &'s don't force the real ones into memory. */ YYSTYPE *yyvs1 = yyvs; yytype_int16 *yyss1 = yyss; /* Each stack pointer address is followed by the size of the data in use in that stack, in bytes. This used to be a conditional around just the two extra args, but that might be undefined if yyoverflow is a macro. */ yyoverflow (YY_("memory exhausted"), &yyss1, yysize * sizeof (*yyssp), &yyvs1, yysize * sizeof (*yyvsp), &yystacksize); yyss = yyss1; yyvs = yyvs1; } # else /* defined YYSTACK_RELOCATE */ /* Extend the stack our own way. */ if (YYMAXDEPTH <= yystacksize) goto yyexhaustedlab; yystacksize *= 2; if (YYMAXDEPTH < yystacksize) yystacksize = YYMAXDEPTH; { yytype_int16 *yyss1 = yyss; union yyalloc *yyptr = (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); if (! yyptr) goto yyexhaustedlab; YYSTACK_RELOCATE (yyss_alloc, yyss); YYSTACK_RELOCATE (yyvs_alloc, yyvs); # undef YYSTACK_RELOCATE if (yyss1 != yyssa) YYSTACK_FREE (yyss1); } # endif yyssp = yyss + yysize - 1; yyvsp = yyvs + yysize - 1; YYDPRINTF ((stderr, "Stack size increased to %lu\n", (unsigned long) yystacksize)); if (yyss + yystacksize - 1 <= yyssp) YYABORT; } #endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */ YYDPRINTF ((stderr, "Entering state %d\n", yystate)); if (yystate == YYFINAL) YYACCEPT; goto yybackup; /*-----------. | yybackup. | `-----------*/ yybackup: /* Do appropriate processing given the current state. Read a lookahead token if we need one and don't already have one. */ /* First try to decide what to do without reference to lookahead token. */ yyn = yypact[yystate]; if (yypact_value_is_default (yyn)) goto yydefault; /* Not known => get a lookahead token if don't already have one. */ /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */ if (yychar == YYEMPTY) { YYDPRINTF ((stderr, "Reading a token: ")); yychar = yylex (&yylval, comm); } if (yychar <= YYEOF) { yychar = yytoken = YYEOF; YYDPRINTF ((stderr, "Now at end of input.\n")); } else { yytoken = YYTRANSLATE (yychar); YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); } /* If the proper action on seeing token YYTOKEN is to reduce or to detect an error, take that action. */ yyn += yytoken; if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) goto yydefault; yyn = yytable[yyn]; if (yyn <= 0) { if (yytable_value_is_error (yyn)) goto yyerrlab; yyn = -yyn; goto yyreduce; } /* Count tokens shifted since error; after three, turn off error status. */ if (yyerrstatus) yyerrstatus--; /* Shift the lookahead token. */ YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); /* Discard the shifted token. */ yychar = YYEMPTY; yystate = yyn; YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN *++yyvsp = yylval; YY_IGNORE_MAYBE_UNINITIALIZED_END goto yynewstate; /*-----------------------------------------------------------. | yydefault -- do the default action for the current state. | `-----------------------------------------------------------*/ yydefault: yyn = yydefact[yystate]; if (yyn == 0) goto yyerrlab; goto yyreduce; /*-----------------------------. | yyreduce -- do a reduction. | `-----------------------------*/ yyreduce: /* yyn is the number of a rule to reduce with. */ yylen = yyr2[yyn]; /* If YYLEN is nonzero, implement the default value of the action: '$$ = $1'. Otherwise, the following line sets YYVAL to garbage. This behavior is undocumented and Bison users should not rely upon it. Assigning to YYVAL unconditionally makes the parser a bit smaller, and it avoids a GCC warning that YYVAL may be used uninitialized. */ yyval = yyvsp[1-yylen]; YY_REDUCE_PRINT (yyn); switch (yyn) { case 2: #line 203 "parse.y" /* yacc.c:1652 */ { comm->result = makenumunit(1,&err); CHECK(0); comm->errorcode = 0; YYACCEPT; } #line 1475 "parse.tab.c" /* yacc.c:1652 */ break; case 3: #line 205 "parse.y" /* yacc.c:1652 */ { comm->result = (yyvsp[-1].unit); comm->errorcode = 0; YYACCEPT; } #line 1481 "parse.tab.c" /* yacc.c:1652 */ break; case 4: #line 206 "parse.y" /* yacc.c:1652 */ { YYABORT; } #line 1487 "parse.tab.c" /* yacc.c:1652 */ break; case 5: #line 209 "parse.y" /* yacc.c:1652 */ { (yyval.unit) = (yyvsp[0].unit);} #line 1493 "parse.tab.c" /* yacc.c:1652 */ break; case 6: #line 210 "parse.y" /* yacc.c:1652 */ { invertunit((yyvsp[0].unit)); (yyval.unit)=(yyvsp[0].unit);} #line 1499 "parse.tab.c" /* yacc.c:1652 */ break; case 7: #line 213 "parse.y" /* yacc.c:1652 */ { (yyval.unit) = (yyvsp[0].unit); } #line 1505 "parse.tab.c" /* yacc.c:1652 */ break; case 8: #line 214 "parse.y" /* yacc.c:1652 */ { (yyval.unit) = (yyvsp[0].unit); (yyval.unit)->factor *= -1; } #line 1511 "parse.tab.c" /* yacc.c:1652 */ break; case 9: #line 215 "parse.y" /* yacc.c:1652 */ { (yyval.unit) = (yyvsp[0].unit); (yyval.unit)->factor *= -1; } #line 1517 "parse.tab.c" /* yacc.c:1652 */ break; case 10: #line 216 "parse.y" /* yacc.c:1652 */ { err = addunit((yyvsp[-2].unit),(yyvsp[0].unit)); destroyunit((yyvsp[0].unit)); CHECK((yyvsp[-2].unit));(yyval.unit)=(yyvsp[-2].unit);} #line 1524 "parse.tab.c" /* yacc.c:1652 */ break; case 11: #line 218 "parse.y" /* yacc.c:1652 */ { (yyvsp[0].unit)->factor *= -1; err = addunit((yyvsp[-2].unit),(yyvsp[0].unit)); destroyunit((yyvsp[0].unit)); CHECK((yyvsp[-2].unit));(yyval.unit)=(yyvsp[-2].unit);} #line 1532 "parse.tab.c" /* yacc.c:1652 */ break; case 12: #line 221 "parse.y" /* yacc.c:1652 */ { err = divunit((yyvsp[-2].unit), (yyvsp[0].unit)); destroyunit((yyvsp[0].unit)); CHECK((yyvsp[-2].unit));(yyval.unit)=(yyvsp[-2].unit);} #line 1539 "parse.tab.c" /* yacc.c:1652 */ break; case 13: #line 223 "parse.y" /* yacc.c:1652 */ { err = multunit((yyvsp[-2].unit),(yyvsp[0].unit)); destroyunit((yyvsp[0].unit)); CHECK((yyvsp[-2].unit));(yyval.unit)=(yyvsp[-2].unit);} #line 1546 "parse.tab.c" /* yacc.c:1652 */ break; case 14: #line 225 "parse.y" /* yacc.c:1652 */ { err = multunit((yyvsp[-2].unit),(yyvsp[0].unit)); destroyunit((yyvsp[0].unit)); CHECK((yyvsp[-2].unit));(yyval.unit)=(yyvsp[-2].unit);} #line 1553 "parse.tab.c" /* yacc.c:1652 */ break; case 15: #line 229 "parse.y" /* yacc.c:1652 */ { (yyval.number) = (yyvsp[0].number); } #line 1559 "parse.tab.c" /* yacc.c:1652 */ break; case 16: #line 230 "parse.y" /* yacc.c:1652 */ { (yyval.number) = (yyvsp[-2].number) / (yyvsp[0].number); } #line 1565 "parse.tab.c" /* yacc.c:1652 */ break; case 17: #line 233 "parse.y" /* yacc.c:1652 */ { (yyval.unit) = (yyvsp[-1].unit); } #line 1571 "parse.tab.c" /* yacc.c:1652 */ break; case 18: #line 239 "parse.y" /* yacc.c:1652 */ { (yyval.unit) = makenumunit((yyvsp[0].number),&err); CHECK(0);} #line 1577 "parse.tab.c" /* yacc.c:1652 */ break; case 19: #line 240 "parse.y" /* yacc.c:1652 */ { (yyval.unit) = (yyvsp[0].unit); } #line 1583 "parse.tab.c" /* yacc.c:1652 */ break; case 20: #line 241 "parse.y" /* yacc.c:1652 */ { err = unitpower((yyvsp[-2].unit),(yyvsp[0].unit));destroyunit((yyvsp[0].unit)); CHECK((yyvsp[-2].unit));(yyval.unit)=(yyvsp[-2].unit);} #line 1590 "parse.tab.c" /* yacc.c:1652 */ break; case 21: #line 243 "parse.y" /* yacc.c:1652 */ { err = multunit((yyvsp[-2].unit),(yyvsp[0].unit)); destroyunit((yyvsp[0].unit)); CHECK((yyvsp[-2].unit));(yyval.unit)=(yyvsp[-2].unit);} #line 1597 "parse.tab.c" /* yacc.c:1652 */ break; case 22: #line 245 "parse.y" /* yacc.c:1652 */ { err = multunit((yyvsp[-1].unit),(yyvsp[0].unit)); destroyunit((yyvsp[0].unit)); CHECK((yyvsp[-1].unit));(yyval.unit)=(yyvsp[-1].unit);} #line 1604 "parse.tab.c" /* yacc.c:1652 */ break; case 23: #line 247 "parse.y" /* yacc.c:1652 */ { (yyval.unit)=(yyvsp[0].unit); } #line 1610 "parse.tab.c" /* yacc.c:1652 */ break; case 24: #line 248 "parse.y" /* yacc.c:1652 */ { err = rootunit((yyvsp[0].unit),2); CHECK((yyvsp[0].unit)); (yyval.unit)=(yyvsp[0].unit);} #line 1616 "parse.tab.c" /* yacc.c:1652 */ break; case 25: #line 249 "parse.y" /* yacc.c:1652 */ { err = rootunit((yyvsp[0].unit),3); CHECK((yyvsp[0].unit)); (yyval.unit)=(yyvsp[0].unit);} #line 1622 "parse.tab.c" /* yacc.c:1652 */ break; case 26: #line 250 "parse.y" /* yacc.c:1652 */ { err = funcunit((yyvsp[0].unit),(yyvsp[-1].realfunc));CHECK((yyvsp[0].unit)); (yyval.unit)=(yyvsp[0].unit);} #line 1628 "parse.tab.c" /* yacc.c:1652 */ break; case 27: #line 251 "parse.y" /* yacc.c:1652 */ { err = logunit((yyvsp[0].unit),(yyvsp[-1].integer)); CHECK((yyvsp[0].unit)); (yyval.unit)=(yyvsp[0].unit);} #line 1634 "parse.tab.c" /* yacc.c:1652 */ break; case 28: #line 252 "parse.y" /* yacc.c:1652 */ { err = evalfunc((yyvsp[0].unit),(yyvsp[-1].unitfunc),0,0); CHECK((yyvsp[0].unit));(yyval.unit)=(yyvsp[0].unit);} #line 1640 "parse.tab.c" /* yacc.c:1652 */ break; case 29: #line 253 "parse.y" /* yacc.c:1652 */ { err = evalfunc((yyvsp[0].unit),(yyvsp[-1].unitfunc),1,0); CHECK((yyvsp[0].unit));(yyval.unit)=(yyvsp[0].unit);} #line 1646 "parse.tab.c" /* yacc.c:1652 */ break; case 30: #line 255 "parse.y" /* yacc.c:1652 */ { (yyvsp[0].unit)->factor *= -1; err = unitpower((yyvsp[-3].unit),(yyvsp[0].unit)); destroyunit((yyvsp[0].unit));CHECK((yyvsp[-3].unit));(yyval.unit)=(yyvsp[-3].unit);} #line 1653 "parse.tab.c" /* yacc.c:1652 */ break; case 31: #line 258 "parse.y" /* yacc.c:1652 */ { (yyvsp[0].unit)->factor *= -1; err = unitpower((yyvsp[-3].unit),(yyvsp[0].unit)); destroyunit((yyvsp[0].unit));CHECK((yyvsp[-3].unit));(yyval.unit)=(yyvsp[-3].unit);} #line 1660 "parse.tab.c" /* yacc.c:1652 */ break; case 32: #line 260 "parse.y" /* yacc.c:1652 */ { err = E_BADNUM; CHECK(0); } #line 1666 "parse.tab.c" /* yacc.c:1652 */ break; case 33: #line 261 "parse.y" /* yacc.c:1652 */ { err = E_PARSEMEM; CHECK(0); } #line 1672 "parse.tab.c" /* yacc.c:1652 */ break; case 34: #line 262 "parse.y" /* yacc.c:1652 */ { err = E_UNITEND; CHECK(0); } #line 1678 "parse.tab.c" /* yacc.c:1652 */ break; case 35: #line 263 "parse.y" /* yacc.c:1652 */ { err = E_LASTUNSET;CHECK(0); } #line 1684 "parse.tab.c" /* yacc.c:1652 */ break; case 36: #line 264 "parse.y" /* yacc.c:1652 */ { err = E_NOTAFUNC; CHECK((yyvsp[0].unit));} #line 1690 "parse.tab.c" /* yacc.c:1652 */ break; #line 1694 "parse.tab.c" /* yacc.c:1652 */ default: break; } /* User semantic actions sometimes alter yychar, and that requires that yytoken be updated with the new translation. We take the approach of translating immediately before every use of yytoken. One alternative is translating here after every semantic action, but that translation would be missed if the semantic action invokes YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an incorrect destructor might then be invoked immediately. In the case of YYERROR or YYBACKUP, subsequent parser actions might lead to an incorrect destructor call or verbose syntax error message before the lookahead is translated. */ YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); YYPOPSTACK (yylen); yylen = 0; YY_STACK_PRINT (yyss, yyssp); *++yyvsp = yyval; /* Now 'shift' the result of the reduction. Determine what state that goes to, based on the state we popped back to and the rule number reduced by. */ { const int yylhs = yyr1[yyn] - YYNTOKENS; const int yyi = yypgoto[yylhs] + *yyssp; yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp ? yytable[yyi] : yydefgoto[yylhs]); } goto yynewstate; /*--------------------------------------. | yyerrlab -- here on detecting error. | `--------------------------------------*/ yyerrlab: /* Make sure we have latest lookahead translation. See comments at user semantic actions for why this is necessary. */ yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar); /* If not already recovering from an error, report this error. */ if (!yyerrstatus) { ++yynerrs; #if ! YYERROR_VERBOSE yyerror (comm, YY_("syntax error")); #else # define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \ yyssp, yytoken) { char const *yymsgp = YY_("syntax error"); int yysyntax_error_status; yysyntax_error_status = YYSYNTAX_ERROR; if (yysyntax_error_status == 0) yymsgp = yymsg; else if (yysyntax_error_status == 1) { if (yymsg != yymsgbuf) YYSTACK_FREE (yymsg); yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc); if (!yymsg) { yymsg = yymsgbuf; yymsg_alloc = sizeof yymsgbuf; yysyntax_error_status = 2; } else { yysyntax_error_status = YYSYNTAX_ERROR; yymsgp = yymsg; } } yyerror (comm, yymsgp); if (yysyntax_error_status == 2) goto yyexhaustedlab; } # undef YYSYNTAX_ERROR #endif } if (yyerrstatus == 3) { /* If just tried and failed to reuse lookahead token after an error, discard it. */ if (yychar <= YYEOF) { /* Return failure if at end of input. */ if (yychar == YYEOF) YYABORT; } else { yydestruct ("Error: discarding", yytoken, &yylval, comm); yychar = YYEMPTY; } } /* Else will try to reuse lookahead token after shifting the error token. */ goto yyerrlab1; /*---------------------------------------------------. | yyerrorlab -- error raised explicitly by YYERROR. | `---------------------------------------------------*/ yyerrorlab: /* Pacify compilers when the user code never invokes YYERROR and the label yyerrorlab therefore never appears in user code. */ if (0) YYERROR; /* Do not reclaim the symbols of the rule whose action triggered this YYERROR. */ YYPOPSTACK (yylen); yylen = 0; YY_STACK_PRINT (yyss, yyssp); yystate = *yyssp; goto yyerrlab1; /*-------------------------------------------------------------. | yyerrlab1 -- common code for both syntax error and YYERROR. | `-------------------------------------------------------------*/ yyerrlab1: yyerrstatus = 3; /* Each real token shifted decrements this. */ for (;;) { yyn = yypact[yystate]; if (!yypact_value_is_default (yyn)) { yyn += YYTERROR; if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) { yyn = yytable[yyn]; if (0 < yyn) break; } } /* Pop the current state because it cannot handle the error token. */ if (yyssp == yyss) YYABORT; yydestruct ("Error: popping", yystos[yystate], yyvsp, comm); YYPOPSTACK (1); yystate = *yyssp; YY_STACK_PRINT (yyss, yyssp); } YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN *++yyvsp = yylval; YY_IGNORE_MAYBE_UNINITIALIZED_END /* Shift the error token. */ YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); yystate = yyn; goto yynewstate; /*-------------------------------------. | yyacceptlab -- YYACCEPT comes here. | `-------------------------------------*/ yyacceptlab: yyresult = 0; goto yyreturn; /*-----------------------------------. | yyabortlab -- YYABORT comes here. | `-----------------------------------*/ yyabortlab: yyresult = 1; goto yyreturn; #if !defined yyoverflow || YYERROR_VERBOSE /*-------------------------------------------------. | yyexhaustedlab -- memory exhaustion comes here. | `-------------------------------------------------*/ yyexhaustedlab: yyerror (comm, YY_("memory exhausted")); yyresult = 2; /* Fall through. */ #endif /*-----------------------------------------------------. | yyreturn -- parsing is finished, return the result. | `-----------------------------------------------------*/ yyreturn: if (yychar != YYEMPTY) { /* Make sure we have latest lookahead translation. See comments at user semantic actions for why this is necessary. */ yytoken = YYTRANSLATE (yychar); yydestruct ("Cleanup: discarding lookahead", yytoken, &yylval, comm); } /* Do not reclaim the symbols of the rule whose action triggered this YYABORT or YYACCEPT. */ YYPOPSTACK (yylen); YY_STACK_PRINT (yyss, yyssp); while (yyssp != yyss) { yydestruct ("Cleanup: popping", yystos[*yyssp], yyvsp, comm); YYPOPSTACK (1); } #ifndef yyoverflow if (yyss != yyssa) YYSTACK_FREE (yyss); #endif #if YYERROR_VERBOSE if (yymsg != yymsgbuf) YYSTACK_FREE (yymsg); #endif return yyresult; } #line 267 "parse.y" /* yacc.c:1918 */ struct function realfunctions[] = { {"sin", sin, ANGLEIN}, {"cos", cos, ANGLEIN}, {"tan", tan, ANGLEIN}, {"ln", log, DIMENSIONLESS}, {"log", log10, DIMENSIONLESS}, {"exp", exp, DIMENSIONLESS}, {"acos", acos, ANGLEOUT}, {"atan", atan, ANGLEOUT}, {"asin", asin, ANGLEOUT}, {"sinh", sinh, DIMENSIONLESS}, {"cosh", cosh, DIMENSIONLESS}, {"tanh", tanh, DIMENSIONLESS}, {"asinh", asinh, DIMENSIONLESS}, {"acosh", acosh, DIMENSIONLESS}, {"atanh", atanh, DIMENSIONLESS}, {0, 0, 0}}; struct { char op; int value; } optable[] = { {'*', MULTIPLY}, {'/', DIVIDE}, {'|', NUMDIV}, {'+', ADD}, {'(', '('}, {')', ')'}, {'^', EXPONENT}, {'~', FUNCINV}, {0, 0}}; struct { char *name; int value; } strtable[] = { {"sqrt", SQRT}, {"cuberoot", CUBEROOT}, {"per" , DIVIDE}, {0, 0}}; #define LASTUNIT '_' /* Last unit symbol */ int yylex(YYSTYPE *lvalp, struct commtype *comm) { int length, count; struct unittype *output; const char *inptr; char *name; char *nonunitchars = "~;+-*/|\t\n^ ()"; /* Chars not allowed in unit name --- also defined in units.c */ char *nonunitends = ".,_"; /* Can't start or end a unit */ char *number_start = ".,0123456789"; /* Can be first char of a number */ if (comm->location==-1) return 0; inptr = comm->data + comm->location; /* Point to start of data */ /* Skip spaces */ while(*inptr==' ') inptr++, comm->location++; if (*inptr==0) { comm->location = -1; return EOL; /* Return failure if string has ended */ } /* Check for **, an exponent operator. */ if (0==strncmp("**",inptr,2)){ comm->location += 2; return EXPONENT; } /* Check for '-' and '*' which get special handling */ if (*inptr=='-'){ comm->location++; if (parserflags.minusminus) return MINUS; return MULTMINUS; } if (*inptr=='*'){ comm->location++; if (parserflags.oldstar) return MULTIPLY; return MULTSTAR; } /* Check for the "last unit" symbol */ if (*inptr == LASTUNIT) { comm->location++; if (!lastunitset) return LASTUNSET; output = getnewunit(); if (!output) return MEMERROR; unitcopy(output, &lastunit); lvalp->unit = output; return UNIT; } /* Look for single character ops */ for(count=0; optable[count].op; count++){ if (*inptr==optable[count].op) { comm->location++; return optable[count].value; } } /* Look for numbers */ if (strchr(number_start,*inptr)){ /* prevent "nan" from being recognized */ char *endloc; lvalp->number = strtod(inptr, &endloc); if (inptr != endloc) { comm->location += (endloc-inptr); if (*endloc && strchr(number_start,*endloc)) return BADNUMBER; else return REAL; } } /* Look for a word (function name or unit name) */ length = strcspn(inptr,nonunitchars); if (!length){ /* Next char is not a valid unit char */ comm->location++; return 0; } /* Check that unit name doesn't start or end with forbidden chars */ if (strchr(nonunitends,*inptr)){ comm->location++; return 0; } if (strchr(nonunitends, inptr[length-1])){ comm->location+=length; return 0; } name = dupnstr(inptr, length); /* Look for string operators */ for(count=0;strtable[count].name;count++){ if (!strcmp(name,strtable[count].name)){ free(name); comm->location += length; return strtable[count].value; } } /* Look for real function names */ for(count=0;realfunctions[count].name;count++){ if (!strcmp(name,realfunctions[count].name)){ lvalp->realfunc = realfunctions+count; comm->location += length; free(name); return REALFUNC; } } /* Check for arbitrary base log */ if (!strncmp(name, "log",3)){ count = strspn(name+3,"1234567890"); if (count+3 == strlen(name)){ lvalp->integer=atoi(name+3); if (lvalp->integer>1){ /* Log base must be larger than 1 */ comm->location += length; free(name); return LOG; } } } /* Look for function parameter */ if (function_parameter && !strcmp(name,function_parameter)){ free(name); output = getnewunit(); if (!output) return MEMERROR; unitcopy(output, parameter_value); lvalp->unit = output; comm->location += length; return UNIT; } /* Look for user defined function */ lvalp->unitfunc = fnlookup(name); if (lvalp->unitfunc){ comm->location += length; free(name); return UNITFUNC; } /* Didn't find a special string, so treat it as unit name */ comm->location+=length; if (strchr("23456789",inptr[length-1]) && !hassubscript(name)) { /* ends with digit but not a subscript, so do exponent handling like m3 */ count = name[length-1] - '0'; length--; if (strchr(number_start, name[length-1])){ free(name); return UNITEND; } } else count=1; free(name); output = getnewunit(); if (!output) return MEMERROR; output->numerator[count--]=0; for(;count>=0;count--) output->numerator[count] = dupnstr(inptr, length); lvalp->unit=output; return UNIT; } void yyerror(struct commtype *comm, char *s){} int parseunit(struct unittype *output, char const *input,char **errstr,int *errloc) { struct commtype comm; int saveunitcount; saveunitcount = unitcount; initializeunit(output); comm.result = 0; comm.location = 0; comm.data = input; comm.errorcode = E_PARSE; /* Assume parse error */ errno=0; if (yyparse(&comm) || errno){ if (comm.location==-1) comm.location = strlen(input); if (errstr){ if (comm.errorcode==E_FUNC || errno) *errstr = strerror(errno); else *errstr=errormsg[comm.errorcode]; } if (errloc) *errloc = comm.location; if (unitcount!=saveunitcount) fprintf(stderr,"units: Parser leaked memory with error: %d in %d out\n", saveunitcount, unitcount); return comm.errorcode; } else { if (errstr) *errstr = 0; multunit(output,comm.result); destroyunit(comm.result); if (unitcount!=saveunitcount) fprintf(stderr,"units: Parser leaked memory without error: %d in %d out\n", saveunitcount, unitcount); return 0; } } units-2.19/strfunc.c0000664000175000017500000000423110641165333013721 0ustar adrianadrian/* * Copyright (C) 1996 Free Software Foundation, Inc * * 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 3 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 program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * */ #define NULL 0 #define size_t int #ifdef NO_STRTOK /* Find the first ocurrence in S of any character in ACCEPT. */ char * strpbrk(char *s, char *accept) { while (*s != '\0') if (strchr(accept, *s) == NULL) ++s; else return (char *) s; return NULL; } static char *olds = NULL; char * strtok(char *s, char *delim) { char *token; if (s == NULL) { if (olds == NULL) { /*errno = EINVAL; Wonder where errno is defined....*/ return NULL; } else s = olds; } /* Scan leading delimiters. */ s += strspn(s, delim); if (*s == '\0') { olds = NULL; return NULL; } /* Find the end of the token. */ token = s; s = strpbrk(token, delim); if (s == NULL) /* This token finishes the string. */ olds = NULL; else { /* Terminate the token and make OLDS point past it. */ *s = '\0'; olds = s + 1; } return token; } #endif /* NO_STRTOK */ #ifdef NO_STRSPN /* Return the length of the maximum initial segment of S which contains only characters in ACCEPT. */ size_t strspn(char *s, char *accept) { register char *p; register char *a; register size_t count = 0; for (p = s; *p != '\0'; ++p) { for (a = accept; *a != '\0'; ++a) if (*p == *a) break; if (*a == '\0') return count; else ++count; } return count; } #endif NO_STRSPN units-2.19/UnitsWin.texinfo0000664000175000017500000002535013345446672015270 0ustar adrianadrian\input texinfo @c -*-texinfo-*- @c %**start of header @setfilename UnitsWin.info @finalout @setchapternewpage off @firstparagraphindent none @set EDITION 2 @set VERSION 2.16 @set OSVERSION 10 @set TKVERSION 10.0 @set VSVERSION 2015 @set BUILDDATE @w{19 October} 2017 @c %**end of header @copying This manual is for building GNU @command{units} (version @value{VERSION}) with Microsoft Visual Studio on Microsoft Windows. Copyright @copyright{} 2016--2017 Free Software Foundation, Inc. @end copying @titlepage @title @w{Building and Installing} @w{GNU @command{units}} on @w{Microsoft Windows} with @w{Microsoft Visual Studio} @subtitle Edition @value{EDITION} for @command{units} Version @value{VERSION} @author Jeff Conrad @page @vskip 0pt plus 1filll @insertcopying @end titlepage @contents @iftex @headings off @everyheading Building @command{units} on Windows using Microsoft Visual Studio @| @| @thispage @end iftex @macro label {text} @w{@sansserif{\text\}} @end macro @node Preface @unnumbered Preface This manual covers building and installing GNU @command{units} on Windows, using Microsoft Visual Studio from the Windows command prompt. You may be able to import @file{Makefile.Win} into the Visual Studio IDE, but that is beyond the scope of this document. If you have Unix-like utilities, you may be able to build and install in much the same manner as on most Unix-like systems, perhaps with a few minor adjustments. Versions 2.12 and earlier were built using Microsoft Visual C/C++ 6.0, Visual Studio Express 9.0 and 10.0, and the MKS Toolkit version 9.6 under Windows XP, SP3. Version @value{VERSION} was built using Microsoft Visual Studio @value{VSVERSION} and the MKS Toolkit version @value{TKVERSION} on @w{Windows @value{OSVERSION}}---@pxref{Top,,,UnitsMKS,UnitsMKS} for the details. A Windows binary distribution is available on the project website; the resulting installation is essentially the same as that using @file{Makefile.Win}, and usually can be achieved with less effort. The most recent build was for @command{units} version @value{VERSION}, using Microsoft Visual Studio @value{VSVERSION} on Microsoft Windows Professional @value{OSVERSION} on @value{BUILDDATE}. --- Jeff Conrad (@email{jeff_conrad@@msn.com}) @value{BUILDDATE} @node Building without Unix-Like Utilities @unnumbered Building from the Windows Command Prompt If you have Microsoft Visual Studio but don't have Unix-like utilities, you should be able to build and install @command{units} from the Windows command prompt using @file{Makefile.Win}: @example @group nmake /f Makefile.Win nmake /f Makefile.Win install @end group @end example @noindent The build requires that many environment variables be properly set; the easiest way to do this is to select @label{Developer Command Prompt} in the Visual Studio folder on the Start menu, and then change to the @command{units} source directory. If you install in the default location, you'll probably require elevated privileges; the easiest way to do this is to right-click on @label{Developer Command Prompt} in the Visual Studio folder on the Start menu, and select @label{Run as administrator}. By default, the units executable and data files are placed in the directory given by @code{%ProgramFiles(x86)%\GNU\units}; in most cases, this is @w{@file{C:\Program Files (x86)\GNU\units}}. On a 32-bit Windows system, the directory should be changed to @code{%ProgramFiles%\GNU\units}. You can preview the installation directories with @example nmake /f Makefile.Win showdest @end example @noindent If the destination directories don't exist, they will be created during installation. You can change these locations by editing @file{Makefile.Win}. If you want to run units from a command prompt or from the Start Menu Run box, you can add the installation directory to the @env{PATH} environment variable. Alternatively, you can create a shortcut to the program and place it in a convenient location. @node Icons and File Association @unnumbered Icons and File Association The installation process associates @command{units} data files with the @command{notepad} editor; double-clicking on the file icon opens the file for editing. The installation process makes @file{unitsfile.ico} the default icon for these files. An additional icon file, @file{unitsprog.ico}, is embedded in the executable file as part of the build process; this icon also may be useful if you wish to create a shortcut to the @command{units} program. Both icons are copied to the @command{units} installation directory. @node Currency Definitions Updater @unnumbered Currency Definitions Updater The script @command{units_cur.py} can be used to update currency definitions (if your system hides file extensions, this script will display as @command{units_cur}). The script requires Python (available from @url{https://www.python.org/}). @node Installing Python @unnumberedsec Installing Python If you want to use the currency updater, install Python if it is not already installed. If you need to install Python, unless you have (or anticipate having) applications that depend on @w{Python 2}, the best choice is probably to install @w{Python 3}. After installing Python, you should be able to run @command{units_cur.py} using the shortcut on the Start Menu, or if you have added the units installation directory to your @env{PATH}, from a command-prompt window. When you first run @command{units_cur.py}, you may get a complaint about a missing module; for example @codequoteundirected on @example ModuleNotFoundError: No module named 'requests' @end example @codequoteundirected off @noindent If so, you will need to install the missing module. The easiest way to do this is with the @command{pip} command; for example @example pip install requests @end example @noindent If you have @w{Python 2.7.9} or later or @w{Python 3.4} or later, you should have @command{pip}, though you may need to upgrade to the latest version. If you do not have @command{pip}, you will need to install it manually; see the Python documentation or the Python website for instructions on how to do this. @node Configuring @command{units_cur.py} @unnumberedsec Configuring @command{units_cur.py} If you want to run the currency-update script from the command prompt without changing to the program installation directory, you will need to modify @file{units_cur.py} to give the full pathname of the output file currency.units, i.e., change @codequoteundirected on @example outfile = 'currency.units' @end example @codequoteundirected off @noindent to @codequoteundirected on @example outfile = '@var{installation_directory}/currency.units' @end example @codequoteundirected off @noindent For the default installation directory on a 64-bit system, this would be @codequoteundirected on @example outfile = 'C:/Program Files (x86)/GNU/units/currency.units' @end example @codequoteundirected off @noindent The safest approach is to run @example nmake /f Makefile.Win showdest @end example @noindent to get the destination directory. Be sure to use forward slashes in the pathname to avoid confusing Python. The best approach is to modify @file{units_cur.py} before installation. If you add @code{.py} to the @env{PATHEXT} environment variable, you can simply type @command{units_cur} to run the updater from a command-prompt window. You can do this from the command prompt by typing @example set PATHEXT=%PATHEXT%;.py @end example @noindent but you'll need to do this with every new instance. You can make a permanent change by adding @code{;.py} to @env{PATHEXT} from the Advanced tab of the System dialog: click the `Environment Variables' button, find @env{PATHEXT} in either the list of User variables or the list of System variables; click the `Edit' button, make the change, and click `OK'. @node Example @unnumberedsec Example If you are installing units in the default location of @file{C:/Program Files (x86)/GNU/units} on a 64-bit system, the process would be to @enumerate @item Build the executable by running @example nmake /f Makefile.Win @end example @item Confirm the installation location by running @example nmake /f Makefile.Win showdest @end example It is assumed that the program will be installed in a subdirectory of the standard location for executables (typically, @w{@file{C:\Program Files (x86)}} on a 64-bit system or @w{@file{C:\Program Files}} on a 32-bit system), and a warning is given if this directory does not exist. Ignore the warning if you are intentionally installing in another location. @item If necessary, modify @command{units_cur.py} so that the output file is given by @codequoteundirected on @example outfile = '@var{installation_directory}/currency.units' @end example @codequoteundirected off @noindent By default, this will usually be @codequoteundirected on @example outfile = 'C:/Program Files (x86)/GNU/units/currency.units' @end example @codequoteundirected off @item Install the files by running @example nmake /f Makefile.Win install @end example @item Ensure that @file{currency.units} is writable by ordinary users. The installation should do this automatically, but if for some reason it does not, set permissions manually by adding `Modify' permission for the appropriate groups (typically `Power Users' and `Users') @end enumerate @node Running the Currency Updater @unnumbered Running the Currency Updater @node Updating from a Command Prompt @unnumberedsec Updating from a Command Prompt If you have modified the currency-update script to give the full pathname of the output file @file{currency.units}, you can update the file by running @command{units_cur.py} from any instance of the Windows command prompt. Reliable free sources of currency exchange rates have been annoyingly ephemeral, sometimes causing update attempts to fail. Accordingly, several different sources are now supported---see the units manual for details. @node Automatic Updates @unnumberedsec Automatic Updates The easiest way to keep currency values up to date is by having the Windows Task Scheduler run @command{units_cur.py} on a regular basis. The Task Scheduler is fussy about the format for the action, which must be an executable file; an entry might look something like @example C:\Windows\py.exe "C:\Program Files (x86)\GNU\units\units_cur.py" @end example @noindent if the Python launcher is in @file{C:\Windows} and the script is in @file{C:\Program Files (x86)\GNU\units}. The program must start in the @command{units} installation directory; the starting directory must be specified @emph{without} quotes. @bye units-2.19/Makefile.Win0000664000175000017500000000735713172240660014300 0ustar adrianadrian# Makefile for units, a program for units conversion # created for Microsoft Visual C/C++ under Microsoft Windows(R) # # Copyright (C) 1996, 1997, 1999, 2005, 2006, 2012, 2013, 2014, 2017 # Free Software Foundation, Inc # # 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 3 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 program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA # # # The units program was written by Adrian Mariano (adrianm@gnu.org). # This makefile was written by Adrian Mariano and Jeff Conrad # (jeff_conrad@msn.com), and tested with Microsoft Visual Studio 2015 # on Windows 10 Professional. # It was previously tested with MS Visual C/C++ 6.0, and MS Visual # Studio 2005, 2008, and 2010 on Windows XP Professional SP3 # Change these to suit the system configuration # Normal location on 32-bit system # ProgFilesDir = %ProgramFiles% # Normal location for 32-bit executable on 64-bit system ProgFilesDir = %ProgramFiles(x86)% bindir = "$(ProgFilesDir)\GNU\units" datadir = "$(ProgFilesDir)\GNU\units" srcdir = . # These are for Microsoft Visual Studio; edit to suit for other compilers. # Do NOT give the 'Za' flag with MSVC. CC = cl RC = rc.exe CFLAGS = /O2 /W3 /nologo OBJS = units.obj getopt.obj getopt1.obj parse.obj # suppress warnings about "unsafe" functions CDEFS = /DNO_SETENV /D_CRT_SECURE_NO_WARNINGS # add this to CDEFS if compiler version doesn't have isfinite() # /DNO_ISFINITE UDEFS = /DUNITSFILE=\"definitions.units\" /DLOCALEMAP=\"locale_map.txt\" RES = units.res all: units.exe units_cur.py units.exe: $(OBJS) $(RES) $(CC) $(CFLAGS) $(CDEFS) $(UDEFS) $(OBJS) $(RES) $(LIBS) units.obj: units.c units.h getopt.obj: getopt.c $(CC) $(CFLAGS) $(CDEFS) /c getopt.c getopt1.obj: getopt1.c getopt.h $(CC) $(CFLAGS) $(CDEFS) /c getopt1.c units.obj: units.c $(CC) $(CFLAGS) $(CDEFS) $(UDEFS) /c units.c parse.obj: parse.tab.c units.h $(CC) $(CFLAGS) $(CDEFS) /c parse.tab.c del /f/q parse.obj rename parse.tab.obj parse.obj units_cur.py: units_cur copy units_cur units_cur.py showdest: @echo datadir=$(datadir) & echo bindir=$(bindir) @if not exist "$(ProgFilesDir)" \ echo '$(ProgFilesDir)' does not exist and will be created install: units.exe $(srcdir)\winmkdirs $(bindir) $(datadir) copy /y units.exe $(bindir) copy /y definitions.units $(datadir) copy /y currency.units $(datadir) copy /y locale_map.txt $(datadir) copy /y unitsfile.ico $(datadir) copy /y unitsprog.ico $(datadir) cacls $(datadir)\definitions.units /e /g Users:c cacls $(datadir)\definitions.units /e /g "Power Users":c cacls $(datadir)\currency.units /e /g Users:c cacls $(datadir)\currency.units /e /g "Power Users":c copy /y units_cur.py $(datadir) cacls $(datadir)\units_cur.py /e /g Users:c cacls $(datadir)\units_cur.py /e /g "Power Users":c assoc .units=Units.DataFile # change this if you want a different editor for units data files for %%i in (notepad.exe) do \ if exist %%~$$PATH:i (ftype Units.DataFile="%%~$$PATH:i" "%1") \ else (ftype Units.DataFile=notepad.exe "%1") reg add "HKCR\Units.DataFile\DefaultIcon" /f /ve /d $(datadir)\unitsfile.ico /t REG_SZ clean: del /f/q $(OBJS) units_cur.py units-2.19/units.h0000664000175000017500000001101313047161160013375 0ustar adrianadrian/* * units, a program for units conversion * Copyright (C) 1996, 1997, 1999, 2000, 2001, 2014, 2017 * Free Software Foundation, Inc * * 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 3 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 program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * This program was written by Adrian Mariano (adrianm@gnu.org) */ #include #include /* Apparently popen and pclose require leading _ under windows */ #if defined(_MSC_VER) || defined(__MINGW32__) # define popen _popen # define pclose _pclose #endif #ifdef NO_ISFINITE # if defined _WIN32 && defined _MSC_VER # define isfinite(x) (!_isnan(x) && _finite(x)) # else # define isfinite(x) ( -DBL_MAX <= (x) && (x) <= DBL_MAX ) # endif #endif #ifdef STRINGS_H # include #else # include #endif #ifndef NO_STDLIB_H # include #else char *malloc(), *realloc(), *getenv(); #endif #ifndef strchr # ifdef NO_STRCHR # define strchr(a,b) index((a),(b)) # else char *strchr(); # endif #endif /* !strchr */ #define E_NORMAL 0 #define E_PARSE 1 #define E_PRODOVERFLOW 2 #define E_REDUCE 3 #define E_BADSUM 4 #define E_NOTANUMBER 5 #define E_NOTROOT 6 #define E_UNKNOWNUNIT 7 #define E_FUNC 8 /* If errno is set after calling a function */ #define E_BADFUNCTYPE 9 #define E_BADFUNCARG 10 #define E_NOTINDOMAIN 11 #define E_BADFUNCDIMEN 12 #define E_NOINVERSE 13 #define E_PARSEMEM 14 #define E_FUNARGDEF 15 #define E_FILE 16 #define E_BADFILE 17 #define E_MEMORY 18 #define E_BADNUM 19 #define E_UNITEND 20 #define E_LASTUNSET 21 #define E_IRRATIONAL_EXPONENT 22 #define E_BASE_NOTROOT 23 #define E_DIMEXPONENT 24 #define E_NOTAFUNC 25 extern char *errormsg[]; /* Data type used to store a single unit being operated on. The numerator and denominator arrays contain lists of units (strings) which are terminated by a null pointer. The special string NULLUNIT is used to mark blank units that occur in the middle of the list. */ extern char *NULLUNIT; #define MAXSUBUNITS 100 /* Size of internal unit reduction buffer */ struct unittype { char *numerator[MAXSUBUNITS]; char *denominator[MAXSUBUNITS]; double factor; }; struct functype { char *param; char *def; char *dimen; double *domain_min, *domain_max; int domain_min_open, domain_max_open; }; struct pair { double location, value; }; struct func { char *name; struct functype forward; struct functype inverse; struct pair *table; int tablelen; char *tableunit; struct func *next; int skip_error_check; /* do not check for errors when running units -c */ int linenumber; char *file; /* file where defined */ }; struct parseflag { int oldstar; /* Does '*' have higher precedence than '/' */ int minusminus; /* Does '-' character give subtraction */ }; extern struct parseflag parserflags; extern struct unittype *parameter_value; extern char *function_parameter; extern int lastunitset; extern struct unittype lastunit; void *mymalloc(int bytes, const char *mesg); int hassubscript(const char *str); void initializeunit(struct unittype *theunit); void freeunit(struct unittype *theunit); void unitcopy(struct unittype *dest,struct unittype *src); int divunit(struct unittype *left, struct unittype *right); void invertunit(struct unittype *theunit); int multunit(struct unittype *left, struct unittype *right); int expunit(struct unittype *theunit, int power); int addunit(struct unittype *unita, struct unittype *unitb); int rootunit(struct unittype *inunit,int n); int unitpower(struct unittype *base, struct unittype *exponent); char *dupstr(const char *str); char *dupnstr(const char *string, int length); int unit2num(struct unittype *input); struct func *fnlookup(const char *str); int evalfunc(struct unittype *theunit, struct func *infunc, int inverse, int allerror); int parseunit(struct unittype *output, const char *input, char **errstr, int *errloc); units-2.19/getopt.h0000664000175000017500000001066112040123025013533 0ustar adrianadrian/* Declarations for getopt. Copyright (C) 1989, 90, 91, 92, 93, 94 Free Software Foundation, Inc. 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, 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 program; if not, write to the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02111 USA. */ #ifdef STRINGS_H # include #else # include #endif #ifndef _GETOPT_H #define _GETOPT_H 1 #ifdef __cplusplus extern "C" { #endif /* For communication from `getopt' to the caller. When `getopt' finds an option that takes an argument, the argument value is returned here. Also, when `ordering' is RETURN_IN_ORDER, each non-option ARGV-element is returned here. */ extern char *optarg; /* Index in ARGV of the next element to be scanned. This is used for communication to and from the caller and for communication between successive calls to `getopt'. On entry to `getopt', zero means this is the first call; initialize. When `getopt' returns EOF, this is the index of the first of the non-option elements that the caller should itself scan. Otherwise, `optind' communicates from one call to the next how much of ARGV has been scanned so far. */ extern int optind; /* Callers store zero here to inhibit the error message `getopt' prints for unrecognized options. */ extern int opterr; /* Set to an option character which was unrecognized. */ extern int optopt; /* Describe the long-named options requested by the application. The LONG_OPTIONS argument to getopt_long or getopt_long_only is a vector of `struct option' terminated by an element containing a name which is zero. The field `has_arg' is: no_argument (or 0) if the option does not take an argument, required_argument (or 1) if the option requires an argument, optional_argument (or 2) if the option takes an optional argument. If the field `flag' is not NULL, it points to a variable that is set to the value given in the field `val' when the option is found, but left unchanged if the option is not found. To have a long-named option do something other than set an `int' to a compiled-in constant, such as set a value from `optarg', set the option's `flag' field to zero and its `val' field to a nonzero value (the equivalent single-letter option character, if there is one). For long options that have a zero `flag' field, `getopt' returns the contents of the `val' field. */ struct option { #if defined (__STDC__) && __STDC__ const char *name; #else char *name; #endif /* has_arg can't be an enum because some compilers complain about type mismatches in all the code that assumes it is an int. */ int has_arg; int *flag; int val; }; /* Names for the values of the `has_arg' field of `struct option'. */ #define no_argument 0 #define required_argument 1 #define optional_argument 2 #if defined (__STDC__) && __STDC__ #ifdef __GNU_LIBRARY__ /* Many other libraries have conflicting prototypes for getopt, with differences in the consts, in stdlib.h. To avoid compilation errors, only prototype getopt for the GNU C library. */ extern int getopt (int argc, char *const *argv, const char *shortopts); #else /* not __GNU_LIBRARY__ */ extern int getopt (); #endif /* __GNU_LIBRARY__ */ extern int getopt_long (int argc, char *const *argv, const char *shortopts, const struct option *longopts, int *longind); extern int getopt_long_only (int argc, char *const *argv, const char *shortopts, const struct option *longopts, int *longind); /* Internal only. Users should not call this directly. */ extern int _getopt_internal (int argc, char *const *argv, const char *shortopts, const struct option *longopts, int *longind, int long_only); #else /* not __STDC__ */ extern int getopt (); extern int getopt_long (); extern int getopt_long_only (); extern int _getopt_internal (); #endif /* __STDC__ */ #ifdef __cplusplus } #endif #endif /* _GETOPT_H */ units-2.19/units.txt0000664000175000017500000037776313473351440014025 0ustar adrianadrianUNITS(1) General Commands Manual UNITS(1) NAME units -- unit conversion and calculation program SYNOPSIS 'units' [options] [from-unit [to-unit]] DESCRIPTION The 'units' program converts quantities expressed in various systems of measurement to their equivalents in other systems of measurement. Like many similar programs, it can handle multiplicative scale changes. It can also handle nonlinear conversions such as Fahrenheit to Celsius; see Temperature Conversions. The program can also perform conversions from and to sums of units, such as converting between meters and feet plus inches. Basic operation is simple: you enter the units that you want to convert from and the units that you want to convert to. You can use the pro- gram interactively with prompts, or you can use it from the command line. Beyond simple unit conversions, 'units' can be used as a general-pur- pose scientific calculator that keeps track of units in its calcula- tions. You can form arbitrary complex mathematical expressions of dimensions including sums, products, quotients, powers, and even roots of dimensions. Thus you can ensure accuracy and dimensional consis- tency when working with long expressions that involve many different units that may combine in complex ways; for an illustration, see Com- plicated Unit Expressions. The units are defined in an external data file. You can use the exten- sive data file that comes with this program, or you can provide your own data file to suit your needs. You can also use your own data file to supplement the standard data file. You can change the default behavior of 'units' with various options given on the command line. See Invoking Units for a description of the available options. INTERACTING WITH UNITS To invoke 'units' for interactive use, type 'units' at your shell prompt. The program will print something like this: Currency exchange rates from www.timegenie.com on 2014-03-05 2860 units, 109 prefixes, 85 nonlinear units You have: At the 'You have:' prompt, type the quantity and units that you are converting from. For example, if you want to convert ten meters to feet, type '10 meters'. Next, 'units' will print 'You want:'. You should type the units you want to convert to. To convert to feet, you would type 'feet'. If the 'readline' library was compiled in, then tab will complete unit names. See Readline Support for more information about 'readline'. To quit the program type 'quit' or 'exit' at either prompt. The result will be displayed in two ways. The first line of output, which is marked with a '*' to indicate multiplication, gives the result of the conversion you have asked for. The second line of output, which is marked with a '/' to indicate division, gives the inverse of the conversion factor. If you convert 10 meters to feet, 'units' will print * 32.808399 / 0.03048 which tells you that 10 meters equals about 32.8 feet. The second num- ber gives the conversion in the opposite direction. In this case, it tells you that 1 foot is equal to about 0.03 dekameters since the dekameter is 10 meters. It also tells you that 1/32.8 is about 0.03. The 'units' program prints the inverse because sometimes it is a more convenient number. In the example above, for example, the inverse value is an exact conversion: a foot is exactly 0.03048 dekameters. But the number given the other direction is inexact. If you convert grains to pounds, you will see the following: You have: grains You want: pounds * 0.00014285714 / 7000 From the second line of the output you can immediately see that a grain is equal to a seven thousandth of a pound. This is not so obvi- ous from the first line of the output. If you find the output format confusing, try using the '--verbose' option: You have: grain You want: aeginamina grain = 0.00010416667 aeginamina grain = (1 / 9600) aeginamina If you request a conversion between units that measure reciprocal dimensions, then 'units' will display the conversion results with an extra note indicating that reciprocal conversion has been done: You have: 6 ohms You want: siemens reciprocal conversion * 0.16666667 / 6 Reciprocal conversion can be suppressed by using the '--strict' option. As usual, use the '--verbose' option to get more comprehensible output: You have: tex You want: typp reciprocal conversion 1 / tex = 496.05465 typp 1 / tex = (1 / 0.0020159069) typp You have: 20 mph You want: sec/mile reciprocal conversion 1 / 20 mph = 180 sec/mile 1 / 20 mph = (1 / 0.0055555556) sec/mile If you enter incompatible unit types, the 'units' program will print a message indicating that the units are not conformable and it will dis- play the reduced form for each unit: You have: ergs/hour You want: fathoms kg^2 / day conformability error 2.7777778e-11 kg m^2 / sec^3 2.1166667e-05 kg^2 m / sec If you only want to find the reduced form or definition of a unit, sim- ply press Enter at the 'You want:' prompt. Here is an example: You have: jansky You want: Definition: fluxunit = 1e-26 W/m^2 Hz = 1e-26 kg / s^2 The output from 'units' indicates that the jansky is defined to be equal to a fluxunit which in turn is defined to be a certain combina- tion of watts, meters, and hertz. The fully reduced (and in this case somewhat more cryptic) form appears on the far right. Some named units are treated as dimensionless in some situations. These units include the radian and steradian. These units will be treated as equal to 1 in units conversions. Power is equal to torque times angular velocity. This conversion can only be performed if the radian is dimensionless. You have: (14 ft lbf) (12 radians/sec) You want: watts * 227.77742 / 0.0043902509 It is also possible to compute roots and other non-integer powers of dimensionless units; this allows computations such as the altitude of geosynchronous orbit: You have: cuberoot(G earthmass / (circle/siderealday)^2) - earthradius You want: miles * 22243.267 / 4.4957425e-05 Named dimensionless units are not treated as dimensionless in other contexts. They cannot be used as exponents so for example, 'meter^radian' is forbidden. If you want a list of options you can type '?' at the 'You want:' prompt. The program will display a list of named units that are con- formable with the unit that you entered at the 'You have:' prompt above. Conformable unit combinations will not appear on this list. Typing 'help' at either prompt displays a short help message. You can also type 'help' followed by a unit name. This will invoke a pager on the units data base at the point where that unit is defined. You can read the definition and comments that may give more details or histori- cal information about the unit. (You can generally quit out of the page by pressing 'q'.) Typing 'search' text will display a list of all of the units whose names contain text as a substring along with their definitions. This may help in the case where you aren't sure of the right unit name. USING UNITS NON-INTERACTIVELY The 'units' program can perform units conversions non-interactively from the command line. To do this, type the command, type the original unit expression, and type the new units you want. If a units expres- sion contains non-alphanumeric characters, you may need to protect it from interpretation by the shell using single or double quote charac- ters. If you type units "2 liters" quarts then 'units' will print * 2.1133764 / 0.47317647 and then exit. The output tells you that 2 liters is about 2.1 quarts, or alternatively that a quart is about 0.47 times 2 liters. 'units' does not require a space between a numerical value and the unit, so the previous example can be given as units 2liters quarts to avoid having to quote the first argument. If the conversion is successful, then 'units' will return success (zero) to the calling environment. If you enter non-conformable units, then 'units' will print a message giving the reduced form of each unit and it will return failure (nonzero) to the calling environ- ment. When you invoke 'units' with only one argument, it will print the defi- nition of the specified unit. It will return failure if the unit is not defined and success if the unit is defined. UNIT DEFINITIONS The conversion information is read from a units data file that is called 'definitions.units' and is usually located in the '/usr/share/units' directory. If you invoke 'units' with the '-V' option, it will print the location of this file. The default file includes definitions for all familiar units, abbreviations and metric prefixes. It also includes many obscure or archaic units. Many common spelled-out numbers (e.g., 'seventeen') are recognized. Many constants of nature are defined, including these: pi ratio of circumference to diameter c speed of light e charge on an electron force acceleration of gravity mole Avogadro's number water pressure per unit height of water Hg pressure per unit height of mercury au astronomical unit k Boltzman's constant mu0 permeability of vacuum epsilon0 permittivity of vacuum G Gravitational constant mach speed of sound The standard data file includes atomic masses for all of the elements and numerous other constants. Also included are the densities of vari- ous ingredients used in baking so that '2 cups flour_sifted' can be converted to 'grams'. This is not an exhaustive list. Consult the units data file to see the complete list, or to see the definitions that are used. The 'pound' is a unit of mass. To get force, multiply by the force conversion unit 'force' or use the shorthand 'lbf'. (Note that 'g' is already taken as the standard abbreviation for the gram.) The unit 'ounce' is also a unit of mass. The fluid ounce is 'fluidounce' or 'floz'. When British capacity units differ from their US counterparts, such as the British Imperial gallon, the unit is defined both ways with 'br' and 'us' prefixes. Your locale settings will determine the value of the unprefixed unit. Currency is prefixed with its country name: 'belgiumfranc', 'britainpound'. When searching for a unit, if the specified string does not appear exactly as a unit name, then the 'units' program will try to remove a trailing 's', 'es'. Next units will replace a trailing 'ies' with 'y'. If that fails, 'units' will check for a prefix. The database includes all of the standard metric prefixes. Only one prefix is permitted per unit, so 'micromicrofarad' will fail. However, prefixes can appear alone with no unit following them, so 'micro*microfarad' will work, as will 'micro microfarad'. To find out which units and prefixes are available, read the standard units data file, which is extensively annotated. English Customary Units English customary units differ in various ways in different regions. In Britain a complex system of volume measurements featured different gallons for different materials such as a wine gallon and ale gallon that different by twenty percent. This complexity was swept away in 1824 by a reform that created an entirely new gallon, the British Impe- rial gallon defined as the volume occupied by ten pounds of water. Meanwhile in the USA the gallon is derived from the 1707 Winchester wine gallon, which is 231 cubic inches. These gallons differ by about twenty percent. By default if 'units' runs in the 'en_GB' locale you will get the British volume measures. If it runs in the 'en_US' locale you will get the US volume measures. In other locales the default val- ues are the US definitions. If you wish to force different defini- tions, then set the environment variable 'UNITS_ENGLISH' to either 'US' or 'GB' to set the desired definitions independent of the locale. Before 1959, the value of a yard (and other units of measure defined in terms of it) differed slightly among English-speaking countries. In 1959, Australia, Canada, New Zealand, the United Kingdom, the United States, and South Africa adopted the Canadian value of 1 yard = 0.9144 m (exactly), which was approximately halfway between the values used by the UK and the US; it had the additional advantage of making 1 inch = 2.54 cm (exactly). This new standard was termed the Interna- tional Yard. Australia, Canada, and the UK then defined all customary lengths in terms of the International Yard (Australia did not define the furlong or rod); because many US land surveys were in terms of the pre-1959 units, the US continued to define customary surveyors' units (furlong, chain, rod, and link) in terms of the previous value for the foot, which was termed the US survey foot. The US defined a US survey mile as 5280 US survey feet, and defined a statute mile as a US survey mile. The US values for these units differ from the international val- ues by about 2 ppm. The 'units' program uses the international values for these units; the US values can be obtained by using either the 'US' or the 'survey' pre- fix. In either case, the simple familiar relationships among the units are maintained, e.g., 1 'furlong' = 660 'ft', and 1 'USfurlong' = 660 'USft', though the metric equivalents differ slightly between the two cases. The 'US' prefix or the 'survey' prefix can also be used to obtain the US survey mile and the value of the US yard prior to 1959, e.g., 'USmile' or 'surveymile' (but not 'USsurveymile'). To get the US value of the statute mile, use either 'USstatutemile' or 'USmile'. Except for distances that extend over hundreds of miles (such as in the US State Plane Coordinate System), the differences in the miles are usually insignificant: You have: 100 surveymile - 100 mile You want: inch * 12.672025 / 0.078913984 The pre-1959 UK values for these units can be obtained with the prefix 'UK'. In the US, the acre is officially defined in terms of the US survey foot, but 'units' uses a definition based on the international foot. If you want the official US acre use 'USacre' and similarly use 'USacrefoot' for the official US version of that unit. The difference between these units is about 4 parts per million. UNIT EXPRESSIONS Operators You can enter more complicated units by combining units with operations such as multiplication, division, powers, addition, subtraction, and parentheses for grouping. You can use the customary symbols for these operators when 'units' is invoked with its default options. Addition- ally, 'units' supports some extensions, including high priority multi- plication using a space, and a high priority numerical division opera- tor ('|') that can simplify some expressions. You multiply units using a space or an asterisk ('*'). The next exam- ple shows both forms: You have: arabicfoot * arabictradepound * force You want: ft lbf * 0.7296 / 1.370614 You can divide units using the slash ('/') or with 'per': You have: furlongs per fortnight You want: m/s * 0.00016630986 / 6012.8727 You can use parentheses for grouping: You have: (1/2) kg / (kg/meter) You want: league * 0.00010356166 / 9656.0833 White space surrounding operators is optional, so the previous example could have used '(1/2)kg/(kg/meter)'. As a consequence, however, hyphenated spelled-out numbers (e.g., 'forty-two') cannot be used; 'forty-two' is interpreted as '40 - 2'. Multiplication using a space has a higher precedence than division using a slash and is evaluated left to right; in effect, the first '/' character marks the beginning of the denominator of a unit expression. This makes it simple to enter a quotient with several terms in the denominator: 'J / mol K'. The '*' and '/' operators have the same precedence, and are evaluated left to right; if you multiply with '*', you must group the terms in the denominator with parentheses: 'J / (mol * K)'. The higher precedence of the space operator may not always be advanta- geous. For example, 'm/s s/day' is equivalent to 'm / s s day' and has dimensions of length per time cubed. Similarly, '1/2 meter' refers to a unit of reciprocal length equivalent to 0.5/meter, perhaps not what you would intend if you entered that expression. The get a half meter you would need to use parentheses: '(1/2) meter'. The '*' operator is convenient for multiplying a sequence of quotients. For example, 'm/s * s/day' is equivalent to 'm/day'. Similarly, you could write '1/2 * meter' to get half a meter. The 'units' program supports another option for numerical fractions: you can indicate division of numbers with the vertical bar ('|'), so if you wanted half a meter you could write '1|2 meter'. You cannot use the vertical bar to indicate division of non-numerical units (e.g., 'm|s' results in an error message). Powers of units can be specified using the '^' character, as shown in the following example, or by simple concatenation of a unit and its exponent: 'cm3' is equivalent to 'cm^3'; if the exponent is more than one digit, the '^' is required. You can also use '**' as an exponent operator. You have: cm^3 You want: gallons * 0.00026417205 / 3785.4118 Concatenation only works with a single unit name: if you write '(m/s)2', 'units' will treat it as multiplication by 2. When a unit includes a prefix, exponent operators apply to the combination, so 'centimeter3' gives cubic centimeters. If you separate the prefix from the unit with any multiplication operator (e.g., 'centi meter^3'), the prefix is treated as a separate unit, so the exponent applies only to the unit without the prefix. The second example is equivalent to 'centi * (meter^3)', and gives a hundredth of a cubic meter, not a cubic centimeter. The 'units' program is limited internally to prod- ucts of 99 units; accordingly, expressions like 'meter^100' or 'joule^34' (represented internally as 'kg^34 m^68 / s^68') will fail. The '|' operator has the highest precedence, so you can write the square root of two thirds as '2|3^1|2'. The '^' operator has the sec- ond highest precedence, and is evaluated right to left, as usual: You have: 5 * 2^3^2 You want: Definition: 2560 With a dimensionless base unit, any dimensionless exponent is meaning- ful (e.g., 'pi^exp(2.371)'). Even though angle is sometimes treated as dimensionless, exponents cannot have dimensions of angle: You have: 2^radian ^ Exponent not dimensionless If the base unit is not dimensionless, the exponent must be a rational number p/q, and the dimension of the unit must be a power of q, so 'gallon^2|3' works but 'acre^2|3' fails. An exponent using the slash ('/') operator (e.g., 'gallon^(2/3)') is also acceptable; the parenthe- ses are needed because the precedence of '^' is higher than that of '/'. Since 'units' cannot represent dimensions with exponents greater than 99, a fully reduced exponent must have q < 100. When raising a non-dimensionless unit to a power, 'units' attempts to convert a deci- mal exponent to a rational number with q < 100. If this is not possi- ble 'units' displays an error message: You have: ft^1.234 Base unit not dimensionless; rational exponent required A decimal exponent must match its rational representation to machine precision, so 'acre^1.5' works but 'gallon^0.666' does not. Sums and Differences of Units You may sometimes want to add values of different units that are out- side the SI. You may also wish to use 'units' as a calculator that keeps track of units. Sums of conformable units are written with the '+' character, and differences with the '-' character. You have: 2 hours + 23 minutes + 32 seconds You want: seconds * 8612 / 0.00011611705 You have: 12 ft + 3 in You want: cm * 373.38 / 0.0026782366 You have: 2 btu + 450 ft lbf You want: btu * 2.5782804 / 0.38785542 The expressions that are added or subtracted must reduce to identical expressions in primitive units, or an error message will be displayed: You have: 12 printerspoint - 4 heredium ^ Illegal sum of non-conformable units As usual, the precedence for '+' and '-' is lower than that of the other operators. A fractional quantity such as 2 1/2 cups can be given as '(2+1|2) cups'; the parentheses are necessary because multiplication has higher precedence than addition. If you omit the parentheses, 'units' attempts to add '2' and '1|2 cups', and you get an error mes- sage: You have: 2+1|2 cups ^ Illegal sum or difference of non-conformable units The expression could also be correctly written as '(2+1/2) cups'. If you write '2 1|2 cups' the space is interpreted as multiplication so the result is the same as '1 cup'. The '+' and '-' characters sometimes appears in exponents like '3.43e+8'. This leads to an ambiguity in an expression like '3e+2 yC'. The unit 'e' is a small unit of charge, so this can be regarded as equivalent to '(3e+2) yC' or '(3 e)+(2 yC)'. This ambiguity is resolved by always interpreting '+' and '-' as part of an exponent if possible. Numbers as Units For 'units', numbers are just another kind of unit. They can appear as many times as you like and in any order in a unit expression. For example, to find the volume of a box that is 2 ft by 3 ft by 12 ft in steres, you could do the following: You have: 2 ft 3 ft 12 ft You want: stere * 2.038813 / 0.49048148 You have: $ 5 / yard You want: cents / inch * 13.888889 / 0.072 And the second example shows how the dollar sign in the units conver- sion can precede the five. Be careful: 'units' will interpret '$5' with no space as equivalent to 'dollar^5'. Built-in Functions Several built-in functions are provided: 'sin', 'cos', 'tan', 'ln', 'log', 'exp', 'acos', 'atan', 'asin', 'cosh', 'sinh', 'tanh', 'acosh', 'asinh', and 'atanh'. The 'sin', 'cos', and 'tan' functions require either a dimensionless argument or an argument with dimensions of angle. You have: sin(30 degrees) You want: Definition: 0.5 You have: sin(pi/2) You want: Definition: 1 You have: sin(3 kg) ^ Unit not dimensionless The other functions on the list require dimensionless arguments. The inverse trigonometric functions return arguments with dimensions of angle. The 'ln' and 'log' functions give natural log and log base 10 respec- tively. To obtain logs for any integer base, enter the desired base immediately after 'log'. For example, to get log base 2 you would write 'log2' and to get log base 47 you could write 'log47'. You have: log2(32) You want: Definition: 5 You have: log3(32) You want: Definition: 3.1546488 You have: log4(32) You want: Definition: 2.5 You have: log32(32) You want: Definition: 1 You have: log(32) You want: Definition: 1.50515 You have: log10(32) You want: Definition: 1.50515 If you wish to take roots of units, you may use the 'sqrt' or 'cuberoot' functions. These functions require that the argument have the appropriate root. You can obtain higher roots by using fractional exponents: You have: sqrt(acre) You want: feet * 208.71074 / 0.0047913202 You have: (400 W/m^2 / stefanboltzmann)^(1/4) You have: Definition: 289.80882 K You have: cuberoot(hectare) ^ Unit not a root Previous Result You can insert the result of the previous conversion using the under- score ('_'). It is useful when you want to convert the same input to several different units, for example You have: 2.3 tonrefrigeration You want: btu/hr * 27600 / 3.6231884e-005 You have: _ You want: kW * 8.0887615 / 0.12362832 Suppose you want to do some deep frying that requires an oil depth of 2 inches. You have 1/2 gallon of oil, and want to know the largest- diameter pan that will maintain the required depth. The nonlinear unit 'circlearea' gives the radius of the circle (see Other Nonlinear Units, for a more detailed description) in SI units; you want the diameter in inches: You have: 1|2 gallon / 2 in You want: circlearea 0.10890173 m You have: 2 _ You want: in * 8.5749393 / 0.1166189 In most cases, surrounding white space is optional, so the previous example could have used '2_'. If '_' follows a non-numerical unit sym- bol, however, the space is required: You have: m_ ^ Parse error When '_' is followed by a digit, the operation is multiplication rather than exponentiation, so that '_2', is equivalent to '_ * 2' rather than '_^2'. You can use the '_' symbol any number of times; for example, You have: m You want: Definition: 1 m You have: _ _ You want: Definition: 1 m^2 Using '_' before a conversion has been performed (e.g., immediately after invocation) generates an error: You have: _ ^ No previous result; '_' not set Accordingly, '_' serves no purpose when 'units' is invoked non-interac- tively. If 'units' is invoked with the '--verbose' option (see Invoking Units), the value of '_' is not expanded: You have: mile You want: ft mile = 5280 ft mile = (1 / 0.00018939394) ft You have: _ You want: m _ = 1609.344 m _ = (1 / 0.00062137119) m You can give '_' at the 'You want:' prompt, but it usually is not very useful. Complicated Unit Expressions The 'units' program is especially helpful in ensuring accuracy and dimensional consistency when converting lengthy unit expressions. For example, one form of the Darcy-Weisbach fluid-flow equation is Delta P = (8 / pi)^2 (rho fLQ^2) / d^5, where Delta P is the pressure drop, rho is the mass density, f is the (dimensionless) friction factor, L is the length of the pipe, Q is the volumetric flow rate, and d is the pipe diameter. It might be desired to have the equation in the form Delta P = A1 rho fLQ^2 / d^5 that accepted the user's normal units; for typical units used in the US, the required conversion could be something like You have: (8/pi^2)(lbm/ft^3)ft(ft^3/s)^2(1/in^5) You want: psi * 43.533969 / 0.022970568 The parentheses allow individual terms in the expression to be entered naturally, as they might be read from the formula. Alternatively, the multiplication could be done with the '*' rather than a space; then parentheses are needed only around 'ft^3/s' because of its exponent: You have: 8/pi^2 * lbm/ft^3 * ft * (ft^3/s)^2 /in^5 You want: psi * 43.533969 / 0.022970568 Without parentheses, and using spaces for multiplication, the previous conversion would need to be entered as You have: 8 lb ft ft^3 ft^3 / pi^2 ft^3 s^2 in^5 You want: psi * 43.533969 / 0.022970568 Backwards Compatibility: '*' and '-' The original 'units' assigned multiplication a higher precedence than division using the slash. This differs from the usual precedence rules, which give multiplication and division equal prece- dence, and can be confusing for people who think of units as a calcula- tor. The star operator ('*') included in this 'units' program has, by default, the same precedence as division, and hence follows the usual precedence rules. For backwards compatibility you can invoke 'units' with the '--oldstar' option. Then '*' has a higher precedence than division, and the same precedence as multiplication using the space. Historically, the hyphen ('-') has been used in technical publications to indicate products of units, and the original 'units' program treated it as a multiplication operator. Because 'units' provides several other ways to obtain unit products, and because '-' is a subtraction operator in general algebraic expressions, 'units' treats the binary '-' as a subtraction operator by default. For backwards compatibility use the '--product' option, which causes 'units' to treat the binary '-' operator as a product operator. When '-' is a multiplication oper- ator it has the same precedence as multiplication with a space, giving it a higher precedence than division. When '-' is used as a unary operator it negates its operand. Regard- less of the 'units' options, if '-' appears after '(' or after '+', then it will act as a negation operator. So you can always compute 20 degrees minus 12 minutes by entering '20 degrees + -12 arcmin'. You must use this construction when you define new units because you cannot know what options will be in force when your definition is processed. NONLINEAR UNIT CONVERSIONS Nonlinear units are represented using functional notation. They make possible nonlinear unit conversions such as temperature. Temperature Conversions Conversions between temperatures are different from linear conversions between temperature increments--see the example below. The absolute temperature conversions are handled by units starting with 'temp', and you must use functional notation. The temperature-increment conver- sions are done using units starting with 'deg' and they do not require functional notation. You have: tempF(45) You want: tempC 7.2222222 You have: 45 degF You want: degC * 25 / 0.04 Think of 'tempF(x)' not as a function but as a notation that indicates that x should have units of 'tempF' attached to it. See Defining Non- linear Units. The first conversion shows that if it's 45 degrees Fahrenheit outside, it's 7.2 degrees Celsius. The second conversion indicates that a change of 45 degrees Fahrenheit corresponds to a change of 25 degrees Celsius. The conversion from 'tempF(x)' is to absolute temperature, so that You have: tempF(45) You want: degR * 504.67 / 0.0019814929 gives the same result as You have: tempF(45) You want: tempR * 504.67 / 0.0019814929 But if you convert 'tempF(x)' to 'degC', the output is probably not what you expect: You have: tempF(45) You want: degC * 280.37222 / 0.0035666871 The result is the temperature in K, because 'degC' is defined as 'K', the Kelvin. For consistent results, use the 'tempX' units when convert- ing to a temperature rather than converting a temperature increment. The 'tempC()' and 'tempF()' definitions are limited to positive abso- lute temperatures, and giving a value that would result in a negative absolute temperature generates an error message: You have: tempC(-275) ^ Argument of function outside domain ^ Other Nonlinear Units Some other examples of nonlinear units are numerous different ring sizes and wire gauges, the grit sizes used for abrasives, the decibel scale, shoe size, scales for the density of sugar (e.g., baume). The standard data file also supplies units for computing the area of a cir- cle and the volume of a sphere. See the standard units data file for more details. Wire gauges with multiple zeroes are signified using negative numbers where two zeroes is '-1'. Alternatively, you can use the synonyms 'g00', 'g000', and so on that are defined in the standard units data file. You have: wiregauge(11) You want: inches * 0.090742002 / 11.020255 You have: brwiregauge(g00) You want: inches * 0.348 / 2.8735632 You have: 1 mm You want: wiregauge 18.201919 You have: grit_P(600) You want: grit_ansicoated 342.76923 The last example shows the conversion from P graded sand paper, which is the European standard and may be marked "P600" on the back, to the USA standard. You can compute the area of a circle using the nonlinear unit, 'circlearea'. You can also do this using the circularinch or cir- cleinch. The next example shows two ways to compute the area of a cir- cle with a five inch radius and one way to compute the volume of a sphere with a radius of one meter. You have: circlearea(5 in) You want: in2 * 78.539816 / 0.012732395 You have: 10^2 circleinch You want: in2 * 78.539816 / 0.012732395 You have: spherevol(meter) You want: ft3 * 147.92573 / 0.0067601492 The inverse of a nonlinear conversion is indicated by prefixing a tilde ('~') to the nonlinear unit name: You have: ~wiregauge(0.090742002 inches) You want: Definition: 11 You can give a nonlinear unit definition without an argument or paren- theses, and press Enter at the 'You want:' prompt to get the definition of a nonlinear unit; if the definition is not valid for all real num- bers, the range of validity is also given. If the definition requires specific units this information is also displayed: You have: tempC Definition: tempC(x) = x K + stdtemp defined for x >= -273.15 You have: ~tempC Definition: ~tempC(tempC) = (tempC +(-stdtemp))/K defined for tempC >= 0 K You have: circlearea Definition: circlearea(r) = pi r^2 r has units m To see the definition of the inverse use the '~' notation. In this case the parameter in the functional definition will usually be the name of the unit. Note that the inverse for 'tempC' shows that it requires units of 'K' in the specification of the allowed range of val- ues. Nonlinear unit conversions are described in more detail in Defin- ing Nonlinear Units. UNIT LISTS: CONVERSION TO SUMS OF UNITS Outside of the SI, it is sometimes desirable to convert a single unit to a sum of units--for example, feet to feet plus inches. The conver- sion from sums of units was described in Sums and Differences of Units, and is a simple matter of adding the units with the '+' sign: You have: 12 ft + 3 in + 3|8 in You want: ft * 12.28125 / 0.081424936 Although you can similarly write a sum of units to convert to, the result will not be the conversion to the units in the sum, but rather the conversion to the particular sum that you have entered: You have: 12.28125 ft You want: ft + in + 1|8 in * 11.228571 / 0.089058524 The unit expression given at the 'You want:' prompt is equivalent to asking for conversion to multiples of '1 ft + 1 in + 1|8 in', which is 1.09375 ft, so the conversion in the previous example is equivalent to You have: 12.28125 ft You want: 1.09375 ft * 11.228571 / 0.089058524 In converting to a sum of units like miles, feet and inches, you typi- cally want the largest integral value for the first unit, followed by the largest integral value for the next, and the remainder converted to the last unit. You can do this conversion easily with 'units' using a special syntax for lists of units. You must list the desired units in order from largest to smallest, separated by the semicolon (';') char- acter: You have: 12.28125 ft You want: ft;in;1|8 in 12 ft + 3 in + 3|8 in The conversion always gives integer coefficients on the units in the list, except possibly the last unit when the conversion is not exact: You have: 12.28126 ft You want: ft;in;1|8 in 12 ft + 3 in + 3.00096 * 1|8 in The order in which you list the units is important: You have: 3 kg You want: oz;lb 105 oz + 0.051367866 lb You have: 3 kg You want: lb;oz 6 lb + 9.8218858 oz Listing ounces before pounds produces a technically correct result, but not a very useful one. You must list the units in descending order of size in order to get the most useful result. Ending a unit list with the separator ';' has the same effect as repeating the last unit on the list, so 'ft;in;1|8 in;' is equivalent to 'ft;in;1|8 in;1|8 in'. With the example above, this gives You have: 12.28126 ft You want: ft;in;1|8 in; 12 ft + 3 in + 3|8 in + 0.00096 * 1|8 in in effect separating the integer and fractional parts of the coeffi- cient for the last unit. If you instead prefer to round the last coef- ficient to an integer you can do this with the '--round' ('-r') option. With the previous example, the result is You have: 12.28126 ft You want: ft;in;1|8 in 12 ft + 3 in + 3|8 in (rounded down to nearest 1|8 in) When you use the '-r' option, repeating the last unit on the list has no effect (e.g., 'ft;in;1|8 in;1|8 in' is equivalent to 'ft;in;1|8 in'), and hence neither does ending a list with a ';'. With a single unit and the '-r' option, a terminal ';' does have an effect: it causes 'units' to treat the single unit as a list and produce a rounded value for the single unit. Without the extra ';', the '-r' option has no effect on single unit conversions. This example shows the output using the '-r' option: You have: 12.28126 ft You want: in * 147.37512 / 0.0067854058 You have: 12.28126 ft You want: in; 147 in (rounded down to nearest in) Each unit that appears in the list must be conformable with the first unit on the list, and of course the listed units must also be conform- able with the unit that you enter at the 'You have:' prompt. You have: meter You want: ft;kg ^ conformability error ft = 0.3048 m kg = 1 kg You have: meter You want: lb;oz conformability error 1 m 0.45359237 kg In the first case, 'units' reports the disagreement between units appearing on the list. In the second case, 'units' reports disagree- ment between the unit you entered and the desired conversion. This conformability error is based on the first unit on the unit list. Other common candidates for conversion to sums of units are angles and time: You have: 23.437754 deg You want; deg;arcmin;arcsec 23 deg + 26 arcmin + 15.9144 arcsec You have: 7.2319 hr You want: hr;min;sec 7 hr + 13 min + 54.84 sec In North America, recipes for cooking typically measure ingredients by volume, and use units that are not always convenient multiples of each other. Suppose that you have a recipe for 6 and you wish to make a portion for 1. If the recipe calls for 2 1/2 cups of an ingredient, you might wish to know the measurements in terms of measuring devices you have available, you could use 'units' and enter You have: (2+1|2) cup / 6 You want: cup;1|2 cup;1|3 cup;1|4 cup;tbsp;tsp;1|2 tsp;1|4 tsp 1|3 cup + 1 tbsp + 1 tsp By default, if a unit in a list begins with fraction of the form 1|x and its multiplier is an integer, the fraction is given as the product of the multiplier and the numerator; for example, You have: 12.28125 ft You want: ft;in;1|8 in; 12 ft + 3 in + 3|8 in In many cases, such as the example above, this is what is wanted, but sometimes it is not. For example, a cooking recipe for 6 might call for 5 1/4 cup of an ingredient, but you want a portion for 2, and your 1-cup measure is not available; you might try You have: (5+1|4) cup / 3 You want: 1|2 cup;1|3 cup;1|4 cup 3|2 cup + 1|4 cup This result might be fine for a baker who has a 1 1/2-cup measure (and recognizes the equivalence), but it may not be as useful to someone with more limited set of measures, who does want to do additional cal- culations, and only wants to know "How many 1/2-cup measures to I need to add?" After all, that's what was actually asked. With the '--show- factor' option, the factor will not be combined with a unity numerator, so that you get You have: (5+1|4) cup / 3 You want: 1|2 cup;1|3 cup;1|4 cup 3 * 1|2 cup + 1|4 cup A user-specified fractional unit with a numerator other than 1 is never overridden, however--if a unit list specifies '3|4 cup;1|2 cup', a result equivalent to 1 1/2 cups will always be shown as '2 * 3|4 cup' whether or not the '--show-factor' option is given. Some applications for unit lists may be less obvious. Suppose that you have a postal scale and wish to ensure that it's accurate at 1 oz, but have only metric calibration weights. You might try You have: 1 oz You want: 100 g;50 g; 20 g;10 g;5 g;2 g;1 g; 20 g + 5 g + 2 g + 1 g + 0.34952312 * 1 g You might then place one each of the 20 g, 5 g, 2 g, and 1 g weights on the scale and hope that it indicates close to You have: 20 g + 5 g + 2 g + 1 g You want: oz; 0.98767093 oz Appending ';' to 'oz' forces a one-line display that includes the unit; here the integer part of the result is zero, so it is not displayed. A unit list such as cup;1|2 cup;1|3 cup;1|4 cup;tbsp;tsp;1|2 tsp;1|4 tsp can be tedious to enter. The 'units' program provides shorthand names for some common combinations: hms hours, minutes, seconds dms angle: degrees, minutes, seconds time years, days, hours, minutes and seconds usvol US cooking volume: cups and smaller Using these shorthands, or unit list aliases, you can do the following conversions: You have: anomalisticyear You want: time 1 year + 25 min + 3.4653216 sec You have: 1|6 cup You want: usvol 2 tbsp + 2 tsp You cannot combine a unit list alias with other units: it must appear alone at the 'You want:' prompt. You can display the definition of a unit list alias by entering it at the 'You have:' prompt: You have: dms Definition: unit list, deg;arcmin;arcsec When you specify compact output with '--compact', '--terse' or '-t' and perform conversion to a unit list, 'units' lists the conversion factors for each unit in the list, separated by semicolons. You have: year You want: day;min;sec 365;348;45.974678 Unlike the case of regular output, zeros are included in this output list: You have: liter You want: cup;1|2 cup;1|4 cup;tbsp 4;0;0;3.6280454 USING CGS UNITS The SI--an extension of the MKS (meter-kilogram-second) system--has largely supplanted the older CGS (centimeter-gram-second) system, but CGS units are still used in a few specialized fields, especially in physics where they lead to a more elegant formulation of Maxwell's equations. Conversions between SI and CGS involving mechanical units are straightforward, involving powers of 10 (e.g., 1 m = 100 cm). Con- versions involving electromagnetic units are more complicated, and 'units' supports three different systems of CGS units: electrostatic units (ESU), electromagnetic units (EMU), and the Gaussian system. The differences between these systems arise from different choices made for proportionality constants in electromagnetic equations. Coulomb's law gives electrostatic force between two charges separated by a distance delim $$ r: F = k_C q_1 q_2 / r^2. Ampere's law gives the electromagnetic force per unit length between two current-carrying conductors separated by a distance r: F/l = 2 k_A I_1 I_2 / r. The two constants, k_C and k_A, are related by the square of the speed of light: k_A = k_C / c^2. In the SI, the constants have dimensions, and an additional base unit, the ampere, measures electric current. The CGS systems do not define new base units, but express charge and current as derived units in terms of mass, length, and time. In the ESU system, the constant for Coulomb's law is chosen to be unity and dimensionless, which defines the unit of charge. In the EMU system, the constant for Ampere's law is chosen to be unity and dimensionless, which defines a unit of cur- rent. The Gaussian system usually uses the ESU units for charge and current; it chooses another constant so that the units for the electric and magnetic fields are the same. The dimensions of electrical quantities in the various CGS systems are different from the SI dimensions for the same units; strictly, conver- sions between these systems and SI are not possible. But units in dif- ferent systems relate to the same physical quantities, so there is a correspondence between these units. The 'units' program defines the units so that you can convert between corresponding units in the vari- ous systems. Specifying CGS Units The CGS definitions involve cm^(1/2) and g^(1/2), which is problematic because 'units' does not normally support fractional roots of base units. The '--units' ('-u') option allows selection of a CGS unit sys- tem and works around this restriction by introducing base units for the square roots of length and mass: 'sqrt_cm' and 'sqrt_g'. The centime- ter then becomes 'sqrt_cm^2' and the gram, 'sqrt_g^2'. This allows working from equations using the units in the CGS system, and enforcing dimensional conformity within that system. Recognized arguments to the '--units' option are 'gauss[ian]', 'esu', 'emu', and 'si'; the argument is case insensitive. The default mode for 'units' is SI units; the only effect of giving 'si' with the '--units' option is to prepend '(SI)' to the 'You have:' prompt. Giving an unrecognized system gener- ates a warning, and 'units' uses SI units. The changes resulting from the '--units' option are actually controlled by the 'UNITS_SYSTEM' environment variable. If you frequently work with one of the supported CGS units systems, you may set this environ- ment variable rather than giving the '--units' option at each invoca- tion. As usual, an option given on the command line overrides the set- ting of the environment variable. For example, if you would normally work with Gaussian units but might occasionally work with SI, you could set 'UNITS_SYSTEM' to 'gaussian' and specify SI with the '--units' option. Unlike the argument to the '--units' option, the value of 'UNITS_SYSTEM' is case sensitive, so setting a value of 'EMU' will have no effect other than to give an error message and set SI units. The CGS definitions appear as conditional settings in the standard units data file, which you can consult for more information on how these units are defined, or on how to define an alternate units system. CGS Units Systems The ESU system derives the electromagnetic units from its unit of charge, the statcoulomb, which is defined from Coulomb's law. The statcoulomb equals dyne^(1/2) cm, or cm^(3/2) g^(1/2) s^(-1). The unit of current, the statampere, is statcoulomb sec, analogous to the rela- tionship in SI. Other electrical units are then derived in a manner similar to that for SI units; the units use the SI names prefixed by 'stat-', e.g., 'statvolt' or 'statV'. The prefix 'st-' is also recog- nized (e.g., 'stV'). The EMU system derives the electromagnetic units from its unit of cur- rent, the abampere, which is defined in terms of Ampere's law. The abampere is equal to dyne^(1/2), or cm^(1/2) g^(1/2) s^(-1). delim off The unit of charge, the abcoulomb, is abampere sec, again analogous to the SI relationship. Other electrical units are then derived in a man- ner similar to that for SI units; the units use the SI names prefixed by 'ab-', e.g., 'abvolt' or 'abV'. The magnetic field units include the gauss, the oersted and the maxwell. The Gaussian units system, which was also known as the Symmetric Sys- tem, uses the same charge and current units as the ESU system (e.g., 'statC', 'statA'); it differs by defining the magnetic field so that it has the same units as the electric field. The resulting magnetic field units are the same ones used in the EMU system: the gauss, the oersted and the maxwell. Conversions Between Different Systems The CGS systems define units that measure the same thing but may have conflicting dimensions. Furthermore, the dimensions of the electromag- netic CGS units are never compatible with SI. But if you measure charge in two different systems you have measured the same physical thing, so there is a correspondence between the units in the different systems, and 'units' supports conversions between corresponding units. When running with SI, 'units' defines all of the CGS units in terms of SI. When you select a CGS system, 'units' defines the SI units and the other CGS system units in terms of the system you have selected. (Gaussian) You have: statA You want: abA * 3.335641e-11 / 2.9979246e+10 (Gaussian) You have: abA You want: sqrt(dyne) conformability error 2.9979246e+10 sqrt_cm^3 sqrt_g / s^2 1 sqrt_cm sqrt_g / s In the above example, 'units' converts between the current units statA and abA even though the abA, from the EMU system, has incompatible dimensions. This works because in Gaussian mode, the abA is defined in terms of the statA, so it does not have the correct definition for EMU; consequently, you cannot convert the abA to its EMU definition. One challenge of conversion is that because the CGS system has fewer base units, quantities that have different dimensions in SI may have the same dimension in a CGS system. And yet, they may not have the same conversion factor. For example, the unit for the E field and B fields are the same in the Gaussian system, but the conversion factors to SI are quite different. This means that correct conversion is only possible if you keep track of what quantity is being measured. You cannot convert statV/cm to SI without indicating which type of field the unit measures. To aid in dimensional analysis, 'units' defines various dimension units such as LENGTH, TIME, and CHARGE to be the appropriate dimension in SI. The electromagnetic dimensions such as B_FIELD or E_FIELD may be useful aids both for conversion and dimen- sional analysis in CGS. You can convert them to or from CGS in order to perform SI conversions that in some cases will not work directly due to dimensional incompatibilities. This example shows how the Gaussian system uses the same units for all of the fields, but they all have different conversion factors with SI. (Gaussian) You have: statV/cm You want: E_FIELD * 29979.246 / 3.335641e-05 (Gaussian) You have: statV/cm You want: B_FIELD * 0.0001 / 10000 (Gaussian) You have: statV/cm You want: H_FIELD * 79.577472 / 0.012566371 (Gaussian) You have: statV/cm You want: D_FIELD * 2.6544187e-07 / 3767303.1 The next example shows that the oersted cannot be converted directly to the SI unit of magnetic field, A/m, because the dimensions conflict. We cannot redefine the ampere to make this work because then it would not convert with the statampere. But you can still do this conversion as shown below. (Gaussian) You have: oersted You want: A/m conformability error 1 sqrt_g / s sqrt_cm 29979246 sqrt_cm sqrt_g / s^2 (Gaussian) You have: oersted You want: H_FIELD * 79.577472 / 0.012566371 Prompt Prefix If a unit system is specified with the '--units' option, the selected system's name is prepended to the 'You have:' prompt as a reminder, e.g., (Gaussian) You have: stC You want: Definition: statcoulomb = sqrt(dyne) cm = 1 sqrt_cm^3 sqrt_g / s You can suppressed the prefix by including a line !prompt with no argument in a site or personal units data file. The prompt can be conditionally suppressed by including such a line within '!var' '!endvar' constructs, e.g., !var UNITS_SYSTEM gaussian gauss !prompt !endvar This might be appropriate if you normally use Gaussian units and find the prefix distracting but want to be reminded when you have selected a different CGS system. LOGGING CALCULATIONS The '--log' option allows you to save the results of calculations in a file; this can be useful if you need a permanent record of your work. For example, the fluid-flow conversion in Complicated Unit Expressions, is lengthy, and if you were to use it in designing a piping system, you might want a record of it for the project file. If the interactive session # Conversion factor A1 for pressure drop # dP = A1 rho f L Q^2/d^5 You have: (8/pi^2) (lbm/ft^3)ft(ft^3/s)^2(1/in^5) # Input units You want: psi * 43.533969 / 0.022970568 were logged, the log file would contain ### Log started Fri Oct 02 15:55:35 2015 # Conversion factor A1 for pressure drop # dP = A1 rho f L Q^2/d^5 From: (8/pi^2) (lbm/ft^3)ft(ft^3/s)^2(1/in^5) # Input units To: psi * 43.533969 / 0.022970568 The time is written to the log file when the file is opened. The use of comments can help clarify the meaning of calculations for the log. The log includes conformability errors between the units at the 'You have:' and 'You want:' prompts, but not other errors, includ- ing lack of conformability of items in sums or differences or among items in a unit list. For example, a conversion between zenith angle and elevation angle could involve You have: 90 deg - (5 deg + 22 min + 9 sec) ^ Illegal sum or difference of non-conformable units You have: 90 deg - (5 deg + 22 arcmin + 9 arcsec) You want: dms 84 deg + 37 arcmin + 51 arcsec You have: _ You want: deg * 84.630833 / 0.011816024 You have: The log file would contain From: 90 deg - (5 deg + 22 arcmin + 9 arcsec) To: deg;arcmin;arcsec 84 deg + 37 arcmin + 51 arcsec From: _ To: deg * 84.630833 / 0.011816024 The initial entry error (forgetting that minutes have dimension of time, and that arcminutes must be used for dimensions of angle) does not appear in the output. When converting to a unit list alias, 'units' expands the alias in the log file. The 'From:' and 'To:' tags are written to the log file even if the '--quiet' option is given. If the log file exists when 'units' is invoked, the new results are appended to the log file. The time is written to the log file each time the file is opened. The '--log' option is ignored when 'units' is used non-interactively. INVOKING UNITS You invoke 'units' like this: units [options] [from-unit [to-unit]] If the from-unit and to-unit are omitted, the program will use interac- tive prompts to determine which conversions to perform. See Interac- tive Use. If both from-unit and to-unit are given, 'units' will print the result of that single conversion and then exit. If only from-unit appears on the command line, 'units' will display the definition of that unit and exit. Units specified on the command line may need to be quoted to protect them from shell interpretation and to group them into two arguments. Note also that the '--quiet' option is enabled by default if you specify from-unit on the command line. See Command Line Use. The default behavior of 'units' can be changed by various options given on the command line. In most cases, the options may be given in either short form (a single '-' followed by a single character) or long form ('--' followed by a word or hyphen-separated words). Short-form options are cryptic but require less typing; long-form options require more typing but are more explanatory and may be more mnemonic. With long-form options you need only enter sufficient characters to uniquely identify the option to the program. For example, '--out %f' works, but '--o %f' fails because 'units' has other long options beginning with 'o'. However, '--q' works because '--quiet' is the only long option beginning with 'q'. Some options require arguments to specify a value (e.g., '-d 12' or '--digits 12'). Short-form options that do not take arguments may be concatenated (e.g., '-erS' is equivalent to '-e -r -S'); the last option in such a list may be one that takes an argument (e.g., '-ed 12'). With short-form options, the space between an option and its argument is optional (e.g., '-d12' is equivalent to '-d 12'). Long-form options may not be concatenated, and the space between a long-form option and its argument is required. Short-form and long- form options may be intermixed on the command line. Options may be given in any order, but when incompatible options (e.g., '--output- format' and '--exponential') are given in combination, behavior is con- trolled by the last option given. For example, '-o%.12f -e' gives exponential format with the default eight significant digits). The following options are available: -c, --check Check that all units and prefixes defined in the units data file reduce to primitive units. Print a list of all units that can- not be reduced. Also display some other diagnostics about sus- picious definitions in the units data file. Only definitions active in the current locale are checked. You should always run 'units' with this option after modifying a units data file. --check-verbose, --verbose-check Like the '--check' option, this option prints a list of units that cannot be reduced. But to help find unit definitions that cause endless loops, it lists the units as they are checked. If 'units' hangs, then the last unit to be printed has a bad defi- nition. Only definitions active in the current locale are checked. -d ndigits, --digits ndigits Set the number of significant digits in the output to the value specified (which must be greater than zero). For example, '-d 12' sets the number of significant digits to 12. With expo- nential output 'units' displays one digit to the left of the decimal point and eleven digits to the right of the decimal point. On most systems, the maximum number of internally mean- ingful digits is 15; if you specify a greater number than your system's maximum, 'units' will print a warning and set the num- ber to the largest meaningful value. To directly set the maxi- mum value, give an argument of 'max' (e.g., '-d max'). Be aware, of course, that "significant" here refers only to the display of numbers; if results depend on physical constants not known to this precision, the physically meaningful precision may be less than that shown. The '--digits' option conflicts with the '--output-format' option. -e, --exponential Set the numeric output format to exponential (i.e., scientific notation), like that used in the Unix 'units' program. The default precision is eight significant digits (seven digits to the right of the decimal point); this can be changed with the '--digits' option. The '--exponential' option conflicts with the '--output-format' option. -o format, --output-format format This option affords complete control over the numeric output format using the specified format. The format is a single float- ing point numeric format for the 'printf()' function in the C programming language. All compilers support the format types 'g' and 'G' to specify significant digits, 'e' and 'E' for sci- entific notation, and 'f' for fixed-point decimal. The ISO C99 standard introduced the 'F' type for fixed-point decimal and the 'a' and 'A' types for hexadecimal floating point; these types are allowed with compilers that support them. The default for- mat is '%.8g'; for greater precision, you could specify '-o %.15g'. See Numeric Output Format and the documentation for 'printf()' for more detailed descriptions of the format specifi- cation. The '--output-format' option affords the greatest con- trol of the output appearance, but requires at least rudimentary knowledge of the 'printf()' format syntax. If you don't want to bother with the 'printf()' syntax, you can specify greater pre- cision more simply with the '--digits' option or select exponen- tial format with '--exponential'. The '--output-format' option is incompatible with the '--exponential' and '--digits' options. -f filename, --file filename Instruct 'units' to load the units file filename. You can spec- ify up to 25 units files on the command line. When you use this option, 'units' will load only the files you list on the command line; it will not load the standard file or your personal units file unless you explicitly list them. If filename is the empty string ('-f ""'), the default units file (or that specified by 'UNITSFILE') will be loaded in addition to any others specified with '-f'. -L logfile, --log logfile Save the results of calculations in the file logfile; this can be useful if it is important to have a record of unit conver- sions or other calculations that are to be used extensively or in a critical activity such as a program or design project. If logfile exits, the new results are appended to the file. This option is ignored when 'units' is used non-interactively. See Logging Calculations for a more detailed description and some examples. -H filename, --history filename Instruct 'units' to save history to filename, so that a record of your commands is available for retrieval across different 'units' invocations. To prevent the history from being saved set filename to the empty string ('-H ""'). This option has no effect if readline is not available. -h, --help Print out a summary of the options for 'units'. -m, --minus Causes '-' to be interpreted as a subtraction operator. This is the default behavior. -p, --product Causes '-' to be interpreted as a multiplication operator when it has two operands. It will act as a negation operator when it has only one operand: '(-3)'. By default '-' is treated as a subtraction operator. --oldstar Causes '*' to have the old-style precedence, higher than the precedence of division so that '1/2*3' will equal '1/6'. --newstar Forces '*' to have the new (default) precedence that follows the usual rules of algebra: the precedence of '*' is the same as the precedence of '/', so that '1/2*3' will equal '3/2'. -r, --round When converting to a combination of units given by a unit list, round the value of the last unit in the list to the nearest integer. -S, --show-factor When converting to a combination of units specified in a list, always show a non-unity factor before a unit that begins with a fraction with a unity denominator. By default, if the unit in a list begins with fraction of the form 1|x and its multiplier is an integer other than 1, the fraction is given as the product of the multiplier and the numerator (e.g., '3|8 in' rather than '3 * 1|8 in'). In some cases, this is not what is wanted; for example, the results for a cooking recipe might show '3 * 1|2 cup' as '3|2 cup'. With the '--show-factor' option, a result equivalent to 1.5 cups will display as '3 * 1|2 cup' rather than '3|2 cup'. A user-specified fractional unit with a numerator other than 1 is never overridden, however--if a unit list specifies '3|4 cup;1|2 cup', a result equivalent to 1 1/2 cups will always be shown as '2 * 3|4 cup' whether or not the '--show-factor' option is given. -v, --verbose Give slightly more verbose output when converting units. When combined with the '-c' option this gives the same effect as '--check-verbose'. When combined with '--version' produces a more detailed output, equivalent to the '--info' option. -V, --version Print the program version number, tell whether the 'readline' library has been included, tell whether UTF-8 support has been included; give the locale, the location of the default units data file, and the location of the personal units data file; indicate if the personal units data file does not exist. When given in combination with the '--terse' option, the program prints only the version number and exits. When given in combination with the '--verbose' option, the pro- gram, the '--version' option has the same effect as the '--info' option below. -I, --info Print the information given with the '--version' option, show the pathname of the units program, show the status of the 'UNITSFILE' and 'MYUNITSFILE' environment variables, and addi- tional information about how 'units' locates the related files. On systems running Microsoft Windows, the status of the 'UNITSLOCALE' environment variable and information about the related locale map are also given. This option is usually of interest only to developers and administrators, but it can some- times be useful for troubleshooting. Combining the '--version' and '--verbose' options has the same effect as giving '--info'. -U, --unitsfile Print the location of the default units data file and exit; if the file cannot be found, print "Units data file not found". -u (gauss[ian]|esu|emu), --units (gauss[ian]|esu|emu) Specify a CGS units system: Gaussian, ESU, or EMU. -l locale, --locale locale Force a specified locale such as 'en_GB' to get British defini- tions by default. This overrides the locale determined from system settings or environment variables. See Locale for a description of locale format. -n, --nolists Disable conversion to unit lists. -s, --strict Suppress conversion of units to their reciprocal units. For example, 'units' will normally convert hertz to seconds because these units are reciprocals of each other. The strict option requires that units be strictly conformable to perform a conver- sion, and will give an error if you attempt to convert hertz to seconds. -1, --one-line Give only one line of output (the forward conversion); do not print the reverse conversion. If a reciprocal conversion is performed, then 'units' will still print the "reciprocal conver- sion" line. -t, --terse Print only a single conversion factor. This option can be used when calling 'units' from another program so that the output is easy to parse. This option has the combined effect of these options: '--strict' '--quiet' '--one-line' '--compact'. When combined with '--version' it produces a display showing only the program name and version number. --compact Give compact output featuring only the conversion factor; the multiplication and division signs are not shown, and there is no leading whitespace. If you convert to a unit list, then the output is a semicolon separated list of factors. This turns off the '--verbose' option. -q, --quiet, --silent Suppress the display of statistics about the number of units loaded, any messages printed by the units database, and the prompting of the user for units. This option does not affect how 'units' displays the results. This option is turned on by default if you invoke 'units' with a unit expression on the com- mand line. OUTPUT STYLES The output can be tweaked in various ways using command line options. With no options, the output looks like this $ units Currency exchange rates from FloatRates (USD base) on 2019-02-20 3070 units, 109 prefixes, 109 nonlinear units You have: 23ft You want: m * 7.0104 / 0.14264521 You have: m You want: ft;in 3 ft + 3.3700787 in This is arguably a bit cryptic; the '--verbose' option makes clear what the output means: $ units --verbose Currency exchange rates from FloatRates (USD base) on 2019-02-20 3070 units, 109 prefixes, 109 nonlinear units You have: 23 ft You want: m 23 ft = 7.0104 m 23 ft = (1 / 0.14264521) m You have: meter You want: ft;in meter = 3 ft + 3.3700787 in The '--quiet' option suppresses the clutter displayed when 'units' starts, as well as the prompts to the user. This option is enabled by default when you give units on the command line. $ units --quiet 23 ft m * 7.0104 / 0.14264521 $ units 23ft m * 7.0104 / 0.14264521 The remaining style options allow you to display only numerical values without the tab or the multiplication and division signs, or to display just a single line showing the forward conversion: $ units --compact 23ft m 7.0104 0.14264521 $ units --compact m 'ft;in' 3;3.3700787 $ units --one-line 23ft m * 7.0104 $ units --one-line 23ft 1/m reciprocal conversion * 0.14264521 $ units --one-line 23ft kg conformability error 7.0104 m 1 kg Note that when converting to a unit list, the '--compact' option dis- plays a semicolon separated list of results. Also be aware that the 'one-line' option doesn't live up to its name if you execute a recipro- cal conversion or if you get a conformability error. The former case can be prevented using the '--strict' option, which suppresses recipro- cal conversions. Similarly you can suppress unit list conversion using '--nolists'. It is impossible to prevent the three line error output. $ units --compact --nolists m 'ft;in' Error in 'ft;in': Parse error $ units --one-line --strict 23ft 1/m The various style options can be combined appropriately. The ultimate combination is the '--terse' option, which combines '--strict', '--quiet', '--one-line', and '--compact' to produce the minimal output, just a single number for regular conversions and a semicolon separated list for conversion to unit lists. This will likely be the best choice for programs that want to call 'units' and then process its result. $ units --terse 23ft m 7.0104 $ units --terse m 'ft;in' 3;3.3700787 $ units --terse 23ft 1/m conformability error 7.0104 m 1 / m ADDING YOUR OWN DEFINITIONS Units Data Files The units and prefixes that 'units' can convert are defined in the units data file, typically '/usr/share/units/definitions.units'. If you can't find this file, run 'units --version' to get information on the file locations for your installation. Although you can extend or modify this data file if you have appropriate user privileges, it's usually better to put extensions in separate files so that the defini- tions will be preserved if you update 'units'. You can include additional data files in the units database using the '!include' command in the standard units data file. For example !include /usr/local/share/units/local.units might be appropriate for a site-wide supplemental data file. The loca- tion of the '!include' statement in the standard units data file is important; later definitions replace earlier ones, so any definitions in an included file will override definitions before the '!include' statement in the standard units data file. With normal invocation, no warning is given about redefinitions; to ensure that you don't have an unintended redefinition, run 'units -c' after making changes to any units data file. If you want to add your own units in addition to or in place of stan- dard or site-wide supplemental units data files, you can include them in the '.units' file in your home directory. If this file exists it is read after the standard units data file, so that any definitions in this file will replace definitions of the same units in the standard data file or in files included from the standard data file. This file will not be read if any units files are specified on the command line. (Under Windows the personal units file is named 'unitdef.units'.) Run- ning 'units -V' will display the location and name of your personal units file. The 'units' program first tries to determine your home directory from the 'HOME' environment variable. On systems running Microsoft Windows, if 'HOME' does not exist, 'units' attempts to find your home directory from 'HOMEDRIVE', 'HOMEPATH' and 'USERPROFILE'. You can specify an arbitrary file as your personal units data file with the 'MYUNITSFILE' environment variable; if this variable exists, its value is used with- out searching your home directory. The default units data files are described in more detail in Data Files. Defining New Units and Prefixes A unit is specified on a single line by giving its name and an equiva- lence. Comments start with a '#' character, which can appear anywhere in a line. The backslash character ('\') acts as a continuation char- acter if it appears as the last character on a line, making it possible to spread definitions out over several lines if desired. A file can be included by giving the command '!include' followed by the file's name. The '!' must be the first character on the line. The file will be sought in the same directory as the parent file unless you give a full path. The name of the file to be included cannot contain spaces or the comment character '#'. Unit names must not contain any of the operator characters '+', '-', '*', '/', '|', '^', ';', '~', the comment character '#', or parenthe- ses. They cannot begin or end with an underscore ('_'), a comma (',') or a decimal point ('.'). The figure dash (U+2012), typographical minus ('-'; U+2212), and en dash ('-'; U+2013) are converted to the operator '-', so none of these characters can appear in unit names. Names cannot begin with a digit, and if a name ends in a digit other than zero, the digit must be preceded by a string beginning with an underscore, and afterwards consisting only of digits, decimal points, or commas. For example, 'foo_2', 'foo_2,1', or 'foo_3.14' are valid names but 'foo2' or 'foo_a2' are invalid. You could define nitrous oxide as N2O nitrogen 2 + oxygen but would need to define nitrogen dioxide as NO_2 nitrogen + oxygen 2 Be careful to define new units in terms of old ones so that a reduction leads to the primitive units, which are marked with '!' characters. Dimensionless units are indicated by using the string '!dimensionless' for the unit definition. When adding new units, be sure to use the '-c' option to check that the new units reduce properly. If you create a loop in the units defini- tions, then 'units' will hang when invoked with the '-c' option. You will need to use the '--check-verbose' option, which prints out each unit as it is checked. The program will still hang, but the last unit printed will be the unit that caused the infinite loop. If you define any units that contain '+' characters in their defini- tions, carefully check them because the '-c' option will not catch non- conformable sums. Be careful with the '-' operator as well. When used as a binary operator, the '-' character can perform addition or multi- plication depending on the options used to invoke 'units'. To ensure consistent behavior use '-' only as a unary negation operator when writing units definitions. To multiply two units leave a space or use the '*' operator with care, recalling that it has two possible prece- dence values and may require parentheses to ensure consistent behavior. To compute the difference of 'foo' and 'bar' write 'foo+(-bar)' or even 'foo+-bar'. You may wish to intentionally redefine a unit. When you do this, and use the '-c' option, 'units' displays a warning message about the redefinition. You can suppress these warnings by redefining a unit using a '+' at the beginning of the unit name. Do not include any white space between the '+' and the redefined unit name. Here is an example of a short data file that defines some basic units: m ! # The meter is a primitive unit sec ! # The second is a primitive unit rad !dimensionless # A dimensionless primitive unit micro- 1e-6 # Define a prefix minute 60 sec # A minute is 60 seconds hour 60 min # An hour is 60 minutes inch 72 m # Inch defined incorrectly terms of meters ft 12 inches # The foot defined in terms of inches mile 5280 ft # And the mile +inch 0.0254 m # Correct redefinition, warning suppressed A unit that ends with a '-' character is a prefix. If a prefix defini- tion contains any '/' characters, be sure they are protected by paren- theses. If you define 'half- 1/2', then 'halfmeter' would be equiva- lent to '1 / (2 meter)'. Defining Nonlinear Units Some unit conversions of interest are nonlinear; for example, tempera- ture conversions between the Fahrenheit and Celsius scales cannot be done by simply multiplying by conversion factors. When you give a linear unit definition such as 'inch 2.54 cm' you are providing information that 'units' uses to convert values in inches into primitive units of meters. For nonlinear units, you give a func- tional definition that provides the same information. Nonlinear units are represented using a functional notation. It is best to regard this notation not as a function call but as a way of adding units to a number, much the same way that writing a linear unit name after a number adds units to that number. Internally, nonlinear units are defined by a pair of functions that convert to and from lin- ear units in the database, so that an eventual conversion to primitive units is possible. Here is an example nonlinear unit definition: tempF(x) units=[1;K] domain=[-459.67,) range=[0,) \ (x+(-32)) degF + stdtemp ; (tempF+(-stdtemp))/degF + 32 A nonlinear unit definition comprises a unit name, a formal parameter name, two functions, and optional specifications for units, the domain, and the range (the domain of the inverse function). The functions tell 'units' how to convert to and from the new unit. To produce valid results, the arguments of these functions need to have the correct dimensions and be within the domains for which the functions are defined. The definition begins with the unit name followed immediately (with no spaces) by a '(' character. In the parentheses is the name of the for- mal parameter. Next is an optional specification of the units required by the functions in the definition. In the example above, the 'units=[1;K]' specification indicates that the 'tempF' function requires an input argument conformable with '1' (i.e., the argument is dimensionless), and that the inverse function requires an input argu- ment conformable with 'K'. For normal nonlinear units definition, the forward function will always take a dimensionless argument; in general, the inverse function will need units that match the quantity measured by your nonlinear unit. Specifying the units enables 'units' to per- form error checking on function arguments, and also to assign units to domain and range specifications, which are described later. Next the function definitions appear. In the example above, the 'tempF' function is defined by tempF(x) = (x+(-32)) degF + stdtemp This gives a rule for converting 'x' in the units 'tempF' to linear units of absolute temperature, which makes it possible to convert from tempF to other units. To enable conversions to Fahrenheit, you must give a rule for the inverse conversions. The inverse will be 'x(tempF)' and its definition appears after a ';' character. In our example, the inverse is x(tempF) = (tempF+(-stdtemp))/degF + 32 This inverse definition takes an absolute temperature as its argument and converts it to the Fahrenheit temperature. The inverse can be omitted by leaving out the ';' character and the inverse definition, but then conversions to the unit will not be possible. If the inverse definition is omitted, the '--check' option will display a warning. It is up to you to calculate and enter the correct inverse function to obtain proper conversions; the '--check' option tests the inverse at one point and prints an error if it is not valid there, but this is not a guarantee that your inverse is correct. With some definitions, the units may vary. For example, the definition square(x) x^2 can have any arbitrary units, and can also take dimensionless argu- ments. In such a case, you should not specify units. If a definition takes a root of its arguments, the definition is valid only for units that yield such a root. For example, squirt(x) sqrt(x) is valid for a dimensionless argument, and for arguments with even pow- ers of units. Some definitions may not be valid for all real numbers. In such cases, 'units' can handle errors better if you specify an appropriate domain and range. You specify the domain and range as shown below: baume(d) units=[1;g/cm^3] domain=[0,130.5] range=[1,10] \ (145/(145-d)) g/cm^3 ; (baume+-g/cm^3) 145 / baume In this example the domain is specified after 'domain=' with the end- points given in brackets. In accord with mathematical convention, square brackets indicate a closed interval (one that includes its end- points), and parentheses indicate an open interval (one that does not include its endpoints). An interval can be open or closed on one or both ends; an interval that is unbounded on either end is indicated by omitting the limit on that end. For example, a quantity to which deci- bel (dB) is applied may have any value greater than zero, so the range is indicated by '(0,)': decibel(x) units=[1;1] range=(0,) 10^(x/10); 10 log(decibel) If the domain or range is given, the second endpoint must be greater than the first. The domain and range specifications can appear independently and in any order along with the units specification. The values for the domain and range endpoints are attached to the units given in the units speci- fication, and if necessary, the parameter value is adjusted for compar- ison with the endpoints. For example, if a definition includes 'units=[1;ft]' and 'range=[3,)', the range will be taken as 3 ft to infinity. If the function is passed a parameter of '900 mm', that value will be adjusted to 2.9527559 ft, which is outside the specified range. If you omit the units specification from the previous example, 'units' can not tell whether you intend the lower endpoint to be 3 ft or 3 microfurlongs, and can not adjust the parameter value of 900 mm for comparison. Without units, numerical values other than zero or plus or minus infinity for domain or range endpoints are meaningless, and accordingly they are not allowed. If you give other values without units, then the definition will be ignored and you will get an error message. Although the units, domain, and range specifications are optional, it's best to give them when they are applicable; doing so allows 'units' to perform better error checking and give more helpful error messages. Giving the domain and range also enables the '--check' option to find a point in the domain to use for its point check of your inverse defini- tion. You can make synonyms for nonlinear units by providing both the forward and inverse functions; inverse functions can be obtained using the '~' operator. So to create a synonym for 'tempF' you could write fahrenheit(x) units=[1;K] tempF(x); ~tempF(fahrenheit) This is useful for creating a nonlinear unit definition that differs slightly from an existing definition without having to repeat the orig- inal functions. For example, dBW(x) units=[1;W] range=[0,) dB(x) W ; ~dB(dBW/W) If you wish a synonym to refer to an existing nonlinear unit without modification, you can do so more simply by adding the synonym with appended parentheses as a new unit, with the existing nonlinear unit-- without parentheses--as the definition. So to create a synonym for 'tempF' you could write fahrenheit() tempF The definition must be a nonlinear unit; for example, the synonym fahrenheit() meter will result in an error message when 'units' starts. You may occasionally wish to define a function that operates on units. This can be done using a nonlinear unit definition. For example, the definition below provides conversion between radius and the area of a circle. This definition requires a length as input and produces an area as output, as indicated by the 'units=' specification. Specifying the range as the nonnegative numbers can prevent cryptic error mes- sages. circlearea(r) units=[m;m^2] range=[0,) pi r^2 ; sqrt(circlearea/pi) Defining Piecewise Linear Units Sometimes you may be interested in a piecewise linear unit such as many wire gauges. Piecewise linear units can be defined by specifying con- versions to linear units on a list of points. Conversion at other points will be done by linear interpolation. A partial definition of zinc gauge is zincgauge[in] 1 0.002, 10 0.02, 15 0.04, 19 0.06, 23 0.1 In this example, 'zincgauge' is the name of the piecewise linear unit. The definition of such a unit is indicated by the embedded '[' charac- ter. After the bracket, you should indicate the units to be attached to the numbers in the table. No spaces can appear before the ']' char- acter, so a definition like 'foo[kg meters]' is invalid; instead write 'foo[kg*meters]'. The definition of the unit consists of a list of pairs optionally separated by commas. This list defines a function for converting from the piecewise linear unit to linear units. The first item in each pair is the function argument; the second item is the value of the function at that argument (in the units specified in brackets). In this example, we define 'zincgauge' at five points. For example, we set 'zincgauge(1)' equal to '0.002 in'. Definitions like this may be more readable if written using continuation characters as zincgauge[in] \ 1 0.002 \ 10 0.02 \ 15 0.04 \ 19 0.06 \ 23 0.1 With the preceding definition, the following conversion can be per- formed: You have: zincgauge(10) You want: in * 0.02 / 50 You have: .01 inch You want: zincgauge 5 If you define a piecewise linear unit that is not strictly monotonic, then the inverse will not be well defined. If the inverse is requested for such a unit, 'units' will return the smallest inverse. After adding nonlinear units definitions, you should normally run 'units --check' to check for errors. If the 'units' keyword is not given, the '--check' option checks a nonlinear unit definition using a dimensionless argument, and then checks using an arbitrary combination of units, as well as the square and cube of that combination; a warning is given if any of these tests fail. For example, Warning: function 'squirt(x)' defined as 'sqrt(x)' failed for some test inputs: squirt(7(kg K)^1): Unit not a root squirt(7(kg K)^3): Unit not a root Running 'units --check' will print a warning if a non-monotonic piece- wise linear unit is encountered. For example, the relationship between ANSI coated abrasive designation and mean particle size is non-mono- tonic in the vicinity of 800 grit: ansicoated[micron] \ . . . 600 10.55 \ 800 11.5 \ 1000 9.5 \ Running 'units --check' would give the error message Table 'ansicoated' lacks unique inverse around entry 800 Although the inverse is not well defined in this region, it's not really an error. Viewing such error messages can be tedious, and if there are enough of them, they can distract from true errors. Error checking for nonlinear unit definitions can be suppressed by giving the 'noerror' keyword; for the examples above, this could be done as squirt(x) noerror domain=[0,) range=[0,) sqrt(x); squirt^2 ansicoated[micron] noerror \ . . . Use the 'noerror' keyword with caution. The safest approach after adding a nonlinear unit definition is to run 'units --check' and con- firm that there are no actual errors before adding the 'noerror' key- word. Defining Unit List Aliases Unit list aliases are treated differently from unit definitions, because they are a data entry shorthand rather than a true definition for a new unit. A unit list alias definition begins with '!unitlist' and includes the alias and the definition; for example, the aliases included in the standard units data file are !unitlist hms hr;min;sec !unitlist time year;day;hr;min;sec !unitlist dms deg;arcmin;arcsec !unitlist ftin ft;in;1|8 in !unitlist usvol cup;3|4 cup;2|3 cup;1|2 cup;1|3 cup;1|4 cup;\ tbsp;tsp;1|2 tsp;1|4 tsp;1|8 tsp Unit list aliases are only for unit lists, so the definition must include a ';'. Unit list aliases can never be combined with units or other unit list aliases, so the definition of 'time' shown above could not have been shortened to 'year;day;hms'. As usual, be sure to run 'units --check' to ensure that the units listed in unit list aliases are conformable. NUMERIC OUTPUT FORMAT By default, 'units' shows results to eight significant digits. You can change this with the '--exponential', '--digits', and '--output-format' options. The first sets an exponential format (i.e., scientific nota- tion) like that used in the original Unix 'units' program, the second allows you to specify a different number of significant digits, and the last allows you to control the output appearance using the format for the 'printf()' function in the C programming language. If you only want to change the number of significant digits or specify exponential format type, use the '--digits' and '--exponential' options. The '--output-format' option affords the greatest control of the output appearance, but requires at least rudimentary knowledge of the 'printf()' format syntax. See Invoking Units for descriptions of these options. Format Specification The format specification recognized with the '--output-format' option is a subset of that for 'printf()'. The format specification has the form '%'[flags][width]['.'precision]type; it must begin with '%', and must end with a floating-point type specifier: 'g' or 'G' to specify the number of significant digits, 'e' or 'E' for scientific notation, and 'f' for fixed-point decimal. The ISO C99 standard added the 'F' type for fixed-point decimal and the 'a' and 'A' types for hexadecimal floating point; these types are allowed with compilers that support them. Type length modifiers (e.g., 'L' to indicate a long double) are inapplicable and are not allowed. The default format for 'units' is '%.8g'; for greater precision, you could specify '-o %.15g'. The 'g' and 'G' format types use exponential format whenever the exponent would be less than -4, so the value 0.000013 displays as '1.3e-005'. These types also use exponential notation when the exponent is greater than or equal to the precision, so with the default format, the value 5e7 displays as '50000000' and the value 5e8 displays as '5e+008'. If you prefer fixed-point display, you might specify '-o %.8f'; however, small numbers will display very few significant digits, and values less than 0.5e-8 will show nothing but zeros. The format specification may include one or more optional flags: '+', ' ' (space), '#', '-', or '0' (the digit zero). The digit-grouping flag ''' is allowed with compilers that support it. Flags are followed by an optional value for the minimum field width, and an optional pre- cision specification that begins with a period (e.g., '.6'). The field width includes the digits, decimal point, the exponent, thousands sepa- rators (with the digit-grouping flag), and the sign if any of these are shown. Flags The '+' flag causes the output to have a sign ('+' or '-'). The space flag ' ' is similar to the '+' flag, except that when the value is pos- itive, it is prefixed with a space rather than a plus sign; this flag is ignored if the '+' flag is also given. The '+' or ' ' flag could be useful if conversions might include positive and negative results, and you wanted to align the decimal points in exponential notation. The '#' flag causes the output value to contain a decimal point in all cases; by default, the output contains a decimal point only if there are digits (which can be trailing zeros) to the right of the point. With the 'g' or 'G' types, the '#' flag also prevents the suppression of trailing zeros. The digit-grouping flag ''' shows a thousands sepa- rator in digits to the left of the decimal point. This can be useful when displaying large numbers in fixed-point decimal; for example, with the format '%f', You have: mile You want: microfurlong * 8000000.000000 / 0.000000 the magnitude of the first result may not be immediately obvious with- out counting the digits to the left of the decimal point. If the thou- sands separator is the comma (','), the output with the format '%'f' might be You have: mile You want: microfurlong * 8,000,000.000000 / 0.000000 making the magnitude readily apparent. Unfortunately, few compilers support the digit-grouping flag. With the '-' flag, the output value is left aligned within the speci- fied field width. If a field width greater than needed to show the output value is specified, the '0' (zero) flag causes the output value to be left padded with zeros until the specified field width is reached; for example, with the format '%011.6f', You have: troypound You want: grain * 5760.000000 / 0000.000174 The '0' flag has no effect if the '-' (left align) flag is given. Field Width By default, the output value is left aligned and shown with the minimum width necessary for the specified (or default) precision. If a field width greater than this is specified, the value shown is right aligned, and padded on the left with enough spaces to provide the specified field width. A width specification is typically used with fixed-point decimal to have columns of numbers align at the decimal point; this arguably is less useful with 'units' than with long columnar output, but it may nonetheless assist in quickly assessing the relative magni- tudes of results. For example, with the format '%12.6f', You have: km You want: in * 39370.078740 / 0.000025 You have: km You want: rod * 198.838782 / 0.005029 You have: km You want: furlong * 4.970970 / 0.201168 Precision The meaning of "precision" depends on the format type. With 'g' or 'G', it specifies the number of significant digits (like the '--digits' option); with 'e', 'E', 'f', or 'F', it specifies the maximum number of digits to be shown after the decimal point. With the 'g' and 'G' format types, trailing zeros are suppressed, so the results may sometimes have fewer digits than the specified preci- sion (as indicated above, the '#' flag causes trailing zeros to be dis- played). The default precision is 6, so '%g' is equivalent to '%.6g', and would show the output to six significant digits. Similarly, '%e' or '%f' would show the output with six digits after the decimal point. The C 'printf()' function allows a precision of arbitrary size, whether or not all of the digits are meaningful. With most compilers, the max- imum internal precision with 'units' is 15 decimal digits (or 13 hexa- decimal digits). With the '--digits' option, you are limited to the maximum internal precision; with the '--output-format' option, you may specify a precision greater than this, but it may not be meaningful. In some cases, specifying excess precision can result in rounding arti- facts. For example, a pound is exactly 7000 grains, but with the for- mat '%.18g', the output might be You have: pound You want: grain * 6999.9999999999991 / 0.00014285714285714287 With the format '%.25g' you might get the following: You have: 1/3 You want: Definition: 0.333333333333333314829616256247 In this case the displayed value includes a series of digits that rep- resent the underlying binary floating-point approximation to 1/3 but are not meaningful for the desired computation. In general, the result with excess precision is system dependent. The precision affects only the display of numbers; if a result relies on physical constants that are not known to the specified precision, the number of physically meaningful digits may be less than the number of digits shown. See the documentation for 'printf()' for more detailed descriptions of the format specification. The '--output-format' option is incompatible with the '--exponential' or '--digits' options; if the former is given in combination with either of the latter, the format is controlled by the last option given. LOCALIZATION Some units have different values in different locations. The localiza- tion feature accommodates this by allowing a units data file to specify definitions that depend on the user's locale. Locale A locale is a subset of a user's environment that indicates the user's language and country, and some attendant preferences, such as the for- matting of dates. The 'units' program attempts to determine the locale from the POSIX setlocale function; if this cannot be done, 'units' examines the environment variables 'LC_CTYPE' and 'LANG'. On POSIX systems, a locale is of the form language'_'country, where language is the two-character code from ISO 639-1 and country is the two-character code from ISO 3166-1; language is lower case and country is upper case. For example, the POSIX locale for the United Kingdom is 'en_GB'. On systems running Microsoft Windows, the value returned by setlocale() is different from that on POSIX systems; 'units' attempts to map the Windows value to a POSIX value by means of a table in the file 'locale_map.txt' in the same directory as the other data files. The file includes entries for many combinations of language and country, and can be extended to include other combinations. The 'locale_map.txt' file comprises two tab-separated columns; each entry is of the form Windows-locale POSIX-locale where POSIX-locale is as described above, and Windows-locale typically spells out both the language and country. For example, the entry for the United States is English_United States en_US You can force 'units' to run in a desired locale by using the '-l' option. In order to create unit definitions for a particular locale you begin a block of definitions in a unit datafile with '!locale' followed by a locale name. The '!' must be the first character on the line. The 'units' program reads the following definitions only if the current locale matches. You end the block of localized units with '!endlocale'. Here is an example, which defines the British gallon. !locale en_GB gallon 4.54609 liter !endlocale Additional Localization Sometimes the locale isn't sufficient to determine unit preferences. There could be regional preferences, or a company could have specific preferences. Though probably uncommon, such differences could arise with the choice of English customary units outside of English-speaking countries. To address this, 'units' allows specifying definitions that depend on environment variable settings. The environment variables can be controled based on the current locale, or the user can set them to force a particular group of definitions. A conditional block of definitions in a units data file begins with either '!var' or '!varnot' following by an environment variable name and then a space separated list of values. The leading '!' must appear in the first column of a units data file, and the conditional block is terminated by '!endvar'. Definitions in blocks beginning with '!var' are executed only if the environment variable is exactly equal to one of the listed values. Definitions in blocks beginning with '!varnot' are executed only if the environment variable does not equal any of the list values. The inch has long been a customary measure of length in many places. The word comes from the Latin uncia meaning "one twelfth," referring to its relationship with the foot. By the 20th century, the inch was officially defined in English-speaking countries relative to the yard, but until 1959, the yard differed slightly among those countries. In France the customary inch, which was displaced in 1799 by the meter, had a different length based on a french foot. These customary defini- tions could be accommodated as follows: !var INCH_UNIT usa yard 3600|3937 m !endvar !var INCH_UNIT canada yard 0.9144 meter !endvar !var INCH_UNIT uk yard 0.91439841 meter !endvar !var INCH_UNIT canada uk usa foot 1|3 yard inch 1|12 foot !endvar !var INCH_UNIT france foot 144|443.296 m inch 1|12 foot line 1|12 inch !endvar !varnot INCH_UNIT usa uk france canada !message Unknown value for INCH_UNIT !endvar When 'units' reads the above definitions it will check the environment variable 'INCH_UNIT' and load only the definitions for the appropriate section. If 'INCH_UNIT' is unset or is not set to one of the four val- ues listed, then 'units' will run the last block. In this case that block uses the '!message' command to display a warning message. Alter- natively that block could set default values. In order to create default values that are overridden by user settings the data file can use the '!set' command, which sets an environment variable only if it is not already set; these settings are only for the current 'units' invocation and do not persist. So if the example above were preceded by '!set INCH_UNIT france', then this would make 'france' the default value for 'INCH_UNIT'. If the user had set the variable in the environment before invoking 'units', then 'units' would use the user's value. To link these settings to the user's locale you combine the '!set' com- mand with the '!locale' command. If you wanted to combine the above example with suitable locales you could do by preceding the above defi- nition with the following: !locale en_US !set INCH_UNIT usa !endlocale !locale en_GB !set INCH_UNIT uk !endlocale !locale en_CA !set INCH_UNIT canada !endlocale !locale fr_FR !set INCH_UNIT france !endlocale !set INCH_UNIT france These definitions set the overall default for 'INCH_UNIT' to 'france' and set default values for four locales appropriately. The overall default setting comes last so that it only applies when 'INCH_UNIT' was not set by one of the other commands or by the user. If the variable given after '!var' or '!varnot' is undefined, then 'units' prints an error message and ignores the definitions that fol- low. Use '!set' to create defaults to prevent this situation from arising. The '-c' option only checks the definitions that are active for the current environment and locale, so when adding new definitions take care to check that all cases give rise to a well defined set of definitions. ENVIRONMENT VARIABLES The 'units' program uses the following environment variables: HOME Specifies the location of your home directory; it is used by 'units' to find a personal units data file '.units'. On systems running Microsoft Windows, the file is 'unitdef.units', and if 'HOME' does not exist, 'units' tries to determine your home directory from the 'HOMEDRIVE' and 'HOMEPATH' environment vari- ables; if these variables do not exist, units finally tries 'USERPROFILE'--typically 'C:\Users\username' (Windows Vista and Windows 7) or 'C:\Documents and Settings\username' (Windows XP). LC_CTYPE, LANG Checked to determine the locale if 'units' cannot obtain it from the operating system. Sections of the standard units data file are specific to certain locales. MYUNITSFILE Specifies your personal units data file. If this variable exists, 'units' uses its value rather than searching your home directory for '.units'. The personal units file will not be loaded if any data files are given using the '-f' option. PAGER Specifies the pager to use for help and for displaying the con- formable units. The help function browses the units database and calls the pager using the '+n'n syntax for specifying a line number. The default pager is 'more'; 'PAGER' can be used to specify alternatives such as 'less', 'pg', 'emacs', or 'vi'. UNITS_ENGLISH Set to either 'US' or 'GB' to choose United States or British volume definitions, overriding the default from your locale. UNITSFILE Specifies the units data file to use (instead of the default). You can only specify a single units data file using this envi- ronment variable. If units data files are given using the '-f' option, the file specified by 'UNITSFILE' will be not be loaded unless the '-f' option is given with the empty string ('units -f ""'). UNITSLOCALEMAP Windows only; this variable has no effect on Unix-like systems. Specifies the units locale map file to use (instead of the default). This variable seldom needs to be set, but you can use it to ensure that the locale map file will be found if you spec- ify a location for the units data file using either the '-f' option or the 'UNITSFILE' environment variable, and that loca- tion does not also contain the locale map file. UNITS_SYSTEM This environment variable is used in the standard data file to select CGS measurement systems. Currently supported systems are 'esu', 'emu', 'gauss[ian]', and 'si'. The default is 'si'. DATA FILES The 'units' program uses two default data files: 'definitions.units' and 'currency.units'. The program can also use an optional personal units data file '.units' ('unitdef.units' under Windows) located in the user's home directory. The personal units data file is described in more detail in Units Data Files. On Unix-like systems, the data files are typically located in '/usr/share/units' if 'units' is provided with the operating system, or in '/usr/local/share/units' if 'units' is compiled from the source dis- tribution. Note that the currency file 'currency.units' is a symbolic link to another location. On systems running Microsoft Windows, the files may be in the same locations if Unix-like commands are available, a Unix-like file struc- ture is present (e.g., 'C:/usr/local'), and 'units' is compiled from the source distribution. If Unix-like commands are not available, a more common location is 'C:\Program Files (x86)\GNU\units' (for 64-bit Windows installations) or 'C:\Program Files\GNU\units' (for 32-bit installations). If 'units' is obtained from the GNU Win32 Project (http://gnuwin32.sourceforge.net/), the files are commonly in 'C:\Program Files\GnuWin32\share\units'. If the default units data file is not an absolute pathname, 'units' will look for the file in the directory that contains the 'units' pro- gram; if the file is not found there, 'units' will look in a directory '../share/units' relative to the directory with the 'units' program. You can determine the location of the files by running 'units --version'. Running 'units --info' will give you additional information about the files, how 'units' will attempt to find them, and the status of the related environment variables. UNICODE SUPPORT The standard units data file is in Unicode, using UTF-8 encoding. Most definitions use only ASCII characters (i.e., code points U+0000 through U+007F); definitions using non-ASCII characters appear in blocks begin- ning with '!utf8' and ending with '!endutf8'. The non-ASCII definitions are loaded only if the platform and the locale support UTF-8. Platform support is determined when 'units' is compiled; the locale is checked at every invocation of 'units'. To see if your version of 'units' includes Unicode support, invoke the program with the '--version' option. When Unicode support is available, 'units' checks every line within UTF-8 blocks in all of the units data files for invalid or non-printing UTF-8 sequences; if such sequences occur, 'units' ignores the entire line. In addition to checking validity, 'units' determines the display width of non-ASCII characters to ensure proper positioning of the pointer in some error messages and to align columns for the 'search' and '?' commands. As of early 2019, Microsoft Windows provides limited support for UTF-8 in console applications, and accordingly, 'units' does not support Uni- code on Windows. The UTF-16 and UTF-32 encodings are not supported on any platforms. If Unicode support is available and definitions that contain non-ASCII UTF-8 characters are added to a units data file, those definitions should be enclosed within '!utf8' ... '!endutf8' to ensure that they are only loaded when Unicode support is available. As usual, the '!' must appear as the first character on the line. As discussed in Units Data Files, it's usually best to put such definitions in supplemental data files linked by an '!include' command or in a personal units data file. When Unicode support is not available, 'units' makes no assumptions about character encoding, except that characters in the range 00-7F hexadecimal correspond to ASCII encoding. Non-ASCII characters are simply sequences of bytes, and have no special meanings; for defini- tions in supplementary units data files, you can use any encoding con- sistent with this assumption. For example, if you wish to use non- ASCII characters in definitions when running 'units' under Windows, you can use a character set such as Windows "ANSI" (code page 1252 in the US and Western Europe); if this is done, the console code page must be set to the same encoding for the characters to display properly. You can even use UTF-8, though some messages may be improperly aligned, and 'units' will not detect invalid UTF-8 sequences. If you use UTF-8 encoding when Unicode support is not available, you should place any definitions with non-ASCII characters outside '!utf8' ... '!endutf8' blocks--otherwise, they will be ignored. Typeset material other than code examples usually uses the Unicode minus (U+2212) rather than the ASCII hyphen-minus operator (U+002D) used in 'units'; the figure dash (U+2012) and en dash (U+2013) are also occasionally used. To allow such material to be copied and pasted for interactive use or in units data files, 'units' converts these charac- ters to U+002D before further processing. Because of this, none of these characters can appear in unit names. READLINE SUPPORT If the 'readline' package has been compiled in, then when 'units' is used interactively, numerous command line editing features are avail- able. To check if your version of 'units' includes 'readline', invoke the program with the '--version' option. For complete information about 'readline', consult the documentation for the 'readline' package. Without any configuration, 'units' will allow editing in the style of emacs. Of particular use with 'units' are the completion commands. If you type a few characters and then hit ESC followed by '?', then 'units' will display a list of all the units that start with the char- acters typed. For example, if you type 'metr' and then request comple- tion, you will see something like this: You have: metr metre metriccup metrichorsepower metrictenth metretes metricfifth metricounce metricton metriccarat metricgrain metricquart metricyarncount You have: metr If there is a unique way to complete a unit name, you can hit the TAB key and 'units' will provide the rest of the unit name. If 'units' beeps, it means that there is no unique completion. Pressing the TAB key a second time will print the list of all completions. The readline library also keeps a history of the values you enter. You can move through this history using the up and down arrows. The his- tory is saved to the file '.units_history' in your home directory so that it will persist across multiple 'units' invocations. If you wish to keep work for a certain project separate you can change the history filename using the '--history' option. You could, for example, make an alias for 'units' to 'units --history .units_history' so that 'units' would save separate history in the current directory. The length of each history file is limited to 5000 lines. Note also that if you run several concurrent copies of 'units' each one will save its new history to the history file upon exit. UPDATING CURRENCY EXCHANGE RATES The units program database includes currency exchange rates and prices for some precious metals. Of course, these values change over time, sometimes very rapidly, and 'units' cannot provide real-time values. To update the exchange rates, run 'units_cur', which rewrites the file containing the currency rates, typically '/var/lib/units/ currency.units' or '/usr/local/com/units/currency.units' on a Unix-like system or 'C:\Program Files (x86)\GNU\units\definitions.units' on a Windows system. This program requires Python (https://www.python.org); either version 2 or 3 will work. The program must be run with suitable permissions to write the file. To keep the rates updated automatically, run it using a cron job on a Unix-like system, or a similar scheduling program on a different system. Reliable free sources of currency exchange rates have been annoyingly ephemeral. The program currently supports several sources: * FloatRates (https://www/floatrates.com). The US dollar ('USD') is the default base currency. You can change the base currency with the '-b' option described below. Allowable base currencies are listed on the FloatRates website. Exchange rates update daily. * The European Central Bank (https://www.ecb.europa.eu). The base currency is always the euro ('EUR'). Exchange rates update daily. This source offers a more limited list of currencies than the oth- ers. * Fixer (https://fixer.io). Registration for a free API key is required. With a free API key, base currency is the euro; exchange rates are updated hourly, the service has a limit of 1,000 API calls per month, and SSL encryption (https protocol) is not avail- able. Most of these restrictions are eliminated or reduced with paid plans. * open exchange rates (https://openexchangerates.org). Registration for a free API key is required. With a free API key, the base cur- rency is the US dollar; exchange rates are updated hourly, and there is a limit of 1,000 API calls per month. Most of these restrictions are eliminated or reduced with paid plans. The default source is FloatRates; you can select a different one using '-s' option described below. Precious metals pricing is obtained from Packetizer (www.packe- tizer.com). This site updates once per day. You invoke 'units_cur' like this: units_cur [options] [outfile] By default, the output is written to the default currency file described above; this is usually what you want, because this is where 'units' looks for the file. If you wish, you can specify a different filename on the command line and 'units_cur' will write the data to that file. If you give '-' for the file it will write to standard out- put. The following options are available: -h, --help Print a summary of the options for 'units_cur'. -V, --version Print the 'units_cur' version number. -v, --verbose Give slightly more verbose output when attempting to update cur- rency exchange rates. -s source, --source source Specify the source for currency exchange rates; currently sup- ported values are 'floatrates' (for FloatRates), 'eubank' (for the European Central Bank), 'fixer' (for Fixer), and 'openexchangerates' (for open exchange rates); the last two require an API key to be given with the '-k' option. -b base, --base base Set the base currency (when allowed by the site providing the data). base should be a 3-letter ISO currency code, e.g., 'USD'. The specified currency will be the primitive currency unit used by 'units'. You may find it convenient to specify your local currency. Conversions may be more accurate and you will be able to convert to your currency by simply hitting Enter at the 'You want:' prompt. This option is ignored if the source does not allow specifying the base currency. (Currently only floatrates supports this option.) -k key, --key key Set the API key to key for sources that require it. DATABASE COMMAND SYNTAX unit definition Define a regular unit. prefix- definition Define a prefix. funcname(var) noerror units=[in-units,out-units] domain=[x1,x2] range=[y1,y2] definition(var) ; inverse(funcname) Define a nonlinear unit or unit function. The four optional keywords 'noerror', 'units=', 'range=' and 'domain=' can appear in any order. The definition of the inverse is optional. tabname[out-units] noerror pair-list Define a piecewise linear unit. The pair list gives the points on the table listed in ascending order. The 'noerror' keyword is optional. !endlocale End a block of definitions beginning with '!locale' !endutf8 End a block of definitions begun with '!utf8' !endvar End a block of definitions begun with '!var' or '!varnot' !include file Include the specified file. !locale value Load the following definitions only of the locale is set to value. !message text Display text when the database is read unless the quiet option ('-q') is enabled. If you omit text, then units will display a blank line. Messages will also appear in the log file. !prompt text Prefix the 'You have:' prompt with the specified text. If you omit text, then any existing prefix is canceled. !set variable value Sets the environment variable, variable, to the specified value only if it is not already set. !unitlist alias definition Define a unit list alias. !utf8 Load the following definitions only if 'units' is running with UTF-8 enabled. !var envar value-list Load the block of definitions that follows only if the environ- ment variable envar is set to one of the values listed in the space-separated value list. If envar is not set, 'units' prints an error message and ignores the block of definitions. !varnot envar value-list Load the block of definitions that follows only if the environ- ment variable envar is set to value that is not listed in the space-separated value list. If envar is not set, 'units' prints an error message and ignores the block of definitions. FILES /usr/local/share/units/definitions.units -- the standard units data file AUTHOR units was written by Adrian Mariano 19 March 2019 UNITS(1) units-2.19/install-sh0000775000175000017500000003325512320330320014067 0ustar adrianadrian#!/bin/sh # install - install a program, script, or datafile scriptversion=2011-11-20.07; # UTC # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the # following copyright and license. # # Copyright (C) 1994 X Consortium # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to # deal in the Software without restriction, including without limitation the # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or # sell copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN # AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- # TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # # Except as contained in this notice, the name of the X Consortium shall not # be used in advertising or otherwise to promote the sale, use or other deal- # ings in this Software without prior written authorization from the X Consor- # tium. # # # FSF changes to this file are in the public domain. # # Calling this script install-sh is preferred over install.sh, to prevent # 'make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written # from scratch. nl=' ' IFS=" "" $nl" # set DOITPROG to echo to test this script # Don't use :- since 4.3BSD and earlier shells don't like it. doit=${DOITPROG-} if test -z "$doit"; then doit_exec=exec else doit_exec=$doit fi # Put in absolute file names if you don't have them in your path; # or use environment vars. chgrpprog=${CHGRPPROG-chgrp} chmodprog=${CHMODPROG-chmod} chownprog=${CHOWNPROG-chown} cmpprog=${CMPPROG-cmp} cpprog=${CPPROG-cp} mkdirprog=${MKDIRPROG-mkdir} mvprog=${MVPROG-mv} rmprog=${RMPROG-rm} stripprog=${STRIPPROG-strip} posix_glob='?' initialize_posix_glob=' test "$posix_glob" != "?" || { if (set -f) 2>/dev/null; then posix_glob= else posix_glob=: fi } ' posix_mkdir= # Desired mode of installed file. mode=0755 chgrpcmd= chmodcmd=$chmodprog chowncmd= mvcmd=$mvprog rmcmd="$rmprog -f" stripcmd= src= dst= dir_arg= dst_arg= copy_on_change=false no_target_directory= usage="\ Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE or: $0 [OPTION]... SRCFILES... DIRECTORY or: $0 [OPTION]... -t DIRECTORY SRCFILES... or: $0 [OPTION]... -d DIRECTORIES... In the 1st form, copy SRCFILE to DSTFILE. In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. In the 4th, create DIRECTORIES. Options: --help display this help and exit. --version display version info and exit. -c (ignored) -C install only if different (preserve the last data modification time) -d create directories instead of installing files. -g GROUP $chgrpprog installed files to GROUP. -m MODE $chmodprog installed files to MODE. -o USER $chownprog installed files to USER. -s $stripprog installed files. -t DIRECTORY install into DIRECTORY. -T report an error if DSTFILE is a directory. Environment variables override the default commands: CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG " while test $# -ne 0; do case $1 in -c) ;; -C) copy_on_change=true;; -d) dir_arg=true;; -g) chgrpcmd="$chgrpprog $2" shift;; --help) echo "$usage"; exit $?;; -m) mode=$2 case $mode in *' '* | *' '* | *' '* | *'*'* | *'?'* | *'['*) echo "$0: invalid mode: $mode" >&2 exit 1;; esac shift;; -o) chowncmd="$chownprog $2" shift;; -s) stripcmd=$stripprog;; -t) dst_arg=$2 # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac shift;; -T) no_target_directory=true;; --version) echo "$0 $scriptversion"; exit $?;; --) shift break;; -*) echo "$0: invalid option: $1" >&2 exit 1;; *) break;; esac shift done if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then # When -d is used, all remaining arguments are directories to create. # When -t is used, the destination is already specified. # Otherwise, the last argument is the destination. Remove it from $@. for arg do if test -n "$dst_arg"; then # $@ is not empty: it contains at least $arg. set fnord "$@" "$dst_arg" shift # fnord fi shift # arg dst_arg=$arg # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac done fi if test $# -eq 0; then if test -z "$dir_arg"; then echo "$0: no input file specified." >&2 exit 1 fi # It's OK to call 'install-sh -d' without argument. # This can happen when creating conditional directories. exit 0 fi if test -z "$dir_arg"; then do_exit='(exit $ret); exit $ret' trap "ret=129; $do_exit" 1 trap "ret=130; $do_exit" 2 trap "ret=141; $do_exit" 13 trap "ret=143; $do_exit" 15 # Set umask so as not to create temps with too-generous modes. # However, 'strip' requires both read and write access to temps. case $mode in # Optimize common cases. *644) cp_umask=133;; *755) cp_umask=22;; *[0-7]) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw='% 200' fi cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; *) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw=,u+rw fi cp_umask=$mode$u_plus_rw;; esac fi for src do # Protect names problematic for 'test' and other utilities. case $src in -* | [=\(\)!]) src=./$src;; esac if test -n "$dir_arg"; then dst=$src dstdir=$dst test -d "$dstdir" dstdir_status=$? else # Waiting for this to be detected by the "$cpprog $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if test ! -f "$src" && test ! -d "$src"; then echo "$0: $src does not exist." >&2 exit 1 fi if test -z "$dst_arg"; then echo "$0: no destination specified." >&2 exit 1 fi dst=$dst_arg # If destination is a directory, append the input filename; won't work # if double slashes aren't ignored. if test -d "$dst"; then if test -n "$no_target_directory"; then echo "$0: $dst_arg: Is a directory" >&2 exit 1 fi dstdir=$dst dst=$dstdir/`basename "$src"` dstdir_status=0 else # Prefer dirname, but fall back on a substitute if dirname fails. dstdir=` (dirname "$dst") 2>/dev/null || expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$dst" : 'X\(//\)[^/]' \| \ X"$dst" : 'X\(//\)$' \| \ X"$dst" : 'X\(/\)' \| . 2>/dev/null || echo X"$dst" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q' ` test -d "$dstdir" dstdir_status=$? fi fi obsolete_mkdir_used=false if test $dstdir_status != 0; then case $posix_mkdir in '') # Create intermediate dirs using mode 755 as modified by the umask. # This is like FreeBSD 'install' as of 1997-10-28. umask=`umask` case $stripcmd.$umask in # Optimize common cases. *[2367][2367]) mkdir_umask=$umask;; .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; *[0-7]) mkdir_umask=`expr $umask + 22 \ - $umask % 100 % 40 + $umask % 20 \ - $umask % 10 % 4 + $umask % 2 `;; *) mkdir_umask=$umask,go-w;; esac # With -d, create the new directory with the user-specified mode. # Otherwise, rely on $mkdir_umask. if test -n "$dir_arg"; then mkdir_mode=-m$mode else mkdir_mode= fi posix_mkdir=false case $umask in *[123567][0-7][0-7]) # POSIX mkdir -p sets u+wx bits regardless of umask, which # is incompatible with FreeBSD 'install' when (umask & 300) != 0. ;; *) tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 if (umask $mkdir_umask && exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 then if test -z "$dir_arg" || { # Check for POSIX incompatibilities with -m. # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or # other-writable bit of parent directory when it shouldn't. # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. ls_ld_tmpdir=`ls -ld "$tmpdir"` case $ls_ld_tmpdir in d????-?r-*) different_mode=700;; d????-?--*) different_mode=755;; *) false;; esac && $mkdirprog -m$different_mode -p -- "$tmpdir" && { ls_ld_tmpdir_1=`ls -ld "$tmpdir"` test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" } } then posix_mkdir=: fi rmdir "$tmpdir/d" "$tmpdir" else # Remove any dirs left behind by ancient mkdir implementations. rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null fi trap '' 0;; esac;; esac if $posix_mkdir && ( umask $mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" ) then : else # The umask is ridiculous, or mkdir does not conform to POSIX, # or it failed possibly due to a race condition. Create the # directory the slow way, step by step, checking for races as we go. case $dstdir in /*) prefix='/';; [-=\(\)!]*) prefix='./';; *) prefix='';; esac eval "$initialize_posix_glob" oIFS=$IFS IFS=/ $posix_glob set -f set fnord $dstdir shift $posix_glob set +f IFS=$oIFS prefixes= for d do test X"$d" = X && continue prefix=$prefix$d if test -d "$prefix"; then prefixes= else if $posix_mkdir; then (umask=$mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break # Don't fail if two instances are running concurrently. test -d "$prefix" || exit 1 else case $prefix in *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; *) qprefix=$prefix;; esac prefixes="$prefixes '$qprefix'" fi fi prefix=$prefix/ done if test -n "$prefixes"; then # Don't fail if two instances are running concurrently. (umask $mkdir_umask && eval "\$doit_exec \$mkdirprog $prefixes") || test -d "$dstdir" || exit 1 obsolete_mkdir_used=true fi fi fi if test -n "$dir_arg"; then { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 else # Make a couple of temp file names in the proper directory. dsttmp=$dstdir/_inst.$$_ rmtmp=$dstdir/_rm.$$_ # Trap to clean up those temp files at exit. trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 # Copy the file name to the temp name. (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && # and set any options; do chmod last to preserve setuid bits. # # If any of these fail, we abort the whole thing. If we want to # ignore errors from any of these, just make sure not to ignore # errors from the above "$doit $cpprog $src $dsttmp" command. # { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && # If -C, don't bother to copy if it wouldn't change the file. if $copy_on_change && old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && eval "$initialize_posix_glob" && $posix_glob set -f && set X $old && old=:$2:$4:$5:$6 && set X $new && new=:$2:$4:$5:$6 && $posix_glob set +f && test "$old" = "$new" && $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 then rm -f "$dsttmp" else # Rename the file to the real destination. $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || # The rename failed, perhaps because mv can't rename something else # to itself, or perhaps because mv is so ancient that it does not # support -f. { # Now remove or move aside any old file at destination location. # We try this two ways since rm can't unlink itself on some # systems and the destination file might be busy for other # reasons. In this case, the final cleanup might fail but the new # file should still install successfully. { test ! -f "$dst" || $doit $rmcmd -f "$dst" 2>/dev/null || { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } } || { echo "$0: cannot unlink or rename $dst" >&2 (exit 1); exit 1 } } && # Now rename the file to the real destination. $doit $mvcmd "$dsttmp" "$dst" } fi || exit 1 trap '' 0 fi done # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: units-2.19/units.c0000664000175000017500000050637213473724020013414 0ustar adrianadrian#define VERSION "2.19" /* * units, a program for units conversion * Copyright (C) 1996, 1997, 1999, 2000-2007, 2009, 2011-2018 * Free Software Foundation, Inc * * 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 3 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 program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA * * This program was written by Adrian Mariano (adrianm@gnu.org) */ #define LICENSE "\ Copyright (C) 2018 Free Software Foundation, Inc.\n\ GNU Units comes with ABSOLUTELY NO WARRANTY.\n\ You may redistribute copies of GNU Units\n\ under the terms of the GNU General Public License." #define _XOPEN_SOURCE 600 #if defined (_WIN32) && defined (_MSC_VER) # include # include #endif #if defined (_WIN32) && defined (HAVE_MKS_TOOLKIT) # include # include #endif #include #include #include #include #include #include #ifndef NO_SETLOCALE # include #endif #ifdef SUPPORT_UTF8 /* Apparently this define is needed to get wcswidth() prototype */ # include # include # define UTF8VERSTR "with utf8" #else # define UTF8VERSTR "without utf8" #endif #ifdef READLINE # define RVERSTR "with readline" # include # include # define HISTORY_FILE ".units_history" # if defined (_WIN32) && defined (_MSC_VER) # include # define isatty _isatty # endif #else # define RVERSTR "without readline" #endif #include "getopt.h" #include "units.h" #ifndef UNITSFILE # define UNITSFILE "definitions.units" #endif #ifndef LOCALEMAP # define LOCALEMAP "locale_map.txt" #endif #ifndef DATADIR # define DATADIR "../share/units" #endif #if defined (_WIN32) && defined (_MSC_VER) # include # define getcwd _getcwd #else # include #endif #ifdef _WIN32 # define EXE_EXT ".exe" # define PATHSEP ';' #else # define EXE_EXT "" # define PATHSEP ':' #endif #define PRIMITIVECHAR '!' /* Character that marks irreducible units */ #define COMMENTCHAR '#' /* Comments marked by this character */ #define COMMANDCHAR '!' /* Unit database commands marked with this */ #define UNITSEPCHAR ';' /* Separator for unit lists. Include this */ /* char in rl_basic_word_break_characters */ /* and in nonunitchars defined in parse.y */ #define FUNCSEPCHAR ';' /* Separates forward and inverse definitions */ #define REDEFCHAR '+' /* Mark unit as redefinition to suppress warning message */ #define DEFAULTPAGER "more" /* Default pager program */ #define DEFAULTLOCALE "en_US" /* Default locale */ #define MAXINCLUDE 5 /* Max depth of include files */ #define MAXFILES 25 /* Max number of units files on command line */ #define NODIM "!dimensionless" /* Marks dimensionless primitive units, such */ /* as the radian, which are ignored when */ /* doing unit comparisons */ #define NOPOINT -1 /* suppress display of pointer in processunit*/ #define NOERRMSG -2 /* no error messages in checkunitlist() */ #define MAXHISTORYFILE 5000 /* max length of history file for readline */ /* values for output number format */ #define BASE_FORMATS "gGeEf" /* printf() format types recognized pre-C99 */ #define DEFAULTPRECISION 8 /* default significant digits for printf() */ #define DEFAULTTYPE 'g' /* default number format type for printf() */ #define MAXPRECISION DBL_DIG /* maximum number precision for printf() */ #define HOME_UNITS_ENV "MYUNITSFILE" /* Personal units file environment var */ #define NOERROR_KEYWORD "noerror " /* The trailing space is important */ #define CO_NOARG -1 #define HELPCOMMAND "help" /* Command to request help at prompt */ #define SEARCHCOMMAND "search" /* Command to request text search of units */ #define UNITMATCH "?" /* Command to request conformable units */ char *exit_commands[]={"quit","exit",0}; char *all_commands[]={"quit","exit",HELPCOMMAND,SEARCHCOMMAND,UNITMATCH,0}; /* Key words for function definitions */ struct { char *word; char delimit; int checkopen; /* allow open intervals with parentheses */ } fnkeywords[]={ {"units=", FUNCSEPCHAR, 0}, {"domain=", ',', 1}, {"range=", ',',1}, {NOERROR_KEYWORD, ' ',CO_NOARG}, {0,0}}; #define FN_UNITS 0 #define FN_DOMAIN 1 #define FN_RANGE 2 #define FN_NOERROR 3 char *builtins[] = {"sin", "cos", "tan","ln", "log", "exp", "acos", "atan", "asin", "sqrt", "cuberoot", "per", "sinh", "cosh", "tanh", "asinh", "atanh", "acosh", 0}; struct { char *format; /* printf() format specification for numeric output */ int width; /* printf() width from format */ int precision; /* printf() precision from format */ char type; /* printf() type from format */ } num_format; struct { /* Program command line option flags */ int unitlists, /* Perform unit list output if set */ oneline, /* Suppresses the second line of output */ quiet, /* Supress prompting (-q option) */ round, /* Round the last of unit list output to nearest integer */ showfactor, /* */ strictconvert, /* Strict conversion (disables reciprocals) */ unitcheck, /* Enable unit checking: 1 for regular check, 2 for verbose*/ verbose, /* Flag for output verbosity */ readline; /* Using readline library? */ } flags; #define UTF8MARKER "\xEF\xBB\xBF" /* UTF-8 marker inserted by some Windows */ /* programs at start of a UTF-8 file */ struct parseflag parserflags; /* parser options */ char *homeunitsfile = ".units"; /* Units filename in home directory */ char *pager; /* Actual pager (from PAGER environment var) */ char *mylocale; /* Locale in effect (from LC_CTYPE or LANG) */ int utf8mode; /* Activate UTF8 support */ char *powerstring = "^"; /* Exponent character used in output */ char *unitsfiles[MAXFILES+1]; /* Null terminated list of units file names */ char *logfilename=0; /* Filename for logging */ FILE *logfile=0; /* File for logging */ char *promptprefix=0; /* Prefix added to prompt */ char *progname; /* Used in error messages */ char *fullprogname; /* Full path of program; printversion() uses */ char *progdir; /* Used to find supporting files */ char *datadir; /* Used to find supporting files */ char *deftext=" Definition: ";/* Output text when printing definition */ char *digits = "0123456789.,"; #define QUERYHAVE "You have: " /* Prompt text for units to convert from */ #define QUERYWANT "You want: " /* Prompt text for units to convert to */ #define LOGFROM "From: " /* tag for log file */ #define LOGTO "To: " /* tag for log file */ #define HASHSIZE 101 /* Values from K&R 2nd ed., Sect. 6.6 */ #define HASHNUMBER 31 #define SIMPLEHASHSIZE 128 #define simplehash(str) (*(str) & 127) /* "hash" value for prefixes */ char *errormsg[]={"Successful completion", "Parse error", "Product overflow", "Unit reduction error (bad unit definition)", "Invalid sum or difference of non-conformable units", "Unit not dimensionless", "Unit not a root", "Unknown unit", "Bad argument", "Weird nonlinear unit type (bug in program)", "Function argument has wrong dimension", "Argument of function outside domain", "Nonlinear unit definition has unit error", "No inverse defined", "Parser memory overflow (recursive function definition?)", "Argument wrong dimension or bad nonlinear unit definition", "Cannot open units file", "Units file contains errors", "Memory allocation error", "Malformed number", "Unit name ends with nonzero digit without preceding '_'", "No previous result; '_' not set", "Base unit not dimensionless; rational exponent required", "Base unit not a root", "Exponent not dimensionless", "Unknown function name", }; char *invalid_utf8 = "invalid/nonprinting UTF-8"; char *irreducible=0; /* Name of last irreducible unit */ /* Hash table for unit definitions. */ struct unitlist { char *name; /* unit name */ char *value; /* unit value */ int linenumber; /* line in units data file where defined */ char *file; /* file where defined */ struct unitlist *next; /* next item in list */ } *utab[HASHSIZE]; /* Table for prefix definitions. */ struct prefixlist { int len; /* length of name string */ char *name; /* prefix name */ char *value; /* prefix value */ int linenumber; /* line in units data file where defined */ char *file; /* file where defined */ struct prefixlist *next; /* next item in list */ } *ptab[SIMPLEHASHSIZE]; struct wantalias { char *name; char *definition; struct wantalias *next; int linenumber; char *file; }; struct wantalias *firstalias = 0; struct wantalias **aliaslistend = &firstalias; /* Next list entry goes here */ /* Table for function definitions */ struct func *ftab[SIMPLEHASHSIZE]; /* Used for passing parameters to the parser when we are in the process of parsing a unit function. If function_parameter is non-nil, then whenever the text in function_parameter appears in a unit expression it is replaced by the unit value stored in parameter_value. */ char *function_parameter = 0; struct unittype *parameter_value = 0; /* Stores the last result value for replacement with '_' */ int lastunitset = 0; struct unittype lastunit; char *NULLUNIT = ""; /* Used for units that are canceled during reduction */ #define startswith(string, prefix) (!strncmp(string, prefix, strlen(prefix))) #define lastchar(string) (*((string)+strlen(string)-1)) #define emptystr(string) (*(string)==0) #ifdef READLINE char *historyfile; /* Filename for readline history */ int init_history_length; /* Length of history read from the history file*/ int init_history_base; void save_history(void) { int newentries; int err; newentries = history_length-init_history_length; if (history_max_entries > 0){ newentries += history_base - init_history_base; if (newentries > history_max_entries) newentries = history_max_entries; } err = append_history(newentries,historyfile); if (err){ if (err == ENOENT) err = write_history(historyfile); if (err) { printf("Unable to write history to '%s': %s\n",historyfile,strerror(err)); return; } } history_truncate_file(historyfile,MAXHISTORYFILE); } #endif /* Increases the buffer by BUFGROW bytes and leaves the new pointer in buf and the new buffer size in bufsize. */ #define BUFGROW 100 void growbuffer(char **buf, int *bufsize) { int usemalloc; usemalloc = !*buf || !*bufsize; *bufsize += BUFGROW; if (usemalloc) *buf = malloc(*bufsize); else *buf = realloc(*buf,*bufsize); if (!*buf){ fprintf(stderr, "%s: memory allocation error (growbuffer)\n",progname); exit(EXIT_FAILURE); } } void logprintf(const char *format, ...) { va_list args; va_start(args, format); vprintf(format, args); va_end(args); if (logfile) { va_start(args, format); vfprintf(logfile, format, args); va_end(args); } } void logputchar(char c) { putchar(c); if (logfile) fputc(c, logfile); } void logputs(const char *s) { fputs(s, stdout); if (logfile) fputs(s, logfile); } /* Look for a subscript in the input string. A subscript starts with '_' and is followed by a sequence of only digits (matching the regexp "_[0-9]+"). The function returns 1 if it finds a subscript and zero otherwise. Note that it returns 1 for an input that is entirely subscript, with the '_' appearing in the first position. */ int hassubscript(const char *str) { const char *ptr = &lastchar(str); while (ptr>str){ if (!strchr(digits, *ptr)) return 0; ptr--; if (*ptr=='_') return 1; } return 0; } /* replace various Unicode minus symbols with ASCII hyphen-minus U+002D */ void replace_minus(char *input) { char *unicode_minus[] = { "\xE2\x80\x92", /* U+2012: figure dash */ "\xE2\x80\x93", /* U+2013: en dash */ "\xE2\x88\x92", /* U+2212: minus */ 0 }; char *inptr, *outptr, *ptr, **minus; for (minus=unicode_minus; *minus; minus++) { inptr = outptr = input; do { ptr = strstr(inptr, *minus); /* find next unicode minus */ if (ptr) { while (inptr < ptr) /* copy the input up to the minus symbol */ *outptr++ = *inptr++; *outptr++ = '-'; /* U+002D: hyphen-minus */ inptr = ptr + strlen(*minus); } } while (ptr); /* if no replacements were made, the input isn't changed */ if (inptr > input) { while (*inptr) *outptr++ = *inptr++; *outptr = '\0'; } } } /* Replace all control chars with a space */ void replacectrlchars(char *string) { for(;*string;string++) if (iscntrl(*string)) *string = ' '; } /* Fetch a line of data with backslash for continuation. The parameter count is incremented to report the number of newlines that are read so that line numbers can be accurately reported. */ char * fgetscont(char *buf, int size, FILE *file, int *count) { if (!fgets(buf,size,file)) return 0; (*count)++; while(strlen(buf)>=2 && 0==strcmp(buf+strlen(buf)-2,"\\\n")){ (*count)++; buf[strlen(buf)-2] = 0; /* delete trailing \n and \ char */ if (strlen(buf)>=size-1) /* return if the buffer is full */ return buf; if (!fgets(buf+strlen(buf), size - strlen(buf), file)) return buf; /* already read some data so return success */ } if (lastchar(buf) == '\\') { /* If last char of buffer is \ then */ ungetc('\\', file); /* we don't know if it is followed by */ lastchar(buf) = 0; /* a \n, so put it back and try again */ } return buf; } /* Gets arbitrarily long input data into a buffer using growbuffer(). Returns 0 if no data is read. Increments count by the number of newlines read unless it points to NULL. Replaces tabs and newlines with spaces before returning the result. */ char * fgetslong(char **buf, int *bufsize, FILE *file, int *count) { int dummy; if (!count) count = &dummy; if (!*bufsize) growbuffer(buf,bufsize); if (!fgetscont(*buf, *bufsize, file, count)) return 0; while (lastchar(*buf) != '\n' && !feof(file)){ growbuffer(buf, bufsize); fgetscont(*buf+strlen(*buf), *bufsize-strlen(*buf), file, count); (*count)--; } /* These nonprinting characters must be removed so that the test for UTF-8 validity will work. */ replacectrlchars(*buf); return *buf; } /* Allocates memory and aborts if malloc fails. */ void * mymalloc(int bytes,const char *mesg) { void *pointer; pointer = malloc(bytes); if (!pointer){ fprintf(stderr, "%s: memory allocation error %s\n", progname, mesg); exit(EXIT_FAILURE); } return pointer; } /* Duplicates a string */ char * dupstr(const char *str) { char *ret; ret = mymalloc(strlen(str) + 1,"(dupstr)"); strcpy(ret, str); return ret; } /* Duplicates a string that is not null-terminated, adding the null to the copy */ char * dupnstr(const char *string, int length) { char *newstr; newstr = mymalloc(length+1,"(dupnstr)"); strncpy(newstr, string, length); newstr[length]=0; return newstr; } #ifdef SUPPORT_UTF8 /* The strwidth function gives the printed width of a UTF-8 byte sequence. It will return -1 if the sequence is an invalid UTF-8 sequence or if the sequence contains "nonprinting" characters. Note that \n and \t are "nonprinting" characters. */ int strwidth(const char *str) { wchar_t *widestr; int len; if (!utf8mode) return strlen(str); len = strlen(str)+1; widestr = mymalloc(sizeof(wchar_t)*len, "(strwidth)"); len = mbsrtowcs(widestr, &str, len, NULL); if (len==-1){ free(widestr); return -1; /* invalid multibyte sequence */ } len=wcswidth(widestr, len); free(widestr); return len; } #else # define strwidth strlen #endif /* hashing algorithm for units */ unsigned uhash(const char *str) { unsigned hashval; for (hashval = 0; *str; str++) hashval = *str + HASHNUMBER * hashval; return (hashval % HASHSIZE); } /* Lookup a unit in the units table. Returns the definition, or NULL if the unit isn't found in the table. */ struct unitlist * ulookup(const char *str) { struct unitlist *uptr; for (uptr = utab[uhash(str)]; uptr; uptr = uptr->next) if (strcmp(str, uptr->name) == 0) return uptr; return NULL; } /* Lookup a prefix in the prefix table. Finds the longest prefix that matches the beginning of the input string. Returns NULL if no prefixes match. */ struct prefixlist * plookup(const char *str) { struct prefixlist *prefix; struct prefixlist *bestprefix=NULL; int bestlength=0; for (prefix = ptab[simplehash(str)]; prefix; prefix = prefix->next) { if (prefix->len > bestlength && !strncmp(str, prefix->name, prefix->len)){ bestlength = prefix->len; bestprefix = prefix; } } return bestprefix; } /* Look up function in the function linked list */ struct func * fnlookup(const char *str) { struct func *funcptr; for(funcptr=ftab[simplehash(str)];funcptr;funcptr = funcptr->next) if (!strcmp(funcptr->name, str)) return funcptr; return 0; } struct wantalias * aliaslookup(const char *str) { struct wantalias *aliasptr; for(aliasptr = firstalias; aliasptr; aliasptr=aliasptr->next) if (!strcmp(aliasptr->name, str)) return aliasptr; return 0; } /* Insert a new function into the linked list of functions */ void addfunction(struct func *newfunc) { int val; val = simplehash(newfunc->name); newfunc->next = ftab[val]; ftab[val] = newfunc; } /* Free the fields in the function except for the name so that it can be redefined. It remains in position in the linked list. */ void freefunction(struct func *funcentry) { if (funcentry->table){ free(funcentry->table); free(funcentry->tableunit); } else { free(funcentry->forward.param); free(funcentry->forward.def); if (funcentry->forward.domain_min) free(funcentry->forward.domain_min); if (funcentry->forward.domain_max) free(funcentry->forward.domain_max); if (funcentry->inverse.domain_min) free(funcentry->inverse.domain_min); if (funcentry->inverse.domain_max) free(funcentry->inverse.domain_max); if (funcentry->forward.dimen) free(funcentry->forward.dimen); if (funcentry->inverse.dimen) free(funcentry->inverse.dimen); if (funcentry->inverse.def) free(funcentry->inverse.def); if (funcentry->inverse.param) free(funcentry->inverse.param); } } /* Remove leading and trailing spaces from the input */ void removespaces(char *in) { char *ptr; if (*in) { for(ptr = &lastchar(in); *ptr==' '; ptr--); /* Last non-space */ *(ptr+1)=0; if (*in==' '){ ptr = in + strspn(in," "); memmove(in, ptr, strlen(ptr)+1); } } } /* Looks up an inverse function given as a ~ character followed by spaces and then the function name. The spaces will be deleted as a side effect. If an inverse function is found returns the function pointer, otherwise returns null. */ struct func * invfnlookup(char *str) { if (*str != '~') return 0; removespaces(str+1); return fnlookup(str+1); } char * strip_comment(char *line) { char *comment = 0; if ((line = strchr(line,COMMENTCHAR))) { comment = line+1; *line = 0; } return comment; } /* Print string but replace two consecutive spaces with one space. */ void tightprint(FILE *outfile, char *string) { while(*string){ fputc(*string, outfile); if (*string != ' ') string++; else while(*string==' ') string++; } } #define readerror (goterr=1) && errfile && fprintf #define VAGUE_ERR "%s: error in units file '%s' line %d\n", \ progname, file, linenum /* Print out error message encountered while reading the units file. */ /* Splits the line into two parts. The first part is space delimited. The second part is everything else. Removes trailing spaces from the second part. Returned items are null if no parameter was found. */ void splitline(char *line, char **first, char **second) { *second = 0; *first = strtok(line, " "); if (*first){ *second = strtok(0, "\n"); if (*second){ removespaces(*second); if (emptystr(*second)) *second = 0; } } } /* see if character is part of a valid decimal number */ int isdecimal(char c) { return strchr(digits, c) != NULL; } /* Check for some invalid unit names. Print error message. Returns 1 if unit name is bad, zero otherwise. */ int checkunitname(char *name, int linenum, char *file, FILE *errfile) { char nonunitchars[] = "~;+-*/|^)"; /* Also defined in parse.y with a few more characters */ char **ptr; char *cptr; if ((cptr=strpbrk(name, nonunitchars))){ if (errfile) fprintf(errfile, "%s: unit '%s' in units file '%s' on line %d ignored. It contains invalid character '%c'\n", progname, name, file, linenum, *cptr); return 1; } if (strchr(digits, name[0])){ if (errfile) fprintf(errfile, "%s: unit '%s' in units file '%s' on line %d ignored. It starts with a digit\n", progname, name, file, linenum); return 1; } for(ptr=builtins;*ptr;ptr++) if (!strcmp(name, *ptr)){ if (errfile) fprintf(errfile, "%s: redefinition of built-in function '%s' in file '%s' on line %d ignored.\n", progname, name, file, linenum); return 1; } for(ptr=all_commands;*ptr;ptr++) if (!strcmp(name, *ptr)){ if (errfile) fprintf(errfile, "%s: unit name '%s' in file '%s' on line %d may be hidden by command with the same name.\n", progname, name, file, linenum); } return 0; } int newunit(char *unitname, char *unitdef, int *count, int linenum, char *file,FILE *errfile, int redefine) { struct unitlist *uptr; unsigned hashval; /* units ending with '_' create ambiguity for exponents */ if (unitname[0]=='_' || lastchar(unitname)=='_'){ if (errfile) fprintf(errfile, "%s: unit '%s' on line %d of '%s' ignored. It starts or ends with '_'\n", progname, unitname, linenum, file); return E_BADFILE; } /* Units that end in [2-9] can never be accessed */ if (strchr(".,23456789", lastchar(unitname)) && !hassubscript(unitname)){ if (errfile) fprintf(errfile, "%s: unit '%s' on line %d of '%s' ignored. %s\n", progname, unitname, linenum, file,errormsg[E_UNITEND]); return E_BADFILE; } if (checkunitname(unitname, linenum, file, errfile)) return E_BADFILE; if ((uptr=ulookup(unitname))) { /* Is it a redefinition? */ if (flags.unitcheck && errfile && !redefine) fprintf(errfile, "%s: unit '%s' defined on line %d of '%s' is redefined on line %d of '%s'.\n", progname, unitname, uptr->linenumber,uptr->file, linenum, file); free(uptr->value); } else { /* make new units table entry */ uptr = (struct unitlist *) mymalloc(sizeof(*uptr),"(newunit)"); uptr->name = dupstr(unitname); /* install unit name/value pair in list */ hashval = uhash(uptr->name); uptr->next = utab[hashval]; utab[hashval] = uptr; (*count)++; } uptr->value = dupstr(unitdef); uptr->linenumber = linenum; uptr->file = file; return 0; } int newprefix(char *unitname, char *unitdef, int *count, int linenum, char *file,FILE *errfile, int redefine) { struct prefixlist *pfxptr; unsigned pval; lastchar(unitname) = 0; if (checkunitname(unitname,linenum,file,errfile)) return E_BADFILE; if ((pfxptr = plookup(unitname)) /* already there: redefinition */ && !strcmp(pfxptr->name, unitname)){ if (flags.unitcheck && errfile && !redefine) fprintf(errfile, "%s: prefix '%s-' defined on line %d of '%s' is redefined on line %d of '%s'.\n", progname, unitname, pfxptr->linenumber,pfxptr->file, linenum, file); free(pfxptr->value); } else { pfxptr = (struct prefixlist *) mymalloc(sizeof(*pfxptr),"(newprefix)"); pfxptr->name = dupstr(unitname); pfxptr->len = strlen(unitname); pval = simplehash(unitname); pfxptr->next = ptab[pval]; ptab[pval] = pfxptr; (*count)++; } pfxptr->value = dupstr(unitdef); pfxptr->linenumber = linenum; pfxptr->file = file; return 0; } /* parsepair() looks for data of the form [text1,text2] where the ',' is a specified delimiter. The second argument, text2, is optional and if it's missing then second is set to NULL. The parameters are allowed to be empty strings. The function returns the first character after the closing bracket if no errors occur or the NULL pointer on error. */ char * parsepair(char *input, char **first, char **second, int *firstopen, int *secondopen, char delimiter, int checkopen, char *unitname, int linenum, char *file,FILE *errfile) { char *start, *end, *middle; start = strpbrk(input, checkopen?"[(":"["); if (!start){ if (errfile) fprintf(errfile, "%s: expecting '[' %s in definition of '%s' in '%s' line %d\n", progname, checkopen ? "or '('":"", unitname, file, linenum); return 0; } if (*start=='(') *firstopen=1; else *firstopen=0; *start++=0; removespaces(input); if (!emptystr(input)){ if (errfile) fprintf(errfile, "%s: unexpected characters before '%c' in definition of '%s' in '%s' line %d\n", progname, *firstopen?'(':'[',unitname, file, linenum); return 0; } end = strpbrk(start, checkopen?"])":"]"); if (!end){ if (errfile) fprintf(errfile, "%s: expecting ']' %s in definition of '%s' in '%s' line %d\n", progname, checkopen?"or ')'":"",unitname, file, linenum); return 0; } if (*end==')') *secondopen=1; else *secondopen=0; *end++=0; middle = strchr(start,delimiter); if (middle){ *middle++=0; removespaces(middle); *second = middle; } else *second = 0; removespaces(start); *first = start; return end; } /* Extract numbers from two text strings and place them into pointers. Has two error codes for decreasing interval or bad numbers in the text strings. Returns 0 on success. */ #define EI_ERR_DEC 1 /* Decreasing interval */ #define EI_ERR_MALF 2 /* Malformed number */ int extract_interval(char *first, char *second, double **firstout, double **secondout) { double val; char *end; if (!emptystr(first)){ val = strtod(first, &end); if (*end) return EI_ERR_MALF; else { *firstout=(double *)mymalloc(sizeof(double), "(extract_interval)"); **firstout = val; } } if (second && !emptystr(second)){ val = strtod(second, &end); if (*end) return EI_ERR_MALF; else if (*firstout && **firstout>=val) return EI_ERR_DEC; else { *secondout=(double *)mymalloc(sizeof(double), "(extract_interval)"); **secondout = val; } } return 0; } void copyfunctype(struct functype *dest, struct functype *src) { dest->domain_min_open = src->domain_min_open; dest->domain_max_open = src->domain_max_open; dest->param = dest->def = dest->dimen = NULL; dest->domain_min = dest->domain_max = NULL; if (src->param) dest->param = dupstr(src->param); if (src->def) dest->def = dupstr(src->def); if (src->dimen) dest->dimen = dupstr(src->dimen); if (src->domain_min){ dest->domain_min = (double *) mymalloc(sizeof(double), "(copyfunctype)"); *dest->domain_min = *src->domain_min; } if (src->domain_max){ dest->domain_max = (double *) mymalloc(sizeof(double), "(copyfunctype)"); *dest->domain_max = *src->domain_max; } } int copyfunction(char *unitname, char *funcname, int *count, int linenum, char *file, FILE *errfile) { struct func *source, *funcentry; int i; if (checkunitname(unitname, linenum, file, errfile)) return E_BADFILE; removespaces(funcname); i = strlen(funcname)-2; /* strip trailing () if present */ if (i>0 && !strcmp(funcname+i,"()")) funcname[i]=0; source = fnlookup(funcname); if (!source) { if (errfile){ if (!strpbrk(funcname," ;][()+*/-^")) fprintf(errfile,"%s: bad definition for '%s' in '%s' line %d, function '%s' not defined\n", progname, unitname, file, linenum, funcname); else fprintf(errfile,"%s: bad function definition of '%s' in '%s' line %d\n", progname,unitname,file,linenum); } return E_BADFILE; } if ((funcentry=fnlookup(unitname))){ if (flags.unitcheck && errfile) fprintf(errfile, "%s: function '%s' defined on line %d of '%s' is redefined on line %d of '%s'.\n", progname, unitname, funcentry->linenumber,funcentry->file, linenum, file); freefunction(funcentry); } else { funcentry = (struct func*)mymalloc(sizeof(struct func),"(newfunction)"); funcentry->name = dupstr(unitname); addfunction(funcentry); (*count)++; } funcentry->linenumber = linenum; funcentry->file = file; funcentry->skip_error_check = source->skip_error_check; if (source->table){ funcentry->tablelen = source->tablelen; funcentry->tableunit = dupstr(source->tableunit); funcentry->table = (struct pair *) mymalloc(sizeof(struct pair)*funcentry->tablelen, "(copyfunction)"); for(i=0;itablelen;i++){ funcentry->table[i].location = source->table[i].location; funcentry->table[i].value = source->table[i].value; } } else { funcentry->table = 0; copyfunctype(&funcentry->forward, &source->forward); copyfunctype(&funcentry->inverse, &source->inverse); } return 0; } #define FREE_STUFF {if (forward_dim) free(forward_dim);\ if (inverse_dim) free(inverse_dim);\ if (domain_min) free(domain_min);\ if (domain_max) free(domain_max);\ if (range_min) free(range_min);\ if (range_max) free(range_max);} #define REPEAT_ERR \ if (errfile) fprintf(errfile, \ "%s: keyword '%s' repeated in definition of '%s' on line %d of '%s'.\n",\ progname,fnkeywords[i].word,unitname, linenum, file) int newfunction(char *unitname, char *unitdef, int *count, int linenum, char *file,FILE *errfile, int redefine) { char *start, *end, *inv, *forward_dim, *inverse_dim, *first, *second; double *domain_min, *domain_max, *range_min, *range_max; struct func *funcentry; int looking_for_keywords,i, firstopen, secondopen; int domain_min_open, domain_max_open, range_min_open, range_max_open; int noerror = 0; if (*unitname=='('){ if (errfile) fprintf(errfile, "%s: unit '%s' on line %d of '%s' ignored. It starts with a '('\n", progname, unitname, linenum, file); return E_BADFILE; } /* coverity[returned_null] */ start = strchr(unitname,'('); end = strchr(unitname,')'); *start++ = 0; if (checkunitname(unitname,linenum,file,errfile)) return E_BADFILE; if (start==end) /* no argument: function() so make a function copy */ return copyfunction(unitname, unitdef, count, linenum, file, errfile); if (!end || strlen(end)>1){ if (errfile) fprintf(errfile, "%s: bad function definition of '%s' in '%s' line %d\n", progname,unitname,file,linenum); return E_BADFILE; } *end=0; forward_dim = NULL; inverse_dim = NULL; domain_min = NULL; domain_max = NULL; range_min = NULL; range_max = NULL; domain_min_open = 0; domain_max_open = 0; range_min_open = 0; range_max_open = 0; looking_for_keywords=1; while (looking_for_keywords) { looking_for_keywords = 0; for(i=0;fnkeywords[i].word;i++){ if (startswith(unitdef, fnkeywords[i].word)){ looking_for_keywords = 1; /* found keyword so keep looking */ unitdef+=strlen(fnkeywords[i].word); if (fnkeywords[i].checkopen!=CO_NOARG){ unitdef = parsepair(unitdef,&first, &second, &firstopen, &secondopen, fnkeywords[i].delimit, fnkeywords[i].checkopen, unitname, linenum, file,errfile); if (!unitdef){ FREE_STUFF; return E_BADFILE; } removespaces(unitdef); } if (i==FN_NOERROR) noerror = 1; if (i==FN_UNITS){ if (forward_dim || inverse_dim){ REPEAT_ERR; return E_BADFILE; } forward_dim = dupstr(first); if (second) inverse_dim = dupstr(second); } if (i==FN_DOMAIN){ int err=0; if (domain_min || domain_max){ REPEAT_ERR; return E_BADFILE; } err = extract_interval(first,second,&domain_min, &domain_max); domain_min_open = firstopen; domain_max_open = secondopen; if (err) FREE_STUFF; if (err==EI_ERR_DEC){ if (errfile) fprintf(errfile, "%s: second endpoint for domain must be greater than the first\n in definition of '%s' in '%s' line %d\n", progname, unitname, file, linenum); return E_BADFILE; } if (err==EI_ERR_MALF){ if (errfile) fprintf(errfile, "%s: malformed domain in definition of '%s' in '%s' line %d\n", progname, unitname, file, linenum); return E_BADFILE; } } if (i==FN_RANGE){ int err=0; if (range_min || range_max){ REPEAT_ERR; FREE_STUFF; return E_BADFILE; } err = extract_interval(first,second,&range_min, &range_max); range_min_open = firstopen; range_max_open = secondopen; if (err) FREE_STUFF; if (err==EI_ERR_DEC){ if (errfile) fprintf(errfile, "%s: second endpoint for range must be greater than the first\n in definition of '%s' in '%s' line %d\n", progname, unitname, file, linenum); return E_BADFILE; } if (err==EI_ERR_MALF){ if (errfile) fprintf(errfile, "%s: malformed range in definition of '%s' in '%s' line %d\n", progname, unitname, file, linenum); return E_BADFILE; } } } } } if (emptystr(unitdef)){ if (errfile) fprintf(errfile, "%s: function '%s' lacks a definition at line %d of '%s'\n", progname, unitname, linenum, file); FREE_STUFF; return E_BADFILE; } if (*unitdef=='['){ if (errfile) fprintf(errfile, "%s: function '%s' missing keyword before '[' on line %d of '%s'\n", progname, unitname, linenum, file); FREE_STUFF; return E_BADFILE; } /* Check that if domain and range are specified and nonzero then the units are given. Otherwise these are meaningless. */ if (!forward_dim && ((domain_min && *domain_min) || (domain_max && *domain_max))){ if (errfile) fprintf(errfile,"%s: function '%s' defined on line %d of '%s' has domain with no units.\n", progname, unitname, linenum, file); FREE_STUFF; return E_BADFILE; } if (!inverse_dim && ((range_min && *range_min) || (range_max && *range_max))){ if (errfile) fprintf(errfile,"%s: function '%s' defined on line %d of '%s' has range with no units.\n", progname, unitname, linenum, file); FREE_STUFF; return E_BADFILE; } if ((funcentry=fnlookup(unitname))){ if (flags.unitcheck && errfile && !redefine) fprintf(errfile, "%s: function '%s' defined on line %d of '%s' is redefined on line %d of '%s'.\n", progname, unitname, funcentry->linenumber,funcentry->file, linenum, file); freefunction(funcentry); } else { funcentry = (struct func*)mymalloc(sizeof(struct func),"(newfunction)"); funcentry->name = dupstr(unitname); addfunction(funcentry); (*count)++; } funcentry->table = 0; funcentry->skip_error_check = noerror; funcentry->forward.dimen = forward_dim; funcentry->inverse.dimen = inverse_dim; funcentry->forward.domain_min = domain_min; funcentry->forward.domain_max = domain_max; funcentry->inverse.domain_min = range_min; funcentry->inverse.domain_max = range_max; funcentry->forward.domain_min_open = domain_min_open; funcentry->forward.domain_max_open = domain_max_open; funcentry->inverse.domain_min_open = range_min_open; funcentry->inverse.domain_max_open = range_max_open; inv = strchr(unitdef,FUNCSEPCHAR); if (inv) *inv++ = 0; funcentry->forward.param = dupstr(start); removespaces(unitdef); funcentry->forward.def = dupstr(unitdef); if (inv){ removespaces(inv); funcentry->inverse.def = dupstr(inv); funcentry->inverse.param = dupstr(unitname); } else { funcentry->inverse.def = 0; funcentry->inverse.param = 0; } funcentry->linenumber = linenum; funcentry->file = file; return 0; } int newtable(char *unitname,char *unitdef, int *count, int linenum, char *file,FILE *errfile, int redefine) { char *start, *end; char *tableunit; int tablealloc, tabpt; struct pair *tab; struct func *funcentry; int noerror = 0; /* coverity[returned_null] */ tableunit = strchr(unitname,'['); end = strchr(unitname,']'); *tableunit++=0; if (checkunitname(unitname, linenum, file, errfile)) return E_BADFILE; if (!end){ if (errfile) fprintf(errfile,"%s: missing ']' in units file '%s' line %d\n", progname,file,linenum); return E_BADFILE; } if (strlen(end)>1){ if (errfile) fprintf(errfile, "%s: unexpected characters after ']' in units file '%s' line %d\n", progname,file,linenum); return E_BADFILE; } *end=0; tab = (struct pair *)mymalloc(sizeof(struct pair)*20, "(newtable)"); tablealloc=20; tabpt = 0; start = unitdef; if (startswith(start, NOERROR_KEYWORD)) { noerror = 1; start += strlen(NOERROR_KEYWORD); removespaces(start); } while (1) { if (tabpt>=tablealloc){ tablealloc+=20; tab = (struct pair *)realloc(tab,sizeof(struct pair)*tablealloc); if (!tab){ if (errfile) fprintf(errfile, "%s: memory allocation error (newtable)\n", progname); return E_MEMORY; } } tab[tabpt].location = strtod(start,&end); if (start==end || (!emptystr(end) && *end !=' ')){ if (!emptystr(start)) { if (strlen(start)>15) start[15]=0; /* Truncate for error msg display */ if (errfile) fprintf(errfile, "%s: cannot parse table definition %s at '%s' on line %d of '%s'\n", progname, unitname, start, linenum, file); free(tab); return E_BADFILE; } break; } if (tabpt>0 && tab[tabpt].location<=tab[tabpt-1].location){ if (errfile) fprintf(errfile,"%s: points don't increase (%.8g to %.8g) in units file '%s' line %d\n", progname, tab[tabpt-1].location, tab[tabpt].location, file, linenum); free(tab); return E_BADFILE; } start=end+strspn(end," "); tab[tabpt].value = strtod(start,&end); if (start==end){ if (errfile) fprintf(errfile,"%s: missing value after %.8g in units file '%s' line %d\n", progname, tab[tabpt].location, file, linenum); free(tab); return E_BADFILE; } tabpt++; start=end+strspn(end," ,"); } if ((funcentry=fnlookup(unitname))){ if (flags.unitcheck && errfile && !redefine) fprintf(errfile, "%s: unit '%s' defined on line %d of '%s' is redefined on line %d of '%s'.\n", progname, unitname, funcentry->linenumber,funcentry->file, linenum, file); freefunction(funcentry); } else { funcentry = (struct func *)mymalloc(sizeof(struct func),"(newtable)"); funcentry->name = dupstr(unitname); addfunction(funcentry); (*count)++; } funcentry->tableunit = dupstr(tableunit); funcentry->tablelen = tabpt; funcentry->table = tab; funcentry->skip_error_check = noerror; funcentry->linenumber = linenum; funcentry->file = file; return 0; } int newalias(char *unitname, char *unitdef,int linenum, char *file,FILE *errfile) { struct wantalias *aliasentry; if (!strchr(unitdef, UNITSEPCHAR)){ if (errfile) fprintf(errfile, "%s: unit list missing '%c' on line %d of '%s'\n", progname, UNITSEPCHAR, linenum, file); return E_BADFILE; } if ((aliasentry=aliaslookup(unitname))){ /* duplicate alias */ if (flags.unitcheck && errfile) fprintf(errfile, "%s: unit list '%s' defined on line %d of '%s' is redefined on line %d of '%s'.\n", progname, unitname, aliasentry->linenumber, aliasentry->file, linenum, file); free(aliasentry->definition); } else { aliasentry = (struct wantalias *) mymalloc(sizeof(struct wantalias),"(newalias)"); aliasentry->name = dupstr(unitname); aliasentry->next = 0; *aliaslistend = aliasentry; aliaslistend = &aliasentry->next; } aliasentry->definition = dupstr(unitdef); aliasentry->linenumber = linenum; aliasentry->file = file; return 0; } /* Check environment variable name to see if its value appears on the space delimited text string pointed to by list. Returns 2 if the environment variable is not set, return 1 if its value appears on the list and zero otherwise. */ int checkvar(char *name, char *list) { char *listitem; name = getenv(name); if (!name) return 2; listitem = strtok(list," "); while (listitem){ if (!strcmp(name, listitem)) return 1; listitem = strtok(0," "); } return 0; } #ifdef NO_SETENV int setenv(const char *name, const char *val, int overwrite) { char *environment; if (!overwrite && getenv(name) != NULL) return 0; environment = (char *) malloc(strlen(name) + strlen(val) + 2); if (!environment) return 1; strcpy(environment, name); strcat(environment, "="); strcat(environment, val); /* putenv() doesn't copy its argument, so don't free environment */ #if defined (_WIN32) && defined (_MSC_VER) return _putenv(environment); #else return putenv(environment); #endif } #endif #ifdef _WIN32 # define isdirsep(c) ((c) == '/' || (c) == '\\') # define hasdirsep(s) strpbrk((s),"/\\") #else # define isdirsep(c) ((c) == '/') # define hasdirsep(s) strchr((s),'/') #endif #define isexe(s) ((strlen(s) == 4) && (tolower(s[1]) == 'e') \ && (tolower(s[2]) == 'x') && (tolower(s[3]) == 'e')) /* Returns a pointer to the end of the pathname part of the specified filename */ char * pathend(char *filename) { char *pointer; for(pointer=filename+strlen(filename);pointer>filename;pointer--){ if (isdirsep(*pointer)) { pointer++; break; } } return pointer; } int isfullpath(char *path) { #ifdef _WIN32 /* handle Windows drive specifier */ if (isalpha(*path) && *(path + 1) == ':') path += 2; #endif return isdirsep(*path); } /* Read in units data. file - Filename to load errfile - File to receive messages about errors in the units database. Set it to 0 to suppress errors. unitcount, prefixcount, funccount - Return statistics to the caller. Must initialize to zero before calling. depth - Used to prevent recursive includes. Call with it set to zero. The global variable progname is used in error messages. */ int readunits(char *file, FILE *errfile, int *unitcount, int *prefixcount, int *funccount, int depth) { FILE *unitfile; char *line = 0, *lineptr, *unitdef, *unitname, *permfile; int linenum, linebufsize, goterr, retcode; int locunitcount, locprefixcount, locfunccount, redefinition; int wronglocale = 0; /* If set then we are currently reading data */ int inlocale = 0; /* for the wrong locale so we should skip it */ int in_utf8 = 0; /* If set we are reading utf8 data */ int invar = 0; /* If set we are in data for an env variable.*/ int wrongvar = 0; /* If set then we are not processing */ locunitcount = 0; locprefixcount = 0; locfunccount = 0; linenum = 0; linebufsize = 0; goterr = 0; unitfile = fopen(file, "rt"); if (!unitfile) return E_FILE; growbuffer(&line,&linebufsize); /* coverity[alloc_fn] */ permfile = dupstr(file); /* This is a permanent copy to reference in */ /* the database. It is never freed. */ while (!feof(unitfile)) { if (!fgetslong(&line, &linebufsize, unitfile, &linenum)) break; if (linenum==1 && startswith(line, UTF8MARKER)){ int i; for(lineptr=line,i=0;iMAXINCLUDE){ readerror(errfile, "%s: max include depth of %d exceeded in file '%s' line %d\n", progname, MAXINCLUDE, file, linenum); } else { int readerr; char *includefile; unitname = strtok(0, " "); if (!unitname){ readerror(errfile, "%s: missing include filename on line %d of '%s'\n", progname, linenum, file); continue; } includefile = mymalloc(strlen(file)+strlen(unitname)+1, "(readunits)"); if (isfullpath(unitname)) strcpy(includefile,unitname); else { strcpy(includefile,file); strcpy(pathend(includefile), unitname); } readerr = readunits(includefile, errfile, unitcount, prefixcount, funccount, depth+1); if (readerr == E_MEMORY){ fclose(unitfile); free(line); free(includefile); return readerr; } if (readerr == E_FILE) { readerror(errfile, "%s: cannot open included file '%s' at line %d of file '%s\n", progname, includefile, linenum, file); } if (readerr) goterr = 1; free(includefile); } } else /* not a valid command */ readerror(errfile,VAGUE_ERR); continue; } if (in_utf8 && !utf8mode) continue; if (wronglocale || wrongvar) continue; splitline(line, &unitname, &unitdef); if (!unitname) continue; if (!unitdef){ readerror(errfile, "%s: unit '%s' lacks a definition at line %d of '%s'\n", progname, unitname, linenum, file); continue; } if (*unitname == REDEFCHAR){ unitname++; redefinition=1; } else redefinition=0; if (lastchar(unitname) == '-'){ /* it's a prefix definition */ if (newprefix(unitname,unitdef,&locprefixcount,linenum, permfile,errfile,redefinition)) goterr=1; } else if (strchr(unitname,'[')){ /* table definition */ retcode=newtable(unitname,unitdef,&locfunccount,linenum, permfile,errfile,redefinition); if (retcode){ if (retcode != E_BADFILE){ fclose(unitfile); free(line); return retcode; } goterr=1; } } else if (strchr(unitname,'(')){ /* function definition */ if (newfunction(unitname,unitdef,&locfunccount,linenum, permfile,errfile,redefinition)) goterr = 1; } else { /* ordinary unit definition */ if (newunit(unitname,unitdef,&locunitcount,linenum,permfile,errfile,redefinition)) goterr = 1; } } fclose(unitfile); free(line); if (unitcount) *unitcount+=locunitcount; if (prefixcount) *prefixcount+=locprefixcount; if (funccount) *funccount+=locfunccount; if (goterr) return E_BADFILE; else return 0; } /* Initialize a unit to be equal to 1. */ void initializeunit(struct unittype *theunit) { theunit->factor = 1.0; theunit->numerator[0] = theunit->denominator[0] = NULL; } /* Free a unit: frees all the strings used in the unit structure. Does not free the unit structure itself. */ void freeunit(struct unittype *theunit) { char **ptr; for(ptr = theunit->numerator; *ptr; ptr++) if (*ptr != NULLUNIT) free(*ptr); for(ptr = theunit->denominator; *ptr; ptr++) if (*ptr != NULLUNIT) free(*ptr); /* protect against repeated calls to freeunit() */ theunit->numerator[0] = 0; theunit->denominator[0] = 0; } /* Print out a unit */ void showunit(struct unittype *theunit) { char **ptr; int printedslash; int counter = 1; logprintf(num_format.format, theunit->factor); for (ptr = theunit->numerator; *ptr; ptr++) { if (ptr > theunit->numerator && **ptr && !strcmp(*ptr, *(ptr - 1))) counter++; else { if (counter > 1) logprintf("%s%d", powerstring, counter); if (**ptr) logprintf(" %s", *ptr); counter = 1; } } if (counter > 1) logprintf("%s%d", powerstring, counter); counter = 1; printedslash = 0; for (ptr = theunit->denominator; *ptr; ptr++) { if (ptr > theunit->denominator && **ptr && !strcmp(*ptr, *(ptr - 1))) counter++; else { if (counter > 1) logprintf("%s%d", powerstring, counter); if (**ptr) { if (!printedslash) logprintf(" /"); printedslash = 1; logprintf(" %s", *ptr); } counter = 1; } } if (counter > 1) logprintf("%s%d", powerstring, counter); } /* qsort comparison function */ int compare(const void *item1, const void *item2) { return strcmp(*(char **) item1, *(char **) item2); } /* Sort numerator and denominator of a unit so we can compare different units */ void sortunit(struct unittype *theunit) { char **ptr; int count; for (count = 0, ptr = theunit->numerator; *ptr; ptr++, count++); qsort(theunit->numerator, count, sizeof(char *), compare); for (count = 0, ptr = theunit->denominator; *ptr; ptr++, count++); qsort(theunit->denominator, count, sizeof(char *), compare); } /* Cancels duplicate units that appear in the numerator and denominator. The input unit must be sorted. */ void cancelunit(struct unittype *theunit) { char **den, **num; int comp; den = theunit->denominator; num = theunit->numerator; while (*num && *den) { comp = strcmp(*den, *num); if (!comp) { /* units match, so cancel them */ if (*den!=NULLUNIT) free(*den); if (*num!=NULLUNIT) free(*num); *den++ = NULLUNIT; *num++ = NULLUNIT; } else if (comp < 0) /* Move up whichever pointer is alphabetically */ den++; /* behind to look for future matches */ else num++; } } /* Looks up the definition for the specified unit including prefix processing and plural removal. Returns a pointer to the definition or a null pointer if the specified unit does not appear in the units table. Sometimes the returned pointer will be a pointer to the special buffer created to hold the data. This buffer grows as needed during program execution. Note that if you pass the output of lookupunit() back into the function again you will get correct results, but the data you passed in may get clobbered if it happened to be the internal buffer. */ static int bufsize=0; static char *buffer; /* buffer for lookupunit answers with prefixes */ /* Plural rules for english: add -s after x, sh, ch, ss add -es -y becomes -ies except after a vowel when you just add -s as usual */ char * lookupunit(char *unit,int prefixok) { char *copy; struct prefixlist *pfxptr; struct unitlist *uptr; if ((uptr = ulookup(unit))) return uptr->value; if (strwidth(unit)>2 && lastchar(unit) == 's') { copy = dupstr(unit); lastchar(copy) = 0; if (lookupunit(copy,prefixok)){ while(strlen(copy)+1 > bufsize) { growbuffer(&buffer, &bufsize); } strcpy(buffer, copy); /* Note: returning looked up result seems */ free(copy); /* better but it causes problems when it */ return buffer; /* contains PRIMITIVECHAR. */ } if (strlen(copy)>2 && lastchar(copy) == 'e') { lastchar(copy) = 0; if (lookupunit(copy,prefixok)){ while (strlen(copy)+1 > bufsize) { growbuffer(&buffer,&bufsize); } strcpy(buffer,copy); free(copy); return buffer; } } if (strlen(copy)>2 && lastchar(copy) == 'i') { lastchar(copy) = 'y'; if (lookupunit(copy,prefixok)){ while (strlen(copy)+1 > bufsize) { growbuffer(&buffer,&bufsize); } strcpy(buffer,copy); free(copy); return buffer; } } free(copy); } if (prefixok && (pfxptr = plookup(unit))) { copy = unit + pfxptr->len; if (emptystr(copy) || lookupunit(copy,0)) { char *tempbuf; while (strlen(pfxptr->value)+strlen(copy)+2 > bufsize){ growbuffer(&buffer, &bufsize); } tempbuf = dupstr(copy); /* copy might point into buffer */ strcpy(buffer, pfxptr->value); strcat(buffer, " "); strcat(buffer, tempbuf); free(tempbuf); return buffer; } } return 0; } /* Points entries of product[] to the strings stored in tomove[]. Leaves tomove pointing to a list of NULLUNITS. */ int moveproduct(char *product[], char *tomove[]) { char **dest, **src; dest=product; for(src = tomove; *src; src++){ if (*src == NULLUNIT) continue; for(; *dest && *dest != NULLUNIT; dest++); if (dest - product >= MAXSUBUNITS - 1) { return E_PRODOVERFLOW; } if (!*dest) *(dest + 1) = 0; *dest = *src; *src=NULLUNIT; } return 0; } /* Make a copy of a product list. Note that no error checking is done for overflowing the product list because it is assumed that the source list doesn't overflow, so the destination list shouldn't overflow either. (This assumption could be false if the destination is not actually at the start of a product buffer.) */ void copyproduct(char **dest, char **source) { for(;*source;source++,dest++) { if (*source==NULLUNIT) *dest = NULLUNIT; else *dest=dupstr(*source); } *dest=0; } /* Make a copy of a unit */ void unitcopy(struct unittype *dest, struct unittype *source) { dest->factor = source->factor; copyproduct(dest->numerator, source->numerator); copyproduct(dest->denominator, source->denominator); } /* Multiply left by right. In the process, all of the units are deleted from right (but it is not freed) */ int multunit(struct unittype *left, struct unittype *right) { int myerr; left->factor *= right->factor; myerr = moveproduct(left->numerator, right->numerator); if (!myerr) myerr = moveproduct(left->denominator, right->denominator); return myerr; } int divunit(struct unittype *left, struct unittype *right) { int myerr; left->factor /= right->factor; myerr = moveproduct(left->numerator, right->denominator); if (!myerr) myerr = moveproduct(left->denominator, right->numerator); return myerr; } /* reduces a product of symbolic units to primitive units. The three low bits are used to return flags: bit 0 set if reductions were performed without error. bit 1 set if no reductions are performed. bit 2 set if an unknown unit is discovered. Return values from multiple calls will be ORed together later. */ #define DIDREDUCTION (1<<0) #define NOREDUCTION (1<<1) #define REDUCTIONERROR (1<<2) int reduceproduct(struct unittype *theunit, int flip) { char *toadd; char **product; int didsomething = NOREDUCTION; struct unittype newunit; int ret; if (flip) product = theunit->denominator; else product = theunit->numerator; for (; *product; product++) { for (;;) { if (!strlen(*product)) break; toadd = lookupunit(*product,1); if (!toadd) { if (!irreducible) irreducible = dupstr(*product); return REDUCTIONERROR; } if (strchr(toadd, PRIMITIVECHAR)) break; didsomething = DIDREDUCTION; if (*product != NULLUNIT) { free(*product); *product = NULLUNIT; } if (parseunit(&newunit, toadd, 0, 0)) return REDUCTIONERROR; if (flip) ret=divunit(theunit,&newunit); else ret=multunit(theunit,&newunit); freeunit(&newunit); if (ret) return REDUCTIONERROR; } } return didsomething; } /* Reduces numerator and denominator of the specified unit. Returns 0 on success, or 1 on unknown unit error. */ int reduceunit(struct unittype *theunit) { int ret; if (irreducible) free(irreducible); irreducible=0; ret = DIDREDUCTION; /* Keep calling reduceproduct until it doesn't do anything */ while (ret & DIDREDUCTION) { ret = reduceproduct(theunit, 0); if (!(ret & REDUCTIONERROR)) ret |= reduceproduct(theunit, 1); if (ret & REDUCTIONERROR){ if (irreducible) return E_UNKNOWNUNIT; else return E_REDUCE; } } return 0; } /* Returns one if the argument unit is defined in the data file as a dimensionless unit. This is determined by comparing its definition to the string NODIM. */ int ignore_dimless(char *name) { struct unitlist *ul; if (!name) return 0; ul = ulookup(name); if (ul && !strcmp(ul->value, NODIM)) return 1; return 0; } int ignore_nothing(char *name) { return 0; } int ignore_primitive(char *name) { struct unitlist *ul; if (!name) return 0; ul = ulookup(name); if (ul && strchr(ul->value, PRIMITIVECHAR)) return 1; return 0; } /* Compare two product lists, return zero if they match and one if they do not match. They may contain embedded NULLUNITs which are ignored in the comparison. Units defined as NODIM are also ignored in the comparison. */ int compareproducts(char **one, char **two, int (*isdimless)(char *name)) { int oneblank, twoblank; while (*one || *two) { oneblank = (*one==NULLUNIT) || isdimless(*one); twoblank = (*two==NULLUNIT) || isdimless(*two); if (!*one && !twoblank) return 1; if (!*two && !oneblank) return 1; if (oneblank) one++; else if (twoblank) two++; else if (strcmp(*one, *two)) return 1; else one++, two++; } return 0; } /* Return zero if units are compatible, nonzero otherwise. The units must be reduced, sorted and canceled for this to work. */ int compareunits(struct unittype *first, struct unittype *second, int (*isdimless)(char *name)) { return compareproducts(first->numerator, second->numerator, isdimless) || compareproducts(first->denominator, second->denominator, isdimless); } /* Reduce a unit as much as possible */ int completereduce(struct unittype *unit) { int err; if ((err=reduceunit(unit))) return err; sortunit(unit); cancelunit(unit); return 0; } /* Raise theunit to the specified power. This function does not fill in NULLUNIT gaps, which could be considered a deficiency. */ int expunit(struct unittype *theunit, int power) { char **numptr, **denptr; double thefactor; int i, uind, denlen, numlen; if (power==0){ freeunit(theunit); initializeunit(theunit); return 0; } numlen=0; for(numptr=theunit->numerator;*numptr;numptr++) numlen++; denlen=0; for(denptr=theunit->denominator;*denptr;denptr++) denlen++; thefactor=theunit->factor; for(i=1;ifactor *= thefactor; for(uind=0;uindnumerator[uind]!=NULLUNIT){ if (numptr-theunit->numerator>=MAXSUBUNITS-1) { *numptr=*denptr=0; return E_PRODOVERFLOW; } *numptr++=dupstr(theunit->numerator[uind]); } } for(uind=0;uinddenominator[uind]!=NULLUNIT){ *denptr++=dupstr(theunit->denominator[uind]); if (denptr-theunit->denominator>=MAXSUBUNITS-1) { *numptr=*denptr=0; return E_PRODOVERFLOW; } } } } *numptr=0; *denptr=0; return 0; } int unit2num(struct unittype *input) { struct unittype one; int err; initializeunit(&one); if ((err=completereduce(input))) return err; if (compareunits(input,&one,ignore_nothing)) return E_NOTANUMBER; freeunit(input); return 0; } int unitdimless(struct unittype *input) { struct unittype one; initializeunit(&one); if (compareunits(input, &one, ignore_dimless)) return 0; freeunit(input); /* Eliminate dimensionless units from list */ return 1; } #if 0 void showunitdetail(struct unittype *foo) { char **ptr; printf("%.17g ", foo->factor); for(ptr=foo->numerator;*ptr;ptr++) if (*ptr==NULLUNIT) printf("NULL "); else printf("`%s' ", *ptr); printf(" / "); for(ptr=foo->denominator;*ptr;ptr++) if (*ptr==NULLUNIT) printf("NULL "); else printf("`%s' ", *ptr); putchar('\n'); } #endif /* The unitroot function takes the nth root of an input unit which has been completely reduced. Returns 1 if the unit is not a power of n. Input data can contain NULLUNITs. */ int subunitroot(int n,char *current[], char *out[]) { char **ptr; int count=0; while(*current==NULLUNIT) current++; /* skip past NULLUNIT entries */ ptr=current; while(*ptr){ while(*ptr){ if (*ptr!=NULLUNIT){ if (strcmp(*current,*ptr)) break; count++; } ptr++; } if (count % n != 0){ /* If not dimensionless generate error, otherwise */ if (!ignore_dimless(*current)) /* just skip over it */ return E_NOTROOT; } else { for(count /= n;count>0;count--) *(out++) = dupstr(*current); } current=ptr; } *out = 0; return 0; } int rootunit(struct unittype *inunit,int n) { struct unittype outunit; int err; initializeunit(&outunit); if ((err=completereduce(inunit))) return err; /* Roots of negative numbers fail in pow(), even odd roots */ if (inunit->factor < 0) return E_NOTROOT; outunit.factor = pow(inunit->factor,1.0/(double)n); if ((err = subunitroot(n, inunit->numerator, outunit.numerator))) return err; if ((err = subunitroot(n, inunit->denominator, outunit.denominator))) return err; freeunit(inunit); initializeunit(inunit); return multunit(inunit,&outunit); } /* Compute the inverse of a unit (1/theunit) */ void invertunit(struct unittype *theunit) { char **ptr, *swap; int numlen, length, ind; theunit->factor = 1.0/theunit->factor; length=numlen=0; for(ptr=theunit->denominator;*ptr;ptr++,length++); for(ptr=theunit->numerator;*ptr;ptr++,numlen++); if (numlen>length) length=numlen; for(ind=0;ind<=length;ind++){ swap = theunit->numerator[ind]; theunit->numerator[ind] = theunit->denominator[ind]; theunit->denominator[ind] = swap; } } int float2rat(double y, int *p, int *q) { int coef[20]; /* How long does this buffer need to be? */ int i,termcount,saveq; double fracpart,x; /* Compute continued fraction approximation */ x=y; termcount=0; while(1){ coef[termcount] = (int) floor(x); fracpart = x-coef[termcount]; if (fracpart < .001 || termcount==19) break; x = 1/fracpart; termcount++; } /* Compress continued fraction into rational p/q */ *p=0; *q=1; for(i=termcount;i>=1;i--) { saveq=*q; *q = coef[i] * *q + *p; *p = saveq; } *p+=*q*coef[0]; return *qfactor = pow(base->factor,exponent->factor); if (errno) return E_FUNC; } else if (errcode==E_NOTANUMBER) { /* Base not dimensionless */ if (!float2rat(exponent->factor,&p,&q)){ /* Exponent must be rational */ if (unitdimless(base)){ base->factor = pow(base->factor,exponent->factor); if (errno) return E_FUNC; } else return E_IRRATIONAL_EXPONENT; } else { if (q!=1) { errcode = rootunit(base, q); if (errcode == E_NOTROOT) return E_BASE_NOTROOT; if (errcode) return errcode; } errcode = expunit(base, abs(p)); if (errcode) return errcode; if (p<0) invertunit(base); } } else return errcode; return 0; } /* Old units program would give message about what each operand reduced to, showing that they weren't conformable. Can this be achieved here? */ int addunit(struct unittype *unita, struct unittype *unitb) { int err; if ((err=completereduce(unita))) return err; if ((err=completereduce(unitb))) return err; if (compareunits(unita,unitb,ignore_nothing)) return E_BADSUM; unita->factor += unitb->factor; freeunit(unitb); return 0; } double linearinterp(double a, double b, double aval, double bval, double c) { double lambda; lambda = (b-c)/(b-a); return lambda*aval + (1-lambda)*bval; } /* evaluate a user function */ #define INVERSE 1 #define FUNCTION 0 #define ALLERR 1 #define NORMALERR 0 int evalfunc(struct unittype *theunit, struct func *infunc, int inverse, int allerrors) { struct unittype result; struct functype *thefunc; int err; double value; int foundit, count; struct unittype *save_value; char *save_function; if (infunc->table) { /* Tables are short, so use dumb search algorithm */ err = parseunit(&result, infunc->tableunit, 0, 0); if (err) return E_BADFUNCDIMEN; if (inverse){ err = divunit(theunit, &result); if (err) return err; err = unit2num(theunit); if (err==E_NOTANUMBER) return E_BADFUNCARG; if (err) return err; value = theunit->factor; foundit=0; for(count=0;counttablelen-1;count++) if ((infunc->table[count].value<=value && value<=infunc->table[count+1].value) || (infunc->table[count+1].value<=value && value<=infunc->table[count].value)){ foundit=1; value = linearinterp(infunc->table[count].value, infunc->table[count+1].value, infunc->table[count].location, infunc->table[count+1].location, value); break; } if (!foundit) return E_NOTINDOMAIN; freeunit(&result); freeunit(theunit); theunit->factor = value; return 0; } else { err=unit2num(theunit); if (err) return err; value=theunit->factor; foundit=0; for(count=0;counttablelen-1;count++) if (infunc->table[count].location<=value && value<=infunc->table[count+1].location){ foundit=1; value = linearinterp(infunc->table[count].location, infunc->table[count+1].location, infunc->table[count].value, infunc->table[count+1].value, value); break; } if (!foundit) return E_NOTINDOMAIN; result.factor *= value; } } else { /* it's a function */ if (inverse){ thefunc=&(infunc->inverse); if (!thefunc->def) return E_NOINVERSE; } else thefunc=&(infunc->forward); err = completereduce(theunit); if (err) return err; if (thefunc->dimen){ err = parseunit(&result, thefunc->dimen, 0, 0); if (err) return E_BADFUNCDIMEN; err = completereduce(&result); if (err) return E_BADFUNCDIMEN; if (compareunits(&result, theunit, ignore_nothing)) return E_BADFUNCARG; value = theunit->factor/result.factor; } else value = theunit->factor; if (thefunc->domain_max && (value > *thefunc->domain_max || (thefunc->domain_max_open && value == *thefunc->domain_max))) return E_NOTINDOMAIN; if (thefunc->domain_min && (value < *thefunc->domain_min || (thefunc->domain_min_open && value == *thefunc->domain_min))) return E_NOTINDOMAIN; save_value = parameter_value; save_function = function_parameter; parameter_value = theunit; function_parameter = thefunc->param; err = parseunit(&result, thefunc->def, 0,0); function_parameter = save_function; parameter_value = save_value; if (err && (allerrors == ALLERR || err==E_PARSEMEM || err==E_PRODOVERFLOW || err==E_NOTROOT || err==E_BADFUNCTYPE)) return err; if (err) return E_FUNARGDEF; } freeunit(theunit); initializeunit(theunit); multunit(theunit, &result); return 0; } /* If the given character string has only one unit name in it, then print out the rule for that unit. In any case, print out the reduced form for the unit. */ void showdefinition(char *unitstr, struct unittype *theunit) { logputs(deftext); while((unitstr = lookupunit(unitstr,1)) && strspn(unitstr,digits) != strlen(unitstr) && !strchr(unitstr,PRIMITIVECHAR)) { tightprint(stdout,unitstr); if (logfile) tightprint(logfile,unitstr); logputs(" = "); } showunit(theunit); logputchar('\n'); } void showfunction(struct functype *func) { struct unittype unit; int not_dimensionless, i; if (!func->def) { logputs(" is undefined"); return; } if (func->dimen){ /* coverity[check_return] */ parseunit(&unit,func->dimen,0,0); /* unit2num returns 0 for */ not_dimensionless = unit2num(&unit); /* dimensionless units */ } logprintf("(%s) = %s", func->param, func->def); if (func->domain_min || func->domain_max){ logputchar('\n'); for(i=strwidth(deftext);i;i--) logputchar(' '); logputs("defined for "); if (func->domain_min && func->domain_max) { logprintf(num_format.format, *func->domain_min); if (func->dimen && (not_dimensionless || unit.factor != 1)){ if (isdecimal(*func->dimen)) logputs(" *"); logprintf(" %s",func->dimen); } logputs(func->domain_min_open?" < ":" <= "); } logputs(func->param); if (func->domain_max){ logputs(func->domain_max_open?" < ":" <= "); logprintf(num_format.format, *func->domain_max); } else { logputs(func->domain_min_open?" > ":" >= "); logprintf(num_format.format, *func->domain_min); } if (func->dimen && (not_dimensionless || unit.factor != 1)){ if (isdecimal(*func->dimen)) logputs(" *"); logprintf(" %s",func->dimen); } if (!func->dimen) logputs(" (any units)"); } else if (func->dimen){ logputchar('\n'); for(i=strwidth(deftext);i;i--) logputchar(' '); if (not_dimensionless) logprintf("%s has units %s",func->param, func->dimen); else logprintf("%s is dimensionless",func->param); } logputchar('\n'); } void showtable(struct func *fun, int inverse) { int i; logprintf("%sinterpolated table with points\n",deftext); if (inverse){ int reverse, j; reverse = (fun->table[0].value > fun->table[fun->tablelen-1].value); for(i=0;itablelen;i++){ if (reverse) j = fun->tablelen-i-1; else j=i; if (flags.verbose>0) logputs("\t\t "); logprintf("~%s(", fun->name); logprintf(num_format.format, fun->table[j].value); if (isdecimal(fun->tableunit[0])) logputs(" *"); logprintf(" %s",fun->tableunit); logputs(") = "); logprintf(num_format.format, fun->table[j].location); logputchar('\n'); } } else { for(i=0;itablelen;i++){ if (flags.verbose>0) logputs("\t\t "); logprintf("%s(", fun->name); logprintf(num_format.format, fun->table[i].location); logputs(") = "); logprintf(num_format.format, fun->table[i].value); if (isdecimal(fun->tableunit[0])) logputs(" *"); logprintf(" %s\n",fun->tableunit); } } } void showfuncdefinition(struct func *fun, int inverse) { if (fun->table) /* It's a table */ showtable(fun, inverse); else { logprintf("%s%s%s", deftext,inverse?"~":"", fun->name); if (inverse) showfunction(&fun->inverse); else showfunction(&fun->forward); } } void showunitlistdef(struct wantalias *alias) { logprintf("%sunit list, ",deftext); tightprint(stdout,alias->definition); if (logfile) tightprint(logfile,alias->definition); logputchar('\n'); } /* Show conversion to a function. Input unit 'have' is replaced by the function inverse and completely reduced. */ int showfunc(char *havestr, struct unittype *have, struct func *fun) { int err; char *dimen; err = evalfunc(have, fun, INVERSE, NORMALERR); if (!err) err = completereduce(have); if (err) { if (err==E_BADFUNCARG){ logputs("conformability error"); if (fun->table) dimen = fun->tableunit; else if (fun->inverse.dimen) dimen = fun->inverse.dimen; else dimen = 0; if (!dimen) logputchar('\n'); else { struct unittype want; if (emptystr(dimen)) dimen = "1"; logprintf(": conversion requires dimensions of '%s'\n",dimen); if (flags.verbose==2) logprintf("\t%s = ",havestr); else if (flags.verbose==1) logputchar('\t'); showunit(have); if (flags.verbose==2) logprintf("\n\t%s = ",dimen); else if (flags.verbose==1) logprintf("\n\t"); else logputchar('\n'); /* coverity[check_return] */ parseunit(&want, dimen, 0, 0); /* coverity[check_return] */ completereduce(&want); /* dimen was already checked for */ showunit(&want); /* errors so no need to check here */ logputchar('\n'); } } else if (err==E_NOTINDOMAIN) logprintf("Value '%s' is not in the function's range\n",havestr); else logputs("Function evaluation error (bad function definition)\n"); return 1; } if (flags.verbose==2) logprintf("\t%s = %s(", havestr, fun->inverse.param); else if (flags.verbose==1) logputchar('\t'); showunit(have); if (flags.verbose==2) logputchar(')'); logputchar('\n'); return 0; } /* Print the conformability error message */ void showconformabilityerr(char *havestr,struct unittype *have, char *wantstr,struct unittype *want) { logputs("conformability error\n"); if (flags.verbose==2) logprintf("\t%s = ",havestr); else if (flags.verbose==1) logputchar('\t'); showunit(have); if (flags.verbose==2) logprintf("\n\t%s = ",wantstr); else if (flags.verbose==1) logputs("\n\t"); else logputchar('\n'); showunit(want); logputchar('\n'); } /* end showconformabilityerr */ /* determine whether a unit string begins with a fraction; assume it does if it starts with an integer, '|', and another integer */ int isfract(const char *unitstr) { char *enddouble=0, *endlong=0; while (isdigit(*unitstr)) unitstr++; if (*unitstr++ == '|') { (void)strtod(unitstr, &enddouble); (void)strtol(unitstr, &endlong, 10); if (enddouble == endlong) return 1; } return 0; } int checksigdigits(char *arg) { int errors, ival; char *nonum; errors = 0; if (!strcmp(arg, "max")) num_format.precision = MAXPRECISION; else { ival = (int) strtol(arg, &nonum, 10); if (!emptystr(nonum)) { fprintf(stderr, "%s: invalid significant digits (%s)--integer value or 'max' required\n", progname, arg); errors++; } else if (ival <= 0) { fprintf(stderr, "%s: number of significant digits must be positive\n", progname); errors++; } else if (ival > MAXPRECISION) { fprintf(stderr, "%s: too many significant digits (%d)--using maximum value (%d)\n", progname, ival, MAXPRECISION); num_format.precision = MAXPRECISION; } else num_format.precision = ival; } if (errors) return -1; else return 0; } /* set output number format specification from significant digits and type */ int setnumformat() { size_t len; if (strchr("Ee", num_format.type)) num_format.precision--; len = 4; /* %, decimal point, type, terminating NUL */ if (num_format.precision > 0) len += (size_t) floor(log10((double) num_format.precision))+1; num_format.format = (char *) mymalloc(len, "(setnumformat)"); sprintf(num_format.format, "%%.%d%c", num_format.precision, num_format.type); return 0; } /* parse and validate the output number format specification and extract its type and precision into the num_format structure. Returns nonzero for invalid format. */ int parsenumformat() { static char *format_types = NULL; static char *format_flags = "+-# 0'"; static char badflag; char *two = "0x1p+1"; char *valid="ABCDEFGHIJKLMNOPQRSTUVWXYXabcdefghijklmnopqrstuvwxyx.01234567890"; char *dotptr, *lptr, *nonum, *p; char testbuf[80]; int errors, ndx; if (format_types == NULL){ format_types = (char *) mymalloc(strlen(BASE_FORMATS)+4, "(parsenumformat)"); strcpy(format_types,BASE_FORMATS); /* check for support of type 'F' (MS VS 2012 doesn't have it) */ sprintf(testbuf, "%.1F", 1.2); if (strlen(testbuf) == 3 && testbuf[0] == '1' && testbuf[2] == '2') strcat(format_types,"F"); /* check for support of hexadecimal floating point */ sprintf(testbuf, "%.0a", 2.0); if (!strcmp(testbuf,two)) strcat(format_types, "aA"); /* check for support of digit-grouping (') flag */ sprintf(testbuf, "%'.0f", 1234.0); if (strlen(testbuf) > 2 && testbuf[0] == '1' && testbuf[2] == '2') badflag = '\0'; /* supported */ else badflag = '\''; /* not supported */ } errors = 0; p = num_format.format; if (*p != '%') { fprintf(stderr, "%s: number format specification must start with '%%'\n", progname); errors++; } else if (strrchr(num_format.format, '%') != num_format.format) { fprintf(stderr, "%s: only one '%%' allowed in number format specification\n", progname); errors++; p++; } else p++; dotptr = strchr(num_format.format, '.'); if (dotptr && strrchr(num_format.format, '.') != dotptr) { fprintf(stderr, "%s: only one '.' allowed in number format specification\n", progname); errors++; } /* skip over flags */ while (*p && strchr(format_flags, *p)) { if (*p == badflag) { /* only if digit-grouping flag (') not supported */ fprintf(stderr, "%s: digit-grouping flag (') not supported\n", progname); errors++; } p++; } /* check for type length modifiers, which aren't allowed */ if ((lptr = strstr(num_format.format, "hh")) || (lptr = strstr(num_format.format, "ll"))) { fprintf(stderr, "%s: type length modifier (%.2s) not supported\n", progname, lptr); errors++; } else if ((lptr = strpbrk(num_format.format, "hjLltz"))) { fprintf(stderr, "%s: type length modifier (%c) not supported\n", progname, lptr[0]); errors++; } /* check for other invalid characters */ ndx = strspn(p, valid); if (ndx < strlen(p)) { fprintf(stderr, "%s: invalid character (%c) in width, precision, or type\n", progname, p[ndx]); errors++; } if (errors) { /* results of any other checks are likely to be misleading */ fprintf(stderr, "%s: invalid number format specification (%s)\n", progname, num_format.format); fprintf(stderr, "%s: valid specification is %%[flags][width][.precision]type\n", progname); return -1; } /* get width and precision if specified; check precision */ num_format.width = (int) strtol(p, &nonum, 10); if (*nonum == '.'){ if (isdigit(nonum[1])) num_format.precision = (int) strtol(nonum+1, &nonum, 10); else { num_format.precision = 0; nonum++; } } else /* precision not given--use printf() default */ num_format.precision = 6; /* check for valid format type */ if (emptystr(nonum)) { fprintf(stderr, "%s: missing format type\n", progname); errors++; } else { if (strchr(format_types, *nonum)) { if (nonum[1]) { fprintf(stderr, "%s: invalid character(s) (%s) after format type\n", progname, nonum + 1); errors++; } else num_format.type = *nonum; } else { fprintf(stderr, "%s: invalid format type (%c)--valid types are [%s]\n", progname, *nonum, format_types); errors++; } } if (num_format.precision == 0 && (num_format.type == 'G' || num_format.type == 'g')) num_format.precision = 1; if (errors) { fprintf(stderr, "%s: invalid number format specification (%s)\n", progname, num_format.format); fprintf(stderr, "%s: valid specification is %%[flags][width][.precision]type\n", progname); return -1; } else return 0; } /* round a number to the displayed precision; indicate in hasnondigits if a number will contain any character other than the digits 0-9 in the current display format. */ double round_to_displayed(double value, int *hasnondigits) { int buflen; char *buf; double rounded; if (!isfinite(value)){ if (hasnondigits) *hasnondigits = 1; return value; } /* allow for sign (1), radix (1), exponent (5), E or E formats (1), NUL */ buflen = num_format.precision + 9; if (num_format.width > buflen) buflen = num_format.width; if (strchr("Ff", num_format.type)) { int len=num_format.precision+2; if (fabs(value) > 1.0) len += (int) floor(log10(fabs(value))) + 1; if (len > buflen) buflen = len; } /* allocate space for thousands separators with digit-grouping (') flag */ /* assume worst case--that all groups are two digits */ if (strchr(num_format.format, '\'') && strchr("FfGg", num_format.type)) buflen = buflen*3/2; buf = (char *) mymalloc(buflen, "(round_to_displayed)"); sprintf(buf, num_format.format, value); if (hasnondigits){ if (strspn(buf, "1234567890") != strlen(buf)) *hasnondigits = 1; else *hasnondigits = 0; } rounded = strtod(buf, NULL); free(buf); return rounded; } /* Print the unit in 'unitstr' along with any necessary punctuation. The 'value' is the multiplier for the unit. If printnum is set to PRINTNUM then this value is printed, or set it to NOPRINTNUM to prevent the value from being printed. */ #define PRINTNUM 1 #define NOPRINTNUM 0 void showunitname(double value, char *unitstr, int printnum) { int hasnondigits; /* flag to indicate nondigits in displayed value */ double rnd_value; /* value rounded to displayed precision */ rnd_value = round_to_displayed(value, &hasnondigits); if (printnum && !(rnd_value == 1 && isdecimal(*unitstr))) logprintf(num_format.format, value); if (strpbrk(unitstr, "+-")) /* show sums and differences of units */ logprintf(" (%s)", unitstr); /* in parens */ /* fractional unit 1|x and multiplier is all digits and not one-- */ /* no space or asterisk or numerator (3|8 in instead of 3 * 1|8 in) */ else if (printnum && !flags.showfactor && startswith(unitstr,"1|") && isfract(unitstr) && rnd_value != 1 && !hasnondigits) logputs(unitstr+1); /* multiplier is unity and unit begins with a number--no space or */ /* asterisk (multiplier was not shown, and the space was already output)*/ else if (rnd_value == 1 && isdecimal(*unitstr)) logputs(unitstr); /* unitstr begins with a non-fraction number and multiplier was */ /* shown--prefix a spaced asterisk */ else if (isdecimal(unitstr[0])) logprintf(" * %s", unitstr); else logprintf(" %s", unitstr); } /* Show the conversion factors or print the conformability error message */ int showanswer(char *havestr,struct unittype *have, char *wantstr,struct unittype *want) { struct unittype invhave; int doingrec; /* reciprocal conversion? */ char *right = NULL, *left = NULL; doingrec=0; if (compareunits(have, want, ignore_dimless)) { char **src,**dest; invhave.factor=1/have->factor; for(src=have->numerator,dest=invhave.denominator;*src;src++,dest++) *dest=*src; *dest=0; for(src=have->denominator,dest=invhave.numerator;*src;src++,dest++) *dest=*src; *dest=0; if (flags.strictconvert || compareunits(&invhave, want, ignore_dimless)){ showconformabilityerr(havestr, have, wantstr, want); return -1; } if (flags.verbose>0) logputchar('\t'); logputs("reciprocal conversion\n"); have=&invhave; doingrec=1; } if (flags.verbose==2) { if (!doingrec) left=right=""; else if (strchr(havestr,'/')) { left="1 / ("; right=")"; } else { left="1 / "; right=""; } } /* Print the first line of output. */ if (flags.verbose==2) logprintf("\t%s%s%s = ",left,havestr,right); else if (flags.verbose==1) logputs("\t* "); if (flags.verbose==2) showunitname(have->factor / want->factor, wantstr, PRINTNUM); else logprintf(num_format.format, have->factor / want->factor); /* Print the second line of output. */ if (!flags.oneline){ if (flags.verbose==2) logprintf("\n\t%s%s%s = (1 / ",left,havestr,right); else if (flags.verbose==1) logputs("\n\t/ "); else logputchar('\n'); logprintf(num_format.format, want->factor / have->factor); if (flags.verbose==2) { logputchar(')'); showunitname(0,wantstr, NOPRINTNUM); } } logputchar('\n'); return 0; } /* Checks that the function definition has a valid inverse Prints a message to stdout if function has bad definition or invalid inverse. */ #define SIGN(x) ( (x) > 0.0 ? 1 : \ ( (x) < 0.0 ? (-1) : \ 0 )) void checkfunc(struct func *infunc, int verbose) { struct unittype theunit, saveunit; struct prefixlist *prefix; int err, i; double direction; if (infunc->skip_error_check){ if (verbose) printf("skipped function '%s'\n", infunc->name); return; } if (verbose) printf("doing function '%s'\n", infunc->name); if ((prefix=plookup(infunc->name)) && strlen(prefix->name)==strlen(infunc->name)) printf("Warning: '%s' defined as prefix and function\n",infunc->name); if (infunc->table){ /* Check for valid unit for the table */ if (parseunit(&theunit, infunc->tableunit, 0, 0) || completereduce(&theunit)) printf("Table '%s' has invalid units '%s'\n", infunc->name, infunc->tableunit); freeunit(&theunit); /* Check for monotonicity which is needed for unique inverses */ if (infunc->tablelen<=1){ printf("Table '%s' has only one data point\n", infunc->name); return; } direction = SIGN(infunc->table[1].value - infunc->table[0].value); for(i=2;itablelen;i++) if (SIGN(infunc->table[i].value-infunc->table[i-1].value) != direction){ printf("Table '%s' lacks unique inverse around entry %.8g\n", infunc->name, infunc->table[i].location); return; } return; } if (infunc->forward.dimen){ if (parseunit(&theunit, infunc->forward.dimen, 0, 0) || completereduce(&theunit)){ printf("Function '%s' has invalid units '%s'\n", infunc->name, infunc->forward.dimen); freeunit(&theunit); return; } } else initializeunit(&theunit); if (infunc->forward.domain_max && infunc->forward.domain_min) theunit.factor *= (*infunc->forward.domain_max+*infunc->forward.domain_min)/2; else if (infunc->forward.domain_max) theunit.factor = theunit.factor * *infunc->forward.domain_max - 1; else if (infunc->forward.domain_min) theunit.factor = theunit.factor * *infunc->forward.domain_min + 1; else theunit.factor *= 7; /* Arbitrary choice where we evaluate inverse */ if (infunc->forward.dimen){ unitcopy(&saveunit, &theunit); err = evalfunc(&theunit, infunc, FUNCTION, ALLERR); if (err) { printf("Error in definition %s(%s) as '%s':\n", infunc->name, infunc->forward.param, infunc->forward.def); printf(" %s\n",errormsg[err]); freeunit(&theunit); freeunit(&saveunit); return; } } else { # define MAXPOWERTOCHECK 4 struct unittype resultunit, arbunit; char unittext[9]; double factor; int errors[MAXPOWERTOCHECK], errcount=0; char *indent; strcpy(unittext,"(kg K)^ "); factor = theunit.factor; initializeunit(&saveunit); initializeunit(&resultunit); for(i=0;iname, infunc->forward.param, infunc->forward.def); printf(" appears to require a dimensionless argument, 'units' keyword not given\n"); indent = " "; } else if (errcount==MAXPOWERTOCHECK) { printf("Error or missing 'units' keyword in definion %s(%s) as '%s'\n", infunc->name, infunc->forward.param, infunc->forward.def); indent=" "; } else if (errcount){ printf("Warning: function '%s(%s)' defined as '%s'\n", infunc->name, infunc->forward.param, infunc->forward.def); printf(" failed for some test inputs:\n"); indent = " "; } for(i=0;iname); printf(num_format.format, factor); printf("%s): %s\n", unittext, errormsg[errors[i]]); } } if (completereduce(&theunit)){ printf("Definition %s(%s) as '%s' is irreducible\n", infunc->name, infunc->forward.param, infunc->forward.def); freeunit(&theunit); freeunit(&saveunit); return; } if (!(infunc->inverse.def)){ printf("Warning: no inverse for function '%s'\n", infunc->name); freeunit(&theunit); freeunit(&saveunit); return; } err = evalfunc(&theunit, infunc, INVERSE, ALLERR); if (err){ printf("Error in inverse ~%s(%s) as '%s':\n", infunc->name,infunc->inverse.param, infunc->inverse.def); printf(" %s\n",errormsg[err]); freeunit(&theunit); freeunit(&saveunit); return; } divunit(&theunit, &saveunit); if (unit2num(&theunit) || fabs(theunit.factor-1)>1e-12) printf("Inverse is not the inverse for function '%s'\n", infunc->name); freeunit(&theunit); } struct namedef { char *name; char *def; }; #define CONFORMABLE 1 #define TEXTMATCH 2 void addtolist(struct unittype *have, char *searchstring, char *rname, char *name, char *def, struct namedef **list, int *listsize, int *maxnamelen, int *count, int searchtype) { struct unittype want; int len = 0; int keepit = 0; if (!name) return; if (searchtype==CONFORMABLE){ initializeunit(&want); if (!parseunit(&want, name,0,0) && !completereduce(&want)) keepit = !compareunits(have,&want,ignore_dimless); } else if (searchtype == TEXTMATCH) { keepit = (strstr(rname,searchstring) != NULL); } if (keepit){ if (*count==*listsize){ *listsize += 100; *list = (struct namedef *) realloc(*list,*listsize*sizeof(struct namedef)); if (!*list){ fprintf(stderr, "%s: memory allocation error (addtolist)\n", progname); exit(EXIT_FAILURE); } } (*list)[*count].name = rname; if (strchr(def, PRIMITIVECHAR)) (*list)[*count].def = ""; else (*list)[*count].def = def; (*count)++; len = strwidth(name); if (len>*maxnamelen) *maxnamelen = len; } if (searchtype == CONFORMABLE) freeunit(&want); } int compnd(const void *a, const void *b) { return strcmp(((struct namedef *)a)->name, ((struct namedef *)b)->name); } /* Ideally this would return the actual screen height, but it's so hard to code that portably... */ int screensize() { return 20; } /* If have is non-NULL then search through all units and print the ones which are conformable with have. Otherwise search through all the units for ones whose names contain the second argument as a substring. */ void tryallunits(struct unittype *have, char *searchstring) { struct unitlist *uptr; struct namedef *list; int listsize, maxnamelen, count; struct func *funcptr; struct wantalias *aliasptr; int i, j, searchtype; FILE *outfile; char *seploc, *firstunit; list = (struct namedef *) mymalloc( 100 * sizeof(struct namedef), "(tryallunits)"); listsize = 100; maxnamelen = 0; count = 0; if (have) searchtype = CONFORMABLE; else { if (!searchstring) searchstring=""; searchtype = TEXTMATCH; } for(i=0;inext) addtolist(have, searchstring, uptr->name, uptr->name, uptr->value, &list, &listsize, &maxnamelen, &count, searchtype); for(i=0;inext){ if (funcptr->table) addtolist(have, searchstring, funcptr->name, funcptr->tableunit, "", &list, &listsize, &maxnamelen, &count, searchtype); else addtolist(have, searchstring, funcptr->name, funcptr->inverse.dimen, "", &list, &listsize, &maxnamelen, &count, searchtype); } for(aliasptr=firstalias;aliasptr;aliasptr=aliasptr->next){ firstunit = dupstr(aliasptr->definition);/* coverity[var_assigned] */ seploc = strchr(firstunit,UNITSEPCHAR); /* Alias definitions allowed in */ *seploc = 0; /* database contain UNITSEPCHAR */ addtolist(have, searchstring, aliasptr->name, firstunit, aliasptr->definition, &list, &listsize, &maxnamelen, &count, searchtype); free(firstunit); } qsort(list, count, sizeof(struct namedef), compnd); outfile = 0; if (count==0) puts("No matching units found."); #ifdef SIGPIPE signal(SIGPIPE, SIG_IGN); #endif if (count>screensize()){ outfile = popen(pager, "w"); } if (!outfile) outfile = stdout; for(i=0;i=0; if (!valid) printf("Error: %s\n",invalid_utf8); } #else fputs(query, stdout); if (!fgetslong(buffer, bufsize, stdin,0)){ if (!flags.quiet) putchar('\n'); exit(EXIT_SUCCESS); } replacectrlchars(*buffer); #endif } #ifndef READLINE # define getuser getuser_noreadline #else /* we DO have readline */ void getuser_readline(char **buffer, int *bufsize, const char *query) { #ifdef SUPPORT_UTF8 int valid = 0; while (!valid){ if (*buffer) free(*buffer); *buffer = readline(query); if (*buffer) replacectrlchars(*buffer); if (!*buffer || strwidth(*buffer)>=0) valid=1; else printf("Error: %s\n",invalid_utf8); } #else if (*buffer) free(*buffer); *buffer = readline(query); if (*buffer) replacectrlchars(*buffer); #endif if (*buffer && **buffer) add_history(*buffer); if (!*buffer){ if (!flags.quiet) putchar('\n'); exit(EXIT_SUCCESS); } } void getuser(char **buffer, int *bufsize, const char *query) { if (flags.readline) getuser_readline(buffer,bufsize,query); else getuser_noreadline(buffer,bufsize,query); } /* Unit name completion for readline. Complete function names or alias names or builtin functions. Complete to the end of a prefix or complete to the end of a unit. If the text includes a full prefix plus part of a unit and if the prefix is longer than one character then complete that compound. Don't complete a prefix fragment into prefix plus anything. */ #define CU_ALIAS 0 #define CU_BUILTIN 1 #define CU_FUNC 2 #define CU_PREFIX 3 #define CU_UNITS 4 #define CU_DONE 5 char * completeunits(char *text, int state) { static int uhash, fhash, phash, checktype; static struct prefixlist *curprefix, *unitprefix; static struct unitlist *curunit; static struct func *curfunc; static struct wantalias *curalias; static char **curbuiltin; char *output = 0; #ifndef NO_SUPPRESS_APPEND rl_completion_suppress_append = 1; #endif if (!state){ /* state == 0 means this is the first call, so initialize */ checktype = 0; /* start at first type */ fhash = uhash = phash = 0; unitprefix=0; /* search for unit continuations starting with this prefix */ curfunc=ftab[fhash]; curunit=utab[uhash]; curprefix=ptab[phash]; curbuiltin = builtins; curalias = firstalias; } while (checktype != CU_DONE){ if (checktype == CU_ALIAS){ while(curalias){ if (startswith(curalias->name,text)) output = dupstr(curalias->name); curalias = curalias->next; if (output) return output; } checktype++; } if (checktype == CU_BUILTIN){ while(*curbuiltin){ if (startswith(*curbuiltin,text)) output = dupstr(*curbuiltin); curbuiltin++; if (output) return output; } checktype++; } while (checktype == CU_FUNC){ while (!curfunc && fhashname,text)) output = dupstr(curfunc->name); curfunc = curfunc->next; if (output) return output; } } while (checktype == CU_PREFIX){ while (!curprefix && phashname,text)) output = dupstr(curprefix->name); curprefix = curprefix->next; if (output) return output; } } while (checktype == CU_UNITS){ while (!curunit && uhashname)>1){ uhash = 0; curunit = utab[uhash]; } if (!curunit) { checktype++; break; } if (unitprefix){ if (startswith(curunit->name, text+unitprefix->len)){ output = (char *)mymalloc(1+strlen(curunit->name)+unitprefix->len, "(completeunits)"); strcpy(output, unitprefix->name); strcat(output, curunit->name); } } else if (startswith(curunit->name,text)) output = dupstr(curunit->name); curunit=curunit->next; if (output) return output; } } return 0; } #endif /* READLINE */ /* see if current directory contains an executable file */ int checkcwd (char *file) { FILE *fp; char *p; fp = fopen(file, "r"); if (fp){ fclose(fp); return 1; } #ifdef _WIN32 else if (!((p = strrchr(file, '.')) && isexe(p))) { char *pathname; pathname = mymalloc(strlen(file) + strlen(EXE_EXT) + 1, "(checkcwd)"); strcpy(pathname, file); strcat(pathname, EXE_EXT); fp = fopen(pathname, "r"); free(pathname); if (fp) { fclose(fp); return 1; } } #endif return 0; } /* return the last component of a pathname, and remove a .exe extension if one exists. */ char * getprogramname(char *path) { size_t proglen; char *p; path = pathend(path); /* get rid of filename extensions in Windows */ proglen = strlen(path); if ((p = strrchr(path, '.')) && isexe(p)) proglen -= 4; return dupnstr(path, proglen); } /* Find the directory that contains the invoked executable. */ char * getprogdir(char *progname, char **fullprogname) { char *progdir = NULL; char *p; #if defined (_WIN32) && defined (_MSC_VER) char buf[FILENAME_MAX + 1]; /* get the full pathname of the current executable and be done with it */ /* TODO: is there way to do this with gcc? */ if (GetModuleFileName(NULL, buf, FILENAME_MAX + 1)) progdir = dupstr(buf); #endif /* If path name is absolute or includes more than one component use it */ if (!progdir && (isfullpath(progname) || hasdirsep(progname))) progdir = dupstr(progname); /* command.com and cmd.exe under Windows always run a program that's in the current directory whether or not the current directory is in PATH, so we need to check the current directory. This could return a false positive if units is run from a Unix-like command interpreter under Windows if the current directory is not in PATH but contains 'units' or 'units.exe' */ #if defined (_WIN32) && !defined (_MSC_VER) if (!progdir && checkcwd(progname)) progdir = dupstr(progname); #endif /* search PATH to find the executable */ if (!progdir) { char *env; env = getenv("PATH"); if (env) { /* search PATH */ char *direc, *direc_end, *pathname; int len; FILE *fp; pathname = mymalloc(strlen(env)+strlen(progname)+strlen(EXE_EXT)+2, "(getprogdir)"); direc = env; while (direc) { direc_end = strchr(direc,PATHSEP); if (!direc_end) len = strlen(direc); else len = direc_end-direc; strncpy(pathname, direc, len); if (len>0) pathname[len++]='/'; strcpy(pathname+len, progname); fp = fopen(pathname, "r"); if (fp){ progdir = dupstr(pathname); break; } #ifdef _WIN32 /* executable may or may not have '.exe' suffix, so we need to look for both */ if (!((p = strrchr(pathname, '.')) && isexe(p))) { strcat(pathname, EXE_EXT); fp = fopen(pathname, "r"); if (fp){ progdir = dupstr(pathname); break; } } #endif direc = direc_end; if (direc) direc++; } free(pathname); if (fp) fclose(fp); } } if (!progdir) { fprintf(stderr, "%s: cannot find program directory\n", progname); exit(EXIT_FAILURE); } *fullprogname = dupstr(progdir); /* used by printversion() */ p = pathend(progdir); *p = '\0'; return progdir; } /* find a possible data directory relative to a 'bin' directory that contains the executable */ char * getdatadir() { int progdirlen; char *p; progdirlen = strlen(progdir); datadir = (char *) mymalloc(progdirlen + strlen(DATADIR) + 2, "(getdatadir)"); strcpy(datadir, progdir); if (isdirsep(progdir[progdirlen - 1])) datadir[progdirlen - 1] = '\0'; /* so pathend() can work */ p = pathend(datadir); if ((strlen(p) == 3) && (tolower(p[0]) == 'b') \ && (tolower(p[1]) == 'i') && (tolower(p[2]) == 'n')) { p = DATADIR; while (*p == '.') /* ignore "./", "../" */ p++; if (isdirsep(*p)) p++; strcpy(pathend(datadir), p); return datadir; } else return NULL; } char * findlocalemap(int checkonly) { FILE *map = NULL; char *filename = NULL; char *file; /* Try the environment variable UNITSLOCALEMAP, then the #defined value LOCALEMAP, then the directory containing the units executable, then the directory given by DATADIR (relative to the directory with the executable), and finally, the directory containing the units data file. */ file = getenv("UNITSLOCALEMAP"); if (file && *file) { map = fopen(file,"rt"); if (!map) { if (!checkonly) { fprintf(stderr, "%s: cannot open locale map '%s'\n specified in UNITSLOCALEMAP environment variable. ", progname, file); perror((char *) NULL); } return NULL; } else filename = dupstr(file); } if (!map) { file = LOCALEMAP; map = fopen(file,"rt"); if (map) filename = dupstr(file); } if (!map && !progdir) { if (!checkonly) { fprintf(stderr, "%s: cannot find locale map--program directory not set\n", progname); exit(EXIT_FAILURE); } else return NULL; } /* check the directory with the units executable */ if (!map) { filename = (char *) mymalloc(strlen(progdir) + strlen(file) + 2, "(findlocalemap)"); strcpy(filename, progdir); strcat(filename, file); map = fopen(filename,"rt"); } if (!map && !emptystr(DATADIR)) { /* check data directory relative to the units executable directory */ if (!datadir) datadir = getdatadir(); if (datadir) { if (filename) free(filename); filename = (char *) mymalloc(strlen(datadir) + strlen(DATADIR) + strlen(file) + 2, "(findlocalemap)"); strcpy(filename, datadir); strcat(filename, "/"); strcat(filename, file); map = fopen(filename, "rt"); } } /* check the directory with the units data file */ if (!map) { if (filename) free(filename); filename = (char *) mymalloc(strlen(unitsfiles[0]) + strlen(file) + 2, "(findlocalemap)"); strcpy(filename, unitsfiles[0]); strcpy(pathend(filename), file); map = fopen(filename,"rt"); } if (map) { fclose(map); return filename; } else { if (filename) free(filename); return NULL; } } char * findunitsfile(int noerrmsg) { FILE *testfile=0; char *file; file = getenv("UNITSFILE"); if (file && *file) { testfile = fopen(file, "rt"); if (!testfile) { if (!noerrmsg) { fprintf(stderr, "%s: cannot open units file '%s' in environment variable UNITSFILE. ", progname, file); perror((char *) NULL); } return NULL; } } if (!testfile && isfullpath(UNITSFILE)){ file = UNITSFILE; testfile = fopen(file, "rt"); if (!testfile) { if (!noerrmsg) { fprintf(stderr, "%s: cannot open units data file '%s'. ", progname, UNITSFILE); perror((char *) NULL); } return NULL; } } if (!testfile && !progdir) { if (!noerrmsg) { fprintf(stderr, "%s: cannot open units file '%s' and cannot find program directory.\n", progname, UNITSFILE); perror((char *) NULL); } return NULL; } if (!testfile) { /* check the directory containing the units executable */ file = (char *) mymalloc(strlen(progdir)+strlen(UNITSFILE)+1, "(findunitsfile)"); strcpy(file, progdir); strcat(file, UNITSFILE); testfile = fopen(file, "rt"); if (!testfile) free(file); } if (!testfile && !emptystr(DATADIR)) { /* check data directory relative to the units executable directory */ if (!datadir) datadir = getdatadir(); if (datadir) { file = (char *) mymalloc(strlen(datadir) + strlen(UNITSFILE) + 2, "(findunitsfile)"); strcpy(file, datadir); strcat(file, "/"); strcat(file, UNITSFILE); testfile = fopen(file, "rt"); if (!testfile) free(file); } } if (!testfile) { if (!noerrmsg) fprintf(stderr,"%s: cannot find units file '%s'\n", progname, UNITSFILE); return NULL; } else { fclose(testfile); return file; } } /* Find a personal file. First checks the specified environment variable (envname) for the filename to use. If this is unset then search user's home directory for basename. If home directory cannot be found, returns NULL. Otherwise if the file exists then returns its name in newly allocated space and sets *exists to 1. If the file does not exist then sets *exist to zero and: With checkonly == 0, prints error message and returns NULL With checkonly != 0, returns filename (does not print error message) */ char * personalfile(const char *envname, const char *basename, int checkonly, int *exists) { FILE *testfile=0; char *homedir, *filename=0; *exists = 0; /* First check the specified environment variable for a file name */ if (envname) filename = getenv(envname); if (filename && *filename){ /* environment variable exists */ testfile = fopen(filename, "rt"); if (testfile){ fclose(testfile); *exists = 1; return filename; } if (checkonly) return filename; else { fprintf(stderr, "%s: cannot open file '%s' specified in %s environment variable. ", progname, filename, envname); perror((char *) NULL); return 0; } } /* The environment variable was not set so identify the user's home directory. Under Windows if HOME is set we assume it's meant to override HOMEDRIVE, HOMEPATH, and USERPROFILE */ homedir = getenv("HOME"); if (homedir) { filename = mymalloc(strlen(homedir)+strlen(basename)+2, "(personalfile)"); strcpy(filename,homedir); } else #ifndef _WIN32 { /* If not running Windows there is nothing else to try */ return 0; } #else { /* If running Windows try a few other places */ /* try HOMEDRIVE and HOMEPATH */ char *homedrive, *homepath; if ((homedrive = getenv("HOMEDRIVE")) && (homepath = getenv("HOMEPATH"))) { filename = mymalloc(strlen(homedrive)+strlen(homepath) +strlen(basename)+2,"(personalfile)"); strcpy(filename,homedrive); strcat(filename,homepath); } /* finally, try USERPROFILE */ else if ((homedir = getenv("USERPROFILE"))) { filename = mymalloc(strlen(homedir)+strlen(basename)+2, "(personalfile)"); strcpy(filename,homedir); } else return 0; } #endif /* _WIN32 */ /* With home directory in hand we now look for the file */ strcat(filename,"/"); strcat(filename,basename); testfile = fopen(filename, "rt"); if (testfile){ fclose(testfile); *exists = 1; return filename; } if (checkonly) return filename; else { if (errno==EACCES) { fprintf(stderr,"%s: cannot read file '%s'. ",progname,filename); perror(0); } free(filename); return 0; } } /* print usage message */ void usage() { char *unitsfile; /* nonzero argument suppresses error messages */ unitsfile = findunitsfile(1); printf("\nUsage: %s [options] ['from-unit' 'to-unit']\n",progname); printf("\n\ Options:\n\ -h, --help show this help and exit\n\ -c, --check check that all units reduce to primitive units\n\ --check-verbose like --check, but lists units as they are checked\n\ --verbose-check so you can find units that cause endless loops\n\ -d, --digits show output to specified number of digits (default: %d)\n\ -e, --exponential exponential format output\n\ -f, --file specify a units data file (-f '' loads default file)\n", DEFAULTPRECISION); #ifdef READLINE printf("\ -H, --history specify readline history file (-H '' disables history)\n"); #endif printf("\ -L, --log specify a file to log conversions\n\ -l, --locale specify a desired locale\n\ -m, --minus make - into a subtraction operator (default)\n\ --oldstar use old '*' precedence, higher than '/'\n\ --newstar use new '*' precedence, equal to '/'\n\ -n, --nolists disable conversion to unit lists\n\ -S, --show-factor show non-unity factor before 1|x in multi-unit output\n\ -o, --output-format specify printf numeric output format (default: %%.%d%c)\n\ -p, --product make '-' into a product operator\n\ -q, --quiet suppress prompting\n\ --silent same as --quiet\n\ -s, --strict suppress reciprocal unit conversion (e.g. Hz<->s)\n\ -v, --verbose show slightly more verbose output\n\ --compact suppress printing of tab, '*', and '/' character\n\ -1, --one-line suppress the second line of output\n\ -t, --terse terse output (--strict --compact --quiet --one-line)\n\ -r, --round round last element of unit list output to an integer\n\ -U, --unitsfile show units data filename and exit\n\ -u, --units specify a CGS unit system (gauss[ian]|esu|emu)\n\ -V, --version show version, data filenames (with -t: version only)\n\ -I, --info show version, files, and program properties\n", DEFAULTTYPE,DEFAULTPRECISION); if (!unitsfile) printf("Units data file '%s' not found.\n\n", UNITSFILE); else printf("To learn about the available units look in '%s'\n\n", unitsfile); puts("Report bugs to adrianm@gnu.org.\n\n"); } /* Print message about how to get help */ void helpmsg() { fprintf(stderr,"\nTry '%s --help' for more information.\n",progname); exit(EXIT_FAILURE); } /* show units version, and optionally, additional information */ void printversion() { int exists; char *unitsfile, *localemap; if (flags.verbose == 0) { printf("GNU Units version %s\n", VERSION); return; } printf("GNU Units version %s\n%s, %s, locale %s\n", VERSION, RVERSTR,UTF8VERSTR,mylocale); #if defined (_WIN32) && defined (HAVE_MKS_TOOLKIT) puts("With MKS Toolkit"); #endif if (flags.verbose == 2) { if (!fullprogname) getprogdir(progname, &fullprogname); if (fullprogname) printf("\n%s program is %s\n", progname, fullprogname); } /* units data file */ if (flags.verbose == 2) { putchar('\n'); unitsfile = getenv("UNITSFILE"); if (unitsfile) printf("Environment variable UNITSFILE set to '%s'\n", unitsfile); else puts("Environment variable UNITSFILE not set"); if (isfullpath(UNITSFILE)) printf("Default units data file is '%s'\n", UNITSFILE); else printf("Default units data file is '%s';\n %s will search for this file\n", UNITSFILE, progname); } unitsfile = findunitsfile(1); if (unitsfile && flags.verbose == 2 && !isfullpath(UNITSFILE)) printf("Found data file '%s'\n", unitsfile); else if (unitsfile) printf("Units data file is '%s'\n", unitsfile); else puts("*** Units data file not found ***"); /* personal units data file */ if (flags.verbose == 2) { putchar('\n'); unitsfile = getenv(HOME_UNITS_ENV); if (unitsfile) printf("Environment variable %s set to '%s'\n", HOME_UNITS_ENV,unitsfile); else printf("Environment variable %s not set\n", HOME_UNITS_ENV); } unitsfile = personalfile(HOME_UNITS_ENV, homeunitsfile, 1, &exists); if (unitsfile) { printf("Personal units data file is '%s'", unitsfile); if (!exists) puts("\n (file does not exist)"); else putchar('\n'); } else puts("Personal units data file not found: no home directory"); #ifdef READLINE if (flags.verbose == 2) { historyfile = personalfile(NULL,HISTORY_FILE,1,&exists); if (historyfile) printf("\nDefault readline history file is '%s'\n", historyfile); else puts("\nReadline history file unusable: no home directory"); } #endif #ifdef _WIN32 /* locale map */ if (flags.verbose == 2) { putchar('\n'); localemap = getenv("UNITSLOCALEMAP"); if (localemap) printf("Environment variable UNITSLOCALEMAP set to '%s'\n", localemap); else puts("Environment variable UNITSLOCALEMAP not set"); if (isfullpath(LOCALEMAP)) printf("Default locale map is '%s'\n", LOCALEMAP); else printf("Default locale map is '%s';\n %s will search for this file\n", LOCALEMAP, progname); localemap = findlocalemap(1); if (localemap && !isfullpath(LOCALEMAP)) printf("Found locale map '%s'\n", localemap); else if (localemap) printf("Locale map is '%s'\n", localemap); else puts("*** Locale map not found ***"); } #endif printf("\n\n%s\n\n", LICENSE); } void showunitsfile() { char *unitsfile; unitsfile = findunitsfile(1); if (unitsfile) printf("%s\n", unitsfile); else puts("Units data file not found"); } char *shortoptions = "VIUu:vqechSstf:o:d:mnpr1l:L:" #ifdef READLINE "H:" #endif ; struct option longoptions[] = { {"check", no_argument, &flags.unitcheck, 1}, {"check-verbose", no_argument, &flags.unitcheck, 2}, {"compact", no_argument, &flags.verbose, 0}, {"digits", required_argument, 0, 'd'}, {"exponential", no_argument, 0, 'e'}, {"file", required_argument, 0, 'f'}, {"help", no_argument, 0, 'h'}, #ifdef READLINE {"history", required_argument, 0, 'H'}, #endif {"info", no_argument, 0, 'I'}, {"locale", required_argument, 0, 'l'}, {"log", required_argument, 0, 'L'}, {"minus", no_argument, &parserflags.minusminus, 1}, {"newstar", no_argument, &parserflags.oldstar, 0}, {"nolists", no_argument, 0, 'n'}, {"oldstar", no_argument, &parserflags.oldstar, 1}, {"one-line", no_argument, &flags.oneline, 1}, {"output-format", required_argument, 0, 'o'}, {"product", no_argument, &parserflags.minusminus, 0}, {"quiet", no_argument, &flags.quiet, 1}, {"round",no_argument, 0, 'r'}, {"show-factor", no_argument, 0, 'S'}, {"silent", no_argument, &flags.quiet, 1}, {"strict",no_argument,&flags.strictconvert, 1}, {"terse",no_argument, 0, 't'}, {"unitsfile", no_argument, 0, 'U'}, {"units", required_argument, 0, 'u'}, {"verbose", no_argument, &flags.verbose, 2}, {"verbose-check", no_argument, &flags.unitcheck, 2}, {"version", no_argument, 0, 'V'}, {0,0,0,0} }; /* Process the args. Returns 1 if interactive mode is desired, and 0 for command line operation. If units appear on the command line they are returned in the from and to parameters. */ int processargs(int argc, char **argv, char **from, char **to) { extern char *optarg; extern int optind; int optchar, optindex; int ind; int doprintversion=0; char *unitsys=0; while ( -1 != (optchar = getopt_long(argc, argv,shortoptions,longoptions, &optindex ))) { switch (optchar) { case 'm': parserflags.minusminus = 1; break; case 'p': parserflags.minusminus = 0; break; case 't': flags.oneline = 1; flags.quiet = 1; flags.strictconvert = 1; flags.verbose = 0; break; /* numeric output format */ case 'd': if (checksigdigits(optarg) < 0) exit(EXIT_FAILURE); else /* ignore anything given with 'o' option */ num_format.format = NULL; break; case 'e': /* ignore anything given with 'o' option */ num_format.format = NULL; num_format.type = 'e'; break; case 'o': num_format.format = optarg; break; case 'c': flags.unitcheck = 1; break; case 'f': for(ind=0;unitsfiles[ind];ind++); if (ind==MAXFILES){ fprintf(stderr, "At most %d -f specifications are allowed\n", MAXFILES); exit(EXIT_FAILURE); } if (optarg && *optarg) unitsfiles[ind] = optarg; else { unitsfiles[ind] = findunitsfile(0); if (!unitsfiles[ind]) exit(EXIT_FAILURE); } unitsfiles[ind+1] = 0; break; case 'L': logfilename = optarg; break; case 'l': mylocale = optarg; break; case 'n': flags.unitlists = 0; break; case 'q': flags.quiet = 1; break; case 'r': flags.round = 1; break; case 'S': flags.showfactor = 1; break; case 's': flags.strictconvert = 1; break; case 'v': flags.verbose = 2; break; case '1': flags.oneline = 1; break; case 'I': flags.verbose = 2; /* fall through */ case 'V': doprintversion = 1; break; case 'U': showunitsfile(); exit(EXIT_SUCCESS); break; case 'u': unitsys = optarg; for(ind=0;unitsys[ind];ind++) unitsys[ind] = tolower(unitsys[ind]); break; case 'h': usage(); exit(EXIT_SUCCESS); #ifdef READLINE case 'H': if (emptystr(optarg)) historyfile=NULL; else historyfile = optarg; break; #endif case 0: break; /* This is reached if a long option is processed with no return value set. */ case '?': /* Invalid option or missing argument returns '?' */ default: helpmsg(); /* helpmsg() exits with error */ } } if (doprintversion){ printversion(); exit(EXIT_SUCCESS); } /* command-line option overwrites environment */ if (unitsys) setenv("UNITS_SYSTEM", unitsys, 1); if (flags.unitcheck) { if (optind != argc){ fprintf(stderr, "Too many arguments (arguments are not allowed with -c).\n"); helpmsg(); /* helpmsg() exits with error */ } } else { if (optind == argc - 2) { flags.quiet=1; *from = argv[optind]; *to = dupstr(argv[optind+1]); /* This string may get rewritten later */ return 0; /* and we might call free() on it */ } if (optind == argc - 1) { flags.quiet=1; *from = argv[optind]; *to=0; return 0; } if (optind < argc - 2) { fprintf(stderr,"Too many arguments (maybe you need quotes).\n"); helpmsg(); /* helpmsg() exits with error */ } } return 1; } /* Show a pointer under the input to indicate a problem. Prints 'position' spaces and then the pointer. If 'position' is negative, nothing is printed. */ void showpointer(int position) { if (position >= 0){ while (position--) putchar(' '); puts("^"); } } /* end showpointer */ /* Process the string 'unitstr' as a unit, placing the processed data in the unit structure 'theunit'. Returns 0 on success and 1 on failure. If an error occurs an error message is printed to stdout. A pointer ('^') will be printed if an error is detected, and promptlen should be set to the printing width of the prompt string, or set it to NOPOINT to supress printing of the pointer. */ int processunit(struct unittype *theunit, char *unitstr, int promptlen) { char *errmsg; int errloc,err; char savechar; if (flags.unitlists && strchr(unitstr, UNITSEPCHAR)){ puts("Unit list not allowed"); return 1; } if ((err=parseunit(theunit, unitstr, &errmsg, &errloc))){ if (promptlen >= 0){ if (err!=E_UNKNOWNUNIT || !irreducible){ if (errloc>0) { savechar = unitstr[errloc]; unitstr[errloc] = 0; showpointer(promptlen+strwidth(unitstr)-1); unitstr[errloc] = savechar; } else showpointer(promptlen); } } else printf("Error in '%s': ", unitstr); fputs(errmsg,stdout); if (err==E_UNKNOWNUNIT && irreducible) printf(" '%s'", irreducible); putchar('\n'); return 1; } if ((err=completereduce(theunit))){ fputs(errormsg[err],stdout); if (err==E_UNKNOWNUNIT) printf(" '%s'", irreducible); putchar('\n'); return 1; } return 0; } /* Checks the input parameter unitstr (a list of units separated by UNITSEPCHAR) for errors. All units must be parseable and conformable to each other. Returns 0 on success and 1 on failure. If an error is found then print an error message on stdout. A pointer ('^') will be printed to mark the error. The promptlen parameter should be set to the printing width of the prompt string so that the pointer is correctly aligned. To suppress the printing of the pointer set promptlen to NOPOINT. To suppress printing of error messages entirely set promptlen to NOERRMSG. */ int checkunitlist(char *unitstr, int promptlen) { struct unittype unit[2], one; char *firstunitstr,*nextunitstr; int unitidx = 0; int printerror = promptlen != NOERRMSG; initializeunit(&one); firstunitstr = unitstr; initializeunit(unit); initializeunit(unit+1); while (unitstr) { if ((nextunitstr = strchr(unitstr, UNITSEPCHAR)) != 0) *nextunitstr = '\0'; if (!unitstr[strspn(unitstr, " ")]) { /* unitstr is blank */ if (!nextunitstr) { /* terminal UNITSEPCHAR indicates repetition */ freeunit(unit); /* of last unit and is permitted */ return 0; } else { /* internal blank units are not allowed */ if (printerror){ showpointer(promptlen); puts("Error: blank unit not allowed"); } freeunit(unit); return 1; } } /* processunit() prints error messages; avoid it to supress them */ if ((printerror && processunit(unit+unitidx,unitstr,promptlen)) || (!printerror && (parseunit(unit+unitidx, unitstr,0,0) || completereduce(unit+unitidx) || compareunits(unit+unitidx,&one, ignore_primitive)))){ if (printerror) printf("Error in unit list entry: %s\n",unitstr); freeunit(unit); freeunit(unit+1); return 1; } if (unitidx == 0) unitidx = 1; else { if (compareunits(unit, unit+1, ignore_dimless)){ if (printerror){ int wasverbose = flags.verbose; FILE *savelog = logfile; logfile=0; flags.verbose = 2; /* always use verbose form to be unambiguous */ /* coverity[returned_null] */ *(strchr(firstunitstr, UNITSEPCHAR)) = '\0'; removespaces(firstunitstr); removespaces(unitstr); showpointer(promptlen); showconformabilityerr(firstunitstr, unit, unitstr, unit+1); flags.verbose = wasverbose; logfile = savelog; } freeunit(unit); freeunit(unit+1); return 1; } freeunit(unit+1); } if (nextunitstr) { if (promptlen >= 0) promptlen += strwidth(unitstr)+1; *(nextunitstr++) = UNITSEPCHAR; } unitstr = nextunitstr; } freeunit(unit); return 0; } /* end checkunitlist */ /* Call either processunit or checkunitlist, depending on whether the string 'unitstr' contains a separator character. Returns 0 on success and 1 on failure. If an error occurs an error message is printed to stdout. A pointer will be printed if an error is detected, and promptlen should be set to the printing width of the prompt string, or set it to NOPOINT to supress printing of the pointer. */ int processwant(struct unittype *theunit, char *unitstr, int promptlen) { if (flags.unitlists && strchr(unitstr, UNITSEPCHAR)) return checkunitlist(unitstr, promptlen); else return processunit(theunit, unitstr, promptlen); } void checkallaliases(int verbose) { struct wantalias *aliasptr; for(aliasptr = firstalias; aliasptr; aliasptr=aliasptr->next){ if (verbose) printf("doing unit list '%s'\n", aliasptr->name); if (checkunitlist(aliasptr->definition,NOERRMSG)) printf("Unit list '%s' contains errors\n", aliasptr->name); if (ulookup(aliasptr->name)) printf("Unit list '%s' hides a unit definition.\n", aliasptr->name); if (fnlookup(aliasptr->name)) printf("Unit list '%s' hides a function definition.\n", aliasptr->name); } } /* Check that all units and prefixes are reducible to primitive units and that function definitions are valid and have correct inverses. A message is printed for every unit that does not reduce to primitive units. */ void checkunits(int verbosecheck) { struct unittype have,second,one; struct unitlist *uptr; struct prefixlist *pptr; struct func *funcptr; char *prefixbuf, *testunit; int i; initializeunit(&one); /* Check all functions for valid definition and correct inverse */ for(i=0;inext) checkfunc(funcptr, verbosecheck); checkallaliases(verbosecheck); /* Now check all units for validity */ for(i=0;inext){ if (verbosecheck) printf("doing '%s'\n",uptr->name); if (parseunit(&have, uptr->name,0,0) || completereduce(&have) || compareunits(&have,&one, ignore_primitive)){ if (fnlookup(uptr->name)) printf("Unit '%s' hidden by function '%s'\n", uptr->name, uptr->name); else printf("'%s' defined as '%s' irreducible\n",uptr->name, uptr->value); } else { parserflags.minusminus = !parserflags.minusminus; /* coverity[check_return] */ parseunit(&second, uptr->name, 0, 0); /* coverity[check_return] */ completereduce(&second); /* Can't fail because it worked above */ if (compareunits(&have, &second, ignore_nothing)){ printf("'%s': replace '-' with '+-' for subtraction or '*' to multiply\n", uptr->name); } freeunit(&second); parserflags.minusminus=!parserflags.minusminus; } freeunit(&have); } /* Check prefixes */ testunit="meter"; for(i=0;inext){ if (verbosecheck) printf("doing '%s-'\n",pptr->name); prefixbuf = mymalloc(strlen(pptr->name) + strlen(testunit) + 1, "(checkunits)"); strcpy(prefixbuf,pptr->name); strcat(prefixbuf,testunit); if (parseunit(&have, prefixbuf,0,0) || completereduce(&have) || compareunits(&have,&one,ignore_primitive)) printf("'%s-' defined as '%s' irreducible\n",pptr->name, pptr->value); else { int plevel; /* check for bad '/' character in prefix */ char *ch; plevel = 0; for(ch=pptr->value;*ch;ch++){ if (*ch==')') plevel--; else if (*ch=='(') plevel++; else if (plevel==0 && *ch=='/'){ printf( "'%s-' defined as '%s' contains a bad '/'. (Add parentheses.)\n", pptr->name, pptr->value); break; } } } freeunit(&have); free(prefixbuf); } } /* Converts the input value 'havestr' (which is already parsed into the unit structure 'have') into a sum of the UNITSEPCHAR-separated units listed in 'wantstr'. You must call checkunitlist first to ensure 'wantstr' is error-free. Prints the results (or an error message) on stdout. Returns 0 on success and 1 on failure. */ int showunitlist(char *havestr, struct unittype *have, char *wantstr) { struct unittype want, lastwant; char *lastunitstr, *nextunitstr, *lastwantstr=0; double remainder; /* portion of have->factor remaining */ double round_dir; /* direction of rounding */ double value; /* value (rounded to integer with 'r' option) */ int firstunit = 1; /* first unit in a multi-unit string */ int value_shown = 0; /* has a value been shown? */ initializeunit(&want); remainder = have->factor; lastunitstr = 0; nextunitstr = 0; round_dir = 0; if (flags.round) { /* disable unit repetition with terminal UNITSEPCHAR when rounding */ if (lastchar(wantstr) == UNITSEPCHAR) lastchar(wantstr) = 0; if ((lastwantstr = strrchr(wantstr, UNITSEPCHAR))) lastwantstr++; } while (wantstr) { if ((nextunitstr = strchr(wantstr, UNITSEPCHAR))) *(nextunitstr++) = '\0'; removespaces(wantstr); /* if wantstr ends in UNITSEPCHAR, repeat last unit--to give integer and fractional parts (3 oz + 0.371241 oz rather than 3.371241 oz) */ if (emptystr(wantstr)) /* coverity[alias_transfer] */ wantstr = lastunitstr; if (processunit(&want, wantstr, NOPOINT)) { freeunit(&want); return 1; } if (firstunit){ /* checkunitlist() ensures conformability within 'wantstr', so we just need to check the first unit to see if it conforms to 'have' */ if (compareunits(have, &want, ignore_dimless)) { showconformabilityerr(havestr, have, wantstr, &want); freeunit(&want); return 1; } /* round to nearest integral multiple of last unit */ if (flags.round) { value = remainder; if (lastwantstr && *lastwantstr) { /* more than one unit */ removespaces(lastwantstr); initializeunit(&lastwant); if (processunit(&lastwant, lastwantstr, NOPOINT)) { freeunit(&lastwant); return 1; } remainder = floor(remainder / lastwant.factor + 0.5) * lastwant.factor; } else /* first unit is last unit */ remainder = floor(remainder / want.factor + 0.5) * want.factor; round_dir = remainder - value; } if (flags.verbose == 2) { removespaces(havestr); logprintf("\t%s = ", havestr); } else if (flags.verbose == 1) logputchar('\t'); } /* end if first unit */ if (nextunitstr) { remainder = want.factor * modf(remainder / want.factor, &value); if (round_to_displayed(remainder / want.factor, NULL) == 1) { value++; /* at displayed precision, value rounds up */ remainder = 0; /* and remainder is zero */ } else if (fabs(remainder / have->factor) < DBL_EPSILON) remainder = 0; /* remainder is just rounding error */ } else { /* last unit */ value = remainder / want.factor; if (!flags.round) { /* round to displayed precision */ value = round_to_displayed(value, NULL); } } if (!flags.verbose){ if (!firstunit) logputchar(UNITSEPCHAR); logprintf(num_format.format,value); value_shown=1; } else { /* verbose case */ if (value != 0) { if (value_shown) /* have already displayed a number so need a '+' */ logputs(" + "); showunitname(value, wantstr, PRINTNUM); value_shown=1; } } freeunit(&want); lastunitstr = wantstr; wantstr = nextunitstr; firstunit = 0; } /* if the final unit value was rounded print indication */ if (!value_shown) { /* provide output if every value rounded to zero */ logputs("0 "); if (isdecimal(*lastunitstr)) logputs("* "); logputs(lastunitstr); } if (round_dir != 0) { if (flags.verbose){ if (round_dir > 0) logprintf(" (rounded up to nearest %s) ", lastunitstr); else logprintf(" (rounded down to nearest %s) ", lastunitstr); } else logprintf("%c%c", UNITSEPCHAR, round_dir > 0 ?'-':'+'); } logputchar('\n'); return 0; } /* end showunitlist */ #if defined (_WIN32) && defined (HAVE_MKS_TOOLKIT) int ismksmore(char *pager) { static int mksmore = -1; if (mksmore >= 0) return mksmore; /* Tries to determine whether the MKS Toolkit version of more(1) or less(1) will run. Neither accepts '+', so if either will run, we need to give the option as '+g'. */ if (strstr(pager, "more") || strstr(pager, "less")) { char *mypager, *mkspager, *mksroot, *p; char pathbuf[FILENAME_MAX + 1]; struct _stat mybuf, mksbuf; mypager = NULL; mkspager = NULL; mksmore = 0; if (strlen(pager) > FILENAME_MAX) { fprintf(stderr, "%s: cannot invoke pager--value '%s' in PAGER too long\n", progname, pager); return 0; /* TODO: this really isn't the right value */ } else if (!isfullpath(pager)) { mypager = (char *) mymalloc(strlen(pager) + strlen(EXE_EXT) + 1, "(ishelpquery)"); strcpy(mypager, pager); if (!((p = strrchr(mypager, '.')) && isexe(p))) strcat(mypager, EXE_EXT); _searchenv(mypager, "PATH", pathbuf); } else strcpy(pathbuf, pager); mksroot = getenv("ROOTDIR"); if (mksroot) { char * mksprog; if (strstr(pager, "more")) mksprog = "more.exe"; else mksprog = "less.exe"; mkspager = (char *) mymalloc(strlen(mksroot) + strlen("/mksnt/") + strlen(mksprog) + 1, "(ishelpquery)"); strcpy(mkspager, mksroot); strcat(mkspager, "/mksnt/"); strcat(mkspager, mksprog); } if (*pathbuf && mksroot) { if (_stat(mkspager, &mksbuf)) { fprintf(stderr, "%s: cannot stat file '%s'. ", progname, mkspager); perror((char *) NULL); return 0; } if (_stat(pathbuf, &mybuf)) { fprintf(stderr, "%s: cannot stat file '%s'. ", progname, pathbuf); perror((char *) NULL); return 0; } /* if we had inodes, this would be simple ... but if it walks like a duck and swims like a duck and quacks like a duck ... */ if (mybuf.st_size == mksbuf.st_size && mybuf.st_ctime == mksbuf.st_ctime && mybuf.st_mtime == mksbuf.st_mtime && mybuf.st_atime == mksbuf.st_atime && mybuf.st_mode == mksbuf.st_mode) mksmore = 1; } if (mypager) free(mypager); if (mkspager) free(mkspager); } return mksmore; } #endif /* Checks to see if the input string contains HELPCOMMAND possibly followed by a unit name on which help is sought. If not, then return 0. Otherwise invoke the pager on units file at the line where the specified unit is defined. Then return 1. */ int ishelpquery(char *str, struct unittype *have) { struct unitlist *unit; struct func *function; struct wantalias *alias; struct prefixlist *prefix; char commandbuf[1000]; /* Hopefully this is enough overkill as no bounds */ int unitline; /* checking is performed. */ char *file; char **exitptr; if (have && !strcmp(str, UNITMATCH)){ tryallunits(have,0); return 1; } for(exitptr=exit_commands;*exitptr;exitptr++) if (!strcmp(str, *exitptr)) exit(EXIT_SUCCESS); if (startswith(str, SEARCHCOMMAND)){ str+=strlen(SEARCHCOMMAND); if (!emptystr(str) && *str != ' ') return 0; removespaces(str); if (emptystr(str)){ printf("\n\ Type 'search text' to see a list of all unit names \n\ containing 'text' as a substring\n\n"); return 1; } tryallunits(0,str); return 1; } if (startswith(str, HELPCOMMAND)){ str+=strlen(HELPCOMMAND); if (!emptystr(str) && *str != ' ') return 0; removespaces(str); if (emptystr(str)){ printf("\n\ Units converts between different measuring systems and %s6 inches\n\ acts as a units-aware calculator. At the '%s' %scm\n\ prompt, type in the units you want to convert from or * 15.24\n\ an expression to evaluate. At the '%s' prompt, / 0.065\n\ enter the units to convert to or press return to see\n\ the reduced form or definition. %stempF(75)\n\ %stempC\n\ The first example shows that 6 inches is about 15 cm 23.889\n\ or (1/0.065) cm. The second example shows how to\n\ convert 75 degrees Fahrenheit to Celsius. The third %sbu^(1/3)\n\ example converts the cube root of a bushel to a list %sft;in\n\ of semicolon-separated units. 1 ft + 0.9 in\n\ \n\ To quit from units type 'quit' or 'exit'. %s2 btu + 450 ft lbf\n\ %s(kg^2/s)/(day lb/m^2)\n\ At the '%s' prompt type '%s' to get a * 1.0660684e+08\n\ list of conformable units. At either prompt you / 9.3802611e-09\n\ type 'help myunit' to browse the units database\n\ and read the comments relating to myunit or see %s6 tbsp sugar\n\ other units related to myunit. Typing 'search %sg\n\ text' will show units whose names contain 'text'. * 75\n\ / 0.013333333\n", QUERYHAVE, QUERYHAVE, QUERYWANT, QUERYWANT, QUERYHAVE,QUERYWANT,QUERYHAVE,QUERYWANT, QUERYHAVE,QUERYWANT, QUERYWANT, UNITMATCH, QUERYHAVE,QUERYWANT); return 1; } if ((function = fnlookup(str))){ file = function->file; unitline = function->linenumber; } else if ((unit = ulookup(str))){ unitline = unit->linenumber; file = unit->file; } else if ((prefix = plookup(str)) && strlen(str)==prefix->len){ unitline = prefix->linenumber; file = prefix->file; } else if ((alias = aliaslookup(str))){ unitline = alias->linenumber; file = alias->file; } else { printf("Unknown unit '%s'\n",str); return 1; } #if defined (_WIN32) && defined (HAVE_MKS_TOOLKIT) if (ismksmore(pager)) /* inner escaped quotes are necessary for filenames with spaces; outer escaped quotes are necessary for cmd.exe to see the command as a single string containing one or more quoted strings (e.g., cmd /c ""command" "arg1" "arg2" ... ") */ sprintf(commandbuf,"\"\"%s\" +%dg \"%s\"\"", pager, unitline, file); else /* more.com seems to have positioning problems, and it can't back up */ sprintf(commandbuf,"\"\"%s\" +%d \"%s\"\"", pager, unitline > 2 ? unitline - 3 : unitline, file); #elif defined (_WIN32) sprintf(commandbuf,"\"\"%s\" +%d \"%s\"\"", pager, unitline > 2 ? unitline - 3 : unitline, file); #else sprintf(commandbuf,"%s +%d %s", pager, unitline, file); #endif if (system(commandbuf)) fprintf(stderr,"%s: cannot invoke pager '%s' to display help\n", progname, pager); return 1; } return 0; } #ifdef SUPPORT_UTF8 void checklocale() { char *temp; temp = setlocale(LC_CTYPE,""); utf8mode = (strcmp(nl_langinfo(CODESET),"UTF-8")==0); if (temp){ mylocale = dupstr(temp); temp = strchr(mylocale,'.'); if (temp) *temp = 0; } else mylocale = DEFAULTLOCALE; } #else void checklocale() { char *temp=0; #ifndef NO_SETLOCALE temp = setlocale(LC_CTYPE,""); #endif if (!temp) temp = getenv("LC_CTYPE"); if (!temp) temp = getenv("LANG"); if (!temp) mylocale = DEFAULTLOCALE; else { mylocale = dupstr(temp); temp = strchr(mylocale,'.'); if (temp) *temp = 0; } } #endif /* Replaces an alias in the specified string input. Returns 1 if the alias that is found contains errors. */ int replacealias(char **string, int *buflen) { int usefree = 1; struct wantalias *aliasptr; char *input; if (!flags.readline && buflen) usefree = 0; if (*string && **string) { /* check that string is defined and nonempty */ input = *string; removespaces(input); if ((aliasptr=aliaslookup(input))){ if (checkunitlist(aliasptr->definition,NOERRMSG)){ puts("Unit list definition contains errors."); return 1; } if (usefree){ free(*string); *string = dupstr(aliasptr->definition); } else { /* coverity[dead_error_line] */ while (strlen(aliasptr->definition)>*buflen) growbuffer(string, buflen); strcpy(*string, aliasptr->definition); } } } return 0; } /* Remaps the locale name returned on Windows systems to the value returned on Unix-like systems */ void remaplocale(char *filename) { FILE *map; char *value; char name[80]; map = fopen(filename,"rt"); if (!map) { fprintf(stderr,"%s: cannot open locale map '%s'. ",progname,filename); perror((char *) NULL); } else { while(!feof(map)){ if (!fgets(name,80,map)) break; lastchar(name) = 0; value=strchr(name,'#'); if (value) *value=0; value=strchr(name,'\t'); if (!value) continue; *value++=0; removespaces(value); removespaces(name); if (!strcmp(name, mylocale)) mylocale = dupstr(value); } fclose(map); } } void close_logfile(void) { if (logfile){ fputc('\n',logfile); fclose(logfile); } } void open_logfile(void) { time_t logtime; char * timestr; logfile = fopen(logfilename, "at"); if (!logfile){ fprintf(stderr, "%s: cannot write to log file '%s'. ", progname, logfilename); perror(0); exit(EXIT_FAILURE); } time(&logtime); timestr = ctime(&logtime); fprintf(logfile, "### Log started %s \n", timestr); atexit(close_logfile); } void write_files_sig(int sig) { #ifdef READLINE if (historyfile) save_history(); #endif close_logfile(); signal(sig, SIG_DFL); raise(sig); } int main(int argc, char **argv) { static struct unittype have, want; char *havestr=0, *wantstr=0; struct func *funcval; struct wantalias *alias; int havestrsize=0; /* Only used if READLINE is undefined */ int wantstrsize=0; /* Only used if READLINE is undefined */ int interactive; int readerr; char **unitfileptr; int unitcount=0, prefixcount=0, funccount=0; /* for counting units */ char *queryhave, *querywant, *comment; int queryhavewidth, querywantwidth; #ifdef _WIN32 char *localemap; #endif /* Set program parameter defaults */ num_format.format = NULL; num_format.precision = DEFAULTPRECISION; num_format.type = DEFAULTTYPE; flags.quiet = 0; /* Do not supress prompting */ flags.unitcheck = 0; /* Unit checking is off */ flags.verbose = 1; /* Medium verbosity */ flags.round = 0; /* Rounding off */ flags.strictconvert=0; /* Strict conversion disabled (reciprocals active) */ flags.unitlists = 1; /* Multi-unit conversion active */ flags.oneline = 0; /* One line output is disabled */ flags.showfactor = 0; /* Don't show a multiplier for a 1|x fraction */ /* in unit list output */ parserflags.minusminus = 1; /* '-' character gives subtraction */ parserflags.oldstar = 0; /* '*' has same precedence as '/' */ progname = getprogramname(argv[0]); /* unless UNITSFILE and LOCALEMAP have absolute pathnames, we may need progdir to search for supporting files */ if (!(isfullpath(UNITSFILE) && isfullpath(LOCALEMAP))) progdir = getprogdir(argv[0], &fullprogname); else { progdir = NULL; fullprogname = NULL; } datadir = NULL; /* directory to search as last resort */ checklocale(); #ifdef READLINE # if RL_READLINE_VERSION > 0x0402 rl_completion_entry_function = (rl_compentry_func_t *)completeunits; # else rl_completion_entry_function = (Function *)completeunits; # endif rl_basic_word_break_characters = " \t+-*/()|^;"; flags.readline = isatty(0); if (flags.readline){ int file_exists; historyfile = personalfile(NULL,HISTORY_FILE,1,&file_exists); } #else flags.readline = 0; #endif unitsfiles[0] = 0; #ifdef _WIN32 if (!strcmp(homeunitsfile,".units")) homeunitsfile = "unitdef.units"; localemap = findlocalemap(0); if (localemap) remaplocale(localemap); #endif interactive = processargs(argc, argv, &havestr, &wantstr); #ifdef READLINE if (interactive && flags.readline && historyfile){ rl_initialize(); read_history(historyfile); init_history_length = history_length; init_history_base = history_base; atexit(save_history); } #endif signal(SIGINT, write_files_sig); signal(SIGTERM, write_files_sig); if (logfilename) { if (!interactive) fprintf(stderr, "Log file '%s' ignored in non-interactive mode.\n",logfilename); else open_logfile(); } /* user has specified the complete format--use it */ if (num_format.format != NULL) { if (parsenumformat()) exit(EXIT_FAILURE); } else setnumformat(); if (flags.verbose==0) deftext = ""; if (!unitsfiles[0]){ char *unitsfile; unitsfile = findunitsfile(0); if (!unitsfile) exit(EXIT_FAILURE); else { int file_exists; unitsfiles[0] = unitsfile; unitsfiles[1] = personalfile(HOME_UNITS_ENV, homeunitsfile, 0, &file_exists); unitsfiles[2] = 0; } } for(unitfileptr=unitsfiles;*unitfileptr;unitfileptr++){ readerr = readunits(*unitfileptr, stderr, &unitcount, &prefixcount, &funccount, 0); if (readerr==E_MEMORY) exit(EXIT_FAILURE); if (readerr==E_FILE){ fprintf(stderr, "%s: cannot open units file '%s'. ", progname, *unitfileptr); perror(0); exit(EXIT_FAILURE); } } if (flags.quiet) queryhave = querywant = ""; /* No prompts are being printed */ else { if (!promptprefix){ queryhave = QUERYHAVE; querywant = QUERYWANT; } else { queryhave = (char *)mymalloc(strlen(promptprefix)+strlen(QUERYHAVE)+1, "(main)"); querywant = (char *)mymalloc(strlen(promptprefix)+strlen(QUERYWANT)+1, "(main)"); strcpy(queryhave, promptprefix); strcat(queryhave, QUERYHAVE); memset(querywant, ' ', strlen(promptprefix)); strcpy(querywant+strlen(promptprefix), QUERYWANT); } printf("%d units, %d prefixes, %d nonlinear units\n\n", unitcount, prefixcount,funccount); } queryhavewidth = strwidth(queryhave); querywantwidth = strwidth(querywant); if (flags.unitcheck) { checkunits(flags.unitcheck==2 || flags.verbose==2); exit(EXIT_SUCCESS); } if (!interactive) { replacectrlchars(havestr); if (wantstr) replacectrlchars(wantstr); #ifdef SUPPORT_UTF8 if (strwidth(havestr)<0){ printf("Error: %s on input\n",invalid_utf8); exit(EXIT_FAILURE); } if (wantstr && strwidth(wantstr)<0){ printf("Error: %s on input\n",invalid_utf8); exit(EXIT_FAILURE); } #endif replace_minus(havestr); removespaces(havestr); if (wantstr) { replace_minus(wantstr); removespaces(wantstr); } if ((funcval = fnlookup(havestr))){ showfuncdefinition(funcval, FUNCTION); exit(EXIT_SUCCESS); } if ((funcval = invfnlookup(havestr))){ showfuncdefinition(funcval, INVERSE); exit(EXIT_SUCCESS); } if ((alias = aliaslookup(havestr))){ showunitlistdef(alias); exit(EXIT_SUCCESS); } if (processunit(&have, havestr, NOPOINT)) exit(EXIT_FAILURE); if (!wantstr){ showdefinition(havestr,&have); exit(EXIT_SUCCESS); } if (replacealias(&wantstr, 0)) /* the 0 says that we can free wantstr */ exit(EXIT_FAILURE); if ((funcval = fnlookup(wantstr))){ if (showfunc(havestr, &have, funcval)) /* Clobbers have */ exit(EXIT_FAILURE); else exit(EXIT_SUCCESS); } if (processwant(&want, wantstr, NOPOINT)) exit(EXIT_FAILURE); if (strchr(wantstr, UNITSEPCHAR)){ if (showunitlist(havestr, &have, wantstr)) exit(EXIT_FAILURE); else exit(EXIT_SUCCESS); } if (showanswer(havestr,&have,wantstr,&want)) exit(EXIT_FAILURE); else exit(EXIT_SUCCESS); } else { /* interactive */ pager = getenv("PAGER"); if (!pager) pager = DEFAULTPAGER; for (;;) { do { fflush(stdout); getuser(&havestr,&havestrsize,queryhave); replace_minus(havestr); comment = strip_comment(havestr); removespaces(havestr); if (logfile && comment && emptystr(havestr)) fprintf(logfile, "#%s\n", comment); } while (emptystr(havestr) || ishelpquery(havestr,0) || (!fnlookup(havestr) && !invfnlookup(havestr) && !aliaslookup(havestr) && processunit(&have, havestr, queryhavewidth))); if (logfile) { if (comment) fprintf(logfile, "%s%s\t#%s\n", LOGFROM, havestr,comment); else fprintf(logfile, "%s%s\n", LOGFROM, havestr); } if ((alias = aliaslookup(havestr))){ showunitlistdef(alias); continue; } if ((funcval = fnlookup(havestr))){ showfuncdefinition(funcval, FUNCTION); continue; } if ((funcval = invfnlookup(havestr))){ showfuncdefinition(funcval, INVERSE); continue; } do { int repeat; do { repeat = 0; fflush(stdout); getuser(&wantstr,&wantstrsize,querywant); replace_minus(wantstr); comment = strip_comment(wantstr); removespaces(wantstr); if (logfile && comment && emptystr(wantstr)){ fprintf(logfile, "#%s\n", comment); repeat = 1; } if (ishelpquery(wantstr, &have)){ repeat = 1; printf("%s%s\n",queryhave, havestr); } } while (repeat); } while (replacealias(&wantstr, &wantstrsize) || (!fnlookup(wantstr) && processwant(&want, wantstr, querywantwidth))); if (logfile) { fprintf(logfile, "%s", LOGTO); tightprint(logfile, wantstr); if (comment) fprintf(logfile, "\t#%s", comment); putc('\n', logfile); } if (emptystr(wantstr)) showdefinition(havestr,&have); else if (strchr(wantstr, UNITSEPCHAR)) showunitlist(havestr, &have, wantstr); else if ((funcval = fnlookup(wantstr))) showfunc(havestr, &have, funcval); /* Clobbers have */ else { showanswer(havestr,&have,wantstr, &want); freeunit(&want); } unitcopy(&lastunit, &have); lastunitset=1; freeunit(&have); } } return (0); } /* NOTES: mymalloc, growbuffer and tryallunits are the only places with print statements that should (?) be removed to make a library. How can error reporting in these functions (memory allocation errors) be handled cleanly for a library implementation? Way to report the reduced form of the two operands of a sum when they are not conformable. Way to report the required domain when getting an domain error. */ units-2.19/ChangeLog0000664000175000017500000003430512407773204013654 0ustar adrianadrian2014-09-22 Adrian Mariano * units.c (readunits): changed comment processing to happen before unicode validity check, so that comments can contain bogus unicode (if desired). 2014-03-28 Adrian Mariano * units.c (main): Changed getprogname->getprogramname to avoid CYGWIN conflict. 2014-01-23 Adrian Mariano * units.c (processargs): Only print error message for invalid entries plus the short message on how to get longer help. 2014-01-03 Adrian Mariano * parse.y: Switch to %parse-param and %lex-param so that parser will work with Bison 3.0. 2013-12-20 Adrian Mariano * units.c: Put functions into hash table like the table used for prefixes. * units.c (unitpower): Convert exponents to rationals using new function float2rat. This enables support for rational exponents with numerators larger than 1. * units.c (completeunits): Rewrote this function to handle hashed functions as well as prefixes and built in functions. 2011-01-23 Adrian Mariano * parse.y (yylex): Tweaked scanner to raise a new error (BADNUMBER) when a number is immediately followed by more numeric characters. This prevents things like 1.2.3 and 1..2 which were both legal and had possibly unexpected parsings before. Added new error code to units.h and new error message to units.c. 2010-05-20 Adrian Mariano * units.c: Added utf8 support. Added code to check for !utf8 in units.dat. Added better checking for locale. Added strwidth() to determine with of a utf8 string, and corrected code to use this function where appropriate. 2009-12-05 Adrian Mariano * units.c (rootunit): Fixed bug (n & 1==0) is always false * Numerous minor changes for eliminating warnings with -Wall 2009-10-03 Adrian Mariano * units.c (main): Changed RL_READLINE_VERSION test from > to >=. 2007-05-18 adrian * units.c (personalunitsfile): Added personalunitsfile() function to find ~/.units.dat if it exists. Added code in main() to load this file (first) when no -f specifications occur. (tryallunits): Modified to perform searching either for conformable units or for text matching units. This required changes to addtolist() as well. * parse.y: Added entry to support x^-y when - is not a multiply operator. Added MULTSTAR type and support for lower multiply precedence for '*'. Added special check for '**' operator as the old code didn't work. 2006-02-26 adrian * units.c: Added -1/--one-line option to display one line of output only. * units.c: Added --compact option to print output with only the conversion factor. * units.c: Changed verbose variable. Now it is 1 for normal output, zero for less output and 2 for more verbose output. The --compact option sets it to zero, and --verbose sets it to 2. The --terse option now simply sets other options. 2005-09-10 adrian * parse.y: Declared err as static and added %name-prefix to parser to make it possible to use units as a library. Note that declaring err as static also averts a bus error on the Intel Mac. 2004-12-12 adrian * units.c (checkunits): Added check for units that use '-' as a binary operator. These units will act differently depending on the way the program is invoked, so print a warning. * units.c (compareproducts): Modified to use a pointer to a function to decide whether a unit should be regarded as dimensionless. Added functions ignore_dimless(), ignore_primitive() and ignore_nothing() to use for invoking compareproducts. Modified compareunits to take this parameter as well. 2004-06-20 Adrian Mariano * parse.y: Added MINUS token and changed lexer to treat '-' according to the global variable minusminus either as MINUS or in the old fashion as MULTMINUS. * parse.y (funcunit): Added call to freeunit() to close memory leak. * units.c (compareproducts): Altered this function to use isdimless() when comparing units so that dimensionless units can be ignored in the comparison. Added isdimless() which checks whether a unit is defined as NODIM. 2003-12-04 Adrian Mariano * units.c (lookupunit): Added check for -ies plural 2003-09-20 Adrian Mariano * units.c (readunits): Wrote in a file to capture error messages, pass back an error return instead of calling exit(), do included units files with "!include", give error on nested "!locale" statements. 2003-05-09 Adrian Mariano * units.c: (readunits): Added error checking for function and prefix names. 2002-05-06 Adrian Mariano * units.c (reduceunit): The last change to reduceunit was screwed up. Corrected it. 2001-11-26 Adrian Mariano * units.c (readunits): Added locale checks to support the '!locale' syntax in units.dat. * configure.in: Added --enable-path-search option which replaces the use of an empty datadir for specifying path searching. 2001-08-30 Adrian Mariano * units.c (reduceunit): Separated two calls to reduceproduct(). This fixes a bug where "Unit reduction error" occurs instead of "Unknown unit". 2001-08-17 Adrian Mariano * units.c (tryallunits): Added signal() calls to ignore the SIGPIPE signal and hopefully prevent premature termination. 2000-05-28 Adrian Mariano * units.c (addtolist): Modified tryallunits() to search function definitions and produce a sorted list, piped through the pager. Modified ishelpquery to invoke ishelpquery to produce a list. 2000-04-18 Adrian Mariano * units.c (fgetscont): Added fix for backslash at the end of the buffer. 2000-04-13 Adrian Mariano * units.c (readunits): Set "userfile" when a path search is performed so that "help" can find the data file. (ishelpquery): Modified to find functions and prefixes. 2000-04-12 Adrian Mariano * units.c (ishelpquery): Wrote new function to print help messages by invoking a pager on units.dat. This required new field in unitlist structure, and code in main() to check for the "help" command. 2000-04-10 Adrian Mariano * parse.y: rewrote parser rules for correct unary '-'. * units.c (showdefinition): Substantially simplified and made correct for expressions that start with an operator (/ or -). 2000-04-09 Adrian Mariano * units.c (isfunction): Fixed call to removepadding() 2000-02-12 Adrian Mariano * units.c (fgetscont): Fixed buffer full test 1999-04-27 Adrian Mariano * units.c (addsubunit,addsubunitlist): Changed overflow test. Mon Aug 17 13:12:01 1998 Adrian Mariano * units.c (addunit): Added declaration for handlesum() so that it isn't called before being declared. Moved handlesum down the code past completereduce() so that handlesum doesn't call completereduce() before its definition. Sun Mar 8 10:08:56 1998 Adrian Mariano * units.c (main): Set rl_basic_word_break_characters to delimit words properly for unit completion. Mon Jun 9 19:12:08 1997 Adrian Mariano * units.c (lookupunit): Switched order of prefix and plural handling so that plurals are handled first. (This fixes the problem of "pints" being interpreted as p- plus ints.) Sun Apr 6 01:01:24 1997 Adrian Mariano * units.c (removepadding): Added check for zero length strings. This caused units to hang when invoked with arguments that consisted only of whitespace. Mon Mar 10 19:23:21 1997 Adrian Mariano * units.c: Changed 2 strdup() calls into dupstr() calls. Sun Mar 2 18:02:16 1997 Adrian Mariano * units.c: replaced sscanf with strtod affecting numlength() and addnumber(). This circumvents a bug in NeXT's C library and yields simpler code. Wed Feb 12 22:28:42 1997 Adrian Mariano * units.c (showanswer): Fixed to give slightly better display when verbose mode is active. Tue Jan 21 18:51:58 1997 Adrian Mariano * units.c: Changed showanswer() to convert reciprocal units. Added -s,--strict option to disable this conversion. Mon Jan 13 20:37:26 1997 Adrian Mariano * units.c: Added addnumber() because recursive call to addunit() was causing problems with strtok. Tue Dec 31 00:57:42 1996 Adrian Mariano * units.c (prefixhash): Changed to AND with 127 because signed chars seem to be causing segmentation faults with 8 bit characters. Changed size of the table to 128 to correspond. Thu Dec 26 13:54:59 1996 Adrian Mariano * units.c (completeunits): Added 1 to mymalloc() call so there is enough space. (This fixes the tab bug.) Mon Dec 9 23:46:27 1996 Adrian Mariano * unit.c (addunit): Changed logic for calling handlesum() to check that the character immediately before the '+' is not an 'e' since this would probably be an exponent. Mon Dec 7 10:47:43 1996 Adrian Mariano * units.c (lookupunit): Added tempbuf variable to prevent problems when the output from one call to lookupunit is used as input to a later call to lookupunit. * units.c: Changed main() and processargs() to allow invoking units with just one unit specified on the command line. Tue Dec 3 14:19:33 1996 Adrian Mariano * units.c: added verbose option, changed showanswer() to give verbose display, removed first argument from showunit(), added new function removepadding() to trim whitespace. * New file: texi2man, a perl script for converting the texinfo documentation into the man page format. Makefile.in changed to generate units.man from units.texinfo. Mon Dec 2 14:10:56 1996 Adrian Mariano * units.c: New functions handlesum(), addsubunitlist(), and productoverflow(). (addunit): Call handlesum() if there are '+' characters in the string to be added. This handles sums of conformable units. Added free() calls to free savescr when returning with an error. Sun Dec 1 17:30:52 1996 Adrian Mariano * units.c: Added isblank() and showdefinition(). Changed main() to call showdefinition if the second unit entered is blank. Also changed the loop to re-prompt the user for the first unit until something nonblank is entered. Changed showunit() to take two arguments. Wed Nov 27 23:08:33 1996 Adrian Mariano * units.c: Added function completeunits() for doing completion when readline is in use. * makefile.in: added support for LDFLAGS. * units.c (lookupunits): Added tests to avoid trying plurals on one character long base units. Fri Nov 22 19:25:23 1996 Kaveh R. Ghazi * Makefile.in, configure.in, units.c: add ansi2knr support. * New files: aclocal.m4, ansi2knr.1 and ansi2knr.c. Fri Nov 22 10:33:43 1996 Adrian Mariano * units.c: Added removespaces() function called from addunits() to remove spaces around '^' characters so the user doesn't have to be so careful. Thu Nov 21 23:39:09 1996 Adrian Mariano * units.c (lookupunit): Added check to return the input if it is a number. This was made necessary by the change in the handling of numbers which broke the '^' operator on numbers. Thu Nov 21 15:22:40 1996 Adrian Mariano * units.c (numlength): Changed test for sscanf to require a return value of exactly 1. For some reason, sscanf sometimes returns -1 instead of 0 when no fields were read. Thu Nov 21 09:17:26 1996 Adrian Mariano * Makefile.in: Added ALL_CFLAGS so that CFLAGS can be used by the user. * configure.in: Added fix to look for ncurses library to go with readline. (Required by some linux version.) Wed Nov 20 14:03:22 1996 Adrian Mariano * configure.in: Added check for const support. * Makefile.in: added VPATH, fixed a few places where $(srcdir) was needed, fixed the install targets to create directories if necessary by calling mkinstalldirs. Fixed man pages install target. Sun Nov 17 00:05:12 1996 Adrian Mariano * units.c: Added numlength() to handle "numbers" with multiple 'e' or '.' characters. Changed number evaluation in addunit() to do something reasonable when multiple '|' characters appear. Now number evaluation is done by sscanf() instead of atof(). Removed handling of numbers with no trailing space from lookupunit() and added it to addunit() with a recursive call. Thu Nov 1 16:18:08 1996 Adrian Mariano * units.c: Fixed up portability for string.h, stdlib.h. Added declarations for string functions and atof(). * units.c: Removed calls to tolower() since they turned out to be unportable. Sun Sep 8 10:19:43 1996 Adrian Mariano * units.c: Added long options, made option flag variables global. * units.c: Added freeunit() function to free units (which was never done), and uncommented two free() calls in cancelunit(). * units.c: Added processargs() function to tidy things up. Thu Sep 5 01:18:52 1996 Adrian Mariano * units.c: Removed all the static char * buffers and added support for readline(). Added growbuffer() and fgetslong() and getuser(). * units.c (readunits): Rewrote parsing to be cleaner and to remove trailing white space in units. Copyright (C) 1996, 1997, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc units-2.19/configure0000775000175000017500000044745213472075446014032 0ustar adrianadrian#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.69 for GNU units 2.19. # # Report bugs to . # # # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. # # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then _as_can_reexec=no; export _as_can_reexec; # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 as_fn_exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : else exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 test \$(( 1 + 1 )) = 2 || exit 1" if (eval "$as_required") 2>/dev/null; then : as_have_required=yes else as_have_required=no fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir/$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : CONFIG_SHELL=$as_shell as_have_required=yes if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : break 2 fi fi done;; esac as_found=false done $as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : CONFIG_SHELL=$SHELL as_have_required=yes fi; } IFS=$as_save_IFS if test "x$CONFIG_SHELL" != x; then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi if test x$as_have_required = xno; then : $as_echo "$0: This script requires a shell more modern than all" $as_echo "$0: the shells that I found on your system." if test x${ZSH_VERSION+set} = xset ; then $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" $as_echo "$0: be upgraded to zsh 4.3.4 or later." else $as_echo "$0: Please tell bug-autoconf@gnu.org and adrianm@gnu.org $0: about your system, including any error possibly output $0: before this message. Then install a modern shell, or $0: manually run the script under such a shell if you do $0: have one." fi exit 1 fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall # in an infinite loop. This has already happened in practice. _as_can_reexec=no; export _as_can_reexec # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" test -n "$DJDIR" || exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME='GNU units' PACKAGE_TARNAME='units' PACKAGE_VERSION='2.19' PACKAGE_STRING='GNU units 2.19' PACKAGE_BUGREPORT='adrianm@gnu.org' PACKAGE_URL='http://www.gnu.org/software/units/' # Factoring default headers for most tests. ac_includes_default="\ #include #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_STAT_H # include #endif #ifdef STDC_HEADERS # include # include #else # ifdef HAVE_STDLIB_H # include # endif #endif #ifdef HAVE_STRING_H # if !defined STDC_HEADERS && defined HAVE_MEMORY_H # include # endif # include #endif #ifdef HAVE_STRINGS_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_UNISTD_H # include #endif" ac_subst_vars='LTLIBOBJS LIBOBJS PYTHON mkstoolkit EGREP GREP CPP MKDIR_P INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM OBJEXT EXEEXT ac_ct_CC CPPFLAGS LDFLAGS CFLAGS CC HAVE_MKS MKS_DRIVE MKS_RES MKS_POSIX PYTHON_VERSION HAVE_PYTHON RELOCATION UDATADIR CDAT UDAT STRFUNC DEFIS target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir runstatedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking enable_relocation ' ac_precious_vars='build_alias host_alias target_alias CC CFLAGS LDFLAGS LIBS CPPFLAGS CPP' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *=) ac_optarg= ;; *) ac_optarg=yes ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -runstatedir | --runstatedir | --runstatedi | --runstated \ | --runstate | --runstat | --runsta | --runst | --runs \ | --run | --ru | --r) ac_prev=runstatedir ;; -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ | --run=* | --ru=* | --r=*) runstatedir=$ac_optarg ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) as_fn_error $? "unrecognized option: \`$ac_option' Try \`$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir runstatedir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures GNU units 2.19 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/units] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF Program names: --program-prefix=PREFIX prepend PREFIX to installed program names --program-suffix=SUFFIX append SUFFIX to installed program names --program-transform-name=PROGRAM run sed PROGRAM on installed program names _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of GNU units 2.19:";; esac cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-relocation look in program directory for units data files (default is NO) Some influential environment variables: CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory CPP C preprocessor Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to . GNU units home page: . General help using GNU software: . _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for guested configure. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF GNU units configure 2.19 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## # ac_fn_c_try_compile LINENO # -------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_compile # ac_fn_c_try_link LINENO # ----------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_link # ac_fn_c_check_decl LINENO SYMBOL VAR INCLUDES # --------------------------------------------- # Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR # accordingly. ac_fn_c_check_decl () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack as_decl_name=`echo $2|sed 's/ *(.*//'` as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'` { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5 $as_echo_n "checking whether $as_decl_name is declared... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { #ifndef $as_decl_name #ifdef __cplusplus (void) $as_decl_use; #else (void) $as_decl_name; #endif #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_decl # ac_fn_c_try_cpp LINENO # ---------------------- # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_cpp # ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists, giving a warning if it cannot be compiled using # the include files in INCLUDES and setting the cache variable VAR # accordingly. ac_fn_c_check_header_mongrel () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if eval \${$3+:} false; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } else # Is the header compilable? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 $as_echo_n "checking $2 usability... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_header_compiler=yes else ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 $as_echo_n "checking $2 presence... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <$2> _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : ac_header_preproc=yes else ac_header_preproc=no fi rm -f conftest.err conftest.i conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( yes:no: ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ;; no:yes:* ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ( $as_echo "## ------------------------------ ## ## Report this to adrianm@gnu.org ## ## ------------------------------ ##" ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=\$ac_header_compiler" fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_mongrel # ac_fn_c_try_run LINENO # ---------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. Assumes # that executables *can* be run. ac_fn_c_try_run () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then : ac_retval=0 else $as_echo "$as_me: program exited with status $ac_status" >&5 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=$ac_status fi rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_run # ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists and can be compiled using the include files in # INCLUDES, setting the cache variable VAR accordingly. ac_fn_c_check_header_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_compile # ac_fn_c_check_func LINENO FUNC VAR # ---------------------------------- # Tests whether FUNC exists, setting the cache variable VAR accordingly ac_fn_c_check_func () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Define $2 to an innocuous variant, in case declares $2. For example, HP-UX 11i declares gettimeofday. */ #define $2 innocuous_$2 /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $2 (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $2 /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char $2 (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_$2 || defined __stub___$2 choke me #endif int main () { return $2 (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_func cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by GNU units $as_me 2.19, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. $as_echo "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo $as_echo "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo $as_echo "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then $as_echo "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then $as_echo "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && $as_echo "$as_me: caught signal $ac_signal" $as_echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h $as_echo "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_URL "$PACKAGE_URL" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. ac_site_file1=NONE ac_site_file2=NONE if test -n "$CONFIG_SITE"; then # We do not want a PATH search for config.site. case $CONFIG_SITE in #(( -*) ac_site_file1=./$CONFIG_SITE;; */*) ac_site_file1=$CONFIG_SITE;; *) ac_site_file1=./$CONFIG_SITE;; esac elif test "x$prefix" != xNONE; then ac_site_file1=$prefix/share/config.site ac_site_file2=$prefix/etc/config.site else ac_site_file1=$ac_default_prefix/share/config.site ac_site_file2=$ac_default_prefix/etc/config.site fi for ac_site_file in "$ac_site_file1" "$ac_site_file2" do test "x$ac_site_file" = xNONE && continue if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 $as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 $as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 $as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 $as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 $as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 $as_echo "$as_me: former value: \`$ac_old_val'" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu test "$program_prefix" != NONE && program_transform_name="s&^&$program_prefix&;$program_transform_name" # Use a double $ so make ignores it. test "$program_suffix" != NONE && program_transform_name="s&\$&$program_suffix&;$program_transform_name" # Double any \ or $. # By default was `s,x,x', remove it if useless. ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` RELOCATION=no saveCFLAGS=$CFLAGS ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then for ac_prog in gcc cc egcs cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in gcc cc egcs cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 $as_echo_n "checking whether the C compiler works... " >&6; } ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { { ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else ac_file='' fi if test -z "$ac_file"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "C compiler cannot create executables See \`config.log' for more details" "$LINENO" 5; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 $as_echo_n "checking for C compiler default output file name... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 $as_echo "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 $as_echo_n "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest conftest$ac_cv_exeext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 $as_echo "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { FILE *f = fopen ("conftest.out", "w"); return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 $as_echo_n "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details" "$LINENO" 5; } fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 $as_echo "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 $as_echo_n "checking for suffix of object files... " >&6; } if ${ac_cv_objext+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 $as_echo "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } if ${ac_cv_c_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 $as_echo "$ac_cv_c_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 $as_echo_n "checking whether $CC accepts -g... " >&6; } if ${ac_cv_prog_cc_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes else CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 $as_echo "$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } if ${ac_cv_prog_cc_c89+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include struct stat; /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) 'x' int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac if test "x$ac_cv_prog_cc_c89" != xno; then : fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C99" >&5 $as_echo_n "checking for $CC option to accept ISO C99... " >&6; } if ${ac_cv_prog_cc_c99+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c99=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include #include // Check varargs macros. These examples are taken from C99 6.10.3.5. #define debug(...) fprintf (stderr, __VA_ARGS__) #define showlist(...) puts (#__VA_ARGS__) #define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__)) static void test_varargs_macros (void) { int x = 1234; int y = 5678; debug ("Flag"); debug ("X = %d\n", x); showlist (The first, second, and third items.); report (x>y, "x is %d but y is %d", x, y); } // Check long long types. #define BIG64 18446744073709551615ull #define BIG32 4294967295ul #define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0) #if !BIG_OK your preprocessor is broken; #endif #if BIG_OK #else your preprocessor is broken; #endif static long long int bignum = -9223372036854775807LL; static unsigned long long int ubignum = BIG64; struct incomplete_array { int datasize; double data[]; }; struct named_init { int number; const wchar_t *name; double average; }; typedef const char *ccp; static inline int test_restrict (ccp restrict text) { // See if C++-style comments work. // Iterate through items via the restricted pointer. // Also check for declarations in for loops. for (unsigned int i = 0; *(text+i) != '\0'; ++i) continue; return 0; } // Check varargs and va_copy. static void test_varargs (const char *format, ...) { va_list args; va_start (args, format); va_list args_copy; va_copy (args_copy, args); const char *str; int number; float fnumber; while (*format) { switch (*format++) { case 's': // string str = va_arg (args_copy, const char *); break; case 'd': // int number = va_arg (args_copy, int); break; case 'f': // float fnumber = va_arg (args_copy, double); break; default: break; } } va_end (args_copy); va_end (args); } int main () { // Check bool. _Bool success = false; // Check restrict. if (test_restrict ("String literal") == 0) success = true; char *restrict newvar = "Another string"; // Check varargs. test_varargs ("s, d' f .", "string", 65, 34.234); test_varargs_macros (); // Check flexible array members. struct incomplete_array *ia = malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10)); ia->datasize = 10; for (int i = 0; i < ia->datasize; ++i) ia->data[i] = i * 1.234; // Check named initializers. struct named_init ni = { .number = 34, .name = L"Test wide string", .average = 543.34343, }; ni.number = 58; int dynamic_array[ni.number]; dynamic_array[ni.number - 1] = 543; // work around unused variable warnings return (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == 'x' || dynamic_array[ni.number - 1] != 543); ; return 0; } _ACEOF for ac_arg in '' -std=gnu99 -std=c99 -c99 -AC99 -D_STDC_C99= -qlanglvl=extc99 do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_c99=$ac_arg fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c99" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c99" in x) { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c99" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 $as_echo "$ac_cv_prog_cc_c99" >&6; } ;; esac if test "x$ac_cv_prog_cc_c99" != xno; then : fi case $OSTYPE in darwin*) echo detected MacOS, setting flags CPPFLAGS="$CPPFLAGS -I/opt/local/include" LDFLAGS="$LDFLAGS -L/opt/local/lib" ;; *) echo detected non-mac os: $OSTYPE esac if test "$CC" = cl.exe; then if test -z "$saveCFLAGS" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: setting special CFLAGS value for cl" >&5 $as_echo "$as_me: setting special CFLAGS value for cl" >&6;} CFLAGS="-O2 -W3 -D_CRT_SECURE_NO_WARNINGS -nologo" fi if test `expr "$CFLAGS" : '.*D_CRT_SECURE_NO_WARNINGS'` -eq 0; then { $as_echo "$as_me:${as_lineno-$LINENO}: disabling CRT_SECURE warnings for cl" >&5 $as_echo "$as_me: disabling CRT_SECURE warnings for cl" >&6;} CFLAGS="$CFLAGS -D_CRT_SECURE_NO_WARNINGS" fi else { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -fpic" >&5 $as_echo_n "checking whether C compiler accepts -fpic... " >&6; } if ${ax_cv_check_cflags___fpic+:} false; then : $as_echo_n "(cached) " >&6 else ax_check_save_flags=$CFLAGS CFLAGS="$CFLAGS -fpic" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ax_cv_check_cflags___fpic=yes else ax_cv_check_cflags___fpic=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CFLAGS=$ax_check_save_flags fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___fpic" >&5 $as_echo "$ax_cv_check_cflags___fpic" >&6; } if test "x$ax_cv_check_cflags___fpic" = xyes; then : CFLAGS="$CFLAGS -fpic" else : fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5 $as_echo_n "checking for an ANSI C-conforming const... " >&6; } if ${ac_cv_c_const+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __cplusplus /* Ultrix mips cc rejects this sort of thing. */ typedef int charset[2]; const charset cs = { 0, 0 }; /* SunOS 4.1.1 cc rejects this. */ char const *const *pcpcc; char **ppc; /* NEC SVR4.0.2 mips cc rejects this. */ struct point {int x, y;}; static struct point const zero = {0,0}; /* AIX XL C 1.02.0.0 rejects this. It does not let you subtract one const X* pointer from another in an arm of an if-expression whose if-part is not a constant expression */ const char *g = "string"; pcpcc = &g + (g ? g-g : 0); /* HPUX 7.0 cc rejects these. */ ++pcpcc; ppc = (char**) pcpcc; pcpcc = (char const *const *) ppc; { /* SCO 3.2v4 cc rejects this sort of thing. */ char tx; char *t = &tx; char const *s = 0 ? (char *) 0 : (char const *) 0; *t++ = 0; if (s) return 0; } { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ int x[] = {25, 17}; const int *foo = &x[0]; ++foo; } { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ typedef const int *iptr; iptr p = 0; ++p; } { /* AIX XL C 1.02.0.0 rejects this sort of thing, saying "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ struct s { int j; const int *ap[3]; } bx; struct s *b = &bx; b->j = 5; } { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ const int foo = 10; if (!foo) return 0; } return !cs[0] && !zero.x; #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_c_const=yes else ac_cv_c_const=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5 $as_echo "$ac_cv_c_const" >&6; } if test $ac_cv_c_const = no; then $as_echo "#define const /**/" >>confdefs.h fi ac_aux_dir= for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do if test -f "$ac_dir/install-sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break elif test -f "$ac_dir/install.sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break elif test -f "$ac_dir/shtool"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 $as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if ${ac_cv_path_install+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in #(( ./ | .// | /[cC]/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 $as_echo "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 $as_echo_n "checking for a thread-safe mkdir -p... " >&6; } if test -z "$MKDIR_P"; then if ${ac_cv_path_mkdir+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in mkdir gmkdir; do for ac_exec_ext in '' $ac_executable_extensions; do as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( 'mkdir (GNU coreutils) '* | \ 'mkdir (coreutils) '* | \ 'mkdir (fileutils) '4.1*) ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext break 3;; esac done done done IFS=$as_save_IFS fi test -d ./--version && rmdir ./--version if test "${ac_cv_path_mkdir+set}" = set; then MKDIR_P="$ac_cv_path_mkdir -p" else # As a last resort, use the slow shell script. Don't cache a # value for MKDIR_P within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. MKDIR_P="$ac_install_sh -d" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 $as_echo "$MKDIR_P" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing sin" >&5 $as_echo_n "checking for library containing sin... " >&6; } if ${ac_cv_search_sin+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char sin (); int main () { return sin (); ; return 0; } _ACEOF for ac_lib in '' m; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO"; then : ac_cv_search_sin=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_sin+:} false; then : break fi done if ${ac_cv_search_sin+:} false; then : else ac_cv_search_sin=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_sin" >&5 $as_echo "$ac_cv_search_sin" >&6; } ac_res=$ac_cv_search_sin if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi { ac_cv_lib_readline_append_history=; unset ac_cv_lib_readline_append_history;} for termlib in "" -ltermcap -lncurses -lcurses; do if test "$ac_cv_lib_readline_append_history" != yes ; then { ac_cv_lib_readline_append_history=; unset ac_cv_lib_readline_append_history;} { $as_echo "$as_me:${as_lineno-$LINENO}: checking for append_history in -lreadline" >&5 $as_echo_n "checking for append_history in -lreadline... " >&6; } if ${ac_cv_lib_readline_append_history+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lreadline $termlib $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char append_history (); int main () { return append_history (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_readline_append_history=yes else ac_cv_lib_readline_append_history=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_readline_append_history" >&5 $as_echo "$ac_cv_lib_readline_append_history" >&6; } if test "x$ac_cv_lib_readline_append_history" = xyes; then : LIBS="-lreadline $termlib $LIBS";DEFIS="$DEFIS -DREADLINE" fi fi done if test "$ac_cv_lib_readline_append_history" = yes; then ac_fn_c_check_decl "$LINENO" "rl_completion_suppress_append" "ac_cv_have_decl_rl_completion_suppress_append" "#include " if test "x$ac_cv_have_decl_rl_completion_suppress_append" = xyes; then : else DEFIS="$DEFIS -DNO_SUPPRESS_APPEND" fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 $as_echo_n "checking how to run the C preprocessor... " >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if ${ac_cv_prog_CPP+:} false; then : $as_echo_n "(cached) " >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : break fi done ac_cv_prog_CPP=$CPP fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 $as_echo "$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 $as_echo_n "checking for grep that handles long lines and -e... " >&6; } if ${ac_cv_path_GREP+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$GREP"; then ac_path_GREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in grep ggrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_GREP" || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in *GNU*) ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_GREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_GREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_GREP"; then as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_GREP=$GREP fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 $as_echo "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 $as_echo_n "checking for egrep... " >&6; } if ${ac_cv_path_EGREP+:} false; then : $as_echo_n "(cached) " >&6 else if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else if test -z "$EGREP"; then ac_path_EGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in egrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_EGREP" || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_EGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_EGREP"; then as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_EGREP=$EGREP fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 $as_echo "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if ${ac_cv_header_stdc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_stdc=yes else ac_cv_header_stdc=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : : else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) return 2; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : else ac_cv_header_stdc=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then $as_echo "#define STDC_HEADERS 1" >>confdefs.h fi # On IRIX 5.3, sys/types and inttypes.h are conflicting. for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default " if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done ac_fn_c_check_header_mongrel "$LINENO" "string.h" "ac_cv_header_string_h" "$ac_includes_default" if test "x$ac_cv_header_string_h" = xyes; then : else DEFIS="$DEFIS -DSTRINGS_H" fi ac_fn_c_check_header_mongrel "$LINENO" "stdlib.h" "ac_cv_header_stdlib_h" "$ac_includes_default" if test "x$ac_cv_header_stdlib_h" = xyes; then : else DEFIS="$DEFIS -DNO_STDLIB_H" fi ac_fn_c_check_func "$LINENO" "strchr" "ac_cv_func_strchr" if test "x$ac_cv_func_strchr" = xyes; then : else DEFIS="$DEFIS -DNO_STRCHR" fi ac_fn_c_check_func "$LINENO" "strspn" "ac_cv_func_strspn" if test "x$ac_cv_func_strspn" = xyes; then : else DEFIS="$DEFIS -DNO_STRSPN";STRFUNC="strfunc.$OBJEXT" fi ac_fn_c_check_func "$LINENO" "strtok" "ac_cv_func_strtok" if test "x$ac_cv_func_strtok" = xyes; then : else DEFIS="$DEFIS -DNO_STRTOK";STRFUNC="strfunc.$OBJEXT" fi ac_fn_c_check_func "$LINENO" "setenv" "ac_cv_func_setenv" if test "x$ac_cv_func_setenv" = xyes; then : else DEFIS="$DEFIS -DNO_SETENV" fi ac_fn_c_check_func "$LINENO" "setlocale" "ac_cv_func_setlocale" if test "x$ac_cv_func_setlocale" = xyes; then : else DEFIS="$DEFIS -DNO_SETLOCALE" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for locale and UTF-8 support" >&5 $as_echo_n "checking for locale and UTF-8 support... " >&6; } if ${am_cv_utf8+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define _XOPEN_SOURCE 600 #include #include #include int main () { wchar_t *out;char *in;char *res; res=setlocale(LC_CTYPE,"");res=in; mbsrtowcs(out, &res, 2, NULL); wcswidth(out,2); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : am_cv_utf8=yes else am_cv_utf8=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_utf8" >&5 $as_echo "$am_cv_utf8" >&6; } if test $am_cv_utf8 = yes; then DEFIS="$DEFIS -DSUPPORT_UTF8" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for isfinite" >&5 $as_echo_n "checking for isfinite... " >&6; } if ${am_cv_isfinite+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define _XOPEN_SOURCE 600 #include int main () { float a;a=1;isfinite(a); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : am_cv_isfinite=yes else am_cv_isfinite=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_isfinite" >&5 $as_echo "$am_cv_isfinite" >&6; } if test $am_cv_isfinite = no; then DEFIS="$DEFIS -DNO_ISFINITE" fi # Extract the first word of "mksinfo", so it can be a program name with args. set dummy mksinfo; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_mkstoolkit+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$mkstoolkit"; then ac_cv_prog_mkstoolkit="$mkstoolkit" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_mkstoolkit="found" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_prog_mkstoolkit" && ac_cv_prog_mkstoolkit="no" fi fi mkstoolkit=$ac_cv_prog_mkstoolkit if test -n "$mkstoolkit"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $mkstoolkit" >&5 $as_echo "$mkstoolkit" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # assume that if we have the MKS Toolkit, we're running the Korn shell HAVE_MKS=no if test $mkstoolkit = found; then if mksinfo > /dev/null; then if test -n "$ROOTDIR"; then DEFIS="$DEFIS -DHAVE_MKS_TOOLKIT" echo 'using MKS Toolkit' MKS_POSIX=".POSIX:" MKS_RES='$(RES)' HAVE_MKS=yes # if the user has specified a drive, leave things alone. # otherwise, prepend the drive on which the Toolkit is installed case "$prefix" in ?:*) MKS_DRIVE= ;; *) MKS_DRIVE="${ROOTDIR%%:*}:" ;; esac else echo 'no ROOTDIR... cannot use MKS Toolkit' fi else echo 'mksinfo failed... not using MKS Toolkit' fi fi # Extract the first word of "python", so it can be a program name with args. set dummy python; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_PYTHON+:} false; then : $as_echo_n "(cached) " >&6 else case $PYTHON in [\\/]* | ?:[\\/]*) ac_cv_path_PYTHON="$PYTHON" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_PYTHON="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_PYTHON" && ac_cv_path_PYTHON="no" ;; esac fi PYTHON=$ac_cv_path_PYTHON if test -n "$PYTHON"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON" >&5 $as_echo "$PYTHON" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test $PYTHON = no; then HAVE_PYTHON=no echo ' Units will work without python but the currency update' echo ' script, units_cur, will not be installed' PYTHON='' else HAVE_PYTHON=yes fi # Check whether --enable-relocation was given. if test "${enable_relocation+set}" = set; then : enableval=$enable_relocation; if test $enable_relocation = yes ;then UDATADIR="" RELOCATION="yes" echo relocation enabled else UDATADIR="$datadir/units/" echo relocation disabled fi else UDATADIR="$datadir/units/" fi UDAT="$datadir/units/" CDAT="$sharedstatedir/units/" ac_config_files="$ac_config_files Makefile" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 $as_echo "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else case $cache_file in #( */* | ?:*) mv -f confcache "$cache_file"$$ && mv -f "$cache_file"$$ "$cache_file" ;; #( *) mv -f confcache "$cache_file" ;; esac fi fi else { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' # Transform confdefs.h into DEFS. # Protect against shell expansion while executing Makefile rules. # Protect against Makefile macro expansion. # # If the first sed substitution is executed (which looks for macros that # take arguments), then branch to the quote section. Otherwise, # look for a macro that doesn't take arguments. ac_script=' :mline /\\$/{ N s,\\\n,, b mline } t clear :clear s/^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\)/-D\1=\2/g t quote s/^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)/-D\1=\2/g t quote b any :quote s/[ `~#$^&*(){}\\|;'\''"<>?]/\\&/g s/\[/\\&/g s/\]/\\&/g s/\$/$$/g H :any ${ g s/^\n// s/\n/ /g p } ' DEFS=`sed -n "$ac_script" confdefs.h` ac_libobjs= ac_ltlibobjs= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`$as_echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 $as_echo "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by GNU units $as_me 2.19, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE Configuration files: $config_files Report bugs to . GNU units home page: . General help using GNU software: ." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ GNU units config.status 2.19 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" Copyright (C) 2012 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' MKDIR_P='$MKDIR_P' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; --*=) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg= ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) $as_echo "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) $as_echo "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --he | --h | --help | --hel | -h ) $as_echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) as_fn_error $? "unrecognized option: \`$1' Try \`$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX $as_echo "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= ac_tmp= trap 'exit_status=$? : "${ac_tmp:=$tmp}" { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove sole $(srcdir), # ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" eval set X " :F $CONFIG_FILES " shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 $as_echo "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`$as_echo "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$ac_tmp/stdin" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac ac_MKDIR_P=$MKDIR_P case $MKDIR_P in [\\/$]* | ?:[\\/]* ) ;; */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t s&@MKDIR_P@&$ac_MKDIR_P&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" case $ac_file in -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; esac \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi units-2.19/UnitsMKS.pdf0000664000175000017500000046060513346103537014257 0ustar adrianadrian%PDF-1.5 %ÐÔÅØ 1 0 obj << /Length 587 /Filter /FlateDecode >> stream xÚmTM¢@½ó+z&ÎÁ±?tBL$ñ°ãd4›½*´.‰<øï·_•èÌf’W¯_wÕ«îrðãc;Šòê`GæUŠOÛV×&³£øç¾öƒ¤Ê®[vïÖæ6ïWÛ7ñÑTÙÖvb¯“uYt/N¼.³ó5·½êÿ¢¥=åS‚> stream xÚmTM¢@½ó+z&ÎÁ±?tBL0ñ°ãd4›½*´.‰<Ì¿ß~U¢Îf’W¯_u½ªîvðãc;ZäÕÁŽÌ«Ÿ¶­®MfGñÏ}í I•]/¶ìÞ­ÍmÞ¯¶o⣩²­íÄ0^'ë²è^œx]fçkn{ÕÿEK{*ʇuÄpg6;µÞ$4»¢;»µgZ8, ’ü²M[Tå›P¯RJG¤eWxm½ñ­ž÷ŽE™7·¢â žÒ"/²îÑ7»¸¦‘¼ýj;{Y—ÇÊ‹"1þt‹m×|‘£o¼irÛåI É‘c¶×º>[TÒ›ÏEnn#×ÛûþbÅø¹‘ûÒî«¶BS¬ØEVå¶­÷™möåÉz‘”s…«¹gËüŸµ)gŽÏR©ð133wÄ xAÄbêí;¬ÒaGL6K& 0+‡}&ö"?‘á°(Ò¦Òa/ ¡cì,•!£½¥‰î-fö3¤Ù*IÃx {aªùð”sIC%ÒðhSô¢¨7å£Å}­HÏ=ŤIYƒ¹(îƒêjŧ ÿZóéàü4{ÖØSOØá5˜‡áZ ä®ekxvKº·Ǭü÷…Ü@2aÂ> stream xÚmSÁnâ0½ç+¼$z Ø¨"¤€ÄaKU¢Õ^C<ÐHàDN8ð÷õÌŠV{Hôüæç=üúØS`¾Jñ m}u%ŒÒßE Y]^/`»w¦¶oâÃÕå:1L·ÙÖVÝ‹omy¾èUÿ­àTÙ ÖÃþŽv¹Êó‘DM^ug{¦…Ç‚° ÉpmUÛ7¡^¥”žX[“ÖôÚã{=1î+kܽ¨8 …@iaª²»¯è_^|Ó˜¼¿µ\¶öXq,ÆŸ>ØvîFŽ^‚ñÎp•=‰!9òÌþÚ4gÀêBË¥0pôùÞÞ‹ ˆñs#P~k@hZ+vQÖÚ¦(ÁöA,åRÄÑf€5ÿĦœq8>K¥Â_¸—žX NˆHæžÐÔ3$¤Çž˜{<Ý0Š*¢5cÕ~ÿP÷õʯÂùÝ5WÂ42^!ž0^#žrq‰xƘœE„3xÎü ñ ªz“)cÒgl1BÌîÒ°õ•?ŸXqû!òŠNA‡¨Wš»A*dý1ùÔ)iȧΰÅç“Оó â9ç’†NVf¤¡–kô¯VäaŠžUJü†ôì?%Íš5Ø»bÿTW£=ј«±®–¾Œ¿É5ëñ2éfè&p2pj³V^ócH£Mc†VYxLS7˜E=›þ1âj· ¾gÈÈ endstream endobj 6 0 obj << /Length 364 /Filter /FlateDecode >> stream xÚ…‘ËNÃ0E÷ù /EŒÇãG¼-*EE,€EÕôaQ‘¤êïcÇ%´¨yá±}}ïø÷ˆåÄ 2+s²øHx¿Û¬I,î' t…Ÿÿ”dA“ oðÒ§f8ãh‚rT$W¹ ‚3­rEŠUèKåš)ëW%y¡£Û–®Z§EçU‹ëªíæÛíp0¹}Lߊ©wSÇnÈ‘éð€ÞkW¹®=ÈNB³ƒ.šåÖFu]Eë™[4u[¯º¸|vUY§t߯½ë6±ê6ËàîãNŒf7ñ¼H­¤µ¯ÖÛ÷4êºp!Éç)’åÂ|à |=]ßk³$«ä.rSŠx’–[è_ª53þŠdBë˜<.]çúw R&IW©Oo"¥-´ôùX¿’f`ú”æH—MûÃ@ŒA2”lÏØ`ßa&¹d`ÿ;]¾rÀÈç²®šyy–øÀc"À¬Åo"_𰦶 endstream endobj 15 0 obj << /Length 361 /Filter /FlateDecode >> stream xÚ}Q]Oƒ0}çWô±$R{û¼º¸EÍŒQŒÎlkd­æbüó¶tLŒ!snOï¹÷ˆºPNQÊ9ÉE†ÖûˆÕv‹¸_DpÒ ÎÜ÷_I"CɤÛEÏ¥D@INs@ÅÆÛ£ **ôŒ‹îâ„eïK³ Ê&ð±¾±m¯ÝTÚl+MåÀÚt}Ù4?‹ÛÇø¥¸vÆjj̘"\¥nÐÁ÷`tßt¿ä@R!GÙŠJúáǪÛN[å °±ºÔëÖvvÓú¤MeýÍã`ƒ&3àN@†öGÝïâ„sŽû]íÀwÅ,T–7qƱõ]±mÞtO†~Ô5RdŒqfß½×g«·;úA#a)G”p–Ý:¬¬Ätå„ÊÝï›èVä_é€ R¨1FA}¹WûAÛºìÁGá÷YŠË¶žhìÁTeïò< Å+³–Š.‹èÕ}Ÿã endstream endobj 44 0 obj << /Length 1764 /Filter /FlateDecode >> stream xÚí›ËrÛ6†÷~ MWÒB(qºs'“¦™z7›¦ E¢l¶Ù¡$·ÉÓ @¤AÓÄŽ{²,ó§ñ<çà8ÉÔ?8‘Ù„c $“åö(k>­/&æÍÙ«#hãæ*pîE>;?úñ%¥˜™I89_O(@rw¹óÕä÷i1ûãü磓swŠP¢ Ž¼¦(Ðr€ %ZQÝ@LŒÚùL’éâã&ŸÍ1§Ójm^ŸWå Ãé>7/;}OæR`¾”úëAæJ§u¾^,s 3á‡Rê7šÈŸfsȸya½Ÿ¾ðïz±û}ƒFˆr‚p6aÚ‰nञ{᎕εáEóà5išJhª´¾AZcš À!7ªÏÅfU”†ÎE¹2o^—»ýb³Ñ_@©5R€3Øbw(‹äžXàCÀsÌv;V©¶wá1Û}ÆmO“v¶¤ûùfDå.2¡Ä¥‘þõj†Ä4¯¯ŠücÃþ/8b_Ó½‡”zÞ" ­á7l¢ç^x€¢áEGN•U‘7H:p¹ÙJ®Šè‡ ’‹Cíe½ò/A¤%wY•ëBç!ÈU%XÜ[È¿­u©vá1}PÁ4ÙÁ¨¤CQÕS¶vûj[|6¥ãéþRwz˜´¥s±/T«ª¢Håÿî%Ð1𬠩4uá1š|kÃ4¥É64E%M©ÞÈ6Ç«mQ»}­¨1EÙ@uZWÅ&¿f.5µ¤;kû,ÖœTȺðd¾ã8YšlYTÒA†%`ªãl$OJMÖUQWå6oÞïMÆz?jªZz¶º3­«Úø¾ØóþÝþ°*ª Š’*ä÷Õ*ޱaÇ4•.<ƆoT˜4Ù†¨¤NBˆ EÊ3d%_«)\±ØŸMÙjìþ§Ø_jÛ›ª¶_¾»Ì7› )àãIKc˜ØáMŤ aâ{Æ$M¶Á$*é0`NÛ:õ§ê{üìÛTA¦/ Õ”ã¼î}Ûå¢óÇ Nu ¹Ö(íB(!5·ÕÒwˆÒ˜™vRÍìÂcfú#63M¶13*éêA–„ì åˆIa<ø¡m7ª‹z± š!Õ[öÔ¶~ãÚcýKå° qèCA‚¦É6F%Û¤B·’g‡²tÓ¨®è zbžÖ« “ï¦úŒPÐŽ^"^x„‚ž%A e5qIGÇ@"ÜîrT¦=]9¦N¼]”Å:ßÙ‚òRytá/è;ÑBÎTÖŒT¨ºðT¾Ãa¨Òd¨¢’*–ÎížÊÉV3õq6×SêÕ€,Ü#‹L‹²×íâ©-Žæ[[ƒ} R9ï¾®!ŽÙm‡)Õî.t¤7Ê\®ùíï&­¬û¼b† ˆßï8bj;‰¦záS{Ã;jj¢tkêP:ÜÁ(ã½Æ­~Ú_†Oë ÅO-ÌÞîHÓbLìYºèHËâCÂ1QS7,Q=!ƒ€B{rÒRgV$U×>È(ˆL=Ȉ}ZЏ½5ÓÖ¼T»ð><ˆ`šlÃà@òzyÃŒ†oª”™Uoý?TzEïæ ‡(`ݳNj¬¦Ù??µ¦uᱚæ)­iiÒ®¦ ¤GÒ‰º)í¦¶ m•«këºÚŽð<¯¶[· ô‹^5âCþXÏŽ=ÿv´SŸÿ.<öüû†Ÿÿ4ÙæùJ:j2¨ªŠí¬ûj«Y":ˆòð1 (’OUæ–Æ´Î¥Ø…Çôq“ýŸÕ´ endstream endobj 160 0 obj << /Length 2526 /Filter /FlateDecode >> stream xÚ•YÝsÛ6Ï_¡GjÆ‚ àGúrM®Í´™´™Æ¹>´J„lÔ©!H;¾É»X€"i*V'3.ýÞß®ù*„|•‡«4ŽY.²Õîð*´»í튿½{ÅÝ7#Ê77¯®”rÅC–‡9_ÝìÇGÝ”«?‚7½®J]ß®ÿºùh“1­ W!QöµîŒ#›G,J#OÖÔëMÇÁïº.›u”7Dð¨»;zõáý'Zܬ³8hÖ jª{Ý­7<‹Ó(àxÍ«nÁd]¨¤|¦‚,Zñ”E\ §‚$ŒÇ‚8þت}±SK¢:£„‰ÄQÞÜi&ɃCQ£l}Qásì@Ô4xÀ=Õ¿WÿrqÛ· ß+ØK³`»æÓ¸Û)ê’Èumº¢ªÐöŠw¿|^2JrÆ“KŒ’ÈÔ“íÛæ@§‚ x hMv€Å{ØkÚÏY¡aXÆÓՆnjKN˜;U¡¨QBŽdðAïÚÆ4û޽S°7[o„à -E_[²ñNCÄm_zw°jÜáÿw´S8ÝÑó#¾kúª¤mº> >×ú˦Ò÷Våô >äÁÈb:Ô1°„:FÙB'É4½:ÊA´=þÊàñ®èhµoªjðbÜ(ŒéÊ=t]‡²âΊE§‘Q{˜FÍáj ?i0N¾[+pÇá¾ì‰><éc,EŸ|®Ø2OUB†2Tì–]-¹C–œ|ìíëëÞ´×U³+ªë­®—Ü-—Lò“»5-]c…‹¥ ÔµC£ô`®ØV àà'’GÁ‡ÆtDŽúŸ|Vj³ë5§Fu.APò8žŠ®ÇJïtW=Qr,…ɧ7W˜}F~ ÿц¢¨>uÈ_©z$1€f׎#“Ùû¹€ì"àv Óí?Y×9ågÏÂ}mÜ/ù‡*‰dÛw´?3nÁ­fJ÷aÑ*ú¤nÜ'Ò>¬AM…®@§Ø<@§Cp¶¦§vEMA,nö‰9H2ÒãóÓ’[De—d)ù,óÈÜ5ŸUØp‚Ò0x8v´î},£ñ—kTëDÄþºŽÚëJ±ß—ý4ÉX ~úÕ(5/5Bf@¯d >¿ß.7žz3"§ª›O*éìP{ûgÔ ãsRìBÉÂH\ȧ~ÎÁDpq>åÜúàôvœKÕ_™—wÕð{Lóàº.Ú'Jù¯]«Á©mö÷6†p1±:nh÷ëÝ8qn¬À%–pO¿O”øè¡7j±:r΢(÷>4íb]RpƒŠ´ð, &ÅàîÖ®O*Ì„U§Ý8§ù4ÌŽÅ­j¯(¿ØR Ç¢ xÞÚr©ºN¹Ô5îŹØäœq_†Õâiž&D¶ q²ÀD<•½½<õfD¾à‰óC-'¼QwäÚóÅ`AЄ³8^€ß¿ûá·E³d,‰‡ ö—Ó3êœ4-Ÿ‡=¿PL¤|AÄña–w¿Ó·JŸ«1Ä|’cÎ[DÂBzR^,–ÊÂØUqZcŒáïãö(;OKÞB$ø½ʦvwÅr¦O$ð>¨ï\Ñ9K’‰ïã™…gÔâ«­C÷À¡Ý†*zïØl–®ÞÄêG> € Ûæ¶-¤È!ŻʎHæK– ž¸>5í'®÷¦îý#Š@¹ƒ„ß­7 jɶ(’ Ð!Æ¢ä Î*RAú3J™¡‚±#§ª÷«¬YKz"¯ÐmãôJ'µ÷H*À;ö ­qèÔåµàqí<È1»V;G¡]ë5Ei`ð¸Qr>ŸÕ­§E™„܉LD™ZµS5¢ ÷ìü ‰¿Âýý¹D ‘\ÐGr–ŠÌ÷R„£áªÚž+1šÃ]‚Ïp¹µ=î@S)¦M%îÚÐCº+:¹jŽ”e[ã°PŽHbj¤ ‚ËØ ie .Fx=ĵ€¸ŽB.iåÏš}8-°¿‡ªwûóx8œ°€ýyNVÿu×5®‚¸T w§ç-þ•ˆ~LÎcò–·MÝ¥÷Gγ%´é, åJØF[¾1=õfDNYsê'³C-s«ýþ¿;Ëο¦f€çÌD9g´ý—1㩟33M³C-3˜dH)¤k1è:uºV×äÝÓ©Ã^ÐÅp"üL§/›8u.…‹ŸN£:IŽOƒç,ÄÞ(h¸ 7qƲÜyɯëŠOû Õ㙑Ïà Gîrʼ¡I]Cy5‚&C“E¢ØœäDüsÀç ÿá”É#%ƒ]ŸúŽîú»÷i³³)Òøb™±)9L¦‘À®ÁÓöú¶oñHA„~b´¤•“i‰K¸eÓÒm5ÈÃq|u9ȽA€‹¿sÃ$ëJwÚÖx4§I <n—ò}è:°ó|°†¯m i?œuŽêkQ–º£L³YÀÎG§p:ÃvÔæ|¯ e¯T¥ûì Àboû¶UEµ!€EaÃ8¨ìýi}{‡Luìyߎ#TªÜéµep äꉾq¬$að®íðÛ*/CÉ(zA²<3º[숿ê`‰®ÜÑ4L˜#%‚ïX‘ÌZ_:“·vÖ€xhFu.´‘î\ …BðxÊl¿ÜÜH‹ô¤¨ŒRA3Q‡1“e³ùI§]a|BçqQ=ô\h;D mÌjˆAœÖ Ë’™”¿-†d<¾pž¡kò]œmXuÙDðQ.g9‡øÔm7`(˜ü´°À¥5ú)šz#RÊ|nÇ£©vQt«ðštšiõÀÕ[ņÐ¥œØ1Gó#~Rx”‡~æÃÀ{#Ô€oNó¦ÐÁ ‹‘r âîî?øÅµ"%ê¶©´v§QÞjÌ †¶8Áéî&‹"$K29AJêLu‚º[pƒ4›Ö¨îa÷P´æ¬ Cp÷õbFç!4ìI<Ëè”±Ùõ7/´ÅD6Ë#ÂYæc«Ž…Oeƒ¿S 0ãô7nÕ $ã0q1 RP7ù‡5o;à~a3F_×®ÞŽº‡ÓÜúÔ%œQ[ýVŸ-„ëK:}}þ42LbK[™n‡¬–ŸFŠ~x·t¥È™JÐ{¯xü›ŽŸ e1?ÓÄTMJso¨u™˜gÓ½JO° ¨­?„h|ÞpV}æ¯eÏtb1Ã¥ LG©`ÂàöÄô€{úJ¾ï«« Κ¥¬#5®÷¶Ôߪ—ù#¾_Ä:2dØJdL¤‰ËÍa’=GŽ©é}¼èzøkYSQ®,gðÂMþý¾îo1Ì·ÿ^KWÀ endstream endobj 164 0 obj << /Length 2422 /Filter /FlateDecode >> stream xÚ½YmoÛ8þÞ_äËÉ@̈/’¨.ò!õµ½ÜuÓ"q¯ l9U–m¡²dHr›Ü÷Ûo†CÉ’Ë4¾¢8ˆ©áˆçå™?ñáŸÄþI$%‹•>I7Ï|C­W'4¸yýŒ[¾)0Nœ/æÏÎ_Á ÷YìÇüd¾.5_œüî½ØåÅ"/W“?æÞpÈ«ÑOœ»2oË6ZR &"ѱUåd*¥ô>ä墚í}m ¼¯y»¦©_ÿqKƒùDK¯šL«*>çídʵŒ„'p›g/çýÁ!ŽÔr~£-N¸bR…ª ÔŠq©HâYU~ô¹Zíê^:¾ 5ã@±L«r™sæÒÅÔòNy̸°:ž¯3—z…dA(Z6™ì5ܤu¾])©½¤m³Íîž"¯­ˆºI>£æ3zj×vð ïš8·5©=Íš†&›‡–¢1\]¶…ùÈË`TN`вÉ4 "°»3Ü3 ºŽ™Ö,HÀ²*ÿ|_æ÷Ó"ïä:²;4g.]pF‡Ç)C±0êõV-[ÐlPfÙ¢Áaè5ÕÆîºÎŠ-È®Dì}Xwœ»&/'Ü[Ñ“QŒaâëß&R»#ó0dqÛ3s’c`ïΜ ÿ8# ¦ƒž•®BãU 'Źü¹q€W¤½/y]•·4ñe^RçɧŽ ÜÜkœê×S:ê¶LÒ»ì>Kw-¼—Á4ÜäUéôþ©ˆ T4ÖFR.œ&ÏY¨ú[~w9ÿÛÝíËw—7—ó·7®ÅµÞÔG ¸Æ TÞ.’^ÞЯµfI“g5Ñðw×d–°¶ƒ_ó´®x •÷Ï|‚jÝì`D½mñi‘Wô8£WÓj³Í ØÂq8É5‹xÜ_qáT—>¨+«k‘×YÚÔ¦W' jc¼ã¤$j»®«ÝjÝ‘3¢’Éåkl­Ï:¥"d¾¯{éR—tœ3¨Žç8³y˪—Und©ˆ²¦=Ñ8ÏY옞3úqˆi*êma6sÊ®ö2oвwMK^¨|ÍB?EžO$ e—&k)ó€´®ì0ÁÅ÷o‹à X9 ÛËPí×aà:Î4 eî"–Ì×x†øä>]˜ UØ)MlzœTy«ü‹‰³vÎ}^éf@\÷ºÉËN¡_&ƾŒá+îšà¿‡æ9­š?`WãB¶œÚ,Üǽÿ] Û¤i²Åwu€óñàt´´nN¡õPoK“6'Ì£¼ÄŠW&›ìO»ØÙSl“¼nÎì",cÎ$1åQÈtõÅÎ÷‚À ¼ß­®ÅðÝHïö׋"¸Ã;® ×B‹Dïs_Ì \ÑnlÎŒýá4ixÐÿ°/Mú1ƒMRY‡‰e8‘ÝSàªêÖ^JÆVîKšÈ/Ã{tåÊ‹S kÖvð¹YŸÏ÷Gqk¸à8+^œþrêT¬ÂPü°^õŠ$£WôzU<"½"5·³‰¥ç­]*í1´u$ö@ÆÇZz)·[ÕY²èö?zp$‹‘ý„鳄Ï"_ŽÓmïÄڂ΃àVU&Î:Š˜<@÷tZáp{ &Ûû 0Œ¿]¸”kB1°|.ö‘Æ‘‰x³>ÅŒTòTÔ]ùìQö±tŸM sDñL”Ø‘2 `Q0®v¿æè«JÇT~Ãï:éÃKF”„~PW÷x~|[°!sRº+Ùòm\")ø „îå#öIJ,¬(ý% 4Bº-Ðßðìíõ««×w·Wó—N/£êÀY}b½=Ì/Ø>Ü{e ëšæ³ûd³-2Œ?è9K¢î$H•Ñ^•‚T)\ŠbèªHijíP\¿‡iLÛ—Í@©»b9±0¢ÎVI½(L³Ÿ«¥E™¸3¢¸(>Ò¹ó™CÈ´ÚV˜í»d±@JóÅ7·yq:{þ½x}l¹´øªª³N@¼ËÖ)•Aé'¼"l(ûw|¢rÅÿ¹É–Vi/R¨v³t»Cű׺º¾_¾yspMŸòòÜf–½ØÓÔ¹Âlv±/Bd˜½zsùúöâtúVØ5>H;øëÝìfòÍÞß¼¼»~{÷áòæúêúõ­.«¢ZUî û͵ã~öglz„I~ôß™™PrÔÚjŸ®Ï•XfØ#L8˜3™DÖÕÙ¾qaÃh&:M=&’ÚVFee#¶>»Ò·¯q>}§·Ï¥<ª¹jx#¨˜Ûù¨¥™®ë|àWÜö½g»¦­6ù¿QH]ÃW=JªJ×®þ¸Ž˜Uv˜ÕVɵ÷/'˜CEí;FÉç¬ fǧÎ_h+Ëï„¿J28ï1ßEü 5Q`áfG€‡Z~U›’–+Ì)޽bÅüÈNø-~ˆÁîðYö ²¥âj‚6`Zðƒ¸Üa²B®•Y½ï-‡šðË ÿR[}E³eF»¨c®™;À*D¡ ŠÀö(- QŠÒWøpáCúR‚/#JYÆA»Ú𬞼iÉÔ<¬2µ‹Ä>ˆ$ ¥íöɇaÌPÆßÕ² BfMÄÆÁðÛˆ´MàWþ4fso›ô¨” y5ÆTbŸb‹ái×x”KjÚL4ksT䥣"qéîg ñpß?ÎBÝ]§bW‹M)Ûîšèì¤IšîSï6—Ùê endstream endobj 170 0 obj << /Length 3044 /Filter /FlateDecode >> stream xÚÍZëÜ6ÿž¿bÑ/ñ¯­‡í§¾Òë¹ݽmóŽ=³ºzì©lï&ýë)?f¼Ùýx°#Q”DQ䤜ø*‚ñU]¥R†¹Ê®vÇW‘£ÚÃ5~ùáUÌ|[`ÜÎ8¿¹}uýVë«8 ó(¯n÷ó¥nË«_ƒoS—¦9l~¿ý;ð&s^¥BlEÄ94¦ï˜m±¤¡H…gk›ÍVJüË4e»YðØ!A¦¿§¡w?ÝPãv“É Ýl«­ÿ0ýfg2Äm^};L ñB çó*H2ÆR‘ÄÝ=ÉÙ¼©RÜ ˆLÒ`W4ÔxØè$(ì'êím{¤V÷©ë+n÷íœn¶Zéàß›Líp¶ÜoQ¬š’§ÝWØ€åwýPÔ¼Æ}kY†¦8VÔjyö'¶,êμek>‰—tëÕ­Ü+·›æagþÚʶs[­Ü¯’a*RϸkÇ¢)ßÐ.Ux߬­¾ÍU˜* â% ^¶ÜnI_|ûåõ{Ûlq$Â[SW5‹tô1Kà'þbM$™ÀƒÖ"9[®óìdê¡ÖÛ¡_p”Ö<àRuëªï+Ë{¹ëGªiº¾¨ë¢7pÏx³ÛX +¾ß˜ŽøhêšGâP‡|N±1¡#«mžz΢£_æT+¾˜’/†k·:Ê4»Ô]ÛìÍa°«¶£ug#„œ¬ó´SV `JHùÄç±,7O¨ æÚ·LÝ ]ßÍ_XËs˜fÀ=4¼&¿b½¸=NOÀÜVÅ¡ziLáõt.g’Ûí}UŸVQda¶ÔÉoRÊþt¸¢ˆRIÐî‰'è*jò™;R€_†¦yBb!b0=¹äçn Õ俆%*Mºìª’„í¹ê SS{ˆŠÑnâÀ 8ÍòåÒ6»jçŒ×¡Ùo€®Ÿ9@–„yö2ñu¨¨™õfgͩᅠMŒÛLOúÃ?þI’‚Ên8Vξú‹¦1­™v®C©F¡Š¡oQ°U@Ô€œ# º¨¡àŽÑ²] 0uqW³ªd&Ã$Í0]ôçñ-Ždæ §5Õ31Îsogìç–':[Ôí}ß÷§/¯¯9F<>†‡f[{¸îÚ}ÿXØêÚŸüú\Hƒ§É …ôÜ—B.“‡³EÉùHë™@À‘*äf‚W„ß<ΉõëòhÓõnøa#Áb¸ñä°jT5ó0Ù8€ñøØ9Õ®±…‘]¥òbVÍ(ÊC¥ŸÏ™ ¦fÉ蕼SA?5[/-’« )eP;ìþÁ\ÖôÌÅáÊM×Á*`¤:CãkŒ"ÈÕT€md(d²téb¡\Ž7‰r‹§ ¼HêÄG¢D.ãš*(õ‘£ˆ÷Å©£!žîa(`ˆ]Ƥ_AA¦Éë"bÁ1èªêÂÍbÀÍ\^©4 e®Ÿs3æÞÎØW,ø|Q'À¯€|vD+  FC鎳¡ß¡û†FNÅ¡¢–:—X€-½LZä|FÒùb^MqˆØž·÷,BUt¦êzê<â¥c„Ö”åBD-[îß›ŽZ†cuÏ#pt—ÃNi Ð „ÖÔ¼›-jAæpiJ¿esÔz™»Ú¡SäW9å<:âÅà‡¦Ù¹Qh¡!8£ÎÂóAr½z<Gëàºß¬È-¢"=š‘Š ªw¡§ãž«tc×¶cî;ŸAbÇ¢ÇcÃåÁ‘šÝ ÖŽ€Ž„¤í(á_¢ )‚ÿ¬B»hOǧˆ„Ùñ£HxýYw‰#hç#Ü¿&UAÓ…¢b”‚«ûƒ çb,dÃ휊òÝqc˜”A{Ë/éL!éèPÕézcDÂbÁù%R÷$)fÒxSŸ¨Ã¶¾Å8Á³)¸à A?ÎÑò(Yzöà¼HiÁ^„7’ Ð6C{<úœ;“ŒÀ,{´Äšú®ø¦]{§p}€äÑê4×i0XPׇNÞӇ׵M³j!Ÿµx6ö§a¦Ô,ö?M€ÅfpgÿzèìuÝîŠúúnd±È1{4£$}%àl™ÂNæëáÿÂå/Ó¸1gûÎÊÊÎFá>1Cö:?Ëç\ûÇY×½0È@‹²4hèÈÚõ¾qæ½¹¨ƒ4ÄDl£ïá ÷£Ü?¡"±¦¯r>" ±Þó\~,äri:U ™¼?k•o±FwôÆ¿jîU›¨íÓä)¯!ý‹¦ÏÂëþ6’L¦†Ò§þ›7íâi3@ÉûçNƒ}ò)‡ó8q¦nÛ¬Bâd’œ½iÿÿa†HÇÿ°æ­)$|£7¼#1V¤øQn¹ðLq"Y‚‘ð5¥HÄçÀÈ%±#¶ü̪c§S6ÐÑÒP×Û8ï˜j ~ìþ’í^ endstream endobj 11 0 obj << /Type /ObjStm /N 100 /First 823 /Length 1971 /Filter /FlateDecode >> stream xÚµYksÛ6ý®_om¿€x?:™N“¦îxÚÌzl·Ým6³e,Êf+‘в“þú=— lŤ凬Ù Á‹sî —a™`†EÁ¤aÒ{&5S.2£™6=Ì)Ëd`Þ@$²` S‚Eg™’L ï&J1)ƒgJ3©b` @FDFã,d`œ–LœPTžÅ} SL£Kxð¡K†0ÑŠ)#ÓÐÄH=2 J§ÃOyŒ×  ÷ ŒÐ\cˆB+¡™ˆ–zb,  ”•±‘YÜ[/™ hÁƒ.í /©â\`ªxº´¸´7‘yàúh&ªôñ­wÌ/ÂmxÑ¡x1JTX UàÈàÐÃà*£`|n´’ˆ° ŒŒ-pàJcá,¨h,EFÐÁ;’Œs’€$W Ì ‡Ã_&85‘¨¨q5QÓ#à’~³±”ø³æK„Ð ðIÄÐR·DЬ„eQƒóZ„É*ã&q²Šp«%¢ t«-ÉYÉXX›%œn£Œ2ôÀ-él€lIC dgÍD¢×:˜+‘d¶K8 —‡%‚f ·Ž9A©c‘šÒ‘•ˆ\C4…K Elý$¡¢ÏIÈœµäÄ–†áç¯c$ªttáèÝ9…h¬g^"“ «W>L^½šd§Ÿ/ –åçÅ$û¡®Ú¢j—Ìa>O²ãbY¯š³b‰ÉÕu¼+¦eþ¦þÄÞ t8©'êÃÃŒƒŸ;±ï¾ë€Æ^½bÙ’ÈÓº´,ô—ðF\_Âÿ¢»ÆØì¨©ÏNŠ–½‡^oXvZ|jÙ‡5ì¨ÂH‹;#Ú»¨<ª\v@IàvQÔ˜kÕSÍ^WU œ÷TÕH™Ü)“¶*)ЉÝ5*5:5&565É •PTBQ E'PtBÑ E'PtBÑ E'PLB1 åŽ[:3&ÙÉêcÛÝÿRVO²7u3-šäñ¼tArhEDý°‚[¤±³¸·r¯» °ì§ú´fÙ[öµü†"´;¥°<ªpK)wa?Œ¦c°Qqå©Z¢ ÄȽ6{¥óŽ{a]è®GéÔ Ñ9Í&TGç5·Vï•aó¢§s‚1N§_ˆNGŽÚ›èŒçxãï•N9Ž¿D§ —Bî•NJXÔ§Š<Ú½Ò™x·H :áùø¬3/D ìéJ ˆ w&î•ÎKDO$7q¿tU 뒎ή͞œ™Š¦Qˆ-û¢iŒ€CÇ)í Y( WX‹u*8W©½Ò ‰7QšyFÀ¹~¯t:XX”fžŽ“^î‡.Å éÛ—žv¸¿‡Ò½¥2Ü}K‰r¦•Û'¥ ˜2ÞRRLýž¬LqT^¡Mïvðž7n¯t6"Km¢sÝõ(!‡*LsCì{¹Þeo¡T<øôŽP Îõûd“´S©j+¹‘ñaº·ŸVÎÙ¿ÿóí—i—V­æó[w{&)0Ýp…­ ñOÞA}©ëQSÌò³¢Óøæf õfUΧeuþ_aD^M©9¬–m>Ÿ÷«ªl— 䑲Ž]ÍUY\'”›»¶R³ò|Õôhgýmo½O‡8«e[/ÊzÉö¢ØP5o˺ê–`¿ž.ʪ\¶ ž_uòGMyU΋ó^Ím´««²©«¶$ù[Þ”ùÇy±¤›YÝt}år•Ïéê¤]MË:±ý~±¬øY½¸³z¦ã“­ËçgÊéxTîA9í-7J?bɾyP°±|§³)'ï.ߟ{Ðátâóô£²Ô釽ö JÃó=¶¹Ç¹9pÁ5eÙ¼ç‡EÅ=·¨¸¾˜¸mÅäž $4ך׊i8ÂZK·š>m{ùm–±ëëk~^­xÝœgËzÖ^CÛ,G©¥7N¶[m‘Ó:Ò&5ÍÑ™xúPjýxqÙ¶.ÞÌ–-sõÿ;7t endstream endobj 178 0 obj << /Length 2467 /Filter /FlateDecode >> stream xÚ•Yëoܸÿž¿bëOZ ¢EQÏ4 àKs‡´—¢¸8釻ÃA–¸»lôØ%;î_ß©•Örì€ÅÇÎó7\¾ àoò`“ Áò(۔͋ÀŒöû 5~ùé·t>ú3Ê®_\þǰ<Èùæz7ßêºÚüêý0ªºRí~ûûõß6™ÓFÃV@”c«mÉ[Š…ièȺvë !¼«¶ê¶aæÝiˆ¼;5hêã?>Qãz› ¯Ûú@ÕÕ_Õ°õy&ÒЋð˜ﯧ‹ÅaøL åÓ"H²ˆqÇã(ô†ƒÄ÷T«‡¢-% w;úþ¨j;ò~˽oǺëeïVƒ%>šÛÈV¿Äáýð¨­Nù%ÁœŸ0Y"b'À¿É[Y»}zÔ»®i ³ ò_}ׇ5Mp‘°lÚHº~(Çá%’n|‘å,‚YŸ Æc"éÕþ€:BîãÐ+kUb÷+2' ZÖ²Ö˜çA‚,wgoŽóAÉUs‰FÂ-ø+ðÇEÃòx¢5æR ƒý^® ôÆùÂãGå."&Dæˆ?Œµ‰­²²4d;7V2‡n¬”¸WÂ(ÌBÍ63Ç“XHa–±$N­28mz,œ‡ì:«xÚ”~S F5–ͪ–ŒÍ ‡»DIˆŒBsnD›þvn º®/`m£Žö}Ѭ*óœñ0·®±£ãîñèn$VF·øÏ2WXŸ—ß$H¯¸©åZ8á Í(žDh™Z•µ`i˜8Â#ñûr…•ưrO3hKvúÞɱ‘Z{ËîÐ-„+ðE*ÐÈÍ8ýÊ |Ldfx¢„Ø+‹¶í`YÆVòõ®qlôòÏQêAVÔ펲/…æéfUÎB[Ôò–&WvòÅéw Kp­~lÛG"y:S$;Ý©ýØËµ#â˜ñ,u¤´»ÑÊYÛbX07Á‘c¯náü½´1þ,ø§6ø ï‹e[šž¾5lÓ/SCä}ÖÎCx&ͳE¸º*ËnlmÀ ãâb‹§ }WÓÀoA|¾BŠwÐä4([4ÉŠmýˆgƦqÉRïu”^‚­…i@‚Ãú´×`;†AÕ~uä'ƒ7ýã̵Œ/ͼûîÐi´‡ ðÚ¢A‰Ey¾Œ87÷W`#†|„CGçÿóÁ‘‚Jù„‰FìfÁ¸WÑŽZ5ª.z:¯¨ïðÚä7–k€D½PòÊ5&•[´iIxwx¾‚cÁ§ÉånÔÖÜËZ< <ͺ“‰¡K*íL ¶²G™8‡1.¢…õ£.£˜Ûe„ÜCqD¡¤äÓ(—k^‘…`êÙó¼ÏÌO^wăA¶¸ý¯}O˜;S«a0Ϙ’³(èëÃÚ± p˜OΨË^Aâ7›«¶¬Ç ýÏ$úΡ¾éñ Z¸Ó÷]OÇV໽º1(¡å1 FƒOíèK FÚ]#©×ËBSf:“±ú #/YÍiIOI”2N¯•Ûq=H ˆ‘a>'Ís|k01L2ËÄÒü‹ÞZ´7A3ë‹ÚÙ?°7ùÕ<ÏTö«»YÂpv»„±PØ~±aÜäj¡uU5ªEM@r¸Ý nr¯ÉæÖIKç)€K‹tMBŠDBÎQh@h è®)#aÏ8“HͰ_u¶ïÖƒ¯ 1Þbf¬ÂTa7_½£Y¶ÁÏ3À®²5ÀTO´RV®jðý·kz=±úÞ€QèÏø‚@‹jl¾¹(ô‡ö¶û*{«‚Q”†’èÍÅ®¨µ¼¸|kA÷š¸.†¿#_Š÷‘='­~—Ê™ÙÛçCˆ«ÑBO «Z`i P žMÞ±öªÐ)à9à ydqoد.ÊÓ©ômiŠ LÐc¸t9tý=QÚ­8ñ‚:ð>ˆò­l &‹ó|)œA™‚Þ•”mÌ~‘0À·£¦´…-¾´D !¶Ù"è ø8.®Ð\aø?£ ‘«•a]ÓM5‡Â(RÚJÖxêv‹Gµp ‡Ò›3Ýi^N`šŠ[ã7® z´$ Œ“dT@³¥¬©À°Á6I:G8\ çy9ŒSÆ9$œ4aùSÏŽŽØ?QS^^ÆÑå–†ßÃ0õ+ȵ<ð.Ÿ=äÆñ†ÚŒ>ß äŽääñ_:r¹°»[ô•Ö£Iç§!'ÞXyÆ ÖxÖu-íƒÛ.k¦Å†ÖwX‡vùX£?amQÐgVµÆNYP¡oÊ lüôÏÏÔ8žÞǰk´ ß½ÍÚvÝC-‹8dy*IËÂü)øe©ýùŠžÏ7z¡Qó%õó쇌0KP‹Ñø¾»-çêšfçö Ü•8Æf"Å”x‹Â9h9èKÓú£kÿ0/4w:e‡¡©`UÆáJqÀ’ô)cpÔþŒ| ”žmjQ)±/Ü'Gþ¹p`¥(K§5úIEOì –`64„O¾‡i×÷ bD|¼Œ^=MOcÄÌ“ówÔg@IóLÁg%0vL%‰ ±ùñ}¿L¥ñh 9~ÆJuX#…¹yä4ÛœÃS4…|íSí´?pÐ8Ecì94ˆmÕž‘BPö×€Çéá+Iæi »æ9-¡û²A>lÍPÑ=®‘áÅ•LÈ’Ù¡]P%˧6Xe¥¶ 9ÝÊ »_–V_ òˆ%§g˜fÀÔ»ú1‘Ì’¿u•ÿ@,6 endstream endobj 186 0 obj << /Length 2469 /Filter /FlateDecode >> stream xÚYms¤6þ¾¿b¾Sd„S÷Áû'ûVëIî®’Ô‡,sÖë«ûñ×R7ocÆö¥¶j¢GjµºŸç‘ÌWüã«Ä[ÅAÀ!WÙþ™g{››6>½yÆÉÎCwbù|óììu®¸Ç/á«Ív:Ô&_ýê<ïŠ2/ª›õï›Á6šÚ ÁLËCË®*ZMf³!Ÿù±ß›ÕÕÚ ‚Àù{Qåõڗέ6¹-Ú~z÷Ó66k8õÚ«ºüR´k—Ë öÐLóìÕfXXèûOŒ€±|<‘Œ‚<¾6n~-ÒÖÄÁ ÂÐiwÊ4„S)•SWÏ[c\7ͤ×è~×ý²-ö »t›îÛõ–¾îèão¥Òl톞t6»‚ ñ)œ¼ÐY§á…;è‰pŠ MÞ_^mL `á.q9eQ}Áðö¾Ùå™ÿÔ÷¸Å Ð hdõ~ŸV9}ÕØÙt´•Û¦Þã§áz§Êò»Ù(ÂÑj_duÙgÀÞLÙé?_b‡,•ÎÒCßÁ|Íó¥ ô%“°8ÉÂ$ÁÕía¸Ðü-¶JÓkQA”Ë’©oŠÍ¿¸°5‡®m”®»&SçËß ¾çK)íN&¦ByWdM­ë- ž“Ú¬°«ŸWãkÚg±† Ò{AzÆ2~$“{kwbŽÙ<ÑÑ ÖÙ]Ûô98'çlöØë¼Â£Žq]“ÞÌìøägªr;=ë)‹ë&5U€}&]‘Ë69úr}‡Qâ',Õ‡oÇ!á‘`"«È÷XD„¤·v'æ ~<¨uƒ¡‹aÂB>O©É_!=çBQN¯x#çÈN›¦Y‹ÒRר¢êT_¾0)ÿ‚¬ÖÞ-ÒFUJëóãÅaÄd ~z>ó‚Çò¡·v'æ ùp<èÜ÷Ìö îÜÞÞâ;ÃGVçêÐÔ(³ÖYÿ@;íGäÌx.š¶ÈËÎxœDòì]úðÔý'”{q8”E[WîÏ/Ü‹[ˆÉ½pÀ¶%^´ %ߣåÑ[»ó…\8tÌ…³×Ò_ñ˜ùRÅÖ|L#’Å eïë¢2˜‡@V‰0$Øs¥ §¿æ^Âü0éY¯¶E©Æ‰ DäÛ‰z[W$6O‘ˆÕ.]x¨npBàŠa¢ñ×2b‘/úy>^¼yõiÁÈÎå 㾜fºð‘Mi¡Ñ°1{úYçYe\æAØO»¯µ4«³8è ¡,aºÏU2‚|Ñ'G´G^£sUÝb£QY}SÿQK3È oðõ¯d’LMBûqoQ-9M)U“RtÒŠ¢t0¹Œí–œ08”© èã)žêF&ÌóäB"‹ÜU… $PÚâ³4ù·°X#¤Þƒ+ˆ˜ 4\-}Ç—ö_‹;zO Q†? $ÞÔ*b¡§ªpqÿ|Óì­þ‚³’ˆQ3,xú€Îò)Š3Sðj pÝeIs¥EiTUä;—‹)„,âÃguµ-nºå´ŠÈÔê#³E×ý® Ãnðù®ZÁ2(W­EÓ™~š)_à+~Q&aþ«NHsû¿ÿ¢‹j[/ù.¼©ˆÿni0àÕ„Iƒ|SÁã¾üáâ—WŸ*>o>|xûÓåæ1¥”Œñ"tÒ<7’Õ4±DÂSÛ.ÁG9Ä÷å«×W§ !¯¨pH@Z‹aXe°ã1p/ì¸ýxgÅz‡/»t£;8âa¸p"±+©h}‡®÷j‡§ú@k6…RÈ‹÷”1TN²ùÎèãêéº+s’íyÞ ë‚ÎN -­˜áz·–bJ`#3À1 #””fM ü!à´6æÃxji¬ÀP¡œ"¹¥¤«Â}×O€÷bNÄ1ã ÷¹grúSîÁ/§¨g–Á£ÇGÙ1ƒ¥â¦Š¢ƒŒ¼†Yëµí/ªåùi¹ÌäGµ…ü=À•%³ù™h‚ßóšóë¼øèÁ>~¸ºüÇù -=9ÒÆBR|bE!àúSד-m ×ÛÑ1 ïðe j,1¨mã¨?ÂI›67ª%Ï4Z¢v6=úwW4öP o[T=1E,³®`l¬ò® •™Æ]_]°$Ì·Ãhäi«šÅë ÐÍÈå³™d ðá1rƒA/?¢±„ŒC‘oÊ;üf©m‰e­§?drä>¦¹m«ÆŒüdÎ2”õÁ? ë™iÛ* @o½»D<¨;ìâãa¤¹z¦w`¢$˜È~ ²œ°ÑtÛKxjÁ¯t—eJåÚZŠSàïK΢hX‹¬²|€!·ÌÌ4Ÿ%fN߉eÓ×3€BBȱyÚÌiaÆÒ\TY ®¨{òžÑ‚ý@ømuë(¦ ‰ÄcPP•Z"„àaBÀu^âÅb7œmošt¿fp›@ÆR©ŸÚ½€³€Gãqdóà êF 4ÚVx/‘pô¢6ÃŒ‡E´ëð€MNØ®ë43¶_t™êv¥Ç6‡´Ýa—V‡´IÛº1™èGÄçžœè°ÁÞJ™ž”î $;*çW/]8à Åu¹,i8 }>ŠŒýRÙpÐñ'ZÖî åaÚίä(}ðÎÌöP•.ñX,<Ê×OÉó»Yˆy°Õ I¥*zª *ƒ@%<šWY£öõ´ÎðÒfº)¾"ºØ¢êÉ9«›†ìþÚ€yeøÿs´²yÖ6¤°í½*-TY?Y žÍñ9°×8¿…ó,5%ˆ˜îq&¥˜ÁL“šýï*­Z='¯`Vøƒr¤V Ó&À˜ê¦á-ö^D¥9ëì!è4þ endstream endobj 192 0 obj << /Length 2306 /Filter /FlateDecode >> stream xÚYK“ÛÆ¾ëWð°Ja^À@{²Ëq\V¹bª|pR),0\N$0ðÒ¶-X\Ç’,.µŠª-PVÈ‘¨!ò¼ò¡ «S>\/Apzé[{è+Z»=Ÿ}|öôruí‘V]`V46ïÂÏsz´Çºé@×%aÐë3؈%“‰úªËvá“M~õ•RÑ»š@C ‰„°á E}qÞ;pî…’2xm~²tTºÆ]Ý<‡Ÿ·åZžd‚%qò2Ø“7lCı!2ˆ_ :fLòºäÔ,8µ‚A÷VAŒ?›î€x(Â-€"Û®"G3%äK„Ïq#<\„' bgI0*ltÃøèrtE^­J‘€ÒfdÿÉ­‰À5dì@bK×­ç?D •!Š’ãu•eÊøtíØ r¾¬{ÈÐ]Q¹ãþ,v;%_©ðé•)ó7 —<ÙŸ‘E?ÍÈÅŒœÀËo¢"p†¯Päh<·ç‚\WŽ×»–ŽZÛÆ5=?îßï #ý–•k›0!C KˆVÏi5@ʾž„Ž ŸÇ§âÁÝ*^©Ô¸ëÎEÕ—>\€8§Ç'´²õÉoµÇ6  Û-Å7žV³Orfø×ñ^7¹ZZx€SºÏå_@5Ì!Ayä÷Ù*H´Æ‘lÞTÎÌuçUÈK ¶Žˆ÷Ëwû¿¯Êœ°T2wÇü<á(, $Îm78šË ¯>Ìò‡W/SLõ2ë‡ÅQÂz z:AÜUîlG±] ] âÏØ ɲ„ñd™žWWaÉP©zTD ES .|ì§ ÃSH·ÞüÿmÞÑîT¹&Þüž1b!OþcYÀ>ïsàïq¼õ´Z/RÉ„‘/ð½ŠG¸kƒ–^3ª™<”ËÈ»§˜a:ù־܅ªw¨ûs(™`Pvš¶{M>ºä¬€½<ôóyåò‘E »…г,ßføuÄ&…‚¦–÷×¾iQŸ©Cÿ›EEà7öñ/¾e‡ºf›/5ìK¼K¢¶hÜ¥[ÓIK›¥Jÿ)úUæZC¥× »ë,í+½oX”¦†¨¾”dqØ(&퀬œk÷p¢£³Æþ·€7üòÜ \5¸VÇЦe8y¸ÊC5¡±aj‘®‡¦>ÝN\Ü—g³‘I€֗§®z7#§ás7LýíÇ®»´oß¼¹^¯ìâU`uóôæV ¡R¦¹z¡@õç-#ð†©lÇgÁ¨WPùÕWÉ’$L„Ù¾¬cè/¬4\„&ðG,Vq6Ã4°üè˜{¼íèØ‡ œ@#6Ža1‹xóad(ä1¹Ê Ñk_'§ wø…ç¹yP>*ߤ"'[br3 3ÆS¼„¬€ÕÐwfœ.ÈÆg‡Õ,£ÆX3¶,[ É‚XƒÏ;§§ÊÁùÞ‡ H8BgwpOAþÏ’—C%׳±7ä]•ùò“’«àål}&gԸʹ êƒÕ¼À*N2*lä©f*ÅLr3OqI¨6cɵ´ƒíqÖ!@\á.„Ó/À¿îr®7€1“£{ ³°C_[ÒùJN~€^x3ôÿãlÙ&TkW„ãÐGÅ xAæà'L_Ü6 ŠÌüNI“ä]¦T˜›²P\=Ù_ZŠËÊ÷ËC3â·üàÞ{éx<„ùØ«–ÃÛjáÂÏBƼ –‹)NÛ d#X´G;$]€Ÿ‡¬ó8>Üß…L³y4—ŽÒ¤ á"4ÔÀe‹Õ·=P›ÖÀZB+µœ„Ëq"ví}›þv´þ»Æü³€¡)¶ñ†„—‹×ªÅ Òsù²ª¸H,ÿ=F/¯œ>bÀË“ wçô€®ôRånDF¶® ì)“53M_ ½ƒ œéß:«Ýߢô¨©ô`'ÿ?äFÌ‚ endstream endobj 196 0 obj << /Length 2399 /Filter /FlateDecode >> stream xÚ­YYä¶~ß_ÑðKÔÀ´F¤nû°Nâ8‡“ÅzŒ ˆƒD£æL £–Ú•™‚üöÔE³êMol,°MK<êøê#Gmø§6y°IÃÐÏ£lSß$í7ÜøðÛ7Jôv ¸›i~u÷æöë8Þ¨Àσ\mîæSÝí7ó¾ªz_5Û¿ßýt“¹nùØ Xsh*Û‹ÚbÊPû:ÕN­m¶»0 ½¿T;ÝêÌ{îQyÏ•=ðзøŽwÛ,ôÚí´Úú©²ÛÊÂT{).óæ7wãÁb­¯´j~d‚LoTä‡Q¢ÅIù*ŒxÇïÏö@»Nc¯hö|Ä,ž’e~çîˆeÛ„CX@9(¯8A-âL=°„Ðn¶ÖDAHzFÓvÇ¢æ–/â÷û¦z¹ýcÅ[{q4o[_~C{{;ôÝí}ÕH,]}I¡ƒ„ð6Õ†ÛbÊ0÷0'[ËmóRõïQ )Ð\Á âÌãاL&—?%•º"ß1,úqîýZF·Z…K—Š5’†½‘EÜÌŒõp4k@?áž‹Üh⦓7ã¤áûkTj^ãòÄ­,péÎû™Û¥4׉¯ƒqróbMƒY„W!¥/.q¦sÜÙ·I3xއAI™_?Ðí¶H(è雨bNö”-÷”ø@Vܦàº7\-~»¬“ët‘Ë3›øfánÁõì™a¼ßÈÖF°J@„ ÍÞûòü¡7*õµ2Å8j?Ó„ÊÓ‹‰¤$\_†®Qå™{ߟмÝ4åô¢‚S­Ê%]GíqÞ‡®=¾^¡=ù°Ðä^õv //ùìö›ºø†F½¨Œ$$] ® Ò9Z<~ý£º Å8ÉÆ0F°Üs³ŸÝÚñËű¦²ö¹|ký¯°h̰÷Õ¹)å1ãG/ed?y¿–гtδJüˆË"øøŠd:v–¼®>Æ~^iA5'x¿àI%”;ˆÊ1 SC`ÃÕf2È%  %x 3Pí­ —tkd†²îˆ>Ãù Ô @a1o-w~6Lžøqš½¢Á]eåqJp§–iAÈ¿‘ÛPŠZHŽl°¨AL]÷T>‚ b ÃRñT« „ÚƒðcX\&šÁ’®°îËÔHe\ª;ÞÛ±‹HAñ€×S7é ¿$›MWÔ7 ¥}{4;!çî03ëØêH!ø±+#v1‹‚ÂñdIWQ}C)>ëAQSAþ²l»=ï(‹0%bˆÛÞIf@Ÿì±J…ƽî°p´NNï~(åC>¯Ö¼áÄ;l;ˆœ÷Æ,^Cy'ÏNlhñ&B¦YØï_ÀBúY(õn°íà©üIû+n@Qî)úÊàvøÝR®ì(@«âïYÌœ¸7ǃžEs6Ç’ª_NQv†\Eé2/>¾¢ð'"¶ns‹'BПŠþiåQâ;Ž`³jÓ­‰Ý#p:}G½…*‹˜‡¥À¥àà?âU€LGÛÁ²†us> ¹´c›µÇÑ¢DëÜ0[z>Tî)Ǧ‡ìM·Lü¬Y‹- ,å`%ÅG@×øB`cfLì«Çƒ¼£`W Zû$oÒ„ö0ÞÙêêiKdý*ÎË—rrÎsÍÓ™X½@~Á£À‡ñ§nË¢ÆpccŒ ú/®äʶóz$°È-ëbhį’L•dÛ¥¿˜Äó¿[-δzñ æåµp\hÜN_vÕÉÎW¾tΣ^1×Ú&rå'a¼xâÀ?€ýxA< endstream endobj 208 0 obj << /Length1 2185 /Length2 16205 /Length3 0 /Length 17493 /Filter /FlateDecode >> stream xÚŒõPœ[Ó† Cîî0¸»\ƒ»» î.Á%¸;ÁÝCpwwwww‡pØû•ì÷ûÿªsjªfæZÝ«»ïõt¯‡ŒH^‰NÐØÖ(fkãDÇDÏÈ –Rgb02²Ð322Ñ)›;Yÿ³C¦ tp4·µáþ‡‡°ÐÀécMÄÀéÃQÆÖ él`b0±s3qp32˜¹þãhëÀ 1p17ÈÐ$mm€Ž0d¶vîæ¦fNyþó@iD`âââ ý{;@Ðè`nd`1p2Zd42°(Ù™Üÿ'%™““7ƒ««+½µ#½­ƒ)-ÀÕÜÉ  t:¸IÈXÿ-†  lfîø/ƒ’­‰“«ð±`en´qüØâlc t|d(IHäì€6ÿr–þ—-à߇`¢gúo¸ïþ+¹Íß› ŒŒl­í lÜÍmL&æV@€œ˜4½“›-ÀÀÆø/G+GÛý.æV†—nT|(ü·>G#s;'GzGs«¿42üæã˜EmŒ…m­­6NŽ0Õ'bî4ú8ww†?\KÏÿ‰¹±É_2ŒíTlÌí"ÿöùX‚ù³f t°122r°s€ö ›‘Ã_ ”Ý퀙þZþÐàåigk0ùô27~üÀx:¸NÎ@/Ïþ—`˜˜ÆæFNC ©¹ ÌŸèË@“ñÇów0wh1~´€ñ¯Ïÿé|t˜±­•û÷¿1ƒ¨²°š¢*Í¿%ÿ×($dëð¤ccÐ1³1˜˜X¸lŒ¯ÿ#o`þï:ÿì•°1±pý«ÜsúOÉ.ÿîÊàcÉÚ~t.@ù§ÑµÙ>¾˜þ?·ûß[þÿuù_Qþ_ýÿV$æleõ·ò_ÿ?vks+÷{|t®³ÓÇÈØ~Ì‚ÍÿuUþkt…l­Œÿ¯MÂÉàcmL­þ{ŒæŽbæn@cys'#³µË¿ÖUþ4+s ¼­£ù_W €Ž‰‘ñÿØ>¦ËÈòãúpüèÉ¿MÀáùß”¢6F¶ÆM3;ÀÀÁÁÀ†ñ£•˜ÙØžLãh tû»‹ ô6¶N[â¼&¶0=Qv6ƒà_Kÿ"vƒÐâ0ÿ!NƒÈâúh¸ÿ#€Aì1Äÿ €Aâ±$ÿÐGv©?ô‘]ú}d—ùCÙeÿÐGv¹ÿçGvù?Ä `PüCÙ•þÐGvå?ô‘]å}dWýCÙÕþK\dð‡>j1üCµý—þz† ÆÿÀ³þ?Š3ùƒF“ ë_hþ‡ÿrþƒü.ÿŒö±búüØoöü÷`Œú,þ’,ÿš¬þ¢¬ÿQç‡(›àGݶÿEÖßwÜ?ÌuÛý9Ÿ²w¶uZYMœþk`aýcø×-ñ'‡Éáø¡ÄñÏ9üE@àŸ‚Ø>Ü?îË?>´þ3܇Vçà‡V—àGý®ÿ8ô­ÿÅü¡Õýø¡ÆãoüŸ14rvpøxý}Q~Ìèøï7è4‚Yš·5úhñ+°õñ§ ®+ÝÞ8ï ÙžZ ç’C›ó3d"UÕÿ ‡{ÁÄ¡n¤ÕQÊ;eÂ7Ï“¦ZÈïÍñ -/ß^õb§öZ`'1ú'òOkúð¡ñè”ö¿½ÙSõ³kí$˶wæDÏE}tíw«é+] žßSدb—‚}-¦‹T‰Ðö+š%Ë1̘Ã"†p¢Ã‡¢F¹tCœ½»ŸAÉšx'”Œ¥ñ:d)ðÔÜdŽzšóX+WfvìÄ&ÅÖÄ»C"÷:L’Ä\ð,.Œ– /4Á×oàkC4°g­&êXâ)™ØÁ:Òó.EÜ™ Ž6RØ&:²RÊjÇBÉ®á(š~cÒ˃qTh?xÃð¯˜ýáÀßoét&Ïü=µ'Ί ðŽ’¢ýðûaÒû"vn—÷4EmÜ»@ì"³aŽ“V—§üYû'ŽÇ+¯‰ q¨L­[e3>åI¼!ƒa&3¢¬/úg™jƒý•(ï–| ¸%‘SŸ¤,F«7$;<Þ{d3OŒø—uyöŸà>m.Ø+ï9.—j§¢Ò,¸%»l>H½„‘0+åþÔJ8éË2Dá-—õ· üÅQUl`ŸšKÓøÝô¶èAŸ{¼vªd:öȸJÈ8îÛ”DéäyÐW]×Äʲ ‰ˆÈSF‹Z|^g(ýèäM‡$=ûBå,>OŠ2¶ÌÐ)q_ %v¹¬ÿzfÜvI:_ƒ¦E×½YîPMŠÊoת÷«˜×ZҘݞÉmí-5YzáJÕií Ùý}¼ì¶îFdðYAþk+=$Ç®™`ù†‡RØö(w%÷â­ùÃMä±}.g|»¨þ{ùíÁ˜Ÿ²ÎóTÒ¼Îf%QsþÓƒ"ãK9Í]ò³áºE^X „à³0»tÅã*Ôc+,åÞ÷;_ \1<ö¸?Í A¶"ÌoÑ'L¡¹5—bä¹`%—âP¦ù£ðhò„±/¦±I­Ì¦Õ€ÎÐx¼"‹·å0‚Ruú8h”LJq/T¡ å‚bÁ—äpH¨Îù½Ïïe«½7¥+êÀ×ýàê×ÔLÇ·þf„iø½:ÆoÈ_BÛ:X$ØÛ&5áxï î>›QûÍD.ÝáóâüçÄV?¹Þwo¨åµ±³¨ôŠNDP°/ ”ÃËû„~É]&Õð¯ FjÉ")oØÅœ ÃÏŠý”ÚˆÅÍ㨹Ÿ{—¦;Ò^Ií.Qã‰&‰ñWo¸j"¼š×^%?VcthN<€AXªZ©ÃÐ8ÖutíÔ;›¬…h¤K ª"štUI]•©³jËRIvuUpç¹õ9ÞÊΗór'5Lè±åDO~xÞéä¬ùàG«Ó}´¼Í4#¥ªb˜Fû,},?G°8-û`ÍNõÀÏ ¬ZÐm b6 Òöêüîe;àg;¸/sŠ´RIDzŒ¹'ÍÐçS-Þ„_d˜wõGÙ*¥£o¸ó°vkòŸ7+ÚǼ7e£,ÈèCo†¢™péñÉWyA‰å—ÜWð/î§ &Ö§@îA±Æ·âsz?©@ÑHb?a["cÃñðÑ~õ®Ô-Uá«òFFY÷¦úÌ…™$žE‡¦H31û"™ù±5Æ:Í|ÿi<ƒ Ä¡:±äô¶O³ì|t"jŒs[^Ôú0‚Ä(";•VÂÞŒ›ðÄUèÂk&Ú©§NÙï,û˜IÉ…St€iÌ6Ï“»®ÎZ Þ†J} §.œñS”@ò>ª¬½I{qVG= «9‰ ¶2ýuÉŠºqv—[¯ŽŽÏnˆã>±Qºù¥v`Q3s@Ø»fÀêîé®< ¥Å8•)Œ›Áï`JD‹6Ӷꙃ 0Ns ÉÅ¢ê hOTˆ´š?¯¬«ß†ç!úBø ÔÝžfk¿ì ~Z²6ÑGðzßåÁ‚ÁarnùG€&¾<ëO“y9;u½'o[’V´¢&)Y¶ðºkJáÕ «¼ j‚«™a‡Ï×'sQ¯@ÿ:-ÄëS‡DEôGRü™W0-ÑlVOÔ ^;Eµ§#:è¿b= ðýºxk³øR É5Ek£ï–}zC}Ƽ0£3žJîþiyéÞ ­à´+1 k ézßtS~ /I%P@ŠZíS«hh•Óg½!:ɶ„XCüñ¼ïy7šÆÑ—%fß“b~…G÷ò¹Éž•ä®ÛíD;‚f4‰Kû.ɘñÝdÍØFÞΜdgàt‚,K~¹”¤Ñ¶†'Ä“Ä~aÇî¶ÄFš·öã"†…è‹Lwiµ]ÍØ]=xx×+]¼ÒGåA„ 6 ¦©Ã¾9 .$ŸšHõÓÜV0ùUDÅ+Ù<å÷íx“Dúè!SëàgÖi›_¡?IŽ™ÿ¶I±–HÕLÚ²CÜ©•ž@¼îCÍÅUÙ] @1·H­»ð yh*àêJÏ0Ê+Ú§Ý­Ps 9K˵ŽóúŒyŸ¿ê­IB¿ ûKðó°]€Ã*Ãy8Õžy9Kë'É,ú–¶sdJµÏÀ‚?´\ï¯qºËÂ=¯¯cò¿e»èStÓ‹ãá±ä,í'J‘&b£åB§¶hY|~¥%M¯9ödˆ`¶lÎ(¾‡Æt+Ã×ûŽUC–1ŸÆù½º‹hËÔ"+q}]¼TˆlËp0¹/Ò}ÕfcûžH²³ä‚®¤1QK…~€!µ«T ‹WëmÓ”Z!ƒ£þBËIžÇaßoLú;y-V׉A ÅoÑ}¢Ã§£«ꦜµQAÊ“j‰w $HM¤Õ˜¯Åx¼¬™n·”ˆcHD“~7ŒþV~ObNÌÞ!‰ M(¯>²áaˆP˜¥l4ýàõîwFE†)½(e"ÇŒ¸Vé·½  ”­U‰©¢«¾·9ødE\;Ã)–5¹G([Zað5Slþúz6·Î5åO—@õÔñâ\ ÓéLƒfUk|·ËZwÔèQb$íø=ãQYB‹¼Üeç5h?‚_-Tö1\ºþ§,¸ùʴɉØ,C?lÈh‚-Òø¨žÁQö*ü¶Ð±“·¿vf:xùz‚"CªkþÉá †ÌsqÆHú‚˜«Ïà"JçÚ§V³S~ŒÀn4ja¡¾Ð¡ŠP>Æ pq\:ž‚ ·f¹4|õEÜ«@û€"m9'Ú¦“dP—ïSôtöúls¥—Dd¬ñhY⨤Ïf+ÙÁªßQ”¤Öpc©¡îã»!3™î”Û§X&ò&ŸFÐ4™Zƒ#«Z×¾j]T¦íŠ€5+¹Lç™Õ»L»“¼§½ê¹F"sÞðN×>…>ÎèPF],Ãpï]07çóO¡®®zeïíˆgÍgB üâîϱ*îs4Øç<\jožV 3i¹•DnÍYm?)•åÑo:¢ã?¿ÓùBws‚!î¥DJ`ð îaËn¡ÞÒ™âÂ5é­*ÙÝDì8%pÝ®§–™­)¾×K‚z½SHx‚Ï?MNo¼•5å•{;±ÚPô [U'©~ZõòÉ6€ø»”­£±aŒNó)öûhÖº «¸îh¹e¥çAÏ÷* TjÝïu: dâ!N∑ß?zuÖë¨ÙЃ# Êx®OØs¿^czf¿Ò/ÌŒC|Z§bwsÐê«©Q‡ßMdµ×b,د¦HYëáä¹2^‹+Ń,Y"–ƒfú‘ÚYÎÆ|W_Ì›qõÚÏCÑalÅô¦R,ïdÓgà môsŸ]Ð稘ÓWRãvIIÎàÙŸ¦<_@½–lWÖk‹¹Ü©œªáÃvøZùk™ÖÎ"Y°{ Ã΢¯ÇÅéZZ ÿºpGl^%ÃûMH5IfS¯6'öCŽM)Õ½ÂgmöÀûFÓ¾í¬d™Ð\"7È´0KxD9Ú- ´Oç¥ô ‰ê–Ð< Ô‰U3=IdVÇz/ÔOu$vYî%ÞÏ·ò®•ÊÄüwÌ5Ý'I•þl-“ŸÊê³ ô8AFß1Âý T>‡Ð>˜q\pÊä²NãA{rqïŒÖlYü¶vp¹K—¿"ç‹Ë†2ôu»nÙÑ{h)‘îiìÍ‚u/ .øy;Á†8¥(Ààir¢ |åUf<Ü 5¸pクãPsDTÆÚò–5s×a"ŸgÛpæÛ!3C£KA›‚pήǰ¢æi¶86t1Ä:•vÏXRG Ë cŒ©yYQÖÍ^©âz'G,ºðâƒ?yy}Â+ÝÃÓO˜8¥EäÆˆ‚¼ó›z§éééÙs»NHˆwÆ92@Q¯ ]Û5¦g@fj ïÝâc¸s(¥6[v¢’í| zŸ>,›œ{O+˜ž›C|²â«=¨Ø2ÚÉ î§a°ÊžòFóz Ûφm—ÿ¡†ŽªfÔâ=‰zŠÁïÓ­Jkì ªMú¥°Ü OY±“ M†³KäÔ§qR:ËQÃ3T¤–„ö1@ÄÓ DÛâK©M’ñpÅØ˜”(\…]üœÁ Áýªž02&(Ó¼1Âëð«¨(Â*+qG!ÖñP¹8‡/Ùbsê¯%³D½e(EE‘+˜!ϨP"Êý·/Û±°•Vbž‹¥´è÷?ö ¸`P)hù¬Nðò4íí~êc„b¡ ‡ÿ<§E`Ç^þv­‚}øK‹y Äó±qtoßóV¯/죹­2Zµ:)ïRVEËw‚b~×JÑ3:Q•Ä ™\ÞÍÍÞp$BDYM٤ɸî©óü€ý6ßñ˜Óx¹îŠÅLÒ2Ìýmd²•}=gõëÓÏ‚YK‡+o‰@ѨëÛÙ«4—ŠÐ*CÚn­4·R¿­A$ †”M›ÒÊ…˜þÏÌîþtfP¨¥³Uô5ŸCt +]¾´m±…ÞVo7{DÇà6Éíþ¨k²Fj^ËδGÇZ:›ü­¼ö ¤`òÊÆqáðæaÑ*dâXÂÈí{auíwœõ®õÁ†é‰ýÆÈçëI¨`Ij(ÑÑ»Ë/þõ‰uþ½’àœSA7IÿÉ‘Q+¤•N¹ Ä¨L4¿Ùl+{÷mÃÿ„/=ÚÖ+.þ×v>”ë‘•ñð¸Óý†Â'ŠV-`M^%Q8„Ÿ-¢½žºA’+·ø;Ç7í ïÖ95cË([{ÜÊ1m•º—ËÁt–fÊ3¶PÓQ7KàÒVK£‡ NÔÿ†2b®²_Y6Åæ VÒ8?ú¥¥âÑÈKR|»×«ÐLЊOY'Dq5|Œ‰ùHø[K¹ïL„äIï;©jãÝgeÃrkãÂx„Ë«çôÊešhÁQ×G*»¬ú¨_t¨ç ò8ÉRŒL»­*ú×%OäA:" /„†cV?JŽÔt¹ýšgüá‡e‚‰xæ$ 5˜öÙhÕÒÖí˧ãâõ]²D¡ _ÜjÒ9g:¼X»5¶Di9Ðøš B޼æÓJÂöÊR…‡Êµ°+ñE#'a?‘{Šl$ÎÛª†§Â . ‘“×Av0'— þ÷R5<ttr ²øÙÿ]3 }÷´Î’€‹i‡$÷†1ò¨@d7ÿþQÚΉY÷È—°zn%«OóðrÖàQ¥Dan)I¢} 3V„ùý#Y ¾/,ó­X(zQ?Ð c²²u‰hT­jV+¥`¹]Üù™E\„F¿“8ötÇ.ôÙÃ3vf¥ÎXâñ¢¶ÈlÑ+ãJb¹PG"6Õ¾Œ_f ÿH· PØö'Á3E *HŠ™,‚H«C¡MÐZŠ“¹«¤§7¸fJî_˵ “jUw9° ó+÷ÓúðŠŠ6Ü«crºv>Öpˆ$ÛÆøÁåf¨ï£Wc…ÞÀÀ´hë7R;*„Æ@ä–xÚ®\e:îo nQilÖý\GOh@~ŠÔÆÇ×}'’{ „y8|_ŒV ‚…²mÇð½ü™³Ú¨’]TŒïî^@äÔÝ.|ùjñêµ=>“é¾-¤#è¾Ý‚ÎA®â> ^í2_naKøVÇë åWR28¦cË̯ó¶°ÏKã%Ù^ÔQ8@ѽxÉBR§ûåRy âg¹o¬8>„ê9ËÎÁÝN‰s—;’éZˆ6šC¸q¯nÏùâ}!óZzO\Tê×Φ†–øÙÓ˜lÀª>®A„¤˜eA0•Ùëkí =ï|fì‘–]3Dѵ¬ò{¦ºüÓ$u=¾—Ö×ö(;ŽÎPó])ò€¢»B{ÿ› $$k;ݺ̧y†˜d6iìÉJÍá¶LmK‡$²ÓÊÜl*AdÞf*?#ã]×Ú`KPmË5=ÚìZªKa×CØ–Ç>k‡Ÿõ_ï&‰¿ßþÛAbÒ9å¡ÈÅxÝmF-߻רš<“&k2)„L’tб¡¨ÂdƒO.ôÖ.÷¯Üˆú¦3»SŒKÓ¥ÂRœpöE v"ÂP¯Ó©%§™¤.ðùж®«Rz}ÚõÔäN:›Äýu±Ì¶ 會ry°2bTiSñû#å®Át¤Š©"‰D¿ª«€/[Ëéýü¬…9‰.ÏÅNä>÷•Ö#V£¶ ²¢<¢Á<&ÖˆÖZç!sÉp#²õ%ÑÅ”‡sú(|Z]»÷Íñ§=L[*‚ÚíŠP£ó§®¸$Ådî8VTQqè&ÙÝÓ-PƸ² Ö~kŽúd†iCK¥#…_WhÆ"ç÷jGwÔÛ]jCsïx†¾Oˆi Év£l]Ûno®ŽnœZÌr.†m‰‹¢/|ÝgQ<9ˆxøåNzZu†_?ÂCÀ(Ýœ?€[¢FµK1¤ÚTDcU6&æ…h”}‚¼|EEïgNÌÊ«µÅ÷cç¬]Ò‚ãÇ[ëTVÍE c>Ï`*~t\Î}6v›Èî)~6¤z™?¦~K¸ìGÇ!‰7úî'ŠcpÅ;öÔ+عS¿€Ø¸ûø]Ø-lN¯èä² m·¤”¡o˜Åó3ÂÄ‚¶ì.‘xã¯f3Ë Å Ïµû–/€Ý˰‡J…È¥=fL®í‡öèÑBÌqÄœì½Þqî0„‘èÖ¤Ü'îÁÜ® Pÿ­*lÍùÆMÂæ°’áZjÚH1™zk3áFÈ‘wT0x­ù&&Øô,gkŒ¶BĽw´ÊsŸïä5žSn—-õ­W Ö˜˜¡-»oü“UWÓö"-ø—âÛžø}+Û!™Ñêœî=µõ´(€"Úê’ù5‰EÃuÆ,  3iv*–ÖL1‹ôV!¿\£ ÇóšÅGÀ’¢¶2†¶š;Í>qQY v[”<Ø®‰¾öuÕ_0°Àf;WQQWŒ»¹w†$ÀÚ)@a§Éã,©õáÕ¬LÇ9xŒŽŒÓ„ã}BÆE^š’Ä:üÑþõe\¡‚“5L>^!±ÂóâUY´^4Ùå·q˨ l8€²¡É3&›¼TDSAwV£ÓúÅ"vÂè}†æ4Ðë±¢óÁ±¼¿;˜H²d=ÀŸ¤f£ãSsί3c]R§¤/gýöù-W…¸ S*R÷mº!Ñ_8»¹ÖúêAe4¤[‹P{”4êÒ<37~­­ñùNúÉ4ÿ¯HpEwBã!Á,ͤì Õû,c!ñÉú{ÅŸ*f¯N®bïAqÂì^—Ì;à¹øCû†_þÒMn¿,ˆõK\#R)¶s€÷õ·™¾%k”'oæQºp•e•(¦Þl´Ã– ”’36rmýÙߣ8fõåk?¦Â,ØR£|`S`FkèM¤É»AUDi¢Yôy—,ˆØ¢_˜Ñé›}Áäù¸°=‹åŸ©ÎoHs;‘²ãÙý›—ÓÃaóÍu‹ ÆÈc¡ÏqÕà oƒ'·Jµìv}EJ'ao(äøë'–{¨…ì~xIÎJ§ÞWJ(§«4 © Y”%ËÝ¢¡\€ˆÞª2wMH•Âñ+W~›Þhô!ŽM¿—½ÊÊóÊdTf²gB{›¡®p½ÛçhŠ«˜H%8UèÐ$]ã¹t¬¡ƒh1MA…0ˇ— ›,»nŸ(Kó[Åi âŠà"ç¡”¢jÇe_oˆÊ~Ô’¾ê_ÐK.@Þ$ÿDš#‘lÊ$9Ò¤…bn ›ŽÈ®}e ;3=‚×»J¸GRm’_iûN€by8ø“‡q@é’¶¼"ÐïYÇ5Ñ`¨ ™#q#|%3òÈ\H¯'‹io‡C)cR³G°á³É*É(ühñ×ß}²ûÄãDySz4îßÎ)L·úCø&#ï–3y‚¸¼I ¿{›ÈAn!¦sãÂ~Léùkè`X;ºëÊl&ÛS\rŸ¬ ƒZ…î¨ìRÉ ßÓÍ[±'r[íB @ªu¯Ä__E;J¬`¢6ŠãVÊýR”höëeW¾”#Ò×ÛͯªvF.‹£È_î{”š{txî_#“²ŒHmB¸˜[rÛÞÇ¥MöüO- $»·[VŽp™ì†ó`Lø?T7­oË[ßVDøÆ=Í…8ðÖB#ßÀ³©ðp ÌÖº¤êu䟲J¦ÂœÉñ…6 «"seCMb¢œ•`cÐë.Pk>…5b&á+¿ ƒ©gÓÙ-\Þ¬%u·Ž«˜p™£*iJ =|sHÅ6„N±„ü»/Û’aRÊçk~ËE€wHzدŸz›KÏÆBbfÛÚ>d¢qOèÚÝ‹³/Dß~E ™Ž”¨ ‘=EW¡F,K% o õ°,=ZËló,Ó¥SC[ôe8ÿÖ¸²›¢ (®ŒÑ a€-ïZ þnýè ¾õû²Âíx¦èfCiksœ&oÝX[餅4Ó.S4IÒû [ÄÙN‰3tû¢×€õÛÖU{ùPÌOKLpa¾ ˜r²@îM'¹ cШŠïS·fä­92?=k{(»-¢c‡k‹7KÄŒŒåÖ{G+{B?ûê¡–Iß fr+Vs9ˆ2óïŽ~»É¾¦­XmÀÔ‰8¹? wÝmÎÈœõJ¥¬Gœì‚¤oR­©Ð%oPSÜgçéÛѲn¤XétHá>¡8³±¨×T¡]¶‰Ò]Ÿ9Iÿ8†‡ì“y<v®ÏÆb©”øù"½lìzt;qÊ|oèbí Qnø­kˆÕ) ¶˜/L‰Ö,³\‚jåù0tž@B :³6j2bëbÕ¡…qå^d:þ¸Ãb¯ï–xÄrUɿͅÀná§Ú¸~ç=ýsÚÚÆ3³Ïó¨ÿ¨¬,®8[¯Ï2ÜïŒ0ˆ! %ê×Úv qWâ¥_:¾·#ÁÁ3Öêv‚2IãëUWpÏÌ×ÕËÛ™Çô¶Â.;˯Óq¥Ÿ@Êôª«»Y©ˆM—$ú–ú½B•Þyß6ÁŸ?}‰E»ŽG>6Í“¬:øé.:ÈØû«ËNJ çü5ÑíR"˜Þ¦8lã—‹JeA™ãZLa̶í5o|¶}‚ÓôÙgfÏ#”ás76m´u"ÝÑ.Ý/ýn5ð)ø&í‚TaLy#lM;¸ÅQ}§éV‘ ¾é9ے²4ÂÓ,!·õ [7?kG£9GÖh ¨+AR„}½«wª¨·rˆyç´qÆÜr‰^zàÀG³W&éù²™ï>Mã£ÒÿΚ'f¯èòÚn“¸å=Frž/Gu\7×Ò¿1&9’áþ[à'tp¡|×Ù^ž#f¯²DN£Š#~ˆÔö$|nB…âz½Y\¾æj§±_°ú»SXb^êÆL?íg$nM¥úwÓ&©Ã¼á»5G¨#Rº/Þ*>xD;-DÈЕj=Ý?:oÓ<‡8²$<-§öϵ-ÔN¶În~\‘iþtÛÐÿ¤úƒÚ-bAE÷‚*ÊÆ4«%èow–#®=FT5̾aÐIO+° “³N‚ö%xNòÎÀ7µ55¬îqq+C)Vì_ <Õ$è¡ùجÈO~ËóCô‰Ì¨ˆ¡|Â[-âÅCÛsK¦Ž\ ¼DböJ ë”ë-$ø_t-÷±¸ÆÖ}µŒí®…˜N¤øebCoVxhŒ‚FÓŠzž˜s×=AÙê(õ5$ùbŽ%Ô¼µ@WÕvÚ4v–R­ˆç ÆuuÙÉáäpëÑåzb,î†ä ²å6#·E r„Îôk 䕺/³Dd7Žz²àæß¶¢h¥]DÚ¥©¾Kó¯qU›ø‰nðtývµ•Që¥ÝMn…β§·ÑUÒØEy›NÔÃ6t;q2ލ;B®—ç®`](G5y íG9èÉÒQ9]ü•ý´¸ÂSÿkt¸ªŸv[xò²4Y ÁƒNft?é»È´’‡wPMy²úÇ©ãP‡·ei«—èõUÎçr¢¾Ï|“³O‚Ås€8‚e/Aw¿Q¨Þ\WE8&#–>øeö]äíüO³À—WDT Yw0ôl¢‚O³ºŸ¦Z—©fÍg[}´ŸËíåØWëBÔÌ EQh"ÅGPägKÉúº¤–½’ñd‚Â$¹y¯î3’=‚cîLJóR14bž Àø®Í;ìÐÞÞ#é §~ ï)¡Ì”¹¹xh<»§]p€ž¬¼ôE@+“zmò¯õ^vŽÅxï~®Ù­íMrÖE/œJ¸úâ7 h[˜¶Ëžìi,î_ïc¹Ð1´Ð4E‡³ºö,L@©Û,‹Ü‹ÌÓ¼Wi¾i $a‹ÐSš:²…àcÚ¥\ß"½U4&„wËÚçŒHaÀG"Î,@´œ¦¨$wØUbût[7åJ·O±mù߇Hzª"–ù2ò|6.b)¤Lž¶´8× |Šÿ®R·ékƒÜwýUù+%ØŠ¦Vʸ{‘jd†~A:%VdýOJÿKë~"YL5ñ£'ÁµÍ§G2oxßy².„=j”(~ž/)‹%2õ–šŒ·0Ž(WÊö!˜ôAàAóf¡9ó`§Ð½•/ÎEéF¦¦( ͇e €ãï[¢ƒ­§æVCP”ø”ôOiÅ´RjWMìhÈŠ8’„=*–_;”ÎÆÛÛéVZÚö4¹4¤ —_<– 8 ?7êô ö–à©s®J6ø¶FS‹ & ð>2çÒ9éx.p¦æ$ìº os‘änïÁÿ°àõAÝ…t$á´LÓÑtÛ m€ý*ç'’7‘mîú¦N1Àê¢ïÌßÚxB[#¡5É1‘\¤¿@`+'œT«¥{‡Ëw4™îÏ”fš\1Ö,xàcÃâéøÖ:(d¾Ç­gȧ‡(W"š[PЖ~ JaÝ iª„"ôÔGâg­¸ÄWfô}P>&àLv ·±}¨}ŠÓ¸úõäµóíSƒ$½Ü¢Ûõ37ÿ…ýý8iƒÁB-HÒ$¾WY5õ«`EÌ)‘žšð÷\ó#ŒQ'oÍײƒ8Še‹òù9¼"ù‘€èBPbt…;`Pžÿ/‹ìæ·p)y™²ú˜ŒÌõß·ú=>!“çg4û\GˆµO©©9ÕꊜyW¶cYÐtXxQöÌ9©è„R/”ظ)©JL¹ëý‹ íK‘Ì8G4…Åä]Í(ºš¦Ö³þÙÌkîñ„‹Û½±9¨Nõ)v1ôÌé¼?öެiœG¨ùž¿BŒçrMÂ5 $%÷¸$#ÞÇ·Ù€ÆN;;Ú"ÒM לF±$·á’…¦< [¥¶7‘ñUÿËœ,ÿŽ¸Ý¹Õ1I—Ñ!IÝ -Îý>Æ8¢öxͧk€‚ÚòPß_DøÐjË©•úi¤ÜX"ø´§Ü4‹-òa¸_tàk¬ÙØjȦìžc#(Šoj?ƒ17Þë¼úÓ|áR7ü¹\Þ†ïê@Û!Lœ€uùBóA0CiHS2{K¢f°Ë`¡o\G!l½0& f’• ò•Æ}QöT(8?RLïí)Š‘ö2%G:ûBßÐÀÎü¬ ëMÅÈ+ ïH7´öÉ&¥Ù&Íû“eÏXUÚŽq\Y×ËÍ¿Zø/¨Ü9px€´è"i‹w#4 )Ì÷[”„4^&¹WÚ‹œ‘ÌõçåÌ_±-ÛO´Ô⎠ܙ>¥|ÝÓg<âá'sûƒÞd“Ù„løïY¡&Ö³†X 0K`¡HT 0\.Ø~ÜMséû¯­åþbX€Þaw8ºìXЋ$L`ô®Ì™]xÿÀÆç ½\èc¾ÃCUrôpr–/}µˆ¦t¬xRXòã\Ï1 €ÍÀVæ™Ê¡¸z¿Šˆ^[ν¡ïaõáQý}ž¯ƒÄÕ»êÔcïø Ø; c!:)äÊ7·tR%í£¢ý|óçÕïs"ú‹ù™Eàë9BÑÂ. ®ã Ü|àZl;ýL™FI­ §¿oš±&¾î8J=\gúäò™,‰U›ßû `Ýwí±Vj,Ù0ÐI±gõÄfn_§;ùJ/øÓi©H€ã7•"¶lœ8;¤?*W׫à5ÆÐcŒZfv¥ä >FÑž[™p`Eh's “F„¾}£`9M•R¿ñîÛÄjõÓ1¤mP£_Ýýœî6ªöcºˆvÍ<§ÿÌê¢C×xàÊžMÙ†_ï7¥ ƒŠ,TÄ ìÎz¼Cíñ+«z’|Á6_lÁO”³Åù„Ü#{Lž¹Ø+‘N!ÌÌ’›51Ø]-ƒ\^vêãÁ e‘ೂ´a”¦«¾¦§{=4nkåeÿpó…ÚÔÚ2:Úo›ÍvŸôf­D™$×eôL˜˜˜ŸU9' C桳z¿/6ªT–1ç0¾Þ25Y•îF ·ÝÑ‘œ‰ÂÌ›¡7ïZ*Ýå£× ‰ˆi·Ü‘Ì(ʃö+RyË™R«²åY0ð$é‚ ¤4eýdíÇãwüE6¸HÊ9­¯Ïšz d¦d‡õBÈ"Xm0 GůRžŠéêðšQ]f-JÎ`©œè²Lþ™¡‰âÕäpaèa Ñ”Дϭ4»îÁß0…ö{åömòg…NP7É#ÁŸk¤¼ÄCçH½¯øú@c>ª™>0þC«†¥A¸¾¨ëˆó¹ø"›†c=¶¾_›±×6ø$_˜Ùq†áÍœ;&±N…æ÷‚žšµrØMBŠ^Áùä \Ýòˆ¹hØ;ñËÑ&üŠžÇñéÜ»Édž”ÞŬ¸ , ç¡É…’¤"ð7ÅF`ï/ë»1퀸0lç7ëÅò}ºha¶kEã@#‡FXØ?‹©¯ç|C¨iu`‚Ù*GÃ;P6mx¦­ÉÄÊDؼ•¢/8‹¡Å­nny+¬SèØ2è ä¥K6ËfC¶Ê9½p[€o‡Å,,Stü„¶-ÎûÉjõG_¸ï:‚k^¤ÈftÛoq3¹Øß `Å"°ú¶[Ä’ûl³š¯Ï+³\‰d " Fë¹;ª9úï—¸AyÝâ³§­,Ñe“› ¦!]ÇÚØwCÒ+ÎbÏÇ„%—~¬‚ 7­ìæ¢=éË´g¤È0*êI8,~»?ƨB. ð𠇾EJÎŽ^óN 6tì÷ó†Í]™åµjµœáÖ0Æi/ jóí„w0ù0†àŽ·¬â›®V‡!§=€ Q¢æCˆ¯ì¼#2а'œdúRþÕÛ '¶ßŽZ07/ÃÛ÷c‚Þç±ZÝüø1~´N iÈ,É;¼M’K QLâ4wè,YîTºÆ»7ÊœX1Æ]çEnðôD:ß6bâ32‚Ò=[[)0Iù´±·Vc¿fR Â÷)5Ümç˨±¤½ S¯æ¨1Lů¡ïOaچݔmôÝÔGç‹÷sȯ,¹èÜÞFb–…q?¡ÂN&å„q³vŽ• )˜×sRgü/äêïØPAq|±¯›)cÐÞ„ U{cÃR"´e+ê‹øJòöÔx•íщËÊbøM‡ï¤ÑmÅš{Û$¦¿ðõø &J`›  ƒ3¹uQ GU­ÚJˆŒdŒ6êà ÇpÕ€'ËmU2džÛ(?„I/¾–^Ën:Ûž&*àU)ÐwtÏiš†¬1º¦W…Žz£¾é‹,à·§©Ùaåá%]«HVÁ£Ñ^š+´GeAò l·jþF¶±í?J«Þ.í­¡¾§Î¡oj‘4‘Ÿ3õ©-_CßWdÕ*åÜ›Kkbm:xwžÊŽžq:væç¸/ÒLüô(ÛþÅÄó7,|dÃØ—³ÐÕ+”iÓŠ¢ÉÜöt|_?¸oIv„GV’àKÝ¡´Û‡ `Ü'µö÷huWŸzh¸ß:…3ÇËÂÿŸØ'ý aNÜ‹é~•®kw¤ô¤|¶& wƒG϶^ŽIá‚NàÒžÓnÃô‰ôy˜® ¹®]ízÄÕ _‘£‚ ‰Ðýµe‰Úe3: ŒÂ}〨*81ËB ¨ÌïòÃ+ÛQjl@ˆµk;r¯û1Føùë­|<þ«O¡Õ‡Õ×ÏÈp·[Ò¹šD*↩—°‡È„× 2ìsÕtÉyîÒ³€8ýÕ5–¨Ênònyù»‘ÿ­(¢ÿJ‹RDxbWÚ/h߀bãÛÓ‹±6û[£¢€B8ïÏ¢h:Mζ0TD°?bé¤/7ß·AÄ‘>½«Ð~ÆËI"©òû˳_X YI…"íü¶#³ñ.SƸµz¸4™ ÚÊXÑ0Tdõó •Ï[Ø$˜Ì¤ðΈ @Fæ’X+ìUû H²žÝ61ĶõÅ8ÙåÕ‡ËrüÂ%¯NÎUD'J!g`4\rcªK»iN =Ëm6ÂçcS+×÷µ+hÒ &ÒÁ.úÞ…t§¸8Q'€† œ”:#ÜZÄt-Qî9< +‘%……øàc|>^3G:þ t$¡Ð‘ 铬¯$7KV°-óh' ý£ÂÉœg,[fŠK-ꟛɡkǾ5›§:iz ü¸\òެyÿÌeäfán¢M x…+¦¦kÁ<úÕ/˜VªRb&¼ùéN!²ü¹©aTÝÜÐ5 ¬\^mQÌ9íáI!¢çì±§¨Íÿ²¤ª†ëŸ×Ÿû›‘Gm0ÔÙïƒWßß `Œ» "¾9Pº‡z#Ýç ?£í#0[²8%òILHè=(¦EÌW;®ܹU`º¿Þ!dDr¸ñÇàƒxµi¤Š£YÅ¡¨ŸpE2KJêÿF¤¸Ìuö3`[ãº^-à%> stream xÚwT“ë²6‚´ RD¤JD`ÓIh"½÷^U@I€P’„Š ½)½7é*½ƒ(U@”ªt"EEéEàuŸsöùÿµî]Y+ygæ™öÎ3ßúÂ}ÃÐDH †²ƒ«£8!°0H¨¢§§A 1aHÀÍmŠÀ¹ÀÿÖ¸Íá,…”þ„ Átª¨‡BµÝ]€`1 XR|KŠ‚@·ÿ¢0Ò@UˆÔj£p,€[…öÆ q„<¼P> øöí[‚¿ÜJ®p  Aõ 8G¸+!#â4AApœ÷?BðÊ:âphiOOOaˆ+V…qçz"pŽ@c8Žñ€Ã€ç-õ!®ð?­ ¸¦Žìoƒ Êç ÁÀ…  Gb .îH$dšhé Ðpäo°îo€ ðÏåÁÂà…ûã}üå BQ®hÒtÚ#\à@u]aœNAÂÎ,Šàñ€ \ vÀ¯Ò!@u%# „ÐáŸþ°P à c.ç=Šœ‡!\³¦‚ru…#qXÀy}ª J¸wo‘?ÃuF¢<‘>Kö$Ìþ¼ ˜;ZÄ ‰ps‡k©þÁT€ëà8 Hê–˜”î„{AEΘz£á¿Œàs5¡?4 ´'´÷CØÃ ?,ÄÄaÜá~>ÿiø§ƒ0´ƒ; €G'¨áö¿eÂü1/ %ˆ@?0tþù×ÉšÀ0 éâýoø¯‹¨˜ikê« üiù_Fee”ÐGHL($*‚AâRÀ[„ƒß?ãBêø_-¤= xì¼^ÂEý]³ÇðþÙ>à?ƒé£Ô…yÿÍt+JøÿŸùþËåÿGóó(ÿ+Óÿ»"uw—_vÞ߀ÿÇqE¸xÿA¨ëŽ#¬а Èÿ†ZÀﮆpwýo«BX%¤ÒB`qaøo=«Žð‚à 8¨ãoÚüÖ›/œ  7Daç‚ô_6–A ,›¿M,aåp¿y.à KõÏ:ÔPì|ûD%$ â Ÿ I}À„5…Á½~±("ŒDá.@BÏ~@{p>h ) š0ì\øGl¨;CHþ‹„ÄË¿Ö÷‚Cã(¨L°SupËA¥«§Ðò ,éfêÁQ¡Á‚û¸.µa›…x“¬ÌIgê`õûNmúÊnÙ³¶}–j8j½Å÷„8ÔW8ìbÇÏö.Œ&øì³qŽÓ4=±HV¾.]Œé"2d¢m§T€9t™pÓøþUÝñ1Á“‡¡Dý–vH‹~k{eI¦.#Ûmó/ŸŒqMv½¦Ë;Lå|r}´m‘¢ŸÎ©#Ûzˆ÷¬ ïéë¦ëd¨íñpù;W(ŽNM¦—MUœ¼Â|:ïòÏœbtz;+а®çs|ÉÕú[ŽK[Ö7xÛo9Ú&ÚGƒ¿àÙéÐÓ Ê©˜Üü•HØTvIC|Â>Ö¼# ¡ùz¶ì»³vXˆŽ÷ähÇÐüOw-ËwÝÁ¼‚zñr§¥K_üê¸_Æx؇7ÿU™L·¤&À˜É·îg”×Íå’5½Ç2j!j)•êØb*_4};¸9à˜µ"µÜì²HÝçò»{>xñÓ¼íÖVežI·Š(d }4~¾fÚ7½àÉÑ&XäM-4­*Zï麰ç[áµ`­ÛãŠ*ô+÷¸J|ÿ@÷(% äÈ~ºÞÃ$ÜÁY6µØ¾{½”8FT¢Ÿûüh'ñm7ª…H àQ}´?Ù NêеxÒg†WėÛ${òº¨ˆå'Ï~È7§h‹»*NŒÅêÇ›øz}Zò›—èoÓ-„ Ü—ßé%.(Ò8ú ]™â}DýÁ¨7h-þqt‹ÒüNSNßHëè×K-%r·Ÿ~ÎÜØs`eÙΔ»ÌaÙjÃqfw†²¹ú]™Í¼`î¨ûa?yý–'ÇWfâ¥ú¬Œ×ó­5Ô=u¬A_pb÷&Lt«É3ZÿEÙˆ¦ü®ªßîwŠ©¬¸®»I—[¾ÖVî•9”\&kÛµ6ej?ƒøÚ¶:ÆÛ=à{åy7hjÉrJü^}‡è–÷àJª#³ICHé?zô©Ððºýø} äxÜÐÅê"Ž7_Û^EoÏ·±ÛÄÀ+jø‰ñ¾ÉqIá†Û|zÒ2”CMÍaÅÞ=~ìœ+x?Ú.>ý;¾¿‰BÕ"n£L¶¸~…”~ú¸{ð¼)04I7ræ‹E]µh•©zœù<‚¤ÕK¾ÏþƒfÍ‘%‡µ©ÚÞ+§tãÞHcª¥%Æu`z*팋ÔþÎt<ºz''#Kó†ùþt ¬þF}€ Lécgúr Åž,ôÓ×Ü2ŸÝá žðöv@߬ۋ}EóGûßêæä¯L.Õšæ~ìE}3öLY„]Ï€7mD¶(#šWÙÙ^11zm¼ìœ†[™¼“ÔÌy+`Ë 8ƒšk1W’HòÚ`ô8"p!°€€ ™gú¡¢ÖPdaO|ûLn“ý-&í…‡÷T…ã}þWš:U¾V;ïFx^©cÑÛÈä¯ëŒôð~Vx»èZe§$¤¥–î2üîZº_,‰äSQ? Ð7óJÆÁÑäS"Å’íþý -gåøðîS—oòžñ³wÖe?iÞ©ì¾èåAÿòŠ_À’ºWg†à Þ:¼³ª‘±N¦¦çòšSAcg–3Õ’>óžxÙ™øaÚÎ\Íô™“†­Ãp˜Ñ³ªjJÞ¢Ï2ý•FÔfÁ*h»Õ·Š2*D·ák<ê–¼Q€¼Ÿ!‡±‡E ƒL1¢È¯©-Í6;å!ätÃö³ï‰KrJÜA3ûq1Î"ñå<»—Þ —Ö}¤ ¬šÓ½k~ï™Ýñ;Ù– ÷'FyµQçê€êwºÚuc[ëžôÄ™¥Tîe,õÂ\ŽL5Ùz‘çÞp³îØ¥‹Ó™‘¨1ŽA_k`…uÚÒ +¾)pF¿œ'‰%QcÌ ¬X*,r›X¦gHëÂú;u|"WQk€ÙGb—ö’^nó¹ì”Þ€jO¿ª‡šš"5üÜGSvIÎ ?ïVy£¼Þ×;•Kñʯ6y™Jbå]LJ¼¦Ðœm¾úP»žùú!™G/«3$$×’?=`ŸZ@ŸòÁ^‹ÆÒžYŽXžQl„»åÇÓrÚ·gåõ¼¤mVB÷nD3_ÏÞÐîhò±aŒöbëØ$öò˜2Ùéú‰ÈJ8ÓaÚ—3òÌ38½Å(ñ3ü&«tÒÁ<3F]C…¸ºž¾kú*å+&z{cˆÍ1êIù¤ËtÝïö×/-ÿãÿàtÓ¢#Ku]j5ŠkkÄw+ûFƒzä\ß@dã)ËÚ¤n‚ŒÍÌ(Y[‹«¾9¹ãn/ïG&FWc·Õ+ûùÚ–Lñþöã´$·“ŸKÖ|ºf>Êñ÷R½ØxÊf"Hª~¬DAµ=®4Ú5çíÂûpQ÷BÓ;Ü‹\’M³Xúo_V)Û™Ÿ»*ó3Çš2ÜŽRk".´0pšLMS©¹†^aº Ñ$»ÎIa…/8yM+2Z¹@Á¨*•a+s^©­‡ÙmF ª”»mwð„žÜ¹²¡•ŸÑ=šzóÒjªþõÃ7gŸŽá([ø…f ìZáË»ÑòŠLû1•Á«dUOÇ›,H÷С£ÛÎdyAƒ½J¹´¼ÖzKÌèh(iö¦cï– $U¹Ì¼{ï-ǶSr/¡ÈŒç:}Øý: êw6‰D?~©ôرƒ¥ ynKªý6áÔ9ª¥i@CÍq”gUájP0ÿÊ|9«mRÖ¢âí¨©(+E݈iе1Žê ¾­â/þWûf2¡BjC,Ë! ¨¦vŸfÚ$–*Ú~¾Ml•þEÇËM¬£pþ ®˜½,c-ö½ïÅîpPþ€ÜŠZœbEs¢ð¦èýyLM¡t/»¦|)|uÒp`¦fT¦bÿcχ'Á~®™kB?êô”ñX[¬_lvôÄI¶Q‘Á&Û"Bœ’½¨ÞLc¯öúyŠË·¨YG+ [» {ëRé \¼³[½÷ÍÄ®T¸¥×Žîn.n«r>?óh‹jÜu:¥#ŠQHÍ9šîWbiX‘.ÁJ·Z÷°ÊhŠ–‡¼¬Vpi«­†2Ð/îïÜ€SäO­ áÀ>аˆôÄÙɆ&%LŸ8‹,ûÌ‘­ %¢2s¯?~ÛM²ø¥PJƒ›.=Øòf£»Aï‡ôHÒòä5Ô$`ƒUâÆ³øìfPRä§IÅÉõþKª”#7¥d.=x²U{¶½Èžs½RÎAå{^\màŒÂáêÆ<¹LŒuB ÆŸðO3¡"B÷“ªc{URåé- ‡GM©‡oX¥i•ånsí’ÿèÙ`âÊàoŒÛ=êuÄÐìޢ䀗ʬö_¶è.ùïkœ‚ÔR)‰ fÁKõ…1^ˆÊHógn—â+ž'–ÑŽ£?;è_ðô¶ž·ÊœÆŠº¹~;UÈþX¨S´'ã³»kÚ$þ6´=çõãbý¼ÍQÚy²VçùNؼ×+-G5¹ž âðBëxk Ð4¾Ýºù›ÖÃ㯢3Ìå7© Ã.¦®wYRV¦Æâ¡î'ÞMfÆÎó$±„7’º¾ÖçoÛBƒ}[îŽæš¿ìâ]ÃÏ­»úx¼|Ô¡ãÏø‘¥%RM«`‰§²‘Á9Î ed­‹³sדª—n¦1_:˜ùZÍrDÉ ‡·<ûÆ¾Š›wú=¨:¥É)ÊCš*„ޤÒÙô¯Œ°[Ü»!ç®¶m´–˜BÁ»¡*+SãTÙÙ×p47¡µ|(Še`Ï«Ÿ;VªuÕHx«oÒ íýÙüC/:³xkLåÑ}åÜ…¨ÕJ¹LìmòC¦‹[¯¨õL[š>œ5Kg5TÃþE¡x NÞÿAu?&uë2ÃU:[C“39™3µÃÖŒ žíˆ|Œ—(%—å‡h¯q´X+ÑÆ§»fOJÝ‚Hëø‰ms1À§ûJTe fRÝ=]¨X~4öÛ!µZáž‹s±"ÒH`{@Æ8.™!êý.´‚1x¢Þïú‹Uµ:æ¦A7ŸK±,Dg'¡Õ¤[=û²²‡Õ ôT 9¥rZ»kÅÚ=¶ßß$Þá3öÚœ_‹%éô¢”žt,¹IѬªÉ¼ž3ê%†Öù¿jbÔ.¼´Ú¸X(ív‘±»×Ñ[g¦öT]FöîYÎûŸþ¾[Ïæ(Gé®ì˜Š`ÚNŠ8*6•:íÖ[zòk—\J¹]ð; tˆ?ös‚ª¡Š¾¸ŽUýÌÖŠ‚ÚÍÆÈáý$Îõç›39;ñŠ&¹G¾ÚT|g;šVYÉü‡=ÌTeùú“7­ 2N ¾%½ø_úivMã}Ý«R¢†tS®U-½½ï(¢t)Fq=vßʆ¶›9r¶’,ݤĤq8ê+ƒRÎ}×y«d²v‡I™9M‹9Lá×eä¨3.jL=x€—¢½e‚Aó„VsE8ï.½U\¤¨+J‚è„¿N¾Æp³¯î{œºcWñézÕ%œn˜ÔP(¥/Ü÷ÝÈz«Áu¾9·÷Ë´êI8Êdƒâ|9¯êÂæ.Ò¨IêE6+]rg ´')÷—C•ü˜žXQ-xß§”ó²‰~õÜŒôÅãö¹'’aNÊ“‹R ! ÁŸ—UI_ÄűY>ÚñVMœh#wµ(²¹o9Köõä£Ó²§)ë@@ ¾nìK!aí,S4§X¯’"ÏŠ·â˯ŒŸFŠ‘…·'£Döã†X¨¼¨’¶wùoÕoj¾³90’Ýa{` š‚L/ÔL9I¤Àî`’5UÁœ-з–ݼ‡e{®/xQÉíez„_ü©ñŽÁ¯ònÓ7<4mt§â‚ø‡«ùøo©nzò¢…CÔÓ §˜A9‘*š6°º©Ÿšõ±'sÅ&ÜlxE•ê+T Õ¥½¼Skz‘.çÞ¿—ŽŽ8óŒU÷ˆ%ôÖha™†À½öþå誹ȶu¹F ~ž@Ó[Ï¥ü„ÅÞLžïnsIz-Åqµž£ºëe££öqCÑ«\¶<^§˜3»e~F9_\4« t8Dßriج¬}‹•5oö$*í'î?áàçx¬Î´•"TÒ1UsH÷’ê-œ~^+%¡U{pÜÇÓÁðð#YwqÁÁÝ&aPíŒÐØâ¤‰­Ê%¢‡·Üà¦éŒÅ²v…Th4®ºav¸gja`Ê6ü]\ØÀ‹Ë+Þë3ÝGw™sKû¤t4l¾jnŽ£vðEAßúÒ=d-[StjZÚ~Ž›^ôüüëfZÚêøP3¹¾¥›À#mq7²³%-¸èð¬ N&F¬CžA­x,6fõÍD_ZêI>ã_׊æ(Ìfù–Fí¸‡Ž'QÑ ©«ò‘’Ô‹=þ|©”ñ€çO{îxJ¼áì_ðuN+á…3s‰0Íj?oÕ jœO¸Þ³û*› ¤·‹ºéˆ2]ãîÜZ¾ dœË+_È?xD9\ò¥WT"ܱeu³ÙWKXÂý•­‘aþþøC>ÛOSŒŒzê×x’ï‹'H0%ÕÜ/š ~È 7W g§Ðà·Uxk¬®WB=ßp:6à°øhÝn?9GŒ$9%j•èÓÀJ šâ¾êtnÐ[ê¼Ý(k•Ûë¹:ÿbï“\»a±1Œ=R»Zß­Õ´)y x¬eúŠ+,ætÐ;c"ì[ÂÍd4¢iåÌê˜mÍäÂ35÷D½cFºé5­AÁ×ÍÞHŠªÒ%DQtD!Ü|Ää ¦Å =¯„“ÞNÝ”#¶×0zþ#é°qЦ¨õ-/Þ/ÍâhªrC©~6á‹ìÙØ~;ÙÝG5ÖºF¡ Mþƒz¯IåáÂB“¨g#WOU˜Ë™i.&?épé£Ýì²òg6¸ÊåÑJV-L›t£8õ<\Ï]…p„_ú¬ªÄ¬òoì•ãsË‚&,yŠºxÂÚÏVFº —Gõ°·Í¼/ »Ö9X¸Ñã’hî%¶kšõìÒ·®ž…ÌÎ?R+‹’Ž3y‰ô¾†ðô5Ö;ŽºªÂ)Ëày‹¨û0\æA®ïã³Á=)d½˜-”*ÓD/ŒRd›L×}T1è¯Î6‚þŠãSÊIÞ"w¯¯ËÉV$Aí²–v–¬3ô/äQQ‹…§¼‹âº |æ½ • §åšŸ\£û8ÒŠ¢AöÁ+}÷h³¤Å®ôPnÕ¹ç[²|2}u^c(hÅà>¡Hý\ÄI-u¯fïf[`¸9–Ç£x«úãUCαwÅ6z5tz0#KÞÅiÖ²¹–Ñ÷x̯õ0¸×H’“ä3·ú…æÑ8M¤xmL}³ù±Gv endstream endobj 212 0 obj << /Length1 1398 /Length2 5888 /Length3 0 /Length 6843 /Filter /FlateDecode >> stream xÚuTÓýû6("LAB¥a”Ò0º¤$¤[’±ml£AºD@º;%¤„$DAB:Dº‘þ3žßó~ï{Îûž³}?÷}Ýõ¹¯ë;NV=C~E(Ú¦ŠFáøABÒÀûÚÚê a ˆ€0€“Ó‰³‡ýmp>„a°H4Jú!îc``Þ¦ ÆáÚhPÃÙ‚Ä¥AÒBB@a!!©¿hŒ4Pì‚„µ€h à¼vtÇ á¾Îß@.7$%%Á÷+¨èà !`PŒCÀð!`{ !‚„áÜÿ•‚KÃ9J ººº €°h \Ž›èŠÄ!€0, ノ Ô;ÀþŒ&à!ØßC´-ÎŒñ{$†ÂâCœQPˆ¯4T×ê:ÂP¿ÁZ¿|À?— €þ“îOôÏDHÔ¯`0‚vp£Ü‘(8Ðiêªj àÜp|@0 ú¶Ç¢ññ`0Òlƒüj TUÔ‚ñþ™ Á qX,Òþ猂?Óà¯Y½vp€¡pXÀÏþ”‘ïî‚–û…vEyþ}²E¢ ¶?Ç€:; £NÎ0uå?¼ ð ÃÅ„$%D$Å0' Ì ‚üYÀÈÝöË úiÆÏàíéˆvÚâÇ€y#maø€'ìâ0Î0oÏÿíø÷ ¡Hhƒ#Q€²ãÍ0Ûßgüþ1H7 ¹ž~  ÐÏÏž,ñ ƒ¢QöîÿÀ­XPMOQÇÈ”÷ÏÈÿq*)¡Ý€žü" ¿°˜$$,”À?xÿ;ù§¡bÕQ¶h|Äï~ñõwÏ.HÀõG!ÜÀ'ÓAã© rýÃt !1!þ ôÿÍ÷_!ÿ7šÿÌòÿdúw¤êloÿËÏõðøÁH{÷?í›x,"Ö ™˜ù™-þÌ*;­jàÛ\?Ò3Hs4~e¶gÁþZkÿ®4v/DiÑžÏÓІávI¯ fü&Y°êìwT<®¡kGõj DY·ŒŽ¼½¤æ icäàx¬ Gë_í + €Æ¦êmý1ð–Çg‹êjà 0•ý“®DÜxQÁé™t_‰Ä¬TÜÕ¸ø8š¹­(/A«ZùØ(iFÚ5’,]è÷¥µ= 'Åu%÷å/ Ë&5 ƒýd¶³ ·®UyôãŸ6÷·÷Fš¯O–l 2:T µ-_ò£®ÏÈë¤ë¡ÍÜ›Ô 7¿Ç"ªBªÕPpgítž<¼xGBüÖ¹½óše®RïI¦GЕn¾l“³x%lÎ_lò¨q© Õ‡_ëYoõ›Öz.±ZÁ½Ê\f@žþn"1”åïb+;²4I—jæ!#Ó] .¥te& Ú<°Ž°…€Ù2š?Ä‹B¬\éI¤Tj°À#•Æëý$ã>å—š 7 4U[¿Ü\ݦRO”iƒÍŒ%ÈæZžz‰¿ZT9uŽçª+è^®Br«4)ŠO†=•_ôñ?Ÿ¤•LfÔ¢æ›]ôªc¿#U˜F ˜ÝÙfˆ™è}ž‹d€ó?ãì÷–ôñfµ|ª/s/Žs¬ÕU{@RØcsË+aÆU:¹•hû;®’¼®‰\•,iX ŒÐRìR’l%ªux1dûä"í%q‘Mê’†ý|á“KYfØfÊ$£eí“7ºQÉk.a+;zËÊ ñêTLù‰ý;„ÆÓã’ß®Q±ðV·z<ŽàìDô,2¶NÙ|¸ÉNóÕèŠs=¼:l4ö`Pxo-W™©übÂ.—;œhøæi÷+»>ú ?ɅŶÕÎSp.—‚wn•CÒe`aßP³èÀJÉ^!M$´ŽS£Í|{º¿Ø1‡§K‘ ‡‘šügã ÝÇwY2³\ Ð=ù¦ïÌ€|…Ç0³Be›¬éý˜µ©€= £~BFǤY œ0GF·¤¾BÌÑŸÇÞÖÅ–LUTÁ}N^4š\aAT|ÕÈìå~ÌüÊ“4¥0í¨l©3ôЗñN©eì‘ Íníï¦]/a& ,Åå^/+“z`[,ï;©®ˆ–Þ_`Dyé²…]søôp¥'µJùú„⻌“žUf²ÝÜÃÔ‚)©Æ±¿‰ü'»oíP•ñ^&!®–Ã`#ÞqÙNOMUyI‘+PNqÅÉúÇa­hNî23µAšÔÙg÷cß­Û]ë£'õ>)ÁÒ§:¬MúñžsÍ£c`ØD%³LuŒˆ%KàÚ:ƒZŽ$nþ‰þDð ‰N³Ø=ó¡^Ç$céUßEƒ× ^q›ºí6ÆŽŠ]ŸÞ÷½æ¥üï9k-ï!ú ›>i²V´@‹ÂÛ’ ¿˜ôUŸ9](Wõ‰„ÄRÓ(o’|@"Δ¿‘ïèùíŠ9KË̼kî7×¾ìLƒË8Õ>×ða<“Pb9^{ÞÔT³s®çé^Å  VWs[í1ÍM£‹MöÝÜØ½|‡¨:ìšÇä`Î @n]êz”(¤Î8¯"u¡ÝɃî:˜L7HkÛÐ1WÎ^V¡¥÷™aó’X ¼BÖ¼eÙØ3ňè¿Ð’Sº(âT:U‡§O™>y“²ŠÈçi0Bê†Ú OEg½K×ÉTÍSÑ$ù<î« .Žá~‘ºuséè©%UcíñƒœÀÝ…1UѵÎú½âï_ˆ® tâ JŽ,j‹ Û]Íðä⃒µ·ópÿ»ƒ7–j]¨@ªöb©pTÖEÍFN_çtà$ß`Ð øÞgëa‚•ýI¹´òÖ ÷ã7r×0—oˆÜ¸eÁaÑA›5ÒÓYyP£±Aä}) ~ÃiîªÂÃw6ésÏÔÑÜ|_+Ôç3„<’||/Zý.Ïô ‰!3ÆÉÁºt‡d#Ìd=Î?ÜpKTXXã-¿¶ìG5ªLº7vÊp©*rPéÙ©™˜èNž«¶Yñ² ┪ůªjvONF)ž÷Ò_çpù!*&|UÓûÍïa\à¢[QV oÏ„âEú\ñØÁxAœ‘ÎGrUvƒöúšB=t+bÅ­ƒ…·ÁHÜv¢ÄDýfýhc_,!B©ï¢«ÍÿÕíß=»eê>Ðd«j?ó…ñ¹žnW˜É»\¢–ZéýñKk¨’"žˆ¬°gÊ%±w õf[0Ûõ^ň®|µSu_? (Â51ÿzkEƒÏôW×÷ùêa|f ´m-‹8Rè JÚ´¥„ÍÆR3áüÃàìDØö€òÉøb¥[.êÓØÊ–£E?h‹ŠkoA€Xc\²òfVÅò¢Ë^ð,ÆæîZtm^q¥MY´‘{¬ç±¨|#—òÜÞ $ëÇø ƒâ*ˆœß­½SR3èa¹Ý20šOûšÆh£ã{n7°}ØñéѨç†ÙD$ÁŠq$‹ŸôÝ)âÔ‚£²ñ;G/òï9 ŒÆìRÚ»^Êóèì ½ÿ*öá„}<¿9Þë[f¿sL«Â^`-iw§mf—Ù,'<@ÞàÑ{ŠÔ ñô+ì‘»ßVùvåòÔFÉ,(Å*Cd¬gÝ),¨¥V¤cŠWÛö¶ 8>öòSö) ïGÆp`V¶O*ç>&%Oímotí g_ra:#¶2µÏ"Æ—òê 9æžß7øòc¼¸K‚µT¿“Ü£Á»qaé÷ ^à<­kè%ˆu“mߤ5ÃzëŒCvè ÕMNŸ êa€úèá¿À ny@‘ŠçÂêØ ±í>—=³{¸ð†râžÃ›Á ¡­ i¸P·½èJ«6F[ëüÂZöºÕ«b&ÛWU=ÑÔ“§BÍ}k--_»=ä .úHÖF´ÉüŒ,`ZzWM<€Y¿wöܵuØDxè†Ù=@5Ì3’6S”Sèqvd S“K…°¾éOèÅ3#|íè’VH^ñ–«.­kk]PêwG“ÁÌ@ëjêàˆ@I Ùï«Öü:Åörg½áù /®,ßOx˜ˆÖÊ×éÓM«ìøx™ó1A@лó8Õœ§3GvcÑ‹V;:4{‹ÀfÛ×yÄHœpúQ=ÈVÅ©ºÛ\ñmÄY„ peMÑÐ2Ø48#ò¸¢d6­°c-6RÌõ˜*þ¾Çû‘RŸ%i§sÕ‰G«<,ÏLÁ/ìjƒòQšê ñ–&Õ°.šÃÌB?vFÖ5‰¼l± ¾ö>‰WKÁä'ÛbV[¬ù„Ó÷ëIK_ic‹aÃ9 ºÚ,Jh¥~±û$Æã×ëÚ3^Õë¡ÈÜßhÖ§’}ÐáÖ¦¿»À¬¼·R§Y(ª÷3qüâ]LaÕ¢Ø0:äw²“‘R]@g —Dº‰Å­37AZ‡hx*ëlÝ?¿TÊÏ ì"Q\]”|!¢hΖ·‹kAøÒÃßM$æÍ÷ºå€C$Qä>”ùÓAâ%ö~¯bv®sñ#¿>¦„bR_ººçùÅ7TÌ¿xùEǾ§6 tk@Ôˆ½1:cèm$i¤9M”ýªU}íÖ-„ëù@Ù3·§ò?ØôÔnꦨx¹{¼ÐìWÊ8M ÒßäHŒ4›õ,ØØë ¾CY<V('®^—uÄ}±ªgw2™±¾Ml¦TÏí¯Ä>Æ8Ñÿ–=zÏêǦô]0ˆlûFÚ’ZR)…þÝ-òég”ÈB(V½6‰nóŠþe›-ã1¥ÜNþ›¸LØ{c#‚°lcþñ^®Ëö ŸoÓg„e¼Õ®~ÄЙ;Ødº<Ü©þfép/#°œy=Î܇Krþɤe¾#âc¤MZ€_Ò)Gb‰NrZâxÅYÒr@zNMÆ_“„LØõ€Ò*»o\¾/i‘Pa T+L,¯ióªN—Uuz6‘~ ‚ì,×›X_·*ÛYU÷-\&,ÚøX9u{Ջ䘌½YtÍað)¶­L|“‰@!ÚÖv3Ã~¿4¦Y];Ó-²=×TLÖÚ¿ È­~)×&{%Äm}Ü„4d³¢Tsµ Œ®¼„´ð*ò®Ë¶‘A·’§ç[‚B=ǯ$£Ú AOÚÉNŒ›wew\r¾m_v?ÙÂ=ÌØðyyUà?3oÒ$çÏjâHî¬ÍIö 6°#Úd°4d–]+Ö$˜„Ù?R}O°¼óе`;åÍë  ñÔ“NïÐp)},ƒì¸…šÊÁóÓUãŽG—ö߃N£i£¤ßN3õêT–—­WŒ$è]5˜Yjçc¥¶ÃiójØ|ahZ—蟅«Â9 l핯ô¿ÞH&n&Hó }ó âMx“ÀõHzÿòRk•Ú^i>çp?³Œ¨þšqÿu ÒÆy*~=‹£ó/íýUØåÑ»ÃÊ2_‡öRÁ•ÎÅ˘a‚üGì쬶MûijßF‹6/OnKÌ?}" Q ô·§|NÇeiG4í”OÙ¾AòS¡UxtI^¶5fhÙ"ªs7ž’à‚“—*=«|öfJ AȸJ(ì/BOrg h ³©5ñžàÊ5ÉŒ®jÞ„áá‰ÙÂÚîµI>Óí…ëeõÍ,¾ôåÞ<¼60å)_¡¯aUì›.ŸK/èÅv=ßPÉŒ›Xõ1,4§Â¸2zß3>o«…¥Š©$@‡*~°ÖKù7}2¡SxœPé8êý‘´Ä5÷”Émh1Œ>mÇ«ÛÜ–›_ÌgòºyÁ$îŠYÄ_ªóo(öhJ/ÂÚöȼÀ=«Ê¢€ð S ^¥»Y(×N6oY~ßqZ¤ßZñâ+"·à׊ ;"]PnÅ)µÜÖlÈÆP“÷Ö’I‹6ÿd‹ÆjŠg¹¥âǼ`×ÌœYß’Ä9ÈeÊñг!¥å­1‘˜«‹¥7  ªÙ “xóõA?öPÅüU¥+øÙ‰§ùD˜vì/Gù¬¼ˆ?ß°?ƒ_¤jƒ_šìœ¨µ×u++<§3¹ Ï•-'æ›2ᡟE/µÊŒªTDõ‰‘3mc* Ÿ&|T²-Hyt(uý³1½‘ ”6ö×븽Ñ~L©nY!Oí$ÁqÄ×¹ÁZñÉöû}nãôgyá˜dùÕôjÓÍDLK~â«dâKô$ߘ¬œÝÝ™P×Ì +˜sX¾ÌIÓ·LÉæ®|þØöó9¯û*Óëº_øµ‘¡t’¸tV5æ<êIç™l vÚ­‹ç „^3Ç}<5ï˲ïÂ¦Ï  m! +*Ú|i#y4Ì´Ü~›RP×y'щË$ðìÙ1 ƒ€”-O÷À„‹·Ô.:5ßÛº%lMá’'Ä¥ŽÇ9E' —ÏúBJW%ej¾ä;™Í C/‚(__‚‘xÕìîŸÈtEÐo­¦«i´õm’j¿z(ЉÊR·½°r‰}2×ò“éêùÀ&md›‚Eè/½dÃÿÃQ <Öê/=ä&|ˆÂ¾kï xpímTëýX²ORcÑòÕ"Ô|°è$“øÜ§kåÚë{‹´/¹:âÍuÖÖŠ›»n]^{¦›Â ¥=ÃTd~@Ý $1Ë™jRÅ)\u›.·8¶Qëk —kÉóÆÎÜË'¥*ESÛÝ#È\®W› Á”Ï{îôb™ê¸ ‡‡.Ž4+ &±›ï6wójóë> stream xÚŒ¶tœ Û.¶il6ÉÄ6Û¶LlÛjФqÛlì6¶m3ûÝû{ÛýýÿZ第5™ëÆuûy†ŒHA™NÐÄÎ(fgëLÇDÏÈ–Ubb02²Ð322Ã’‘©X8[ÿÃ’©,ìl¹þ0v:ƒd"†Î ;Y;[€”‹5€‰ÀÄÎÅô‰‹‘ÀÌÈÈù?†vŽ\CW €,=@ÊÎèK&lgïáhafî ó?_”ÆT&NÎO´ÿqÚ-Œ m²†Îæ@PDcCk€²±ÐÙã_”<æÎÎö\ nnnô†6NôvŽf|T´7 gs€Ð èè 4üU0@ÎÐøweô°ds §¿åÊv¦În†Ž@H`ma ´uy¸Øš àeI€¼=Ðöoc™¿ hÿôÀDÏô_º¼ÿ"²°ý³¡±±½¡­‡…­ÀÔ“¡wvw¦Úšüehhídò7t5´°64ü'sC€˜ "ÀTà?å9;ZØ;;Ñ;YXÿU"Ã_4 .‹ÚšÛÙØm`ÿÊOÄÂh j»Ãß“µ²µs³õú˜ZØš˜þU„‰‹=ƒª­…ƒ PRäö·Ì è `cddüÄÉ:€îÆæ Ñ«xØÿ£dúK ªÀÇËÞÎ` *èca ýƒõr2tœ]€>^*þ`™˜&ÆÎ# ™…-ìovhú7 ßÑ ÍÚ=&ã_ÿý¦ Z/;[kßæÿ™/ƒ’°ˆ¼”8ÍßÿW'$dçð¢ceÐ1³1˜þZ²O />ÿ¦Q0´ø'?|%mMíœg jÓÿdìúÏPþsT€sÉÙ¶ ü½ä:ŒlŒÆ ¦ÿçUÿËÿ߆ÿÅò[òÿ˜‹µõÔ”ÿÑÿÔ†6Öÿ€–ÖÅt²v 3°ýߦêÀ¿Vhbáb󿵒Ά C´5³þo-œÄ,Ü& ÎÆæoËßrÕ¿®ÌÚ¨`çdñ×c@ÍÿÒNËØ ôèp­äT@Ðåü;¤¨­±É_'ÆÌÆ0tt4ô€ „Ø^L [4ºÿg‰ ô¶vÎ ¨<€©#ì_eg0þ%ú±„~£Oá߈À òqDÿ‹>1Ä~#&ƒøoÄ`üX R¿(ºôoŠ.ó¢ËþF èr¿(ºü(ºÂoÄ º„ß]ù7EWù@ÑU#Ptµß]ý7ÅÓü/âé #PfF¿¨v#GCc+ èmbêü[Îò_ùßñ_ˆÚø¿ˆ Dflg Ú†ÿ‘°²þ%±±ùð¯5a0ù‚B3€Êþ+3ˆhcbèdþ‡ ”h™þ%cuÎô7ÑšþYÿ‚0€ðoÈÆòtý#¿ôv.ŽЃLÌþ€ ÂßÁYA³0÷°7Úþa’ýT™å4«? ¨sÖ@P[mþ¨Ô²ßÌl W[Ðyý¡k÷;³Ý¿Ô bì«Adö ·¦í¿&ÌÊôôßóeemzÎÙý11Ðo‡ß"wp±sšYÿ‹‘…õ·â- û?šÛsþ#ý·1Ó_£ûcL ¶:ýîÈÉ hcñï­cûËèúÇ4Ø@$N WÒëõÐÉú_ûÃÊêwXгžÁÙÜøÇJ€úæìf÷‡ˆÃå¡ë”™Ûûòvÿ‚è=þ€ &zþNÄä tü;Ô¿ž—Æ.Ž 9ÿçÚÿÿÁÿù}ºaç쌹ƒ-kƒÛî«ñÜèvÇx§ÉvÕS¨è¼Û]ß'RU¥®;Þ &þD^Ù¥¼X"|ñ:n®{Ö¯Øúäý¬ÿUir·va³o<ÿXð{/þ‡t*{Þ/ÞjVÍàRdÙ.ˆ ¹h÷n=âîß{K—GBçv÷ªØ¥ážK§è¢U£tŠfÈrŒ2f±‰ß9ÓáÃP£^¸#ÍÜÜN£f¿J}¥õ9‰f)ðÒÚ`þò0ë¹Z®ÂìÔ…CŠ£…yƒ:2Iî%t$…5ïU\°Ò·àÞÌS@˜…@›¼B‡LÀœVe¡iÛØ]ã:²ØÁ´“¦ÀëCÛ‰¯)iD×w$–ǨjÕDs®a±ât˜ ­¶Ýªý0µLþ¸Ä9õý 0ƒ i~ìßôÃë©Îaup¨î.4¹å~°qhû‡z/ÿG37&jQs툕e®4üdèRçQˆ.u $:2í’k"Ç3´aWà/¡G\¦­|FF-ènð‘glÙÞ¿¾øTÔ_ÈulÌ Ì[»¡ê½±Ë½u&_\ä㘳ˆ¤‡R椉þøœ³C¡È] ¬Ÿ *e¸Ø¨À¤)ñ ”‰Ûb[øÕOZÀ*)Þ½;_9¡èaùÀ™G¦V¡ÚË–§H´sI7zP0 ÒÃykr°u[V&¤‡qh§öpQá.4øeSåSpÎç%ÿ¬.'ùTqÁHˆÂ»íÙîF$§*B®D61Hê*¼Û£]…Ïn´¥’"d‹²½Ò‡ÚÜt²:Êúëǯí;²oìþeÙ5zíw†Î™„0òLÇ9 `b¿X<HR·‘deç'Ä{µ^Vµ!mÊßZ<Ç£ÄüÞ}@µ.}(#þ)ÅW „ZPŠQú賯F µ¢<°lC›s°Vt®„ŠÙ„YÐÞ*ÝYÚ®AÐ.5éï~Uˆ­¯=¦¡Ž‚Õu­˜]… ¢ðvã”ý ¢³] rô3lŠwÁüe@cí… sT¼›‹Õ0ÅbgÁ•XW0tôÄQÅЯÎEïÓ*c" .ÝéF­Š‘¥é7²÷åöZ-ùP¡È‚y ¦Æ½Ó6>ˆ€Z)O/Ÿ¹aAÛÆÁQ6GtÒb–ūû!@,¶ñ(-v¯’cô”òµC-à‹5¥µYåŒ%£©ŠèU¢¦ƒÒÙ¤ÙaÍ—CVE&¬ê_@ç–ƒZASÑH ÎIÏê4×ÉäKš-¢ç×0ï+òöó¹æ>Êdzâè~A¹(u„‹(È- r•鈔ÿÄI*)cñJ/¸`†·ikÍî&õ!FL¾þ’GúÃî±Âh¾üAAì!×Ðx¿µ)ë\òýú{ÍÝù:ŠÅ10õ¥‰Ý ò®\ÆiÀ+Æ7‹‹S.Œ2q Ãrô÷x JÌf±€ÃzÐ_jg»7o­:3 ºT”fÀÛ ŽÓk³æ)/0¹%МKòÏä€¸ØæEFjWáz‰S‰|wʸi>Ùë仹ã jn‰Ãê­²‰VŽ®Äc ~ÌÒ_iN¯¿Û¼8ô§$„·nD›„&è(&þÄ£.]±PÁü} '¸5ÑÏ“5ÊU&Sù.×"ý)¦ †F)uîDÛ± íy@ó¦íTÓèÓV³ð¾ ònA3LáñvL \U4÷äê5êbZ:¨kI"Š¢¶ž\KQ` IrqÙ,oç-)½K»˜êSyÇs¶ù˜m| Ρ&Å̲áÏ•î_Ž~3ë© ¶ú¶‰R29˜p0”I°µûÙÃß`+êåð½¤Åê×—/ô¬ÒŒÖ~ÚùbžÈTåéÂ,æ«æ€7÷z=‡£ºnˬ¯´ì岯_3¥ú¡9Ú¾9%¢ÿ컺´ÕZ‡¤Nmå-¹rº¹°KC7ðúê1C$,Lé…e C¯î§ÕprN°Çˆe ·adbæ¤bBJ7©s[56“F.Ãcß …Ú„dïÝì›VÇqðH?Ø“Ô@c:ÖïéQìD¸©_+äY9–zÍÌï:Óóâèªíf>¬[Ü0ˆg6ß6i9 ÛÌm‘è=,Ìý§]±šʺ¾¿B² R+¬í„æËã?&e¸1>4Fˆ%¯®?ž•ˆ®j‡šÞ+¸³úK„dcx½W®ã^'˜CGÖD#fºf[¼z޻ߔÐ!ž.Ó~wÏ”4–zjÌ&wÏYjÏÇüIªUèåªÞ‰ò,¢ÁŒòºÄC‘Ñ™O»r‹c4^Ü©·)€‹P‰”S—<üÑÆ£’Ê¢'ÂuðÐòç­zq¤L’¾’¡uç±ûwýìyÍ ®Z6Ù¢*¨õ½³eôóˆ÷h_Z+êñüŠŸ,óC6zsˆ|Ö ÎŽEÈÕ?ú”îÌ)j4“¾“X/ÚGq–̯hûà70K¿¨ùñ—À‚-F™c²þõ‰íJÀO„ùçmgA9h:Û¤Èd~hý5L=ýe3ô¸zßL̾îh‚ê‰Óbi¡°µ v`Oê¯M°| ÖŠö_CqËrý¦©ºB2ê .¢¹ß+ãPÀë5ßpí8CIÕX ¡»—}¥dâkÁXVt€øRÒŸ`¥BÑ|‘‰ÌÉë€g»°ãàl-#̯Ñ`ÅM†uø:ßã0UÀ¿9áÉ$¬LÓõ1O©Û—8¡Ì< ÇR&•$»4œhMùkºž† 8¨¸Ë`c/Ç&ý \ýáMÕ½¼°f!‘T±¡Õ<]Åê­êÓÙÛ³ß}]ü]0I4œ¤™xrö@4. 3£¹[<…#Mv`\ ZÕtBð”Æ+´8"©‹ç¯üŽé@r5Ý‚bŽ8¢­*c^ªI·è«ìøêaÈUÐ/™à&à„Šþ¨ U2‰¥ †"Àæ·º>I‰ {Ÿþ•.£;¨qPDÂ2,yÛ Ã#Ð}% vþ'ßÒÄ\UUθUrå’u7yR ÏþÒ·êK`,•é䎘gšAc#1˜€²yÏt[ÜÐÕŒ- C,ð£Î¶ZM)Kï•a… ‘‡GÛ6ׯiôLc¢<÷ è¤@£qÙ׹ϛ ¦>,ëIiÇÃ…ýÛÄâ%I(û¦²N“ïg5ÔU_|žoë›4{ê£õàügæÉ,Gû‰$:Î#å%Þ`G¿ê?4Dr„ÕŽ]ú}Ý’jrÍA¬ Ð]!%]|_Š´L!lÎÀ–ʬŒý‚ßz:\ýã—@|vƇo†åuþtè©‚~Æ¡‡Övêàu²”—1ïÁ‹H– æ'l5½,— X¼­!\ñ+ Z($­³_ü6jˆvëžsn¦~x%ä¾­J9ç³7<Ѓ X0?–·‚4ÈhH{ Â=Ï¡?(ÏJ’2é­Í™M¦¨T²Ë¸ÞÇÛœ ‹ô«§ÈšêøÏX·VÍhšö—r-®±óýžñüÞt¦ÎËzk¿E`^?¸Ë½®7Tù !ÆÜJøAÝ·>½%v¼3†LÉ'ËÔÂ„íª±dƒ©ŽÑ̼Ÿn¸? O ðàs<÷,.e ƒ±P},‡ª÷žò"v}zýÜ‘öÎÕ ß§îÚ†9}Ia´¥FôB¬²æ×*ñ¼ŠLBäkÚç8%´§“™$È{‚<—6àÔ“ý4HÊ=[ít*åoqníÓÓyþL‡1÷¢8´Y,gdB³ÜÖ±œiGü!z±HõC›çä•ّ٨áΗX—:±ìÉTžn4GÕ¦Òò ˆGê6ˆ³Û7V~ fÝŸ±¬ÅßFsÓæ/¿éý˜pÚÕ¦§¨ž^ùÂßÄÅM|â;¡êË¿J•°Í„h)®üD|è%ªÄÃÀìü"ÛÛýà´[èÿdÅ)©qgšW’> ¹õ6þòDƒ¶X¨!zR”„<@´IÔ5ÑML-µ¬ü ±kI“  æãô¹å2>ùÔ¢àK*usƒÙ¶p¾·ùÜÁ7ßMàÆ©šˆÔ¬wrK‹’Ïd‘°cÄVŸÊ€àÀœ)ö DJ^\‚‚7tñt›ôí4ÉØW•ìFD±»G}Ü—;½™xH|\H8îÔ]ÞGJž@ —ö7ÅÞ—‰Š E–#nw’¦/„,W„Ê#\¥–F(§ËdMÎR_ß3ð åÈ¿¥ã;ª­üÄq×­n~ׯGµužõ£^×ß:ã’Í®Y{?gBŒ™V޼˜Í¢$B§FNñ‡ä¥ÄÌèõa¿ שÀ‚Ø9Ö¾ÜÜ{e«Œ5<åT­æêsïÚYM›ÅDÍc–龫@Pé)COÒ„غù¼ÐÂ…kÉ5‰bLƒ_WÝÁiÂE+Aë=ÎÜ^°´MéÀ6,8Ÿ¾¾jn²Ä`‰ùê§¹ÿˆ‚TÍôŽ¤Ðˆ«ï @RCf—„Ó!L Þ_¹å{æTÓ‚ä›-䤖dôÁœ®×!öZÀ€9gQ]òìû5è²#–n 9²˜r£°^^bŸ,aû?? y¿vî°dšìKÜw|À¨ìš¬|Å‘rýI+Mè þá².d15"zμ0!¡ðéVÁ©æŽú ]­Ø ª¨ì×yÝoBŸ·²HQÁt1“ñ(6ïmùîAšëmlŽœTûåõ“,õ{™Ú»MãƒY]I®p$çÑ…HÍú~x!|“h÷‰¦Â÷&óÊÀåv9£_ôFnÕeÛw…˜÷:^¤Z•`㟂팴‡eލåÍÀ_ÔíŠ]BÕ|«|7áŒýt –Ñ5ùÕÃ}6ÊIBµí’\÷ç6¶!Nøe ž4ÖQÍÕPĪ‚eÐ>ÅÃ8¥VÒÎ(°@I=6[¹Ÿ³¨3LÞ|ÇqOáÓ.L{õ)õQˆ÷ŒÐïrÄo”u-ï ¯?eþ ¡\Ë´`†uä«=þ伩r_ЕºD ÿúŠ‘oš/RI3õáTmßÚ©³»?cA¾³“  ë°¾§c²Ö-i©‹“7ZƷ뺔q#ùm¬ ~ÕF^…çœð·xÒùˆØ]¸3ý˜ƒbh« PŸñ•V©DJº®;Í:zZëNƒ-UÄÍvš„èU{‚S° ã%/T* J˜K]ú^ue9á„Ð[)0¯õ³èKjjšàÉy¹žîù¬Îw5•¶ÁØdq6ÞóEÖÓ°ì/BpsG…ü \¼1*¡ÓxÄwhn^ŸEe"$·yÚ«ˆ– _ #nÝ/\çÛ…a¨,‰j»%Ê•Eçþ‰LãC©hÒ •ñІŠ\UØøyTb2\”뛃Aá¡®–xï©î¥N¬ ¼ò(•¡µ=$„4Ì.‰a—EéÉÇ/“=Ô2hÜxN¥&{ùÐÙz‚†5]ŠŠ€:éÚÜ¥g 3>Â6£YmÃÃ%ˆOaâ+Œd'ÃùJ÷XC­L)±q®~Y×xéáy®Š îìïÇZi:‚NІ‰ø9¨›©"¾ðŠ6µzI_Ö¤£éð»§ÿÊ/=¦Ì³¨~áæBx±øˆïý°õºV©{Üô#éÜ1­¾S@:üà æ·'ÚY!ˆ™ð‰ÍÃ¥!ѹ篳æ}ü7ŠL¤ªZ†pÍðîwÐ_æY‰æ9–çÛÚ¨nò Å|¤WµI¨kë“Z·'0RÝ“”^#Uź>þIÚÓ–›í þ¡¦lÏ!¡üóð.x½‘†= Іþóy\‹3oÎÈvíD^‚©ÿúKb±Õ®DP QÞã@ºaæwzÏ[­T³…¶ñÍ+ðïöBÁ·õ‰ogÚ~ÍWRLb’ib°y§Cžfá1C?r•(ç̹­TÌÀ]1—À¿ÎG÷hŸ#-®;ocó›•6ïzkº,ˆ+–±_ÇŒhqÆs!Ìß©1x|½{­O9Á»?w# j¯ÉRîÄ…ŸÔï{û¶>…t‚^ù¹yg”gsî#³«'‹"Ðueš Ãéôv–¡ñ¦VàõL¹jg=K âÚ T>y°ø2ƒæ!ð+djø‚D³;Þ€8c.sÍÁ•»ˆG*eÝ’[ÐtˆÂsý»ðmFÞuØ3ûø…”CÀìGü’ÛæÐ¬Á,ú«ªX„7Å„øÁ¦óÛ$§u‰~ß( Seïa>yEkgÅøÃ´HmÉŸÓ˜ õý¸ò_tl9QN õVâpE®Ôy¹{y} jxx½šºê±6—Pg9!2wËÌÒs0¤œiÇ ;®.ÌAp’ÒdÔˆ ½(?ȵt­ëc‰ ï''ˆfäúkJ, Y¾]½M…Nš}`5曾M·ÊÔü»f9º9¢+ãâm÷—É•—¼¶kâÁü|«á:*›í¡ÓÄ[ÞOHÈÌŸg¢#½NQoÑ-x ƒU¼ìô°[=-Îk:Í•™z{SÓ&»]ïÖv·.fÂl¿¯a5× ›†_Q¬È ÏÈxižLa¸*7š9þ9¨ºnl1@Ôüö¬Ÿ³ñEñ²¶‡ÅçÑ´’7­²ןþà¤n–«¨æì~Äyibý\„»–ч–ïá¢]Uùh¼rØà*©z†# Îa • Mà æFwxf×»å˜ms«–¡*wЕÆmæ_ ¼¶l&Ô“r2¹É}ÏÑÆu/޳Y“K ßù¡ù‘Rï¸mòXõ»ÐB‘_uÞ h«Ö´\fá ¹WÝØØçÛnjgq½à¶Ÿâ?Ù6’ÚÑ®µäŸš<“ÀïÛQ¡¹ð*äb]àDúñpOwÁ’ç5ñ¾ðÔê~讎ިæº>¼ ¬[·ç“z¹V´nx˜$ô¶“Ö}ô¸  B±%Ü{Êh{v #²BÃÇ‘¢›f2·\.{çi噬î«gjÒlsŸX™¦»ÜáÅÓ°g ù´oß0AãGäkM]x3ËP#a:QBV¦÷()Š®%æÃ·÷9ºé骚^Vòg£xü3iSw-M%&ñSš>qg +aêFC&R¿…ÿœ•$æ8bh^âý9¹¾Ú°Š'ÑÖíÑ%òt‰N˜G ]DLLÍ>ò9넇8eÀlƒ«-g­Ë U~±€Ì+¼^rŒ= wŽ[ÿa¨›»?Ú– *¬@û,!+v˜?O'Ñ_ €f販p€bSÓÞ…§½j-m…ß„ŸÞ»"iâòWÊ£?ôœÛS‘çk^çj² “÷k´GpÜ*aBƒÌTd˜wÇÒÀüµœ¯IälS¾Vbþ³8íÙ*CL"ÒºLKUÝù#Éü­kyy‚Vb Þ ØÊ Ñ~>yJE©ªñEE5E.øvUvr‘ÃÝÑzø™ç;£ä™…³é!ùõbo¡òr«¾¶x«ÐÛR oçAܹ§5$Kµ0a¾CCÂoÝv|¯f@ÊMð5öÞ:ƒžq£Ò†ª{"_;wù´ƒ$ûÝëo¦Ã¦š^kü¥t3=a¶WÉKg¢_ öBÐZòSpa¶\ƒé>vè«ìËͧúåo8%eÔw—?™Íê£Â–fÌl‹¥÷i˜°<ßðçøgP`ÂØ™bÁ³MµÇ#|.Ê%ë$ߪ̆¤m¥[?'6#)Æk[yâ¶Ñíi&Usû¬­‡[žß÷"’dù`aMû ñëðNf…1ѼÖMÕ}¤{GÊò¦èJ±¶ùKéÝØI?äŒâL·ÛG×âK¶E#5,Žpù'²áyˆ°ªNOÏwÒío-¶r“IµßíN1áÚ•êPøù<Ö¦ýÈ<>cæ„õåzèÑ òBEͽïÏÐçf wzÑ+°O÷OŸæ-?7. 2B㺃éÅo­‡çùÈââ8AZ‰¦Ë±Cz5õ™Ý}­8­Bæó“n¿¨DÇâLVLÓžè›@nRôÌN–±ædNǼÙÐsïŹ ]ýl“,*Ÿ§KnN–h网æ•ÅæÔ"néˆ_Ø÷O¡ôrܯ\Ç7úxàu[òAúá¡Gôw‡?NfòܳÛF¾K»òÉt–Xndé‚Y:æWy¡>é*iÜj&r(ªˆÜžb»:ðúØ©e¦|+ýt2VÑæÈ¹àŸÊ©»AH.÷ÙZ€ÈÞX]\GF¡è]²“A¦ó,¾q%n+1E»NN“©Ã–Z’úMª ¦[ÀÌ|»Îöj÷"±·r-¯œ4L©Ñ‹¶óß‹ÙH¼cMø5“ˆW>rCƒf¼’(XÑ…Ym*. Úò´ˆSM`Tè™úh‹êtM·d(ZK`SLˆênŸAñ3Ó``Ôe¹?.‘®=Ë £~à šöGãMó)¦nÞÛóTÆtÒ̽°fÞÐk=4'1XÒSqÜ}ñ©Q÷è±Îýòx}tw¤Øxd ?SfÜF;ÉÙjmå§æ¹I6ª–@ºd¹¨QÚ¦t Q³L°ÔÓá6>Úï˜ †}|×¼Õ%ºLð°Z ¼JaôäÞdüù&†¨‰š½¨Ô—ý—™^âûÎw²¶3õÏ»~h7¹Sæ*íT5ºöÀ‚AÔõÍɈÚaÉðØ®õñɵaµÌ“°Ÿ#¶á—ø`XjšæR± (SRЛÕiFâ4Š-låÑ_­½US¥Óœ )np¼]V?€ãÔýG¾ê¯ þæ’ƒÌwõÑ&x×pðCBØ¢'áðÝW"•Dm–¢0g-Áïo7V9˾Œ£‘ÀhŽŒhWö†ZŠ7•¿¹;+9.ažË-¢Á ò?ØK¢÷¤#`NëBÊãŒnÎÞëÈ%Ìü(1$Jï"bL{¹]Tô‡‡×Ò’¾b¸è¿Y¸Y^Tæ3•‡x4{.&ä K®¡#6¼É ‹Nûü²û–1æÔOªŒ&×¼Wï=’θÖÊ/‡‡\®„¾Nsˆn ¥,|™]œeV¯¤oí 0¯…þ9®§ ˜7& ‚wüÒÎÁ£”$eþ°Šu$±jd‰o– e¤%ˆ©¡d)eË'Z;èQ¹—ÂÞ+é ¡¬ßºósqŸ¨èLÜè|µ˜¿©M¡Ý[ê£Mž¡Ú‹Ni’ZQ#:8L؈ Ãõ¬_"ôñ ŒÑ–„CY·øNÿî%0²Ñ~ÿ3s1•;_+ÖJàîþªýbŒÍ>¡KDÍwîÕû0[dú}6&­Œ|±ÉwÎö–ýÈÉ9ʲXö‚ó‚‚€"«[…!,’Õ{üŽ „ë Ø,ÆmØ®Sƒœ-³—ÝÆ6¨Þ%ט½f¬IÌW]7õ–iÌßO8–à#´Œ„cÀ€ED•ý˜$Ò%ÏòèÉ;b_¶ú8[²IôBÏ–”»ùd—ù€·Ô%ˆDy ßr¬½Ú¾Sä3ì†÷~ Ü¡m!ÚrsrÎ>Y6ú@þ¼•v°õòZ þ í­€¤è ßO &ÒâŒj^©_¾\F5«‹rÌWaÚQ5”îþK6ЃµÃó”ÂÌ•1{“kà¥ø)ý$ÌC“ˆGöŠ~óÀLm}¯”§è'”¶­Îàx’¼F-\uï‘XUô¯ü"@¶«ð×¶çnPic¡K›²ÐÅ`ö:Ôî[[.9eÕ3Ͻ²' wïס¬”´0-ÈôáªÕ¤â™h@@ýk›=æîø&jù×8„R\íÏ12æQ ß §ã{|G{˜¼3«B¯7œhÓ|gß.HyчyIUè}2c·LLy2¿µM²9¼«¼Í )d Ôæ–~é®Ô'pDÓ®Á¡òÛé)aËòšŒ‰"Õ€˜›ÞO,”˜nˆºü*‚™#p5Vée˜Aª‡ªð ‚U(Rè¤Ê,ùzZt ~™¨­¹"“·Ìþó:Ò;ÞŠâ”äŒ6±l²|ò~ùûAEWŸ£ûÀ&oq½îDÉÒFÔ©õ HËI¬wëôÅ-œ¬Ìç ¼0'›¡a¸% ¾°Ù»¨È¯¶:* ÃÜþ²bH?MD”Aêba¾´Gþ\§9Ákï¾}ÕŠt #öž6:ôh³1W#"ÙæÃ><¡ĠÛ ù°Ï;â—÷²«Z3Ï&§lFêÚYlA8܈m.e«ä%/Å@¬ðìï™ã­ê‚%xa\4b ŠŸˆû‚•W{~:ak|(»3w7ŸeÜóøÂ.b/Ey ŸurÏ$377ŠìuP/3Dæ¹[86Ÿ¨[I…wXDõ¸¬NUq~Ià{wí̽Ÿäbq«§B¢t"¨uÉnë‰9¨KcQe Œ†¾Ë6`ü&4ÚÞÿð.$xî,F¢úÉoY&§ˆœ%ê¦oÍù-4 źÃU¢=™.׋ž¹`Šç™Jjc:­n9n­¯«½&ÆÌŸ<)\µ)‹[eÔÄÂA ·Çæ›ë£u '‹p©Ž©ãUÑ’TGÝÒí,%¦´Ä×…ŸÉÕƒ²Gw/f¥gÏñ‹¯807‘”±=xá—“ŽûóãyÓØ)kâS‰‚(×K´…tØ{5vãÒ2š/3Ãì-ÇÆ¹zd̤‹ÚO©ÃÒ„´„̨¸ißÍ«ûG|ç¢?ô‹RÈÆ¼C¡r¯"AH %›Áœú$â_¹Ol2ã‰0/2ÊŸktRœ´þIþyvcËük¸Q\ÚKL?Ïwbˆ¯˜8)tŒÄ~§ÔPÙÆÁ.ˆ°(°ƒø9ú…vÀzËóÄž¢D]Jïh‰ˆp>¤®³`ví÷Ù²Ë Ÿ‘«÷ _’ƒ,¹Š Â]! ìcåºYö\à …àÎcîT ¥©²‹IËùV®løÁ”k°2IÍ›4eRí2É5éÐ9Ó¢ú³Lm4ǽå£8KØ‹^:T.¯éͽR;áÝ;4ƒeÞºŒÉBð‹ yã!ë3±ƒ™KqÛ¡¿ß•Ü\@î¨jŸüÖòÚ²tÜI£}0™‚ãA=­¬ÓûÐ2Z«:½—ãõçµÅY!£F)Ð2'ÅD6SËÚOÜÑØ4jù¬y¨5Á•ûÎç´ ÄU<ÝÙ­.åO¥§Ø¹a»QNÃKVpÓQ. ÀŠ‚[IÀý)/®º­ù µ›SÚsú‡É‚¥œ»qRä•FQDê•QôªB>É”)ý¸ÂJÎñFrYÖž£s´¯õñ1w”ýXÖ—÷AèCÔ!§ôj´Ä”¶k¢‹U(ˆU¯oi+õUÔ”û*¶ñý˜&•huï˜Ӄ*°Íû? ÉŸE)šAšÔÉ[‡Îs¢ÿbtÍp™Ãi{á½Ì:¨~¾ù Í\¨ˆ€Í/SÂ|ÑYÔ×RÖ M3û˜Ã1‹öȆço‚{Ê烃5 c$ÍôË×Ö5ï²öÐË#)BÑ6¶sGÇ5møžˆÑmÔ/OÚ:¹ì¶Égæäà‡µ"'ÿsÓx #ºnUŒ¸­Ø”>D ×gpwåk T÷Ï’¶ágx’™{a© ÕC‚€[%Ñ=go1 ÒôÁóë¹H°é*`•oCn¿ø¸ñ2ØquÜMSœI¤ûêórÄ žt&ZÃp žlYé²ÏÑàOÕëè"|Ò5åëM3ZR;iNεêïUŒÕ-¿*iî.8¹e Yœ„’­ð³ä Èñgük´RH™v(kŒ´K×àèÜÞ¬æ³ëtǼ÷x§S:?Õ,5jSˆdˆðé8žèJªË‘³Å^dBA±Û¿tÊü8ÑÍÎù¼ŸŽ(êpL‹IhYzX«ë™}Ÿßð®KŽšîVrl”ÿ¦ðâ^$ÀEpy/× lÔ¡àãâ“ÑOL˜¦Šb± ž^/ R† &ét. 1œ» Ší®•ÈÝ3ŽZ*TðlúуIÁÜpM˜ŠòÉwèMêÌR4š_¸‘¯ãžÊ»w ÷K"ûg/÷oN \‹½øþÜJJ¬‰ÆÆD2<äH*âfÆ–!ÄŒGg$fI£Ë4„Zxå%xâN¥Ýª=S/] be´Žx¡×Ø÷±˜ͨ† Ô†Æ;Ÿán²KêU}íÀ‰’×”÷C n?d;Ç+ôGië%|wõ¿+ÞE”fdïäæÞÑ.mÆŠA »±MÁ¿»SÏñ…£S4Ez4eO|ºÖ´ kÁ7ëTDÅ,Ô\³Ï׽ܲâûþÀþ¼A:ÄΞ»'§7Ðë(W¤/FY¨¿× Œdq®Ã›ßÕöP`§ô[G›üšéŽ^ÒÍSo@³À¾Ò±Ç¬bøe°Ü¯V·©B‡jÃÛŽh00 œ O² §l “‹ÒØ)-Ëæ(=-V¸7”n§IÛú#2+ëû©TÙƒáih®GÕ%s†ºEÝ+;$±>©TüÁL`jÒƒ¯LO2+ék>ÊV^BT≘ 9àÉÃÅI\+ñ&=Àûí²® ÕR•ó–)ÕeÔñp^¹Aˆd~µ~Á¼…ýx y˸óòÛŽßÖpõÃÎÑE†»ŸGcÖ&ï„§Ò…s£¾0„ðh>›j>Rø‰_òZé^߯zb?Ùg3äÏÒP>i¶Xo „Ïj ‹dÆ"-9VUÑÞuyÖž#?»@Ô¬‚Ì7‰ô ™í̵ÞQ“QÞgײK^¹Fèè±Ë­ô;® N茑iSd®œ~fº‹ W­ àÒ˜Î Úï´1å¶ @ ™W»A–Nf´šµW'·+–ë,IúQÝ(hg&Œ[²¹fãôœÀ`±À1ä“ÍiCÂ@¬Õ±d.¿— ¦ÕGM7t¨£L îÎ\ýKxšúàíÅ¢%Jgì}œJ‰f΂Lou¾YhUˆWyÂ꫈xyËÄŽá;Å5Væpg°‹xNzsX®Oº,V)¿‚îµ)à íÅVøD|©â¢½íÓIQ]£´c;„‹;'#ì°61˜/mY  ÓÓËÊ¥¶Â^˜ÃC* ž¯ìylÕ¿m{G{„ÿh¨•õÿÞvCßÓÇ~‹=ro€*-3³É¢éøeXE*«¶ý6;¼«ÁBLn\ýàÇÒÅÆ7c°Â“®Á¤Wv… /Q86-Ù©—­Iñd…îÐS\ëî㡉÷\Ôù´'Ç‹t:I×·íó6áƒV½7ù±²ƒŸgfP[TZ°b£{]X:to«\³M/’ ª8Ðöˆ`ÉŠžœ'X-VqåÉ,CI®º( øfÕ Yâ¶5B¡ìü_U>–`Ü X;Ô ¨†$:›·Ð\ç– Vè@tG;§b½N™(:æúZD¶xªËJýÕ3†Kÿí½ÀGȦúk{—ã2dÍ. b¢[2!C×¶Îõ¨WŒXU(0èkî‡Át9A¦–ÆÄq¤ojŠò1 —ãgµr,ÁxÊIT>š›ˆ×…ŸÍdCRüŒC#9Ê×c“'$MR×ã.tr›¯ íµÞ¹í‡ i*\Ù>‰ê@/r(€‰×ðà@»Ú̃i7ÄÑcŸ&Ýú‚šh*À*ÒÚpþ  p/ñj4õráëÑçBŽp‘5I’ŒÚ{§ÚãdÞ$gÈÏ……GÝ+»·þTŒÔÚþÝÜ| EÔC˜›Ú¨Wû³ §¬BÕ;ÁÊÁZOëaÈ™ù”«ø-È&st¥þñc`.½«D^8Q©:~<'ËZˆÙ®{wYS]Q~\‚j íÔÜ"î=\,•‹ºò|Ó2¾1¡‚2¤ŽS¼5nõúöšKõéý„g`©î5Æ"zÔ¨jì(˜På"¹#.ƒ–Ñ×~/ÚI‡”K=…º»äÎqeÅ0:ã¢Í0L—[;w>ƒŽ ¦'õ÷o˜ð‰ë‘;+>sÖK´½iS_Ë‘%yøôþŒyôÁ0bi·ìjê Y(§óÕ>áùÅ4f?æÙã±òBm‰î8 „_¨Ü—U~Ö>­5³éÛàæ9»Þð§ªÒSU;—LN†Æ[NiLˆ×”ûy:ô¯Ë_xW4ï5“×[YÜóT çmÁ)Áy%qËá®ÛÖC> wãïŸ.m®ŽsÿôP£v]ÈtÅ«áÜðøkMÓˆ½B:þt‹Cêü‘ñØ Í 1Q7ºÂÓEÀ»…ŽO0P.nuÚYéãâ£?‘}ª‡Rï{–*ZûÕ*añE¿#Ã,”E~¢ÊÏ®3É ñŸ‚< ¬{²ÙœRù7åcl¹K··¤¬§,pái•‚P ßfÞ™´|«]ä'¹óËÇý¢  Èô³2´¯®¤ý-Æíu5t’]ä¡‚Vm83ƒh羇/{šË×Pî;nîÁù9°ùønL6$"«Ó`à¨äõîžE’$ã«ïÕ¸ÁVxø«{ÅPü””sÁøx#•ÇÁÿ%>nMI[É¥ €ÑYöf«Æ(Û˜QZ¹ôºò¼º ÖÐ(З±Â$-æÛäPFdÞX£ö²Mæ(ᙡ2탶\·D¢c`I²Ê¥·¥8Š1£í’[-?N´qÔWev~û}Ë[ë6ûl¾¿:…6ÎS e\=ÖF‡É8/Ì¢y~ÊÐÖ„Ð’¹õžñ]ñý£"ïôØÍMjgÎ}Üz¸UÓ•j‹ ýÆBÁžÐ¥é]êU0ïï8’­%rcÕusv ¶¤\(UQ;NFêK7R›3äwHKÛ¨Âw]2L¶wÓýéð¸è³õZ jB  ðòþÿv}4lÏÍËe¤µÆ9©JÈMeÑ$6hÚŠ¦Ô¢ VGíi áÛ 'h»R ¯«Ä6x3¨tg»údÛRc›iâR>8 Hô¨ƒœŽ4ª#…Ù=Z9@z³ƒ »Ü<²‰,IÀk¸~‘Áô‹ñâ´`xMÿZTNè€cìÈw™;Œøt&t 0Û ÛIH4€]žœåÌÅޞʠû#AØá]I¶·óMõVÀyVVâ¿ÊH4]’ˆ i}ö„Ê<‰r·Ç†–ž •‡)\y«àïèA^\ozJ±W·tãtOIr1ꬸ0ät2vB³ÔË>}eË+µ-èåµ—ñßû¶d+ ¡¾¸´Íô«i\³/`±b zŸ#-à«ûr$߈½3±OŸ¯šÒ`ooVJá,ÛOJæx™(¯­çÛ3â¬0j(èÒ ¼hßò;߅Ϥ½œbéî¦ °êb)Àd'â캼Ïbë+¿ÏúÑ žªú¤£»Fi¹&+ê˜?ÕÏç«•üò£ù˜¬ÞЀø(DZ[š‡˜o†ý%2›¯¼ Ù qâ@›üæ·7ÉsVûŠLdÞa¼^x«β³6íäËÕž¼_!ÛFòFjÏĉjZ1« îì¡W>B¡´g¬FW f/¡NÚÉMÔ] V(£¡G‰ ö ¢¬“1„eÓÌ)^p¸Fìf¹GÚÒ ŒôMÓÒ KPxúVíj„rŒ= ´¸ù¿¼´¿ß\Ñð ’fêHþÉðFëÕ¶cý*Î;šVÚ½7б/_‡Ë+}:uÙ%ÅWÎr8 ÓÚ¦q·CÌa²Éë“Ò>7ž‹¨‘šn“_€ùÚŽ¥ö*¿H±<–eÚÕvŸãè 1,%íœC™¦( ØTóDÐ]¶¬pL<–P]ü© Ýï¡47ï8KQìÍŸ’sX–ƒìØ|©¹yӚܤ “í /  üI( z·¦¢=§!*¯ÙßTw0h§…ÏÃVN½ú…Á9vÒÁ/(¼^©°þóò×»òèÿõMpg‹-ÂÈ¡<Æ­wK^Ú ¢ìn Ë*'©Žr Í®S,&|(EÐïʧ©|¬åè~œÖè !ý˜'Ü—lÚ»äÄ[w×¾Žýš3ó"çD¨ÿŠÉú–]UL­•€ãGºµ¾Á»¯Ŷ†]Â(ó£Ù î+ÖdŹì=½³£ö‚TÔ‘TÔÃ&3c[É\ùNm·¼á*xåzìÛlúE•çaNäÞE°áp{7¬é¶×~Vå{F»ç zˆ]ÁM?opßš”ëƒÎÇ'Ç›+c”|²ÄÿI^‘¬†HØ\f%}Ò; ‚ ð6Ô­5՛ɥ «ÎGޝ1Ú£ªù—Õñ Xݼ[ôõçV”æNÈúd[4#>x•E<Íš Ýø,X5§Õžg9Jìd7tÊå© …SɆ¾Ðs2urÞëW)sF¿ {ôŒwð:·UÖÛT—,Ôíj‚]—Eí8Õ‰5¨c5ÎK¯i4´D1¸0qjkWUa}‹’ÙßJÉåL}oŒ!‰â1Ý<þÄÍÚiðïœq1_œ»¬€™ñxÿ®âëT4½ ¶P?r^/ä•p2ÂïÚà«»“ëDHy{Jº²Ûpâ DAýëËyä¢*ÕêA¨‚ÒÓà«S𪄜RóG€1`ÝÆ'ì&]yѺ®¢ €âU;U ~Ó˜>Ép(­Nv['=„R4+ĪB[q¼¼@ U.ç(Šz…$Ú7C“Ïë£g:ø#:yéŒÒëh<•Ã>リ/NÕNù^a°Ze#kÖȬظœÎ¢WD • †k÷ÓUM#q–zÉ–S䮪;{¶GGƒ¸>cž'[Àû¶=áFᬠ.ò¡K‘°ï“‰5Õã˜È·€ã‚zR+•w?D;ð²M@§È¶Fð•9öö$~U?É>} Ù‰ ‚rõÇíÛK*&ódøø¾'–µ•¾¹za’o˜Ôµöv íãØ¾w’u ~`ÏÐâÆÝp33«ØO$m~O¨·:$¤ð'jÔ›8 Œzg,Ÿnú…h?££¸Ö1Ê8„V¸×žëŒAiÈÆ‹à:Ý«}”¥e˜|dÒ1µkljµúH¨ ç™ÔQ«c5ÍYî{K4GžK=&P|…+¡#&7!læ¤ÝO=*Ê®FÞ¸vÝH½Ä.Ec¿¤¨e79†Ó/èXÜ^n’õƒ[{Â|J#>Y×ãWŸ¥‘’ßùMt€ö­ZŠ©œÀ"Cmæ$–iOfpn`‡`ÑôF‰å Nµ§ÀGçÉ+¾ŸM­}cpV¢Õ#b/ë,òWP³+$ªbxqµû>¨Ì–•±jwá1&#¸×>ÆäY„xü`›Û%5}:tZb\É&¨Â9¸‘Ðþ” ”iûüû”15öŸS<c<üT„äßlR¾6:"Pã/3-mž&"F’4*7 !¤ô9Ý…í< @œ±cêèγ7V#dO²kÕ½z±€…DpJnȺÐk‰Mrb ð¡?ÿú‰k…- Ü‘kùКaP)Ð`¬g˜e„®Ú × ™rÆ:ÚQNÇk¹[Ê»úXÜÕœø £¹æ§¦«°•¥FÃ;Yú… Íy ·¤7Ø‚qè5ëÿñš,*¹¶Èéà&ë"—”Ã…'¬À E¶8„`½øË çÝQºyœ)‚–VšÉ&`Ÿ°“–C³£˜&Ý `¶È!ܺfï-t‘ýÕM #$Ž&;Eá•Åý“ЯâW»UÉ¿lÓN€Öß[núÃp4“ê­TÙtc6¦õ‹xäÆ¿ÂAª=ÏZvïçÉÁŸmQ©,,ðÆ߸uó3ÿ:/LÎîk¿" Œ¯³³¨“a­vð¡›p •ug¶EÚ¹vF“ªWPGcw=<äXiÖ·šÿO”šû”MEñwmIM*<ËËù(<.G¸®V«j‹ƒ_®\Sc¨)\rn‘ò¹²­E%$‹AoÉžba¼<´·%îÜÌ43a3fSöeG’ø B}¼®«üm `¹ e¿ßb `­(aÅþt‰˜ÜBë–Vžã#H>g•Æ«Á@ œJ‡†ôÇ‹HOœ 3®É¥íjO¥!Lþ,¥DãÙ¯¨ 8W0-9/£>äÅÊ#ÒM³H2ôÜì'ø^;³è×- ‰›ŕڑGMuižæn~“ñå™ÕÕÌ)mÈ‹^¡ Ë^u®ãíœ2<äeAh¯«—¢:éLæå‡½¢?¿Vµš5h …Î!И‹¬W6,6ñjk4¼„J¢» FL}ý|!cýþrE £46²x”U2SünªÐÂÆôó'!ÆÓ‡·-°çÈâÛ‡IÙµ?°†`i¢E’Å–+,ž[Àaì4©aIIÄè©Ë_§ãÜØ†Ì*ÖÓt•ì=h€Ó5 úÆþ¨;ÿÕÚš*ˆ°Z4´rQeUÕë_£­a›g}`l#´‰J¦Íй¢º og{•pYÃ`ÆŸ”ÿWˆ=WwÆ…)“¬?DTF}{­ÂàÆ¢Ç(yÞn5 ÑÎ}¦Ÿü·r`…(g»ˆ`‰±FÓ(MÁãx[½°ç‰X|GÕ÷U]j;‘sBîðMxD¥Ö*€7ìÏJ=oi3gè?íÉ[¦³KïÇIëQ¦aš¢àGx¾íh'Û¤àVÝ'W:¶mÜå2ÜêG‘n퇞Qù´z5üãˉ§Zj¤ó ¤Þ9Y!‚—¢`¹`3eÞÒè$´¶@ BðNHÔÏDü gŸ3 ü9[’†ßÝGÍÉV0k·ü¥ xóÞ Ñ,ÎÖóÿÿæ“úþð¼5Wí]©X!?)§JGƒ’B$BÐÚoYïÈBá{>)’7ŸIZ¡R1 RéÜÂ%1S7·ÜÄÚêúêì•îO‹ác²eE~dÝOZëfc»DZýéÃ[kî䤦·ÓvÁ¡>¼«Šée³'Gµ@rm±Ø3˜"ÁXâ´ç.{üšVËì-É®^õ¢LZqWfÏÇTÂÁf~ºaåíœõéAèHº‡§t ƒC빎@@ÊÒЦ~¿gÃô·Ê匙ŭwèñ'ôžÁI¾N™\ЍkÇ?­\7‡“qì¨+Ø5p!/KÛ2)œ02ò}œqVæÂÉü|öŽZû‹ë[O¯H¥´Þûê}ysÚÙç…O8ËŸƒ27IP;üà—-8GºªYÙ’¬ Ÿ%îJtýþOŸ$,ÏÅÞØ»I±qRéxÔMCòuÙñ³±aOÁ [~[vØ/ÚªÕºlh¯”ÔdÙz÷ Û|¬¨öŒx†\§«‹*šèÌu×çŦÉG¥þ´ÄS¯»‘–„Ù9 È%³],4[³÷Y‚mHÙ`áôðž)ÿUÏIn¸zc…‚mîNƒI)÷ñ뚺Ë>¹¯ š‰[JÇ(17ƒLÒ3‚w3¸° ªÝÍmð*º<§"œÚ•Îåä©DLø€«óeqà ³RÂ±Ž­´ò ^Ž7˜§v@¾ÙtßîoŸ9Hʇ‡z˜R8ü£Z)mbA[¼ñ2\qÄæa(†uf#Ý¢Ë×"çhÓ͑ƃ¼OßPšO”¢ìÙ§Äsˆ%'j´\S'­ÖĤöÃN1Ÿ]ŽŠã%eCˆ´«MK¢†}hqk«ÊùÕ«Š€üˆ‹ ú ª ÑrRfÑÃw–XX”Á-§šòßçS”:ìMˆ›†þmI%ªóý½U'Mù$æC3º!ßÊÂë*v¡ƒe˜¯îV¬ç;¥NIj¨ª )=cÉgÈèÔ­÷£éêZ¶ŠrðÊ?–4dFpܦþ Ä|ùÅá>„Ë{er÷©‡jŽü å =ÛÄC6o2O9¾rÿÊd&ðÖºó¦‚ûùþ4û4iÎc$â•pšÎ7žo›ì Õmy9-"ð¬^Dê.¤»ŠÕ—96†z=ÖZŠOéìÂ÷aU›ñÔ ( {ä×¼À´X-Áì÷ö–]Rwç¼ì´ŸÉƒÑ®CTÛÊ­qnB 'üŸ.ìÓöÇsD¿r?åu4”’¤“.Q$_òb²rê?{»Í¹ ,!²¤8ÿ0/â éÑr°Ld¯…Y¯:#~ݯ×bS%Öõ™Y¶è*“®A$.·3Á«ȲTª‰_l¼éÃ(rOZ‰²ø’Ÿr·^žöb§,Ud¿g×ÿ=è܈c¡?qð–zQj_cà~Y˜ÆìÕe+¢Î¸Ñër°™ö¹‹ÅÛ³QU³¨‡<;Ý 4~&·Fq`;|+C1r-ê^ñŒÇð&mR]*ö=‰ŽÞ½¥$;7w6º3Y2ÙlõE^û!Õ¬«¢ñù¿ÔŸ$Saðòµ3aÁŸ¤‹'NæDÔ¯e/†g¶E2|@ºp´¡?•¹¾|g‰SÕ‰®[[<ÜäA—‰ìŽzÍ…µ§á¨ÚÞŽ2]p®¾bKŽƒ»{drö{¥[âTì,Rwaò¸µ| öËQË$Ú“óåÚRÓ ìàLÄ­ˆ±ß ´÷ÓÍ{»ÜS\…ÙI äHbˆÐðÀÜÉÏþçB¤!ÛºGň"êäí)"PaÔÿJ'<;°¡¡ÎþÆ¿,;ô©–J;•KH•e2Ça=·1ˆYñ²ßmÜé_Y]LéˇÒ*TðôÉYP’£©ÿ1¬ZÁ5h)ôJ6÷ÆÍ06È$Š4G"µçPœ¡÷a¼½Dfûºô¡ÃqàVåË"›·DpÆ3ùÈmªyLZ¾R 5Ma-ÍK:oÙ6®9µQ…M@³¶ºØ1¥Î‡Ÿk®Û×9›Úî®9[ Å˜à™ï£-Ûþåž9«áDh/FùCâ¾>šº[¶¯=)m¤†ÆNÖ?žr‘÷¹Og9F‘ÇÞìÐê×ÞófóÒPøJ[(—±8Š"‹]^äÚý endstream endobj 216 0 obj << /Length1 1464 /Length2 7552 /Length3 0 /Length 8530 /Filter /FlateDecode >> stream xÚ·XÓí>.ÝÒ©À‘Ý„ÒHƒÔ`FlÀŒP”Fº»E$¤$¤;¤¤¤»$䇾ïû­ÿÿº~¿k×µ=çœûœçœç¹ïÏ6V&m] <nQ†Ã@~> €‚†®:?€O‡OŸ•UŠt„üãÇg5€¸" p˜Ä \! äO„¼jÀaU7G¿ €_D‚_T‚ ÀÇ'þî*P¹CÁ €*Aà³*À=]¡¶vÈ»}þYØ­9üââ¢ÜÒòNW¨5Ð!í Nw;Zƒºpk(éù_%Ø¥ìHg ^^‚îj+ÃÁ ð€"í:ÄÕü  r‚ü=>+@ÏŠø+  ·Az€\!€;‡#ÔCÜ¥¸ÁÀWÀÝî]u€–3öXý/7àïÃðóðÿ«ÜßÙ¿ Aa’AÖÖp'gÌ ³Ø@!-eu$ É ÁÀ¿ Gü.ä‚:‚¬îZ”åŸ@wþ=ÂÚêŒDð  Ž¿gäý]æî˜•``¸“†DàÿîOê ±¾;wOÞ¿/×÷€yÿcÙ@a`›ßc€ÝœyõaP7ˆŠâߘ;þ¿}¶$@˜OT\ q@PÖv¼¿7Ðót†ü òÿvßÍðÒÛî °¹òj¹ûÀ÷F€Ü!¤«ä¥÷þÛÂç瀡ÖH€Ä Ãÿwõ;7Äæ/ûîþ]¡(À ¾;úñø~¿þµ2»csôü7üÏó*é«>5Ràú{äŸ<£Þ@P@˜ÀÏ/ ½[¼üï:Ú èß}üG® Ìÿ«Ý»sú§e÷¿9Àþ·@8ÿ]K~Ç\€ýßD7åæ³¾{ãÿ¦ûŸ”ÿ?–ÿ®ò%úÿv¤ìæèø'Îþàÿ9A=ÿFÜ1× y§ ø`ÿ 5„ü%] êæô¿Q$èN ò0Û;FÅy„DþrCÊP¬ EZÛýEš¿üú¿åæ…A´áèï ÈÏÇ÷?±;Y;Ü=DwÌü‚ÜIè¿·U‚YÃÁ¿µ& ,¹º‚<ñï®úÎxó߉ Aýá2€—GÞ¥îF| °»âÿ¾W1a¯þo×_–(€×ð_?ß]úoóŽ[¼°ÿ0ÿ0E¼È›w`Ôó¿úµvsu½Óî^Ý óýçA  Öø3“pkÉûʀƋrùÀµ!!¢îã·§¸†«J´îÏý¤.Oó¦å[Ç×Ã.—Èv>ÜÖ:Qñ9˜óI “ š©jIJ±úÎí3L&ýs¡î&°®ÖÒbb)ÛR|Öéõ8•ã æv9Z›Hßz*õøséùG»¶š]Bô¡ˆ011ABô€&ùô¦Ò'òcãÍ*ÇrC{qôÊ[—)]ýÂ+ݳEÜhÐå”ÛÛDÎj§éÛ2É›í"tj–À1ÖÕv%š«hv¿ÓÆ€7ìVˆ]YÉ •ÕáãgÇûFU$·#QÁ—êÜ$Uâlæ°É#-5ŠVÁU® ‡°ƒsÊžgBuN:–˜¸ZgúÆõár ö[!'H³Z Á/õ²Ô&úþeül†~5£s%ÚC£Cò?@“ÞòNòÒaðO§K}üRhºSëG—žyš*‰Ò[˜Ñß¶9†j‘âúAkèÞÑ¥hÖ$‘ ¢?²Wî>µáxÈÔÖïª÷21ÕãYóɬ…ø-Ë–2bZXUψÍ‚""ëì~ÕàgQ;â:ïwqäí–ï„VZ•×£å.ÍÙëܶoøÞ 1ä2•¨ò0v{Õ~F«Sk‹Št»ØŸçè/øÞb0n»‘ϱYó'~Òžž£u^Ô,¦±¡.ú6UG›æM½£àNØób+_!¹Ñzg"á7¢Îùà7BºŽÕˆÑÌ—¾R7®ò£t*LýQEr*SSIüñ{r—1ƒ˜j3›®eÐçpÿ| §á*Ù<}©÷CfíÓ&Φ`ÈDßüÜ"ᆞê1?Ò=ÍûãF'Ή,}„Ę×ÂÞÇ[†ð'ï2Ï.ª1åðkSWÙ´ô‹ÔI ñ²Ôå  å‹Žvî2Ö´(‚4Þ±¤ÍÈ»íæBM€ {¨U j?>Ò#<8z·\aÓÈʲ£°Í!1jo¹*Rëðv>H¦~áøUÔvv¨æó0d4¾¢#FÐm#¶j3Ýê›Ì5[§W4^ÊrÕ=·æ3©qò³ë…ªtaÁš4òÀåPik!sš&cO«LMÕn9|½s‘Ýl±ì7TQzaÅÃø2çp<Ã"`ÜÎp´ØI¦?É‚êíÙ”lux§’Y”‡æ}7¢–÷…BæÄm Á%þj>¬ C‹²ùTúÓFñýû \ö18kßåA_ÈG&±ÐÒjÙÞ“”1|(WŠë„^Æ4x"¡'E9c_ãÝNÈå¹}XM&™bìxDèù³­Æ•\ÂEá_ìJÌÛ!)Œíµ-ßÇÃý«ÁBùÙ€÷ÁÆ3,ð6•àýÐÔõ‚ì¼"t†-¡ Ù,‚EÎÑ©Ž¯KŒ¯m$y$ —üÔÒš/}zbr&YHP4²pD[)"º±2>ºàc8î4ã¿{AîXõ’¸iåÖ*ÜASÏøœò$…àºöŠxýYàºù@æJk—m~bOKÀ²¢§Ê†®ÕƒÖ°±ZRèÈýMéÅdGZþÝ'M¾ò`ü7fÄÀퟖ›-?û© ‚]Þ9u'Ò‚m#&Væká 3ùF念·®Ä½¢|¿x4›öüæÛýwoáUQ%2 œ{ÌÒ\›ã[þxÙÍùO ü"xãe0ÝHúù`³EV­þ‰ Nm+%ï-Û/¶ãó¨Gßtù~¸mB¾äÑ…BÚôxlÂÈ ³ºîÉ‹…S}¡ä5l°gQ†S—db„œ\ ÌŠ77íŽò³c³Ö—e«Ž»l%¨o?µq lÚçŠÙ¡Ïkx8ö‰üȺ”¼íºà/JÇ.âï§ò†\­‚¨µš³dºÿ©¯=;ÍøŠò–{O½žªYUã'Ã1a²¸jÔ€hµÉwÔ'¬÷âêX_>ï"Eˆ¨y|ŠIºB€Âi¯ð®5ž†Ë£ØáØ8ŽõÉzŸ&›Ð7u>Ö¼&7˜æî|v'Õ’†‰€-¥>§´â9:ºqâÄ4Ž´4a<á¡jŸY\Ž~5h¾²øVÆy‰;¥^˜^Ð çî0 ©bHÞ¿A"6àx®´o=ç8£Í™/í¨e«b˜ì-ÈXêŒJ$¬í y̤Û•-Ó§€#û^†{¥/Ì(´ú‡jç¥n1^UP¡G0‚*âí‡ò#Þ¼õ(¡c–«ÂøïÏ–XU°YŸ_ÆOí{( ¢ϸǎº¼¥°§ŠFFm ŠŒ­ÎÓ[µûýJ¸òt I‹w41âe08c|1Œ?Èo,‡‡ýȾF3‡ÊsNÈ}EõË:?ù@¹©iy}'I“8ϼa«AÒø¹Dú‰T’ ÎO–R•ËENZ©mÈ;MWšY6_äÜÞÀ«Èï ”ŸI Û˜Û@" ü:bû'&4j&„“^µêŽ.(Ñ“Ñ(LKÕkU9Ö šH µú^p¹…˜âø5—–È#郯rè¨×Ãs_1Ú©=oÞ,~лK±˜Ö”+"DÐåyú»îÃð4G܆µ^ŽÈdŠÐ‚fLŸv>Ôãô|¡”s°î{-„,_øsüø$¡×ìgbM¢~YÜÒ%<^ +§ÿylž˜GõéÒ5ÁðŒ>‚!Èøs›§×ÍqÞH¼SÓ4ÀÒ't·˜ŽÇ©Ö®øò³9?Çp—¢­Ê}³øí¼MÀ§!öèš ±Ô|ÇŽ©†ì—Áëç–̽™Kt#u³²¿¥Î¶M¥Z×Ö´?¯Yí¦C†3ƒH¦ê Ò¶.¥Øëä|ÄãóF¾%‡°.â»¶CT·Œš5hûa=âÖ£“¥k´uxÆœ–»‹_[>'=ºè',›±›¨c­{Èâ^Ñ"Ú­Hµ·{–¹« ÂeßX9Í4¥XØw“8xqôªR~dùa¤q·ïš?–vÆ>ðžñqEccæ±Á‡ÖùÃÞ±Tª%íØI7 b½'þÅ|ú[ç=.!qœU©æŸ9½`"9…O+ËoŠÁævÉ íT`1Y¶9¯ŒäËã'ç9êë!s›‚)‰²Ñ½²À­ÔV—oV}Ö×´5óÔòZ<‹,6\Òžñís?y·ô’¶˜¶E¬S[BÒ¹¤-íq²[Üzû¼q#ùA!‰µ,è[4%²!|üK(Ø¢à,}÷TȸÓ\œ"eyeUY?LØ {;vDeì£êF¨FAèâI¶êæÝhŒ³k8¾WƒRVï¡;äp°EØnUàgm²ÒÛ^ üÚIŠeŠ8:QçåVF—·æh­9óp;×díI,*,|ÊÌ4ÿôEö¤«ßùÙ5€ŽEžT:*û=s<39ïHÆߥ&¤½uŸXû3x¸ÌgUÁûpQ(ŽèÇâ¹^³“•äþþ†l´Ñ\Mà@9‹x­¤p(ìZ|·`¹;ß”B¢áK»”'\Ðfw¨KKoH+ ‰¨k«9qž®_÷³æuË}»1T† ʽE¶üÁ..޾²_ŠùS¥aÚ| bc¦ÞRŠö·Ç•­~¥irxƒ·ÓÆ`—>ÜmG:†n%ÑÉ+yH—ë€ÌE^êø[ž|é²"ù:ƒŠh¡r²¾f˜5J^Wå‡ñy/tþìu°}¶ÝëûÏМ$ýН¯5ÆÖ(Ç“Ó/¸€È";›fò“F®‡±¯Æiyñ Yr–üíÜoÖ} ¢’ãèx*³çÑ:·b6½íËÜ x_*yÄßÀ%‹![Cn§T C5\%»¾T?¸"‘i‰Õ³â%¯Š@$õéfÓçƒþÏ«zíÄ/c0·1ÈÎQHn2 (DägÜ’e,À÷b·…Ÿ'”ùøÌŒÓĸÕlø Ä6î§N‚|fß`s¿Þo;þ#Þ gµ¨„ šK(´ÐÍNÛµŸÁþim¼‡ƒ‡–‚ð9çq©_œïQ­PÚsnE¬e8^½kRÜi·YošŠ¯Ãs1¯i±¥'j–bE9qŸƒUŸ¥KY RAG ÒölNsÊ“sš°xOÀŸjyc•?-ë¶0Œ·ÊVÓ}:>ÖK|ÖůéUf­]kôA0º}Ò‰ýaðI®Æðýdjöõžæ!P˜WMø‚×ÃÉ5ôþ7ÍoÊ1š„IÚ³ê” –E<œŒ9GÝ¥ Ì1‰Øq™¬DÏØo½l@)¹n'ãC”ƒ¨Ónº¢&ÆÃW®¬l?]Ö9¬‚W”Ô;ƒ7BGNÉ~öJû >e¬Fv(8¸ÒŽÔƒõL”-Òõ_fðŠô[ÍiùÈõ¼wÌøšÄSI™r~ëAõ“ËÛ³ˆG äDZÖ‚:®Ç¦‚™O“¢Oq„h‹\OÒÜî$o°­>–SÿæØWÉÕ&®å†ÊÏ ²çÙ zyRê w˜Í\>Ù•tï9ro#Á‘¢M)†ù}¤Ž¾IëKGVå l޾]¾ˆë\™74˜?yïìø™’ðÙê7r&ãÖnÁ­? –hœGCϼx%Ù%¾¡Òîþ&±Q}UÍK ¹Ìî5,ÊŸ‰²·ªtatx2rÏFÀc ¿YpKûöæÐ¯?žz{°_RÚ×läàAǼ“œŠñõ`:¿N¶O[&ÓN5z|8 C}ÿ˜þÓìx3O³*úûÞž õ¶ôèiø¼ôqDÙ ¤Amë'XWÞG‹Saö>¶’NB|¢èØ«ïÖugЏ/¹@ÈAyS­‚³ü5)ÃJˆåÛOÏe2"™‹Uä …¯¿LtºM:ôƒWäùâ$¹SŠ8,¢nËæš–<½¬4§<)¿~íïH?… ßÏP1G ¹! 0Hú@…¢0M(“ŸåÇÚqÚrÏ9µö9S0fP®˜q¡ f Ü—ìñÌëØù5f2Y N.Á¥9„¯T˜Jg€ˆön²¡ŠAšÔöƸ µHŸ|3~L]ì6ç;^®±—"Þ×ÈÅ`"¹I‡à_g6Ú=¦£—;±¥'O|àÔP²É}vt‚ó¬àæ2Q©"¹$ sÕ/eóÈ|Âbõ*…ËÔ³ïÛŽܦCG1Y™´œj‡ÎóQ1‹ÆwubK%3ÒZÕ>lBÁj4¶ ÐfVç*øûtn©•}°;o&ãÓ^U(÷º1#âHT©ãT};%%>2 “êh2Ã1>#2íݼ)õRÈœüÁÚOÅsâ¹ö•ñ*¢_/ˆH×¼§=$›5Ènƒ%Ö¸KW4Šó½ûúfm†iȶ™k9XoÚ5i—Eó£»>5êÓwÞ&•+Õ¤8·zÞæò[ ±ŠTØM Ò39w­Ðûf®dTÄf`lQ¨ÎqZ.ŽPÏ&’i¬éWL˜y­¥ÆÒh8¥|´¤ð:‘h¡Ñ;1zKo›m¾ Ó•«ï‰¼\ód"%Ͳq<  /‹Ä¡AÇNG\xÕL5$º¿´0"fDÂ`y¢ûP¢Œ0E¢¤BDgŸS?= ÙµxÂhÖퟕΔLi $mÕ±[c™B°T±mžÙç`* [í¼Î0ëCa^Ó¸å%.®ýèêtJ?(‡ÖýTüV:ºQ°f0®SÇdö!ïP’iX~˜Žï½Ó»!™<¶tÝ‹ÎÝ0ßRÆæÓ—^§ÒæÉµâÃ2?3›ÚÖô(ôäÉé.J‘™µDr´Ö#0‡º–Ð"ÊAlm‹>ˆµôý¹½ÓöÍ î{|÷ûÙ©⩦Ä; ç³ÃKÇG˜÷ÚŽI¥ó“-IÑ>î°¬Ê$5ÂÍïp7/_Äòz$róxƒ]°¥¨MŽo4Œ–MÖÌŒÛy%KȪ«ÊÍ$Ñû+Rî6²5l·/»µn¬$®‹Cv=_Dg i’R%6•‚œÞ³–Æë0Lx«]}JÉ?ižyfÑ ¸fØÛ¶ù8I“%Gä(¢g$æ%³·!LèkÀŽ)ûh®©RVÄ•ñq…h1ÿK€W¶_ÌH±Ÿu¼>€.½8ýx/–ïK®Vý¨g,"á¬+ãjm¶4.Q#kìz³éíÖ‘.JŽ4èÃzÞ¼Þw<µ~´ÖÊÁuï5$üyØ?y\‘|¶¿Ø–ö«ß®/ §JßÃa®‰´MjÜs±Ìß:Lª7Q“lrìo÷ºUNÆ(> \4@i—ÛºZ¹§#E&BqÍÄ)"¨­öÌÌÑNc¼±ÛßOaUù`oò’š±3ïŒÏÝUÌ °sš©QÒÚDŽgÓá‹>x·9­j\8õÀ«`BEAçÎ^ªD&WhBº”×¶žþÛ…g'b¤6/ ¥¿uÓ°‡ŽR'˜¡gbOƒ!Ô&¥vZS|D!f¯.ý÷ù¥nžÏµð ¯V?kÔòs{ÜÒJ¥Y® búˆêsðcü‘'!ãÆ—/€Q×»ÊÑFòIËÃÚ‘Yx¹– K~=‰uθZÙçi”²•ÃõL±¿>’p)_ä Rž¥™¿ ‹Æ¦2äN•7OfhÕ“i•ÊÒ@ý:lkM V뽫i0i¹]Þˆ/'‡_¡¿ÇÄFè%8x©¼C SZ»¬éw,ù›=Gkû¿=+IÞ®ÔàÈ„ jyßäLôL~vÖŽÒÑ/ -ièPî¤ôö>ϳ5ûk½Ô÷«/åwef‡Îœ¾ž¼v|  …çõ%›5¾k>küæ]®¨Ú¬K|ZŒ™BŠèMèá‡PpóJ ô–R¾¼ê¥ÚlBrÖ‚ý(Õ5㉠ÕC+O Ÿº1âždŽïL©äÃåÖñ&:꾇ΚÌg¿ˆ3ØsT^)s ˜åÔ¹Ú·›à³ì9ìYœØ*<Ôúfa÷T¦ˆ³öÔúK×w´›¯ÙP¿WŽÆ¢2«Á…Ie¶†'¦Õ|òô-z~U’f«)sûDö'ÿZ¿!P!ÐŽÙ¥þºñ;‡È±É2Ëﻀ ‡ 4|‚ÏVz£J:âmõ¢uVnµð_¨7ªFKjì‡z~²:,ê~°Ç7oO~IÄ©aãòTj…ðO¸%óxp¾r ø†5è8`[ O?<]ȉwG=!'²r˜Ûÿh 3!ÑC¦8·N`•(ó47Å`œY%Gï@Ñù˜z·HoÖf`º8E¾%Ý]¿ mNÃ~ø~Ó!6LÒ#>c÷GN­%°â&ö ÍÈÔ‰þVUòTÐÙEë¬äñ‰›ÀéD‰š¾Ã—kµn'$uåFaÈi’=ˆ!NU…á*ö[$¯»´ªµEo=Þtù\"Uù›Nô_3S„òKšÑœT¸n9ù9)N8wiVK¾žì¹{•CH3ب!Ÿàg)í2ö{ª&`ü¸8c!Ù\tåU†¾Â6F×ÌYˆdmÛ/ŸìÇ(ïé z¶Ÿw_=Çã¾¶$"©Æ£í'—/²½3Ô+z쬴ⓗ{ô|g æÍ”í(tÙ»‡REÂ[iÇvmn0 ZL-éÖØßÁ£×‡ ¸),&|µº3+çvŶ‚Ñì;…ùïOClóJÖ8sÑ"k`%,‡38¶úü ”1ôî7JšV_Iþ!bï¢qqù­)«V»ä¯dº*¡Þ–ŽfuNçøÔ؈ÖÛ딯ýtE«ÜÌt-Æôý°Ÿ¦«ÙÙgǾyÛGöª'º&¸%Ý¿á¼é#»Ö1‰ !ŽsjLÁ8‰¹dŽ‚f–FŸÀ÷¶ÚNŠ>Ç¥nU‘ØÿÊ+ å4ÓY½±Å³¤ ¶¿†Ž# N$ƒ°ˆ SìÚNé{7ü…Ñ:åP¦¼§`ûÊ.é@'%ßÓïWgNsî-9fè‚LC£¢¦r]Ñ¥œÅuغý ¹‘öš/F½ZuÆ{Ž C5KÕ+4g‡L×ÓÛÂàÍ1u€[œ¢äË/ŽÑ`›1ÝJ©¦ 0Tóçî ^`®¦Îž1JÛNxHî¾H³gÊhd’½=/ÉÖ-ºP¾¤ØÝfŸæ9'DsÛw«T2´õ»Ã0Fèsø,¸±LF<¨½æé%KôÑì— Up<ò¨Àb³ÞA0F5ðÚýÔs3P'V~Ͳq¶¡1†½Kóù™}Hå^¡…xÈv¬WR‡5º¨ÍOÄ[pQjáÆÖ,UJ`eH/¨lý— Ø˜?&ëd¸Îý­à–ÄAë,r+!Ê*—^Äãȇ¢?Zg‘PËó†s=Ë«ieÅŠõ/9Íèé±£I>Õ*÷œJB mwpv Õl«uQß2ÈnÚO™Õx_ˆíŸ”˜ÒÜ×7")µTÓÖ÷‘W\q°ð±­7\´^ïâ÷ÁŠÈšO£€=q¥ì‘ܧq¤?ij#_Y[Ö±'}™üSîajMœÔÏ›b³w¯}Üüç g›×M/>çŠ$M¶ =0Bƅɘª¼"v ‰ 7Ðùl”óÜk?–‚$Q_–̯Ù­ƒù' ï]ˆë-Û9•lžìMçÍ5·% )†Ô©™üt»ì:š¨e|?S±|ë%>¨M9ýy[Ê.0~ž'°åRPDX.·%ÏévÚÈgŽnÛÉYî¸>^apYöçWC™Rý†§AÀÓ­ ·O»T^§Þ z«³‚ lÙYÈï¿è}¡$Y“z5béÜx²ÒäÑc¡1BѸ$$@'¬w™¨ÌEßç’§!å…>¤~ì@ ™ÒIÆVê‡2E__OÛ§´m{œ4 ߑ̿‡í²´7—V3ë—.káüà0<â©Üû£øEÕÅÔ!›ý6/¨ Õ¢±ʃ99ÜzÀÁd Ú,”[ä’£¡?a­§lƒh¿i7 °×ä`YXV˜õB=7$…XãŸ*+î꾎.(3Àžv=ú&„6žpÝ2¦@d /Wê£B"¾þ“ªƒ endstream endobj 218 0 obj << /Length1 1569 /Length2 8003 /Length3 0 /Length 9034 /Filter /FlateDecode >> stream xÚveT”m.CHH×PÒtH‡t#- Ì£0C -”€R‚¤¤€R"!!-Ò R’}ßï}ý¾s~œ5k=ó\{_{ß{ß÷µïõp³ë )ÂÑv54 #A¤Ê:FÚÆÆPA Ânnc$Æñ¯À}áîD£¤ÿà(»#`˜k› sMÕA£€šžÎ@¨*. •†@€ÂˆÔˆhwi  Ì ꀀšhÂÀ­ŒvõuG::a®WúÏ+מ•’’üTtA¸#ía(  ã„p¹^Ñæ 4BÛ#ßÿJÁ{Û ƒq•ƒ½½½A0ÚÝQŽOèÄ8 w/ø«m .ÌñOs 7ÐØ éñ—Ëí€ñ†¹#€×g¤=åq䉂#Ü×ë4´z®Ô_dí¿‚À¿·AÿI÷wô¯DHÔï`˜½=ÚņòE¢HgPOM„ñÁa(ø/"ÌÙ}ó‚!avׄßÅÀjŠ@ØuwèaïŽtÅx€<οºÿJs½Ñª(¸2ÚÅÂx~Õ§‚tGØ_ï¼/øŸ#~€B{£üÿÅHÜáW+pOW° 鿉ÐPù›umüksD`€bDòú`n@„½ø×"ƾ®ˆßNè/óuþ®hW Ãu+ˆ¤âúàïóB1ÿ?ÿP(Ž´ÇíŽHàßì×f„Ã_øZîH %äZ„P ä×ïŸ7ëkÁÑ(gßé¿l¡h¡¢¯(ðOÓÿ¸•”Ð>@!aPHXD(•ŠK‰þ;‘> ùw!„j Ð@©¿ê½Þ¨ÿÔìõ·xÿž>àçÒE_ äýWïV1ˆýõúÿ­úß!ÿ/±ÿÊòÿ¡÷ÿ­IÍÓÙù7ƒ÷?”ÿ‹sA:ûþ͹–°'æztÐ×Cú_ª)â¯)ÖAÀ‘ž.ÿëÕÀÀ®ÇBåx-m!)¨ø_f¤‡Ò×Gbì~Ëä/³É¯±sF¢úh䯫(…@þÇw=kö®¯kuþv!®Gé¿WUEÙ£á¿fNXLsw‡ù ×¢úC¯‡Žðù­g „Bc®C€×Ðî€_G+%Ã~™~#èµÚÀˆ? 0ìð‚‘@I Øù(»ü ¯µFý¯S¹þE`÷? 8Œù^Wåù¼^Èë_x-i°Ïoø_[aïéî~}=üVíõ>ýÿ¾‹„=`rm/~¿:¼éäµ"“·Ðò€H»¸ÉÑ•'›( Î{„óA—þÁ+&ÑÜCÉ”,ý>'¹ K\\숧LªqÞ¤”šA„TÔ¨pÔ£·@5·u¥Iw‰x‡ö íŒ ±ô©/Ö•}»ÔwØK̹å”û©Œ"Ð4A,'«knzL¬¥yåÄzkã|R´g¡ßõÔ ¤ >÷´¨@î‡F¦’h¶ÖŸòhZÔnS—7SÙŽw(‘‰}ޏÀTïÚ1™¿’néo>sjÖRhÁ~/X“óz XÐs<©›ÈÉ%ë.a@û.èù!¹PEm|»_¸ñP#NÏÚÕ[nð3¸ô8iÚ}bïÍ'õïñ~Ù¯6{‚ÅGÕyw^P´"G>Ùr.ã½Ð}|›6"Wƒ+RyÂ4fÐq]ý‘bCÝÃÑ•s²šxÂ=›7 ÄæçcÉ1sä€î`cÍ»¥«”ÛA|w\=•¶Q[-˜eóöC!ÞŒ¾5­ùñ›ªjÆ–’MИOò"ÏdÞ˜´}Lj—µÅn[ÙJ…oDÍ Î0T á•™ßÖð› V¯AëPÅr†Ëw\²‰ŠÖCØ« Ÿ_²žíjò!Ê[ÙÉ)hkQoÚ¡›Û;¤£êØ mXW%ŠŸx}›ðä*HìSËò+§#xð¯<·ì',oZ1Âg.¢×)ÌÂR%m!fL¯¦ c”Gqé“Þn³› NÚ‡< Û_± Ô*qwriˈÈÈß‚èñ WF¨É|7Œ²¿.ó±JízÃÖ&Ä_Àþ–‡ùkÔÃ7ËRmää=úÒÆ¡Žhï~ A_¬øMêJšÊ,Þ€>{Ó‘eßÔÐ8ƒ¼s°Ø¬ñ$ÕÎâŠFnõÔ¨’w€Ôc«^ÀB_ÌM=—šu-ÓCøwdꓟVhXo eS(ìß›‚­G?wƒ¸é@ðÏε¹ÒZZ2DÉ!—;쬥}|Q‡…BTËs~ŽÔž"b;MŽ¢Œ®2‰&‰LîíÁöGÕAË©Eþ¸bôÄu[çXà;)Ò<ÆgÖÊ:Âä9þ™©xzÏ3%\‘¹OK<úˆxÉ Ô+2²òé€È­OÚj ÍïÞº?ëSAulýìçg]åc¯Å¦vEK%¢ŽÐ/íu@ÊÅ{žÄ /g®˜Tš4ãÍàñöP$Ð+euXܤ6– ^ ¯ÂŽ‹6¥oöªfaˆ@(ÛlÙë!î–åæ<ƒ<‰XÓ (m”³E_ªÁ;̶©Y üÎ+Я…øÊJ-áQ#±5[’AÈ'E$éF!;+µ÷·‹^]è6741gÊ×^–´‰FÅzp¦¹Ë‚s±­š]>9=&w·ì…Ï|AßøE}P]óÆ.%È¿ýˆISæº,›:õ’ˆǃÛLÀa=)xóÈ |ø»]Ú Ú[}0oȘMè÷¤M8}¸­Ôoþc©:æ®Ád0;eÙyüÁ\z#~-ÖÑÛ×fR_Ñ ÁšD1]CózzùÇ$Î5‰¸¢Y˜—¼‰²¯lä¶Z¼}‹dr)û;ÚPÓ÷^1A97¬nÈSÐÅ"Xy[\¿µlíO™u2H]Ξt½™OÓ›~—^äÞÉ%”7%ÊGÔ7l~¼ òSäg»‰“‹ô´ëlÂËÞlíÉ©>Õ]“øA«—±åû•’¸9 ý—{³¼yqúŽlòSÅ 3Nšj¢[Õoîâ¹n¦Rfé*ÕI?ÿòÓ‡u˜õòçÛe?Q‚‹c)¥—n÷¨än÷Ìõ÷ù)?»˜°>Ëò‘´äÙ®üPúí(è'^ăôàÃ÷‡Î®-ÌQ‰ô¾º¡_Ÿ¶eøQ¦4{©_öÙßWcã÷UŸN§©[Z†òX…¬¹Ý«}Ê ¥â¶+¼è·QyVµ¡Ìá¥`@u˜áÛmSx4ÆÓ«ÁAÛJ¯îÝzKhHià«\¦¾ì2˦Ë-1¶\·Çj¢€'ÛÇ:„ÆG²¾ð•f¿ÔPÐÀ»7\Ýbó®ó–Q´êN³°[ÓùB˜ö¥ò2©¤MQÐvQù÷5û|Å6.©á† ^1 3ªÍmp¢n}ª°&ÚyuMäN£â·Yza ·þû6ÞÊžãt>¤uUŽáf´B¥D¨ñ¬šŠ>{§oÏCCÿëëc¦vtÿ Í:èke ¿4Vù¤yÑ~m÷#V@ëÞ×&‰Ð;¡\–‰ËŠóm]åhÞQ—üÑÓOXX2ª ~û!;ùÃ.Ïb†Û,•Uçã|Puý;i›ùµ8ïç§ê-lëª:™±õÙÜovƺ”œW@©mcu¢-xý·¨w¯š½…ßݼeþÊi×wn Û U?¸^G¦Ý£K`­šú0y#ÿÓô Õócý¾{ÂãüéC[6+£/•›\¹i^ÛåÂ.黸xj¼|. OEÈ*oâKÚ˜PÔ-¡ª AQcçž(URöˆýjßa×9Ÿ6 1¡B;ë)ß6Ùuþ|Wëi»ø -Ü)J?=;+jQrÛ¨ª°im0Sn0úÜ+È5RùÜ)2£B(÷»Û‹xcs¹Á ÎãÙ ´È#K,ÿ êËyÆœ³yø!ïöëŽt¢ žŠ—CôZÕÒ&Ñûm!rÆõ²S_‘Žß-àBOGëí ¿%rÄf?­¥¼õPà±ÏiˆêAß`[y à=MfÑËC©²hHþØÔÛ÷=ë³·~Ã~™¹ØzCôilüÙý-™Yñrɳê*²­kvR&‚ª!ìóïõJ ÷î1KM¯%R×5ñuí³{4ÞÉyh ™=xŽð­ŠžÜP¯½‘KaFYÜÇú2Éa&º'3fs"[>ÖTü¹Èè½â¸Üm„`Ø+<ÔÀ£8zrAkz#†µÄŠV‚A9Èœ¦oó7v6ìPÚÎöÊÔÚ2Ö)ɦÃ÷Á–?wŒ# I.¬žl]´\Ó¨5Ο»“Øjâr\•iz™¦ÖEûNtÍE}’¯I/[›cjÉ^Ïl¡…>®1|]²6ÂÂ[&žN{-*?}ÎÑí¥éèØûcÖi. ÛtQ3{%_ÆhPä´½ÖŠ—°.ž0Zf¥´Dþy÷ɪ?…-Jriî³"üP—õÎVßB#­ú”œÏ«U’÷¢ ·-ĸ,m‘RlòÎ ’Yü:ê,õ±ÖCòS’>¾¸­À!¡¬C€KKXãÒ¹@¢ºhi3îÇjA§ z¦>UíÕcK§{6Vnê†@ÞÂÙÈ„™½†$5W>Á‘IXBD`*’€“q\î]-Ú";نʪڔ¦+‰F'ˆ‡XtÁXîLæNX)“:C˯r:ï¨Ô2˜žxØ}‰}»ÃúÎ|t]œÏDh÷x¨ü¬Î¢•R—?OoKÓÙ˜úPÿý%u”õ-Pˆ}Ï¥ÝQ†¥!†„´£: öHë›ÀSéZµ­iæDì%©û! ú±·­Ûeðቿ-ŒNÎL¹ÛÆh“틃íΪ%’bAñqxå©!GP?ËQ¯ ÿÅìÌOdo;òÚº7þäNɺ,ûtezêË€ÏêUÞ•ª³F&m2>¾™²(.S€ùžö£üç¡îÅA¬MêšËëjî-f?éûÆ¿o’Ø›© ’›^A ?P,©Dbsú¬ÞÌ›Ç µ+&êžQM?vC<ÄœÄ)2t&Éï'½Lns!èõâþüa«¡ú›;Þ÷KZ¶fË¥î`æÏõ5ÿ¹ÑÖÆs¦4Â>fª<;UA Rf<€íîWõ±×Žkg–€Q›ŒqHâwî{Tý3uy‰·êÐ'žÈ©ÁµÊº›"Ïg›KÇÄcÌ¿×b/'Šˆ ˜ñ;š#XK™çœ, úiˆÛ…Ågê¿%hïá˜ÛŸÆ‚~” Y Ãç÷FмӿøDž SaBç –†6—µ4>ãÙÕ«– ?³бñéz ™Q¡ÄYÝxé¦Mp^Ón2"‡kë2ꉜ=;¹×Hïmã˺Ïoœ/”_­)?záorz•÷mQïïvÈNð>ž©14µE™.3Ly^ÜPŽñ<ÄâØ\d›šÜæ+Q-v ý2+Sé4›bŽX/ˆïñœ[4ŒV¯€Ý`°µ·–øârÐô'nÜMÇ›8ÛŠ2}Ë/ï Ö ÅbŽ¿¿Ùž”ÛA¤¾@'÷§›â«Ì ß~—Ê+þqëÜͶ»`%|D£“Ì_K¥F’KŽˆAâ&Ö÷«šš\·1½U*Õ§Vø¾âz7=Z·æ&{ý­Üv?$º+ YTyeK®‘ï% 0éáxiŸÈ(:{¦—Ì&–²V½swãÕ1hÁê^.ÉfKã-`F¾Gò iÄëšÓà•Ûâ-sÎØìlo¸ªä§gû–&¤21<;ªwç“lº 'ÞÄ^Ô6\ª¾æÉív[ŒÅ|6YL]«yì:CõʥijӗXÝÏëDš· ƒÙ”b2ñjè¨ô—Ú02ÁáCíú®bÙCì,í{îǧ½áo ‹ªżœÜZ8>|mõ¬Æw¼È«bfžÐ8r–9µÉé/xi„×Ê.59A„OP–µ.çí¯LS7ɰ“_¼fåÖ÷ü5 ò53éü;stµi)OŒ ”zÉNbš·Ž1œ4=P(óhÙ­ö«LétÐY³³>@ÃUÚá$¸»¸ûYWþ¢zža¯خɥ«[Üüƒäáãªá´ë—©7°’š1—C £.`¡  ¦¬ªå’q'#ºE­ÃØïñ“.|ÜKrS¦ÊçEºÜzâœÓ_U~£ŽÐk;uþ‹7…«âu™ƒH$§AÅ ¢—’ic£,m¾iÖ½EGN?’¾²Îz0)×¥}!Ô<à廊![Ù÷RFG}—ÛRJHÎyO“ÅkTýí‹×òг`¬<ý¦c–‡Ù0ª‹Ú×ä’ž¸<1{uRY ¦¹“æp]9±6hÆ7©+»h’ÉûDQ˜Àd–G–ñoC^xöߺBщœ/V4´ˆÕnë6äjâL°×—l&Ín0¢^ìª.Ÿ`Ó¬W+6o2©ÝB¨<Ù«–ômÚ#‘hš¨RÖ¼¯k>>w!ÿø-’«ö(âÍF{pUÅ4è9(S~ÅôS”C+xVª‡¯,£ìÃúÔš_”2ðõâ,7ÌPÊ_~âU%ƒ6i]Vï¸`L?ZOþ€-CH5IྻƣXÉ'…÷,]ëùˆ7RóJÇt‚‚29ÞÒXø}#çúƒ&¢ ¶´!_aCà¼ËÉ×ÓJÿgVŽÞ¥é~˃wÐ!jU÷øA$¢“€ñî»ßV¢o˜8§(³{~‚¦¥W¯^~½Þæ÷­S2ú,úN*k¤vùe;žû wOX±­ÙÅ&~ØC­¾½ò9Ò¿!B<°»â›¨]Ü BsÆß¶¢øžÐÞÞ³ž?¨ôâ—#ꙟt.}'ôj™A2—g?6;Ý7%Dýd1=Þ Žú!ô ®@›Uw<§ë¸3ÜÆF:Õóšx—pn]¾l°¿ mšÎì ÀqëJ[R{h“ç)â×qûò8sâf(ŽwßS£|’òB £ "ßÊÍ"ã®A™Ü»Þ$¥ñ•ì"fíV‰fà–¶è”•©òH)Iµœ€³Îé'3ܤÐP±{=Ñ^]! Ú¶n&Ÿ²¯¿.Kà Vúe³˜½w °ƒg+„V[©é£ [0¶o}$ù.nmqЉ“GÒÁiYå8lJY8¼iæq›m+5ª~LÝ]b†°>Æe!TsL=¹óÈ@G‰Ýrá°,‹¸0åäTMFÛúNP9TßšílüÙ}îýÄõÀDžIA8L›ùf%%³Nòz@ãdy•ªÀ»J’æ²±¢(JÊNQžÜ. ·¸0÷33:‹wý"bÏD¾Æ' §Eþhñ}m骄YÓ«§Œ÷X›…ˆé.›ÚÂÅÕ=ýª²"Ý 3ùx¬6ͬ;Uqîºá"^‘ü¼ßälÇú{tw}eSìó§¢›¾ÉSÒ.C2\ñžØMKa¤ùè¡êÍ(­L±¡²éØÄ³J|ËñCø©†A„:òÒÞ¶ä–Ÿg@ù;«Ë0N_­;ÁÓàô¾²b'¤+l·ôøs5[¢»|µˆç ­²“åBϼ|˜ÜWsøðH¼8:;'jV”$Mc™ȃqYÔQ›D§ÅÙòÇß¾G}ËyÊÍöxžô=@¼ê§iŸ8§ ƒq+œmíÝVó“° _zˆCšüõgná§…¶†çONÆö¬®ÖiÄ­ÏÅï?âo øƒ&q•Gä°P}¼BšN+÷ŠËå­N›²t¢µ¯.ÚhÒÁy˜N²„^ÍÍÅXÁ‹5çtŸ°ïàwêó7øúÇqèÍoðo' r5©zw§_F,ólv]ùr ëÞ§|ó’„&C¯O|¾‡¢9m­Xj¯8¯íÌù:iõ©|àôƒfîÐLYâ;Ó‹c¢îotåîÐOØ5:ÍËJM÷-Ï8œ z#buf),Ê>ŠÛ¹AÝî‡ÊTÝZ £_Rðæ¹Ž( ?µ€„Õú5g󔇚ÀÜFYºnù"<³ƒX е“T-ÇÆM/,s/u7œüÁ‰ ·™n‰… «møõ¼57ªm®îi5 á+Ýs6s©»=KØo¶§LWí²èø#1ØINkÚZÙÀ¾ÍH]+xVT^tª±Aíðsà ó!®)®ˆÊç4Ù*.Î!ÛfÏÓŒ¦eòöÏü:í3²(š‚‡ŽMEÕ°rCC ž?¼'+CÕÎà·˜U™q1šX‚`jŒOJZ ù¼ñMj'—Õ‚b¨ Y¸åÉ·×¾Ý@^ æ eöû1¥@ª"2™é=ÉÚÓ¥†Íé9…]ÛDÃQ_JÛa7˜…-­©Dbç3Þãx™÷2¨…@DZbŠG@%KBªzeòÙ’:K¯v]†E'³ú¥Vy¢IˆHƒöjÈ!M«ùy·€£® C\€²Íþæ—³w™¬Æ4“¤™¥R?Ç\0/=éŹs'>®®Ì¶ˆ vÔã¸ô('jÂ5å‘%ÄYE­çhö«QÕjN‰GºVZÇ:úhl¶Tøò’5ßC(FXÍÛ»¼›ç–ð—€g^9R†§£³W•%.èçRÞ0'ý,iå 8uwÒ©lyajS®¼DXeñ}b8b3{‚è´¶°Ûù$³K¢iñö]õlcw¶„]„5…l—ZA-#ökª¹«^83;“=MÈú“[Ï^}x ^Úª¿²°çÉš{FµñéÝ!#Š{ à}4ÜÔu©…ßÛ_š7’[bØê^(ý%»¹P\iýpy¾!ëåì ¬—P^ZìüE#SD›õâý7µl[awÖ3ðžÊü4l— ¸à(ÜÑŒ'o<»_%}ÒJ~Rÿn‹2áÝ€nNC§Žxž+ÝñsŸ[H)3ñ¸‰-Ÿ'Ç.“ )}ÅÍãÛP9Y¾0¦ÔHWêÁÚÃúù&!ªÄ„Ëq—v«ôÉÀétS$öÈÈ‘à\ØKIÞ}½ƒé-&;yFT×1y·´õ³‹×Y„v÷Q²â\¡Þœ4¿Œ¼¶5‡þ6­’lÊ›@Ý\­—‰‰©TþÇ&ƒÍòË9¦UáMàÑ@îð×j¯-âºÒ1“tÙ¹Á·>$”>q§É°5*¶ö†oÖP:|ƒYîbÔÈéIM“pmµ‰T ýoÞ`™÷\Â)>ªþNé~ú8 »}Õ|Ë·$+{9LŠÛë ¹x½Dq{vmži•9{“iªˆ$HÂÖlÐ&G[ýávhÏ¡¯îÉËâ2ÈÂݶW؃ŒÛü’7på°¥?É?°®ÊœÞ'ÂÒPö—y›öL¢˜ô‹B ÞÊ0—‘ÖIÞð–3$ Ûæ<~òì±úø"Óp'´Wáfª´¬».7¼O÷ëðZgmž˜¸`¹ê}ÊI¤<Èé§ §aYìÉHµ:Í*+룊ÁxZþAâ†6eB߇?þò ÿ‚€‰ÄÓõ]¢2<†iá®J:á p'¯ÆÝÚKëx#|y±³ñž~”I’vmîµ½Ø ‚]yí¸fã³´7{R9á\ñ ùu…ŸïNȺOn6¹lb9Z¨GM­›’ QȾÕÀÎãÛF‰Íž_¶š?Qྣ¶ê¾7wAy5Òéã÷±Î¯K9n„<¥„œ:Uñu 2Ž[¸~éèv+RÞômQ¹ÓãcÑíÄÒ¨™­o8¤U>©ç´Q:À@mõϤÓå~ÆØòå-‘Òè‡úì?žÏ)\¡sÔV¿7.”«€óñÐ…=—ROEšäÒwÛè9°é15ù½±‘;> q ƒi˜™Ê¾:èlÁͺµ:¾Ý;ÎÁ×Z¿Ã?<ÿaóÆ.…~¯ ºqˆ.IÊÐF‡éeøTeÐG^ÁÈÓœÈäv£(rßQ#+ǵ<ߎô”Uþ[DZŸ0ÍOƒ!ýáËû?¢ÞŸ;c·‚K7,ø°(Óp'Ê뇓 ß¼]Øjš"¾úô”¯Q×áµG²’_ÿj ÀÊ× |˜m²ˆûcÍý‹¯þY}«ÓO­¸ykmv“â?ÚŒnÒœŸ®s:3wýtø O[ „S…x"c4Ѹç:øów»µ~g†í {¿©¿ßX»Üc]›¬ù°mÕŠÙÜÍ‘/ccæÎÂù÷b:²-ÜŠåò•Lz¨†Húoe|ûYîú”Ša{¿,‘E¡¼™‘J|DG¨DŒ»~èȲp6ª¾K®Ã©ñ‘:J*tîž*qA©1••ƛЯk°¤–”"Œéÿ?¶~bC endstream endobj 220 0 obj << /Length1 1798 /Length2 9368 /Length3 0 /Length 10484 /Filter /FlateDecode >> stream xÚ·P”íð”t7K7,Ý ÝÝÍ ,±K,]Ò !Ò ’Ò ’‚ %J ÒÝÝ‹Oúü¿oæ}ggvïßés]çÜ3ËH«¥Ë)m ³+À pN. (@V]W—ù¸€@^ FF=Üü·ƒÑìîAE³uƒà29üÁP¨x:xø<‚¢9ˆ;ØæáÜ}¹ÿº\'(Ìêÿ7ÙA ¶v¿Ú°õtåÖ‡BÜ<ÁÊrÙ<ˆ0þ•Ùƒá ( ä€Ý`î_ ô|]Á(y~‰zôw…¹ìÚBìÀ?þ /0îî ôÿ]ñ_ÂàáØBlàk°=Šñoô1ØîO~¸wˆÀø0~<à¯Ï?Oæf ƒ:ûþkþÇs«)h(ʨ²ÿÕò?J˜ÀŸSÀÉ+ˆˆˆ„Dÿ £‚üUÆo®ÊP;@äÏjŽéþ–¿öƒðßX°‡ÁXþs3 Ðæá‹çÿyÚÿpùÿò_Qþ¯sþ¿)x:;ÿ¡gùÓàÿ£¹@œ}ÿ²x\OøÃ¨ÃVú¿¦†à?7Wl ñtù_­2ô° ÒP{çâ¡ñÛjAà6ÎËŸrý_›æ ‚µ`_ï'ø?º‡õ²qzxx< å*ðÃöü7¥<ÔfûkÍx ww/ða–xþ<ûh öùcŒÜ\PüÁðÐ^ ÀæŽñëN…ܲ¿D’0€[îzЩÿK"nÍHàÖú—xÜ:ÿ€[÷_âpëýK‚nƒHä!è_zÈ`óý: nÛßÀ þ RÚý‹¿ò›ö¡ûßð¡‡ßPÀý»ñC×οáC.ÿâÃ2qCÇ2`¿áCb×ßð!‘ûoøÈã7|hþ>\)7Üû÷X§áù>”åõò?ØýOóÿŒ€§»ûÛð5}˜¿ù×.ì¶Á˜™„Ùˆ…;Ö…·]ÖJSzs® £.,µÇ$÷F À™¦òýÔg*~u“±²­"LÓš.›  dÛ¿ñ1ëÊ™OUʃ#È÷®Èr \tÙƒ©maö£Bi1+øIÚT¸V¦È¦ÌɆ“·BÝ|ÕëÅ?Û=6LDv.€’s<ÚTJx¼tnûb¬1-Ãü³±^»iº§ž²þèOÄXHÂ…L[ù•ïŠiBÆç?ú³ûzÓøŽ U{j«" ɉüThs_~"'NÊViö@`’8—-Oæ;ïAÈüŒúu+ÐZ»çT;'Í )éñ;#$Šƒ¦”}µ–84 aQ˜«·„5×.°«¹¬oæ}B]*þÏ45s»nq™5AÀó¸ñ‹>ÞyÄ" ÝÜFR$2Ûš]5É ®ÿ7TÌùˤłù´€¥!&?<!GÂÕŽ¦Ïkh¨²Å©²Ã.EÔ %á¡igÕa3Ÿðdí 7Ô™6E ?ÉÇ„É ¶š³ Üj?òÀl’FžîÅ@üvŸôG–ð ¦SÕ½ÂzB*÷d³Cx»¼ÀGd$µ;EO-Wž¦û¡ÛĠΘϟ ™8°Æ¬͵éTÏÑe?€Ú‚{/®MéØ;:Y·ÊjëÏ—LÑ­„èQ³üšÌÃEoJq¦Ó)~ 4ŽEÕ4²îSÞ‰0,g­ÚoÄ4‡ÚCNó N^/tl8Ûì1ª |ºøm¶ žG£ºîK§°2Z±‡ôƒÅx¼qÐZ6œwìR>´Ú̩ш¨íiâ /†YR–¡ÙìÛ]Ò©ÌdÕ>õ;jÎÜd]vð}ìÊžÓæVðƒó<g½VüÝÛ´Á­IÇQ…étö+×!ƒi¶ƒú.«º’r6»Æ$Û;^ØÃˆÏW8ÙÛ½—g¾ozÖ÷ÚšÒ.†hCÕ®’“w=EÚÄJZÃÞ4G;ª”5l:í½a{m"ʯëäÜèñ570˜½¤ózJéõyViË`ÎX˜Ê1·ÏÏ[ꬭhxÐwmù2 ñ26m©ä÷-iyÛŠU\”O®O"æ+œT¶mHñ¾¼Ò%^)|E22Bò¦^:Ų”(‹‹Ö-å“(¯Ö-z§ýëÁëvJf +ðûš¯¹Þ{N%nS޲ÆR/,×!ŸI§°¡üðÈe%w²y’Tú=$%O,_Õ:9ýTÄ~ÿ^ MRêã·Ôи…ýÙ[!^Ÿ wl©(¯¸Kó–eº¹7—JSþ©zêSjp'óÕEÓÄîC²¸¥ÐðD’‰IC¶c=@0[Ÿžñº J>j>Û)"©A–žkÛQó•¼¢AfPÅ)sŠãgq)ý¢4Ñå"tïšèò,çÀÌ!®Â—Õø‘îýŶ(7=hü(zg}R˜ùDüÚ$9°EÁ^5æ¬nH…4€—$Êq;e÷b/I“¿Œ#j•²äJ=_/yJTâÖÑ#ëûŹA(sÐÊ/·¾Wƒðtæü Èüô*8rø„4йxY/‰ª³–¶QùÀ,Aþ|Ç cm5ìÓcÊYà­ +b²LÄB5̇¶;–½’£†qs{Ë¥/•NÃœé ˜Li1ÇuæÏ"34쎢&| ©BÞ=Ü~á¡xAxŸñ2é5±û@‚ŒÁ0ø¹‹•»äë3aJÝ¡g'ÂþBO*F‘ v9‡òÑ-..½B ÜG©w „öÉL}õgá'®¾c ?lï„ò"âíý0˜æ¾­«U…Óáß||ÄÆ!¨Š×ëjŸ(õMcH4!‡ 9O<¯ð ƒÉ7ùÜÓ(Q Uˆ™˜lë5.4fd¾Õ¿ÊÂ9;YÉ ƒ®%ÂÈÙŽd­Fz†tD^²{2°Eþámë.†e!åÝÐaVBýncÅ$8P}@ê[ ŸqzÕs±›ï³.è»H_$¶5F+…–ç)ã(˜”dÙµ¾à%eFü˜Ñ`Y¹¸GÑ(&¤¢€Q(~vá!ðý5éÏ9k/7áé5ê í×J ›å!m/ëCÁÙNaY[•¼Îº¾ßÀù\S»¶J1?e÷¯ë ÉóÃÎE'ß­á¼!~ge¼åæ8"_(†aUÓ+#D›Çí ¬cšÄÓ£I|Fx§N<H\[¥1š,xTèäv‡Ü>>ÛºHæ©¿%ª?§j‚—`6p´÷’½ú¢ýªPù{ŽU¶c)I±V^½þIyðZD¢–bÙÍËg·›ûZ…sšY†¹¿Ø¨ÁÞ÷,²ñÚ1Á÷÷uªïzÄÞ FáЧa8fˆ¬pV¬‰ U¥ò_|ë÷æÓÆ3‰]~Y’“ w¤{XM1Tš×“imoCVüQõk§?Þ¨;ø e9ÿðÍ |cÛoð:pÞL÷£ob `’‡†!ÄŠ1Q¬a~B[[yß§MÖ!mâÐV, CE&/ ÒlIÝßIæP  ßµ– G4 < b‹Œé¶ õÁ/y—x‡»F"âõ™i|ëªÿ€A±=ø¦qfYa§>g M×t0^ ³íò>Á9,~{Ivªº•agòrŒ{9×Ê‚ŽË„ZÐŒ)DáŽa‰û#ñDšEœDÆ ,­»ÞL(q×ìHÇ.ò§‹_Å©U•ëu%T/©ø²ƒaœú¨qÃà½dyZ{Ò”AÊ~A,Ø¿›'è‰ÐÚæ’!¶$õEFRgìÄ—°;>´¥¥ø£& ø¹šøäg:7×À’¯õDÔoê?Ä£š~i•–Rî‚™§¨|ý”¢nßP×2¢ûÙÂ:Ý+xGB ÿr Í±ZÖ5¯“5xõ)¥_~=-ŒÏbMø¬FÅ–À¥‰¸M 9âu ëG†ÉP0±úoé"ïŒ …ó€WóÓ>îC”„A›ôò€Ì ‡jŸHè¢TgI>æ~?í#[Û©Aä©aIùÖ çŽÝ÷H´#*ÂN¥%Ê_¬ú¹I›B¾Ò)ÅMǘâÌpÑJ&Ë:稦ʘµ ˆ1͘LŸ¸‘ ëóqLÄ«‰,fñÐð°oö œ¸#àh„°`ò˪‚L¹J2Q’ĵÛv»’mˆdÈ …zNŠ=„ŠÍé«ÅúESvskÔ‰µ€/’ë‘ñJÖ•;4°€¦låÌü™%›‘„b<¦IÕrjæ%´Éw|«ÝËT³‡c¦zk@Ý6d%Ö‘¯{¾‘¹Øj•cçêoðC™gJ1x²¸1´/)RƱ¹š®AËÞWò>RáÀÉWqt: arq!\ž‘†Ùòè=§Ãï í^TL¨§ÿK7{²pwð7ï-ª¦¼fÔ—,Ý^C”0$xÆÓ²«]žNƒÃE³cÊÓÉÀ×øC6—\Ö%×¹~{Þ®¡­( í›mÌy„cÙ÷CñTó$‘u¬C­ÀM µ¨ý|$+À;þóÜÞñ¼”#W6—Þ¸ .yžü sõ‘›omi¶U4뽨÷YSFSµ±BG³³ç/ÓZE¾J%‘ã¶ûK a2òãe]Ó­¼}¯·]ºªØZ!ºï˜‚¾kK–íL W›ŽTƒ¤×7Ärž•ÎçˆõVr¹Ò¾Í_ãÍL:8–$ž`¿¶ (kú}AìƒçRL%+M s™çëPÐ,·ô(·z¦ª†¼›:žÌK¶ µêOëu0:½šj -!:5q¶ôg!3¬= ƒaI-µ<11^K—”‘›0—ØÉ åW³¯O³L Ä^rŽd&7ˆß“¤‰U+ˆw‘Ú7(¤Whßþ”HŠÌÝÕ ’óï6ŠÉâéS¦‡ %¥«K¹ß'ZúÚ\FþøD Æþƒ­ÃWåöCYD;‹¬—qèœO· àà¾Xà®ÿ¨13YPJäLHª+ö:vJ*=Ó¹Ëú˜ç–a…EЗr»#N2í8³g]®u2sQÃýˆ…•\ug=£ß•¾›¨ãÄsä­ìBÀéŠØà!Ð'NQšL×áàŬ½HaP£J~ª¥¾)¡-@b‹ÆY3æíÕA{%µ%@±¨oh/vÐñ|ôø†cÖtž«{¢Ur'­2Û>G™ãUœB37›AïøŽFÌÑaabMv•ÑGü\YtšÈëM=5¥1ÐÙëTõ´[çÒî8GÅS³Ý{×øãÎòò±ƒÓ±s¥<"[5ÇÛû¢Óîh4d v,º„HP^{õ×QÁbWÊfÎà9?#"5Œm^¹îMmÙúž\+ÓdýÓW?NÙ!¨é»9 M,*ßOy`ÀÌ”f} Ì@Ï#Îb4¢q¬‹{ŽiÄÆ¢÷ÖUý9rÌ´¤…z¸+úUêäÊç hÈýFYTV̼uLÓÈ*Ù¨îx±Þ”Wœ/·óí2¸ìÇí\Òß÷ç<·UúÄïFûÚÏ“dHt}Ò(œ¨®)ì„‚tÊ™,¼#¾Ç,|oà !’ÿQÅ+@äuZT ©3–|À?Q{nCpyƒî}´¥äŽ©’Š|ýq‘XsJ”w%×4Û=(/ø«›â Iß7k Jf"YG y·AB‘òl™M¬. ,1´/qfk¾WÒÊ)`è+ì§äm^Ü®¯Oß°cÛYT…¹ÕÐpïdÅs=i|A ¼F8DÞò0õþºÝ†`žFN—ðN.¸ó«\e²ÏóµÇ, 9ÇOš Ç©ÀŒ´ £ï+Ò1Œ÷§›õŒe…­tUB±˜OÐ×9µY'nf¦Ëy@e³¯ÞKʹ—ñ$­¸¨D©ÓŸ ߆Ʊ\Éõrnò|!vPïîÔëžoL<~}O=¡Ä¬¦"¦ŠaL’É›C7%ˆ?Q²éÄ1[ý²ª½¬BþÎì«ÔÝì¿"g_Õ°o Ùe B+“áàB® Ïia‹H„XV&ÍFªé|]B^žoP ìÏ‘Ç.à>ˆÉ Ý®ÁعÄ-&h4ë‹_ oI=—Ó_ÇG><}ÆÑFvz‹ØÙ\zO#ÃWëA6„+x‘Õóâ‰ß³<ªŠ§<ŸPö#÷VÍ€ãÈ÷ýÙ”Ö>K”Ÿ^lGÒsÝ'oj¨H§Æi÷=zèÞ3VeáP½xEè9ÂØÌt„f3h¤z“0Ií¹†?öq¤Dû8©öÍáóŠÈ$ ‹þU <#yƲüˆ!ßYD¼R´Y³ ¨Ñ¨<޵pcJ'#ã¢,~Úrh‚¼ÔÕp=\ß­¯4}VDÙ— ëd÷¢˜Ù’ãKD\, Õ ÔCCt5GǤ6D•ûZkS§S† :—ÞÜJ¼ÃSçlxQº "à[ÚsÐœŠµvÝXóß_½®iØ=­»¤º+ØÝé-šU×aÛR†yëaâÅ'¦ëÎr:5-ÁÔÎÀÑ­m›ívSœÝNCQ7¿¿ {_[–Äš¬Â¤=ÍH¦gÃ?<@­C§´HjŒe:Ö=©[.øó»E|á‘Õ¶là.'}½3}üPj®_íŒ(º0Ó5Ó“Ë¢Bý=5áƒ;¬7òùÑ:Z2»y(ëßNþa›gšP%ÏØ;ûøõHÇÕÍXï.Q4–oËŸæŒÀd†¼Á¢¶-uÐnòä;Ãgl£ ÌZI~±³u½5–ê½?gÞ&M¢NmW=Þ&í{mînÇ!)Ë@»¥H›UÎá‹1/†%ë– 9õål™%+<í0ýmçOˆNDôù%ÓùÜʨ³ç³‹R¢¤ÌÏX©Çt ¥4·Ìfuš<âH|IÛyÖÄŒDÊÖkáÈZ¹‹ÉÔÓ¼Fרµû)Ö]¥IÒáßﵪ}÷%8éÄaèÓ]Ë­´+-•]´' ?élEŒöNEõù~ª3Š_]ʤGqv,¯ô]cGš„wê™›Y»Ë®].-ùð1îHž»@o8I¥Ÿ‘=¹Nù³_ŹÑ£¬(Lç†T:€´GÕ'Í~]‚Ä^w(ü-†eúSîàþDfYÝA«Þ… _ð«;ƒº‡*oz-Ÿì¶êÞ™×=1éŸÞ¼¶TfÂQœÃÛŠvrjá?y¾Ä`MO ïÄSûîämŒ»aô® #•˜vC²;RïSK•-ìE°oWŒ$Ú01 ÏT"<–8§Gk ¨g©ˆ§]ê ;Ÿ™æ-d”ô°tÝF˜[¼â¥pãÑ ÂJD¥ôõr©­ëÿÐ w‘¦b¢?ùùLýSµÇ§áü92¼‘ Óå>Üí@XéçùK;M"ãÍ,Ÿך½[ý¼[àÉ„˜8]{S2øCÖ0Ä“‘!ØN$)RàŽ‘ìÐþ«à”º+xÍ!ìù)f´DkÛË› 0ÖB:Rƒ‡:ÿäH6 í•¿¨$v쌉CbZÚ?ŸþîSá­ûÁc£Qù{´Öí䃦Æú2-GT_9,.tµƒï¼„ƇH%å ¸Üb‘.D+¡™ÜàM“91l.©ü"Õ5’=Á¶æðF×ý7_Íš±8_ Ž è| #RÓÈ¡š,IL$¥GįÒzw5&Åÿ`"ů‘4ÍCÌ[~¶:{Ü”æ­â<—£.Ê™òl%½ÆfYiÑom Í4š¡è›Ù”Öçj˜v‘áÏø‘B¥BdëÏ]}T_v±fY"­ÀÏ(Æï¯ÓÓ”,÷¹‰À‘åñ‰” kß:­En8MUVè”åLZ&E—O×'Eß² ¡ìò2Åj˜oc–EŽd<Ú1<¸¬¡ñ9ä¿ÃÇL >B–·ù@Ä_UˆrÏFÀü¹ƒÏšÿìi¶ðT@={[)D¾€´âùÊàG”!ñÅ;¡É£§OºF¡å­Z—U>Gd˜ÓXýžo˜«ïihŠïe?˜Ø…ìwï2 oÍ"l­È ßËеÔ<ŸžÃJžÂà_Ólγ¢ûD—t¼~dлJ-¦Õ_åEL«KÂóy6dÈÐcÿÈ»?mzq+‘ãèfÉÄÅ¥BG¢u2’»±ŠÉ{1c„Úbe7Í-ûŠæ–§~ñE¦´¹dBpœVŠYi êtb5•Õ˜EîÒ>Š3~ácpMwf™î€úm0[¿kjç‰IeÙé’m8´²T¨¸H%×xÔÊÅ„[|Zp½ïåkN§o8,É4Яhk9cþVbDßÊχiÛWäÇ8Z1ç[^ÿÊcô¬Œsô!3xä«§ùä¾j~±5g]Äü7ϼ@5qúÙÇ¡¬Ñ˜Ö—î›Õ ž/fðÀo=¡&§áoº~ƈqœ¢¨Ö¸Ÿæ¦«Ó>{C}cù"G2d\/ôY»ä³ã™Ý*{rZ2‡³«d˜öóãoVs|ã¾ýOщ‡qf‡z1G²÷–Ûa×WøÄš;zÖóz|Å]QwˆÅÂÀúB«%ùÕdú°ðx…}ÑÁ¢ývâ…Ú:[•ÃÕD‡ƒ€¹&–p;?ìE¥tþ Y‰í#^/h¨¯W­Ž’é¨ô$ØÛøCÊ¿È$sŸXd)Ý­ñØ!±¼U¾D…«‚ú¶õÓåÁCeÛú‡3\Pô¡® ò³W‰Šò$Îï9óõcÖ£ çÛ¡²ã~¾~œØ<ÞÛ>‘bÔ}zg;ˆ±ç\ÿZw§?mZ㜑;ɉóÔœ½¢=ëÏ —Åž¦#dïGVd¦6VÝY™‰ñôÙ¨‹lT}rA<5å/ÐIªAêU‘‚>ñ–³^el¤É®(à$™¹µulÎ’è¼DSõu=J*šàf:§Ù‚§Øah°&øñ…ÛPG„bŸÁHé²ÜÌ‘_~î0«ÄSºÓ˜‰uxÌxH‘)ïR‚ µ_…ž¬"ÌB4ž!\š+BcD ìÓñËA…šG?[<“£´×òÍ#Ìä¢àÅÞ@9eÕ “­u]˾­lÐëõ÷h@гj±;ͪêèÍ•i ô©@³¨NÛW–ÚûX÷VQá ñKs›Ëå*‘ÁªÕ/Ö3ÚNžÕi´áy¾¯ÓJóó:œ­§ÉbPóÂ÷áMÌßF^ƒ1Q%=}×޲%ädÄdü¼C<1tXçE¥ôô{¼û—³¼]Ï#~rRi¿§l6ÒŸå£7€„zô†Ø* Å rOÀMíGƧ*‹^ Åm;ÜÏ7{j-$(±dðFöÁ,¾¨zïØ«(TáKûÜÏ+84G|h Ľ]ø¾q¸•¬C߈9±&˜f‡&ò~\FÞó]{…²b ¾Zi Põê©—Ýíç&¸Ç`ÄdTˆûú9…Y×Ý¿Œ÷³~ä¦\=ež2€7u· Øû{´n èÔmÍÒõÈE÷gºž,![Þ¶é©E*6S+f¶R{t‰«:µ¾×*ï÷û~œø•úµ•~`@zYÆõV£]Jÿ][xS²J÷Ί!z¹+ÑÈ£ù³5¤®¤ðwœX¨Š1S”¶&{B×òCò^Ë#W42–ÆUõw-÷vœÑ¨Ï’tB‘ð±2[<± §\ð¹ãñæè'¡¸¥HÙ’ø”¡¢äàzíZ«W~JžŠß7‚%øVµâWyméX´›p&äÄ¡¼%õ‘ÅG¹«<çž|Msôóõˆ¥Mw ð 3Q– ÃÙ[Bnö=†€CrhëåϦAùgéÏ»»d嵿«éåâ1Ž!;rºíÞØW!^ïto‹0ºIyªå&0“"ÈZƦò\½-¸ž+_g¯´;Åë (û—·ò‡óÚô( Ò-Ý^—(NlM2ÅH:Ò5aªóŸ-+fÕWBÀÆsÊ×Vw€h×e›çú)Åe(ƒÌë¤òN‡fYø;Œà5o…Œå°(ߎ¾|;b£1‡?½Ã©wÑ-)<»ãÁž’ÑÌ„±0þÙCîé§9úÏ#90>X÷ÝJƒù`_^ê1û žbX§Î¹íSÂ;’KRyAŽëë iÆùoyƒÛèqÈ7‘ýô‹3¾ÏŽq~Ï7;ód("æÝÑD´¿UÔpÑŸxµþ*AH÷ó­7G“À Ëc®23Õ7µJµßÞú¹GŸiµ‚ò}÷´àe–ÜgQBîÜ5‚Ý‚˜K/I3[Ö“#eß›¦±ÜàÆwøCàéøÙø$¥ÁÅ¢š7ű-rÖÒ‘Ç-ð¿-¬‡MŸÈ´Þ´eò¸îCÔòJß ÷õ92ÝgÈ¿¬ò-¦ÿ’Á+¯Íhb·Ì3rÕ#™øÁU®Òs.¹4eh´]­#JºAápŸª¨Ò"0)¹%u­¤yi¥˜€Üê+°—Ë¥{„ol6…ÕÿȬ¼óWåâö®WÌÔ…¹·÷¬ÚZbdöÂ9*âÂ=iöCC_†OŸÊ‡ŒA¨90IrF¨WH+x’hÉnV°Ø]¢9YͧÛo•>yÛFx„$g±áÚuô®J~?ˆõôEõ‰ÎWhN¹nmÓq 0…ØUÜ’ÓPò"ìm7ÐàÑi=ž,Cì ½@¬eß Þ’îpîÇLR˜Ÿ‰âO»1ØÜÑL¾³W0óÏ-PEr_rmMoŽ~Z!1ÔÀávµQ"¡‡,ý’Œ¦½–ê&§#0-üIRèà[ú [Á ÷Õþ¤®[Æeß”ªžøCÊ©u îÝ×OÒvËÔçÞR™MóûÞå,>´ÿÆFG ¶Nx"%ëì/ó¬ºaW}ËC*räǽ"”f5‚HAÿúc‘˜Mã"®,E3èc^~UÕ±)ƒÎ­ª!`ãÑË u`¡úYÒüú ›”ïÃîø“ÅÂK_ây²Âb´fG5,Ë‚Y‡]ËÚ Ôe½ÑEžëÔ’°¯]Û–f\Üæ¤‚8/âš|<|;ÿRšeJ endstream endobj 222 0 obj << /Length1 1406 /Length2 6162 /Length3 0 /Length 7128 /Filter /FlateDecode >> stream xÚx4\íÚ¶è½F¢×Aôè½÷AÆ c3:ÑkDÑ{DoQDI$z'B|“ä}Ï9ïùÿµ¾oÍZ{ösß×ÝžçºöÌÚì,úFü v[ˆ*ŽâJ”tŒ,„€ PD&`g7†¢`¿íì¦w$—ú„’;„BÛ”A(4PhzÀB"!1)!q)  Jþ D¸K”AžP;€Ž@‡ Ø•®>îPGºÎß·.07@HRRœïw8@ÁâƒàÊâ‚®ÁF0‚òùG ®Ž(”«”  ———È)€pwåæxAQŽCâî ±ü  rü5š;ÀØŠüã0BØ£¼@îÚƒ‚!p$:Änq «Œ4´z®ø°öà¯Í ý+Ý_Ñ¿AῃA`0ÂÅ÷ÂöP §ª-€òFñ@p»_@ ‰@ǃ$ØêŠB ¡°_3 þJƒÞf¸ÂÅG! ~õ§ u‡€Ñûî#ø×á:Ã^p¿¿WöP¸ý¯1ì<\MàP7ˆ†ò_´‰àß6 ”@Üo°£à¯Æ>®ßÎßfô ~®W€=z HÔ‚þ"ðC‚þ#VnHþi½O·ìù¸þ7àŸ¹thæB\ÿ&ú# (Œ¾ýŸéþ;äÿÇò_YþW¢ÿwGª0Øo?×Àÿã¹@a>!ÐÌõ@¡U ƒ@kþßP3Èéê@ì .ÿíÕ@ÐjP€; Í/t_xÿŠT…zCìô¡(°ãÖü±›üÒ ‡è#Ð_Otø_>´ÈÀÎè§MÍß.ZCÿ¬«#ì~‰MXT rwù Ï½ø ¡UiñþMf€ B‡Ð3ìî¿VH h‹Þ#4ÁÑö?&€ ê†AÀ¿ŽñãEÁîîhþfº£¿×¿åxCÀ ³°t˜Óë°ö‹z/þÏ£¸+«Ñ }Q¢(޹~ŽÚxYjSnŠíªî§ëÏ—ELÎúÓóì]Œy?êÎ ^NSÏCa¨ô­+ðç~?îv€0Ù!èÆÅÓ£×Éö I[b[r&›Í^…‹÷ˆl¾úRx݉Ü|(¹ pŸ‘²¤Ñ£ž)ävnc>µ`a[E Y<"#w·Ìð0Ö0¿Æ| ;Wl¥ýî³n—9´´ô.§¿/]ä¨@«·Z¬*‚‚–ÒW“%w8i€–*1G³ ‰Á¡(z¦T–šÀJ[äÁ±ŒõX|ùÇtA[ Gƒƒ®Rð½'#uÑY™Üžå#›lãï‚Dw›“¢ùjÒÙÙ«í0Ά2ö«E`y½ØÔLܺÎ7:Óˆ’Òs mÌÅÆX¼'¡"Ö_&î^<~–•($l•*“øôRQLÆä:lo¶xõ @AÇN¡¯¥Ëâ´ê1|Oàôe´Âœ9~òµù]ûPOä‚m‘j*8Á¼#kûíVb“†èÙ{2S1T­Ö¢Ë†;>7~:Ð0/[¿­SMú¡¼äük¼©I¾1Ùœ±ö&F†îm ©p… iRb ç½2ÆW‹•b#/dBšeR%‚€O>LÜR6؉'­]¿cÐóÇ:ÁÖý@PßZ+¯ó¡ãã]NMÔýhãvÂÕWE‹©àñÙå<ÅŸ&6¥OåÙ?ûwºyÒ°Ÿg®PõÒ5¸nór„±ãaCÆ›‰ÞÎÔMoõ†Ë3ì Û!5©Ö°"XEc¼h«ÒR?U´‰e?H»ý¤ß½gľñä;¡å¹ôý`Wë¯ ºû®?ÊÝ•ä$œóá’"ëU:A’~Ø„Q¦ÊD§äD ‰†áY¸†£}#ÁLNk‘º`Û’íis YÝ¥šëÁY/ÃEk-ƒ æ€/ø«(DU⇧¾ÈÇO‚æzbï|]µ{O¶7­ÌÜè•CtZp£,G4“XÄÏŒ˜ë«h_ ¯Û·Ü©j)C¨§úÑxOÑRnqvµ{Ðú·!ˆ.Î.Ít™ ³TRŽŠw3[â§1O~p¤¬gÀ˜Uo¨j“a: ½bR͵=,®à„)]XŠ‹>ôpá‡1xÚÏ ByíÇïæèlï2לÃäÀ<ËQ¬{UÖ†•_¬Ê]"6HßCK´Êõ§âX4îľž~ýcóî©!ÙOÔ´™tf×ÈaÆ€‡<×½rÏH Åô“9~þë§§ ‘Ϫ¥0¬ÔÎc oìJz¼Â)T’º™BiOÕštË¢éòÄO"¥Ö!ÊPSD]úÏÖÜ$¹žºf锜Z™á²|aýë%X+¾7¦fÑLîâx*¥Îaç(;ÐOËÛðåPçt8“S?³µ‡m*h\è[c–×ez-dQÛi ªû:sÏEB½$0Å ï ™èkÔÙûi•"é ÷F-ªÛóww<»ãÇ-ó[~Ì35k³ëåËogª‡F$“?XÖçŒÓ|9ü!Ð3q†¯Ÿ­žÕѤDGî¤n[n5Ù•g6LÜ“xŽF惾2`]$Y¾P7IÔú@$5Úøs„}k€ÎÇ 82´E;¬ž¨(>ýeŠ8üv˜aáe’¡ïKŠãcûo~‘ÖdÊŽOløef®)¦oÍ\¾é_ÈE Ûs*û,¯ÕØ ¼š~%of’H®…Ó‰»q†Ò~¹¥uußYO†f÷g…ü¬ ©ô#ŒoI¡òt™æ‹3æûLbq|7,ËEÜó˦±ù¯Óm!ÖslM±Ÿ¬È$`©ñMÈް°nÁ„µ5kî,ãÏoƒ@Dǘ«•{ u«ÔÁF¬ùÒñ_S¯<¬1Œ¢ D2ÅeÈ>xÂ?d¯ãWeÆ×Ž·³†Ož—QX âŽòøEMöÊçM§ñ>eÈ‚ߺ.ƒÆ\áƒÖë§?Íø•é–…`ì;²#¿—;È`´Ì­êR‡l|®4]Üí•eY|•›á#ÄÜ=²EåÃ’3IÅoô¢<{lJp ¿ÔI&¬±ôwY \Ïow'П·¸‹·wKÕ=LûÚÕ¿á9Ï$éLèCGÝ žäã*M§<8·Hv¢ÝÊ™:0 ³ª\ʶõUS’ceñ‡,y±|­M{6\d¨ÿ•íKS‹ÔMÇ{îÁŽ8•{ó_‹ì8+{?wÑó·4¾Æ¤ï°ÆD.tÑÇΤ!t¯~xE÷¶@›XbüÍÉÂ3ððqÃ8‚r³2&[[½è}«ÖÇ“ãÆ\îŒS<·\Þ¹` ŸÔ¾Ñ¶¢¼ì[6:#±×ùåëð€ä¦¸×ôœ'9ãµge(£ÒÁB;¹¥Zs*l ®P‹Ðð·çκf ovUç|U ¨Kûæ\÷¡oÅp—kqfÜZxžˆ©pu½ãÖ†;Fò æïŠ˜~·SvŸÖàs+UUX¾Ïs ÿäøEOfò}Þ' …yLoSTÀqï_/`%éôoÏ V1Ro£æÃ±®Ô!Y úJõßG)- ¾E=iMìˈÀ)A0òì¦KÆö»Ïh<ÍG8U›ìjQx;å· ÜæÃ½àµª™}}HØ«‘ SÖÞ7xˆ%|Þ¨ÏGœ´up>˜°èXÁ…ðï ^Çæ‰Çò¨ˆÞK·‹<,DÄ¥ùY)•˲ýÄR½íëÀ2ÅóÑŠ1ãóž_÷GðîhÑhâH"¾OËËÀaé™k5qˆÀlLÔó±žíZBmÓè''ïn®.\ˆ(a 1"+vÊÖâÇ me6¯ š  t®oÎú☆ððI˜¢>æ¡ñX S£¯¸¿0çïbŸÙ iå8WTŒÄ8-VàÓþ4åj¯W™Ý¢›â·Aefߨ}æïj¾n™7/¤+èAiøßv¾Àž¾Ýg™|¯1TùžÊû$W×jUžŠÒÓÚå Ï}w½i»1¸8üN!Ù–½d(O5ý޹Ôiç¦ì@{–Ïè²6£=æè3ª^É$P’“4/£U0ò6÷Ä¢B’CoÏV°¹VæÓFNß…‡Ç# Œ‹Ü·á{gãwêfŒÛSÈz3>h­knï}³V†–^[H!<ÿØ,ÜÃrH¹ly韑v÷»¨iضý¤IÌ–›~pÀùÕ”¿ÌMlúÿL¨ž¿~/îWd–äa S\ÀÆçdF^W… ¾¾n§ aQ2¥ÁñìÓ¤ý´ê†ôyÒ@o‚ª¥ôôƒ-ÃÀ‚4”aÎjk ¦+ƒ„Ð‘Ž¶‹X?èdcÖÅõhO3Q/_S»–|cs°¥0(R²f@õ­K‘Éôä Û¤JA+u‚“ ÁS+9@Å×ç~^8Õ6$¢"çEª{Ó]u÷Ÿ+f~ÝÈÞQ(­ _íp{=~0L¼òfyò~^ SdaÂÄžÐ+}û»ïoWóÍõ剬·ã0¼p/,±L\êö|ü‰°½¡öÇ3š“®@ïs5¶›<ú°¢­q€ü–±;#)M¥4Ç;UG3SÀ5µY‰!2w«ºíYhn1ó w” à nzá¾6”hå’_XxšåKnîïÕåÐpIÏ]z)kÎòÎ%r8$?£&6»a2URÿzñ\â½3ÍL"Ο‹]"P ÞVQiGŸ@qÿ>&J·¾èmLø5i³³‚†U$7ÎI`£QÁ—‹´x]È3\ÜÌøŽRë8ÆDÎ+°<ÉÚÝ+ަAÿ+c}…éçL“t»5ä7[ å¼)`⪠ÆùO|8]v2M¾Kº²Øtb–´/žnpëf«Õï¯âdÈcö•޾q²ª'‡‹˜ËjæûÊ-(ïÉè^„ßê°…1>ós£±µà’e]àùú´spÔ¹ÔGä±sñt­¾ÞC¯ìµÖraUDØAŸ@µm÷ÂO%‰j¨¨÷©Wðíj&™•éê¦#*çÌ×™ÍÙ™Íêþv5öؾ9ÿ²š´M Û,Mþhøø‡Èó³tWf˜Aõ‹dƒ/™Ñض«¥T‚®Ç·Ž_0'»uªNJ`ÛüœQ Kê‚oS¼Ç»)pÑŠóãð•~0Ó•‹ìr´n §®ßÎyyÈÉC}ífd| ~„z@?ë|$ˆ/W&ìBË;‹èb4j?DÖyë{ø%R#Û[Çk.ôsŸòò?¯*Ë7yš^«zjr¡ÏÚ¦5Á[Ñ>eÑ §Vp¥žáCíè鳴륜ñ$»É¹,4øba_îI?ž¡Úü¢0¯.UÿêŪ…:£­PrÃZ›ú€_³W耡µÅd-1Á 6ÕÒ÷iêÊ G¦tr®Gx>“é-”úËìª2m!=ýŠ‘¸g gùjZóúŽuOtë-›±5†l¶¢‚”ðŒ©}—§ìooÞ~0–{|ëñ}ô¯²ŠÐ¬&gûõêÛãÃÛ¸$!x‹JƒÈÖt…í @ÇMq‘ç¤[õGž«[]'ZÌürt¦—EäæâŸ•éY}—2£•¦$ódN'ÍÀ1_“Æ SdNº]bN/ ¿ª!-—Çb\¸Ó„¤ÞÁ:3±Úxš$3ióóÎu’hý›˜ ÷ ”¬LuÏz°­Vçk¢T½‚{m>Œ³ñ¢¯8õêøÖ£“óù¼Aí`ÌíÐ|ýdqŠóÌCÍWZËáþâñä3&é&nÖouÒ—RÓz<;†®N•žÔÉui†¶ &©²Š™Ôe7q1Ox?jL‡iY‡¦+&e¶ƒ‘ß–wC½šV«så,#^WbzKOsƒPÛâd¦kÃeu¼•dEM•Uo®ÅcêL!Y¯fËú}6?½MÆ3΋U½RswX3Á}K*:™Ëá_ßЃÿ$uI­|c^"7}‹(¿WÇóó — ª$t}@t8^?ÜͶ³ê3À1»®7ŸHåB,û2®êà¶¡e'ÍDB÷Ó½/ø?9C6ß¶ UQÌ¿‘`&9¤ø<Ë%5‰¯•; X§x˜yŸI+Ê!»¬ïkaOÙ& …|lŽqe `†tÆÊÞ¯åÿØ@+àSÁ»õ#刜ähâ€cŽ ë·’׳%m›¶tžŠ`Þ@•.^9ÂAÑâ(˜ä‰y‹¾ìÜá䶆ꦔ\*e>×ÈDo ÜOì$¬äbYô©BO\6ØÙìÒ¹¨ ¬sؼš3ôõc1u UÏ“’×sº$´vNsÄ"¤‘²„™÷èéÓ&Qœæ©vT’¼*⵺¸ø™v±~}VG±.-Ï#iïô’æ¶ÍÅQÙÑyÒ>µÀŒÀµH;ûÉì…p¥8ù–É’©òVÿ¹¸ªâîø['}ɵ£*Öìn‡dŘç±c} ú{q'ÒŠÖñzeÉ"ß»xïˆÔ…zÀÛ°ØšV4ú‰·nòlôp!?¿'`Î`{³ò8$€_’Ê@ðmÑg:HP®Ü|÷ÀàÖTMÃ-&ÒÇ ,«˜bÛƒ®Û×ßÚ¶*l¶„L^Œ¦õób“î zÊk,Çsj£h5ó–éɲë$j„,#B7Ì{â†FÌ<¢k´]Ÿì=Ò1U¥ŠÞŒñ:k|6“”µO (kN\¼m<AE6VÜ´æ;•G÷ú³–Ô9ÙK˜%È´¤šÖŽqÌÃŒ³ §ªãžGˆŠ;S­üL¾Çˆ§žôƒ¯Ò{ÌÿYôÞ-RÏ} ªE¶¾93ºëXr§å¡ØÄÝp ¾åIG#~³‡äñÄXcšw9›j·dJ7>zé~~^‚•KE³]艮èo„yõÚLD«cX´–E¢'†Y­?O~wpû) ¬µWéç’ve•ù9džÈvVCîÎ( o¯ÇÜÖû~¸ý˜|¿Ä5)ïy¥TCŒF)MëZ KÐ«æ¹ %^ÅÇ!£÷l¯ ~0M*iŸ'6S{gxÝþÔY̮ڼœÃAô„5lC%Yv4¿Qú16I¡çö æÅjcË]ð,®Õ~3†U-Ý„ÎéÙJn˜OÌÊÓ{FÊÃÎ ‘Úã¡ åkc;Öäò—¶¼›ÝzVó°jïOœb^Gëb毕H»”µ˜ôðh»#í³¹佬ì‹M3‡{,·ŸlÇ ©~ÿÆdM¢ âYy{`M/Ûsªš¡Qø–'!ïågãæåËaàÂ¥í½³ì[–Ù¾>ãI3lØ¡ÊÎ3¢év† ;¹úÂåýdp|Ìd»¢6d/«7}ä¿ôÝ´˜¬^âÿ~¥Ð«.=öK;xà£h+^cáðŽo=À‘/‹|¿ŸŠÏo—ý¡ÃccëFÏ(æÖŒÀsN½!*Ù"?€õÏhzÛ_ZϼJ¹Ë=“ÉïפßR£7{)LjXÚSOâýîë6>s”Aþ‰—¢ÃDâZûµÑu[n6ë\9,ÛöàÌWº¥6CÃgæ‘ÊN÷ðV´«{©³a“<®|„ãÍ ‘Ô XïP4ÊèüË[vÆà]®†Ë oÊYï 7xd¨@’D/xß.Ô KqÒáSÖ¶”œf|Ú´2xMwrPc#Ïsê;$ÐÒùâyÒb.­=a Ðò}¤K™¶yµ~N­²…Ç·1ž"“Ñ¡APpSòk‚L?JMÑ™,O6Ë EͽKf%é20k}ªw}:™xŸGÏ÷G«¸ùØ œRaÁqµòq~~œ"~gKf[œ<ÅânfýÙÅ»ƒ->QøÆŠjLª`ŽÜÕHLæ*‘)P¯+xC–“ê/>ŸÓ½¬tØö_WÕ—`J[P{b Äo¿Íq똱³ÝË =ÎòNΤËaÍ4ö÷/ed=ɼ†ˆÅFéKæ{yל¾sÔ*ûã~ì÷£ñîØ¨]åÈ"?~yþPÛS¶'ßCüîô›×ÓO‰±´ˆ_‚æI{i©0b}ÈC°;D«IÇá 7nAk^nmï4x)Å{ÃVùóã3ÖÍ„á/¢9r—ENÖä(ñÁ3«Úž’E?|³™s‡…Acg3¾þõ+U­ÓˆGKB!MS´Ž`™9~_¯@‘‰gKKVXƒÕ$ðD‡®Ý8ÓXžÑ0ûHîG1%R¦¯G Ì º)Yç€û3Ì/)ÈbL#ºmÅ(¿ÇÇ]Klš±tïVå‡áx†WŸ»Ó‡‰…„J†ï9fZ¬ž"/!8 —äk¼™DöKþeÒC×.UñÖ ýÌ…i‹év˜ q†ÎЋæm ‡Â”Ùï¯æÒ¦žc\½¼¤^éYˆ¸í+4ĤÆéŸòÖ>ÔtRYx9i" '6‰õ)ŠK¹üvø¢³Ík3»­gVÓ¥&+õiI®Fi+^˜¥¥Ã›õÒe‘…È'Óz[ Ù€¹W7Ô't(ÍÎmHXXþóØ‘Á¢Ï?£´âJ‹^4Ušn8j:Ò/Ý¥UçJóç)Îû±L˜%g7ȧƒyòŸH¿b8œ»õÎØØ$Ü:J“)Èr¬òÊéûÏÚO=g. ?ÆyîÕŽ ŽÒgfæÄJ‹ÆÄ-ÿhùÓÌ endstream endobj 224 0 obj << /Length1 1466 /Length2 8040 /Length3 0 /Length 9025 /Filter /FlateDecode >> stream xÚtTÔÝö6ÝÒ % Ý )Ý-ݨÔ 1ÌÐ)R"ÝRÒ-Ý"]J)-¥tç}ßû¿ï½ß·Ö÷­Yë7çÙûÙûì}γ3½¶·¬5̬ƒ"¸ùxxÅòúª|¼^^^^~ff}Âü/;³!ØAÅþÁwƒ6⨃ž¹9ø|OÅø„Åxyü¼¼¢ÿ"Â\Å wˆ5@ƒð Ãq˜åaÎ^®[;ÄÃ>ÿZجØ|¢¢Â\²N`Wˆ Ð!ìÀN;Zz0+áõ)Ø$ìg1 ÐÃÃäç¹ÚJ±s< ;€.vu[~· Ð9ÿn‡ oÿåЃ٠<@®`ÀƒÁb†ÂBÜ Ö`WÀÃî=Uu€–3úYý/àïÃðñðýoº¿£'‚@ÿƒ¬¬`NÎ ¨j °8‚ZJê<OµþM9Âañ wÄdù@øS: $«=tøwp+Wˆ3·8þîø;ÍÃ1+B­åaNN`(Žó»>ˆ+Øêáܽ€_®æõù²@­m~·aíæ 4€B\ÜÀª sL8ÿ¶Ù‚!^^^~Øö´²þÞ@ßËüÇÉ÷ÛüЃŸ3Ì`óÐØb~øÃñƒÜÁ„«ØÏ矎ÿD8||kˆ` ¶…@qþýÁ ¶ù ?Ü¿+Äð’÷A~|Þß¿ÿ]™>(Ìuôú7ýÏ ôŸéª+pþÝòÿ:åä`žn!7¿/€_ ü°ðûÏ<Ú Èßuü#VjˆþUîÃ9ý«d÷¿5Àö÷€°þ3—&ìA¹`Û¿…nÂ+Äkõðáûÿ–ûŸÿ›Êgù ý¿+Rrstüãgû‹ðøANG¯¿ÊuC(š›O‡Wð/;®ñ[kCVv©æ/»Áïys„@ÁÚ08ä÷ óÅËû_¾‡!³rxxEàÒüã?ÌÐ‚Yÿ6~¡§«+È çá®À‡ïa*­ÁžÄ ò@aˆ‡ÀC~˜+Îï‹-›þ ß­ÿù@ð? ?hóoø g ìPtýáàlåæêú0½”õÐͿ🧠ö[áÌ}Y‰‡Ø×„´^TÉR{poŒò >ê?Š:Á2ZW¤tßÔ ’—¸<Èž•íœþ}¹L¼Ë_|ßè`LÎë`¶ä›-F>W׊nc¹Æå;N,yµ Wwãÿ¡ÖÑñÂBjmK¾ß¤ûÉãDfŠý1—ËáÆLƶ²KSÅy¹Ý>&kÃO<”јhL <”6ÙŒ¶ ¹jÙ©évU&ø‘Ìè¯Ä'JÛ—©}CüB«ýó¥\È•TêGÎj';RﶺŸR©YŒ¦˜×»)®ß°´†¼b³„ëI3Šgª®©­Ç¨êÚ6© ,£ö¥ Ê/¿a8XÆ–Íö´d]5çèP(þ5—¬_è- ÄZÚ]V¦L"©„Û;‹­4ñ3¤†'›HÍW½zp"ÁLžœ9•ZÈ5”NÒ ­wìó•o {(:Ø5Â%×öd-@7)+Óþ«£ù· 1DµAAk .3=AÔá5í.caïÓ±½aeQH.YÊð5°•Øü‰8¸‹T½G9Ðc}•ûÂwÜßk4m®Ñû§;2«„ç®Îà BÕ»zË]\D‘g»Ùî‡8jY‘ñ¡dI.>uši©Šì»'š€ØLÝ6¯Ñ …›Þ‡ÔJ DPxßTÿ„ܧ¿uÌ<0J¹}bP=l…[æ7–ëcfÅ*ó!Ù'¢vèi·ÿþ’tÔ3½ŽšÒÞZ÷S¦¤ÚH-ÓaÖkœ¼4ºlÃ9xé]¤o[XüHGež–º Zø׸ùç×´"­Ò–¯å¿=íØè©fÑ,Æ´á±$>šúT¶FÐòH™v ¯q·äçú«Üi5º|jâù«ìÒTH5ÕD³–£}ë@'gá*©x¯² !)1%ï 6¦Ñícw*£×ð˜]m´»9h¶ñ8U!OˆNØx`RÅÇS#Õ{S¥·C… ùÔþ}²tàãÞë'+if83êvåï¯Uä~„OÀ˜k¤,í›\²Ú º§?5½$¢+kã›[ò6„Q:ž V¯ç—ü5íÊ£˜y÷-æÃÊ7–9Ãc]öç¡xâñÀÃ3ãúœâ ¤Hx/¬« û݆ѩ?8™Ø„fð}y’tÏ÷b-f•_–‘yŽÍÒhˆÂY„)\˜±8$¿6œ0'Þf`y'ä?P’eÞ•yã;I·|‹•Ö $teäoÏõîHQ 2c c»þVê•P"]Z¹p/C ƒ+„P *i…h0Õh..¦o\¬ óŠ ß5îú}èÕ^Re½ÓU´[ü8€zMKÓˆ ¥wÞË÷ƒ´t¼vtQa-HŠBá¿:ÅÛU3/«5æ˜Â_¨,`L¼ÂÀ{ÙB=”賈åáa#}¼V@]oƒÖÕžŽ¤ˆùͶ‰5æLm~µ`Ï9Úås_)úÎzžpeùŽ(Âtú“ ª€üw"=²í´–’ YÊ”µ¡ÖKÐ QÁ3ïÚ&•$Þ8·Ìu²Àêq½ÆØkàs LV[v!ÒÏ¥Ûb&UAvÙÏ“\•Ûè“›½¢Õ3®=vÈV™[u z[ïÒŠ%åØ;&™SܼÙº› Š'Ú'u‡Fvu½H³#mÞ¦J„dª³¹Þ µ[?ÔG}ä«<üä~dôµnWðV°8»‡ ꈹ ¨½óh;á„ÊOû»wœ}AÀ²jƒÄR@µ\¼‚èL0)ŸSˆìµ©à5]cc•äþ­‡:I‚[ã»ßKB?Kc(°âůKJulO8E"Ïyçj ÝD`SàáOs 1ñ~!Ûe?Í¥cf×eþlùMdξ$'ø)fÓ>Yz½ Ö¢·<Ý£ø[µÆé{…WåGõ&‚$u’]YKÑ?_ÝmшЩÁMÎX×®T c}ëæ¼“Û\D!«¼4¢d V=ÜZ¤Q=uΔ=-"±ãh.ôp¡WõlQ™T8ñQfÙˆA8¼ç´3”`*1×·-Rßmp»E;±ò•Þ7«›òº©fÿË_½økçd˜{öÂ_¸üqŸ)áé«‘×ò"䯼/ÛÓ'd5L³lfŒH7xšÒFCš/R@ ¤®ö_å-2nºe›èÔ—Ž§ Ná!}âSGã©óh†€ÂB¿«”—ÝmŸ3ÊÇp[ØJR=Ƭ°ùÆŽ£ŸX£¨pþœ®ê¦H “V¢¶ÅJí‚‹–ÆÇÕáÓžŒ+?wí bú’û°Ÿ}¬¾ÞÙwAÚ&’h'¶kÿ‚¡°aE.â@Ãs±çø«²›À×Ñ—ˆ(¯¤Xv±˜&ÎšÊÆ¯m*½=Ÿªž¾Àq4é•¿™ \ËO^yÁêË=ò %û"„ ^R(J¢]+FŽÔ̧à¾Ï£I¾èåÍJ†Ò}, t/—Šã ·<Â@¾qnàäGö_Þëpd&Þœ6±üŒ¿~gÒË”‡ïk ‰œ÷š•wsɤx‡X£ !F÷ʶs©¿K‰Ó)hÇ5Ià yM )a¬Fí¦‹ªN—ƒþ…p7h¨¸°OnZy-vXÛ‰0³×.ì¸~×ñ²ÜRôsÓ÷KMÝ×,f^5ªåýžµÖØŸ–"½úy©ò>Q\Údn¿DqјpÚûÓùˆGzg?˜©©.x7gÏ­Û\®ÔÀ7É‘:XKR• Ê,üŸ- )$ŒãNÇUFÏ;Pݧ§‚Žp¥ŒSÃŽ(¨û¦YV¦îíGƒ.¹ÍÝoÀË/,iù/šTì#ùü\n[Ê̵ùÉ}¿D~úG ;Ôh¯œ Â.ß›ïn†þ¤Y•”Ü "‹Á>N-tOŸŽ?Ž!<.\Z¹0zÙl>…¿ƒÛ5Á¾}Ætú¼rõ9Hìþ¶‰o:†Ð²å‘Â{ÑÛÇ~CJá¨_:ÊyÏ­6סyº‹ÁªgÎu^=éao!pb­žµËÑ=øuÿH'ó™áÓØ•‚T)âFˆ…ÿðp7¼µñ…ÑÓ]‡†Ž˜öXëp§É^ç¨Çû³à±»Œ}“äèý²¹z²LXáy©GædFˆŸÒ¢µ±8Vsüç¨=èû£ÌAÅV=9»À¼=šCKKÚ5N²ôt~—ïe66D:A±!„]èh 8Ð-Ru‚¯0`T«GÌ&.Ö3#’¼$PMqaFD$¬áð:jå ~rã?%{ ˜äŠ,˜s¶.ô¼Ýö.?=÷ö>d§¾Æ¶îQ «M´K­GK$âk†ZÞ‹™kÄù) úJ—#Ò-ûêów\Þï.û¼£Ç;bÐ1¼¯dæ£O.@Èi¨ª 3bpv»$9€t]ùŠ—Ö\onªHdäÃÙpÍ2!VîuÍx߇E¨!ˆ÷}f:låj¯f–ŠÎ÷l.è——$}£Jt¾â ®‰Ý&²u`¿Œêñ/V&Š»ÓÚ¤~Nt(ÓÆµ¥YPÔJb|!8>{cnj€D›ÓЕì½C—ˆ§¿ÏÅdX2!Jd?²·ðb©þ$îžðÉ}‰ÐjûRc"dfHÇe¸â×\ꤲƒÕèÙÊžOA&¶o‘îÇK”[udBÜ­Çý¦¤îò²v[LýlB¹^¢R"»²""°¾¡‹üªÒO‘‘¹zŸµ>áɺKKG§$å,µÌ ¬5Ç:À%Ý-¿å#£ˆ úÖ|ê1i3gö9˜,®•bañ¦QÅ$Ë8­Â7º2lÓ»‚ÈÆìæs~CšJ`ú¤à—€×zª|z³• –´Q÷%èpþb_†Fgš)Zœ5–6n/ªº'¯Sï ïÚ©µÖrÂ[r¼søá‡}èÅw ;‚œ]Ûíí‘bR²Ðç+}à—¹&ãûØéÁÂo¹ ú±\2úÁ¡âe¸wç%Ó”Ù{U¥ÞŸZ§Š–ÉÇv¼Á3çX¨ß¬$½NAë—*3Lßž ö]àŒE/«Ì)›eYXF÷F·Ÿo6GÝh„8,ûP1)Do4WQcêX¦+ýæ39°q¾_…In†}¯êå ù3§‡ŒÈ;é=dS~R;|dÕ×Ñ› ‰©hsб¡,k–’.Û:.lè#ñªëW6;Ô:LI-=‰aJ™žŒú:û«Z]Oó‘P·’äwöÈ~zƯ"È`ßÁÙ‘ÄiÛêd sÍŠ/:(M$§‹bT¹Å™Eè‰ &²7±èÖ2æ?×}«8ÀY1 ×Èù>*ä¸CÑpÚ[é¿k{ñu¶Út×âÔµÕ£>T”{¶bõ^£q"ÇA*AEµ€Z§1¯¬6¿Þy~€, ]T9`Vò‰L4 0'Æc]Aþ"ô†STq|’˜_¿s¸éÓùºƒX­æ—aµ3$SŽ&‘l/%Ã%d–kùÕûÍ:PÛgŠ (f1"ˤ¡eïVÏÞKx5zîZoÜè7†ç²yÞÂ]šöMÛÖ+±¬ß¬0¾ú†Ïg}mMÙku} zÛ.)­´¶LŸ>+Œ£{Wˆdæ¿|u‡¹×z ÖÑQÞÝ'™k9’8/ 嚎Ä'|i¿Péùy ˼ý³IñZЊ¨KÚX1h¥Êö3µÇ‘c*g´?fW¶I+rSy£J¹ä¯ëž?\ª Š|ê¯JÐߤÏÃíry6ˆV9¿Î=§ŽmÍÏýEY껹޿JvjÔ£JnL8%’šºµá­¯«øR-ýóa$\Jß¡Ç^¦6*æ·fâšø^* èÀoŒ ì´3÷ˆ&Œ}ž’¡À’Nú±tˆG¤gV埀ÿ$áüjÚ/©*äñÜTÅd±¦MÜ€aàÝIðòkMJŠ®EtâæÁ£ô°±oß0zO%}^dþ4xãTgù&y[uÈbi©u &ró+sWusé¬V)UJë¶+;2Ð;.!ËTYÒ^x^7»–Ážã6ÕßÄéœÈ„,r?­/lÏ5äT%¯íOFÐÙPzôï5:Éj·ª¯œ¬5£Þ¾˜y>¡¾ uø¾àÜëÙDvšNmdT~$& ãV;Vyl-Ú*´qJüŒ=ºûZrYèKŒ‰0±Îø8aÀ~C²- ôÔ…v7=¢ ÇNîé~­™}óö<çë))Ké Õ Z¡‚0¼ï'«ZÏŠÎ Îjï6c\S¦§P#ÅÂDhšïø¥Ã)ôSÑö¸®tÞ?ßÄVm¾Þ©•SÜFÖÎâÚú›üs•–^¿ø´¿‹’¨Õ'Æ‹÷eVV)”¿¤¶[«Xòö¿ê ŠNûn×÷âëAn0é³¢€Ç´r)®RÜ嚸<+ØQÕÊØ @Ä•1þ4ïK*Ëjž¢SÊ1”-†GWyí~D6 \S‚4ÐW°ÍŸjôÄGM<¥³dPñH ÕóMÝ5ý%Y^ìÞ#\ÙÓÔiñÊóÙ(?|Ëû5Gíy@þ…¸8;»Iñ"Úä¬äí÷è >2ݾÙSÛEßÛþŠš¸ø¦-:[Aº‰AG`WŸ±.*縯ªeˆO®Ý(žbnD©PðK(Wº¯ˆ)m¥|×ãV¹dÃAÍ ÂÓƒ)¶I•ß9,ê¤oÞ`fj‡EÉãʇ´d³«Ï(*Ìv/NîSéé"Á¨Z–‘Ø¥&i˜ú’À¹ë“ë@ø§‰¾Ó¾Nºè³D™´üûZm¥ÇEgiCØ‹< _oÙäég—,»N±h†Ó1K<©æì™5M<ÿÕ×½¯ft›Àw”óýíf.ð¹B¦=‡G4@èèÒC¢G€„Ëm¥‡à{—äLJTéf`7lUÜÛSNÉÈÌŽ©Òu,þAlg_ÞI%•²¡^@¡åCu·Sâ=þÛ5ú´‚Oï|5å+ ³ ¤õ¬")|•©¥v«ÞyM2ùƒï_P tÛðĉƒµ†dŠš”±ÊÄ"²O“’Ô^hØQ¿uR[­'³×Ä;µ°\u~rÖo|(`ô£S÷1ÚµÔÉb¾e¨ þ  »EK½¾ rß·€³WlŽhY˜¡Yc‘ˆ`9²=éÚ¹ŽI‰ÜḂ–««7Œ¤©E´ p€4%7J]ň´Éè¦\Á˜¦îƒk†ÔKñOEfƒSÁªÜnJ2ê¾dÔ•­©£ï¤ ,º3¯‹ñERÂröë·U_í&˜Þñ壾#Úét6j&й‘ÝoùóŽrš2e<÷¹|4æú‹j­Û2CãGà¤x*w€›‚×ÈÓJvwrÙ´_9ŠìÛ4¨uiºÈËD3 g}(ôÙ‚£‚oi_e¶FõÄÐÙ:Iò;¢tôü¯¸cqÊœ&>õ¸ÈÈ®V÷E!Ï Ç>ldÍ'Mµ0Ó¥?f[ábx®& •Èí Ñ¯‰Šïªz1&©”Ì©W Êl•¾¯†FõÕ•…¼ÎcøNëYÿÕçÓ0¢É[rFv¸Š×|—cŽM™jþ÷ïèÙšñ™Üý'\ê=zËŠþ[`l•Å„W"ÆÖ$øïÃȪéÀÅ-^õ¸žZsŒY»¬"AT!‘òöKxAlön”1ÂØ ²Ma—+P[WqŒNºìœðK{CenÀš\Úm,Sôî¹´aÊ> % #5{”UãæËª[ÏÑ+àH“*‰êЄcäâ™êæŒHŽ©¸;¢¥ø†«¬y}§Jª‰~A]ÐßÚƒϪ„™lBÏÒÔ^ÒnTË04©\cÆs蕎{j²D˜. ™›¾1;r='cÔ´îéŠÇFÑ‹HŽnŽØš½`ËäŽF;]ü|®Í‘µRäìZÓ@FH,g\EÚÕ½t]Yh&/û\f›äWï*ü´A‰M™ý òô{IêWW [ú{½%xèc/†7ÓŸ“· 5%%mrS¯ïPBèZÚÙ š õEjJÑi¸š¤XŽ N§µ¡õxoóÏZ»wÛ„Q·3?Pè¾Jé‡õi¶€9ÞwÈÄ?IOS g×ÝxÆ:áå8›+Fàq c'iÚÄ©Cº»›†P“RÚ<™Jj®óÎ}$b¤9¢Èä ßõ#xxÜŸûRѽ‚N+Là˜gµÖî™õªâ7!_FŒ±/¬6p…/YA»QéEl½†>Ä«QÖ¿³gº˜È§ÙKÛµ“0C¼D©ÕŸ‘/1>?[aŠºð)µŸ¸éþúëŒ×b²ÌÞ¦Í-yK1ºœí¾Uw”83›ï…å¹f,šnW>îƒâà ˜Ï@.æš/Í6D¸Á|+‡÷„jÚÍ•ñdᇘÑc•“JU“û†Ì¤UÓÅ…Õ=ãÕûå—§¤C—tÊ¿ð3Ñ“yXO•Ó^Ï•ž(&ûOB­ór±9ô­uÔòêðÐl˜_ˆ™LʼD³Eñï¢=}§‰À“H •u‰"¹Ýv$Aj^=Ùo@´Q&×¢½R§ð'¯ë4ÛžµÆ±{k5\;…Ï©qç~ Þk$» [Ì[ÜÍ®x¢þ‰&IA¼PÈ»áý,°+Y2Å–4‹¬œïˆß fœ>GaÑ­TR2cPl¶ÝÛZ¥Ãèƒ^Åzy…;îñâ(ÒâØ¡r¼F±Ñ!SI[aûq{ Deýı‘ï_mSíðæ ŒVˆÖX€¢ìø‚y$_÷…|€|üfêË0geeîÄëß4e‚v“$ý6dbøÛØn"ã_—Û_•¨7N+¶LôÜú4÷ÑÀߘÇ/ q>Åÿl‘þ­íô •Ò<5wC?M¸¡ ‰1Aô–Ÿž>Gq ]¥½…Í™JœÍ9öÔUлø'w›J‹wn:ÙÖ\½ZÛ« ¡¾BåÑ“˜ èR‚Íû3Æ|z(•ÏàtÜs6[ ‘ÃË=L](CýeÓrØHu*}ݪ_Σs¸U¸²™ìuàH”‘Ë~͵r4Y©Kç¢Í´rŽûÓáÑñÖh|3úûÿ š… endstream endobj 226 0 obj << /Length1 2612 /Length2 18319 /Length3 0 /Length 19826 /Filter /FlateDecode >> stream xÚŒöP\kÓŠbÁ]C° ÁÝÝÝÝݘƒ»;!Ü î®Á‚»»w „·3[¾½ÿ{«Î©©š™§»ß~Zßµ(ߪ¨3ŠZØ›¥ìÁ.Œ¬L,|qE V ; 2%¥ÈÅø?92¥ÐÉdæû—…¸ÐÔ"“0u*Úƒr®¶Vv++7 €……÷†öN| S7@‘ g:#SŠÛ;x:¬¬] <ÿû  1§°òòr3üy jt™›‚Ц.Ö@;£¹©-@ÝÞtñü k>ffwww&S;g&{'+!Z€;ÈÅ t:¹-¤ P2µþ2%@Ãäü—BÝÞÒÅÝÔ €lAæ@°3äˆ+Øè€°ÔeÊ@ð_Æ 0þ.€•‰õwŸþÃüçaSss{;S°'l°ÙÊR L.. S°Å†¦¶Îöó¦n¦ [S3ˆÁŸ¡›¤DU¦ ÿÎÏÙÜ äàâÌä ²ý#Gæ?Ü@Ê, ¶··³‚]œ‘ÿˆOä4‡ÔÝ“ùïæÚ€íÝÁÞÿC– °…åiX¸:0k‚AŽ®@Y‰¿m "äß2+  €“………‡ t=Ì­™ÿ Ððtþ©dýC ÉÁ×ÛÁÞ` Iè ²B~½MÝ€'W ¯÷¿ÿEȬ¬ ¹ À h#ÿö-ÿÂþ;<ú,ñc°üñùçŸ!dÂ,ìÁ¶ž¿Íÿl1³„¦Œ²˜2ýß)ÿ£³÷x3rÙØÙœìÜ.^.€ï½¨˜‚þŽâ_'eÁ–öÞ¿‚…Té»ý=4¯-࿾”ì!s ÐüsNsÈëÿçaÿóÈÿ¿ÿÃËÿë˜ÿ߈¤\mmÿÔÓüeðÿ£7µÙzþm™[WÈ(ÚC6üMµ-®"Ðäj÷µ².¦][ÙþSH³Èh¡r1·þs6þkþ±g¶ 0PÅÞôÇÍ`deaù?:Èr™Û@ngÈHþ©Bv翌’`s{‹?–Œ“ `êädê‰Ì™$6NN€7+d-€1€™ lï9€dç °´wBþ£¥\œfÑ?D!n³øoÄ™©ßˆÀ,ùâf0KýF¬fé߈ À,ó±˜e#ŸüoÄ`Vø 슿„]é7‚°+ÿƒx ì*¿„Oí7‚ð©ÿFfß®ùAص~#»öoa×ù ìºÿ ^ˆ¥é?ˆ• âÆÔÙ颭ðw½ ̦.¿AšýFÍLÍmœmM­K!e4s‚ˆÇ‘å¿Î²ÿ#ÿkŸþQ@â2ÿqB(Ìím!£ôOl‰b¶ø„üŽ20ÌÀÿøãúCïè YÃÿI 73d|lMíþå¼åo/ Kð_zˆÄê·OˆµÕEÈJý6çwÞ¶X{:Xÿ9Dú„Äúþ_Ò›AHæ¿cæ‚$mûÇÒüÖCêô¯ ·#óo*Nˆ/0dÙþ¥‡”ÁþwtÃöÿQC2rø­†8s€úÌoxÌ\Ýaí39Åt[¬& ·>\#?k—i{m´J¥½@ðqmЛ´)ïâÉNªïÍÚy9É熔N¢•ù´aöX)y?Yü°Bn| nÑUÅeôH&þOk±Q2#ô 0Ú,~ߺøÛ,Üý÷ýº:W’‹®åd_ó9۾ŊÉ~-ÚÊTà?–æp;¨¶Gs°˜CˤÍÍs\¸êŸ¢¹ë¶÷&§gí}fûªï253<’¼’Õ)lý+-²Ù,së™n™†"Ùb Ð$’ Ššñ/“<(çG)í§RÍéóÒ“(Kø»r‰Æ—[Ì9‹”žâÁŠŒLÎñŸ_ý鉾|ÏÝMyyIÁ߯¢%„žŽÕ`†šrŒx£¹:%uT{Ûšè"94Ó´–'‚6@ÀJØ›_'e¤&œÌø9éóeO‘#~‚QæÛ‡(:V+÷›¶®\梜ìföN‘òmƒn¯o¦^ÇÓ¬ÄG´š˜6Ó.~~”ôÒ¥n*»9æŒ2÷¿ï`ÛnŸ‡_0Ç=ŒugE~¼;d0Ë–5 ÏŒìöl®ãû4¶‹f¹[ºzü1aïøGÑC‰¥Õ)e§Cîƒè™2) µwiÌ|Ý(º{ù³ú¾:0ƒšGâåÇè4Ñv=ÛäD×¾/éTe€Ø|‰ýltkÜŽ\pwÊw½¢lx”“åê¤ØÊ0theïi©Ô½¦[ÚC·“üœk™*v¢sCô9Z‹#^k#ùñæødá¯MØ4Б³UÜ©ÞÔÔìtWÄÞ¨©e”‰ŠÃUs>ñ¾û%z¶E/<(vBq°:H{,_ÇWL£M½Ïõ,Ö/]†JÈè?¦‘–4¯ €Ãc°ù [r@…é?Q.Ižáú£mYwó¾Ôä\kÚÈ„ª&©r–Þ.ížEžC~{Z(+SrSE‰OñÐ;R]šM ]„Ë {S˜ñbÞ_'š:àÛá•¿>“£ujï«]¢ìËÛ Ó²÷±e¥*M‡ñb“ÊÊ_Û銼µð»Æ¸rV3fîo·SPǾ:÷ŽhÌ$BUJtÁš ói;¾5ô 亷%˜¼”Â!DQïõ˜lZÁ÷ jhÄÈ–ƒe>mw¿äaµÇ_~ºéÍ1Á^»^Ø L ¸^\P—:Dl Ó•벶ì_—ÈÑ윮(a>U¾¥LiBuJìBóZ¾ŸIü4.Ï›×é!Óψã¶-ù8ÇáaÌI±“³Üú™ÞÇð+«ØbÛ–“ÚlÔlÍ‘!Yæš  œPsÈÓ¿…¤¤¾Ñ듾|…àè:NÚ4X» ˜Óñ«Ûêáh΂† ÁþÌ®¯={«µc¤ˆëp;ÚˆÌú½Î×#@ê”&ùÜ[ôÍ”³â‰‰0 5«qÔ—Óû2 »Ähf¥˜æa…µÓ-[ZçqIô}ì[-¸ŸÁ6œ‚ÇTº¹§ Òe÷Ÿa£>%¯?‡¹‰WTzíHÁÕ®G™HoË!(¿í*öÈìÍ—d¢åÉÍt1¡O™°?^>ND¬ªD öÂ5Ùëóì_iJW5nq ‰ ‡@Ëä"Klí·øAJÇ›ãø= µ6 Zè D oP©Ÿ}€l(f“£/€WÙå‹>»Oô§ ìχ¥ç‡%„$íTbG …þö¯Ÿ¼WÏLêp†,܉|CФå^¼˜›2e¨;ô(B>,C¥-)NðDl~ŠÐËø]€(À½á]­à°ŽÕ{£EK‰ƒ½uh3²Êrš¦a_ð(öåjÒ{qªñns"èÖÔ{á•,Ë^˜“®Úrãà]Ú4±'tìg*Øò;B÷ØNŽQõÉ´ä%[¬îÒùÁä:$æa)m&ùÈä®ÍÿšfÏÐ…DP(¦`c#ßèÀk‰heõÈm{äSNõ•(`æ5ºâ)]þÅõ’N·w«_„N¹5OÍüÇ{¿ ”CQ7Áà†ƒ›•0¦Ò&X£ÒŠ´×ÊŸJ–_´VQKS•\áéy_V08¸±>zJcÐL÷Á+÷`½C!L¸>à&à‘Tþ#ÕÕ}®ö å˜NbÈÅR8Ù0¯ÃNƒ”‘EºØ邜 4—>£ÝÇÛÌèiO](jÅÆ'X”JÄê³EœrÑw–qä–ÄQäpÂÀ›”gbªxµŽ>ÉÁÃ6…€ã°>(.8ÔÂÖ´j l°¾ßmss/aÞZ‡õ¦žŸúªdêUƒQ‘#†À$ÍùOÿûnNé.” ¦q¬é„ ™1’E ½m¹¹7)ˆ«ÆØÍIKù~^"t¬%|òAvP™uð†sšG[nÒôÙÀ¬&›ð¥•øw\ÕÀrÜwȾº²òúAwý ³7¢©çj*cd*6 m 轄‚X´Í“— åˆx•tÛ±˜k o: ”qRÊ!±•½¥Ô:áW,‰)„/gÏ  ‰: µh+ëw‰¦Jð{B¦ØN_9æEï,:ÊRºܪ9qëaŽ[39x}–jôMæ‚* ˜çòo:q<$ÏésSvvÒ¿ñKVV+÷fÊøTª'ôÔÔ†7Þ] u"t_ÜŽ’4ïÔtµ `”Ù _ÕÝ¥í†nJ.CÔ¹Ðñï"÷/€ß»;ß²C ŠéjXa¦ÂÁ¯À×úâkäj˜¦NDEd—OÂXâeÌYeµÍ=_èÓ»$²æ²ÑŠ. {o”Üžï˜/ÖäÄ•—x©Ð©Ž–¦¨/ªíYБØ*,Řá¼/Å…qow5î/†}M̲ñš½Ð¸Ó®W–ùpÃ_õǯzWË_ÛyÈ?¨e‘”àòÚ¶…‡qß—ýH£Eùt’>[GŸõ%W{pšdÊ)o»­”‹Jf*QœwÁÎé•O/·SöOé;J¾ðK9§ç/ë4åVÒF=} õ~Õ*GðFòÛës„Ý›º÷º¡£ ä·Í‰¸Â–Mܤ)+é¾X-ñ:£»ö‡ì™ÔÛô¡@î+¿l[^©Žøø‘@®+òØyj"hÑ ™WÉ‹$>”7¨Íd¾ï<¾+àŽl®çó¥÷…øþ4)(rxŒ2C~õP·Ù1Àÿ†ÝG4ÎKjK—ãZaIXf$Un«8ëˆÖï—2³ØL¿KY¸÷G??^¶š{øFË d%g¾0y–öžOÿ|•,×÷h˜Dj‹ÈCù»_ξlQ„Þª¢´îoäŽ]t6?áØ]£Ô°Ùa429ãÌ|HýNîãŽØº¸ ÍD}C³ÓÞ*èÌ)s<0cRØð‘MÎýh‡ièlˆ+!m…ÆûÁc% Mq%Íô2¦hâé+}\”I0"Lk¿újýgrú ÷–<Ê[±‘öO¶ÐÃL«¨0öW¤“øó®nÈòM!êÂã,ze$_/²ì%a¶ÎÑt",LòhF~ƒ›MôHoÑ;6ì¤[Ü¢=­Xx…ŠÈIYŠÎ *²_PÕ±†Åd5š¢æçÜ.±—‡¹dHjm6n¶>• ›SG‡‹vdU¨i'û™{Õˆú47¯ýÁÀˆå1&%ƒcÀR³›ÔVár-êjS T%^±Ì;¥9gL¨‹WíÃöÌxŽ >èÏ=Ì ¼e,b¥¨áTH\WÄÂ’ezÆŸO”ýÅnñ.[Ž÷;Ušl lè»ZÀd¿Õ§/ætmbXÐô%•x«RÚ`‹0EßI5]×43ئ J·ôsac+EN=û>û5Ü]â’ìúàËœ0X?‚3项ǥƓñ†lÌœŠÔ+›aCIœ&aØÔì%Ó%føbŒƒ‰í#66lɽË( ³~ŸÈŽ¿xÑ”¡©×μÎZˆv3ÌWñ‘PPÊø×TO?èš”˜È‹Uo’ZÏ9þ8ÂáA}Ë?Ìt99HÔI×ש xS1x~aÖ™X¤(O˜bêmf/Ÿ!»žÖ ±o&rŸ·"¹dïžö‰Sëp$ƺ(§¾/ÅØ‡V¿_°—]Ð2èCøfZаú­o¼¡×h|ú>Œ¸*ÿ9‘³ º„Z‰ÇC1‚^’Ï- 9r„<¶y¶ì¼Ô+Á´ÈŸRõ“I½êMíÄ0úòü¼”ÜÌyä(ÄÐ÷Fnâê«÷oì2RaQËÞ6RÁuâ²·xàö è;¾ï–Ã}ÿCxŽ]3JsnæË6JQôîå•LèoÂ&†ã™^ÛqXÑ~wR¯íü ‰=Þ·3pßÏpRIôiÚãmê™eâåóLZßàm{Ï21ZÀiÄIïh=ÃR§êÂNTƒvoÅÇ2èÑìW±å¸¤UèD.Ñèlç½0õc1VØpTB)اڜ¸¼”V%L¶ò6åÝÞÕ«œ4FeMVí,m§oSsmh·ØÌåH9ø5£SËð>Úl„Ì«–ï+’ú ¢J4XuúþÓëPàåÙJAû”?>Úi®$„Ò,èoùAò€£*8,3y?KôÍ /cD|…Íá¦Fh ¡ÞÙ˜$Š€üõü4WhtM±üÇ?û 4עشïYa™‹ ¯Ñ£±äª¤nT}&—’ü+*†%§Þ»„´[I¾Qóé çl¨kd–2±_h?1Õ£¢EšÉ‚˳½¢~ Nì''E¿pAó@Iè=ò@šu,ÓÀîÄ÷Ñ£¨ã+ÄìÆã‹ö¨†96/H Óäïûñ’~€/û´»ÇKÙaªñƒÃ`Ù*'23¹íÂðó'³/òbÅ”ZÈKÁBLÐZ¡zIBxç+-W-úJ¯¼{üûš#þÕ?Ž=¦ 1¤vÌprW` á[<¢ò³³šîwaÄ…f­çGZ…H¯r?'® ¾míòÜyª8dà³ÂÖ¥ ãΜJ«‡Ž›‡ 3ËŠb{©;8|?¦l}Ì&”U„nrE²#~€+\Q]Ûë0©¯ºëèö½ùjí¹±õZÿB¾CHÕ1IS}o'´dxK5þDƾC/Öóõðφ]þ a¶¼:€ Ã"«M™Î±…læije:L —æá²PJý„ï&—i3jõÓÇ‹¼7ŽˆY™ŒCÅ“]€§ë';“_W…u§¨% áGË!bŒbAP0¤Õ¢qRndzʃïôvÖò"|Àž)tÓhJ½Ùõ”„é³J™ª¶™¼™Œ%¦[äÚp{&T9ï¹hn—/EšÕéâSV`š1k¡  ek xC*Eµ²”ÞÉݧ{ÝfyΛ®l{¼Ø6—7‚3›bý«0µ½¥¥w¦u8Zj:‚Ô®Œ§òV•Öuh1‘ï7Ù‰ŸÇåàùOIÅËnv`Î{˜û« ‚&vâÀ¨–ÈŠnE× ?ü«;yiUĺýýª)„(ò_[ëÄa·}ÄYŠ5„Ò[u~ÓFƒ’ª gʉjÖôßýæ?Ë3›¥ü0ò{g‰yoY’ׂZÑÊãýHÄ"<¼r¾º8¿-ÑÓH*ÿ‰PIL,ÀJK¢óË m‰»›\ ´+=»ußr¥àùE,´.€_´o°Uí›({ŸÚÝv›áº§†å"¶³1ÓQÍÞ”ÔBu$2Q»pñØÛz“ÚĤû„hlï~ uø¨ÆcέHî2Χהb¸EV™†²cä9­X‹sÚIr/ÁŠûÆA]+—ìõEjÄ¡Lºÿ–`}.ð‹`[ÌövU#ÆD[ÃÜB¹¯`¿†8‡×»29Ö®"üaÜ,ž}wü"ñoM[Þz2œ>*‰F¾çÀ;€Ó÷†ËŸ…9ä‹ ñÔm6FLV4‚ÌÎÒ5’MM7E™~ôq<·­5YÄ©ígÔð½Á7Œ\¯Ž-òÐJ7Fßj éöÙ˳ð¢/˪dê—¤¼¦…UﻕñÞÉO4.<dpß¶ù£Ðïñ|Ì3øH_ã»’Æ‹ P6©ºi°²[ñû4Zi&~Fe‚]›ùá3^oçœ}úlföÐBM説üçnÉÆ¯Ìw³S\:Âp–Õo%=×=Qs:Bq6”à70•YÁ–bYJ^B…°I<‰‹ ­Ô„gÈÇѬŒz}¡ääŸviâ[—öò­¨ö ê#{‹ºW¯µŠŒÒà`Êå­LÕ;ÖWná´fOðƒÙ—‚ž„*™}ˆZÔÜùcmcL¼T T@Ú ¼†ŠÒ²TÊw²Ù8eZ57ÚÕãïL ¤ÞÊñtÅÚ¶£IM‰>«âƒZy<€41$ÅÿŠe›oÜQæì hs°ËñkUˆÚCžú¬ì&áW8´ª-ŠàX[A]„&˜.l€ºžG¸ŸÑí ÍCïÜ ¤NË($ã«ø57qòÙ)Vû}=jç¶úÃë“(0°Ú^~.Ö°¿š416M½ù„ á±xåöÓ¦&›r·Ôþ ¡¾‰ÅíÿOH†‚ ð‰û9 u F¡%$kà•ǰ)Þ–ƒRþœùFè´ŒUNkMzC!ÁÇú-‘¡°œAû“ˆLzPâGK6ÏxëjÐcOù±ójÑ! Ñ­RS¯å°e%¥œkfpM¤5øõ6W*ÄòR/Q¾ LK •šŠO³±>ú¥FÛñüh7øõÓ–®y.¹ÿFUÉqßäÆõWò¯Uè¹bòþ6!‡uºÞÊd6¨K@Îô8yáKôuÈ7‹e´¾µ O|Æ×ÏÑ;ñó†ù#`¢.5Á Ì¢/#!#ýB‘Ýýé¦ã1Ú#Ó08Ò<-žÖê#bù›˜ `D€S QÙ÷HîÎnqÊl¢rpÕÁÑO= y©öi&j:S‰G^¡®ø6ÃgÛÿï‘X2¶Ô[Yçw@Šv©îù2èàØ›;µŠÐW­ûp?ïË jq¼Å߈"|‰]=Ïš· K’éEüÔ¹–9Ø LE+Î"ûàgÇx qŽ ¯Î·?\,ÀïIûÔžU"Ì:éxUí)Òpýf  2JUþS£8ùƒù¡úCúlÁòq´\QýYå¶K|å/Ó{ð\[È\âüŠ„bnú¢Ìü8?R Ág‹ôªÔÁŒ-$iãÀñfZÐS‚ÜÔ7TƒÚùB×Óc'.Ö* ê÷ת¶ )uQ)Âw§´%Í þayy;ôÑAÒtrŸzÙÑß³@&£ŸqZ!çÄ9©£î¥Ë`SI±w^±¶„ßìã¼Í][µáe7”ÿ’dÐG‹•}J™‹¼;‰÷ó%tR/~Cz ]p0ò¤'IÆhH‘Ç{£¾ø'X”ÛL­féÚU«i»‹ð1ÌÔ$vДÑjèlÍ·(-êzôÕƒÃ%ñê{&œ˜|%›'J[êPˆF6¦ªàybv\ú^†9;bíÁn¢l‘bÅü NÒvnɧ›¡…šÐXyòÅ…<ØÙ/Ûõv¸¥«&}ñ¤iI>t[b'“/ž—ÏÙá:!âŒvª¢5‹óÛ…ü…+7‰¦¯o 1 nˆwlÀ:c¿*ñå xÜéÁÖçþƒœt ÓðkÄ#ahMAnRj´n\Ÿòî°õб"êÄ«Ë=æÕ@׺–U<0…nœOëÃG:,êÃ1[JÖg£ÁFª&¦K¶W+LXÒÃ^zÑ/¸¡:6â ŸvIŒ[–pq$¼ô`PؤàyÞ¹1¼%‚)e( i+ö±ÿè€·äØæ5˃„ØCÀôAãÙOîÍ-L1ƒLíÝŽå¶;{rì·Øo?GÝ ÷:9WHK`"ñ~5 á› è‡KZ wW…]>©mô‡zÑïÓ¾v¼“·dï¼Ø½„÷Ûiçå{^n 5ˆf]‘iÞãDÁV0jQ4ï/å 2#®Mß©PYö>v.MÀhåò–Ié»'^ ȸz6{žB+ö•Sƒ0~º% åu?¿Æ°ÅuöQþpLK6SÔÀ<¨p.R€»gtu£•,Ì2ÌÚªI^mÃû]ùvE!ÂR9ÈJOpVÛþô5×Ó¹9ºû¬ÅVÝøj²äýíÝÄrÞ¸bÚí‰xk£a¨U´’O¹Ž¨J¾Ôíè.£^zÇEµHùi[[%ÞÙ3&½úˆøöí‚«m«÷Tû.…éÇ87ˆ›,(äôlÉ€Bj7w$NpÇ<_w ·å’b±G½ü©€×αDœ¡7þ’ÔB9iâÏ$m¨a††áZ›¹Y8ŠoaÅwï$ˆ¿>Þ|%þÄ+à]ÚÐî3r¢»°ìgIŠmÿ ˆ_•7¹zþTÔñaºnFgjíÛ5Ï×WÃ627{ón¼Ü‹i¸}c_WìwÊœ:Oâ:["Á9¼Ëéw>v†Üú„ËUú[uÚä¹[9äž”ü)w—AR¬#·«q¦€.ó7ßðOÖ§àÊÉ1úÔ3¶ÃÊÖqa3;ú:ÐÇ«£Å­Þ‘ÅÖ»;ަø¦y½žNˆ~õFpÌëíËÊWøŸ¾(ÁÐF%̧Iùb ‚‡•ÉËØû G°“t×UZF;(ý£{‚øBüW”T#v="Ñ8ü˜¦^]匾ƒhuÒ,pàÙ~m1!Gy&;)Ó_½6ßÚÔ^}‡ƒÞw—ô'õGõ+ZG kš –èmîtì}/_nz†pg/î3S«ÊÝEí±±?é²ïÐÓ;Ù‡í1î˜1 +Õ|c¥sþ n.«ëîþª”å¶"Òó˜šñ-2шn2øÕ6Ó£åŽG#íøFP¹uí×Q3f~¥züŠ]š*} q5)~+Á§™VbÇqw%»†E¤ÍºÈª¯#éÒÈŸÌÝsŸÒI<= ߺôtj'±úV'‡•õS½érh—åF Ñh2ÅÿD8z¨e•J7ÅYG™.¼Üc‹“‚]µÂD»HÑX› þYhmZ8ÈäowÏÏÊeDÒE_}çuГÏH˜ù?‘[e4ió÷žÕÞ}ù7Î:¢9¼ŸYM#S£¾ÞÏóÈß´T‡?›ùfM"ë ²M«&ð¡v &Œ+ÍA=L¦Ë\_oK¡XówÝÞ•­GtGP¶g ²³¿ìyŸ6‰.Êjëj4ÀžB}ÀZ[¾ï˜:úu2h#ø6Ûx"½FRìu¾~ÁxüªI&¾G˜Ô í]Í—ËðVI/dw㉷,– Bn dC›îî”K‡Kòo'ž;3È^Gtú 8Br&¬©16à¿9®êEüÈK™X¢†WPæýŒJ/½F e,qdÖ±ZkjÓôAó™¥ËAWÕðp2–AýjYýZ`‚~{®°h¹½;¡Mq/Ae2p‘ ™¤›c(Pª|Jw‚6ý8ZþˆHË#*mí%]öšÂP]Óµƒ}ü¤¤§‚°ü³ÝN¦Y1æ–Æª Óæ+«è§Š¯É…áK·w_òPŒâ¼<ˆÐ£ Y'd?ZÒ5K˜À*d€Ñ‹lo>(Ê8Ôc ¹¹Ó3¶á‹±©¶ËE,¼ç&ž£Ø{·%¸¹,*šÔ—§˜lªC¹GPCêrïþ}AþåònjTw‰1w+9éRçš°?÷ä-0l`Çùúƒ—êÝÇcüŽW±X»ŽíøœÃZAC DÒ×€Tì"Kª­m½éõ OÈV°¹+•ý’ÖíóíŽZïWŸö¶¤w®‰ y=ë:]K³gúØPyv_ ¿¡Ž–D„«òW-ý²ˆ¢¹”¤ÈÇ3­óª{és‚˜NvAŽ/O7=¶ÕUÉËzê$&‡Žð¹ Ÿüˆ¾©dES üë,ÕU(¿BÆriwrìâ–õuΦEÙK}ÒÎi|:ô ùÙž…&¾ýZÂøg^™Ýæªxq]‹„ò°%ôâýZâzY nïzÕœúðFÚÿ”x ¡7óx:: F¾¡*.G;æ­À&½®Ól¹|6pHþ™Æð´3³”QïÖŒ¼¸âöj^Ý(yôªY(„×ýGeѺ¥Ï#´ ïkŽ|1oôê¶,›þÁ%F½UKåò¯ÓN¥—¹#–>9¯ôcÜC pDqåCI ™ºzú¤ñÏït(•ßlìKoëȦXé ÷¢úNÆò*m¢}Pí¢4î{/·msoW¥k§¥:ŸÇNóð‹>ªy „rm8à™¨¥±†Žô‚ø¥šo\!H¤nñ)>ÞsCäríÀl;ž›å9‰ˆ!ÚUbèèõÂÐg“oÛ[Ǫ6^éÆÀ@Ÿ-U¹ û&jTZûo«€Bïæ¤D…!§ÛŽ$|}·ž¼¼8T‡X(2‡é&„xš%Dz‚†o‹Ö¡£|§vI ¼¥kqH¥=n YDkù0 oûåL~Qw1*5¶¨!—ï£ãûë"|DÐ%/ÍÎŒÒ\,Aæw">»ÅLTD?4Ñâùª;¨)rv|'{ÞÖøÝÓÎR¥Û¯s·6¥È•îÕ¡wŸh'UÔÄqXØe}ü…d7វٕ+1ȯi†‘ÞáÈHtm}ÉŸ<±¨#Ç¥ÄEÞ­%h@HØHx×'ÕæÐ®¿OWKŒŽ6L~¦XF$¾Ck†½²ZYÊKOœuz¾2’ýÐó4JÔ–÷>äƒñ;feIµ‚é&\ïs.Þ°ž]Ô¸zc77a$_ûJK=ïŠö¼±â~â¹Ìª­P««WØ­]ê(³iÖŦo9;öÁm§w ½­ƒ‹ìµYï ¿,¿ÎH‰òm$ObwZ_ˆ×Y7¥áŒ¦¦‡Y[§0[¹g3\¿ 㨨ÊY=šT"‘ª?–3úšNèe[õ5ƒ‚0Í„òœ ©3a:PÒ'ì.ÖÎФf·uƕĖ•Ï]¼·Ý*ÇS½ œ’sM™nIQæh±¤»² ‹êpæçwAã$™UaîôpxyÖÂ"ðBçŒ ¾ÝH_’:¦«FH+Åk%®Ú™¬àmkœ,z½‡´ûݲm™)d©Æ„ˆÞÏšYRJ†rUýdŒß_:Ùí8ä{%BOúH@7³w†;L£7ã .Ìö™!”(a$—Eßî»36~áQÃz3T’@ýóœýPÀb³-â\v]à‘Ò=¦uuoZçDUXbÍÔËø–]ٌь¾äE I>ž¿)­N¨Ñ…©±¤‹8Û{ÑâGŒ@L£&mÁ½‡9Ÿ„›)õ%_"oe˜ð¼kç\¸&V#Þ“6Ë®Wóå¥é²“Zyï„ã})Õ€‘ &ø!ëÇ8aÙN3eëÚìÒÔáRGƒ˜ÃšûnŒ"êP÷yèû§_Ñ–±×?uG‘-ý¦|¸ÇGBQµ±y÷¨û°hY½n8Ñ·‘ 7ÌØH u{|ÕÆËwõOçÜ1+óù¨Œ$f\F„º+ÃØvQÒñò©¢ñd'.1ªUmƒXwº7ì­jßïvXXiñÉGOIùç|«ºNàsM,"S›L”æ7ã4áÂ' °Ò&Zï÷5س·ÝT»g‰^,€xÒ±—gýô發æËÜ[@1G<1ÙšVSÛl̃;%h⸥Íôƒ¼ÂxD[Â÷|nYµŽ[ ¥/5ø[âVQ©G»b¯Ï,œLD ¹îÅ<;ˆÞ4”Û}1HAf Ò`9Õ«7éÞ6D ÂH`9€õAmÂ}T#”¹Ã!˜»®ÊâäîU¨%ˆó]OÞÌMIv](­Ó}ÕÜDÄç×(ƒ÷° ŽÝ÷ÞjÓ}n;.Ìψšl›Xý#69SÕT¬öËzúYØVʽè§i›•ö!£-â˜NÄ ºúM’‚î* Bõ3 Â Òî¤Úá²:7#kb™“7»!‡4¿=æÄpŠ1<Ÿ¡õí¯ëìce–ÏêPÇJt5Ý¥²j*ÂÄ^‰ƒjò˜¢õ—‘wòܳlgÏ]_+Ê9ºxŠ õÞõ–'t>3Wñ3­ÉšØx=wQKMµ±JWʤÀ÷’bjâÃ$éß•Sˆy'Uì­óÙ|/„åÅ#G ö ƒá(~öo=úéÔ[ÁCn®å~©I‰°­ð‘ Ù,dg…ŸF)ÏX]ðÁ¢<Ç9®CÿÅ«u<ëݘ# 5ªÆq~Së4áºÉV&œ ?ÆöN[-³YKÿ™ñÖDÛáÒzñ'?c\pGYgï˜Í¯eï9@Î÷¬õZ¦³¬ÿ›+;lpà/¢ ö®Öo*Å´š…l¹. Ý·¹ËiVyõ ôhÁuƒ.JN!B 7ã{^Ų¨E ~[µzA"làÅuÓÕHkK;–7¹4Û)÷o;žyfÌD|­ÑµÛñ{-.¡í˜Xy¼Ò}ñÉœd`ÔD¤Í‘^ðE0cìPÂŽc¬ÎŸˆ@òz7«Ó6ìÃæ²¼‹ýðÃ>Î¥qï4ŽGý5AO|>Îx:)cÕ¾Ø×8W»¦ðìèö=ÿU:½ëÜy‰í{gq4 Þ_*¬÷Þg5{&Ïž(=øJJÓCÎ êòbË¢” dËõ!A/ˆ;qø ]ÅNº¼6¾H"<˜xœpNK´vO½£Ç-/ ^D C¹EkÕPG)¿’¤Ù¬|Aã#Ns¤°Aœ,ßé N­ùk˘!‰v‹ª+&øë¬0"YjÒDŃ O™t¤é»Þ¾ÀWèEÄš?­WFDo?½âžÊJ.ztÍç½=Kžð<˜+²æ@Þ6qi u¿têh÷óâ%ÚФ”Ky<;&\b¬jGÖBfñ ì‹ÿ ? MGEψ¥SpJU^¢Ë¶Jw%ÎÅnÁN)Õf'ÃážO§þ e”aŒš¿düÖåµ ´¹UþÒæAq~1æ>4YxaD¹FÉ«6¹‘Þ$y*•5S¶HŒ- QêÅO\­Á&;\.ÃÐl!a«%ÆÃ£Çš?Ïš’ô”ˆõßüTÿ:bÀüFô>KHóÝ4¼UÕö:³"±G衚‰Ì€ñeÞ†µiÁ:ì|¯D b07v¿„áÅð‘©àJ¯´%!öªc]†ãÖ=“¹^çpmÎö÷\Ló›© ÔJg×­|¿›üå%‡›Œö BÞ¶¼Ä™sOþµÞ“#‚!Z…÷Á¯…Â7ËÕüÁ k0Scðæ¡Ãx® ˜]¾§¿á5$7{5»œ¹ìÈÝ8¾½hµ]Ÿnh*'Ý ªdÄ×U?’<´_JìHŽ =­Ý‘ÇßÀ–uÚ3wýJ™ªW/Y€ú&VX*°„®L…··üëlU„ð?gI3¸°Ñ­‰ìŠlp)!ü«Â#§+Sõ(ÑîÇeé ¬Ï(myé;?ç ðjrHnoÝÎÆ¶aÏÇaT8Ùv³0“Æ$Ϋ`³?>ÇrÒ E«ð|¬ïT1ËN9îÅí÷k5 t‰ë·Wµô‘È}F#µ]´€ñÝ_Z”†G"ˆBET²&Ý+æ4ð+)ðëë—Iº£džlg¹›6±WéY*‰‡#|ÅÅ÷SzÁd{™å—ôx Þ@ÿÀbĪüm‘.×ܬ×þ†*y½ ¢ëçU­oë‡þnhNPýºÐ±'W%JеeNpÞ»™ž „aÂß›ä¹P'BÁs$ø>Dá)¯âdë‰J•6aúÞÆ©û_x‚#¿4§’nfZ‰J…ðÁ† ÇÓvRVwu˜ û :,ZM#-˜‘¼ŸòãÐ4ƒ¨®¾-aÏ‹Ä;P/*‰'Ÿ/¬3¢9Ü#„æW:ð¾ nŠ`¸› qÄdß36â³û››YBé+¶déÂx&`.ð¾ÆŸcÁ_î÷öŸ¡jáµúO–§„}b³éHQHG©9ˆf-~=’™’rgçòš"åyLdŸÚxÈ}Ö z¾•;Ç·%WDp±ù»Ek+Žì}±Ò™•åÏPð š&™fÓVê=h (ÊØ{ÖW&-Šƒb;Jwo\¯Zªgš*Aë¯4øñ3„ºn¦÷Ä›ªo‡ „£ Ã9F¶Â LÊ•[m¿ÎîüĪ7yÅ>°ƒ¤By£S+ÅöV* .ÍkŽeߥ3HE¾!¯£Ïέ¶ƒz‹º¸øü¬Sœ u#ˆw3¶H^oÀ!y8ï&…ïú*#(S¯Qäq?×G óúIøDA8yÐÂoøîjƒ1:Z|,ö`˜;èg÷2¨â—£‘!µñ}Ú[#ÃŽ ¬14ÆwHi5£…·G8ñ-—ŠQïϿ栒_¶c°)»„¢÷ë:B‡X%ËŸklIÀè`uþº>7\,¼w(ʹ·m4ÐP"©":¢2vþ*öÂ]WpÕìEÿaë@??%í“jÆÜö݉d£ÇL]_4N¹Câ´n™°5lä¨"†àQ]ÜV žÉB3T')÷pt'ߌwmóÛ)ä ¹Ç‚fÝúJ}Ø0QåJ÷Žã#8Ÿ³CœÄn ^O£üá_SfR ±¶ƒyø’ÏI°•Ä{R<.WSï@ÍC•-®Nýu²CÓLùøæÏ¯C÷Dã^‰ãc”ÃzyR*9Æ)^=ÍW–±w Ž'or†¢G+dC‘cyüDM‘T¡Ï‚>S̨±Ìù$߬EB™Ð^ùÇÛG›}–’±Í¸OŽ6}ÝSd!!PåEí9x4:)ÈþÙ:Ã.í„Í0CÒj‚I$vo°Ä†Ø2J›;Z„àA\)‚‚h8ryüÓo H!¬°‚%_x”9«[¡ÿ1˜X}Ôp«—fYÝŠ2l'nÿ¿7éz?~õ]YåR¾Ø§,é´Ââã>Í ÞœÐÎÌð‰º{Û‹©ñ{³ÒÌXÚÉ=;6ûb >ú˜es! &ªªø!šŸù•yeò|ôÕÛ “î¾gîðͽhºbA£Ò±Çß^J‹„y.÷ÐÄâ¨1W˜ÈXg¹wsºŒÃòuž ‚hÛ+['TÆ.âàɇgW~”['^ £LxÌ%1#ÿ%mßk¢àlT4d9J>i„‘8U9Éþ$ˆjL ésU…òŒ=d9«H{p‘ÄäÍÅùî›ë‰‚ä;8<ùàíhY™×hr!Vx@¡#ùÏÍ\ß?èÕä„ÅØ‘çÚÜ5>õ,ÌΈcÚìý¸1DK–ê'öçfÛ-Þþy/mhÄ-è³àÄÛ>™¢à=A]úùÙn¨¨Ü•Æ?0Ñ_D<à̯N‚OwM÷"ÊÀO¼Û1¢C¡î׿i#d:Ho³ýdaiò–sô&¿ßh‘Õ;qMf~GÛCâíÍaA¡CÏï™ çi¶Æ½>»<¯¥Ú `÷ÉánélOïwWUNÑ ¨M{©¤‡LÈðDŽíîÕü¿ù²=—üÎrS=çoT{µ‡³›;PÆýߣ;~z/¬×k zƒ¨%ƒ@Îô±ÙW:0ü›û;ÿdÛŒ ‘‘ Þ¡ÈzVÁݶäUYšø_Å—ýòš‚¥è³<¿cD{u„ÞצÑç+9®ëñµ7A»¯) ³òC:Ñëå`ÕZPÐÏDn³+äÞ•ÕÒLKk'ò€øúÍFuð©ÃÂ…*’К3€8_¹ |à ^T´Àq¯MÖ ðBÍ~_>v<›ËH—÷:ÍãOfPWIoxøÄ³•Áïøƒs¹oA¿P¯Zå§ùDÕÍŠÊŠÖAêk¨ãëyª†+7cLÈx2zœ1`€IŸX®)›4¾^£ @}‡§ºÖÇ\’ÄÎ{ä¿…ˆc•r†ðÜ'9ú»d¨pwo+ŽîUä˜ÙŒ"·EN…Ü{è3ÁžnàÿÕfÄû¥Ù6}á“^¶áòÕ•¥ëW­Õ—xpZ{6Š ò¿ÅL÷ƒš~ê‡sÉ´+ fƒØ©æatÑ4Ý– tô—Adb,%ŒA¥3]Ôsý=¡+ÍJ$Š-¢#ñAñߪj§I‰ìJ¹÷žiÔ.ñLÀÀƒŠëäé/NEV©ìkÝ"ñqª½zåw³³Pœ²ôsO] ¥ÙÆ@§¬ül½”sT±ßy‚:P UÔ­Ù"îHéÃU>ù¶³H7‰ÔïuÊöX_L«ÎuÁ-1í—|Ãèi@*,eB4ŸÞE"Цxfo:õÞx¡ ZqªûžŠæEÏâ§ÌÏV;gáÄ{z/”° ¿t"ØuyÉ¢Âyùä¾MÆÂZólEFÍìBø1´¸ÏYÒRÙ‰¢Iz"º¦#»­Ø³ñRÇÚ«ÅÞ‡ùy×L"5ÔÏ&n ’|× ¶Â²ò„b8Þm[‹òbUE_œb…·Ó9ÙëÑgLÐÓ*€¢ìÕ9{‡Œm¹A±9T[§†7̹Îà¥z…Œ÷!mbEBæbD„ºýÝ^–ÕqÓƒ¥„ }[Æî7XuOÖ`² ‚øAÎenô'? faTòZÈèõ€Ùó„„ÁzIƒ³¿Ë¼çú]y',)sš½J‚¨`:upÔÛ:–¼Z•·‚)6Z$µ …·`G†ø~`m¦íL´™Ñ˨t†-Ëð°!`t¡¢méûÉÓQàCñl@Êèøq.ìâ·KLÉ|Ã~%ràMξE§äŽ~þ¬äOk—ÊKyix×:@2ý@Àbã×ÐlÂ5÷n”O«}˜Ólâ²Rv˜Þ‰óëc»VhD…yÆá —ý±9k[‚ä8IûJACªÇ‘‡©ôÄRú· +ÙXúšFtcêf%CTÝæà8ЖBËxò“ÎÉ~f’Xâ5Qf{¬ßé¿«@ËÙ$צ’8©±wâ¯Õ7tC+cÚÁ°sD+ç ÁÆ Æ:7·¥ÀÁÍd¶TPÚ= ˆŒPlë¾mð'P]|U$ ÏzTÙ”-IŽØ»ÂÃÖãÿU‡ui+dÇÝú³Påϯïrì…ð¼0Î6ž÷!Þ”¡Ë½gjgÁtÌÍÜE÷Œ"Ïã7û¥ÔøoS‰ù4µ©FJ=¬[Í »®§ #ØMÛ¹[cL­‰ƒ*3ƒ(nTBçËÜÍáÈŸP‚@s²G@ÜëQn2Oûq2˜ybô©«ëXMá«gFáŠün«Ê»ÇLâØÆÎA¥7g0ò‰žcAp_Ú œ/ü"ñyj>É ¾íAiYQhè´Q£újwcôqÑUé(÷cûMÑÁ\X¶ ‹øÈC[‘/^ãÞxÍ6Ü'ZýïÑO>ö +?°$"Es M2?»îéß\—™úw†©€ë]ÙìÁë^¦µh)G ÒZÜX{tÖGØXmäÇÅmcü»ƒ?ŽÞ-It˜µì2šê;í8ÈIãµeJ —¢÷im‰6ŠÍ “óòÙ„Ÿ–ö@¨ïÞÜ ¹+€(ÌÎ{…Œ¿ûƒõ¥ax’øÚÅ\æQá÷sf·qMŠ˜v@QX0a‘³Eìžÿ:·MÚÔlác̾$øvV—á-wSÁƒ±…îÇÙŒ”‡¶ãP— žPøÙ2Õú±uâ—çGS_ÞÆ ¥ú¬éÇøÎZd_‹òIÌLéáNöŒOa/¿ªU}¡Û"¤î‰ Á*/{"Þðµó™mUsä( l~W…»Ú¦)˜XÂiÇQ¤> stream xÚtTÓmØ>&¡‚¤4?)ém4HÇDºEpŒß`Äc#¤Ã %$Diiƒé)ADI%D@Ào¨¯ú¾ÿÿ9ßwvζ뾯»žçºžóz†ÂʶXŽÅà…a"PY@õŠ‘L€BÅD PQ #4Þ üÇNÁcâÜÐXŒì_ UˆÀmj<‘x‹´NL €Iʤd¡P@ •ù‡ˆÅÉjw´-pEÐÂb@7 U¬‹mg'Öùç/À‡ä`22RB?Âeg‡F"0ÀÞt&VD"œC, â½þ•‚OÎw‘…@<<âr!‰¯‡Q’?\ qwþ]QƒÄÚ.™¨„$€Àá^P¢’D%$oqmAÏ" ",ž§óPXÅá•JJåCÓO$@Ô#)Ñøƒ¤È•ßH @ôþ QbðÉ™ˆ?ˆ˜ùÁˆ"†€Ab$ê/(@ìþ‚ÄîÐAbbÇ¿ 4qú  9ÿ0b‡˜¿ ±.ö/(@pAb!·¿ $Áÿ‰u ?à¿ÎIÀáˆÐõ ^Ì?øÇk‚ž ’bd‹¼âPR³]¢Ìâ!<Û#*~¦u=l“ÌtFÉ}^?HUngCìQø[冹ð š%ÑÜï/Í ŽV|î‡Ë2Œ<­9²™òyM#¿»ä¦M»\_oq] ckÇð©Â ÝcS©ŸÿœëÚì`ꂆoEÑ×BûO¤ž/‹œ>ÚNÊ(--vúhH­rjm‘J©rÿ@&·ÛºRÏJ|aç~K—¨ÄTëh¾Ðôä}–ÅÅ3.—7S’>6J2_¾þèç™iTgüÍ´YÈgãöJ/:Kœe´þb)‹ Ëˆ«X)›¹Ô[ðDtú⦑Á²Tˆ€ÝÕ˜YªQm²¢ª)œès²h=¾9saõ;¯ýT슺·²¹ÌÝ”24½Íê×.°÷ ¿æãó…ÒJ8® "9î Å®m®f–œ¸1¹¾ûÖg÷¡‹Ò-òçÓTÄ`ýË:WCçdÆ·q¾7žS'lÌ“ ¨Ow;ffŽ=„X”,g›=µìß¹)GæÉïa]æµ0䪆ãHÒõ°– +6 ƒ5ŸºôÙ£qB%>IŸ»bã½À7ìFÿ|ÚІäâ1ïÖ} 6q]Öï+nY=éç©(;¯Mý|÷ÁTIŠY1Ëí^Æwä®·ìo¸Z8dѦ[–«ŠŽêöeNG-ØÓµZNPc¡öÍ‹¨3–%œ6JIæV‡úJ¸”¹/ÃôŽà³q7CPÉ!®§†‘w2 Çe>RÉZl]H©Ìé§ìC~ #Ÿ¯»²>÷l3Ç÷el–@6Ĭ.s5àËò„œ7 ÷"@ûnàæS÷‹û“+|‚@#C ’̾U~HÚ»K{¼ÃêOáL·à¶6´éBI™ïŠ/zº¶&~ÙÕzD­CPx8.WßÖ˜á|.G_´sG7²ÓêÒ2•hÉÑ6«Üïÿ)‘9¶«îA5Š÷ƒ¬¶ÄãÒ–¹•Z‰«\ŽÀœ-ͧ°8¶·éйzXÞ;~œG}à¢Q áRñ·?²Â4ÆroÆ öüü1ÍÍ oM‚ëŒxÁAKö'Hã0ˆP·òq0†`'“|¡f#¦õ•™ývÔpÆÂШJbX’|a•..@éMFRq‰¥ÒŸéû }¶©Çbû–×:ÕX4VR71scW Ó|>|™ÉŒZß¡LŸjYµ=Â'j´ õˆ<ë¢}íDùxô±W7ÈSS«xª;6¯¥ÖÁë«„[¼y+À‚]´Q•TuÄ# ¶c¹š§Ò󺇚Dtœ¯®¯NE«QÏk^èŸÝcáX˜NÉ·^Ù­€-ÚEÊSâ²kÙ¾ñOÌ)ä¡(ÅÌRsY:—»@XuáªXÙÚRšcn÷GÍg´¥*heR½f+qgfïÍ`]ñü.·¼Ýi†ùˆØÖê¡€9ê&Æ“o‚ô‘•/2ƒÂí©’?3âŒXÄ-]rœV¿>qßúʾü¡Gy½Þ4ØÄ,¤\ºL¬ì;Ýè@C³õµqî ÛïôÂ……ÁZª.²[2—8”xöÀ6¹…þÓ Œ8Áù““‚áb$¸à§–úµ[Ï´Ú¥¸›÷I•Ÿ²øšºÄó ÄŽrÚ·ú¾bÙyû³ö:‰àƒ™Ñ èúpûä…qU%¿ÇžÆFz†ÃéÂ-$N# ïÉ|SIrûÔ EñoŸs~ æüðÊ‘oK:ñ…Jö„äŠáÊÕ½½>¡|†N¼\ÑØBÙìÐ{FÈGéßJ‘ N8Ò1z½úœ’û‹RûoƒçgW䃑äÐW¡ö×o|YN{õ¼I=æ!Ò©Ó/ÒÞ¸,^¯˜tmá‘åCmc¹}rì†)>lz&®rl²ù•‹"•úÚÎÓ]Ýñܼ"ŽÁ™|Âþì³+£æ×Äœ™¶^æ:<9—äYLJ{Wm^!Ú|´ùL€Ú _»GÓ¦cs¯›tJ¥&¤Kï>’„°Í¶ïÑO#+b‡»SpÃÉ‹‹—"ÀVÎ|Èmúú ‰Ž­ÉõONÛøÚ™Ýí/·hmhM' ¸Ôn—Fö0£3//ºb½"î“¥2l}Jå®´ßìÓEŠÞæTð¡ß­#èIðIö{ŽdNæ¼ñi‚ ïz8=ÌÔ~Hs0‰©ˆhûˆ!Môt̉© S!˲4F?“¼Vq16qI{)€Ý\OŠÍ+E;Îqöí «€[Ä'T³–Mç ãÇž§`ç›»ÆaÒ3 eÖì¦O™OYR¹Ùêo¡ºU+DOÿ5AZ*rSÅÃó,Rtewêvk4R®r,Õˆ<ø9ÿ2ÍD RjV¡Âr(\Ïû¥!DaZÁûÞöAÖ¸™w”þ¨S’v¢) •ÞGø`lâï¬Hç3"é3)]á, 5@®"Y¦N¿´Ø…ú½ãÌ#gëEŽÍ/•ê_`¶Û­ñì•Ýó[¨ùîQêÕÔœ¾û…Ùo·ð lÉœïbcïC×—ækkýâ{EOõî‰ÏfnsÓuPèa’ÏòBGÕiŒ”:Yidw‘½³TbØfÏgp [-Y[1åoH£öbŠ™zààࣔ¶Öu$”ÿÑÛd‹·SlåóÅ å"~Ì7p7Lޮ߹vÁl¾ÞGEõ.ê£ÀàÌù ÎeÀú¥^¦îøÖrqãë–Ïg}^úI¥ëŠÊ¦î•µ—ïMV?%‰;ñÆò¶€—v,–ê:ÉñsÁÊ!ò á~aEtæÉkÌßíj¶în}¿Àí_ðJ®x_vQA]ܲ¬•M¯r`®.=:àˆ¢Š¬¹ÐÍ×W™CHêmØÅ&PµÌª†rz0fŒ3´¿om RåfŠ8w2 !ÈrS…—.|;ƒ¬ÌùVÍþÞ9-š ž Gîòª ŒËy˜½/§¹Ú²lðÓgÇK[>™ækÔ`²Jb©7НM¥«}>‘*h*mtugÇ^™ÀH%,Ÿ­ÖÖ,Ç ï\N?C0Ø/"yùñ‚Åv {Å­³¹–ˆ¾Ü'ÒÓr}Ç"¯ïà+‡cŽûé‹]œÜk‰•ô1óšŒÇ9T`¿` ft#ödŸ}Þ$Iîy¬•_bë5¬ ’¥~HTj„‹¦l{¤2dõMy-Ä%¤&úh#%+kÝ5Çiþ1-›J}'£§`I£ŸåE;¬&Fc¦“@†/{ë¥må_TÅÄiÞÕ¯Ób•æýÊŠU¬Ò5*ˆ“Û¹œùUì±²…ñ¾¸•NlÀÜÌPrË ~&’S­:ó9ί:¿×K…Güü€›×9«LÝšžz³S¬zc|-BN¬\HgŠì­µ©ÚÂÎpÎ1åR^ž;>}Q—1Z$ÐͤNúµrØ-ŽoµÀMF?¯Lá`ôA;ÏÿÝñíÙö•¥ªH[]ù’Àw¸©fØ2Í3Áææ×”ÖýåyÔ;=ª£%d¥{(ös«| …u9Ñ £é‘7§vR¿Ûú[‘*¹´.7Rª¼çmL„¤Å"-Þ¯<²˜EHéƒ8wꤺCßV#ÅÛýö;÷8çcyÛ¸òM§Å7Í©‹GæßœŸe01„g&ÌCÞ¸ª/¯uÛªãÜÿ*¥2žÆšÓ“@Ç×aü ßžÕÊ©Z8<«!)-•êZ¡p…ßryžïÒO÷Ý¢ÈNÅÈÐKø˜×åº,žÑž¤==ÈÙ4½R jZHfŸ–Ýkô†Í‰ãJï5HÎ_?uƒûf­‡‡Áù;Î9Ìßo7· r&XˆiÕµö™ ÖM|›Éܾª']zŒ:•í@½†¶-€$ƒ±ûÜLš[­”‰òæ©/ijß&žNÝÇ2¹šÎú9Ü®?Ë^€çóÄÖhÝz{þ¶âky†ÆÄ"7uæ])KëSl6U5âƒq¥lÉZ€·Î©h®/ .ë ÊcÇÏß~Ð^àF_~d”ŠÚÔX!蜙®[‚:åà‹¯ÌžK¿‰Ö*`úÞÑ1|«Ð¶Œ+Ü7pI–Rl\é~yþñí L°NÈPZ>fÜŸ_iÅ«úˆ±Œe8¶c£ûìÆ,’b1›q¼SçX5±û¬×3CËI·Ó=; ’WD‰t|°Në¡‘((¤vHލ£=Ï$¨éGÝô¼U\´Uѵå2´ÔÆ>Öm/ ðˆ¶›¹ñ5”3Ї{ú“îüsäöÊçÔ3tçÄ®$4ZÖö|!\jh¶QI®»è·ß'_”ë}•y‰e4ƒƒgu¹·ÓÚ“=/Ó2#ÄóÊsðúÍ^ᛥ=ØþÜÑ)c%ç9,ÛgÝö@»í¥†97á ºÅÂõ7hɨç:#–\i8O~·ZsPMW'UÍ|ãd·vtJ¥Š›´¸UëQ:á›Zm:ûÌßñ¼P¾ß+ä_ù2ÍÁûáI—Qœ¶µy¨§ w“ŠfñªXžk‚âÔH[Êg;¼~c¦Š´{4€q¸ü­º°ú…ó™Ä“›’æ¤C_S%ÿÚ‡ [+Îs35M¯¹ »¬`jËûÍgÖüªG¬²ÚÈë>îpú­|îp¤._)|¨'ø ÷}Ùz{ôXNñÕüY‡ìUM¹%½[Gpÿb­3 .¡Ò K’(øj>ÇqNðq^üóÙ©rN¯—öIO6Ÿ{ƒbMr³u,×nïMßuð_i¨aÉ‚|‡˜ >†^§|/d€(S §äÉ=[…/µðbEÔFfLÊaò“™;Ç™Ÿ.ô4æPo2¢ š¥ù×®§wÕ#¬#%‘Þí­¼Z!so‚n&µüDZ£”®¾Ï0½dO£o µéÞ¤àqùòƒW†¿%­æì8í±…µK<=ûЭ‘…nq–Ti&Ò©ž%…×GÛ©Úè…ÞYUC¹­³°™wÓ\{$‹r¥¢ùØ=ó}Onõúwÿ»8Ê0iåZ÷à»Cr]~qß-{à@#fÃXf¦$qŸDn2örŸZ¡ö Ôþxý¬­j5ø0½®5Ú€#rOžè[îH²è¹-ˆpt ¾¹ÁÃÊÚÐY¹3-¾¡õé~lÑÇoÜB/%,ãj e:èÇQ0žY2»c»üÈ•‘Þ¼…F/Ûv^%¾„¾›MoZ·tîѪ¿n'E‚Ð_R² ðÀNÞ`1HvÇŸä[yOæ7&‚¤Çº¨À¤]ÿZ”þ˜¤£>ø¬ßvÖ±ھḡ›b¢”¡-§³|ÖPç8ø ѪiíÅIV|Ì÷¸Îʾ¸"‰#ð5[1äD‚A{ê1|N‹£p{«¸Zƒ%L$æ1¡"·ÈœEÞfz yû‰ÀÚ[èjrRnÁÚ¤‘»hoæíE «@F–ú‰:Ýg çúàRö_%m½ìk³sšt]ré—¤9Ä:ú(¢eæ( °‡ýV ®AÜò9ñŒ7–¶Tq™×–îÂVùFºÄi¨…e:í)£Ùx¯j‡†Ä“lŽÑð)@/›&~ù$» R¢ó¶jøfP‡ÒùýÆú^HÁð[xUVZ7MÄlƒ†ø¦f„z‡p“ÀQUôçÆO×D·Ùs”\ø>ÿ¶6›h ­{oÄZ‹‚]÷ø"NñFI÷jYsÌ%Z÷²rαòqã=CÍb”–!`Àp$í³Þ Å—ÑÙõ›v×ÙchxÇx\s•xô¿+Ý6zå>ŒFl}-×c`j;Ûwƒ)¦Ðìô0cHÆÊhçYxÑÔ=·,ó÷~D§¢òìÙræ6gþŠOãþ§æƒ ³^磖ÜXOâ'—]j÷®™uŽÀíL×&ÎŒ;n#Œ']äS/Ex7 ¯‡L†ÿEƽÁ endstream endobj 172 0 obj << /Type /ObjStm /N 100 /First 892 /Length 3518 /Filter /FlateDecode >> stream xÚíZéoܶÿ¾?¶x°(ÞäCPÀGœ£q’:v.¿ X¯[Íîj+iã¤ý›!µºöò:i_ñPÀKQÒp8ó›ƒC‹F“˜Ø˜Hh%1ŽXKƒŸ†Ÿ‚Ÿ1„뮂çà*‰xUD; WbÔ@1Âb%ˆãpµŽà+Æ.†±LcGÆc ¯¸ÖV&„ –0=³p£%ÐXŽOÅ€¡8終p4Š.¸Ÿ:(!Ã'~>M¸È=†ŽA~’pÅ ãhÁq*G¸‘|¢r zƒ$„;†ƒ€ŸîL?°±€Ž‹¡c°£ˆ`ÐQ’®aÀ&D ƒ$<Â@è!I¯$ ê Êw€F+šÉH (ICÿT€¦R)?ÐÑbÀ@© Ò(¢bŽÇš( ÈóØå vÑxpÆÀ<øŠ b˜ÆŽ"F 3ÄX4+ÓÅ8sF,bʹ Väœ+pàÁ3#4`K§ÀXpo@ WC¤Fƒähatœ‹jfÀ´B«ã=bë­ ƒÎâšÄ`è 1ŠW?àd=í+°¯ï¡ñÐLI6``B GÿBaZ£`83`S&‘Îrt1ƒ=t-#R£g|è’8!ÚZøq”‚žkz ¼ èP.½ü8B¡D1ŽPà*h`‡Zqƒ0"¹E„‘õD'çN€P’XŠÁƒzD.0:brJèÛwïl/aXLçãñ‡ÁO?­£“BEà@ÛÈ„Ø`@IÖ›õ8›–äÁB•"ý1:n\õ!NMÕõI‚-hœw¼Vôež^%%¹ ôåÑ1¡gÉ—’Ô³œ}%ðbx è!̘LËxY> §I‘ÍóQRøÌá$Wéð ûB.P cÿÓ sëýÆÓíO§°ºðÙ eA WU]ƒR=Qü¸}5¿,ýý³túi@²ü*ÉÜñl1Å"&…ÄAœB~`="¥‰ ÆlßøŠÐGÙYFúö¯&é4-Ê|X¦Ÿ“ÿÄ2~™§ŸÓqrüˆp­’eõä\™óè)˜\1¡/Zû¡§id9?}šnÊrVü›Òë´¼™_F£lB/'Ãòdj“éÞ¼ ãô2æ_éå¥QÚq ‹Ù—Ý£@C"á˜X´„¬& ÔNÔB…Ò‘ÅZÔ9XÝD2öý]Bõöö»JfyöðõBîçe:cÊ3N[z2ü”N¯÷Þ?ííÏfãti;›îïîícH²°Vh(¨]‡Eœó÷Áï¶ðòÊ`‰®Ùª¤ÈWòÌELÈ•+êÇôzžƒ\¸ìªÛ¤Ÿô¬Úžôz4JëHo§‚T†%ä6:aaaÝJÅam€ÍÄýk&àg—+&HŠyê›2¡ãK™ÐÅ÷΄nçLEzd,ntD¤ Ü† Y„[1¥Šn§L‚Î>ûZÞdÓ(˯iß[Ûî-÷ QPÙ1½•L Y¹NHÈX±þ>Îbýê›ücy¥t»­”mUï¯÷ °êhÈ“Ûè8äS«Ô6:ØBÁó›àBB‰ƒ?ÅÀŸ|OÄ oëY¸ožb• aÃh" yG¼¢k8HÎR/DÒî ­…ý‡«Z.,¶ù*Ø(÷Ú¿‘"ŠÁæ4g3ÆÏ VãŒÎ4OOI^ pÑêȉ‚pO+¬§õ-RTÂ;OÍë™îúãm^ŠÀUzCôê´^ê r[cÃ[72Wb¢$¢la‘ Æ#\ñ }©P~o/íÔ°r¨Š¯óÈväðä5"­^K¯` Åë´û"ÆÙ<þiÛÊÒó OŒkF6Ô¡^3aÑBß Þ}ô(Žûµ?í3þ ðŸ(U^ÜVÕnÑïµƃ^ÁÓê·àñO+W Oyãr\Õ¥Âyx<€•û¶ÞVn„}PÄsóWÈ‘,n|õÏÇñŸß_óCKÚ–»„üìȶòXËõz?tíÊUñ®—e] güw"&ív’l¼})ͶÓàŸœfC»œfù!=µ4jQ%C…Š+1ÉÝ"Õ4zâÿœO=žOx–¢À=,mðŠÿÿEâ¨ÚÆ'0q ›áÿZÈ?í½ZÀO+ ÆA¯òž%p1­`[)pÔØ_×Zé°¦…Í –Tþ©Y¼‡@µxaÀ+<_ðæ( ìÃŒ:ô*éïe‹¢Å¡îm–ð.mű%™×ÿñTµxt5°—· =a4–:K«K% ñ‹ÔC…9¯¡……H5*Â?wËÀ‚GCpkëľ+%0‡±˜Z-=óÂV7tCʧ ˜§F[#»)ç™úB¯Ì3-ûâÓŽÕ¶áI°ŠWÓ†÷R¡FØÊJÍ»€PèW-Fm³ËÂÍÄQRŒòtVfyØ\<NàÍóÃ7§¯ÿuxrð–qx1^DŠ¿ÙÚS‚ìqü6Ƅ܆ÿB)F¸å‚rönÃÙã$½¾[«a“„w{ _>)‡ãt´?½'$†½u™L^ãG«}[ ‚T~~èžLü|4™\ ‹šLýe)t>fóÜÇÏÍ×Ù DC;Œ¦)DÑ"–fø_?­ï…Iƒ1èï›"Íß5ÏÛá7IƒÌM c”²¤åMž$´¼ÍÚIÿHò¬ky¹‹åž?}ôö,ÿêÙ:ÓëEt2.¾É—]œëmVMçþÒÕKï¢×ûý÷G/÷½^ggë4ãèÔjfðÄLK1Æ:Šám­ç|bœzè“tZ¹Ñ ¬lOÉRë³ãç~F%_­5^•ˆð ŽQn½íðöakìÚe Cö¤¢¯AçzqJ«i±ͼ»—µ;/¹1ß)%ïÿrv|xŽH¼[kl†ÂOšxÉÕ@>}¿”,ãµæ¾œCÜCJóÑ8e³¯yÙUo§ü|~öôô®¡gë×PUG©ü^+Ž]¯^e× ÍØUl§ôstþøÅÁ TlmÊ£xÀébônëN³ê<†ugݪóÖ¯;Ãb”¦e:¾Jè°ÄUžª·®G­•è÷ùpL“/£ñpâÃÄWn×y2„Uay'E±Û24Ï‹ÖZ:EŠ˜ì´à̧WI^Œ²<Ù´öðrô»ÓG¿¼? Æ_SGaöx²P♹o7¾Ú`ü‡`öojÌ[èÝ×|S?‡„5ï*¼&_·>¡áC˜é`X$þ{ÆÒv£ƒ?'è?õ§yQ¢|•{6\Ü roÒ«ò¦ð‡ =íYv>Mñ›3a»ËÓ/Ð{ò0Ö—GÙ–b•}xc¾Ñ>qG|¾ÊSxcÖ3ÃbtàÅV™5f`jãèŽQø*£°Æ(Œ­æF¯–¤Á7Þ„¯fAº]H,Ê»½ãÆ q× ®ã¿ñ*eãvçÖ]¬6Aتvê0rµœZɧºBWãíºpë6^¶]*Ô€bµ W[Äv b;üW(ekd­X9Ò+eW¸³­a5n½N¦ «ëä°Jœ `5Ú65ôFm˜«m[›á¿z*Œ³ endstream endobj 242 0 obj << /Producer (pdfTeX-1.40.18) /Creator (TeX) /CreationDate (D:20180911232623-04'00') /ModDate (D:20180911232623-04'00') /Trapped /False /PTEX.Fullbanner (This is pdfTeX, Version 3.14159265-2.6-1.40.18 (TeX Live 2017/Debian) kpathsea version 6.2.3) >> endobj 232 0 obj << /Type /ObjStm /N 14 /First 110 /Length 836 /Filter /FlateDecode >> stream xÚVÛNã0}ïWø ú€ˆsq !•BWº xÙEÂ4NëÝ\Pâ„Ë×ïØ™÷ËîK=¶gΜ9c× =â‘껄Qâ: BâQ‡¸žG<Øw=Ÿø¡ž$tŒŒPè…Â"Ús½¡a ]#0>lSÇ&Ô zGG½Ã©RABòN{‡CÙX×¼¹ÒéÛi)MÌL¾‹EÂÐLŽm§ƒaá'0 ãmÃ0¶‚ñv˜Hd³év‘A´éz6ƒ ´p¨ƒ®cYVjÅî’Ã$Âü£¢¶ž-¬²»³µD©Mô;ÏDE~ìÐ>ñMÙ׿ 5]0£Öôú$pZÓ“¶f¦©ò8ÊLª vî7“0pöÚ¸L¿5‡ñ¯ºR0ýéøNR”z8•I"J\»“UÍSmÍTËB[çy¥xšr%‹¼ê“Á Ëd.+UÂF#´ãu)™Š…è“¡S­Š æzÿö)æJm !û'bÉÙò(ƒ1üv6ºU*”ô¡ÿVý'µLc™/´ Ïc« \¬s@í†:Š<‘‹ºÄÝ9N¡†åŽêDš¿ÉD¥=Þë*µçvÎÔ-ßN-Ŧ úže"^qÕ?žËDT¦!2·d Ðj],JžAN›{–7²,ò®»w¼”ü1•ÕêÍîB3M™¿ªÜåÛêÓX榲@má'ü7¨› ]J>G¡‘϶õ8¬ªb.QNê¢çº3<•ofCû=Kµ´T¼(J³<[Š4 Vq;ÄuµMäxýª–&§‡Ç|r1Óëp·xÎê$‘/ÚšÖ©9÷”mÊý™_„ÝðQÔE¯Q6R<Ùƒá?1ásȰn¡hä‡gqŒmAMZ,bÖ­¡>:Më<_¿öEz¿9¾¿©Ìz_ÚÒ ëŽÁ§\*a10)‹ÌÎ[dV| ÝÓäQᇼ¡{{Ö1öÑÖ¿Ù¿òú{Uñ…ŒX(h.úC¡Ž!ŽƒoÉ_ÓœÂa¨ÌÇ…ý¿> r8âX,ôk¸Ú¿ ®j7ǬtÏ£éŽë;Ý빓"ˆÛJtÞûô’™ endstream endobj 243 0 obj << /Type /XRef /Index [0 244] /Size 244 /W [1 3 1] /Root 241 0 R /Info 242 0 R /ID [<6E051D4EDC86FAC41893B72F635AE72E> <6E051D4EDC86FAC41893B72F635AE72E>] /Length 594 /Filter /FlateDecode >> stream xÚ”ÉRSQEÏy¯b¯;ľ!°‰‚ Acƒ$Š å8´Ôrj•ŽœZåH ëLô(CǾ_p$Y{²êì{_sÞ>û>3³ÿnÖcnÙj…ºefÉA[v~GÆ0j`Ömèµ6nqݹu½ÐÚ ²6‚N° tÍ - l= l}`;Øv‚]`7Øö‚}`?(‚à èpKýú˜~ºº®"‚Çà9k4<9tÝ16…6òªÃàxÄš¾÷(‹¬eTºwª*»ý^S5æ^þ¡ªâÞ|¥jÜýMUÕ„û·UUU÷_ÿTMºÿý©jʳÒgUJ‰Æ3ïYó-k9ÿÃr Ë1,Ç¡œcšïœ<çÝž-¾4Ï–†mòÇ•Í endstream endobj startxref 155187 %%EOF units-2.19/winmkdirs.bat0000664000175000017500000000664212313010047014565 0ustar adrianadrian@rem create Windows installation director hierarchy for units, @rem a program for units conversion @rem @rem for Microsoft Windows(R) without Unix-style utilities @rem tested with Windows XP SP3 @rem @rem version 1.0 12 March 2014 by Jeff Conrad (jeff_conrad@msn.com) @rem @rem Copyright (C) 2014 @rem Free Software Foundation, Inc @rem @rem This program is free software; you can redistribute it and/or modify @rem it under the terms of the GNU General Public License as published by @rem the Free Software Foundation; either version 3 of the License, or @rem (at your option) any later version. @rem @rem This program is distributed in the hope that it will be useful, @rem but WITHOUT ANY WARRANTY; without even the implied warranty of @rem MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the @rem GNU General Public License for more details. @rem @rem You should have received a copy of the GNU General Public License @rem along with this program; if not, write to the Free Software @rem Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA @rem @rem @rem The units program was written by Adrian Mariano (adrianm@gnu.org). @echo off SetLocal EnableDelayedExpansion EnableExtensions path %SystemRoot%\System32;%SystemRoot%;%SystemRoot%\System32\Wbem @rem basename of this script set ProgName=%~n0 set Errors=0 if "%cmdextversion%"=="" ( echo %0: you must enable command extensions to run this batch file goto :eof ) set args=%* if not defined args ( echo %ProgName%: missing directory echo Usage: %ProgName% ^ [^ ... ] goto end ) @rem protect parens, e.g., 'Program Files (x86)' set args=%args:(=^(% set args=%args:)=^)% @rem separate directory pathnames into components for %%i in (%args% ) do ( @rem strip quotes call :mkdirs %%~i ) goto end :mkdirs set installdir=%* if not defined installdir goto end_mkdirs if "%installdir:~0,1%"==":" ( echo %ProgName%: pathname '%*': cannot begin with ':' goto end_mkdirs ) @rem tag leading '\' so it can be preserved if "%installdir:~0,1%"=="\" set installdir=:#%installdir% @rem tag spaces so we can restore them later set installdir=%installdir: =:@:% @rem split pathname into components set installdir=%installdir:\= % @rem restore leading '\' set installdir=%installdir::#=\% call :mkpathcomp %installdir% :end_mkdirs goto :eof :mkpathcomp set drive=%1 set drive=%drive:~0,2% @rem protect silly stuff like '()' set drive=%drive:(=^^(% set drive=%drive:)=^^)% if "%drive:~1,1%"==":" ( if not exist "%drive%" ( echo %ProgName%: drive '%drive%' does not exist set Errors=1 goto end_mkpathcomp ) ) set pathcomp= set pathargs=%* set pathargs=%pathargs:(=^^(% set pathargs=%pathargs:)=^^)% for %%j in (%pathargs%) do ( set pathcomp=!pathcomp!%%j @rem restore spaces set pathcomp=!pathcomp::@:= ! if "!pathcomp!"=="\" set pathcomp= if not exist !pathcomp!\ ( mkdir "!pathcomp!" if errorlevel 1 ( echo %ProgName%: cannot create directory '!pathcomp!' set Errors=1 goto end_mkpathcomp ) else ( echo %ProgName%: created directory '!pathcomp!' ) ) set pathcomp=!pathcomp!\ ) :end_mkpathcomp goto :eof :end if %Errors% NEQ 0 ( echo. echo %ProgName%: one or more directories could not be created ) @rem needed to handle invocation with command extension disabled :eof EndLocal units-2.19/UnitsWin.pdf0000664000175000017500000040173213346103540014350 0ustar adrianadrian%PDF-1.5 %ÐÔÅØ 1 0 obj << /Length 587 /Filter /FlateDecode >> stream xÚmTM¢@½ó+z&ÎÁ±?tBL$ñ°ãd4›½*´.‰<øï·_•èÌf’W¯_wÕ«îrðãc;Šòê`GæUŠOÛV×&³£øç¾öƒ¤Ê®[vïÖæ6ïWÛ7ñÑTÙÖvb¯“uYt/N¼.³ó5·½êÿ¢¥=åS‚> stream xÚmTM¢@½ó+z&ÎÁ±?tBL0ñ°ãd4›½*´.‰<Ì¿ß~U¢Îf’W¯_u½ªîvðãc;ZäÕÁŽÌ«Ÿ¶­®MfGñÏ}í I•]/¶ìÞ­ÍmÞ¯¶o⣩²­íÄ0^'ë²è^œx]fçkn{ÕÿEK{*ʇuÄpg6;µÞ$4»¢;»µgZ8, ’ü²M[Tå›P¯RJG¤eWxm½ñ­ž÷ŽE™7·¢â žÒ"/²îÑ7»¸¦‘¼ýj;{Y—ÇÊ‹"1þt‹m×|‘£o¼irÛåI É‘c¶×º>[TÒ›ÏEnn#×ÛûþbÅø¹‘ûÒî«¶BS¬ØEVå¶­÷™möåÉz‘”s…«¹gËüŸµ)gŽÏR©ð133wÄ xAÄbêí;¬ÒaGL6K& 0+‡}&ö"?‘á°(Ò¦Òa/ ¡cì,•!£½¥‰î-fö3¤Ù*IÃx {aªùð”sIC%ÒðhSô¢¨7å£Å}­HÏ=ŤIYƒ¹(îƒêjŧ ÿZóéàü4{ÖØSOØá5˜‡áZ ä®ekxvKº·Ǭü÷…Ü@2aÂ> stream xÚmSÁnâ0½ç+¼$z Ø¨"¤€ÄaKU¢Õ^C<ÐHàDN8ð÷õÌŠV{Hôüæç=üúØS`¾Jñ m}u%ŒÒßE Y]^/`»w¦¶oâÃÕå:1L·ÙÖVÝ‹omy¾èUÿ­àTÙ ÖÃþŽv¹Êó‘DM^ug{¦…Ç‚° ÉpmUÛ7¡^¥”žX[“ÖôÚã{=1î+kܽ¨8 …@iaª²»¯è_^|Ó˜¼¿µ\¶öXq,ÆŸ>ØvîFŽ^‚ñÎp•=‰!9òÌþÚ4gÀêBË¥0pôùÞÞ‹ ˆñs#P~k@hZ+vQÖÚ¦(ÁöA,åRÄÑf€5ÿĦœq8>K¥Â_¸—žX NˆHæžÐÔ3$¤Çž˜{<Ý0Š*¢5cÕ~ÿP÷õʯÂùÝ5WÂ42^!ž0^#žrq‰xƘœE„3xÎü ñ ªz“)cÒgl1BÌîÒ°õ•?ŸXqû!òŠNA‡¨Wš»A*dý1ùÔ)iȧΰÅç“Оó â9ç’†NVf¤¡–kô¯VäaŠžUJü†ôì?%Íš5Ø»bÿTW£=ј«±®–¾Œ¿É5ëñ2éfè&p2pj³V^ócH£Mc†VYxLS7˜E=›þ1âj· ¾gÈÈ endstream endobj 6 0 obj << /Length 355 /Filter /FlateDecode >> stream xÚ…‘ËNÃ0E÷ù /“EŒÇã綨TT e,¢¦-–J"’Tý}츄¶ª@Yø‘;÷ÎaþbÑˆÔ C–Ÿ nÛ ‰›ÇY@î×?%yÐäÜ›ü£ô©¹Fê œÉÕá„3ª¤‘¤X‡¾¤QTZªÈk:Ù¹måêM–£–iYWqs[w}¹ÝŽ?f÷ÏÙ{1÷nòØ R¼vµë»ƒì$4?èr®¨±6ª›:Zß¹eÛtͺÇWWM†î»x±wýG0õ)'õgu ×íÊmÜ?õ»Ê5¡(™É×È' Ï5\ÿp h=Xßf»"ëä!"“’xˆ–Y†TŠj_")W*¦O+×»aÄ”‡E¤ë Ò¦¤:¶PÂ;˜ œÎ’8åzÄ¹È ¦«¶û¡ F¼ ( ÏtÀ«qè0LPЇ§¯Þ`$rÝÔmY]$þmð˜Pkñ‡È7“X§÷ endstream endobj 15 0 obj << /Length 342 /Filter /FlateDecode >> stream xÚ}QËNÃ0¼ç+|t$b¼~%¾‚hh(Ê!$ik©QTˆŸÇŽ$„"%»ãñÎìu MQÊ9Ñ"Cå1¢#ÚîP(—œy‚3÷ý—’HÆP2›v•G— )P¢©”o½¸V@y…^p¾7]œ¡ð±hb–á¡8ø^â ßÚ6oƒ‰*Óì°|xŠ_ó;'¡æ 4áZ:K£ÂИ¾;ó~Yq>…N'Ú†Júá Ômglå 8:™~ð{S¶¶³Û>´kÓýØ^õCelÀݧ‹FÉ´Ë8ôf#8çøÙ4•õò§ŽŒ—¨c+2Åtmßýágkv{_ô#G ÂRŽ(áL^Ub¾h åî÷Ìx ò¯L@)Ô” £ ¾Ü+ qÆq[ס[yïÞpÌR\´õŒc‡¦*z—âEo›r\*ºÉ£oî ˜À endstream endobj 29 0 obj << /Length 831 /Filter /FlateDecode >> stream xÚí—]o›0†ïó+¸L.âùãݵ];mWU•iÛ41BZ¤">´õßÏÆLÄÚ:-]§\¢ƒ_sÞLJcäAùCž€'xÑnëó{O_ܽ!·”K+òr5{u؇ P oµñ €àít«µ÷iž,¾¬ÞÏ®Wí< cGAy¤`q€£JQ®É(@„jµÕBÐyøm/–„³y¶ÑãU–.š—± µ&=„úXM%ߎb)Ö3Ýæñ&Œb‰``‡2 È'êÈ׋%ò¹üÞÝoþù¤“÷¡Ò Ê}ÏWŽ|‚“&zi…·¬t®NZ›‡Ž¤Œ2Wi}BZa Àת—U²]'齦s“g;}U>p?&é:S¬~/‚w»0]ë›[ùÀ¾D“¹9„8bs,ÁfU® î§l¿êx‚ݤÛOJË3Îä­±õ]”¥&smÖn’¦,\E&¯ÐeªÞqSݤ[S¤û ‚T~ì©ì`X˜½œe¸ÝêrIÈüö±|hö¬OìÇ(#gmàŸUøË=B’j.Œ…§¤†‹.|€‹ÃIG‘t••‘'$[„IÙGªºr_åŠÆš@æ÷:`(nKH% Pñ5ªr°â•C@ þE^_,šcÀ£\ë§€³ÝÎM¶nR²Ž 06e÷úG¸Ûoã!xd•hðžç¤0‚nc¹#ºVøº=ŽÈºŽ² ÝCÉ£^Œú Š´Ú]•¦íé¦=Óô;´Óí˜,Ï>ÁgÖ4`Íë;6`VøDÖË)kÀ¥›ìPz¤1 84 ½² ʪ¶3GVyªZçSÕ¡YçÓ~ÑBœø/®EÛø&Í®¿ ŸÚø¶wtpã»ÉÖR²Å…À˜‘¼¨Êl'Y‰4 =q1„„Ð]عñ¯zŒs®váSÚ8 8%û(ì¡ endstream endobj 81 0 obj << /Length 2695 /Filter /FlateDecode >> stream xÚYëܶÿî¿â¾Ñ!·²(’¢”~©í8NR89Äç´E]Ú]í-m­tÕÃwäïúŽÇÝ>w8·-ÿº›="óµÂdï¶›úÎ_çõÎo'~W § ªµ‡“H¿Ë’ñ„Ø+¸Œ Áø2?"ŸÕ ߢÆq²Ï\ù¸4 ÞWöaUÚO“¥¾³¥íløQ‘XpÇa°N›á„m† Hƒ¸ŽÀK„\s.à'¼{ ŸÚàÿ{Çb︶ù¡`€—œX PV ª' ò–ÉLÊjªÛŽgã= ŒKícÛ„Uö”,p†höùcvoìÌž?Ú÷®Î® ¨KfáWŽ2³’ß f†‰c¦$ ¨BLu­]§k2¸aÍû¡lðÁÒ„Q"Ž:DXÕ®èÇp>‘‚q ¯êWû8¹¦jÿz*3©OšT—|÷T]õ©™ƒÚLzG35¬¯©ü6X,W_»!v)'üŽë]øvZL$RA»¯{rp£§VžPD?-æ|÷àã‚+~Ⱦö]ˆ ™³ÄçõÞC—ãŒ3MmhÌES?Ý ö‘¾›¶èK…a”†™ùSÑ|Vß.1%¡LÅ<¼Và ¹/ÖÁóÿŸu\\}éZ™ëyÞøÅà<ó`ÃA^êÑd¢ü{ ¹gɵoÿyƉà³mꊊ82ÎúEŒ´Žù˜¾4Á·¥ãÕæzi¼-}Þ(K®=}ï 41yAO®{DeÐoÂô1Tb¡AºI¢©n Dât(õ¿+>å &ƒgôt@ÏÓž.dEþ€fêòbA@”Á‰aqpbïê’Jv¤©?z‡©:o:ž¹f«¿rù^@[‘ÌU0@XT,2W yuëzíi«¿”¬!7ÅJþɱ¶î›;` ‚x õ"k®ÞølcÄi·®L<ÆeÄØ+ãj¹1‚Ým±Ë{êaµœ¼ä®…p¦#ãY~ÍŒ‚o À|äÒy  ÐÕÀK*ܾNý îu[´P¨¬½¶–ËÍ´Ê  eR¸JèIƒæ SXá_OaàÐÛ=•Y«MiÉnŸx£®–°‹¥ŒMuxQEôD€W|ÆY4‡1É̯_8 cB2Å^n+$4×JÏ’Ãp)]4>¦ñk(¶G€ÓÎæ§ÝW Ùuèæí]–»g¤|{°6,yGí`³tgÈCrl÷bc„±–óàýL*"-=APK‡OÚ`áqñPlúŽ» Z  Á(¶y—»E(÷EL&i<ñ]™oŠ­› èÃñ¤­ýƒÈ{àJˆ$ n-WÈDhãKÞIPŽyí+ˆw·M~ø|¡Å ô!M°úúêƒêÍÏïñçÉ! ‰ÒÁ6àHB»÷/’Šû h“·T‰iRçDbÛÅÄCÔVb³Wߢ0N^IÍ8˜È~–è&›ŠB €fíW¢ðUL&:ñjMO‰>zo€zg;\q±ÅñV±LÁèˆ.ء۠‰ˆœ+.¶§;|fÐõô¹t éþaµ^Ò“‰BÉE[žg@(‘•–GŽ!2(hE­Æç Ÿß:Õ—ü–¶!¦ÃK½/îTPl¡'àçÕ%í'"„/þ¿V…ÁµÔE“&$.Ïø TóoCQH¹˜ÇZž¹Îrþ{˜ =@DO ´6~ឣ!Áð-—·=Ï8µD‘óDrö4òXm,„cgr Ì·$MâÏ3ÇÎ[cùD|éäÉr-“¡–ƒ–¯_Üü°d‹“™òTÇ5¼Ó°™Õð8è^”]Ñ ò9…”îYŠxj¯d#˜8 MvôG5†¹KÎ 6ðɦÛôÝiYJÛwÓP>¶r˜]géÿäTMØbçWýoeÇûã?ô/ÿŠ„ÊF endstream endobj 87 0 obj << /Length 2310 /Filter /FlateDecode >> stream xÚ¥YYoÜÈ~÷¯Ð#дØ/y°õÆl‰v÷a,(’£iì 9áyþ}ªºªyŒ(YB ‡é£ØÕUõÕÕ’W!üÉ«,¼J´™I¯Šã›Ð­¶÷W4øÇÏo$Ómp;£üpûææS]ÉPda&¯nwó£n˫߃ƒ=”¶¾ßüûöï@Ïi8 ‰r¨mß1ÙâH­„J”'kêÍVküfë²Ù¨4xèpÁC‡lÜÞ[´M×ìzšþj»!?Õ?û¡´Íf+µNÃ@!¿7?ÝŽFJ½PHùH©º’‰P22¬‹85BjCWÿ\45^6‰‚¼.iðÉ*½ï:¸—–AaóÞ‚˜+ªõëPDRÑ·{øVÅY`ë®ÏúVÒàÔÂa ¢ê:¢ÉÝù¸çWÝšAdlDj²[DŠ(N=Y™÷9±øW(Í¡êè¶ßÓr×\á–&"2‘?¥núê”—k쌡Ҟ°*mß´ïàè, Êf¸;TÛâ` ÄŸŒ4P“ŠE–FW`h!#9ÃN¹ ÁÀð…iÑ´m‚æäôT9c=E¾kZà}€­Øl£,%“¸ãê àô0˜Œƒ{KãàÊ1ÿï¿n¡¦â…Yv€W^Ó×Ö°ž¤P2(«]>zš°Ô*d` ;&eƒ‚lÆÈà=Sæ%ŠÜÔΧfgxúë5!T,E¨ÕBÐÃýSB$Fp#&¿Æóu`;âS7* î@‰ 迬J¾H=JÀ(Б0©Wãç{U }~‡†T©Šã¼£ßSÞö8RA³£§=Üa@c*gÆ$(ÐÊ`J‡I„»åcH1îà9ŸK£¡Ï|&CW톱µÌöŒÄÍ@“Ûíù6|XÑVàËNÖpimôÈ,º}Óö .Î"ú VŸrH%â4}‰÷§ñ¶Ñ†m~Dˆh|hœÓgäN±ËÛŠEs²h«ÜEBà cõÊË\ÄA`SÚ¶* ^œ7 .A',£4€$ÌÖ…QòqhÛª.ΛÿZ!Jj‡zŽà¿œ\°†àWµÏ…j= Õ˜€º¢µ§~MäH‰T-ÕÿG1´ât^õ%tœxê"¯éøQ˜øQ%-£¶]’¤ÐVbHêùFÅ$*ÌÊ Q5†½(D@â‘gt<¤ Z–çÜõàŽn¼·%E0À¢Š„Ì.âïäjpÅï=Xdr–JG·I½Š`œæZ-mw:L΃ m8™­'Ô¸¦ÃHÎ3ˆ)Æ*ãÄ <¦«¤A[ýg4u´óíÜïÉ»S§ w³ÿn"ÈíöࢋӃ2„ãyÚµÍñ²ð2 8_¦°ø|íቷ5•bKM,t¬÷}êÞÞÜ<<<®PÑ´÷7—·Qˆ4/»'~t›…®/Žœi|ôI#´U¡OʈÏ’!Ãç3y7•yà‚l‚uç“™Š‹ÐÏ^™NÑTË$x@$ƒÛÀROÛÎI`gpéö<@ÈWè1¯»ˆfjv) ×>¹‹Ò¾ žã¼Ö,stù ~¡ø¡ü½<ó.S•.¸fÄX ûuE¹0cgwQ´×´3Ôª?`†’4š÷ôIYù*‹/L–¼hÔÄuM¿½¥ì:®ó] ¸olÁÛN»Úåé;ðÈ3ÝÐï¤ ³Ñ’ÇÌ%’†=÷ý£=\×øÏ Œj£¤R%™kÔ`%rÕB*CÄ] ~Û¡^-Ÿ –R¿";¨xŒl¾5B6{æÞ”± {S|™ZÈøIMAˆC9µUÞY lÈyÎ-E<À-˜ÕN®íìüͰ÷¬WT{gOö´ê`89âÿŽìÆ4Ï0&\-5ŠœœEFáÄ›æGf‰gf™N’Gq&^f—!BŠVqpÈ)œÃÐ/-Y¡w!"[rã;-n±ÚÍC(ÉÆnþ ÅCƒ"S¹KØY6ÃýžX΋¨† ¹N’¥I'ßÖ#>5ã~‡ôme5ïž ¨ð²íPøz ¶ü{Ê)k’¯gJnñ0¬ÕᲚþØÔ˜qî‡v|ž…æwFŸ¦ øè¥¹fËä o•©Ù3FÆò…7nÓ[€vI\ÿß›ngU6파)]ã Ó‡ªhâ´ãnÑ‹62à9y}ïŸWÔk„NÆ?xÐdY©àÊâÁáÛÉY5„„VZÝáÌÄ'»;¯†Ž0úE ˆ1=Óz÷ÖGH/‡L˜T.Õ Äú=&Sš5;5¿0ô§+ ñ‘tþ´š@¸ër oE%®™Æà…ðÚYŸàÿ2%wÏ‹ø¼"Å÷Íÿǘ¾Ÿ™W^PUfÙÚ³Ô@Ö^/T4ÿðæ¥BAL²‹û~Bú"k4Õôú;õ@>ráóϬÐÖzüoKN»±ÙÞYþ–~Æ–ÌòcѹºË†zzá|^ÃÑóþøöæ›÷:\Út~; ¿§1¶7?ýåÆéé µá ÇÿAqûŽ endstream endobj 91 0 obj << /Length 1984 /Filter /FlateDecode >> stream xÚ½XYÛ6~ϯðK-sEŠºZô¡ ¶mZ¤ R§š¢Ëµd[¨,¢”ÿ}g8¤%yeÔ(Ðb5áp8Ç73â‹þø"i±\f‹õþYhWÛí‚ï¾yÆÝ—#Ê—«g·_Çñ‚‡,s¾XmƬVÅâ÷àe_ÕEÕloþX}´É˜VJ†£(û¦êŒ#›°Œ©ðdº¹YFQüR5…¾YðhpA½ÁkìÞ›jÝj£7M®L¯j¢ú©ë‹Jß,yeaá}ÏîV§ÆB\© ¤üg]$™d<’$újW’@FmJÓ‘@êphµZãKv´[¹ušæmßÌiOd,[,yÎ2N웽ú .ˆEÜnè÷ ¬lªºd -Z1;ýXàå3Š^>aiEHE°-QÚ”}¬ ªQ]eí;EÕ–ëN·Ç›, \çÁKGlú¶tçÃÞ¸…nñíª-m­Ì®44©š³kªÛ5jÆM!‡øOW¾ Lf{mOÕæ8k'psOÜüÏuß²ÃqΩ`Qyj' hɹNÕ˜NÕµU<³O]F!Sýˆò,8Z¥ô4QE1'`,Y&ý…¤œ¡Ã‡#·†h–†±8=øíW«oï~]ÍqÍÈèecÍXµºÙÓ¸£k>ÞÄ18H¥êòËé»Öª¡©ö‡úˆãΊ48@i0+¥àœñì©]f#À‚IX›x•UƒŒm€Ú¹©L‚žî-TW¶´²iõžˆý¬õ~¯šb Þµ?tDôxÂ4ôMÀ§ß0˜ì3ñ„rךȻuEX¸;€ݚˆÓµàSxåÑ9µ. ö€0 ˆ+ÎÊ_~æŸ}qÁ“Æ ã˜<ôöý'«>¯kš7eYÐÈ«º€8Õþ¥ôz jëv4*-”íÑŸ¤šf]¢ZÓt¬VéÕ*€O{šfÎLÎZÐ#úd8Q T³uäN‡cMÓã è.(3’, 3ï—ô%båÉ(òf8qž,¯ 8Áâôt%yÈvðUÁ–¨«Âm©èÍíOGÓ•ŽAQ©Zo?ÇÐÁº®¬zþ:;p7áÂ8—,M’©‹þŒVraožƒå"®ÒéA ΂!—Í,¤!¿X$×APÆOÀ†ùFBD”àQ¹x¥ë sŽPøûÞQÖœ¬ŽÈm¹óbæ¼Ó © ÎÔ$SLØ~A:ÒnäÙãúý]QAttÏ]óš²)jpmŒq_‡ Nìè,æ.¹ÿñûçŒÔ—‰(àG úÀ×Á{IÞ»O ¸œSthcž‹lœ ÄÈ!Û,— Ÿå(aÜjC·E¿ôˆ+‘êááuGóšÒñÚ×&°úž³X°œŸÒÏ«Ïoß¶zÛª=½ùëÊšµñ!ŒÃOY?üö›Þß^,U—žçÄŠ¾dUÄ-‘ˇÊA¯±ðâÌ”ÎvÖ( m?’ªê£öÒ›4r¸°ˆáòxÐ /IBªÃÏ®)?•ë¾Cß:϶èl.—í2Ã[R–§ñuµçœ®æø'î+Ý`t·û3‘Çåm›û¿}ÇÕ5ôˆçkŒú$ 0: •1ý'ÝNYŠÔA,€Ôû"Î+L‰Hr²ºåHÚ F)¡r§©é\aê+s»lÁ'Éüe@©±Àú{¦L8Ó®Ì%Vì4ÜÇІ‰¯Ö —m^Ìâs øÌ£!ô>@“tEôÍiœ‹”‰0÷‡(Œ¢l86.aáX·srA-Íôšã~Q¸Yòˆ¥Y6iU³ÜÆ=üDÂÅ=ŒI|æ²Ð#o–yâG¬5TÛº-v`c[}Ä­ÒñF§ÚÐÐD0YÜNµki(Ó8!'vn´¤òd)ÛÅÁëmsê;N9c nÞº¨ÜÐÞæØØ-‹Íô.áƒY× ƒÀc õ6Â}*Ò”ƒŸ9ó “%çá9øxíjJ€P£Zç‰×´kÔ’òäßµkF{m©î,×ê¾;ôNÉmt}7iíš‘] ›óQ.¡ËåôåÀAŠêKúkbâÉzÄ!•çCÍ3@ꟃçÌ–™ñøà-h¥-›õ‘Y% ·#"È™æg øÒá³ÍÞu÷ÂkË$Nô¨Çï7õqš÷.·'W¨eœìqÍÁ mÏ$ûkß:—S¤wJRôYF#_0ÿOær¶¾Zô؉~×Ð')ùöŒPiʲô S}Í]˜AÉ?8!¦èÒVØp@5W҂׎u ­”ja×-ôP1å‚>®¡|ÓÉ _cÕD¨!x^6Axê§O‡ê;½.‹I‹±ôjNˆ„6â‚Ñö£,µ¥2ù‘¬£µ‚ê¹Ò±h³ #êŸqé@^Ýî+c@pCç¡ëÄ÷{ﺙ>“OM°cÜ¿@;'™ ,]@‹”Ë¥¯<`Å~î:@ÇÑ•´³mu0´ù4ÁÓmo1'Ї 꿉Û#۸ͅÏ÷D3ävl/ ŸóX:ì`Ðà o¬w.,–Qê¿vÀà•s7š½‡ÇFÜ}~q_xÿ%žði endstream endobj 94 0 obj << /Length 1233 /Filter /FlateDecode >> stream xÚVKã6 ¾Ï¯öäÕ²ülO»‹î¢Z,v²í¡S[I„ñ#•åÉè/)ÊN<ëi9D¤(êù‘4_…ðã«"\eB°"ÎWes:­Ù¯hñåÓ ÷v0Ü\Y¾ßÞ|÷1IVtM#ÛŠ„ϰ{´K1<ð‚ñÈGù§£àŒé¥Çu”Š4 <¤Jß…|Ù‘âÔãòxf€*3J‚7´ ƒwodCººv Ë»0 Ÿòþ8š}úõ+þ¹ÜO O‚7K,Ø\Ј‚àhè§ÙXà¼íóÙ‘)‚b-‡Ö§Û%¦wô2-SŸKñÈ´Ùk— ¥Éõו38ãì¿Ü,^º™'¸žß<Üè®k‰eCî+mTi;sÚg!¿”›KÓôÙ@|½§³¾í¿\q=ÍUŽ_x„4ŸªˆæIÛ¶‡¥÷@w›Xñ÷ÐÁ<`ãÇò¿S„-B endstream endobj 108 0 obj << /Length1 1999 /Length2 14018 /Length3 0 /Length 15220 /Filter /FlateDecode >> stream xÚõtœk÷À Ù˜ÍĶÑmcbm›ÆFcÛjl›oÎyÐóü¿o­÷]³ÖÌü¶÷uí}ߤ„rŠ´F6@QkGZF:.€´ #€™Ž –”TÉÌÑø9,© ÐÞÁÌÆšëBö@}Ç™°¾ã‡¡´5@ÂÉÀÈ `dãbdçb`010pþÇÐÆž ¬ïlf¦HØX`I…llÝìÍLL?òüç/€ÂÀÈÉÉNó·;@À hof¨o Öw4Z}d4Ô·(ÚšÝþ'©££-=½‹‹ ¾•½ /% ÀÅÌÑ tÚ;µ Ñ·þ»5:XR€’©™Ã¿Š6ÆŽ.úö@À‡ÀÒÌhíðáâdm´|d(ŠKdmÖÿ2–ú— à߇`¤cüo¸{ÿÈÌúog}CC+[}k73k€±™% +*EçèêHз6úËPßÒÁæÃ_ßYßÌRßàÃàïÒõ¢òýÿÝŸƒ¡½™­£ƒ™å_=Òÿæã˜E¬„l¬¬€ÖްÕ'lf4ü8w7ú_®…µ‹µÇÈØÌÚÈø¯6Œœlé•­Í윀âÂÿ¶ùÁþ‘™¬ ìlœ èjhJÿW%7[àßJÆ¿Ä=xzØÚØŒ?Úzš?~`=ôG{' §Ç?ÿK°ŒŒ#3CG€ÐÄÌöOô1Ðø_üqÿöf®M†ñc0üõùï?í 3²±¶tûcþ÷Ó« È)È Qÿ»åÿ*m\´¬ÌZ&VF##3'€•àù¿qäôÍþ]Ã_qkcç¿Êý8§ÿ”ìüï ø÷‚Pþ7–ŒÍÇä]‹•Áðã‹ñÿó¸ÿíòÿoÊÿŠòÿ:èÿ·"Q'KË¿õÿ2øÿÑë[™YºýÛâcr?¶@Úæc¬ÿ¯©*ð_«+hciôuâŽú» `mbùßc4s5sÉ™9šþk\þ%WþkÑ,ͬr6f=Z´Œ ÿG÷±]†‡™ü[üXžÿM)bmhcô×–1±²ôííõÝ`>F‰‰•àÁø±ŽF@׿§@OgmãøáøhÎ`lcûײ±èþý‹Øô‚ˆ@/ô‡8ôˆ@/ò_bgЋþ!F½ØbЋÿ!½ÄúÈ ý‡>2Èü—8>bÊý!&½Âúˆ©ø‡>b*ý¡Ž”ÿÐGG*è#Ÿê‰óƒôÿÐGvƒ?ôÑŸá鯛¡7ú~tü~gü?”ÆÿÀ¿”fÿ0þ¨ÝäøQ¼é?ð£úeùü¨Êê‰>ª²þ~$¶ù/²|Ø~¼zþ¡þ(Äöø‘Øþø‘ØáøqnŽÿŽ¥w4µþ‰ö1ôŽ.6ÿpø8L§àGv—œÁ‡¹ë?ð#žÛßø?ÃlèdoÿñHÿûqó1éÿá¿ß@ +ÐviÞÆ;Àüg@ÛCµ® íîø×Ò]ÕJZ%ûv§'D¨Dʪ ¿ û;Ä¡äÕmŠ[þe‚Wãæ:¨à–xùÖçï/º± S»­°‹“ýùǵ}ø0x´Jü{ß_í¾«øZ€7ƒvJæØ9q Êå¢>¸ôйÖö•®ŒÍïÊïU±I½”NÓF*GhùÍ’þ0ÈœÃ"‚t¤Å‡¦B¹pEš½½›AÉžx'ˆ¥†õ<‰d.ðÐØdŠzœs_+WbrèÂ&ÁÖÀ¿E"ó‡;LšZëâÛâ36</Í7¯J²APeÞ*¯Ï(ë^”Ÿ81“IJiÑt¨'fƒ!“™Úb¬ÒÌöÇ3AìkKNnúx5ÊÎF×ù&¢Æ8¶ä4@­b ‰­€Âr7SiÅ!l-¸± œ…Î_MEºtÕ(úÝb‚dR (8qŠö1Xçyr×ÕXJ!ZYQ £/àÕ„Ò!«E¾HÜE•u4"k-Îj«ý@ÃjIúRW™þ²dIÕ4;ŠË¥ŽWOË‹g;Ä~—Ø$Õò\7°¨‘5 äU;`yûx[†Òj”ʘ?ÆEïû0!¤A€m_õŒü(?N}ÅɬâèH”´œ?«¬oØB`!ä&u³£þ½Wv‰0-Q—è-p  ³ç|oNo?9·œá¯/‡LÉRmŠ$"T°=MöÝA`!ùÄX²Ÿú¦‚‘з"²(^Ñú1¿oÛ‹8Ò[÷3U6~V½–Ù!ú£Ä˜YưÝHŠ•@²`ÜžâF¥øŠèyj&¦Âæ¢ßŠù›Äêg3²»†<®ŽÔÜ>ƒÌ‘‚]Úá û“”lÛøWï1¯³Ý5 ˜W!?q>ÖË8%xw‡¢ºSO')½$éEŸÒ"ö,ÉŽ8ð³ûýÖ« 57Y@¸ÇÕULþ÷g=Ê/=tÂAxxÌ?–ö%I±Ñò`RÛ4ÌÞ?Ó’¦×~e c¶nÎ(¼‡Æô(!4øŒÖ@•1Äú“ú¾¸ kI×}Väü¶x!Ù6—io|#V¤ó¢ÅÊœH¼½äŒ®¨>QG‰¾!¹£X ƒWçeÝœZ!£öLÃA–Ç®ÐoDò–¼–§ãH¯Šâ»è6ÑéÝÙ‹U}]ÎÒ$/éA¹ôu $PU¸Íˆ·Õx´¬‘n»”ˆc@ Dâ—‹“z7ˆþ^~Gl AÄÖ)‰(E §6²án€X˜­d8}ïùî{JIŠ)µ(i,Ë„´V黵  ™­SŽ©¢­¾·Û{gG\9Á+”5»E(YXbð¶oþüv:¿Î9åG›@ùØùìTÛåDfYgt»ÃRØä^b(åñ $©ÉQî<Žó¸Á§*ó.NÕ‚P-av~&e|m,:K_Ä—2š`ƒ<>ª«?F˜³Š°%xä¨}ëî§ÕŽ™Q¾ž @ŸjÏ’|pŒ!ýTœ„1’¾ êâ=xd%Ò¾ò®Óè’ûb;µ°ÐPh_Å7(£0„4.ON ŽÛ;aˆþ¹4|õžY̳@ {ŸSK>ßêêªG`Îî¶Xö|4ÿO®þ–åO}ú{Kb-Ó*aÆ­7ŸÛ~¬vŒŠƒòè5ŸEÑòÝjsÓ^c@Šy*’|ÑÿÿÛ~¡Á‰üÜ%ùµ*ÙÍDô(%`ÝöWÓ´æø^Oqªõ:LA¡ ^7¾4YÝ!Pˆ6–d”®­Ä‘ýíÆ†i•‹G¢`IQ#ƒ}œ–ì÷Ñìuc1Ñr‹8 ý_c\«°Ð©õoëÚ´@‰ÆEœÄCß9>ôšì—QÓ¡{j”ñ\ï°§~Ýz‡ô¬~ÅŸ˜™ø4úŽÅnf 5—S£öoͤuW¢ÌØ/&ÈÙëád¹Òž‹+ŃÌÙƒ¦z‘ZÙöNF¼—Ü÷f͸ºg¡è°6¢ºS©†·2é³áÖz¹OÎ ès”Li‰+©q;$ħlSoçÐ/eû[• Z¢Î·Ê'ªøp>–g°¤®š&u³È§æl^(Bp³è«Dqq:–B?ÏÝZVIñÞ('I­TçD3déAФ‘SÝ*¼‡Ðf÷½®5ìÚOK– ÌÄs}I ³…F”Ò©\ýKû´ŸK÷“(o̲AAY4Ò“T@fµ­vC}Uf@b—eŸã}}*oÛ(M@ÌÞša¯HiÁ$”ûs4«•ÔØgéép ƒ1Â}¡•?…ÐÜ›²ŸsHç²LáÁ¸prmÖþ6³²w¾M—»‰"FàË6ðq½jÝÖ½o-‘úÕÔ› çVTï_}3ÁŠ4¥ÀOïa|,/téYf4Ü=¸p絸m_{HXÎÒúš=sÛa,—gÓxêÓ)=C­CN“‚xƦK¿¢êaº86t>D:•v4j¾_«è9ýv*ì7å6×°ö{Þ¦x½ÖË=]ÊÃN@ DaÚ”„2œË]FQBjÍ Ï\'«7a ¿4¦ï å´Ò¤×¤¤¸ú“D´¤„†¯çÙ¯‚uçî-w"hˆÊö`5Ö}ܯ¦à2Ó~ú2È‹?KH#!¶æ!WMœùö}XØjÙ}¿ÝÅb¾]×Ëܼv›çnɲà·£-u¬½ïæ7G‚:þ½r»Ú«Ý½½$;÷¸v‘פÖ“ˆËµk‚¥nþÍw¾meM³a.m-b,oW¬ †_¥ü©¢N±Š£'íA&³8ï=S9Œ W»7_°´S†ÏG=ì|Ÿ|A€î΢˃Gn°'™o—„Þ w›ÔP¡Î7è·uá'*ÿí«´œhha«2HNºJ™GiŒ ðdgTÀ|²"'ñï·Ôïó %õDp\p 1F˜ŠPe=l•Ê.·²D" ÏÞø“WÇ_E£ñôä Miº2 |Þ~…K½Õððð‹üu³N@€Ê12@Þ S×=¦«Ojb„àÕêc°} ©:[v¬œãtz—>,“”{G#˜ž™ÁìƒYò6¼ìWü6ÜÎ ê‚ ¦·Ì™òBw¼§ÝËëÈPEGU5lµžD= ÅŒàóîQ¡1òÕ"á.,wÄSRè"E“æè>ñnš”ÊvP÷®#f{ðöÐ/Ñ2çn$±.@6Î&“O"·ß…ןùr·ª+ô”qÞñeøE_Dq•…¨³Góh¨Ü‚݇t±%ußÇ‚žI¼Á"”¼¢ÈÜ€gT0åîû·úV,\e§e—¨Çb) ú]Æ^',*9 ¯¿å1^ž†µF(šPxõ "öò÷+e샟šL%M£»{7ºµxaÃm™Ù¦ÙEq›²*R¾“AV'IHÇàxHY^ƒl|q;7{Íže9e&í²«Æ“÷}¡óáGÓź që0×÷‘É6¶õ ,ß« f-ì/½Ä@D¢ ¬nf/Óœ+B« hz4Ó\Ký|"«ò7¦lÚãIa6v‘?0pé° E{©Qëî¥t(‹í¨ô:j‡ ¯!tÔÂÌ3ølQù:m@¬¸ßì`Vû¥Tã—Ù«Oþ” «În ½žÂ6¹ÄQV#3 a‹Y”íØ¿~ÚœUgªÑYÆzˆEt«:}˜ÉäL—½¾º·ë*¾-ñ>Ó™èÝᲉíþ &~y4R;‹©G»jVñ©É8 ܪ¢´êd[ZÊ— ²½BšÙøÆ‰òÔÆà0Ϧ¾h€¿­mÉb¬ËC긌c­ù‡ÿòH'©ˆàʵø @ =ĽLÃ,®iÿ^›í5·œ^e,YbfáZˆ>sﶪoÀÍ0?-ÕzYZÀ*äÑx7nÛ·~«9vHZ]~Ñ(Ú-/¥û¤ýÖ­™ËCØ€nJ9 øõ=ÝXóz©åjóŠï°æF°{?b=²èÜ_ýµ¨5‰æÀh*X뺓Í&2å´jv±ë G¤‡DlNyѸ®È߇]M39êÐE•œ­UB øYìV‚þŽÄK?аnË3aÛç“´d-œ@£×]vG7Bl¬'Úh¥¨üu®pÅŒøF9SE(Œñ½eçæ×4å<³ZPŽ2¬åó:6mû„ ñÑ_måñþNHTi <ÝW[ Dç\tàÇ^ã©ÐdÏAKõJ0 R¸2œµb^_©õÇÛõÐ?-µRÔÁ¾Ãv‚ϼÛs–š6M îáoåY·O“ÂIzñ¬Ž¸¦l9¹éË_ÊbrLZ?’$iêúõT´¼¹…*kvKíŸËw¤¾­×…BMÖ»p­­ ’iH·p§S5²ÅÞ¾léH÷L»=‹5ßJá±þ$ý"¹n»K“¶mmÛñEÊKU˜ú»Ã°‘ª[åO7F(ƒ24(5I±‚ŸÄ½gìSûÌs´öÈȱ,DÖãI×K(¸‰¿ йé¼@£…%ç@GVmü4 '¹ó\ \¯ÛŽ1ü _zTé­{†;ûq“E6ÛÏ1Є0µa™Ã¥ç.¨uØî'îM³ú:ë½Å7¥”š 1ýž˜ÜühM¡Q¡Jg«èj?…hT:Ûs·ÿf ½©ÙjqŽÁm9”Ýɨo¶Bn› »ïÇ2~Ï6Ó1Yê‰ÆwøŠ ê ­×É&~g’}¡Ë훲‹Î.ŽJ³dª"ƒ—©è:ñÍàúsƒ[…jµ£&zÕ˺ù|»Ä“<vŒg—óÅ=pÕ:*è1‡ßIi‰YYn®<"µÞl¸y¾šGÈä»¶-‚œ]xTmbäM è3CIÖìœO§µ³;tPà £4éµÇe+LóËneì$ÒêL ä;‘rãµwµà–Cr£~öé‡ß;éí×+:}ÑZÒæíK! æýœ"¡ŠîÔ'µáu–ìŠsŠê~:Í™uQµ¦¬R)8'ûÞeui ÛÝ(ªŽ7}ß{YÏr$ì'¦|\IóÅçÎ_àö²ÞË,ú.dWAEópp· LªålƒŽø€‰1]ÞCÞ$Yù§Ù–±1‡Fš¹2fWaAny§zùÜ;¹hMz 'NCýZ™<}ôˆù¢ý¤^N|‘b•_Ó3šÏvmóc p¾YEŒÎÛ¶êE–íO¦qŠîf¡rLå—4Yo$5,0«'µÈÎÐe|ñ3ɾ#éæ+ ¸›á—NÜQ´!Cþ²ˆÚ—¼“,û@o Në­üIîc°TÇÑ!Ôô—µÒ-Qß/Oé—èUüBzÑÎùèe/3Côëš@ÜÕ" "`móîÌï»Ô’çÃ$0?,>5I÷k¼Çy@¦’b†ÒEÂ6¼ÜãAw<~’SñïO9™g &&T áÑ¢v®–>øÞŸ¹‡û·lnÀhІÆ|†kh®\g!UÞ'©‰" ‚Hðq@Rt°ÆŒn‹Ô5ÇÍæÎï@µg«½À“Å$£Aøw49ºΠY¶&ÞÀ¼¤ÌnÙ¯ áA_Sb.‘vÌ¢Ò´”"°zP}š¨Õb‚¢LíÚäHkÏp,8æZlßôý Êíã˜QwxÈŠ"½53´!èÖÜ˼à{ˆ7^©ž¾qo}3PˆXà\ØìcÕ£ÿbY$‹ï'n\r;Q"€)eÍQ¤Ÿy™[ô}n·ì€ãÌIÏ£¤Øcä¸OTP? ž®"` ÷äÁ¹ù¡r¶{% ß™„74šD°Êæhï»Ðj“K@©<ÌII8Ÿ\¸¡`»êrdùý—¤÷IÓéJÙ¤k ÿ5Ý´™`qùãEÀK‹íD;Í%gLšO¼F–Ñ‘o$`îaÇÃmì§Ëùƒñ‚lÉÆÃOÀðB?Ï6õ.cäY7ŠÂZ¬«-ùQYµÞ;¬‹<Ö6¨o¨¦UYA¶BSËè¼ ’´u·BlMAïÐì…œR{ž÷7á²VL~e:Ô¯Š[&T‹ø€áÔþ½õ›6¦¢§]£¨ÏØmI’Ók?‡8‰^¹Á¡æµ9@+,ÃOî-"+LYèK3F»Ò7>CÊþL cGKYÎo4þ¢CûÐפ‹V’Üû]§a®˜±ø”ë!ÔcjãÄÊM”Çbçýn"‰BY&õ­:–;Ȧ±\õÍ©m%“È2Á¹úÛËrIß(úã æÂȃF}Wˆ¿üµ¦|Ýÿ—Cßî¢í~9Â¥+µ™Æ \›˜üœ£:…ru|÷<¿^1¶ ÛZñôLsŠ^Ê8 m%± âš5¢¦ ij`àØ³á¤öÝà8Më‡O²í~¹)S§½uš5¯ÏÚMŽM>q&ʼÁ¶o–Äb1‹Z×|ràþH¡¡%T3Z¨ˆ†|ŒD(tQ™?U8 rJ"_ð-Ï»Ðí÷ÐbÍmPÁ¹RÏïƒU$OGrRðì&py¢²EÂ]E3+{I Èy[y!(xPñF¬if(¨ßAŒ˜PVr² Y}ºZÑUxx`ô˜*·^ã2èTEϼjN‹ßïó±;‰+$å=4iÔ~,HNs<-X©'ë,²LŒSï¶&U=ò$±^Ïž¬”¬×)pZí0­ÔlñªQêÅ_3:³·†Ôp *Þ;ÂMdñµA™0yÙè­´þ„?©üE-H”1ÛWò%'É7É¿&œÛ )bt Ûw­û{Z€vGvZ;|Ï$øB™ÿ¦¨`õ´’Xò+6 ç®Ðwº¶6³0 3hZ\ªAÉŒ¤èà4ƒðÎí»Oü ”okåZ¸+ïÎsïyS6»º'nå%ŒÎü5ÜðªŠdaÎÏ1Aæ3i#Có“¸xžÅrQÏyO¬ö*(6ŽCê “îã¡E8Ò‹fUEãàfá9´ƒ óml($Ÿ ‡mº”Zý¨Z.$âö'löqåx£ýÞðhOgFÁ–ù?é·k9EÛÆ|ÓYR¨áµU¶ͼä±Ë½´Øèl°bu Ó³ojÓ?á½ë˜YtŒ¿ÄVbšÏo;‘ôïat”S9©®è/ d¬}“_Qž:a¤¥Bç9 x¢¹ -‰[‚¼kž eõl7N$ý5bg¦´ÏVU#{FÅm-BJ› cÈÅõk¯wé¼ôàŽ@²IçœÐSÄéb`°eþü…†%DyK’6®Q¬ºGꇊÁhå…Ü k¿µþñšVCüÕLR€ÜW ×“Ì 1Ÿ•:g±+ôê=éR $UN¿Ã>ì,W<Æšq±XYÝ4´¿p‡Äs7 •xS$¬*Ò}–\ÎÎÌy¼ ÎjaE)ÍzÇK¹ö˜z&÷¦ì¾ù9b·ØdàëÀûrT—Œ"/õ‹¯/¦Ò<ÐvB ]ìÀ{e¶ž¥ˆQðP¨ ­5L§Ò² ÑOÎÔÉ”̉”Æ‘D¬ä0ºÃ+þ)µ6F­oºSåU‘e«*[ZE=§PWCñ õ—²T“2±ÎU‡•²Ø›ÿAƒœNcKo tjM­ÕeßíYM(ø€¥ŸSêÕ7WÀÛªŠžby_×»¤m=w¸7|¬°'×ïT¨AVÆ`Dì|WÙ÷7Tþ˜³+ß>jµ/ÂÔ¢˜ L¸ ç¨a·Úõ÷eXQ+p_-Ç¡âEóq„&³À¾#ÜEÕ ¤» Õ)¨ {¾)F±j7‡™ƒ˜y*±†©È]´5âæÁЯ\œ¥ ¥c©Ž ŽÉÌ¢æpãC1à>Iƒ)WæfŠë›¼Í˜JZ*^VE‘²9Hn0õw6ɲ •gîbÂðbóEhýAz×Ì»ŠµMÍëTh_5]DñÐÎîZ c ™ÂCL]a¶÷Z®¤§gr0t ûùó+Jõãv4uH™ 5"'°ŽÏ€[{6XdÙCÍŠA&á(ò›0GYnA€¡B¶ŸÛP3í×ãÉ€x¬?!øxÇ“i]ë­äOÝ€_kã~ UZ˜ÊýÕK› Ó©ë9üpb¸Ÿ7}í¥ òrÞ=C 0Ú¸Áç0 åE½ æõÚ@×J/´ÿtÎ1иÚm5öµq.é…DÏÓ”¾”I`»s‰µ)Ÿ]*×Ç;KdiîͯŸ‘•Î?]Â|«H˜;N`qeMUž2ûuc„ë©IR›ÖµZú~A hï¨áM©¥ð»nx+é0æhFâæé<’ƒe ÏÂÓ4%˜\Ùì°.Èœ"Âô™ŽðA£«:`‰%>ß–ÿZ†6YXôÐ ®jÀ/v~F†,س?Ïó;§´eºEXv£»ìÝ#}®a¸é¹[DEÖ~û}ž–mAi¦|QÔ™[1tñ…ØcšÕŽ€Ûu-Põõ&- ¦.a»eפ\8`zí˜N¨!6Ô'í–^±$D ¯Â„Øa›ÊSSâà±J…GëBÝÎDÊXÆ2Ñ¥§4¹]Ãë›ú­X—X)7 €ò–5aøZ…í(é·í6ŒÖ±8•ÍM¾dþ7†Okg¾·¢œÏÄôÎáTžÉ LY‡ßówœywÜÜŒº+«ClWˆF°nò0.Hš‡Û'‹²®0~—¸Á^ÍY4ß!š±_¢É‚‚ý$…j.´õ0ŠǦùµÏ·òc ýÆìå\X‘â“¢å€Þ•èyS½tņRŒôœhÌ©¨-òºßª¥jY••úN<ƒÿ>—ûs`@yîÍx§¤f,kOf򯆬.zÉ:2G\¡j/Å"H—‚3Këüt˜"s¯l§ÈƒÌ¥Q‰¼àKŸWÜÆ¢Ÿ#Y£xærÌðÊÖß3ì…G”SI⿞;¬A¼7„ÆŠÚAô:³ºòÒ0sáëܧZ´RΦ¦7Nî&ÆúuæÁ¤Kº%x±‰·³Ò$º²²°¡ ¦8 Ðfèüé#†‹…²Ã<Ù$à~î3àuçË$ÙšSËmafxU ¢”÷Z =µí×>l0è°tóŠÎÖï¿ÞšJÙ4€½ƒøÙ›^ø´ˆräšp4å‚'Y/éž’mhtiì,é7­ËN;Ü÷˜ýÒ鉠²ÒUÉ‘në¾ð'—0¿ˆj´v}úEŸ4²(jOþB@a€ŒYëÌcy´ŸR Ï l‘kd-3PÎõônÍÇ¢¼Œ vX~5ŒGB›íˆwc5*ÍKuÞ"Jm{4šj«úy¹̅®¾¶úÀä„“œÖÒ³ÈPNÛX2î7¤Ó-“©häîX{/û èl¦¯ç„Ú¶ãô¶Ú°è¯ÉèÂaSÖž2üª 3£(Î=Ľ}nÿiš¹B³9x¸ÄIL¢0×ûí¡šŽGÃ[v:“æçù”/wÕnwÞWï×çâzÃkvÎ#ŠBûì»ï}¿!:¨0 0–Ò±¾[àãPņÉÒâ@¨o ÿ,Ó,òzëäá¸i ý¾rú] S½…ì÷â ÅO=ö•<¼}i§ãÁÔvFñÔÞ0ŠÉùõ^òÓ¨ÄÅø,ÜÈn^ˆKħ 6˜ÄëAKԣŠiìÏoÔøÅÅ„¤U ­+Fò xÌ£¨Ä1‰bX21³Š68{}ñ \¿N×Vh¿ž$*×zRo½­äð‘ù)’ÍÖí?¿Î#ì›Rì>tÇH¥…ïöÍ]v]L±üàˆ  ž)'Òß,KJ" Y}Q½SŒëcÇÐg’ß~{Ò«Éîß[WÉh…ä mm…†0£œê¼ÿœ{}V½c«[ “ÐK×Vóì[çFts@efŸ€Ã3ëŒ"]m)6›1œ`zXÇcmÕÔ;XËvvÙ:W4,NÞ3×ÈÙúŒ3¾Ö˜bVÎIèd©bï*ì‡.Ü»æ·ûi¯AFçÖµœ­yuà8 ÿ›ld8ƽWñÉœÒËŸýý)UçjÞë»ÏPx!Òû µm¼×¥ÉjÁX.Ô.ß;%L€¯€ÐbQógðûswI¯-ÒNýÏÍÇÜŠâé!Χـ,•ádÒþ|[8Õe8"•|˜§tcï¶‹þ–ú3!¤˜>y; ÌKë/ °=PÚîß[ô'r½Jì¦Ùô;¸ëE?ñÞ×Ù‘TÌ÷º‘ËÔç×ðys˜¿lyq†Qí1ër ñ…»~jö¡7xtø´–_·à+pvÌ¥\×Ô¼Efi_)\4¢FTJ­÷àŽ w Y{0‚¼‘"š½ð(ž3š!ª]\3™Àð†ƒü!9_Yt Ù¾ÝBH*}{ÛЭñ;MAÌ†Ø îË­Á¢µ»cœ]*M¯çÅ{3µ5ÈÛÊI >egàÓÞ‹’þ&ŽëPqÀîÉ-c¾w¢@À‚ï<ò…Qö'į“@òÃèºe%’s×*ø0)e/F½¼€å,©Ð»U¶6@6L[t=6«ø Põ Z¾KÉ—Z1íI³ / så±ä(ÏËÙÂÆ¯JêäÂ)𡨰7¼Ñ[ýhè.:ÂÅiágJÞµóžù£qÐŒú‘Ž7ûêÝ¡©å˜r);ð‹ÉûF†À Ôà¾-!,ædXÇ>§†zþ«ø'TNù:×¼ ZXæÁ¾èÜH¦¸»Vè'eR¨bâ÷Š-L’||O¤‹gf|€E‰¢4÷®OÜv/Z8« 6 W°èú ¦¶9–št GûÙI±ÈÕ¬%6tUÝbÿÒÏbÕˆ®Æ'Ý1”Iâä=n·Có«7·ÔÚÞ\afG‡O‹y_ªš6e*ûæ ð@wiiØÕÕáw8×C|ÕíZä?ë——2w€bæ­B=ЭæßÊ‘ª ö0$®ºÝb fŽ^1i;ñ-œ² ˜ÀÜÒ£ø¾ÝÂKØþ¿„§¦ªðÇxMúæ;a|=(ª­Pq1„ƒ&^=îqœ.Äïu»²’eºëެ~;нS—M^ø <õS8¨òÿµ¿sÓÕZÌú{r…!d ·rá'ÒV¤ŠGr;?&VÐL›ºüœÖ‡,4ð‰¥Öè[tú:„Ô‡å5€¯¢á„ÂVºØ€whÆe :~euW /Ç ßNµ~á3Dùê{}eiD¸1vè’Œ™·Ûüà®&’œe™™Dr.—·T ½žb_”™7DµË’Q2&ø{ð‘ˆ:Ûô:½]Åxö&[¶ˆœ `QÍÍePXµ’¬ý¦yû4(ÇëÀüW$!v…Š€ÊÄ ‰Ì9ÕBðDÙ™×êöx˜Äv#Š2A=û$1¾Å½„`ï'e°Ç¦‚´Ãg¯1BIà+îÁ3®ÝaâòÀ5p`ê|÷¹·ˆq†jeéÌ…b¨?@ü™ˆòØnDò^-¹4 ˜9IÈrì1«| _ê{6pëCÒðÆáùÍAàsRµ{‚²H¤ºûàÍ tOL÷hR‚ZzAUϵûðlšs³iý¨Õ2Èg¬ÔXâñ+(Áׇâ=,sÁOzØüPŽ‡È ¢ç ²ðÄò Išýé?k„XŒ|D… Ÿ¹üà  r²¦CÔ¡Í(tüpGq(ÓÛ⑵ÏÞ¸~ÆóØgX%Ó?E*9J³U~%” År‚æÞW~ÊdãnÒì;66wY¦=áŽCžG_>*\´áìž[YdœŒíЬúu¦œ³³ôå½üàï?¢ lòÜ×[Ó½óO¨ieÐIÕ’ùo[c çˬfiÔ^Ú% Ö!ï^ÉX—É5jX—›÷&/ëŒD‡\ëÒ.db¶£S$˨d¿¢6¦ MDÏPÔ ?q>l܈ˆÀ3Y§öó‰ Ã)¨ŽOæTÚ‰£W};¼Øî_îä„ÞbêÚ»éÚ;øZQ®-RÚg¬Âï3@p±InØEÊ>‰C¾ùÍý!Qê{²¿P*¾¡ø'òá÷b÷u• î¯ô`{þwœ§ÔÉj#U=s.Me<ø°f aùpÆ»@ÎÀcY—-<ÌVª<èÍ™nH‚QN,GÊ<›š]1_û0<[m ðÞ(õn!Â@ô„—¶ÅÓŠnceàb TŸËXf!¸žúSÛñHÄè«hqL¢bÃ}ÕQƒÓLæ{­4w¦\ØšK1#âñlÊãO'B…Ût?§ba± NK“à7ùR+ᲂu†7ŽÕK[5!å²"mYVÁ+líÙ‚–f¢;Jœäjm1Y|Ûù  QŽšï269%ƺ´~¡8‡Å ϸCäвìO"£V†ë!fwyaî ÌmRd{2n|^r Äúf’žËÊ'ñâ­+ÉÐïšg"?ÿøê̶\u×Ë`ŽLÉ$uHåQUƒ¸j™3p{«l³]M5‰ñ}ɤ( XÀÞ¶iwöÒ¼£ªsyúÊDƒÆE7²NÁ$J•¨Þ­:—Óå^IöàhÌé ’eðÙG¡&ƒ_ÅC¿VduÍŒú…uÜ&u\4º‡PÏúËTO¼fŒQíyØl­jî­ÏßNɬÉ5´k ¢éàQàÛ˳â~Œ… &“<~3’"ÜK´ø•‘‡åfk¢BVÜV §„t¤±  þ|ê“üNêOŸœ«ƒ3¯çl.ϲJ’£ nËI¾¨çËý"ÕœQUjVÞêhaÈ8¨ËÖ^³4$GÔSJ²Lþ…Tî»oH¦’`‚æ¶ðå¨ôÁŽçâR%†þÝr2ÏNî59.Nf(eÙo÷¸3 ÷WEÛÎÚ•Âjƶê‰d1„)å1ëýéYiUmº‰³Ä¬s'<ž~í¥h5Üx&J©ï"„£xäö-·W"ÓcÙ£€,2"©uaˆ€‹<ØôZz­LÇ61À}h^n·´j¯ÊN|Á‹)bÏÓ üYJZ—¥×XÕ0,B›Dš]àÆËí²LÑMÌ9 ÞÛ’BïT~Íó€<ç=­ B"WözÛL$£sâkOßíøÆ‘æ"r¶YSýH4/.Møp]á­ÕU¯ˆÂ›…—-š»@{¢OÞýeó2$£²÷.€}{ô[ý>¯¾ï \•´óͳÃü®û±Épš¬(¹(ïq>*hϰ٨7ÀyUáh> Lë¦C¼ôµƒšþœïJŠñÐkõ…‘ÒK^ ôZÕ|ß•©‹C+þ@xqTn\ ¯gÖ9á‚‚"Fd¾XHo5Ýzbk¡o9JøSêÎNüä¹ï­+"´;¡ÿþcñÔú2VûE'F»Ýl,îàÃ!}"_ Æ.•…häHëÓÃFç[–p2xeü@×Ùæm=®˜ Ño\úîLμ ò½iô¨<ÅWvðl5÷9ãPœM+z·¦— ›4q§ õ‰GZh¨SPÍDžà¸xí¨}¼¦Ü2ˆ ìjÇž\r¦ï||xlþ6_,h¡x8‚3`s¶§I÷Ý¥Íw .Âx˜bŒÞL@/‘.·EúïÇÌýÞ¤{›Rìàs-tWíã+;ØfdýD’QìD2̪Á ¿Sf¤¥ùa°Ž~ûÚnO«%tVˆªYê¼qçÿå|ßêÕƒƒ™,úõ&ËìHXä‰tÅEæ•kgAñ³L¥Ëh™3\± ˜/i4bÔT¼ôLbB‹ÜñµKµi‘6?žvk‚·cçnßhFÁGQ…ÌÍ\gÓ»G:E㈎†y4Lùžo0 6«Ä³ÅDÔÕ ÈáóoHGm­cRÇèP¯çŠ$,XÜîóï{™,ÝäO÷Çqḭ́÷Ü®¦†™-|UdÍ&bÅÚã/ÙO°±_)Îx#xÁ•éÄoµ+~>üP‘Ç­íßp*f±ÀÕ¾;ÊaÊÑÌàJEHÜÚ”Z@ºjÙ°úÏÇR4EêL"0]n‘fÐ^ÜÉÁV$-&îÈ¡Ô}nh´‰Uê’ïuk"x 9R!€ tV—q0H˜ò²s5ýö àú¯u\_ªß! *·pO{¤›FÔ.¸TûÛÖ_ý€‡n>3ŽqÈMÔÿöyõ¤ÃÜî4õ*äc6'}ü‘>b´½¨É¡”3€dÁ5Ý¡Fó !+öh@Ï'ìÎñ‡7ÛñÜ•g:mg Ðoež}Dž_á-]">>€îŒ¥5ç¨oÚB ¿QG)Tèw¨ZL³¢€‰|-+eE2H-@C(Š!U,à!uŽŽ…¾ùh$÷ ÈjnÆ-Úž˜nˆÓòÖöY1ÐÇ´ï™ßÑGp!X ª.€ÝüØ Wù+ƒzª*íèá'nt6‰•Å4Ø}W87Öþ} Ç7 wð5àtê§_üáÂ16ê TÓœå¹+ÿ4(6œâ;ŸPö #0Ø«B…Å…Õö¶Þ¡!n£BýÉþ/]L}ØÍÔ“Œ‡åÞ3¸p£ Ö¥ä" ÷õ­UÄgbÁ.o8˜Š.ål¿ù¥^»Ÿ˜]ÙVÇ… kÔf;¾d´`#¾$ –ßí*Óúø½èÚýÒ[û“äÎt ”z€µ>ôÊ“‹bT9§ }Šg0¨U¡ÐŽã¯ÔEK4ç‡a´ÙaÜÒÕóD±CÞö–Ʋ.þ]Û-ÔRjÐp×^¯8‡¥c¦ÐšìHHcd#϶45aÚ-}QÔM È‚ço/)6aªg!à8Áó öÕ nA/ “ýUæ=/’1ŽßyB¾nÒã‹F‡ôÜ‚ý?™è7 VLF¶:Y)qúžß’ì/ 6#]b“-ÊVv«½"J`ý9X(w²¹õ7#ºÃes—lZ4Ϧ:v®cœy’|`¹m°õ„½¯CSØtídt d<—·ÅØÐ.èª4¾uÛ ßä¼Ư9]£{»EBዦpù„"Dý9W³·@òÈÃ]£`ï:EŽËF¦ …ÎŽÀÇ–Þai6ÞŸ.2ý2qba:‘3CùÙ•µvDÆ’¤˜zž¡Óˆ»>—½Ÿr'_?óQ´Fò¸€rr¶‰Ÿ’ß}¦9ˇëÄísmÅDˆùÒ4õìšBus¢ ëáEüÆÉXØhêùNgã+CNQ:`Õ{GÅkf_ÄøÃ¸¯všÕ!ïƒ9`|YÄ6»Žq¸¸'ÔÌ7‚pÝéоRN¥ö¸bRh(]gœ¥¨|¿ k "¦7Rx±y–H!jOe,>3¬|~ýh1û~M§¤µ7–0rŠûë7H.Ç~ÂÉì¬ÍÌO¿ŒDòÃG6í…Š.êåä×ìõT1(\;ø¸eápö¢6\Æj‘Ç~vR6¼þÚ‡X%(ï=Ÿ{x*‰%xVPFs­f¬îÛ“ _+3TðW¶-Å<¹’m ß”\òÛU|UNºÑïÓî[üZ‘ܨÊĪ05ˆ$|ç_ 2“)}ƒúà ÜRQj«Z¡‘©–—uiª˜im²7òV˜ T3¾ P½³©ÑÎtLL!wµBe% &ˆm)¨¹o ÅmçÿºE­Ë endstream endobj 110 0 obj << /Length1 1398 /Length2 5888 /Length3 0 /Length 6843 /Filter /FlateDecode >> stream xÚwT“ë²6‚´ RD¤JD`ÓIh"½÷^U@I€P’„Š ½)½7é*½ƒ(U@”ªt"EEéEàuŸsöùÿµî]Y+ygæ™öÎ3ßúÂ}ÃÐDH †²ƒ«£8!°0H¨¢§§A 1aHÀÍmŠÀ¹ÀÿÖ¸Íá,…”þ„ Átª¨‡BµÝ]€`1 XR|KŠ‚@·ÿ¢0Ò@UˆÔj£p,€[…öÆ q„<¼P> øöí[‚¿ÜJ®p  Aõ 8G¸+!#â4AApœ÷?BðÊ:âphiOOOaˆ+V…qçz"pŽ@c8Žñ€Ã€ç-õ!®ð?­ ¸¦Žìoƒ Êç ÁÀ…  Gb .îH$dšhé Ðpäo°îo€ ðÏåÁÂà…ûã}üå BQ®hÒtÚ#\à@u]aœNAÂÎ,Šàñ€ \ vÀ¯Ò!@u%# „ÐáŸþ°P à c.ç=Šœ‡!\³¦‚ru…#qXÀy}ª J¸wo‘?ÃuF¢<‘>Kö$Ìþ¼ ˜;ZÄ ‰ps‡k©þÁT€ëà8 Hê–˜”î„{AEΘz£á¿Œàs5¡?4 ´'´÷CØÃ ?,ÄÄaÜá~>ÿiø§ƒ0´ƒ; €G'¨áö¿eÂü1/ %ˆ@?0tþù×ÉšÀ0 éâýoø¯‹¨˜ikê« üiù_Fee”ÐGHL($*‚AâRÀ[„ƒß?ãBêø_-¤= xì¼^ÂEý]³ÇðþÙ>à?ƒé£Ô…yÿÍt+JøÿŸùþËåÿGóó(ÿ+Óÿ»"uw—_vÞ߀ÿÇqE¸xÿA¨ëŽ#¬а Èÿ†ZÀﮆpwýo«BX%¤ÒB`qaøo=«Žð‚à 8¨ãoÚüÖ›/œ  7Daç‚ô_6–A ,›¿M,aåp¿y.à KõÏ:ÔPì|ûD%$ â Ÿ I}À„5…Á½~±("ŒDá.@BÏ~@{p>h ) š0ì\øGl¨;CHþ‹„ÄË¿Ö÷‚Cã(¨L°SupËA¥«§Ðò ,éfêÁQ¡Á‚û¸.µa›…x“¬ÌIgê`õûNmúÊnÙ³¶}–j8j½Å÷„8ÔW8ìbÇÏö.Œ&øì³qŽÓ4=±HV¾.]Œé"2d¢m§T€9t™pÓøþUÝñ1Á“‡¡Dý–vH‹~k{eI¦.#Ûmó/ŸŒqMv½¦Ë;Lå|r}´m‘¢ŸÎ©#Ûzˆ÷¬ ïéë¦ëd¨íñpù;W(ŽNM¦—MUœ¼Â|:ïòÏœbtz;+а®çs|ÉÕú[ŽK[Ö7xÛo9Ú&ÚGƒ¿àÙéÐÓ Ê©˜Üü•HØTvIC|Â>Ö¼# ¡ùz¶ì»³vXˆŽ÷ähÇÐüOw-ËwÝÁ¼‚zñr§¥K_üê¸_Æx؇7ÿU™L·¤&À˜É·îg”×Íå’5½Ç2j!j)•êØb*_4};¸9à˜µ"µÜì²HÝçò»{>xñÓ¼íÖVežI·Š(d }4~¾fÚ7½àÉÑ&XäM-4­*Zï麰ç[áµ`­ÛãŠ*ô+÷¸J|ÿ@÷(% äÈ~ºÞÃ$ÜÁY6µØ¾{½”8FT¢Ÿûüh'ñm7ª…H àQ}´?Ù NêеxÒg†WėÛ${òº¨ˆå'Ï~È7§h‹»*NŒÅêÇ›øz}Zò›—èoÓ-„ Ü—ßé%.(Ò8ú ]™â}DýÁ¨7h-þqt‹ÒüNSNßHëè×K-%r·Ÿ~ÎÜØs`eÙΔ»ÌaÙjÃqfw†²¹ú]™Í¼`î¨ûa?yý–'ÇWfâ¥ú¬Œ×ó­5Ô=u¬A_pb÷&Lt«É3ZÿEÙˆ¦ü®ªßîwŠ©¬¸®»I—[¾ÖVî•9”\&kÛµ6ej?ƒøÚ¶:ÆÛ=à{åy7hjÉrJü^}‡è–÷àJª#³ICHé?zô©Ððºýø} äxÜÐÅê"Ž7_Û^EoÏ·±ÛÄÀ+jø‰ñ¾ÉqIá†Û|zÒ2”CMÍaÅÞ=~ìœ+x?Ú.>ý;¾¿‰BÕ"n£L¶¸~…”~ú¸{ð¼)04I7ræ‹E]µh•©zœù<‚¤ÕK¾ÏþƒfÍ‘%‡µ©ÚÞ+§tãÞHcª¥%Æu`z*팋ÔþÎt<ºz''#Kó†ùþt ¬þF}€ Lécgúr Åž,ôÓ×Ü2ŸÝá žðöv@߬ۋ}EóGûßêæä¯L.Õšæ~ìE}3öLY„]Ï€7mD¶(#šWÙÙ^11zm¼ìœ†[™¼“ÔÌy+`Ë 8ƒšk1W’HòÚ`ô8"p!°€€ ™gú¡¢ÖPdaO|ûLn“ý-&í…‡÷T…ã}þWš:U¾V;ïFx^©cÑÛÈä¯ëŒôð~Vx»èZe§$¤¥–î2üîZº_,‰äSQ? Ð7óJÆÁÑäS"Å’íþý -gåøðîS—oòžñ³wÖe?iÞ©ì¾èåAÿòŠ_À’ºWg†à Þ:¼³ª‘±N¦¦çòšSAcg–3Õ’>óžxÙ™øaÚÎ\Íô™“†­Ãp˜Ñ³ªjJÞ¢Ï2ý•FÔfÁ*h»Õ·Š2*D·ák<ê–¼Q€¼Ÿ!‡±‡E ƒL1¢È¯©-Í6;å!ätÃö³ï‰KrJÜA3ûq1Î"ñå<»—Þ —Ö}¤ ¬šÓ½k~ï™Ýñ;Ù– ÷'FyµQçê€êwºÚuc[ëžôÄ™¥Tîe,õÂ\ŽL5Ùz‘çÞp³îØ¥‹Ó™‘¨1ŽA_k`…uÚÒ +¾)pF¿œ'‰%QcÌ ¬X*,r›X¦gHëÂú;u|"WQk€ÙGb—ö’^nó¹ì”Þ€jO¿ª‡šš"5üÜGSvIÎ ?ïVy£¼Þ×;•Kñʯ6y™Jbå]LJ¼¦Ðœm¾úP»žùú!™G/«3$$×’?=`ŸZ@ŸòÁ^‹ÆÒžYŽXžQl„»åÇÓrÚ·gåõ¼¤mVB÷nD3_ÏÞÐîhò±aŒöbëØ$öò˜2Ùéú‰ÈJ8ÓaÚ—3òÌ38½Å(ñ3ü&«tÒÁ<3F]C…¸ºž¾kú*å+&z{cˆÍ1êIù¤ËtÝïö×/-ÿãÿàtÓ¢#Ku]j5ŠkkÄw+ûFƒzä\ß@dã)ËÚ¤n‚ŒÍÌ(Y[‹«¾9¹ãn/ïG&FWc·Õ+ûùÚ–Lñþöã´$·“ŸKÖ|ºf>Êñ÷R½ØxÊf"Hª~¬DAµ=®4Ú5çíÂûpQ÷BÓ;Ü‹\’M³Xúo_V)Û™Ÿ»*ó3Çš2ÜŽRk".´0pšLMS©¹†^aº Ñ$»ÎIa…/8yM+2Z¹@Á¨*•a+s^©­‡ÙmF ª”»mwð„žÜ¹²¡•ŸÑ=šzóÒjªþõÃ7gŸŽá([ø…f ìZáË»ÑòŠLû1•Á«dUOÇ›,H÷С£ÛÎdyAƒ½J¹´¼ÖzKÌèh(iö¦cï– $U¹Ì¼{ï-ǶSr/¡ÈŒç:}Øý: êw6‰D?~©ôرƒ¥ ynKªý6áÔ9ª¥i@CÍq”gUájP0ÿÊ|9«mRÖ¢âí¨©(+E݈iе1Žê ¾­â/þWûf2¡BjC,Ë! ¨¦vŸfÚ$–*Ú~¾Ml•þEÇËM¬£pþ ®˜½,c-ö½ïÅîpPþ€ÜŠZœbEs¢ð¦èýyLM¡t/»¦|)|uÒp`¦fT¦bÿcχ'Á~®™kB?êô”ñX[¬_lvôÄI¶Q‘Á&Û"Bœ’½¨ÞLc¯öúyŠË·¨YG+ [» {ëRé \¼³[½÷ÍÄ®T¸¥×Žîn.n«r>?óh‹jÜu:¥#ŠQHÍ9šîWbiX‘.ÁJ·Z÷°ÊhŠ–‡¼¬Vpi«­†2Ð/îïÜ€SäO­ áÀ>аˆôÄÙɆ&%LŸ8‹,ûÌ‘­ %¢2s¯?~ÛM²ø¥PJƒ›.=Øòf£»Aï‡ôHÒòä5Ô$`ƒUâÆ³øìfPRä§IÅÉõþKª”#7¥d.=x²U{¶½Èžs½RÎAå{^\màŒÂáêÆ<¹LŒuB ÆŸðO3¡"B÷“ªc{URåé- ‡GM©‡oX¥i•ånsí’ÿèÙ`âÊàoŒÛ=êuÄÐìޢ䀗ʬö_¶è.ùïkœ‚ÔR)‰ fÁKõ…1^ˆÊHógn—â+ž'–ÑŽ£?;è_ðô¶ž·ÊœÆŠº¹~;UÈþX¨S´'ã³»kÚ$þ6´=çõãbý¼ÍQÚy²VçùNؼ×+-G5¹ž âðBëxk Ð4¾Ýºù›ÖÃ㯢3Ìå7© Ã.¦®wYRV¦Æâ¡î'ÞMfÆÎó$±„7’º¾ÖçoÛBƒ}[îŽæš¿ìâ]ÃÏ­»úx¼|Ô¡ãÏø‘¥%RM«`‰§²‘Á9Î ed­‹³sדª—n¦1_:˜ùZÍrDÉ ‡·<ûÆ¾Š›wú=¨:¥É)ÊCš*„ޤÒÙô¯Œ°[Ü»!ç®¶m´–˜BÁ»¡*+SãTÙÙ×p47¡µ|(Še`Ï«Ÿ;VªuÕHx«oÒ íýÙüC/:³xkLåÑ}åÜ…¨ÕJ¹LìmòC¦‹[¯¨õL[š>œ5Kg5TÃþE¡x NÞÿAu?&uë2ÃU:[C“39™3µÃÖŒ žíˆ|Œ—(%—å‡h¯q´X+ÑÆ§»fOJÝ‚Hëø‰ms1À§ûJTe fRÝ=]¨X~4öÛ!µZáž‹s±"ÒH`{@Æ8.™!êý.´‚1x¢Þïú‹Uµ:æ¦A7ŸK±,Dg'¡Õ¤[=û²²‡Õ ôT 9¥rZ»kÅÚ=¶ßß$Þá3öÚœ_‹%éô¢”žt,¹IѬªÉ¼ž3ê%†Öù¿jbÔ.¼´Ú¸X(ív‘±»×Ñ[g¦öT]FöîYÎûŸþ¾[Ïæ(Gé®ì˜Š`ÚNŠ8*6•:íÖ[zòk—\J¹]ð; tˆ?ös‚ª¡Š¾¸ŽUýÌÖŠ‚ÚÍÆÈáý$Îõç›39;ñŠ&¹G¾ÚT|g;šVYÉü‡=ÌTeùú“7­ 2N ¾%½ø_úivMã}Ý«R¢†tS®U-½½ï(¢t)Fq=vßʆ¶›9r¶’,ݤĤq8ê+ƒRÎ}×y«d²v‡I™9M‹9Lá×eä¨3.jL=x€—¢½e‚Aó„VsE8ï.½U\¤¨+J‚è„¿N¾Æp³¯î{œºcWñézÕ%œn˜ÔP(¥/Ü÷ÝÈz«Áu¾9·÷Ë´êI8Êdƒâ|9¯êÂæ.Ò¨IêE6+]rg ´')÷—C•ü˜žXQ-xß§”ó²‰~õÜŒôÅãö¹'’aNÊ“‹R ! ÁŸ—UI_ÄűY>ÚñVMœh#wµ(²¹o9Köõä£Ó²§)ë@@ ¾nìK!aí,S4§X¯’"ÏŠ·â˯ŒŸFŠ‘…·'£Döã†X¨¼¨’¶wùoÕoj¾³90’Ýa{` š‚L/ÔL9I¤Àî`’5UÁœ-з–ݼ‡e{®/xQÉíez„_ü©ñŽÁ¯ònÓ7<4mt§â‚ø‡«ùøo©nzò¢…CÔÓ §˜A9‘*š6°º©Ÿšõ±'sÅ&ÜlxE•ê+T Õ¥½¼Skz‘.çÞ¿—ŽŽ8óŒU÷ˆ%ôÖha™†À½öþå誹ȶu¹F ~ž@Ó[Ï¥ü„ÅÞLžïnsIz-Åqµž£ºëe££öqCÑ«\¶<^§˜3»e~F9_\4« t8Dßriج¬}‹•5oö$*í'î?áàçx¬Î´•"TÒ1UsH÷’ê-œ~^+%¡U{pÜÇÓÁðð#YwqÁÁÝ&aPíŒÐØâ¤‰­Ê%¢‡·Üà¦éŒÅ²v…Th4®ºav¸gja`Ê6ü]\ØÀ‹Ë+Þë3ÝGw™sKû¤t4l¾jnŽ£vðEAßúÒ=d-[StjZÚ~Ž›^ôüüëfZÚêøP3¹¾¥›À#mq7²³%-¸èð¬ N&F¬CžA­x,6fõÍD_ZêI>ã_׊æ(Ìfù–Fí¸‡Ž'QÑ ©«ò‘’Ô‹=þ|©”ñ€çO{îxJ¼áì_ðuN+á…3s‰0Íj?oÕ jœO¸Þ³û*› ¤·‹ºéˆ2]ãîÜZ¾ dœË+_È?xD9\ò¥WT"ܱeu³ÙWKXÂý•­‘aþþøC>ÛOSŒŒzê×x’ï‹'H0%ÕÜ/š ~È 7W g§Ðà·Uxk¬®WB=ßp:6à°øhÝn?9GŒ$9%j•èÓÀJ šâ¾êtnÐ[ê¼Ý(k•Ûë¹:ÿbï“\»a±1Œ=R»Zß­Õ´)y x¬eúŠ+,ætÐ;c"ì[ÂÍd4¢iåÌê˜mÍäÂ35÷D½cFºé5­AÁ×ÍÞHŠªÒ%DQtD!Ü|Ää ¦Å =¯„“ÞNÝ”#¶×0zþ#é°qЦ¨õ-/Þ/ÍâhªrC©~6á‹ìÙØ~;ÙÝG5ÖºF¡ Mþƒz¯IåáÂB“¨g#WOU˜Ë™i.&?épé£Ýì²òg6¸ÊåÑJV-L›t£8õ<\Ï]…p„_ú¬ªÄ¬òoì•ãsË‚&,yŠºxÂÚÏVFº —Gõ°·Í¼/ »Ö9X¸Ñã’hî%¶kšõìÒ·®ž…ÌÎ?R+‹’Ž3y‰ô¾†ðô5Ö;ŽºªÂ)Ëày‹¨û0\æA®ïã³Á=)d½˜-”*ÓD/ŒRd›L×}T1è¯Î6‚þŠãSÊIÞ"w¯¯ËÉV$Aí²–v–¬3ô/äQQ‹…§¼‹âº |æ½ • §åšŸ\£û8ÒŠ¢AöÁ+}÷h³¤Å®ôPnÕ¹ç[²|2}u^c(hÅà>¡Hý\ÄI-u¯fïf[`¸9–Ç£x«úãUCαwÅ6z5tz0#KÞÅiÖ²¹–Ñ÷x̯õ0¸×H’“ä3·ú…æÑ8M¤xmL}³ù±Gv endstream endobj 112 0 obj << /Length1 1398 /Length2 5888 /Length3 0 /Length 6843 /Filter /FlateDecode >> stream xÚuTÓýû6("LAB¥a”Ò0º¤$¤[’±ml£AºD@º;%¤„$DAB:Dº‘þ3žßó~ï{Îûž³}?÷}Ýõ¹¯ë;NV=C~E(Ú¦ŠFáøABÒÀûÚÚê a ˆ€0€“Ó‰³‡ýmp>„a°H4Jú!îc``Þ¦ ÆáÚhPÃÙ‚Ä¥AÒBB@a!!©¿hŒ4Pì‚„µ€h à¼vtÇ á¾Îß@.7$%%Á÷+¨èà !`PŒCÀð!`{ !‚„áÜÿ•‚KÃ9J ººº €°h \Ž›èŠÄ!€0, ノ Ô;ÀþŒ&à!ØßC´-ÎŒñ{$†ÂâCœQPˆ¯4T×ê:ÂP¿ÁZ¿|À?— €þ“îOôÏDHÔ¯`0‚vp£Ü‘(8Ðiêªj àÜp|@0 ú¶Ç¢ññ`0Òlƒüj TUÔ‚ñþ™ Á qX,Òþ猂?Óà¯Y½vp€¡pXÀÏþ”‘ïî‚–û…vEyþ}²E¢ ¶?Ç€:; £NÎ0uå?¼ ð ÃÅ„$%D$Å0' Ì ‚üYÀÈÝöË úiÆÏàíéˆvÚâÇ€y#maø€'ìâ0Î0oÏÿíø÷ ¡Hhƒ#Q€²ãÍ0Ûßgüþ1H7 ¹ž~  ÐÏÏž,ñ ƒ¢QöîÿÀ­XPMOQÇÈ”÷ÏÈÿq*)¡Ý€žü" ¿°˜$$,”À?xÿ;ù§¡bÕQ¶h|Äï~ñõwÏ.HÀõG!ÜÀ'ÓAã© rýÃt !1!þ ôÿÍ÷_!ÿ7šÿÌòÿdúw¤êloÿËÏõðøÁH{÷?í›x,"Ö ™˜ù™-þÌ*;­jàÛ\?Ò3Hs4~e¶gÁþZkÿ®4v/DiÑžÏÓІávI¯ fü&Y°êìwT<®¡kGõj DY·ŒŽ¼½¤æ icäàx¬ Gë_í + €Æ¦êmý1ð–Çg‹êjà 0•ý“®DÜxQÁé™t_‰Ä¬TÜÕ¸ø8š¹­(/A«ZùØ(iFÚ5’,]è÷¥µ= 'Åu%÷å/ Ë&5 ƒýd¶³ ·®UyôãŸ6÷·÷Fš¯O–l 2:T µ-_ò£®ÏÈë¤ë¡ÍÜ›Ô 7¿Ç"ªBªÕPpgítž<¼xGBüÖ¹½óše®RïI¦GЕn¾l“³x%lÎ_lò¨q© Õ‡_ëYoõ›Öz.±ZÁ½Ê\f@žþn"1”åïb+;²4I—jæ!#Ó] .¥te& Ú<°Ž°…€Ù2š?Ä‹B¬\éI¤Tj°À#•Æëý$ã>å—š 7 4U[¿Ü\ݦRO”iƒÍŒ%ÈæZžz‰¿ZT9uŽçª+è^®Br«4)ŠO†=•_ôñ?Ÿ¤•LfÔ¢æ›]ôªc¿#U˜F ˜ÝÙfˆ™è}ž‹d€ó?ãì÷–ôñfµ|ª/s/Žs¬ÕU{@RØcsË+aÆU:¹•hû;®’¼®‰\•,iX ŒÐRìR’l%ªux1dûä"í%q‘Mê’†ý|á“KYfØfÊ$£eí“7ºQÉk.a+;zËÊ ñêTLù‰ý;„ÆÓã’ß®Q±ðV·z<ŽàìDô,2¶NÙ|¸ÉNóÕèŠs=¼:l4ö`Pxo-W™©übÂ.—;œhøæi÷+»>ú ?ɅŶÕÎSp.—‚wn•CÒe`aßP³èÀJÉ^!M$´ŽS£Í|{º¿Ø1‡§K‘ ‡‘šügã ÝÇwY2³\ Ð=ù¦ïÌ€|…Ç0³Be›¬éý˜µ©€= £~BFǤY œ0GF·¤¾BÌÑŸÇÞÖÅ–LUTÁ}N^4š\aAT|ÕÈìå~ÌüÊ“4¥0í¨l©3ôЗñN©eì‘ Íníï¦]/a& ,Åå^/+“z`[,ï;©®ˆ–Þ_`Dyé²…]søôp¥'µJùú„⻌“žUf²ÝÜÃÔ‚)©Æ±¿‰ü'»oíP•ñ^&!®–Ã`#ÞqÙNOMUyI‘+PNqÅÉúÇa­hNî23µAšÔÙg÷cß­Û]ë£'õ>)ÁÒ§:¬MúñžsÍ£c`ØD%³LuŒˆ%KàÚ:ƒZŽ$nþ‰þDð ‰N³Ø=ó¡^Ç$céUßEƒ× ^q›ºí6ÆŽŠ]ŸÞ÷½æ¥üï9k-ï!ú ›>i²V´@‹ÂÛ’ ¿˜ôUŸ9](Wõ‰„ÄRÓ(o’|@"Δ¿‘ïèùíŠ9KË̼kî7×¾ìLƒË8Õ>×ða<“Pb9^{ÞÔT³s®çé^Å  VWs[í1ÍM£‹MöÝÜØ½|‡¨:ìšÇä`Î @n]êz”(¤Î8¯"u¡ÝɃî:˜L7HkÛÐ1WÎ^V¡¥÷™aó’X ¼BÖ¼eÙØ3ňè¿Ð’Sº(âT:U‡§O™>y“²ŠÈçi0Bê†Ú OEg½K×ÉTÍSÑ$ù<î« .Žá~‘ºuséè©%UcíñƒœÀÝ…1UѵÎú½âï_ˆ® tâ JŽ,j‹ Û]Íðä⃒µ·ópÿ»ƒ7–j]¨@ªöb©pTÖEÍFN_çtà$ß`Ð øÞgëa‚•ýI¹´òÖ ÷ã7r×0—oˆÜ¸eÁaÑA›5ÒÓYyP£±Aä}) ~ÃiîªÂÃw6ésÏÔÑÜ|_+Ôç3„<’||/Zý.Ïô ‰!3ÆÉÁºt‡d#Ìd=Î?ÜpKTXXã-¿¶ìG5ªLº7vÊp©*rPéÙ©™˜èNž«¶Yñ² ┪ůªjvONF)ž÷Ò_çpù!*&|UÓûÍïa\à¢[QV oÏ„âEú\ñØÁxAœ‘ÎGrUvƒöúšB=t+bÅ­ƒ…·ÁHÜv¢ÄDýfýhc_,!B©ï¢«ÍÿÕíß=»eê>Ðd«j?ó…ñ¹žnW˜É»\¢–ZéýñKk¨’"žˆ¬°gÊ%±w õf[0Ûõ^ň®|µSu_? (Â51ÿzkEƒÏôW×÷ùêa|f ´m-‹8Rè JÚ´¥„ÍÆR3áüÃàìDØö€òÉøb¥[.êÓØÊ–£E?h‹ŠkoA€Xc\²òfVÅò¢Ë^ð,ÆæîZtm^q¥MY´‘{¬ç±¨|#—òÜÞ $ëÇø ƒâ*ˆœß­½SR3èa¹Ý20šOûšÆh£ã{n7°}ØñéѨç†ÙD$ÁŠq$‹ŸôÝ)âÔ‚£²ñ;G/òï9 ŒÆìRÚ»^Êóèì ½ÿ*öá„}<¿9Þë[f¿sL«Â^`-iw§mf—Ù,'<@ÞàÑ{ŠÔ ñô+ì‘»ßVùvåòÔFÉ,(Å*Cd¬gÝ),¨¥V¤cŠWÛö¶ 8>öòSö) ïGÆp`V¶O*ç>&%Oímotí g_ra:#¶2µÏ"Æ—òê 9æžß7øòc¼¸K‚µT¿“Ü£Á»qaé÷ ^à<­kè%ˆu“mߤ5ÃzëŒCvè ÕMNŸ êa€úèá¿À ny@‘ŠçÂêØ ±í>—=³{¸ð†râžÃ›Á ¡­ i¸P·½èJ«6F[ëüÂZöºÕ«b&ÛWU=ÑÔ“§BÍ}k--_»=ä .úHÖF´ÉüŒ,`ZzWM<€Y¿wöܵuØDxè†Ù=@5Ì3’6S”Sèqvd S“K…°¾éOèÅ3#|íè’VH^ñ–«.­kk]PêwG“ÁÌ@ëjêàˆ@I Ùï«Öü:Åörg½áù /®,ßOx˜ˆÖÊ×éÓM«ìøx™ó1A@лó8Õœ§3GvcÑ‹V;:4{‹ÀfÛ×yÄHœpúQ=ÈVÅ©ºÛ\ñmÄY„ peMÑÐ2Ø48#ò¸¢d6­°c-6RÌõ˜*þ¾Çû‘RŸ%i§sÕ‰G«<,ÏLÁ/ìjƒòQšê ñ–&Õ°.šÃÌB?vFÖ5‰¼l± ¾ö>‰WKÁä'ÛbV[¬ù„Ó÷ëIK_ic‹aÃ9 ºÚ,Jh¥~±û$Æã×ëÚ3^Õë¡ÈÜßhÖ§’}ÐáÖ¦¿»À¬¼·R§Y(ª÷3qüâ]LaÕ¢Ø0:äw²“‘R]@g —Dº‰Å­37AZ‡hx*ëlÝ?¿TÊÏ ì"Q\]”|!¢hΖ·‹kAøÒÃßM$æÍ÷ºå€C$Qä>”ùÓAâ%ö~¯bv®sñ#¿>¦„bR_ººçùÅ7TÌ¿xùEǾ§6 tk@Ôˆ½1:cèm$i¤9M”ýªU}íÖ-„ëù@Ù3·§ò?ØôÔnꦨx¹{¼ÐìWÊ8M ÒßäHŒ4›õ,ØØë ¾CY<V('®^—uÄ}±ªgw2™±¾Ml¦TÏí¯Ä>Æ8Ñÿ–=zÏêǦô]0ˆlûFÚ’ZR)…þÝ-òég”ÈB(V½6‰nóŠþe›-ã1¥ÜNþ›¸LØ{c#‚°lcþñ^®Ëö ŸoÓg„e¼Õ®~ÄЙ;Ødº<Ü©þfép/#°œy=Î܇Krþɤe¾#âc¤MZ€_Ò)Gb‰NrZâxÅYÒr@zNMÆ_“„LØõ€Ò*»o\¾/i‘Pa T+L,¯ióªN—Uuz6‘~ ‚ì,×›X_·*ÛYU÷-\&,ÚøX9u{Ջ䘌½YtÍað)¶­L|“‰@!ÚÖv3Ã~¿4¦Y];Ó-²=×TLÖÚ¿ È­~)×&{%Äm}Ü„4d³¢Tsµ Œ®¼„´ð*ò®Ë¶‘A·’§ç[‚B=ǯ$£Ú AOÚÉNŒ›wew\r¾m_v?ÙÂ=ÌØðyyUà?3oÒ$çÏjâHî¬ÍIö 6°#Úd°4d–]+Ö$˜„Ù?R}O°¼óе`;åÍë  ñÔ“NïÐp)},ƒì¸…šÊÁóÓUãŽG—ö߃N£i£¤ßN3õêT–—­WŒ$è]5˜Yjçc¥¶ÃiójØ|ahZ—蟅«Â9 l핯ô¿ÞH&n&Hó }ó âMx“ÀõHzÿòRk•Ú^i>çp?³Œ¨þšqÿu ÒÆy*~=‹£ó/íýUØåÑ»ÃÊ2_‡öRÁ•ÎÅ˘a‚üGì쬶MûijßF‹6/OnKÌ?}" Q ô·§|NÇeiG4í”OÙ¾AòS¡UxtI^¶5fhÙ"ªs7ž’à‚“—*=«|öfJ AȸJ(ì/BOrg h ³©5ñžàÊ5ÉŒ®jÞ„áá‰ÙÂÚîµI>Óí…ëeõÍ,¾ôåÞ<¼60å)_¡¯aUì›.ŸK/èÅv=ßPÉŒ›Xõ1,4§Â¸2zß3>o«…¥Š©$@‡*~°ÖKù7}2¡SxœPé8êý‘´Ä5÷”Émh1Œ>mÇ«ÛÜ–›_ÌgòºyÁ$îŠYÄ_ªóo(öhJ/ÂÚöȼÀ=«Ê¢€ð S ^¥»Y(×N6oY~ßqZ¤ßZñâ+"·à׊ ;"]PnÅ)µÜÖlÈÆP“÷Ö’I‹6ÿd‹ÆjŠg¹¥âǼ`×ÌœYß’Ä9ÈeÊñг!¥å­1‘˜«‹¥7  ªÙ “xóõA?öPÅüU¥+øÙ‰§ùD˜vì/Gù¬¼ˆ?ß°?ƒ_¤jƒ_šìœ¨µ×u++<§3¹ Ï•-'æ›2ᡟE/µÊŒªTDõ‰‘3mc* Ÿ&|T²-Hyt(uý³1½‘ ”6ö×븽Ñ~L©nY!Oí$ÁqÄ×¹ÁZñÉöû}nãôgyá˜dùÕôjÓÍDLK~â«dâKô$ߘ¬œÝÝ™P×Ì +˜sX¾ÌIÓ·LÉæ®|þØöó9¯û*Óëº_øµ‘¡t’¸tV5æ<êIç™l vÚ­‹ç „^3Ç}<5ï˲ïÂ¦Ï  m! +*Ú|i#y4Ì´Ü~›RP×y'щË$ðìÙ1 ƒ€”-O÷À„‹·Ô.:5ßÛº%lMá’'Ä¥ŽÇ9E' —ÏúBJW%ej¾ä;™Í C/‚(__‚‘xÕìîŸÈtEÐo­¦«i´õm’j¿z(ЉÊR·½°r‰}2×ò“éêùÀ&md›‚Eè/½dÃÿÃQ <Öê/=ä&|ˆÂ¾kï xpímTëýX²ORcÑòÕ"Ô|°è$“øÜ§kåÚë{‹´/¹:âÍuÖÖŠ›»n]^{¦›Â ¥=ÃTd~@Ý $1Ë™jRÅ)\u›.·8¶Qëk —kÉóÆÎÜË'¥*ESÛÝ#È\®W› Á”Ï{îôb™ê¸ ‡‡.Ž4+ &±›ï6wójóë> stream xÚŒöPœ[Ö ãÁIp§qîîînÁ¥qw—àœàî®Á nÁÝÝ=¸sûÌ™™œùþ¿êÞêªî÷Y¾žµö~›œXQ…NÈÄÎ(ngëLÇDÏÈ ‘Sfb02²Ð322Ó“«Z8[ÿ-†'W::YØÙrÿÃ@Ähè ’‰:ƒìäìlÒ.Ö&;77##€™‘‘ë?†vŽÜQCW €=@ÚÎèO.bgïáhafî JóŸG•15€‰‹‹ƒö_î! £…±¡-@ÎÐÙhÊhlh P±3¶:{üO*^sgg{n777zC'z;G3~jZ€›…³9@èttšþj ohü»3zxr€ª¹…Óßr;Sg7CG $°¶0Ú:<\lM€ŽPr€Š”,@Áhû·±ìß´€s`¢gúo¸{ÿÈÂö_Î†ÆÆv6ö†¶¶fS k @A\–ÞÙÝ™`hkò—¡¡µ“ÈßÐÕÐÂÚÐdð¯Ê âBJCPƒÿnÏÉØÑÂÞÙ‰ÞÉÂú¯þ bYÌÖDÄÎÆhëìÿW}¢Ž@cí OÖÊÖÎÍÖëßÀÔÂÖÄô¯&L\ìÔl-\€R¢ÿ6‰àÿÈÌ€Î6FFF.Ðt76gø+¼ª‡=ð_J¦¿Ä |¼ìí즠&€>¦@м—“¡+àìèôñú§â<ÀÄÂØ`4³°…ÿ$šþAÃw´ph3‚v Àø×ç¿Oº õ2±³µöøcþ¯ù2HHkhH‹ÐüÝñuÂÂvî/:VF3#€é¯%ã=øüoEC‹—ñ_)[S;×ßÕ‚húOÅ®ÿ^ªjÀÿÆ’·m-@õgÉuÙA_LÿŸWý_.ÿÿ6ü¯(ÿoKþ w±¶þ—šê_úÿµ¡…µÇ¿ @Këâ :rv c`ûM5€Z9 ‰…‹ÍÿÕJ9‚‚­™õi´p·pš(Z8›ÿ½-ËÕþ:eÖ¶@E;'‹¿®h4ÿG:ZÆV «Ã ´’ÿRA'çSŠÙÛ™üuÄ˜ÙØ†ŽŽ†ð !ƒÀ‹ tM€îÿZb½­3ÈjÏ`jçÿ×DÙÙ B‰þFìá?ˆÀ òqDÿ .ƒØ#€AübíâÄ`úƒX Ò(»ÌÊ'÷òÉÿA | ÿEœ |Š3€AùåSùƒ@ùTÿ P>µ?Ô­úÊ®ñ²kþA ìZÿE\ KÃ?diô,ÿ‹Ø@:c;kÐpÿ#aeýKbcóÇÿ¯©3˜ü‚ØþÌ  ‰¡“ù?d A›ð?2F ¦ (ˆé?à_J‹?e±ü]ÿdaûKoçâøp ³@P’±‚h4÷°7ÚþÃ$³øqkù¢ÌêÄ‹õ? ˆ4›Ô"äOd6«-è,üCjÎîO1 g»ÿQƒš±ÿ£³½âl­¦Î¤Lÿ–þ}=ýW ªÚt)Ùýc <ƒÃŸù‚,\ìœÿŽ…ëßÒÿ ÇÄ¢í¤28rúÓÈÉ hcñ¿ Âö— ÐõÔ²‚8^ÿ-Dˆ“õÿ Ÿ TÕŸ´ [–ÁÙÜøù‚Hpv³û‡(†Ë? h®ÿ€ ÊÜþ±< o÷@Px?Õ€\=ŽÇþŸ«ÉØÅD°ó¿^ mýþ×_ Ðh ¿4ogÌdYÔþP#„çF·7Î7C¾§‘BMçµäØáò„ü!‰º:ãë†ãPÒpÏÇÕ1ª[Áe¢W¯“–†¡­ JmÏÞ/úqÊS{mð‹“˜'Bõýpøtª‚ûÞ¯ÞêV-à?¥És\8‘óÐÜú$ÜëûËVFCæ÷”ö«Ùe^ʦé¢Õ¢tŠgÉs2ç°I`œé`?£^º£ÌÞÞÍ fO¼IÇÑÀûœF³z}Ùdþö8ç¹V¡ÊìÔ…C†ó›òutŠÂKø0YkÁ«¤pu`ѽ…·(‰öû*ÝGúCæôj åHÛ¦ÞZ×Ñ¥N¦Ýœ$@%ÞÚnBmiº¾#‰Fu›~$šs-‹à°ÓTx­ýN½ÛÔò;þ2×tý;`IËüÄ¿¹Ûë¹Áamxd€î>ä{ëÃpÓÈN·F±@¿¾™Óg1síˆÕît‚ïÐeÎc]@)ô´Ë®Iœ/ІÁ¼^_ ?á2m02~á„îÅ?gËñþýͧ²ñR¾ssöÓ‚µªnà{ »ü»ÑÏï——8æ,b!T¹ébÝá¹ë1”JŸe¹í™)øDÓÌWå¤S·Ž~Ë\ΧӥN¶!*¦v 7¹ÿž”=í.‘«d;XŽ—³kQM>Ÿ˜E¼0/Ë †U«•öéf§Ðš8Ê4Xó+¬ñá§HX°Þ9Jô¡º˜äßÊhŠ,b¹ÄAtܵŸ(?m¾M !K£TÓC/õÕ‰HƒI;—QôzqÀIJד¨OöNvÌÍKÎá%\G2”Ž ‹/˜¹‘ˆ³%ƸýV #ó®~°Sâ?ÿŽ€0eàûƒ7“‰±Ô6õ·íÈæ¢¡éq1c}Øür='h£òȶ±±¦&]`Ç@àš#ùA4Z;©óšÓ]‘—•iŽàšÏyâAl‰‡=µ¥ÙÇQÆ…éˆå9MM Ú" ³AÒ¹²njÆçΛpþÍט\gÃáÂ_§µuŸUÕ•X;]ÿ^ª5¯æ¢¾úc`ß8—qƒ üJNúQ.[‹±b4ÆÕ‹};q^ç¡á˜í0œF‚Ãw™˜©:­%C¿*ƒ}5't–ýsZÛç"¤þ¤ò©w®Ÿã%}ù2‰˜ÆÔØ¿&î·t.Ͳ+)Jw¾MôÝ<Û¨ž¸u$ì·“å˜Èëˆ4§Œ/+ÜÍOj0»r:ËšLWíàÙøî2©3D ó ÖÞ<3ÆwkåÚy>’=NÞú“÷UþœÆpÛZßbÖµ+ëÝTé¿ H™ÿBq9̶9‡ÁândB†]L6-ò`¿ÿÚµ¼ G* –µeS¹r£(¥;™©©Î’ð|(á:Ææ¢Œß¥}m—z1—j˜÷ÚU@ §0AʺÏÙ`@[4uQ ‘ÈÛô 6iÌ…TbTÚ¬‘3.¥@~2H;ùЗ›°‘À`zÛ›iÝA®(ÆœËM¨.D­",˰Ï[†yΆV&’%”¿qŸiÍSåõ« Š´uQÚV&ž6,,ˆÓKyÑ.þSwŸ*Õ®¾Æ%„‘ЛŸŒ·‚>ÚüÌwOoøqH»r‡ïìþå9µz÷†ÎYD°‚ L'¹ ™`⿉°x’¦î£ÈÉ-LJôy]Ó†´©xoõœˆ÷ƒCµ.{,'鑿¯B-ª Çhãû¨SÇB­ª ­XàÐæ^¬_(£b6cv´‰GB–u(fÒvÈBMù»?@aëkkª‡}¼¾QÊ©FRU|¿u Ìy„ŽÐÆÛ¿-ã:ú™'<5'¸`þŽ Š2 ±öÂ…½*ÝÏÇê šb±³àJn(ºNyâ¨aè×d¡|)g"ü\¶;Z#G3hdïÂãµV6 P©Ä‚y¨®Î³˜Û>6ƒŒ„Z¥@¯µiAÛÎÉY>OxÚl–ͧ÷)H"¾ù$#þ škôœשðÍšÊÚ¬ª;sÙhº2z¸ù°l.yî—ÎÖë£!«Vͨ/ œkÛA½°¹x´ï¤gu–çdò-ÝÙ3®öCeþA÷<¾l–'Žî·O—eŽ…ye®ò¢‘r\dR²o B‹fx[¶Öìà¡Òp1â W¼2p{'Šc ß„„°G\CüÖ§­ó(´ö(—ÆÁ4–'÷)ºòdo8i pKÓ.pFY¸="ðœƒ}žB’…sÙ,àðôWÚ9î-ÛkÎLB.•e™ˆöBôÚ¬ù*‹ÌFn‰4ÆçÒ‚sy .¶9¾èhÝB?I*1¡ïn9 ‡½N›;ªÖ¶¼Þ›XÕØêa*~¶þjK²DãýÖå‘?¡¢uÚÔ9“Á*§ ýµ ÍùÎÉÓ5?Ï%­ŸçpÃ9¼][õFŽ;äcŠÓ×OóC8¨Lâî糇ß7fo6qÑîê·ËŸ¦2ItI=}±¿Û»^u#e„Ä¥Þ-ö—Ð; s…“aØ6k‰TŠ0=õ9—™’Þ—p‚MZɇÎFÊÔ€çÌðäwÏ&Xˆ?QÁ ,FÉ_Gólnš¼Uô<ŸÇW~|ÙøÜÁ;P”›´Ó„VéÔUÄÅÛ(ƒ$"f¬~”g¾Ù1ÜGŽ¡”0.^h§ØÑ·=õ)Ь,¶ƒdŠ…¥ý^‘këôK´W(8¥ÁN%!Ò©ã²Æ#·|báéÓÌí`b‘ Œi b†ÆZ03«j©µ'Â>Ù,³ÆZÛZðÀ©—Ñ{þ‰BQ6ÚȘFïgqTÝ5†"²(¥Z¸°áD¥¤<ñÏe«ª˜¿£õäw&úùr!*äªõò­21Õ°4Ê©ó§ÚŽ…é/CZ·ýhgZ@ŸöÚE|ÄÂÈûE­Pŧøqqp5±¼Ó뷨˙À®9É(ʺF~ð/J‚ã(RK›Îäù»ïÉ]Ú%Ô}/9æã¶™ˆµ8GZ”³+†=?T{Sj:úÍn¤2ØêÛ&AJËæb"ÀR% Â×äüšLƒ¯l”'ð’oÜX¹Ô³J7Zï±=öÅ<3­Î×…]1,PËoé÷z CuݾÝXmÝÏcM¸aJ!óCs´z?wJB︾²ý²ù9µ¯ô~ÄéöÒ.ÝHÐ+Îc–XD„(Ò Ë–^ÃïËÓ Â}F,[„M#û`3'Å2º)»êñÙt Y^ûŸP¨Í(ÖhˆÞ-¾é œ‡OôÃ}É?hLÇ==J\‰¶ôë„=«FB³Cn˜\gÛaa ޝÛoB{5Á ó‰9qæ là“WB±ÍÜ–ˆ?ÀÃ>pì‰Ãi z¨èúþΆH­|´¶ž?ªH€#JÎt%f| }k«DiÄó+yf°,Þì_Ê%öY7H@u–*¨l‡óš£_ÒÂÿ-¸h‹Qî˜üQÿæÔv5 ©SáeÇYHšNÉ69ò»´þ:¦ž~ðŠz|£oæ@ O´aÍäY‰Œpèú%;°ïG÷*Qu\3<â¡õO%û¸Üò<¿ê®™…W Ñ<Tp(õZn¹w¡¤k-ÑÝËëŨ%FxÆ[1V” ¾•&Z©R¶\f}äÉâuÀ³]Üu p¶–aJÐì°á~‡wˆ[ès˜. ØœôdQ¡éÂÏWdêõ%C¨0!°”K'Ë-%YSýži$ƒ%l+í1ØØË³Ép€k¼#¼©{W× #$“+7¿´ÌT³ºD«ùüìï;è½)AWLÿJÖJ:={$ž—‚ÕÚ+™ÉÆ‘!?4.«n>%|Nç^•ÒÅóWaº^Ï´~2GÕV ‘5/Ó¢Ûûê«âøæaÈSÔ’(›ä!䂊Æ×…*ÂÒÃŒ dó_Û˜¢Â…ȈãGÈì l•´ Íû¸ã„áˆñÕ}5~Ÿ¾‡yr¾º:wÂê{Õ²uEr5)ïÁrZÍ0–ÚtjWÜ3Ý i°I oGÊLPE’"™÷º=þ èj Ɖ)þ_gG½¶Œ¥ÿÚ°RˆØÃ£}‡û÷ z–1q¾û%tòW£ ¹·ùð-S–äô“_Eƒ;$¥ÉŸ*(M圦>Ìij¨½ú¼Ü565kõ5Fë!øÏ.[Ž Kv^D*H¾Ã}#ÒüÉsZ7~å·-Ýìš‹\ »J O¶ô¡ e…RÄ\ €-•7Hû• íìWM÷oÁ„JìL¸4Ê:ôT!?ãˆ#k; ð9ª«G°¦bÒƒ…I[-/ËokW‚*ƒVJ)ëœW¿ÍZ⽆—ÜÛÅž‘S¯Ä<±ê” ¾q{ÃC=„€Eó+HƒÌ¦óôû‡'ÄJNU2Ç«äµë$xSc‡^¶n_â×5ݹÌ'¼‡®Sd5ÚJðNçê} nÉ«œN…ྪ*} BÀ¸zç›Ã$ &…ËáfwØÖï>ÏÀ¬àtÉ/:ä1jg®‹]`„H“ž;zØ›¿„£=ÈýåU·›°ðaWižl ´Û KÇ?`ÒͰÝXì,H ®Æ˜N¾Z5+ÓŸ¤ß¾ºRúÚУRŽ©ìôˆ¶.Y{¼as$`æ!jÝ΋ÔWöÛ5êý¨–paÓ—HÿðиÄTôŒâÌ5‹ð¶=º} ¿É^ËTi¦ÿ,ÊïcC³oZfÆeNFðTÒ®+x!÷h°¨7Ý"!sÇÃVSà6xÒµ+åèp!TÂb*ôuCë“…K…ÏÚnïUÇÔÅé4ª–ãÇ#ÑÛ;î˜èeÂÊ…k€!çOˆ'te±´èÔÛ­†eíæÛ\Ú³Å.ï°*Ø\2ñ8AŸúTeJ 5ÉvÝ̆~(joC¸Gâ9 æ{@IQ%¿·[~d“-.“ê2nôñ6'ì"‹óÝFS›è‰ukÓŠ¦éx­øÂ=~qÐ7QПÁôóªÑÚo Ø…7nàò ë UqJ„1¿vØ6 ·ÌŽwÎå1õl`x™‹Z4„¡]=ñÑ`ºsT,+¿Ç ·úÔ1×sßâJÖ0 ÕÇr¤æ`Xð9?bϧßÏeÿBãô‡Ô=ÛP§o)Œ¶Ÿ‘½«­¾”z^G& Fò7pžÙÓÉNQ å?C^Èð JÈ{ ’óÎ×~;• ´ºþjÐÓy ÿ1ÿª4²U"odL³ÒÞ¹”eG½T¬×î9umvl6f¸û-Ö¥A~’ƒÿ”z à:UÒ66 ¢µ¤RˆƒäÈK4D™—ÙùU®ðæÑi¯ÈÿÙŠKJó&Þ4¿4c rû}âõ™m©HSì´8ùãýñq×d/Égéä®e-ÂjXüCè Ë$Šé%¡CiDšòý°Ÿ-m°¨Ë¨|·Éò¹{dì®u*¸ªZŸÂIW°«d¿¿³ŽŸ¤ƒMPÞÞ÷>ú‰c™¨KÈÎÓÒ`:aTH¼lê14—:4ôB ß›Gõ£T<>~!¬ð -uDd¹¢¦¥gÊ- ò[Rój˜ìʵ‡ñ¿/ä ¿ûn7ÏÔE¥ç¼¿·¶j¢øL‹8F a ¨ "˜b¿B¤äÇ'*úð@GÌ´ËÜÍŽÇ©æ4!‹ß?éà¾ÞëÍ&@àB"ð¤Âuy+Duú¾"IºÌ²¿+õ¿N¦Pf*± ñ¸“6#b¹&Rå.³4út¶BÞì,÷$Wáý<ƒÀQ}= Ç]·¦¦Ÿzû"»»Q×ß:ó’Í®ó£öAî¤8ÏGZyŠJ4‹ÒZy¥n©+ÉÙ±›I¢.Uî3ÁEñ ¬ùw„*šÝkŒµ¼Ômæ›ó0¬¦-â¢Mæ1+ô‹õªÔz*ÐSt„Á¶n>¯´a_ä›Å0&EÀoªï´¢•¡ž=³w—,íÓ:ð?ÏÞÞ´¶Ø b°Ä}õÓÝ»£!Õ²¼#)5ãCƒ$QÔæ?²K!襬Þñ¿p«ë?C óÏq}–bôÁœiÔ!ñZÄ€½`Q[öø=ì²+ža 9ºT|«¸Q2B-ƉòõE­0ãɺêÒ -â†Ã,÷¦‰%iaKõ*F˜ù‡A„ÂŒv';$ºÁxxH Ž˜’Jo¥ÉPˆý²§=À—+O'ïà¯>ù}²s *h…Üþ¦es6íÅ=B,1ó—*Ì}|8qóÚõ&M‹ /Ò:«õ˜„•øW˜Æ§ËØþ/(Þ0¿œ;-™¦Ò…ß"0ªº¦ªÞpF¥]{heˆ¼Áᮂ'’Ô×cc3àS^Ò•‚´W×yÕº5¹ñ¡¾.¯ÓÜ‘oÖÂÉ·­ «°q…<v׃G—e‘ôÎ÷eÔ›ªµ¯íê•jôìPÕ}&D¹ÁT<RcDD%ìë¡Ë;Vöjyò†P`9~ç2‘Á3` ð§³€³{êü²¾B}ÈaÅý< C‡³°¦Q¨²§9V%T&A؇ٷú„U?9=*vÁ¼8)©ÈÑUMx¦µ«1LW'>Œ*&· ›6$¾M† ¦û›™œW©eÛwÒ\o‹pçhô´Æ/tyÐˤÈÞm*ˆÌâÉâ˜È–Ë1aLÍËÖ󗻊î5Ÿ¢þÎf@x£* ]IÕ^©P^Y»8â^Á®àUC½ŒÞd`«Wø`áû¡nÖ BÕªH¹óêè|pô¾ M³F7’v3Z.éÑj\R˜Ôh†žÈWâAŒç[áP*”ü÷iñvŒ®›]»‡Gó~ÑEp‘&I%Ûí=øQÿ]ÚQdsmL $¸ýÙ`ÙÞoo×À£'>6 \‘¾ 'ž8¦Ð¡[­¦QÂ=G¡Ù§ëÄ)IÇî'ñðGE¼¥äæ5Ô'‚À‘’LãWÊí2¶²<1É‹ á©ý¤v®5œÕ. wúWuŸÏ5¨ŽÌ”`½ÀÁj9“R"¦§nV`sFØI <€rU7öžßܧ†S’æg¾Ú³wžqšC½ÚîнRdpxXrÛ‘«Ý?ó-ùffp6¨%VšŸ‹¯¡5Wm0ZOPRŽôåòH°dqè3††sjšÔýbܰ5ºéf›ÁRï9™æV*A¬eãnÌ(Ì{](ºOãÁþ€D¶Ñy…»Ó-0ÒÆ ¼¥ÄÓÔ½í&<šB@í‹øÅ)ÿ0Ï=7xÜ6½I ¶&Y?¢Žçõ=&'ì kƒMh_>x‰ ?h@#¡ê1:O+ùä¸û‹îÂW¢Í&Ü—Îi\ä²|çJmæ|Úñ‘êÏ.£ÕØ'ãDwó>jjä¶ÞzÝøÝ+æ¬9ú«}§˜QÑüóÊRÕ·-åæûð§ÌáàH«x‡Û è6#,¶ßÈsŽcãD”ì'Øó´ÄP]³tÁ3¸‘R+0H¼}R ƒ4¼R‡ °`/«ýC-†Bb4çÈ^ŸY¨§È¼R=(3VLšÜ$ª[ýâO‘6·¬‹H; nâH8«’lRŽ«ˆO·î7c»ÚºüÒÛf6g”"/!´Ð>êlINÕ«´ñä€þè½ÆËòÜïLŒy$ŠIižà™s_Ãak¾}ýJ¨só›t€”Æ€ú850²Ð.ÜÓoŠfºÒN°;ÆÇ½Ê“?õg}¾ŒRP|‘ëÝ.ÿ,‰g'=Gd1'Š0f"œ+¬q½Ÿ€¢ø W@ÂâþUù¶EOó‘‹éÕ»¶ÊÚœŽl½¦ˆâI˦BÐâûöWR´^ߊݒkÕa“ÕìúͱÂi i³¼Ì¶LÂVdvÛif«I ÅÚ6Ê‹ñ>Ü\ÏÑ9¦{ÄV±KIé‘DNˆÇ¼÷;‹l1‰AÕw¡<ç3¡*ø㌫!FÒÍÄWµGÔKi>XòÃpb‚²ZŒÚ‡Ü%‰¿Oª*°µa£}3`€ETû‰ñÙç*ë?kɃå[y+D»d5Œƒr#ìÌ(0 %Ï Ö[O‰øFßîî¦`³˜©¤_Q§uâE É4‡|uÐ0­¹O/-kasx †' ˜ÙøÁ¶—â¢3 b€ÀyÍ3ɪuàÕýAñôƒeF2D!ct¸'4mî]n´·ÁÉ 1¾)Z£Ó893î:¾.„ÚƒÍüsÍuº0.Kw ã÷®”Úc{m¥:Yí×@©·Ä=ï æÔß·ýÛ¶Æïت U– NØÊjÅóÞíf"lžˆ?fËoOè¸PÂC’ðš<Ák@‹’•rÃm ÅÃ#6M ü:tÙûØ‘i¥Cuüu“nqŽV~0Î1õ n«¿¯ƒ„Çý©lX•]©âTÅÀ{јgê~>K@dnÒ¥YÜÍ/О„ò@slÎ=wý ’Q(¦”Ñ·ï-œ²Xu­_W­)‡¼SQ)<½™QDXä×”éÞÚ3ÞfW…TÇåô7µIZd†Ñ¯iøe°žè}ªgKêÚ>YPk}0a}Ìü‚å4ïÀ»I¨ŠÔÙé¢ó¾Í}¬75‘°ŠMÎx Þ±Fð&š(&"¥»¸ªÚfùQjÊ$>¶~£-h5€÷e£‹)°ÅR¼€YÈŠ;0MA+vw?‘qÆRÕc«Y:Ñ2ƒ>@ÆŽ$2ì‘à:Oâuá>¸^Õ{ÁvI®ç5C÷ '”ŒÜR„ Œub‚ý{ܨÒKAÒ½·K܇ì»5J£ec¹ö«æoiçÂS?¹²øß ©¿#lºnëH¤Î#Ò² P"~ḧšf©pbzv]âzê²U¤¶Zã¥b kÀÊ•ÛN«¼¬Èî¿•ªå™F¿YpÏÞ…ç’f3ñf³’4ó{þ%í¨$º˜ˆ›ìëo0JF¹³¨×ÆcÙÖ÷Ã@~鎎÷\gº=á±ì™.'ý˜V¹³Í¬¬M.Ø|@Sƒ„µ ’âÂ`¹½æƒ*òý„?”0’Úæãf:£qwã´_[yqºÕ|mÚ½0gdGsê´{ú"𓇛y·Bûz3cg°Ö³¶9\Ô*ÙM[ÀdçKÌopý{(.ó|>;‡Ó7(^²·®W®¤ †´ ê@e½ž•·+;º$Ù­”¨©ÐÅ#­ûSÎôRФÚLåÛ tü=;ÞÃÚMŸ® "¹2CÀy5,ë)iS[pZÉšëNü kæQŒ£DE8éÍœÏl×à9£Y—Ê“Ä'¤ 1î ™aìz^~}ujcšôL‘Bñüà(æ…+þ¸D#¨B9 ¥êJ+0²KZG°Ã÷»Ü)ÓÞD’?«sª,O(¿fë—¦>²ë°«\j¥&{C‘ëQ³6Nƒ¹mLŒTê_„ï9ÒîNkKÅz¦ó73åDÎ/Æþ>Î,SÕgìÉ+™ëòÒ´ÿY5aéʲAkì+âP¤‹]ÛY—h†QS‚`eDÙYH3í50#Ú¤ùÄ,½3ÓõH4G»^üäëÄE·ñŠêšF<óóÝ&&0Ö5ø,\$Eëßâ-HàÜþ°É•¹6cZ»‚xöôå3¯ÀÑ(Ù©óèXsó®=Í@}2},¸Æ«og:Hi®JW¡ävàZSÃÿq¼ ö(¼L…#4øCÒ“”ÁÅÀÍ*ê]}.÷ ·Pw¬ð²­ 꺛!üûïè±Í×£U2ÖljC (vûý»5W®˜ ®Êv¨wo=„Ò.ôebÑçíg㫌çÊ Úwð!ôÛ.Í/ú ìÆ5ôé$X0áýx~†å1̨Y)‹]B8ßü-1,÷- 'ó1ÛÃdIærp–¹Zpc5•bŒÉ¿‹—M>Ê®½¾|¾ˆ¾ü´ûOR ‰TqT­‡Vƒš©ÁðÕSb˜η¢°aFäLú£KÆ’8B²- †f*IsÔ[Õ¼Îmä\1ÍjêsT_ÑÄî`ïeoCãÇŽ5½–éâK[ÌðÝåg¿iÓZ+f[n%jÕb: €Cý[h¿[E5qŽ®Ö%ZTH¯Uø1fÕGÌÐ8î&<)ŠD jÍNc"%Æ•ûx¹É@«áÝ[}ÒŒÉg‰8º’œ¿|áÃ7`‡hNß¶`ºý2CÅiÖÁÂ÷êmnS8ÚIzU?s›™Ä3>¹„Ö¯þ×¢8/«e!=É7A]ð©èеµ¥›e!@•U“p·ÄË÷µŒã:¯ÙÏ»1 Û$èÆ"•¥b->Ý}{’ ¾R®kSۈǣè£îƒ¼ìnSÔ¾¶Þœ3«l/ãm"_ÁZçxd8T<õ¶@ÿf7J޹—YÚM|x©Ù"&¨àݔ1ÑÖcL[™Ü,]‘ÜSŠž3A‡/—ͬìÝòë±gÞOjFÍÂxI¶›ØC ™êš2ìž6ós›¹“v¦oqfM_É0 {žZ óI1á?%Qp  Ëÿr_Têr8¸":9WŽ1k$ £q"‹î|Þܼŗª5 Ù´tŵ€ohÞ F X(½ž~Rx„s‡ŒO³ÐÊ}g1˜·Eºà?T…é†[NxÞïà:,¥¶]÷ëÂÑ\—Š]&èŸÃO§ ‡)eg› DÒ>[ÚM‚4ûŽÕ˜^}ªß?W°cV> ¾+B³ÏöÆÆ3Ù€ é§]KéÌ:¥×íTÿh*¢»×B– ÿƒÈX¥ÿdí Ÿ¯¦†#ÞÌðÁÕo¶& ¿Êê«Ì!w{rv‘äkƮݰñ>–Œ¸¶’†\+®PúéÌ´_^~–S¬Ÿ84Z ÂÏl‰Ž¦yJ$½J¿€-}cU½ hõÕ¢PÝf¥¨Ð‰j(kÔ!4ç‹Y<³tøjÇa‚†yˆ|B‚EkO77Ú,¯“7ô¡ý—žòeÝ1 ƒ¥€}BÆY[cSÙ´ó"7±‘ÐÔ¸þ~æUÃÕô/òoU£¦Ò¯¨GÏf/Æ{Ä¥Æ}ªM¹=A"êŒÄÕ5]ù‹5ËÎÈœ3äªDÏCÄÓ·ŒÔ'þ5#áK矜>¥Êkå±òåˆw'Å`¯Õ7õÔVóà8T63OA0äò¹M$Âä#8V;P.U¶U¦µªc‚º*¦-+•?ʨyÀÉÐPêÆî ±$à ¸Q[:ÓûìÂŒHu+1X tcÚ™ôÖp_‹'Ð(OF¢þ¦Ô¡1DUAzV'm/¨aáÜs.»Ýì¶ Ñš zA$s¨LWºp|kI’ˆ¬«RRÂ匦‹ƒgSƒ§ b¬?”ßrçÒ´ Kê°Jæ7׫ugïšÂ« š>Fñ=\g±p™<ÆCêèY |Ž G8icª’ÔOWÌËR*ìÆä|’Àþ²8Ù;u6ôÏÇzn€yFˆ$Ñ%:ÐýT6HZü„ŽV÷aZù¥ø0£‘˜ðð%Þ“ÙÃ"r»K–Úð@\·¬ÛñöjËcgkg–‘ÀV  ‚Ø·}ñfZ,RÀÎDÍþ¸Æ?I¤³¤^»‘Ö·N03oãYŸD@Šïx^1ÿÑw§Á±ÒÖ®€N¸Fd†²_~µ¡5œ7ƒüv¸^‚ÃþkŠYKuýùÒ²OÇé¾ÕÏ]—“Ü2¥·û¾°§“HyJ3T<=Èô pû‘:RH®j÷1ù´Qã9Ê Œ[ÓmL}<…6`êÚg –7 C3Ûš ä>Ý@…„tÏolXíýõ!{U§ M›ÍSMäòN sÅåØM'[¿{2–ÂvÜX¯?y÷]zán ÓÛ‡Äï¡!º¹c-”«žœ!\éÍå¹ÑÍó³æW­VP Šñ0õx`WÃÑnó$%¤×eóïè(MY[a ¿ º(ããë鱄ÓF©¸mÚ¼•¯+O<"Ý÷¹|Y¤ SÝ{ìïïÎä!¦²ßCd²ÊªÐðˆÄÝj.3±uDK§\:¶Á_KÅePgÇëjôô ßâÜÒHÅSfB!Ôô«SéòipÌÖiŽTî×Ð3 !a7º^ïQ¬MÕi ÀG?âï¢úó~<ã¡=j£qÝG{P¤s9ôÆüœ».öò=H³lô•#@É_¸öóÆ-*}Z%qwqütX‹?èbk=Ì}N ÂÚä+¼Ô®Xµ¨ËGG'"AÈØDÔž¹É„d¹« ŵîö7VŸò" Óc鬼̧Œa³¡àþ]ÍpØjYQíÝ}„RØzäÙÕYCžìM.î[`DzÞË;I0Ùâr\€€²Ï(€˜+Ÿß³¦7båŸê·‚†|ÈCª/ýê·ç)zÜ0ñï>}­P ¥©qÏf#KL_»ñ1¸|¾}-ùŠ_‚ÙͼÊ*±ÜìAvôN9]LàÐþÍC!ê“åÓþ9I#´yØô„0Apÿ–Úå×k¨Œ_Þ·nÁáîN+WØg5Àý¥ƒüE< ç5GÈÁá£ëæ°¶ÓCÜ”pø‹ìg/ß5z=T§ÓÅ\‹GBþd<ò ÍIÇ$ü૵_}»øš­ÝÕ³"lå\p¥³q«ñÓk{y™|ÁÑ<¤Í?Õ±·3÷û–6¸ÏÔíº¯ÇsÊ‘äE´VXŸHqàOÄb¾HŽŸdErùqðÆ’‰ðÙ‡½8ð+ùî¯ÃW"C‰æ*¨/XAУÁdjì’ûRS>DÔ•òÑ;Oáó”¦FˆÞmHm]?8…q¿µêŠî@¹Úùk?\<œÇ-±"úÉ¢¦”%¯Ïé¤Ù$™ýóg]ègRLjßóCøØÇφ¬5zjHz_—,1;Ì£­i}­Æ%‚LJ¹(‰¬Úª‹‹gýx4t î\”u p†¿éáµöLÀ Hí ƒ©·NÔEª16ÞG—¬JŽÏ[u\¨ËSàÞG È@¦Ñä†fCA¿p<“ .d5^xÌ€>âFèÎ’§mý5†I¦ Ÿ……™ ]>SGЂ ™õsQº$QŒâcn”ò÷ÎÁ¤âã„_ å6ÆQô×ÜŒö¾³ uÊá|SqòI€ø9î¤n…"|¡’:1>¸¥ÆÐ“ìÌíÁQvœ)ø¼lè…¡iy~û [ÞœŸä/֗ꀔRÖÉZ¶RO,o8´ŒžO,v‡=qº*Vâá'Œ a¥(=ŠÂÛïòîë­ÎÀ=Ã,„Á©ÉdÓ•òܨ@H6±);¸K<+½ˆr-WC3@ÔÜL‹ŠÄ¯ˆ„mON)ˆ&¡cPëÒÌ–{F<?â¤+œè×\…ÓêàµÅyîõV‰®+9º³g°éBš Ñ?FÍ· —`c^ßéûB7àêqk!ý*ëh'Z‘nÈ~P¶ˆ[%¥7×Èk: 8pÞÍÀ'Ò†xznQ,v<þéÓ‡z@ûyýWR ÑüÁÿŠìÁJØhʈ¤¬>®xúùR­P$¸õІZ1eW…ô[üXæe™@Åg€0O=ëž©è7Ü­Œ .j…/É `²ŠÀøü°lß´#°É¾zéR³| nhúóÚŸèXÏö§zhÉ…%ÝN)Có½L~wÞÇÀ`Úö!ÄYîÆÚÆÀ¤¤$…õƒ™U–™Ã{iäøyˆbÒï’g–©˜ÀB柷úM) U¡ê«‡4£(Ò-×åyOœ59TÝÉRÞ'ÞuÄìá/M¿æK“M¯¾EtùÑZ0òG`ݛ͢RÚ(ÎᘉÊYÔÏḎ{-#2Æ][\3úJð½ÂÓcsôž©¿ïq¬„MkL4õ_Àêñ¦Ü°¼×{•SL†¥=vTI\ñ·—;AîM3ÖŠq¶@µ2ƒC‡UèojR}ôèå$?^¶‰)sh+Eû¢ reÞÖ¯d™0ñ]i¿“†”?ñÌÿ|ø½§J¾ïô›*ÆWìûXÈm¥õ@»! em÷W&ÄÏ”Ñîâ+àáÝ.äåqm¹ËæÖÒ½—âÊáäSÈWï!!†*º ®çL:¢³éÇzlÐ×@ Pºm(‚Ýö>¯6ë7t“þVv‘2   ý!OEÙ¨‡¨‚BqxFn¿š% «#y”‘E!Vº=Kåî]ªœ¶©)7Œ%ð³û†ZJa)BDè¨EÜ»É9)ÈZý¦è×õZA!ó«â‡ûR´¢ }µ#„ÎN)š-0™üsÏíÈB(³L6vËñz‘›É i|ÀGr_\âŠþgãñvÄoÅÌú"µòÌû/ñ¿[#•# ¸zÌ1wðŸé×J„qÉq2ç‡hÚˆ¿ööõÛ,fã¾ð³O"°þpvk,Ÿ¾@ªZòú2Ý£D2mDô¹âû’Lw{÷XÁóoKͽgéþÌ}eŽ‚ƒ7rþDò03qÔÓ2³mVƒH¿9g)—GEFçĩnú§›ý¢ç×ëgZã ?Àî~éÉ·ÃeÃù‰i¼69F)®6Àʯ۳& CuQV0t©m¹ ¸ÌtoÜûy¢öö·Ã‡ :Ýäç²ÔÿXzS¼/²Šux<¼Êªæ+ÁaõIŸ¶³ßÕöC8tR4¿½™ÃnÌÁ”zå½Iáþ—BùýõïùFÇL›³¯²ê¢SPàˆL×^ö o|Dañ`,QÜè7oÒXÒçÜpÇAéøŸàeQ ÑÌå[·2ìX®©ë/ÞÓÀÂÚlr0V&êÁ¬ÌÍ–Tµ‡:ó’« BÏr™ ü.ð¢rcª}Cë»\ÉÇXM!À¨0=â9 ÂÑÆq <[~qšÊ´Z±Z i} N,l«ðTis/ꀇvK¹½K&”B⊖MÌk)Úȼ8M"àñ2‡œsr=Žþ’‘ðÞ@x{šI(=ZxûÅéZŒíjþœÅ¨:¾~9æc\³Ð½_“€ÅUvT`§t4Ë[ì]Ç´*hðí¸Î¼bø(-ÌͲ,_Ž•&zÝ\ö¨?²%¤öŠƒæKÚÄù…]wÆ¥rG'Çì×}½*FÁò`˜ÞîF9–´„i†—‹V’ׯ»²VSÑ3©:ëGô9®a…GjŽÅ«Îåxeç¦ô™Ÿ{!-Ü>›‘·°ñG„ûq„½œ Þ•jß}Ã懖XØñ#iZs2^^ù²xs†_˜²8Yâ8O­w‡™ ÆúÔUPê\D"eûÿ笻Í|O!º¡ |ci±.% szP'„¸\øD°G«³Ÿ”$mÑ–:ˆèç(#­Òå°QOÉýw™öy%æR®}%Æ:î›*‚Øw^<†$³]¹³5÷QtK<Ÿ*Ã<â÷øh<šöýÎrŒñ?”~îFk×Úã@bñeÃ2†KL_7!oˆ~:ß“¾Xüß¶”Ä–u5tÈ2cÞ[‡"BØnÏ®œ3Vs¸ÒdÞXÿ¥¬÷§‡)âGož ÑMídÏçÞc—Y¡†€¾'dxVy2mf¸ÆrsåFØÛ~>ém‚:Öí—pa_8س^’_~¶Âƒ³!”VN\nY¹0W…îàŸS–릠zÞדaÐ!Ì]ÚÜ|wW Ä%‘´w‡ùÐRéž_^ú¥Ã*V(µŒ*c)‰§ÀO92¦:›»ŽÏVäÀtTž÷‹Dª¨š·²Š–~cºc2ÀbO>”Áca12çu´U²=àäÓI¦Îó|Ó§ÃóëbœßèoMã%Ð^pü–à1ê_3Ï3G®,CâE¶Ž}N*ü*e™-–ø¡Ýöƒl¯“iÁ JÑ{("¿Ü}ìÞ`Ô$!›Ât·¶–qQP!_#â”>GqŸ,i,«–éƒ(²eØ·öóiwè2Ö[/ÏÓâÚ.úâƒoÙtÅ[ dq …—ÖvÇýQQë±q^np4r‘[(¬)É=㣠ʔ²ù RJåLK¦æŽw½Yy|¦Ï›<£BnX¡*ŽàVR±-M,¯Ö;+B±'“͈ =:8v(T[,– ¬6æM·Á(î±t»ØpõÊÑA Y~J‚Ùè5ιDUçØù–3:{øN¿Xù&s’ à:d‹o'iØ(~˜ZoÜÌ{uã·0†¸g_E¤’*¯ˆZŽìÃÞ]Ä]mX@Ê•.·ˆbBfHòÍïthIr¿–E÷ ¢;óÎë)uÐrtŸU§Â™ëFMth]úî¨ïGШ³‘Ẉ°®N®ÕkpSŠÍ2¨¾eû'üŽ/dg¨çA4u‡éŽm'çìSA'Šâ\Ï*ÊW£;|ý@(n&zÌÍrôœxhO†Ž&AÆ…–/eå ØÔüj“›3$¨àÑJùIÒØ-èLˆ€ÔÚ‡ÀuGñº5AòÇð„9Ð+j»©e ~º½"Ìö¤ ZõWOÓÿešé%©¹¸Èû`äÒŽ_¡SRšS"!÷þØpJÑ+ÛSÝUVrv!$ès8Z {ÛþÓÐoâ¡áæ’))xnJfRâTgdÏ*&Ù£s§ú.–xî.,=ùX 5Bmápºù ·kåDL¥Ik£míÉël6°®ƒ#ßnñÍþTŠ:´n3ú‰ßÊw1_aa\0°!–¾þÞ7Ãc`¾…ÏSôëõ4ì¹ÇŽ0›ÈlÝÑÞuœ‡ÛûKÁ ßcw6Ê^X.yà0Ëá=[3'p4L;nž— „·YvlèÓ‡$+ðÃ\m¬O[fÂñSy¬²ú¦xuÚTP2L6©£†¤Ê'_íž§Aز ÷@eÆÂ™cMûJÈ©ªA©—Ö# ]›×PTwl)´a•ïŸì žéÔo `gÄèÖ­¤¸k”ÐVGxvµ(I+*ªìZ› ·‹&îCše[¤BgÝwD­“šƒO -¶@$lé«ì­© {ظ˖;ôO/¶Ë{ÅPÌ’¥ÌÏÁ.Ô7zðÉÍð¹Å›?¦#ÎvË/™!å®Ð5Þm 1X’aw÷u¸](äBUñc×Þên'¾ý×bh—£ümd øÓfÅLâvíZéøLUÙZ=v8îÞ  VÎ:å©?>Eû )0'†ùðt@5½—Máþ`-\/yW6k K6VIűò‰4Üß&‰ý©”C®Àíò:ÜÈX¨lòË‹f¬þ1­?u[LãÔpñØ©­g54Ä !ŽDðXzÇ$“–C…8ÐuBHÞŽi]][Þ÷!`|®CÔæ1™?OFÎkD D„(z¥H•bÿÌÅ·¡[ã;]Bº¸Û09ß^Cüv³ÞøBwÈÀ$g¨b»|±)gB+¸ð…®žYA/C ÇD ´aV„e|åJˆG¡5ËÕÉíÓQ$ÄÍ¿sØ_ƒšôÍìEç|~Cyr1‡º9uë †yÎ&ñâ *«Qü¡x’rÉ–¤{rGÄ|Ô´v²èuƒíëQ1èî,@øy—…׺! 9ÊÃ7–'^¥«y»Ž¸i«‰3% X¬Cm›¡0•# ò‹hànœ^§ëxiD,¦8gN6#©sÎår#å8ªåmüŒ‚€š²ßN&bCÅ8Ÿw²#Mà@«íã¿ÉÃT$$X¾â` Ýà9^„FGn¡Êš¨ëyÜA/]ž·ˆG¦—Îs¦ÓXcÛ8ŒXï¼T Î_¤[Æ]3¸ZäÒ,[E„ÒõC=ð#pƒî(Gò¶îµ%¹“©¶ýà*YÙîFó3b»¨ÕÍ ÆÛŠÚÂ!^Ÿgš.ÂBöÑ€¸ƒ‡…ßû>ê™<ò¶¤´9 Ûo2Ç Žu7ˆßZååç 8?„xÙ&AQïmÔ¦Þ}âxÒ®ÔWCãðÔy­>:î[b*‡—:šÚÀ X0P´*š]’Ú´9­£is!|‘ÄhmL”#ƒŒ4ü&“[ °9ZÙÍl$%UŽ+ë=¿Æ°’¶ æ&œ<ûeã2²,(Nò4 JyMìU¥¡Ÿô+¬ˆ±/ù¨Ú¦UqÖsNÜÕN”óEØe± ~·Ú?ý´bš$Ç çA Z[,&co±8b_öŠŽâHh`?M½ qŒ¬·!ö{W÷±züèÒ KZKŒ¢<ýð[¬Ûˆ´Á¬b„Àt_,‹ÀJÄüé9Ãê´çú7Þ¡€XÐjJP Þ\ìN6Wl¨.ó-Cž«3hUIŠ”=¶Îè@½wÍþœø°1!©ã†UÒ·ð79àQ9U &)ˆU–xi$c Ýávyù-k ‚?M³v©ž´Õíb+›.³QyŸOK 'ý=£?«ì(¿´sÜ aȧLÂ-]N ø›0ù.Ÿy3[èCÔ‚]™¦<ÎâDècB@ÑG õ®žíBŠV*ô²ÀvûY¤ÐVJÐó[¹‹•ÞÓv’¦Ò´tj´oÜR%Àqu²“Å~N¦‚—b´Ò¦õ(fÓ6Ñ•ƒ}ŽõHœ[ëÁÖ ƒeh Á)@-AìʯԚ+Æ›4Ú]Xôò ˆÃhu‘›Ð{§æÚyx'Þ“\Á]mY@ E!#˜õô–olŠ °³pÐ `* Pš^Ú!ëXIuDû‰4ȨèÙ'ìÓµà•¼?gµ²z0Öî,0†=HÍ ©É”Â?ÈPeåfŒÑ—]rnd,Ï>‘,"ãΗӚSÅåé…þ­¡Àûl×WÖãçÖC34õBlj¿Â‡ai“#̶Ð)£Ù9Jêóé—Ot.Àÿ º…0¼j,‘ý7ô–û£g¥0ïPÞ{Ár o§›†_-tÔôÌÓqãbñ Ñ6U@ÇO1gGV¦|jÓâÆ2ÆáÁZ¨k‡U~µ2•ÑZ³‹êc¶n›€Gª¼]žô4ÂŽÚ 2H‹Ãr@kw•'oÔYþ¤­O@Ùs@”\xÑ—”ÿZ'*ºNŽyFñV"ÛV.>:EW§}M|·/†Ä.Ö^LŸ>H¥Êqέã-üy¸ñ©¼H€ÌMêã8Í~ o¢1™Cüdw›#JǸ²ô>Æ×þ;æ%N/Ç‘¿¤›ü…RDÓÍ&ËÖ°Ô Ä¶y€aÎjëU5„8ûĆ7ÑD N!¦µ6›µÀÖŸ¤Á„}-z¤Tlf›Á"ÁDLæÈ\ø5ä…:ü´FhASZ:¡²ò6­m¾ä£O1ÞRÔ÷.•FuƒË«Í‚818¡æÒßVà4ÂÍOŒ8Až–€>)›@_ªÐ‹\âžáЪt×2<)¡ù+”¾½“INmŠPaó™š%áƒ:÷É/O³@fÏKšjIŸ»ÇÒþŠèØ?ëÖX˜À"M<ˆ¨¹M"»$ƒP™%fìÂÏ_0Ð*Á?];~%eséU}nó£Vl\®*EðÿÖ-Švå…@")Çsäªrð®Kkýàe7èíÙ8ñ£5>å·™hsã!)–Š4´éÍqOiî¢qc¶ 䇻ù–Vj…J Ìº¬³_(WbQÙ´U ²CÀ¥å¼î÷§¦ëCÀh«:â&"'<™<:Èï~Iïþ€vܽ”’ «Ÿ‘€"­‡¶u›ÕùCJ‘Òÿ«W§5‡€2VhNÚ¤ç4,òevT=©~¥RŸáüÖ¼ï‰y®‡›·˜Eÿ\~czËz~ijW\íäÔ®Q ?©DGgù&oILdï“3åG;°ßÿ\6ìL‘kmÑzƒí9?}°-yF ‰ý05+F¶ûm§P¶iêqÖX¿Ð‘k÷mÕšîCj>¿?Ž<5h8Y´Ä• ^{Î3 ëÖÔøƒ%f™S0gT-ÔE‡øˆ@zãÕ›RUŽ=ãÐ â¾­›°ôämÖ¥±ò á­te³Ùì¨üå }m¯v«Š*”§ŒSÝ®†ò x(Ä¿2¤ÙæêBòâèŽ á%ù¬ÄM#!Ûû/•¤Àyê0ΨôÂòHs/eÆÅá]„£ Þ|â=ö3@ç}hóccÆiFcO’m­²|´öDu"êäUz<|l`•Yžmÿ˜I,±(ëÊÒšze Rvü_êÓZ$»võ͉’Û”YtÕã/ÁX-!)Lçµ+Á6 ΀¦? Ÿüæ\£ì/%£{ô_N!Ú”s»JøÀjü ™Ý}¼ø”Å) ¸ê¤å³ûN¨£8Ä÷³ö¯«Z…‹9½pcª’kÞÂ$ ùÚßpåÿLÅtÅäeJùšbW+6!ÞÃ{ô ýã¼´ ýñ&ëKk‹®l¬~@ÛÜ~hW*kšQxÜ7þñ‚upF§ð ÈdÆÙ5@‘É/ÊÓ=bÎbó? Y&?àBÉ;ª³’\ÛCg4~zxjHº³U[­Ï+˜Ë3“óÝh$¤@"¦D8?ë.öo¯/mâ¡ÜÚL»éØC¢ÀX,,3ã¬,3ŠUHt3Â'©~! ,Wé±ðH›ÞÁ’–)PdƵÓ>÷u4TH)Pa¼U¹5»H¨ÀË€¨e±‘ˆC¥Ä2¤ ¹m4Ñ>‘¿P0ˆŸ OÓÏØ¾š !\Ju#TÏU0,ŸD±Ä¬~5Å|èÕ6¯ze+ÏÔÅ`~çÒv·ýËërÁmà>’2kÇG‘/žÂr}>Ò݉ìÙu¼Â»4Ò:>‚€„fˆ/¹½šÐÓÄ Î>ž‘»½FnÙ{éïû gʨÍVãkFÆLù*ÍT¿¶ÛQæÑåy ¾âYær_EãXß­†S­„š&“má‘`v¼šÏ;î!ënºpø1µ‰Už¤æd¤C…ßÊá€ÇVÉjBŒûfÃɼƒ+yZCE|tÂ1lùtiåSž—0Íoº:ãXç S;Jšaµ§ý6â}k8ˆm×(&  Ú˼wˆ‘Áþ»²oˆ¹¹Þ EcÄzuÊQ¨+6:û÷BœqïKž…PJ£úW£H1ÛŠXs±/èT¾Dè-ÉÛ„Å8Óø ”ÓRï“Ñ ï¢øN(gHëTø<³¶ÇªÁ7:EOQJbÄj¥•úN»o Q4)Þ3¥_Øi9<#cäKXy˜ÜV¿³3vö^§L°© b<+äxŠE!+®ãü±L—Eµþ;…8SÕåBf‡Éoó*¬Ù'ThLdr–¶D[ö;|33ˆËd[áPÕ&º/Møµ«Ý<³ÜB%—Gºe¢y-ÏR^§ñ´w@àŠªVº@POÌ~P’›þ)¢K4¶#lŸ‰šùøŸø¬›þR? *´¹4Ñã!Z7óî…©¬¥ÅZ’Oú4#ܘYzaBÏ´@Š-Í•ÿp XfÎ÷•ò ™íɽ¯×ûòi²»¶P­¢u|i]s†¸E’š¸¬¨ÊôÙ”Yl­¦0t½"Gyy`\ïÙ§-@¡¬¥_Þvs‘¿¼˜k½m¿þe‡Z×ÇÅhxÖM‹×M×ˆÞ ò4´ü…p6¢ñ|Õ¯} ÙuÂw½ŸËÉÇ=N7èÚ©\@µ2}“°×^ÖOpm„öγ1úO%þÏDþg£&¦B™o «tsbV‘X”\ˆ€3¶É'ÇÏ•ÿÌ´£å;6Sæ¨(,_c;à‹Ë!ò—L¼©m3¾æ_ÎHJà’¯i`ùÖÚGH(¿5½Ëê ú‘Âö£OÉáP(­9ö6ÊøZs­u æäf0¡ÓÍ. \ríÅî“…Ÿ¡l‡Â[¡nƒŸ¤C´*»„[«@ÄK•7ÒÇpÄB‘“eµ-*ÀÝ‚L|*߸˜É¯gÓBLKo¿¼æÙØzƒY÷¨-«·þYU¿æi0ZFGú|¡€ÀôI‚àdNÿ‚j¨Í׆öÚ@ÅšàžÒª7Ãòüš’TPªÏ ÄÌ%¤7_ Ƨ&WÉÕ=Å„ªøüghÏ$/ œÀ/íß½Õ±•r쬛ô  ÛtÃt|Œ¦¤hô¤{¼Â*S¿âλ„ êP‹‚»ÈÍ º§xgk<ÏÚ´#²: êòÝ`B ¤·b¨Ä5·•Û~Ó0¶+¥éÄòêÕG4ïÐqÀ¤¢CŒ$EÕÍljq9¤zHKª endstream endobj 116 0 obj << /Length1 1477 /Length2 7695 /Length3 0 /Length 8682 /Filter /FlateDecode >> stream xÚ·PÜ6. 4Ò ²€ ÝÝ-Ý-µ° ,± Ë"K‰Ò Ò" -!%ÝRÒÝÝ©(Rú¾ï¯þÿ™ï›Ù½Ï9Ï9÷œ{Ÿsg–‰^[S³+Á N^.1€¼†ž:/€‡‡Ÿ‹‡‡›‰I‚pÿcÇf2ÃÝ 0¨Ø0äá` âÞ¦DÜ5`P€ª»€—À+$Æ+,ÆÃàãáý‡ƒ‹€/! €@»a3ÉÃ\<á;{Äý>ÿ,,6¬^QQaŽ?áYg0b„4€{°óýŽ6@'€ÌFxþW  {ÂEŒ›ÛÃà èìÆƒÛI±r< {€.Ø  ~· Ð:ƒÿn ›  oqûË¡³Exá`À½Á b†ºÝ‡¸CA`8à~w€žŠ:@Ë ý‹¬þð÷áx¹xÿ•îïè߉ Ð?Á@˜³ ê Úl!N`€–’:‰à¡ ßD “ì>øqZßþ”(Éê€÷þÝŸ› â‚pãrƒ8ýî‘ûwšûcV„‚äaÎÎ`( ûw} 8ØæþÜ=¹ÿ¾\G(Ìêý²…@A¶¿Û¹»p@!®î`…¿9÷&ìÛìÀ€ °¨ì #mì¹o ïéþãäým¾ïÁ×Ûæ°½oì ±ßÿ`{»_‚¸;Ø×û?ÿ°yy ˆ ` ¶ƒ@±ÿýÞ ¶ý ßß?‚¼à¹—/€ç÷ç_+ó{…`P'ÏÓÿ\1·’±©¼‰)ûß-ÿË)'C¼9…øœ|‚<^^>~€ðýÂ÷¿óh!×ñ±*P[@ô¯rïÏ韒_þ­–¿„ðß¹4a÷ÊXþ-t3A›û/Þÿg¹ÿ ùÿSùï,ÿW¡ÿoEJîNNü,þ?~ 3ÄÉóoƽrÝ÷S »ŸèÿRÀ®qwþ_¯ x? ²P»{EsŠr ýe†¸)A`6acÿ—hþ²ü7'¬ sƒü~`œ¼<<ÿ㻟1ÇûGÄí^™\àûúïm¡60ÐïYãáp 'öýUß#A€7ïýP‚ÀÈ?ZpsAaˆûÀ}‹¾[û÷½ ¸Õ~›þBÂn!~·Þ¿Ñ=Óà_ˆ—çBþ ïuÇ ýxïuû(àFüÿU¼;~?ÈDvßÙ?øÏ«#Á6سS0ñ@‡ªÀ¦Ÿe©=87‡ùðzοam(R¾ÜÖñ——¸<çÏ‹˜‘m›ØŠ¸\!ÚçûpWçhLÆãh±ì“!F6[ÓôÈÖzÃg„Hò×¾›º;ß–Zk«©?dGv\¯ÛçñMfœ•œÃõts2c÷¹s}ù2ûcŒgµ\¸¨ÃQ""ü¸¨Í²Íår•²ã-*OÝÎd†ãi•v/S»ø×zæŠ9P «©Ô{{x.jß2ö¤Rv:„¨Ô¬FãLŠW±,þßšß°X» êI3ŠgªlŒœ)Ÿe×ÜÆ„\ªsàÔˆ>³€N}6ÖR#iãßÐè~«áqüƒ´WY ÁY×jò!¦Ö…Ic¤Ì¢˜Ãnè9¼͇ÿ Îqc—4¹©A@ï3#ÿÚ±ùRíá±aY²äpî)n*4¼ BÞ™ ‰²/Efû Ð^Xlù…' ¹ò©È ­¥9í]»S˜!¦¤–ê=-^j¡fmb0!?êS›H¥žo¶¬ÊAôípýàÉé^ÏÚjóV\Îål;ð¨YQM#:C(¨«çÕg˺QøT‚;ÌÕ‰»G¶ Reý±åÝʼƒî]þÞ‡õ°»™X‡‰û«Ž JÝ:;d´ûÏ£ÖÂõsà »C°l®íf¾\GF®Öâmuáð4]mŠ7Nüû:%Ö~2c.x‚o„]òAoÄô>¹eùú‰IÜÀeÇŽ©XUè~ƣɔ9V¥¥`÷¾[}¸L_—Õ|-…ºðã×sP$9SÑö¹¯þw©ÍêzŒþÐÉþ…ù%Üm}Õ3^ÄËtï²ín6ŒsiÚ(±q¯Åò»'7 jï Ïn²q¥Èk3¸tzÆwp€å,òü-þªÄå)é‹EÖŽ ¦ôœtîñäè]û½í–"M€)K˜uò(!Ú#2$öèà£üޱµUgQŠcRÌ6ÖjM4ߣ“»…`©ÆEjÑ«˜,,MD,¶‚Zð]ºj ÕÆ›¬MÝ;çW™^J$82Ÿzï,fÓ,ãeç¶šŠT©"B4)d9WÃ$ù®,(šM<…¬³4U{d°õC-„nôrDrÞD‘ÅèG”Œ`I¹¹DbsÆïÄŠœg»‘…_LK÷’Gv)šÇxhÞ8ô¸Õq¿ox8y„s‰½‘­@“Å!m«Ë¿<´U((ÈÄd‡1õ_÷‡–Ñ‹„¥~’î[4Mdž°§Â'õ3g@“‰½©J™GÚhï÷C?(ÍAk³(Ìâ&¢Ú:Ê»Mkƒ˜¸K‚·,Š {¡©tu­ë‘Ÿ@ùà¹À‚“YFX»JÈQXÚÖ[œœ¼bÔ'­ZÛÒÙ8KlcÓ_Wè^ÛŠs‰­ø«¥·\ÞVËÙ¤§‹á.žR6D o¯MŒ­úM8Ïü$vªñÅo^»³ŽtÔÔ7ùA –KŹ®»Âß:aà»n9–z€Ô:x6;w Äa\ÓW}†ªÕ‹òùè'ÚFi‘Dz⋩ÎôüqªjMž!ØoÌñ9÷~Yí´þ Ç q}ïÜi’D ²‹NœJ\[¨»Å¤÷‹=0JAm[‹EZ°t<—®s³üø}8¬&¦T ¨‹ñ€áX’}gb7+§%ÿùÐS¾[œ7^†3M„õÇ;­Òjrüum¤ÜwÏnqžýˆyº¬wÂëüÝ}ü%* Ü®Ïeù„¨(»û¬H$ÙRn£ÏŒJ0òÒ,´Ðó«áÀ9Ñææý¢1^Fbt¦:üŠÕ ×½ñ‹Dõ½ç¶ð æ#ö·û´yŸiÆ«‰OmʉۯKÂT,Bþº¡(ˆÕ*ñÚ>±•Î <÷s`¡˜XS}ô²·QßGÕ¼¦©Úh\(þrPø“é:²úQ(u“¯N7¡›šGõÛä+7`¤åÖΉÆóHY$ ýé1E¿zªuG·¬ö5±á G—ò]¼DkúC7è ^š©5×éé3oôC“h+SºsV!²ŽY¨ååØWÖÎg£~Uñ^¢#ŽiW£fW£”ü&ïKpèGðTÑ$ß Ü¶aXpÊpÏ¥y¶Ø& †K{r©“OÌ'h¦‡‹²£Vºcb‰›G³ö§åœVÓœ£G^F‡–å/ÌI´FžÔ-HÜ¡½ª$C-‰¢VÊ'8 çG½ ÷(¥biä„ó>ž+µ®|fóã2aúÈCk|rÁ1~Úí->]<:f V ks¡ÉhÅÕð/eÏÓ-",Ù×DKBc‹3öC3ù »½ñ=çÅ"Ë6)ûõÙ­M~‚Z©¹yuk?Y—saÛN-Š ©¾TRN"Y ãc¹Ê奫ĸ½&œbî™Çm 1‡7çUôúÒzÈÞÃ=N<ì|9S 5S\7Ó>µOß\Ÿ’¢¦ PÏH4jÕ¸|5ˆÂ›L ³^/¼Üu›f½OOâÅ÷ÁV9qÒïåz¬ëܵ`ž0äÝ­PBiÆÊ望ñ¾ç$2Ý óófkt #IXaËCŸä>ÝÌ l±œm¨a™¥›L™Ç¦–­-®^%’¡6>]Ÿ¹ÉVÕÇ£Ýñ~v²`õ%Å&÷™6Ž9•Ìg}š¨`äC‚5å7kSI.„ÃЋm¤ö é*,Ëоì7[§Ï,ïÝèXF´Qÿ3€õ{µL˜$R³S”ž)™’óË"àŽ*‘y%â#í¯3‹¤<²êKx¢Ñ{(mÔ“`“úbwπ¼M h—¦Y )/𳄊˹ξä²Þƒ—u¤[ÁNå1Ž®yÂ^Þ z˜%¶v»R$-ß©súsN"€ÝðµõŠ…7Cég½è3½ìœå´¹¶á©Ó4›ºÚãÚntx$+˜`ºÁ0}÷R‚¥1PÆG4!ot9%”i Þ†VÝ5nÑ ì¢íµ›")ߤlhÂ2éb³:XúÚZŸüôg߈(nŬýødS ãËÊVá²Ãƒ‹¬­@!v‡¦ªúi…¢þ›¤¡Ÿ§¯ªdGWi¢Mzü6iç ,ƒtÌ•MMYg†ÚNúÆÓøjV|´;¡ç=€¨­Þ„ á|.‡ì¢|¹-¿rû@x2òÕk«$oJ@ö)‰d i¡gó^¹h)—gr—yòëa ÛÂ鱊±ÃŠ Ý´6×eë~›ë@ÊÚÂ…@r>ê¼VÏbËêà ÃëjíY¿þ—çïW|)K([Eº´Å¤ÁÑ+Ú’ç»q%Èp¦í`ÄùdBäF¿{\ñ´Ð¶àÙ,vË‹ŒƒS`Ý~KIª„ø•u!xë$ñ0"|6â”ÌÄGÕW×Õ“"bÃÝ»ÉãÀpö ©¤ÞKuÂêhçf·[‰‰·3ÄDkwÅw»ŸGuz®(Ê!Ì¡®L•·éd«9Ks„þÎtS.9mn–ÿíEÎÜÿÇÅ5€ŠQ–P2&§€!ô0%ïT ŽíZÚÑv„¯]éñXWrÓ, Äã}_ú¡ßâl-~t´-kh<_4Ø@Ì(Z'.½ÝÂ,\íÉ7#ûü¥CÂÆo{0Ü­¥?,ð(°¯åÑnKÒÕ€^½æuëcûq! D¦ÒµUú#õ&†­’ª½ÅsÅ\AÊ|N…@º,ý•Tíeæª6ÿòt¬¡»k?æžÕ“Eá©+Yp·.Ó Ô6I:VÚD8W¾dE±lƒae"¤H 1ÕX»Á™=FÜPãV¶pñ:Ä!Çþõcegqÿ’ëk € 5éDJÆ¥1;'¢ØÞ¶…ø¼‰&îµñ%7VcîJ€ýË›-ŸÂ˜”x*®ªœ”®Ý·;ÞN&î`¬/UÜò¢o`â%àÝa>÷od@#5LE(‹Ä¨2‰~…ɳҗ[…/šüÛN7½œËñ@™rÐ/U¯ý„U4†ö'Òó$âÛüOÜH„dgÝS¤,Aâöu+||f'(Þº×nûóÅ5¥MýŒçÞ s¼>j?û3¼Û.j1‰•—H‘»½6|à‰ÃóºG-CyÁlã$øåþñ~§u¹(: •`Xðäøo=æ}é*~Ž:"^3"+rjV"ÛŹñ$õ!ªIÊ’ãÖCd±Âô#ê6Yb6SFïIØs-ïG¥øÏÇ*z,¢"­sÔôžOŒ÷ár¾ŠèæÕôª°Ñ®³åôA4¾“ëBÿ0$÷Ncäq 9ËVoË00Â+"rÑ‹f{jV uàMË›h͂٠Š`«b.6ºÜÓžòÄD†·IèñYLxÊ,w^ƒ¶ÀÔwîç™Ã¤CÈo=TÅÍt'¯àLÏ~¹n±Z7­)ªw…l‡~K"úÕ'0<„ûœ®QÑ)ï§mé›*Yføfr XÏkùáÈô8e~Mf|[Ešúã΃ì*»·g1—Й°¢y<ÒˆN9 µ™!.BÅŸ1æÀ Õú!t=Eq·Ÿ²ýlƒYF}9à¤¿Š½]TË™ŸìÀµMæ{^î sœËZ=?Ù{ú²C‚2µê_F{“ÞŸ¨ÉçÛ+xýq Ó¥*ox(êÁÅ™²¢àÅÆ21#½É9Sÿ 7­YÆXŒ§ÃÊ^Üâ,bëÆÈôû?£ÉÏÈ‹×_}âÆ…ò†^ætJ•ÇäÏÆ8XW¹Ò9Ê>°åó˜Æn@Ô^Ǿà ¿9ñH ß—ô3=¦î\p–Q1¹ÊàÕÍñiÏ¢ßÿ„Ú  ÌT?ºáÌøe~6õ0O­&výðP…‘|]rì[ä‚äYTÅ,ø³Úî/ž¬)&†›ü´ ®ŠJLt²øÌ«ë¾?Í;ÒŸR(àãFzúö“ Æê×äL'î#¿ZvÓQñwŠ8Ã`[¾IÎwÉßøýa•y~ÉðR!Ç%dà]Å|󊧗µÆÉ´'é:î×ÎŒoPÁÇ™*(¡7†ÉÈ$f‰²s¬c 8{6;Žyç¶~ºLÒ5sv$Äü3Ç%KÃz~­¹Töç&×r¾\ÜW*ô峜n=¬DÕCiƒMÛñ“jÑ>ùæ¼*õÐÛölï¹ÙÇ}…¼¯K!x2SŽ!·¶ÇÚ½fc—ûqåçr>0rÑÔ ª#΋𣖠a‰`<™dW Õ/ ˆDlÜõùË´‹õ=§c3°‘“ˆ´¡Tzî'Ç®c"–MïDVJ¹b"êuüMµÌ³Þ–É%Ÿ'Ok_Ã;ú±aø^üQfX‘Øk :OaQAŸµ(Æ*8Ëè㟲f[C9»Vz~ʆEľÆòò2`÷ªU; z" þ„—ùÃÒ5QÝ<ýB{üÙ½`ºxÜ+…QÅ;{ë_Em8áïîÕ("rAI—L˜†¾}ßëLó~äÃk ÷wÃIK›ß»»œ3N9ñ?|„4üRZ.Û.Ü4œÐm 7ÿw"N?";BÅSàü~X*ïY†ÞÏ®ƒ ¿rº–o¾^ß$-Rê:EùF¤Ä~e5Ë·oê“DHSý,åGdÕáÉPÚŒBZÊI‡Ðµ-ûÁ6’çÍjYv&9ðÐ °Ñ`©¦&8"r"Ë'FéOÛO™O†O%2Bx‰V$(™;­j²GÂŒ1s&:_Z|\zäõT,ô†y›…¿µ“S›ÛxdŽ¬Ñ•XjF }©‰ëˆiÀ"‚^gÆ•û²ösüâQßž·‡ ETÄ*jWn7‘ã[g8v¢O¾ ‘;»U¿!Žò–æ8—E‚ï6 ›F}Š»d”ü¦Ïy Ÿæ=^ltd[µ+|ãBÒֺÔ•y7(«h¥»Þ€«ÜLá\r´m¢»9¨sg"€/ Û÷~ž+¢HNÛQ v.`*OÐ¥7œôV»ªNÍ?oœU¶ì\?9ܳ-›¢È–Ás ⇠ÐÒás9Øâ&öF[Qf¡©RQÌžY¶†·”ÿ%Ð+Çÿíh‰¿M‚•€&»4Ã|ÇóåÀ£Æ1Ï8·Ä‹î̫͹òø$ìñëæðÝS=¤ að‡­n¬ýu,µ”¶ªï! âÇ\Ç,ÕWõ‚?÷$ýw8×GÒ$`0ÔFÚ§4¸ZŠçïž%7šª‰7; txÝ)¥ •œ-¢ uˆì†à–Á/3AB“a˜æ¢K$QäÖ‡æ|(ßÞz£wL?ªñAßá&4gaØŸ˜¿ãT±(DÏm!GJjãy8]ÌD.ù`Ýjä‚w?azÄ«]…à*ð»tõ‘%QàÐÃ!‰>^{úá‹Êç"„¶/ŒN$׿ºk8@ÆÈÍQ³Ðg@àŸä¦†åöZÓ)7iù;‰0w…¶‘i~”W1{JV_+ÈŒ=*:aÒtù‚3æú@)ÖX6yuD;:ëÕgC±ÿÁÞ¤L­œé¤ÒU#ôq·eìJ?ßñ“^¤[¼ŒÇã¦=y7Uü±ed*S«‘Hëã˜4ÄÁ§ûl³ù‰õVßF:õCJ×7¢«)‘W¨ÑÝô½Tß#ÉÇl\79i÷­x[<Çjq¾(—¦ìUi°fAùµ¼oòq&{§ê]´ct )KÛø:•ºH½½äÙ[Š9k}ä?]ÊHÍ _8=íçm>/­˜™&/Eºy´G* ýBÕŠdôõÜŽþRÉç°ÌQú TÍÄ´Ýt+¤ô‹Á…‚N'ùWêj<ç¾ÀwÒËA™\Û^Ólêë £_RÁWEÆ‹Û ú‚ƒ‚Ç‹ÃÝy¬UO9겿”á(P1 × {/Uß²è4ebî€,P½hV•SÍ9Ü­ *U„õ†Ä«P&xæXI ÆëHkï*¥Ô _c°!âE÷6®ÇN]ëù'ö,‚" [oƃLž†¬ÅëûO•žøNâ’1Qz¦ac32Fø•&ƒv›œÅ|Zw%#n"˸9,ô1·Ò)Ò¨ç1ô{óåæcl–Yà3¡¿1\I´R˹± C8¨ò|5Ü?Šú}áÝ”˜™„º~Þø‡^…î!®ú­žKF³€ -íQŸ^±LcwÝ,‰¥¨¼Õ1þ8íS¾½²ÀÇzÙR¡˜\úK9໯4¬¬§„Z¶’îÝÖ_9¥®fôô}ÅY«½9׳Ui Óœ”Ö—¢èÓN–Á—î–Ÿ–/Ь1—Ξ]ûS ô½Q«WÀ‹Ø« ž×Ñ_[dW1 ?ïÇñU­ôÎv‘­r;·,!^7ãc(5Sýt3-i·‹:+êé–ùº¾¨Ør8@h¯Ì£\¼l„–õ]tcEû3\§mVšyÕ<ÝŽO‚¯è!q(Rªlr‘²[媠 Çìýü6~“§ØÜŽJ؉9ÉjŒ—ˆÏÒ¼< ˜¨ }Eœñ™Šúäæ‹€ Ÿíu”/{_€å¡úì•(×àµ3ºò—Fôƒ³M^éøÙQ'Á­méóZ˜”VÞþÕ•'Äí¹«{i0ᳪïú&ë^ÓøaÑeWhæš8î“X ë7²±U…—çîš]ÕFH)Õ$¹N»ÃÚD¿`¶Ó:q;Ž7ŸÉ¶u)ƒ#>ÍÉÞ%±}L”]‡‘âSl@z²Ò·ý¯ R3=3ÖiVï˜Mú“f6BYŸÂ‹÷…»4¯Ù½a¡O{̶‚†yBh¬äØbi™-E³'åÍRÉd}åè¿ZzcÛýy -ç‚C„ ÷$½² ‚ÆÓì’z"uK§¨Á§.‘§é W˜Ïõ²ÍI‰ßèdÿšÛ¥72ûf⾕gpÃ*(ûô ú³ÂzŒ¤R¢èY(ñù‘‰ãöÛOëOOÅšc—™›˜-jí=EÕ—¶˜PB?‡7@ø‰ëCyé“.«ÝaÜSŒÏ“$¥k<7·o‡Ô'ýh&‡ÌýtQ­ÐL0jê2Õ …‰m~ ™àï¡e¹ór"}&ÇV[dÀz“jŒV`\¦%ÛsÊù—ÏT£u^Åí©c?þúž•[þ¨@jü0äEÀÈ> stream xÚVuT”Ý·¦DZ@@šDšº»‘ia„bè”îP¤én ‘néNéRâ¢ß÷ûâwïwÍZï¼ÏÞÏÞgïsž}ÖËD¯©Ã)m‰°€* àHNn.@VMGUW—x¹@ &&]Òú·‡éÔɆ€‹üƒ#ë#ïlr`äU ¨¸Ø¸yÜ"Ü‚" €þá$»Â,j\êŒÃ$‹pðp‚YÛ ïVúÏ+€ àäø¶‡:Á `8@ Œ´Úß­Ûtéñ¯,b6H¤ƒèææÆ¶wæB8YK°rÜ`H€6Ôêä µüj ¶‡þÕ@׿ü‡Ka…t;Aw; w¾ r[Bwët”UPødÕ?€?·ÀÍÅýWº?£%‚Áƒ!„½îƒ[¬`vP€†‚*ÒÉÃ-ÁvΈ»x°+f¶¸#ü. PÖ€ïzü³CgˆÌéÌå ³ûÕ%ðWš»–‡[Ê"ìí¡p¤3ίúä`NPÈÝÎ{ÿ:âp„Üëolƒ[ZýjÅÒŨ‡9º@•åþdÝ™pþ¶YC‘~$tw°PGÔbüµˆ®‡ô·“û—ù®/„Àê®¨Ì z÷‡ãå v…N.P¯:þp¸¹–0`µ†ÁqþÎ~g†ZýïTàsƒîDÈ ýúýõfz§3KÜÎãoúïƒJÈÉè˳ÿÕô_n„;À‹“àäáåp „>ÿN¤ †ýYÈ?B•áV€ðõÞmÔjvýS,Î +àß¹Ôw†XþÖ» ˆ¹{pÿ¿Uÿ;äÿû¯,ÿ½ÿwM .vv¿,ÿ¡ü/Øfçñ'çNÂ.È»qPCÜ ü¿©úÐ?¦X j s±ÿo¯2|7Òpë;is sñ üa†9+ÀÜ¡–š0$Äæ·Lþ0ëý;;ª‰p†ýºjœÜ Ðùîf òâî:q¾Sçoôn”þ½ª<‚°ü5s<ü°“Øt'*~~€÷ÝpZBÝëä‚#w!€»}V'œ_G+,‚™þ@ ä/ô« å? 7ýäaÿ€B ÝßðNŠ@ø?à],âtú¼Kåü("ÿ.êÎùû’r† œþ±>Ï]Jßð_;qqrº»%~‹÷n»þƒ_IP¨;‚3=‰€ˆ¾²­|Õ|Q.M对6ÈÛ! wvëBLJi‡ºÂ…öIüE!_Ö©Pâ[9Í>‰Rct5tÔà*ùHA·Â2-\÷‰£)…QîrU‰©‹à`± ‚:(c#È“ßmÉzt+íÓ2IÈë#Hýh.Œ6650©h‹rJ°56'Y…É~|×P²óÕÁÿÒ*² IÆUi«¹dV1­Ý=XÒBl>1Ù)ƒÏï7¬ˆƒ¬<° 2,ihãùaÓòTªõ#G^x&óÆ1GÞ—óiUô8_ÆÇâN‚ZdMá—O ùr “{<§Ê‘¦nCãl¯D&ñRl±­Üüwòl”¾Gyfî|y)0¦Ä²ÿŽx´ 6Úoθ†ñNýµYp–òãÙ)ýð!ë-¥ 醺]г[»Ø5ØçfÕ؆W Ÿ‘‹8=/uUžmíA9pï9¡kȵ™?çPïy³³¤õm>]š$ñ•WÐ5jæn»'¬0OçLˆ@:G]MÚ‹×K=‚«†ÔF¸Ùc êMÇÆ{¸(˜Èu¸,Çíœ?«>NimMã#Ýì ÒÓõ±†žæs¯-zZ?táåßof°æ£tÓ‹£rêx 9«<ö[K.Å,ðBç'Ç.­Û½B*v%Š1ëþÐ2•Uã!ÈôÂ|“œ‡¡‘þFЖóÁ¹‹¥‘óE½4%-«éE{•¶áó±'¶ î¥Äç¦I?ÇÕeÏI]Wš;¤eœ :¾vÔˆVž»`ÇfÏݲ㠓IStw^& tÀ®‰#ž\Ò±Jï-+P#ÃôÉ[\+i(‚¡²f» è³¢³¬œ¼ôjØEð¦ŠOQ‡„9âFÁ²Ó`ï!-¦çU”û[þ=Y™ÖW¡£UZŸ[¸`Ѹ©:þûëµ¶{…·Çê- ÍÔo$ko>´ócå‡F83¦8‰³PM¬Zìûm^8ŒYÎ}…_=è}x\YU­ Š|%ÌÁ¶DG¥¢ vØ)ž<“EŽæÌdÀiµÿrçLëÕÑÈj>%¢. ëpãÅ’6eÆ}ÏèvžÔmnß=™ÓÕÊðju­ @z¢â«¨ãMKeîQ›ÖnFèfÓšÒZ ¦¸Ò©Ïx­Z¶RK>Ç3^(F,€•KêÉzˆ‡V¬¾Ãó.Oi6Ê ´,4¿˜îS®ƒÍèKMâgzQC\´®ºÆ×÷?D.*kf.°äDjZÓIÎ\¿_ž³QQàÛ­¬~†á胷“¬uJôV]¦N$ýëOwÚÚ›Ÿ5kž|˜×çÂj2َω%ľ`.ôyÊ&]/±›žññ¿u2fÞ+ûT4æ÷£äŒwüé»·C+uh¹‡zÀ·$ßö4O¢ÄW9‚›>ˆ­°¯òr6KáÊØ8€ÙÄÓñym 71“Eþõ€™\RŶ,ƒ«”ñišGYþÙl s¯2=a.²~ÿðIÍ}m"-Ùb¥5·Ä࣬ºÆ[”fBËX]H„U@ÔËÚwž\EÙÊRÊÏG*[ÍšÞ#k(ù*[xœéš¯–Uod Çoïðqí”|ß„äJ·?y§ë;'ßÒn‰Õ£IìØLö.§®™ÀfL@Œ¦×¼ r°5 ¢¨‘¸¼Bëò&sæ g¢4§j+0oèóÅð7iB˜IÉOPÞÑþ |£6°NºÅõ­Ì×K¥dÚ°à(”¬'ˆ§íð['•`Àçý€Ç š©ÿÒ«=uÙ0–1ûܱË~”Oi Ï#ÿýÜû¤ð‘vcXÅŽn.We}“©Yžäf¤[ú¥R+Ý–¼ÚÁˆúã ¦êý‰n»u®äö ö:¾VŒ'n[\y>NˆáÔPc´è»ÒL¾Ð­ÚªÃWý¢þÈÇT>Ù;a;·ß;%MþªAW³ï9Ï$[êð®Ùúa¶l³i¹Eîø†¼û1s•«ûµö%/~É=!3=ºU¸TÈ/tâÊ.G|Té1â°èÞ®ÌÏÀ™oa:ãÑ.¾Å–ë`:k5õ}†ÈSMÃÂÄþ!yhEà¬*„Ë6èŒ÷r<-K· I+åLDÿîø.J×Pbȯë|aÁdŒâ•Fñpÿf‰2óÇ’å)Ë^yg*Ö5siö0ùÓJ½°£v«< Ýíú ãŒäB¼Égy³aGù<5XÖ¨ô—µDO¼Ù_»_úË÷ µ—„ã|$­R)È>ö/åNÌÔt:j™®ÔxŽx¾ÉBÒ&O¡ëbËh}ó6êX‚!aAIN¼”§mÓBXcJÞŸ~é£F¦öásjáÙ͸‡uͬ=ù~GôΊ™ÞÆ …+ö$`°³xEØô¶üRíƒ,B¢÷/ûh³ã­æÂªÐÞ„o1NeHFè ¤óŽ=™µ§Ö å,Ä€E’p˜’ë0PlÆ} lÃ’àâ­fF;¦šÇ\z°/åݰOd¾Ð+ZkNY'#1–jy4>Ú× ÉÇõ¹6‰Þ½n½û¦Qh\ºrÂ5WAgк-VqÕO® ó˜ê^ 픬J-^˜"ª|ñËçvœŸ7)¾­šê 9,[§bf]WdcÒz\U¬­{Ol}2ôWT2¶hrEu†x/;jMXî×½´Œ ñ+6‘Y%}5~½áEhZb²t?òçñæ@§UÜmg]n$Sš‘p/ÜÐÃýÈÇUãmÄÿØØ&|M'iÇEŠ»poÔëÑ÷Jm‰Ú—¸û}¬‘»¾ÃœoOqìýìW· Øã”ÌøŠZÐ?WrØL‘Sõ¹ËƒÉn_Û<73qd¶(ÊmKjPH8™£ŠYý2ÄC¤r_‘Æ©pµH3Õ¢P›ç4@tçmQ{ý[vl>ºŒé¬ð‰9c"î` ¹íy‘&ü{ÎòÑ)-ˆ79]2ÖšŠGWGŸ7-d½Ö»Q°‹qf9&.oV”*Ö06(àoÔ¢8QÚ $N³« ¯fv)âÊÕRè_8[|åâŸW¤ h2Û`Õã\@?n&Õµ©³åhìªØé><¿÷ñæa¨é.È—‹³$MC8.^ge 8èé<{ŒÈ2…íÝYê8ÔUa[)Í1“×i¬5 ùÁ# oŸµSšex ¡:Ñ>åM4"ü=½uQ–À¬Œ`¨—·œF¡¶c˜–›öF]ô£Uàn‰ÓÏ–¥&gûŒ+}–k*R¢ ‰ß¡|M’¸ÂñJô½ò3paÖ“è{¤³’+¶*žC‹ƒ¡ dÚ <϶nÙ,x¸È[ÅŽ ÀÇÖ¿åÎÿD¸*â‹Êè¾A’³ô c8Àâ=VÏœ|ê¹#Ôy)MÑ/9rŸÐ¶hÙëÊ4þi¥¡rÞ‰Yãû ™] ˜æF}èÍÏ­M¯Å±¶Æ+ª”û£¬ÔÄ9ZòÊx\Á¼Þo8øV$u‹Wõ}áÛ¹¥ú1…î5§GsZêôô@¯Ç&+Ñ×ý:~`h_"Þ˜à+¥ÇÓ{ öøÚ©þoÒ‡™<ÈÜ¢k4_7¤R¥Q¨6zŽVãõâ‰Ü c¿!¯ÌRÛÝ[”×p„â{^濌ÅÕytè–Š!Øì²Z±-ÙäŸùDyevUy!Ók—iŒýägë-ºPÜ‚’?2,öú‹3Z8.âMÖ=ØÀn/…Þ÷ÜËü ×l¥ø¦WøÛæÑD”—·d'WDƒ/DvM ¹S7íÏÛŽâUm. êîexzõCWîä”è`¤÷ìE<³¾=”Àn,Ã7Á7ênÆu!Ä=åíÉ ÑÏЛØ5:ý ÇÔÝaÌP÷e#ò1Χ®?t˜î¼¶ydª‹Ï‡¾•TÞø±TúضU°¾h‹œÌfèý>ž8êÏÜÛ”÷$Ãýªf¦â•‡¾vnÌùë|y<–ÈÀ´N—¤y˜PL•2pmt„8%å™cG`ÙÚ`Õ—|XÈÓó¬eÑ细ÇT¤ŽˆŸÓ¤p±@Réö˜$„óá8Uh*ïObÛ•dð5†¡mìÞZN.@Æœ6󙋿”Õdi0ŒÐrÀ¯·b‰ã¬Ý:˜‡WÖŸ·[¶ëc3y é¤ݳoJåAçµs«€ÐÊHv“Ó!ñÀÜq]NÜñ“:Dã… lfh³¬ŽD7}¡¥hB Üð{-êZ//”ú^gK0mQõ¢qÞ)vÀ\ý| êä!š!ä2‚뤈ӄÇrépl¹À-e‘•Ó%v&óŠÂXÛì¦VÔ}2ã¸rø1öøgÆ2“{brö ¹²Ÿ»ègÜ‚z—þŽÙËœæƒhæãÝ›Ðh >=ëh¯˜îMæ£ñj»›AÙÂMÙ  ¶V£kIß®üñYgžøK4ïÈ\•¶¾9\bÆåúl¸Ë) ÃÎ ÝÌ4ŽËâù÷Vx_DËl ¡[yQ_\×|µ£’ê¥P´v÷‚_훿¡EN:#±Ä-´¡ûÏ>ñÌùJ…²N¸’éeÂfp(ìx¢ÉÞEê¶Íè(ý•Æä͔ǩ}Ù-Û$ƒiÖNû3 Ì=vh£?Ø“í©\•Ðc , A”j §Ûªª,+Ç bRù“{$έq»‹Ó½^&ŽãƒqN²œF®B›‡ñìTjgh®O#/ì%¥í\R?,ÄÑVÔD:9²¨iµ¢ôlVÅ3D0–‘£_±CØ8•£Ô ßãÄ¥¾À(~iޱÆ8gvô¹£á¶Œœzâk` §ÜÔȘ†b¿xª#ÆÔ Fè±¥p}U´X‡¹Òh)?¼®Í0b‹¢rýF0é2¥'½Ž·e/hH'þ£ê±æj;Rôå«á_MgþŒazš$„éõeï«®킊 ðìéÝ-kïr“¤*É×Ò¹%Öûº! ¤°™F/Ž‹Œ6záé)¬{˜Åo·$ܼdIë¦)öÓî½ß4q°tù5 ’Us©lû‹jSc()tódzñ/Â[NwÏ‘Œ¤_¸¹©ÇŠŸt šœP¥>â^0øÑÅQvàî´á8X9W—¼îá¾JÓc“îPy¬®^ð²å×ûšrC{ÖáëL5&øCÕ„ý© ˆR‚ g9¯,+ÿÔ>M1-¬U¡Ó0àüóÑ«IW¡Ñ ÷„©^‘[q‹6ì¹2hœå¢Jl(Œªó7êÞ ½Äšåz¿Ìwí{#”21FÓÞù‰}^¥®2$rkúöÅ4§¥:Ù;ΖA/ieñ²¾lQ5¥&caN »C×1¥šwåy’Ò @ ”u ÍÏúÆ ûÞ`âëÚr!tæðú<á·±úÁY¾Ó†Z–êüíÜió·a¸Ó¶X¡Hßš ÍäükÿwÎùOnáx¯–9JZùk÷Ô²T0F§èë?ìÄ/lSÂËGFä×&/PI·*¥[v¨ž@å¢ë“âçgã°f±Ê”À-Gê†c¯– ¯ì >W#x³‚‚¯p2èÈŽo+¨–N]†DKn©~ò1<}¹ \„ÆZœVüikfÓ3TP¾òÅ‘9üî%9UXFñ¯.¥w’#|!„!ù‡.…S>žÝV†^ùŒ’ÿC¿ÔGšî­Á\èvµðö’Ìù#ÑL7¨;ø•­Ž”–]ýq3Ö6]ʰ6`ÉþâÛ¾þ"¯$k7Á¢ÔNϵ!E„²¿BÅàs¶¡8.\¾iœÉžgóëaôìteéÝÆ£däJ•kå[ížó]BÜIaIhÉ´!ª%7&ôÑ‚N.à÷æ×gȨg!„ÒÞr¤ÿx2h`›Ï{ð`Ý#Nõ`×Á%fÂIø=¶¸whºt\æìÇ,ÖSGw­~¿ïcœ†»˜£5±0Û7ÃùÐw%5Ó²z‚$š·”"{[w¾¨n½?ÒN‡7ó¥ûàþâ–dñÐ@B?•Ú ͱ;eUᵯYŽ ¯g§ØÍù›)’€Ghn}1:¹¸%ù„:yiÖu’Ýî!ÑXôgn¸EQe˜ô¼&q@ÿÖö°Äõ™’a/!…LŸ]³Ñs‚LxÜüÏ¿„¹vû/«š;êõgÜ}]j­ˆ¿¥v;ÐB}¹PʹÑö<ì~+Ò\°Æ×]ˆõúÉ.#¿AÈ#K2Zɳ"7ÒEiôó2劓™g«Ô Ú#è4÷¬“/ƒ´Ôdp­×Vk’O°ó/.DUMýJ¸5Mé~MöãÛÚ3½À®Ä1OsX‚U©Iʈ¨Õ¶|§K*äÙ›Êp[Fñ' B݉ˆºø˜³ºL"O«YÏ¡ë«øå›œdVŒQΜ°K‰£?M?Ó[®]“|vɈÃ46ñµæÏc,»®ïžª Ç•aí@¿©*Q¾æ.³âUîˆbÚ¬ˆ`vÄŵ$2ðá%ý5Îý#+¬\~~lœÏÒž_ò>b_=˜˜Ã?ÖYÅŠ CÛgç­ÒŠã °¶¨ðB‹.Ò™<äÆqîþñ ïg¡ìyñÌÑ0:ºúå7¹u‘°Þçs…Yjõ™Ò+‡m{Ò„ô½û¦ßÃzêËš#Òcøv<fDì‡EGùº 6¯âå"†+wZ¹ÉDßkKÁšz.»ÖŸ^ ë+k+Án æžxºø”4™Ü*w™ysãï÷/·7¤G_LBiŽMS°ÛÓl£÷v½¸¦ÑeG%Pà},œ*6ëƒÏßÃJÚlvÄñÕÂìUx/Bˆ‚ÞÊ?té}-¯\rW…þ8,]ÿ:u\ûöž¾,}…·{Ñú aÇyº«_E ÍÆ e8ª ‡AnÙÛEŒØ1.êi±d†Ž´Ð¾ÚJ·y„™Ñ÷U'üD‹v™§7HØ;Ðÿª³#ŸÁ_¿{Qlq?W¡Nšüµ!®y"k­˜ã„2*]Ày™Ò7ölT‹õº+ÈܨÆtú¶-©Ý’ÅâYšýB4MùWàgé¯ìùÎQ½Öˆf<úVVªã¨wßl©ÓÇö/àòioϸ=“JçÁztıðús…E‰{ê>mÊjå É'ýÉ„uÓhAÕ.º>Òg±úÆ›±¯›Ðöpk”Oiìáùî›órx›aéCš‹˜M’´_"¾^*jŠ"Œ¤”…’b#“S«¿=q‹U,§gßC6ÝSç¿ÌãM™ˆðPÓ.J+i5¯Î¡åöNáuß`u±hpÊgzÓû˜äøÁãáíŸ:³õYŽTbœ Ÿ‘ã»§€m4Öx»3rP’¯ŒÇ? ý)’=LÚf›×%ÚØCHÏ ìТY›4\͈NxönoÜItàühÕj›8Ò1jž· H޼ü–¥.d„hç#|×@µªÎ¹ÍŒýS1 ê¢Í¨¯oMY®Ÿ7Eõ +Žˆ\úž&©è{e7uöwÏôô{æÌÀû ©HVg€]T?J {Aes&YêzÅ` ¥tMXkoþçˆ3–°:ã•Ç<³%Ù‚«…9Õe2ÁM]5"Ê泌 ײ_P§n,”ó<­(¯•Üô÷\áÆÚÐ0ÐjõI;1¢TÆð~žÔ`Ó Ìˆ-*Qöj4oµ×ùÑá1r¿rgze¯ ÷SgÈD—ÚÙÆqQ°J=æí“ÒÛ™8.²@ :h"D- ß[Óua¨#ÛYþN³sƒ4vÐ>Ô:èÀË:.ï{9®Á Á:ÁnÖƒ–Ê("-6Švh ëÞy¿Cìî5-FÅËÙ°¬÷‡Ü!:ÏCëóX‘Ž'b3A]È~—®@rÊÁ‡-9vŠt› ?/ÞYS-œÜ|ðÁµ.>'´ /+ùæ]F»{Ž÷øÔŸJGï]Ûbï1úµé16c¿ú*æ )ìVS‰J›Ù>YòôÁi,ËSß‚e|£Ÿì›Ó5^­v Ž„Þ7jT3÷§ô4µxô­Iœ•²J@¦§‡|Ï™ðYíBÅÞAÊ~{bvöø’æm‡¾IË>5U"ůÆeûMî™|Ù¤–:bYÊi”x›,~˜6–ô6ÊY{mÝ|VFû@¥§?aÓ@„ì}1XSɰ­êôóo†9?kÍܧRžÓ$ø:‚â»ØR «„±jNæ"íˆèúm»ûÒò*;ýu5U]ýÄ>‡AP#ðÎÛÌÑ}Ày’„VS‹í›ò™U-B¸ÅÕ—£¶:GwTvËÙQ£ç|¸áŒÎÂÌÓó{HÅy쥉<Ÿ$ÂÚ·/ÄѦô˜Þý¨"³ÊW!ý ¥"Q^pêÀ”!Æ«”ì̆¯^,˜hK÷H󠦄š,æN®»Ì" . J5 ¬Fyl.ÍìYW&”ÔÉ]à`‘ +Ô¬}?®?~Öœ†¿éúññSùùâÚ5ÿž%…/+N»^Þåà|½!âû.šD؈{d‰œBõ¶”XÀ<{\7§{ðÂ2pïysiPÂô,æS!ê®îFÙPÌì&ø`os¨¼ª£Òµtã,ÉÍ5‡K’•rM1þÈ#Mþn7u¶“U< ™ÂóÝnÓ5S Y"œ¤|¯¿©5c+Ý ºðQ¶n9.Éi‡kÞ™pL0’pWwRj|¶Æ®ŸÒé ý0j¡ Î®@ÃÚ(A~“A5áTu$pBâÝ3•ÑÔj7Í}¼‡Aß!ÆéÖ”|"ªí,Gýþ˜*pÜøƒÊ3"Ѹûí¶öT*1Ó¸uÇåNû—|J• ‡Ý¹Í­¦Í¥±<¨z%‡Ô&¬@÷¦r/Hã¯Û² þǃAIàÕ6ÅFx(ÏNýB|è…Ljo®PbÓ­¿·G¤ßH¿ã†züf=6ê4I)³[ºEøèFÉ!ñrƒX9¡ÖÍAšãíIi òz?móÏoLåeUžá§„KFÅE+Q't{mɘqóî§™EG’°b#‘‡ò†à’#×£BÛÊu±{äýÒ×Q;aøÃ¸çyøz?­†> stream xÚ·P”í6ŽHIHJÇÒ K³€ )Ò¹ÀKì»””„¤”t§„RÒ¡4R‚4ÒÒé‡oúþþÿ™ï›yö¹NŸs_çžy˜é5u¸¥­á–8 ÉÍÇȪéèð@ ÈÍÌü Št„ü-ÇfÖƒ¸" p˜Øo²®0òN&FÞªÁae7GŸ€OXŒOD ð ¿ á®b9°;Ô ÆP†Ã lfY¸³—+ÔÖy—çïW›;€áúà íq…Za50Òât—Ñ ìÐ[A!H¯ÿ„`“°C"Åxy=<¾Âýåý+ö‡3ØÊ îä †yAa¶¨# ¡ ÊƒôDrÀ0ë_†`GüÎì†:‚-ï þ( PÖ€ï:ü«?„•+Ô‰àA@õÈû+ÌݘåaÖ²p'' ‰ÀþUŸÔbu7w/Þ¿×÷€yÿl 0k›_mX»9óê .n%¹¿lîDØÿÊl!H€ .ˆ§•ï¯ϼœ!(ù~‰ïzðõv†;lîÚ€øBm wØÞ°;€tuƒøzÿ®ø/ÂæãXC­Kˆ-†ýoô;1ÄæO|wþ®PO€1ðŽ~|à¯ß?o¦w ³†Ã½þ5ÿãˆyUuuT8ÿjù¥Œ ÜàÍ-Ìàæ@ @DðýoM0ô¯2~sU‚ÙÀ ?«½Óß»ÿE¶¿öƒðßXêð;âBlÿòÜ(´º{ðý?³ý—ÿ?’ÿŠòåùÿV¤àæèø‡žíOƒÿìuôúË⎸nÈ»%Pƒß­ìMõ!n®Äêæô¿Z%$øn¤a¶Žÿ ŠP€zB¬5¡H+»?ùò§\÷צ9BaM8úënpóÿ£»[/+‡»ûqGÊ?T»íùoJy˜Üúךñ À®®`/là—ø…„Þ|wûh ñüƒÆ^yç¸kÏ`wÅþu¦Â"^Ù_¢?‘(€Wî$ ðjþ‹ø¼Úÿ Ðøô«r^ëß €òðBƒwYƒ ¯Ó¿ð޼¼°ßà](øoð® çß  €×õ7x—ñð"ƒw5»ýïÊpÿþg¢Vn®®wˬ¿÷ßø[ ñ„XaOOÀ­Äƒí«‚?œWJSyp¯b,|o 5ìB²LæxÛ©b¦=u‘±°.#ïOÖœ* ™ð¡âØ;ò4iϘORÌF¢Èw/Ëpçö]µÛBh­á”¶Ã"ÉáË„ûqZ4øÆhƬñú×/E:ÖË× nZëF m€ ð”€>‰ %Õ²iHÏôùÙЄ šÈÕ8Åí™’îð j$4úLæÃ+Š ¯eãèÔÏss½=ÝÉ?òT:+„ËBˆ)Hž+Ógõ¿þDñ(.C¹Â"#t*[/°?Ö‰’Óÿct××R«óX+3Ùý~ø}ÌF+ƒû”Ûzu {tª ¯°(EÅà ì-ynñíÍhÅ=ÓMÑUI„â‚S´¬-:Å–D>¯ÆÎzøçÑŒPó‰€6ßÖãBÐ8V…Ê’^á{ÅÀé“?[ÌOöù>ÀòœÀ[Äžx¥µîóê:%†lA’ì S[>-Sap`òIyÐô'Yýu5– þ'ùð YÀf]lú=¡k­{œ:iTà‘þŽÁ+XðÌ“ºç4¤P@8…¦*—šLŽz£Uto«$×4æ/Ÿ{Œ¼ï½íæƒé,FÃ×4oUwþ6[}S¥ï©îjåd»÷S¨KRªëkRàÒÌö使gª+žÔ2Œ_Bˆ­~Ó<ÿ©r]Î1âAÒZHëÅ7ʺq¨ÍÇx s‘oÀ#ihù¶eÑluJê›:ŰélHRó%yJ–ukÅ(Å»™~e‡´I®›?cÆï¨Ò$ç‹°ÝK’ó“Ì€‰Ý«w^t†÷t~žm‰ñ2‚Çö×&DY$>®JRlUÂOª”É|øICQ·Ñw®¡¶’t9KÅ,ÒÖýœiç«%I ]Z;e½î¡;Öˆ¤õ[<ϪîV'>ž>Ý÷3=¾ð<"óu,XzGÓVI_«´o-ºí‚½ºô “jø^†5^æåB9 Ü“¾#’³”«‚ygkÓ©'‰AÝ’f'œîOböçÇ@q|¤ß~ÇY´4Nè£8A»aÎ¶ÑÆÉ¡wU* íqÉÛ£³ùÐ(Œ±´‰êm.*¥Ñˆ0{. q×£1¹H‰2ž™‹ "·km‚ õ«1Nø›ë—Éq„ê^Ÿ¦“ë w„ÒcBËÐv¶bOψ&¼|÷æ‘k_´ŒÞ $ÂÉÂUò͉(•žÎÀ‹#QoêwC¾÷õv¸r˜»äºÓÄîä2‰Fï‘{Å !t4Ÿèm÷øç);qhï-n¥.X›ÐÞ[Úí2ˆBß_ ‹EPɾūù*]¹ÙÏÔ]õ¹`o*r¯m¾^ð˜£sùœ;ä{¼¹úƧÞE V{ùØV|õŒ-ŒÔB“¼¥x_ò7½cEÏÚãÊ=‚¦-¬¿P¸Uy£”ºVè'5ãã”æ`ûBÀ˾¨ë6±œR• >"röQ˜³¾É~eÛg×ÿ›åÛ×5Õw?òƒ ¯ºîqp «t;ÛÆJ}U‹Î$ªÏ!Ì+|ÅfñŠ?u3ˆjÖ´b}D¾ù>4ßì]fæ˜l[ÿMÑ›¡á¥£ éj…ô4Ù¼tç¨o“âãûæló<zãÀAztõNó» ˆ¯ZŸ0Í×Ô wšñ«®¦ô3Æv²˜hýµ¡?K²•¾råNH²íXžñ“±¢v¥Ö˜—®ûîRÖŠ‹(+`牟œ!„fÞÝ|³tw±Z¥ÍT×z£½aWðáuu $Ã!èe:×f鸿£Ž×WHO_WRûfÑœ®ÃŒÞ±5CíÁ¹Aø©ØDã²Á÷ümB 7]ì‡äË|ű-*ºeDH||àóø­TïäX&p Œè"?£4ª=ðõ}TY¦>/|˜çë`t‹Ö26Û¼Hî¦ûHR|JS‡,Ä©ájéí'3Hü¢•˜§4“i‘a_GFZ ™]ýœð¨Ä®•¤¡@vãüÅõÆž&tá”n–é[¶„gÒ dËXûL ’ÄÌWãe­,5¹hÿ‚gsÛºà†|1ËUw- Îˬö=Dôø¦Èìw4—Xyk¼M?»Ç¦¤e8·K›Èm7ãQ?FÎ}§Æ ¸¤C<2<&Çí)ôQö/~XVo'ûñIí³c¤\fÐ3©›iyz S»¦Œ¶UL´í4ü¯±Ý{Ážè'ýŒÑ>Ùdí.=1Ͼ¶c1é´Ìýnõt¿,‰ÿÇÙ×^-·x%ç…™Ñr‡:Õx”EÙi–¶Vä]*£mÞà œjªÁÁ«iäú–Aÿ¥ï¼‰N—Wl`‚“Ž)ÌŽ=^ nzD_Yú³G‹¼UÚ(ÀîC$¢ØO£!io;ž@ù@ô¶¹Xôe½Ð=?Žð›@OÂÂÆØ[¼ÈURûg–±Í‹Þ}¦§-þWµÓK ÛÕ™}É:ÆýQª™-§¦hÇlò¨­ï²“åÍLëè'ÎGx—²,̈qh…MXn™¾óv=O–¢|õ8µžÜQm"’ºcr¨mrãôüݱE™óe)ìY\Áy+Óì^íº^“dIrKܤQ4ú^n$Ä»ƒÏZduã»>žž$íYj\[äø— [¬ïߣȩ̈ªŸÐ]œ| G«IhßVŒÂ0þR'&-¥Ô7MPý” f™âƒ\WÓ4`¸i`ŸêȾ%ßþr  Ï´XÒ1­’ÕKü”Ð+¿ö +H@jIü¢ ÁÀ{ŒOÙw$DwÈoÔ‹—¡d!a÷Þ ÑAÛºÌYÉAMîÚýUo0ÊÒRíÊÁ dp ªT[aÎ^/ý=í¹Í­$?Ф ¸K°cëNÓ}ú!eQ‡¢B¥/L½´?š—liÖzÖÊì8YXHrlähîÍF®_yÍÕÀ•úÞ@md¸šÒ'/)#7n*Õ· JäŸWµ­N6&"ÆûîÂÖ'J¡µ+I©šå$µgPHy§u}#Ù’¸£NóXλV+.KdL˜З¬‰•./âmŠ5÷²:ûÜE­çœãhõzŒ~ý±8ª•.@ÞÍ«à½ÇÆN¡²½–ÚëÌØAÒz„€…z(9q;£Ö „z$(‹â_µÚ¹†²j-RêU¨Pkªm<Ö¢ °Æâ®ñpo¥¿Zy‰+D¹¨«o+¾ß1üãŠkÖxž§c¼Yr;¹4Ã6S‰+ñ•B=/‡^ÿ$ä–NÜÞea|Uv…ÙSâTIlŠÄýK-)¡ö ­Û¡ìI‡ö¹Í H¦²›F‹5ÞŽa×ö!ÚÒ;‡Ž¥ò¨å\ïæw„a¡µ"<ùe·”ŸðæÞ>mO؈{Ø*ÈŒJK çèG–®yК77Qh¦­ýÄñÒ}%ƒfçWrÆ”Ž.ž€E“ó\­¯ÏĘnûÁ˜5þ ûQ:³}Õ«¦ ¶gïA"Ч$ÍÔ‚\$M,^‡¼Õ­•JâbÇÉ^Ã1)“ íøHéAuÁ¸žo‘Áçü¡×Â#=³÷ÍmK¹‡Hâv¸§å4N†TÇ3™Òæ’ÒFÄO»„ÅÌ#da&|a¦ù¥@Y¨ü\¿°‰ûq~®¤öHü¥àx <ŠèüŠ0ØãÜoSÑG934í²kñ‘Ƥÿr–q†«Ÿ¯€ÿ¨ËÓeÒž¯–”T¬$²öêò.ýÄv .yŽ´:v§¶ð3}í뇳3¥ôr غ { Ùg¹×kkSWœx6feA.t¼ÛéQ<Ô Â1TpáK”´M¯>cÑ­(¦É Ñrþm£r¥ñž«˜l`9RûOv ?’€}©Éã ƒ™eépæŸÇÕêÌÅyÍ µe"‘÷X¬qk±_Í..L•ð‹g›$å\‹ùâÖˆœ”CÕP€ï_±]ŽÈusoð}!¶ÒîlW뜮c¾ùI;®Èªª,®‚mHšÆŸÉ0)L8^¶j•éh²òeEv^†!:Ãê¥XVï½,g[[³gÝa"Á*–áâA+ Îlàx 5/› QÕýŽ&ºà?_£@Ü›)-Ë»ž¸U½}Ž_@TkÒµÜ ŽÓ]#D;8~Áõüøµ­¾è'Œ@%‚|_õ,½3æô¾ [dX…@i>ºx.ëZUëЫédRó‹“9ú;Ç¡ô·Ž£ý·4(Ñd“ctö{ˆNƾ&æ²ô‡41‰ÄnCÌõ,‡XVý*WÑ´n«„ãX]C…¢x?â*ßD¼ ‰S7ë]Ê3S¤.Éé œTA%JÅê5ŠêµJc¸ WÆ 22NJÇ FhßÛk.«;tü¦Nò©z¢elb X͹ÐpXÔÅü@MßgX¨Î¦pèõ1äæ0ªñ­ª´Â‹qÀ§Ò»ÀÇjÜ-}/‹@Bn‘EûõI¸«—µ_àQ½åkúmaS:ßUv„;Ú<ÄÒ«Z­Šq®Fîâ:®lÇ}¡SYZ˜˜R;´¬3\® 2ZRVMåì­À›*‹ãØã•Y´¦˜ÉŸ™‡ öÑj3(.’âÔ…Mè”ß̘EåZlÉúîp3V;òÙF cd9TN‹=e¹d¡>ÏÏÓÝUÝŸÛf¿’Ê ÓÖ”ÙÉF_ûz|÷…mšfD?mëèù¼SúUÕ´åÎwÊÚ’-ùãÌ!8€\Ÿß_̺ºÞ‰ŸhÔÁ1¼Àª÷Ó¸Qc–¸8—I ån]Zî¹Ä 1 n{fjbé*»zþýûˆ§ó¶ä©슛Lú9õϪ›^eÇTDq~_£ºT €¬SÅÓËví1©­Î@ð{ÁTó”'¼þ1¹Þ$v&éï:ürW<Æójìξ–ù¶ùu ”^u›So4ëÜšVˆPµMm\šõ+±<|:+xô•`3ÌÁ¡Að(â;“%#-²@uÆÁÃÝ  ©§|<årßväP­G5nX6¯ŶåiÉ&€Ù€ù‘èt)1 æãSF¬¢jÎðwQô+“­´ÇãìŠýÔÂN¶öë—¦f‰ü”.|Ïüpc1¨¼ž‰Š8UVõ~lCJ¸ I36éNÄ ¨}*G|̙˔á©™ê’ûx» egœ,j3º ‰zjbþâQ¥IãÊç\7ÔØ©Ê«Âyß9YkÀ$ Ÿ@F†h+–4_Ap8,\²Ugjô%¾‚CÒV–ðÏK.Q·OáÃ…š[îDy™:Ï’¯áî¦'´æÂŽÇfF „'¯rý=ëÑ·ˆjuQC®qói˜„‰êq,hl’ Œqv›¦£žªÉ…H‹b}ÐïþA´—«ÂpbA™@Ð×Çe©x±Ú« 0mò<Ž9-˜}ô±åsS¥ËÁçä/S~¥ 'dW|÷W™›PxPWU8‰0.7NδóïM›TÏÚT’’³ËR˜dÞ¯$aîX©بPfÇ”Žü †‰øröqÌŸ}Ôèõl^EXŠ* /ë¢öè£ÓU¡BjçgìómÚUË¥ÒU/6êk¢?t¾ˆUË/a_–ÅøÕïáõ Ä|ëVÇø¡…j?só6{ÂöžNŽÊg¾ AÉ:9iâQÇrpÞ|eBÝØzp¯>¹|—­#C 5oŠïbp2ƒ®Èô…}%‘ô‰ÐÔüÔêPfQܦx2Ø£(€[ ?d¯s=Ä{é. |aŒ÷#œ¹eó¦ñùQô*q]7[<æf<õŠ¿š‹Ööd†–nrG±˜®PQx»eÿ½3.4ÛˆA”ø!KK-‘+´- E9Ø “ÑŽ›—}Y†eƒQMö&P éžôâGmùÎJT lÄ®Ñ rF•EG‰mQ¥ù¤±ôU[„úõ‡è˜•ù³‘«´¨ëODÛü8²ÊϽçˆóŒñ'çw¿ Ä¼YŠmE¶õ9é1’J6.¹3QÅ^¤‰Ô:¹À<ûÁI‚TǼö÷¶KÝ©QdFÕGíß?Ùñ¥ì«˜Ô–Èùt$Zx&•ÅUcÌ‹W>ˆ{}éJ¤èƒÃ0¼ب H^éb¯Gn¼i ï"eUÀ!,o>ôˆ%¿Y~A}¶»ï0&»›«ËÐù“þ+B)È¥i·¾!”D¨,5u:ÿK¨ý¼eeþeB,—ö³/T‰vì»o)ÍóBE*tšÖN<&iâ‚´ÎÜ[ªCO|èw® +MQ%sÊ®9{%…7b°,É_vû„ÛIâ(7¸³†µÛ-Áöºœ÷b_+~íÂÔWq¸˜iûŒ7ØÏÜù|ï¦_÷FJÉä€ËÀUu–u‚cĺ£âF·m­~(Äò®jn“‘¶kùJd ·{9³¤'—„ÕèЄƒjPoˆÎÖ};âúµªsÃyCP0–܇þJìoô€­Ô'tALC`ìîZ»7S7ÝõeläFaÎñ†UÀ´nD€õ˜£~ȉ=V豿,#ˆ#¤ `ÎT‘÷´´@ÔMÊ;ÎõîóMUÕCÉù‹jÛM;çþÞp®¢×Æ„7­©ïZqˆ»ºª”D÷’‡¡{µ¾T@JxÉE”‰é]»L¤2ék/€“Ç¡¦Æ8.]¯õàe«&Ù—Ÿ ïï«Ý'9–¶nÈ]7¬²×ÍŸ-ºØâ¸Ð¼ÚÈotëåßx ` k©Ï3È(|kþXî'^@[_«¥ùnÒ7êkä¶¶XÞ×á ÅÍĸ¯o=…ò{p6eeý6A³•‰(¨:šMR#84kC?~cK¸ÚÊKÌ7EʬsÖ-Ø]p—÷yJÛnÈ +5}ª¦’œŒôaóß—}’syСž(Ÿèó,·/‚.ù‡"ª,wÿ`X|¶õrc §«Ç ý<1†ø=)¡7=¡aCÍMþNèrh˜ìªeY’ÈÃÁs[ñ•Ëå(f¡9Ä·[8¹Je!9ÅÔÜ“C7fÓ‹"LÄÌ^h}*Ÿ„j€qbm0dñ³ç—dRÍÚu¿€Ø§@¡LWÃÔš6"£ ÛÎÓí<,ß00¾±…è ³_ŸÌkC¾~v{üÕE’H ­Ï°¬{öW´ë–¬¨ÇgߟJÕw%,†µ|d·™w¨#Åf¸øTöGÄ%ðFþ¾g›Ç0ûx^ùfø8M1 ü¢ÈÀÎ1|h_Z40åúíaɹ׺Þ>wä:Ù©bz¥X"ÁáùŠè&Ùµèø2¬"Üt“¬Å1þY€X{=»©šnÕSœ'rC"ûÉVdiq,¿ {3 ¢'„Hüþìb? endstream endobj 122 0 obj << /Length1 1387 /Length2 5972 /Length3 0 /Length 6922 /Filter /FlateDecode >> stream xÚxT”ÝÚ6Ò"’HçÒÒ-Ý Ã 3È Ò)Ò  4Ò­¤€´´‚tIH« ßèë{ÎyÏÿ¯õ}kÖšyö}_wí}]{f »¡‰2åÕ@!1B¢Â@Y€ªž‰•(Š b$\\¦p ú·„Ëꎆ£²ÿPu‡‚0X›ƒê¡€{€¨8@TRVTJˆ2Qî²5'ÐÜC!¡h.U”›;ÜÑ ƒ­ó÷#€Ì•‘‘üPv…ºÃÁ $@„q‚ºb+‚A€ ‡b|þ‘‚÷®ã&+"âåå% rE £Üø^pŒÀІº{B!€_#ôA®Ð?£ “pLàè¿&(Æ ä` 8ŠDcC<¨;[`¢­ 0pƒ"ÿëþüÙ€¨°è¿Òý‰þ•Žü ƒQ®n ¤é€ÁP€†®0Æ#!!¿€ …y‚àð»u@CÙÂNøg>4Øî†A £áˆ_3ŠüJƒÝfu$Dåê EbÐ$¿úSƒ»CÁØ}÷ùs¸.H”Òïï Ž„À~ñp1CÂz@µÕþ`°&’Û¡€PFRRB}€zƒD~0õqƒþvþ6cgðsC¹`Ø1 pûAâ‡yBwh€ß:þ¹"@à` ÀêG’ü;;Ö …ýµÆž¿;Ü` ÄÒOüõúד –aáóoøï#±P½gj¡-ðgä9UTPÞ?!1€Œ$ *** ’’ü3!þ§ÿˆÕFÂP™¿ÚÅîÓß-{þáïðþ™K…e.Àûo¢?JÁØ7Ñÿ3݇üÿXþ+ËÿJôÿîHÃøíçý ðÿøA®p„Ï–¹¬ ôPX- ÿjýKºzPÜÃõ¿½ÚV ÊHG,£…Dïïüe‡£5àÞPˆ!vú‹5ÙÍ~é GB Qhø¯þ—+2° öAc©ùÛÅjèŸuÕ‘`ä—ØÄ$$ ww ö¬±+ €Ÿ(V•¨÷o2D„‘( 6€1C¹“ü:XìM&†»ƒPð¯3Ãüò’ü£ØÃÝ+·ßTÀ–ÿ{ý[ÛP¨7L27Ë…9¿ k»¨VföZ&\ZîˆN°ê’ÀpÏ<ósÒ%ÊÔœx¨byysè©áliÄø´?3ÿþň÷ƒ7ÙÁ‹iZyõÞU•C¡ü¯Ço¡l“ã¨ÔÓèUªƒD#V {k|kžd‹éËp©.ñÍÊWèÍû2»W@Ñ%{3æ‰rnÇ.îc+vÎeÌ ÕÊ8jwëtSm³Ñ+ÜÇð¸s•¶XƯ>«Öqƒ?¾Íîë}*~T Ó]%ù2‚†‘Ö÷{îPR?#]bö½F4·ŠÄ™jijc¡k÷"ž½Ôâ÷É‚¾ÖÄ~qzG}ÕàÞ5xÔ¢$¦ås»XìÖ²L¿ŠÝlJŠv¬~Ê©ÂUÁ9L?¨GäuãÓ³k;~êM¢ŠKέtqçb‰…ŠÛnŒÝ¼°’™(*f“*îÿô\EÒÁæ6³˜¿¼›  aâ¢1ÔÆÓgw^öº-(|ú¼^ny+y²Õô¶m°+òŹÏJ7œ`Ùž¹Û³“ب-qöžÊœ_]S£3ƒê´ã‹ÏŸ 4ÎËÅ7líД»¯$3;Æo.N‘oJ5cª»‰“®ÝJ6\9h’’œÆe¿”µr¾BòÝ3ù&ùTé ࣅ±ÃkjFŸã)kVou}%°Mpp?#¶ÕÉë¸ïd_¬Ïss'Þ°›p¹¥b5|(5½˜§òÃ,ÐŽ¦äу<Ø“ïq§›'õy–ʵQ÷Ñ)«vÏß±¶ßï‹cI=ö¹»'uÓ[«þÛþ!à¦l?GX!¢¼!^¢Eõc]´™uH·í¤‰Ø½ë¬áä+©¨õ¹Üµ`7Û­zý·ïeUÔÔ<³á2â«/õ‚¸eüðI£ÌÕÈN¥©É@cõ!bÓHa'XÉBQgž¾`ךóqS Uí7M·Ã³n–4-5,"÷ú}Áçx…!Òß= Å?|±4|료ê¬Ù´»icñY-D¯™0ÊêÎRñqDUUüÔ»KCõCÝ+±U;±æ/›KQZ©~$¢ ÞŒ´;´è™8%ØÇYÇádV¬§xR»«¸œìÆ?&åI>à ¿`(ŠXÕ¤HVz¡Ÿ$a{(žmº^+ k‰0ùE†6ð…Õ‘U¥&7&¸Èï‡i’¾ø–dìûœæø¶í9fK¥æôáäîZ_FÆŠJêÐÎtÀ·×}s¹h1ê±ÏâJµ]åd¥’ ˜M:¹É$õ'”qãšNÔåy†½åJÓf€¤’Á†(õÇ‹ .¸ï3øÉ¥ˆâYϳ~>ÿÖ82»5ùÕb;ÃÙÈ»~|dC%H_kD7s‡…½IXY±åËd7]ï ‘ã.WìÏÕ.Ó·›päËÅo¥^zØâ˜D“(KeHªÈS-x"2LW‰_fÄ׌¶q„Ÿ—ÒØˆ øE÷ (åM¦ 94þÉñóž·¨%¼ÈcëIQ¯ǽ5‡—¤×·;#òòŒ•~3Žw©ÍŒ˜3T­ÛöÔßßäД -úL¶O”—kS/š¯Ìð:6EÀ³šw­Ù|êËRŒfIB*DÆlAë»èžg·'ÿ]“çìÎP„¥ ˆ·ófwjMÄ£¯È‡Ú†9ß ÝîûaþÍÑjרúîQ|]ªï¹5Ä0Ý7ùÖt¬Ü¿YAUûv™q¶Iy-¥ùM;ÑQ3¢u•ocìÑ+` 7Œæ¯{…–ÆÁŠ:p¼\æ#o²]h‰òI—ÄÃ9žŒu„pYgוw›+Â;©©£}7¥ûzý;  ?}L3Ÿw×›»öo<]f|XüÎQu1ñ8ñ`öuKæ5_‚ÖuÓ(ÕÅ@‘Ì£–ÄÞô‚b+ÿÞS™Ø>÷Ñ)íÇù(ç*³=3oçüá낄âÕÓ¯¾vkg!ÔtŒî㉟7 !Q'mGíëc$"B'áJø[†Æã±L Wò}Ù`)0ÍßÃ):ƒˆê且—¿‹qþX^@ÌŒú2”iV².ßzÝ¿ *µ0Úæò ›¼yïUó¬å ¦‚.qŒ¶°§ã¹0þäíè^ëäÛ/XCÕn«¿Irs«Òà//9­YL÷½ ŠÀ“‚ŸVisÈz¦'„„ñSÜ%ü¶q¬ý‰<—`%Š•›—Üþw—Fz_<=ï`gÚ«¦þ¹3W&&Ôp7ÿ‘ëgôÝ ³í`7v»Üb£¶ùÓ5ž"ý,ͺƒe‚trÜÞ’á×Î6uÔÈcqK…{ù¾Šsj{Aòúá×Úd¬Oü28Xñ*pÌIóo=îv)ñ¿@­Ä\à|Gk­v‘Å«y­4_ؼ"mgN Û…<óSO¢,ì~ì<ǸœA%ÌIg¾¼éÄ„É>óuátqá´¹³[E‡†5å«¢lUÅ·HS::þ.žsöÔí¨êY²ÑFF4¾Ãr ˆÛñµúãg,¦É;4Æ¥ñí~L)S%u"wiŒÞý,pÕ‰óãö•»;Õ™Kìz´j —z7J_·›ýü ?ýÕCË ÓkÈ#Ì]æ©X—#bÅR1WF¾Ü¡QØIsÕ^êòJÁ…ÏmÞÕ*{®y¿2fÊbö6#¶l 7zÉ»ù¶©R.P1åþø@}éÀ3>ïh ÃòÄè9ç7ÎWò´LŸBf²w Jâ`>Jñ2¦4ò)–).~½-–n¦ŒíÂ\9UÈóåt‚w·vÆjQZç«< *&ÊÎ(p8š“º§És¾¢ú ­Åÿ%ßál»[™T|5S¼Íß² ëoèéµÔ׆‘=ìóän¨ÊyYšoöøiƩم!G«ÎHD„@yÛ„UTŠFXΛzF ‡03gêÖÉ9ºɼ¡æµÒJˆEØWžîËÙOÑmn(kÉÖU>[¶ÒbuM®_iÕê÷kò í7¶µÏd$$yÆ©Qò>MKmîÈœIÑíˆÈgüi3­á"—†|kHWŸJ$áÙÜY¾¦Î¬¡Sí#ý:ë&|íA»¨ UâCSzßÅ ØõÍëw'ÓRb/ƒ¯ÙßÁ~+«‹Nßãi»ZþÈi`|"„h>ðAIÕŠ¾˜ ¬tŒò¸'%žH¹Swä¹¼Óy¨³`á—­7¹(®8ÿ¤TïÈæ«¬£-•ç­„pÊtË9‚0•[I×£‹-iâ… —µåóØM_D„o4¢é?ã™Ù¬U†&É[Æü¸q•$Q÷:&È=H£à#_Á¿ì Š×ñÈ–¬Óˬì^“ài¸è-J½<¾öàä|6o€E7w74ß0™[ ƒ¡À=óÐô•Óq¼3<þ„M®Ñƒc»VîÛ“Ô´.Ïö¡ÃËSÕGµŠ÷B[E’48$Í„« ›„¸'tŒ&ÀŒƒ“åãò»Á_ÐÛ‹{¡Þ¨{6Ë3eìï¼.% > <Î ÂìJP˜¯ •Ö TP6V¼|}É*Sk†ɬœ.íóÙ\ìI&2Í‹U•¸Ôtw\1#ì¡”xÇù4–Û¿:¾¾3†øQêGͲµYéܧ;dùU„zžëK¼Î ˜âÐÕ%Ù—Ñä—½,››^#Üw7à f™¢\É…cŸÇ½<¼nlÝÁ0–ŽÒ¿ë|{ƒøOÈfO›èKšYò×r·(Ãè性yeg¡ñ5Šgá«4÷3î°éD9Fâ—ön½è*ݤ QŠÍ6­HLñ€Î8¸útüít>¼]=òP‹ÈNŽ&8æºê‘–¾š.nÝt`òT ªw (’HEq#dN,› ÆŽ'×µ56e»0)³ „&f#à>rg1UWëÂOåR Á.ß\ JÛq‡,«xB_í³ÑgSÐuÝ5+~5£¿ ­‹‚8/ gÈÅ)#H3n33}IÇðX¦BèdÔ¥jõ׉3 ±Ò~½6G±®Í9"‘Œ7ú¾Pæ¶ÎÄÑB˜<[áFZ¥ý¸å…r£9ÙÎ`ÏPï1Ì‘ÒPDÝíq6¤Y9zÉ‘õÆ1Y%&'v¤wÎp?îDNÅÖ(Þ 4Yük'¿Ê ñÚPd+gã’vùÎÏ<;Bèû÷$·Ò9_/Ù‡ÉЉô®ëÕBƒrgßôìLT×_c£üì´†gSäpØyýj»u§ÜnGìîøÅpZŸ>åg KWYµõhvMã½ü¥J/¸ôµC·É0Eõ³ž„¡S˜šEVÇ»ôÌ5è?G\´×Å,d`i¥Ê±‹ž†qLdCùÏ–|粈¢nŽâº“ý„i’¼þkºIݧ<Ü8+jºZ¾Y”„” ÝÒäÛ\DZIp+¼GüOÐUhï½B­Ü»:T«k‘³Ã{NÅ7šïKŽÝ Çq\w2²¸OOŽ7rï&Ocõù |ÉÚ/ýõœZ¢L6šóÂ@bÉp-Ì«Ûn,Zî³(=6Äa»>þÕñá` L½WÎCþÇ <#œå¢‰Þ›RÚ ^¹nðõË®=õ q±[Rº_ÓR‰¶$ƒjšÎ•*žˆWuŽ+-Qù‡A“÷œ•FßÙÆUuO Ž›è½Ó½®ê(b ×hZÌ"à&{ͦž¬0áß gOÑKêùëâÖ|•©õxšÐæ ŠáùÔŒÉùÉR9a˜OÌ!ÆÓ{JÖb”HïqßÇŽö•)„#¹ì¹ƒÀ惛YD•÷'I¯£UIËWª”j:lDŒo"aY¼ŽJ^6°"óŒ¡.ëÀG»±¢_·Ùl)”Å=+®÷¯dyNT±4ˆ]ó$%ñý¶nÚ´øm8÷‘ÖáöYÖ5ë,_ŸÑ¤)N|¨hł˔ÄSˆ±òg{ÞÞp%¿y …Îè5…o‰U›>J½?›Í–¿ÿþK¡[K®ì—vx×GÅAªÁÎíßrH Tùþ •X’¿Ðî±¶ó§kwƒ#=ðœÇcПŽ]aAü;°î CwÛsÛ©Ê”›|SB~ñÍÕÓßÄ(Kºê(¼ßníߊ2ê%>ñRqK\i»2¹jÍÍâ˜)Cd9žùÊ5פkûL=PŸ!x3´íæ^â¢GÚ¨D¨Ôå~ýL<5Ñ=19ßèáb ÞãÛq3î¿Xœ{]ÆqS¬Þƒ$]š$q!Ð3W.¾ÄÃDL[Ó\|šþiÓ!ÊèÓÉaµ ‚:Ϲ÷ ÀÈäKäɈC¹´òˆK˜FÇ÷>m~LØæåê9½ú‘à*Ô\l‚J^EÃG+|Üoþé…ì“ÙœØx“€hÔÌÛdŠN#‹–g¡W§ã‰wø |¿·ƒ›ŽÁ)åVÜ—KfgGiâ?ïÈïJQ§XÝ̨;»x{¸#¨,Ô^ÒˆIÉV¼|“±LfB ×éóo¾2m©ŒË$ünP”7e›`úıåº`«p¼ö̽ìÈòQßÓ³Æë$¨¶˜“EÛeWÒµåI2ìó……f9Ý^`{ÎB…‘ *¯diàÎÅy[®œ£ÝmïBUsq‚ôñòÎbÜím“èìyR4)ô~AƒWí“ó#ýé… 5ãý¯ÛIóýDcîéMèF5õQÎÙ¤¸|Ùº‹dÜ¢H—³%žÚÕÞð×>ØiT`Í&Â;S-V<»RDÇINÆ~i¹¨Z70l¼Ú÷TÊQŠÇ™ ¢ ¦5Ï rS†)w¸{EžZ•[¾çÖú:žwÕ“Å£HÒuÑ9TY!¿>ÿ8÷ù"AMðæ;èURJ´qbå«ð¸„’`Ë~a±§[($t_Y¡á\x¨†ŒÎÓö > stream xÚt4Ü[÷¶‚袆!:1Œ½÷Þ‰hƒÁ(3˜Ñkô¢%ˆ.ÑKôNô.D"ˆÞû_rsÿï½ï÷­õ}kÖúÍÙ{?{Ÿ½ÏyžÃD¯©óDÊ n‘‡ÃOx¸¸…2jºJ<Ünn^.nn“.éùÛäqA@á0á d\ `äOŒ¼ªÁaeW/€G@˜ç©077ÄÍ-ô7î" »A­j\e8 ‚Àa’;yº@ml‘wûü½°Z²x„„žrþNH9B\ –`@ Œ´…8Þíh vèÀ-¡¤ç¿J°ŠÚ"‘NÂ@ »»;ØÁw±gã¸C‘¶mââ±ü v„ü ‡  k EüÐ[#ÝÁ.ÀÃj !îR\aVÀÝî%U€†öXõ/'àÏáx¸xþ·ÜŸì_… °ßÉ`KK¸£æ …Ù¬¡€†¼*ÒÉ Ã¬~Áø]>Ø u[Ü~·ÈKiÀwþ™aéuB"¸P‡_3•¹;f9˜• ÜÑC"p~õ' uXÞ»'ðÏåÚÃàî0ï¿-k(ÌÊú×V®N@=ÔÙ¢$ûsçÂùÏ‚ðsss ‚gÄÃÒøk]O'Èï Ï/÷Ý ¾ÞNp'€õÝ_¨5äîÇvƒ.®_ïþmáð𬠖H€Ä ÃùOõ;7Äú/ûîþ] €çÜwôãpÿúýïÊäŽaVp˜ƒç࿯¨¢®/'­Êñgäÿ JKÃ=ÞOxùO@üÜàéÝÂ÷ßu4ÁÐ?}ü#W f ýÕîÝ9ýݲÛ°þàßµÔáwÌ…XÿCtcn~nË»Ïÿ7ݧüßXþ«Êÿ“èÿÝ‘¼«ƒÃï8ë_€ÿ#v„:xþAÜ1×y§5ø`ÿ 5€ü%]5ˆÔÕñ¿£JHð¤`6wŒ~ÂÃÇÅÍ÷—Їz@¬4¡HKÛ¿Xó—_ï—Þ 0ˆ&ýõÂÜeqsÿWìNd–öw¯⎚¿C; ý{_9˜%Üê—Ø@ü°‹ Øçî®ï,~€7Ï*­ ¿É rÁàÈ»ÀÝŒ¾k¸ ί‹å¹ëhûË÷Çä¡ÿ1ï( „ÿÑÿ0Ÿ€®ÿ0…@÷ßæ¿Z´tuq¹Óëo.Ýõÿ·ýûq€@< –83SpK‘`»ŠàƳ2)j÷'kC ¾Ý‘GØ«r”nëZ2¢ç‡¼ï£¦¥Z'¾G/o nkí rÛ›.ú¤D ?œ©jÄ´¶Xáô!»ØB¨º‚¾«´´™ó¬lî~Òþì~$9ÎFÎ鼿6™¶¡ Êü©äô£í.KÍO.<´¡è(, AA^<´à&©´¦ér©ñ‰f%FÄäÐvÂ#ùó”®~ÿ·î¯Eœ¨ÐåêÍÍN*Gi›âo~´ P©˜Æ™VÛå(.cYƒ_°Z t$‹¤+­Ž(¬F+iÛ|RìYBïJF—YŠeØ[º/õÎÂ囩{‹lA}äL¢n®/?KQ{q±‰˜ü}ÜÎéûò£?ƒ+¸Þ©ø¨–÷ŽÆ›ê"ÓÇSr9ûSIj4u½¿ðŒZÞï r‰rJ7=Zñ×BɈƲûâ`68Œ,×Ëiì PÄe¢'ˆÜ¿¤Ýz¨ŸCã#0¼3  Í"K¸6²ë>Ç·PÊw({:¬.2áS<‡ÝýQf áS8íå`<7U'0ºÎEÒ“‚|Šl›õš0_äAò¤7%sbáȳñãtó%œ ŸÙlÑ(Ôzüºn…¦?Ìä6¸R-œÂëªü'ô65É!}Ï ù6ä‘^ù€u\$n±ïp–s´©%gˆä‡DïðÊ~v¿ÝE‰He–Š¢ÎJ·cÆ×•GÐJÆý —8ÙoéÞéÏhÅIl¡ÌÿÀ¡à(rÍA-è2÷%®põ{_шòöãÊû$¡ã–µŽòǃjbXÖ\Ä㟋W¨ü(ÐŽãÕnþ\}‘5Á B÷žšøëÅ»¢X)ÅX½’½ùÇžVæì6;:©H§Õ=BRbJn#VÆ¡IC7*vƒ—ˆè-MŒ›XÉ}[Ã=ª\®.0ÝSÞ1~4o?,µ¯uÅnÜÝe‚Äc»¼D‰òÎËGËoï™âLªÚ~,É»TB>ô%|ÅZ!en^ç”Ò¬9#Ð>Þû©î) R[^Yÿ!cM©åÁ`)ú2á뢟ºíÇH&î]ó¯a²×–8Âbœwö¿ÂðDâ€û'†Õ™ij(õ(xîFVePÞÝvý¨”ï Œ¬ü“ø>\¯µOwb̧ž“y OÓ¨ !˜kzžR83a³‹}©9bJ¸~G€íÿ^™W^ŠiK2Ö>3fŒnépÌ €Vl’asØù"ÔÒ“'j|Á´˜6` "åwUz¸È<¶`õ^é~޵AY#²Ø$ùܳy“DwŒfq°Q˜©V=ªã q\XRýàókóë Û%C„‚Cå Ó:A\÷`2èíNƒèmuŒþÓ§Ä%¶3S§`éGf!ñ0TePimÒ'êµµ¯y³g}Õ,}ÍÛ’âr®_¤(–mGa.&S•BQÓ¡äv¾q#]ŒçïV;qô´œXŽè/›”Ô¾V ¾Çžÿ2žo(­ßÖ\؆ZËæmÎ: ©¾”ôYˆ¡îq.ª,û>cOQcñ7OOã,@JŽ¡·'Clº–”ûp4šIÅ9•\ÿö=J€¿pŒ„N¡ËcPí1 jÈ}¢ŽC“íæ®>·‡B+^.nMw¶Ýè‹™àéá“ ú ­.G“fÎøÂ0ø×E>l©±›^Qºá8›®ƒ§ÓG­å³yÆs™Š’`n¾»0µQwÐÞß VÄ»`Í!½ µcäŠ=#‘™%ï;³rY%j}–åÕÎûzP–Ê”Žõr¾È3¾P¢¨töQŒŠ ¦@–ðÑòÓ`©ÐœM\9[æfçë義Ýò]èéÔœíWb¹Ñ–³«ïA¿¤¥i@…Ñ;í¼÷…6´¼tpVdɉD]ã'µ`W|•ÒvHJs'\ÜÃ{Þ@ÝÿÑJÏÆ»R)‹<¸Ü¯ª< òOö!lªÍ˜Xo7Ü3œq°>xÿäB~ÈgÐñ €+Ås@ªÕHPÝtÈ6Þ®5nM“Ç­ô¥ñ°Ÿƒ{‰r”½*?)¾æ~åš¾JP>¢S;  |fŽÅbÃÆOÚW´!l\hKðîÙk…&úÄ:O€Pù¤K‡-ªeú*pµWQÉ"œrø £d¸‰ nö‡wÚë5rGšGUû¶U(ÓƒM^&ò„dJÓY-^³•?¾«ù0ÈÈ•¹ûJOëjÊÝ(á.áev:t áÓvíQyãÞtÄ“™ðsk9™BÂQ2*…“Á•œ<錱(ŸQî4©km{ÃÃ¥ýÈ­ú[I‚ãÚòÄ`}÷dY÷ñâVÅÄ[ý7F#Pg¼²Ôù¯ÂïSåàárö3‚€ Û(¤‡Öþùï²è˜Ø´™ú,ægì 3ƒ°âéwÉR«±ûå´žÈÐ=D$©ÔNÜʾøxPmü!PL›—¼—ìÂJœþÙìPÌ–PƒZ¸VŽ¡D þ¤Uår *ö|;ÇôúYé¹%sÒþnàÒ±SºÔq>‰-{]! ƒÓ³¬ãõÁ‰AN‘ž}hJy-iŸÇa«/ÊXh¦k“¯º5]ãzqdé%$±kZ5îyUÎ*ò! T>·½y4ðdúÌïéGò.Âãƒ›.󙵿p?oN•R3ɰž4ü.QãaB­;Kù¾Ó¿Ø}‘=ÇÔ÷éšu´UW"Ž2(e‹ô˜Gƒ«Ê½f  YPüX|³qúX&ú‰¹9V‰õ<ŽnB…œB¨ÿe9$UÉUŽ4.!Omƒ;Ο҆*Š{U…Op4¢ðÌ¥#q*ë;`÷Ý¡êjk×i“`‚­ð–Ý#èý4Ù5Kš0A{®³‡íÒv"¢8¼ÂJ`ñÙÜ[–V¦‰èýeØéxùÄŽƒq§ÌÕtÀ’ðûÄå—i,>OÆž!dSü¨•~Ùü×t¢K¹ˆáÁ Þ¯Éø¹yÙ4‰gÜÙü‰0ºúÂ·â¯Øé­î¡^9Õp€Ðü–v‡[\zÙD”EêÞŽ†/)ƒª7Çჟç™m­‡þ¤ù&&¶FD}ÿ0%×-u".ì0šð°¸wqvPðLÿyÙ8þ&nÛ(ÛÆ䞘cßòE_ ðíõ'ž‰hB‹Z´²yB×ä¾ýòæaèS-¹O-×kWaÙÚsA­J'áNUžP‰/~gHB¥Ž•óÁ-äyû@+]Y_ f9'E޼âgíïoe?l¬52f¼iQÓÖnh5ÞirÏ;iºIÚ}º]2SM” Í=-rïPût/ØW~ÎÊP».®/rÇ=ªçûîS=X­À²#Ó ˜½C³oaAë¯ÂA–š r^(¶¶&Ò Œ &l3ÇÄ`Àý U%øF†²¸G¯ãb0e7 É~ ®(ÈM €×ì_F.?ÂO|Mà°¢d«b†\qLW…œ6ÛܼO ǽ¾ Þl¦¯°©zÀbÝ!á\éÞü’¦’m4y‰<=fÆEËä}ŒrÍöíÙN¯7ç]^Q#-јXßóJ™xèsPz2kÊ*C œ\‡¯¯ÀÚ.<‹+.WWe$’2a¬¸¦éµ5Ë·Ú¦Üy¡Qƒ*Hâ]ïÉéÊK†ÉÅüÓ]Yë3ú¥E1Ÿ¨øB­/8è+ÂWû ¬-÷ŸGvø(E#ÜhíüSúì‹5qmhV€{•b÷¦ObÍLôPh3kÚ½6éðtw9õ G…ˆìwf«^Ý>ºõ'áÿÖ¼X› žì×r(ÙžIS°·:YÞñÎI¿ï“¯]Žv­ŠJˆûƒ¼Û„ÔMFÊöc7+–§¸à–”  |“€§ÿ,¿¬èsDD–NŸÆg<)7 ‰¨ä×™‹ “h+uqúö17‹…á÷¨h‚½>Ÿ;Œ›Ì˜¼÷Æ *Å™™½h”°ÈÒŽËð .ô›t. zRÑ»úï9æQÆã?ËúÆã5+_ýH‡ˆY«út8¶Ù–à„Qé¦ræ'µEµsJnñÄ«Ô;Ow¬‰T+9 Y²^™ Ä~fÁMÍ&GÛ†ssÄš°¸ÌßéB85ó‰Ùð6f¢7w>kV7†SR7(DĽ÷æ´p‚òÝNY‘×çÆñü¥‡Ã›^ÉSlôyûxK1¯ž½cðê¹¢ù¤9#yÒ _'ÑÎpԱ⌂i‰mpkp=Úwµ>äJÃÏnÑ…ŽE!t¥þ­=ºŠy¢Ô÷kíãtvì9œ©§¡bëa@Ÿ‹j™\CPZÀD¿ÁÃVzw©äŸÔöŸ{YtÕD%uFƒ£Kšì5­)‹ëÄ%Š~ ¬é¢€T€ÕËë-*-ÆÄE3&OÌôF~™Þ.WÕQÀß./¶ÀÑMÿø‹ *ħwz0a¦<ñž™zÉ”Ú'’ã9aª¬‚ô|Ì´„Yc=©«–L+QI3ò¾ªù’=œeý`µÌ…!~/ä ššãnR5´û¦I9üËt¹É–;Ô±íG‡j~ÖɲežZíh¦½x¼¢ÒGz>‚Ƭ´ÜìróÙ 0‡tNqIqÛ:"ÁÄߌ!duŠ?–CHndŒ¤Û‰5ðéów™ª½ºç¡•“$%ãgÆPlÎÅÂD÷$—*Aª|ݦ-èÍ“ù04ÓhÁ%RÞÖ½â7ßNòD=k=¶¬Ö®tkòX=®.u»OVË1g,ó–÷¾ø„Mf|iLÜ„h´} Lj“_Y¢O~Š£}“‹bê·tqƒµÓx ÑÒR}ºµK2Óp pšEÉ2É%ˆ‹Ÿj>Sìøyé/Å´ñóò%Ÿ%Q›„¡\àr™ügJ‡ûxæPwô–6üG­àyté•!ôTÕþu±"d›µajï²|6?@›“ûàªØ­¸«Ú=lu‹ù Û‡tÀëw\ýëÍ96àFðvŠ{( ¾¼^ŒÃ_ã¢ÊßÊé^,¨{ÝR¤˜~–À|nÃ(>ç‚E(µu&â¥S‹ ÝœKñ<ÂÔÓ¸oÔ™© ‘îˆ>úAµgçvýËþ=MÇÒD5÷vg‹œ$aœžþí4|Sù¨}Â]ê©ÕéäA*†`Ðã ìtW¤;kÍÕ4 åiXIEÕÊ@î/ßðź¿†’œqÊ/À=M¬Í®MEÔñ=õâ1óØh'o‘Ÿîírö¶Ò§BÝ#<2^S>òößÄó”9šÇ“±ð‰i¦øˆKXÛ"R¾’ø”ľ-áuÎjú­Ê–ÏAÓ›Ue°Pµ×¼A+â}ÿëa+Ù2LlCÅ â4c«Ùôx»f6^9&Ø5‹¥™Ì_E#ÿ¢ÔQ›Ôx^‰ß J¦áÇ/>b#ùl–5‘ƒj´]èúÛ§/µ ܽU•ö‚’øW¥½x!'eœøÎIR½í sh²[u|êÒE®Ø­+žH‚/§uŸó_3äÆ$qI´Ä–Nçæž;Ì3§­“RGhû½2p—¦z 3éäPâwf¢èF2WÑ$¢ÇÐó†î(hé¥:%EÛ&qÝßAjèð<ûü½Îc1o£ôŸz¯àªLƒób×eg€ æ†J·Þ "WßbgDY`k§Ö·2ùR ífGpfËÙt‰j-CÂÏójË"ÈcÄZ\5ö•‘ÖiŽ$A¨ÞÜÈìÆL]=‡ÒÃÊîDä½5¥{÷N­£”ú@c€êòÑJúµÑä³QÕYý¼œSOåZ l4­š¨è FQÞF[™û´e#”øi;t·•¥`Ïï† ·Æ½z ØÍ±O´!}‡9Ón%c†ãØJ ìVšÚÕm|¥ñx9.n!X¡ô!^#„Ž·pôMC¹`ï4ç¤òf=Ú%yb\=B8´GÖ¾î$F¡›‚±Ãy¡•÷lý¾RÝåFp¥´Ü¦r3³K£‘Åý‡}e:Ý"~ÎòB–ŸŸå[Z&SÖO¥4[©öäXpw'õ·E½]°í2ú²W¡DªœßgŸP(•5C¹â-"ÃqP²4tq¦M‡ dO¥0Ë–sL>„QbDsi+¬ÜJ…B*Š‚Qzºr6@)|pTD’˱ G%ÄÑ=b«.éÏɲczðઠJ§Lˆ”žN÷Dúâ[Ü®ð>h΂f_…#ØØLI æ0N '…I QivwµÒEÔ ‹%dò*5­åÉóOÞöߟão'±ÊÐO/¢ÊZ´cÓ ¤Þ“+ô š±cÚþ4úl»«}WÅà:žç 5z!i= øÌ)ÙœÉ%äÏpî.Ú¡@Á}b©ƒîïs“è ÂC)uÕ3{5`YÐÙñ‘ò1–bÛ¡ÈáÍ]GÅÊšj^Ù†ÙÔíŽ ·øÃ¬—˜²Þ_Ë)_P˜Ž¢¬fø‰ã+ŽoÊ7[v~U—%“Ù[˜BƒÒm F÷V‚k)*ÂцKˆ¥^¿V1R³¥Nr”;Up2̘ȌµßY•â)§æ ]ÉïPï÷j#±µ=Ê•Ý3ÙÅ;É!ßñ3P er;ÞT2ÓZ®,0ÝÅ¥t Þ }©ÆÀn¼ç “;m.³“s2A´¾%í²EÌ­"¥ªH’ñgTûÜ}ÆËüã¶?è½e `ÃV›v˜«ŠŸ¼È˳­043¿g bØó.ßs²2´Ùä“?º ‡“R»^h¤ë*¼êДܢY¼®C=ÅP «L,…Šz©î¯yQüÌjõ—îã-03!×a&¨ç7Lý°PtÓ½tHaÁ'ŸÙbf,h)Ä{®§]ë¼ðám”¡u©çï*~SŒ;±¶-”«ŒQNQJè&\¡Ù¶PÁà®_Œ;d÷®.³vé›\BŒâó<}vS fhXbƧòªÌûåª>ÿJ[}…Þ)²’üƒÈLÄuƒ«XÅGüeºwEE¿’¢ƒ¡tQ®dŠÏ?d–D®¶ö"Ü¢N‘ÞH²ÀçN“íª†ÑüP$#IÃÆ¢é  gˆ°.ƒ¶ÔCòÝTÊž°ü2«ÀsÒ²é©U¹ALDÏ Ièÿ˜W}ýœe`Ýw³y«)@/¿X„˜”‚ËWÄÃå9p,%‹¢¤÷ Ø&Ä›¬¼²Û2ƒ¤Ô5*™”ü¥§Z:ìt9{F¦Íf^õ†Cñ‰J®!eäl‡2‰éåxœ ^)ý¥x b8št ª6å¼Ï€ªÎÜMÚ› êjPŸüåY½:ºP ‰y•Äùf*cÞ&/%3ë ôúc…‡ó:Qíu$šä‡·¾äo0sØ÷žÔº¬ùn-á­ž')Ìóú™SÙ9T»½/¶J‰”ûÄ$oÓŸ_“`1øidá8”þé¬ßzÙQ'=ŠG.£ò>ré%·Ûá#CóÀ¢lÙRÏ‘$»QD#w°µïlèúV¥kǧnK²S ¯Qïm4g’¾´‚”ø6hT1Y,ž¼ŽÀÏê~Í£#€úq"%ŠiÙfPLÄÂ4ÁâQòýûsjþgËé±Y%ƒ¼ä«™A#æ5œ¦kè‹÷¥mÀ)f“ÔÙc¥.=Êc½ A!]ž8ëý¬2‘·«-gƒ6,¡¼r'DÏH¾0«±cV·±)(WàL1¾NН¨*¹~•ï5í•õ¹‡]’¼XçU1 Á+-›JË·®½õå¥pŸÇF±ˆ E¤ÃøøÍŒ€TµO¤]^/£š`ç7ÞåÑ ˆ”´< ®$Æ»L”§tæ‹j»#Œï—‘oE§˜ÞäGT‚ÍU Hô44jZ/7ó³t¶»hÅTÇ))Þ+¸ ˆE|¯”q! =ê»Ö[Ÿh2USÎÞ°~㙼Šêìñ#ƒ™5"ˆxÁ£×c ¢È‚ “&Eß‚gƒNz쿵·sꞆq= #u¦Žy@cFê–jÏÒ«<÷Ũø½ º4/ =•1KnIê 5# ®H+&EŽJüóœEOçû´|·[¼¦áƒÆy­ú6ö9³Ï.±oÞ y¾(¦RP K0±ƒûÑYzÞÃÐiGƒ|{Kk§_†W %mÉŸj‰Iš&ËpjâÕŸØ dŸ?QÙ!sWê ¶®œ³YÀÓµJÌ´â2‰âz¡¦ì¯u„A3ùëôBÎjŽÎDź²#‚¢ #›K˜&òªº!jÇ¡Ne•-$œ‹Ê#á*l쓇,>Ç´u5pc¹XœMñ‹ŒÛ³ƒñ-b«7X£m`•YåÞVQÝê<¾WžŽgë³JÛjàø6´æcNÊ[OÚR¦*dª¦å1à„!ö%ÿѧ͢ˆ±Z¶VáIõ:…Xœ"tµôƒ¾ËÀˆ×ò1§1 ÊŒžý󕊱Ctö2ì52Á7¥ëžìœÝ‘å#ô«^+ñób½P´·ºªÄ„,€´1ÑÅÓæ"œx¹±ú¥XòÛØGœ¯Õ˜Œ%UáÀ—Faªdæñé:[Æ‚«V›ÉlÚ™†Uíä+ß …Uyj Š„7¦j¤^/1æxáææi¦+ÝúSŒœr3| ¶ûŸ¾º.úF÷·k·]™Ð·æšÙÝùÒÞ÷¼©;ÖÎÁ¯ßL¬tmíz« ñtŒÀ³Ž¯è=‘Ï6‰<Ê7XÍ“úL Š™H!ÙcÛátKÆã…Tïû’~® endstream endobj 126 0 obj << /Length1 2195 /Length2 14977 /Length3 0 /Length 16289 /Filter /FlateDecode >> stream xÚõPÚÒ ãÜ 6¸»»»K‚gpw'Xp÷àîîÁÝÝàN° s®äÜïÿ«Þ«©š™Õ¾zwïMA¢¬Æ bbk”´91°02óÄÔÕY˜ÌÌlŒÌ̬êNÖÀÿÈ(>-lA¼ÿ°s:½ËÄ Þ lAYgk €…“—…‹—™ÀÊÌÌóC[^€¸¡‹… @ k :"PˆÙÚ¹;X˜™;½çùÏ_µ1 €…‡‡‹þow€ˆ ÐÁÂØP0t2Ú¼g46´¨Ù[Üÿ'5¿¹““/“««+£¡#£­ƒ™ =ÀÕÂÉ  t:¸MQ(ÚÿM nnáø/…š­©“«¡ð.°¶0‚ß]œA&@À{v€šŒ<@Éú—±ü¿ èÿn€…‘å¿áþíýW ÐßÎ†ÆÆ¶6v† w ÀÔÂP’”gtrs¢‚Lþ24´v´}÷7t1´°64z7ø»tC€¤ˆ Àðá¿ù9;XØ992:ZXÿÅ‘é¯0ïm–™ˆÙÚØANŽÕ'ná4~ï»;Ó¿× dë òü2µ™˜þEÃÄÙŽéÈÂÞ(#þo›w™РÀÁÌÌÌÍÆ Ú€nÆæL%Pw·þ­dùKüÎÁÛÓÎÖ`úNèma |ÿAðt4tœœÞžÿTü/B`a˜X;Œ€f „?ÑßÅ@Óá÷ów°pè0¿ €ù¯Ïÿé¾O˜‰-ÈÚýùßGÌ$'"®"ªM÷oÊÿUŠŠÚº<Ø ¬ll6.''Àû£(Zü»ŠxÊ€Lm<ÿ*ö½Kÿ)Øåß@ýïõ üo,EÛ÷¹¨ÿŒùffã÷/–ÿÏÃþ·Ëÿ¿ÿ+Êÿë˜ÿߊ$­­ÿÖSÿËàÿGohcaíþo‹÷¹uvzßÛ÷Mý_S à¿Whbálóµ2N†ï» 2³þo#-%-Ü€&ÊNÆæÏÆ¿ÄŸþÚ3k PÙÖÑ⯛ÀÀÂÌütïËelõ~{8¾äß*àûîüoF ±­É_KÆÊÁ 0tp0tG`~Ÿ$V€'Ëû6šÝþb#ÈÖéÝðÎÎ`jë€ðבrr˜Dþý q˜Äþ “Ä3€Iòb0IýA¬&é?è=ŠÂÄ `Rü/â~¢ü±˜Ôÿ ÷Z>ýAïQ4þ ÷(šÿE<ï:Ã?u¾G1tú£|/ÆÈÐØÊÑÚÐÑüôŒñÇ{8c[ë÷®ÿGòWó™Lþß ÿØs¾£¿þ¿IÿÒÛ;¿Oì—÷Ħÿ€l&³À÷*ÍÿßÉZü¾'°ü|'hõø^î?½s±ùß—éDÞ¯&ÛÀ÷ªìþ ÙßmíÞï|5Ðôv–Kþ‡ãûUÁdtx¿ÛÿaÊù·ÌÂöO¯Øß‰ÚY;;þ#ç»ÄþO˜wæöζN@£`û·ÐÑâïmùãûníðøÞ§?‘9Þ™;m,þ÷ì8Þ]߯Ëÿô^÷ÿž> Ë{ÙNÿ€ïÎfã=Çß±­Ã?KyÏæú²¾÷Îíð½iîÃÿÙHcg‡÷F:ý}i¾¯ëðßo è4FX^°5æ ´¬ l¨ÁweØ›˜¥ØÓH¡að\vøáüˆ ›HS•°ép'’8܃º¶+A}+¼BüâyÒRÒ¯Òöäõ¬«:½×†°4…=0™"R×OOÀ .¼ïõbïõÙß ²¼S–"ÛÞ™Y9ãÁµOÊ­®¿tu,xaOe¿ŠSîÃsé C䧈/þEs9FßçqIaœáhÑ/ÝPænïfѳ&߈ecé¼O#Ù <µ·X£~Ï{¬—«³:vá‘ãiãBÞ¢MSzŠ&Éâ,zFl ,f2Ó0‚mŽõ{v’œñêÈË ã0[;,óH‘{·Õ1ùkö"Âgì©ØÑÖÚ /âÒ™ººJJå*5öéí…À߇:Й(¸DÃ*º{îo/CÝjÜÊœÕNêxŒè˜îÀ#ì`­5‰®‹¿„Ø{c*ÀÜìswyå[¦—×xöZNžÚ꼒ȩý(“8wFF€ÍOLEAÅÈOkä¢޽­Á`ÿ_ÅÓfÿ¥›FgoEòÓ*£ýÕþ+ûYΘv ·Ü“‡«+Aƒ»uÂd¡ ‡z±¥qì™6V9rj}¹e>u˜-FRÎG;¸€K[KdMáII9Œ‘/j=&Bz„Î"X³&“Ï»6î!sß²_KóVbѹŒ¸=c°Ín5FT¦½p;'L €ý\’Íe§ò#’Ù\:unžýÒYçÉUëGoRZæÞwÖv§©™á‘¤•¼ˆú !ó›Ô°f£ŒíWÚeBr?“ƒ0r€rbPú7^TҀ쫚¨¯OÓ%'¦80¿Ë0ÄòPçL’{вÊÓ38ƵûÒá7æŸ[ruSœX¿%cï` ¡ÑàO‡Žª3MÙ‡~ü´6%yTsÓÂ’à$10Ó´ž+Œ4ë‡Ã‚×›W+©§*”Äð=ñûuO¡=v ¬^ÉS-‹™ëýkW;SavV3[§pÙΗj.UCãi‚#šoMŒ[©—¿üÃ%Ü´¨Z‡Jï9B%}@–¬;?æaŒ1c\Y#ŸÆÙüŒ²dtC2ºݛky£Æ~"™.䔬‡Çï_>›šRtÚå<ñ[\+QSy–DÏ׎"»–½ªí«Ó©¸Åß®F§ñwêX''ºö½‰î%+üDç‹mg#[cÏ0ô ¾v'ŸkfÁ|8Y~£JŒ©FWòœ–LùÖk¸®1äÿô0ÉDZž‘¯l#27D—ýyqÄc}$/.Ý›8×€MO!KÙòcuõn÷qy¬î½ªjz©X”^Ç ÙÈÙ6Рè ùÁÚ Í±p\-oµÕ>=dØ«h¿T)"ƒCܘzNpâ<¶–…J (½ÕwÈâJT߉2 Òtç«¶e­­Çƒ A´i="°zêÄŠY*›ÔGÂrT(r;³HT‚Yh[ÊŠô¼ ‡žajlR¬ªÈœ_²¶„.çõ°5#©üVo}%±íÍSz¡ïµð³®Ÿ¬ K‹]Ç–+?ÙTTÜì¤)ðÔÀüÔÇ”5›1r%ÙIFkwìóQŸI«ï‚4 æÕ°'ÑõµÈqm‹7x;Ì/‚ Úë1Ø2׃éATW–)IZÿlÌEû1wuß›m€¾~·°ëŸâw·¸ *&² ÝD¦€*ÓbiÙ¿+û–ý©sº¼˜éTéZ€ò”À3W®Ÿ—QìÔb\Ž'·ÓMºŸÃeGâyŽÝMŸƒ(t/:{¹õ9,­þ&³ÈdÇšƒÊhÔhÝž>IúŽ _}ÈÝ¿ ¯¨º×††µw'j¬YPH€è¸é6{:š3a‚„`„µ=ó¡íû‘„¾ÝÚ2Ò Ä´{m@`9¯õ¶Eñ“;¥Nºðù8娰Kh @CÌlõÆCõB¿Î@C/Ö›Y)¢~ZaétÉR×|^±Œ!ù õ뫇ÀñeºVΩѲë¯àQ/œbÜïÁ.bUáÊ@]I¨šÈ#ɯ;²°J$]e¯9ƒ½yŒ4Üy"NtɶÇËÇ p•H~_=0 öI¼^}+ i+ÇM>}ˆ‚¥at’!0·]| %¢e†Ì¶?÷k­ñ«<TÄüßÏ6@<½Å…ÒçÇ£äÔ¨ÃæyÉáÀ ù«Ån`éõi‰v3Q#…À^\¾ÿG{”çÚ™A-fü‰k¾×b ’”ì›SSÆ¡4U‡6yà·e°Ô%…‰|îÈü­¨èmÔ±Ð(ð|8~®MÏ*y» ´ÞûÏ4èÛ‡V#kl_OSÕmóŸÅ@Þì‚MÚoCÕžm8ÝŸ´ßx$J³æ¤*·cÙyV· lñì;Æ™ò·}ŽÝv’¢Õ‚¼2LyˆË…º4¯‡DÝL¥Œ$ž]5øž‚Rmé»àq Då­¬äòïm„-£j‚À 5+¢L¥N°D¤jl ”½Â/¿}^C,IQt†¡ãy[AaçB w—B¡žîyÝÜD*öGêé #­ðÙA¶UêÑOð*7Ö~%ðÍßÿ*ܤí'B¼Þñ{KØ0è–´‡o$s H:•þ6 «Õtqž±€óíH½ÐL´Þ c9’çÓ‹ä±l•)ºŽnχè» óˆ¥î쉮¸â«àOÜ~“óñ9òÁBu~ñ8ϼDrá|•·9ocš ·PäK!¼8FØtH(ý{¼ÿÝ®‘hÖäÄÐó"·×ÚªÔdæÆúžViDÐÀ6Œ1kèf•±æ f6 ‰ïÖ6ZKÒ*¶Qï¶EËô}¢Y`˜Z'PÇ#- 8ä Ù4§I~?E„´dx ‚ ì;U ät¹õpÎ6ú ÞoáVo<°nà°ŠNéÐu@€„,sz ƒ½Ò¢/ˆçÄ¢v¬f}†»§E~d@“ßSq;݇»È †}Þ™ˆ¦ûáA]wJR¦RÝÊí2ÝÒÌ(S:ÞŽ‘š¡{ç¢,ƒ€1b "™"ßξ³ôFÛ·\PïÈÃ~ÅS/nÜX×!}‡Ó¶²)¸¡å6gh£ÜI:^}Mìer¨Ä7e¿ã¯Ëý›Ó½¹I4ÔVÞÉÏSÀ´«±œœ ùÐïM{û•â7m82úc飓‰c.vº¸¢‡qc[ZÑS‡”ϸïROs&pÌN8gRF€¶«käèAÕ9Ä»7i¨!R_š*ÈŽK‡ðQÈá¼) K¤~ýX/ŠÎ]¬µÝ„ jƘšô|®aðGix„Ëtz›ñV~>MpêÃÊ-’u«Kä^šU%XÝfÄùâ9bà¼þ¦ƒŠOÜPtCqÔÂÖýÄÕóeÞ¬(KÜpü>yú’-YaU^û¡úºCɲ3ùÇÇÊÍ•}ºzX àÇù)Ç…ùÏÉá4¥)I¿º·`Ke¯´>_¦sןv±t¿À˜Éʳ` a(Ô aö§©t#\t´˜7MÍf9Ôÿ¨úÀofíy‘Ë¡U%7)௶w¥{b‚ šï§Ë1/í¸ðt»†5pÌt½Ó>fõ™`Ýyßì§oÂKNøÂ9ª7»uâTžðïªN}%™Í.¼ôI&Ï=(w‡q\7$SüœcÄè\²›Ó W‹³]÷õjßKv©²>â{xⵜ5Ì[)Áù øƒ-!0çÔôô>Ž{àïÊÌV"©mW-%Ÿ¥/ (>eÊ>Ë?Ýñ§”Háî®K|V€wýtŸqÊž¼´ÒGŸ±eQ¢e°ÙB \ÒÕ¢‹´¿QˆÍ§múîÓŠßå±ÖÊ¿áîÿi_lJ88Y+/?K\·utÓÆù{ðç“·Òž£ºQƒ6Ú|‹Oš>[ØçÜús¼l˜z|vÕ#ÒhBìüÚ©†ãËmdd¤Û`Ùä(nÊN¬/ mêßÇSÒòðÃÂû!\&J½yû#öáÁ†±×xUk8™¼Ž8°.D´¤ üc0D)îG‹;–<Š2_ S8"Íç×Q¾Ä‡ýþ)Od4‡ÕM_e¦¢âÆ~*­¨$Áù(1LÅGøÄ‚ Ù Îñ¥Âûe¨=°> (ž-¿ãúMš3aä§>#œDª‚Ÿàj7a™Ž?o®Ér_ÇGu[<]¯WhÂ?I}ñË÷±›CªëC U?ÆpBï>±>¼I2u™:©'‘gµ¾‹Ãg¥UìÜ`8ðS˜¤ƒ¬€Ró¯›fL©nm9ÕŠÓg³ŸX…®ÍÄÎ1UüË0Éì¼µd`åt~÷‡ÒwÌÞ‹¤\¨*Ã*[Yðßk¨ƒïÅçÇ m„:M(…Æ)¤YEß©{Ò~aVÿ0ND1$º²—­˜X+Íœl‡÷vö*YŸ Y_ƒ´²ñ[<ÁPfOÐÐÝ¡}1~^ï·IGirwÂKfÄqk«OÜT•®ÉX@ÙâͱlU3–›ð5mnÊÆ&Ü/m•O¢¢Jþ¸O7CÚ«B-¾§º&¤ @v;Ô ÛYtù0JX_´wPÝÕ6€Rj}€|[‹ÿ;u0t_|¨Æ‰Œý;lÿ˜ÞÝIÂî'ª¥n†š³Sã­ž£n˜2šU6 aŠ•>g–UØ6÷z©Y¨Oç”À’ÃJ#²€ì¹Yüp±küu±:;¶¬ØC™Ve´$YmQuÏ„–øÀZñ g)ÚÃr8¤Âõ‡³~$.ó&.[~§M¯$Ó᦯ÊÕM³éÍN.• ¼"TnÛŽÐ0†½eéU* ÂHÔIÚl-]fcŽúà4á”CîN[ '¥ôT‚Ï‚´W/—C-ú/©ß¼!ײ¯üÔefRz=}õu>UnÊG0z~r;sx8Ý[ZZAâ£ñ¤Í ä˜B¦M\DÉ+i›Þh-qš£?mCØž3¨vèÔƒ€^\·>Yn<’q 0#ñ€DLg„±‹”‹]8s0E'4<¸ ž€6g ã}ÇñŸ²~®ÆÚ^ݘÐäbC:ÓDa‹À˯fHïÁžj·:ø>²y‰ÄzHnk±ßiÀ.©H¤ÈneÑø¼aRdét¢) õ^õóae©º†l¶ JTpä ‘fjìyùñÍWÊpžGB$hBP}1 ;”û}ãèÍç©"BãúQöØ Vs+ Ë‚Í9B B=Ýž#ÖÈ‹Èçä1Žÿˆõ©‹ ÏHÄ;È?+õc¼æœçÁ*„/ñäÜÕˆúÎúØb¢Vp¬+n³pò[)úÄ·1wo©ã œ!ã¸5è_Iio\ÛrH¸EG~DYƒ3®!BØÞMb7Ì;‡º È5ª 3kó—¶_+èeÚJ@l/\$ ñk†šåô|·šüèàI;¶øm¤Z\"Ý͘y‹êI‰XŽ Ï¾T'ÊeÕцEeÔ›"æç\®Ñ—‡ 9ÄðªmV.Öä^÷§Ìöv—?TÜÀ¦lw¥UBëR]<®Òû¿^C—¯Ø£ ŠÇ€%F÷)­BeŸ©ª Ý.±ˆ{h·Ç±ásÀÛ|ÂöÄÄnr¿U&Ü2Ï:¤á;¦O¨‰UîCô̸ >éÌ=Íéñ“0²WsÈ'l( ¡É0¾bÏ'Èœƒ±„˜e ËòœS¦ÊDC‘Õ&ûÍ¢6iÛDÑÀéŠ+°Ö$5@&Á Þ“ªZΩFÊM.iÆBúf VÚ¶}¶ë˜? гê¾Î˜fCúàlžIõÎ=/5œŒ‡Òg¡f—§ìšY ëBHpc4 A¦d-†*2ØÁ¡Lì±²Z@?:ÂS3éô ïzñ‰n‚é:pîÎkÞ"j4ÓC´‹…‡)aß}S9ý¦eP|` «/ZµEd^4gu„ÁHÂ7Ìx=9ˆßIÛ×)¯p_>xqnÔ™P¨ ‡—lèid+—.³šþhÛŒï:oFxÍ×=é«ÚaO(„vYFõX‚²®ö¸`+³ðùK쪮łºÙPx¤Žþ¦vƒþ©e0AeÞkG~U1•"·+ŠB(,¯KBØi dóléE‰ïv¼a¡6ߤb”A â}ÍÄ0òú⢄ÔÈqËÂ^¾ï£6h„°·8m¿'85F]Pc6°dûTˆÕ ?UýÝô–ÕðºVþ]•E¹#ËklYÊV`ÊŠ ×ÀË&&ç„:âBÊï‹=T'"Ä#Ð9b7‹;ä‰ùø¨0ÚÖxGé-¿rþ^è‹[À¾šõYgl‹Ž1W?È踘Üé®,†å˜±Ñ{xap¶Ûxú¹Êóg?ºËéýZó&ö˜ÇÂMÿã‡q°«¤¡©¼u0ž1˜ ÜÒ £§ÆÔ‘r÷£©Ò…œÏ§]$Üž…™9Á¼õ]fÈL´[_bå|Ѹ& ZBm±áô0¥Ìc5?øæº#¿yÃhœÖ€‰…®V˜=µÀމÄ{o®opsØË Ýé´8Í2b•Ñž,C-Á"a)›Úýu?a+ñ”b©¥à>|¥ sîc¶GçòXìrl¡‰¿(Þ×Q¹Ê÷ !ïÑ£×Z’&i¸Ô¹+L™º¤·äÿ& ¤Ÿ–†­ þŠ:ÝØ.¥`tÖ‡E_¢ÜåÖ\O)ƒŽ›–úv’m!@2šœ}èÁ ã H#?~\€šÖ­Ï9±v©tW¾Y~6‰˜Õ!‚ pBkõ˜výÉ7mf\À“Tu¤‰¨Æ}Šîù=yþ»V¹,»–cË%¹]ºSÚKÈ>M ͦ e¸¼Æ˜ÊÒ®|~ÀùÏ2¨óoÙx' ˜u½TÇÖaÞ,½dÏ^‰øþ&Ìiˆ1îéuÑ]'þ ²“: ÇUx¶8ïTÿ}ÝIE‘—i7’BÄ3Ó„KŠ×™Ô¾Á‡jמe$¿ÓГÞÑ:ú¥N•…݈zÞòðRðÑ,è˜2qL¢Jd|§HdÖ‹^ˆº±h3;t(JÁdt·S L ³bFk9v«²nϪµoê£2k6¦ÖÓ÷üY8¶@ÔUPÂÜn”ÑCK ˆª4’‚ÎÔ.K9’§kBnÏœ9Ëpè»]?¿ŽDT¹]ųº?$ê(J¹®³Y)õWtµ¸¯& çâ‡jtôs臚Ç|°qÃÑÄ,ú’k¬qi±Ä´™À2yKdŸ¾õ{Œ\<Zôݸˆ»û ´ S!à¥ßX"¨2 N÷€î„øûǡäûl¦5¤ L•]) S*0ï³ë:œ¢Aö¹aI£¢ôß–‘ÂI~ùB*À9VZ 'ÌñqhÉÆÁñè‹–W"ˆÄæ“Κ*Ö=ÛéÅ7èD¸®).DP­º—0²giÑÓ=of‡„'ÿV”ýÂ#ø$Â5¯ïŠçGÛuº!ÔÞ›½'´¬C]xYÔkîòUªð*j-¶h'ïtcëTBæpRôõ×qV¬+hlÃÿ’±Í§£Ó\·íÕ}ØL-ã¬ã»ÛìÖ½z®ËeΆ|®3P7"vîD4ŠŒxo(e7ÃèÆë©Yçå¡0µPþéò¹x¦?ù9ñF›DdŒ´VŸ]O[ÔÚÍ«rL™Mhœm>~Se†™gç j­ 5ÞȬSª@¤>ñ°U·9P«e_þñ YB¯Ã\é@=œÞX¾ílѽùLª 6ÈMtÌÑ)ñ>ªÝæTSHu]Gd¶“ÜþCiއr˜«ÿ0.nDê ×¨x¤&§ÁåDÀ)_òËj5Uªßª¸Ì<¼yÙ†2>0d­§ º×ï#‚Ýâ5¬t F¯Á9B“ë i#¡±Ö—,¹Ê2ƒ½uÎ2^GA†U Ðf¢ézúð½Áñ’.s.pp]䱋%› I£¼rªX®GNIu{²a‹Hjö%Ñ­öu¥ìKMì‡nŸ.ÿ¾Y¬·Jz·Ù _«/”mª#‘ óU®í2šìáú©lnÌtÖÈzi‘p|o}fë¦M%¡½¬ÌcÒsË ň-«ÝÃP9 œ÷ÅÃA§g¥ˆ'é'†ãË•0n,+÷{ß…l‡rðÚõuiXÊ*×?¬”¨ª]\ãOÝÔG4c¯ÖÀýúfaVx3°˜–²ÒfòÜìon4];•²Üq PZ[{ŸéEº3-·Auäþ"Þƒ¢t‘îuÇŸúa§Yæ“ UY%¤Ênþæ0ÇÖ1VxXÁŽ~ÃÇ¿?G{’þäÔCþ<§—ULY¶&†”³j1ç:¾¡G?„"§Ä‰ÉeœÕ5 &ûŒÒâ΄@L5¤»6ë 6™HgSÐ¥rú"Í-r~ÃmÂÝ ñá N'Ɔ öîZ2ÁCÜÆ0ÚòâÿŽ¸Ë¿<zàÛ§œÈÆJàú]{Ù‡FÛC– ¢Ù´¾ø—]ÈÿÄãŠÉ§KÔßhR3÷Ã|ÈuPø>IP…Åùì7ê—êòjGIû5lÒø€R]†·­Ïô;VÉPôP–ª. Y¿3vf7/S(ﵪYš :Ùž¼$~åÊ0Àé{~—3ö!\§  yî•«Oó‘R¶/kÞ¼XAŸÿ¾W¼“[µÀÇâ¼[¯@‹+^–¤ãY ¹øº0ê7XL¸þ½SÈ„Î>“nßylÝ[—ô—f¨ê•_9?|Ã¥A‹ÅœXX µ¡¶\ǹtÌ4_çìœiÈF¾¢ù´:ƒ í°!$m”*0w %kðÚ$E¡g¢=JmWë@í¡$Óƒ;oV=#pÍ‹ªlD^^DÉ^ƒ;2 LåúIñH/ c²ë£îYDRšd-TžMz4ŒBÍW‹˜õ7ziê _m&ßëmj‚™-ñ¡ð­ Äp!äzGp¨Ã‘ìß_ä`·v_׎‚|Ó:°¥s©ÅLÀ ¬€Dîä̧ìD8dlÚbK2äÜY¶ƒîÞ{iSÛ4Qßë0ÆqhÝsüêä3D0NŽá7uiS?Òå\|"¾jUÕÛù êG¯„îÅŽí*4[yYÊS‚— Þ#"lÿ^Ê|Ã%%â üü1/1Äxvµì‹ú·ÙEŸ?‡#we›ÌÅœ”‚YQŸS”\G"óͲÙ_zSFÞàß\í8œ›e±ÌS’\ ¶(ëˆj†u:Õ‘³8´ýÒl·gªGDé`BAƇ%3 hX•\‰ß÷\¹}OuB¿öú€¼!ç\îvA¯‡¬(ç ß:ðÆ|•sYÂÓõ²GX[UqÈ¡¹Ç°æönD)¯¯”4u]õ£FåKP´$—)A°£O-ÔB°§gØ6º½¾TñZd£‘º£æNj@† ¬ëGgP€,»P¾ú¡e í*îôh“‰iÚùÒCûÀbOÊV¬•‚©‹b'Gõ ){¨À´¹ÙÌ9„ŠFYEµK÷‘ËËïsø|÷ËÆÙ®~aØBÝómûy÷Œ:«¤‹aúSˆ¿R.ïå~jÉ)H‰ Ø  ´’¶!‘H)Cƒ× AæyÐæ¸ÖæÌË4íIZ[æƒêX{2§†‡Öþ²P™…–bGåB›3 ID¦e(òÞ¥"Q&/ïÂÈç&Îqc^¨À²ýæ}ЊÄ?Ø9žµY)G¾™ï“ÕbEO¶ïFë\2±³ó Z£Ë¶Àp©‚Ùh¦l¦ŽÇ;Œ¹œc¤Õ7ìž,zÓøŒ¤Á-1Çä.ì`«¶D š XAºáé·‘£m¶ž'ÆD44uÒ·¢ïBšDO ¾ ‰MÄ­Œjx{QËŒ†’†qk´Ô©7MCaº­uÜãl‰u W<„ÎЪïéH|®{R–ž†ù1qh‰°»å M¨o`\yˆUu[SùF·œá ñíP1€~ê­OvY´Ï›ÕÊùôÝw \‚]åŸ8®z#Òm&É3 C׌l‹ïnÖbṙΠ\ô_~eU7fú,Šˆ`ÑP¤!þEZxÎ$™v93<­šR©նžâãäÅNËD=¯ËDåùåìãúmr5”ÍÀ6É6ºÊ³–o]ÇTBãî€ÅÅÔTjnŒû·}Å¥OyôñÖ¡¢Ì_î˜ òcÙŒ3­ò £+x·êwØXéy~RäþÞIŽY9;Õ”AûõÜEÁ¸±ó N4É‘C"& ‹W2=uù.v§$½m™ùbk½Ã1®¤hSoØð±À^ c/e'w˜ê´¿có4FLµ9ŸðÔ–‘Kf"……Ùpp.”!Ç¿©Hñ¥C!> Ü >Á¤ƒo‰äǃ&pN˜ÏûGÓÉŒX/úF(´4|F–ã¼åsÜa¡1tB_ aù–&"øø>„=ÒBê‚d‹¼®våM¯Dq³¶ZDN¤Ö*NØtѪÎÇÝ8 ǘ¦q‘‰Š@R“i¨x¡Z °fÞÚÂî…Î10Õ£6¬BB¨?©6?FúÖN–…¯åm‰¥Y¯isåé.˜kT[‘ЃåŒÞ¤‰Wz z÷uTì:»qg·&‰wxó¶–“ÍL°u…Ý<|% º·PI!ªÔýÕ÷ÉÌÄ ¢¯¨,ÐÓ€v„÷ËWæä”ÏíoÁ3Yq¸•˜¨™Lêú÷q,aË=¸jý »µ„JSÌòâÎÖÝø× X7/îÛÅqm«Ø] ©”­ºhÆq{úÔƒ9‡xæÏ|RÚ‹ÒëFÇ^Õã‘RFÕDˆ¯AiA’Ÿc© Ý*¤{‹yæT7Ùéà4̳'‹e¾öŽÔt`ýäÚ·Ód”Ýme¢VÈŽ'ì…︚R+%¿É*fÉ)€Ù}˜§¯S2,¦|龪T8¢$6ƕ9.(Ýï$…€Ùš~ýâ]| , ãý’ÿÑ ìƒrò~j‚öÄî®ßb`JD؋Ăü Áƒ s³y؈€OëÆè îÒ’‹ìJl8p;³H¯bˆb­œÂœV ìcšF»ù-Û£ïó§óKWtÝ{¤E* <§/+O„yÿXž›ËÛ}Œ‰ûqV'@V©ðÆg¶A5­Ûå `:`ßi89Öo³1Oñ[¨v3áã–Q]½ø½ØRv·›¹ª2nC„0J rÆ¿Ÿ~ËÏ´Ôß»ì8#WegU * ž/:«ñ—¦ä©° u F1“fâ}MjÈZsnÖæi´wGÝØ¾ôPíB˜ÅÛÃ:¸|ö¹Q® ÀÆæåhê÷tpûl²üÖ¾|ªTÒ󙽫/¶ƒÕ?‚Ýîn*ûã`B(S'v¦PuK«#å÷ߪ^ÎÄpg¶¥£·)Ô±‚9p „£"ò<Ä$F èãÞy]ÚÊHÛNÕ¢X2>€j±N“À &1WRžrq/Ö#Þ!_[]½†øb¨½Ä…¢¾!ømé… ¾tØkïv`,õ½¤[‘„:n’«)ŽQ§¦çew*ML½=™J+Â$åÁ~›ƒëxÿü’lvæsô­Ž=#‚oëq‡Ö£ÈéY^Ê«c WéT­Ql!Ý­’¾/ ÿÌç1K_˜“Т‘)Oïšø-ÂW’éØ v¾C6¶±v¾ðz×2îArÑ£7ÌÖÜ5h¦… ïú¨_Ý2¥LöÂv±]‰ sŒ0+½Ê4õÉ+“Gößú4–ÝŸ’VÄ–\V»Ü+WR\ n f»:º·Ö`³}rYõθ±»ß=×àðc·BeõªfÁ}![j‰è3¤“è9¿§²e7þ|0Šo 8ÌTŽ@ÅõG Çõ‚w”–dÄ' _„¸_(Ðþ,…îîµè[ªís>ZÚ?Ñ+"v€#yÐ*ÏlGT1ú¬ÑO\ßí³Zé/µ¦TýyûÙ÷Çð¾ßºûØÕ*?¯MáOãCàã&š *£¦<ùõ›í¬/é°ß9ö¡:/œTqOlÚi¢$¡î6Ki²§÷èwƒ^ä²í ‰§ ܦO‚ŠÊXO9žpófW·™R6ÁEØUÍò—p¬yié¼:£­eÜ9n~mÿþq[lÛ†ôå÷‚Ñe}¸6hÁ[[Â8ë ú³d®-u̹‡‡Ðwý¼óë"\ËŸ¢ t‹šÂQ¼Ó>x:ÑôÛŒ_ JdÚâZõbr[…}"Ü¢| ;ôoÁc ‹½íëBKû !Jгñ+ÝBÇ·8§‘éí„󹨗ÔÊJL, „ñ- ߺñû|{ˆÑã3Ï,Ú!"¡Ä¥ÿ eÏ–„˜«Ÿ5QIV1%m«‡#$ÌI)?Ÿ H‚| jnÃ0t¼ó\ ø„q•e?‚yôÊ`èåËE3„G°ÈÖ̧_¼Øc#5êf˜Îü2Z,RÃ1C›¥öv¶’ ˆX,cŽkÏS$ÀaÄÒoŒÃ®5Õ¯t”I$1òxv_À·M§b»ºÞCŸQ‹Ù©:u‘S2ÔÛàäÍüI]Ÿ}wc°÷"æ»^äú(ð³´9Nñ—œàsÆ­É|gC‹ Ôc!=ÉJU„q2˘EækºQ0çcjØXœý‘Í”òh‚Ck¦]û«s#‚T°‚Öª N©j•ÏWèµ|¯qKÃ.8T\Ën Ou G{}íäX+ ÑÞM!zÃWòæ2n„Ò¸âbRuõî„)ï·}RZ®B‰‰2\ÉÕQµ‰ìëMùƒ)O 9{ù*3®áÅ•Fïôë›êJ< ùJøÈ¯ Š¿s/ƒJ“æ -»ªƒ ‡Çm·-”çç¸Õïõrçéª>¿]~uBÄÅ#~îüÒˆ®IšbàI¤ìdy=žC“µ£WU3Xk9R*Ú©?LKáJ†Éì⦴v¾¦ÜKU$òrJ¦µÍ\+“Vf>½2¦•¬P׌â+ÞÎ6‘&¶J4WÖ¨t=Ö ®&g0JÛWJÌ3c&¯)?{ÝýRå;þ9{zèy'Ž’z⮬/ˆ0n#œvÈì§h§/̦8ô8Q+|>ÄI™á%DT¿N«½Ô‰w²Öä7û¾ÐLsë ˆ©³  ™órÆWwÞ–ÑóÕOd☘CÍöñê6Ï*”aÚ¼BÍ1ì÷ ÏÝZJ²…x?‰[Ùy¹šÝàÁ¾‘N:]žBu8e\Šý^!DZùŒ‚Él—öR…Fï»Û~G´ä_º ÞûŸ<”1ÄÊC´O^‘Ü–ZæÏ£\$ï‚6ÄxŽÙ캯 çóý•šÝI*)Uìýf³JBÅ.™v—1J×;ÍÅë·Ç =4™dOÖ"Ò%”ØQ™X9xxœ©žY9ì,9 Þ’ÏÖ=Û`\’L#5´'Æñ"@ „è`à·í2þ0£¹îhCûtáëÁRc.R«<ŽI‰IÕ[) ^}:Pö&‚ÜÞØª¡-cÿàKrcÙ%⟎’+¼<ÁxæçlY(t"Bä ¸çÀ”EŒHypÇÞA' ƒ)UÜnv“)ùÒ¤¦îøyoVßHé‚b»Ý¨ÆØck99[3Òþº'¦b)Ÿ޽”8žm‡ƒbm_EufHmŸ:zMeá ±¡çûµI#»äÃb†¦À'¢Š’Nl¤ŸúIîŽ2ÖÐQ3ÙÐ[аzü;0ò}Áù›;Aò˜Ä•g¶ø »8æ3_^ó4›TÓ„¹¾ð‹ò™ Ø§˜žœŸñ˜»ÃøÉæ%ýt ç8 oZnv¨RC3W踚òI÷¬×δvwâí}ÈgÐ ¹BYõ\0¿º·›?û"`æ¦j÷ßHŠœiP¾ZYB`ÞÖ–è Â2¼S¹±©a&”,[’ú.ÅJ›sWç<ó…¦~Ùð—ºCH;¸÷VGýÝ…2©„p™þÏ>)5Ajº8qv ž=±­ÀƒÎê]­%CëBíocëu¦&<””.7·çþâ-Ÿ×Ë>–Wÿ®Êï8ýcé0rÞ/sû¯ é´Fœ¥õCtšT?Û:[·j‚´4PšügQLØ(ÙÉgöN„$Ñé6‚¬V«õ + ÞÉ“8EË=zGt-Î;}º³—ÖÒîëÄ ‡® 'ek,i˹ƃ”Ïj±9%~-”Õ4l×>wlŒ¦¯þÒTÞò®‰¨ù0©í©åGrTÍ¢|ƒE—ì ô–ñ¼ôÞŒ¥¬éYa›… bpŒºÉmç>’e( ß<†o[‘ßø8®#·H`ϹnKçßF%cðý¸ñSŒï’ÑYV-£ô®s:]4R=xÚÑ9ˆå% —–¢T˼‡üÓ­årËÌ¥{Ü ?„¬%Öìî_·Hk—Ÿ‚¶¹4éjˆõ¯« 6ræŠÇæ!-:1ŸÒôLÊÃT‹·ÙÔR_nÊ-}YŒÚ!¬¥Ü7nq ¿èaZ?ìóãµÍ¡„ÄÚVbìKM~ナ°C;Ñ¢»SŽa¼,ƈ§¾‡Eœ3s´sœ¬$%»äíÜ£kˆk3®ý€“?ûy˜ÁjuQã4$Ý&‘’ã_©/%\ÏšÇ ðÌ‘-A5àI“_Vð_Í ö%Óz€žÒM{½R,þ"t%†°ºªZ€F~I†þû'èfÖ+ánÅŠèÛ™ð) OGÓq-šypóíØ•7߃ʄ¼—È7¨=|“{l©zn‚ÕMÓ Ñ|»­æœ©$C*„ïÏ®‚ ¤}Fa[¡ü@g93èO á“›Åèì>h¹'•ÊsR®hhÄd¹Cç{“´VÛ™¿ƒ!Ñlï.^‹N4ˆ7$ÙèíÚŦwî®ø]>x+QµAì„YEk´·5­ &±X‹>~E3=¨HÌ9êcõ@1`1©€§ú|ùqì¾ÜýÑ:Nî:¿cyÁ­EY¿‘UN¬%(%¡û‰'ª=“È«# ¤å³°]·EÛe˜{ÅÒ_戠Êmøølá#Y¤6šì¤nJ,Ö ñËd‰yéq[‘<®àó˜QnÏ»£Ánýn}ß5]–(Èü&ØÒ¤­OL„C¡ÚŽÉB?¶´e”\°¼#ÀÇ*ä­FréF•s<•=x4º‡\HÕ­c:ÿ9e3 ¦©rqa“ /{¤îÊZ–6ws .Ë ±ÿJ&nðE÷W—ËH5Ÿb1ñZÇ^Ö ò뚸ã–%)Ø…Ãy­ç¯fóÃí¥)y„Ãý/¦®»D„˜`'U?å²jLl…Ʊ–þ ŽÉcæÛÅŠ’¿å ¬±‡ŠdéjÒ×XUî¼vÍK”Ÿ=V‹ÎV´ L²‚÷ÈNŽ(k!¥ÎÀÛ½#AñyY¥U[Žøvó‰ªHmÞDµÖ{ë†äåzs¯ÈÌÉ‘ž^ í8¥åšrl¯2Zñº7¤h|öVÊÓ }¬‘CyþdŽJ£‘óî€*碈g[ôŵv= Ú^}è’%—ù&¸²xPÈ_30½ãYñäH˜ýÐùÈ…Dß%¼‹¹Çœ;^Àk!.³.šG¿ëŒwÛ%AUáüm žP%+¥þ.› <¬iß‚[ °ªU\ÁÓœúÒã3‚ >§>v!E¸O—$Ècþ1økÔþLF+®Ø¥§XëÂÞäyq½w ±6Eâk~꫟zgé+Gàƒ $Ôkâ¹O>OIž÷QC¤ÖÀµ¤ÌEb%A0µ77ÓóÏ¡^¡ü½¬sç1‰Ó´Ê\eÙ -˜L˜éIošAš¯M¶&6° >Õ@(÷xN¶ 1` nÀ •í‡îr6¿D0¾§€0²$@©}ˆ—QN2*@é€?|·W¦Ãa‡W+0/ ˆYýÚ÷°Í'>°‡c—…3À ç†Î×ñh$‰æ³{G™ÆšwzngŸçËѱ"¤êéÁŠ v¹ÿ-ª…Sëañ ˆÄ&à Ùw-OˆôVC?ÕiUI—eúO}!~ mï¥ÙYV[tEDÅ%ƒ1 ž,oK«OÃÚ{iNDæ¹ñ— ”^84õÐq™¶ò´:Ò _&™õÏ·RËæìq±Úœ”eÆ÷}vRüÅ_"%3Ôó©ê0Ó®IÝUê$QÕ­{¬2==ö7ùê Ú[r€šR™½ûnõæ•Þr…*’•çã—P{kv±£Kø¸Uª¢ÞÙÏøÿZjÇŒ endstream endobj 128 0 obj << /Length1 1530 /Length2 2664 /Length3 0 /Length 3637 /Filter /FlateDecode >> stream xÚT 8”û÷·U n‰ÊRzS¶ 3cmDYGö%*ª[cæ™7cfÌ‚ÁT$¹¹—BˆH¹Ê^–"R(*‰,¡²¯ÃJ¿—´Ýÿÿy~¿gžgf>ç|Îùžs¾ŸóUÞâ´WÓ”H÷qt[£…6Ìí]]1Ú­£…Fk#”•]!6üfG(ï™,ˆN3ü‰aÎñlØfgÃD{: °áPŒ€Ñ7Ģр6ýF¤3  ¼/Dìµ: d!”Íé ."SØð9ßþjuƒÅ —ÂSo ð4ÀϦ€Þð‰<ØK'@ ›ûK 5# ›Í0D¡üüü´ðÞ,-:“¼K øAl à²@¦/H[ðÞàrkZeÀ•±¾:öÒIl?<`"€4¡A&Ÿìµ¶ í+Ùî+ ,Àha¾§[Ž^LÑ–‚ñÝ›§q! ATpÄÙi±ýÙHO#.ñTŽÇûâ!*Þ&,•Žp¦Îîp¹? 1Ø,-D]쵘³%hN÷öilb±> ˆ à¹sQË—ëE£ûÑ¿!D#’Û r(7äí-–9° ñÃFÙ€Þ¡£€>èO  på2À%'fÑ ÷À dÐ näA$þA²ð¾ Àfr@^àÏŽ_ƒˆ x‚dˆ†ø‘6ƒ¤¯¾&äDÃòÃèÅÏ÷‡a…é4*÷}éŠQ¦Ž¶–Nû4–[þî43£ûš@S[GÐÓÖô±zï×,Nxh¹ ôHk‰`¿ Oé[Á¾Ë P[^uà×\tX·  öCæ‡Ðzhü…ùŸÅ¾òÿi|1Ë•ù¿+Âq¨Ô%¿ÚWÂÿñã½!*w™ë–ÆwÀžoíßÔýà×ŵ‰Çûß^k6ÞS™ú} ùƒD'ˆM ,iã«ÙmqϨ t¢³ Å—ÐÄ ÑÿòÁËEð‚_,É%ïί'ZÒtââ’iëéx&ÏE a%iëéx‰ ÿ’ˆ”ΆC¸;@¢3‹WŠÅ(¢i aÐz ú1hEû j(Æw¨«#ø éÄŸºŠù„Ó±~‚pû'h 8ß!¬IÔÒãÃ"Ðá7é;K ¸Kð—Æ &Þþ%mÂSù†—žô ˆ¶f:agè±üÐÒ¹¦ ~š}ϵu%«§ÎòE÷÷ZÊù¾w17š›ÖI‹h5­hê˜ëZ;¬ñ¥ÈëÀz´×ïoƒâ# ×·Ý.]Aò|‡ z±Öx~˜eÇÑî·-/÷8ªC#’×»<öã›4ªo@úLö½J´2R)Îþ'‹2¾JµpDKBèù_«dwìБ -3M,Ë6Ë3mlºo½5eò|ôâ&Üà\|U¶^OõëL¤ Ô¯04$ɰå'튨ԗ·=úhTî­´”ýxN-„_¬æÉzêt.]Wžä:U4œÎqT fæ÷î©¿yKûÝËÝ|W—ƒÐíäƒçû´V¿¶3;ÛÃÔ.=ç¤Vjä®iþâ¸9ûÙlúî­î,“ëÀ哪ŠÏ›[Ü^¨©ëð0ÁÒz^£.¯›Ã¡´ “ü±ÔÜávOÍ·Í_e˜$ÙX¾«]= oßÔÌÔÖŠÚî”oÔ^ú÷¬ðtC“Æ7Gø'5µã*Êc{îÈõ·5Î6’:ë/‹{¾qD…“ÔâcÁTÚçègü磳9.2˜Gâ{&ü*»Ìb✷OwnÿHŸn”´Ê”þ£âr’ŸîùöÉW¼›|fÝ‘Îâ°ßo5*gI–tÄð… Øµb´ÈYçãH㊪}[øåZ¯åóJl†økî‡ o±“*œOêÉM8£p¦^¶]ÌçÌ%J€Ç±téäCæœl!džÔw‘ƒ™êC]Rt4êñ'Irû¡\%O“8Õþ±Øæ…†]¹[M·ÙbœÙ×™Ó§CI—C}ÄO¶ÂS÷¾Á¬6ô˜UM(¹Ñø[á­ŒØûûöSýw>óoìcÎtôqD›åí’±ƒ9<…[jb*‘Ì¢“vQÁüÛ¾;?w_+æá5‚i~Á®{© cê¨+í{>©´XÞÆÉ-œÄ=¥“‘q©í9;ý}ªcgæmÒ¤ÂÏkä^´†¦U¯R¡Ñºì¹pÇXÔ\5£ª'%øÐæš>Óª˜ã±òêî'Ý#©¼5´Ó»–WÕ?Zf‡+28TyU9Ö…%ó9¤â®ñöÄÄ>T'ªsuˆÑÕò¤êÌñÖþQ£<˺œ4Fp‹Kr´õ}ߨ2ÓY§òUŸÍpk÷GÛ(å³Þätà å’Mô+;·²,úbV­[&•;Ì/MQlù—v?ˆ´0ÞãQr:ØåÝüÚÍ "ECgòÓdÚ KíDµK»ÌóË{Qˆ˜‚3´HÁ7”ºÛD®\~Õ–¦õxcÀÅ‘ä‡÷¾Ö—Ù/–c}¤õXmPÜPoŸCUdQÑ5=F~Sâ:·ü›r'©núØ ‚.íñG5+þP.»k;•¦9 FÇšïPɹ얄È=z '§œT:ÿU3û% )ʼ‘²9©Ž›Ñt#ñä“°… OGl|DQAËu&Ò7„©mÕ±Í}ÏûT§í¶Gª¨²¡© ܇z’"÷,ãÖ…ÄRXÝ™>…rT­â¹ýéSò}Ɉm+“®>ÂG$ÞAtn Ø{-­8CþÐtç#*/½lñ@¸—ƒkb€ºªà[Ã~å•ý›çón F70'‘x³m;øÇä”bnUwD#s¨×G‚GnÿS7†mPIœ‰‘2c\ðªT_Ý•!ø^¿R ÷%/ÖømÁ¡³¿LÐHkl¤Ww\߈¯+%©mÅ‘›Þ¿ Èû£ ȱy MiÌçi›G¬«Bd†Ç ÇÛæ]AøfïYÕ5¬°Ÿ?¨(zÜï€ ‡·ö×W8‡éœ.‘²jÌüÛÜpÁie#Eà%êP“е íýZ öx=Ÿ4³æà€Ö›Á׉›ª,)/¥æÁ.NërTŸüU[VXomõ‚üùáô,µÞN£ÒR™@6N¤U8ÜÑ´‰óÌ»iAß ÿ$åL‰¡Š{¸‚C®ÄÃùξ¨'£!å¸Z†ÄåÒî“þ‡[R ‹ t•†;«*NJÿ¦«l ôßZ¯(JT‰;Áu}òö葆ºœAq ÔV?ïDu—ß0˜µ­©|ÃÍÁÓýë)·<ÅE¬;Ç$Ž­Çþu mÝk´Ò;ÛÒ>‚êW êH1z_’'0üZSPTèM AۦМsfÁˆ¢=ÃöàŒ÷‘ðOÐAYÜK•@Íîž=ÁáN1nq k/te^Ê‹ ËT@ ç1rªv ë”ÝÞÝäj×No+Ϭî?RcæeZ#[f_–ä{kÙä¤P%‚ZŒm¨u ±Æ,sµ2„“->_&›Fè›ÈÙÜä²fòÔã½+Ä'B¼ß™59+…—®ñd¬l>¶ïH³ q†OßÃË4p|Ž9ëv÷N}Å›FÓèðÊÈÆj²k SäÚ¡ŽíaZŒ8YÃ}ô×þ!^7ùJœMIŠ4öüŒðê©6¤LûÌ’Ó;X‘{gV£ÚŒëG>¯—R{CöËÔŒnã׸»ÜÕÓKº(¦tEœ!ù»ü7ÈÿÅwST°eja-"–úBâøctø ÇÀ“( »¤ñJteè«Bƒ­[Xì–«æ'(ŸÜŽ#}šOÊJJ¶TE”÷›:…î–È*ôê`DªÚúÒ_>>¿Îrº~,î±§ëÜ…sYõ×#/G-ôÖÑ‘çƒpk¦Ðœsäº×ÉÓÃÉ ƒ¡ÛäW(Åø‹l·µCçO:µkH\—áüá û>nxØVq5aƒu’Ì&ÆšŠuŸ«¤×†NÁU‘=²ªvOZU9οUðÌ5¸•wãŠmý™+Ö“§E[»Æc•ǯöHEdVžç]«§I:6~ª˜x˜Þ%ô.µœíöÔ+!á½›5ëÊóÂ_$¢,®ü_éNvêh1¢¤:­«ìJÆé¬ô„ÉQUÇ"JdÈcšž¼Á< ëY|"V£`$³û°¿ž¢ìhrh¯YÂx±Vî|AJwgb¤í\ò;² endstream endobj 11 0 obj << /Type /ObjStm /N 100 /First 819 /Length 3186 /Filter /FlateDecode >> stream xÚí[ksÛ6ý®_íì„ ^ÐÉtÖ¸Iœ¤®íÄN½™Ž"Ñ67’¨êÇûë÷\€’(ʲ-ÛéÌît&AââÞsŸHŰ”iæS&4Ö2¡˜Ì<“Ž)á 3cŽeÊ0á™ÕK™Ë4“‚yëZR2‘:˜ŒY†\:lñÃ|\NG|ŒÄ ÞæÝ¢½]~cg)“­—ŸZ˜>Â<Od?ÿ8ï{þœñ= >¡®ØØ5¤uÕ%7„>æòƒQÙ9Ê'ì ¸v÷?οMاÛÃ? ÄpÝc ߎïQ˜d*}¨´›å[ƒA >gTчˆæ­Œ@“á"ãEÅ‹Ž/QÚÀ½Å¦Ÿ'áþM1øÒâÛ娛"°ôï@i­e¢Ž®)%©Iƒb—ܺ­`Ë#Æ)KÆwÙâG2ÜãE¦&ñÒ-D —dî{J4Ö$¨~s‰Æá>½YIùD"•O¹ ‘F$^}‰:J*Ñié*ßKÁJ\êÕ#ˆ¡ÿ=Åio*öA\š%.½Yœz÷é,K”s÷a‰‚xõ}DV’(DB|šH{sNè'§l¢U%NøòâvÙ™¬V€Ó¿Ó&Á¢h ¦½Þ§[«pm Á.Ϊ"+ZM7]F–Œòóv'0ç7+TÛÓ¢×-ÿÂÎ⪘\–Ó uߊoÏÞ_òp3)zŤÈÇ‘W}Êù¨ìÓur(OŠA·¼Sw§ì÷Ûƒ.u¹?œ¬Ê~Õ)¶¢Û+zËÖx\vŠö¤(Qâ}W¸ïLGXc:×D¸›Ÿƒ‚è›÷Ãn{’"ó{Э"Œ'í^¯2ÂÁ5ì6ƒzÓÈ*¶rp^\LGÙ2Çt¦£dx]º…`…Û‹oíþ°Wyzv³Bu8 *v•·êš/™ä~¤+Â@#0Ú7ÇB³ýЬ­é¤ìcvg¨ ÏGÖï]œhî]¬ØÞÅÆT¶î±{”£E¢q8wagŸ¤z±híÁÒo÷’a÷üǹaƒeŽËáÚJx³<쟓x­3ìy°› Žz¨€Yâ½ÿÔ@ÍÅðýá«ØüÐo½IùÓ¿óóó?¬£v÷Ÿýñ é”ýF™téíeòA$ZZ¬³î·¾í­_:PÎê-Î8N=f7ìl3¢œyXD9}K(­ñ¥0 Xt.„óÂá91çDg¦â^μœL†ãŸ8¿ººB½¡ –”£ Þôdv·›6&Á‘>ìHï Ó^"DÝ]dRf‰Ä ûÁqQ;Øá ïÜc¯çpšÛ õá.³6H´Ëƒãód8@£Òø‡ÛëñFÒM#yy/#ù¬i$u·‘6&¡ðî1…ÆÑ‹Ž» tf„HSØÑÛª¥·SÒ˜$Ã’edx&É"]l‰BKA´©K(Ì¢ÈPP4Ì Wäñ™HÓô¯Í¿ÿž,Ç«¹>Ö¨ ±]  ŒÆŸ Gívt£y–>ÅZO¯˜%V-f‘[EÞ¼W§ ÑVµ}}¬ï&`ëþä [+`±­Ò”²0°¨VFZTåÊbÖé*ÉgÅ`¡çÿ{X­VˆÐí"&fÅAèPœÿnÿ§[Úàl©B|‡W´pÇV I­V´`fÔ_×:œ‹M 2«Þ.̤-CGÉptàŸÏxKB‚ƒ”©cA¥Ã½®QÔ8Ì{·#¼O[q¬! (AiZººZï)Å¢ž˜MÛ"‡±)m«* Q{JZ჆Õ5Ãâ0HŸà,™)8äÊLæ‚!©ïèÍ|p‡Å.WÓGä@çƒ igº±[­ÊS·F]#£3ªw2ú)\EØøÔüKO—¼î©O¢W¼9m׆phÌp•—cÑB±ÚOµm×wóqgT 'å(nßßµû9Ý:8ümç;o·O…Ä@¯}1f:Rl‡£Ç3£Ø3i蛣òTYé¥Ì¸Cl[qŽi_æÅÅ%n]†DÇž |5i÷ŠÎÖࢗ³çðIÞÿ@_A[ü´š„‚—í ~à[|›ïð]þ‚ïñ_ø+þš¿åïø?äGü˜¿çø oóϼû<ççüÿ ~Á/yÁ{¼Ï¼äå çC>âc>á“ËQžóÉUɧüŠã×?FÝèu*ýJ ~‚ºËV;ï_¿|· [½}%Ò›m¥$ÙŠŠ·vwØJÝf«gBϬeeÍXJÔ5ÌGEÙ]Ò(Àî«Ñ/[ïŽO£Fk¼¯ÄL#™=‘F™ÙH#¹‘F¯ON^S<®s‘Ng ¥þ1 ÍÃ9ókÕYæýÏ¿6"ú”¬¢ºSöÊÚ~¿"<ïwÛãKžÂeïçÅW9…È¿¼^æ$À¿ù—* r`– Cz]ÐËÏ'±7"¤•¥ùŸüÏi9ÉÃhèÅQJžqÞ/"œqþüÇÅ7>îŒå´ú‹ÿ'•ËžÓ›xnïô÷¿ÃsGoÖ¹.›eýDã1±èçɵÞwä©#ø§€9QI–5Ë6ÑlëtwûäEÐìøxn’ÂRa pl÷YM5!–T£Û¹jRÊuªÝ–íª|Rɤ‚KåtÐÍGãN9ÊURlT%÷_¾?Úß#mÖú±ª)ÞSúõn¤Û{d uk×Ê>ʵö\á¸FÌÖ„ï’®r£úy²óúøäéúq­_=|’…ß"ÑÆ,”E?¬~êt­g;ŨÓË;åðz´±r£*ºÿîËí7ÐëxýJg湨Ÿj]pkõ¢å½ îºZVk£³¿µûÛ6•˜õi¨cÒÏ‘…÷[vªuáeµÇ¡Õ€Ö‚6oOøçvçK¬¶³E!,¡:çNÛ=,qÛ³¨úå-ŞΊþ°7Ï*÷s/vÆAoVþZÍŸÖ+Äê^JnVÝqð!ºbÍÎƒŠ„ÂY>μy¼+Öï::¡Ègæ™U†µQ®)ˆµMô2¶Ûã<¼+_Ùh/Y&üd1¼òß+Fã !c¤Ö›öìFâî¤èN.ÇáwŽö¸|?€Ÿº@´9žæf¶Gˆ&ãjxèfçÒ›ϦtuéòÒ—7‰MáæWèštó®hî|šxl5u<"«áIŸÏê~¥‰h%X½Y¬Þ5©Í5· 8r%V3»d E¸xÿöi®úM8+Á+TŽª¹ë!Æh¬ÍMé«Ñ›ê%kø…5V É’©¹¨6ñØÛ­±TØôKseiâY‰]­Å“Ý}ÍÓçÜ)­M‹/تJÅý¢;fgñ¨¨~¹¿W¿è¨>àÇïÒŸna.Ö1_lo›jg¤ñ4]}:nÌøu:éáÜ8®ŒÃTe*2R*ÞD~f>³˜`E´•¡¶èÿ,„^t6ë`”evžkÿÃoá endstream endobj 139 0 obj << /Producer (pdfTeX-1.40.18) /Creator (TeX) /CreationDate (D:20180911232624-04'00') /ModDate (D:20180911232624-04'00') /Trapped /False /PTEX.Fullbanner (This is pdfTeX, Version 3.14159265-2.6-1.40.18 (TeX Live 2017/Debian) kpathsea version 6.2.3) >> endobj 132 0 obj << /Type /ObjStm /N 15 /First 112 /Length 595 /Filter /FlateDecode >> stream xÚSËnÛ0¼û+ö\‹")Y@Àu hšArjƒBi‡¨†Dµößwù#Ù‚ô`h—Þ™rcD1ðDgÀIœC¸ À PF€ÅÀx Âh‚U ¥q:!”Aœ„˜s „DèÑ'1F P2¹¾žÌŸ¥ÊÄ!v~šÌ—%6Z§µ(•VcÒGqPs“ÜÜôÑÂ#ù‰=]^‹?ZºIîdÝ ‘ËÒÆ³ÎWU‹°YxÂÏ ] /Length 358 /Filter /FlateDecode >> stream xÚÒK3\QÅñ½nHGD7!-‚$!-ÒÄ›H:M#ñ&‰÷{¢ÊÔÜäVûT¥*Ì|s#C#_€±J$ýß“_­³nÝsϹµÍÌþÉ,f²à8Gþ„f…‚Ü2râËï° s°"Ýžûƒ5x¬`Ù»%ȇ‡GP¡ž@D¡ò”ÛÉw‰ÁOøð: JàmŽÐ· ¥¤óï–Á3HÑùâP-t~ÒçP­ty¤P èü–UP té%¼‚.:ÿu¯¡úèüF ¨…°uð  êeÑc¡Úà¬bÛŸ.@7´ËgÞõC,yáËeX‡OðÒð20ƒ…!†YêÆwù*Û¹òôM¶ó4*;Êx“Ý]z—ª;=MH鬧Iië·§)i/éiZ:üãiFºŽ{š… Ø”îOéBæ%d^Bæ%d^Bæ%ŒJ™íÚ! 7@ endstream endobj startxref 131444 %%EOF units-2.19/NEWS0000664000175000017500000003374513473347330012611 0ustar adrianadrianGNU units NEWS - User visible changes. Copyright (C) 1996, 1997, 1999-2007, 2010-2018 Free Software Foundation, Inc. Version 2.19 - 28 May 2019 * Unit definitions updated to reflect new 2019 revisions to SI and the 2018 NIST CODATA. * Added definitions of country and USA state areas, and physical properties of selected woods. * Changes only to definitions.units in this release. Version 2.18 - 20 October 2018 * The yahoo currency server has disappeared. The units_cur script now supports multiple currency sources: FloatRates the European Central Bank, Fixer, and open exchange rates. The last two of these require the user to obtain a personal API key for access. The base currency can be selected using the --base option (when the source allows it, currently only FloatRates), and the primitive unit of currency is set to the base currency of the source. * Added hyperbolic functions: sinh, cosh, tanh, asinh, acosh, atanh. * Added log to arbitrary integer bases: log3, log4, log72, etc. * Units can be redefined without a warning by adding '+' before the unit name in definitions.units. * Added 'quit' and 'exit' commands. * Added support for CGS electromagnetic units with unit reductions to combinations of sqrt(grams), sqrt(centimeters) and seconds. This feature is activated using the -u option or UNITS_SYSTEM environment variable, which you can set to gaussian, esu, or emu to select one of three different CGS systems. * Units with definitions that collide with commands ('quit', 'help', etc) result in a warning message. * Added !prompt command to add a prefix to the "You have:" prompt. * Changed !message to print a blank line when it appears without text. * Texts specified with !message appear in the log file. * Improved compilation support for MacOS with (and without) GNU readline. * If units is configured with --enable-relocation it can now be installed with 'make install'. Version 2.17 - 25 June 2018 * Updates to units database, including commenting out several UTF-8 characters that fail under MacOS. * Updated units_cur to handle bad records returned by yahoo server. * Fixed some Makefile issues * Moved currency.units out of /usr/share because the file is not static and /usr/share is supposed to house static files. The new location is $sharedstatedir which may be /var/lib or /usr/local/com. Version 2.16 - 30 October 2017 * Fixed missing USD currency code (update to units_cur and definitions.units only). Version 2.15 - 16 October 2017 * The old timegenie service has vanished. A new units_cur script uses yahoo.com server. The new script works directly in Python 2 or Python 3 and no longer depends on unidecode. * Some currency definitions (e.g. currencies pegged to the euro) have moved out of definitions.units into currency.units. * Added bitcoin to currency.units * Fixed a memory leak bug for invalid exponent operations Version 2.14 - 7 March 2017 * Eliminated parser memory management limitation affecting long input expressions (e.g. a sum of more than 100 units) * Control characters are treated as white space rather than producing an error about invalid UTF-8. * The Makefile's "clean" target didn't remove *.o or the units binary Version 2.13 - 21 June 2016 (bug fix release) * Corrected error in heat of vaporization of water * Fixed bug where single character unicode prefixes couldn't be combined with the second "s", so microsecond couldn't be abbreviated. * Fixed bug where -H '' option would write history to ~/.history. * Added -fpic compile option so that it is possible to compile to a library * Improved support for building on Windows with Microsoft Visual Studio - Added script to set environment variables for VS in MKS Korn shell - Expanded guides UnitsMKS and UnitsWin for building with and without Unix-like utilities. Version 2.12 - 14 October 2015 * Updated and revised units database, with constants now based on 2014 CODATA. * Readline history is persistent and is saved to ~/.units_history, or to the file specified with --history (-H) option. * Fixed bug where '_' didn't give last result after conversion to function. * Fixed sporadic segmentation fault with --log. * Comments allowed on interactive input with '#', most useful with logging. * Added configure test for rl_completion_suppress_append, which helps compilation under MacOS. * Comment processing happens before checking UTF-8 validity---comments are allowed to contain bogus UTF-8. * Changed units_cur to skip bogus precious metals data from timegenie and to skip currencies with no rate. Version 2.11 - 2 April 2014 (bug fix release) * Many long options didn't work. * units_cur wouldn't print to stdout Version 2.10 - 19 March 2014 * Added '_' to represent the previous result. * Added support for rational exponents with numerators larger than 1 so you can do calculations like liter^2|3. * Added logging with --log (-L) option. * Fixed some unit definitions (R_infinity, planckmass), and added R_K90 and K_J90 for the conventional values of the von Klitzing and Josephson constants. * Don't use readline unless reading from a tty. This makes it much faster to run units through a pipe and also gives consistent behavior between versions compiled with and without readline. * Display of nonlinear unit definitions shows the range over which the unit is defined and the required dimensions of the argument. * Unit completion with readline will now complete nonlinear units, functions (e.g. cuberoot), prefixes, and unit list aliases. It will no longer insert a space after the completion. * Running "units --version" returns success. * Combining "--version" with "--terse" gives a terse version output. * Combining "--version" with "--verbose" or running with "--info" gives a detailed output of how units was compiled and where its supporting files are found. * A nonlinear unit can be defined equal to another nonlinear unit using the syntax: "newfunc() oldfunc". * Domain and range specified with nonlinear units can be open intervals, indicated by parentheses instead of brackets. * The "noerror" keyword on a nonlinear unit supresses error checking with "units --check" for that unit. * Changes to units_cur to work with timegenie changes and to support Python 3. The Python module unidecode is now required for units_cur. * The method for finding supporting files has changed when units is compiled to be relocatable. See the manual for details. The --enable-path-search configure option is replaced by --enable-relocation. * Fix to compile with Bison 3.0. * Improved error messages for various cases. * Units can be compiled and installed under Windows with Microsoft Visual C++ using Makefile.Win. A Windows binary distribution is available. * Some simple icons are included. Version 2.02 - 11 July 2013 * Added support for %a and %A output formats (hexadecimal floating point), and eliminated the restriction on the number of displayed digits when specifying an output format with the --output-format (-o) option. Improved error handling for formats specified with --output-format. * Added --digits (-d) to specify the number of digits to display. Giving '--digits max' (-dmax) will use the full available precision. * Added support for various Unicode minus sign symbols. Units now treats the figure dash (U+2012), the en dash (U+2013), and the minus (U+2212) as identical to the ASCII hyphen/minus symbol (U+002D). * The !message command in units data files has been fixed so it does not produce output when the --quiet option is given. * Improved error handling when unit names end with numbers without a '_'. * Removed six unicode entries from definition.units that were flagged as invalid under MacOS. * Modified units_cur to work with XML format as the txt format disappeared. * Corrected error in definition of the nat. * Improved manual. Version 2.01 - 24 October 2012 (bug fix release) * Fixed error in electronmass * New definition for au * Fixed DESTDIR support for installation * Changed configure script for success with Solaris * Small changes to manual Version 2.00 - 6 June 2012 General changes: * Unit lists provide conversion to sums of units (e.g. feet and inches). * Added --round (-r) and --show-factor (-S) options for use with unit lists. * Added unit lists aliases (e.g. time, usvol). * A python script, units_cur, can update currency data. * Units now flushes its output so you can talk to it with a pipe. * Units now works in UTF-8 if the system supports it. * Added --locale (-l) option to set the locale. * English units such as the gallon are defined in all locales, with US definitions by default except in the en_BG locale. You can force the desired definition (Great Britain or US) by setting the environment variable UNITS_ENGLISH to GB or US. * Revised and extended the documentation, with more examples. * Added locale mapping to address Windows locale names. * Updated and revised units database, including UTF-8 definitions and the 2010 CODATA. * Fixed parsing bug for "1..2" or "1.2.3". These now give an error. * Unit names can end with a number in the form of a subscript that starts with a '_', as in 'X_3'. * Units now performs error checking on the printf format specified with the --output-format (-o) option. Changes for units definition files: * Changed location and names of unit database, splitting off currency Files are /usr/local/share/units/{definitions,currency}.units and the personal units file is $HOME/.units instead of $HOME/units.dat. (Under windows personal unit file is unitdef.units.) * Personal units filename can be changed with MYUNITSFILE environment variable. * Prefixes can be defined in any order: it is no longer necessary to define longer ones before shorter ones. * New definitions replace previous ones. Personal units file is read after the system file rather than before. * Changed syntax for function definitions. Instead of [in-unit,out-unit] you must now write units=[in-unit,out-unit]. Use 'units -c' to find places in your personal data files that need to be updated. * Add optional domain and range to function definitions with syntax domain=[min,max] and range=[min,max]. Either min or max can be omitted to signal infinity. * Unit list aliases can be defined with !unitlist command. * Added !var and !varnot and !endvar to include definitions based on environment variable settings. * Added !set to set environment variables (if they aren't already set). * Added !message to display a message * Data files are in UTF-8, with !utf8 and !endutf8 commands to mark definitions that require UTF-8 support. * Improved error handling when reading units.dat. Version 1.88 - 15 Feb 2010 * Updated units.dat * Fixed bug involving readline version 4.2 Version 1.87 - 25 Sep 2007 * Units reads ~/.units.dat if it exists before reading the standard units database. * Added support for ** as an exponent operator. * Type 'search text' to list units that contain 'text' in their name. * Precedence of '*' changed to match precedence of '/'. (Multiplication by juxtaposition retains a higher precedence than '/'.) The --oldstar option selects the old precedence and --newstar forces the new precedence. Version 1.86 - 10 Nov 2006 * Added --one-line (-1) option which causes the program to print only one line of output. * Added --compact option which causes the program to print only the conversion factors and a newline on output. * Added build support for DESTDIR. * Made minor changes that allow the program to be compiled into a library and linked with other programs. * Fixed bug that caused bus error on Intel Mac. Version 1.85 - 20 May 2005 * The '-' character by default indicates subtraction. Multiplication can be obtained by '*' or ' '. The --product (-p) option selects the old behavior where '-' acts as a multiplication operator. The --minus (-m) option forces the default behavior where '-' indicates subtraction. * Handing of radian and steradian changed. These units are now treated as conformable with 1 for units conversions. This is indicated by the "!dimensionless" tag in units.dat. * Unit files can be included using !include. * Multiple -f (--file) options can appear on the command line; giving a null filename (-f '') causes the default units database to be loaded. * Added -t (--terse) option. * Improved error checking for units.dat. * Corrected and extended units.dat. Version 1.81 - October 28, 2002 * Fixed missing definition of "au" in units.dat. Version 1.80 - June 16, 2002 * Rewritten parser supports - () for grouping - noninteger powers of numbers (e.g. 3^0.25) - functions with dimensionless arguments (log, ln, log2, sin, cos, tan, exp) - roots of units: sqrt(unit), cuberoot(unit), and higher roots as unit^(1|4) * Functions can be defined in units.dat, and conversion to a function performed by specifying the function name alone as the "want" item. * Unit conversions can be specified as tables with linear interpolation. * The "help" command summarizes operations, and "help unit" browses the units database at the definition of the specified unit. * Specifying "?" for the want unit gets a list of all conformable units. * Support for locales added. * Units file extended and corrected. Version 1.55 - July 30, 1999 * Added over 600 new units and corrected errors in the units data file. * Minor bug fix affecting unit name completion. Version 1.54 - July 15, 1997 * Switched order of prefix and plural handling (plurals are now done first) * Added reciprocal unit conversion and --strict (-s) option * Fixed some erroneous unit definitions, added currency codes and other units * Improved Makefile (exec-prefix, program-transform-name supported) * Bug fixes Version 1.53 - Jan 13, 1997 * Added units containing ISO 8859-1 characters * Bug fixes Version 1.52 - Dec 18, 1996 * Sums of conformable units * Printing of unit definitions * Unitname completion with readline * Added --verbose (-v) option and moved --version to -V * Improved portability, old style C support, improved Makefile units-2.19/definitions.units0000664000175000017500000115721513473627517015521 0ustar adrianadrian# # This file is the units database for use with GNU units, a units conversion # program by Adrian Mariano adrianm@gnu.org # # May 2019 Version 3.04 # # Copyright (C) 1996-2002, 2004-2019 # Free Software Foundation, Inc # # 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 3 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 program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, # Boston, MA 02110-1301 USA # ############################################################################ # # Improvements and corrections are welcome. # # Fundamental constants in this file are the 2018 CODATA recommended values. # # Most units data was drawn from # 1. NIST Special Publication 811, Guide for the # Use of the International System of Units (SI). # Barry N. Taylor. 2008 # https://www.nist.gov/pml/special-publication-811 # 2. CRC Handbook of Chemistry and Physics 70th edition # 3. Oxford English Dictionary # 4. Webster's New Universal Unabridged Dictionary # 5. Units of Measure by Stephen Dresner # 6. A Dictionary of English Weights and Measures by Ronald Zupko # 7. British Weights and Measures by Ronald Zupko # 8. Realm of Measure by Isaac Asimov # 9. United States standards of weights and measures, their # creation and creators by Arthur H. Frazier. # 10. French weights and measures before the Revolution: a # dictionary of provincial and local units by Ronald Zupko # 11. Weights and Measures: their ancient origins and their # development in Great Britain up to AD 1855 by FG Skinner # 12. The World of Measurements by H. Arthur Klein # 13. For Good Measure by William Johnstone # 14. NTC's Encyclopedia of International Weights and Measures # by William Johnstone # 15. Sizes by John Lord # 16. Sizesaurus by Stephen Strauss # 17. CODATA Recommended Values of Physical Constants available at # http://physics.nist.gov/cuu/Constants/index.html # 18. How Many? A Dictionary of Units of Measurement. Available at # http://www.unc.edu/~rowlett/units/index.html # 19. Numericana. http://www.numericana.com # 20. UK history of measurement # http://www.ukmetrication.com/history.htm # 21. NIST Handbook 44, Specifications, Tolerances, and # Other Technical Requirements for Weighing and Measuring # Devices. 2011 # 22. NIST Special Publication 447, Weights and Measures Standards # of the the United States: a brief history. Lewis V. Judson. # 1963; rev. 1976 # 23. CRC Handbook of Chemistry and Physics, 96th edition # 24. Dictionary of Scientific Units, 6th ed. H.G. Jerrard and D.B. # McNeill. 1992 # 25. NIST Special Publication 330, The International System of # Units (SI). ed. Barry N. Taylor and Ambler Thompson. 2008 # https://www.nist.gov/pml/special-publication-330 # 26. BIPM Brochure, The International System of Units (SI). # 9th ed., 2019 # https://www.bipm.org/en/publications/si-brochure/ # ########################################################################### # # If units you use are missing or defined incorrectly, please contact me. # If your country's local units are missing and you are willing to supply # them, please send me a list. # ########################################################################### ########################################################################### # # Brief Philosophy of this file # # Most unit definitions are made in terms of integers or simple fractions of # other definitions. The typical exceptions are when converting between two # different unit systems, or the values of measured physical constants. In # this file definitions are given in the most natural and revealing way in # terms of integer factors. # # If you make changes be sure to run 'units --check' to check your work. # # The file is USA-centric, but there is some modest effort to support other # countries. This file is now coded in UTF-8. To support environments where # UTF-8 is not available, definitions that require this character set are # wrapped in !utf8 directives. # # When a unit name is used in different countries with the different meanings # the system should be as follows: # # Suppose countries ABC and XYZ both use the "foo". Then globally define # # ABCfoo # XYZfoo # # Then, using the !locale directive, define the "foo" appropriately for each of # the two countries with a definition like # # !locale ABC # foo ABCfoo # !endlocale # ########################################################################### !locale en_US ! set UNITS_ENGLISH US !endlocale !locale en_GB ! set UNITS_ENGLISH GB !endlocale !set UNITS_ENGLISH US # Default setting for English units !set UNITS_SYSTEM default # Set a default value !varnot UNITS_SYSTEM si emu esu gaussian gauss default !message Unknown unit system given with -u or UNITS_SYSTEM environment variable !message Valid systems: si, emu, esu, gauss[ian] !message Using SI !prompt (SI) !endvar !var UNITS_SYSTEM si !message SI units selected !prompt (SI) !endvar ########################################################################### # # # Primitive units. Any unit defined to contain a '!' character is a # # primitive unit which will not be reduced any further. All units should # # reduce to primitive units. # # # ########################################################################### # # SI units # # On 20 May 2019, the SI was revised to define the units by fixing the # values of physical constants that depend on those units. # # https://www.nist.gov/si-redefinition/ # # The BIPM--the International Bureau of Weights and Measures--provides a # succinct description of the new SI in its Concise Summary: # # https://www.bipm.org/utils/common/pdf/si-brochure/SI-Brochure-9-concise-EN.pdf # # The SI is the system of units in which: # # * the unperturbed ground state hyperfine transition frequency of the # caesium 133 atom is delta nu_Cs = 9 192 631 770 Hz, # * the speed of light in vacuum, c, is 299 792 458 m/s, # * the Planck constant, h, is 6.626 070 15 * 10^-34 J s, # * the elementary charge, e, is 1.602 176 634 * 10^-19 C, # * the Boltzmann constant, k, is 1.380 649 * 10^-23 J/K, # * the Avogadro constant, N_A, is 6.022 140 76 * 10^23 mol^-1, # * the luminous efficacy of monochromatic radiation of frequency # 540 * 10^12 Hz, K_cd, is 683 lm/W, # # where the hertz, joule, coulomb, lumen, and watt, with unit symbols Hz, # J, C, lm, and W, respectively, are related to the units second, metre, # kilogram, ampere, kelvin, mole, and candela, with unit symbols s, m, kg, # A, K, mol, and cd, respectively, according to Hz = s^–1, J = kg m^2 s^–2, # C = A s, lm = cd m^2 m^–2 = cd sr, and W = kg m^2 s^–3. # # These definitions specify the exact numerical value of each constant when # its value is expressed in the corresponding SI unit. By fixing the exact # numerical value the unit becomes defined, since the product of the # numerical value and the unit has to equal the value of the constant, # which is invariant. # # The defining constants have been chosen such that, when taken together, # their units cover all of the units of the SI. In general, there is no # one-to-one correspondence between the defining constants and the SI base # units. Any SI unit is a product of powers of these seven constants and a # dimensionless factor. # # Until 2018, the SI was defined in terms of base units and derived units. # These categories are no longer essential in the SI, but they are maintained # in view of their convenience and widespread use. They are arguably more # intuitive than the new definitions. (They are also essential to the # operation of GNU units.) The definitions of the base units, which follow # from the definition of the SI in terms of the seven defining constants, are # given below. # s ! # The second, symbol s, is the SI unit of time. It is defined second s # by taking the fixed numerical value of the unperturbed # ground-state hyperfine transition frequency of the # cesium-133 atom to be 9 192 1631 770 when expressed in the # unit Hz, which is equal to 1/s. # # This definition is a restatement of the previous one, the # duration of 9192631770 periods of the radiation corresponding # to the cesium-133 transition. c 299792458 m/s # speed of light in vacuum (exact) m ! # The metre, symbol m, is the SI unit of length. It is meter m # defined by taking the fixed numerical value of the speed metre m # of light in vacuum, c, to be 299 792 458 when expressed in # units of m/s. # # This definition is a rewording of the previous one and is # equivalent to defining the meter as the distance light # travels in 1|299792458 seconds. The meter was originally # intended to be 1e-7 of the length along a meridian from the # equator to a pole. h 6.62607015e-34 J s # Planck constant (exact) kg ! # The kilogram, symbol kg, is the SI unit of mass. It is kilogram kg # defined by taking the fixed numerical value of the Planck # constant, h, to be 6.626 070 15 * 10^-34 when expressed in # the unit J s which is equal to kg m^2 / s. # # One advantage of fixing h to define the kilogram is that this # affects constants used to define the ampere. If the kg were # defined by directly fixing the mass of something, then h # would be subject to error. # # The previous definition of the kilogram was the mass of the # international prototype kilogram. The kilogram was the last # unit whose definition relied on reference to an artifact. # # It is not obvious what this new definition means, or # intuitively how fixing Planck's constant defines the # kilogram. To define the kilogram we need to give the mass # of some reference in kilograms. Previously the prototype in # France served as this reference, and it weighed exactly 1 # kg. But the reference can have any weight as long as you # know the weight of the reference. The new definition uses # the "mass" of a photon, or more accurately, the mass # equivalent of the energy of a photon. The energy of a # photon depends on its frequency. If you pick a frequency, # f, then the energy of the photon is hf, and hence the mass # equivalent is hf/c^2. If we reduce this expression using # the constant defined values for h and c the result is a # value in kilograms for the mass-equivalent of a photon of # frequency f, which can therefore define the size of the # kilogram. # # For more on the relationship between mass an Planck's # constant: # # https://www.nist.gov/si-redefinition/kilogram-mass-and-plancks-constant # This definition may still seem rather abstract: you can't # place a "kilogram of radiation" on one side of a balance. # Metrologists realize the kilogram using a Kibble Balance, a # device which relates mechanical energy to electrical energy # and can measure mass with extreme accuracy if h is known. # # For more on the Kibble Balance see # # https://www.nist.gov/si-redefinition/kilogram-kibble-balance # https://en.wikipedia.org/wiki/Kibble_balance boltzmann 1.380649e-23 J/K # Boltzmann constant (exact) k boltzmann K ! # The kelvin, symbol K, is the SI unit of thermodynamic kelvin K # temperature. It is defined by taking the fixed numerical # value of the Boltzmann constant, k, to be 1.380 649 * 10^-23 # when expressed in the unit J/K, which is equal to # kg m^2/s^2 K. # # The boltzmann constant establishes the relationship between # energy and temperature. The average thermal energy carried # by each degree of freedom is kT/2. A monatomic ideal gas # has three degrees of freedom corresponding to the three # spatial directions, which means its thermal energy is # (3/2) k T. # # The previous definition of the kelvin was based on the # triple point of water. The change in the definition of the # kelvin will not have much effect on measurement practice. # Practical temperature calibration makes use of two scales, # the International Temperature Scale of 1990 (ITS-90), which # covers the range of 0.65 K to 1357.77K and the Provisional # Low Temperature Scale of 2000 (PLTS-2000), which covers the # range of 0.9 mK to 1 K. # https://www.bipm.org/en/committees/cc/cct/publications-cc.html # # The ITS-90 contains 17 reference points including things # like the triple point of hydrogen (13.8033 K) or the # freezing point of gold (1337.33 K), and of course the triple # point of water. The PLTS-2000 specifies four reference # points, all based on properties of helium-3. # # The redefinition of the kelvin will not affect the values of # these reference points, which have been determined by # primary thermometry, using thermometers that rely only on # relationships that allow temperature to be calculated # directly without using any unknown quantities. Examples # include acoustic thermometers, which measure the speed of # sound in a gas, or electronic thermometers, which measure # tiny voltage fluctuations in resistors. Both variables # depend directly on temperature. e 1.602176634e-19 C # electron charge (exact) A ! # The ampere, symbol A, is the SI unit of electric current. ampere A # It is defined by taking the fixed numerical value of the amp ampere # elementary charge, e, to be 1.602 176 634 * 10^-19 when # expressed in the unit C, which is equal to A*s. # # The previous definition was the current which produces a # force of 2e-7 N/m between two infinitely long wires a meter # apart. This definition was difficult to realize accurately. # # The ampere is actually realized by establishing the volt and # the ohm, since A = V / ohm. These measurements can be done # using the Josephson effect and the quantum Hall effect, # which accurately measure voltage and resistance, respectively, # with reference to two fixed constants, the Josephson # constant, K_J=2e/h and the von Klitzing constant, R_K=h/e^2. # Under the previous SI system, these constants had official # fixed values, defined in 1990. This created a situation # where the standard values for the volt and ohm were in some # sense outside of SI because they depended primarily on # constants different from the ones used to define SI. After # the revision, since e and h have exact definitions, the # Josephson and von Klitzing constants will also have exact # definitions that derive from SI instead of the conventional # 1990 values. # # In fact we know that there is a small offset between the # conventional values of the electrical units based on the # conventional 1990 values and the SI values. The new # definition, which brings the practical electrical units back # into SI, will lead to a one time change of +0.1ppm for # voltage values and +0.02ppm for resistance values. # # The previous definition resulted in fixed exact values for # the vacuum permeability (mu0), the impedance of free space # (Z0), the vacuum permittivity (epsilon0), and the Coulomb # constant. With the new definition, these four values are # subject to experimental error. avogadro 6.02214076e23 / mol # Size of a mole (exact) N_A avogadro mol ! # The mole, symbol mol, is the SI unit of amount of mole mol # substance. One mole contains exactly 6.022 140 76 * 10^23 # elementary entities. This number is the fixed numerical # value of the Avogadro constant, N_A, when expressed in the # unit 1/mol and is called the Avogadro number. The amount of # substance, symbol n, of a system is a measure of the number # of specified elementary entities. An elementary entity may # be an atom, a molecule, an ion, an electron, any other # particle or specified group of particles. # # The atomic mass unit (u) is defined as 1/12 the mass of # carbon-12. Previously the mole was defined so that a mole # of carbon-12 weighed exactly 12g, or N_A u = 1 g/mol # exactly. This relationship is now an experimental, # approximate relationship. # # To determine the size of the mole, researchers used spheres # of very pure silicon-28 that weighed a kilogram. They # measured the molar mass of Si-28 using mass spectrometry and # used X-ray diffraction interferometry to determine the # spacing of the silicon atoms in the sphere. Using the # sphere's volume it was then possible to determine the number # of silicon atoms in the sphere, and hence determine the # Avogadro constant. The results of this experiment were used to # define N_A, which is henceforth a fixed, unchanging quantity. cd ! # The candela, symbol cd, is the SI unit of luminous intensity candela cd # in a given direction. It is defined by taking the fixed # numerical value of the luminous efficacy of monochromatic # radiation of the frequency 540e12 Hz to be 683 when # expressed in the unit lumen/watt, which is equal to # cd sr/W, or cd sr s^3/kg m^2 # # This definition is a rewording of the previous definition. # Luminous intensity differs from radiant intensity (W/sr) in # that it is adjusted for human perceptual dependence on # wavelength. The frequency of 540e12 Hz (yellow; # wavelength approximately 555 nm in vacuum) is where human # perception is most efficient. # # The radian and steradian are defined as dimensionless primitive units. # The radian is equal to m/m and the steradian to m^2/m^2 so these units are # dimensionless. Retaining them as named units is useful because it allows # clarity in expressions and makes the meaning of unit definitions more clear. # These units will reduce to 1 in conversions but not for sums of units or for # arguments to functions. # radian !dimensionless # The angle subtended at the center of a circle by # an arc equal in length to the radius of the # circle sr !dimensionless # Solid angle which cuts off an area of the surface steradian sr # of the sphere equal to that of a square with # sides of length equal to the radius of the # sphere # # A primitive non-SI unit # bit ! # Basic unit of information (entropy). The entropy in bits # of a random variable over a finite alphabet is defined # to be the sum of -p(i)*log2(p(i)) over the alphabet where # p(i) is the probability that the random variable takes # on the value i. # # Currency: the primitive unit of currency is defined in currency.units. # It is usually the US$ or the euro, but it is user selectable. # ########################################################################### # # # Prefixes (longer names must come first) # # # ########################################################################### yotta- 1e24 # Greek or Latin octo, "eight" zetta- 1e21 # Latin septem, "seven" exa- 1e18 # Greek hex, "six" peta- 1e15 # Greek pente, "five" tera- 1e12 # Greek teras, "monster" giga- 1e9 # Greek gigas, "giant" mega- 1e6 # Greek megas, "large" myria- 1e4 # Not an official SI prefix kilo- 1e3 # Greek chilioi, "thousand" hecto- 1e2 # Greek hekaton, "hundred" deca- 1e1 # Greek deka, "ten" deka- deca deci- 1e-1 # Latin decimus, "tenth" centi- 1e-2 # Latin centum, "hundred" milli- 1e-3 # Latin mille, "thousand" micro- 1e-6 # Latin micro or Greek mikros, "small" nano- 1e-9 # Latin nanus or Greek nanos, "dwarf" pico- 1e-12 # Spanish pico, "a bit" femto- 1e-15 # Danish-Norwegian femten, "fifteen" atto- 1e-18 # Danish-Norwegian atten, "eighteen" zepto- 1e-21 # Latin septem, "seven" yocto- 1e-24 # Greek or Latin octo, "eight" quarter- 1|4 semi- 0.5 demi- 0.5 hemi- 0.5 half- 0.5 double- 2 triple- 3 treble- 3 kibi- 2^10 # In response to the convention of illegally mebi- 2^20 # and confusingly using metric prefixes for gibi- 2^30 # powers of two, the International tebi- 2^40 # Electrotechnical Commission aproved these pebi- 2^50 # binary prefixes for use in 1998. If you exbi- 2^60 # want to refer to "megabytes" using the Ki- kibi # binary definition, use these prefixes. Mi- mebi Gi- gibi Ti- tebi Pi- pebi Ei- exbi Y- yotta Z- zetta E- exa P- peta T- tera G- giga M- mega k- kilo h- hecto da- deka d- deci c- centi m- milli u- micro # it should be a mu but u is easy to type n- nano p- pico f- femto a- atto z- zepto y- yocto # # Names of some numbers # one 1 two 2 double 2 couple 2 three 3 triple 3 four 4 quadruple 4 five 5 quintuple 5 six 6 seven 7 eight 8 nine 9 ten 10 eleven 11 twelve 12 thirteen 13 fourteen 14 fifteen 15 sixteen 16 seventeen 17 eighteen 18 nineteen 19 twenty 20 thirty 30 forty 40 fifty 50 sixty 60 seventy 70 eighty 80 ninety 90 hundred 100 thousand 1000 million 1e6 twoscore two score threescore three score fourscore four score fivescore five score sixscore six score sevenscore seven score eightscore eight score ninescore nine score tenscore ten score twelvescore twelve score # These number terms were described by N. Chuquet and De la Roche in the 16th # century as being successive powers of a million. These definitions are still # used in most European countries. The current US definitions for these # numbers arose in the 17th century and don't make nearly as much sense. These # numbers are listed in the CRC Concise Encyclopedia of Mathematics by Eric # W. Weisstein. shortbillion 1e9 shorttrillion 1e12 shortquadrillion 1e15 shortquintillion 1e18 shortsextillion 1e21 shortseptillion 1e24 shortoctillion 1e27 shortnonillion 1e30 shortnoventillion shortnonillion shortdecillion 1e33 shortundecillion 1e36 shortduodecillion 1e39 shorttredecillion 1e42 shortquattuordecillion 1e45 shortquindecillion 1e48 shortsexdecillion 1e51 shortseptendecillion 1e54 shortoctodecillion 1e57 shortnovemdecillion 1e60 shortvigintillion 1e63 centillion 1e303 googol 1e100 longbillion million^2 longtrillion million^3 longquadrillion million^4 longquintillion million^5 longsextillion million^6 longseptillion million^7 longoctillion million^8 longnonillion million^9 longnoventillion longnonillion longdecillion million^10 longundecillion million^11 longduodecillion million^12 longtredecillion million^13 longquattuordecillion million^14 longquindecillion million^15 longsexdecillion million^16 longseptdecillion million^17 longoctodecillion million^18 longnovemdecillion million^19 longvigintillion million^20 # These numbers fill the gaps left by the long system above. milliard 1000 million billiard 1000 million^2 trilliard 1000 million^3 quadrilliard 1000 million^4 quintilliard 1000 million^5 sextilliard 1000 million^6 septilliard 1000 million^7 octilliard 1000 million^8 nonilliard 1000 million^9 noventilliard nonilliard decilliard 1000 million^10 # For consistency longmilliard milliard longbilliard billiard longtrilliard trilliard longquadrilliard quadrilliard longquintilliard quintilliard longsextilliard sextilliard longseptilliard septilliard longoctilliard octilliard longnonilliard nonilliard longnoventilliard noventilliard longdecilliard decilliard # The long centillion would be 1e600. The googolplex is another # familiar large number equal to 10^googol. These numbers give overflows. # # The short system prevails in English speaking countries # billion shortbillion trillion shorttrillion quadrillion shortquadrillion quintillion shortquintillion sextillion shortsextillion septillion shortseptillion octillion shortoctillion nonillion shortnonillion noventillion shortnoventillion decillion shortdecillion undecillion shortundecillion duodecillion shortduodecillion tredecillion shorttredecillion quattuordecillion shortquattuordecillion quindecillion shortquindecillion sexdecillion shortsexdecillion septendecillion shortseptendecillion octodecillion shortoctodecillion novemdecillion shortnovemdecillion vigintillion shortvigintillion # # Numbers used in India # lakh 1e5 crore 1e7 arab 1e9 kharab 1e11 neel 1e13 padm 1e15 shankh 1e17 ############################################################################# # # # Derived units which can be reduced to the primitive units # # # ############################################################################# # # Named SI derived units (officially accepted) # newton kg m / s^2 # force N newton pascal N/m^2 # pressure or stress Pa pascal joule N m # energy J joule watt J/s # power W watt coulomb A s # charge C coulomb volt W/A # potential difference V volt ohm V/A # electrical resistance siemens A/V # electrical conductance S siemens farad C/V # capacitance F farad weber V s # magnetic flux Wb weber henry V s / A # inductance H henry tesla Wb/m^2 # magnetic flux density T tesla hertz /s # frequency Hz hertz # # Dimensions. These are here to help with dimensional analysis and # because they will appear in the list produced by hitting '?' at the # "You want:" prompt to tell the user the dimension of the unit. # LENGTH meter AREA LENGTH^2 VOLUME LENGTH^3 MASS kilogram AMOUNT mole ANGLE radian SOLID_ANGLE steradian MONEY US$ FORCE newton PRESSURE FORCE / AREA STRESS FORCE / AREA FREQUENCY hertz VELOCITY LENGTH / TIME ACCELERATION VELOCITY / TIME DENSITY MASS / VOLUME LINEAR_DENSITY MASS / LENGTH VISCOSITY FORCE TIME / AREA KINEMATIC_VISCOSITY VISCOSITY / DENSITY CURRENT ampere CHARGE coulomb CAPACITANCE farad RESISTANCE ohm CONDUCTANCE siemens INDUCTANCE henry E_FIELD ELECTRIC_POTENTIAL / LENGTH B_FIELD tesla # The D and H fields are related to the E and B fields by factors of # epsilon and mu respectively, so their units can be found by # multiplying/dividing by the epsilon0 and mu0. The more complex # definitions below make it possible to use D_FIELD and E_FIELD to # convert between SI and CGS units for these dimensions. D_FIELD E_FIELD epsilon0 mu0_SI c^2 F / m H_FIELD B_FIELD / (mu0/mu0_SI) (H/m) ELECTRIC_DIPOLE_MOMENT C m MAGNETIC_DIPOLE_MOMENT J / T POLARIZATION ELECTRIC_DIPOLE_MOMENT / VOLUME MAGNETIZATION MAGNETIC_DIPOLE_MOMENT / VOLUME ELECTRIC_POTENTIAL volt VOLTAGE ELECTRIC_POTENTIAL E_FLUX E_FIELD AREA D_FLUX D_FIELD AREA B_FLUX B_FIELD AREA H_FLUX H_FIELD AREA # # units derived easily from SI units # gram millikg gm gram g gram tonne 1000 kg t tonne metricton tonne sthene tonne m / s^2 funal sthene pieze sthene / m^2 quintal 100 kg bar 1e5 Pa # About 1 atm b bar vac millibar micron micrometer # One millionth of a meter bicron picometer # One brbillionth of a meter cc cm^3 are 100 m^2 a are liter 1000 cc # The liter was defined in 1901 as the oldliter 1.000028 dm^3 # space occupied by 1 kg of pure water at L liter # the temperature of its maximum density l liter # under a pressure of 1 atm. This was # supposed to be 1000 cubic cm, but it # was discovered that the original # measurement was off. In 1964, the # liter was redefined to be exactly 1000 # cubic centimeters. mho siemens # Inverse of ohm, hence ohm spelled backward galvat ampere # Named after Luigi Galvani angstrom 1e-10 m # Convenient for describing molecular sizes xunit xunit_cu # Used for measuring x-ray wavelengths. siegbahn xunit # Originally defined to be 1|3029.45 of xunit_cu 1.00207697e-13 m # the spacing of calcite planes at 18 xunit_mo 1.00209952e-13 m # degC. It was intended to be exactly # 1e-13 m, but was later found to be # slightly off. Current usage is with # reference to common x-ray lines, either # the K-alpha 1 line of copper or the # same line of molybdenum. angstromstar 1.00001495 angstrom # Defined by JA Bearden in 1965 to replace # the X unit. The wavelength of the # tungsten K alpha1 line was defined as # exactly 0.20901 angstrom star, with the # valule chosen to try to make the new # unit close to the angstrom. silicon_d220 1.920155716e-10 m # Silicon lattice spacing siliconlattice sqrt(8) silicon_d220# Silicon lattice parameter, (a), the side # length of the unit cell for the diamond # centered cubic structure of silicon. fermi 1e-15 m # Convenient for describing nuclear sizes # Nuclear radius is from 1 to 10 fermis barn 1e-28 m^2 # Used to measure cross section for # particle physics collision, said to # have originated in the phrase "big as # a barn". shed 1e-24 barn # Defined to be a smaller companion to the # barn, but it's too small to be of # much use. brewster micron^2/N # measures stress-optical coef diopter /m # measures reciprocal of lens focal length fresnel 1e12 Hz # occasionally used in spectroscopy shake 1e-8 sec svedberg 1e-13 s # Used for measuring the sedimentation # coefficient for centrifuging. gamma microgram # Also used for 1e-9 tesla lambda microliter spat 1e12 m # Rarely used for astronomical measurements preece 1e13 ohm m # resistivity planck J s # action of one joule over one second sturgeon /henry # magnetic reluctance daraf 1/farad # elastance (farad spelled backwards) leo 10 m/s^2 poiseuille N s / m^2 # viscosity mayer J/g K # specific heat mired / microK # reciprocal color temperature. The name # abbreviates micro reciprocal degree. crocodile megavolt # used informally in UK physics labs metricounce 25 g mounce metricounce finsenunit 1e5 W/m^2 # Measures intensity of ultraviolet light # with wavelength 296.7 nm. fluxunit 1e-26 W/m^2 Hz # Used in radio astronomy to measure # the energy incident on the receiving # body across a specified frequency # bandwidth. [12] jansky fluxunit # K. G. Jansky identified radio waves coming Jy jansky # from outer space in 1931. flick W / cm^2 sr micrometer # Spectral radiance or irradiance pfu / cm^2 sr s # particle flux unit -- Used to measure # rate at which particles are received by # a spacecraft as particles per solid # angle per detector area per second. [18] pyron cal_IT / cm^2 min # Measures heat flow from solar radiation, # from Greek work "pyr" for fire. katal mol/sec # Measure of the amount of a catalyst. One kat katal # katal of catalyst enables the reaction # to consume or produce on mol/sec. solarluminosity 382.8e24 W # A common yardstick for comparing the # output of different stars. # http://nssdc.gsfc.nasa.gov/planetary/factsheet/sunfact.html # at mean earth-sun distance solarirradiance solarluminosity / (4 pi sundist^2) solarconstant solarirradiance TSI solarirradiance # total solar irradiance # # time # sec s minute 60 s min minute hour 60 min hr hour day 24 hr d day da day week 7 day wk week sennight 7 day fortnight 14 day blink 1e-5 day # Actual human blink takes 1|3 second ce 1e-2 day cron 1e6 years watch 4 hours # time a sentry stands watch or a ship's # crew is on duty. bell 1|8 watch # Bell would be sounded every 30 minutes. # French Revolutionary Time or Decimal Time. It was Proposed during # the French Revolution. A few clocks were made, but it never caught # on. In 1998 Swatch defined a time measurement called ".beat" and # sold some watches that displayed time in this unit. decimalhour 1|10 day decimalminute 1|100 decimalhour decimalsecond 1|100 decimalminute beat decimalminute # Swatch Internet Time # # angular measure # circle 2 pi radian degree 1|360 circle deg degree arcdeg degree arcmin 1|60 degree arcminute arcmin ' arcmin arcsec 1|60 arcmin arcsecond arcsec " arcsec '' " rightangle 90 degrees quadrant 1|4 circle quintant 1|5 circle sextant 1|6 circle sign 1|12 circle # Angular extent of one sign of the zodiac turn circle revolution turn rev turn pulsatance radian / sec gon 1|100 rightangle # measure of grade grade gon centesimalminute 1|100 grade centesimalsecond 1|100 centesimalminute milangle 1|6400 circle # Official NIST definition. # Another choice is 1e-3 radian. pointangle 1|32 circle # Used for reporting compass readings centrad 0.01 radian # Used for angular deviation of light # through a prism. mas milli arcsec # Used by astronomers seclongitude circle (seconds/day) # Astronomers measure longitude # (which they call right ascension) in # time units by dividing the equator into # 24 hours instead of 360 degrees. # # Some geometric formulas # circlearea(r) units=[m;m^2] range=[0,) pi r^2 ; sqrt(circlearea/pi) spherevolume(r) units=[m;m^3] range=[0,) 4|3 pi r^3 ; \ cuberoot(spherevolume/4|3 pi) spherevol() spherevolume square(x) range=[0,) x^2 ; sqrt(square) # # Solid angle measure # sphere 4 pi sr squaredegree 1|180^2 pi^2 sr squareminute 1|60^2 squaredegree squaresecond 1|60^2 squareminute squarearcmin squareminute squarearcsec squaresecond sphericalrightangle 0.5 pi sr octant 0.5 pi sr # # Concentration measures # percent 0.01 % percent mill 0.001 # Originally established by Congress in 1791 # as a unit of money equal to 0.001 dollars, # it has come to refer to 0.001 in general. # Used by some towns to set their property # tax rate, and written with a symbol similar # to the % symbol but with two 0's in the # denominator. [18] proof 1|200 # Alcohol content measured by volume at # 60 degrees Fahrenheit. This is a USA # measure. In Europe proof=percent. ppm 1e-6 partspermillion ppm ppb 1e-9 partsperbillion ppb # USA billion ppt 1e-12 partspertrillion ppt # USA trillion karat 1|24 # measure of gold purity caratgold karat gammil mg/l basispoint 0.01 % # Used in finance fine 1|1000 # Measure of gold purity # The pH scale is used to measure the concentration of hydronium (H3O+) ions in # a solution. A neutral solution has a pH of 7 as a result of dissociated # water molecules. pH(x) units=[1;mol/liter] range=(0,) 10^(-x) mol/liter ; (-log(pH liters/mol)) # # Temperature # # Two types of units are defined: units for converting temperature differences # and functions for converting absolute temperatures. Conversions for # differences start with "deg" and conversions for absolute temperature start # with "temp". # TEMPERATURE kelvin TEMPERATURE_DIFFERENCE kelvin # In 1741 Anders Celsius introduced a temperature scale with water boiling at # 0 degrees and freezing at 100 degrees at standard pressure. After his death # the fixed points were reversed and the scale was called the centigrade # scale. Due to the difficulty of accurately measuring the temperature of # melting ice at standard pressure, the centigrade scale was replaced in 1954 # by the Celsius scale which is defined by subtracting 273.15 from the # temperature in Kelvins. This definition differed slightly from the old # centigrade definition, but the Kelvin scale depends on the triple point of # water rather than a melting point, so it can be measured accurately. tempC(x) units=[1;K] domain=[-273.15,) range=[0,) \ x K + stdtemp ; (tempC +(-stdtemp))/K tempcelsius() tempC degcelsius K degC K # Fahrenheit defined his temperature scale by setting 0 to the coldest # temperature he could produce in his lab with a salt water solution and by # setting 96 degrees to body heat. In Fahrenheit's words: # # Placing the thermometer in a mixture of sal ammoniac or sea # salt, ice, and water a point on the scale will be found which # is denoted as zero. A second point is obtained if the same # mixture is used without salt. Denote this position as 30. A # third point, designated as 96, is obtained if the thermometer # is placed in the mouth so as to acquire the heat of a healthy # man." (D. G. Fahrenheit, Phil. Trans. (London) 33, 78, 1724) tempF(x) units=[1;K] domain=[-459.67,) range=[0,) \ (x+(-32)) degF + stdtemp ; (tempF+(-stdtemp))/degF + 32 tempfahrenheit() tempF degfahrenheit 5|9 degC degF 5|9 degC degreesrankine degF # The Rankine scale has the degrankine degreesrankine # Fahrenheit degree, but its zero degreerankine degF # is at absolute zero. degR degrankine tempR degrankine temprankine degrankine tempreaumur(x) units=[1;K] domain=[-218.52,) range=[0,) \ x degreaumur+stdtemp ; (tempreaumur+(-stdtemp))/degreaumur degreaumur 10|8 degC # The Reaumur scale was used in Europe and # particularly in France. It is defined # to be 0 at the freezing point of water # and 80 at the boiling point. Reaumur # apparently selected 80 because it is # divisible by many numbers. degK K # "Degrees Kelvin" is forbidden usage. tempK K # For consistency # Gas mark is implemented below but in a terribly ugly way. There is # a simple formula, but it requires a conditional which is not # presently supported. # # The formula to convert to degrees Fahrenheit is: # # 25 log2(gasmark) + k_f gasmark<=1 # 25 (gasmark-1) + k_f gasmark>=1 # # k_f = 275 # gasmark[degR] \ .0625 634.67 \ .125 659.67 \ .25 684.67 \ .5 709.67 \ 1 734.67 \ 2 759.67 \ 3 784.67 \ 4 809.67 \ 5 834.67 \ 6 859.67 \ 7 884.67 \ 8 909.67 \ 9 934.67 \ 10 959.67 # Units cannot handle wind chill or heat index because they are two variable # functions, but they are included here for your edification. Clearly these # equations are the result of a model fitting operation. # # wind chill index (WCI) a measurement of the combined cooling effect of low # air temperature and wind on the human body. The index was first defined # by the American Antarctic explorer Paul Siple in 1939. As currently used # by U.S. meteorologists, the wind chill index is computed from the # temperature T (in °F) and wind speed V (in mi/hr) using the formula: # WCI = 0.0817(3.71 sqrt(V) + 5.81 - 0.25V)(T - 91.4) + 91.4. # For very low wind speeds, below 4 mi/hr, the WCI is actually higher than # the air temperature, but for higher wind speeds it is lower than the air # temperature. # # heat index (HI or HX) a measure of the combined effect of heat and # humidity on the human body. U.S. meteorologists compute the index # from the temperature T (in °F) and the relative humidity H (as a # value from 0 to 1). # HI = -42.379 + 2.04901523 T + 1014.333127 H - 22.475541 TH # - .00683783 T^2 - 548.1717 H^2 + 0.122874 T^2 H + 8.5282 T H^2 # - 0.0199 T^2 H^2. # # Physical constants # # Basic constants pi 3.14159265358979323846 light c mu0_SI 2 alpha h / e^2 c # Vacuum magnetic permeability mu0 mu0_SI # Gets overridden in CGS modes epsilon0 1/mu0 c^2 # Vacuum electric permittivity Z0 mu0 c # Free space impedance energy c^2 # Convert mass to energy hbar h / 2 pi spin hbar G 6.67430e-11 N m^2 / kg^2 # Newtonian gravitational constant coulombconst 1/4 pi epsilon0 # Listed as k or k_C sometimes k_C coulombconst # Physico-chemical constants atomicmassunit 1.66053906660e-27 kg # Unified atomic mass unit, defined as u atomicmassunit # 1|12 of the mass of carbon 12. amu atomicmassunit # The relationship N_A u = 1 g/mol dalton u # is approximately, but not exactly Da dalton # true (with the 2019 SI). # Previously the mole was defined to # make this relationship exact. amu_chem 1.66026e-27 kg # 1|16 of the weighted average mass of # the 3 naturally occuring neutral # isotopes of oxygen amu_phys 1.65981e-27 kg # 1|16 of the mass of a neutral # oxygen 16 atom gasconstant k N_A # Molar gas constant (exact) R gasconstant kboltzmann boltzmann molarvolume mol R stdtemp / atm # Volume occupied by one mole of an # ideal gas at STP. loschmidt avogadro mol / molarvolume # Molecules per cubic meter of an # ideal gas at STP. Loschmidt did # work similar to Avogadro. molarvolume_si N_A siliconlattice^3 / 8 # Volume of a mole of crystalline # silicon. The unit cell contains 8 # silicon atoms and has a side # length of siliconlattice. stefanboltzmann pi^2 k^4 / 60 hbar^3 c^2 # The power per area radiated by a sigma stefanboltzmann # blackbody at temperature T is # given by sigma T^4. (exact) wiendisplacement (h c/k)/4.9651142317442763 # Wien's Displacement Law gives # the frequency at which the the # Planck spectrum has maximum # intensity. The relation is lambda # T = b where lambda is wavelength, # T is temperature and b is the Wien # displacement. This relation is # used to determine the temperature # of stars. The constant is the # solution to x=5(1-exp(-x)). (exact) K_J90 483597.9 GHz/V # Direct measurement of the volt is difficult. Until K_J 2e/h # recently, laboratories kept Weston cadmium cells as # a reference, but they could drift. In 1987 the # CGPM officially recommended the use of the # Josephson effect as a laboratory representation of # the volt. The Josephson effect occurs when two # superconductors are separated by a thin insulating # layer. A "supercurrent" flows across the insulator # with a frequency that depends on the potential # applied across the superconductors. This frequency # can be very accurately measured. The Josephson # constant K_J relates the measured frequency to the # potential. Two values given, the conventional # (exact) value from 1990, which was used until the # 2019 SI revision, and the current exact value. R_K90 25812.807 ohm # Measurement of the ohm also presents difficulties. R_K h/e^2 # The old approach involved maintaining resistances # that were subject to drift. The new standard is # based on the Hall effect. When a current carrying # ribbon is placed in a magnetic field, a potential # difference develops across the ribbon. The ratio # of the potential difference to the current is # called the Hall resistance. Klaus von Klitzing # discovered in 1980 that the Hall resistance varies # in discrete jumps when the magnetic field is very # large and the temperature very low. This enables # accurate realization of the resistance h/e^2 in the # lab. The 1990 value was an exact conventional # value used until the SI revision in 2019. This value # did not agree with measurements. The new value # is exact. # The 2019 update to SI gives exact definitions for R_K and K_J. Previously # the electromagnetic units were realized using the 1990 conventional values # for these constants, and as a result, the standard definitions were in some # sense outside of SI. The revision corrects this problem. The definitions # below give the 1990 conventional values for the electromagnetic units in # terms of 2019 SI. ampere90 (K_J90 R_K90 / K_J R_K) A coulomb90 (K_J90 R_K90 / K_J R_K) C farad90 (R_K90/R_K) F henry90 (R_K/R_K90) H ohm90 (R_K/R_K90) ohm volt90 (K_J90/K_J) V watt90 (K_J90^2 R_K90 / K_J^2 R_K) W # Various conventional values gravity 9.80665 m/s^2 # std acceleration of gravity (exact) force gravity # use to turn masses into forces atm 101325 Pa # Standard atmospheric pressure atmosphere atm Hg 13.5951 gram force / cm^3 # Standard weight of mercury (exact) water gram force/cm^3 # Standard weight of water (exact) waterdensity gram / cm^3 # Density of water H2O water wc water # water column mach 331.46 m/s # speed of sound in dry air at STP standardtemp 273.15 K # standard temperature stdtemp standardtemp normaltemp tempF(70) # for gas density, from NIST normtemp normaltemp # Handbook 44 # Weight of mercury and water at different temperatures using the standard # force of gravity. Hg10C 13.5708 force gram / cm^3 # These units, when used to form Hg20C 13.5462 force gram / cm^3 # pressure measures, are not accurate Hg23C 13.5386 force gram / cm^3 # because of considerations of the Hg30C 13.5217 force gram / cm^3 # revised practical temperature scale. Hg40C 13.4973 force gram / cm^3 Hg60F 13.5574 force gram / cm^3 H2O0C 0.99987 force gram / cm^3 H2O5C 0.99999 force gram / cm^3 H2O10C 0.99973 force gram / cm^3 H2O15C 0.99913 force gram / cm^3 H2O18C 0.99862 force gram / cm^3 H2O20C 0.99823 force gram / cm^3 H2O25C 0.99707 force gram / cm^3 H2O50C 0.98807 force gram / cm^3 H2O100C 0.95838 force gram / cm^3 # Atomic constants Rinfinity 10973731.568160 /m # The wavelengths of a spectral series R_H 10967760 /m # can be expressed as # 1/lambda = R (1/m^2 - 1/n^2). # where R is a number that various # slightly from element to element. # For hydrogen, R_H is the value, # and for heavy elements, the value # approaches Rinfinity, which can be # computed from # m_e c alpha^2 / 2 h # with a loss of 2 digits # of precision. alpha 7.2973525693e-3 # The fine structure constant was # introduced to explain fine # structure visible in spectral # lines. bohrradius alpha / 4 pi Rinfinity prout 185.5 keV # nuclear binding energy equal to 1|12 # binding energy of the deuteron conductancequantum 2 e^2 / h # Planck constants planckmass sqrt(hbar c / G) m_P planckmass plancktime hbar / planckmass c^2 t_P plancktime plancklength plancktime c l_P plancklength plancktemperature hbar / k plancktime T_P plancktemperature # Particle radius electronradius coulombconst e^2 / electronmass c^2 # Classical deuteronchargeradius 2.12799e-15 m protonchargeradius 0.8751e-15 m # Masses of elementary particles electronmass 5.48579909065e-4 u m_e electronmass muonmass 0.1134289259 u m_mu muonmass taumass 1.90754 u m_tau taumass protonmass 1.007276466621 u m_p protonmass neutronmass 1.00866491595 u m_n neutronmass deuteronmass 2.013553212745 u # Nucleus of deuterium, one m_d deuteronmass # proton and one neutron alphaparticlemass 4.001506179127 u # Nucleus of He, two protons m_alpha alphaparticlemass # and two neutrons tritonmass 3.01550071621 u # Nucleius of H3, one proton m_t tritonmass # and two neutrons helionmass 3.014932247175 u # Nucleus of He3, two protons m_h helionmass # and one neutron # particle wavelengths: the compton wavelength of a particle is # defined as h / m c where m is the mass of the particle. electronwavelength h / m_e c lambda_C electronwavelength protonwavelength h / m_p c lambda_C,p protonwavelength neutronwavelength h / m_n c lambda_C,n neutronwavelength muonwavelength h / m_mu c lambda_C,mu muonwavelength # The g-factor or dimensionless magnetic moment is a quantity that # characterizes the magnetic moment of a particle. The electron g-factor is # one of the most precisely measured values in physics, with a relative # uncertainty of 1.7e-13. g_d 0.8574382338 # Deuteron g-factor g_e -2.00231930436256 # Electron g-factor g_h -4.255250615 # Helion g-factor g_mu -2.0023318418 # Muon g-factor g_n -3.82608545 # Neutron g-factor g_p 5.5856946893 # Proton g-factor g_t 5.957924931 # Triton g-factor # Magnetic moments (derived from the more accurate g-factors) # # The magnetic moment is g * mu_ref * spin where in most cases # the reference is the nuclear magneton, and all of the particles # except the deuteron have spin 1/2. bohrmagneton e hbar / 2 electronmass # Reference magnetic moment for mu_B bohrmagneton # the electron nuclearmagneton e hbar / 2 protonmass # Convenient reference magnetic mu_N nuclearmagneton # moment for heavy particles mu_e g_e mu_B / 2 # Electron spin magnet moment mu_mu g_mu e hbar / 4 muonmass # Muon spin magnetic moment mu_p g_p mu_N / 2 # Proton magnetic moment mu_n g_n mu_N / 2 # Neutron magnetic moment mu_t g_t mu_N / 2 # Triton magnetic moment mu_d g_d mu_N # Deuteron magnetic moment, spin 1 mu_h g_h mu_N / 2 # Helion magnetic moment # # Units derived from physical constants # kgf kg force technicalatmosphere kgf / cm^2 at technicalatmosphere hyl kgf s^2 / m # Also gram-force s^2/m according to [15] mmHg mm Hg torr atm / 760 # The torr, named after Evangelista # Torricelli, and is very close to the mm Hg tor Pa # Suggested in 1913 but seldom used [24]. # Eventually renamed the Pascal. Don't # confuse the tor with the torr. inHg inch Hg inH2O inch water mmH2O mm water eV e V # Energy acquired by a particle with charge e electronvolt eV # when it is accelerated through 1 V lightyear c julianyear # The 365.25 day year is specified in ly lightyear # NIST publication 811 lightsecond c s lightminute c min parsec au / tan(arcsec) # Unit of length equal to distance pc parsec # from the sun to a point having # heliocentric parallax of 1 # arcsec (derived from parallax # second). A distant object with # parallax theta will be about # (arcsec/theta) parsecs from the # sun (using the approximation # that tan(theta) = theta). rydberg h c Rinfinity # Rydberg energy crith 0.089885 gram # The crith is the mass of one # liter of hydrogen at standard # temperature and pressure. amagatvolume molarvolume amagat mol/amagatvolume # Used to measure gas densities lorentz bohrmagneton / h c # Used to measure the extent # that the frequency of light # is shifted by a magnetic field. cminv h c / cm # Unit of energy used in infrared invcm cminv # spectroscopy. wavenumber cminv kcal_mol kcal_th / mol N_A # kcal/mol is used as a unit of # energy by physical chemists. # # CGS system based on centimeter, gram and second # dyne cm gram / s^2 # force dyn dyne erg cm dyne # energy poise gram / cm s # viscosity, honors Jean Poiseuille P poise rhe /poise # reciprocal viscosity stokes cm^2 / s # kinematic viscosity St stokes stoke stokes lentor stokes # old name Gal cm / s^2 # acceleration, used in geophysics galileo Gal # for earth's gravitational field # (note that "gal" is for gallon # but "Gal" is the standard symbol # for the gal which is evidently a # shortened form of "galileo".) barye dyne/cm^2 # pressure barad barye # old name kayser 1/cm # Proposed as a unit for wavenumber balmer kayser # Even less common name than "kayser" kine cm/s # velocity bole g cm / s # momentum pond gram force glug gram force s^2 / cm # Mass which is accelerated at # 1 cm/s^2 by 1 gram force darcy centipoise cm^2 / s atm # Measures permeability to fluid flow. # One darcy is the permeability of a # medium that allows a flow of cc/s # of a liquid of centipoise viscosity # under a pressure gradient of # atm/cm. Named for H. Darcy. mobileohm cm / dyn s # mobile ohm, measure of mechanical # mobility mechanicalohm dyn s / cm # mechanical resistance acousticalohm dyn s / cm^5 # ratio of the sound pressure of # 1 dyn/cm^2 to a source of strength # 1 cm^3/s ray acousticalohm rayl dyn s / cm^3 # Specific acoustical resistance eotvos 1e-9 Gal/cm # Change in gravitational acceleration # over horizontal distance # # Electromagnetic CGS Units # # For measuring electromagnetic quantities in SI, we introduce the new base # dimension of current, define the ampere to measure current, and derive the # other electromagnetic units from the ampere. With the CGS units one approach # is to use the basic equations of electromagnetism to define units that # eliminate constants from those equations. Coulomb's law has the form # # F = k_C q1 q2 / r^2 # # where k_C is the Coulomb constant equal to 1|4 pi epsilon0 in SI units. # Ampere's force law takes the form # # dF/dl = 2 k_A I1 I2 / r # # where k_A is the ampere constant. In the CGS system we force either k_C or # k_A to 1 which then defines either a unit for charge or a unit for current. # The other unit then becomes a derived unit. When k_C is 1 the ESU system # results. When k_A is 1 the EMU system results. Note that these parameters # are not independent of each other: Maxwell's equations indicate that # # k_C / k_A = c^2 # # where c is the speed of light. # # One more choice is needed to define a complete system. Using Coulomb's law # we define the electric field as the force per unit charge # # E = k_C 1 / r^2. # # But what about the magnetic field? It is derived from Ampere's law but we # have the option of adding a proportionality constant, k_B, that may have # dimensions: # # B = 2 k_A k_B I / r # # We can choose k_B = 1, which is done in the SI, ESU and EMU systems. But if # instead we give k_B units of length/time then the magnetic field has # the same units as the electric field. This choice leads to the Gaussian # system. # # The relations above are used to determine the dimensions, but the units are # derived from the base units of CGS, not directly from those formulas. We # will use the notation [unit] to refer to the dimension of the unit in # brackets. This same process gives rise to the SI units such as the tesla, # which is defined by # # B = 2 # # References: # # Classical Electrodynamics by John David Jackson, 3rd edition. # Cardarelli, Francois. 1999. Scientific Unit Conversion. 2nd ed. Trans. # M.J. Shields. London: Springer-Verlag. ISBN 1-85233-043-0 # # # All of these systems result in electromagnetic units that involve the square # roots of the centimeter and gram. This requires a change in the primitive # units. # !var UNITS_SYSTEM esu emu gaussian gauss sqrt_cm ! sqrt_centimeter sqrt_cm +m 100 sqrt_cm^2 sqrt_g ! sqrt_gram sqrt_g +kg kilo sqrt_g^2 !endvar # Electrostatic CGS (ESU) # # This system uses the statcoulomb as the fundamental unit of charge, with # derived units that parallel the conventional terminology but use the stat- # prefix. The statcoulomb is designed by setting k_C=1, which means # # dyne = statcoulomb^2 / cm^2. # # The statcoulomb is also called the franklin or esu. # # The ESU system was specified by a committee report in 1873 and rarely used. statcoulomb 10 coulomb cm / s c # Charge such that two charges esu statcoulomb # of 1 statC separated by 1 cm statcoul statcoulomb # exert a force of 1 dyne statC statcoulomb stC statcoulomb franklin statcoulomb Fr franklin !var UNITS_SYSTEM esu !message CGS-ESU units selected !prompt (ESU) +statcoulomb sqrt(dyne) cm +A 0.1 statamp c/(cm/s) +mu0 1/c^2 +coulombconst 1 !endvar statampere statcoulomb / s statamp statampere statA statampere stA statampere statvolt dyne cm / statamp sec statV statvolt stV statvolt statfarad statamp sec / statvolt statF statfarad stF statfarad cmcapacitance statfarad stathenry statvolt sec / statamp statH stathenry stH stathenry statohm statvolt / statamp stohm statohm statmho /statohm stmho statmho statweber statvolt sec statWb statweber stWb statweber stattesla statWb/cm^2 # Defined by analogy with SI; rarely statT stattesla # if ever used stT stattesla debye 1e-10 statC angstrom # unit of electrical dipole moment helmholtz debye/angstrom^2 # Dipole moment per area jar 1000 statfarad # approx capacitance of Leyden jar # Electromagnetic CGS (EMU) # # The abampere is the fundamental unit of this system, with the derived units # using the ab- prefix. The dimensions of the abampere are defined by assuming # that k_A=1, which # # [dyne / cm] = [2 abampere^2 / cm] # # where the brackets indicate taking the dimension of the unit in base units # and discarding any constant factors. This results in the definition from # base CGS units of: # # abampere = sqrt(dyne). # # The abampere is also called the biot. The magnetic field unit (the gauss) # follows from the assumption that k_B=1, which means # # B = 2 I / r, # # and hence the dimensions of the gauss are given by # # [gauss] = [2 abampere / cm] # # or rewriting in terms of the base units # # gauss = abampere / cm. # # The definition given below is different because it is in a form that # gives a valid reduction for SI and ESU and still gives the correct # result in EMU. (It can be derived from Faraday's law.) # # The EMU system was developed by Gauss and Weber and formalized as a system in # a committee report by the British Association for the Advancement of Science # in 1873. abampere 10 A # Current which produces a force of abamp abampere # 2 dyne/cm between two infinitely aA abampere # long wires that are 1 cm apart abA abampere biot abampere Bi biot !var UNITS_SYSTEM emu !message CGS-EMU units selected !prompt (EMU) +abampere sqrt(dyne) +A 0.1 abamp +mu0 1 +coulombconst c^2 !endvar abcoulomb abamp sec abcoul abcoulomb abC abcoulomb abfarad abampere sec / abvolt abF abfarad abhenry abvolt sec / abamp abH abhenry abvolt dyne cm / abamp sec abV abvolt abohm abvolt / abamp abmho /abohm gauss abvolt sec / cm^2 # The magnetic field 2 cm from a wire Gs gauss # carrying a current of 1 abampere maxwell gauss cm^2 # Also called the "line" Mx maxwell oersted gauss / mu0 # From the relation H = B / mu Oe oersted gilbert gauss cm / mu0 Gb gilbert Gi gilbert unitpole 4 pi maxwell # unit magnetic pole emu erg/gauss # "electro-magnetic unit", a measure of # magnetic moment, often used as emu/cm^3 # to specify magnetic moment density. # Electromagnetic CGS (Gaussian) # # The Gaussian system uses the statcoulomb and statamp from the ESU system # derived by setting k_C=1, but it defines the magnetic field unit differently # by taking k_B=c instead of k_B=1. As noted above, k_C and k_A are not # independent. With k_C=1 we must have k_A=c^-2. This results in the magnetic # field unit, the gauss, having dimensions give by: # # [gauss] = [2 (c^-2) c statamp / cm] = [statamp / c cm] # # We then define the gauss using base CGS units to obtain # # gauss = statamp / ((cm/s) cm) = statcoulomb / cm^2. # # Note that this definition happens to give the same result as the definition # for the EMU system, so the definitions of the gauss are consistent. # # This definition gives the same dimensions for the E and B fields and was also # known as the "symmetric system". This system was proposed by Hertz in 1888. !var UNITS_SYSTEM gaussian gauss !message CGS-Gaussian units selected !prompt (Gaussian) +statcoulomb sqrt(dyne) cm +A 0.1 statamp c/(cm/s) +mu0 1 +epsilon0 1 +coulombconst 1 # The gauss is the B field produced +gauss statcoulomb / cm^2 # 1 cm from a wire carrying a current +weber 1e8 maxwell # of 0.5*(c/(cm/s)) stA = 1.5e10 stA +bohrmagneton e hbar / 2 electronmass c +nuclearmagneton e hbar / 2 protonmass c !endvar # # Some historical electromagnetic units # intampere 0.999835 A # Defined as the current which in one intamp intampere # second deposits .001118 gram of # silver from an aqueous solution of # silver nitrate. intfarad 0.999505 F intvolt 1.00033 V intohm 1.000495 ohm # Defined as the resistance of a # uniform column of mercury containing # 14.4521 gram in a column 1.063 m # long and maintained at 0 degC. daniell 1.042 V # Meant to be electromotive force of a # Daniell cell, but in error by .04 V faraday N_A e mol # Charge that must flow to deposit or faraday_phys 96521.9 C # liberate one gram equivalent of any faraday_chem 96495.7 C # element. (The chemical and physical # values are off slightly from what is # obtained by multiplying by amu_chem # or amu_phys. These values are from # a 1991 NIST publication.) Note that # there is a Faraday constant which is # equal to N_A e and hence has units of # C/mol. kappline 6000 maxwell # Named by and for Gisbert Kapp siemensunit 0.9534 ohm # Resistance of a meter long column of # mercury with a 1 mm cross section. # # Printed circuit board units. # # http://www.ndt-ed.org/GeneralResources/IACS/IACS.htm. # # Conductivity is often expressed as a percentage of IACS. A copper wire a # meter long with a 1 mm^2 cross section has a resistance of 1|58 ohm at # 20 deg C. Copper density is also standarized at that temperature. # copperconductivity 58 siemens m / mm^2 # A wire a meter long with IACS copperconductivity # a 1 mm^2 cross section copperdensity 8.89 g/cm^3 # The "ounce" measures the ouncecopper oz / ft^2 copperdensity # thickness of copper used ozcu ouncecopper # in circuitboard fabrication # # Photometric units # LUMINOUS_INTENSITY candela LUMINOUS_FLUX lumen LUMINOUS_ENERGY talbot ILLUMINANCE lux EXITANCE lux candle 1.02 candela # Standard unit for luminous intensity hefnerunit 0.9 candle # in use before candela hefnercandle hefnerunit # violle 20.17 cd # luminous intensity of 1 cm^2 of # platinum at its temperature of # solidification (2045 K) lumen cd sr # Luminous flux (luminous energy per lm lumen # time unit) talbot lumen s # Luminous energy lumberg talbot # References give these values for lumerg talbot # lumerg and lumberg both. Note that # a paper from 1948 suggests that # lumerg should be 1e-7 talbots so # that lumergs/erg = talbots/joule. # lumerg = luminous erg lux lm/m^2 # Illuminance or exitance (luminous lx lux # flux incident on or coming from phot lumen / cm^2 # a surface) ph phot # footcandle lumen/ft^2 # Illuminance from a 1 candela source # at a distance of one foot metercandle lumen/m^2 # Illuminance from a 1 candela source # at a distance of one meter mcs metercandle s # luminous energy per area, used to # measure photographic exposure nox 1e-3 lux # These two units were proposed for skot 1e-3 apostilb # measurements relating to dark adapted # eyes. # Luminance measures LUMINANCE nit nit cd/m^2 # Luminance: the intensity per projected stilb cd / cm^2 # area of an extended luminous source. sb stilb # (nit is from latin nitere = to shine.) apostilb cd/pi m^2 asb apostilb blondel apostilb # Named after a French scientist. # Equivalent luminance measures. These units are units which measure # the luminance of a surface with a specified exitance which obeys # Lambert's law. (Lambert's law specifies that luminous intensity of # a perfectly diffuse luminous surface is proportional to the cosine # of the angle at which you view the luminous surface.) equivalentlux cd / pi m^2 # luminance of a 1 lux surface equivalentphot cd / pi cm^2 # luminance of a 1 phot surface lambert cd / pi cm^2 footlambert cd / pi ft^2 # The bril is used to express "brilliance" of a source of light on a # logarithmic scale to correspond to subjective perception. An increase of 1 # bril means doubling the luminance. A luminance of 1 lambert is defined to # have a brilliance of 1 bril. bril(x) units=[1;lambert] 2^(x+-100) lamberts ;log2(bril/lambert)+100 # Some luminance data from the IES Lighting Handbook, 8th ed, 1993 sunlum 1.6e9 cd/m^2 # at zenith sunillum 100e3 lux # clear sky sunillum_o 10e3 lux # overcast sky sunlum_h 6e6 cd/m^2 # value at horizon skylum 8000 cd/m^2 # average, clear sky skylum_o 2000 cd/m^2 # average, overcast sky moonlum 2500 cd/m^2 # # Photographic Exposure Value # This section by Jeff Conrad (jeff_conrad@msn.com) # # The Additive system of Photographic EXposure (APEX) proposed in ASA # PH2.5-1960 was an attempt to simplify exposure determination for people who # relied on exposure tables rather than exposure meters. Shortly thereafter, # nearly all cameras incorporated exposure meters, so the APEX system never # caught on, but the concept of exposure value remains in use. Though given as # 'Ev' in ASA PH2.5-1960, it is now more commonly indicated by 'EV'. EV is # related to exposure parameters by # # A^2 LS ES # 2^EV = --- = -- = -- # t K C # # Where # A = Relative aperture (f-number) # t = Exposure time in seconds # L = Scene luminance in cd/m2 # E = Scene illuminance in lux # S = Arithmetic ISO speed # K = Reflected-light meter calibration constant # C = Incident-light meter calibration constant # # Strictly, an exposure value is a combination of aperture and exposure time, # but it's also commonly used to indicate luminance (or illuminance). # Conversion to luminance or illuminance units depends on the ISO speed and the # meter calibration constant. Common practice is to use an ISO speed of 100. # Calibration constants vary among camera and meter manufacturers: Canon, # Nikon, and Sekonic use a value of 12.5 for reflected-light meters, while # Kenko (formerly Minolta) and Pentax use a value of 14. Kenko and Sekonic use # a value of 250 for incident-light meters with flat receptors. # # The values for in-camera meters apply only averaging, weighted-averaging, or # spot metering--the multi-segment metering incorporated in most current # cameras uses proprietary algorithms that evaluate many factors related to the # luminance distribution of what is being metered; they are not amenable to # simple conversions, and are usually not disclosed by the manufacturers. s100 100 / lx s # ISO 100 speed iso100 s100 # Reflected-light meter calibration constant with ISO 100 speed k1250 12.5 (cd/m2) / lx s # For Canon, Nikon, and Sekonic k1400 14 (cd/m2) / lx s # For Kenko (Minolta) and Pentax # Incident-light meter calibration constant with ISO 100 film c250 250 lx / lx s # flat-disc receptor # Exposure value to scene luminance with ISO 100 imaging media # For Kenko (Minolta) or Pentax #ev100(x) units=[;cd/m^2] range=(0,) 2^x k1400 / s100; log2(ev100 s100/k1400) # For Canon, Nikon, or Sekonic ev100(x) units=[1;cd/m^2] range=(0,) 2^x k1250 / s100; log2(ev100 s100/k1250) EV100() ev100 # Exposure value to scene illuminance with ISO 100 imaging media iv100(x) units=[1;lx] range=(0,) 2^x c250 / s100; log2(iv100 s100 / c250) # Other Photographic Exposure Conversions # # As part of APEX, ASA PH2.5-1960 proposed several logarithmic quantities # related by # # Ev = Av + Tv = Bv + Sv # # where # Av = log2(A^2) Aperture value # Tv = log2(1/t) Time value # Sv = log2(N Sx) Speed value # Bv = log2(B S / K) Luminance ("brightness") value # Iv = log2(I S / C) Illuminance value # # and # A = Relative aperture (f-number) # t = Exposure time in seconds # Sx = Arithmetic ISO speed in 1/lux s # B = luminance in cd/m2 # I = luminance in lux # The constant N derives from the arcane relationship between arithmetic # and logarithmic speed given in ASA PH2.5-1960. That relationship # apparently was not obvious--so much so that it was thought necessary # to explain it in PH2.12-1961. The constant has had several values # over the years, usually without explanation for the changes. Although # APEX had little impact on consumer cameras, it has seen a partial # resurrection in the Exif standards published by the Camera & Imaging # Products Association of Japan. #N_apex 2^-1.75 lx s # precise value implied in ASA PH2.12-1961, # derived from ASA PH2.5-1960. #N_apex 0.30 lx s # rounded value in ASA PH2.5-1960, # ASA PH2.12-1961, and ANSI PH2.7-1986 #N_apex 0.3162 lx s # value in ANSI PH2.7-1973 N_exif 1|3.125 lx s # value in Exif 2.3 (2010), making Sv(5) = 100 K_apex1961 11.4 (cd/m2) / lx s # value in ASA PH2.12-1961 K_apex1971 12.5 (cd/m2) / lx s # value in ANSI PH3.49-1971; more common C_apex1961 224 lx / lx s # value in PH2.12-1961 (20.83 for I in # footcandles; flat sensor?) C_apex1971 322 lx / lx s # mean value in PH3.49-1971 (30 +/- 5 for I in # footcandles; hemispherical sensor?) N_speed N_exif K_lum K_apex1971 C_illum C_apex1961 # Units for Photographic Exposure Variables # # Practical photography sometimes pays scant attention to units for exposure # variables. In particular, the "speed" of the imaging medium is treated as if # it were dimensionless when it should have units of reciprocal lux seconds; # this practice works only because "speed" is almost invariably given in # accordance with international standards (or similar ones used by camera # manufacturers)--so the assumed units are invariant. In calculating # logarithmic quantities--especially the time value Tv and the exposure value # EV--the units for exposure time ("shutter speed") are often ignored; this # practice works only because the units of exposure time are assumed to be in # seconds, and the missing units that make the argument to the logarithmic # function dimensionless are silently provided. # # In keeping with common practice, the definitions that follow treat "speeds" # as dimensionless, so ISO 100 speed is given simply as '100'. When # calculating the logarithmic APEX quantities Av and Tv, the definitions # provide the missing units, so the times can be given with any appropriate # units. For example, giving an exposure time of 1 minute as either '1 min' or # '60 s' will result in Tv of -5.9068906. # # Exposure Value from f-number and Exposure Time # # Because nonlinear unit conversions only accept a single quantity, # there is no direct conversion from f-number and exposure time to # exposure value EV. But the EV can be obtained from a combination of # Av and Tv. For example, the "sunny 16" rule states that correct # exposure for a sunlit scene can achieved by using f/16 and an exposure # time equal to the reciprocal of the ISO speed in seconds; this can be # calculated as # # ~Av(16) + ~Tv(1|100 s), # # which gives 14.643856. These conversions may be combined with the # ev100 conversion: # # ev100(~Av(16) + ~Tv(1|100 s)) # # to yield the assumed average scene luminance of 3200 cd/m^2. # convert relative aperture (f-number) to aperture value Av(A) units=[1;1] domain=[-2,) range=[0.5,) 2^(A/2); 2 log2(Av) # convert exposure time to time value Tv(t) units=[1;s] range=(0,) 2^(-t) s; log2(s / Tv) # convert logarithmic speed Sv in ASA PH2.5-1960 to ASA/ISO arithmetic speed; # make arithmetic speed dimensionless # 'Sv' conflicts with the symbol for sievert; you can uncomment this function # definition if you don't need that symbol #Sv(S) units=[1;1] range=(0,) 2^S / (N_speed/lx s); log2((N_speed/lx s) Sv) Sval(S) units=[1;1] range=(0,) 2^S / (N_speed/lx s); log2((N_speed/lx s) Sval) # convert luminance value Bv in ASA PH2.12-1961 to luminance Bv(x) units=[1;cd/m^2] range=(0,) \ 2^x K_lum N_speed ; log2(Bv / (K_lum N_speed)) # convert illuminance value Iv in ASA PH2.12-1961 to illuminance Iv(x) units=[1;lx] range=(0,) \ 2^x C_illum N_speed ; log2(Iv / (C_illum N_speed)) # convert ASA/ISO arithmetic speed Sx to ASA logarithmic speed in # ASA PH2.5-1960; make arithmetic speed dimensionless Sx(S) units=[1;1] domain=(0,) \ log2((N_speed/lx s) S); 2^Sx / (N_speed/lx s) # convert DIN speed/ISO logarithmic speed in ISO 6:1993 to arithmetic speed # for convenience, speed is treated here as if it were dimensionless Sdeg(S) units=[1;1] range=(0,) 10^((S - 1) / 10) ; (1 + 10 log(Sdeg)) Sdin() Sdeg # Numerical Aperture and f-Number of a Lens # # The numerical aperture (NA) is given by # # NA = n sin(theta) # # where n is the index of refraction of the medium and theta is half # of the angle subtended by the aperture stop from a point in the image # or object plane. For a lens in air, n = 1, and # # NA = 0.5 / f-number # # convert NA to f-number numericalaperture(x) units=[1;1] domain=(0,1] range=[0.5,) \ 0.5 / x ; 0.5 / numericalaperture NA() numericalaperture # # convert f-number to itself; restrict values to those possible fnumber(x) units=[1;1] domain=[0.5,) range=[0.5,) x ; fnumber # Referenced Photographic Standards # # ASA PH-2.5-1960. USA Standard, Method for Determining (Monochrome, # Continuous-Tone) Speed of Photographic Negative Materials. # ASA PH2.12-1961. American Standard, General-Purpose Photographic # Exposure Meters (photoelectric type). # ANSI PH3.49-1971. American National Standard for general-purpose # photographic exposure meters (photoelectric type). # ANSI PH2.7-1973. American National Standard Photographic Exposure Guide. # ANSI PH2.7-1986. American National Standard for Photography -- # Photographic Exposure Guide. # CIPA DC-008-2010. Exchangeable image file format for digital still # cameras: Exif Version 2.3 # ISO 6:1993. International Standard, Photography -- Black-and-white # pictorial still camera negative film/process systems -- # Determination of ISO Speed. # # Astronomical time measurements # # Astronomical time measurement is a complicated matter. The length of the # true day at a given place can be 21 seconds less than 24 hours or 30 seconds # over 24 hours. The two main reasons for this are the varying speed of the # earth in its elliptical orbit and the fact that the sun moves on the ecliptic # instead of along the celestial equator. To devise a workable system for time # measurement, Simon Newcomb (1835-1909) used a fictitious "mean sun". # Consider a first fictitious sun traveling along the ecliptic at a constant # speed and coinciding with the true sun at perigee and apogee. Then # considering a second fictitious sun traveling along the celestial equator at # a constant speed and coinciding with the first fictitious sun at the # equinoxes. The second fictitious sun is the "mean sun". From this equations # can be written out to determine the length of the mean day, and the tropical # year. The length of the second was determined based on the tropical year # from such a calculation and was officially used from 1960-1967 until atomic # clocks replaced astronomical measurements for a standard of time. All of the # values below give the mean time for the specified interval. # # See "Mathematical Astronomy Morsels" by Jean Meeus for more details # and a description of how to compute the correction to mean time. # TIME second anomalisticyear 365.2596 days # The time between successive # perihelion passages of the # earth. siderealyear 365.256360417 day # The time for the earth to make # one revolution around the sun # relative to the stars. tropicalyear 365.242198781 day # The time needed for the mean sun # as defined above to increase # its longitude by 360 degrees. # Most references defined the # tropical year as the interval # between vernal equinoxes, but # this is misleading. The length # of the season changes over time # because of the eccentricity of # the earth's orbit. The time # between vernal equinoxes is # approximately 365.24237 days # around the year 2000. See # "Mathematical Astronomy # Morsels" for more details. eclipseyear 346.62 days # The line of nodes is the # intersection of the plane of # Earth's orbit around the sun # with the plane of the moon's # orbit around earth. Eclipses # can only occur when the moon # and sun are close to this # line. The line rotates and # appearances of the sun on the # line of nodes occur every # eclipse year. saros 223 synodicmonth # The earth, moon and sun appear in # the same arrangement every # saros, so if an eclipse occurs, # then one saros later, a similar # eclipse will occur. (The saros # is close to 19 eclipse years.) # The eclipse will occur about # 120 degrees west of the # preceding one because the # saros is not an even number of # days. After 3 saros, an # eclipse will occur at # approximately the same place. siderealday 86164.09054 s # The sidereal day is the interval siderealhour 1|24 siderealday # between two successive transits siderealminute 1|60 siderealhour # of a star over the meridian, siderealsecond 1|60 siderealminute # or the time required for the # earth to make one rotation # relative to the stars. The # more usual solar day is the # time required to make a # rotation relative to the sun. # Because the earth moves in its # orbit, it has to turn a bit # extra to face the sun again, # hence the solar day is slightly # longer. anomalisticmonth 27.55454977 day # Time for the moon to travel from # perigee to perigee nodicalmonth 27.2122199 day # The nodes are the points where draconicmonth nodicalmonth # an orbit crosses the ecliptic. draconiticmonth nodicalmonth # This is the time required to # travel from the ascending node # to the next ascending node. siderealmonth 27.321661 day # Time required for the moon to # orbit the earth lunarmonth 29 days + 12 hours + 44 minutes + 2.8 seconds # Mean time between full moons. synodicmonth lunarmonth # Full moons occur when the sun lunation synodicmonth # and moon are on opposite sides lune 1|30 lunation # of the earth. Since the earth lunour 1|24 lune # moves around the sun, the moon # has to revolve a bit extra to # get into the full moon # configuration. year tropicalyear yr year month 1|12 year mo month lustrum 5 years # The Lustrum was a Roman # purification ceremony that took # place every five years. # Classically educated Englishmen # used this term. decade 10 years century 100 years millennium 1000 years millennia millennium solaryear year lunaryear 12 lunarmonth calendaryear 365 day commonyear 365 day leapyear 366 day julianyear 365.25 day gregorianyear 365.2425 day islamicyear 354 day # A year of 12 lunar months. They islamicleapyear 355 day # began counting on July 16, AD 622 # when Muhammad emigrated to Medina # (the year of the Hegira). They need # 11 leap days in 30 years to stay in # sync with the lunar year which is a # bit longer than the 29.5 days of the # average month. The months do not # keep to the same seasons, but # regress through the seasons every # 32.5 years. islamicmonth 1|12 islamicyear # They have 29 day and 30 day months. # The Hebrew year is also based on lunar months, but synchronized to the solar # calendar. The months vary irregularly between 29 and 30 days in length, and # the years likewise vary. The regular year is 353, 354, or 355 days long. To # keep up with the solar calendar, a leap month of 30 days is inserted every # 3rd, 6th, 8th, 11th, 14th, 17th, and 19th years of a 19 year cycle. This # gives leap years that last 383, 384, or 385 days. # Sidereal days mercuryday 58.6462 day venusday 243.01 day # retrograde earthday siderealday marsday 1.02595675 day jupiterday 0.41354 day saturnday 0.4375 day uranusday 0.65 day # retrograde neptuneday 0.768 day plutoday 6.3867 day # Sidereal years from http://ssd.jpl.nasa.gov/phys_props_planets.html. Data # was updated in May 2001 based on the 1992 Explanatory Supplement to the # Astronomical Almanac and the mean longitude rates. Apparently the table of # years in that reference is incorrect. mercuryyear 0.2408467 julianyear venusyear 0.61519726 julianyear earthyear siderealyear marsyear 1.8808476 julianyear jupiteryear 11.862615 julianyear saturnyear 29.447498 julianyear uranusyear 84.016846 julianyear neptuneyear 164.79132 julianyear plutoyear 247.92065 julianyear # Objects on the earth are charted relative to a perfect ellipsoid whose # dimensions are specified by different organizations. The ellipsoid is # specified by an equatorial radius and a flattening value which defines the # polar radius. These values are the 1996 values given by the International # Earth Rotation Service (IERS) whose reference documents can be found at # http://maia.usno.navy.mil/ earthflattening 1|298.25642 earthradius_equatorial 6378136.49 m earthradius_polar (-earthflattening+1) earthradius_equatorial landarea 148.847e6 km^2 oceanarea 361.254e6 km^2 moonradius 1738 km # mean value sunradius 6.96e8 m # Many astronomical values can be measured most accurately in a system of units # using the astronomical unit and the mass of the sun as base units. The # uncertainty in the gravitational constant makes conversion to SI units # significantly less accurate. # The astronomical unit was defined to be the length of the of the semimajor # axis of a massless object with the same year as the earth. With such a # definition in force, and with the mass of the sun set equal to one, Kepler's # third law can be used to solve for the value of the gravitational constant. # Kepler's third law says that (2 pi / T)^2 a^3 = G M where T is the orbital # period, a is the size of the semimajor axis, G is the gravitational constant # and M is the mass. With M = 1 and T and a chosen for the earth's orbit, we # find sqrt(G) = (2 pi / T) sqrt(AU^3). This constant is called the Gaussian # gravitational constant, apparently because Gauss originally did the # calculations. However, when the original calculation was done, the value # for the length of the earth's year was inaccurate. The value used is called # the Gaussian year. Changing the astronomical unit to bring it into # agreement with more accurate values for the year would have invalidated a # lot of previous work, so instead the astronomical unit has been kept equal # to this original value. This is accomplished by using a standard value for # the Gaussian gravitational constant. This constant is called k. # Many values below are from http://ssd.jpl.nasa.gov/?constants gauss_k 0.01720209895 # This beast has dimensions of # au^(3|2) / day and is exact. gaussianyear (2 pi / gauss_k) days # Year that corresponds to the Gaussian # gravitational constant. This is a # fictional year, and doesn't # correspond to any celestial event. astronomicalunit 149597870700 m # IAU definition from 2012, exact au astronomicalunit # ephemeris for the above described # astronomical unit. (See the NASA # site listed above.) GMsun 1.32712440018e20 m^3 / s^2 # heliocentric gravitational constant solarmass GMsun/G # with uncertainty 8e9 is known more sunmass solarmass # accurately than G. sundist 1.0000010178 au # mean earth-sun distance moondist 3.844e8 m # mean earth-moon distance sundist_near 1.471e11 m # earth-sun distance at perihelion sundist_far 1.521e11 m # earth-sun distance at aphelion moondist_min 3.564e8 m # approximate least distance at # perigee 1901-2300 moondist_max 4.067e8 m # approximate greatest distance at # apogee 1901-2300 # The following are masses for planetary systems, not just the planet itself. # The comments give the uncertainty in the denominators. As noted above, # masses are given relative to the solarmass because this is more accurate. # The conversion to SI is uncertain because of uncertainty in G, the # gravitational constant. # # Values are from http://ssd.jpl.nasa.gov/astro_constants.html mercurymass solarmass / 6023600 # 250 venusmass solarmass / 408523.71 # 0.06 earthmoonmass solarmass / 328900.56 # 0.02 marsmass solarmass / 3098708 # 9 jupitermass solarmass / 1047.3486 # 0.0008 saturnmass solarmass / 3497.898 # 0.018 uranusmass solarmass / 22902.98 # 0.03 neptunemass solarmass / 19412.24 # 0.04 plutomass solarmass / 1.35e8 # 0.07e8 moonearthmassratio 0.012300034 # uncertainty 3e-9 earthmass earthmoonmass / ( 1 + moonearthmassratio) moonmass moonearthmassratio earthmass # These are the old values for the planetary masses. They may give # the masses of the planets alone. oldmercurymass 0.33022e24 kg oldvenusmass 4.8690e24 kg oldmarsmass 0.64191e24 kg oldjupitermass 1898.8e24 kg oldsaturnmass 568.5e24 kg olduranusmass 86.625e24 kg oldneptunemass 102.78e24 kg oldplutomass 0.015e24 kg # Mean radius from http://ssd.jpl.nsaa.gov/phys_props_planets.html which in # turn cites Global Earth Physics by CF Yoder, 1995. mercuryradius 2440 km venusradius 6051.84 km earthradius 6371.01 km marsradius 3389.92 km jupiterradius 69911 km saturnradius 58232 km uranusradius 25362 km neptuneradius 24624 km plutoradius 1151 km moongravity 1.62 m/s^2 # The Hubble constant gives the speed at which distance galaxies are moving # away from the earth according to v = H0*d, where H0 is the hubble constant # and d is the distance to the galaxy. hubble 70 km/s/Mpc # approximate H0 hubble # Parallax is the angular difference between the topocentric (on Earth's # surface) and geocentric (at Earth's center) direction toward a celestial body # when the body is at a given altitude. When the body is on the horizon, the # parallax is the horizontal parallax; when the body is on the horizon and the # observer is on the equator, the parallax is the equatorial horizontal # parallax. When the body is at zenith, the parallax is zero. lunarparallax asin(earthradius_equatorial / moondist) # Moon equatorial moonhp lunarparallax # horizontal parallax # at mean distance # Light from celestial objects is attenuated by passage through Earth's # atmosphere. A body near the horizon passes through much more air than an # object at zenith, and is consequently less bright. Air mass is the ratio of # the length of the optical path at a given altitude (angle above the horizon) # to the length at zenith. Air mass at zenith is by definition unity; at the # horizon, air mass is approximately 38, though the latter value can vary # considerably with atmospheric conditions. The general formula is # E = E0 # exp(-c X), where E0 is the value outside Earth's atmosphere, E is the value # seen by an observer, X is the air mass and c is the extinction coefficient. # A common value for c in reasonably clear air is 0.21, but values can be # considerably greater in urban areas. Apparent altitude is that perceived by # an observer; it includes the effect of atmospheric refraction. There is no # shortage of formulas for air mass # (https://en.wikipedia.org/wiki/Air_mass_(astronomy)); all are subject to # variations in local atmospheric conditions. The formula used here is simple # and is in good agreement with rigorously calculated values under standard # conditions. # # Extraterrestrial illuminance or luminance of an object at a given altitude # determined with vmag() or SB_xxx() below can be multiplied by # atm_transmission() or atm_transmissionz() to estimate the terrestrial value. # # Kasten and Young (1989) air mass formula. alt is apparent altitude # Reference: # Kasten, F., and A.T. Young. 1989. "Revised Optical Air Mass Tables # and Approximation Formula." Applied Optics. Vol. 28, 4735–4738. # Bibcode:1989ApOpt..28.4735K. doi:10.1364/AO.28.004735. airmass(alt) units=[degree;1] domain=[0,90] noerror \ 1 / (sin(alt) + 0.50572 (alt / degree + 6.07995)^-1.6364) # zenith is apparent zenith angle (zenith = 90 deg - alt) airmassz(zenith) units=[degree;1] domain=[0,90] noerror \ 1 / (cos(zenith) + 0.50572 (96.07995 - zenith / degree)^-1.6364) # For reasonably clear air at sea level; values may need adjustment for # elevation and local atmospheric conditions # for scotopic vision (510 nm), appropriate for the dark-adapted eye # extinction_coeff 0.26 # for photopic vision, appropriate for observing brighter objects such # as the full moon extinction_coeff 0.21 atm_transmission(alt) units=[degree;1] domain=[0,90] noerror \ exp(-extinction_coeff airmass(alt)) # in terms of zenith angle (zenith = 90 deg - alt) atm_transmissionz(zenith) units=[degree;1] domain=[0,90] noerror \ exp(-extinction_coeff airmassz(zenith)) # Moon and Sun data at mean distances moonvmag -12.74 # Moon apparent visual magnitude at mean distance sunvmag -26.74 # Sun apparent visual magnitude at mean distance moonsd asin(moonradius / moondist) # Moon angular semidiameter at mean distance sunsd asin(sunradius / sundist) # Sun angular semidiameter at mean distance # Visual magnitude of star or other celestial object. The system of stellar # magnitudes, developed in ancient Greece, assigned magnitudes from 1 # (brightest) to 6 (faintest visible to the naked eye). In 1856, British # astronomer Norman Pogson made the system precise, with a magnitude 1 object # 100 times as bright as a magnitude 6 object, and each magnitude differing # from the next by a constant ratio; the ratio, sometimes known as Pogson's # ratio, is thus 100^0.2, or approximately 2.5119. The logarithm of 100^0.2 is # 0.4, hence the common use of powers of 10 and base-10 logarithms. # # Reference: # Allen, C.W. 1976. Astrophysical Quantities, 3rd ed. 1973, reprinted # with corrections, 1976. London: Athlone. # # The function argument is the (dimensionless) visual magnitude; reference # illuminance of 2.54e-6 lx is from Allen (2000, 21), and is for outside # Earth's atmosphere. Illuminance values can be adjusted to terrestrial values # by multiplying by one of the atm_transmission functions above. # Illuminance from apparent visual magnitude vmag(mag) units=[1;lx] domain=[,] range=(0,] \ 2.54e-6 lx 10^(-0.4 mag); -2.5 log(vmag / (2.54e-6 lx)) # Surface brightness of a celestial object of a given visual magnitude # is a logarithmic measure of the luminance the object would have if its # light were emitted by an object of specified solid angle; it is # expressed in magnitudes per solid angle. Surface brightness can be # obtained from the visual magnitude by # S = m + 2.5 log(pi pi k a b), # where k is the phase (fraction illuminated), a is the equatorial # radius, and b is the polar radius. For 100% illumination (e.g., full # moon), this is often simplified to # S = m + 2.5 log(pi k s^2), # where s is the object's angular semidiameter; the units of s determine # the units of solid angle. The visual magnitude and semidiameter must # be appropriate for the object's distance; for other than 100% # illumination, the visual magnitude must be appropriate for the phase. # Luminance values are for outside Earth's atmosphere; they can be # adjusted to terrestrial values by multiplying by one of the atm_transmission # functions above. # luminance from surface brightness in magnitudes per square degree SB_degree(sb) units=[1;cd/m^2] domain=[,] range=(0,] \ vmag(sb) / squaredegree ; \ ~vmag(SB_degree squaredegree) # luminance from surface brightness in magnitudes per square minute SB_minute(sb) units=[1;cd/m^2] domain=[,] range=(0,] \ vmag(sb) / squareminute ; \ ~vmag(SB_minute squareminute) # luminance from surface brightness in magnitudes per square second SB_second(sb) units=[1;cd/m^2] domain=[,] range=(0,] \ vmag(sb) / squaresecond ; \ ~vmag(SB_second squaresecond) # luminance from surface brightness in magnitudes per steradian SB_sr(sb) units=[1;cd/m^2] domain=[,] range=(0,] \ vmag(sb) / sr ; \ ~vmag(SB_sr sr) SB() SB_second SB_sec() SB_second SB_min() SB_minute SB_deg() SB_degree # The brightness of one tenth-magnitude star per square degree outside # Earth's atmosphere; often used for night sky brightness. S10 SB_degree(10) # Examples for magnitude and surface brightness functions # Sun illuminance from visual magnitude # You have: sunvmag # You want: # Definition: -26.74 = -26.74 # You have: vmag(sunvmag) # You want: lx # * 126134.45 # / 7.9280482e-06 # # Moon surface brightness from visual magnitude and semidiameter at 100% # illumination (full moon): # You have: moonvmag # You want: # Definition: -12.74 = -12.74 # You have: moonsd # You want: arcsec # * 932.59484 # / 0.001072277 # You have: moonvmag + 2.5 log(pi 932.59484^2) # You want: # Definition: 3.3513397 # # Similar example with specific data obtained from another source (JPL # Horizons, https://ssd.jpl.nasa.gov/horizons.cgi); semidiameter is in # arcseconds # # You have: -12.9 + 2.5 log(pi 2023.201|2^2) # You want: # Definition: 3.3679199 # You have: SB_second(-12.9 + 2.5 log(pi 2023.201|2^2)) # You want: # Definition: 4858.6547 cd / m^2 # # If surface brightness is provided by another source (e.g., Horizons), # it can simply be used directly: # You have: SB_second(3.3679199) # You want: cd/m^2 # * 4858.6546 # / 0.0002058183 # The illuminance and luminance values are extraterrestrial (outside # Earth's atmosphere). The values at Earth's surface are less than these # because of atmospheric extinction. For example, in the last example # above, if the Moon were at an altitude of 55 degrees, the terrestrial # luminance could be calculated with # You have: SB_second(3.3679199) # You want: cd/m^2 # * 4858.6546 # / 0.0002058183 # You have: _ atm_transmission(55 deg) # You want: cd/m^2 # * 3760.6356 # / 0.0002659125 # If desired, photographic exposure can be determined with EV100(), # leading to acceptable combinations of aperture and exposure time. # For the example above, but with the Moon at 10 degrees, # You have: SB_second(3.3679199) atm_transmission(10 deg) # You want: EV100 # 13.553962 # The Hartree system of atomic units, derived from fundamental units # of mass (of electron), action (Planck's constant), charge, and # the Coulomb constant. # The Hartree energy can be derived from m_e, e, hbar, and coulombconst by # hartree = coulombconst^2 m_e e^4 / hbar^2 # but due to correlations between the measurements for m_e and coulombconst # this results in a significant loss of precision. So we use an alternate # equivalent definition for the hartree and derive then use energy instead # of the Coulomb constant to derive the other units. This method retains the # precision. hartree 2 rydberg # Approximate electric potential energy of # the hydrogen atom in its ground state, # and approximately twice its ionization # energy. # Fundamental units atomicmass electronmass atomiccharge e atomicaction hbar atomicenergy hartree # Derived units atomicvelocity sqrt(atomicenergy / atomicmass) atomictime atomicaction / atomicenergy atomiclength atomicvelocity atomictime atomicforce atomicenergy / atomiclength atomicmomentum atomicenergy / atomicvelocity atomiccurrent atomiccharge / atomictime atomicpotential atomicenergy / atomiccharge # electrical potential atomicEfield atomicpotential / atomiclength # # These thermal units treat entropy as charge, from [5] # thermalcoulomb J/K # entropy thermalampere W/K # entropy flow thermalfarad J/K^2 thermalohm K^2/W # thermal resistance fourier thermalohm thermalhenry J K^2/W^2 # thermal inductance thermalvolt K # thermal potential difference # # United States units # # linear measure # The US Metric Law of 1866 legalized the metric system in the USA and # defined the meter in terms of the British system with the exact # 1 meter = 39.37 inches. On April 5, 1893 Thomas Corwin Mendenhall, # Superintendent of Weights and Measures, decided, in what has become # known as the "Mendenhall Order" that the meter and kilogram would be the # fundamental standards in the USA. The definition from 1866 was turned # around to give an exact definition of the yard as 3600|3937 meters This # definition was used until July of 1959 when the definition was changed # to bring the US and other English-speaking countries into agreement; the # Canadian value of 1 yard = 0.9144 meter (exactly) was chosen because it # was approximately halfway between the British and US values; it had the # added advantage of making 1 inch = 25.4 mm (exactly). Since 1959, the # "international" foot has been exactly 0.3048 meters. At the same time, # it was decided that any data expressed in feet derived from geodetic # surveys within the US would continue to use the old definition and call # the old unit the "survey foot." The US continues to define the statute # mile, furlong, chain, rod, link, and fathom in terms of the US survey # foot. # Sources: # NIST Special Publication 447, Sects. 5, 7, and 8. # NIST Handbook 44, 2011 ed., Appendix C. # Canadian Journal of Physics, 1959, 37:(1) 84, 10.1139/p59-014. US 1200|3937 m/ft # These four values will convert US- US # international measures to survey- US # US Survey measures geodetic- US int 3937|1200 ft/m # Convert US Survey measures to int- int # international measures inch 2.54 cm in inch foot 12 inch feet foot ft foot yard 3 ft yd yard mile 5280 ft # The mile was enlarged from 5000 ft # to this number in order to make # it an even number of furlongs. # (The Roman mile is 5000 romanfeet.) line 1|12 inch # Also defined as '.1 in' or as '1e-8 Wb' rod 5.5 yard perch rod furlong 40 rod # From "furrow long" statutemile mile league 3 mile # Intended to be an an hour's walk # surveyor's measure surveyorschain 66 surveyft surveychain surveyorschain surveyorspole 1|4 surveyorschain surveyorslink 1|100 surveyorschain chain 66 ft link 1|100 chain ch chain USacre 10 surveychain^2 intacre 10 chain^2 # Acre based on international ft intacrefoot acre foot USacrefoot USacre surveyfoot acrefoot intacrefoot acre intacre section mile^2 township 36 section homestead 160 acre # Area of land granted by the 1862 Homestead # Act of the United States Congress gunterschain surveyorschain engineerschain 100 ft engineerslink 1|100 engineerschain ramsdenschain engineerschain ramsdenslink engineerslink gurleychain 33 feet # Andrew Ellicott chain is the gurleylink 1|50 gurleychain # same length wingchain 66 feet # Chain from 1664, introduced by winglink 1|80 wingchain # Vincent Wing, also found in a # 33 foot length with 40 links. # early US length standards # The US has had four standards for the yard: one by Troughton of London # (1815); bronze yard #11 (1856); the Mendhall yard (1893), consistent # with the definition of the meter in the metric joint resolution of # Congress in 1866, but defining the yard in terms of the meter; and the # international yard (1959), which standardized definitions for Australia, # Canada, New Zealand, South Africa, the UK, and the US. # Sources: Pat Naughtin (2009), Which Inch?, www.metricationmatters.com; # Lewis E. Barbrow and Lewis V. Judson (1976). NBS Special Publication # 447, Weights and Measures Standards of the United States: A Brief # History. troughtonyard 914.42190 mm bronzeyard11 914.39980 mm mendenhallyard surveyyard internationalyard yard # nautical measure fathom 6 ft # Originally defined as the distance from # fingertip to fingertip with arms fully # extended. nauticalmile 1852 m # Supposed to be one minute of latitude at # the equator. That value is about 1855 m. # Early estimates of the earth's circumference # were a bit off. The value of 1852 m was # made the international standard in 1929. # The US did not accept this value until # 1954. The UK switched in 1970. cable 1|10 nauticalmile intcable cable # international cable cablelength cable UScable 100 USfathom navycablelength 720 USft # used for depth in water marineleague 3 nauticalmile geographicalmile brnauticalmile knot nauticalmile / hr click km # US military slang klick click # Avoirdupois weight pound 0.45359237 kg # The one normally used lb pound # From the latin libra grain 1|7000 pound # The grain is the same in all three # weight systems. It was originally # defined as the weight of a barley # corn taken from the middle of the # ear. ounce 1|16 pound oz ounce dram 1|16 ounce dr dram ushundredweight 100 pounds cwt hundredweight shorthundredweight ushundredweight uston shortton shortton 2000 lb quarterweight 1|4 uston shortquarterweight 1|4 shortton shortquarter shortquarterweight # Troy Weight. In 1828 the troy pound was made the first United States # standard weight. It was to be used to regulate coinage. troypound 5760 grain troyounce 1|12 troypound ozt troyounce pennyweight 1|20 troyounce # Abbreviated "d" in reference to a dwt pennyweight # Frankish coin called the "denier" # minted in the late 700's. There # were 240 deniers to the pound. assayton mg ton / troyounce # mg / assayton = troyounce / ton usassayton mg uston / troyounce brassayton mg brton / troyounce fineounce troyounce # A troy ounce of 99.5% pure gold # Some other jewelers units metriccarat 0.2 gram # Defined in 1907 metricgrain 50 mg carat metriccarat ct carat jewelerspoint 1|100 carat silversmithpoint 1|4000 inch momme 3.75 grams # Traditional Japanese unit based # on the chinese mace. It is used for # pearls in modern times and also for # silk density. The definition here # was adopted in 1891. # Apothecaries' weight appound troypound apounce troyounce apdram 1|8 apounce apscruple 1|3 apdram # Liquid measure usgallon 231 in^3 # US liquid measure is derived from gal gallon # the British wine gallon of 1707. quart 1|4 gallon # See the "winegallon" entry below pint 1|2 quart # more historical information. gill 1|4 pint usquart 1|4 usgallon uspint 1|2 usquart usgill 1|4 uspint usfluidounce 1|16 uspint fluiddram 1|8 usfloz minimvolume 1|60 fluiddram qt quart pt pint floz fluidounce usfloz usfluidounce fldr fluiddram liquidbarrel 31.5 usgallon usbeerbarrel 2 beerkegs beerkeg 15.5 usgallon # Various among brewers ponykeg 1|2 beerkeg winekeg 12 usgallon petroleumbarrel 42 usgallon # Originated in Pennsylvania oil barrel petroleumbarrel # fields, from the winetierce bbl barrel ushogshead 2 liquidbarrel usfirkin 9 usgallon # Dry measures: The Winchester Bushel was defined by William III in 1702 and # legally adopted in the US in 1836. usbushel 2150.42 in^3 # Volume of 8 inch cylinder with 18.5 bu bushel # inch diameter (rounded) peck 1|4 bushel uspeck 1|4 usbushel brpeck 1|4 brbushel pk peck drygallon 1|2 uspeck dryquart 1|4 drygallon drypint 1|2 dryquart drybarrel 7056 in^3 # Used in US for fruits, vegetables, # and other dry commodities except for # cranberries. cranberrybarrel 5826 in^3 # US cranberry barrel heapedbushel 1.278 usbushel# The following explanation for this # value was provided by Wendy Krieger # based on # guesswork. The cylindrical vessel is # 18.5 inches in diameter and 1|2 inch # thick. A heaped bushel includes the # contents of this cylinder plus a heap # on top. The heap is a cone 19.5 # inches in diameter and 6 inches # high. With these values, the volume # of the bushel is 684.5 pi in^3 and # the heap occupies 190.125 pi in^3. # Therefore, the heaped bushel is # 874.625|684.5 bushels. This value is # approximately 1.2777575 and it rounds # to the value listed for the size of # the heaped bushel. Sometimes the # heaped bushel is reported as 1.25 # bushels. This same explanation gives # that value if the heap is taken to # have an 18.5 inch diameter. # Grain measures. The bushel as it is used by farmers in the USA is actually # a measure of mass which varies for different commodities. Canada uses the # same bushel masses for most commodities, but not for oats. wheatbushel 60 lb soybeanbushel 60 lb cornbushel 56 lb ryebushel 56 lb barleybushel 48 lb oatbushel 32 lb ricebushel 45 lb canada_oatbushel 34 lb # Wine and Spirits measure ponyvolume 1 usfloz jigger 1.5 usfloz # Can vary between 1 and 2 usfloz shot jigger # Sometimes 1 usfloz eushot 25 ml # EU standard spirits measure fifth 1|5 usgallon winebottle 750 ml # US industry standard, 1979 winesplit 1|4 winebottle magnum 1.5 liter # Standardized in 1979, but given # as 2 qt in some references metrictenth 375 ml metricfifth 750 ml metricquart 1 liter # Old British bottle size reputedquart 1|6 brgallon reputedpint 1|2 reputedquart brwinebottle reputedquart # Very close to 1|5 winegallon # French champagne bottle sizes split 200 ml jeroboam 2 magnum rehoboam 3 magnum methuselah 4 magnum imperialbottle 4 magnum salmanazar 6 magnum balthazar 8 magnum nebuchadnezzar 10 magnum solomon 12 magnum melchior 12 magnum sovereign 17.5 magnum primat 18 magnum goliath 18 magnum melchizedek 20 magnum midas 20 magnum # The wine glass doesn't seem to have an official standard, but the same value # is suggested by several organization. # https://www.rethinkingdrinking.niaaa.nih.gov/ # http://www.rethinkyourdrinking.ca/what-is-a-standard-drink/ # https://www.drinkaware.co.uk/ # https://www.gov.uk/government/uploads/system/uploads/attachment_data/file/545937/UK_CMOs__report.pdf # http://www.alcohol.gov.au/internet/alcohol/publishing.nsf/content/drinksguide-cnt wineglass 150 mL # the size of a "typical" serving # A unit of alcohol is a specified mass of pure ethyl alcohol. # The term is used officially in the UK, but other countries use the same # concept but with different values. For example, the UK value of 8 g is # nominally the amount of alcohol that a typical adult can metabolize in # one hour. Values for several countries, converted to a volumetric basis: alcoholunitus 14 g / ethanoldensity alcoholunitca 13.6 g / ethanoldensity alcoholunituk 8 g / ethanoldensity alcoholunitau 10 g / ethanoldensity # Example: for 12% ABV (alcohol by volume) # alcoholunitus / 12% = 147.8 mL, close to the “standard†serving of 150 mL. # Coffee # # The recommended ratio of coffee to water. Values vary considerably; # one is from the Specialty Coffee Association of America # http://scaa.org/?page=resources&d=brewing-best-practices coffeeratio 55 g/L # ± 10% # other recommendations are more loose, e.g., # http://www.ncausa.org/About-Coffee/How-to-Brew-Coffee # # Water is "hard" if it contains various minerals, expecially calcium # carbonate. # clarkdegree grains/brgallon # Content by weigh of calcium carbonate gpg grains/usgallon # Divide by water's density to convert to # a dimensionless concentration measure # # Shoe measures # shoeiron 1|48 inch # Used to measure leather in soles shoeounce 1|64 inch # Used to measure non-sole shoe leather # USA shoe sizes. These express the length of the shoe or the length # of the "last", the form that the shoe is made on. But note that # this only captures the length. It appears that widths change 1/4 # inch for each letter within the same size, and if you change the # length by half a size then the width changes between 1/8 inch and # 1/4 inch. But this may not be standard. If you know better, please # contact me. shoesize_delta 1|3 inch # USA shoe sizes differ by this amount shoe_men0 8.25 inch shoe_women0 (7+11|12) inch shoe_boys0 (3+11|12) inch shoe_girls0 (3+7|12) inch shoesize_men(n) units=[1;inch] shoe_men0 + n shoesize_delta ; \ (shoesize_men+(-shoe_men0))/shoesize_delta shoesize_women(n) units=[1;inch] shoe_women0 + n shoesize_delta ; \ (shoesize_women+(-shoe_women0))/shoesize_delta shoesize_boys(n) units=[1;inch] shoe_boys0 + n shoesize_delta ; \ (shoesize_boys+(-shoe_boys0))/shoesize_delta shoesize_girls(n) units=[1;inch] shoe_girls0 + n shoesize_delta ; \ (shoesize_girls+(-shoe_girls0))/shoesize_delta # European shoe size. According to # http://www.shoeline.com/footnotes/shoeterm.shtml # shoe sizes in Europe are measured with Paris points which simply measure # the length of the shoe. europeshoesize 2|3 cm # # USA slang units # buck US$ fin 5 US$ sawbuck 10 US$ usgrand 1000 US$ greenback US$ key kg # usually of marijuana, 60's lid 1 oz # Another 60's weed unit footballfield usfootballfield usfootballfield 100 yards canadafootballfield 110 yards # And 65 yards wide marathon 26 miles + 385 yards # # British # # The length measure in the UK was defined by a bronze bar manufactured in # 1844. Various conversions were sanctioned for convenience at different # times, which makes conversions before 1963 a confusing matter. Apparently # previous conversions were never explicitly revoked. Four different # conversion factors appear below. Multiply them times an imperial length # units as desired. The Weights and Measures Act of 1963 switched the UK away # from their bronze standard and onto a definition of the yard in terms of the # meter. This happened after an international agreement in 1959 to align the # world's measurement systems. UK UKlength_SJJ UK- UK british- UK UKlength_B 0.9143992 meter / yard # Benoit found the yard to be # 0.9143992 m at a weights and # measures conference around # 1896. Legally sanctioned # in 1898. UKlength_SJJ 0.91439841 meter / yard # In 1922, Seers, Jolly and # Johnson found the yard to be # 0.91439841 meters. # Used starting in the 1930's. UKlength_K meter / 39.37079 inch # In 1816 Kater found this ratio # for the meter and inch. This # value was used as the legal # conversion ratio when the # metric system was legalized # for contract in 1864. UKlength_C meter / 1.09362311 yard # In 1866 Clarke found the meter # to be 1.09362311 yards. This # conversion was legalized # around 1878. brnauticalmile 6080 ft # Used until 1970 when the UK brknot brnauticalmile / hr # switched to the international brcable 1|10 brnauticalmile # nautical mile. admiraltymile brnauticalmile admiraltyknot brknot admiraltycable brcable seamile 6000 ft shackle 15 fathoms # Adopted 1949 by British navy # British Imperial weight is mostly the same as US weight. A few extra # units are added here. clove 7 lb stone 14 lb tod 28 lb brquarterweight 1|4 brhundredweight brhundredweight 8 stone longhundredweight brhundredweight longton 20 brhundredweight brton longton # British Imperial volume measures brminim 1|60 brdram brscruple 1|3 brdram fluidscruple brscruple brdram 1|8 brfloz brfluidounce 1|20 brpint brfloz brfluidounce brgill 1|4 brpint brpint 1|2 brquart brquart 1|4 brgallon brgallon 4.54609 l # The British Imperial gallon was # defined in 1824 to be the volume of # water which weighed 10 pounds at 62 # deg F with a pressure of 30 inHg. # It was also defined as 277.274 in^3, # Which is slightly in error. In # 1963 it was defined to be the volume # occupied by 10 pounds of distilled # water of density 0.998859 g/ml weighed # in air of density 0.001217 g/ml # against weights of density 8.136 g/ml. # This gives a value of approximately # 4.5459645 liters, but the old liter # was in force at this time. In 1976 # the definition was changed to exactly # 4.54609 liters using the new # definition of the liter (1 dm^3). brbarrel 36 brgallon # Used for beer brbushel 8 brgallon brheapedbushel 1.278 brbushel brquarter 8 brbushel brchaldron 36 brbushel # Obscure British volume measures. These units are generally traditional # measures whose definitions have fluctuated over the years. Often they # depended on the quantity being measured. They are given here in terms of # British Imperial measures. For example, the puncheon may have historically # been defined relative to the wine gallon or beer gallon or ale gallon # rather than the British Imperial gallon. bag 4 brbushel bucket 4 brgallon kilderkin 2 brfirkin last 40 brbushel noggin brgill pottle 0.5 brgallon pin 4.5 brgallon puncheon 72 brgallon seam 8 brbushel coomb 4 brbushel boll 6 brbushel firlot 1|4 boll brfirkin 9 brgallon # Used for ale and beer cran 37.5 brgallon # measures herring, about 750 fish brwinehogshead 52.5 brgallon # This value is approximately equal brhogshead brwinehogshead # to the old wine hogshead of 63 # wine gallons. This adjustment # is listed in the OED and in # "The Weights and Measures of # England" by R. D. Connor brbeerhogshead 54 brgallon brbeerbutt 2 brbeerhogshead registerton 100 ft^3 # Used for internal capacity of ships shippington 40 ft^3 # Used for ship's cargo freight or timber brshippington 42 ft^3 # freightton shippington # Both register ton and shipping ton derive # from the "tun cask" of wine. displacementton 35 ft^3 # Approximate volume of a longton weight of # sea water. Measures water displaced by # ships. waterton 224 brgallon strike 70.5 l # 16th century unit, sometimes # defined as .5, 2, or 4 bushels # depending on the location. It # probably doesn't make a lot of # sense to define in terms of imperial # bushels. Zupko gives a value of # 2 Winchester grain bushels or about # 70.5 liters. amber 4 brbushel# Used for dry and liquid capacity [18] # British volume measures with "imperial" imperialminim brminim imperialscruple brscruple imperialdram brdram imperialfluidounce brfluidounce imperialfloz brfloz imperialgill brgill imperialpint brpint imperialquart brquart imperialgallon brgallon imperialbarrel brbarrel imperialbushel brbushel imperialheapedbushel brheapedbushel imperialquarter brquarter imperialchaldron brchaldron imperialwinehogshead brwinehogshead imperialhogshead brhogshead imperialbeerhogshead brbeerhogshead imperialbeerbutt brbeerbutt imperialfirkin brfirkin # obscure British lengths barleycorn 1|3 UKinch # Given in Realm of Measure as the # difference between successive shoe sizes nail 1|16 UKyard # Originally the width of the thumbnail, # or 1|16 ft. This took on the general # meaning of 1|16 and settled on the # nail of a yard or 1|16 yards as its # final value. [12] pole 16.5 UKft # This was 15 Saxon feet, the Saxon rope 20 UKft # foot (aka northern foot) being longer englishell 45 UKinch flemishell 27 UKinch ell englishell # supposed to be measure from elbow to # fingertips span 9 UKinch # supposed to be distance from thumb # to pinky with full hand extension goad 4.5 UKft # used for cloth, possibly named after the # stick used for prodding animals. # misc obscure British units hide 120 acre # English unit of land area dating to the 7th # century, originally the amount of land # that a single plowman could cultivate, # which varied from 60-180 acres regionally. # Standardized at Normon conquest. virgate 1|4 hide nook 1|2 virgate rood furlong rod # Area of a strip a rod by a furlong englishcarat troyounce/151.5 # Originally intended to be 4 grain # but this value ended up being # used in the London diamond market mancus 2 oz mast 2.5 lb nailkeg 100 lbs basebox 31360 in^2 # Used in metal plating # alternate spellings gramme gram litre liter dioptre diopter aluminium aluminum sulphur sulfur # # Units derived the human body (may not be very accurate) # geometricpace 5 ft # distance between points where the same # foot hits the ground pace 2.5 ft # distance between points where alternate # feet touch the ground USmilitarypace 30 in # United States official military pace USdoubletimepace 36 in # United States official doubletime pace fingerbreadth 7|8 in # The finger is defined as either the width fingerlength 4.5 in # or length of the finger finger fingerbreadth palmwidth hand # The palm is a unit defined as either the width palmlength 8 in # or the length of the hand hand 4 inch # width of hand shaftment 6 inch # Distance from tip of outstretched thumb to the # opposite side of the palm of the hand. The # ending -ment is from the old English word # for hand. [18] smoot 5 ft + 7 in # Created as part of an MIT fraternity prank. # In 1958 Oliver Smoot was used to measure # the length of the Harvard Bridge, which was # marked off in Smoot lengths. These # markings have been maintained on the bridge # since then and repainted by subsequent # incoming fraternity members. During a # bridge renovation the new sidewalk was # scored every Smoot rather than at the # customary 6 ft spacing. # # Cooking measures # # Common abbreviations tbl tablespoon tbsp tablespoon tblsp tablespoon Tb tablespoon tsp teaspoon saltspoon 1|4 tsp # US measures uscup 8 usfloz ustablespoon 1|16 uscup usteaspoon 1|3 ustablespoon ustbl ustablespoon ustbsp ustablespoon ustblsp ustablespoon ustsp usteaspoon metriccup 250 ml stickbutter 1|4 lb # Butter in the USA is sold in one # pound packages that contain four # individually wrapped pieces. The # pieces are marked into tablespoons, # making it possible to measure out # butter by volume by slicing the # butter. legalcup 240 ml # The cup used on nutrition labeling legaltablespoon 1|16 legalcup legaltbsp legaltablespoon # Scoop size. Ice cream scoops in the US are marked with numbers # indicating the number of scoops required to fill a US quart. scoop(n) units=[1;cup] domain=[4,100] range=[0.04,1] \ 32 usfloz / n ; 32 usfloz / scoop # US can sizes. number1can 10 usfloz number2can 19 usfloz number2.5can 3.5 uscups number3can 4 uscups number5can 7 uscups number10can 105 usfloz # British measures brcup 1|2 brpint brteacup 1|3 brpint brtablespoon 15 ml # Also 5|8 brfloz, approx 17.7 ml brteaspoon 1|3 brtablespoon # Also 1|4 brtablespoon brdessertspoon 2 brteaspoon dessertspoon brdessertspoon dsp dessertspoon brtsp brteaspoon brtbl brtablespoon brtbsp brtablespoon brtblsp brtablespoon # Australian australiatablespoon 20 ml austbl australiatablespoon austbsp australiatablespoon austblsp australiatablespoon australiateaspoon 1|4 australiatablespoon austsp australiateaspoon # Italian etto 100 g # Used for buying items like meat and etti etto # cheese. # Chinese catty 0.5 kg oldcatty 4|3 lbs # Before metric conversion. tael 1|16 oldcatty # Should the tael be defined both ways? mace 0.1 tael oldpicul 100 oldcatty picul 100 catty # Chinese usage # Indian seer 14400 grain # British Colonial standard ser seer maund 40 seer pakistanseer 1 kg pakistanmaund 40 pakistanseer chittak 1|16 seer tola 1|5 chittak ollock 1|4 liter # Is this right? # Japanese japancup 200 ml # densities of cooking ingredients from The Cake Bible by Rose Levy Beranbaum # so you can convert '2 cups sugar' to grams, for example, or in the other # direction grams could be converted to 'cup flour_scooped'. butter 8 oz/uscup butter_clarified 6.8 oz/uscup cocoa_butter 9 oz/uscup shortening 6.75 oz/uscup # vegetable shortening oil 7.5 oz/uscup cakeflour_sifted 3.5 oz/uscup # The density of flour depends on the cakeflour_spooned 4 oz/uscup # measuring method. "Scooped", or cakeflour_scooped 4.5 oz/uscup # "dip and sweep" refers to dipping a flour_sifted 4 oz/uscup # measure into a bin, and then sweeping flour_spooned 4.25 oz/uscup # the excess off the top. "Spooned" flour_scooped 5 oz/uscup # means to lightly spoon into a measure breadflour_sifted 4.25 oz/uscup # and then sweep the top. Sifted means breadflour_spooned 4.5 oz/uscup # sifting the flour directly into a breadflour_scooped 5.5 oz/uscup # measure and then sweeping the top. cornstarch 120 grams/uscup dutchcocoa_sifted 75 g/uscup # These are for Dutch processed cocoa dutchcocoa_spooned 92 g/uscup dutchcocoa_scooped 95 g/uscup cocoa_sifted 75 g/uscup # These are for nonalkalized cocoa cocoa_spooned 82 g/uscup cocoa_scooped 95 g/uscup heavycream 232 g/uscup milk 242 g/uscup sourcream 242 g/uscup molasses 11.25 oz/uscup cornsyrup 11.5 oz/uscup honey 11.75 oz/uscup sugar 200 g/uscup powdered_sugar 4 oz/uscup brownsugar_light 217 g/uscup # packed brownsugar_dark 239 g/uscup baking_powder 4.6 grams / ustsp salt 6 g / ustsp koshersalt 2.8 g / ustsp # Diamond Crystal kosher salt koshersalt_morton 4.8 g / ustsp # Morton kosher salt # Values are from the nutrition info # on the packages # Egg weights and volumes for a USA large egg egg 50 grams # without shell eggwhite 30 grams eggyolk 18.6 grams eggvolume 3 ustablespoons + 1|2 ustsp eggwhitevolume 2 ustablespoons eggyolkvolume 3.5 ustsp # Alcohol density ethanoldensity 0.7893 g/cm^3 # From CRC Handbook, 91st Edition alcoholdensity ethanoldensity # # Density measures. Density has traditionally been measured on a variety of # bizarre nonlinear scales. # # Density of a sugar syrup is frequently measured in candy making procedures. # In the USA the boiling point of the syrup is measured. Some recipes instead # specify the density using degrees Baume. Conversion between degrees Baume # and the boiling point measure has proved elusive. This table appeared in one # text, and provides a fragmentary relationship to the concentration. # # temp(C) conc (%) # 100 30 # 101 40 # 102 50 # 103 60 # 106 70 # 112 80 # 123 90 # 140 95 # 151 97 # 160 98.2 # 166 99.5 # 171 99.6 # # The best source identified to date came from "Boiling point elevation of # technical sugarcane solutions and its use in automatic pan boiling" by # Michael Saska. International Sugar Journal, 2002, 104, 1247, pp 500-507. # # But I'm using equation (3) which is credited to Starzak and Peacock, # "Water activity coefficient in aqueous solutions of sucrose--A comprehensive # data analysis. Zuckerindustrie, 122, 380-387. (I couldn't find this # document.) # # Note that the range of validity is uncertain, but answers are in agreement # with the above table all the way to 99.6. # # The original equation has a parameter for the boiling point of water, which # of course varies with altitude. It also includes various other model # parameters. The input is the molar concentration of sucrose in the solution, # (moles sucrose) / (total moles). # # Bsp 3797.06 degC # Csp 226.28 degC # QQ -17638 J/mol # asp -1.0038 # bsp -0.24653 # tbw 100 degC # boiling point of water # sugar_bpe_orig(x) ((1-QQ/R Bsp * x^2 (1+asp x + bsp x^2) (tbw + Csp) \ # /(tbw+stdtemp)) / (1+(tbw + Csp)/Bsp *ln(1-x))-1) * (tbw + Csp) # # To convert mass concentration (brix) to molar concentration # # sc(x) (x / 342.3) / (( x/342.3) + (100-x)/18.02); \ # 100 sc 342.3|18.02 / (sc (342.3|18.02-1)+1) # # Here is a simplified version of this equation where the temperature of boiling # water has been fixed at 100 degrees Celsius and the argument is now the # concentration (brix). # # sugar_bpe(x) ((1+ 0.48851085 * sc(x)^2 (1+ -1.0038 sc(x) + -0.24653 sc(x)^2)) \ # / (1+0.08592964 ln(1-sc(x)))-1) 326.28 K # # # The formula is not invertible, so to implement it in units we unfortunately # must turn it into a table. # This table gives the boiling point elevation as a function of the sugar syrup # concentration expressed as a percentage. sugar_conc_bpe[K] \ 0 0.0000 5 0.0788 10 0.1690 15 0.2729 20 0.3936 25 0.5351 \ 30 0.7027 35 0.9036 40 1.1475 42 1.2599 44 1.3825 46 1.5165 \ 48 1.6634 50 1.8249 52 2.0031 54 2.2005 56 2.4200 58 2.6651 \ 60 2.9400 61 3.0902 62 3.2499 63 3.4198 64 3.6010 65 3.7944 \ 66 4.0012 67 4.2227 68 4.4603 69 4.7156 70 4.9905 71 5.2870 \ 72 5.6075 73 5.9546 74 6.3316 75 6.7417 76 7.1892 77 7.6786 \ 78.0 8.2155 79.0 8.8061 80.0 9.4578 80.5 9.8092 81.0 10.1793 \ 81.5 10.5693 82.0 10.9807 82.5 11.4152 83.0 11.8743 83.5 12.3601 \ 84.0 12.8744 84.5 13.4197 85.0 13.9982 85.5 14.6128 86.0 15.2663 \ 86.5 15.9620 87.0 16.7033 87.5 17.4943 88.0 18.3391 88.5 19.2424 \ 89.0 20.2092 89.5 21.2452 90.0 22.3564 90.5 23.5493 91.0 24.8309 \ 91.5 26.2086 92.0 27.6903 92.5 29.2839 93.0 30.9972 93.5 32.8374 \ 94.0 34.8104 94.5 36.9195 95.0 39.1636 95.5 41.5348 96.0 44.0142 \ 96.5 46.5668 97.0 49.1350 97.5 51.6347 98.0 53.9681 98.1 54.4091 \ 98.2 54.8423 98.3 55.2692 98.4 55.6928 98.5 56.1174 98.6 56.5497 \ 98.7 56.9999 98.8 57.4828 98.9 58.0206 99.0 58.6455 99.1 59.4062 \ 99.2 60.3763 99.3 61.6706 99.4 63.4751 99.5 66.1062 99.6 70.1448 \ 99.7 76.7867 # Using the brix table we can use this to produce a mapping from boiling point # to density which makes all of the units interconvertible. Because the brix # table stops at 95 this approach works up to a boiling point elevation of 39 K # or a boiling point of 139 C / 282 F, which is the "soft crack" stage in candy # making. The "hard crack" stage continues up to 310 F. # Boiling point elevation sugar_bpe(T) units=[K;g/cm^3] domain=[0,39.1636] range=[0.99717,1.5144619] \ brix(~sugar_conc_bpe(T)); sugar_conc_bpe(~brix(sugar_bpe)) # Absolute boiling point (produces an absolute temperature) sugar_bp(T) units=[K;g/cm^3] domain=[373.15,412.3136] \ range=[0.99717,1.5144619] \ brix(~sugar_conc_bpe(T-tempC(100))) ;\ sugar_conc_bpe(~brix(sugar_bp))+tempC(100) # In practice dealing with the absolute temperature is annoying because it is # not possible to convert to a nested function, so you're stuck retyping the # absolute temperature in Kelvins to convert to celsius or Fahrenheit. To # prevent this we supply definitions that build in the temperature conversion # and produce results in the Fahrenheit and Celsius scales. So using these # measures, to convert 46 degrees Baume to a Fahrenheit boiling point: # # You have: baume(45) # You want: sugar_bpF # 239.05647 # sugar_bpF(T) units=[1;g/cm^3] domain=[212,282.49448] range=[0.99717,1.5144619]\ brix(~sugar_conc_bpe(tempF(T)+-tempC(100))) ;\ ~tempF(sugar_conc_bpe(~brix(sugar_bpF))+tempC(100)) sugar_bpC(T) units=[1;g/cm^3] domain=[100,139.1636] range=[0.99717,1.5144619]\ brix(~sugar_conc_bpe(tempC(T)+-tempC(100))) ;\ ~tempC(sugar_conc_bpe(~brix(sugar_bpC))+tempC(100)) # Degrees Baume is used in European recipes to specify the density of a sugar # syrup. An entirely different definition is used for densities below # 1 g/cm^3. An arbitrary constant appears in the definition. This value is # equal to 145 in the US, but was according to [], the old scale used in # Holland had a value of 144, and the new scale or Gerlach scale used 146.78. baumeconst 145 # US value baume(d) units=[1;g/cm^3] domain=[0,145) range=[1,) \ (baumeconst/(baumeconst+-d)) g/cm^3 ; \ (baume+((-g)/cm^3)) baumeconst / baume # It's not clear if this value was ever used with negative degrees. twaddell(x) units=[1;g/cm^3] domain=[-200,) range=[0,) \ (1 + 0.005 x) g / cm^3 ; \ 200 (twaddell / (g/cm^3) +- 1) # The degree quevenne is a unit for measuring the density of milk. # Similarly it's unclear if negative values were allowed here. quevenne(x) units=[1;g/cm^3] domain=[-1000,) range=[0,) \ (1 + 0.001 x) g / cm^3 ; \ 1000 (quevenne / (g/cm^3) +- 1) # Degrees brix measures sugar concentration by weigh as a percentage, so a # solution that is 3 degrees brix is 3% sugar by weight. This unit was named # after Adolf Brix who invented a hydrometer that read this percentage # directly. This data is from Table 114 of NIST Circular 440, "Polarimetry, # Saccharimetry and the Sugars". It gives apparent specific gravity at 20 # degrees Celsius of various sugar concentrations. As rendered below this # data is converted to apparent density at 20 degrees Celsius using the # density figure for water given in the same NIST reference. They use the # word "apparent" to refer to measurements being made in air with brass # weights rather than vacuum. brix[0.99717g/cm^3]\ 0 1.00000 1 1.00390 2 1.00780 3 1.01173 4 1.01569 5 1.01968 \ 6 1.02369 7 1.02773 8 1.03180 9 1.03590 10 1.04003 11 1.04418 \ 12 1.04837 13 1.05259 14 1.05683 15 1.06111 16 1.06542 17 1.06976 \ 18 1.07413 19 1.07853 20 1.08297 21 1.08744 22 1.09194 23 1.09647 \ 24 1.10104 25 1.10564 26 1.11027 27 1.11493 28 1.11963 29 1.12436 \ 30 1.12913 31 1.13394 32 1.13877 33 1.14364 34 1.14855 35 1.15350 \ 36 1.15847 37 1.16349 38 1.16853 39 1.17362 40 1.17874 41 1.18390 \ 42 1.18910 43 1.19434 44 1.19961 45 1.20491 46 1.21026 47 1.21564 \ 48 1.22106 49 1.22652 50 1.23202 51 1.23756 52 1.24313 53 1.24874 \ 54 1.25439 55 1.26007 56 1.26580 57 1.27156 58 1.27736 59 1.28320 \ 60 1.28909 61 1.29498 62 1.30093 63 1.30694 64 1.31297 65 1.31905 \ 66 1.32516 67 1.33129 68 1.33748 69 1.34371 70 1.34997 71 1.35627 \ 72 1.36261 73 1.36900 74 1.37541 75 1.38187 76 1.38835 77 1.39489 \ 78 1.40146 79 1.40806 80 1.41471 81 1.42138 82 1.42810 83 1.43486 \ 84 1.44165 85 1.44848 86 1.45535 87 1.46225 88 1.46919 89 1.47616 \ 90 1.48317 91 1.49022 92 1.49730 93 1.50442 94 1.51157 95 1.51876 # Density measure invented by the American Petroleum Institute. Lighter # petroleum products are more valuable, and they get a higher API degree. # # The intervals of range and domain should be open rather than closed. # apidegree(x) units=[1;g/cm^3] domain=[-131.5,) range=[0,) \ 141.5 g/cm^3 / (x+131.5) ; \ 141.5 (g/cm^3) / apidegree + (-131.5) # # Average densities of various woods (dried) # Data from The Wood Database https://www.wood-database.com # # North American Hardwoods wood_cherry 35 lb/ft^3 wood_redoak 44 lb/ft^3 wood_whiteoak 47 lb/ft^3 wood_blackwalnut 38 lb/ft^3 wood_walnut wood_blackwalnut wood_birch 43 lb/ft^3 wood_hardmaple 44 lb/ft^3 wood_bigleafmaple 34 lb/ft^3 wood_boxeldermaple 30 lb/ft^3 wood_redmaple 38 lb/ft^3 wood_silvermaple 33 lb/ft^3 wood_stripedmaple 32 lb/ft^3 wood_softmaple (wood_bigleafmaple \ + wood_boxeldermaple \ + wood_redmaple \ + wood_silvermaple \ + wood_stripedmaple) / 5 wood_poplar 29 lb/ft^3 wood_beech 45 lb/ft^3 # North American Softwoods wood_jeffreypine 28 lb/ft^3 wood_ocotepine 44 lb/ft^3 wood_ponderosapine 28 lb/ft^3 wood_loblollypine 35 lb/ft^3 wood_longleafpine 41 lb/ft^3 wood_shortleafpine 35 lb/ft^3 wood_slashpine 41 lb/ft^3 wood_yellowpine (wood_loblollypine \ + wood_longleafpine \ + wood_shortleafpine \ + wood_slashpine) / 4 wood_redpine 34 lb/ft^3 wood_easternwhitepine 25 lb/ft^3 wood_westernwhitepine 27 lb/ft^3 wood_whitepine (wood_easternwhitepine + wood_westernwhitepine) / 2 wood_douglasfir 32 lb/ft^3 wood_blackspruce 28 lb/ft^3 wood_engelmannspruce 24 lb/ft^3 wood_redspruce 27 lb/ft^3 wood_sitkaspruce 27 lb/ft^3 wood_whitespruce 27 lb/ft^3 wood_spruce (wood_blackspruce \ + wood_engelmannspruce \ + wood_redspruce \ + wood_sitkaspruce \ + wood_whitespruce) / 5 # Other woods wood_basswood 26 lb/ft^3 wood_balsa 9 lb/ft^3 wood_ebony_gaboon 60 lb/ft^3 wood_ebony_macassar 70 lb/ft^3 wood_mahogany 37 lb/ft^3 # True (Honduran) mahogany, # Swietenia macrophylla wood_teak 41 lb/ft^3 wood_rosewood_brazilian 52 lb/ft^3 wood_rosewood_honduran 64 lb/ft^3 wood_rosewood_indian 52 lb/ft^3 wood_cocobolo 69 lb/ft^3 wood_bubinga 56 lb/ft^3 wood_zebrawood 50 lb/ft^3 wood_koa 38 lb/ft^3 wood_snakewood 75.7 lb/ft^3 wood_lignumvitae 78.5 lb/ft^3 wood_blackwood 79.3 lb/ft^3 wood_blackironwood 84.5 lb/ft^3 # Krugiodendron ferreum, listed # in database as the heaviest wood # # Modulus of elasticity of selected woods. # Data from The Wood Database https://www.wood-database.com # # North American Hardwoods wood_mod_beech 1.720e6 lbf/in^2 wood_mod_birchyellow 2.010e6 lbf/in^2 wood_mod_birch wood_mod_birchyellow wood_mod_cherry 1.490e6 lbf/in^2 wood_mod_hardmaple 1.830e6 lbf/in^2 wood_mod_bigleafmaple 1.450e6 lbf/in^2 wood_mod_boxeldermaple 1.050e6 lbf/in^2 wood_mod_redmaple 1.640e6 lbf/in^2 wood_mod_silvermaple 1.140e6 lbf/in^2 wood_mod_softmaple (wood_mod_bigleafmaple \ + wood_mod_boxeldermaple \ + wood_mod_redmaple \ + wood_mod_silvermaple) / 4 wood_mod_redoak 1.761e6 lbf/in^2 wood_mod_whiteoak 1.762e6 lbf/in^2 wood_mod_poplar 1.580e6 lbf/in^2 wood_mod_blackwalnut 1.680e6 lbf/in^2 wood_mod_walnut wood_mod_blackwalnut # North American Softwoods wood_mod_jeffreypine 1.240e6 lbf/in^2 wood_mod_ocotepine 2.209e6 lbf/in^2 wood_mod_ponderosapine 1.290e6 lbf/in^2 wood_mod_loblollypine 1.790e6 lbf/in^2 wood_mod_longleafpine 1.980e6 lbf/in^2 wood_mod_shortleafpine 1.750e6 lbf/in^2 wood_mod_slashpine 1.980e6 lbf/in^2 wood_mod_yellowpine (wood_mod_loblollypine \ + wood_mod_longleafpine \ + wood_mod_shortleafpine \ + wood_mod_slashpine) / 4 wood_mod_redpine 1.630e6 lbf/in^2 wood_mod_easternwhitepine 1.240e6 lbf/in^2 wood_mod_westernwhitepine 1.460e6 lbf/in^2 wood_mod_whitepine (wood_mod_easternwhitepine + \ wood_mod_westernwhitepine) / 2 wood_mod_douglasfir 1.765e6 lbf/in^2 wood_mod_blackspruce 1.523e6 lbf/in^2 wood_mod_englemannspruce 1.369e6 lbf/in^2 wood_mod_redspruce 1.560e6 lbf/in^2 wood_mod_sitkaspruce 1.600e6 lbf/in^2 wood_mod_whitespruce 1.315e6 lbf/in^2 wood_mod_spruce (wood_mod_blackspruce \ + wood_mod_englemannspruce \ + wood_mod_redspruce + wood_mod_sitkaspruce \ + wood_mod_whitespruce) / 5 # Other woods wood_mod_balsa 0.538e6 lbf/in^2 wood_mod_basswood 1.460e6 lbf/in^2 wood_mod_blackwood 2.603e6 lbf/in^2 # African, Dalbergia melanoxylon wood_mod_bubinga 2.670e6 lbf/in^2 wood_mod_cocobolo 2.712e6 lbf/in^2 wood_mod_ebony_gaboon 2.449e6 lbf/in^2 wood_mod_ebony_macassar 2.515e6 lbf/in^2 wood_mod_blackironwood 2.966e6 lbf/in^2 # Krugiodendron ferreum wood_mod_koa 1.503e6 lbf/in^2 wood_mod_lignumvitae 2.043e6 lbf/in^2 wood_mod_mahogany 1.458e6 lbf/in^2 # True (Honduran) mahogany, # Swietenia macrophylla wood_mod_rosewood_brazilian 2.020e6 lbf/in^2 wood_mod_rosewood_honduran 3.190e6 lbf/in^2 wood_mod_rosewood_indian 1.668e6 lbf/in^2 wood_mod_snakewood 3.364e6 lbf/in^2 wood_mod_teak 1.781e6 lbf/in^2 wood_mod_zebrawood 2.374e6 lbf/in^2 # # Area of countries and other regions. This is the "total area" which # includes land and water areas within international boundaries and # coastlines. Data from January, 2019. # # https://en.wikipedia.org/wiki/List_of_countries_and_dependencies_by_area # https://www.cia.gov/library/publications/the-world-factbook) area_russia 17098246 km^2 area_antarctica 14000000 km^2 area_canada 9984670 km^2 area_china 9596961 km^2 area_unitedstates 9525067 km^2 # includes only the 50 states area_us area_unitedstates # and District of Columbia area_brazil 8515767 km^2 area_australia 7692024 km^2 area_europeanunion 4475757 km^2 area_eu area_europeanunion area_india 3287263 km^2 area_argentina 2780400 km^2 area_kazakhstan 2724900 km^2 area_algeria 2381741 km^2 area_drcongo 2344858 km^2 area_greenland 2166086 km^2 area_saudiarabia 2149690 km^2 area_mexico 1964375 km^2 area_indonesia 1910931 km^2 area_sudan 1861484 km^2 area_libya 1759540 km^2 area_iran 1648195 km^2 area_mongolia 1564110 km^2 area_peru 1285216 km^2 area_chad 1284000 km^2 area_niger 1267000 km^2 area_angola 1246700 km^2 area_mali 1240192 km^2 area_southafrica 1221037 km^2 area_colombia 1141748 km^2 area_ethiopia 1104300 km^2 area_bolivia 1098581 km^2 area_mauritania 1030700 km^2 area_egypt 1002450 km^2 area_tanzania 945087 km^2 area_nigeria 923768 km^2 area_venezuela 916445 km^2 area_pakistan 881912 km^2 area_namibia 825615 km^2 area_mozambique 801590 km^2 area_turkey 783562 km^2 area_chile 756102 km^2 area_zambia 752612 km^2 area_myanmar 676578 km^2 area_afghanistan 652230 km^2 area_southsudan 644329 km^2 area_france 640679 km^2 area_somalia 637657 km^2 area_centralafrica 622984 km^2 area_ukraine 603500 km^2 area_crimea 27000 km^2 # occupied by Russia; included in # (Encyclopedia Britannica) area_madagascar 587041 km^2 area_botswana 581730 km^2 area_kenya 580367 km^2 area_yemen 527968 km^2 area_thailand 513120 km^2 area_spain 505992 km^2 area_turkmenistan 488100 km^2 area_cameroon 475422 km^2 area_papuanewguinea 462840 km^2 area_sweden 450295 km^2 area_uzbekistan 447400 km^2 area_morocco 446550 km^2 area_iraq 438317 km^2 area_paraguay 406752 km^2 area_zimbabwe 390757 km^2 area_japan 377973 km^2 area_germany 357114 km^2 area_congorepublic 342000 km^2 area_finland 338424 km^2 area_vietnam 331212 km^2 area_malaysia 330803 km^2 area_norway 323802 km^2 area_ivorycoast 322463 km^2 area_poland 312696 km^2 area_oman 309500 km^2 area_italy 301339 km^2 area_philippines 300000 km^2 area_ecuador 276841 km^2 area_burkinafaso 274222 km^2 area_newzealand 270467 km^2 area_gabon 267668 km^2 area_westernsahara 266000 km^2 area_guinea 245857 km^2 area_uk 242495 km^2 area_uganda 241550 km^2 area_ghana 238533 km^2 area_romania 238397 km^2 area_laos 236800 km^2 area_guyana 214969 km^2 area_belarus 207600 km^2 area_kyrgyzstan 199951 km^2 area_senegal 196722 km^2 area_syria 185180 km^2 area_golanheights 1150 km^2 # occupied by Israel; included in # Syria (Encyclopedia Britannica) area_cambodia 181035 km^2 area_uruguay 176215 km^2 area_somaliland 176120 km^2 area_suriname 163820 km^2 area_tunisia 163610 km^2 area_bangladesh 147570 km^2 area_nepal 147181 km^2 area_tajikistan 143100 km^2 area_greece 131990 km^2 area_nicaragua 130373 km^2 area_northkorea 120540 km^2 area_malawi 118484 km^2 area_eritrea 117600 km^2 area_benin 114763 km^2 area_honduras 112492 km^2 area_liberia 111369 km^2 area_bulgaria 110879 km^2 area_cuba 109884 km^2 area_guatemala 108889 km^2 area_iceland 103000 km^2 area_southkorea 100210 km^2 area_hungary 93028 km^2 area_portugal 92090 km^2 area_jordan 89342 km^2 area_serbia 88361 km^2 area_azerbaijan 86600 km^2 area_austria 83871 km^2 area_uae 83600 km^2 area_czechrepublic 78865 km^2 area_panama 75417 km^2 area_sierraleone 71740 km^2 area_ireland 70273 km^2 area_georgia 69700 km^2 area_srilanka 65610 km^2 area_lithuania 65300 km^2 area_latvia 64559 km^2 area_togo 56785 km^2 area_croatia 56594 km^2 area_bosnia 51209 km^2 area_costarica 51100 km^2 area_slovakia 49037 km^2 area_dominicanrepublic 48671 km^2 area_estonia 45227 km^2 area_denmark 43094 km^2 area_netherlands 41850 km^2 area_switzerland 41284 km^2 area_bhutan 38394 km^2 area_taiwan 36193 km^2 area_guineabissau 36125 km^2 area_moldova 33846 km^2 area_gelgium 30528 km^2 area_lesotho 30355 km^2 area_armenia 29743 km^2 area_solomonislands 28896 km^2 area_albania 28748 km^2 area_equitorialguinea 28051 km^2 area_burundi 27834 km^2 area_haiti 27750 km^2 area_rwanda 26338 km^2 area_northmacedonia 25713 km^2 area_djibouti 23200 km^2 area_belize 22966 km^2 area_elsalvador 21041 km^2 area_israel 20770 km^2 area_slovenia 20273 km^2 area_fiji 18272 km^2 area_kuwait 17818 km^2 area_eswatini 17364 km^2 area_easttimor 14919 km^2 area_bahamas 13943 km^2 area_montenegro 13812 km^2 area_vanatu 12189 km^2 area_qatar 11586 km^2 area_gambia 11295 km^2 area_jamaica 10991 km^2 area_kosovo 10887 km^2 area_lebanon 10452 km^2 area_cyprus 9251 km^2 area_puertorico 9104 km^2 # United States territory; not included # in United States area area_westbank 5860 km^2 # (CIA World Factbook) area_hongkong 2755 km^2 area_luxembourg 2586 km^2 area_singapore 716 km^2 area_gazastrip 360 km^2 # (CIA World Factbook) area_liechtenstein 160 km^2 area_monaco 2.02 km^2 area_vaticancity 0.44 km^2 # # Area of the individual United States # # https://en.wikipedia.org/wiki/List_of_U.S._states_and_territories_by_area # area_alaska 1723337 km^2 area_texas 695662 km^2 area_california 423972 km^2 area_montana 380831 km^2 area_newmexico 314917 km^2 area_arizona 295234 km^2 area_nevada 286380 km^2 area_colorado 269601 km^2 area_oregon 254799 km^2 area_wyoming 253335 km^2 area_michigan 250487 km^2 area_minnesota 225163 km^2 area_utah 219882 km^2 area_idaho 216443 km^2 area_kansas 213100 km^2 area_nebraska 200330 km^2 area_southdakota 199729 km^2 area_washington 184661 km^2 area_northdakota 183108 km^2 area_oklahoma 181037 km^2 area_missouri 180540 km^2 area_florida 170312 km^2 area_wisconsin 169635 km^2 area_georgia_us 153910 km^2 area_illinois 149995 km^2 area_iowa 145746 km^2 area_newyork 141297 km^2 area_northcarolina 139391 km^2 area_arkansas 137732 km^2 area_alabama 135767 km^2 area_louisiana 135659 km^2 area_mississippi 125438 km^2 area_pennsylvania 119280 km^2 area_ohio 116098 km^2 area_virginia 110787 km^2 area_tennessee 109153 km^2 area_kentucky 104656 km^2 area_indiana 94326 km^2 area_maine 91633 km^2 area_southcarolina 82933 km^2 area_westvirginia 62756 km^2 area_maryland 32131 km^2 area_hawaii 28313 km^2 area_massachusetts 27336 km^2 area_vermont 24906 km^2 area_newhampshire 24214 km^2 area_newjersey 22591 km^2 area_connecticut 14357 km^2 area_delaware 6446 km^2 area_rhodeisland 4001 km^2 area_districtofcolumbia 177 km^2 # # Units derived from imperial system # ouncedal oz ft / s^2 # force which accelerates an ounce # at 1 ft/s^2 poundal lb ft / s^2 # same thing for a pound tondal longton ft / s^2 # and for a ton pdl poundal osi ounce force / inch^2 # used in aviation psi pound force / inch^2 psia psi # absolute pressure # Note that gauge pressure can be given # using the gaugepressure() and # psig() nonlinear unit definitions tsi ton force / inch^2 reyn psi sec slug lbf s^2 / ft slugf slug force slinch lbf s^2 / inch # Mass unit derived from inch second slinchf slinch force # pound-force system. Used in space # applications where in/sec^2 was a # natural acceleration measure. geepound slug lbf lb force tonf ton force lbm lb kip 1000 lbf # from kilopound ksi kip / in^2 mil 0.001 inch thou 0.001 inch tenth 0.0001 inch # one tenth of one thousandth of an inch millionth 1e-6 inch # one millionth of an inch circularinch 1|4 pi in^2 # area of a one-inch diameter circle circleinch circularinch # A circle with diameter d inches has # an area of d^2 circularinches cylinderinch circleinch inch # Cylinder h inch tall, d inches diameter # has volume d^2 h cylinder inches circularmil 1|4 pi mil^2 # area of one-mil diameter circle cmil circularmil cental 100 pound centner cental caliber 0.01 inch # for measuring bullets duty ft lbf celo ft / s^2 jerk ft / s^3 australiapoint 0.01 inch # The "point" is used to measure rainfall # in Australia sabin ft^2 # Measure of sound absorption equal to the # absorbing power of one square foot of # a perfectly absorbing material. The # sound absorptivity of an object is the # area times a dimensionless # absorptivity coefficient. standardgauge 4 ft + 8.5 in # Standard width between railroad track flag 5 ft^2 # Construction term referring to sidewalk. rollwallpaper 30 ft^2 # Area of roll of wall paper fillpower in^3 / ounce # Density of down at standard pressure. # The best down has 750-800 fillpower. pinlength 1|16 inch # A #17 pin is 17/16 in long in the USA. buttonline 1|40 inch # The line was used in 19th century USA # to measure width of buttons. beespace 1|4 inch # Bees will fill any space that is smaller # than the bee space and leave open # spaces that are larger. The size of # the space varies with species. diamond 8|5 ft # Marking on US tape measures that is # useful to carpenters who wish to place # five studs in an 8 ft distance. Note # that the numbers appear in red every # 16 inches as well, giving six # divisions in 8 feet. retmaunit 1.75 in # Height of rack mountable equipment. U retmaunit # Equipment should be 1|32 inch narrower RU U # than its U measurement indicates to # allow for clearance, so 4U=(6+31|32)in # RETMA stands for the former name of # the standardizing organization, Radio # Electronics Television Manufacturers # Association. This organization is now # called the Electronic Industries # Alliance (EIA) and the rack standard # is specified in EIA RS-310-D. count per pound # For measuring the size of shrimp # # Other units of work, energy, power, etc # ENERGY joule WORK joule # Calorie: approximate energy to raise a gram of water one degree celsius calorie cal_th # Default is the thermochemical calorie cal calorie calorie_th 4.184 J # Thermochemical calorie, defined in 1930 thermcalorie calorie_th # by Frederick Rossini as 4.1833 J to cal_th calorie_th # avoid difficulties associated with the # uncertainty in the heat capacity of # water. In 1948 the value of the joule # was changed, so the thermochemical # calorie was redefined to 4.184 J. # This kept the energy measured by this # unit the same. calorie_IT 4.1868 J # International (Steam) Table calorie, cal_IT calorie_IT # defined in 1929 as watt-hour/860 or # equivalently 180|43 joules. At this # time the international joule had a # different value than the modern joule, # and the values were different in the # USA and in Europe. In 1956 at the # Fifth International Conference on # Properties of Steam the exact # definition given here was adopted. calorie_15 4.18580 J # Energy to go from 14.5 to 15.5 degC cal_15 calorie_15 calorie_fifteen cal_15 calorie_20 4.18190 J # Energy to go from 19.5 to 20.5 degC cal_20 calorie_20 calorie_twenty calorie_20 calorie_4 4.204 J # Energy to go from 3.5 to 4.5 degC cal_4 calorie_4 calorie_four calorie_4 cal_mean 4.19002 J # 1|100 energy to go from 0 to 100 degC Calorie kilocalorie # the food Calorie thermie 1e6 cal_15 # Heat required to raise the # temperature of a tonne of # water from 14.5 to 15.5 degC. # btu definitions: energy to raise a pound of water 1 degF btu btu_IT # International Table BTU is the default britishthermalunit btu btu_IT cal_IT lb degF / gram K btu_th cal_th lb degF / gram K btu_mean cal_mean lb degF / gram K btu_15 cal_15 lb degF / gram K btu_ISO 1055.06 J # Exact, rounded ISO definition based # on the IT calorie quad quadrillion btu ECtherm 1e5 btu_ISO # Exact definition UStherm 1.054804e8 J # Exact definition, therm UStherm # Water latent heat from [23] water_fusion_heat 6.01 kJ/mol / (18.015 g/mol) # At 0 deg C water_vaporization_heat 2256.4 J/g # At saturation, 100 deg C, 101.42 kPa # Specific heat capacities of various substances specificheat_water calorie / g K water_specificheat specificheat_water # Values from www.engineeringtoolbox.com/specific-heat-metals-d_152.html specificheat_aluminum 0.91 J/g K specificheat_antimony 0.21 J/g K specificheat_barium 0.20 J/g K specificheat_beryllium 1.83 J/g K specificheat_bismuth 0.13 J/g K specificheat_cadmium 0.23 J/g K specificheat_cesium 0.24 J/g K specificheat_chromium 0.46 J/g K specificheat_cobalt 0.42 J/g K specificheat_copper 0.39 J/g K specificheat_gallium 0.37 J/g K specificheat_germanium 0.32 J/g K specificheat_gold 0.13 J/g K specificheat_hafnium 0.14 J/g K specificheat_indium 0.24 J/g K specificheat_iridium 0.13 J/g K specificheat_iron 0.45 J/g K specificheat_lanthanum 0.195 J/g K specificheat_lead 0.13 J/g K specificheat_lithium 3.57 J/g K specificheat_lutetium 0.15 J/g K specificheat_magnesium 1.05 J/g K specificheat_manganese 0.48 J/g K specificheat_mercury 0.14 J/g K specificheat_molybdenum 0.25 J/g K specificheat_nickel 0.44 J/g K specificheat_osmium 0.13 J/g K specificheat_palladium 0.24 J/g K specificheat_platinum 0.13 J/g K specificheat_plutonum 0.13 J/g K specificheat_potassium 0.75 J/g K specificheat_rhenium 0.14 J/g K specificheat_rhodium 0.24 J/g K specificheat_rubidium 0.36 J/g K specificheat_ruthenium 0.24 J/g K specificheat_scandium 0.57 J/g K specificheat_selenium 0.32 J/g K specificheat_silicon 0.71 J/g K specificheat_silver 0.23 J/g K specificheat_sodium 1.21 J/g K specificheat_strontium 0.30 J/g K specificheat_tantalum 0.14 J/g K specificheat_thallium 0.13 J/g K specificheat_thorium 0.13 J/g K specificheat_tin 0.21 J/g K specificheat_titanium 0.54 J/g K specificheat_tungsten 0.13 J/g K specificheat_uranium 0.12 J/g K specificheat_vanadium 0.39 J/g K specificheat_yttrium 0.30 J/g K specificheat_zinc 0.39 J/g K specificheat_zirconium 0.27 J/g K specificheat_ethanol 2.3 J/g K specificheat_ammonia 4.6 J/g K specificheat_freon 0.91 J/g K # R-12 at 0 degrees Fahrenheit specificheat_gasoline 2.22 J/g K specificheat_iodine 2.15 J/g K specificheat_oliveoil 1.97 J/g K # en.wikipedia.org/wiki/Heat_capacity#Table_of_specific_heat_capacities specificheat_hydrogen 14.3 J/g K specificheat_helium 5.1932 J/g K specificheat_argon 0.5203 J/g K specificheat_tissue 3.5 J/g K specificheat_diamond 0.5091 J/g K specificheat_granite 0.79 J/g K specificheat_graphite 0.71 J/g K specificheat_ice 2.11 J/g K specificheat_asphalt 0.92 J/g K specificheat_brick 0.84 J/g K specificheat_concrete 0.88 J/g K specificheat_glass_silica 0.84 J/g K specificheat_glass_flint 0.503 J/g K specificheat_glass_pyrex 0.753 J/g K specificheat_gypsum 1.09 J/g K specificheat_marble 0.88 J/g K specificheat_sand 0.835 J/g K specificheat_soil 0.835 J/g K specificheat_wood 1.7 J/g K specificheat_sucrose 1.244 J/g K #www.sugartech.co.za/heatcapacity/index.php # Energy densities of various fuels # # Most of these fuels have varying compositions or qualities and hence their # actual energy densities vary. These numbers are hence only approximate. # # E1. http://bioenergy.ornl.gov/papers/misc/energy_conv.html # E2. http://www.aps.org/policy/reports/popa-reports/energy/units.cfm # E3. http://www.ior.com.au/ecflist.html tonoil 1e10 cal_IT # Ton oil equivalent. A conventional # value for the energy released by toe tonoil # burning one metric ton of oil. [18,E2] # Note that energy per mass of petroleum # products is fairly constant. # Variations in volumetric energy # density result from variations in the # density (kg/m^3) of different fuels. # This definition is given by the # IEA/OECD. toncoal 7e9 cal_IT # Energy in metric ton coal from [18]. # This is a nominal value which # is close to the heat content # of coal used in the 1950's barreloil 5.8 Mbtu # Conventional value for barrel of crude # oil [E2]. Actual range is 5.6 - 6.3. naturalgas_HHV 1027 btu/ft3 # Energy content of natural gas. HHV naturalgas_LHV 930 btu/ft3 # is for Higher Heating Value and naturalgas naturalgas_HHV # includes energy from condensation # combustion products. LHV is for Lower # Heating Value and excludes these. # American publications typically report # HHV whereas European ones report LHV. charcoal 30 GJ/tonne woodenergy_dry 20 GJ/tonne # HHV, a cord weights about a tonne woodenergy_airdry 15 GJ/tonne # 20% moisture content coal_bituminous 27 GJ / tonne coal_lignite 15 GJ / tonne coal_US 22 GJ / uston # Average for US coal (short ton), 1995 ethanol_HHV 84000 btu/usgallon ethanol_LHV 75700 btu/usgallon diesel 130500 btu/usgallon gasoline_LHV 115000 btu/usgallon gasoline_HHV 125000 btu/usgallon gasoline gasoline_HHV heating 37.3 MJ/liter fueloil 39.7 MJ/liter # low sulphur propane 93.3 MJ/m^3 butane 124 MJ/m^3 # These values give total energy from uranium fission. Actual efficiency # of nuclear power plants is around 30%-40%. Note also that some reactors # use enriched uranium around 3% U-235. Uranium during processing or use # may be in a compound of uranium oxide or uranium hexafluoride, in which # case the energy density would be lower depending on how much uranium is # in the compound. uranium_pure 200 MeV avogadro / (235.0439299 g/mol) # Pure U-235 uranium_natural 0.7% uranium_pure # Natural uranium: 0.7% U-235 # Celsius heat unit: energy to raise a pound of water 1 degC celsiusheatunit cal lb degC / gram K chu celsiusheatunit POWER watt # "Apparent" average power in an AC circuit, the product of rms voltage # and rms current, equal to the true power in watts when voltage and # current are in phase. In a DC circuit, always equal to the true power. VA volt ampere kWh kilowatt hour # The horsepower is supposedly the power of one horse pulling. Obviously # different people had different horses. horsepower 550 foot pound force / sec # Invented by James Watt mechanicalhorsepower horsepower hp horsepower metrichorsepower 75 kilogram force meter / sec # PS=Pferdestaerke in electrichorsepower 746 W # Germany boilerhorsepower 9809.50 W waterhorsepower 746.043 W brhorsepower 745.70 W donkeypower 250 W chevalvapeur metrichorsepower # # Heat Transfer # # Thermal conductivity, K, measures the rate of heat transfer across # a material. The heat transfered is # Q = K dT A t / L # where dT is the temperature difference across the material, A is the # cross sectional area, t is the time, and L is the length (thickness). # Thermal conductivity is a material property. THERMAL_CONDUCTIVITY POWER / AREA (TEMPERATURE_DIFFERENCE/LENGTH) THERMAL_RESISTIVITY 1/THERMAL_CONDUCTIVITY # Thermal conductance is the rate at which heat flows across a given # object, so the area and thickness have been fixed. It depends on # the size of the object and is hence not a material property. THERMAL_CONDUCTANCE POWER / TEMPERATURE_DIFFERENCE THERMAL_RESISTANCE 1/THERMAL_CONDUCTANCE # Thermal admittance is the rate of heat flow per area across an # object whose thickness has been fixed. Its reciprocal, thermal # insulation, is used to for measuring the heat transfer per area # of sheets of insulation or cloth that are of specified thickness. THERMAL_ADMITTANCE THERMAL_CONDUCTIVITY / LENGTH THERMAL_INSULANCE THERMAL_RESISTIVITY LENGTH THERMAL_INSULATION THERMAL_RESISTIVITY LENGTH Rvalue degF ft^2 hr / btu Uvalue 1/Rvalue europeanUvalue watt / m^2 K RSI degC m^2 / W clo 0.155 degC m^2 / W # Supposed to be the insulance # required to keep a resting person # comfortable indoors. The value # given is from NIST and the CRC, # but [5] gives a slightly different # value of 0.875 ft^2 degF hr / btu. tog 0.1 degC m^2 / W # Also used for clothing. # The bel was defined by engineers of Bell Laboratories to describe the # reduction in audio level over a length of one mile. It was originally # called the transmission unit (TU) but was renamed around 1923 to honor # Alexander Graham Bell. The bel proved inconveniently large so the decibel # has become more common. The decibel is dimensionless since it reports a # ratio, but it is used in various contexts to report a signal's power # relative to some reference level. bel(x) units=[1;1] range=(0,) 10^(x); log(bel) # Basic bel definition decibel(x) units=[1;1] range=(0,) 10^(x/10); 10 log(decibel) # Basic decibel dB() decibel # Abbreviation dBW(x) units=[1;W] range=(0,) dB(x) W ; ~dB(dBW/W) # Reference = 1 W dBk(x) units=[1;W] range=(0,) dB(x) kW ; ~dB(dBk/kW) # Reference = 1 kW dBf(x) units=[1;W] range=(0,) dB(x) fW ; ~dB(dBf/fW) # Reference = 1 fW dBm(x) units=[1;W] range=(0,) dB(x) mW ; ~dB(dBm/mW) # Reference = 1 mW dBmW(x) units=[1;W] range=(0,) dBm(x) ; ~dBm(dBmW) # Reference = 1 mW dBJ(x) units=[1;J] range=(0,) dB(x) J; ~dB(dBJ/J) # Energy relative # to 1 joule. Used for power spectral # density since W/Hz = J # When used to measure amplitude, voltage, or current the signal is squared # because power is proportional to the square of these measures. The root # mean square (RMS) voltage is typically used with these units. dBV(x) units=[1;V] range=(0,) dB(0.5 x) V;~dB(dBV^2 / V^2) # Reference = 1 V dBmV(x) units=[1;V] range=(0,) dB(0.5 x) mV;~dB(dBmV^2/mV^2)# Reference = 1 mV dBuV(x) units=[1;V] range=(0,) dB(0.5 x) microV ; ~dB(dBuV^2 / microV^2) # Reference = 1 microvolt # Referenced to the voltage that causes 1 mW dissipation in a 600 ohm load. # Originally defined as dBv but changed to prevent confusion with dBV. # The "u" is for unloaded. dBu(x) units=[1;V] range=(0,) dB(0.5 x) sqrt(mW 600 ohm) ; \ ~dB(dBu^2 / mW 600 ohm) dBv(x) units=[1;V] range=(0,) dBu(x) ; ~dBu(dBv) # Synonym for dBu # Measurements for sound in air, referenced to the threshold of human hearing # Note that sound in other media typically uses 1 micropascal as a reference # for sound pressure. Units dBA, dBB, dBC, refer to different frequency # weightings meant to approximate the human ear's response. dBSPL(x) units=[1;Pa] range=(0,) dB(0.5 x) 20 microPa ; \ ~dB(dBSPL^2 / (20 microPa)^2) # pressure dBSIL(x) units=[1;W/m^2] range=(0,) dB(x) 1e-12 W/m^2; \ ~dB(dBSIL / (1e-12 W/m^2)) # intensity dBSWL(x) units=[1;W] range=(0,) dB(x) 1e-12 W; ~dB(dBSWL/1e-12 W) # Misc other measures ENTROPY ENERGY / TEMPERATURE clausius 1e3 cal/K # A unit of physical entropy langley thermcalorie/cm^2 # Used in radiation theory poncelet 100 kg force m / s tonrefrigeration uston 144 btu / lb day # One ton refrigeration is # the rate of heat extraction required # turn one ton of water to ice in # a day. Ice is defined to have a # latent heat of 144 btu/lb. tonref tonrefrigeration refrigeration tonref / ton frigorie 1000 cal_15 # Used in refrigeration engineering. tnt 1e9 cal_th / ton# So you can write tons tnt. This # is a defined, not measured, value. airwatt 8.5 (ft^3/min) inH2O # Measure of vacuum power as # pressure times air flow. # Nuclear weapon yields davycrocket 10 ton tnt # lightest US tactical nuclear weapon hiroshima 15.5 kiloton tnt # Uranium-235 fission bomb nagasaki 21 kiloton tnt # Plutonium-239 fission bomb fatman nagasaki littleboy hiroshima ivyking 500 kiloton tnt # most powerful fission bomb castlebravo 15 megaton tnt # most powerful US test tsarbomba 50 megaton tnt # most powerful test ever: USSR, # 30 October 1961 b53bomb 9 megaton tnt # http://rarehistoricalphotos.com/gadget-first-atomic-bomb/ trinity 18 kiloton tnt # July 16, 1945 gadget trinity # # Permeability: The permeability or permeance, n, of a substance determines # how fast vapor flows through the substance. The formula W = n A dP # holds where W is the rate of flow (in mass/time), n is the permeability, # A is the area of the flow path, and dP is the vapor pressure difference. # perm_0C grain / hr ft^2 inHg perm_zero perm_0C perm_0 perm_0C perm perm_0C perm_23C grain / hr ft^2 in Hg23C perm_twentythree perm_23C # # Counting measures # pair 2 brace 2 nest 3 # often used for items like bowls that # nest together hattrick 3 # Used in sports, especially cricket and ice # hockey to report the number of goals. dicker 10 dozen 12 bakersdozen 13 score 20 flock 40 timer 40 shock 60 toncount 100 # Used in sports in the UK longhundred 120 # From a germanic counting system gross 144 greatgross 12 gross tithe 1|10 # From Anglo-Saxon word for tenth # Paper counting measure shortquire 24 quire 25 shortream 480 ream 500 perfectream 516 bundle 2 reams bale 5 bundles # # Paper measures # # USA paper sizes lettersize 8.5 inch 11 inch legalsize 8.5 inch 14 inch ledgersize 11 inch 17 inch executivesize 7.25 inch 10.5 inch Apaper 8.5 inch 11 inch Bpaper 11 inch 17 inch Cpaper 17 inch 22 inch Dpaper 22 inch 34 inch Epaper 34 inch 44 inch # Correspondence envelope sizes. #10 is the standard business # envelope in the USA. envelope6_25size 3.5 inch 6 inch envelope6_75size 3.625 inch 6.5 inch envelope7size 3.75 inch 6.75 inch envelope7_75size 3.875 inch 7.5 inch envelope8_625size 3.625 inch 8.625 inch envelope9size 3.875 inch 8.875 inch envelope10size 4.125 inch 9.5 inch envelope11size 4.5 inch 10.375 inch envelope12size 4.75 inch 11 inch envelope14size 5 inch 11.5 inch envelope16size 6 inch 12 inch # Announcement envelope sizes (no relation to metric paper sizes like A4) envelopeA1size 3.625 inch 5.125 inch # same as 4bar envelopeA2size 4.375 inch 5.75 inch envelopeA6size 4.75 inch 6.5 inch envelopeA7size 5.25 inch 7.25 inch envelopeA8size 5.5 inch 8.125 inch envelopeA9size 5.75 inch 8.75 inch envelopeA10size 6 inch 9.5 inch # Baronial envelopes envelope4bar 3.625 inch 5.125 inch # same as A1 envelope5_5bar 4.375 inch 5.75 inch envelope6bar 4.75 inch 6.5 inch # Coin envelopes envelope1baby 2.25 inch 3.5 inch # same as #1 coin envelope00coin 1.6875 inch 2.75 inch envelope1coin 2.25 inch 3.5 inch envelope3coin 2.5 inch 4.25 inch envelope4coin 3 inch 4.5 inch envelope4_5coin 3 inch 4.875 inch envelope5coin 2.875 inch 5.25 inch envelope5_5coin 3.125 inch 5.5 inch envelope6coin 3.375 inch 6 inch envelope7coin 3.5 inch 6.5 inch # The metric paper sizes are defined so that if a sheet is cut in half # along the short direction, the result is two sheets which are # similar to the original sheet. This means that for any metric size, # the long side is close to sqrt(2) times the length of the short # side. Each series of sizes is generated by repeated cuts in half, # with the values rounded down to the nearest millimeter. A0paper 841 mm 1189 mm # The basic size in the A series A1paper 594 mm 841 mm # is defined to have an area of A2paper 420 mm 594 mm # one square meter. A3paper 297 mm 420 mm A4paper 210 mm 297 mm A5paper 148 mm 210 mm A6paper 105 mm 148 mm A7paper 74 mm 105 mm A8paper 52 mm 74 mm A9paper 37 mm 52 mm A10paper 26 mm 37 mm B0paper 1000 mm 1414 mm # The basic B size has an area B1paper 707 mm 1000 mm # of sqrt(2) square meters. B2paper 500 mm 707 mm B3paper 353 mm 500 mm B4paper 250 mm 353 mm B5paper 176 mm 250 mm B6paper 125 mm 176 mm B7paper 88 mm 125 mm B8paper 62 mm 88 mm B9paper 44 mm 62 mm B10paper 31 mm 44 mm C0paper 917 mm 1297 mm # The basic C size has an area C1paper 648 mm 917 mm # of sqrt(sqrt(2)) square meters. C2paper 458 mm 648 mm C3paper 324 mm 458 mm # Intended for envelope sizes C4paper 229 mm 324 mm C5paper 162 mm 229 mm C6paper 114 mm 162 mm C7paper 81 mm 114 mm C8paper 57 mm 81 mm C9paper 40 mm 57 mm C10paper 28 mm 40 mm # gsm (Grams per Square Meter), a sane, metric paper weight measure gsm grams / meter^2 # In the USA, a collection of crazy historical paper measures are used. Paper # is measured as a weight of a ream of that particular type of paper. This is # sometimes called the "substance" or "basis" (as in "substance 20" paper). # The standard sheet size or "basis size" varies depending on the type of # paper. As a result, 20 pound bond paper and 50 pound text paper are actually # about the same weight. The different sheet sizes were historically the most # convenient for printing or folding in the different applications. These # different basis weights are standards maintained by American Society for # Testing Materials (ASTM) and the American Forest and Paper Association # (AF&PA). poundbookpaper lb / 25 inch 38 inch ream lbbook poundbookpaper poundtextpaper poundbookpaper lbtext poundtextpaper poundoffsetpaper poundbookpaper # For offset printing lboffset poundoffsetpaper poundbiblepaper poundbookpaper # Designed to be lightweight, thin, lbbible poundbiblepaper # strong and opaque. poundtagpaper lb / 24 inch 36 inch ream lbtag poundtagpaper poundbagpaper poundtagpaper lbbag poundbagpaper poundnewsprintpaper poundtagpaper lbnewsprint poundnewsprintpaper poundposterpaper poundtagpaper lbposter poundposterpaper poundtissuepaper poundtagpaper lbtissue poundtissuepaper poundwrappingpaper poundtagpaper lbwrapping poundwrappingpaper poundwaxingpaper poundtagpaper lbwaxing poundwaxingpaper poundglassinepaper poundtagpaper lbglassine poundglassinepaper poundcoverpaper lb / 20 inch 26 inch ream lbcover poundcoverpaper poundindexpaper lb / 25.5 inch 30.5 inch ream lbindex poundindexpaper poundindexbristolpaper poundindexpaper lbindexbristol poundindexpaper poundbondpaper lb / 17 inch 22 inch ream # Bond paper is stiff and lbbond poundbondpaper # durable for repeated poundwritingpaper poundbondpaper # filing, and it resists lbwriting poundwritingpaper # ink penetration. poundledgerpaper poundbondpaper lbledger poundledgerpaper poundcopypaper poundbondpaper lbcopy poundcopypaper poundblottingpaper lb / 19 inch 24 inch ream lbblotting poundblottingpaper poundblankspaper lb / 22 inch 28 inch ream lbblanks poundblankspaper poundpostcardpaper lb / 22.5 inch 28.5 inch ream lbpostcard poundpostcardpaper poundweddingbristol poundpostcardpaper lbweddingbristol poundweddingbristol poundbristolpaper poundweddingbristol lbbristol poundbristolpaper poundboxboard lb / 1000 ft^2 lbboxboard poundboxboard poundpaperboard poundboxboard lbpaperboard poundpaperboard # When paper is marked in units of M, it means the weight of 1000 sheets of the # given size of paper. To convert this to paper weight, divide by the size of # the paper in question. paperM lb / 1000 # In addition paper weight is reported in "caliper" which is simply the # thickness of one sheet, typically in inches. Thickness is also reported in # "points" where a point is 1|1000 inch. These conversions are supplied to # convert these units roughly (using an approximate density) into the standard # paper weight values. pointthickness 0.001 in paperdensity 0.8 g/cm^3 # approximate--paper densities vary! papercaliper in paperdensity paperpoint pointthickness paperdensity # # Printing # fournierpoint 0.1648 inch / 12 # First definition of the printers # point made by Pierre Fournier who # defined it in 1737 as 1|12 of a # cicero which was 0.1648 inches. olddidotpoint 1|72 frenchinch # François Ambroise Didot, one of # a family of printers, changed # Fournier's definition around 1770 # to fit to the French units then in # use. bertholdpoint 1|2660 m # H. Berthold tried to create a # metric version of the didot point # in 1878. INpoint 0.4 mm # This point was created by a # group directed by Fermin Didot in # 1881 and is associated with the # imprimerie nationale. It doesn't # seem to have been used much. germandidotpoint 0.376065 mm # Exact definition appears in DIN # 16507, a German standards document # of 1954. Adopted more broadly in # 1966 by ??? metricpoint 3|8 mm # Proposed in 1977 by Eurograf oldpoint 1|72.27 inch # The American point was invented printerspoint oldpoint # by Nelson Hawks in 1879 and texpoint oldpoint # dominates USA publishing. # It was standardized by the American # Typefounders Association at the # value of 0.013837 inches exactly. # Knuth uses the approximation given # here (which is very close). The # comp.fonts FAQ claims that this # value is supposed to be 1|12 of a # pica where 83 picas is equal to 35 # cm. But this value differs from # the standard. texscaledpoint 1|65536 texpoint # The TeX typesetting system uses texsp texscaledpoint # this for all computations. computerpoint 1|72 inch # The American point was rounded point computerpoint computerpica 12 computerpoint # to an even 1|72 inch by computer postscriptpoint computerpoint # people at some point. pspoint postscriptpoint twip 1|20 point # TWentieth of an Imperial Point Q 1|4 mm # Used in Japanese phototypesetting # Q is for quarter frenchprinterspoint olddidotpoint didotpoint germandidotpoint # This seems to be the dominant value europeanpoint didotpoint # for the point used in Europe cicero 12 didotpoint stick 2 inches # Type sizes excelsior 3 oldpoint brilliant 3.5 oldpoint diamondtype 4 oldpoint pearl 5 oldpoint agate 5.5 oldpoint # Originally agate type was 14 lines per # inch, giving a value of 1|14 in. ruby agate # British nonpareil 6 oldpoint mignonette 6.5 oldpoint emerald mignonette # British minion 7 oldpoint brevier 8 oldpoint bourgeois 9 oldpoint longprimer 10 oldpoint smallpica 11 oldpoint pica 12 oldpoint english 14 oldpoint columbian 16 oldpoint greatprimer 18 oldpoint paragon 20 oldpoint meridian 44 oldpoint canon 48 oldpoint # German type sizes nonplusultra 2 didotpoint brillant 3 didotpoint diamant 4 didotpoint perl 5 didotpoint nonpareille 6 didotpoint kolonel 7 didotpoint petit 8 didotpoint borgis 9 didotpoint korpus 10 didotpoint corpus korpus garamond korpus mittel 14 didotpoint tertia 16 didotpoint text 18 didotpoint kleine_kanon 32 didotpoint kanon 36 didotpoint grobe_kanon 42 didotpoint missal 48 didotpoint kleine_sabon 72 didotpoint grobe_sabon 84 didotpoint # # Information theory units. Note that the name "entropy" is used both # to measure information and as a physical quantity. # INFORMATION bit nat (1/ln(2)) bits # Entropy measured base e hartley log2(10) bits # Entropy of a uniformly ban hartley # distributed random variable # over 10 symbols. dit hartley # from Decimal digIT # # Computer # bps bit/sec # Sometimes the term "baud" is # incorrectly used to refer to # bits per second. Baud refers # to symbols per second. Modern # modems transmit several bits # per symbol. byte 8 bit # Not all machines had 8 bit B byte # bytes, but these days most of # them do. But beware: for # transmission over modems, a # few extra bits are used so # there are actually 10 bits per # byte. octet 8 bits # The octet is always 8 bits nybble 4 bits # Half of a byte. Sometimes # equal to different lengths # such as 3 bits. nibble nybble nyp 2 bits # Donald Knuth asks in an exercise # for a name for a 2 bit # quantity and gives the "nyp" # as a solution due to Gregor # Purdy. Not in common use. meg megabyte # Some people consider these # units along with the kilobyte gig gigabyte # to be defined according to # powers of 2 with the kilobyte # equal to 2^10 bytes, the # megabyte equal to 2^20 bytes and # the gigabyte equal to 2^30 bytes # but these usages are forbidden # by SI. Binary prefixes have # been defined by IEC to replace # the SI prefixes. Use them to # get the binary values: KiB, MiB, # and GiB. jiffy 0.01 sec # This is defined in the Jargon File jiffies jiffy # (http://www.jargon.org) as being the # duration of a clock tick for measuring # wall-clock time. Supposedly the value # used to be 1|60 sec or 1|50 sec # depending on the frequency of AC power, # but then 1|100 sec became more common. # On linux systems, this term is used and # for the Intel based chips, it does have # the value of .01 sec. The Jargon File # also lists two other definitions: # millisecond, and the time taken for # light to travel one foot. cdaudiospeed 44.1 kHz 2*16 bits # CD audio data rate at 44.1 kHz with 2 # samples of sixteen bits each. cdromspeed 75 2048 bytes / sec # For data CDs (mode1) 75 sectors are read # each second with 2048 bytes per sector. # Audio CDs do not have sectors, but # people sometimes divide the bit rate by # 75 and claim a sector length of 2352. # Data CDs have a lower rate due to # increased error correction overhead. # There is a rarely used mode (mode2) with # 2336 bytes per sector that has fewer # error correction bits than mode1. dvdspeed 1385 kB/s # This is the "1x" speed of a DVD using # constant linear velocity (CLV) mode. # Modern DVDs may vary the linear velocity # as they go from the inside to the # outside of the disc. # See http://www.osta.org/technology/dvdqa/dvdqa4.htm # # The IP address space is divided into subnets. The number of hosts # in a subnet depends on the length of the subnet prefix. This is # often written as /N where N is the number of bits in the prefix. # # https://en.wikipedia.org/wiki/Subnetwork # # These definitions gives the number of hosts for a subnet whose # prefix has the specified length in bits. # ipv4subnetsize(prefix_len) units=[1;1] domain=[0,32] range=[1,4294967296] \ 2^(32-prefix_len) ; 32-log2(ipv4subnetsize) ipv4classA ipv4subnetsize(8) ipv4classB ipv4subnetsize(16) ipv4classC ipv4subnetsize(24) ipv6subnetsize(prefix_len) units=[1;1] domain=[0,128] \ range=[1,340282366920938463463374607431768211456] \ 2^(128-prefix_len) ; 128-log2(ipv6subnetsize) # # Musical measures. Musical intervals expressed as ratios. Multiply # two intervals together to get the sum of the interval. The function # musicalcent can be used to convert ratios to cents. # # Perfect intervals octave 2 majorsecond musicalfifth^2 / octave majorthird 5|4 minorthird 6|5 musicalfourth 4|3 musicalfifth 3|2 majorsixth musicalfourth majorthird minorsixth musicalfourth minorthird majorseventh musicalfifth majorthird minorseventh musicalfifth minorthird pythagoreanthird majorsecond musicalfifth^2 / octave syntoniccomma pythagoreanthird / majorthird pythagoreancomma musicalfifth^12 / octave^7 # Equal tempered definitions semitone octave^(1|12) musicalcent(x) units=[1;1] range=(0,) semitone^(x/100) ; \ 100 log(musicalcent)/log(semitone) # # Musical note lengths. # wholenote ! MUSICAL_NOTE_LENGTH wholenote halfnote 1|2 wholenote quarternote 1|4 wholenote eighthnote 1|8 wholenote sixteenthnote 1|16 wholenote thirtysecondnote 1|32 wholenote sixtyfourthnote 1|64 wholenote dotted 3|2 doubledotted 7|4 breve doublewholenote semibreve wholenote minimnote halfnote crotchet quarternote quaver eighthnote semiquaver sixteenthnote demisemiquaver thirtysecondnote hemidemisemiquaver sixtyfourthnote semidemisemiquaver hemidemisemiquaver # # yarn and cloth measures # # yarn linear density woolyarnrun 1600 yard/pound # 1600 yds of "number 1 yarn" weighs # a pound. yarncut 300 yard/pound # Less common system used in # Pennsylvania for wool yarn cottonyarncount 840 yard/pound linenyarncount 300 yard/pound # Also used for hemp and ramie worstedyarncount 1680 ft/pound metricyarncount meter/gram denier 1|9 tex # used for silk and rayon manchesteryarnnumber drams/1000 yards # old system used for silk pli lb/in typp 1000 yd/lb # abbreviation for Thousand Yard Per Pound asbestoscut 100 yd/lb # used for glass and asbestos yarn tex gram / km # rational metric yarn measure, meant drex 0.1 tex # to be used for any kind of yarn poumar lb / 1e6 yard # yarn and cloth length skeincotton 80*54 inch # 80 turns of thread on a reel with a # 54 in circumference (varies for other # kinds of thread) cottonbolt 120 ft # cloth measurement woolbolt 210 ft bolt cottonbolt heer 600 yards cut 300 yards # used for wet-spun linen yarn lea 300 yards sailmakersyard 28.5 in sailmakersounce oz / sailmakersyard 36 inch silkmomme momme / 25 yards 1.49 inch # Traditional silk weight silkmm silkmomme # But it is also defined as # lb/100 yd 45 inch. The two # definitions are slightly different # and neither one seems likely to be # the true source definition. # # drug dosage # mcg microgram # Frequently used for vitamins iudiptheria 62.8 microgram # IU is for international unit iupenicillin 0.6 microgram iuinsulin 41.67 microgram drop 1|20 ml # The drop was an old "unit" that was # replaced by the minim. But I was # told by a pharmacist that in his # profession, the conversion of 20 # drops per ml is actually used. bloodunit 450 ml # For whole blood. For blood # components, a blood unit is the # quanity of the component found in a # blood unit of whole blood. The # human body contains about 12 blood # units of whole blood. # # misc medical measure # frenchcathetersize 1|3 mm # measure used for the outer diameter # of a catheter charriere frenchcathetersize # # fixup units for times when prefix handling doesn't do the job # hectare hectoare megohm megaohm kilohm kiloohm microhm microohm megalerg megaerg # 'L' added to make it pronounceable [18]. # # Money # # Note that US$ is the primitive unit so other currencies are # generally given in US$. # unitedstatesdollar US$ usdollar US$ $ dollar mark germanymark #bolivar venezuelabolivar # Not all databases are #venezuelabolivarfuerte 1e-5 bolivar # supplying these #bolivarfuerte 1e-5 bolivar # The currency was revalued #oldbolivar 1|1000 bolivarfuerte # twice peseta spainpeseta rand southafricarand escudo portugalescudo guilder netherlandsguilder hollandguilder netherlandsguilder peso mexicopeso yen japanyen lira italylira rupee indiarupee drachma greecedrachma franc francefranc markka finlandmarkka britainpound unitedkingdompound greatbritainpound unitedkingdompound unitedkingdompound ukpound poundsterling britainpound yuan chinayuan # Unicode Currency Names !utf8 icelandkróna icelandkrona polandzÅ‚oty polandzloty tongapa’anga tongapa'anga #venezuelabolívar venezuelabolivar vietnamđồng vietnamdong mongoliatögrög mongoliatugrik sãotomé&príncipedobra saotome&principedobra !endutf8 UKP GBP # Not an ISO code, but looks like one, and # sometimes used on usenet. !include currency.units # Money on the gold standard, used in the late 19th century and early # 20th century. olddollargold 23.22 grains goldprice # Used until 1934 newdollargold 96|7 grains goldprice # After Jan 31, 1934 dollargold newdollargold poundgold 113 grains goldprice # British pound # Precious metals goldounce goldprice troyounce silverounce silverprice troyounce platinumounce platinumprice troyounce XAU goldounce XPT platinumounce XAG silverounce # Nominal masses of US coins. Note that dimes, quarters and half dollars # have weight proportional to value. Before 1965 it was $40 / kg. USpennyweight 2.5 grams # Since 1982, 48 grains before USnickelweight 5 grams USdimeweight US$ 0.10 / (20 US$ / lb) # Since 1965 USquarterweight US$ 0.25 / (20 US$ / lb) # Since 1965 UShalfdollarweight US$ 0.50 / (20 US$ / lb) # Since 1971 USdollarweight 8.1 grams # Weight of Susan B. Anthony and # Sacagawea dollar coins # British currency quid britainpound # Slang names fiver 5 quid tenner 10 quid monkey 500 quid brgrand 1000 quid bob shilling shilling 1|20 britainpound # Before decimalisation, there oldpence 1|12 shilling # were 20 shillings to a pound, farthing 1|4 oldpence # each of twelve old pence guinea 21 shilling # Still used in horse racing crown 5 shilling florin 2 shilling groat 4 oldpence tanner 6 oldpence brpenny 0.01 britainpound pence brpenny tuppence 2 pence tuppenny tuppence ha'penny halfbrpenny hapenny ha'penny oldpenny oldpence oldtuppence 2 oldpence oldtuppenny oldtuppence threepence 3 oldpence # threepence never refers to new money threepenny threepence oldthreepence threepence oldthreepenny threepence oldhalfpenny halfoldpenny oldha'penny oldhalfpenny oldhapenny oldha'penny brpony 25 britainpound # Canadian currency loony 1 canadadollar # This coin depicts a loon toony 2 canadadollar # Cryptocurrency satoshi 1e-8 bitcoin XBT bitcoin # nonstandard code # # Units used for measuring volume of wood # cord 4*4*8 ft^3 # 4 ft by 4 ft by 8 ft bundle of wood facecord 1|2 cord cordfoot 1|8 cord # One foot long section of a cord cordfeet cordfoot housecord 1|3 cord # Used to sell firewood for residences, # often confusingly called a "cord" boardfoot ft^2 inch # Usually 1 inch thick wood boardfeet boardfoot fbm boardfoot # feet board measure stack 4 yard^3 # British, used for firewood and coal [18] rick 4 ft 8 ft 16 inches # Stack of firewood, supposedly # sometimes called a face cord, but this # value is equal to 1|3 cord. Name # comes from an old Norse word for a # stack of wood. stere m^3 timberfoot ft^3 # Used for measuring solid blocks of wood standard 120 12 ft 11 in 1.5 in # This is the St Petersburg or # Pittsburg standard. Apparently the # term is short for "standard hundred" # which was meant to refer to 100 pieces # of wood (deals). However, this # particular standard is equal to 120 # deals which are 12 ft by 11 in by 1.5 # inches (not the standard deal). hoppusfoot (4/pi) ft^3 # Volume calculation suggested in 1736 hoppusboardfoot 1|12 hoppusfoot # forestry manual by Edward Hoppus, for hoppuston 50 hoppusfoot # estimating the usable volume of a log. # It results from computing the volume # of a cylindrical log of length, L, and # girth (circumference), G, by V=L(G/4)^2. # The hoppus ton is apparently still in # use for shipments from Southeast Asia. # In Britain, the deal is apparently any piece of wood over 6 feet long, over # 7 wide and 2.5 inches thick. The OED doesn't give a standard size. A piece # of wood less than 7 inches wide is called a "batten". This unit is now used # exclusively for fir and pine. deal 12 ft 11 in 2.5 in # The standard North American deal [OED] wholedeal 12 ft 11 in 1.25 in # If it's half as thick as the standard # deal it's called a "whole deal"! splitdeal 12 ft 11 in 5|8 in # And half again as thick is a split deal. # Used for shellac mixing rate poundcut pound / gallon lbcut poundcut # # Gas and Liquid flow units # FLUID_FLOW VOLUME / TIME # Some obvious volumetric gas flow units (cu is short for cubic) cumec m^3/s cusec ft^3/s # Conventional abbreviations for fluid flow units gph gal/hr gpm gal/min mgd megagal/day cfs ft^3/s cfh ft^3/hour cfm ft^3/min lpm liter/min lfm ft/min # Used to report air flow produced by fans. # Multiply by cross sectional area to get a # flow in cfm. pru mmHg / (ml/min) # peripheral resistance unit, used in # medicine to assess blood flow in # the capillaries. # Miner's inch: This is an old historic unit used in the Western United # States. It is generally defined as the rate of flow through a one square # inch hole at a specified depth such as 4 inches. In the late 19th century, # volume of water was sometimes measured in the "24 hour inch". Values for the # miner's inch were fixed by state statues. (This information is from a web # site operated by the Nevada Division of Water Planning: The Water Words # Dictionary at http://www.state.nv.us/cnr/ndwp/dict-1/waterwds.htm.) minersinchAZ 1.5 ft^3/min minersinchCA 1.5 ft^3/min minersinchMT 1.5 ft^3/min minersinchNV 1.5 ft^3/min minersinchOR 1.5 ft^3/min minersinchID 1.2 ft^3/min minersinchKS 1.2 ft^3/min minersinchNE 1.2 ft^3/min minersinchNM 1.2 ft^3/min minersinchND 1.2 ft^3/min minersinchSD 1.2 ft^3/min minersinchUT 1.2 ft^3/min minersinchCO 1 ft^3/sec / 38.4 # 38.4 miner's inches = 1 ft^3/sec minersinchBC 1.68 ft^3/min # British Columbia # Oceanographic flow sverdrup 1e6 m^3 / sec # Used to express flow of ocean # currents. Named after Norwegian # oceanographer H. Sverdrup. # In vacuum science and some other applications, gas flow is measured # as the product of volumetric flow and pressure. This is useful # because it makes it easy to compare with the flow at standard # pressure (one atmosphere). It also directly relates to the number # of gas molecules per unit time, and hence to the mass flow if the # molecular mass is known. GAS_FLOW PRESSURE FLUID_FLOW sccm atm cc/min # 's' is for "standard" to indicate sccs atm cc/sec # flow at standard pressure scfh atm ft^3/hour # scfm atm ft^3/min slpm atm liter/min slph atm liter/hour lusec liter micron Hg / s # Used in vacuum science # US Standard Atmosphere (1976) # Atmospheric temperature and pressure vs. geometric height above sea level # This definition covers only the troposphere (the lowest atmospheric # layer, up to 11 km), and assumes the layer is polytropic. # A polytropic process is one for which PV^k = const, where P is the # pressure, V is the volume, and k is the polytropic exponent. The # polytropic index is n = 1 / (k - 1). As noted in the Wikipedia article # https://en.wikipedia.org/wiki/Polytropic_process, some authors reverse # the definitions of "exponent" and "index." The functions below assume # the following parameters: # temperature lapse rate, -dT/dz, in troposphere lapserate 6.5 K/km # US Std Atm (1976) # air molecular weight, including constituent mol wt, given # in Table 3, p. 3 air_1976 78.084 % 28.0134 \ + 20.9476 % 31.9988 \ + 9340 ppm 39.948 \ + 314 ppm 44.00995 \ + 18.18 ppm 20.183 \ + 5.24 ppm 4.0026 \ + 2 ppm 16.04303 \ + 1.14 ppm 83.80 \ + 0.55 ppm 2.01594 \ + 0.087 ppm 131.30 # universal gas constant R_1976 8.31432e3 N m/(kmol K) # polytropic index n polyndx_1976 air_1976 (kg/kmol) gravity/(R_1976 lapserate) - 1 # If desired, redefine using current values for air mol wt and R polyndx polyndx_1976 # polyndx air (kg/kmol) gravity/(R lapserate) - 1 # for comparison with various references polyexpnt (polyndx + 1) / polyndx # The model assumes the following reference values: # sea-level temperature and pressure stdatmT0 288.15 K stdatmP0 atm # "effective radius" for relation of geometric to geopotential height, # at a latitude at which g = 9.80665 m/s (approximately 45.543 deg); no # relation to actual radius earthradUSAtm 6356766 m # Temperature vs. geopotential height h # Assumes 15 degC at sea level # Based on approx 45 deg latitude # Lower limits of domain and upper limits of range are those of the # tables in US Standard Atmosphere (NASA 1976) stdatmTH(h) units=[m;K] domain=[-5000,11e3] range=[217,321] \ stdatmT0+(-lapserate h) ; (stdatmT0+(-stdatmTH))/lapserate # Temperature vs. geometric height z; based on approx 45 deg latitude stdatmT(z) units=[m;K] domain=[-5000,11e3] range=[217,321] \ stdatmTH(geop_ht(z)) ; ~geop_ht(~stdatmTH(stdatmT)) # Pressure vs. geopotential height h # Assumes 15 degC and 101325 Pa at sea level # Based on approx 45 deg latitude # Lower limits of domain and upper limits of range are those of the # tables in US Standard Atmosphere (NASA 1976) stdatmPH(h) units=[m;Pa] domain=[-5000,11e3] range=[22877,177764] \ atm (1 - (lapserate/stdatmT0) h)^(polyndx + 1) ; \ (stdatmT0/lapserate) (1+(-(stdatmPH/stdatmP0)^(1/(polyndx + 1)))) # Pressure vs. geometric height z; based on approx 45 deg latitude stdatmP(z) units=[m;Pa] domain=[-5000,11e3] range=[22877,177764] \ stdatmPH(geop_ht(z)); ~geop_ht(~stdatmPH(stdatmP)) # Geopotential height from geometric height # Based on approx 45 deg latitude # Lower limits of domain and range are somewhat arbitrary; they # correspond to the limits in the US Std Atm tables geop_ht(z) units=[m;m] domain=[-5000,) range=[-5004,) \ (earthradUSAtm z) / (earthradUSAtm + z) ; \ (earthradUSAtm geop_ht) / (earthradUSAtm + (-geop_ht)) # The standard value for the sea-level acceleration due to gravity is # 9.80665 m/s^2, but the actual value varies with latitude (Harrison 1949) # R_eff = 2 g_phi / denom # g_phi = 978.0356e-2 (1+0.0052885 sin(lat)^2+(-0.0000059) sin(2 lat)^2) # or # g_phi = 980.6160e-2 (1+(-0.0026373) cos(2 lat)+0.0000059 cos(2 lat)^2) # denom = 3.085462e-6+2.27e-9 cos(2 lat)+(-2e-12) cos(4 lat) (minutes?) # There is no inverse function; the standard value applies at a latitude # of about 45.543 deg g_phi(lat) units=[deg;m/s2] domain=[0,90] noerror \ 980.6160e-2 (1+(-0.0026373) cos(2 lat)+0.0000059 cos(2 lat)^2) m/s2 # effective Earth radius for relation of geometric height to # geopotential height, as function of latitude (Harrison 1949) earthradius_eff(lat) units=[deg;m] domain=[0,90] noerror \ m 2 9.780356 (1+0.0052885 sin(lat)^2+(-0.0000059) sin(2 lat)^2) / \ (3.085462e-6 + 2.27e-9 cos(2 lat) + (-2e-12) cos(4 lat)) # References # Harrison, L.P. 1949. Relation Between Geopotential and Geometric # Height. In Smithsonian Meteorological Tables. List, Robert J., ed. # 6th ed., 4th reprint, 1968. Washington, DC: Smithsonian Institution. # NASA. US National Aeronautics and Space Administration. 1976. # US Standard Atmosphere 1976. Washington, DC: US Government Printing Office. # Gauge pressure functions # # Gauge pressure is measured relative to atmospheric pressure. In the English # system, where pressure is often given in pounds per square inch, gauge # pressure is often indicated by 'psig' to distinguish it from absolute # pressure, often indicated by 'psia'. At the standard atmospheric pressure # of 14.696 psia, a gauge pressure of 0 psig is an absolute pressure of 14.696 # psia; an automobile tire inflated to 31 psig has an absolute pressure of # 45.696 psia. # # With gaugepressure(), the units must be specified (e.g., gaugepressure(1.5 # bar)); with psig(), the units are taken as psi, so the example above of tire # pressure could be given as psig(31). # # If the normal elevation is significantly different from sea level, change # Patm appropriately, and adjust the lower domain limit on the gaugepressure # definition. Patm atm gaugepressure(x) units=[Pa;Pa] domain=[-101325,) range=[0,) \ x + Patm ; gaugepressure+(-Patm) psig(x) units=[1;Pa] domain=[-14.6959487755135,) range=[0,) \ gaugepressure(x psi) ; ~gaugepressure(psig) / psi # Pressure for underwater diving seawater 0.1 bar / meter msw meter seawater fsw foot seawater # # Wire Gauge # # This area is a nightmare with huge charts of wire gauge diameters # that usually have no clear origin. There are at least 5 competing wire gauge # systems to add to the confusion. The use of wire gauge is related to the # manufacturing method: a metal rod is heated and drawn through a hole. The # size change can't be too big. To get smaller wires, the process is repeated # with a series of smaller holes. Generally larger gauges mean smaller wires. # The gauges often have values such as "00" and "000" which are larger sizes # than simply "0" gauge. In the tables that appear below, these gauges must be # specified as negative numbers (e.g. "00" is -1, "000" is -2, etc). # Alternatively, you can use the following units: # g00 (-1) g000 (-2) g0000 (-3) g00000 (-4) g000000 (-5) g0000000 (-6) # American Wire Gauge (AWG) or Brown & Sharpe Gauge appears to be the most # important gauge. ASTM B-258 specifies that this gauge is based on geometric # interpolation between gauge 0000, which is 0.46 inches exactly, and gauge 36 # which is 0.005 inches exactly. Therefore, the diameter in inches of a wire # is given by the formula 1|200 92^((36-g)/39). Note that 92^(1/39) is close # to 2^(1/6), so diameter is approximately halved for every 6 gauges. For the # repeated zero values, use negative numbers in the formula. The same document # also specifies rounding rules which seem to be ignored by makers of tables. # Gauges up to 44 are to be specified with up to 4 significant figures, but no # closer than 0.0001 inch. Gauges from 44 to 56 are to be rounded to the # nearest 0.00001 inch. # # In addition to being used to measure wire thickness, this gauge is used to # measure the thickness of sheets of aluminum, copper, and most metals other # than steel, iron and zinc. wiregauge(g) units=[1;m] range=(0,) \ 1|200 92^((36+(-g))/39) in; 36+(-39)ln(200 wiregauge/in)/ln(92) awg() wiregauge # Next we have the SWG, the Imperial or British Standard Wire Gauge. This one # is piecewise linear. It was used for aluminum sheets. brwiregauge[in] \ -6 0.5 \ -5 0.464 \ -3 0.4 \ -2 0.372 \ 3 0.252 \ 6 0.192 \ 10 0.128 \ 14 0.08 \ 19 0.04 \ 23 0.024 \ 26 0.018 \ 28 0.0148 \ 30 0.0124 \ 39 0.0052 \ 49 0.0012 \ 50 0.001 # The following is from the Appendix to ASTM B 258 # # For example, in U.S. gage, the standard for sheet metal is based on the # weight of the metal, not on the thickness. 16-gage is listed as # approximately .0625 inch thick and 40 ounces per square foot (the original # standard was based on wrought iron at .2778 pounds per cubic inch; steel # has almost entirely superseded wrought iron for sheet use, at .2833 pounds # per cubic inch). Smaller numbers refer to greater thickness. There is no # formula for converting gage to thickness or weight. # # It's rather unclear from the passage above whether the plate gauge values are # therefore wrong if steel is being used. Reference [15] states that steel is # in fact measured using this gauge (under the name Manufacturers' Standard # Gauge) with a density of 501.84 lb/ft3 = 0.2904 lb/in3 used for steel. # But this doesn't seem to be the correct density of steel (.2833 lb/in3 is # closer). # # This gauge was established in 1893 for purposes of taxation. # Old plate gauge for iron plategauge[(oz/ft^2)/(480*lb/ft^3)] \ -5 300 \ 1 180 \ 14 50 \ 16 40 \ 17 36 \ 20 24 \ 26 12 \ 31 7 \ 36 4.5 \ 38 4 # Manufacturers Standard Gage stdgauge[(oz/ft^2)/(501.84*lb/ft^3)] \ -5 300 \ 1 180 \ 14 50 \ 16 40 \ 17 36 \ 20 24 \ 26 12 \ 31 7 \ 36 4.5 \ 38 4 # A special gauge is used for zinc sheet metal. Notice that larger gauges # indicate thicker sheets. zincgauge[in] \ 1 0.002 \ 10 0.02 \ 15 0.04 \ 19 0.06 \ 23 0.1 \ 24 0.125 \ 27 0.5 \ 28 1 # # Imperial drill bit sizes are reported in inches or in a numerical or # letter gauge. # drillgauge[in] \ 1 0.2280 \ 2 0.2210 \ 3 0.2130 \ 4 0.2090 \ 5 0.2055 \ 6 0.2040 \ 7 0.2010 \ 8 0.1990 \ 9 0.1960 \ 10 0.1935 \ 11 0.1910 \ 12 0.1890 \ 13 0.1850 \ 14 0.1820 \ 15 0.1800 \ 16 0.1770 \ 17 0.1730 \ 18 0.1695 \ 19 0.1660 \ 20 0.1610 \ 22 0.1570 \ 23 0.1540 \ 24 0.1520 \ 25 0.1495 \ 26 0.1470 \ 27 0.1440 \ 28 0.1405 \ 29 0.1360 \ 30 0.1285 \ 31 0.1200 \ 32 0.1160 \ 33 0.1130 \ 34 0.1110 \ 35 0.1100 \ 36 0.1065 \ 38 0.1015 \ 39 0.0995 \ 40 0.0980 \ 41 0.0960 \ 42 0.0935 \ 43 0.0890 \ 44 0.0860 \ 45 0.0820 \ 46 0.0810 \ 48 0.0760 \ 51 0.0670 \ 52 0.0635 \ 53 0.0595 \ 54 0.0550 \ 55 0.0520 \ 56 0.0465 \ 57 0.0430 \ 65 0.0350 \ 66 0.0330 \ 68 0.0310 \ 69 0.0292 \ 70 0.0280 \ 71 0.0260 \ 73 0.0240 \ 74 0.0225 \ 75 0.0210 \ 76 0.0200 \ 78 0.0160 \ 79 0.0145 \ 80 0.0135 \ 88 0.0095 \ 104 0.0031 drillA 0.234 in drillB 0.238 in drillC 0.242 in drillD 0.246 in drillE 0.250 in drillF 0.257 in drillG 0.261 in drillH 0.266 in drillI 0.272 in drillJ 0.277 in drillK 0.281 in drillL 0.290 in drillM 0.295 in drillN 0.302 in drillO 0.316 in drillP 0.323 in drillQ 0.332 in drillR 0.339 in drillS 0.348 in drillT 0.358 in drillU 0.368 in drillV 0.377 in drillW 0.386 in drillX 0.397 in drillY 0.404 in drillZ 0.413 in # # Screw sizes # # In the USA, screw diameters for both wood screws and machine screws # are reported using a gauge number. Metric machine screws are # reported as Mxx where xx is the diameter in mm. # screwgauge(g) units=[1;m] range=[0,) \ (.06 + .013 g) in ; (screwgauge/in + (-.06)) / .013 # # Abrasive grit size # # Standards governing abrasive grit sizes are complicated, specifying # fractions of particles that are passed or retained by different mesh # sizes. As a result, it is not possible to make precise comparisons # of different grit standards. The tables below allow the # determination of rough equivlants by using median particle size. # # Standards in the USA are determined by the Unified Abrasives # Manufacturers' Association (UAMA), which resulted from the merger of # several previous organizations. One of the old organizations was # CAMI (Coated Abrasives Manufacturers' Institute). # # UAMA has a web page with plots showing abrasive particle ranges for # various different grits and comparisons between standards. # # http://www.uama.org/Abrasives101/101Standards.html # # Abrasives are grouped into "bonded" abrasives for use with grinding # wheels and "coated" abrasives for sandpapers and abrasive films. # The industry uses different grit standards for these two # categories. # # Another division is between "macrogrits", grits below 240 and # "microgrits", which are above 240. Standards differ, as do methods # for determining particle size. In the USA, ANSI B74.12 is the # standard governing macrogrits. ANSI B74.10 covers bonded microgrit # abrasives, and ANSI B74.18 covers coated microgrit abrasives. It # appears that the coated standard is identical to the bonded standard # for grits up through 600 but then diverges significantly. # # European grit sizes are determined by the Federation of European # Producers of Abrasives. http://www.fepa-abrasives.org # # They give two standards, the "F" grit for bonded abrasives and the # "P" grit for coated abrasives. This data is taken directly from # their web page. # FEPA P grit for coated abrasives is commonly seen on sandpaper in # the USA where the paper will be marked P600, for example. FEPA P # grits are said to be more tightly constrained than comparable ANSI # grits so that the particles are more uniform in size and hence give # a better finish. grit_P[micron] \ 12 1815 \ 16 1324 \ 20 1000 \ 24 764 \ 30 642 \ 36 538 \ 40 425 \ 50 336 \ 60 269 \ 80 201 \ 100 162 \ 120 125 \ 150 100 \ 180 82 \ 220 68 \ 240 58.5 \ 280 52.2 \ 320 46.2 \ 360 40.5 \ 400 35 \ 500 30.2 \ 600 25.8 \ 800 21.8 \ 1000 18.3 \ 1200 15.3 \ 1500 12.6 \ 2000 10.3 \ 2500 8.4 # The F grit is the European standard for bonded abrasives such as # grinding wheels grit_F[micron] \ 4 4890 \ 5 4125 \ 6 3460 \ 7 2900 \ 8 2460 \ 10 2085 \ 12 1765 \ 14 1470 \ 16 1230 \ 20 1040 \ 22 885 \ 24 745 \ 30 625 \ 36 525 \ 40 438 \ 46 370 \ 54 310 \ 60 260 \ 70 218 \ 80 185 \ 90 154 \ 100 129 \ 120 109 \ 150 82 \ 180 69 \ 220 58 \ 230 53 \ 240 44.5 \ 280 36.5 \ 320 29.2 \ 360 22.8 \ 400 17.3 \ 500 12.8 \ 600 9.3 \ 800 6.5 \ 1000 4.5 \ 1200 3 \ 1500 2.0 \ 2000 1.2 # According to the UAMA web page, the ANSI bonded and ANSI coated standards # are identical to FEPA F in the macrogrit range (under 240 grit), so these # values are taken from the FEPA F table. The values for 240 and above are # from the UAMA web site and represent the average of the "d50" range # endpoints listed there. ansibonded[micron] \ 4 4890 \ 5 4125 \ 6 3460 \ 7 2900 \ 8 2460 \ 10 2085 \ 12 1765 \ 14 1470 \ 16 1230 \ 20 1040 \ 22 885 \ 24 745 \ 30 625 \ 36 525 \ 40 438 \ 46 370 \ 54 310 \ 60 260 \ 70 218 \ 80 185 \ 90 154 \ 100 129 \ 120 109 \ 150 82 \ 180 69 \ 220 58 \ 240 50 \ 280 39.5 \ 320 29.5 \ 360 23 \ 400 18.25 \ 500 13.9 \ 600 10.55 \ 800 7.65 \ 1000 5.8 \ 1200 3.8 grit_ansibonded() ansibonded # Like the bonded grit, the coated macrogrits below 240 are taken from the # FEPA F table. Data above this is from the UAMA site. Note that the coated # and bonded standards are evidently the same from 240 up to 600 grit, but # starting at 800 grit, the coated standard diverges. The data from UAMA show # that 800 grit coated has an average size slightly larger than the average # size of 600 grit coated/bonded. However, the 800 grit has a significantly # smaller particle size variation. # # Because of this non-monotonicity from 600 grit to 800 grit this definition # produces a warning about the lack of a unique inverse. ansicoated[micron] noerror \ 4 4890 \ 5 4125 \ 6 3460 \ 7 2900 \ 8 2460 \ 10 2085 \ 12 1765 \ 14 1470 \ 16 1230 \ 20 1040 \ 22 885 \ 24 745 \ 30 625 \ 36 525 \ 40 438 \ 46 370 \ 54 310 \ 60 260 \ 70 218 \ 80 185 \ 90 154 \ 100 129 \ 120 109 \ 150 82 \ 180 69 \ 220 58 \ 240 50 \ 280 39.5 \ 320 29.5 \ 360 23 \ 400 18.25 \ 500 13.9 \ 600 10.55 \ 800 11.5 \ 1000 9.5 \ 2000 7.2 \ 2500 5.5 \ 3000 4 \ 4000 3 \ 6000 2 \ 8000 1.2 grit_ansicoated() ansicoated # # Is this correct? This is the JIS Japanese standard used on waterstones # jisgrit[micron] \ 150 75 \ 180 63 \ 220 53 \ 280 48 \ 320 40 \ 360 35 \ 400 30 \ 600 20 \ 700 17 \ 800 14 \ 1000 11.5 \ 1200 9.5 \ 1500 8 \ 2000 6.7 \ 2500 5.5 \ 3000 4 \ 4000 3 \ 6000 2 \ 8000 1.2 # The "Finishing Scale" marked with an A (e.g. A75). This information # is from the web page of the sand paper manufacturer Klingspor # http://www.klingspor.com/gritgradingsystems.htm # # I have no information about what this scale is used for. grit_A[micron]\ 16 15.3 \ 25 21.8 \ 30 23.6 \ 35 25.75 \ 45 35 \ 60 46.2 \ 65 53.5 \ 75 58.5 \ 90 65 \ 110 78 \ 130 93 \ 160 127 \ 200 156 # # Grits for DMT brand diamond sharpening stones from # http://dmtsharp.com/products/colorcode.htm # dmtxxcoarse 120 micron # 120 mesh dmtsilver dmtxxcoarse dmtxx dmtxxcoarse dmtxcoarse 60 micron # 220 mesh dmtx dmtxcoarse dmtblack dmtxcoarse dmtcoarse 45 micron # 325 mesh dmtc dmtcoarse dmtblue dmtcoarse dmtfine 25 micron # 600 mesh dmtred dmtfine dmtf dmtfine dmtefine 9 micron # 1200 mesh dmte dmtefine dmtgreen dmtefine dmtceramic 7 micron # 2200 mesh dmtcer dmtceramic dmtwhite dmtceramic dmteefine 3 micron # 8000 mesh dmttan dmteefine dmtee dmteefine # # The following values come from a page in the Norton Stones catalog, # available at their web page, http://www.nortonstones.com. # hardtranslucentarkansas 6 micron # Natural novaculite (silicon quartz) softarkansas 22 micron # stones extrafineindia 22 micron # India stones are Norton's manufactured fineindia 35 micron # aluminum oxide product mediumindia 53.5 micron coarseindia 97 micron finecrystolon 45 micron # Crystolon stones are Norton's mediumcrystalon 78 micron # manufactured silicon carbide product coarsecrystalon 127 micron # The following are not from the Norton catalog hardblackarkansas 6 micron hardwhitearkansas 11 micron washita 35 micron # # Mesh systems for measuring particle sizes by sifting through a wire # mesh or sieve # # The Tyler system and US Sieve system are based on four steps for # each factor of 2 change in the size, so each size is 2^1|4 different # from the adjacent sizes. Unfortunately, the mesh numbers are # arbitrary, so the sizes cannot be expressed with a functional form. # Various references round the values differently. The mesh numbers # are supposed to correspond to the number of holes per inch, but this # correspondence is only approximate because it doesn't include the # wire size of the mesh. # The Tyler Mesh system was apparently introduced by the WS Tyler # company, but it appears that they no longer use it. They follow the # ASTM E11 standard. meshtyler[micron] \ 2.5 8000 \ 3 6727 \ 3.5 5657 \ 4 4757 \ 5 4000 \ 6 3364 \ 7 2828 \ 8 2378 \ 9 2000 \ 10 1682 \ 12 1414 \ 14 1189 \ 16 1000 \ 20 841 \ 24 707 \ 28 595 \ 32 500 \ 35 420 \ 42 354 \ 48 297 \ 60 250 \ 65 210 \ 80 177 \ 100 149 \ 115 125 \ 150 105 \ 170 88 \ 200 74 \ 250 63 \ 270 53 \ 325 44 \ 400 37 # US Sieve size, ASTM E11 # # The WS Tyler company prints the list from ASTM E11 in their catalog, # http://wstyler.com/wp-content/uploads/2015/11/Product-Catalog-2.pdf sieve[micron] \ 3.5 5600 \ 4 4750 \ 5 4000 \ 6 3350 \ 7 2800 \ 8 2360 \ 10 2000 \ 12 1700 \ 14 1400 \ 16 1180 \ 18 1000 \ 20 850 \ 25 710 \ 30 600 \ 35 500 \ 40 425 \ 45 355 \ 50 300 \ 60 250 \ 70 212 \ 80 180 \ 100 150 \ 120 125 \ 140 106 \ 170 90 \ 200 75 \ 230 63 \ 270 53 \ 325 45 \ 400 38 \ 450 32 \ 500 25 \ 625 20 # These last two values are not in the standard series # but were included in the ASTM standard because they meshUS() sieve # were in common usage. # British Mesh size, BS 410: 1986 # This system appears to correspond to the Tyler and US system, but # with different mesh numbers. # # http://www.panadyne.com/technical/panadyne_international_sieve_chart.pdf # meshbritish[micron] \ 3 5657 \ 3.5 4757 \ 4 4000 \ 5 3364 \ 6 2828 \ 7 2378 \ 8 2000 \ 10 1682 \ 12 1414 \ 14 1189 \ 16 1000 \ 18 841 \ 22 707 \ 25 595 \ 30 500 \ 36 420 \ 44 354 \ 52 297 \ 60 250 \ 72 210 \ 85 177 \ 100 149 \ 120 125 \ 150 105 \ 170 88 \ 200 74 \ 240 63 \ 300 53 \ 350 44 \ 400 37 # French system, AFNOR NFX11-501: 1970 # The system appears to be based on size doubling every 3 mesh # numbers, though the values have been agressively rounded. # It's not clear if the unrounded values would be considered # incorrect, so this is given as a table rather than a function. # Functional form: # meshtamis(mesh) units=[1;m] 5000 2^(1|3 (mesh-38)) micron # # http://www.panadyne.com/technical/panadyne_international_sieve_chart.pdf meshtamis[micron] \ 17 40 \ 18 50 \ 19 63 \ 20 80 \ 21 100 \ 22 125 \ 23 160 \ 24 200 \ 25 250 \ 26 315 \ 27 400 \ 28 500 \ 29 630 \ 30 800 \ 31 1000 \ 32 1250 \ 33 1600 \ 34 2000 \ 35 2500 \ 36 3150 \ 37 4000 \ 38 5000 # # Ring size. All ring sizes are given as the circumference of the ring. # # USA ring sizes. Several slightly different definitions seem to be in # circulation. According to [15], the interior diameter of size n ring in # inches is 0.32 n + 0.458 for n ranging from 3 to 13.5 by steps of 0.5. The # size 2 ring is inconsistently 0.538in and no 2.5 size is listed. # # However, other sources list 0.455 + 0.0326 n and 0.4525 + 0.0324 n as the # diameter and list no special case for size 2. (Or alternatively they are # 1.43 + .102 n and 1.4216+.1018 n for measuring circumference in inches.) One # reference claimed that the original system was that each size was 1|10 inch # circumference, but that source doesn't have an explanation for the modern # system which is somewhat different. ringsize(n) units=[1;in] domain=[2,) range=[1.6252,) \ (1.4216+.1018 n) in ; (ringsize/in + (-1.4216))/.1018 # Old practice in the UK measured rings using the "Wheatsheaf gauge" with sizes # specified alphabetically and based on the ring inside diameter in steps of # 1|64 inch. This system was replaced in 1987 by British Standard 6820 which # specifies sizes based on circumference. Each size is 1.25 mm different from # the preceding size. The baseline is size C which is 40 mm circumference. # The new sizes are close to the old ones. Sometimes it's necessary to go # beyond size Z to Z+1, Z+2, etc. sizeAring 37.50 mm sizeBring 38.75 mm sizeCring 40.00 mm sizeDring 41.25 mm sizeEring 42.50 mm sizeFring 43.75 mm sizeGring 45.00 mm sizeHring 46.25 mm sizeIring 47.50 mm sizeJring 48.75 mm sizeKring 50.00 mm sizeLring 51.25 mm sizeMring 52.50 mm sizeNring 53.75 mm sizeOring 55.00 mm sizePring 56.25 mm sizeQring 57.50 mm sizeRring 58.75 mm sizeSring 60.00 mm sizeTring 61.25 mm sizeUring 62.50 mm sizeVring 63.75 mm sizeWring 65.00 mm sizeXring 66.25 mm sizeYring 67.50 mm sizeZring 68.75 mm # Japanese sizes start with size 1 at a 13mm inside diameter and each size is # 1|3 mm larger in diameter than the previous one. They are multiplied by pi # to give circumference. jpringsize(n) units=[1;mm] domain=[1,) range=[0.040840704,) \ (38|3 + n/3) pi mm ; 3 jpringsize/ pi mm + (-38) # The European ring sizes are the length of the circumference in mm minus 40. euringsize(n) units=[1;mm] (n+40) mm ; euringsize/mm + (-40) # # Abbreviations # mph mile/hr mpg mile/gal kph km/hr fL footlambert fpm ft/min fps ft/s rpm rev/min rps rev/sec mi mile smi mile nmi nauticalmile mbh 1e3 btu/hour mcm 1e3 circularmil ipy inch/year # used for corrosion rates ccf 100 ft^3 # used for selling water [18] Mcf 1000 ft^3 # not million cubic feet [18] kp kilopond kpm kp meter Wh W hour hph hp hour plf lb / foot # pounds per linear foot # # Compatibility units with Unix version # pa Pa ev eV hg Hg oe Oe mh mH rd rod pf pF gr grain nt N hz Hz hd hogshead dry drygallon/gallon nmile nauticalmile beV GeV bev beV coul C # # Radioactivity units # becquerel /s # Activity of radioactive source Bq becquerel # curie 3.7e10 Bq # Defined in 1910 as the radioactivity Ci curie # emitted by the amount of radon that is # in equilibrium with 1 gram of radium. rutherford 1e6 Bq # RADIATION_DOSE gray gray J/kg # Absorbed dose of radiation Gy gray # rad 1e-2 Gy # From Radiation Absorbed Dose rep 8.38 mGy # Roentgen Equivalent Physical, the amount # of radiation which , absorbed in the # body, would liberate the same amount # of energy as 1 roentgen of X rays # would, or 97 ergs. sievert J/kg # Dose equivalent: dosage that has the Sv sievert # same effect on human tissues as 200 rem 1e-2 Sv # keV X-rays. Different types of # radiation are weighted by the # Relative Biological Effectiveness # (RBE). # # Radiation type RBE # X-ray, gamma ray 1 # beta rays, > 1 MeV 1 # beta rays, < 1 MeV 1.08 # neutrons, < 1 MeV 4-5 # neutrons, 1-10 MeV 10 # protons, 1 MeV 8.5 # protons, .1 MeV 10 # alpha, 5 MeV 15 # alpha, 1 MeV 20 # # The energies are the kinetic energy # of the particles. Slower particles # interact more, so they are more # effective ionizers, and hence have # higher RBE values. # # rem stands for Roentgen Equivalent # Mammal banana_dose 0.1e-6 sievert # Informal measure of the dose due to # eating one average sized banana roentgen 2.58e-4 C / kg # Ionizing radiation that produces # 1 statcoulomb of charge in 1 cc of # dry air at stp. rontgen roentgen # Sometimes it appears spelled this way sievertunit 8.38 rontgen # Unit of gamma ray dose delivered in one # hour at a distance of 1 cm from a # point source of 1 mg of radium # enclosed in platinum .5 mm thick. eman 1e-7 Ci/m^3 # radioactive concentration mache 3.7e-7 Ci/m^3 # # Atomic weights. The atomic weight of an element is the ratio of the mass of # a mole of the element to 1|12 of a mole of Carbon 12. The Standard Atomic # Weights apply to the elements as they occur naturally on earth. Elements # which do not occur naturally or which occur with wide isotopic variability do # not have Standard Atomic Weights. For these elements, the atomic weight is # based on the longest lived isotope, as marked in the comments. In some # cases, the comment for these entries also gives a number which is an atomic # weight for a different isotope that may be of more interest than the longest # lived isotope. # actinium 227.0278 aluminum 26.981539 americium 243.0614 # Longest lived. 241.06 antimony 121.760 argon 39.948 arsenic 74.92159 astatine 209.9871 # Longest lived barium 137.327 berkelium 247.0703 # Longest lived. 249.08 beryllium 9.012182 bismuth 208.98037 boron 10.811 bromine 79.904 cadmium 112.411 calcium 40.078 californium 251.0796 # Longest lived. 252.08 carbon 12.011 cerium 140.115 cesium 132.90543 chlorine 35.4527 chromium 51.9961 cobalt 58.93320 copper 63.546 curium 247.0703 deuterium 2.0141017778 dysprosium 162.50 einsteinium 252.083 # Longest lived erbium 167.26 europium 151.965 fermium 257.0951 # Longest lived fluorine 18.9984032 francium 223.0197 # Longest lived gadolinium 157.25 gallium 69.723 germanium 72.61 gold 196.96654 hafnium 178.49 helium 4.002602 holmium 164.93032 hydrogen 1.00794 indium 114.818 iodine 126.90447 iridium 192.217 iron 55.845 krypton 83.80 lanthanum 138.9055 lawrencium 262.11 # Longest lived lead 207.2 lithium 6.941 lutetium 174.967 magnesium 24.3050 manganese 54.93805 mendelevium 258.10 # Longest lived mercury 200.59 molybdenum 95.94 neodymium 144.24 neon 20.1797 neptunium 237.0482 nickel 58.6934 niobium 92.90638 nitrogen 14.00674 nobelium 259.1009 # Longest lived osmium 190.23 oxygen 15.9994 palladium 106.42 phosphorus 30.973762 platinum 195.08 plutonium 244.0642 # Longest lived. 239.05 polonium 208.9824 # Longest lived. 209.98 potassium 39.0983 praseodymium 140.90765 promethium 144.9127 # Longest lived. 146.92 protactinium 231.03588 radium 226.0254 radon 222.0176 # Longest lived rhenium 186.207 rhodium 102.90550 rubidium 85.4678 ruthenium 101.07 samarium 150.36 scandium 44.955910 selenium 78.96 silicon 28.0855 silver 107.8682 sodium 22.989768 strontium 87.62 sulfur 32.066 tantalum 180.9479 technetium 97.9072 # Longest lived. 98.906 tellurium 127.60 terbium 158.92534 thallium 204.3833 thorium 232.0381 thullium 168.93421 tin 118.710 titanium 47.867 tungsten 183.84 uranium 238.0289 vanadium 50.9415 xenon 131.29 ytterbium 173.04 yttrium 88.90585 zinc 65.39 zirconium 91.224 # Average molecular weight of air # # The atmospheric composition listed is from NASA Earth Fact Sheet (accessed # 28 August 2015) # http://nssdc.gsfc.nasa.gov/planetary/factsheet/earthfact.html # Numbers do not add up to exactly 100% due to roundoff and uncertainty Water # is highly variable, typically makes up about 1% air 78.08% nitrogen 2 \ + 20.95% oxygen 2 \ + 9340 ppm argon \ + 400 ppm (carbon + oxygen 2) \ + 18.18 ppm neon \ + 5.24 ppm helium \ + 1.7 ppm (carbon + 4 hydrogen) \ + 1.14 ppm krypton \ + 0.55 ppm hydrogen 2 # # population units # people 1 person people death people capita people percapita per capita # TGM dozen based unit system listed on the "dozenal" forum # http://www.dozenalsociety.org.uk/apps/tgm.htm. These units are # proposed as an allegedly more rational alternative to the SI system. Tim 12^-4 hour # Time Grafut gravity Tim^2 # Length based on gravity Surf Grafut^2 # area Volm Grafut^3 # volume Vlos Grafut/Tim # speed Denz Maz/Volm # density Mag Maz gravity # force Maz Volm kg / oldliter # mass based on water Tm Tim # Abbreviations Gf Grafut Sf Surf Vm Volm Vl Vlos Mz Maz Dz Denz # Dozen based unit prefixes Zena- 12 Duna- 12^2 Trina- 12^3 Quedra- 12^4 Quena- 12^5 Hesa- 12^6 Seva- 12^7 Aka- 12^8 Neena- 12^9 Dexa- 12^10 Lefa- 12^11 Zennila- 12^12 Zeni- 12^-1 Duni- 12^-2 Trini- 12^-3 Quedri- 12^-4 Queni- 12^-5 Hesi- 12^-6 Sevi- 12^-7 Aki- 12^-8 Neeni- 12^-9 Dexi- 12^-10 Lefi- 12^-11 Zennili- 12^-12 # # Traditional Japanese units (shakkanhou) # # The traditional system of weights and measures is called shakkanhou from the # shaku and the ken. Japan accepted SI units in 1891 and legalized conversions # to the traditional system. In 1909 the inch-pound system was also legalized, # so Japan had three legally approved systems. A change to the metric system # started in 1921 but there was a lot of resistance. The Measurement Law of # October 1999 prohibits sales in anything but SI units. However, the old # units still live on in construction and as the basis for paper sizes of books # and tools used for handicrafts. # # Note that units below use the Hepburn romanization system. Some other # systems would render "mou", "jou", and "chou" as "mo", "jo" and "cho". # # # http://hiramatu-hifuka.com/onyak/onyindx.html # Japanese Proportions. These are still in everyday use. They also # get used as units to represent the proportion of the standard unit. wari_proportion 1|10 wari wari_proportion bu_proportion 1|100 # The character bu can also be read fun or bun # but usually "bu" is used for units. rin_proportion 1|1000 mou_proportion 1|10000 # Japanese Length Measures # # The length system is called kanejaku or # square and originated in China. It was # adopted as Japan's official measure in 701 # by the Taiho Code. This system is still in # common use in architecture and clothing. shaku 1|3.3 m mou 1|10000 shaku rin 1|1000 shaku bu_distance 1|100 shaku sun 1|10 shaku jou_distance 10 shaku jou jou_distance kanejakusun sun # Alias to emphasize architectural name kanejaku shaku kanejakujou jou # http://en.wikipedia.org/wiki/Taiwanese_units_of_measurement taichi shaku # http://zh.wikipedia.org/wiki/å°å°º taicun sun # http://zh.wikipedia.org/wiki/å°åˆ¶ !utf8 å°å°º taichi # via Hanyu Pinyin romanizations å°å¯¸ taicun !endutf8 # In context of clothing, shaku is different from architecture # http://www.scinet.co.jp/sci/sanwa/kakizaki-essay54.html kujirajaku 10|8 shaku kujirajakusun 1|10 kujirajaku kujirajakubu 1|100 kujirajaku kujirajakujou 10 kujirajaku tan_distance 3 kujirajakujou ken 6 shaku # Also sometimes 6.3, 6.5, or 6.6 # http://www.homarewood.co.jp/syakusun.htm # mostly unused chou_distance 60 ken chou chou_distance ri 36 chou # Japanese Area Measures # Tsubo is still used for land size, though the others are more # recognized by their homonyms in the other measurements. gou_area 1|10 tsubo tsubo 36 shaku^2 # Size of two tatami = ken^2 ?? se 30 tsubo tan_area 10 se chou_area 10 tan_area # http://en.wikipedia.org/wiki/Taiwanese_units_of_measurement ping tsubo # http://zh.wikipedia.org/wiki/åª jia 2934 ping # http://zh.wikipedia.org/wiki/甲_(å•ä½) fen 1|10 jia # http://zh.wikipedia.org/wiki/分 fen_area 1|10 jia # Protection against future collisions !utf8 åª ping # via Hanyu Pinyin romanizations 甲 jia 分 fen 分地 fen_area # Protection against future collisions !endutf8 # Japanese architecture is based on a "standard" size of tatami mat. # Room sizes today are given in number of tatami, and this number # determines the spacing between colums and hence sizes of sliding # doors and paper screens. However, every region has its own slightly # different tatami size. Edoma, used in and around Tokyo and # Hokkaido, is becoming a nationwide standard. Kyouma is used around # Kyoto, Osaka and Kyuushu, and Chuukyouma is used around Nagoya. # Note that the tatami all have the aspect ratio 2:1 so that the mats # can tile the room with some of them turned 90 degrees. # # http://www.moon2.net/tatami/infotatami/structure.html edoma (5.8*2.9) shaku^2 kyouma (6.3*3.15) shaku^2 chuukyouma (6*3) shaku^2 jou_area edoma tatami jou_area # Japanese Volume Measures # The "shou" is still used for such things as alcohol and seasonings. # Large quantities of paint are still purchased in terms of "to". shaku_volume 1|10 gou_volume gou_volume 1|10 shou gou gou_volume shou (4.9*4.9*2.7) sun^3 # The character shou which is # the same as masu refers to a # rectangular wooden cup used to # measure liquids and cereal. # Sake is sometimes served in a masu # Note that it happens to be # EXACTLY 7^4/11^3 liters. to 10 shou koku 10 to # No longer used; historically a measure of rice # Japanese Weight Measures # # http://wyoming.hp.infoseek.co.jp/zatugaku/zamoney.html # Not really used anymore. rin_weight 1|10 bu_weight bu_weight 1|10 monme fun 1|10 monme monme momme kin 160 monme kan 1000 monme kwan kan # This was the old pronounciation of the unit. # The old spelling persisted a few centuries # longer and was not changed until around # 1950. # http://en.wikipedia.org/wiki/Taiwanese_units_of_measurement # says: "Volume measure in Taiwan is largely metric". taijin kin # http://zh.wikipedia.org/wiki/å°æ–¤ tailiang 10 monme # http://zh.wikipedia.org/wiki/å°æ–¤ taiqian monme # http://zh.wikipedia.org/wiki/å°åˆ¶ !utf8 å°æ–¤ taijin # via Hanyu Pinyin romanizations å°å…© tailiang å°éŒ¢ taiqian !endutf8 # # Australian unit # australiasquare (10 ft)^2 # Used for house area # # A few German units as currently in use. # zentner 50 kg doppelzentner 2 zentner pfund 500 g # The klafter, which was used in central Europe, was derived from the span of # outstretched arms. # # https://en.wikipedia.org/wiki/Obsolete_Austrian_units_of_measurement # https://www.llv.li/files/abi/klafter-m2-en.pdf austriaklafter 1.89648384 m # Exact definition, 23 July 1871 austriafoot 1|6 austriaklafter prussiaklafter 1.88 m prussiafoot 1|6 prussiaklafter bavariaklafter 1.751155 m bavariafoot 1|6 bavariaklafter hesseklafter 2.5 m hessefoot 1|6 hesseklafter switzerlandklafter metricklafter switzerlandfoot 1|6 switzerlandklafter swissklafter switzerlandklafter swissfoot 1|6 swissklafter metricklafter 1.8 m austriayoke 8 austriaklafter * 200 austriaklafter liechtensteinsquareklafter 3.596652 m^2 # Used until 2017 to measure land area liechtensteinklafter sqrt(liechtensteinsquareklafter) # The klafter was also used to measure volume of wood, generally being a stack # of wood one klafter wide, one klafter long, with logs 3 feet (half a klafter) # in length prussiawoodklafter 0.5 prussiaklafter^3 austriawoodklafter 0.5 austriaklafter^3 festmeter m^3 # modern measure of wood, solid cube raummeter 0.7 festmeter # Air space between the logs, stacked schuettraummeter 0.65 raummeter # A cubic meter volume of split and cut schüttraummeter schuettraummeter# firewood in a loose, unordered # pile, not stacked. This is called # "tipped". # # Swedish (Sweden) pre-metric units of 1739. # The metric system was adopted in 1878. # https://sv.wikipedia.org/wiki/Verkm%C3%A5tt # verklinje 2.0618125 mm verktum 12 verklinje kvarter 6 verktum fot 2 kvarter aln 2 fot famn 3 aln # # Some traditional Russian measures # # If you would like to help expand this section and understand # cyrillic transliteration, let me know. These measures are meant to # reflect common usage, e.g. in translated literature. # dessiatine 2400 sazhen^2 # Land measure dessjatine dessiatine funt 409.51718 grams # similar to pound zolotnik 1|96 funt # used for precious metal measure pood 40 funt # common in agricultural measure arshin (2 + 1|3) feet sazhen 3 arshin # analogous to fathom verst 500 sazhen # of similar use to mile versta verst borderverst 1000 sazhen russianmile 7 verst # # Old French distance measures, from French Weights and Measures # Before the Revolution by Zupko # frenchfoot 144|443.296 m # pied de roi, the standard of Paris. pied frenchfoot # Half of the hashimicubit, frenchfeet frenchfoot # instituted by Charlemagne. frenchinch 1|12 frenchfoot # This exact definition comes from frenchthumb frenchinch # a law passed on 10 Dec 1799 which pouce frenchthumb # fixed the meter at # 3 frenchfeet + 11.296 lignes. frenchline 1|12 frenchinch # This is supposed to be the size ligne frenchline # of the average barleycorn frenchpoint 1|12 frenchline toise 6 frenchfeet arpent 180^2 pied^2 # The arpent is 100 square perches, # but the perche seems to vary a lot # and can be 18 feet, 20 feet, or 22 # feet. This measure was described # as being in common use in Canada in # 1934 (Websters 2nd). The value # given here is the Paris standard # arpent. frenchgrain 1|18827.15 kg # Weight of a wheat grain, hence # smaller than the British grain. frenchpound 9216 frenchgrain # # Before the Imperial Weights and Measures Act of 1824, various different # weights and measures were in use in different places. # # Scots linear measure scotsinch 1.00540054 UKinch scotslink 1|100 scotschain scotsfoot 12 scotsinch scotsfeet scotsfoot scotsell 37 scotsinch scotsfall 6 scotsell scotschain 4 scotsfall scotsfurlong 10 scotschain scotsmile 8 scotsfurlong # Scots area measure scotsrood 40 scotsfall^2 scotsacre 4 scotsrood # Irish linear measure irishinch UKinch irishpalm 3 irishinch irishspan 3 irishpalm irishfoot 12 irishinch irishfeet irishfoot irishcubit 18 irishinch irishyard 3 irishfeet irishpace 5 irishfeet irishfathom 6 irishfeet irishpole 7 irishyard # Only these values irishperch irishpole # are different from irishchain 4 irishperch # the British Imperial irishlink 1|100 irishchain # or English values for irishfurlong 10 irishchain # these lengths. irishmile 8 irishfurlong # # Irish area measure irishrood 40 irishpole^2 irishacre 4 irishrood # English wine capacity measures (Winchester measures) winepint 1|2 winequart winequart 1|4 winegallon winegallon 231 UKinch^3 # Sometimes called the Winchester Wine Gallon, # it was legalized in 1707 by Queen Anne, and # given the definition of 231 cubic inches. It # had been in use for a while as 8 pounds of wine # using a merchant's pound, but the definition of # the merchant's pound had become uncertain. A # pound of 15 tower ounces (6750 grains) had been # common, but then a pound of 15 troy ounces # (7200 grains) gained popularity. Because of # the switch in the value of the merchants pound, # the size of the wine gallon was uncertain in # the market, hence the official act in 1707. # The act allowed that a six inch tall cylinder # with a 7 inch diameter was a lawful wine # gallon. (This comes out to 230.9 in^3.) # Note also that in Britain a legal conversion # was established to the 1824 Imperial gallon # then taken as 277.274 in^3 so that the wine # gallon was 0.8331 imperial gallons. This is # 231.1 cubic inches (using the international # inch). winerundlet 18 winegallon winebarrel 31.5 winegallon winetierce 42 winegallon winehogshead 2 winebarrel winepuncheon 2 winetierce winebutt 2 winehogshead winepipe winebutt winetun 2 winebutt # English beer and ale measures used 1803-1824 and used for beer before 1688 beerpint 1|2 beerquart beerquart 1|4 beergallon beergallon 282 UKinch^3 beerbarrel 36 beergallon beerhogshead 1.5 beerbarrel # English ale measures used from 1688-1803 for both ale and beer alepint 1|2 alequart alequart 1|4 alegallon alegallon beergallon alebarrel 34 alegallon alehogshead 1.5 alebarrel # Scots capacity measure scotsgill 1|4 mutchkin mutchkin 1|2 choppin choppin 1|2 scotspint scotspint 1|2 scotsquart scotsquart 1|4 scotsgallon scotsgallon 827.232 UKinch^3 scotsbarrel 8 scotsgallon jug scotspint # Scots dry capacity measure scotswheatlippy 137.333 UKinch^3 # Also used for peas, beans, rye, salt scotswheatlippies scotswheatlippy scotswheatpeck 4 scotswheatlippy scotswheatfirlot 4 scotswheatpeck scotswheatboll 4 scotswheatfirlot scotswheatchalder 16 scotswheatboll scotsoatlippy 200.345 UKinch^3 # Also used for barley and malt scotsoatlippies scotsoatlippy scotsoatpeck 4 scotsoatlippy scotsoatfirlot 4 scotsoatpeck scotsoatboll 4 scotsoatfirlot scotsoatchalder 16 scotsoatboll # Scots Tron weight trondrop 1|16 tronounce tronounce 1|20 tronpound tronpound 9520 grain tronstone 16 tronpound # Irish liquid capacity measure irishnoggin 1|4 irishpint irishpint 1|2 irishquart irishquart 1|2 irishpottle irishpottle 1|2 irishgallon irishgallon 217.6 UKinch^3 irishrundlet 18 irishgallon irishbarrel 31.5 irishgallon irishtierce 42 irishgallon irishhogshead 2 irishbarrel irishpuncheon 2 irishtierce irishpipe 2 irishhogshead irishtun 2 irishpipe # Irish dry capacity measure irishpeck 2 irishgallon irishbushel 4 irishpeck irishstrike 2 irishbushel irishdrybarrel 2 irishstrike irishquarter 2 irishbarrel # English Tower weights, abolished in 1528 towerpound 5400 grain towerounce 1|12 towerpound towerpennyweight 1|20 towerounce towergrain 1|32 towerpennyweight # English Mercantile weights, used since the late 12th century mercpound 6750 grain mercounce 1|15 mercpound mercpennyweight 1|20 mercounce # English weights for lead leadstone 12.5 lb fotmal 70 lb leadwey 14 leadstone fothers 12 leadwey # English Hay measure newhaytruss 60 lb # New and old here seem to refer to "new" newhayload 36 newhaytruss # hay and "old" hay rather than a new unit oldhaytruss 56 lb # and an old unit. oldhayload 36 oldhaytruss # English wool measure woolclove 7 lb woolstone 2 woolclove wooltod 2 woolstone woolwey 13 woolstone woolsack 2 woolwey woolsarpler 2 woolsack woollast 6 woolsarpler # # Ancient history units: There tends to be uncertainty in the definitions # of the units in this section # These units are from [11] # Roman measure. The Romans had a well defined distance measure, but their # measures of weight were poor. They adopted local weights in different # regions without distinguishing among them so that there are half a dozen # different Roman "standard" weight systems. romanfoot 296 mm # There is some uncertainty in this definition romanfeet romanfoot # from which all the other units are derived. pes romanfoot # This value appears in numerous sources. In "The pedes romanfoot # Roman Land Surveyors", Dilke gives 295.7 mm. romaninch 1|12 romanfoot # The subdivisions of the Roman foot have the romandigit 1|16 romanfoot # same names as the subdivisions of the pound, romanpalm 1|4 romanfoot # but we can't have the names for different romancubit 18 romaninch # units. romanpace 5 romanfeet # Roman double pace (basic military unit) passus romanpace romanperch 10 romanfeet stade 125 romanpaces stadia stade stadium stade romanmile 8 stadia # 1000 paces romanleague 1.5 romanmile schoenus 4 romanmile # Other values for the Roman foot (from Dilke) earlyromanfoot 29.73 cm pesdrusianus 33.3 cm # or 33.35 cm, used in Gaul & Germany in 1st c BC lateromanfoot 29.42 cm # Roman areas actuslength 120 romanfeet # length of a Roman furrow actus 120*4 romanfeet^2 # area of the furrow squareactus 120^2 romanfeet^2 # actus quadratus acnua squareactus iugerum 2 squareactus iugera iugerum jugerum iugerum jugera iugerum heredium 2 iugera # heritable plot heredia heredium centuria 100 heredia centurium centuria # Roman volumes sextarius 35.4 in^3 # Basic unit of Roman volume. As always, sextarii sextarius # there is uncertainty. Six large Roman # measures survive with volumes ranging from # 34.4 in^3 to 39.55 in^3. Three of them # cluster around the size given here. # # But the values for this unit vary wildly # in other sources. One reference gives 0.547 # liters, but then says the amphora is a # cubic Roman foot. This gives a value for the # sextarius of 0.540 liters. And the # encyclopedia Britannica lists 0.53 liters for # this unit. Both [7] and [11], which were # written by scholars of weights and measures, # give the value of 35.4 cubic inches. cochlearia 1|48 sextarius cyathi 1|12 sextarius acetabula 1|8 sextarius quartaria 1|4 sextarius quartarius quartaria heminae 1|2 sextarius hemina heminae cheonix 1.5 sextarii # Dry volume measures (usually) semodius 8 sextarius semodii semodius modius 16 sextarius modii modius # Liquid volume measures (usually) congius 12 heminae congii congius amphora 8 congii amphorae amphora # Also a dry volume measure culleus 20 amphorae quadrantal amphora # Roman weights libra 5052 grain # The Roman pound varied significantly librae libra # from 4210 grains to 5232 grains. Most of romanpound libra # the standards were obtained from the weight uncia 1|12 libra # of particular coins. The one given here is unciae uncia # based on the Gold Aureus of Augustus which romanounce uncia # was in use from BC 27 to AD 296. deunx 11 uncia dextans 10 uncia dodrans 9 uncia bes 8 uncia seprunx 7 uncia semis 6 uncia quincunx 5 uncia triens 4 uncia quadrans 3 uncia sextans 2 uncia sescuncia 1.5 uncia semuncia 1|2 uncia siscilius 1|4 uncia sextula 1|6 uncia semisextula 1|12 uncia scriptulum 1|24 uncia scrupula scriptulum romanobol 1|2 scrupula romanaspound 4210 grain # Old pound based on bronze coinage, the # earliest money of Rome BC 338 to BC 268. # Egyptian length measure egyptianroyalcubit 20.63 in # plus or minus .2 in egyptianpalm 1|7 egyptianroyalcubit egyptiandigit 1|4 egyptianpalm egyptianshortcubit 6 egyptianpalm doubleremen 29.16 in # Length of the diagonal of a square with remendigit 1|40 doubleremen # side length of 1 royal egyptian cubit. # This is divided into 40 digits which are # not the same size as the digits based on # the royal cubit. # Greek length measures greekfoot 12.45 in # Listed as being derived from the greekfeet greekfoot # Egyptian Royal cubit in [11]. It is greekcubit 1.5 greekfoot # said to be 3|5 of a 20.75 in cubit. pous greekfoot podes greekfoot orguia 6 greekfoot greekfathom orguia stadion 100 orguia akaina 10 greekfeet plethron 10 akaina greekfinger 1|16 greekfoot homericcubit 20 greekfingers # Elbow to end of knuckles. shortgreekcubit 18 greekfingers # Elbow to start of fingers. ionicfoot 296 mm doricfoot 326 mm olympiccubit 25 remendigit # These olympic measures were not as olympicfoot 2|3 olympiccubit # common as the other greek measures. olympicfinger 1|16 olympicfoot # They were used in agriculture. olympicfeet olympicfoot olympicdakylos olympicfinger olympicpalm 1|4 olympicfoot olympicpalestra olympicpalm olympicspithame 3|4 foot olympicspan olympicspithame olympicbema 2.5 olympicfeet olympicpace olympicbema olympicorguia 6 olympicfeet olympicfathom olympicorguia olympiccord 60 olympicfeet olympicamma olympiccord olympicplethron 100 olympicfeet olympicstadion 600 olympicfeet # Greek capacity measure greekkotyle 270 ml # This approximate value is obtained xestes 2 greekkotyle # from two earthenware vessels that khous 12 greekkotyle # were reconstructed from fragments. metretes 12 khous # The kotyle is a day's corn ration choinix 4 greekkotyle # for one man. hekteos 8 choinix medimnos 6 hekteos # Greek weight. Two weight standards were used, an Aegina standard based # on the Beqa shekel and an Athens (attic) standard. aeginastater 192 grain # Varies up to 199 grain aeginadrachmae 1|2 aeginastater aeginaobol 1|6 aeginadrachmae aeginamina 50 aeginastaters aeginatalent 60 aeginamina # Supposedly the mass of a cubic foot # of water (whichever foot was in use) atticstater 135 grain # Varies 134-138 grain atticdrachmae 1|2 atticstater atticobol 1|6 atticdrachmae atticmina 50 atticstaters attictalent 60 atticmina # Supposedly the mass of a cubic foot # of water (whichever foot was in use) # "Northern" cubit and foot. This was used by the pre-Aryan civilization in # the Indus valley. It was used in Mesopotamia, Egypt, North Africa, China, # central and Western Europe until modern times when it was displaced by # the metric system. northerncubit 26.6 in # plus/minus .2 in northernfoot 1|2 northerncubit sumeriancubit 495 mm kus sumeriancubit sumerianfoot 2|3 sumeriancubit assyriancubit 21.6 in assyrianfoot 1|2 assyriancubit assyrianpalm 1|3 assyrianfoot assyriansusi 1|20 assyrianpalm susi assyriansusi persianroyalcubit 7 assyrianpalm # Arabic measures. The arabic standards were meticulously kept. Glass weights # accurate to .2 grains were made during AD 714-900. hashimicubit 25.56 in # Standard of linear measure used # in Persian dominions of the Arabic # empire 7-8th cent. Is equal to two # French feet. blackcubit 21.28 in arabicfeet 1|2 blackcubit arabicfoot arabicfeet arabicinch 1|12 arabicfoot arabicmile 4000 blackcubit silverdirhem 45 grain # The weights were derived from these two tradedirhem 48 grain # units with two identically named systems # used for silver and used for trade purposes silverkirat 1|16 silverdirhem silverwukiyeh 10 silverdirhem silverrotl 12 silverwukiyeh arabicsilverpound silverrotl tradekirat 1|16 tradedirhem tradewukiyeh 10 tradedirhem traderotl 12 tradewukiyeh arabictradepound traderotl # Miscellaneous ancient units parasang 3.5 mile # Persian unit of length usually thought # to be between 3 and 3.5 miles biblicalcubit 21.8 in hebrewcubit 17.58 in li 10|27.8 mile # Chinese unit of length # 100 li is considered a day's march liang 11|3 oz # Chinese weight unit # Medieval time units. According to the OED, these appear in Du Cange # by Papias. timepoint 1|5 hour # also given as 1|4 timeminute 1|10 hour timeostent 1|60 hour timeounce 1|8 timeostent timeatom 1|47 timeounce # Given in [15], these subdivisions of the grain were supposedly used # by jewelers. The mite may have been used but the blanc could not # have been accurately measured. mite 1|20 grain droit 1|24 mite periot 1|20 droit blanc 1|24 periot # # Localization # !var UNITS_ENGLISH US hundredweight ushundredweight ton uston scruple apscruple fluidounce usfluidounce gallon usgallon bushel usbushel quarter quarterweight cup uscup tablespoon ustablespoon teaspoon usteaspoon dollar US$ cent $ 0.01 penny cent minim minimvolume pony ponyvolume grand usgrand firkin usfirkin hogshead ushogshead !endvar !var UNITS_ENGLISH GB hundredweight brhundredweight ton brton scruple brscruple fluidounce brfluidounce gallon brgallon bushel brbushel quarter brquarter chaldron brchaldron cup brcup teacup brteacup tablespoon brtablespoon teaspoon brteaspoon dollar US$ cent $ 0.01 penny brpenny minim minimnote pony brpony grand brgrand firkin brfirkin hogshead brhogshead !endvar !varnot UNITS_ENGLISH GB US !message Unknown value for environment variable UNITS_ENGLISH. Should be GB or US. !endvar !utf8 â…›- 1|8 ¼- 1|4 â…œ- 3|8 ½- 1|2 â…- 5|8 ¾- 3|4 â…ž- 7|8 â…™- 1|6 â…“- 1|3 â…”- 2|3 â…š- 5|6 â…•- 1|5 â…–- 2|5 â…—- 3|5 â…˜- 4|5 # U+2150- 1|7 For some reason these characters are getting # U+2151- 1|9 flagged as invalid UTF8. # U+2152- 1|10 #â…- 1|7 # fails under MacOS #â…‘- 1|9 # fails under MacOS #â…’- 1|10 # fails under MacOS ℯ exp(1) # U+212F, base of natural log µ- micro # micro sign U+00B5 μ- micro # small mu U+03BC Ã¥ngström angstrom â„« angstrom # angstrom symbol U+212B Ã… angstrom # A with ring U+00C5 röntgen roentgen °C degC °F degF °K K # °K is incorrect notation °R degR ° degree ℃ degC ℉ degF K K # Kelvin symbol, U+212A â„“ liter # unofficial abbreviation used in some places Ω ohm # Ohm symbol U+2126 Ω ohm # Greek capital omega U+03A9 â„§ mho Ê’ dram # U+0292 ℈ scruple â„¥ ounce â„” lb ℎ h â„ hbar ‰ 1|1000 ‱ 1|10000 ′ ' # U+2032 ″ " # U+2033 # # Unicode currency symbols # ¢ cent £ britainpound Â¥ japanyen € euro â‚© southkoreawon ₪ israelnewshekel ₤ lira # ₺ turkeylira # fails under MacOS ₨ rupee # unofficial legacy rupee sign # ₹ indiarupee # official rupee sign # MacOS fail #Ø‹ afghanafghani # fails under MacOS ฿ thailandbaht â‚¡ elsalvadorcolon # Also costaricacolon â‚£ francefranc ₦ nigerianaira â‚§ spainpeseta â‚« vietnamdong â‚­ laokip â‚® mongoliatugrik ₯ greecedrachma ₱ philippinepeso # ₲ paraguayguarani # fails under MacOS #â‚´ ukrainehryvnia # fails under MacOS #₵ ghanacedi # fails under MacOS #₸ kazakhstantenge # fails under MacOS #₼ azerbaijanmanat # fails under MacOS #₽ russiaruble # fails under MacOS #₾ georgialari # fails under MacOS ï·¼ iranrial ﹩ $ ï¿  ¢ ï¿¡ £ ï¿¥ Â¥ ₩ â‚© # # Square Unicode symbols starting at U+3371 # ã± hPa ã² da ã³ au ã´ bar # ãµ oV??? ã¶ pc #ã· dm invalid on Mac #㸠dm^2 invalid on Mac #ã¹ dm^3 invalid on Mac ㎀ pA ㎠nA ㎂ µA ㎃ mA ㎄ kA ㎅ kB ㎆ MB ㎇ GB ㎈ cal ㎉ kcal ㎊ pF ㎋ nF ㎌ µF ㎠µg ㎎ mg ㎠kg ㎠Hz ㎑ kHz ㎒ MHz ㎓ GHz ㎔ THz ㎕ µL ㎖ mL ㎗ dL ㎘ kL ㎙ fm ㎚ nm ㎛ µm ㎜ mm ㎠cm ㎞ km ㎟ mm^2 ㎠ cm^2 ㎡ m^2 ㎢ km^2 ㎣ mm^3 ㎤ cm^3 ㎥ m^3 ㎦ km^3 ㎧ m/s ㎨ m/s^2 ㎩ Pa ㎪ kPa ㎫ MPa ㎬ GPa ㎭ rad ㎮ rad/s ㎯ rad/s^2 ㎰ ps ㎱ ns ㎲ µs ㎳ ms ㎴ pV ㎵ nV ㎶ µV ㎷ mV ㎸ kV ㎹ MV ㎺ pW ㎻ nW ㎼ µW ㎽ mW ㎾ kW ㎿ MW 〠kΩ ã MΩ ムBq ã„ cc ã… cd ㆠC/kg ãˆ() dB ㉠Gy ㊠ha # ã‹ HP?? ㌠in # ã KK?? # ㎠KM??? ã kt ã lm # ã‘ ln # ã’ log ã“ lx ã” mb ã• mil ã– mol ã—() pH ã™ ppm # ãš PR??? ã› sr 㜠Sv ã Wb #ãž V/m Invalid on Mac #㟠A/m Invalid on Mac #ã¿ gal Invalid on Mac !endutf8 ############################################################################ # # Unit list aliases # # These provide a shorthand for conversions to unit lists. # ############################################################################ !unitlist hms hr;min;sec !unitlist time year;day;hr;min;sec !unitlist dms deg;arcmin;arcsec !unitlist ftin ft;in;1|8 in !unitlist inchfine in;1|8 in;1|16 in;1|32 in;1|64 in !unitlist usvol cup;3|4 cup;2|3 cup;1|2 cup;1|3 cup;1|4 cup;\ tbsp;tsp;1|2 tsp;1|4 tsp;1|8 tsp ############################################################################ # # The following units were in the Unix units database but do not appear in # this file: # # wey used for cheese, salt and other goods. Measured mass or # waymass volume depending on what was measured and where the measuring # took place. A wey of cheese ranged from 200 to 324 pounds. # # sack No precise definition # # spindle The length depends on the type of yarn # # block Defined variously on different computer systems # # erlang A unit of telephone traffic defined variously. # Omitted because there are no other units for this # dimension. Is this true? What about CCS = 1/36 erlang? # Erlang is supposed to be dimensionless. One erlang means # a single channel occupied for one hour. # ############################################################################ units-2.19/getopt.c0000664000175000017500000005316212301221016013530 0ustar adrianadrian/* Getopt for GNU. NOTE: getopt is now part of the C library, so if you don't know what "Keep this file name-space clean" means, talk to roland@gnu.org before changing it! Copyright (C) 1987, 88, 89, 90, 91, 92, 93, 94 Free Software Foundation, Inc. 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 3, 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 program; if not, write to the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02111 USA. */ /* This tells Alpha OSF/1 not to define a getopt prototype in . Ditto for AIX 3.2 and . */ #ifndef _NO_PROTO #define _NO_PROTO #endif #ifdef HAVE_CONFIG_H #include #endif #if !defined (__STDC__) && !defined (_MSC_VER) || !__STDC__ /* This is a separate conditional since some stdc systems reject `defined (const)'. */ #ifndef const #define const #endif #endif #include /* Comment out all this code if we are using the GNU C Library, and are not actually compiling the library itself. This code is part of the GNU C Library, but also included in many other GNU distributions. Compiling and linking in this code is a waste when using the GNU C library (especially if it is a shared library). Rather than having every GNU program understand `configure --with-gnu-libc' and omit the object files, it is simpler to just do this in the source for each such file. */ #if defined (_LIBC) || !defined (__GNU_LIBRARY__) /* This needs to come after some library #include to get __GNU_LIBRARY__ defined. */ #ifdef __GNU_LIBRARY__ /* Don't include stdlib.h for non-GNU C libraries because some of them contain conflicting prototypes for getopt. */ #include #endif /* GNU C library. */ /* This is for other GNU distributions with internationalized messages. The GNU C Library itself does not yet support such messages. */ #if HAVE_LIBINTL_H # include #else # define gettext(msgid) (msgid) #endif /* This version of `getopt' appears to the caller like standard Unix `getopt' but it behaves differently for the user, since it allows the user to intersperse the options with the other arguments. As `getopt' works, it permutes the elements of ARGV so that, when it is done, all the options precede everything else. Thus all application programs are extended to handle flexible argument order. Setting the environment variable POSIXLY_CORRECT disables permutation. Then the behavior is completely standard. GNU application programs can use a third alternative mode in which they can distinguish the relative order of options and other arguments. */ #include "getopt.h" /* For communication from `getopt' to the caller. When `getopt' finds an option that takes an argument, the argument value is returned here. Also, when `ordering' is RETURN_IN_ORDER, each non-option ARGV-element is returned here. */ char *optarg = NULL; /* Index in ARGV of the next element to be scanned. This is used for communication to and from the caller and for communication between successive calls to `getopt'. On entry to `getopt', zero means this is the first call; initialize. When `getopt' returns EOF, this is the index of the first of the non-option elements that the caller should itself scan. Otherwise, `optind' communicates from one call to the next how much of ARGV has been scanned so far. */ /* XXX 1003.2 says this must be 1 before any call. */ int optind = 0; /* The next char to be scanned in the option-element in which the last option character we returned was found. This allows us to pick up the scan where we left off. If this is zero, or a null string, it means resume the scan by advancing to the next ARGV-element. */ static char *nextchar; /* Callers store zero here to inhibit the error message for unrecognized options. */ int opterr = 1; /* Set to an option character which was unrecognized. This must be initialized on some systems to avoid linking in the system's own getopt implementation. */ int optopt = '?'; /* Describe how to deal with options that follow non-option ARGV-elements. If the caller did not specify anything, the default is REQUIRE_ORDER if the environment variable POSIXLY_CORRECT is defined, PERMUTE otherwise. REQUIRE_ORDER means don't recognize them as options; stop option processing when the first non-option is seen. This is what Unix does. This mode of operation is selected by either setting the environment variable POSIXLY_CORRECT, or using `+' as the first character of the list of option characters. PERMUTE is the default. We permute the contents of ARGV as we scan, so that eventually all the non-options are at the end. This allows options to be given in any order, even with programs that were not written to expect this. RETURN_IN_ORDER is an option available to programs that were written to expect options and other ARGV-elements in any order and that care about the ordering of the two. We describe each non-option ARGV-element as if it were the argument of an option with character code 1. Using `-' as the first character of the list of option characters selects this mode of operation. The special argument `--' forces an end of option-scanning regardless of the value of `ordering'. In the case of RETURN_IN_ORDER, only `--' can cause `getopt' to return EOF with `optind' != ARGC. */ static enum { REQUIRE_ORDER, PERMUTE, RETURN_IN_ORDER } ordering; /* Value of POSIXLY_CORRECT environment variable. */ static char *posixly_correct; #ifdef __GNU_LIBRARY__ /* We want to avoid inclusion of string.h with non-GNU libraries because there are many ways it can cause trouble. On some systems, it contains special magic macros that don't work in GCC. */ #include #define my_index strchr #else /* Avoid depending on library functions or files whose names are inconsistent. */ char *getenv (); static char * my_index (str, chr) const char *str; int chr; { while (*str) { if (*str == chr) return (char *) str; str++; } return 0; } /* If using GCC, we can safely declare strlen this way. If not using GCC, it is ok not to declare it. */ #ifdef __GNUC__ /* Note that Motorola Delta 68k R3V7 comes with GCC but not stddef.h. That was relevant to code that was here before. */ #if !defined (__STDC__) || !__STDC__ /* gcc with -traditional declares the built-in strlen to return int, and has done so at least since version 2.4.5. -- rms. */ extern int strlen (const char *); #endif /* not __STDC__ */ #endif /* __GNUC__ */ #endif /* not __GNU_LIBRARY__ */ /* Handle permutation of arguments. */ /* Describe the part of ARGV that contains non-options that have been skipped. `first_nonopt' is the index in ARGV of the first of them; `last_nonopt' is the index after the last of them. */ static int first_nonopt; static int last_nonopt; /* Exchange two adjacent subsequences of ARGV. One subsequence is elements [first_nonopt,last_nonopt) which contains all the non-options that have been skipped so far. The other is elements [last_nonopt,optind), which contains all the options processed since those non-options were skipped. `first_nonopt' and `last_nonopt' are relocated so that they describe the new indices of the non-options in ARGV after they are moved. */ static void exchange (argv) char **argv; { int bottom = first_nonopt; int middle = last_nonopt; int top = optind; char *tem; /* Exchange the shorter segment with the far end of the longer segment. That puts the shorter segment into the right place. It leaves the longer segment in the right place overall, but it consists of two parts that need to be swapped next. */ while (top > middle && middle > bottom) { if (top - middle > middle - bottom) { /* Bottom segment is the short one. */ int len = middle - bottom; register int i; /* Swap it with the top part of the top segment. */ for (i = 0; i < len; i++) { tem = argv[bottom + i]; argv[bottom + i] = argv[top - (middle - bottom) + i]; argv[top - (middle - bottom) + i] = tem; } /* Exclude the moved bottom segment from further swapping. */ top -= len; } else { /* Top segment is the short one. */ int len = top - middle; register int i; /* Swap it with the bottom part of the bottom segment. */ for (i = 0; i < len; i++) { tem = argv[bottom + i]; argv[bottom + i] = argv[middle + i]; argv[middle + i] = tem; } /* Exclude the moved top segment from further swapping. */ bottom += len; } } /* Update records for the slots the non-options now occupy. */ first_nonopt += (optind - last_nonopt); last_nonopt = optind; } /* Initialize the internal data when the first call is made. */ static const char * _getopt_initialize (optstring) const char *optstring; { /* Start processing options with ARGV-element 1 (since ARGV-element 0 is the program name); the sequence of previously skipped non-option ARGV-elements is empty. */ first_nonopt = last_nonopt = optind = 1; nextchar = NULL; posixly_correct = getenv ("POSIXLY_CORRECT"); /* Determine how to handle the ordering of options and nonoptions. */ if (optstring[0] == '-') { ordering = RETURN_IN_ORDER; ++optstring; } else if (optstring[0] == '+') { ordering = REQUIRE_ORDER; ++optstring; } else if (posixly_correct != NULL) ordering = REQUIRE_ORDER; else ordering = PERMUTE; return optstring; } /* Scan elements of ARGV (whose length is ARGC) for option characters given in OPTSTRING. If an element of ARGV starts with '-', and is not exactly "-" or "--", then it is an option element. The characters of this element (aside from the initial '-') are option characters. If `getopt' is called repeatedly, it returns successively each of the option characters from each of the option elements. If `getopt' finds another option character, it returns that character, updating `optind' and `nextchar' so that the next call to `getopt' can resume the scan with the following option character or ARGV-element. If there are no more option characters, `getopt' returns `EOF'. Then `optind' is the index in ARGV of the first ARGV-element that is not an option. (The ARGV-elements have been permuted so that those that are not options now come last.) OPTSTRING is a string containing the legitimate option characters. If an option character is seen that is not listed in OPTSTRING, return '?' after printing an error message. If you set `opterr' to zero, the error message is suppressed but we still return '?'. If a char in OPTSTRING is followed by a colon, that means it wants an arg, so the following text in the same ARGV-element, or the text of the following ARGV-element, is returned in `optarg'. Two colons mean an option that wants an optional arg; if there is text in the current ARGV-element, it is returned in `optarg', otherwise `optarg' is set to zero. If OPTSTRING starts with `-' or `+', it requests different methods of handling the non-option ARGV-elements. See the comments about RETURN_IN_ORDER and REQUIRE_ORDER, above. Long-named options begin with `--' instead of `-'. Their names may be abbreviated as long as the abbreviation is unique or is an exact match for some defined option. If they have an argument, it follows the option name in the same ARGV-element, separated from the option name by a `=', or else the in next ARGV-element. When `getopt' finds a long-named option, it returns 0 if that option's `flag' field is nonzero, the value of the option's `val' field if the `flag' field is zero. The elements of ARGV aren't really const, because we permute them. But we pretend they're const in the prototype to be compatible with other systems. LONGOPTS is a vector of `struct option' terminated by an element containing a name which is zero. LONGIND returns the index in LONGOPT of the long-named option found. It is only valid when a long-named option has been found by the most recent call. If LONG_ONLY is nonzero, '-' as well as '--' can introduce long-named options. */ int _getopt_internal (argc, argv, optstring, longopts, longind, long_only) int argc; char *const *argv; const char *optstring; const struct option *longopts; int *longind; int long_only; { optarg = NULL; if (optind == 0) optstring = _getopt_initialize (optstring); if (nextchar == NULL || *nextchar == '\0') { /* Advance to the next ARGV-element. */ if (ordering == PERMUTE) { /* If we have just processed some options following some non-options, exchange them so that the options come first. */ if (first_nonopt != last_nonopt && last_nonopt != optind) exchange ((char **) argv); else if (last_nonopt != optind) first_nonopt = optind; /* Skip any additional non-options and extend the range of non-options previously skipped. */ while (optind < argc && (argv[optind][0] != '-' || argv[optind][1] == '\0')) optind++; last_nonopt = optind; } /* The special ARGV-element `--' means premature end of options. Skip it like a null option, then exchange with previous non-options as if it were an option, then skip everything else like a non-option. */ if (optind != argc && !strcmp (argv[optind], "--")) { optind++; if (first_nonopt != last_nonopt && last_nonopt != optind) exchange ((char **) argv); else if (first_nonopt == last_nonopt) first_nonopt = optind; last_nonopt = argc; optind = argc; } /* If we have done all the ARGV-elements, stop the scan and back over any non-options that we skipped and permuted. */ if (optind == argc) { /* Set the next-arg-index to point at the non-options that we previously skipped, so the caller will digest them. */ if (first_nonopt != last_nonopt) optind = first_nonopt; return EOF; } /* If we have come to a non-option and did not permute it, either stop the scan or describe it to the caller and pass it by. */ if ((argv[optind][0] != '-' || argv[optind][1] == '\0')) { if (ordering == REQUIRE_ORDER) return EOF; optarg = argv[optind++]; return 1; } /* We have found another option-ARGV-element. Skip the initial punctuation. */ nextchar = (argv[optind] + 1 + (longopts != NULL && argv[optind][1] == '-')); } /* Decode the current option-ARGV-element. */ /* Check whether the ARGV-element is a long option. If long_only and the ARGV-element has the form "-f", where f is a valid short option, don't consider it an abbreviated form of a long option that starts with f. Otherwise there would be no way to give the -f short option. On the other hand, if there's a long option "fubar" and the ARGV-element is "-fu", do consider that an abbreviation of the long option, just like "--fu", and not "-f" with arg "u". This distinction seems to be the most useful approach. */ if (longopts != NULL && (argv[optind][1] == '-' || (long_only && (argv[optind][2] || !my_index (optstring, argv[optind][1]))))) { char *nameend; const struct option *p; const struct option *pfound = NULL; int exact = 0; int ambig = 0; int indfound; int option_index; for (nameend = nextchar; *nameend && *nameend != '='; nameend++) /* Do nothing. */ ; /* Test all long options for either exact match or abbreviated matches. */ for (p = longopts, option_index = 0; p->name; p++, option_index++) if (!strncmp (p->name, nextchar, nameend - nextchar)) { if (nameend - nextchar == strlen (p->name)) { /* Exact match found. */ pfound = p; indfound = option_index; exact = 1; break; } else if (pfound == NULL) { /* First nonexact match found. */ pfound = p; indfound = option_index; } else /* Second or later nonexact match found. */ ambig = 1; } if (ambig && !exact) { if (opterr) fprintf (stderr, gettext ("%s: option `%s' is ambiguous\n"), argv[0], argv[optind]); nextchar += strlen (nextchar); optind++; return '?'; } if (pfound != NULL) { option_index = indfound; optind++; if (*nameend) { /* Don't test has_arg with >, because some C compilers don't allow it to be used on enums. */ if (pfound->has_arg) optarg = nameend + 1; else { if (opterr) if (argv[optind - 1][1] == '-') /* --option */ fprintf (stderr, gettext ("%s: option `--%s' doesn't allow an argument\n"), argv[0], pfound->name); else /* +option or -option */ fprintf (stderr, gettext ("%s: option `%c%s' doesn't allow an argument\n"), argv[0], argv[optind - 1][0], pfound->name); nextchar += strlen (nextchar); return '?'; } } else if (pfound->has_arg == 1) { if (optind < argc) optarg = argv[optind++]; else { if (opterr) fprintf (stderr, gettext ("%s: option `%s' requires an argument\n"), argv[0], argv[optind - 1]); nextchar += strlen (nextchar); return optstring[0] == ':' ? ':' : '?'; } } nextchar += strlen (nextchar); if (longind != NULL) *longind = option_index; if (pfound->flag) { *(pfound->flag) = pfound->val; return 0; } return pfound->val; } /* Can't find it as a long option. If this is not getopt_long_only, or the option starts with '--' or is not a valid short option, then it's an error. Otherwise interpret it as a short option. */ if (!long_only || argv[optind][1] == '-' || my_index (optstring, *nextchar) == NULL) { if (opterr) { if (argv[optind][1] == '-') /* --option */ fprintf (stderr, gettext ("%s: unrecognized option `--%s'\n"), argv[0], nextchar); else /* +option or -option */ fprintf (stderr, gettext ("%s: unrecognized option `%c%s'\n"), argv[0], argv[optind][0], nextchar); } nextchar = (char *) ""; optind++; return '?'; } } /* Look at and handle the next short option-character. */ { char c = *nextchar++; char *temp = my_index (optstring, c); /* Increment `optind' when we start to process its last character. */ if (*nextchar == '\0') ++optind; if (temp == NULL || c == ':') { if (opterr) { if (posixly_correct) /* 1003.2 specifies the format of this message. */ fprintf (stderr, gettext ("%s: illegal option -- %c\n"), argv[0], c); else fprintf (stderr, gettext ("%s: invalid option -- %c\n"), argv[0], c); } optopt = c; return '?'; } if (temp[1] == ':') { if (temp[2] == ':') { /* This is an option that accepts an argument optionally. */ if (*nextchar != '\0') { optarg = nextchar; optind++; } else optarg = NULL; nextchar = NULL; } else { /* This is an option that requires an argument. */ if (*nextchar != '\0') { optarg = nextchar; /* If we end this ARGV-element by taking the rest as an arg, we must advance to the next element now. */ optind++; } else if (optind == argc) { if (opterr) { /* 1003.2 specifies the format of this message. */ fprintf (stderr, gettext ("%s: option requires an argument -- %c\n"), argv[0], c); } optopt = c; if (optstring[0] == ':') c = ':'; else c = '?'; } else /* We already incremented `optind' once; increment it again when taking next ARGV-elt as argument. */ optarg = argv[optind++]; nextchar = NULL; } } return c; } } int getopt (argc, argv, optstring) int argc; char *const *argv; const char *optstring; { return _getopt_internal (argc, argv, optstring, (const struct option *) 0, (int *) 0, 0); } #endif /* _LIBC or not __GNU_LIBRARY__. */ #ifdef TEST /* Compile with -DTEST to make an executable for use in testing the above definition of `getopt'. */ int main (argc, argv) int argc; char **argv; { int c; int digit_optind = 0; while (1) { int this_option_optind = optind ? optind : 1; c = getopt (argc, argv, "abc:d:0123456789"); if (c == EOF) break; switch (c) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': if (digit_optind != 0 && digit_optind != this_option_optind) printf ("digits occur in two different argv-elements.\n"); digit_optind = this_option_optind; printf ("option %c\n", c); break; case 'a': printf ("option a\n"); break; case 'b': printf ("option b\n"); break; case 'c': printf ("option c with value `%s'\n", optarg); break; case '?': break; default: printf ("?? getopt returned character code 0%o ??\n", c); } } if (optind < argc) { printf ("non-option ARGV-elements: "); while (optind < argc) printf ("%s ", argv[optind++]); printf ("\n"); } exit (0); } #endif /* TEST */ units-2.19/units.info0000664000175000017500000054360613473351425014133 0ustar adrianadrianThis is units.info, produced by makeinfo version 6.5 from units.texinfo. This manual is for GNU Units (version 2.18), which performs units conversions and units calculations. Copyright (C) 1996, 1997, 1999, 2000, 2001, 2002, 2004, 2005, 2007, 2011-2019 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, with no Front-Cover Texts, and with no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License". INFO-DIR-SECTION Science START-INFO-DIR-ENTRY * Units: (units). Units conversion and scientific calculation. END-INFO-DIR-ENTRY  File: units.info, Node: Top, Next: Overview, Up: (dir) Units Conversion **************** This manual describes the 'units' command for units conversion and how you can use it as a powerful scientific calculator that keeps track of units. This is Edition 2.16 of 'The Units Conversion Manual' for 'units' Version 2.18. * Menu: * Overview:: What does 'units' do? * Interactive Use:: How to use 'units'. * Command Line Use:: How to use 'units' non-interactively. * Unit Definitions:: What units are defined? * Unit Expressions:: Forming compound units. * Nonlinear Conversions:: Nonlinear unit conversions (e.g., temperature). * Unit Lists:: Conversion to sums of units (e.g., feet and inches). * Using CGS Units:: Using CGS units: Gaussian, ESU, or EMU * Logging Calculations:: Logging conversions and calculations in a file. * Invoking Units:: Command line options. * Output Styles:: Different ways units can print the output. * Defining Your Own Units:: Adding your own unit definitions * Numeric Output Format:: How to change the output format * Localization:: How to define and use regional unit names. * Environment Vars:: Environment variables used by 'units'. * Data Files:: Descriptions and locations of units data files. * Unicode Support:: Support for Unicode (UTF-8). * Readline Support:: Unit name completion and editing. * Currency:: Updating currency exchange rates. * Database Syntax:: Summary of database command syntax. * GNU Free Documentation License:: License. * Index:: General index.  File: units.info, Node: Overview, Next: Interactive Use, Prev: Top, Up: Top 1 Overview of 'units' ********************* The 'units' program converts quantities expressed in various systems of measurement to their equivalents in other systems of measurement. Like many similar programs, it can handle multiplicative scale changes. It can also handle nonlinear conversions such as Fahrenheit to Celsius;(1) *note Temperature Conversions::. The program can also perform conversions from and to sums of units, such as converting between meters and feet plus inches. Basic operation is simple: you enter the units that you want to convert _from_ and the units that you want to convert _to_. You can use the program interactively with prompts, or you can use it from the command line. Beyond simple unit conversions, 'units' can be used as a general-purpose scientific calculator that keeps track of units in its calculations. You can form arbitrary complex mathematical expressions of dimensions including sums, products, quotients, powers, and even roots of dimensions. Thus you can ensure accuracy and dimensional consistency when working with long expressions that involve many different units that may combine in complex ways; for an illustration, *note Complicated Unit Expressions::. The units are defined in an external data file. You can use the extensive data file that comes with this program, or you can provide your own data file to suit your needs. You can also use your own data file to supplement the standard data file. You can change the default behavior of 'units' with various options given on the command line. *Note Invoking Units::, for a description of the available options. ---------- Footnotes ---------- (1) But Fahrenheit to Celsius is linear, you insist. Not so. A transformation T is linear if T(x+y)=T(x)+T(y) and this fails for T(x)=ax+b. This transformation is affine, but not linear.  File: units.info, Node: Interactive Use, Next: Command Line Use, Prev: Overview, Up: Top 2 Interacting with 'units' ************************** To invoke 'units' for interactive use, type 'units' at your shell prompt. The program will print something like this: Currency exchange rates from www.timegenie.com on 2014-03-05 2860 units, 109 prefixes, 85 nonlinear units You have: At the 'You have:' prompt, type the quantity and units that you are converting _from_. For example, if you want to convert ten meters to feet, type '10 meters'. Next, 'units' will print 'You want:'. You should type the units you want to convert _to_. To convert to feet, you would type 'feet'. If the 'readline' library was compiled in, then will complete unit names. *Note Readline Support::, for more information about 'readline'. To quit the program type 'quit' or 'exit' at either prompt. The result will be displayed in two ways. The first line of output, which is marked with a '*' to indicate multiplication, gives the result of the conversion you have asked for. The second line of output, which is marked with a '/' to indicate division, gives the inverse of the conversion factor. If you convert 10 meters to feet, 'units' will print * 32.808399 / 0.03048 which tells you that 10 meters equals about 32.8 feet. The second number gives the conversion in the opposite direction. In this case, it tells you that 1 foot is equal to about 0.03 dekameters since the dekameter is 10 meters. It also tells you that 1/32.8 is about 0.03. The 'units' program prints the inverse because sometimes it is a more convenient number. In the example above, for example, the inverse value is an exact conversion: a foot is exactly 0.03048 dekameters. But the number given the other direction is inexact. If you convert grains to pounds, you will see the following: You have: grains You want: pounds * 0.00014285714 / 7000 From the second line of the output you can immediately see that a grain is equal to a seven thousandth of a pound. This is not so obvious from the first line of the output. If you find the output format confusing, try using the '--verbose' option: You have: grain You want: aeginamina grain = 0.00010416667 aeginamina grain = (1 / 9600) aeginamina If you request a conversion between units that measure reciprocal dimensions, then 'units' will display the conversion results with an extra note indicating that reciprocal conversion has been done: You have: 6 ohms You want: siemens reciprocal conversion * 0.16666667 / 6 Reciprocal conversion can be suppressed by using the '--strict' option. As usual, use the '--verbose' option to get more comprehensible output: You have: tex You want: typp reciprocal conversion 1 / tex = 496.05465 typp 1 / tex = (1 / 0.0020159069) typp You have: 20 mph You want: sec/mile reciprocal conversion 1 / 20 mph = 180 sec/mile 1 / 20 mph = (1 / 0.0055555556) sec/mile If you enter incompatible unit types, the 'units' program will print a message indicating that the units are not conformable and it will display the reduced form for each unit: You have: ergs/hour You want: fathoms kg^2 / day conformability error 2.7777778e-11 kg m^2 / sec^3 2.1166667e-05 kg^2 m / sec If you only want to find the reduced form or definition of a unit, simply press at the 'You want:' prompt. Here is an example: You have: jansky You want: Definition: fluxunit = 1e-26 W/m^2 Hz = 1e-26 kg / s^2 The output from 'units' indicates that the jansky is defined to be equal to a fluxunit which in turn is defined to be a certain combination of watts, meters, and hertz. The fully reduced (and in this case somewhat more cryptic) form appears on the far right. Some named units are treated as dimensionless in some situations. These units include the radian and steradian. These units will be treated as equal to 1 in units conversions. Power is equal to torque times angular velocity. This conversion can only be performed if the radian is dimensionless. You have: (14 ft lbf) (12 radians/sec) You want: watts * 227.77742 / 0.0043902509 It is also possible to compute roots and other non-integer powers of dimensionless units; this allows computations such as the altitude of geosynchronous orbit: You have: cuberoot(G earthmass / (circle/siderealday)^2) - earthradius You want: miles * 22243.267 / 4.4957425e-05 Named dimensionless units are not treated as dimensionless in other contexts. They cannot be used as exponents so for example, 'meter^radian' is forbidden. If you want a list of options you can type '?' at the 'You want:' prompt. The program will display a list of named units that are conformable with the unit that you entered at the 'You have:' prompt above. Conformable unit _combinations_ will not appear on this list. Typing 'help' at either prompt displays a short help message. You can also type 'help' followed by a unit name. This will invoke a pager on the units data base at the point where that unit is defined. You can read the definition and comments that may give more details or historical information about the unit. (You can generally quit out of the page by pressing 'q'.) Typing 'search' TEXT will display a list of all of the units whose names contain TEXT as a substring along with their definitions. This may help in the case where you aren't sure of the right unit name.  File: units.info, Node: Command Line Use, Next: Unit Definitions, Prev: Interactive Use, Up: Top 3 Using 'units' Non-Interactively ********************************* The 'units' program can perform units conversions non-interactively from the command line. To do this, type the command, type the original unit expression, and type the new units you want. If a units expression contains non-alphanumeric characters, you may need to protect it from interpretation by the shell using single or double quote characters. If you type units "2 liters" quarts then 'units' will print * 2.1133764 / 0.47317647 and then exit. The output tells you that 2 liters is about 2.1 quarts, or alternatively that a quart is about 0.47 times 2 liters. 'units' does not require a space between a numerical value and the unit, so the previous example can be given as units 2liters quarts to avoid having to quote the first argument. If the conversion is successful, then 'units' will return success (zero) to the calling environment. If you enter non-conformable units, then 'units' will print a message giving the reduced form of each unit and it will return failure (nonzero) to the calling environment. When you invoke 'units' with only one argument, it will print the definition of the specified unit. It will return failure if the unit is not defined and success if the unit is defined.  File: units.info, Node: Unit Definitions, Next: Unit Expressions, Prev: Command Line Use, Up: Top 4 Unit Definitions ****************** The conversion information is read from a units data file that is called 'definitions.units' and is usually located in the '/usr/share/units' directory. If you invoke 'units' with the '-V' option, it will print the location of this file. The default file includes definitions for all familiar units, abbreviations and metric prefixes. It also includes many obscure or archaic units. Many common spelled-out numbers (e.g., 'seventeen') are recognized. Many constants of nature are defined, including these: pi ratio of circumference to diameter c speed of light e charge on an electron force acceleration of gravity mole Avogadro's number water pressure per unit height of water Hg pressure per unit height of mercury au astronomical unit k Boltzman's constant mu0 permeability of vacuum epsilon0 permittivity of vacuum G Gravitational constant mach speed of sound The standard data file includes atomic masses for all of the elements and numerous other constants. Also included are the densities of various ingredients used in baking so that '2 cups flour_sifted' can be converted to 'grams'. This is not an exhaustive list. Consult the units data file to see the complete list, or to see the definitions that are used. The 'pound' is a unit of mass. To get force, multiply by the force conversion unit 'force' or use the shorthand 'lbf'. (Note that 'g' is already taken as the standard abbreviation for the gram.) The unit 'ounce' is also a unit of mass. The fluid ounce is 'fluidounce' or 'floz'. When British capacity units differ from their US counterparts, such as the British Imperial gallon, the unit is defined both ways with 'br' and 'us' prefixes. Your locale settings will determine the value of the unprefixed unit. Currency is prefixed with its country name: 'belgiumfranc', 'britainpound'. When searching for a unit, if the specified string does not appear exactly as a unit name, then the 'units' program will try to remove a trailing 's', 'es'. Next units will replace a trailing 'ies' with 'y'. If that fails, 'units' will check for a prefix. The database includes all of the standard metric prefixes. Only one prefix is permitted per unit, so 'micromicrofarad' will fail. However, prefixes can appear alone with no unit following them, so 'micro*microfarad' will work, as will 'micro microfarad'. To find out which units and prefixes are available, read the standard units data file, which is extensively annotated. 4.1 English Customary Units =========================== English customary units differ in various ways in different regions. In Britain a complex system of volume measurements featured different gallons for different materials such as a wine gallon and ale gallon that different by twenty percent. This complexity was swept away in 1824 by a reform that created an entirely new gallon, the British Imperial gallon defined as the volume occupied by ten pounds of water. Meanwhile in the USA the gallon is derived from the 1707 Winchester wine gallon, which is 231 cubic inches. These gallons differ by about twenty percent. By default if 'units' runs in the 'en_GB' locale you will get the British volume measures. If it runs in the 'en_US' locale you will get the US volume measures. In other locales the default values are the US definitions. If you wish to force different definitions, then set the environment variable 'UNITS_ENGLISH' to either 'US' or 'GB' to set the desired definitions independent of the locale. Before 1959, the value of a yard (and other units of measure defined in terms of it) differed slightly among English-speaking countries. In 1959, Australia, Canada, New Zealand, the United Kingdom, the United States, and South Africa adopted the Canadian value of 1 yard = 0.9144 m (exactly), which was approximately halfway between the values used by the UK and the US; it had the additional advantage of making 1 inch = 2.54 cm (exactly). This new standard was termed the "International Yard". Australia, Canada, and the UK then defined all customary lengths in terms of the International Yard (Australia did not define the furlong or rod); because many US land surveys were in terms of the pre-1959 units, the US continued to define customary surveyors' units (furlong, chain, rod, and link) in terms of the previous value for the foot, which was termed the "US survey foot". The US defined a "US survey mile" as 5280 US survey feet, and defined a "statute mile" as a US survey mile. The US values for these units differ from the international values by about 2 ppm. The 'units' program uses the international values for these units; the US values can be obtained by using either the 'US' or the 'survey' prefix. In either case, the simple familiar relationships among the units are maintained, e.g., 1 'furlong' = 660 'ft', and 1 'USfurlong' = 660 'USft', though the metric equivalents differ slightly between the two cases. The 'US' prefix or the 'survey' prefix can also be used to obtain the US survey mile and the value of the US yard prior to 1959, e.g., 'USmile' or 'surveymile' (but _not_ 'USsurveymile'). To get the US value of the statute mile, use either 'USstatutemile' or 'USmile'. Except for distances that extend over hundreds of miles (such as in the US State Plane Coordinate System), the differences in the miles are usually insignificant: You have: 100 surveymile - 100 mile You want: inch * 12.672025 / 0.078913984 The pre-1959 UK values for these units can be obtained with the prefix 'UK'. In the US, the acre is officially defined in terms of the US survey foot, but 'units' uses a definition based on the international foot. If you want the official US acre use 'USacre' and similarly use 'USacrefoot' for the official US version of that unit. The difference between these units is about 4 parts per million.  File: units.info, Node: Unit Expressions, Next: Nonlinear Conversions, Prev: Unit Definitions, Up: Top 5 Unit Expressions ****************** * Menu: * Operators:: The usual arithmetic operators, with a few extras * Sums and Differences of Units:: Adding and subtracting units * Numbers as Units:: A number is a dimensionless unit * Built-in Functions:: Trigonometric functions, logarithms, roots * Previous Result:: Inserting the result of the previous conversion * Complicated Unit Expressions:: A complicated example * Backwards Compatibility:: Alternate behavior for '*' and '-'  File: units.info, Node: Operators, Next: Sums and Differences of Units, Up: Unit Expressions 5.1 Operators ============= You can enter more complicated units by combining units with operations such as multiplication, division, powers, addition, subtraction, and parentheses for grouping. You can use the customary symbols for these operators when 'units' is invoked with its default options. Additionally, 'units' supports some extensions, including high priority multiplication using a space, and a high priority numerical division operator ('|') that can simplify some expressions. You multiply units using a space or an asterisk ('*'). The next example shows both forms: You have: arabicfoot * arabictradepound * force You want: ft lbf * 0.7296 / 1.370614 You can divide units using the slash ('/') or with 'per': You have: furlongs per fortnight You want: m/s * 0.00016630986 / 6012.8727 You can use parentheses for grouping: You have: (1/2) kg / (kg/meter) You want: league * 0.00010356166 / 9656.0833 White space surrounding operators is optional, so the previous example could have used '(1/2)kg/(kg/meter)'. As a consequence, however, hyphenated spelled-out numbers (e.g., 'forty-two') cannot be used; 'forty-two' is interpreted as '40 - 2'. Multiplication using a space has a higher precedence than division using a slash and is evaluated left to right; in effect, the first '/' character marks the beginning of the denominator of a unit expression. This makes it simple to enter a quotient with several terms in the denominator: 'J / mol K'. The '*' and '/' operators have the same precedence, and are evaluated left to right; if you multiply with '*', you must group the terms in the denominator with parentheses: 'J / (mol * K)'. The higher precedence of the space operator may not always be advantageous. For example, 'm/s s/day' is equivalent to 'm / s s day' and has dimensions of length per time cubed. Similarly, '1/2 meter' refers to a unit of reciprocal length equivalent to 0.5/meter, perhaps not what you would intend if you entered that expression. The get a half meter you would need to use parentheses: '(1/2) meter'. The '*' operator is convenient for multiplying a sequence of quotients. For example, 'm/s * s/day' is equivalent to 'm/day'. Similarly, you could write '1/2 * meter' to get half a meter. The 'units' program supports another option for numerical fractions: you can indicate division of _numbers_ with the vertical bar ('|'), so if you wanted half a meter you could write '1|2 meter'. You cannot use the vertical bar to indicate division of non-numerical units (e.g., 'm|s' results in an error message). Powers of units can be specified using the '^' character, as shown in the following example, or by simple concatenation of a unit and its exponent: 'cm3' is equivalent to 'cm^3'; if the exponent is more than one digit, the '^' is required. You can also use '**' as an exponent operator. You have: cm^3 You want: gallons * 0.00026417205 / 3785.4118 Concatenation only works with a single unit name: if you write '(m/s)2', 'units' will treat it as multiplication by 2. When a unit includes a prefix, exponent operators apply to the combination, so 'centimeter3' gives cubic centimeters. If you separate the prefix from the unit with any multiplication operator (e.g., 'centi meter^3'), the prefix is treated as a separate unit, so the exponent applies only to the unit without the prefix. The second example is equivalent to 'centi * (meter^3)', and gives a hundredth of a cubic meter, not a cubic centimeter. The 'units' program is limited internally to products of 99 units; accordingly, expressions like 'meter^100' or 'joule^34' (represented internally as 'kg^34 m^68 / s^68') will fail. The '|' operator has the highest precedence, so you can write the square root of two thirds as '2|3^1|2'. The '^' operator has the second highest precedence, and is evaluated right to left, as usual: You have: 5 * 2^3^2 You want: Definition: 2560 With a dimensionless base unit, any dimensionless exponent is meaningful (e.g., 'pi^exp(2.371)'). Even though angle is sometimes treated as dimensionless, exponents cannot have dimensions of angle: You have: 2^radian ^ Exponent not dimensionless If the base unit is not dimensionless, the exponent must be a rational number P/Q, and the dimension of the unit must be a power of Q, so 'gallon^2|3' works but 'acre^2|3' fails. An exponent using the slash ('/') operator (e.g., 'gallon^(2/3)') is also acceptable; the parentheses are needed because the precedence of '^' is higher than that of '/'. Since 'units' cannot represent dimensions with exponents greater than 99, a fully reduced exponent must have Q < 100. When raising a non-dimensionless unit to a power, 'units' attempts to convert a decimal exponent to a rational number with Q < 100. If this is not possible 'units' displays an error message: You have: ft^1.234 Base unit not dimensionless; rational exponent required A decimal exponent must match its rational representation to machine precision, so 'acre^1.5' works but 'gallon^0.666' does not.  File: units.info, Node: Sums and Differences of Units, Next: Numbers as Units, Prev: Operators, Up: Unit Expressions 5.2 Sums and Differences of Units ================================= You may sometimes want to add values of different units that are outside the SI. You may also wish to use 'units' as a calculator that keeps track of units. Sums of conformable units are written with the '+' character, and differences with the '-' character. You have: 2 hours + 23 minutes + 32 seconds You want: seconds * 8612 / 0.00011611705 You have: 12 ft + 3 in You want: cm * 373.38 / 0.0026782366 You have: 2 btu + 450 ft lbf You want: btu * 2.5782804 / 0.38785542 The expressions that are added or subtracted must reduce to identical expressions in primitive units, or an error message will be displayed: You have: 12 printerspoint - 4 heredium ^ Illegal sum of non-conformable units As usual, the precedence for '+' and '-' is lower than that of the other operators. A fractional quantity such as 2 1/2 cups can be given as '(2+1|2) cups'; the parentheses are necessary because multiplication has higher precedence than addition. If you omit the parentheses, 'units' attempts to add '2' and '1|2 cups', and you get an error message: You have: 2+1|2 cups ^ Illegal sum or difference of non-conformable units The expression could also be correctly written as '(2+1/2) cups'. If you write '2 1|2 cups' the space is interpreted as _multiplication_ so the result is the same as '1 cup'. The '+' and '-' characters sometimes appears in exponents like '3.43e+8'. This leads to an ambiguity in an expression like '3e+2 yC'. The unit 'e' is a small unit of charge, so this can be regarded as equivalent to '(3e+2) yC' or '(3 e)+(2 yC)'. This ambiguity is resolved by always interpreting '+' and '-' as part of an exponent if possible.  File: units.info, Node: Numbers as Units, Next: Built-in Functions, Prev: Sums and Differences of Units, Up: Unit Expressions 5.3 Numbers as Units ==================== For 'units', numbers are just another kind of unit. They can appear as many times as you like and in any order in a unit expression. For example, to find the volume of a box that is 2 ft by 3 ft by 12 ft in steres, you could do the following: You have: 2 ft 3 ft 12 ft You want: stere * 2.038813 / 0.49048148 You have: $ 5 / yard You want: cents / inch * 13.888889 / 0.072 And the second example shows how the dollar sign in the units conversion can precede the five. Be careful: 'units' will interpret '$5' with no space as equivalent to 'dollar^5'.  File: units.info, Node: Built-in Functions, Next: Previous Result, Prev: Numbers as Units, Up: Unit Expressions 5.4 Built-in Functions ====================== Several built-in functions are provided: 'sin', 'cos', 'tan', 'ln', 'log', 'exp', 'acos', 'atan', 'asin', 'cosh', 'sinh', 'tanh', 'acosh', 'asinh', and 'atanh'. The 'sin', 'cos', and 'tan' functions require either a dimensionless argument or an argument with dimensions of angle. You have: sin(30 degrees) You want: Definition: 0.5 You have: sin(pi/2) You want: Definition: 1 You have: sin(3 kg) ^ Unit not dimensionless The other functions on the list require dimensionless arguments. The inverse trigonometric functions return arguments with dimensions of angle. The 'ln' and 'log' functions give natural log and log base 10 respectively. To obtain logs for any integer base, enter the desired base immediately after 'log'. For example, to get log base 2 you would write 'log2' and to get log base 47 you could write 'log47'. You have: log2(32) You want: Definition: 5 You have: log3(32) You want: Definition: 3.1546488 You have: log4(32) You want: Definition: 2.5 You have: log32(32) You want: Definition: 1 You have: log(32) You want: Definition: 1.50515 You have: log10(32) You want: Definition: 1.50515 If you wish to take roots of units, you may use the 'sqrt' or 'cuberoot' functions. These functions require that the argument have the appropriate root. You can obtain higher roots by using fractional exponents: You have: sqrt(acre) You want: feet * 208.71074 / 0.0047913202 You have: (400 W/m^2 / stefanboltzmann)^(1/4) You have: Definition: 289.80882 K You have: cuberoot(hectare) ^ Unit not a root  File: units.info, Node: Previous Result, Next: Complicated Unit Expressions, Prev: Built-in Functions, Up: Unit Expressions 5.5 Previous Result =================== You can insert the result of the previous conversion using the underscore ('_'). It is useful when you want to convert the same input to several different units, for example You have: 2.3 tonrefrigeration You want: btu/hr * 27600 / 3.6231884e-005 You have: _ You want: kW * 8.0887615 / 0.12362832 Suppose you want to do some deep frying that requires an oil depth of 2 inches. You have 1/2 gallon of oil, and want to know the largest-diameter pan that will maintain the required depth. The nonlinear unit 'circlearea' gives the _radius_ of the circle (*note Other Nonlinear Units::, for a more detailed description) in SI units; you want the _diameter_ in _inches_: You have: 1|2 gallon / 2 in You want: circlearea 0.10890173 m You have: 2 _ You want: in * 8.5749393 / 0.1166189 In most cases, surrounding white space is optional, so the previous example could have used '2_'. If '_' follows a non-numerical unit symbol, however, the space is required: You have: m_ ^ Parse error When '_' is followed by a digit, the operation is multiplication rather than exponentiation, so that '_2', is equivalent to '_ * 2' rather than '_^2'. You can use the '_' symbol any number of times; for example, You have: m You want: Definition: 1 m You have: _ _ You want: Definition: 1 m^2 Using '_' before a conversion has been performed (e.g., immediately after invocation) generates an error: You have: _ ^ No previous result; '_' not set Accordingly, '_' serves no purpose when 'units' is invoked non-interactively. If 'units' is invoked with the '--verbose' option (*note Invoking Units::), the value of '_' is not expanded: You have: mile You want: ft mile = 5280 ft mile = (1 / 0.00018939394) ft You have: _ You want: m _ = 1609.344 m _ = (1 / 0.00062137119) m You can give '_' at the 'You want:' prompt, but it usually is not very useful.  File: units.info, Node: Complicated Unit Expressions, Next: Backwards Compatibility, Prev: Previous Result, Up: Unit Expressions 5.6 Complicated Unit Expressions ================================ The 'units' program is especially helpful in ensuring accuracy and dimensional consistency when converting lengthy unit expressions. For example, one form of the Darcy-Weisbach fluid-flow equation is Delta P = (8/pi^2) rho f L (Q^2 / d^5) where Delta P is the pressure drop, rho is the mass density, f is the (dimensionless) friction factor, L is the length of the pipe, Q is the volumetric flow rate, and d is the pipe diameter. It might be desired to have the equation in the form Delta P = A1 rho f L (Q^2 / d^5) that accepted the user's normal units; for typical units used in the US, the required conversion could be something like You have: (8/pi^2)(lbm/ft^3)ft(ft^3/s)^2(1/in^5) You want: psi * 43.533969 / 0.022970568 The parentheses allow individual terms in the expression to be entered naturally, as they might be read from the formula. Alternatively, the multiplication could be done with the '*' rather than a space; then parentheses are needed only around 'ft^3/s' because of its exponent: You have: 8/pi^2 * lbm/ft^3 * ft * (ft^3/s)^2 /in^5 You want: psi * 43.533969 / 0.022970568 Without parentheses, and using spaces for multiplication, the previous conversion would need to be entered as You have: 8 lb ft ft^3 ft^3 / pi^2 ft^3 s^2 in^5 You want: psi * 43.533969 / 0.022970568  File: units.info, Node: Backwards Compatibility, Prev: Complicated Unit Expressions, Up: Unit Expressions 5.7 Backwards Compatibility: '*' and '-' ======================================== The original 'units' assigned multiplication a higher precedence than division using the slash. This differs from the usual precedence rules, which give multiplication and division equal precedence, and can be confusing for people who think of units as a calculator. The star operator ('*') included in this 'units' program has, by default, the same precedence as division, and hence follows the usual precedence rules. For backwards compatibility you can invoke 'units' with the '--oldstar' option. Then '*' has a higher precedence than division, and the same precedence as multiplication using the space. Historically, the hyphen ('-') has been used in technical publications to indicate products of units, and the original 'units' program treated it as a multiplication operator. Because 'units' provides several other ways to obtain unit products, and because '-' is a subtraction operator in general algebraic expressions, 'units' treats the binary '-' as a subtraction operator by default. For backwards compatibility use the '--product' option, which causes 'units' to treat the binary '-' operator as a product operator. When '-' is a multiplication operator it has the same precedence as multiplication with a space, giving it a higher precedence than division. When '-' is used as a unary operator it negates its operand. Regardless of the 'units' options, if '-' appears after '(' or after '+', then it will act as a negation operator. So you can always compute 20 degrees minus 12 minutes by entering '20 degrees + -12 arcmin'. You must use this construction when you define new units because you cannot know what options will be in force when your definition is processed.  File: units.info, Node: Nonlinear Conversions, Next: Unit Lists, Prev: Unit Expressions, Up: Top 6 Nonlinear Unit Conversions **************************** Nonlinear units are represented using functional notation. They make possible nonlinear unit conversions such as temperature. * Menu: * Temperature Conversions:: Conversion between temperature scales * Other Nonlinear Units:: Ring size, wire gauge, abrasive grit size  File: units.info, Node: Temperature Conversions, Next: Other Nonlinear Units, Up: Nonlinear Conversions 6.1 Temperature Conversions =========================== Conversions between temperatures are different from linear conversions between temperature _increments_--see the example below. The absolute temperature conversions are handled by units starting with 'temp', and you must use functional notation. The temperature-increment conversions are done using units starting with 'deg' and they do not require functional notation. You have: tempF(45) You want: tempC 7.2222222 You have: 45 degF You want: degC * 25 / 0.04 Think of 'tempF(X)' not as a function but as a notation that indicates that X should have units of 'tempF' attached to it. *Note Defining Nonlinear Units::. The first conversion shows that if it's 45 degrees Fahrenheit outside, it's 7.2 degrees Celsius. The second conversion indicates that a change of 45 degrees Fahrenheit corresponds to a change of 25 degrees Celsius. The conversion from 'tempF(X)' is to absolute temperature, so that You have: tempF(45) You want: degR * 504.67 / 0.0019814929 gives the same result as You have: tempF(45) You want: tempR * 504.67 / 0.0019814929 But if you convert 'tempF(X)' to 'degC', the output is probably not what you expect: You have: tempF(45) You want: degC * 280.37222 / 0.0035666871 The result is the temperature in K, because 'degC' is defined as 'K', the Kelvin. For consistent results, use the 'tempX' units when converting to a temperature rather than converting a temperature increment. The 'tempC()' and 'tempF()' definitions are limited to positive absolute temperatures, and giving a value that would result in a negative absolute temperature generates an error message: You have: tempC(-275) ^ Argument of function outside domain ^  File: units.info, Node: Other Nonlinear Units, Prev: Temperature Conversions, Up: Nonlinear Conversions 6.2 Other Nonlinear Units ========================= Some other examples of nonlinear units are numerous different ring sizes and wire gauges, the grit sizes used for abrasives, the decibel scale, shoe size, scales for the density of sugar (e.g., baume). The standard data file also supplies units for computing the area of a circle and the volume of a sphere. See the standard units data file for more details. Wire gauges with multiple zeroes are signified using negative numbers where two zeroes is '-1'. Alternatively, you can use the synonyms 'g00', 'g000', and so on that are defined in the standard units data file. You have: wiregauge(11) You want: inches * 0.090742002 / 11.020255 You have: brwiregauge(g00) You want: inches * 0.348 / 2.8735632 You have: 1 mm You want: wiregauge 18.201919 You have: grit_P(600) You want: grit_ansicoated 342.76923 The last example shows the conversion from P graded sand paper, which is the European standard and may be marked "P600" on the back, to the USA standard. You can compute the area of a circle using the nonlinear unit, 'circlearea'. You can also do this using the circularinch or circleinch. The next example shows two ways to compute the area of a circle with a five inch radius and one way to compute the volume of a sphere with a radius of one meter. You have: circlearea(5 in) You want: in2 * 78.539816 / 0.012732395 You have: 10^2 circleinch You want: in2 * 78.539816 / 0.012732395 You have: spherevol(meter) You want: ft3 * 147.92573 / 0.0067601492 The inverse of a nonlinear conversion is indicated by prefixing a tilde ('~') to the nonlinear unit name: You have: ~wiregauge(0.090742002 inches) You want: Definition: 11 You can give a nonlinear unit definition without an argument or parentheses, and press at the 'You want:' prompt to get the definition of a nonlinear unit; if the definition is not valid for all real numbers, the range of validity is also given. If the definition requires specific units this information is also displayed: You have: tempC Definition: tempC(x) = x K + stdtemp defined for x >= -273.15 You have: ~tempC Definition: ~tempC(tempC) = (tempC +(-stdtemp))/K defined for tempC >= 0 K You have: circlearea Definition: circlearea(r) = pi r^2 r has units m To see the definition of the inverse use the '~' notation. In this case the parameter in the functional definition will usually be the name of the unit. Note that the inverse for 'tempC' shows that it requires units of 'K' in the specification of the allowed range of values. Nonlinear unit conversions are described in more detail in *note Defining Nonlinear Units::.  File: units.info, Node: Unit Lists, Next: Using CGS Units, Prev: Nonlinear Conversions, Up: Top 7 Unit Lists: Conversion to Sums of Units ***************************************** Outside of the SI, it is sometimes desirable to convert a single unit to a sum of units--for example, feet to feet plus inches. The conversion _from_ sums of units was described in *note Sums and Differences of Units::, and is a simple matter of adding the units with the '+' sign: You have: 12 ft + 3 in + 3|8 in You want: ft * 12.28125 / 0.081424936 Although you can similarly write a sum of units to convert _to_, the result will not be the conversion to the units in the sum, but rather the conversion to the particular sum that you have entered: You have: 12.28125 ft You want: ft + in + 1|8 in * 11.228571 / 0.089058524 The unit expression given at the 'You want:' prompt is equivalent to asking for conversion to multiples of '1 ft + 1 in + 1|8 in', which is 1.09375 ft, so the conversion in the previous example is equivalent to You have: 12.28125 ft You want: 1.09375 ft * 11.228571 / 0.089058524 In converting to a sum of units like miles, feet and inches, you typically want the largest integral value for the first unit, followed by the largest integral value for the next, and the remainder converted to the last unit. You can do this conversion easily with 'units' using a special syntax for lists of units. You must list the desired units in order from largest to smallest, separated by the semicolon (';') character: You have: 12.28125 ft You want: ft;in;1|8 in 12 ft + 3 in + 3|8 in The conversion always gives integer coefficients on the units in the list, except possibly the last unit when the conversion is not exact: You have: 12.28126 ft You want: ft;in;1|8 in 12 ft + 3 in + 3.00096 * 1|8 in The order in which you list the units is important: You have: 3 kg You want: oz;lb 105 oz + 0.051367866 lb You have: 3 kg You want: lb;oz 6 lb + 9.8218858 oz Listing ounces before pounds produces a technically correct result, but not a very useful one. You must list the units in descending order of size in order to get the most useful result. Ending a unit list with the separator ';' has the same effect as repeating the last unit on the list, so 'ft;in;1|8 in;' is equivalent to 'ft;in;1|8 in;1|8 in'. With the example above, this gives You have: 12.28126 ft You want: ft;in;1|8 in; 12 ft + 3 in + 3|8 in + 0.00096 * 1|8 in in effect separating the integer and fractional parts of the coefficient for the last unit. If you instead prefer to round the last coefficient to an integer you can do this with the '--round' ('-r') option. With the previous example, the result is You have: 12.28126 ft You want: ft;in;1|8 in 12 ft + 3 in + 3|8 in (rounded down to nearest 1|8 in) When you use the '-r' option, repeating the last unit on the list has no effect (e.g., 'ft;in;1|8 in;1|8 in' is equivalent to 'ft;in;1|8 in'), and hence neither does ending a list with a ';'. With a single unit and the '-r' option, a terminal ';' _does_ have an effect: it causes 'units' to treat the single unit as a list and produce a rounded value for the single unit. Without the extra ';', the '-r' option has no effect on single unit conversions. This example shows the output using the '-r' option: You have: 12.28126 ft You want: in * 147.37512 / 0.0067854058 You have: 12.28126 ft You want: in; 147 in (rounded down to nearest in) Each unit that appears in the list must be conformable with the first unit on the list, and of course the listed units must also be conformable with the unit that you enter at the 'You have:' prompt. You have: meter You want: ft;kg ^ conformability error ft = 0.3048 m kg = 1 kg You have: meter You want: lb;oz conformability error 1 m 0.45359237 kg In the first case, 'units' reports the disagreement between units appearing on the list. In the second case, 'units' reports disagreement between the unit you entered and the desired conversion. This conformability error is based on the first unit on the unit list. Other common candidates for conversion to sums of units are angles and time: You have: 23.437754 deg You want; deg;arcmin;arcsec 23 deg + 26 arcmin + 15.9144 arcsec You have: 7.2319 hr You want: hr;min;sec 7 hr + 13 min + 54.84 sec In North America, recipes for cooking typically measure ingredients by volume, and use units that are not always convenient multiples of each other. Suppose that you have a recipe for 6 and you wish to make a portion for 1. If the recipe calls for 2 1/2 cups of an ingredient, you might wish to know the measurements in terms of measuring devices you have available, you could use 'units' and enter You have: (2+1|2) cup / 6 You want: cup;1|2 cup;1|3 cup;1|4 cup;tbsp;tsp;1|2 tsp;1|4 tsp 1|3 cup + 1 tbsp + 1 tsp By default, if a unit in a list begins with fraction of the form 1|X and its multiplier is an integer, the fraction is given as the product of the multiplier and the numerator; for example, You have: 12.28125 ft You want: ft;in;1|8 in; 12 ft + 3 in + 3|8 in In many cases, such as the example above, this is what is wanted, but sometimes it is not. For example, a cooking recipe for 6 might call for 5 1/4 cup of an ingredient, but you want a portion for 2, and your 1-cup measure is not available; you might try You have: (5+1|4) cup / 3 You want: 1|2 cup;1|3 cup;1|4 cup 3|2 cup + 1|4 cup This result might be fine for a baker who has a 1 1/2-cup measure (and recognizes the equivalence), but it may not be as useful to someone with more limited set of measures, who does want to do additional calculations, and only wants to know "How many 1/2-cup measures to I need to add?" After all, that's what was actually asked. With the '--show-factor' option, the factor will not be combined with a unity numerator, so that you get You have: (5+1|4) cup / 3 You want: 1|2 cup;1|3 cup;1|4 cup 3 * 1|2 cup + 1|4 cup A user-specified fractional unit with a numerator other than 1 is never overridden, however--if a unit list specifies '3|4 cup;1|2 cup', a result equivalent to 1 1/2 cups will always be shown as '2 * 3|4 cup' whether or not the '--show-factor' option is given. Some applications for unit lists may be less obvious. Suppose that you have a postal scale and wish to ensure that it's accurate at 1 oz, but have only metric calibration weights. You might try You have: 1 oz You want: 100 g;50 g; 20 g;10 g;5 g;2 g;1 g; 20 g + 5 g + 2 g + 1 g + 0.34952312 * 1 g You might then place one each of the 20 g, 5 g, 2 g, and 1 g weights on the scale and hope that it indicates close to You have: 20 g + 5 g + 2 g + 1 g You want: oz; 0.98767093 oz Appending ';' to 'oz' forces a one-line display that includes the unit; here the integer part of the result is zero, so it is not displayed. A unit list such as cup;1|2 cup;1|3 cup;1|4 cup;tbsp;tsp;1|2 tsp;1|4 tsp can be tedious to enter. The 'units' program provides shorthand names for some common combinations: hms hours, minutes, seconds dms angle: degrees, minutes, seconds time years, days, hours, minutes and seconds usvol US cooking volume: cups and smaller Using these shorthands, or "unit list aliases", you can do the following conversions: You have: anomalisticyear You want: time 1 year + 25 min + 3.4653216 sec You have: 1|6 cup You want: usvol 2 tbsp + 2 tsp You cannot combine a unit list alias with other units: it must appear alone at the 'You want:' prompt. You can display the definition of a unit list alias by entering it at the 'You have:' prompt: You have: dms Definition: unit list, deg;arcmin;arcsec When you specify compact output with '--compact', '--terse' or '-t' and perform conversion to a unit list, 'units' lists the conversion factors for each unit in the list, separated by semicolons. You have: year You want: day;min;sec 365;348;45.974678 Unlike the case of regular output, zeros _are_ included in this output list: You have: liter You want: cup;1|2 cup;1|4 cup;tbsp 4;0;0;3.6280454  File: units.info, Node: Using CGS Units, Next: Logging Calculations, Prev: Unit Lists, Up: Top 8 Using CGS Units ***************** * Menu: * Specifying CGS Units:: How to specify the desired CGS units * CGS Units Systems:: The various CGS units systems * Conversions Between Systems:: Conversions between units in different systems * Prompt Prefix:: The prompt prefix shows specified CGS units The SI--an extension of the MKS (meter-kilogram-second) system--has largely supplanted the older CGS (centimeter-gram-second) system, but CGS units are still used in a few specialized fields, especially in physics where they lead to a more elegant formulation of Maxwell's equations. Conversions between SI and CGS involving mechanical units are straightforward, involving powers of 10 (e.g., 1 m = 100 cm). Conversions involving electromagnetic units are more complicated, and 'units' supports three different systems of CGS units: electrostatic units (ESU), electromagnetic units (EMU), and the Gaussian system. The differences between these systems arise from different choices made for proportionality constants in electromagnetic equations. Coulomb's law gives electrostatic force between two charges separated by a distance r: F = k_C q_1 q_2 / r^2. Ampere's law gives the electromagnetic force per unit length between two current-carrying conductors separated by a distance r: F/l = 2 k_A I_1 I_2 / r. The two constants, k_C and k_A, are related by the square of the speed of light: k_A = k_C / c^2. In the SI, the constants have dimensions, and an additional base unit, the ampere, measures electric current. The CGS systems do not define new base units, but express charge and current as derived units in terms of mass, length, and time. In the ESU system, the constant for Coulomb's law is chosen to be unity and dimensionless, which defines the unit of charge. In the EMU system, the constant for Ampere's law is chosen to be unity and dimensionless, which defines a unit of current. The Gaussian system usually uses the ESU units for charge and current; it chooses another constant so that the units for the electric and magnetic fields are the same. The dimensions of electrical quantities in the various CGS systems are different from the SI dimensions for the same units; strictly, conversions between these systems and SI are not possible. But units in different systems relate to the same physical quantities, so there is a _correspondence_ between these units. The 'units' program defines the units so that you can convert between corresponding units in the various systems.  File: units.info, Node: Specifying CGS Units, Next: CGS Units Systems, Up: Using CGS Units 8.1 Specifying CGS Units ======================== The CGS definitions involve cm^(1/2) and g^(1/2) which is problematic because 'units' does not normally support fractional roots of base units. The '--units' ('-u') option allows selection of a CGS unit system and works around this restriction by introducing base units for the square roots of length and mass: 'sqrt_cm' and 'sqrt_g'. The centimeter then becomes 'sqrt_cm^2' and the gram, 'sqrt_g^2'. This allows working from equations using the units in the CGS system, and enforcing dimensional conformity within that system. Recognized arguments to the '--units' option are 'gauss[ian]', 'esu', 'emu', and 'si'; the argument is case insensitive. The default mode for 'units' is SI units; the only effect of giving 'si' with the '--units' option is to prepend '(SI)' to the 'You have:' prompt. Giving an unrecognized system generates a warning, and 'units' uses SI units. The changes resulting from the '--units' option are actually controlled by the 'UNITS_SYSTEM' environment variable. If you frequently work with one of the supported CGS units systems, you may set this environment variable rather than giving the '--units' option at each invocation. As usual, an option given on the command line overrides the setting of the environment variable. For example, if you would normally work with Gaussian units but might occasionally work with SI, you could set 'UNITS_SYSTEM' to 'gaussian' and specify SI with the '--units' option. Unlike the argument to the '--units' option, the value of 'UNITS_SYSTEM' _is_ case sensitive, so setting a value of 'EMU' will have no effect other than to give an error message and set SI units. The CGS definitions appear as conditional settings in the standard units data file, which you can consult for more information on how these units are defined, or on how to define an alternate units system.  File: units.info, Node: CGS Units Systems, Next: Conversions Between Systems, Prev: Specifying CGS Units, Up: Using CGS Units 8.2 CGS Units Systems ===================== The ESU system derives the electromagnetic units from its unit of charge, the statcoulomb, which is defined from Coulomb's law. The statcoulomb equals dyne^(1/2) cm or cm^(3/2) g^(1/2) s^(-1). The unit of current, the statampere, is statcoulomb sec, analogous to the relationship in SI. Other electrical units are then derived in a manner similar to that for SI units; the units use the SI names prefixed by 'stat-', e.g., 'statvolt' or 'statV'. The prefix 'st-' is also recognized (e.g., 'stV'). The EMU system derives the electromagnetic units from its unit of current, the abampere, which is defined in terms of Ampere's law. The abampere is equal to dyne^(1/2) or cm^(1/2) g^(1/2) s^(-1). The unit of charge, the abcoulomb, is abampere sec, again analogous to the SI relationship. Other electrical units are then derived in a manner similar to that for SI units; the units use the SI names prefixed by 'ab-', e.g., 'abvolt' or 'abV'. The magnetic field units include the gauss, the oersted and the maxwell. The Gaussian units system, which was also known as the Symmetric System, uses the same charge and current units as the ESU system (e.g., 'statC', 'statA'); it differs by defining the magnetic field so that it has the same units as the electric field. The resulting magnetic field units are the same ones used in the EMU system: the gauss, the oersted and the maxwell.  File: units.info, Node: Conversions Between Systems, Next: Prompt Prefix, Prev: CGS Units Systems, Up: Using CGS Units 8.3 Conversions Between Different Systems ========================================= The CGS systems define units that measure the same thing but may have conflicting dimensions. Furthermore, the dimensions of the electromagnetic CGS units are never compatible with SI. But if you measure charge in two different systems you have measured the same physical thing, so there is a _correspondence_ between the units in the different systems, and 'units' supports conversions between corresponding units. When running with SI, 'units' defines all of the CGS units in terms of SI. When you select a CGS system, 'units' defines the SI units and the other CGS system units in terms of the system you have selected. (Gaussian) You have: statA You want: abA * 3.335641e-11 / 2.9979246e+10 (Gaussian) You have: abA You want: sqrt(dyne) conformability error 2.9979246e+10 sqrt_cm^3 sqrt_g / s^2 1 sqrt_cm sqrt_g / s In the above example, 'units' converts between the current units statA and abA even though the abA, from the EMU system, has incompatible dimensions. This works because in Gaussian mode, the abA is defined in terms of the statA, so it does not have the correct definition for EMU; consequently, you cannot convert the abA to its EMU definition. One challenge of conversion is that because the CGS system has fewer base units, quantities that have different dimensions in SI may have the same dimension in a CGS system. And yet, they may not have the same conversion factor. For example, the unit for the E field and B fields are the same in the Gaussian system, but the conversion factors to SI are quite different. This means that correct conversion is only possible if you keep track of what quantity is being measured. You cannot convert statV/cm to SI without indicating which type of field the unit measures. To aid in dimensional analysis, 'units' defines various dimension units such as LENGTH, TIME, and CHARGE to be the appropriate dimension in SI. The electromagnetic dimensions such as B_FIELD or E_FIELD may be useful aids both for conversion and dimensional analysis in CGS. You can convert them to or from CGS in order to perform SI conversions that in some cases will not work directly due to dimensional incompatibilities. This example shows how the Gaussian system uses the same units for all of the fields, but they all have different conversion factors with SI. (Gaussian) You have: statV/cm You want: E_FIELD * 29979.246 / 3.335641e-05 (Gaussian) You have: statV/cm You want: B_FIELD * 0.0001 / 10000 (Gaussian) You have: statV/cm You want: H_FIELD * 79.577472 / 0.012566371 (Gaussian) You have: statV/cm You want: D_FIELD * 2.6544187e-07 / 3767303.1 The next example shows that the oersted cannot be converted directly to the SI unit of magnetic field, A/m, because the dimensions conflict. We cannot redefine the ampere to make this work because then it would not convert with the statampere. But you can still do this conversion as shown below. (Gaussian) You have: oersted You want: A/m conformability error 1 sqrt_g / s sqrt_cm 29979246 sqrt_cm sqrt_g / s^2 (Gaussian) You have: oersted You want: H_FIELD * 79.577472 / 0.012566371  File: units.info, Node: Prompt Prefix, Prev: Conversions Between Systems, Up: Using CGS Units 8.4 Prompt Prefix ================= If a unit system is specified with the '--units' option, the selected system's name is prepended to the 'You have:' prompt as a reminder, e.g., (Gaussian) You have: stC You want: Definition: statcoulomb = sqrt(dyne) cm = 1 sqrt_cm^3 sqrt_g / s You can suppressed the prefix by including a line !prompt with no argument in a site or personal units data file. The prompt can be conditionally suppressed by including such a line within '!var' ... '!endvar' constructs, e.g., !var UNITS_SYSTEM gaussian gauss !prompt !endvar This might be appropriate if you normally use Gaussian units and find the prefix distracting but want to be reminded when you have selected a different CGS system.  File: units.info, Node: Logging Calculations, Next: Invoking Units, Prev: Using CGS Units, Up: Top 9 Logging Calculations ********************** The '--log' option allows you to save the results of calculations in a file; this can be useful if you need a permanent record of your work. For example, the fluid-flow conversion in *note Complicated Unit Expressions::, is lengthy, and if you were to use it in designing a piping system, you might want a record of it for the project file. If the interactive session # Conversion factor A1 for pressure drop # dP = A1 rho f L Q^2/d^5 You have: (8/pi^2) (lbm/ft^3)ft(ft^3/s)^2(1/in^5) # Input units You want: psi * 43.533969 / 0.022970568 were logged, the log file would contain ### Log started Fri Oct 02 15:55:35 2015 # Conversion factor A1 for pressure drop # dP = A1 rho f L Q^2/d^5 From: (8/pi^2) (lbm/ft^3)ft(ft^3/s)^2(1/in^5) # Input units To: psi * 43.533969 / 0.022970568 The time is written to the log file when the file is opened. The use of comments can help clarify the meaning of calculations for the log. The log includes conformability errors between the units at the 'You have:' and 'You want:' prompts, but not other errors, including lack of conformability of items in sums or differences or among items in a unit list. For example, a conversion between zenith angle and elevation angle could involve You have: 90 deg - (5 deg + 22 min + 9 sec) ^ Illegal sum or difference of non-conformable units You have: 90 deg - (5 deg + 22 arcmin + 9 arcsec) You want: dms 84 deg + 37 arcmin + 51 arcsec You have: _ You want: deg * 84.630833 / 0.011816024 You have: The log file would contain From: 90 deg - (5 deg + 22 arcmin + 9 arcsec) To: deg;arcmin;arcsec 84 deg + 37 arcmin + 51 arcsec From: _ To: deg * 84.630833 / 0.011816024 The initial entry error (forgetting that minutes have dimension of time, and that arcminutes must be used for dimensions of angle) does not appear in the output. When converting to a unit list alias, 'units' expands the alias in the log file. The 'From:' and 'To:' tags are written to the log file even if the '--quiet' option is given. If the log file exists when 'units' is invoked, the new results are appended to the log file. The time is written to the log file each time the file is opened. The '--log' option is ignored when 'units' is used non-interactively.  File: units.info, Node: Invoking Units, Next: Output Styles, Prev: Logging Calculations, Up: Top 10 Invoking 'units' ******************* You invoke 'units' like this: units [OPTIONS] [FROM-UNIT [TO-UNIT]] If the FROM-UNIT and TO-UNIT are omitted, the program will use interactive prompts to determine which conversions to perform. *Note Interactive Use::. If both FROM-UNIT and TO-UNIT are given, 'units' will print the result of that single conversion and then exit. If only FROM-UNIT appears on the command line, 'units' will display the definition of that unit and exit. Units specified on the command line may need to be quoted to protect them from shell interpretation and to group them into two arguments. Note also that the '--quiet' option is enabled by default if you specify FROM-UNIT on the command line. *Note Command Line Use::. The default behavior of 'units' can be changed by various options given on the command line. In most cases, the options may be given in either short form (a single '-' followed by a single character) or long form ('--' followed by a word or hyphen-separated words). Short-form options are cryptic but require less typing; long-form options require more typing but are more explanatory and may be more mnemonic. With long-form options you need only enter sufficient characters to uniquely identify the option to the program. For example, '--out %f' works, but '--o %f' fails because 'units' has other long options beginning with 'o'. However, '--q' works because '--quiet' is the only long option beginning with 'q'. Some options require arguments to specify a value (e.g., '-d 12' or '--digits 12'). Short-form options that do not take arguments may be concatenated (e.g., '-erS' is equivalent to '-e -r -S'); the last option in such a list may be one that takes an argument (e.g., '-ed 12'). With short-form options, the space between an option and its argument is optional (e.g., '-d12' is equivalent to '-d 12'). Long-form options may not be concatenated, and the space between a long-form option and its argument is required. Short-form and long-form options may be intermixed on the command line. Options may be given in any order, but when incompatible options (e.g., '--output-format' and '--exponential') are given in combination, behavior is controlled by the last option given. For example, '-o%.12f -e' gives exponential format with the default eight significant digits). The following options are available: '-c' '--check' Check that all units and prefixes defined in the units data file reduce to primitive units. Print a list of all units that cannot be reduced. Also display some other diagnostics about suspicious definitions in the units data file. Only definitions active in the current locale are checked. You should always run 'units' with this option after modifying a units data file. '--check-verbose' '--verbose-check' Like the '--check' option, this option prints a list of units that cannot be reduced. But to help find unit definitions that cause endless loops, it lists the units as they are checked. If 'units' hangs, then the last unit to be printed has a bad definition. Only definitions active in the current locale are checked. '-d NDIGITS' '--digits NDIGITS' Set the number of significant digits in the output to the value specified (which must be greater than zero). For example, '-d 12' sets the number of significant digits to 12. With exponential output 'units' displays one digit to the left of the decimal point(1) and eleven digits to the right of the decimal point. On most systems, the maximum number of internally meaningful digits is 15; if you specify a greater number than your system's maximum, 'units' will print a warning and set the number to the largest meaningful value. To directly set the maximum value, give an argument of 'max' (e.g., '-d max'). Be aware, of course, that "significant" here refers only to the _display_ of numbers; if results depend on physical constants not known to this precision, the physically meaningful precision may be less than that shown. The '--digits' option conflicts with the '--output-format' option. '-e' '--exponential' Set the numeric output format to exponential (i.e., scientific notation), like that used in the Unix 'units' program. The default precision is eight significant digits (seven digits to the right of the decimal point); this can be changed with the '--digits' option. The '--exponential' option conflicts with the '--output-format' option. '-o FORMAT' '--output-format FORMAT' This option affords complete control over the numeric output format using the specified FORMAT. The format is a single floating point numeric format for the 'printf()' function in the C programming language. All compilers support the format types 'g' and 'G' to specify significant digits, 'e' and 'E' for scientific notation, and 'f' for fixed-point decimal. The ISO C99 standard introduced the 'F' type for fixed-point decimal and the 'a' and 'A' types for hexadecimal floating point; these types are allowed with compilers that support them. The default format is '%.8g'; for greater precision, you could specify '-o %.15g'. *Note Numeric Output Format::, and the documentation for 'printf()' for more detailed descriptions of the format specification. The '--output-format' option affords the greatest control of the output appearance, but requires at least rudimentary knowledge of the 'printf()' format syntax. If you don't want to bother with the 'printf()' syntax, you can specify greater precision more simply with the '--digits' option or select exponential format with '--exponential'. The '--output-format' option is incompatible with the '--exponential' and '--digits' options. '-f FILENAME' '--file FILENAME' Instruct 'units' to load the units file FILENAME. You can specify up to 25 units files on the command line. When you use this option, 'units' will load _only_ the files you list on the command line; it will not load the standard file or your personal units file unless you explicitly list them. If FILENAME is the empty string ('-f ""'), the default units file (or that specified by 'UNITSFILE') will be loaded in addition to any others specified with '-f'. '-L LOGFILE' '--log LOGFILE' Save the results of calculations in the file LOGFILE; this can be useful if it is important to have a record of unit conversions or other calculations that are to be used extensively or in a critical activity such as a program or design project. If LOGFILE exits, the new results are appended to the file. This option is ignored when 'units' is used non-interactively. *Note Logging Calculations::, for a more detailed description and some examples. '-H FILENAME' '--history FILENAME' Instruct 'units' to save history to FILENAME, so that a record of your commands is available for retrieval across different 'units' invocations. To prevent the history from being saved set FILENAME to the empty string ('-H ""'). This option has no effect if readline is not available. '-h' '--help' Print out a summary of the options for 'units'. '-m' '--minus' Causes '-' to be interpreted as a subtraction operator. This is the default behavior. '-p' '--product' Causes '-' to be interpreted as a multiplication operator when it has two operands. It will act as a negation operator when it has only one operand: '(-3)'. By default '-' is treated as a subtraction operator. '--oldstar' Causes '*' to have the old-style precedence, higher than the precedence of division so that '1/2*3' will equal '1/6'. '--newstar' Forces '*' to have the new (default) precedence that follows the usual rules of algebra: the precedence of '*' is the same as the precedence of '/', so that '1/2*3' will equal '3/2'. '-r' '--round' When converting to a combination of units given by a unit list, round the value of the last unit in the list to the nearest integer. '-S' '--show-factor' When converting to a combination of units specified in a list, always show a non-unity factor before a unit that begins with a fraction with a unity denominator. By default, if the unit in a list begins with fraction of the form 1|X and its multiplier is an integer other than 1, the fraction is given as the product of the multiplier and the numerator (e.g., '3|8 in' rather than '3 * 1|8 in'). In some cases, this is not what is wanted; for example, the results for a cooking recipe might show '3 * 1|2 cup' as '3|2 cup'. With the '--show-factor' option, a result equivalent to 1.5 cups will display as '3 * 1|2 cup' rather than '3|2 cup'. A user-specified fractional unit with a numerator other than 1 is never overridden, however--if a unit list specifies '3|4 cup;1|2 cup', a result equivalent to 1 1/2 cups will always be shown as '2 * 3|4 cup' whether or not the '--show-factor' option is given. '-v' '--verbose' Give slightly more verbose output when converting units. When combined with the '-c' option this gives the same effect as '--check-verbose'. When combined with '--version' produces a more detailed output, equivalent to the '--info' option. '-V' '--version' Print the program version number, tell whether the 'readline' library has been included, tell whether UTF-8 support has been included; give the locale, the location of the default units data file, and the location of the personal units data file; indicate if the personal units data file does not exist. When given in combination with the '--terse' option, the program prints only the version number and exits. When given in combination with the '--verbose' option, the program, the '--version' option has the same effect as the '--info' option below. '-I' '--info' Print the information given with the '--version' option, show the pathname of the units program, show the status of the 'UNITSFILE' and 'MYUNITSFILE' environment variables, and additional information about how 'units' locates the related files. On systems running Microsoft Windows, the status of the 'UNITSLOCALE' environment variable and information about the related locale map are also given. This option is usually of interest only to developers and administrators, but it can sometimes be useful for troubleshooting. Combining the '--version' and '--verbose' options has the same effect as giving '--info'. '-U' '--unitsfile' Print the location of the default units data file and exit; if the file cannot be found, print "Units data file not found". '-u (gauss[ian]|esu|emu)' '--units (gauss[ian]|esu|emu)' Specify a CGS units system: Gaussian, ESU, or EMU. '-l LOCALE' '--locale LOCALE' Force a specified locale such as 'en_GB' to get British definitions by default. This overrides the locale determined from system settings or environment variables. *Note Locale::, for a description of locale format. '-n' '--nolists' Disable conversion to unit lists. '-s' '--strict' Suppress conversion of units to their reciprocal units. For example, 'units' will normally convert hertz to seconds because these units are reciprocals of each other. The strict option requires that units be strictly conformable to perform a conversion, and will give an error if you attempt to convert hertz to seconds. '-1' '--one-line' Give only one line of output (the forward conversion); do not print the reverse conversion. If a reciprocal conversion is performed, then 'units' will still print the "reciprocal conversion" line. '-t' '--terse' Print only a single conversion factor. This option can be used when calling 'units' from another program so that the output is easy to parse. This option has the combined effect of these options: '--strict' '--quiet' '--one-line' '--compact'. When combined with '--version' it produces a display showing only the program name and version number. '--compact' Give compact output featuring only the conversion factor; the multiplication and division signs are not shown, and there is no leading whitespace. If you convert to a unit list, then the output is a semicolon separated list of factors. This turns off the '--verbose' option. '-q' '--quiet' '--silent' Suppress the display of statistics about the number of units loaded, any messages printed by the units database, and the prompting of the user for units. This option does not affect how 'units' displays the results. This option is turned on by default if you invoke 'units' with a unit expression on the command line. ---------- Footnotes ---------- (1) This document refers to "decimal point," but strictly, the "radix" separates the integer and fractional parts of a floating-point number; in English-speaking countries, the radix is a point ('.'), but in most other countries it is a comma (',').  File: units.info, Node: Output Styles, Next: Defining Your Own Units, Prev: Invoking Units, Up: Top 11 Output Styles **************** The output can be tweaked in various ways using command line options. With no options, the output looks like this $ units Currency exchange rates from FloatRates (USD base) on 2019-02-20 3070 units, 109 prefixes, 109 nonlinear units You have: 23ft You want: m * 7.0104 / 0.14264521 You have: m You want: ft;in 3 ft + 3.3700787 in This is arguably a bit cryptic; the '--verbose' option makes clear what the output means: $ units --verbose Currency exchange rates from FloatRates (USD base) on 2019-02-20 3070 units, 109 prefixes, 109 nonlinear units You have: 23 ft You want: m 23 ft = 7.0104 m 23 ft = (1 / 0.14264521) m You have: meter You want: ft;in meter = 3 ft + 3.3700787 in The '--quiet' option suppresses the clutter displayed when 'units' starts, as well as the prompts to the user. This option is enabled by default when you give units on the command line. $ units --quiet 23 ft m * 7.0104 / 0.14264521 $ units 23ft m * 7.0104 / 0.14264521 The remaining style options allow you to display only numerical values without the tab or the multiplication and division signs, or to display just a single line showing the forward conversion: $ units --compact 23ft m 7.0104 0.14264521 $ units --compact m 'ft;in' 3;3.3700787 $ units --one-line 23ft m * 7.0104 $ units --one-line 23ft 1/m reciprocal conversion * 0.14264521 $ units --one-line 23ft kg conformability error 7.0104 m 1 kg Note that when converting to a unit list, the '--compact' option displays a semicolon separated list of results. Also be aware that the 'one-line' option doesn't live up to its name if you execute a reciprocal conversion or if you get a conformability error. The former case can be prevented using the '--strict' option, which suppresses reciprocal conversions. Similarly you can suppress unit list conversion using '--nolists'. It is impossible to prevent the three line error output. $ units --compact --nolists m 'ft;in' Error in 'ft;in': Parse error $ units --one-line --strict 23ft 1/m The various style options can be combined appropriately. The ultimate combination is the '--terse' option, which combines '--strict', '--quiet', '--one-line', and '--compact' to produce the minimal output, just a single number for regular conversions and a semicolon separated list for conversion to unit lists. This will likely be the best choice for programs that want to call 'units' and then process its result. $ units --terse 23ft m 7.0104 $ units --terse m 'ft;in' 3;3.3700787 $ units --terse 23ft 1/m conformability error 7.0104 m 1 / m  File: units.info, Node: Defining Your Own Units, Next: Numeric Output Format, Prev: Output Styles, Up: Top 12 Adding Your Own Definitions ****************************** * Menu: * Units Data Files:: Where are units defined? * Defining New Units:: Writing your own unit and prefix definitions * Defining Nonlinear Units:: Writing your own nonlinear unit definitions * Piecewise Linear Units:: Writing your own piecewise linear definitions * Defining Unit List Aliases:: Writing your own unit list aliases  File: units.info, Node: Units Data Files, Next: Defining New Units, Up: Defining Your Own Units 12.1 Units Data Files ===================== The units and prefixes that 'units' can convert are defined in the units data file, typically '/usr/share/units/definitions.units'. If you can't find this file, run 'units --version' to get information on the file locations for your installation. Although you can extend or modify this data file if you have appropriate user privileges, it's usually better to put extensions in separate files so that the definitions will be preserved if you update 'units'. You can include additional data files in the units database using the '!include' command in the standard units data file. For example !include /usr/local/share/units/local.units might be appropriate for a site-wide supplemental data file. The location of the '!include' statement in the standard units data file is important; later definitions replace earlier ones, so any definitions in an included file will override definitions before the '!include' statement in the standard units data file. With normal invocation, no warning is given about redefinitions; to ensure that you don't have an unintended redefinition, run 'units -c' after making changes to any units data file. If you want to add your own units in addition to or in place of standard or site-wide supplemental units data files, you can include them in the '.units' file in your home directory. If this file exists it is read after the standard units data file, so that any definitions in this file will replace definitions of the same units in the standard data file or in files included from the standard data file. This file will not be read if any units files are specified on the command line. (Under Windows the personal units file is named 'unitdef.units'.) Running 'units -V' will display the location and name of your personal units file. The 'units' program first tries to determine your home directory from the 'HOME' environment variable. On systems running Microsoft Windows, if 'HOME' does not exist, 'units' attempts to find your home directory from 'HOMEDRIVE', 'HOMEPATH' and 'USERPROFILE'. You can specify an arbitrary file as your personal units data file with the 'MYUNITSFILE' environment variable; if this variable exists, its value is used without searching your home directory. The default units data files are described in more detail in *note Data Files::.  File: units.info, Node: Defining New Units, Next: Defining Nonlinear Units, Prev: Units Data Files, Up: Defining Your Own Units 12.2 Defining New Units and Prefixes ==================================== A unit is specified on a single line by giving its name and an equivalence. Comments start with a '#' character, which can appear anywhere in a line. The backslash character ('\') acts as a continuation character if it appears as the last character on a line, making it possible to spread definitions out over several lines if desired. A file can be included by giving the command '!include' followed by the file's name. The '!' must be the first character on the line. The file will be sought in the same directory as the parent file unless you give a full path. The name of the file to be included cannot contain spaces or the comment character '#'. Unit names must not contain any of the operator characters '+', '-', '*', '/', '|', '^', ';', '~', the comment character '#', or parentheses. They cannot begin or end with an underscore ('_'), a comma (',') or a decimal point ('.'). The figure dash (U+2012), typographical minus ('-'; U+2212), and en dash ('-'; U+2013) are converted to the operator '-', so none of these characters can appear in unit names. Names cannot begin with a digit, and if a name ends in a digit other than zero, the digit must be preceded by a string beginning with an underscore, and afterwards consisting only of digits, decimal points, or commas. For example, 'foo_2', 'foo_2,1', or 'foo_3.14' are valid names but 'foo2' or 'foo_a2' are invalid. You could define nitrous oxide as N2O nitrogen 2 + oxygen but would need to define nitrogen dioxide as NO_2 nitrogen + oxygen 2 Be careful to define new units in terms of old ones so that a reduction leads to the primitive units, which are marked with '!' characters. Dimensionless units are indicated by using the string '!dimensionless' for the unit definition. When adding new units, be sure to use the '-c' option to check that the new units reduce properly. If you create a loop in the units definitions, then 'units' will hang when invoked with the '-c' option. You will need to use the '--check-verbose' option, which prints out each unit as it is checked. The program will still hang, but the last unit printed will be the unit that caused the infinite loop. If you define any units that contain '+' characters in their definitions, carefully check them because the '-c' option will not catch non-conformable sums. Be careful with the '-' operator as well. When used as a binary operator, the '-' character can perform addition or multiplication depending on the options used to invoke 'units'. To ensure consistent behavior use '-' only as a unary negation operator when writing units definitions. To multiply two units leave a space or use the '*' operator with care, recalling that it has two possible precedence values and may require parentheses to ensure consistent behavior. To compute the difference of 'foo' and 'bar' write 'foo+(-bar)' or even 'foo+-bar'. You may wish to intentionally redefine a unit. When you do this, and use the '-c' option, 'units' displays a warning message about the redefinition. You can suppress these warnings by redefining a unit using a '+' at the beginning of the unit name. Do not include any white space between the '+' and the redefined unit name. Here is an example of a short data file that defines some basic units: m ! # The meter is a primitive unit sec ! # The second is a primitive unit rad !dimensionless # A dimensionless primitive unit micro- 1e-6 # Define a prefix minute 60 sec # A minute is 60 seconds hour 60 min # An hour is 60 minutes inch 72 m # Inch defined incorrectly terms of meters ft 12 inches # The foot defined in terms of inches mile 5280 ft # And the mile +inch 0.0254 m # Correct redefinition, warning suppressed A unit that ends with a '-' character is a prefix. If a prefix definition contains any '/' characters, be sure they are protected by parentheses. If you define 'half- 1/2', then 'halfmeter' would be equivalent to '1 / (2 meter)'.  File: units.info, Node: Defining Nonlinear Units, Next: Piecewise Linear Units, Prev: Defining New Units, Up: Defining Your Own Units 12.3 Defining Nonlinear Units ============================= Some unit conversions of interest are nonlinear; for example, temperature conversions between the Fahrenheit and Celsius scales cannot be done by simply multiplying by conversion factors. When you give a linear unit definition such as 'inch 2.54 cm' you are providing information that 'units' uses to convert values in inches into primitive units of meters. For nonlinear units, you give a functional definition that provides the same information. Nonlinear units are represented using a functional notation. It is best to regard this notation not as a function call but as a way of adding units to a number, much the same way that writing a linear unit name after a number adds units to that number. Internally, nonlinear units are defined by a pair of functions that convert to and from linear units in the database, so that an eventual conversion to primitive units is possible. Here is an example nonlinear unit definition: tempF(x) units=[1;K] domain=[-459.67,) range=[0,) \ (x+(-32)) degF + stdtemp ; (tempF+(-stdtemp))/degF + 32 A nonlinear unit definition comprises a unit name, a formal parameter name, two functions, and optional specifications for units, the domain, and the range (the domain of the inverse function). The functions tell 'units' how to convert to and from the new unit. To produce valid results, the arguments of these functions need to have the correct dimensions and be within the domains for which the functions are defined. The definition begins with the unit name followed immediately (with no spaces) by a '(' character. In the parentheses is the name of the formal parameter. Next is an optional specification of the units required by the functions in the definition. In the example above, the 'units=[1;K]' specification indicates that the 'tempF' function requires an input argument conformable with '1' (i.e., the argument is dimensionless), and that the inverse function requires an input argument conformable with 'K'. For normal nonlinear units definition, the forward function will always take a dimensionless argument; in general, the inverse function will need units that match the quantity measured by your nonlinear unit. Specifying the units enables 'units' to perform error checking on function arguments, and also to assign units to domain and range specifications, which are described later. Next the function definitions appear. In the example above, the 'tempF' function is defined by tempF(x) = (x+(-32)) degF + stdtemp This gives a rule for converting 'x' in the units 'tempF' to linear units of absolute temperature, which makes it possible to convert from tempF to other units. To enable conversions to Fahrenheit, you must give a rule for the inverse conversions. The inverse will be 'x(tempF)' and its definition appears after a ';' character. In our example, the inverse is x(tempF) = (tempF+(-stdtemp))/degF + 32 This inverse definition takes an absolute temperature as its argument and converts it to the Fahrenheit temperature. The inverse can be omitted by leaving out the ';' character and the inverse definition, but then conversions _to_ the unit will not be possible. If the inverse definition is omitted, the '--check' option will display a warning. It is up to you to calculate and enter the correct inverse function to obtain proper conversions; the '--check' option tests the inverse at one point and prints an error if it is not valid there, but this is not a guarantee that your inverse is correct. With some definitions, the units may vary. For example, the definition square(x) x^2 can have any arbitrary units, and can also take dimensionless arguments. In such a case, you should _not_ specify units. If a definition takes a root of its arguments, the definition is valid only for units that yield such a root. For example, squirt(x) sqrt(x) is valid for a dimensionless argument, and for arguments with even powers of units. Some definitions may not be valid for all real numbers. In such cases, 'units' can handle errors better if you specify an appropriate domain and range. You specify the domain and range as shown below: baume(d) units=[1;g/cm^3] domain=[0,130.5] range=[1,10] \ (145/(145-d)) g/cm^3 ; (baume+-g/cm^3) 145 / baume In this example the domain is specified after 'domain=' with the endpoints given in brackets. In accord with mathematical convention, square brackets indicate a closed interval (one that includes its endpoints), and parentheses indicate an open interval (one that does not include its endpoints). An interval can be open or closed on one or both ends; an interval that is unbounded on either end is indicated by omitting the limit on that end. For example, a quantity to which decibel (dB) is applied may have any value greater than zero, so the range is indicated by '(0,)': decibel(x) units=[1;1] range=(0,) 10^(x/10); 10 log(decibel) If the domain or range is given, the second endpoint must be greater than the first. The domain and range specifications can appear independently and in any order along with the units specification. The values for the domain and range endpoints are attached to the units given in the units specification, and if necessary, the parameter value is adjusted for comparison with the endpoints. For example, if a definition includes 'units=[1;ft]' and 'range=[3,)', the range will be taken as 3 ft to infinity. If the function is passed a parameter of '900 mm', that value will be adjusted to 2.9527559 ft, which is outside the specified range. If you omit the units specification from the previous example, 'units' can not tell whether you intend the lower endpoint to be 3 ft or 3 microfurlongs, and can not adjust the parameter value of 900 mm for comparison. Without units, numerical values other than zero or plus or minus infinity for domain or range endpoints are meaningless, and accordingly they are not allowed. If you give other values without units, then the definition will be ignored and you will get an error message. Although the units, domain, and range specifications are optional, it's best to give them when they are applicable; doing so allows 'units' to perform better error checking and give more helpful error messages. Giving the domain and range also enables the '--check' option to find a point in the domain to use for its point check of your inverse definition. You can make synonyms for nonlinear units by providing both the forward and inverse functions; inverse functions can be obtained using the '~' operator. So to create a synonym for 'tempF' you could write fahrenheit(x) units=[1;K] tempF(x); ~tempF(fahrenheit) This is useful for creating a nonlinear unit definition that differs slightly from an existing definition without having to repeat the original functions. For example, dBW(x) units=[1;W] range=[0,) dB(x) W ; ~dB(dBW/W) If you wish a synonym to refer to an existing nonlinear unit without modification, you can do so more simply by adding the synonym with appended parentheses as a new unit, with the existing nonlinear unit--without parentheses--as the definition. So to create a synonym for 'tempF' you could write fahrenheit() tempF The definition must be a nonlinear unit; for example, the synonym fahrenheit() meter will result in an error message when 'units' starts. You may occasionally wish to define a function that operates on units. This can be done using a nonlinear unit definition. For example, the definition below provides conversion between radius and the area of a circle. This definition requires a length as input and produces an area as output, as indicated by the 'units=' specification. Specifying the range as the nonnegative numbers can prevent cryptic error messages. circlearea(r) units=[m;m^2] range=[0,) pi r^2 ; sqrt(circlearea/pi)  File: units.info, Node: Piecewise Linear Units, Next: Defining Unit List Aliases, Prev: Defining Nonlinear Units, Up: Defining Your Own Units 12.4 Defining Piecewise Linear Units ==================================== Sometimes you may be interested in a piecewise linear unit such as many wire gauges. Piecewise linear units can be defined by specifying conversions to linear units on a list of points. Conversion at other points will be done by linear interpolation. A partial definition of zinc gauge is zincgauge[in] 1 0.002, 10 0.02, 15 0.04, 19 0.06, 23 0.1 In this example, 'zincgauge' is the name of the piecewise linear unit. The definition of such a unit is indicated by the embedded '[' character. After the bracket, you should indicate the units to be attached to the numbers in the table. No spaces can appear before the ']' character, so a definition like 'foo[kg meters]' is invalid; instead write 'foo[kg*meters]'. The definition of the unit consists of a list of pairs optionally separated by commas. This list defines a function for converting from the piecewise linear unit to linear units. The first item in each pair is the function argument; the second item is the value of the function at that argument (in the units specified in brackets). In this example, we define 'zincgauge' at five points. For example, we set 'zincgauge(1)' equal to '0.002 in'. Definitions like this may be more readable if written using continuation characters as zincgauge[in] \ 1 0.002 \ 10 0.02 \ 15 0.04 \ 19 0.06 \ 23 0.1 With the preceding definition, the following conversion can be performed: You have: zincgauge(10) You want: in * 0.02 / 50 You have: .01 inch You want: zincgauge 5 If you define a piecewise linear unit that is not strictly monotonic, then the inverse will not be well defined. If the inverse is requested for such a unit, 'units' will return the smallest inverse. After adding nonlinear units definitions, you should normally run 'units --check' to check for errors. If the 'units' keyword is not given, the '--check' option checks a nonlinear unit definition using a dimensionless argument, and then checks using an arbitrary combination of units, as well as the square and cube of that combination; a warning is given if any of these tests fail. For example, Warning: function 'squirt(x)' defined as 'sqrt(x)' failed for some test inputs: squirt(7(kg K)^1): Unit not a root squirt(7(kg K)^3): Unit not a root Running 'units --check' will print a warning if a non-monotonic piecewise linear unit is encountered. For example, the relationship between ANSI coated abrasive designation and mean particle size is non-monotonic in the vicinity of 800 grit: ansicoated[micron] \ . . . 600 10.55 \ 800 11.5 \ 1000 9.5 \ Running 'units --check' would give the error message Table 'ansicoated' lacks unique inverse around entry 800 Although the inverse is not well defined in this region, it's not really an error. Viewing such error messages can be tedious, and if there are enough of them, they can distract from true errors. Error checking for nonlinear unit definitions can be suppressed by giving the 'noerror' keyword; for the examples above, this could be done as squirt(x) noerror domain=[0,) range=[0,) sqrt(x); squirt^2 ansicoated[micron] noerror \ . . . Use the 'noerror' keyword with caution. The safest approach after adding a nonlinear unit definition is to run 'units --check' and confirm that there are no actual errors before adding the 'noerror' keyword.  File: units.info, Node: Defining Unit List Aliases, Prev: Piecewise Linear Units, Up: Defining Your Own Units 12.5 Defining Unit List Aliases =============================== Unit list aliases are treated differently from unit definitions, because they are a data entry shorthand rather than a true definition for a new unit. A unit list alias definition begins with '!unitlist' and includes the alias and the definition; for example, the aliases included in the standard units data file are !unitlist hms hr;min;sec !unitlist time year;day;hr;min;sec !unitlist dms deg;arcmin;arcsec !unitlist ftin ft;in;1|8 in !unitlist usvol cup;3|4 cup;2|3 cup;1|2 cup;1|3 cup;1|4 cup;\ tbsp;tsp;1|2 tsp;1|4 tsp;1|8 tsp Unit list aliases are only for unit lists, so the definition must include a ';'. Unit list aliases can never be combined with units or other unit list aliases, so the definition of 'time' shown above could _not_ have been shortened to 'year;day;hms'. As usual, be sure to run 'units --check' to ensure that the units listed in unit list aliases are conformable.  File: units.info, Node: Numeric Output Format, Next: Localization, Prev: Defining Your Own Units, Up: Top 13 Numeric Output Format ************************ * Menu: * Format Specification:: The output format specification * Flags:: Optional format flags * Field Width:: Specifying output field width * Precision:: Specifying output precision By default, 'units' shows results to eight significant digits. You can change this with the '--exponential', '--digits', and '--output-format' options. The first sets an exponential format (i.e., scientific notation) like that used in the original Unix 'units' program, the second allows you to specify a different number of significant digits, and the last allows you to control the output appearance using the format for the 'printf()' function in the C programming language. If you only want to change the number of significant digits or specify exponential format type, use the '--digits' and '--exponential' options. The '--output-format' option affords the greatest control of the output appearance, but requires at least rudimentary knowledge of the 'printf()' format syntax. *Note Invoking Units::, for descriptions of these options.  File: units.info, Node: Format Specification, Next: Flags, Up: Numeric Output Format 13.1 Format Specification ========================= The format specification recognized with the '--output-format' option is a subset of that for 'printf()'. The format specification has the form '%'[flags][width]['.'precision]type; it must begin with '%', and must end with a floating-point type specifier: 'g' or 'G' to specify the number of significant digits, 'e' or 'E' for scientific notation, and 'f' for fixed-point decimal. The ISO C99 standard added the 'F' type for fixed-point decimal and the 'a' and 'A' types for hexadecimal floating point; these types are allowed with compilers that support them. Type length modifiers (e.g., 'L' to indicate a long double) are inapplicable and are not allowed. The default format for 'units' is '%.8g'; for greater precision, you could specify '-o %.15g'. The 'g' and 'G' format types use exponential format whenever the exponent would be less than -4, so the value 0.000013 displays as '1.3e-005'. These types also use exponential notation when the exponent is greater than or equal to the precision, so with the default format, the value 5e7 displays as '50000000' and the value 5e8 displays as '5e+008'. If you prefer fixed-point display, you might specify '-o %.8f'; however, small numbers will display very few significant digits, and values less than 0.5e-8 will show nothing but zeros. The format specification may include one or more optional flags: '+', ' ' (space), '#', '-', or '0' (the digit zero). The digit-grouping flag ''' (apostrophe) is allowed with compilers that support it. Flags are followed by an optional value for the minimum field width, and an optional precision specification that begins with a period (e.g., '.6'). The field width includes the digits, decimal point, the exponent, thousands separators (with the digit-grouping flag), and the sign if any of these are shown.  File: units.info, Node: Flags, Next: Field Width, Prev: Format Specification, Up: Numeric Output Format 13.2 Flags ========== The '+' flag causes the output to have a sign ('+' or '-'). The space flag ' ' is similar to the '+' flag, except that when the value is positive, it is prefixed with a space rather than a plus sign; this flag is ignored if the '+' flag is also given. The '+' or ' ' flag could be useful if conversions might include positive and negative results, and you wanted to align the decimal points in exponential notation. The '#' flag causes the output value to contain a decimal point in all cases; by default, the output contains a decimal point only if there are digits (which can be trailing zeros) to the right of the point. With the 'g' or 'G' types, the '#' flag also prevents the suppression of trailing zeros. The digit-grouping flag ''' shows a thousands separator in digits to the left of the decimal point. This can be useful when displaying large numbers in fixed-point decimal; for example, with the format '%f', You have: mile You want: microfurlong * 8000000.000000 / 0.000000 the magnitude of the first result may not be immediately obvious without counting the digits to the left of the decimal point. If the thousands separator is the comma (','), the output with the format '%'f' might be You have: mile You want: microfurlong * 8,000,000.000000 / 0.000000 making the magnitude readily apparent. Unfortunately, few compilers support the digit-grouping flag. With the '-' flag, the output value is left aligned within the specified field width. If a field width greater than needed to show the output value is specified, the '0' (zero) flag causes the output value to be left padded with zeros until the specified field width is reached; for example, with the format '%011.6f', You have: troypound You want: grain * 5760.000000 / 0000.000174 The '0' flag has no effect if the '-' (left align) flag is given.  File: units.info, Node: Field Width, Next: Precision, Prev: Flags, Up: Numeric Output Format 13.3 Field Width ================ By default, the output value is left aligned and shown with the minimum width necessary for the specified (or default) precision. If a field width greater than this is specified, the value shown is right aligned, and padded on the left with enough spaces to provide the specified field width. A width specification is typically used with fixed-point decimal to have columns of numbers align at the decimal point; this arguably is less useful with 'units' than with long columnar output, but it may nonetheless assist in quickly assessing the relative magnitudes of results. For example, with the format '%12.6f', You have: km You want: in * 39370.078740 / 0.000025 You have: km You want: rod * 198.838782 / 0.005029 You have: km You want: furlong * 4.970970 / 0.201168  File: units.info, Node: Precision, Prev: Field Width, Up: Numeric Output Format 13.4 Precision ============== The meaning of "precision" depends on the format type. With 'g' or 'G', it specifies the number of significant digits (like the '--digits' option); with 'e', 'E', 'f', or 'F', it specifies the maximum number of digits to be shown after the decimal point. With the 'g' and 'G' format types, trailing zeros are suppressed, so the results may sometimes have fewer digits than the specified precision (as indicated above, the '#' flag causes trailing zeros to be displayed). The default precision is 6, so '%g' is equivalent to '%.6g', and would show the output to six significant digits. Similarly, '%e' or '%f' would show the output with six digits after the decimal point. The C 'printf()' function allows a precision of arbitrary size, whether or not all of the digits are meaningful. With most compilers, the maximum internal precision with 'units' is 15 decimal digits (or 13 hexadecimal digits). With the '--digits' option, you are limited to the maximum internal precision; with the '--output-format' option, you may specify a precision greater than this, but it may not be meaningful. In some cases, specifying excess precision can result in rounding artifacts. For example, a pound is exactly 7000 grains, but with the format '%.18g', the output might be You have: pound You want: grain * 6999.9999999999991 / 0.00014285714285714287 With the format '%.25g' you might get the following: You have: 1/3 You want: Definition: 0.333333333333333314829616256247 In this case the displayed value includes a series of digits that represent the underlying binary floating-point approximation to 1/3 but are not meaningful for the desired computation. In general, the result with excess precision is system dependent. The precision affects only the _display_ of numbers; if a result relies on physical constants that are not known to the specified precision, the number of physically meaningful digits may be less than the number of digits shown. See the documentation for 'printf()' for more detailed descriptions of the format specification. The '--output-format' option is incompatible with the '--exponential' or '--digits' options; if the former is given in combination with either of the latter, the format is controlled by the last option given.  File: units.info, Node: Localization, Next: Environment Vars, Prev: Numeric Output Format, Up: Top 14 Localization *************** * Menu: * Locale:: What is a locale? * Additional Localization:: When the locale isn't enough Some units have different values in different locations. The localization feature accommodates this by allowing a units data file to specify definitions that depend on the user's locale.  File: units.info, Node: Locale, Next: Additional Localization, Up: Localization 14.1 Locale =========== A locale is a subset of a user's environment that indicates the user's language and country, and some attendant preferences, such as the formatting of dates. The 'units' program attempts to determine the locale from the POSIX setlocale function; if this cannot be done, 'units' examines the environment variables 'LC_CTYPE' and 'LANG'. On POSIX systems, a locale is of the form LANGUAGE'_'COUNTRY, where LANGUAGE is the two-character code from ISO 639-1 and COUNTRY is the two-character code from ISO 3166-1; LANGUAGE is lower case and COUNTRY is upper case. For example, the POSIX locale for the United Kingdom is 'en_GB'. On systems running Microsoft Windows, the value returned by setlocale() is different from that on POSIX systems; 'units' attempts to map the Windows value to a POSIX value by means of a table in the file 'locale_map.txt' in the same directory as the other data files. The file includes entries for many combinations of language and country, and can be extended to include other combinations. The 'locale_map.txt' file comprises two tab-separated columns; each entry is of the form WINDOWS-LOCALE POSIX-LOCALE where POSIX-LOCALE is as described above, and WINDOWS-LOCALE typically spells out both the language and country. For example, the entry for the United States is English_United States en_US You can force 'units' to run in a desired locale by using the '-l' option. In order to create unit definitions for a particular locale you begin a block of definitions in a unit datafile with '!locale' followed by a locale name. The '!' must be the first character on the line. The 'units' program reads the following definitions only if the current locale matches. You end the block of localized units with '!endlocale'. Here is an example, which defines the British gallon. !locale en_GB gallon 4.54609 liter !endlocale  File: units.info, Node: Additional Localization, Prev: Locale, Up: Localization 14.2 Additional Localization ============================ Sometimes the locale isn't sufficient to determine unit preferences. There could be regional preferences, or a company could have specific preferences. Though probably uncommon, such differences could arise with the choice of English customary units outside of English-speaking countries. To address this, 'units' allows specifying definitions that depend on environment variable settings. The environment variables can be controled based on the current locale, or the user can set them to force a particular group of definitions. A conditional block of definitions in a units data file begins with either '!var' or '!varnot' following by an environment variable name and then a space separated list of values. The leading '!' must appear in the first column of a units data file, and the conditional block is terminated by '!endvar'. Definitions in blocks beginning with '!var' are executed only if the environment variable is exactly equal to one of the listed values. Definitions in blocks beginning with '!varnot' are executed only if the environment variable does _not_ equal any of the list values. The inch has long been a customary measure of length in many places. The word comes from the Latin _uncia_ meaning "one twelfth," referring to its relationship with the foot. By the 20th century, the inch was officially defined in English-speaking countries relative to the yard, but until 1959, the yard differed slightly among those countries. In France the customary inch, which was displaced in 1799 by the meter, had a different length based on a french foot. These customary definitions could be accommodated as follows: !var INCH_UNIT usa yard 3600|3937 m !endvar !var INCH_UNIT canada yard 0.9144 meter !endvar !var INCH_UNIT uk yard 0.91439841 meter !endvar !var INCH_UNIT canada uk usa foot 1|3 yard inch 1|12 foot !endvar !var INCH_UNIT france foot 144|443.296 m inch 1|12 foot line 1|12 inch !endvar !varnot INCH_UNIT usa uk france canada !message Unknown value for INCH_UNIT !endvar When 'units' reads the above definitions it will check the environment variable 'INCH_UNIT' and load only the definitions for the appropriate section. If 'INCH_UNIT' is unset or is not set to one of the four values listed, then 'units' will run the last block. In this case that block uses the '!message' command to display a warning message. Alternatively that block could set default values. In order to create default values that are overridden by user settings the data file can use the '!set' command, which sets an environment variable _only if it is not already set_; these settings are only for the current 'units' invocation and do not persist. So if the example above were preceded by '!set INCH_UNIT france', then this would make 'france' the default value for 'INCH_UNIT'. If the user had set the variable in the environment before invoking 'units', then 'units' would use the user's value. To link these settings to the user's locale you combine the '!set' command with the '!locale' command. If you wanted to combine the above example with suitable locales you could do by _preceding_ the above definition with the following: !locale en_US !set INCH_UNIT usa !endlocale !locale en_GB !set INCH_UNIT uk !endlocale !locale en_CA !set INCH_UNIT canada !endlocale !locale fr_FR !set INCH_UNIT france !endlocale !set INCH_UNIT france These definitions set the overall default for 'INCH_UNIT' to 'france' and set default values for four locales appropriately. The overall default setting comes last so that it only applies when 'INCH_UNIT' was not set by one of the other commands or by the user. If the variable given after '!var' or '!varnot' is undefined, then 'units' prints an error message and ignores the definitions that follow. Use '!set' to create defaults to prevent this situation from arising. The '-c' option only checks the definitions that are active for the current environment and locale, so when adding new definitions take care to check that all cases give rise to a well defined set of definitions.  File: units.info, Node: Environment Vars, Next: Data Files, Prev: Localization, Up: Top 15 Environment Variables ************************ The 'units' program uses the following environment variables: 'HOME' Specifies the location of your home directory; it is used by 'units' to find a personal units data file '.units'. On systems running Microsoft Windows, the file is 'unitdef.units', and if 'HOME' does not exist, 'units' tries to determine your home directory from the 'HOMEDRIVE' and 'HOMEPATH' environment variables; if these variables do not exist, units finally tries 'USERPROFILE'--typically 'C:\Users\USERNAME' (Windows Vista and Windows 7) or 'C:\Documents and Settings\USERNAME' (Windows XP). 'LC_CTYPE, LANG' Checked to determine the locale if 'units' cannot obtain it from the operating system. Sections of the standard units data file are specific to certain locales. 'MYUNITSFILE' Specifies your personal units data file. If this variable exists, 'units' uses its value rather than searching your home directory for '.units'. The personal units file will not be loaded if any data files are given using the '-f' option. 'PAGER' Specifies the pager to use for help and for displaying the conformable units. The help function browses the units database and calls the pager using the '+n'N syntax for specifying a line number. The default pager is 'more'; 'PAGER' can be used to specify alternatives such as 'less', 'pg', 'emacs', or 'vi'. 'UNITS_ENGLISH' Set to either 'US' or 'GB' to choose United States or British volume definitions, overriding the default from your locale. 'UNITSFILE' Specifies the units data file to use (instead of the default). You can only specify a single units data file using this environment variable. If units data files are given using the '-f' option, the file specified by 'UNITSFILE' will be not be loaded unless the '-f' option is given with the empty string ('units -f ""'). 'UNITSLOCALEMAP' Windows only; this variable has no effect on Unix-like systems. Specifies the units locale map file to use (instead of the default). This variable seldom needs to be set, but you can use it to ensure that the locale map file will be found if you specify a location for the units data file using either the '-f' option or the 'UNITSFILE' environment variable, and that location does not also contain the locale map file. 'UNITS_SYSTEM' This environment variable is used in the standard data file to select CGS measurement systems. Currently supported systems are 'esu', 'emu', 'gauss[ian]', and 'si'. The default is 'si'.  File: units.info, Node: Data Files, Next: Unicode Support, Prev: Environment Vars, Up: Top 16 Data Files ************* The 'units' program uses two default data files: 'definitions.units' and 'currency.units'. The program can also use an optional personal units data file '.units' ('unitdef.units' under Windows) located in the user's home directory. The personal units data file is described in more detail in *note Units Data Files::. On Unix-like systems, the data files are typically located in '/usr/share/units' if 'units' is provided with the operating system, or in '/usr/local/share/units' if 'units' is compiled from the source distribution. Note that the currency file 'currency.units' is a symbolic link to another location. On systems running Microsoft Windows, the files may be in the same locations if Unix-like commands are available, a Unix-like file structure is present (e.g., 'C:/usr/local'), and 'units' is compiled from the source distribution. If Unix-like commands are not available, a more common location is 'C:\Program Files (x86)\GNU\units' (for 64-bit Windows installations) or 'C:\Program Files\GNU\units' (for 32-bit installations). If 'units' is obtained from the GNU Win32 Project (), the files are commonly in 'C:\Program Files\GnuWin32\share\units'. If the default units data file is not an absolute pathname, 'units' will look for the file in the directory that contains the 'units' program; if the file is not found there, 'units' will look in a directory '../share/units' relative to the directory with the 'units' program. You can determine the location of the files by running 'units --version'. Running 'units --info' will give you additional information about the files, how 'units' will attempt to find them, and the status of the related environment variables.  File: units.info, Node: Unicode Support, Next: Readline Support, Prev: Data Files, Up: Top 17 Unicode Support ****************** The standard units data file is in Unicode, using UTF-8 encoding. Most definitions use only ASCII characters (i.e., code points U+0000 through U+007F); definitions using non-ASCII characters appear in blocks beginning with '!utf8' and ending with '!endutf8'. The non-ASCII definitions are loaded only if the platform and the locale support UTF-8. Platform support is determined when 'units' is compiled; the locale is checked at every invocation of 'units'. To see if your version of 'units' includes Unicode support, invoke the program with the '--version' option. When Unicode support is available, 'units' checks every line within UTF-8 blocks in all of the units data files for invalid or non-printing UTF-8 sequences; if such sequences occur, 'units' ignores the entire line. In addition to checking validity, 'units' determines the display width of non-ASCII characters to ensure proper positioning of the pointer in some error messages and to align columns for the 'search' and '?' commands. As of early 2019, Microsoft Windows provides limited support for UTF-8 in console applications, and accordingly, 'units' does not support Unicode on Windows. The UTF-16 and UTF-32 encodings are not supported on any platforms. If Unicode support is available and definitions that contain non-ASCII UTF-8 characters are added to a units data file, those definitions should be enclosed within '!utf8' ... '!endutf8' to ensure that they are only loaded when Unicode support is available. As usual, the '!' must appear as the first character on the line. As discussed in *note Units Data Files::, it's usually best to put such definitions in supplemental data files linked by an '!include' command or in a personal units data file. When Unicode support is not available, 'units' makes no assumptions about character encoding, except that characters in the range 00-7F hexadecimal correspond to ASCII encoding. Non-ASCII characters are simply sequences of bytes, and have no special meanings; for definitions in supplementary units data files, you can use any encoding consistent with this assumption. For example, if you wish to use non-ASCII characters in definitions when running 'units' under Windows, you can use a character set such as Windows "ANSI" (code page 1252 in the US and Western Europe); if this is done, the console code page must be set to the same encoding for the characters to display properly. You can even use UTF-8, though some messages may be improperly aligned, and 'units' will not detect invalid UTF-8 sequences. If you use UTF-8 encoding when Unicode support is not available, you should place any definitions with non-ASCII characters _outside_ '!utf8' ... '!endutf8' blocks--otherwise, they will be ignored. Typeset material other than code examples usually uses the Unicode minus (U+2212) rather than the ASCII hyphen-minus operator (U+002D) used in 'units'; the figure dash (U+2012) and en dash (U+2013) are also occasionally used. To allow such material to be copied and pasted for interactive use or in units data files, 'units' converts these characters to U+002D before further processing. Because of this, none of these characters can appear in unit names.  File: units.info, Node: Readline Support, Next: Currency, Prev: Unicode Support, Up: Top 18 Readline Support ******************* If the 'readline' package has been compiled in, then when 'units' is used interactively, numerous command line editing features are available. To check if your version of 'units' includes 'readline', invoke the program with the '--version' option. For complete information about 'readline', consult the documentation for the 'readline' package. Without any configuration, 'units' will allow editing in the style of emacs. Of particular use with 'units' are the completion commands. If you type a few characters and then hit followed by '?', then 'units' will display a list of all the units that start with the characters typed. For example, if you type 'metr' and then request completion, you will see something like this: You have: metr metre metriccup metrichorsepower metrictenth metretes metricfifth metricounce metricton metriccarat metricgrain metricquart metricyarncount You have: metr If there is a unique way to complete a unit name, you can hit the key and 'units' will provide the rest of the unit name. If 'units' beeps, it means that there is no unique completion. Pressing the key a second time will print the list of all completions. The readline library also keeps a history of the values you enter. You can move through this history using the up and down arrows. The history is saved to the file '.units_history' in your home directory so that it will persist across multiple 'units' invocations. If you wish to keep work for a certain project separate you can change the history filename using the '--history' option. You could, for example, make an alias for 'units' to 'units --history .units_history' so that 'units' would save separate history in the current directory. The length of each history file is limited to 5000 lines. Note also that if you run several concurrent copies of 'units' each one will save its new history to the history file upon exit.  File: units.info, Node: Currency, Next: Database Syntax, Prev: Readline Support, Up: Top 19 Updating Currency Exchange Rates *********************************** The units program database includes currency exchange rates and prices for some precious metals. Of course, these values change over time, sometimes very rapidly, and 'units' cannot provide real-time values. To update the exchange rates, run 'units_cur', which rewrites the file containing the currency rates, typically '/var/lib/units/currency.units' or '/usr/local/com/units/currency.units' on a Unix-like system or 'C:\Program Files (x86)\GNU\units\definitions.units' on a Windows system. This program requires Python (); either version 2 or 3 will work. The program must be run with suitable permissions to write the file. To keep the rates updated automatically, run it using a cron job on a Unix-like system, or a similar scheduling program on a different system. Reliable free sources of currency exchange rates have been annoyingly ephemeral. The program currently supports several sources: * FloatRates (). The US dollar ('USD') is the default base currency. You can change the base currency with the '-b' option described below. Allowable base currencies are listed on the FloatRates website. Exchange rates update daily. * The European Central Bank (). The base currency is always the euro ('EUR'). Exchange rates update daily. This source offers a more limited list of currencies than the others. * Fixer (). Registration for a free API key is required. With a free API key, base currency is the euro; exchange rates are updated hourly, the service has a limit of 1,000 API calls per month, and SSL encryption (https protocol) is not available. Most of these restrictions are eliminated or reduced with paid plans. * open exchange rates (). Registration for a free API key is required. With a free API key, the base currency is the US dollar; exchange rates are updated hourly, and there is a limit of 1,000 API calls per month. Most of these restrictions are eliminated or reduced with paid plans. The default source is FloatRates; you can select a different one using '-s' option described below. Precious metals pricing is obtained from Packetizer (). This site updates once per day. You invoke 'units_cur' like this: units_cur [OPTIONS] [OUTFILE] By default, the output is written to the default currency file described above; this is usually what you want, because this is where 'units' looks for the file. If you wish, you can specify a different filename on the command line and 'units_cur' will write the data to that file. If you give '-' for the file it will write to standard output. The following options are available: '-h' '--help' Print a summary of the options for 'units_cur'. '-V' '--version' Print the 'units_cur' version number. '-v' '--verbose' Give slightly more verbose output when attempting to update currency exchange rates. '-s SOURCE' '--source SOURCE' Specify the source for currency exchange rates; currently supported values are 'floatrates' (for FloatRates), 'eubank' (for the European Central Bank), 'fixer' (for Fixer), and 'openexchangerates' (for open exchange rates); the last two require an API key to be given with the '-k' option. '-b BASE' '--base BASE' Set the base currency (when allowed by the site providing the data). BASE should be a 3-letter ISO currency code, e.g., 'USD'. The specified currency will be the primitive currency unit used by 'units'. You may find it convenient to specify your local currency. Conversions may be more accurate and you will be able to convert to your currency by simply hitting at the 'You want:' prompt. This option is ignored if the source does not allow specifying the base currency. (Currently only floatrates supports this option.) '-k KEY' '--key KEY' Set the API key to KEY for sources that require it.  File: units.info, Node: Database Syntax, Next: GNU Free Documentation License, Prev: Currency, Up: Top 20 Database Command Syntax ************************** UNIT DEFINITION Define a regular unit. PREFIX- DEFINITION Define a prefix. FUNCNAME(VAR) noerror units=[IN-UNITS,OUT-UNITS] domain=[X1,X2] range=[Y1,Y2] DEFINITION(VAR) ; INVERSE(FUNCNAME) Define a nonlinear unit or unit function. The four optional keywords 'noerror', 'units=', 'range=' and 'domain=' can appear in any order. The definition of the inverse is optional. TABNAME[OUT-UNITS] noerror PAIR-LIST Define a piecewise linear unit. The pair list gives the points on the table listed in ascending order. The 'noerror' keyword is optional. !endlocale End a block of definitions beginning with '!locale' !endutf8 End a block of definitions begun with '!utf8' !endvar End a block of definitions begun with '!var' or '!varnot' !include FILE Include the specified file. !locale VALUE Load the following definitions only of the locale is set to VALUE. !message TEXT Display TEXT when the database is read unless the quiet option ('-q') is enabled. If you omit TEXT, then units will display a blank line. Messages will also appear in the log file. !prompt TEXT Prefix the 'You have:' prompt with the specified text. If you omit TEXT, then any existing prefix is canceled. !set VARIABLE VALUE Sets the environment variable, VARIABLE, to the specified value _only if_ it is not already set. !unitlist ALIAS DEFINITION Define a unit list alias. !utf8 Load the following definitions only if 'units' is running with UTF-8 enabled. !var ENVAR VALUE-LIST Load the block of definitions that follows only if the environment variable ENVAR is set to one of the values listed in the space-separated value list. If ENVAR is not set, 'units' prints an error message and ignores the block of definitions. !varnot ENVAR VALUE-LIST Load the block of definitions that follows only if the environment variable ENVAR is set to value that is _not_ listed in the space-separated value list. If ENVAR is not set, 'units' prints an error message and ignores the block of definitions.  File: units.info, Node: GNU Free Documentation License, Next: Index, Prev: Database Syntax, Up: Top 21 GNU Free Documentation License ********************************* Version 1.3, 3 November 2008 Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. 0. PREAMBLE The purpose of this License is to make a manual, textbook, or other functional and useful document "free" in the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either commercially or noncommercially. Secondarily, this License preserves for the author and publisher a way to get credit for their work, while not being considered responsible for modifications made by others. This License is a kind of "copyleft", which means that derivative works of the document must themselves be free in the same sense. It complements the GNU General Public License, which is a copyleft license designed for free software. We have designed this License in order to use it for manuals for free software, because free software needs free documentation: a free program should come with manuals providing the same freedoms that the software does. But this License is not limited to software manuals; it can be used for any textual work, regardless of subject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference. 1. APPLICABILITY AND DEFINITIONS This License applies to any manual or other work, in any medium, that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. Such a notice grants a world-wide, royalty-free license, unlimited in duration, to use that work under the conditions stated herein. The "Document", below, refers to any such manual or work. Any member of the public is a licensee, and is addressed as "you". You accept the license if you copy, modify or distribute the work in a way requiring permission under copyright law. A "Modified Version" of the Document means any work containing the Document or a portion of it, either copied verbatim, or with modifications and/or translated into another language. A "Secondary Section" is a named appendix or a front-matter section of the Document that deals exclusively with the relationship of the publishers or authors of the Document to the Document's overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (Thus, if the Document is in part a textbook of mathematics, a Secondary Section may not explain any mathematics.) The relationship could be a matter of historical connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regarding them. The "Invariant Sections" are certain Secondary Sections whose titles are designated, as being those of Invariant Sections, in the notice that says that the Document is released under this License. If a section does not fit the above definition of Secondary then it is not allowed to be designated as Invariant. The Document may contain zero Invariant Sections. If the Document does not identify any Invariant Sections then there are none. The "Cover Texts" are certain short passages of text that are listed, as Front-Cover Texts or Back-Cover Texts, in the notice that says that the Document is released under this License. A Front-Cover Text may be at most 5 words, and a Back-Cover Text may be at most 25 words. A "Transparent" copy of the Document means a machine-readable copy, represented in a format whose specification is available to the general public, that is suitable for revising the document straightforwardly with generic text editors or (for images composed of pixels) generic paint programs or (for drawings) some widely available drawing editor, and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters. A copy made in an otherwise Transparent file format whose markup, or absence of markup, has been arranged to thwart or discourage subsequent modification by readers is not Transparent. An image format is not Transparent if used for any substantial amount of text. A copy that is not "Transparent" is called "Opaque". Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo input format, LaTeX input format, SGML or XML using a publicly available DTD, and standard-conforming simple HTML, PostScript or PDF designed for human modification. Examples of transparent image formats include PNG, XCF and JPG. Opaque formats include proprietary formats that can be read and edited only by proprietary word processors, SGML or XML for which the DTD and/or processing tools are not generally available, and the machine-generated HTML, PostScript or PDF produced by some word processors for output purposes only. The "Title Page" means, for a printed book, the title page itself, plus such following pages as are needed to hold, legibly, the material this License requires to appear in the title page. For works in formats which do not have any title page as such, "Title Page" means the text near the most prominent appearance of the work's title, preceding the beginning of the body of the text. The "publisher" means any person or entity that distributes copies of the Document to the public. A section "Entitled XYZ" means a named subunit of the Document whose title either is precisely XYZ or contains XYZ in parentheses following text that translates XYZ in another language. (Here XYZ stands for a specific section name mentioned below, such as "Acknowledgements", "Dedications", "Endorsements", or "History".) To "Preserve the Title" of such a section when you modify the Document means that it remains a section "Entitled XYZ" according to this definition. The Document may include Warranty Disclaimers next to the notice which states that this License applies to the Document. These Warranty Disclaimers are considered to be included by reference in this License, but only as regards disclaiming warranties: any other implication that these Warranty Disclaimers may have is void and has no effect on the meaning of this License. 2. VERBATIM COPYING You may copy and distribute the Document in any medium, either commercially or noncommercially, provided that this License, the copyright notices, and the license notice saying this License applies to the Document are reproduced in all copies, and that you add no other conditions whatsoever to those of this License. You may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute. However, you may accept compensation in exchange for copies. If you distribute a large enough number of copies you must also follow the conditions in section 3. You may also lend copies, under the same conditions stated above, and you may publicly display copies. 3. COPYING IN QUANTITY If you publish printed copies (or copies in media that commonly have printed covers) of the Document, numbering more than 100, and the Document's license notice requires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover must present the full title with all words of the title equally prominent and visible. You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying in other respects. If the required texts for either cover are too voluminous to fit legibly, you should put the first ones listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages. If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque copy a computer-network location from which the general network-using public has access to download using public-standard network protocols a complete Transparent copy of the Document, free of added material. If you use the latter option, you must take reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public. It is requested, but not required, that you contact the authors of the Document well before redistributing any large number of copies, to give them a chance to provide you with an updated version of the Document. 4. MODIFICATIONS You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above, provided that you release the Modified Version under precisely this License, with the Modified Version filling the role of the Document, thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it. In addition, you must do these things in the Modified Version: A. Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version gives permission. B. List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in the Modified Version, together with at least five of the principal authors of the Document (all of its principal authors, if it has fewer than five), unless they release you from this requirement. C. State on the Title page the name of the publisher of the Modified Version, as the publisher. D. Preserve all the copyright notices of the Document. E. Add an appropriate copyright notice for your modifications adjacent to the other copyright notices. F. Include, immediately after the copyright notices, a license notice giving the public permission to use the Modified Version under the terms of this License, in the form shown in the Addendum below. G. Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document's license notice. H. Include an unaltered copy of this License. I. Preserve the section Entitled "History", Preserve its Title, and add to it an item stating at least the title, year, new authors, and publisher of the Modified Version as given on the Title Page. If there is no section Entitled "History" in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modified Version as stated in the previous sentence. J. Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous versions it was based on. These may be placed in the "History" section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives permission. K. For any section Entitled "Acknowledgements" or "Dedications", Preserve the Title of the section, and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein. L. Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles. M. Delete any section Entitled "Endorsements". Such a section may not be included in the Modified Version. N. Do not retitle any existing section to be Entitled "Endorsements" or to conflict in title with any Invariant Section. O. Preserve any Warranty Disclaimers. If the Modified Version includes new front-matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document, you may at your option designate some or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the Modified Version's license notice. These titles must be distinct from any other section titles. You may add a section Entitled "Endorsements", provided it contains nothing but endorsements of your Modified Version by various parties--for example, statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard. You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by) any one entity. If the Document already includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are acting on behalf of, you may not add another; but you may replace the old one, on explicit permission from the previous publisher that added the old one. The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modified Version. 5. COMBINING DOCUMENTS You may combine the Document with other documents released under this License, under the terms defined in section 4 above for modified versions, provided that you include in the combination all of the Invariant Sections of all of the original documents, unmodified, and list them all as Invariant Sections of your combined work in its license notice, and that you preserve all their Warranty Disclaimers. The combined work need only contain one copy of this License, and multiple identical Invariant Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same name but different contents, make the title of each such section unique by adding at the end of it, in parentheses, the name of the original author or publisher of that section if known, or else a unique number. Make the same adjustment to the section titles in the list of Invariant Sections in the license notice of the combined work. In the combination, you must combine any sections Entitled "History" in the various original documents, forming one section Entitled "History"; likewise combine any sections Entitled "Acknowledgements", and any sections Entitled "Dedications". You must delete all sections Entitled "Endorsements." 6. COLLECTIONS OF DOCUMENTS You may make a collection consisting of the Document and other documents released under this License, and replace the individual copies of this License in the various documents with a single copy that is included in the collection, provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects. You may extract a single document from such a collection, and distribute it individually under this License, provided you insert a copy of this License into the extracted document, and follow this License in all other respects regarding verbatim copying of that document. 7. AGGREGATION WITH INDEPENDENT WORKS A compilation of the Document or its derivatives with other separate and independent documents or works, in or on a volume of a storage or distribution medium, is called an "aggregate" if the copyright resulting from the compilation is not used to limit the legal rights of the compilation's users beyond what the individual works permit. When the Document is included in an aggregate, this License does not apply to the other works in the aggregate which are not themselves derivative works of the Document. If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document is less than one half of the entire aggregate, the Document's Cover Texts may be placed on covers that bracket the Document within the aggregate, or the electronic equivalent of covers if the Document is in electronic form. Otherwise they must appear on printed covers that bracket the whole aggregate. 8. TRANSLATION Translation is considered a kind of modification, so you may distribute translations of the Document under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections in addition to the original versions of these Invariant Sections. You may include a translation of this License, and all the license notices in the Document, and any Warranty Disclaimers, provided that you also include the original English version of this License and the original versions of those notices and disclaimers. In case of a disagreement between the translation and the original version of this License or a notice or disclaimer, the original version will prevail. If a section in the Document is Entitled "Acknowledgements", "Dedications", or "History", the requirement (section 4) to Preserve its Title (section 1) will typically require changing the actual title. 9. TERMINATION You may not copy, modify, sublicense, or distribute the Document except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, or distribute it is void, and will automatically terminate your rights under this License. However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, receipt of a copy of some or all of the same material does not give you any rights to use it. 10. FUTURE REVISIONS OF THIS LICENSE The Free Software Foundation may publish new, revised versions of the GNU Free Documentation License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. See . Each version of the License is given a distinguishing version number. If the Document specifies that a particular numbered version of this License "or any later version" applies to it, you have the option of following the terms and conditions either of that specified version or of any later version that has been published (not as a draft) by the Free Software Foundation. If the Document does not specify a version number of this License, you may choose any version ever published (not as a draft) by the Free Software Foundation. If the Document specifies that a proxy can decide which future versions of this License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Document. 11. RELICENSING "Massive Multiauthor Collaboration Site" (or "MMC Site") means any World Wide Web server that publishes copyrightable works and also provides prominent facilities for anybody to edit those works. A public wiki that anybody can edit is an example of such a server. A "Massive Multiauthor Collaboration" (or "MMC") contained in the site means any set of copyrightable works thus published on the MMC site. "CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0 license published by Creative Commons Corporation, a not-for-profit corporation with a principal place of business in San Francisco, California, as well as future copyleft versions of that license published by that same organization. "Incorporate" means to publish or republish a Document, in whole or in part, as part of another Document. An MMC is "eligible for relicensing" if it is licensed under this License, and if all works that were first published under this License somewhere other than this MMC, and subsequently incorporated in whole or in part into the MMC, (1) had no cover texts or invariant sections, and (2) were thus incorporated prior to November 1, 2008. The operator of an MMC Site may republish an MMC contained in the site under CC-BY-SA on the same site at any time before August 1, 2009, provided the MMC is eligible for relicensing. ADDENDUM: How to use this License for your documents ==================================================== To use this License in a document you have written, include a copy of the License in the document and put the following copyright and license notices just after the title page: Copyright (C) YEAR YOUR NAME. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled ``GNU Free Documentation License''. If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, replace the "with...Texts." line with this: with the Invariant Sections being LIST THEIR TITLES, with the Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST. If you have Invariant Sections without Cover Texts, or some other combination of the three, merge those two alternatives to suit the situation. If your document contains nontrivial examples of program code, we recommend releasing these examples in parallel under your choice of free software license, such as the GNU General Public License, to permit their use in free software.  File: units.info, Node: Index, Prev: GNU Free Documentation License, Up: Top Index ***** [index] * Menu: * ! to indicate primitive units: Defining New Units. (line 6) * !endlocale: Localization. (line 6) * !endutf8: Unicode Support. (line 6) * !include: Units Data Files. (line 6) * !locale: Localization. (line 6) * !unitlist: Defining Unit List Aliases. (line 6) * !utf8: Unicode Support. (line 6) * * operator: Operators. (line 14) * ** operator: Operators. (line 70) * + operator: Sums and Differences of Units. (line 6) * - as multiplication operator: Backwards Compatibility. (line 17) * - as subtraction operator: Sums and Differences of Units. (line 6) * --check (option for units): Invoking Units. (line 52) * --check-verbose (option for units): Invoking Units. (line 61) * --compact (option for units): Invoking Units. (line 276) * --digits (option for units): Invoking Units. (line 69) * --exponential (option for units): Invoking Units. (line 86) * --file (option for units): Invoking Units. (line 117) * --file (option for units) <1>: Invoking Units. (line 139) * --help (option for units): Invoking Units. (line 148) * --info (option for units): Invoking Units. (line 219) * --locale (option for units): Invoking Units. (line 242) * --log (option for units): Invoking Units. (line 129) * --minus (option for units): Invoking Units. (line 152) * --newstar (option for units): Invoking Units. (line 167) * --oldstar (option for units): Invoking Units. (line 163) * --one-line (option for units): Invoking Units. (line 262) * --output-format (option for units): Invoking Units. (line 95) * --product (option for units): Invoking Units. (line 157) * --quiet (option for units): Invoking Units. (line 285) * --silent (option for units): Invoking Units. (line 285) * --strict (option for units): Invoking Units. (line 253) * --terse (option for units): Invoking Units. (line 268) * --units (option for units): Invoking Units. (line 238) * --unitsfile (option for units): Invoking Units. (line 233) * --verbose (option for units): Invoking Units. (line 197) * --verbose-check (option for units): Invoking Units. (line 61) * --version (option for units): Invoking Units. (line 204) * -1 (option for units): Invoking Units. (line 262) * -c (option for units): Invoking Units. (line 52) * -d (option for units): Invoking Units. (line 69) * -e (option for units): Invoking Units. (line 86) * -f (option for units): Invoking Units. (line 117) * -f (option for units) <1>: Invoking Units. (line 139) * -h (option for units): Invoking Units. (line 148) * -I (option for units): Invoking Units. (line 219) * -L (option for units): Invoking Units. (line 129) * -l (option for units): Invoking Units. (line 242) * -m (option for units): Invoking Units. (line 152) * -o (option for units): Invoking Units. (line 95) * -p (option for units): Invoking Units. (line 157) * -q (option for units): Invoking Units. (line 285) * -s (option for units): Invoking Units. (line 253) * -t (option for units): Invoking Units. (line 268) * -U (option for units): Invoking Units. (line 233) * -u (option for units): Invoking Units. (line 238) * -v (option for units): Invoking Units. (line 197) * -V (option for units): Invoking Units. (line 204) * ? for unit completion with readline: Readline Support. (line 16) * ? to show conformable units: Interactive Use. (line 130) * _ to use result of previous conversion: Previous Result. (line 6) * | operator: Operators. (line 51) * abrasive grit size: Other Nonlinear Units. (line 36) * addition of units: Sums and Differences of Units. (line 9) * additional units data files: Units Data Files. (line 6) * backwards compatibility: Backwards Compatibility. (line 6) * British Imperial measure: Unit Definitions. (line 37) * built-in functions: Built-in Functions. (line 6) * CGS Units Systems: CGS Units Systems. (line 6) * CGS units, prompt prefix: Prompt Prefix. (line 6) * CGS units, specifying: Specifying CGS Units. (line 6) * CGS units, using: Using CGS Units. (line 6) * circle, area of: Other Nonlinear Units. (line 42) * command, ! to indicate primitive units: Defining New Units. (line 6) * command, !endlocale: Localization. (line 6) * command, !endutf8: Unicode Support. (line 6) * command, !endvar: Localization. (line 6) * command, !include: Units Data Files. (line 6) * command, !locale: Localization. (line 6) * command, !message: Localization. (line 6) * command, !set: Localization. (line 6) * command, !unitlist: Defining Unit List Aliases. (line 6) * command, !utf8: Unicode Support. (line 6) * command, !var: Localization. (line 6) * command, !varnot: Localization. (line 6) * command-line options: Invoking Units. (line 6) * command-line unit conversion: Command Line Use. (line 6) * commands in units database: Database Syntax. (line 6) * compatibility: Backwards Compatibility. (line 6) * compatibility with earlier versions: Backwards Compatibility. (line 6) * completion, unit, using ? (readline only): Readline Support. (line 16) * conformable units, ? to show: Interactive Use. (line 130) * currency, updating: Currency. (line 6) * Darcy-Weisbach equation: Complicated Unit Expressions. (line 7) * data files: Data Files. (line 6) * data files, additional: Units Data Files. (line 6) * database syntax summary: Database Syntax. (line 6) * defining nonlinear units: Defining Nonlinear Units. (line 6) * defining piecewise linear units: Piecewise Linear Units. (line 6) * defining prefixes: Defining New Units. (line 6) * defining unit list aliases: Defining Unit List Aliases. (line 6) * defining units: Defining New Units. (line 6) * defining units with '-': Backwards Compatibility. (line 33) * differences of units: Sums and Differences of Units. (line 9) * dimensionless units: Interactive Use. (line 128) * dimensionless units, defining: Defining New Units. (line 38) * division of numbers: Operators. (line 51) * division of units: Operators. (line 14) * domain, nonlinear unit definitions: Defining Nonlinear Units. (line 90) * environment dependent definitions: Localization. (line 6) * environment variable, HOME: Environment Vars. (line 9) * environment variable, LANG: Environment Vars. (line 20) * environment variable, LC_CTYPE: Environment Vars. (line 20) * environment variable, MYUNITSFILE: Units Data Files. (line 43) * environment variable, MYUNITSFILE <1>: Environment Vars. (line 25) * environment variable, PAGER: Environment Vars. (line 31) * environment variable, UNITSFILE: Environment Vars. (line 42) * environment variable, UNITSLOCALEMAP: Environment Vars. (line 49) * environment variable, UNITS_ENGLISH: Environment Vars. (line 38) * environment variable, UNITS_SYSTEM: Environment Vars. (line 58) * environment variables: Environment Vars. (line 6) * exchange rates, updating: Currency. (line 6) * exponent operator: Operators. (line 70) * files, data: Data Files. (line 6) * flags, output format: Flags. (line 6) * format specification, output: Format Specification. (line 6) * fractions, numerical: Operators. (line 51) * functions of units: Defining Nonlinear Units. (line 162) * functions, built in: Built-in Functions. (line 6) * help: Interactive Use. (line 136) * help <1>: Environment Vars. (line 31) * HOME environment variable: Environment Vars. (line 9) * hyphen as multiplication operator: Backwards Compatibility. (line 17) * Imperial measure: Unit Definitions. (line 37) * include files: Defining New Units. (line 15) * including additional units data files: Units Data Files. (line 6) * incompatible units: Interactive Use. (line 86) * interactive use: Interactive Use. (line 6) * international mile: Unit Definitions. (line 77) * international yard: Unit Definitions. (line 77) * invoking units: Invoking Units. (line 6) * LANG environment variable: Environment Vars. (line 20) * LC_CTYPE environment variable: Environment Vars. (line 20) * length measure, English customary: Unit Definitions. (line 77) * length measure, UK: Unit Definitions. (line 77) * linear interpolation: Piecewise Linear Units. (line 6) * locale: Locale. (line 6) * locale_map.txt: Locale. (line 17) * localization: Localization. (line 6) * log file: Logging Calculations. (line 6) * logging calculations: Logging Calculations. (line 6) * logs: Built-in Functions. (line 27) * measure, Imperial: Unit Definitions. (line 37) * mile, international: Unit Definitions. (line 77) * minus (-) operator, subtraction: Sums and Differences of Units. (line 6) * multiplication of units: Operators. (line 14) * multiplication, hyphen: Backwards Compatibility. (line 17) * MYUNITSFILE environment variable: Units Data Files. (line 43) * MYUNITSFILE environment variable <1>: Environment Vars. (line 25) * non-conformable units: Interactive Use. (line 86) * non-interactive unit conversion: Command Line Use. (line 6) * nonlinear unit conversions: Nonlinear Conversions. (line 6) * nonlinear unit conversions <1>: Defining Nonlinear Units. (line 6) * nonlinear units, defining: Defining Nonlinear Units. (line 6) * nonlinear units, other: Other Nonlinear Units. (line 6) * numbers as units: Numbers as Units. (line 6) * numeric output format: Numeric Output Format. (line 6) * numerical fractions: Operators. (line 51) * operator precedence: Operators. (line 36) * operator, (**): Operators. (line 70) * operator, caret (^): Operators. (line 70) * operator, hyphen (-) as multiplication: Backwards Compatibility. (line 17) * operator, hyphen (-) as subtraction: Sums and Differences of Units. (line 6) * operator, minus (-): Sums and Differences of Units. (line 6) * operator, per: Operators. (line 14) * operator, plus (+): Sums and Differences of Units. (line 6) * operator, slash (/): Operators. (line 14) * operator, solidus (/): Operators. (line 14) * operator, space: Operators. (line 14) * operator, star (*): Operators. (line 14) * operator, vertical bar (|): Operators. (line 51) * operators: Operators. (line 6) * output field width: Field Width. (line 6) * output format: Numeric Output Format. (line 6) * output format flags: Flags. (line 6) * output format specification: Format Specification. (line 6) * output precision: Precision. (line 6) * PAGER environment variable: Environment Vars. (line 31) * parentheses: Operators. (line 29) * parentheses <1>: Operators. (line 36) * parentheses <2>: Operators. (line 70) * parentheses <3>: Sums and Differences of Units. (line 33) * parentheses <4>: Complicated Unit Expressions. (line 27) * parentheses <5>: Defining New Units. (line 47) * parentheses <6>: Defining New Units. (line 79) * parentheses <7>: Defining Nonlinear Units. (line 36) * per operator: Operators. (line 14) * personal units data file: Units Data Files. (line 28) * piecewise linear units: Piecewise Linear Units. (line 6) * plus (+) operator: Sums and Differences of Units. (line 6) * powers: Operators. (line 70) * precision, output: Precision. (line 6) * prefixes: Unit Definitions. (line 56) * prefixes and exponents: Operators. (line 82) * prefixes, definition of: Defining New Units. (line 6) * previous result: Previous Result. (line 6) * primitive units: Defining New Units. (line 6) * products of units: Operators. (line 14) * prompt prefix with CGS units: Prompt Prefix. (line 6) * quotients of units: Operators. (line 14) * range, nonlinear unit definitions: Defining Nonlinear Units. (line 90) * readline, use with units: Readline Support. (line 6) * reciprocal conversion: Interactive Use. (line 61) * roots: Built-in Functions. (line 51) * setlocale function: Locale. (line 17) * slash (/) operator: Operators. (line 14) * solidus (/) operator: Operators. (line 14) * sphere, volume of: Other Nonlinear Units. (line 42) * square roots: Built-in Functions. (line 51) * star (*) operator: Operators. (line 14) * State Plane Coordinate System, US: Unit Definitions. (line 77) * strict conversion: Interactive Use. (line 70) * subtraction of units: Sums and Differences of Units. (line 9) * sums and differences of units: Sums and Differences of Units. (line 6) * sums of units: Sums and Differences of Units. (line 9) * sums of units <1>: Unit Lists. (line 6) * survey foot, US: Unit Definitions. (line 77) * survey measure, US: Unit Definitions. (line 77) * survey mile, US: Unit Definitions. (line 77) * syntax of units database: Database Syntax. (line 6) * temperature conversions: Temperature Conversions. (line 6) * Unicode support: Unicode Support. (line 6) * unit completion using ? (readline only): Readline Support. (line 16) * unit definitions: Unit Definitions. (line 6) * unit expressions: Unit Expressions. (line 6) * unit expressions, complicated: Complicated Unit Expressions. (line 6) * unit list aliases, defining: Defining Unit List Aliases. (line 6) * unit lists: Unit Lists. (line 6) * unit name completion: Readline Support. (line 19) * units data file, personal: Units Data Files. (line 28) * units data files, additional: Units Data Files. (line 6) * units definitions, adding: Defining New Units. (line 6) * units definitions, changing: Defining New Units. (line 6) * units functions: Defining Nonlinear Units. (line 162) * units quotients: Operators. (line 14) * units systems, CGS: CGS Units Systems. (line 6) * units, definition of: Defining New Units. (line 6) * units, lookup method: Unit Definitions. (line 47) * units, piecewise linear: Piecewise Linear Units. (line 6) * units, primitive: Defining New Units. (line 6) * units, sums and differences: Sums and Differences of Units. (line 6) * units, sums of: Unit Lists. (line 6) * UNITSFILE environment variable: Environment Vars. (line 42) * UNITSLOCALEMAP environment variable: Environment Vars. (line 49) * UNITS_ENGLISH environment variable: Environment Vars. (line 38) * UNITS_SYSTEM environment variable: Environment Vars. (line 58) * US State Plane Coordinate System: Unit Definitions. (line 77) * US survey foot: Unit Definitions. (line 77) * US survey measure: Unit Definitions. (line 77) * US survey mile: Unit Definitions. (line 77) * UTF-8: Unicode Support. (line 6) * verbose output: Interactive Use. (line 52) * verbose output <1>: Interactive Use. (line 70) * vertical bar (|) operator: Operators. (line 51) * volume measure, English customary: Unit Definitions. (line 62) * white space: Operators. (line 36) * white space <1>: Previous Result. (line 34) * wire gauge: Other Nonlinear Units. (line 14) * yard, international: Unit Definitions. (line 77)  Tag Table: Node: Top842 Node: Overview2454 Ref: Overview-Footnote-14218 Node: Interactive Use4412 Node: Command Line Use10215 Node: Unit Definitions11648 Node: Unit Expressions17859 Node: Operators18472 Node: Sums and Differences of Units23839 Node: Numbers as Units25881 Node: Built-in Functions26686 Node: Previous Result28702 Node: Complicated Unit Expressions31028 Node: Backwards Compatibility32661 Node: Nonlinear Conversions34563 Node: Temperature Conversions35002 Node: Other Nonlinear Units37067 Node: Unit Lists40204 Node: Using CGS Units48971 Node: Specifying CGS Units51629 Node: CGS Units Systems53633 Node: Conversions Between Systems55207 Node: Prompt Prefix58901 Node: Logging Calculations59785 Node: Invoking Units62450 Ref: Invoking Units-Footnote-175733 Node: Output Styles75987 Node: Defining Your Own Units79066 Node: Units Data Files79603 Node: Defining New Units82091 Node: Defining Nonlinear Units86440 Node: Piecewise Linear Units94618 Node: Defining Unit List Aliases98375 Node: Numeric Output Format99535 Node: Format Specification100808 Node: Flags102770 Node: Field Width104853 Node: Precision105888 Node: Localization108345 Node: Locale108788 Node: Additional Localization110801 Node: Environment Vars115257 Node: Data Files118035 Node: Unicode Support119908 Node: Readline Support123271 Node: Currency125417 Node: Database Syntax129684 Node: GNU Free Documentation License131989 Node: Index157121  End Tag Table units-2.19/texi2man0000775000175000017500000004735413451005112013551 0ustar adrianadrian#!/usr/bin/perl # $Id: $ # Written by Adrian Mariano, additional features by Eric Backus and # Jeff Conrad. # Script to translate a texinfo file into an nroff/troff manual page. # last revision: 30 March 2019 Jeff Conrad $thisprog = $0; $thisprog =~ s/.*[\/\\]//; $version="1.01w"; $html=0; $example=0; $ignore=0; $tex=0; $doman=0; $title=0; $diditem=0; $justdidlp=1; $noman=0; $manprefix=""; $args=($#ARGV < 0) ? "stdin" : "@ARGV"; printf(".\\\"Do not edit this file. It was created from %s\n", $args); printf(".\\\"using %s version %s on %s", $thisprog, $version, `date`); while(<>) { # use font CW in tables if (/\@c man\s+l\s/) { s/\@c man //; s/l/lfCWp-1/; print; next; } if (/\@c\s+man\s+program/) { chop; s/\@c\s+man\s+program\s+//; $program = $_; next; } if (s/\@c man //) { print; if (/AUTHOR/) { $errors = 0; if (! $author) { printf(STDERR "%s: missing '\@author'\n", $thisprog); $errors++; } if (! $program) { printf(STDERR "%s: missing '\@c man program'\n", $thisprog); $errors++; } if ($errors) { exit; } else { printf(".I %s\nwas written by %s\n", $program, $author); } } if (/\.TH/) { add_extensions(); } next; } if (/\@c noman/) { $noman=1; next; } if (/\@c end noman/) { $noman=0; next; } if ($noman) { next; } if (/\@c ifman\s*(.*)/) { $doman=1; $manprefix = $1; next; } if (/\@c end ifman/) { $doman=0; $manprefix = ""; next; } if (/^\@c [^m]/) { next; } if (/^\\input/) { next; } if (/^\*/) { next; } if (/^START-INFO-DIR-ENTRY/) { next; } if (/^END-INFO-DIR-ENTRY/) { next; } if (/\@author/) { chop; s/\@author\s+//; $author = $_; next; } if (/\@titlepage/) { $title=1; next; } if (/\@end titlepage/) { $title=0; next; } if (/\@tex/) { $tex=1; next; } if (/\@end tex/) { $tex=0; next; } if (/\@ignore/) { $ignore=1; next; } if (/\@end ignore/) { $ignore=0; next; } if (/\@ifhtml/) { $html=1; next; } if (/\@end ifhtml/) { $html=0; next; } if (/\@html/) { $html=1; next; } if (/\@end html/) { $html=0; next; } if (!$doman && ($ignore || $html || $title || $tex)) { next; } if (/\@set codequoteundirected/) { print ".aQ\n"; next; } if (/\@clear codequoteundirected/) { print ".aE\n"; next; } s/\@\*$/\n\.br/g; s/^\@\*/.br/g; s/\@\*$/\n.br/g; s/\@ / /g; s/\@dmn\{([^}]*)}/\\|$1/g; s/\@tie\{}/\@no_break_space\{}/g; s/\@w\{}/\@no_break_space\{}/g; s/\@backslashchar\{}/\\e/g; # opening and closing double quotes s/``(\S)/\\\*(lQ$1/g; s/(\S)''/$1\\\*(rQ/g; # ellipsis, defined in extensions s/\@dots\{}/\\*(El/g; s/\@cite\{([^}]*)}/\@in_sgl_quotes\{$1}/g; s/\@url\{([^}]*)}/\@in_sgl_quotes\{$1}/g; s/\@email\{([^}]*)}/\@in_sgl_quotes\{$1}/g; s/\@dfn\{([^}]*)}/\@in_italics\{$1}/g; s/\@emph\{([^}]*)}/\@in_italics\{$1}/g; s/\@i\{([^}]*)}/\@in_italics\{$1}/g; s/\@r\{([^}]*)}/\@in_roman\{$1}/g; s/\@var\{([^}]*)}/\@in_italics\{$1}/g; s/\@b\{([^}]*)}/\@in_bold\{$1}/g; s/\@strong\{([^}]*)}/\@in_bold\{$1}/g; # remove trailing comma from xref because man won't include the page number s/\@xref\{([^}]*)},/\@xref\{$1}/g; s/\@xref\{([^}]*)}/See \@in_italics\{$1}/g; s/\@ref\{([^}]*)}/\@ref\{$1}/g; s/\@ref\{([^}]*)}/\@in_italics\{$1}/g; s/\@pxref\{([^}]*)}/see \@in_italics\{$1}/g; s/\@uref\{([^}]*)}/\@in_roman\{$1}/g; if (/\@chapter.*\@command/) { s/\@command\{([^}]*)}/\@in_italics\{$1}/g; } # show in constant-width font s/\@code\{([^}]*)}/\@constwid\{$1}/g; s/\@command\{([^}]*)}/\@constwid\{$1}/g; s/\@env\{([^}]*)}/\@constwid\{$1}/g; # show in constant-width oblique font s/\@kbd\{([^}]*)}/\@constwidI\{$1}/g; # show in constant-width font with single quotes s/\@file\{([^}]*)}/\@constwidQ\{$1}/g; s/\@option\{([^}]*)}/\@constwidQ\{$1}/g; # Pass ASCII double quotes to .CQ encoded as two double quotes # disallow single quotes here because groff converts them to # typographical closing quotes. # This substitution works only in very limited circumstances, and # needs extension to handle the general case of ASCII quotes in # sample text s/\@samp\{([^}]*)["']{2,2}}/\@samp\{$1""""}/g; s/\@samp\{(.*\@(tie|no_break_space)\{})["']{2,2}}/\@samp\{$1""""}/g; s/\@samp\{([^}]*)}/\@constwidQ\{$1}/g; s/\@sc\{([^}]*)}/\@to_upper\{$1}/g; s/\@key\{([^}]*)}/\@in_italics\{$1}/g; s/\@footnote\{([^}]*)}/\@in_square_br\{$1}/g; s/\@math\{([^}]*)}/\@no_decoration\{$1}/g; if (/\@w\{([^}]*)}/) { s/\@w\{([^}]*)}/\@no_break_word\{$1}/g; } # leave minus (dash) lists so they can be recognized later if (! /^\@itemize/) { s/\@minus\{}/\\-/g; } s/\@copyright\{}/\\(co/g; s/\@noindent//; s/\@\{/{/g; s/\@}/}/g; s/\@\@/@/g; s/---/\\(em/g; # allowable line break escape: groff only? s/\@\//\\:/g; s/^\@raggedright/.na/; s/^\@end raggedright/.ad b/; s/\@in_sgl_quotes\{([^}]+)}/`$1'/g; s/\@in_dbl_quotes\{([^}]+)}/\"$1\"/g; s/\@in_italics\{([^}]+)}/\\fI$1\\fP/g; s/\@in_roman\{([^}]+)}/\\fR$1\\fP/g; s/\@in_bold\{([^}]+)}/\\fB$1\\fP/g; s/\@to_upper\{([^}]*)}/\U$1\E/g; s/\@no_decoration\{([^}]*)}/$1/g; if (/\@no_break_word\{([^}]+)}(\S*)/) { $_ = no_break_word("$_", '@no_break_word'); } s/\@no_break_space\{}/\\ /g; s/\@[ ]/ /g; s/\@in_angle_br\{([^}]*)}/<$1>/g; s/\@in_square_br\{([^}]*)}/[$1]/g; # set up to use CW, CI, and CQ macros # put every instance on a new line # ensure that prepended and appended macros go on separate lines # separate concatenated commands with spaces s/([}])(\@constwid[IQ]*)/$1 $2/g; s/(\@constwid[IQ]*\{[^}]+})(\@)/$1 $2/g; # space before -> newline s/\s+(\S*\@constwid[IQ]*\{[^}]+}\S*)/\n$1/g; # space after -> newline s/(\S*\@constwid[IQ]*\{[^}]+}\S*)\s+/$1\n/g; if (/(\S*)\@constwidI\{([^}]+)}(\S*)/) { $_ = CW_macro("$_", '@constwidI', ".CI"); } if (/(\S*)\@constwidQ\{([^}]+)}(\S*)/) { $_ = CW_macro("$_", '@constwidQ', ".CQ"); } if (/(\S*)\@constwid\{([^}]+)}(\S*)/) { $_ = CW_macro("$_", '@constwid', ".CW"); } # handle backslash character in sample s/(\.C[IQW]\s+\S+\s+)"\\"/$1"\\e"/g; s/(\.C[IQW]\s+)"\\"/$1"\\e"/g; # handle backslash character in Windows pathname # starts with a drive specifier ... if (/(\.C[IQW]\s+"[[:alpha:]]:)/) { # don't change font switches or escaped spaces s/(\S)\\(?!(\s|f[RIBP]|f\([A-Z]{2}))/$1\\e/g; } # some versions of n/troff don't have \(en, so use \- # don't replace double hyphens in C[IQW] macros; assume true # en dashes will be closed up to previous word s/([^" ]+?)--/$1\\-/g; s/\@value\{([^\s]+)}/$value{$1}/eg; if (/\@set\s+([^\s]+)\s+(.*)$/) { $value{$1} = $2; next; } if (/\@clear\s+([^\s]+)\s+(.*)$/) { delete $value{$1}; next; } # tables of command-line options as used in units(1) if (/\@table (.*)/) { $intable = 1; next; } if (/\@end *table/) { $intable = 0; if ($in_taggedlist == 1) { $in_taggedlist = 0; } next; } if ($intable == 1) { if (/\@itemx (.*)/) { $samp = $1; # add hair space to visually separate the hyphens in roman type $samp =~ s/--/-\\^-/; $samp =~ s/-([[:alnum:]])/-\\^$1/; if (!$diditem) { printf(".TP\n.BR \"$samp\""); } else { printf(" \", \" \"$samp\""); } $diditem=1; $new_paragraph = ""; next; } elsif ($diditem) { printf("\n"); $diditem=0; } if (/\@item (.*)/) { $in_taggedlist = 1; $samp = $1; # add hair space to visually separate the hyphens in roman type $samp =~ s/--/-\\^-/; $samp =~ s/-([[:alnum:]])/-\\^$1/; printf("%s.TP\n%s.BR \"$samp\"", $manprefix, $manprefix); $diditem=1; $new_paragraph = ""; next; } } # output a paragraph macro unless already done with a TP macro above if ($new_paragraph) { printf("%s\n", $new_paragraph); $justdidlp = 1; $new_paragraph = ""; } # unordered list: bullet or minus if (/^\@itemize *$/ || /^\@itemize +@(bullet|minus)(\{})?/) { if ($1 =~ "minus") { $listmark = "\\-"; } else { $listmark = "\\(bu"; } $in_ulist = 1; next; } if ($in_ulist == 1 && /^\@end +itemize/) { $in_ulist = 0; next; } if ($in_ulist == 1) { if (/^\@item *$/) { printf("%s.IP \\h'1n'%s 4n\n", $manprefix, $listmark); } } if (s/\@chapter (.*)/.SH \U$1\E/) { if (/GNU FREE DOCUMENTATION/) { next; } # restore proper case on font switches s/\\FR/\\fR/g; s/\\FI/\\f(BI/g; # chapter headings (SH in man) are bold s/\\FP/\\fP/g; printf("%s%s", $manprefix, $_); $justdidlp=1; next; } if (s/\@section (.*)/$1/) { printf("%s.SS %s", $manprefix, $_); next; } # FIXME? why do we need $manprefix for these? # input/output example macros if (/\@example/) { printf("%s.ES\n", $manprefix); $example=1; next; } if (/\@end example/) { printf("%s.EE\n", $manprefix); $example=0; $justdidlp=0; next; } if (/\@smallexample/) { printf("%s.ES S\n", $manprefix); $example=1; next; } if (/\@end smallexample/) { printf("%s.EE\n", $manprefix); $example=0; $justdidlp=0; next; } # no CW font if (/\@display/) { printf("%s.DS\n", $manprefix, $manprefix); $example=1; next; } if (/\@end display/) { printf("%s.DE\n", $manprefix, $manprefix); $example=0; next; } # no CW font, no indent if (/\@format/) { printf("%s.nf\n", $manprefix); $example=1; next; } if (/\@end format/) { printf("%s.fi\n", $manprefix); $example=0; next; } if ($example) { s/\\\s*$/\\e\n/ }; # blank line: new paragraph; don't output until we see if @item or @itemx follows if (!$example && /^\s*$/ && !$doman) { if ($justdidlp) { next; } if ($in_taggedlist == 1) { $new_paragraph = ".IP"; } else { $new_paragraph = ".PP"; } next; } if (/^\@/) { next; } printf("%s%s", $manprefix, $_); if (!$doman) { $justdidlp=0; } } # Extensions to legacy man macro package. groff loads the man macro file # after the call of TH, so these definitions must likewise follow that # call of TH if they are overwrite any groff extensions with the same # names that might be added in the future. sub add_extensions { printf(".\\\"\n"); printf(".if \\n(.g \\{\\\n"); printf(". \\\" ensure that ASCII circumflex U+005E (^) is not remapped\n"); printf(". tr ^\\(ha\n"); printf(". \\\" override translation in troffrc\n"); printf(". ie '\\*[.T]'utf8' .tr `\\(oq'\\(cq\n"); printf(". \\\" override mapping of ` to 60h with Tascii; assume\n"); printf(". \\\" we don't need a backquote for an example\n"); printf(". el .if n .tr `'\n"); printf(".\\}\n"); # ellipsis: space periods with troff but not with nroff printf(".\\\" ellipsis: space periods with troff but not with nroff\n"); printf(".if n .ds El \\&...\n"); printf(".if t .ds El \\&.\\ .\\ .\n"); # bullet: use '*' rather than 'o' for ASCII/Latin1; override groff's # translation to MIDDLE DOT for others printf(".if n \\{\\\n"); printf(". tr \\(bu\*\n"); printf(". \\\" override translation to MIDDLE DOT\n"); printf(". if \\n(.g .if '\\*(.T'utf8' .tr \\(bu\\(bu\n"); printf(". if \\n(.g .if '\\*(.T'cp1252' .tr \\(bu\\(bu\n"); printf(". if \\n(.g .if '\\*(.T'ansi' .tr \\(bu\\(bu\n"); printf(".\\}\n"); printf(".\\\"\n"); printf(".\\\" Extensions to man macros\n"); printf(".\\\"\n"); printf(".\\\" set handling of single quotes: 0=>straight, >0=>left and right\n"); printf(".nr tQ 0\n"); printf(".\\\" groff only\n"); printf(".if '\\\*(.T'utf8' .nr tQ 1\n"); printf(".\\\" non-standard devices: Windows code page 1252\n"); printf(".if '\\\*(.T'cp1252' .nr tQ 1\n"); printf(".if '\\\*(.T'ansi' .nr tQ 1\n"); # constant-width font printf(".\\\" Constant-width font\n"); printf(".de CW\n"); printf(".hy 0\n"); printf(".\\\" nroff can't show CW font, so enclose in single quotes\n"); printf(".if n \\{\\\n"); printf(". ie \\\\n(.g \\{\\\n"); printf(". \\\" use proper opening and closing single quotes\n"); printf(". ie \\\\n(tQ>0 \\{\\\n"); printf(". ie \\\\n(.\$>2 \\&\\\\\$1\\(oq\\\\\$2\\(cq\\\\\$3\n"); printf(". el \\&\\(oq\\\\\$1\\(cq\\\\\$2\n"); printf(". \\}\n"); printf(". \\\" ensure neutral single quotes with Tascii\n"); printf(". el \\{\\\n"); printf(". ie \\\\n(.\$>2 \\&\\\\\$1\\(aq\\\\\$2\\(aq\\\\\$3\n"); printf(". el \\&\\(aq\\\\\$1\\(aq\\\\\$2\n"); printf(". \\}\n"); printf(". \\}\n"); printf(". \\\" legacy nroff doesn't have 'aq', so use ' and hope for the best\n"); printf(". el \\{\\\n"); printf(". ie \\\\n(.\$>2 \\&\\\\\$1'\\\\\$2'\\\\\$3\n"); printf(". el \\&'\\\\\$1'\\\\\$2\n"); printf(". \\}\n"); printf(".\\}\n"); printf(".\\\" troff can change fonts, so no need for quotes\n"); printf(".if t \\{\\\n"); printf(". ie \\\\n(.\$>2 \\&\\\\\$1\\f(CW\\\\\$2\\fR\\\\\$3\n"); printf(". el \\&\\f(CW\\\\\$1\\fR\\\\\$2\n"); printf(".\\}\n"); printf(".hy 14\n"); printf("..\n"); printf(".\\\" Constant-width oblique font\n"); printf(".de CI\n"); printf(".hy 0\n"); printf(".\\\" nroff can't show CW font, so enclose in single quotes\n"); printf(".if n \\{\\\n"); printf(". ie \\\\n(.g \\{\\\n"); printf(". \\\" use proper opening and closing single quotes\n"); printf(". ie \\\\n(tQ \\{\\\n"); printf(". ie \\\\n(.\$>2 \\&\\\\\$1\\(oq\\fI\\\\\$2\\fR\\(cq\\\\\$3\n"); printf(". el \\&\\(oq\\fI\\\\\$1\\fR\\(cq\\\\\$2\n"); printf(". \\}\n"); printf(". \\\" ensure neutral single quotes with Tascii\n"); printf(". el \\{\\\n"); printf(". ie \\\\n(.\$>2 \\&\\\\\$1\\(aq\\fI\\\\\$2\\fR\\(aq\\\\\$3\n"); printf(". el \\&\\(aq\\fI\\\\\$1\\fR\\(aq\\\\\$2\n"); printf(". \\}\n"); printf(". \\}\n"); printf(". \\\" legacy nroff doesn't have 'aq', so use ' and hope for the best\n"); printf(". el \\{\n"); printf(". ie \\\\n(.\$>2 \\&\\\\\$1'\\fI\\\\\$2\\fR'\\\\\$3\n"); printf(". el \\&'\\fI\\\\\$1\\fR'\\\\\$2\n"); printf(". \\}\n"); printf(".\\}\n"); printf(".\\\" troff can change fonts, so no need for quotes\n"); printf(".if t \\{\\\n"); printf(". ie \\\\n(.\$>2 \\&\\\\\$1\\f(CI\\\\\$2\\fR\\\\\$3\n"); printf(". el \\&\\f(CI\\\\\$1\\fR\\\\\$2\n"); printf(".\\}\n"); printf(".hy 14\n"); printf("..\n"); printf(".\\\" Constant-width font with quotes with nroff and troff\n"); printf(".de CQ\n"); printf(".hy 0\n"); printf(".if n \\{\\\n"); printf(". ie \\\\n(.g \\{\\\n"); printf(". \\\" use proper opening and closing single quotes\n"); printf(". ie \\\\n(tQ \\{\\\n"); printf(". ie \\\\n(.\$>2 \\&\\\\\$1\\(oq\\\\\$2\\(cq\\\\\$3\n"); printf(". el \\&\\(oq\\\\\$1\\(cq\\\\\$2\n"); printf(". \\}\n"); printf(". \\\" ensure neutral single quotes with Tascii\n"); printf(". el \\{\\\n"); printf(". ie \\\\n(.\$>2 \\&\\\\\$1\\(aq\\\\\$2\\(aq\\\\\$3\n"); printf(". el \\&\\(aq\\\\\$1\\(aq\\\\\$2\n"); printf(". \\}\n"); printf(". \\}\n"); printf(". \\\" legacy nroff doesn't have 'aq', so use ' and hope for the best\n"); printf(". el \\{\\\n"); printf(". ie \\\\n(.\$>2 \\&\\\\\$1'\\\\\$2'\\\\\$3\n"); printf(". el \\&'\\\\\$1'\\\\\$2\n"); printf(". \\}\n"); printf(".\\}\n"); printf(".if t \\{\\\n"); printf(". ie \\\\n(.g \\{\\\n"); printf(". ie \\\\n(.\$>2 \\&\\\\\$1\\(oq\\f(CW\\\\\$2\\fR\\(cq\\\\\$3\n"); printf(". el \\&\\(oq\\f(CW\\\\\$1\\fR\\(cq\\\\\$2\n"); printf(". \\}\n"); printf(". \\\" legacy troff doesn't have 'oq' or 'cq'\n"); printf(". el \\{\\\n"); printf(". ie \\\\n(.\$>2 \\&\\\\\$1`\\f(CW\\\\\$2\\fR'\\\\\$3\n"); printf(". el \\&`\\f(CW\\\\\$1\\fR'\\\\\$2\n"); printf(". \\}\n"); printf(".\\}\n"); printf(".hy 14\n"); printf("..\n"); # equivalent of \@set codequoteundirected printf(".\\\" equivalent of \@set codequoteundirected\n"); printf(".de aQ\n"); printf(".if \\\\n(.g .tr '\\(aq\n"); printf("..\n"); printf(".\\\" equivalent of \@clear codequoteundirected\n"); printf(".de aE\n"); printf(".if \\\\n(.g \\{ .ie \\\\n(tQ>0 .tr '\\(cq\n"); printf(".el .tr '' \\}\n"); printf("..\n"); # opening and closing double quotes printf(".\\\" opening and closing double quotes\n"); printf(".\\\" groff: true opening and closing quotes\n"); printf(".ie \\n(.g \\{\\\n"); printf(". ds lQ \\(lq\n"); printf(". ds rQ \\(rq\n"); printf(".\\}\n"); printf(".el \\{\\\n"); printf(".\\\" legacy nroff: ASCII neutral double quotes\n"); printf(". ie n \\{\\\n"); printf(". ds lQ \"\"\n"); printf(". ds rQ \"\"\n"); printf(". \\}\n"); printf(".\\\" legacy troff: adjacent opening and closing single quotes\n"); printf(". el \\{\\\n"); printf(". ds lQ ``\n"); printf(". ds rQ ''\n"); printf(". \\}\n"); printf(".\\}\n"); # Display Start--indent, no fill printf(".\\\" Display start\n"); printf(".de DS\n"); printf(".hy 0\n"); printf(".if t .in +4n\n"); printf(".if n .in +3n\n"); printf(".nf\n"); printf("..\n"); # Display End printf(".\\\" Display end\n"); printf(".de DE\n"); printf(".fi\n"); printf(".in\n"); printf(".hy 14\n"); printf("..\n"); # Example Start--like display, but with font CW printf(".\\\" Example start\n"); printf(".de ES\n"); # call before size or font change to get consistent indent printf(".DS\n"); # CW font with troff; optionally reduce size printf(".if t \\{\\\n"); printf(".if '\\\\\$1'S' \\{\\\n"); printf(".nr Ex 1\n"); printf(".ps -1\n"); printf(".\\}\n"); printf(".el .nr Ex 0\n"); printf(".nr mE \\\\n(.f\n"); printf(".ft CW\n"); printf(".\\}\n"); printf("..\n"); # Example End printf(".\\\" Example end\n"); printf(".de EE\n"); # restore font and size with troff printf(".if t \\{\\\n"); printf(".ft \\\\n(mE\n"); printf(".if \\\\n(Ex=1 .ps\n"); printf(".\\}\n"); printf(".DE\n"); printf("..\n"); } # convert texinfo commands to .C[IQW] macros sub CW_macro { my $line = shift; my $from = shift; my $to = shift; # prepended and appended punctuation $line =~ s/(\S+)$from\{([^}]+)}(\S+)/$to $1 "$2" $3/g; # prepended punctuation $line =~ s/(\S+)$from\{([^}]+)}/$to $1 "$2" ""/g; # appended punctuation $line =~ s/$from\{([^}]+)}(\S+)/$to "$1" $2/g; # just the argument $line =~ s/$from\{([^}]+)}/$to "$1"/g; return $line; } # convert all spaces within @w{...} to unbreakable sub no_break_word { my $line = shift; my $pattern = (shift) . "\{"; my $len = length($pattern); my $ndx = -1; my $bracelevel = 0; my $char; while (($ndx = index($line, $pattern, $ndx)) > -1) { # get rid of the @ command and opening brace substr($line, $ndx, $len, ''); $bracelevel = 1; while ($bracelevel > 0) { $char = substr($line, $ndx, 1); # end of line and braces not closed if ($char eq "") { last; } elsif ($char eq '{') { $bracelevel++; } elsif ($char eq '}') { $bracelevel--; } # make spaces nonbreaking if ($char eq ' ') { substr($line, $ndx++, 1, '\ '); $ndx++; # assume multiple spaces are not wanted while (substr($line, $ndx, 1) eq ' ') { substr($line, $ndx, 1, ''); } } $ndx++; } # get rid of the closing brace for the @ command. This should # always be true unless there's an internal brace mismatch ... if (substr($line, $ndx - 1, 1) eq '}' ) { substr($line, $ndx - 1, 1, ''); } else { die "Missing closing '}'"; } } return $line; } units-2.19/makeobjs.cmd0000664000175000017500000000330110641165333014346 0ustar adrianadrian/* * Make a program object for the OS/2 version of units * Peter Weilbacher (os2@Weilbacher.org), 25Jan2003 * * Copyright (C) 1996, 1997, 1999 Free Software Foundation, Inc * * 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 3 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 program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * */ call RxFuncAdd SysLoadFuncs, REXXUtil, SysLoadFuncs call SysLoadFuncs workdir = Directory() classname='WPProgram' title = 'units' location = '' setup = 'OBJECTID=;'||, 'EXENAME=CMD.EXE;'||, 'PARAMETERS=/c mode co50,5 & units.exe [from-unit] [to-unit] & pause;'||, 'STARTUPDIR='workdir if SysCreateObject(classname, title, location, setup, 'U') then say 'Object created.' else say 'Could NOT create the object!!' title = 'units Shell' location = '' setup = 'OBJECTID=;'||, 'EXENAME=CMD.EXE;'||, 'PARAMETERS=/c mode co80,25 & units.exe;'||, 'STARTUPDIR='workdir if SysCreateObject(classname, title, location, setup, 'U') then say 'Object created.' else say 'Could NOT create the object!!' units-2.19/currency.units0000664000175000017500000003411713474326072015023 0ustar adrianadrian# ISO Currency Codes ATS austriaschilling BEF belgiumfranc CYP cypruspound EEK estoniakroon FIM finlandmarkka FRF francefranc DEM germanymark GRD greecedrachma IEP irelandpunt ITL italylira LVL latvialats LTL lithuanialitas LUF luxembourgfranc MTL maltalira SKK slovakiakornua SIT sloveniatolar ESP spainpeseta NLG netherlandsguilder PTE portugalescudo CVE capeverdeescudo BGN bulgarialev BAM bosniaconvertiblemark KMF comorosfranc XOF westafricafranc XPF cfpfranc XAF centralafricacfafranc AED uaedirham AFN afghanafghani ALL albanialek AMD armeniadram ANG antillesguilder AOA angolakwanza ARS argentinapeso AUD australiadollar AWG arubaflorin AZN azerbaijanmanat BBD barbadosdollar BDT bangladeshtaka BHD bahraindinar BIF burundifranc BND bruneidollar BOB boliviaboliviano BRL brazilreal BSD bahamasdollar BWP botswanapula BYN belarusruble BYR oldbelarusruble BZD belizedollar CAD canadadollar CDF drcfranccongolais CHF swissfranc CLP chilepeso CNY chinayuan COP colombiapeso CRC costaricacolon CUP cubapeso CZK czechkoruna DJF djiboutifranc DKK denmarkkrona DOP dominicanrepublicpeso DZD algeriadinar EGP egyptpound ERN eritreanakfa ETB ethiopiabirr EUR euro FJD fijidollar GBP ukpound GEL georgialari GHS ghanacedi GIP gibraltarpound GMD gambiadalasi GNF guineafranc GTQ guatemalaquetzal GYD guyanadollar HKD hongkongdollar HNL honduraslempira HRK croatiakuna HTG haitigourde HUF hungariaforint IDR indonesiarupiah ILS israelnewshekel INR indiarupee IQD iraqdinar IRR iranrial ISK icelandkrona JMD jamaicadollar JOD jordandinar JPY japanyen KES kenyaschilling KGS kyrgyzstansom KHR cambodiariel KRW southkoreawon KWD kuwaitdinar KZT kazakhstantenge LAK laokip LBP lebanonpound LKR srilankarupee LRD liberiadollar LSL lesotholoti LYD libyadinar MAD moroccodirham MDL moldovaleu MGA madagascarariary MKD macedoniadenar MMK myanmarkyat MNT mongoliatugrik MOP macaupataca MRO mauritaniaoldouguiya MRU mauritaniaouguiya MUR mauritiusrupee MVR maldiverufiyaa MWK malawikwacha MXN mexicopeso MYR malaysiaringgit MZN mozambiquemetical NAD namibiadollar NGN nigerianaira NIO nicaraguacordobaoro NOK norwaykrone NPR nepalrupee NZD newzealanddollar OMR omanrial PAB panamabalboa PEN perunuevosol PGK papuanewguineakina PHP philippinepeso PKR pakistanrupee PLN polandzloty PYG paraguayguarani QAR qatarrial RON romanianewlei RSD serbiadinar RUB russiaruble RWF rwandafranc SAR saudiarabiariyal SBD solomonislandsdollar SCR seychellesrupee SDG sudanpound SEK swedenkrona SGD singaporedollar SLL sierraleoneleone SOS somaliaschilling SRD surinamedollar SSP southsudanpound STN saotome&principedobra SVC elsalvadorcolon SYP syriapound SZL swazilandlilangeni THB thailandbaht TJS tajikistansomoni TMT turkmenistanmanat TND tunisiadinar TOP tongapa'anga TRY turkeylira TTD trinidadandtobagodollar TWD taiwandollar TZS tanzaniashilling UAH ukrainehryvnia UGX ugandaschilling USD US$ UYU uruguaypeso UZS uzbekistansum VES venezuelabolivarsoberano VND vietnamdong VUV vanuatuvatu WST samoatala XCD eastcaribbeandollar YER yemenrial ZAR southafricarand ZMW zambiakwacha # Currency exchange rates source !message Currency exchange rates from FloatRates (USD base) on 2019-05-31 austriaschilling 1|13.7603 euro belgiumfranc 1|40.3399 euro cypruspound 1|0.585274 euro estoniakroon 1|15.6466 euro # Equal to 1|8 germanymark finlandmarkka 1|5.94573 euro francefranc 1|6.55957 euro germanymark 1|1.95583 euro greecedrachma 1|340.75 euro irelandpunt 1|0.787564 euro italylira 1|1936.27 euro latvialats 1|0.702804 euro lithuanialitas 1|3.4528 euro luxembourgfranc 1|40.3399 euro maltalira 1|0.4293 euro slovakiakornua 1|30.1260 euro sloveniatolar 1|239.640 euro spainpeseta 1|166.386 euro netherlandsguilder 1|2.20371 euro portugalescudo 1|200.482 euro capeverdeescudo 0.0101044210089 USD bulgarialev 0.569832695195 USD bosniaconvertiblemark 0.571172528443 USD comorosfranc 0.00227440386514 USD westafricafranc 1|655.957 euro cfpfranc 1|119.33 euro centralafricacfafranc 0.00168809696578 USD uaedirham 0.272294233532 USD afghanafghani 0.0125076627357 USD albanialek 0.00908047171282 USD armeniadram 0.00208237913772 USD antillesguilder 0.534183593953 USD angolakwanza 0.00303911891527 USD argentinapeso 0.022425572153 USD australiadollar 0.691924138002 USD arubaflorin 0.553301470206 USD azerbaijanmanat 0.589424489635 USD barbadosdollar 0.500137771884 USD bangladeshtaka 0.0118358067087 USD bahraindinar 2.65432622511 USD burundifranc 0.000546002389735 USD bruneidollar 0.724959291959 USD boliviaboliviano 0.14519949806 USD brazilreal 0.251192789606 USD bahamasdollar 1.00145462102 USD botswanapula 0.0928468743331 USD belarusruble 0.477369511625 USD oldbelarusruble 1|10000 BYN belizedollar 0.496908930334 USD canadadollar 0.738998182015 USD drcfranccongolais 0.000608343290561 USD swissfranc 0.994429717702 USD chilepeso 0.00141176656462 USD chinayuan 0.144801330126 USD colombiapeso 0.000297363808638 USD costaricacolon 0.00170175074365 USD cubapeso 1.00145462102 USD czechkoruna 0.0431115375124 USD djiboutifranc 0.00562600654579 USD denmarkkrona 0.149253655362 USD dominicanrepublicpeso 0.0198192113876 USD algeriadinar 0.00835430970538 USD egyptpound 0.0595867283947 USD eritreanakfa 0.0664450101304 USD ethiopiabirr 0.0346771260845 USD euro 1.11429646845 USD fijidollar 0.464257883526 USD ukpound 1.26153920067 USD georgialari 0.357706893865 USD ghanacedi 0.188789028001 USD gibraltarpound 1.26614369578 USD gambiadalasi 0.0198451867629 USD guineafranc 0.000109616083952 USD guatemalaquetzal 0.129902852096 USD guyanadollar 0.00477037768196 USD hongkongdollar 0.127440900637 USD honduraslempira 0.0409371915424 USD croatiakuna 0.150134699061 USD haitigourde 0.0109616083952 USD hungariaforint 0.0034294207435 USD indonesiarupiah 6.95865312836e-05 USD israelnewshekel 0.275704154063 USD indiarupee 0.0143233712752 USD iraqdinar 0.000839524131124 USD iranrial 2.38529210867e-05 USD icelandkrona 0.00804248688156 USD jamaicadollar 0.0073510312224 USD jordandinar 1.41233493639 USD japanyen 0.00918008626144 USD kenyaschilling 0.00988207179594 USD kyrgyzstansom 0.0142898470647 USD cambodiariel 0.000245467297002 USD southkoreawon 0.000839675225101 USD kuwaitdinar 3.28846922998 USD kazakhstantenge 0.00261577255379 USD laokip 0.000115070912775 USD lebanonpound 0.000660752285911 USD srilankarupee 0.00568107434152 USD liberiadollar 0.00529897657021 USD lesotholoti 0.0674580497688 USD libyadinar 0.715361836979 USD moroccodirham 0.10286107151 USD moldovaleu 0.0549249984388 USD madagascarariary 0.000273001194867 USD macedoniadenar 0.0181645799782 USD myanmarkyat 0.000652501428646 USD mongoliatugrik 0.000378720972518 USD macaupataca 0.123876565016 USD mauritaniaoldouguiya 1|10 MRU mauritaniaouguiya 0.0270143903579 USD mauritiusrupee 0.0282229704927 USD maldiverufiyaa 0.0647825861084 USD malawikwacha 0.0013512390254 USD mexicopeso 0.0515379189303 USD malaysiaringgit 0.238302191557 USD mozambiquemetical 0.0161047327134 USD namibiadollar 0.0674060990181 USD nigerianaira 0.0032628410721 USD nicaraguacordobaoro 0.0303517893009 USD norwaykrone 0.113999227235 USD nepalrupee 0.00894591926853 USD newzealanddollar 0.651260761699 USD omanrial 2.59826484493 USD panamabalboa 1.00145462102 USD perunuevosol 0.297608988204 USD papuanewguineakina 0.29551750023 USD philippinepeso 0.0191643579797 USD pakistanrupee 0.00662852410795 USD polandzloty 0.259643935488 USD paraguayguarani 0.000158409745144 USD qatarrial 0.273546677749 USD romanianewlei 0.234502601246 USD serbiadinar 0.009461386826 USD russiaruble 0.0153344749757 USD rwandafranc 0.00110213517585 USD saudiarabiariyal 0.266645771679 USD solomonislandsdollar 0.124889604655 USD seychellesrupee 0.0732245830952 USD sudanpound 0.0222089459193 USD swedenkrona 0.104589432619 USD singaporedollar 0.725207344 USD sierraleoneleone 0.000110655098966 USD somaliaschilling 0.00173125876669 USD surinamedollar 0.133980986025 USD southsudanpound 0.00633980986025 USD saotome&principedobra 0.0455348329783 USD elsalvadorcolon 0.114421528391 USD syriapound 0.00194815315081 USD swazilandlilangeni 0.0674320743935 USD thailandbaht 0.0314820697102 USD tajikistansomoni 0.106008233005 USD turkmenistanmanat 0.286192631879 USD tunisiadinar 0.334199179178 USD tongapa'anga 0.439815055328 USD turkeylira 0.169734054462 USD trinidadandtobagodollar 0.147877811834 USD taiwandollar 0.0316263165797 USD tanzaniashilling 0.000435866798275 USD ukrainehryvnia 0.037214106022 USD ugandaschilling 0.000266507351031 USD US$ ! # Base unit, the primitive unit of currency uruguaypeso 0.0284695723084 USD uzbekistansum 0.000117908173048 USD venezuelabolivarsoberano 0.000172888964033 USD vietnamdong 4.27328581423e-05 USD vanuatuvatu 0.00856538001974 USD samoatala 0.378045612759 USD eastcaribbeandollar 0.369915320276 USD yemenrial 0.00401111746065 USD southafricarand 0.0679688184146 USD zambiakwacha 0.075172736246 USD bitcoin 8512.16 US$ # From services.packetizer.com/btc # Precious metals prices from Packetizer (services.packetizer.com/spotprices) silverprice 14.52 US$/troyounce goldprice 1288.30 US$/troyounce platinumprice 797.00 US$/troyounce units-2.19/units_cur0000777000175000017500000004421713347265721014054 0ustar adrianadrian#!/usr/bin/python # # units_cur for units, a program for updated currency exchange rates # # Copyright (C) 2017-2018 # Free Software Foundation, Inc # # 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 3 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 program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA # # # This program was written by Adrian Mariano (adrianm@gnu.org) # # For Python 2 & 3 compatibility from __future__ import absolute_import, division, print_function # # version = '5.0' # Version 5.0: # # Rewrite to support multiple different data sources due to disappearance # of the Yahoo feed. Includes support for base currency selection. # # Version 4.3: 20 July 2018 # # Validate rate data from server # # Version 4.2: 18 April 2018 # # Handle case of empty/malformed entry returned from the server # # Version 4.1: 30 October 2017 # # Fixed to include USD in the list of currency codes. # # Version 4: 2 October 2017 # # Complete rewrite to use Yahoo YQL API due to removal of TimeGenie RSS feed. # Switched to requests library using JSON. One program now runs under # Python 2 or Python 3. Thanks to Ray Hamel for some help with this update. # Normal imports import requests import codecs from argparse import ArgumentParser from collections import OrderedDict from datetime import date from os import linesep from sys import exit, stderr, stdout outfile_name = 'currency.units' # valid metals validmetals = ['silver','gold','platinum'] PRIMITIVE = '! # Base unit, the primitive unit of currency' # This exchange rate table lists the currency ISO 4217 codes, their # long text names, and any fixed definitions. If the definition is # empty then units_cur will query the server for a value. rate_index = 1 currency = OrderedDict([ ('ATS', ['austriaschilling', '1|13.7603 euro']), ('BEF', ['belgiumfranc', '1|40.3399 euro']), ('CYP', ['cypruspound', '1|0.585274 euro']), ('EEK', ['estoniakroon', '1|15.6466 euro # Equal to 1|8 germanymark']), ('FIM', ['finlandmarkka', '1|5.94573 euro']), ('FRF', ['francefranc', '1|6.55957 euro']), ('DEM', ['germanymark', '1|1.95583 euro']), ('GRD', ['greecedrachma', '1|340.75 euro']), ('IEP', ['irelandpunt', '1|0.787564 euro']), ('ITL', ['italylira', '1|1936.27 euro']), ('LVL', ['latvialats', '1|0.702804 euro']), ('LTL', ['lithuanialitas', '1|3.4528 euro']), ('LUF', ['luxembourgfranc', '1|40.3399 euro']), ('MTL', ['maltalira', '1|0.4293 euro']), ('SKK', ['slovakiakornua', '1|30.1260 euro']), ('SIT', ['sloveniatolar', '1|239.640 euro']), ('ESP', ['spainpeseta', '1|166.386 euro']), ('NLG', ['netherlandsguilder','1|2.20371 euro']), ('PTE', ['portugalescudo', '1|200.482 euro']), ('CVE', ['capeverdeescudo', '1|110.265 euro']), ('BGN', ['bulgarialev', '1|1.9558 euro']), ('BAM', ['bosniaconvertiblemark','germanymark']), ('KMF', ['comorosfranc', '1|491.96775 euro']), ('XOF', ['westafricafranc', '1|655.957 euro']), ('XPF', ['cfpfranc', '1|119.33 euro']), ('XAF', ['centralafricacfafranc','1|655.957 euro']), ('AED', ['uaedirham','']), ('AFN', ['afghanafghani','']), ('ALL', ['albanialek','']), ('AMD', ['armeniadram','']), ('ANG', ['antillesguilder','']), ('AOA', ['angolakwanza','']), ('ARS', ['argentinapeso','']), ('AUD', ['australiadollar','']), ('AWG', ['arubaflorin','']), ('AZN', ['azerbaijanmanat','']), ('BAM', ['bosniaconvertiblemark','']), ('BBD', ['barbadosdollar','']), ('BDT', ['bangladeshtaka','']), ('BGN', ['bulgarialev','']), ('BHD', ['bahraindinar','']), ('BIF', ['burundifranc','']), ('BMD', ['bermudadollar','']), ('BND', ['bruneidollar','']), ('BOB', ['boliviaboliviano','']), ('BRL', ['brazilreal','']), ('BSD', ['bahamasdollar','']), ('BTN', ['bhutanngultrum','']), ('BWP', ['botswanapula','']), ('BYN', ['belarusruble','']), ('BYR', ['oldbelarusruble','1|10000 BYN']), ('BZD', ['belizedollar','']), ('CAD', ['canadadollar','']), ('CDF', ['drcfranccongolais','']), ('CHF', ['swissfranc','']), ('CLP', ['chilepeso','']), ('CNY', ['chinayuan','']), ('COP', ['colombiapeso','']), ('CRC', ['costaricacolon','']), ('CUP', ['cubapeso','']), ('CVE', ['capeverdeescudo','']), ('CZK', ['czechkoruna','']), ('DJF', ['djiboutifranc','']), ('DKK', ['denmarkkrona','']), ('DOP', ['dominicanrepublicpeso','']), ('DZD', ['algeriadinar','']), ('EGP', ['egyptpound','']), ('ERN', ['eritreanakfa','']), ('ETB', ['ethiopiabirr','']), ('EUR', ['euro','']), ('FJD', ['fijidollar','']), ('FKP', ['falklandislandspound','']), ('GBP', ['ukpound','']), ('GEL', ['georgialari','']), ('GHS', ['ghanacedi','']), ('GIP', ['gibraltarpound','']), ('GMD', ['gambiadalasi','']), ('GNF', ['guineafranc','']), ('GTQ', ['guatemalaquetzal','']), ('GYD', ['guyanadollar','']), ('HKD', ['hongkongdollar','']), ('HNL', ['honduraslempira','']), ('HRK', ['croatiakuna','']), ('HTG', ['haitigourde','']), ('HUF', ['hungariaforint','']), ('IDR', ['indonesiarupiah','']), ('ILS', ['israelnewshekel','']), ('INR', ['indiarupee','']), ('IQD', ['iraqdinar','']), ('IRR', ['iranrial','']), ('ISK', ['icelandkrona','']), ('JMD', ['jamaicadollar','']), ('JOD', ['jordandinar','']), ('JPY', ['japanyen','']), ('KES', ['kenyaschilling','']), ('KGS', ['kyrgyzstansom','']), ('KHR', ['cambodiariel','']), ('KMF', ['comorosfranc','']), ('KPW', ['northkoreawon','']), ('KRW', ['southkoreawon','']), ('KWD', ['kuwaitdinar','']), ('KYD', ['caymanislandsdollar','']), ('KZT', ['kazakhstantenge','']), ('LAK', ['laokip','']), ('LBP', ['lebanonpound','']), ('LKR', ['srilankarupee','']), ('LRD', ['liberiadollar','']), ('LSL', ['lesotholoti','']), ('LYD', ['libyadinar','']), ('MAD', ['moroccodirham','']), ('MDL', ['moldovaleu','']), ('MGA', ['madagascarariary','']), ('MKD', ['macedoniadenar','']), ('MMK', ['myanmarkyat','']), ('MNT', ['mongoliatugrik','']), ('MOP', ['macaupataca','']), ('MRO', ['mauritaniaoldouguiya','1|10 MRU']), ('MRU', ['mauritaniaouguiya', '']), ('MUR', ['mauritiusrupee','']), ('MVR', ['maldiverufiyaa','']), ('MWK', ['malawikwacha','']), ('MXN', ['mexicopeso','']), ('MYR', ['malaysiaringgit','']), ('MZN', ['mozambiquemetical','']), ('NAD', ['namibiadollar','']), ('NGN', ['nigerianaira','']), ('NIO', ['nicaraguacordobaoro','']), ('NOK', ['norwaykrone','']), ('NPR', ['nepalrupee','']), ('NZD', ['newzealanddollar','']), ('OMR', ['omanrial','']), ('PAB', ['panamabalboa','']), ('PEN', ['perunuevosol','']), ('PGK', ['papuanewguineakina','']), ('PHP', ['philippinepeso','']), ('PKR', ['pakistanrupee','']), ('PLN', ['polandzloty','']), ('PYG', ['paraguayguarani','']), ('QAR', ['qatarrial','']), ('RON', ['romanianewlei','']), ('RSD', ['serbiadinar','']), ('RUB', ['russiaruble','']), ('RWF', ['rwandafranc','']), ('SAR', ['saudiarabiariyal','']), ('SBD', ['solomonislandsdollar','']), ('SCR', ['seychellesrupee','']), ('SDG', ['sudanpound','']), ('SEK', ['swedenkrona','']), ('SGD', ['singaporedollar','']), ('SHP', ['sainthelenapound','']), ('SLL', ['sierraleoneleone','']), ('SOS', ['somaliaschilling','']), ('SRD', ['surinamedollar','']), ('SSP', ['southsudanpound','']), ('STD', ['saotome&principeolddobra','']), ('STN', ['saotome&principedobra','']), ('SVC', ['elsalvadorcolon','']), ('SYP', ['syriapound','']), ('SZL', ['swazilandlilangeni','']), ('THB', ['thailandbaht','']), ('TJS', ['tajikistansomoni','']), ('TMT', ['turkmenistanmanat','']), ('TND', ['tunisiadinar','']), ('TOP', ["tongapa'anga",'']), ('TRY', ['turkeylira','']), ('TTD', ['trinidadandtobagodollar','']), ('TWD', ['taiwandollar','']), ('TZS', ['tanzaniashilling','']), ('UAH', ['ukrainehryvnia','']), ('UGX', ['ugandaschilling','']), ('USD', ['US$', '']), ('UYU', ['uruguaypeso','']), ('UZS', ['uzbekistansum','']), ('VEF', ['venezuelabolivarfuerte','']), ('VES', ['venezuelabolivarsoberano','']), ('VND', ['vietnamdong','']), ('VUV', ['vanuatuvatu','']), ('WST', ['samoatala','']), ('XAF', ['centralafricacfafranc','']), ('XCD', ['eastcaribbeandollar','']), ('XDR', ['specialdrawingrights','']), ('YER', ['yemenrial','']), ('ZAR', ['southafricarand','']), ('ZMW', ['zambiakwacha','']), ('ZWL', ['zimbabwedollar','']), ]) def validfloat(x): try: float(x) return True except ValueError: return False def addrate(verbose,form,code,rate): if code not in currency.keys(): if (verbose): stderr.write('Got unknown currency with code {}\n'.format(code)) else: if not currency[code][rate_index]: if validfloat(rate): currency[code][rate_index] = form.format(rate) else: stderr.write('Got invalid rate "{}" for currency "{}"\n'.format( rate, code)) elif verbose: if currency[code][rate_index] != form.format(rate): stderr.write('Got value "{}" for currency "{}" but ' 'it is already defined as {}\n'.format(rate, code, currency[code][rate_index])) def getjson(address,args=None): try: res = requests.get(address,args) res.raise_for_status() return(res.json()) except requests.exceptions.RequestException as e: stderr.write('Error connecting to currency server:\n{}.\n'.format(e)) exit(1) ######################################################## # # Connect to floatrates for currency update # def floatrates(verbose,base,dummy): webdata = getjson('https://www.floatrates.com/daily/'+base+'.json') for index in webdata: entry = webdata[index] if 'rate' not in entry or 'code' not in entry: # Skip empty/bad entries if verbose: stderr.write('Got bad entry from server: '+str(entry)+'\n') else: addrate(verbose,'{} '+base,entry['code'],entry['inverseRate']) currency[base][rate_index] = PRIMITIVE return('FloatRates ('+base+' base)') ######################################################## # # Connect to European central bank site # def eubankrates(verbose,base,dummy): if verbose and base!='EUR': stderr.write('European bank uses euro for base currency. Specified base {} ignored.\n'.format(base)) import xml.etree.ElementTree as ET try: res=requests.get('https://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml') res.raise_for_status() data = ET.fromstring(res.content)[2][0] except requests.exceptions.RequestException as e: stderr.write('Error connecting to currency server:\n{}.\n'. format(e)) exit(1) for entry in data.iter(): if entry.get('time'): continue rate = entry.get('rate') code = entry.get('currency') if not rate or not code: # Skip empty/bad entries if verbose: stderr.write('Got bad entry from server, code {} and rate {}\n'.format(code,rate)) else: addrate(verbose,'1|{} euro', code, rate) currency['EUR'][rate_index]=PRIMITIVE return('the European Central Bank (euro base)') ######################################################## # # Connect to fixer.io (requires API key) # # Free API key does not allow changing base currency # With free key only euro base is supported, and https is not allowed # def fixer(verbose,base,key): if not key: stderr.write('API key required for this source\n') exit(1) if verbose and base!='EUR': stderr.write('Fixer uses euro for base currency. Specified base {} ignored.\n'.format(base)) webdata = getjson('http://data.fixer.io/api/latest', {'access_key':key}) if not webdata['success']: stderr.write('Currency server error: '+webdata['error']['info']) exit(1) for code in webdata['rates']: addrate(verbose,'1|{} euro', code, webdata['rates'][code]) currency['EUR'][rate_index] = PRIMITIVE return('Fixer (euro base)') ######################################################## # # Connect to openexchangerates (requires API key) # # Free API key does not allow changing the base currency # def openexchangerates(verbose,base,key): if not key: stderr.write('API key required for this source\n') exit(1) if verbose and base!='USD': stderr.write('Open Exchange Rates uses US dollar for base currency. Specified base {} ignored.\n'.format(base)) webdata = getjson('https://openexchangerates.org/api/latest.json', {'app_id':key} ) for code in webdata['rates']: addrate(verbose,'1|{} US$', code, webdata['rates'][code]) currency['USD'][rate_index] = PRIMITIVE return('open exchange rates (USD base)') ####################################################### # # list of valid source names and corresponding functions # sources = { 'floatrates': floatrates, 'eubank' : eubankrates, 'fixer' : fixer, 'openexchangerates': openexchangerates, } ####################################################### # # Argument Processing # ap = ArgumentParser( description="Update currency information for 'units' " "into the specified filename or if no filename is " "given, the default: '{}'. The special filename '-' " "will send the currency data to stdout.".format(outfile_name), ) ap.add_argument( 'output_file', default=outfile_name, help='the file to update', metavar='filename', nargs='?', type=str, ) ap.add_argument('-V','--version', action='version', version='%(prog)s version ' + version, help='display units_cur version', ) ap.add_argument('-v','--verbose', action='store_true', help='display details when fetching currency data', ) ap.add_argument('-s','--source',choices=list(sources.keys()), default='floatrates', help='set currency data source', ) ap.add_argument('-b','--base',default='USD', help='set the base currency (when allowed by source). BASE should be a 3 letter ISO currency code, e.g. USD. The specified currency will be the primitive currency unit used by units. Only the floatrates source supports this option.', ) ap.add_argument('-k','--key',default='', help='set API key for sources that require it' ) args = ap.parse_args() outfile_name = args.output_file verbose = args.verbose source = args.source base = args.base apikey = args.key if base not in currency.keys(): stderr.write('Base currency {} is not a known currency code.\n'.format(base)) exit(1) ######################################################## # # Fetch currency data from specified curerncy source # sourcename = sources[source](verbose,base,apikey) # Delete currencies where we have no rate data for code in list(currency.keys()): if not currency[code][rate_index]: if verbose: stderr.write('No data for {}\n'.format(code)) del currency[code] cnames = [currency[code][0] for code in currency.keys()] crates = [currency[code][1] for code in currency.keys()] codestr = '\n'.join('{:23}{}'. format(code, name) for (code,name) in zip(currency.keys(), cnames)) maxlen = max(len(name) for name in cnames) + 2 ratestr = '\n'.join( '{:{}}{}'.format(name, maxlen, rate) for (name, rate) in zip(cnames, crates) ) ####################################################### # # Get precious metals data and bitcoin # metals = getjson('https://services.packetizer.com/spotprices',{'f':'json'}) bitcoin = getjson('https://services.packetizer.com/btc',{'f':'json'}) metallist = ['']*len(validmetals) for metal, price in metals.items(): if metal in validmetals: metalindex = validmetals.index(metal) if validfloat(price): if not metallist[metalindex]: metallist[validmetals.index(metal)] = '{:19}{} US$/troyounce'.format( metal + 'price', price) elif verbose: stderr.write('Got value "{}" for metal "{}" but ' 'it is already defined\n'.format(price,metal)) else: stderr.write('Got invalid rate "{}" for metal "{}"\n'.format(price,metal)) elif metal != 'date' and verbose: # Don't print a message for the "date" entry stderr.write('Got unknown metal "{}" with value "{}"\n'.format(metal,price)) metalstr = '\n'.join(metallist) if validfloat(bitcoin['usd']): bitcoinstr = '{:{}}{} US$ # From services.packetizer.com/btc\n'.format( 'bitcoin',maxlen,bitcoin['usd']) else: stderr.write('Got invalid bitcoin rate "{}"\n', bitcoint['usd']) bitcointstr='' ####################################################### # # Format output and write the currency file # datestr = date.today().isoformat() outstr = ( """# ISO Currency Codes {codestr} # Currency exchange rates source !message Currency exchange rates from {sourcename} on {datestr} {ratestr} {bitcoinstr} # Precious metals prices from Packetizer (services.packetizer.com/spotprices) {metalstr} """.format(codestr=codestr, datestr=datestr, ratestr=ratestr, metalstr=metalstr, bitcoinstr=bitcoinstr, sourcename=sourcename) ).replace('\n', linesep) try: if outfile_name == '-': codecs.StreamReader(stdout, codecs.getreader('utf8')).write(outstr) else: with codecs.open(outfile_name, 'w', 'utf8') as of: of.write(outstr) except IOError as e: stderr.write('Unable to write to output file:\n{}\n'.format(e)) exit(1) units-2.19/unitsfile.ico0000664000175000017500000005372612314123647014605 0ustar adrianadrian00¨f ¨h¶00 ¨%  ¨ÆB hnS(0`çççæææåååäääèèèãããÛÛÛàààÙÙÙÝÝÝÖÖÖÆÆÆÅÅÅÄÄÄÃÃÃÇÇÇÈÈÈÞÞÞÔÔÔÕÕÕûûûÏÏÏÂÂÂÿÿÿÉÉÉ¿¿¿ªªªÑÑÑÔÉȽ½½¦¦¦ÐÐо¾¾¥¥¥ÎÎÎÀÀÀâââÊÊÊÁÁÁ©©©ÌÌÌ®®®¢¢¢¨¨¨¶¶¶ÒÒÒ÷÷÷ËËË¡¡¡‚‚‚yyyzzz¹¹¹øøø¯¯¯   “““ŒŒŒ‰‰‰™™™°°°óóó×××ÚÚÚÍÍÍ´´´«««£££µµµÜÜÜááẺº¼¼¼ßßßÓÓÓëëëêêêÌ‹sÌŠr̉qˈpˈoˇnʆnʆmÊ…lÊ„kÉ„jɃjÉ‚iÈ‚hÈgÈ€fÇeÇ~dÇ~cÆ}bÆ|bÆ|aÆ{`Åz_Åz^Åy^Äx]Äx\Äw[ÄvZÃvZÃuYÃtXÂtWÂsVÂrVÂrUÁqTÁpSÁpRÀoQÀnQÀnP¿mO¿lN¿lM¿kM¾jL¾jK¾iJ½hI½gH½fG¼fF»dD»cC»bB»bAºaA¼dEº`?¹_>¹^=º`@¸\;¹]<·Z9·Z8ùùùúúú¶X5¶W5µV3µU2µT1¸\:¸[9·Y7·X6¶V4ýýýþþþüüüŸ     ŸŸŸŸŸŸ ¡      ”””   “   “““Ÿ›‘’œœ•–žž—˜™™™™™™˜˜—ž–••œ’‘‘›šŒ‹𛑑’œ••–ž—˜˜™™™™™™˜—žž–•œ’’‘›š‹Œšš›‘’œœ•–žž—˜™™™™™™˜——ž–•œ’‘›‡ˆ‰Ž‹‹Œš›‘‘’œ•––ž—˜™™™™™™™˜—ž––•Š……†‡ˆ‰‰Ž‹Œš››‘’œ•–ž——˜™™™™™™˜——‚ƒ„‡ˆ‰ŒŒ‘’’––™™™€€Š…†ˆ‰ŽŒ’—˜|}€‚ƒ„Š…†ˆ‰ŒŒ‘’’•–”xy|}}€ƒ„„…†ˆ‰‹Œ‘’““”uvxyz|}~€ƒ„Š…ˆˆ‰Žqruuvyyz}}~ƒ„Š…†‹Œnoqrsuvwyz{}~€‚ƒ„…†‡ˆˆ‰jkmnoqrsuvyz}}ƒ„…†ggjkknoovwy~‚ƒ„cdfghjklmnqrsuz{€_`abccdefgghijkklmnoopqrsuvwwxyz{{|}~]^^^_`aabcdeefghiijklnoqrstuuvwxyzzYZ[\\]^^__`abccdefgghkklnoopqrsttuvwVVWXYZZ[\]^^^_`aabcdeefghiijklmnnopqrrsRSTTUVWXXYZ[\\]^^__`abccdefghhijkllmnopOPPQRRSTUVVWXYZZ[\]^^^_`abbcdeffghijjkl%MNHH%K @LL GHA&!IJ @AB$CDE9E(FG.'89:;<2=>? 0-12345367) *+,-./&'()$%# !"#     ÿÿÿÿÿÿÿÿÿÿÿÿÿðÿðÿðÿðÿðÿðÿðÿðàààààààààààààààààààààÿðÿðÿðÿðÿðÿðÿðÿðÿðÿð?ÿðÿðÿÿðÿÿðÿÿðÿÿðÿÿðÿ( @çççæææåååäääèèèáááüüüÖÖÖâââÔÉÈÇÇÇÿÿÿÛÛÛÈÈÈØØØÍÍͪªª•••ºººòòòÚÚÚ´´´›››………éééßßßÒÒÒÉÉÉÂÂÂîîîïïïðððíííÊ„kɃjÉ‚iÈ€gÈ€fÇ~eÇ}cÆ|bÆ{aÅz_Åx^Äw\Äv[ÃuZÃtXÃsWÂrVÁpTÁoRÁnRÀmP¿lN¿kN¿jL¾hJ½gI½fH½eFÉhÇ~dÇ|bÅy^Åx]ÃtYèËÁ߸ªË…m¾iK¼dF¼cDÈfÆz`ÄvZÂqUÁpSôéåéÐÇÀlOâ¾²ëÓ˽fG»bC»aBÞÞÞÏ{ÇfÀnQ¿jMñâÜëÒÊ¿kỎq»`Aº_?×£‘Ñ”éÍÄöïìäÁµ÷ðííØÑûúùÏ‘{ôèäéÎÅá¼°ìÖÏÊ„løòðè̺^>¹]=õõõ֢В}èÍÃãÀ´äÁ¶Ö¡ŽüûûåźéÎÄÎzöîìóçâÔ›ˆã¶öîëʆnß¶¨óçã¸[:㿳ÃsX÷ïìñáÛêÑÈÞ¶¨îÜÕØ§–¿mO¸Z:·Y8öööÕŸÏzçËÂ⿲ûùøèÍÄðàÛêÐǽgHçÉ¿úöõ·W6÷÷÷Õž‹Ò˜…â¾±ú÷÷¼dEðàÚÒ—„»bBÓ›ˆÔœ‰¶U3àààøøøÍ‹tðÞØãÁµá½°ú÷öèÌÃçËÁìÕÎõìéÕŸŒûûúÞ´¥äĹʅlùùù寻ì×ÏÙ©˜Ø¥”ݱ¢º`@åĹܯ ¹\<º`?æÇ¼ùôóÛ¬œ¶V4¶V5úúú¹^>¹\;·X7·X6ûûû¸Z9ýýýÊÊÊËËËÕÕÕþþþìììÕÕÕÕÙÙÙÙÙ ÕÕÕÕÙÙÙ        Ú ÖÖÖÖÖÖÖÖÖ×Ö×××רÙ;I<>?JKªbÄtuljÔÑÒÍ­­­Ì¡Ò”“ÐÇ Õ9:;<=>?§WªbctuГÔѡͭ­­Ì¡ÑÔ“\89]I<=VJ§WXbcÏÇГ”ѡ̭­­ÍÒÑ®ÓP6¿ÀÁµ<ÂUJK¿ÃÄÅÆÇ¬pÈÉÊËÌÍ®Î4°±²k…;³´>?ˆµª‚¶t·¸¹³º»¼½­®¾2£¤6j…9¥¦<=ˆy§ˆsb¨ŽuA©ª«¬­®¯N–—O˜…\™š]Im›VˆyWœcžŸ 4¡¢D|l3sPŠ‹:Œn<ˆyJŽX‘’“”•-wx1yg4z{|}~;m€‚ƒ„…†‡ˆ7‰v+de/fg2hijkl9mnopqrstuvA*+MC./N124Z[6\89]^_=V`aAXbcY(LAB+MCD/NE34OPQRSTUI<>VJKWXY&@()AB,-CD01E34FG78H:;I<>?JK$%&'()*+,-./0123456789:;<=>? !!"#              ÿÿÿÿÿÿÿÿÿàÿàÿàÿàÿàÿàÿàÿàÿàÿàÿàÿàÿàÿàÿà?ÿà( ÉÉÉää䟟Ÿûûû¹¹¹öööèèèÔÉÈÀÀÀºººÅÅÅÔÔÔµµµ£££¿¿¿íííéééåååçççɃiÈ€fÇ~dÆ|aÅz_Åx]ÄvZÃtXÁpSÀnP¿lN¾jK¾hIÂrU½fG¼cDº_?¸[:·Y8úúú»aA¹]=·X6·Y7¸[9¹]<º_>øøøþþþÿÿÿüüüýýýÞÞÞ¤¤¤¥¥¥4566722311111'011/ "#($)%&*+,-. #$% #$%&' #$% ! "#   ààààààààð(0` &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& VsssssssssssssssssssssssssssssssV&ýýýÿþþþÿþþþÿþþþÿþþþÿþþþÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ&&ýýýÿýýýÿýýýÿýýýÿýýýÿýýýÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ&&üüüÿÔÉÈÿÔÉÈÿÔÉÈÿÔÉÈÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿÔÉÈÿÔÉÈÿûûûÿÔÉÈÿÔÉÈÿÔÉÈÿÔÉÈÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ&&ûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿþþþÿþþþÿþþþÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ&&ûûûÿÔÉÈÿÔÉÈÿÔÉÈÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿÔÉÈÿÔÉÈÿÔÉÈÿÔÉÈÿûûûÿÔÉÈÿÔÉÈÿûûûÿûûûÿûûûÿþþþÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ&&úúúÿúúúÿúúúÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿþþþÿþþþÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ&&ùùùÿÔÉÈÿÔÉÈÿÔÉÈÿÔÉÈÿÔÉÈÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿÔÉÈÿÔÉÈÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿþþþÿþþþÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ&&ùùùÿùùùÿùùùÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿýýýÿûûûÿûûûÿûûûÿûûûÿÿÿÿÿ&¸[9ÿ·Z9ÿ·Z8ÿ·Y7ÿ·Y7ÿ·X6ÿ¶X5ÿ¶W5ÿ¶V4ÿ¶V4ÿµV3ÿµU2ÿµT1ÿµT1ÿµT1ÿµT1ÿµT1ÿµT1ÿµU2ÿµU2ÿµV3ÿ¶V4ÿ¶W5ÿ¶X5ÿ¶X5ÿ·X6ÿ·Y7ÿ·Z8ÿ·Z9ÿ·Z9ÿ¸[9ÿ¸\:ÿ¸\;ÿ¹]<ÿ¹^=ÿ¹^=ÿ¹^=ÿ¹_>ÿº`?ÿûûûÿûûûÿûûûÿ&¹]<ÿ¹]<ÿ¸\;ÿ¸\:ÿ¸[9ÿ·Z9ÿ·Z9ÿ·Z8ÿ·Y7ÿ·X6ÿ¶X5ÿ¶X5ÿ¶W5ÿ¶V4ÿµV3ÿµU2ÿµU2ÿµT1ÿµT1ÿµT1ÿµT1ÿµT1ÿµT1ÿµU2ÿµV3ÿ¶V4ÿ¶V4ÿ¶W5ÿ¶X5ÿ·X6ÿ·Y7ÿ·Z8ÿ·Z8ÿ·Z9ÿ¸[9ÿ¸\:ÿ¸\;ÿ¸\;ÿ¹]<ÿûûûÿûûûÿûûûÿ&º`?ÿ¹_>ÿ¹^=ÿ¹^=ÿ¹^=ÿ¹]<ÿ¸\;ÿ¸\:ÿ¸\:ÿ¸[9ÿ·Z9ÿ·Z8ÿ·Y7ÿ·Y7ÿ·X6ÿ¶X5ÿ¶W5ÿ¶V4ÿ¶V4ÿµV3ÿµU2ÿµT1ÿµT1ÿµT1ÿµT1ÿµT1ÿµT1ÿµU2ÿµV3ÿµV3ÿ¶V4ÿ¶W5ÿ¶X5ÿ·X6ÿ·X6ÿ·Y7ÿ·Z8ÿ·Z9ÿ¸[9ÿûûûÿûûûÿûûûÿ&»bBÿ»bAÿºaAÿº`@ÿº`?ÿº`?ÿ¹_>ÿ¹^=ÿ¹^=ÿ¹]<ÿ¹]<ÿ¸\;ÿ¸\:ÿ¸[9ÿ·Z9ÿ·Z9ÿ·Z8ÿ·Y7ÿ·X6ÿ¶X5ÿ¶W5ÿ¶W5ÿ¶V4ÿµV3ÿµU2ÿµT1ÿµT1ÿµT1ÿµT1ÿµT1ÿµT1ÿµT1ÿµU2ÿµV3ÿ¶V4ÿ¶W5ÿ¶W5ÿ¶X5ÿ·X6ÿûûûÿûûûÿûûûÿ& ¼dEÿ»dDÿ»dDÿ½hIÿˇoÿÃtWÿºaAÿºaAÿº`@ÿº`?ÿ¹_>ÿ¹^=ÿ¹^=ÿ¹^=ÿ¹]<ÿ¸\;ÿ¸\:ÿ¸[9ÿ¸[9ÿ·Z9ÿ·Z8ÿ·Y7ÿ·X6ÿ·X6ÿ¶X5ÿ¶W5ÿ½gHÿÆ~cÿ¼gGÿµU2ÿµT1ÿµT1ÿÃuYÿÆ|bÿ½fGÿµT1ÿµU2ÿµV3ÿµV3ÿûûûÿûûûÿûûûÿ& ½gHÿ½fGÿÆ~dÿöïíÿûûûÿûûûÿÞ·¨ÿçÌÂÿûûûÿÒ˜„ÿ»bAÿÚ­ÿûûûÿçËÀÿ¹_>ÿ¹_>ÿÎxÿûûûÿòåáÿ¸\;ÿ¼gHÿûûûÿûûûÿÁrVÿ·Z8ÿÆ~cÿù÷öÿûûûÿûûûÿ¸\;ÿÅz`ÿòåáÿûûûÿûûûÿûûûÿæÉ¿ÿ¸[9ÿµT1ÿµT1ÿûûûÿûûûÿûûûÿ& ¾iJÿ¾iJÿêÓÊÿûûûÿúùøÿìÖÎÿúùøÿøóòÿûûûÿÒš†ÿ»dDÿÛ®žÿûûûÿçËÁÿ»bAÿºaAÿÎzÿûûûÿòæáÿ¹_>ÿ½hJÿûûûÿûûûÿÃtXÿ¸\;ÿἯÿûûûÿöïìÿîÝ×ÿ»cCÿöîìÿûûûÿõìéÿêÒÊÿùõôÿûûûÿß¹«ÿµV3ÿµU2ÿûûûÿûûûÿûûûÿ& ¿lMÿ¿kMÿ÷óñÿûûûÿÖ¤‘ÿ¾iJÿÍvÿûûûÿûûûÿÓœˆÿ½fGÿÛ¯ŸÿûûûÿçÌÂÿ¼dEÿ»dDÿÏ“}ÿûûûÿòæâÿ»bAÿ¾kMÿûûûÿûûûÿÃvZÿ¹_>ÿæÊÀÿûûûÿÚ­œÿ¸\;ÿЖÿûûûÿõíêÿºbBÿ·Z8ÿËŠsÿûûûÿöïìÿ¶X5ÿ¶W5ÿûûûÿûûûÿúúúÿ& ÀnQÿÀnPÿûúúÿûûûÿˈoÿ¿kMÿ¿kMÿöðîÿûûûÿÔ‰ÿ½hIÿܰ¡ÿûûûÿèÍÃÿ½fGÿ¼fFÿЕÿûûûÿòæâÿ»dDÿ¿mOÿûûûÿûûûÿÅy]ÿºaAÿçËÁÿûûûÿا–ÿ¹_>ÿ¹^=ÿº`?ÿÄy^ÿ¼cCÿÌ‹tÿæÉ¿ÿûûûÿ÷òðÿ·Z9ÿ·Z8ÿùùùÿùùùÿúúúÿ& ÁpSÿÁpRÿûûûÿûûûÿˇpÿÀnPÿ¿mOÿóçãÿûûûÿÔŸ‹ÿ¿kMÿܱ¢ÿûûûÿèÎÄÿ¾iJÿ½hIÿЖÿûûûÿóçãÿ½fGÿÀpRÿûûûÿûûûÿÅz`ÿ»dDÿçÌÂÿûûûÿÙ©—ÿ»bAÿºaAÿÁrUÿä÷ÿúùøÿûûûÿûûûÿûûûÿäøÿ¸\;ÿ¸\;ÿûûûÿûûûÿûûûÿ& ÂsVÿÂrVÿûûûÿûûûÿˉqÿÁpSÿÁpRÿóèäÿûûûÿÕ ÿÀnPÿݳ¤ÿûûûÿéÑÇÿ¿kMÿ¿kMÿÑ—ƒÿûûûÿóçãÿ½hIÿÁrUÿûûûÿûûûÿÆ|bÿ¼fFÿçÌÂÿûûûÿÙª™ÿ»dDÿ»cCÿñãÞÿûûûÿûûûÿûûûÿùöôÿà»®ÿ½gHÿ¹_>ÿ¹^=ÿûûûÿûûûÿûûûÿ& ÃuYÿÃtXÿûûûÿûûûÿÌ‹tÿÂrVÿÂrUÿóèäÿûûûÿÖ¡ÿÁpRÿÝ´¥ÿûûûÿïßÚÿÀnPÿ¿mOÿÖ£ÿûûûÿóçãÿ¿kMÿÂtXÿûûûÿûûûÿÇdÿ½hIÿèÍÃÿûûûÿÚ«›ÿ½fGÿÇ€eÿûûûÿúùøÿ⿲ÿÍŽwÿÂrVÿ¾iKÿ»bAÿ»bAÿºaAÿûûûÿûûûÿûûûÿ& Äx\ÿÄw[ÿûûûÿûûûÿÍŽwÿÃuYÿÃtXÿóéåÿûûûÿÖ£‘ÿÂrVÿÞµ§ÿûûûÿûûûÿÖ¡ÿÂsVÿêÒÉÿûûûÿîÜÕÿÀnPÿÃvZÿûûûÿûûûÿÈ€gÿɃjÿíÙÒÿûûûÿãÁ´ÿˉqÿÈhÿûûûÿôêæÿÀnQÿ¾kLÿçÌÂÿûûûÿܱ¢ÿ»dDÿ»cCÿûûûÿûûûÿûûûÿ& Åz^ÿÅz^ÿûûûÿûûûÿÎyÿÄw[ÿÄw[ÿóéåÿûûûÿ×¥“ÿÃtXÿß¶¨ÿûûûÿòæâÿûûûÿûûûÿûûûÿûûûÿß¹«ÿÁpRÿÄx\ÿûûûÿûûûÿɃiÿèÏÅÿûûûÿûûûÿûûûÿ÷òðÿ¿lNÿòåáÿûûûÿûûûÿûûûÿûûûÿûûûÿˉqÿ½fGÿ¼fFÿûûûÿûûûÿûûûÿ& Æ|bÿÆ|aÿîÛÔÿîÛÔÿÌ‹tÿÅz^ÿÅy^ÿèÍÃÿíÚÔÿÓ›†ÿÄw[ÿا•ÿíÚÓÿا•ÿÛ¯Ÿÿ÷ðîÿûûûÿåǼÿÄw[ÿÂrVÿÅx]ÿíÙÑÿíØÑÿÇeÿ߸©ÿöðîÿûûûÿóèäÿéÑÈÿ¿mOÿÇeÿèÍÃÿûûûÿûûûÿòåàÿÓ‰ÿ¾iJÿ½hIÿ½hIÿûûûÿûûûÿûûûÿ& ÇeÿÇ~dÿÇ~cÿÆ}bÿÆ|bÿÆ|bÿÆ|aÿÆ{`ÿÅz_ÿÅz^ÿÅz^ÿÅy^ÿÄx]ÿÄx\ÿÄw[ÿÄw[ÿÄvZÿÃvZÿÃuYÿÃtXÿÃtXÿÂtWÿÂsVÿÂrVÿÂrUÿéÐÇÿûûûÿܰ ÿÁpRÿÀoQÿÀoQÿÀnQÿÀnPÿ¿mOÿ¿lNÿ¿lNÿ¿lMÿ¿kMÿ¾jLÿûûûÿûûûÿûûûÿ& ÈgÿÈ€fÿÈ€fÿÈ€fÿÇeÿÇ~dÿÇ~cÿÇ~cÿÆ}bÿÆ|bÿÆ|aÿÆ{`ÿÆ{`ÿÅz_ÿÅz^ÿÅy^ÿÄx]ÿÄx]ÿÄx\ÿÄw[ÿÈeÿûûûÿûûûÿˉqÿÃtXÿæÉ¿ÿûûûÿܲ¢ÿÂrVÿÂrUÿÁqTÿÁpSÿÁpSÿÁpRÿÀoQÿÀnQÿÀnPÿ¿mOÿ¿mOÿûûûÿûûûÿûûûÿ& É„jÿɃjÿÉ‚iÿÈ‚hÿÈ‚hÿÈgÿÈ€fÿÈ€fÿÇeÿÇeÿÇ~dÿÇ~cÿÆ}bÿÆ|bÿÆ|bÿÆ|aÿÆ{`ÿÅz_ÿÅz^ÿÅz^ÿÉ‚hÿûûûÿûûûÿÌ‹sÿÄw[ÿÆz_ÿã¶ÿݳ¤ÿÃtXÿÃtXÿÂtWÿÂsVÿÂrVÿÂrUÿÁqTÿÁqTÿÁpSÿÁpRÿÀoQÿûûûÿûûûÿûûûÿ& ʆmÿʆmÿÊ…lÿÊ„kÿÉ„jÿɃjÿɃjÿÉ‚iÿÈ‚hÿÈgÿÈ€fÿÈ€fÿÈ€fÿÇeÿÇ~dÿÇ~cÿÇ~cÿÆ}bÿÆ|bÿÆ|aÿÈeÿຬÿ๬ÿɃiÿÅy^ÿÄx]ÿÄx]ÿÆ}bÿÄw[ÿÄvZÿÃvZÿÃuYÿÃuYÿÃtXÿÂtWÿÂsVÿÂrVÿÂrVÿÂrUÿûûûÿûûûÿûûûÿ& ˈpÿˈoÿˇnÿˇnÿʆnÿʆmÿÊ…lÿÊ„kÿÊ„kÿÉ„jÿɃjÿÉ‚iÿÈ‚hÿÈ‚hÿÈgÿÈ€fÿÈ€fÿÇeÿÇeÿÇ~dÿÇ~cÿÆ}bÿÆ|bÿÆ|bÿÆ|aÿÆ{`ÿÅz_ÿÅz^ÿÅy^ÿÅy^ÿÄx]ÿÄx\ÿÄw[ÿÄvZÿÄvZÿÃvZÿÃuYÿÃtXÿÂtWÿûûûÿûûûÿûûûÿ&Ì‹sÿÌŠrÿÌŠrÿ̉qÿˈpÿˈpÿˈoÿˇnÿʆnÿʆmÿʆmÿÊ…lÿÊ„kÿÉ„jÿɃjÿɃjÿÉ‚iÿÈ‚hÿÈgÿÈ€fÿÈ€fÿÈ€fÿÇeÿÇ~dÿÇ~cÿÆ}bÿÆ}bÿÆ|bÿÆ|aÿÆ{`ÿÅz_ÿÅz_ÿÅz^ÿÅy^ÿÄx]ÿÄx\ÿÄx\ÿÄw[ÿÄvZÿûûûÿûûûÿûûûÿ&&ûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿ&&ûûûÿÔÉÈÿÔÉÈÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿÔÉÈÿÔÉÈÿÔÉÈÿÔÉÈÿûûûÿûûûÿûûûÿûûûÿûûûÿâââÿëëëÿêêêÿèèèÿçççÿäääÿãããÿáááÿáááÿâââÿãããÿçççÿ&&ûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿÞÞÞÿçççÿäääÿßßßÿÙÙÙÿ×××ÿÓÓÓÿÑÑÑÿÑÑÑÿÓÓÓÿÖÖÖÿÜÜÜÿ#&ûûûÿÔÉÈÿÔÉÈÿÔÉÈÿÔÉÈÿÔÉÈÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿÔÉÈÿÔÉÈÿÔÉÈÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿÛÛÛÿáááÿÚÚÚÿÑÑÑÿÊÊÊÿÃÃÃÿ¾¾¾ÿºººÿ¼¼¼ÿ¿¿¿ÿÆÆÆÿÑÑÑÿ&ûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿ×××ÿÚÚÚÿÍÍÍÿÀÀÀÿ´´´ÿ«««ÿ£££ÿ   ÿ£££ÿ©©©ÿµµµÿÜÜÜÑ&ûûûÿÔÉÈÿÔÉÈÿÔÉÈÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿÔÉÈÿÔÉÈÿÔÉÈÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿÒÒÒÿÑÑÑÿÁÁÁÿ¯¯¯ÿ   ÿ“““ÿŒŒŒÿ‰‰‰ÿÿ™™™ÿ°°°ôóóó&ûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿÐÐÐÿËËËÿ¶¶¶ÿ¡¡¡ÿÿ‚‚‚ÿyyyÿzzzÿ‚‚‚ÿ¹¹¹ÿøøøãËËË2&ûûûÿÔÉÈÿÔÉÈÿÔÉÈÿÔÉÈÿÔÉÈÿÔÉÈÿûûûÿûûûÿûûûÿûûûÿûûûÿÔÉÈÿÔÉÈÿÔÉÈÿÔÉÈÿÔÉÈÿÔÉÈÿÔÉÈÿûûûÿûûûÿÌÌÌÿÅÅÅÿ®®®ÿªªªÿ¢¢¢ÿ¨¨¨ÿ¶¶¶ÿÒÒÒÿ÷÷÷ÿÿÿÿÿÊÊÊT&ûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿÊÊÊÿÁÁÁÿ©©©ÿãããÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÌÌÌ„&ûûûÿÔÉÈÿÔÉÈÿÔÉÈÿÔÉÈÿÔÉÈÿÔÉÈÿÔÉÈÿûûûÿûûûÿûûûÿûûûÿÔÉÈÿÔÉÈÿÔÉÈÿÔÉÈÿÔÉÈÿÔÉÈÿÔÉÈÿÔÉÈÿûûûÿÈÈÈÿÀÀÀÿ¦¦¦ÿâââÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎÎΫ&ûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿÆÆÆÿ¾¾¾ÿ¥¥¥ÿãããÿÿÿÿÿÿÿÿÿÿÿÿÿÎÎÎÅ&ûûûÿÔÉÈÿÔÉÈÿÔÉÈÿÔÉÈÿÔÉÈÿÔÉÈÿûûûÿûûûÿûûûÿûûûÿûûûÿÔÉÈÿÔÉÈÿÔÉÈÿÔÉÈÿÔÉÈÿÔÉÈÿÔÉÈÿÔÉÈÿûûûÿÆÆÆÿ½½½ÿ¦¦¦ÿãããÿÿÿÿÿÿÿÿÿÐÐÐÝ&ûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿÉÉÉÿ¿¿¿ÿªªªÿÿÿÿÿÿÿÿÿÑÑÑïzzz&ûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿÏÏÏÿÂÂÂÿÈÈÈÿÿÿÿÿÔÔÔ÷3&ÆÆÆÿÅÅÅÿÅÅÅÿÄÄÄÿÄÄÄÿÃÃÃÿÃÃÃÿÃÃÃÿÃÃÃÿÃÃÃÿÄÄÄÿÄÄÄÿÅÅÅÿÅÅÅÿÆÆÆÿÆÆÆÿÇÇÇÿÇÇÇÿÈÈÈÿÄÄÄÿÞÞÞÿÔÔÔÿÈÈÈÿæææÿÕÕÕø3æææÿæææÿåååÿåååÿäääÿäääÿäääÿäääÿäääÿäääÿäääÿäääÿåååÿåååÿæææÿæææÿçççÿçççÿèèèÿäääÿàààÿÙÙÙÿÝÝÝÿÖÖÖô“““2 çççÿæææÿæææÿåååÿåååÿåååÿäääÿäääÿäääÿäääÿåååÿåååÿåååÿæææÿæææÿæææÿçççÿçççÿèèèÿæææÿãããÿçççÿÛÛÛ׈ˆˆÿàÿàÿàÿàÿàÿàÿàÿàÿàÿàààÀàÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÿàÿàÿàÿàÿàÿàÿàÿàÿàÿàÿà?ÿàÿàÿÿàÿÿàÿÿàÿÿàÿ( @ &&&&&&&&&&&&&&&&&& VssssssssssssssssssV3ýýýÿýýýÿýýýÿýýýÿþþþÿþþþÿþþþÿþþþÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ&3üüüÿüüüÿüüüÿüüüÿüüüÿýýýÿýýýÿýýýÿýýýÿþþþÿþþþÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ&3üüüÿÔÉÈÿÔÉÈÿüüüÿüüüÿüüüÿÔÉÈÿÔÉÈÿÔÉÈÿÔÉÈÿüüüÿÔÉÈÿÔÉÈÿÔÉÈÿÔÉÈÿüüüÿüüüÿüüüÿüüüÿÿÿÿÿ&3üüüÿüüüÿüüüÿüüüÿüüüÿüüüÿüüüÿüüüÿüüüÿüüüÿüüüÿüüüÿüüüÿüüüÿüüüÿüüüÿüüüÿüüüÿüüüÿÿÿÿÿ&        3áááÿáááÿáááÿáááÿáááÿáááÿáááÿáááÿáááÿáááÿâââÿáááÿâââÿâââÿâââÿâââÿçççÿìììÿüüüÿÿÿÿÿ&&&&&&3ÊÊÊÿÊÊÊÿÉÉÉÿÊÊÊÿÊÊÊÿÊÊÊÿÊÊÊÿÊÊÊÿÊÊÊÿÊÊÊÿËËËÿÊÊÊÿËËËÿËËËÿËËËÿËËËÿÕÕÕÿæææÿüüüÿþþþÿ&¿jLÿ¾iKÿ¾hJÿ½fHÿ½eFÿ¼dFÿ¼cDÿ»bBÿ»`Aÿº`@ÿº^>ÿ¹]=ÿ¹\<ÿ¸[:ÿ¸Z9ÿ·X7ÿ·X6ÿ¶V5ÿ¶U3ÿ¶U3ÿ¶U3ÿ¶V4ÿ·W6ÿ·X6ÿ·Y8ÿ¸Z:ÿ¹\;ÿ¹\<ÿâââÿüüüÿýýýÿ&¿lNÿ¿kNÿ¿jLÿ¾hJÿ½gIÿ½fHÿ½eFÿ¼dEÿ»bCÿ»bBÿ»`Aÿº_?ÿº^>ÿ¹]=ÿ¹\;ÿ¸Z:ÿ¸Z9ÿ·X7ÿ·W6ÿ¶V5ÿ¶U3ÿ¶U3ÿ¶U3ÿ¶V4ÿ·W6ÿ·X7ÿ¸Z9ÿ¸Z:ÿáááÿüüüÿüüüÿ&ÀnQÿÀmPÿ¿lNÿ¿jMÿ¾iKÿ¾hJÿ½gIÿ½fGÿ¼dFÿ¼dEÿ»bCÿ»aBÿ»`Aÿº_?ÿ¹^>ÿ¹\<ÿ¹\;ÿ¸Z:ÿ·Y8ÿ·X7ÿ·W6ÿ¶V4ÿ¶U3ÿ¶U3ÿ¶U3ÿ¶V5ÿ·X6ÿ·X7ÿàààÿüüüÿûûûÿ&ÁpSÿÁoRÿ寻ÿüüüÿì×ÏÿÙ©˜ÿèÌÃÿ¾hJÿØ¥”ÿëÓËÿ¼dFÿ¼cDÿ寻ÿݱ¢ÿº`@ÿåĹÿܯ ÿ¹\<ÿÔœ‰ÿüüüÿìÖÏÿº`?ÿæÇ¼ÿüüüÿùôóÿÛ¬œÿ¶V4ÿ¶V5ÿàààÿüüüÿúúúÿ&ÂrVÿÍ‹tÿüüüÿðÞØÿãÁµÿûúùÿöîëÿ¿jLÿá½°ÿú÷öÿ½fHÿ½eFÿóçãÿèÌÃÿ»bBÿóçâÿçËÁÿº^>ÿìÕÎÿõìéÿÕŸŒÿá½°ÿûûúÿÞ´¥ÿäĹÿüüüÿÊ…lÿ¶U3ÿàààÿüüüÿùùùÿ&ÃtXÿÕž‹ÿüüüÿÒ˜…ÿÁoRÿíØÑÿöîëÿ¿lNÿâ¾±ÿú÷÷ÿ¾hJÿ½gIÿóçãÿèÍÃÿ¼dEÿóçãÿèÌÂÿ»`AÿðàÚÿêÑÈÿ¹]=ÿÇ~dÿÒ—„ÿ»bBÿÓ›ˆÿüüüÿÔœ‰ÿ¶U3ÿàààÿüüüÿøøøÿ&ÄvZÿÕŸÿüüüÿÏzÿÂqUÿçËÂÿöîëÿÀnQÿ⿲ÿûùøÿ¿jMÿ¾iKÿôèäÿèÍÄÿ½fGÿóçãÿèÍÃÿ»bCÿðàÛÿêÐÇÿº_?ÿ½gHÿçÉ¿ÿüüüÿüüüÿúöõÿÂrVÿ·W6ÿßßßÿüüüÿ÷÷÷ÿ&Åx]ÿÖ¡ŽÿüüüÿÏ‘{ÿÃsWÿèÌÂÿöîìÿÁpSÿ㿳ÿüüüÿÃsXÿ¿kNÿ÷ïìÿéÎÅÿ¾hJÿóçãÿèÍÃÿ¼dFÿñáÛÿêÑÈÿ»aBÿÞ¶¨ÿüüüÿîÜÕÿا–ÿ¿mOÿ¸Z:ÿ·Y8ÿßßßÿüüüÿöööÿ&Åz_ÿÖ¢ÿüüüÿÐ’}ÿÃuZÿèÍÃÿöïìÿÂrVÿãÀ´ÿüüüÿäÁ¶ÿÖ¡Žÿüûûÿåźÿ¿jLÿôèäÿéÎÄÿÎzÿöîìÿóçâÿÔ›ˆÿã¶ÿöîëÿʆnÿß¶¨ÿóçãÿÁnRÿ¸[:ÿßßßÿüüüÿõõõÿ&Æ|bÿ×£‘ÿüüüÿÑ”ÿÄw\ÿéÍÄÿöïìÿÃtXÿäÁµÿ÷ðíÿíØÑÿüüüÿûúùÿÏ‘{ÿ¿lNÿôèäÿéÎÅÿá¼°ÿüüüÿüüüÿìÖÏÿÊ„lÿøòðÿüüüÿüüüÿèÌÂÿº^>ÿ¹]=ÿßßßÿüüüÿõõõÿ&Ç~dÿÇ}cÿÆ|bÿÆz`ÿÅy^ÿÅx^ÿÄw\ÿÄvZÿÃuZÿÃtXÿÂrVÿÏ{ÿÇfÿÁoRÿÀnQÿÀmPÿ¿lNÿ¿jMÿñâÜÿëÒÊÿ½gIÿ½fGÿ¿kOÿ̉qÿÇ~dÿ»aBÿ»`Aÿº_?ÿÞÞÞÿüüüÿüüüÿ&È€fÿÈfÿÇ~dÿÇ|bÿÆ|bÿÆz`ÿÅy^ÿÅx]ÿÄw\ÿÄvZÿÃtYÿÃsWÿÂrVÿÂqUÿÁpSÿôéåÿéÐÇÿÀlOÿâ¾²ÿëÓËÿ¾iKÿ¾hJÿ½fHÿ½fGÿ¼dFÿ¼cDÿ»bCÿ»aBÿÞÞÞÿüüüÿüüüÿ&É‚iÿÉhÿÈ€fÿÇ~eÿÇ~dÿÇ|bÿÆ{aÿÅz_ÿÅy^ÿÅx]ÿÄv[ÿÃuZÿÃtYÿÃsWÿÂrVÿèËÁÿ߸ªÿÁnRÿÀmPÿË…mÿ¿kNÿ¿jLÿ¾iKÿ¾hJÿ½fHÿ½eFÿ¼dFÿ¼cDÿßßßÿüüüÿüüüÿ"Ê„kÿɃjÿÉ‚iÿÈ€gÿÈ€fÿÇ~eÿÇ}cÿÆ|bÿÆ{aÿÅz_ÿÅx^ÿÄw\ÿÄv[ÿÃuZÿÃtXÿÃsWÿÂrVÿÁpTÿÁoRÿÁnRÿÀmPÿ¿lNÿ¿kNÿ¿jLÿ¾hJÿ½gIÿ½fHÿ½eFÿáááÿüüüÿüüüÿ"3üüüÿüüüÿüüüÿüüüÿüüüÿüüüÿüüüÿüüüÿüüüÿüüüÿüüüÿüüüÿüüüÿîîîÿïïïÿïïïÿðððÿíííÿåååÿèèèÿ"3üüüÿÔÉÈÿÔÉÈÿÔÉÈÿÔÉÈÿüüüÿÔÉÈÿÔÉÈÿüüüÿüüüÿüüüÿüüüÿüüüÿéééÿßßßÿØØØÿÒÒÒÿÉÉÉÿÂÂÂÿÖÖÖÿ3üüüÿüüüÿüüüÿüüüÿüüüÿüüüÿüüüÿüüüÿüüüÿüüüÿüüüÿüüüÿüüüÿÚÚÚÿ´´´ÿ›››ÿÿ………ÿÿèèè×3üüüÿÔÉÈÿÔÉÈÿüüüÿüüüÿüüüÿÔÉÈÿÔÉÈÿüüüÿÔÉÈÿüüüÿüüüÿüüüÿÍÍÍÿªªªÿÿ•••ÿºººÿòòòýÙÙÙT3üüüÿüüüÿüüüÿüüüÿüüüÿüüüÿüüüÿüüüÿüüüÿüüüÿüüüÿüüüÿüüüÿÈÈÈÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿØØØ˜3üüüÿÔÉÈÿÔÉÈÿÔÉÈÿüüüÿüüüÿÔÉÈÿÔÉÈÿüüüÿüüüÿüüüÿüüüÿüüüÿÇÇÇÿÿÿÿÿÿÿÿÿÿÿÿÿÛÛÛÏ3üüüÿüüüÿüüüÿüüüÿüüüÿüüüÿüüüÿüüüÿüüüÿüüüÿüüüÿüüüÿüüüÿÇÇÇÿÿÿÿÿÿÿÿÿâââò3üüüÿÔÉÈÿÔÉÈÿÔÉÈÿüüüÿüüüÿÔÉÈÿÔÉÈÿÔÉÈÿÔÉÈÿüüüÿüüüÿüüüÿÇÇÇÿÿÿÿÿáááòuuu3üüüÿüüüÿüüüÿüüüÿüüüÿüüüÿüüüÿüüüÿüüüÿüüüÿüüüÿüüüÿüüüÿÖÖÖÿâââñuuu3çççÿæææÿåååÿåååÿäääÿäääÿäääÿåååÿæææÿæææÿçççÿèèèÿæææÿáááµÿÀÿÀÿÀÿÀÿÀÿÀÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀ?(  ÞÞÞ®¤¤¤„ŸŸŸˆˆˆŸŸŸˆŸŸŸˆŸŸŸˆŸŸŸˆŸŸŸˆŸŸŸˆ¥¥¥„ŸŸŸˆüüüÿüüüÿûûûÿûûûÿûûûÿýýýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ŸŸŸˆúúúÿÔÉÈÿÔÉÈÿûûûÿÔÉÈÿÔÉÈÿÔÉÈÿÔÉÈÿþþþÿÿÿÿÿÿÿÿÿ ŸŸŸˆøøøÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿ ¾jKÿ¾hIÿ½fGÿ¼cDÿ»aAÿº_?ÿ¹]=ÿ¸[:ÿ·Y8ÿ·X6ÿ·Y7ÿ¸[9ÿ¹]<ÿº_>ÿûûûÿ ûûûÿûûûÿûûûÿ¾hIÿûûûÿ¼cDÿûûûÿº_?ÿûûûÿ¸[:ÿûûûÿûûûÿûûûÿûûûÿûûûÿ ûûûÿÁpSÿûûûÿ¿lNÿûûûÿ¾hIÿûûûÿ¼cDÿûûûÿº_?ÿûûûÿ¸[:ÿ·Y8ÿûûûÿúúúÿ ûûûÿÃtXÿûûûÿÁpSÿûûûÿ¿lNÿûûûÿ¾hIÿûûûÿ¼cDÿûûûÿº_?ÿûûûÿ¸[:ÿûûûÿ ûûûÿÅx]ÿûûûÿÃtXÿûûûÿûûûÿûûûÿ¿lNÿûûûÿ¾hIÿûûûÿûûûÿûûûÿûûûÿûûûÿ Ç~dÿÆ|aÿÅz_ÿÅx]ÿÄvZÿÃtXÿÂrUÿÁpSÿÀnPÿ¿lNÿûûûÿ¾hIÿ½fGÿ¼cDÿûûûÿ ɃiÿÈ€fÿÇ~dÿÆ|aÿÅz_ÿÅx]ÿÄvZÿÃtXÿûûûÿÁpSÿÀnPÿ¿lNÿ¾jKÿ¾hIÿûûûÿ ŸŸŸˆûûûÿÔÉÈÿûûûÿûûûÿÔÉÈÿÔÉÈÿûûûÿíííÿéééÿåååÿçççÿŸŸŸˆûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿÔÔÔÿµµµÿ£££ÿ¿¿¿îŸŸŸˆûûûÿÔÉÈÿÔÉÈÿûûûÿÔÉÈÿÔÉÈÿûûûÿÀÀÀÿºººÿÅÅÅÿÞÞÞpŸŸŸˆûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿ¹¹¹ÿöööÿèèè™ÉÉÉÿÉÉÉÿÉÉÉÿÉÉÉÿÉÉÉÿÉÉÉÿÉÉÉÿÉÉÉÿäää³zzzààààààààðunits-2.19/unitsprog.ico0000664000175000017500000010050612312376060014617 0ustar adrianadrian ¨†00¨. hÖ%00 ¨%>+ ¨ æP  ¨Ž] h6n00¨žr( @€€€ÀÀÀ€ÿÿÿóççàÁÁùòòÍššÛ¶¶ @@±cc—..È‘‘„äÉÉèÑÑŒ®]]¦MMéÓÓ‘""“&&ë××¼xx¼yyæÍÍøññ¥JJ‘##æÌÌ«WW™22–--Â……úõõºuuˆªTTêÕÕãÇÇìÙÙþüüΜœ¦LL† —//À³ff’$$üùù°aa¡BB´iiòååš55Ë——‹„ û÷÷áÃÃôééñãã¤HHŠذ°©SSÆŒŒ::Ñ££‚š44ƒ©RRùóó÷îîÎÒ¥¥°``õëëÝ»»ÈåËËàÀÀ+TUVQ4R;SLKMNO=?@8.9 *:; <,,*0 *12345+67 () * +,-./  # $%&'   !"     (0`sssXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXppp£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'’H#¢P'£Q'£Q'£Q'£Q'XXX®hC¤R&¤R&¥R'¤R&¤R&¤R&¤R&¤R&£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'¤R'XXX¥R&þüçøÿÿøÿÿøÿÿùÿÿøÿÿøÿÿøÿÿøÿÿíÿÿðÿÿðÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿÿÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿôÿÿøÿÿþüç¥S&XXX§S%øÿÿøÿÿøÿÿùÿÿùÿÿùÿÿùÿÿùÿÿøÿÿøÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿÿÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿ§S$XXX¨U$ùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿÿÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿ¨U#XXXªV"úÿÿùÿÿùÿÿúÿÿùÿÿúÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿÿÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿøÿÿ«V"XXX¬W!úÿÿúÿÿúÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿÿÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿ­X XXX®Yûÿÿúÿÿúÿÿùÿÿúÿÿúÿÿûÿÿûÿÿúÿÿúÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿÿÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿúÿÿ¯X XXX±Zûÿÿûÿÿûÿÿùÿÿûÿÿûÿÿûÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿÿÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿúÿÿ±ZXXX³\ûÿÿûÿÿûÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿîàØÒ±žùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿÖ¸§æØÎùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿûÿÿ³[XXXµ]üÿÿûÿÿüÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿìåߪ_8Èœ„ùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿΧ’§Y1êáÚùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿûÿÿµ]XXX¸^ýÿÿüÿÿýÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿìåß«a;©\5òñîùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿöø÷«b<ª_8êáÚùÿÿùÿÿùÿÿùÿÿùÿÿûÿÿ¸_XXX¹`ýÿÿýÿÿýÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿçÚѪ`:£Q'ܼ¬ùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿÞɼ£Q'¨\5áÏÄùÿÿùÿÿùÿÿùÿÿýÿÿº`XXX¼aýÿÿýÿÿþÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿ÷ûúΧ’¤T*£Q'Ä”zÿÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿÊ¡Š£Q'£Q'Ì£öø÷ùÿÿùÿÿýÿÿ¼aXXX¼aýÿÿýÿÿþÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿ®hD£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'«a:õ÷õùÿÿýÿÿ¼aXXX¼aýÿÿýÿÿþÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿèÜÓ·yY£Q'£Q'Å–}éÕËäÕËäÕËäÕËäÕËäÕËäÕËäÕËäÕËäÕËäÕËäÕËäÕËäÕËäÕËäÕËäÕËÊŸˆ£Q'£Q'³rPæØÎùÿÿùÿÿýÿÿ¼aXXX¼aýÿÿýÿÿþÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿЬ˜£Q'¥V-îß×ùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿíçá§Y1£Q'Éž†øýüùÿÿùÿÿùÿÿýÿÿ¼aXXX¼aýÿÿýÿÿþÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿÜŶ¤T*³pMøýüùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿµvU£Q'ؼ«ùÿÿùÿÿùÿÿùÿÿùÿÿýÿÿ¼aXXX¼aÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿàŶ¤R)Ù¸¦ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿâǺ£Q'Ú¹¨ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¼aXXX¼aÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÚ¹¨Å’wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿËœ…Õ¯›ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¼aXXX¼aÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¼aXXX¼aÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¼aXXX¼aÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¼aXXX¼aÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüúøéÕËôëæÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿöíééÕËöíéÿÿÿÿÿÿÿÿÿíÜÔéÕËõìçÿÿÿÿÿÿÿÿÿÿÿÿ¼aXXX¼aÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðâܪ_8£Q'£Q'Í ‰À‡k£Q'ÞÁ²ÿÿÿÒ©•£Q'À‡kÿÿÿÿÿÿâɼ£Q'°iEÿÿÿùóñ£Q'£Q'ñåßÿÿÿëØÏ¦V-£Q'£Q'üúøëÚѯhD£Q'£Q'£Q'¾…gûø÷ÿÿÿÿÿÿ¼aXXX¼aÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¼b£Q'¤T*º}]¤T*¨Z2£Q'ÞÁ²ÿÿÿÒ©•£Q'À‡kÿÿÿÿÿÿâɼ£Q'°iEÿÿÿùóñ£Q'£Q'ñåßÿÿÿÇ–|£Q'ª_8´rPúõòª_8£Q'«a:º}]¦W/£Q'È–}ÿÿÿÿÿÿ¼aXXX¼aÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¨[4£Q'Úº©ÿÿÿèÓÈ£Q'£Q'ÞÁ²ÿÿÿÒ©•£Q'À‡kÿÿÿÿÿÿâɼ£Q'°iEÿÿÿùóñ£Q'£Q'ñåßÿÿÿÀ‡k£Q'ѧ’ÿÿÿÞÀ±£Q'«a:û÷õÿÿÿã˾£Q'ª^7ÿÿÿÿÿÿ¼aXXX¼aýÿÿýÿÿþÿÿùÿÿùÿÿùÿÿùÿÿùÿÿ¤R)£Q'èÝÕùÿÿùÿÿ©^7£Q'ÚÁ²ùÿÿÏ©•£Q'¾‡kÿÿÿùÿÿÞɼ£Q'¯iEùÿÿóóñ£Q'£Q'ìåßùÿÿ¾‡k£Q'ѯ›ùÿÿùÿÿøýüêáÚöø÷ßË¿¾‡k£Q'¨[4ùÿÿýÿÿ¼aXXX¼aýÿÿýÿÿþÿÿùÿÿùÿÿùÿÿùÿÿùÿÿ£Q'£Q'êàØùÿÿùÿÿ¯iE£Q'ÚÁ²ùÿÿÏ©•£Q'¾‡kÿÿÿùÿÿÞɼ£Q'¯iEùÿÿóóñ£Q'£Q'ìåßùÿÿ¾‡k£Q'ѯ›ùÿÿùÿÿïëçÂu¤T*£Q'£Q'£Q'ÁŽsùÿÿýÿÿ¼aXXX¾cþÿÿýÿÿýÿÿùÿÿùÿÿùÿÿùÿÿùÿÿ£Q'£Q'êàØùÿÿùÿÿ¯iE£Q'ÚÁ²ùÿÿÏ©•£Q'½…gÿÿÿùÿÿÞɼ£Q'¯iEùÿÿóóñ£Q'£Q'ìåßùÿÿ¾‡k£Q'ѯ›ùÿÿùÿÿ±mJ£Q'£Q'£Q'¦W/Ç™€õ÷õýÿÿþÿÿ¾cXXXÀdÿÿÿÿÿÿþÿÿùÿÿùÿÿùÿÿùÿÿùÿÿ£Q'£Q'êàØùÿÿùÿÿ¯iE£Q'ÚÁ²ùÿÿÏ©•£Q'´sQÿÿÿùÿÿؼ¬£Q'¯iEùÿÿóóñ£Q'£Q'ìåßùÿÿ¾‡k£Q'ѯ›ùÿÿêáÚ£Q'¤T*Å–}áÎÂðíéõ÷õùÿÿþÿÿþÿÿÀdXXXÄgÿÿÿÿÿÿÿÿÿùÿÿùÿÿÿÿÿùÿÿùÿÿ£Q'£Q'êàØùÿÿùÿÿ¯iE£Q'ÚÁ²ùÿÿÏ©•£Q'£Q'ÞÁ²÷ûú¼„f£Q'¶xWùÿÿóóñ£Q'£Q'ìåßëâÜ·zZ£Q'Å–}æØÎêáÚ£Q'­e@ôõóöúø¾‡k£Q'ЦÿÿÿÿÿÿÄgXXXÄgÿÿÿÿÿÿÿÿÿùÿÿùÿÿÿÿÿùÿÿùÿÿ£Q'£Q'êàØùÿÿùÿÿ¯iE£Q'ÚÁ²ùÿÿÏ©•£Q'°lH£Q'£Q'£Q'£Q'̤Žùÿÿóóñ£Q'£Q'ìåß¾‡k£Q'£Q'£Q'¨\5øýü°kG£Q'£Q'£Q'£Q'£Q'ê×ÍÿÿÿÿÿÿÄgXXXÄgÿÿÿÿÿÿÿÿÿùÿÿùÿÿÿÿÿùÿÿùÿÿ¹}]¹}]îèâùÿÿùÿÿÁŽs¹}]âÑÆùÿÿÙ¿°¹}]Ù¿°×´¡ª_8£Q'Ä”zöúøùÿÿõ÷õ¹}]¹}]ðìçÍ¥ª_8£Q'®hD½…gùÿÿîè⿉l£Q'£Q'°lHÛ³ÿÿÿÿÿÿÿÿÿÄgXXXÆhÿÿÿÿÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿÿÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿ¾‡k£Q'ѯ›ùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿÿÿÿÿÿÿÿÿÿÆiXXXÈi ÿÿÿÿÿÿÿÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿÿÿÿùÿÿùÿÿùÿÿùÿÿùÿÿóóñ£Q'£Q'ìåßùÿÿÑv£Q'ѯ›ùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿÿÿÿÿÿÿÿÿÿÉi[[[Ëk ÿÿÿÿÿÿÿÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿÿÿÿùÿÿùÿÿùÿÿùÿÿùÿÿóóñ£Q'£Q'ìåßùÿÿöúøÈ›ƒÑ¯›ùÿÿùÿÿÿÿÿùÿÿùÿÿÿÿÿùÿÿùÿÿÿÿÿÿÿÿÿÿÿËk ___Íl ÿÿÿÿÿÿÿÿÿùÿÿÿÿÿÿÿÿÿÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿÿÿÿùÿÿùÿÿùÿÿùÿÿùÿÿöúøÒ©•Ò©•óóðùÿÿùÿÿùÿÿöø÷ùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿÿÿÿÿÿÿÍl aaaÏn ÿÿÿÿÿÿÿÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿÿÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿÿÿÿÿÿÿÏn aaaÒoÿÿÿÿÿÿÿÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿÿÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÑpaaaÔpÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÓqaaaÖrÞÜÇÞÜÇÞÜÇÞÜÇÞÜÇÞÜÇÞÜÇÞÜÇÞÜÇÞÜÇÞÜÇÞÜÇÞÜÇÞÜÇÞÜÇÞÜÇÞÜÇÞÜÇÞÜÇÞÜÇÞÜÇÞÜÇÞÜÇÞÜÇÞÜÇÞÜÇÞÜÇÞÜÇÞÜÇÞÜÇÞÜÇÞÜÇÞÜÇÞÜÇÞÜÇÞÜÇÞÜÇÞÜÇÞÜÇÞÜÇÞÜÇÞÜÇÞÜÇÞÜÇÞÜÇÖw```¹c²_­]«[ª\ª[ª\ª\ª\ª[ª[ª\ª\ª\ª\ª\ª[ª[ª\ª\ª[ª[ª[ª[ª[ª[ª[ª[ª[ª[ª[ª[ª[ª[ª[ª[ª\ª[ª[ª[ª[ª[ª[«\­]µbÄt]]]¼e½f¼e¹c¹b¹c¹b¸c¸b¹b¸b¹b¸b¸c¸b¸b¹b¸c¹c¹c¸b¸b¸b¸b¸b¸b¸b¸b¹b¸b¹c¹c¸c¸c¹bÂoÖŽ@¼h ¹bÈy"Ë}'¸b¤e)qj‹’iPÂtÆtYYYÂjÊnÔrØsÙtÙuÙtØuÙwÙuÙvÚy Ú{Úz Ú{Ùz Úx ØvÙwÙwØuØuØuØuØuØuØuØuÙtØtÙvÙvØvÙwÙvê›Eø¼|Ý‚Úy í¤Uù¾Øu{r“FpãcqµÈ‚3ÌwiiiÊoÑyã Sê©^íŸEîŸDî¡Iî¢IîŸDíš:îžBï¢Iì—6ì—3ì˜8í?î@ìœ=íœ>íœ>íœ=íœ=íœ=íœ=íœ=íœ=íœ=íœ=ì™8ë“,ì–0í•0ë“-ë“.ê(ë'ë’,ì•0ì“-ì”0ì–1í˜7íš8ÊŒPß‹,ÛŒ1ÐqÒqÕvØz ×x ×vÖsÖsÖsÖsÖsÖsÖtÖtÖt×u×u×u×u×u×w×w×w×w×w×w×w×w×w×u×uÖuÖtÖsÖsÖsÖsÖsÖsÖsÖsÖsÖtØwÙx ×v€€( àšIå”6ç’0ç-æ‘+æ,æ’/æ-æ&äŒ$ç+é*ã‘4·>¼g½d¼c ½d ½d¼b ¼c ¼c Èx(Ês ³o7|WR®”x}}}à´„åà×äÜÏåÝÐåÜÐäÝÐäÜÐãÚËãÚÌçÛÉìÚ½›zZíÜÿÿÿþÿÿÓ¨¨ú÷÷çÐЕf@翘ëÖÖ÷ùùãÐÐõõõêÝÝÞÅÅúÿÿѨ¨Í¡¡ªXXôððÞÃÃ÷ñð’gDªUUòääž<<éÓÓ•++¨PPÍ››§MM¿~~ž==¬YY²ddºuuñââ99±ccÙ²²Æ¹rrÝ»»“''¾||eD徚µii°dd‘""åÓÓ²hhÕ²²Ä¥MMÚ»»œ::ªWW´mm™33㼜úõõâÎÎçÖÖèÚÚñíííääæÕÕùüüßÇÇóíìcE໹wwñìì¯bbøùùýÿþŠbEÏ¥¥Š¹vvÀ……Ÿ@@ž>>ñæåˆ`EøññªTTá¯^^Ò¥¥…^GÛ¹£ýÿÿûüüÉ––üÿÿìÝÝ×´´×²›úõóùõòøõò÷õòº€b”Y9ŒQ2‹Q2‰O1ŽQ3sP?”””~~~„„„˜™šššššššššš›‘’““”“““““““•–—ŒŽŽŽŽŽŽŽŽŽ„…*††‡ˆ‰‰‰‰Š‹†+„0**€*****‚ƒ*„0*7wxyzzzzz{|}~p*77kq7777rstuvdefg4hijklm40123456789:;<=>)**++++*,-.+**/ !!"!!#$%&'( €(0` Œ§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ’H#ÿ¢P'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ§¢Q&ݤR&ÿ¤R&ÿ¥R'ÿ¤R&ÿ¤R&ÿ¤R&ÿ¤R&ÿ¤R&ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ¤R'ÿ§¥R&ÿþüçÿøÿÿÿøÿÿÿøÿÿÿùÿÿÿøÿÿÿøÿÿÿøÿÿÿøÿÿÿíÿÿÿðÿÿÿðÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿôÿÿÿøÿÿÿþüçÿ¥S&ÿ§§S%ÿøÿÿÿøÿÿÿøÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿøÿÿÿøÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿ§S$ÿ§¨U$ÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿ¨U#ÿ§ªV"ÿúÿÿÿùÿÿÿùÿÿÿúÿÿÿùÿÿÿúÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿøÿÿÿ«V"ÿ§¬W!ÿúÿÿÿúÿÿÿúÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿ­X ÿ§®Yÿûÿÿÿúÿÿÿúÿÿÿùÿÿÿúÿÿÿúÿÿÿûÿÿÿûÿÿÿúÿÿÿúÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿúÿÿÿ¯X ÿ§±ZÿûÿÿÿûÿÿÿûÿÿÿùÿÿÿûÿÿÿûÿÿÿûÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿêàØÿÒ±žÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿÖ¸§ÿæØÎÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿúÿÿÿ±Zÿ§³\ÿûÿÿÿûÿÿÿûÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿìåßÿª_8ÿÈœ„ÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿΧ’ÿ§Y1ÿêáÚÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿûÿÿÿ³[ÿ§µ]ÿüÿÿÿûÿÿÿüÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿìåßÿ«a;ÿ¨\5ÿòñîÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿöø÷ÿ«b<ÿª_8ÿêáÚÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿûÿÿÿµ]ÿ§¸^ÿýÿÿÿüÿÿÿýÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿçÚÑÿª`:ÿ£Q'ÿؼ¬ÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿÞɼÿ£Q'ÿ¨\5ÿáÏÄÿùÿÿÿùÿÿÿùÿÿÿûÿÿÿ¸_ÿ§¹`ÿýÿÿÿýÿÿÿýÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿ÷ûúÿΧ’ÿ¤T*ÿ£Q'ÿÄ”zÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿÊ¡Šÿ£Q'ÿ£Q'ÿÌ£ÿöø÷ÿùÿÿÿýÿÿÿº`ÿ§¼aÿýÿÿÿýÿÿÿþÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿ®hDÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ«a:ÿõ÷õÿýÿÿÿ¼aÿ§¼aÿýÿÿÿýÿÿÿþÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿèÜÓÿ·yYÿ£Q'ÿ£Q'ÿÅ–}ÿäÕËÿäÕËÿäÕËÿäÕËÿäÕËÿäÕËÿäÕËÿäÕËÿäÕËÿäÕËÿäÕËÿäÕËÿäÕËÿäÕËÿäÕËÿäÕËÿäÕËÿÊŸˆÿ£Q'ÿ£Q'ÿ³rPÿæØÎÿùÿÿÿýÿÿÿ¼aÿ§¼aÿýÿÿÿýÿÿÿþÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿЬ˜ÿ£Q'ÿ¥V-ÿéß×ÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿíçáÿ§Y1ÿ£Q'ÿÉž†ÿøýüÿùÿÿÿùÿÿÿýÿÿÿ¼aÿ§¼aÿýÿÿÿýÿÿÿþÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿÜŶÿ¤T*ÿ²pMÿøýüÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿµvUÿ£Q'ÿؼ«ÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿýÿÿÿ¼aÿ§¼aÿýÿÿÿýÿÿÿþÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿÜŶÿ¤R)ÿÖ¸¦ÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿÝǺÿ£Q'ÿÖ¹¨ÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿýÿÿÿ¼aÿ§¼aÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÚ¹¨ÿÅ’wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿËœ…ÿÕ¯›ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¼aÿ§¼aÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¼aÿ§¼aÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¼aÿ§¼aÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¼aÿ§¼aÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¼aÿ§¼aÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüúøÿéÕËÿôëæÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿöíéÿéÕËÿöíéÿÿÿÿÿÿÿÿÿÿÿÿÿíÜÔÿéÕËÿõìçÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¼aÿ§¼aÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðâÜÿª_8ÿ£Q'ÿ£Q'ÿÍ ‰ÿÀ‡kÿ£Q'ÿÞÁ²ÿÿÿÿÿÒ©•ÿ£Q'ÿÀ‡kÿÿÿÿÿÿÿÿÿâɼÿ£Q'ÿ°iEÿÿÿÿÿùóñÿ£Q'ÿ£Q'ÿñåßÿÿÿÿÿëØÏÿ¦V-ÿ£Q'ÿ£Q'ÿüúøÿëÚÑÿ¯hDÿ£Q'ÿ£Q'ÿ£Q'ÿ¾…gÿûø÷ÿÿÿÿÿÿÿÿÿ¼aÿ§¼aÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¼bÿ£Q'ÿ¤T*ÿº}]ÿ¤T*ÿ¨Z2ÿ£Q'ÿÞÁ²ÿÿÿÿÿÒ©•ÿ£Q'ÿÀ‡kÿÿÿÿÿÿÿÿÿâɼÿ£Q'ÿ°iEÿÿÿÿÿùóñÿ£Q'ÿ£Q'ÿñåßÿÿÿÿÿÇ–|ÿ£Q'ÿª_8ÿ´rPÿúõòÿª_8ÿ£Q'ÿ«a:ÿº}]ÿ¦W/ÿ£Q'ÿÈ–}ÿÿÿÿÿÿÿÿÿ¼aÿ§¼aÿýÿÿÿýÿÿÿþÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿ¨[4ÿ£Q'ÿ׺©ÿùÿÿÿãÓÈÿ£Q'ÿ£Q'ÿÚÁ²ÿùÿÿÿÏ©•ÿ£Q'ÿ¾‡kÿùÿÿÿùÿÿÿÞɼÿ£Q'ÿ¯iEÿùÿÿÿóóñÿ£Q'ÿ£Q'ÿìåßÿùÿÿÿ¾‡kÿ£Q'ÿΧ’ÿùÿÿÿÚÀ±ÿ£Q'ÿ«a:ÿõ÷õÿùÿÿÿß˾ÿ£Q'ÿ©^7ÿùÿÿÿýÿÿÿ¼aÿ§¼aÿýÿÿÿýÿÿÿþÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿ¤R)ÿ£Q'ÿèÝÕÿùÿÿÿùÿÿÿ©^7ÿ£Q'ÿÚÁ²ÿùÿÿÿÏ©•ÿ£Q'ÿ¾‡kÿùÿÿÿùÿÿÿÞɼÿ£Q'ÿ¯iEÿùÿÿÿóóñÿ£Q'ÿ£Q'ÿìåßÿùÿÿÿ¾‡kÿ£Q'ÿѯ›ÿùÿÿÿùÿÿÿøýüÿêáÚÿöø÷ÿßË¿ÿ¾‡kÿ£Q'ÿ¨[4ÿùÿÿÿýÿÿÿ¼aÿ§¾cÿþÿÿÿýÿÿÿýÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿ£Q'ÿ£Q'ÿêàØÿùÿÿÿùÿÿÿ¯iEÿ£Q'ÿÚÁ²ÿùÿÿÿÏ©•ÿ£Q'ÿ¾‡kÿùÿÿÿùÿÿÿÞɼÿ£Q'ÿ¯iEÿùÿÿÿóóñÿ£Q'ÿ£Q'ÿìåßÿùÿÿÿ¾‡kÿ£Q'ÿѯ›ÿùÿÿÿùÿÿÿïëçÿÂuÿ¤T*ÿ£Q'ÿ£Q'ÿ£Q'ÿÁŽsÿýÿÿÿþÿÿÿ¾cÿ§Àdÿÿÿÿÿÿÿÿÿþÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿ£Q'ÿ£Q'ÿêàØÿùÿÿÿùÿÿÿ¯iEÿ£Q'ÿÚÁ²ÿùÿÿÿÏ©•ÿ£Q'ÿ½…gÿùÿÿÿùÿÿÿÞɼÿ£Q'ÿ¯iEÿùÿÿÿóóñÿ£Q'ÿ£Q'ÿìåßÿùÿÿÿ¾‡kÿ£Q'ÿѯ›ÿùÿÿÿùÿÿÿ±mJÿ£Q'ÿ£Q'ÿ£Q'ÿ¦W/ÿÇ™€ÿõ÷õÿþÿÿÿþÿÿÿÀdÿ§Ägÿÿÿÿÿÿÿÿÿÿÿÿÿùÿÿÿùÿÿÿÿÿÿÿùÿÿÿ£Q'ÿ£Q'ÿêàØÿùÿÿÿùÿÿÿ¯iEÿ£Q'ÿÚÁ²ÿùÿÿÿÏ©•ÿ£Q'ÿ´sQÿùÿÿÿùÿÿÿؼ¬ÿ£Q'ÿ¯iEÿùÿÿÿóóñÿ£Q'ÿ£Q'ÿìåßÿùÿÿÿ¾‡kÿ£Q'ÿѯ›ÿùÿÿÿêáÚÿ£Q'ÿ¤T*ÿÅ–}ÿáÎÂÿðíéÿõ÷õÿÿÿÿÿÿÿÿÿÿÿÿÿÄgÿ§Ägÿÿÿÿÿÿÿÿÿÿÿÿÿùÿÿÿùÿÿÿÿÿÿÿùÿÿÿ£Q'ÿ£Q'ÿêàØÿùÿÿÿùÿÿÿ¯iEÿ£Q'ÿÚÁ²ÿùÿÿÿÏ©•ÿ£Q'ÿ£Q'ÿÚÁ²ÿ÷ûúÿ¼„fÿ£Q'ÿ¶xWÿùÿÿÿóóñÿ£Q'ÿ£Q'ÿìåßÿëâÜÿ·zZÿ£Q'ÿÅ–}ÿæØÎÿêáÚÿ£Q'ÿ­e@ÿôõóÿöúøÿ¾‡kÿ£Q'ÿЦÿÿÿÿÿÿÿÿÿÄgÿ§Ägÿÿÿÿÿÿÿÿÿÿÿÿÿùÿÿÿùÿÿÿÿÿÿÿùÿÿÿ£Q'ÿ£Q'ÿêàØÿùÿÿÿùÿÿÿ¯iEÿ£Q'ÿÚÁ²ÿùÿÿÿÏ©•ÿ£Q'ÿ°lHÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ̤Žÿùÿÿÿóóñÿ£Q'ÿ£Q'ÿìåßÿ¾‡kÿ£Q'ÿ£Q'ÿ£Q'ÿ¨\5ÿøýüÿ°kGÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿê×ÍÿÿÿÿÿÿÿÿÿÄgÿ§Æhÿÿÿÿÿÿÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿ¹}]ÿ¹}]ÿîèâÿùÿÿÿùÿÿÿÁŽsÿ¹}]ÿâÑÆÿùÿÿÿÙ¿°ÿ¹}]ÿÙ¿°ÿÔ´¡ÿª_8ÿ£Q'ÿÄ”zÿöúøÿùÿÿÿõ÷õÿ¹}]ÿ¹}]ÿðìçÿÍ¥ÿª_8ÿ£Q'ÿ®hDÿ½…gÿùÿÿÿîèâÿ¿‰lÿ£Q'ÿ£Q'ÿ°lHÿÛ³ÿÿÿÿÿÿÿÿÿÿÿÿÿÆiÿ©Èi ÿÿÿÿÿÿÿÿÿÿÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿ¾‡kÿ£Q'ÿѯ›ÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÉiÿ ¬!Ëk ÿÿÿÿÿÿÿÿÿÿÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿóóñÿ£Q'ÿ£Q'ÿìåßÿùÿÿÿÑvÿ£Q'ÿѯ›ÿùÿÿÿùÿÿÿÿÿÿÿùÿÿÿùÿÿÿÿÿÿÿùÿÿÿùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿËk ÿ®"Íl ÿÿÿÿÿÿÿÿÿÿÿÿÿùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿóóñÿ£Q'ÿ£Q'ÿìåßÿùÿÿÿöúøÿÈ›ƒÿѯ›ÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿÿÿÿÿÿÿÿÿÍl ÿ®"Ïn ÿÿÿÿÿÿÿÿÿÿÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿöúøÿÏ©•ÿÏ©•ÿóóðÿùÿÿÿùÿÿÿùÿÿÿöø÷ÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿÿÿÿÿÿÿÿÿÏn ÿ®"ÒoÿÿÿÿÿÿÿÿÿÿÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÑpÿ®"ÔpÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÓqÿ®!ÖrÿÞÜÇÿÞÜÇÿÞÜÇÿÞÜÇÿÞÜÇÿÞÜÇÿÞÜÇÿÞÜÇÿÞÜÇÿÞÜÇÿÞÜÇÿÞÜÇÿÞÜÇÿÞÜÇÿÞÜÇÿÞÜÇÿÞÜÇÿÞÜÇÿÞÜÇÿÞÜÇÿÞÜÇÿÞÜÇÿÞÜÇÿÞÜÇÿÞÜÇÿÞÜÇÿÞÜÇÿÞÜÇÿÞÜÇÿÞÜÇÿÞÜÇÿÞÜÇÿÞÜÇÿÞÜÇÿÞÜÇÿÞÜÇÿÞÜÇÿÞÜÇÿÞÜÇÿÞÜÇÿÞÜÇÿÞÜÇÿÞÜÇÿÞÜÇÿÖwÿ­¹cÿ²_ÿ­]ÿ«[ÿª\ÿª[ÿª\ÿª\ÿª\ÿª[ÿª[ÿª\ÿª\ÿª\ÿª\ÿª\ÿª[ÿª[ÿª\ÿª\ÿª[ÿª[ÿª[ÿª[ÿª[ÿª[ÿª[ÿª[ÿª[ÿª[ÿª[ÿª[ÿª[ÿª[ÿª[ÿª\ÿª[ÿª[ÿª[ÿª[ÿª[ÿª[ÿ«\ÿ­]ÿµbÿÄtÿ ª¼eÿ½fÿ¼eÿ¹cÿ¹bÿ¹cÿ¹bÿ¸cÿ¸bÿ¹bÿ¸bÿ¹bÿ¸bÿ¸cÿ¸bÿ¸bÿ¹bÿ¸cÿ¹cÿ¹cÿ¸bÿ¸bÿ¸bÿ¸bÿ¸bÿ¸bÿ¸bÿ¹bÿ¸bÿ¹cÿ¹cÿ¸cÿ¸cÿ¹bÿÂoÿÖŽ@ÿ¼h ÿ¹bÿÈy"ÿË}'ÿ¸bÿ¤e)ÿqj‹ÿ’iPÿÂtÿÆtÿ¨ÂjÿÊnÿÔrÿØsÿÙtÿÙuÿÙtÿØuÿÙwÿÙuÿÙvÿÚy ÿÚ{ÿÚz ÿÚ{ÿÙz ÿÚx ÿØvÿÙwÿÙwÿØuÿØuÿØuÿØuÿØuÿØuÿØuÿÙtÿØtÿÙvÿÙvÿØvÿÙwÿÙvÿê›Eÿø¼|ÿÝ‚ÿÚy ÿí¤Uÿù¾ÿØuÿ{r“ÿFpãÿcqµÿÈ‚3ÿÌwÿ–ÊoÿÑyÿã Sÿê©^ÿíŸEÿîŸDÿî¡Iÿî¢IÿîŸDÿíš:ÿîžBÿï¢Iÿì—6ÿì—3ÿì˜8ÿí?ÿî@ÿìœ=ÿíœ>ÿíœ>ÿíœ=ÿíœ=ÿíœ=ÿíœ=ÿíœ=ÿíœ=ÿíœ=ÿì™8ÿë“,ÿì–0ÿí•0ÿë“-ÿë“.ÿê(ÿë'ÿë’,ÿì•0ÿì“-ÿì”0ÿì–1ÿí˜7ÿíš8ÿÊŒPÿß‹,ÿÛŒ1ÿÐqÿJÝw1ÒqÿÕvÿØz ÿ×x ÿ×vÿÖsÿÖsÿÖsÿÖsÿÖsÿÖsÿÖtÿÖtÿÖtÿ×uÿ×uÿ×uÿ×uÿ×uÿ×wÿ×wÿ×wÿ×wÿ×wÿ×wÿ×wÿ×wÿ×uÿ×uÿÖuÿÖtÿÖsÿÖsÿÖsÿÖsÿÖsÿÖsÿÖsÿÖsÿÖsÿÖtÿØwÿÙx ÿ×vÿ²`W€( @€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€‰YBxI1wG0wG0wG0wG0wG0wH0wH0wH0wH0wH0wH0wH0wH0wH0wH0wH0wH0wH0wH0wH0wH0xI0rE.pE.xH0xH0~L3b_]€€€¡K¦S(¤O$¢N!¢N!¢N!¢N!¢N!¡N" M"¡M"¢M"¢M"¢M"¢M"¢M"¢M"¢M"¢M"¢M"¢M"¢M"¢M"¢M"¢N" M" M"¡O$¤S)¤O"\TP€€€´lAÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿúÿÿ÷ÿÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿÿÿÿÿÉ—sXRO€€€²j@ÿÿÿÿÿÿþÿÿÿÿÿþÿÿþÿÿþÿÿÿÿÿÿÿÿÿÿÿþÿÿþÿÿþÿÿþÿÿþÿÿþÿÿþÿÿþÿÿþÿÿþÿÿþÿÿþÿÿþÿÿþÿÿþÿÿþÿÿÿÿÿÿÿÿÇ—zXRO€€€³h:ÿÿÿüÿÿüÿÿÿÿÿûÿÿúÿÿúÿÿúÿÿúÿÿúÿÿúÿÿúÿÿúÿÿúÿÿúÿÿúÿÿúÿÿúÿÿúÿÿúÿÿúÿÿúÿÿúÿÿúÿÿúÿÿúÿÿüÿÿÿÿÿÈ”sYRO€€€µi7ÿÿÿýÿÿúÿÿÿÿÿùÿÿûÿÿûÿÿúÿÿúÿÿúÿÿóõôåáÝúÿÿúÿÿúÿÿúÿÿúÿÿúÿÿúÿÿúÿÿúÿÿæãßïïíúÿÿúÿÿúÿÿûÿÿÿÿÿÊ•rYRO€€€·l6ÿÿÿþÿÿûÿÿÿÿÿüÿÿüÿÿûÿÿúÿÿúÿÿôöõ’nZÅ´ªúÿÿúÿÿúÿÿúÿÿúÿÿúÿÿúÿÿúÿÿúÿÿÐŽŒePðñðúÿÿúÿÿûÿÿÿÿÿÌ–qYSO€€€»n5ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿõñð”o\’mXýýýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ™vchTñíêÿÿÿÿÿÿÿÿÿΗnYSO€€€»n5ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÚÍÆ†\FyJ2ʸ®ÞÓÍÞÓÍÞÓÍÞÓÍÞÓÍÞÓÍÞÓÍÞÓÍÞÓÍÞÓÍÞÓÍξµzL3ƒW@ÖÈÁÿÿÿÿÿÿΗnYSO€€€¾o1ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèàÛ€T=xI0xI0xI0xI0xI0xI0xI0xI0xI0xI0xI0xI0xI0xI0xI0xI0xI0~R:ÞÒÌÿÿÿЙmYSO€€€Áp0ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿõñð¡€nyJ2×ÊÂÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿßÔÎzL3˜taòîìÿÿÿÿÿÿÒšlYSO€€€Ãr.ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ±–‡ƒW@öóñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûùùˆ_I«~ýýýÿÿÿÿÿÿÿÿÿÕ›kYSO€€€Æs-ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ­·žÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‚qÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿלjZSO€€€Æs-ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿלjZSO€€€Æs-ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿלjZSO€€€Æs-ÿÿÿÿÿÿ¬xI0›xeű¦¤„sÿÿÿƲ¨{iÿÿÿÿÿÿ§‰y¹¡”ÿÿÿ§‰y¹¡”ÿÿÿȵ«xI0—s`ùöõ£ƒrxI0~R:¸ “ÿÿÿÿÿÿלjZSO€€€Æs-ÿÿÿæÝØxI0”o\¯”…zL3…[Dÿÿÿ²—‰|O6ÿÿÿÿÿÿŠbL¢‚qÿÿÿŠbL¢‚qÿÿÿ™ub…[DƲ¨­yJ2³™‹¥†vxI0ÙËÄÿÿÿלjZSO€€€Æs-ÿÿÿÕÆ¾xI0ØÊÃÿÿÿšwe…[Dÿÿÿ²—‰|O6ÿÿÿÿÿÿŠbL¢‚qÿÿÿŠbL¢‚qÿÿÿjU{iÿÿÿâØÓ̺±ùöõÈ´ªxI0Ʋ¨ÿÿÿלjZSO€€€Æs-ÿÿÿÕÆ¾xI0á×Òúÿÿ¥ˆx…[Dùÿÿ°—‰{M5úÿÿúÿÿŠbL¡‚qúÿÿŠbL¡‚qúÿÿjU|júÿÿóõô¢ƒrxI0xI0}O7æãßÿÿÿלjZSO€€€Év,ÿÿÿÕÆ¾xI0ãÙÓùÿÿ¦ˆx…[Düÿÿ°—‰xI0óöôúÿÿ„YC¡‚qúÿÿŠbL¡‚qúÿÿjU|júÿÿ²›xI0’nZ½ªžìëèüÿÿÿÿÿÙiZTO€€€Ëw*ÿÿÿÕÆ¾xI0ãÙÓüÿÿ¦ˆx…[Dûÿÿ°—‰xI0®”†Ë½´yJ2©Ž~úÿÿŠbL¡‚qÖÍÆ„YCŠcMʼ³©Ž~„YCÛÓͱ™‹‰aKðêèÿÿÿÛžhZTO€€€Íx'ÿÿÿÔÆ¾xI0ãÙÓùÿÿ¥ˆx…[Dúÿÿ°—‰„YC™wexI0zL3ÚÒËúÿÿŠbL¡‚q°—‰xI0xI0™wdßÙÓ€T=xI0xI0 pÿÿÿÿÿÿÝ¡fZTO€€€Ðz&ÿÿÿÿÿÿùÿÿÿÿÿùÿÿùÿÿúÿÿúÿÿúÿÿúÿÿúÿÿÝÖÐìëèúÿÿúÿÿùÿÿùÿÿúÿÿjU|júÿÿûÿÿ÷öõÛÓÍæÞÚùÿÿÿÿÿÿÿÿߢe[TO€€€Ò{$ÿÿÿÿÿÿúÿÿÿÿÿÿÿÿÿÿÿùÿÿúÿÿúÿÿúÿÿúÿÿúÿÿúÿÿúÿÿùÿÿŠbL¡‚qùÿÿ¯–ˆ|júÿÿúÿÿûÿÿùÿÿûÿÿùÿÿûÿÿÿÿÿà£b[TO€€€×$ÿÿÿÿÿÿúÿÿÿÿÿúÿÿúÿÿúÿÿúÿÿúÿÿúÿÿúÿÿúÿÿúÿÿúÿÿúÿÿ¦‰y·¡”úÿÿúÿÿãßÛúÿÿúÿÿúÿÿúÿÿúÿÿýÿÿÿÿÿÿÿÿâ£b[TO€€€Þ†*ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿç©c[TO€€€Ô}ÜßÎÚÕ½ÙÒ¹ÙÒ¹ÙÒ¹ÚÓ¹ÚÓ¹ÚÒ¹ÚÓ¹ÚÓ¹ÚÓ¹ÚÓ¹ÙÒ¹ÙÓ¹ÙÒ¹ÚÒ¹ÚÒ¹ÚÒ¹ÙÒ¹ÙÓ¸ØÏ¶ÖͳÙÑ·ØÏµØÏ´ÝÑ´ãÒªÞÜÃÔ7^][€€€³Y©L¢FŸCŸEŸEŸDŸEŸCŸCŸCŸDŸCŸC EŸCŸDŸEŸEŸEžC¤IªS@¦J¦I B‰I KºY```€€€¾fËkÒmÑkÑnÑnÐnÑnÑmÒqÒrÒrÑqÑnÑnÏmÑlÑnÑoÏoÏiå—@ð«bÏjì¡Qö¢Dœf>.jý~r‡Ïottt€€€Ðu Û‰*í§Vð=ðœ;ðœ;ð?ñ›7ð˜3ñŸ?î—/î–/ð›8ð›7îš5ðš6ï•-ï’&ð”*í‘'íŽ!ð”+ð˜3í$ò™3õž5è•7À‹_Õ‹;Ùx¨¤žÕz݉*݆!܄܄܂ÜÜ܃ÜÜ€݄݄݆݃Ý…Ü‚܃ÜÛ€Ùz Ùz Ü€Ù{ Ú{ ã‚ èƒ åâ®pÀ€€( @ ^ƒ‰ˆˆˆˆˆˆˆˆˆwwwÿwwwÿwwwÿrrrÿ]]]ÿXXXÿXXXÿXXXÿXXXÿXXXÿXXXÿXXXÿXXXÿXXXÿXXXÿXXXÿXXXÿbbbÿ–––ÿ•G ”‰>ê…:ðƒ9ðƒ8ðƒ8ðƒ8ðƒ9ðƒ:ðƒ:ðƒ:ðƒ:ðƒ:ðŠF"ÿŠF"ÿŠF"ÿŠF"ÿŠE!ÿŠE!ÿŠE!ÿŠE!ÿŠE!ÿŠE!ÿŠE!ÿŠE!ÿŠE!ÿŠE!ÿŠE!ÿŠE!ÿŠE!ÿxG.ÿa^]ÿ¡Kÿ¦S(ÿ¤O$ÿ¢N!ÿ¢N!ÿ¢N!ÿ¢N!ÿ¡N"ÿ M"ÿ¡M"ÿ¢M"ÿ¢M"ÿ¢M"ÿ¢M"ÿ¢M"ÿ¢M"ÿ¢M"ÿ¢M"ÿ¢M"ÿ¢M"ÿ¢M"ÿ¢M"ÿ¢M"ÿ¢M"ÿ¢M"ÿ¢N"ÿ M"ÿ M"ÿ¡O$ÿ¤S)ÿ¤O"ÿ[PJÿ´lAÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿúÿÿÿ÷ÿÿÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿÿÿÿÿÿÿÉ—sÿaSKÿ²j@ÿÿÿÿÿÿÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿþÿÿÿÿÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÇ—zÿ^RKÿ³h:ÿÿÿÿÿüÿÿÿüÿÿÿûÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿùõóÿèàÛÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿéâÜÿðïìÿúÿÿÿúÿÿÿúÿÿÿüÿÿÿÿÿÿÿÈ”sÿ\QKÿµi7ÿÿÿÿÿýÿÿÿúÿÿÿùÿÿÿûÿÿÿûÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿõöõÿ¢kNÿ̳¤ÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿÖøÿ›aCÿòñïÿúÿÿÿúÿÿÿûÿÿÿÿÿÿÿÊ•rÿ]RKÿ·l6ÿÿÿÿÿþÿÿÿûÿÿÿüÿÿÿüÿÿÿûÿÿÿúÿÿÿúÿÿÿúÿÿÿòñïÿ¢lPÿ¡iLÿùýüÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿ¦sXÿeGÿïìèÿúÿÿÿûÿÿÿÿÿÿÿÌ–qÿ^RKÿ»n5ÿÿÿÿÿþÿÿÿùÿÿÿùÿÿÿùÿÿÿúÿÿÿúÿÿÿúÿÿÿÛÌÂÿ–Y8ÿ‹F#ÿѶ¨ÿßÒÉÿßÒÉÿßÒÉÿßÒÉÿßÒÉÿßÒÉÿßÒÉÿßÒÉÿßÒÉÿßÒÉÿßÒÉÿÒ¼¯ÿŒH$ÿ“T2ÿØÇ¼ÿûÿÿÿÿÿÿÿΗnÿ^RKÿ¾o1ÿÿÿÿÿÿÿÿÿùÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿçßÙÿ‘Q/ÿŠE!ÿŠE!ÿŠE!ÿŠE!ÿŠE!ÿŠE!ÿŠE!ÿŠE!ÿŠE!ÿŠE!ÿŠE!ÿŠE!ÿŠE!ÿŠE!ÿŠE!ÿŠE!ÿŠE!ÿN+ÿßÑÈÿÿÿÿÿЙmÿ^RKÿÁp0ÿÿÿÿÿÿÿÿÿùÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿòñïÿ¬}dÿ‹F#ÿÝɾÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿßÓÊÿŒH$ÿ¥qVÿðîêÿûÿÿÿÿÿÿÿÒšlÿ_RKÿÃr.ÿÿÿÿÿÿÿÿÿùÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿ¹“ÿ“T2ÿóóðÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿ÷ùøÿ˜\<ÿ´‹tÿùýüÿúÿÿÿûÿÿÿÿÿÿÿÕ›kÿ_TLÿÃr.ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¸ŽxÿÀ›ˆÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿˬœÿ¯fÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÕ›kÿ[UQÿÃr.ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÕ›kÿ[UQÿÃr.ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÕ›kÿ[UQÿÃr.ÿÿÿÿÿÿÿÿÿÿÿÿÿ·ŒvÿŠE!ÿ¨uZÿͯ ÿ°iÿÿÿÿÿα¡ÿªx^ÿÿÿÿÿÿÿÿÿ³†oÿßÿÿÿÿÿ³†oÿßÿÿÿÿÿϳ¥ÿŠE!ÿ¥pTÿúöõÿ¯hÿŠE!ÿN+ÿž‹ÿÿÿÿÿÿÿÿÿÕ›kÿ[UQÿÃr.ÿÿÿÿÿÿÿÿÿéÜÕÿŠE!ÿ£lPÿº‘|ÿŒH$ÿ•W7ÿÿÿÿÿ¼•€ÿŽK(ÿÿÿÿÿÿÿÿÿš^?ÿ¯fÿÿÿÿÿš^?ÿ¯fÿÿÿÿÿ¦rWÿ•W7ÿα¡ÿ¸Žxÿ‹F#ÿ½–‚ÿ±ƒlÿŠE!ÿÞÊÀÿÿÿÿÿÕ›kÿ[UQÿÃr.ÿÿÿÿÿÿÿÿÿÚźÿŠE!ÿÝÉ¿ÿÿÿÿÿ¨tYÿ•W7ÿÿÿÿÿ¼•€ÿŽK(ÿÿÿÿÿÿÿÿÿš^?ÿ¯fÿÿÿÿÿš^?ÿ¯fÿÿÿÿÿŸfIÿªx^ÿÿÿÿÿæ×ÏÿÓ¹«ÿúöõÿϳ¤ÿŠE!ÿα¡ÿÿÿÿÿÕ›kÿ[UQÿÃr.ÿÿÿÿÿÿÿÿÿÖźÿŠE!ÿâÖÎÿúÿÿÿ±†nÿ•W7ÿúÿÿÿº•€ÿI&ÿÿÿÿÿúÿÿÿ™^?ÿ­fÿúÿÿÿ™^?ÿ­fÿúÿÿÿžfIÿªy_ÿúÿÿÿôõóÿ®hÿŠE!ÿŠE!ÿŽL)ÿéâÜÿÿÿÿÿÕ›kÿ[UQÿÆs-ÿÿÿÿÿÿÿÿÿÖźÿŠE!ÿâØÐÿùÿÿÿ±†nÿ•W7ÿúÿÿÿº•€ÿŠE!ÿùöôÿúÿÿÿ”V5ÿ­fÿúÿÿÿ™^?ÿ­fÿúÿÿÿžfIÿªy_ÿúÿÿÿ¼™…ÿŠE!ÿ¡kNÿƨ—ÿîëçÿúÿÿÿÿÿÿÿלjÿ\UQÿÉv,ÿÿÿÿÿÿÿÿÿןÿŠE!ÿãØÐÿüÿÿÿ²†nÿ•W7ÿúÿÿÿº•€ÿŠE!ÿº’}ÿÑ»®ÿ‹F#ÿ´‹uÿúÿÿÿ™^?ÿ­fÿÛËÁÿ”V5ÿš_@ÿÑ»­ÿ´‹uÿ”V5ÿßÒÉÿ»—ƒÿ™^>ÿïêæÿÿÿÿÿÙiÿ\UQÿËw*ÿÿÿÿÿÿÿÿÿÖźÿŠE!ÿäØÐÿûÿÿÿ±†nÿ•W7ÿúÿÿÿº•€ÿ”V5ÿ¨tYÿŠE!ÿŒH$ÿÞÑÈÿúÿÿÿ™^?ÿ­fÿº•€ÿŠE!ÿŠE!ÿ¦tYÿâØÐÿ‘Q/ÿŠE!ÿŠE!ÿ¬~fÿÿÿÿÿÿÿÿÿÛžhÿ\UQÿÍx'ÿÿÿÿÿþÿÿÿùÿÿÿùÿÿÿùÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿÿÿÿÿáÕÍÿîëçÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿžfIÿªy_ÿúÿÿÿúÿÿÿõöõÿßÒÉÿåÞ×ÿùÿÿÿÿÿÿÿÿÿÿÿÝ¡fÿ\UQÿÐz&ÿÿÿÿÿÿÿÿÿùÿÿÿùÿÿÿùÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿÿÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿ™^?ÿ­fÿúÿÿÿº”€ÿªy_ÿúÿÿÿûÿÿÿýÿÿÿûÿÿÿþÿÿÿùÿÿÿÿÿÿÿÿÿÿÿߢeÿ\UQÿÒ{$ÿÿÿÿÿÿÿÿÿúÿÿÿÿÿÿÿÿÿÿÿùÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿÿÿÿÿúÿÿÿúÿÿÿùÿÿÿùÿÿÿ³†oÿÁŸÿùÿÿÿúÿÿÿæÞØÿúÿÿÿúÿÿÿûÿÿÿùÿÿÿûÿÿÿùÿÿÿûÿÿÿÿÿÿÿà£bÿ\UQÿ×$ÿÿÿÿÿÿÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿÿÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿýÿÿÿÿÿÿÿÿÿÿÿâ£bÿ\UQÿÞ†*ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿç©cÿ\UQÿÔ}ÿÜßÎÿÚÕ½ÿÙÒ¹ÿÙÒ¹ÿÚÓ¹ÿÚÓ¹ÿÚÒ¹ÿÚÓ¹ÿÚÓ¹ÿÚÓ¹ÿÚÓ¹ÿÙÒ¹ÿÙÒ¹ÿÙÓ¹ÿÙÒ¹ÿÙÒ¹ÿÚÒ¹ÿÚÒ¹ÿÚÒ¹ÿÙÒ¹ÿÙÓ¸ÿØÏ¶ÿÖͳÿÙÑ·ÿØÏµÿØÏ´ÿÝÑ´ÿãÒªÿÞÜÃÿÔ7ÿ`^]ÿ³Yÿ©Lÿ¢FÿŸCÿŸEÿŸDÿŸEÿŸCÿŸCÿŸCÿŸDÿŸCÿŸCÿŸCÿ EÿŸCÿŸCÿŸDÿŸEÿŸEÿŸEÿžCÿ¤IÿªSÿ@ÿ¦Jÿ¦Iÿ Bÿ‰Iÿ KÿºYÿ```ÿ¾fÿËkÿÒmÿÑkÿÑnÿÐnÿÑnÿÑmÿÒqÿÒrÿÒrÿÑqÿÑnÿÑnÿÑnÿÏmÿÏmÿÑlÿÑnÿÑoÿÏoÿÏiÿå—@ÿð«bÿÏjÿì¡Qÿö¢Dÿœf>ÿ.jýÿ~r‡ÿÏoÿnnnÿÍnòÛ‰*ÿí§Vÿð=ÿðœ;ÿð?ÿñ›7ÿð˜3ÿñŸ?ÿî—/ÿî–/ÿð›8ÿð›7ÿð›7ÿîš5ÿðš6ÿðš6ÿï•-ÿï’&ÿð”*ÿí‘'ÿíŽ!ÿð”+ÿð˜3ÿí$ÿò™3ÿõž5ÿè•7ÿÀ‹_ÿÕ‹;ÿÙxÿ¡˜ÿÚtbÕx ýÜ„ÿÜ€þÛ}þÛ{ þÛz þÛz þÛ| þÛz þÛy þÜ|þÜ}þÜ~ÿÜ~ÿÜ€ÿ݆ÿÝ…ÿÜ‚ÿ܃ÿÜÿÛ€ÿÙz ÿÙz ÿÜ€ÿÙ{ ÿÚ{ ÿã‚ ÿèƒ ÿåÿâ¬oÿòòòÿ(  ïïïÿ”””ÿÿ~~~ÿ~~~ÿ~~~ÿ~~~ÿ~~~ÿ~~~ÿ~~~ÿ~~~ÿ~~~ÿ~~~ÿ}}}ÿ„„„ÿ°°°ÿº€bÿ”Y9ÿŒQ1ÿŒQ1ÿ‹Q1ÿŒQ1ÿŒQ1ÿŒQ1ÿŒQ1ÿŒQ1ÿŒQ1ÿŒQ1ÿ‰O1ÿŽQ3ÿrP?ÿÿײ›ÿúõóÿùõòÿøõòÿ÷õòÿùõòÿùõòÿùõòÿùõòÿùõòÿùõòÿùõòÿúõóÿùõòÿ…^GÿÿÛ¹£ÿÿÿÿÿýÿÿÿýÿÿÿûüüÿÉ––ÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿìÝÝÿ×´´ÿýÿÿÿþÿÿÿ…^GÿÿݹŸÿÿÿÿÿúÿÿÿôññÿ¨TTÿÝÂÂÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿ­^^ÿÐ¥¥ÿýÿþÿˆ`EÿÿÛµ™ñÿÿÿÿÿÿÿÿÒ¥¥ÿŠÿ»vvÿÂ……ÿÂ……ÿÂ……ÿÂ……ÿÂ……ÿ @@ÿŸ>>ÿóææÿwH'ÛpÞ·—ñÿÿÿÿúÿÿÿúÿÿÿæÕÕÿ¹wwÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿñììÿ¯bbÿøùùÿýÿþÿwH'ÛpḖñúõõÿâÎÎÿçÖÖÿõõõÿèÚÚÿñííÿíääÿæÕÕÿùüüÿßÇÇÿõõõÿÞÃÃÿóíìÿzI&Ûp五ñµiiÿ°ddÿ‘""ÿåÓÓÿ²hhÿÕ²²ÿÄÿ¥MMÿÚ»»ÿœ::ÿªWWÿ´mmÿ™33ÿ}L%Ûp五ñªUUÿñââÿ99ÿéÓÓÿ±ccÿÙ²²ÿÆÿ§MMÿÙ²²ÿ¹rrÿÝ»»ÿ“''ÿ¾||ÿ}L%Ûpæ»’ñªUUÿòääÿž<<ÿéÓÓÿ•++ÿ¨PPÿÍ››ÿ§MMÿ¿~~ÿž==ÿ¬YYÿ²ddÿºuuÿ€N%Ûpæ»’ñëÖÖÿ÷ùùÿãÐÐÿõõõÿêÝÝÿÞÅÅÿúÿÿÿѨ¨ÿÍ¡¡ÿªXXÿôððÿÞÃÃÿ÷ñðÿ€N%ÛpìÀ–ñÿÿÿÿÿÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿÿÿÿÿÓ¨¨ÿú÷÷ÿçÐÐÿþÿÿÿÿÿÿÿÿÿÿÿƒM!ÛpÞ°}ñåà×ÿäÜÏÿåÝÐÿåÜÐÿåÜÐÿäÝÐÿåÜÐÿåÜÐÿäÜÐÿãÚËÿãÚÌÿçÛÉÿìÚ½ÿŠc>Úpºcø½dÿ¼c ÿ½d ÿ½d ÿ½dÿ¼c ÿ¼b ÿ¼c ÿ¼c ÿÈx(ÿÊs ÿ³o7ÿ|WRÿšzWÍRÖy ÀäŽ*ñå‰ëå‡ëäˆëä†ëä‰ëä‡ëä…ëâ‚ëå†ëç‡ëáˆ$ìË1ï¿m p (0`€€€@@@   ÀÀÀAAA€aaa___000```A°°°¿¿¿ÿÿÿàààû÷÷Àöííúõõ÷îîìÙÙ¶mmĉ‰¯^^¨PP @@îÝÝ­ZZÝ»»Ð¡¡Èбbbùóóñãã¾||‘""¦LL©RR“''Ò¥¥èÑÑ‘##Ò¤¤½zzˆþüü“&&âÄÄüùù¥KKœ99êÕÕž<<³ffâÅÅéÓÓøññ¾}}™22΂Û··òååׯ¯”))„ µjjñââ®\\æÍ͉Ù³³‡Ì™™ß¾¾¿Ñ¢¢‹Ù²²£FF† ²ee˜00øððºttãÆÆƒäÈÈàÁÁðááæÌÌ̘˜¯__·ooÔ©©Ë––Ö­­–--›66ΜœÂ……èÐÐíÛÛ† ¸qqåËË;;¹ssºuu¼yyäÉÉ‹ذ°Ü¹¹Œõë댷nnÆŒŒË——ÐÐÐ ~}+{|9!zPl:w/xy!:st?u/v3P@"qr&R#no8]]]]]]]]]]]]]]]]]pW9i[jklm0c@f0ghcIde``ab]^B]B_]$6!Y-C,Z[\&'T@@U-C,V!WX!RE8MNO-C,PQR#SKIJK-C,0:LM+,-C,GH@+,-'C,DEF#+,->?,:@8AB#+,--3456789:;<=+,-)./012 !"#$%!&'()*        units-2.19/units.dvi0000664000175000017500000103151413473351441013747 0ustar adrianadrian÷ƒ’À;è TeX output 2019.05.28:2032‹ÿÿÿÿŸòŽ ƒ33‘G ý|ÌÍïpapersize=8.5in,11in žÎóQÂÖN ¼j cmbx12ëQUnits‘ÆqCon–ÿZv“ersionŽŽŸ‰±ž¸Ÿ šª’Æó6Kñ`y ó3 cmr10áEdition–¦f2.16“for“ó7ßê  b> ó3 cmmi10é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘ $á5Ž©33‘Gëc5‘32Unit‘ffExpressions‘Ž‘32ëk:Ž–Q ‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž‘ ƒùëc6Ž¡‘!Gá5.1‘ ó5OpMÞerators‘Ï ‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘QPá6ޤ 33‘!G5.2‘ ó5Sums–¦fand“Di erences“of“Units‘$‘‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘¦Ùá8Ž¡‘!G5.3‘ ó5Num²!bMÞers–¦fas“Units‘8‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘ºdá9Ž¡‘!G5.4‘ ó5Built-in‘¦fF‘ÿeunctions‘¯×‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘2á9Ž¡‘!G5.5‘ ó5Previous‘¦fResult‘?æ‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘Â.á10Ž¡‘!G5.6‘ ó5Complicated–¦fUnit“Expressions‘ˆÓ‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘ á12Ž¡‘!G5.7‘ ó5Bac•²!kw“ards›¦fCompatibilit“y:‘ÝÝ`â*á'˜and˜`â-á'‘;å‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘¾,á13ަ‘Gëc6‘32Nonlinear–ffUnit“Con•ŒÌv“ersions‘ä‘32ëk:Ž–Q ‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž‘ \ëc13ŽŸÿ‘!Gá6.1‘ ó5T‘ÿeempMÞerature‘¦fCon•²!v“ersions‘Ù©‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘[ñá13Ž¡‘!G6.2‘ ó5Other–¦fNonlinear“Units‘¾k‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘@³á14ަ‘Gëc7‘32Unit›ffLists:‘32Con•ŒÌv“ersion˜to˜Sums˜of˜Units‘½“‘32ëk:Ž–Q ‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž‘³ ëc16ŽŸ!ÿ‘G8‘32Using–ffCGS“UnitsPk‘32ëk:Ž–Q ‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž‘Eâëc20ŽŸÿ‘!Gá8.1‘ ó5SpMÞecifying–¦fCGS“Units‘AΑé˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘Äá21Ž¡‘!G8.2‘ ó5CGS–¦fUnits“Systems/‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘“wá21Ž¡‘!G8.3‘ ó5Con•²!v“ersions›¦fBet“w“een˜Di eren“t˜Systems‘·‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘9Æá22Ž¡‘!G8.4‘ ó5Prompt‘¦fPre x‘ÆB‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘H‰á23ަ‘Gëc9‘32Logging‘ffCalculations‘ž ‘32ëk:Ž–Q ‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž‘“‚ëc23ޤ!ÿ‘G10‘32In•ŒÌv“oking‘ffëgunits‘&‘32ëk:Ž–Q ‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž‘ ëc25Ž¡‘G11‘32Output‘ffStŒÌyles‘.‘32ëk:Ž–Q ‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž‘ #’ëc30ŽŽŒ‹ÿÿÿþ5Ÿò’½š©áiiŽŽŽ ƒ33 ý†ÌÍ‘Gëc12‘32Adding–ffY‘þ¦four“Own“De nitions‘g‘32ëk:Ž–Q ‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž‘ \øëc31Ž©ÿ‘!Gá12.1‘ ó5Units–¦fData“Files"¸‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘¥á32ޤ 33‘!G12.2‘ ó5De ning–¦fNew“Units“and“Pre xesE©‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘Çñá32Ž¡‘!G12.3‘ ó5De ning–¦fNonlinear“Units‘¿[‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘A£á34Ž¡‘!G12.4‘ ó5De ning–¦fPiecewise“Linear“Units‘SC‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:ޑՋá36Ž¡‘!G12.5‘ ó5De ning–¦fUnit“List“Aliases‘î‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘pZá37ŽŸ33‘Gëc13‘32Numeric–ffOutput“F‘þ¦format‘+ ‘32ëk:Ž–Q ‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž‘ !ëc38ަ‘!Gá13.1‘ ó5F‘ÿeormat‘¦fSpMÞeci cation‘bç‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘å.á38Ž¡‘!G13.2‘ ó5Flags> ‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘ÀRá39Ž¡‘!G13.3‘ ó5Field‘¦fWidth‘º•‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘<Ýá39Ž¡‘!G13.4‘ ó5Precision‘üË‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘á40ŽŸ33‘Gëc14‘32Los3calization‘žû‘32ëk:Ž–Q ‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž‘ ”rëc41ަ‘!Gá14.1‘ ó5LoMÞcale‘fâ‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘é*á41Ž¡‘!G14.2‘ ó5Additional‘¦fLoMÞcalizationl¥‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘îíá42ŽŸ33‘Gëc15‘32En•ŒÌvironmen“t‘ffV‘þ¦fariables‘ ‘32ëk:Ž–Q ‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž‘ ˜ëc43ޤ!ÿ‘G16‘32Data‘ffFiles‘Ž$‘32ëk:Ž–Q ‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž‘ ƒœëc44Ž¡‘G17‘32Unico•s3de‘ffSupp“ort‘™–‘32ëk:Ž–Q ‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž‘ëc45Ž¡‘G18‘32Readline‘ffSupps3ort‘îé‘32ëk:Ž–Q ‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž‘ äaëc46Ž¡‘G19‘32Ups3dating–ffCurrency“ExcŒÌhange“Rates‘jŸ‘32ëk:Ž–Q ‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž‘ `ëc46Ž¡‘G20‘32Database–ffCommand“SynŒÌtaxDW‘32ëk:Ž–Q ‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž‘9Ïëc48Ž¡‘G21‘32GNU–ffF‘þ¦free“Dos3cumenŒÌtation“License‘õO‘32ëk:Ž–Q ‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž‘ êÆëc49Ž¡‘GIndexq@‘32ëk:Ž–Q ‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž‘f·ëc57ŽŽŒ‹&Ÿò‘GáUnits‘¦fCon•²!v“ersion’YÞ*1ŽŽŽ ƒ33 ý ÌÍ‘GëZ1‘ ¸QOv‘ÿuÂerview–z³of“ó]߆µTG® cmtt12ë]unitsŽŽŸ ‹‘GáThe–Íâunits“áprogram“con•²!v“erts›Íquan“tities˜expressed˜in˜v‘ÿdDarious˜systems˜of˜measuremen“t˜to˜theirޤ 33‘Gequiv‘ÿdDalenš²!ts–;in“other‘;systems“of“measuremen˜t.‘›»Lik˜e“man˜y“similar‘;programs,‘`-it“can“handleŽ¡‘Gm•²!ultiplicativ“e–\{scale“cš²!hanges.‘It“can‘\zalso“handle“nonlinear“con˜v˜ersions“suc˜h“as“F‘ÿeahrenheitŽ¡‘Gto–ÙaCelsius;Ÿü¾óÙ“ Rcmr7®1Ž‘ ïQásee›Ù`Section“6.1“[T‘ÿeempMÞerature“Con•²!v“ersions],‘&page˜13.‘vÎThe˜program–Ùacan“alsoŽ¡‘GpMÞerform›Y§con•²!v“ersions–Y¨from˜and˜to“sums˜of˜units,‘isuc²!h˜as“con•²!v“erting˜bMÞet“w“een˜meters‘Y¨and˜feetŽ¡‘Gplus‘¦finc²!hes.Ž©‘x‘!GBasic–JkopMÞeration“is“simple:‘%çyš²!ou“en˜ter“the“units“that“y˜ou“w˜an˜t“to“con˜v˜ert“ó9ý': ó3 cmti10äfr‘ÿp¹om‘!váand“theŽ¡‘Gunits–€ that“yš²!ou“w˜an˜t“to“con˜v˜ert“ätoá.‘ÑY‘ÿeou“can“use“the“program“in˜teractiv˜ely“with“prompts,‘‡¸orŽ¡‘Gy²!ou–¦fcan“use“it“from“the“command“line.ަ‘!GBeyš²!ond–ˆsimple‘‰unit“con˜v˜ersions,‘:âunits›‰ácan“bMÞe˜used“as˜a“general-purpMÞose˜scien²!ti c“cal-Ž¡‘Gculator–m(that‘m)kš²!eeps“trac˜k“of“units›m)in“its“calculations.‘ÊÉY‘ÿeou“can“form“arbitrary˜complex“math-Ž¡‘Gematical– Úexpressions“of“dimensions‘ Ûincluding“sums,–?wprošMÞducts,“quotien²!ts,“p˜o•²!w“ers,‘?wand‘ Úev“enŽ¡‘GroMÞots–Χof“dimensions.‘•óThš²!us“y˜ou“can“ensure“accuracy“and“dimensional“consistency“when“w˜ork-Ž¡‘Ging–!Çwith“long›!Èexpressions“that“in•²!v“olv“e‘!Çman“y˜di eren“t–!Çunits“that“ma•²!y˜com“bine–!Çin“complexŽ¡‘Gw•²!a“ys;–¦ffor“an“illustration,“see“Section“5.6“[Complicated“Unit“Expressions],“page“12.ަ‘!GThe–òunits“are“de ned“in“an“external“data“ le.‘ÀÃY‘ÿeou“can“use“the“extensiv²!e“data“ le“thatŽ¡‘Gcomes–M¦with›M¥this“program,‘wuor“y²!ou˜can“pro•²!vide˜y“our‘M¦o“wn˜data–M¦ le“to˜suit“y²!our˜needs.‘ÓœY‘ÿeouŽ¡‘Gcan–¦falso“use“yš²!our“o˜wn“data“ le“to“supplemen˜t“the“standard“data“ le.ަ‘!GY‘ÿeou–‘Ucan›‘Tc²!hange“the˜default“bMÞeha²!vior˜of“âunits“áwith˜v‘ÿdDarious“options˜giv²!en“on˜the“commandŽ¡‘Gline.‘ÝÝSee–¦fChapter“10“[In•²!v“oking–¦fUnits],“page“25,“for“a“description“of“the“a²!v‘ÿdDailable“options.ŽŸ ¼Š‘GëZ2‘ ¸QIn‘ÿuÂteracting–z³with“ë]unitsŽŽŸ ‹‘GáT‘ÿeo›_^in•²!v“ok“e˜âunits˜áfor˜in“teractiv“e˜use,‘›t“ypMÞe˜ó=ßêúóprompt,‘¢ t˜ypMÞe“the“quan˜tit˜y‘ ôand“units“that“y˜ou“are‘ ôcon˜v˜erting“äfr‘ÿp¹omá.‘Ü F‘ÿeorŽ¡‘Gexample,‘ˆxif›€üy•²!ou‘€ýw“an“t˜to‘€ýcon“v“ert˜ten–€ýmeters˜to“feet,–ˆxt²!ypMÞe˜è10‘¦fmetersá.‘ÑeNext,“âunits‘€ýáwill˜prin²!tŽ¡‘G`âYou‘¦fwant:á'Ž‘IÊS.‘Z=Y‘ÿeou–z†should‘z‡tš²!ypMÞe“the“units“y˜ou“w˜an˜t“to“con˜v˜ert“ätoá.‘Z>T‘ÿeo“con˜v˜ert“to“feet,‘¯Žy˜ouŽ¡‘Gw•²!ould›ž%t“ypMÞe˜èfeetá.‘ÅIf˜the˜âreadline˜álibrary˜w“as˜compiled˜in,‘Üthen˜âtab˜áwill˜complete˜unitŽ¡‘Gnames.‘º»See–<ÿChapter›<þ18“[Readline“SuppMÞort],‘Rpage“46,‘Rfor“more˜information“abMÞout“âreadlineá.Ž¡‘GT‘ÿeo–¦fquit“the“program“t²!ypMÞe“èquit“áor“èexit“áat“either“prompt.ަ‘!GThe–‡rresult›‡qwill“bMÞe˜displa•²!y“ed‘‡rin˜t“w“o›‡rw“a“ys.‘Ó‹The˜ rst–‡qline˜of“output,‘¢whic²!h˜is“mark²!ed˜withŽ¡‘Ga–èL`â*á'›èMto“indicate˜m•²!ultiplication,‘øÆgiv“es–èLthe˜result“of“the˜con•²!v“ersion‘èLy“ou˜ha“v“e‘èLask“ed˜for.‘£TheŽ¡‘Gsecond–#line“of“output,‘Rwhicš²!h“is“mark˜ed“with‘$a“`â/á'“to“indicate“division,‘Rgiv˜es“the“in˜v˜erse“ofŽ¡‘Gthe›¦fcon•²!v“ersion˜factor.‘ÝÝIf˜y“ou˜con“v“ert˜10˜meters˜to˜feet,˜âunits˜áwill˜prin“tŽŸ‘w‘EøDâ*‘¿ª32.808399Ž¡‘EøD/‘¿ª0.03048ŽŽ‘GŸüD‰ffŠ=Ÿ ó/‘ãŸü-=®1ŽŽ‘óo´‹Ç cmr9¬But–F‘ÿ:«ahrenheit“to“Celsius›is“linear,‘Yíy¾9ou“insist.‘'zNot“so.‘'yA‘¿transformation“ó5ùž" cmmi9²T‘aå¬is“linear“if˜²T‘Hã¬(²x–»W¬+“²yRª¬)‘B’=ŽŸ €‘²T›Hã¬(²x¬)–8+“²T˜¬(²yRª¬)–Tand“this“fails“for“²T˜¬(²x¬)–‘Æ=“²ax–8¬+“²b¬.‘pThis–Ttransformation“is“ane,“but“not“linear.ŽŽŒ‹BSŸò‘GáUnits‘¦fCon•²!v“ersion’YÞ*2ŽŽŽ ƒ33 ý ÌÍ‘Gwhic•²!h›#åtells‘#æy“ou˜that–#æ10˜meters“equals˜abMÞout“32.8˜feet.‘V\The˜second“n•²!um“bMÞer˜giv“es‘#æthe˜con-ޤ 33‘Gv²!ersion–g­in“the›g¬oppMÞosite“direction.‘ÈõIn˜this“case,‘t8it“tells“y²!ou“that˜1“foMÞot“is“equal˜to“abMÞout“0.03Ž¡‘Gdek›ÿdDameters–¦fsince“the“dek˜ameter“is“10“meters.‘ÝÝIt“also“tells“y²!ou“that“1/32.8“is“abMÞout“0.03.Ž©¹‘!GThe–¶¸âunits“áprogram“prinš²!ts“the“in˜v˜erse“bMÞecause“sometimes“it“is“a“more“con˜v˜enien˜t“n˜um˜bMÞer.Ž¡‘GIn–åthe›åexample“abMÞo•²!v“e,– ±for˜example,“the‘åin•²!v“erse˜v‘ÿdDalue–åis“an˜exact“con•²!v“ersion:‘}-a–åfoMÞot˜is“exactlyŽ¡‘G0.03048–¦fdek‘ÿdDameters.‘ÝÝBut“the“n•²!um“bMÞer›¦fgiv“en˜the˜other˜direction˜is˜inexact.ަ‘!GIf–¦fyš²!ou“con˜v˜ert“grains“to“pMÞounds,“y˜ou“will“see“the“follo˜wing:ަ‘.ùœâYou–¿ªhave:“grainsŽ¡‘.ùœYou–¿ªwant:“poundsŽ¡‘\öì*‘¿ª0.00014285714Ž¡‘\öì/‘¿ª7000ŽŽŸ<¸R‘GáF‘ÿerom–CTthe“second›CUline“of“the“output˜y²!ou“can“immediately“see“that˜a“grain“is“equal˜to“a“sev²!enŽ¡‘Gthousandth–‹Kof›‹La“pMÞound.‘ÔÔThis“is˜not“so“ob²!vious“from˜the“ rst“line˜of“the“output.‘ÔÔIf˜y²!ou“ ndŽ¡‘Gthe–¦foutput“format“confusing,“try“using“the“â--verbose“áoption:ަ‘.ùœâYou–¿ªhave:“grainŽ¡‘.ùœYou–¿ªwant:“aeginaminaŽ¡‘\öìgrain–¿ª=“0.00010416667“aeginaminaŽ¡‘\öìgrain–¿ª=“(1“/“9600)“aeginaminaŽŽŸ<¸Q‘GáIf–Õpy²!ou›Õorequest“a˜con•²!v“ersion‘ÕpbMÞet“w“een˜units–Õpthat˜measure“reciproMÞcal“dimensions,‘á1then“âunitsŽ¡‘Gáwill–ÀXdisplaš²!y“the‘ÀYcon˜v˜ersion“results“with“an“extra“note‘ÀYindicating“that“reciproMÞcal“con˜v˜ersionŽ¡‘Ghas–¦fbMÞeen“done:ަ‘.ùœâYou–¿ªhave:“6“ohmsŽ¡‘.ùœYou–¿ªwant:“siemensŽ¡‘\öìreciprocal‘¿ªconversionŽ¡‘\öì*‘¿ª0.16666667Ž¡‘\öì/‘¿ª6ŽŽŸIë…‘GáReciproMÞcal›ã¬con•²!v“ersion–ã­can˜bMÞe“suppressed˜b²!y“using˜the˜â--strict“áoption.‘•°As“usual,‘òþuse˜theŽ¡‘Gâ--verbose–¦fáoption“to“get“more“comprehensible“output:ަ‘.ùœâYou–¿ªhave:“texŽ¡‘.ùœYou–¿ªwant:“typpŽ¡‘\öìreciprocal‘¿ªconversionŽ¡‘\öì1–¿ª/“tex“=“496.05465“typpŽ¡‘\öì1–¿ª/“tex“=“(1“/“0.0020159069)“typpŽŸff‘.ùœYou–¿ªhave:“20“mphŽ¡‘.ùœYou–¿ªwant:“sec/mileŽ¡‘\öìreciprocal‘¿ªconversionŽ¡‘\öì1–¿ª/“20“mph“=“180“sec/mileŽ¡‘\öì1–¿ª/“20“mph“=“(1“/“0.0055555556)“sec/mileŽŽ ™·‘GáIf›—îy•²!ou‘—ïen“ter˜incompatible˜unit˜t“ypMÞes,‘ÔPthe˜âunits‘—ïáprogram˜will˜prin“t˜a‘—ïmessage˜indicatingŽ¡‘Gthat–¦fthe“units“are“not“conformable“and“it“will“displaš²!y“the“reduced“form“for“eac˜h“unit:ŽŽŒ‹SŒŸò‘GáUnits‘¦fCon•²!v“ersion’YÞ*3ŽŽŽ ƒ33 ý ÌÍ‘.ùœâYou–¿ªhave:“ergs/hourޤ 33‘.ùœYou–¿ªwant:“fathoms“kg^2“/“dayŽ¡‘.ùœconformability‘¿ªerrorŽ¡‘\öì2.7777778e-11–¿ªkg“m^2“/“sec^3Ž¡‘\öì2.1166667e-05–¿ªkg^2“m“/“secŽŽŸJff‘GáIf–{yš²!ou“only“w˜an˜t›{to“ nd“the“reduced“form“or“de nition“of˜a“unit,‘ƒÁsimply˜press“âEnter“áat“theޤ 33‘G`âYou‘¦fwant:á'Ž‘Mp¹prompt.‘ÝÝHere–¦fis“an“example:Ž©™š‘.ùœâYou–¿ªhave:“janskyŽ¡‘.ùœYou‘¿ªwant:Ž¡‘\öìDefinition:–¿ªfluxunit“=“1e-26“W/m^2“Hz“=“1e-26“kg“/“s^2ŽŽŸ0‘GáThe–w­output“from“âunits“áindicates›w®that“the“jansky“is“de ned“to“bMÞe“equal˜to“a“ uxunit“whic²!hŽ¡‘Gin–÷¶turn›÷·is“de ned“to˜bMÞe“a˜certain“com²!bination“of˜w²!atts,–¦meters,“and˜hertz.‘£¢The˜fully‘÷¶reducedŽ¡‘G(and–¦fin“this“case“somewhat“more“cryptic)“form“appMÞears“on“the“far“righ²!t.ަ‘!GSome–½named›½units“are“treated˜as“dimensionless˜in“some“situations.‘"These˜units“includeŽ¡‘Gthe–joradian“and“steradian.‘)øThese“units“will“bMÞe“treated“as“equal“to“1“in“units“con•²!v“ersions.Ž¡‘GP•²!o“w“er–íïis“equal“to“torque“times“angular“v•²!eloMÞcit“y‘ÿe.‘´xThis›íïcon“v“ersion˜can˜only˜b•MÞe˜p“erformed˜ifŽ¡‘Gthe–¦fradian“is“dimensionless.ަ‘.ùœâYou–¿ªhave:“(14“ft“lbf)“(12“radians/sec)Ž¡‘.ùœYou–¿ªwant:“wattsŽ¡‘\öì*‘¿ª227.77742Ž¡‘\öì/‘¿ª0.0043902509ŽŽŸ=34‘GáIt–y;is“also“pšMÞossible“to“compute“ro˜ots‘y:and“other“non-in²!teger“p˜o•²!w“ers–y;of“dimensionless“units;Ž¡‘Gthis–¦falloš²!ws“computations“suc˜h“as“the“altitude“of“geosync˜hronous“orbit:ަ‘.ùœâYou–¿ªhave:“cuberoot(G“earthmass“/“(circle/siderealday)^2)“-“earthradiusŽ¡‘.ùœYou–¿ªwant:“milesŽ¡‘\öì*‘¿ª22243.267Ž¡‘\öì/‘¿ª4.4957425e-05ŽŽŸ=33‘GáNamed–Šdimensionless›‹units“are˜not“treated˜as“dimensionless“in˜other“con²!texts.‘®êThey“cannotŽ¡‘GbšMÞe–¦fused“as“exp˜onen²!ts“so“for“example,“`âmeter^radianá'“is“forbidden.ަ‘!GIf›.›y•²!ou‘.šw“an“t˜a–.šlist˜of“options˜y²!ou“can˜t²!ypMÞe˜è?“áat˜the“`âYou‘¦fwant:á'Ž‘@Aprompt.‘vzThe˜programŽ¡‘Gwill–@ªdispla²!y“a“list›@«of“named“units“that“are“conformable“with“the˜unit“that“yš²!ou“en˜tered“atŽ¡‘Gthe‘C_`âYou‘¦fhave:á'Ž‘>?Ëprompt›C_abMÞo•²!v“e.‘¼ÛConformable˜unit–C`äc‘ÿp¹ombinations‘)wáwill“not˜appMÞear˜on“this˜list.ަ‘!GTš²!yping–Dûèhelp‘Düáat“either“prompt“displa˜ys›Düa“short“help“message.‘¹Y‘ÿeou“can˜also“t²!ypMÞe“èhelpŽ¡‘Gáfollo•²!w“ed›50b“y˜a˜unit˜name.‘¸ This˜will˜in“v“ok“e˜a˜pager˜on˜the˜units‘5/data˜base˜at˜the˜pMÞoin“t˜whereŽ¡‘Gthat–„µunit›„¶is“de ned.‘Ò£Y‘ÿeou“can˜read“the˜de nition“and˜commen²!ts“that˜maš²!y“giv˜e‘„¶more“detailsŽ¡‘Gor–ê÷historical›êøinformation“abMÞout˜the“unit.‘Ÿd(Y‘ÿeou“can˜generally“quit˜out“of˜the“page˜b²!y“pressingŽ¡‘G`âqá'.)ަ‘!GTš²!yping‘½×èsearch–½Øó:p®0J ó3 cmsl10åtext‘ú×áwill“displa˜y›½×a“list˜of“all˜of“the˜units“whose˜names“con²!tain˜åtext‘úØáas˜aŽ¡‘Gsubstring–óÍalong“with“their“de nitions.‘ÆThis“maš²!y“help“in“the“case“where“y˜ou“aren't“sure“ofŽ¡‘Gthe–¦frigh²!t“unit“name.ŽŽŒ‹]±Ÿò‘GáUnits‘¦fCon•²!v“ersion’YÞ*4ŽŽŽ ƒ33 ý ÌÍ‘GëZ3‘ ¸QUsing–z³ë]units“ëZNon-In–ÿuÂteractiv“elyŽŽŸ >‘GáThe–ûtâunits›ûsáprogram“can“pMÞerform“units˜con•²!v“ersions›ûtnon-in“teractiv“ely˜from‘ûsthe˜commandޤ 33‘Gline.‘´þT‘ÿeo–Cqdo“this,›j´t²!ypMÞe“the“command,˜t²!ypMÞe“the“original“unit“expression,˜and“t²!ypMÞe“the“newŽ¡‘Gunits–±Ryš²!ou“w˜an˜t.‘þ¡If“a“units‘±Sexpression“con˜tains“non-alphan˜umeric“c˜haracters,‘´ y˜ou“ma˜y“needŽ¡‘Gto–¦fprotect“it“from“inš²!terpretation“b˜y“the“shell“using“single“or“double“quote“c˜haracters.ޤzâ‘!GIf–¦fyš²!ou“t˜ypMÞeŽ©zá‘.ùœâunits–¿ª"2“liters"“quartsŽ¡‘Gáthen–¦fâunits“áwill“prin²!tަ‘EøDâ*‘¿ª2.1133764ŽŸ 33‘EøD/‘¿ª0.47317647ŽŽŸ®‘Gáand–ì]then›ì^exit.‘¯ÃThe“output˜tells“y²!ou˜that“2“liters˜is“abMÞout˜2.1“quarts,‘ýÛor˜alternativ²!ely“thatޤ 33‘Ga–¦fquart“is“abMÞout“0.47“times“2“liters.ަ‘!Gâunits–‰èádoMÞes›‰énot“require˜a“space˜bMÞet•²!w“een‘‰èa˜n“umerical–‰èv‘ÿdDalue˜and“the˜unit,‘›so˜the“previousŽ¡‘Gexample–¦fcan“bMÞe“giv²!en“asŽŸzâ‘.ùœâunits–¿ª2liters“quartsަ‘Gáto›¦fa•²!v“oid˜ha“ving˜to˜quote˜the˜ rst˜argumen“t.ަ‘!GIf›»the‘»con•²!v“ersion˜is–»successful,‘ÀAthen“âunits˜áwill“return˜success˜(zero)“to˜the“calling˜en²!vi-Ž¡‘Gronmen•²!t.‘›žIf›:ûy“ou‘:üen“ter˜non-conformable–:üunits,‘` then“âunits˜áwill“prin²!t˜a“message˜giving“theŽ¡‘Greduced–¦fform“of“eacš²!h“unit“and“it“will“return“failure“(nonzero)“to“the“calling“en˜vironmen˜t.Ž©zâ‘!GWhen›d4y•²!ou‘d5in“v“ok“e˜âunits˜áwith–d5only˜one“argumen²!t,‘Ó§it˜will“prin²!t˜the˜de nition“of˜theŽ¡‘GspMÞeci ed–êunit.‘ª]It“will›ê‘return“failure˜if“the˜unit“is˜not“de ned˜and“success˜if“the˜unit“isŽ¡‘Gde ned.ŽŸ"]‘GëZ4‘ ¸QUnit‘z³De nitionsŽŽŸ >‘GáThe›;2con•²!v“ersion–;3information˜is˜read“from˜a˜units˜data“ le˜that˜is“called˜âdefinitions.unitsŽ¡‘Gáand–\ is“usually‘\ŸloMÞcated“in“the“â/usr/share/units“ádirectory‘ÿe.‘ŠIf“yš²!ou“in˜v˜ok˜e‘\Ÿâunits“áwith“theŽ¡‘Gâ-V–ûºáoption,‘it›û»will“prin²!t“the˜loMÞcation“of“this“ le.‘ÝÚThe˜default“ le“includes“de nitions˜for“allŽ¡‘Gfamiliar–Õîunits,‘áÐabbreviations“and“metric“pre xes.‘lvIt“also“includes“manš²!y“obscure“or“arc˜haicŽ¡‘Gunits.‘ÝÝManš²!y–¦fcommon“spMÞelled-out“n˜um˜bMÞers“(e.g.,“`âseventeená')“are“recognized.ަ‘!GMan•²!y›¦fconstan“ts˜of˜nature˜are˜de ned,˜including˜these:ŽŸzá‘.ùœâpi‘9|¤áratio–¦fof“circumference“to“diameterŽ¡‘.ùœâc‘?a›>sequence“of˜quotienš²!ts.‘¤ÂF‘ÿeor“example,‘cð`âm/s–¦f*“s/dayá'Ž‘IÁis“equiv‘ÿdDalen˜t‘>to“`âm/dayá'.Ž¡‘GSimilarly‘ÿe,–¦fy²!ou“could“write“`â1/2“*“meterá'Ž‘Hkèto“get“half“a“meter.ŽŸ""‘!GThe–+Râunits“áprogram‘+SsuppMÞorts“another“option“for“nš²!umerical“fractions:‘ç¶y˜ou“can“indicateŽ¡‘Gdivision–of“änumb‘ÿp¹ers‘é.áwith‘the“vš²!ertical“bar“(`â|á'),‘#Àso“if“y˜ou“w˜an˜ted“half“a‘meter“y˜ou“could“writeŽ¡‘G`â1|2‘¦fmeterá'Ž‘IÊS.‘¥Y‘ÿeou–‡¨cannot›‡©use“the˜v²!ertical“bar˜to“indicate˜division“of˜non-n²!umerical“unitsŽ¡‘G(e.g.,–¦f`âm|sá'“results“in“an“error“message).ަ‘!GP•²!o“w“ers–KÁof“units‘KÀcan“bšMÞe“sp˜eci ed“using‘KÀthe“`â^á'“cš²!haracter,‘uas“sho˜wn“in‘KÀthe“follo˜wing“ex-Ž¡‘Gample,‘Ïor–x©b²!y›x¨simple“concatenation“of“a“unit“and˜its“expMÞonen²!t:‘Æÿ`âcm3á'˜is“equiv‘ÿdDalen²!t“to“`âcm^3á';Ž¡‘Gif–ÅAthe“expMÞonen²!t“is“more“than“one“digit,‘ øthe“`â^á'“is“required.‘:nY‘ÿeou“can“also“use“`â**á'“as“anŽ¡‘Gexp•MÞonen²!t‘¦fop“erator.ަ‘.ùœâYou–¿ªhave:“cm^3Ž¡‘.ùœYou–¿ªwant:“gallonsŽ¡‘\öì*‘¿ª0.00026417205Ž¡‘\öì/‘¿ª3785.4118ŽŽŸ7»¼‘GáConcatenation–Ê%only›Ê&w²!orks“with“a“single˜unit“name:‘%\if“y²!ou“write“`â(m/s)2á',‘Óâunits˜áwill“treatŽ¡‘Git– Üas“mš²!ultiplication“b˜y“2.‘?When“a“unit“includes“a“pre x,‘&zexpMÞonen˜t“opMÞerators“apply“to“theŽ¡‘Gcomš²!bination,‘‡¢so–ð`âcentimeter3á'“giv˜es‘ñcubic“cen˜timeters.‘Ñ If‘ñy˜ou“separate›ñthe“pre x˜from“theŽ¡‘Gunit–#dwith‘#eanš²!y“m˜ultiplication“opMÞerator›#e(e.g.,‘=—`âcenti‘¦fmeter^3á'),‘=˜the“pre x˜is“treated“as˜a“sep-Ž¡‘Garate–unit,‘7Rso“the›ŽexpMÞonen²!t“applies“only“to“the“unit˜without“the“pre x.‘¯•The“second“exampleŽ¡‘Gis–Ôequiv‘ÿdDalen²!t›Ôto“`âcenti–¦f*“(meter^3)á',‘ßxand˜giv•²!es‘Ôa˜h“undredth–Ôof“a˜cubic“meter,‘ßxnot˜a“cubicŽ¡‘Gcenš²!timeter.‘.The–¢âunits“áprogram“is“limited‘¡in˜ternally“to“proMÞducts“of“99‘¡units;‘NÀaccordingly‘ÿe,Ž¡‘Gexpressions–wlik²!e›x`âmeter^100á'“or“`âjoule^34á'˜(represenš²!ted“in˜ternally‘xas“`âkg^34–¦fm^68“/“s^68á'Ž‘eK)Ž¡‘Gwill‘¦ffail.ަ‘!GThe–†û`â|á'›†üopMÞerator“has“the˜highest“precedence,‘¿ so˜y²!ou“can“write˜the“square“roMÞot˜of“t•²!w“oŽ¡‘Gthirds–ñøas“`â2|3^1|2á'.‘À”The“`â^á'›ñùopMÞerator“has“the“second˜highest“precedence,‘Ýand“is“ev‘ÿdDaluatedŽ¡‘Grigh²!t–¦fto“left,“as“usual:ŽŽŒ‹”bŸò‘GáUnits‘¦fCon•²!v“ersion’YÞ*8ŽŽŽ ƒ33 ý ÌÍ‘.ùœâYou–¿ªhave:“5“*“2^3^2ޤ 33‘.ùœYou‘¿ªwant:Ž¡‘\öìDefinition:‘¿ª2560ŽŽ©+ø”‘GáWith–‹Úa“dimensionless‘‹Ûbase“unit,‘ Å5anš²!y“dimensionless“expMÞonen˜t‘‹Ûis“meaningful“(e.g.,ޤ 33‘G`âpi^exp(2.371)á').‘T‰Evš²!en–Íõthough“angle“is“sometimes‘Íôtreated“as“dimensionless,‘ØexpMÞonen˜tsŽ¡‘Gcannot›¦fha•²!v“e˜dimensions˜of˜angle:ŽŸ’/‘.ùœâYou–¿ªhave:“2^radianŽ¡’³æ^Ž¡‘.ùœExponent–¿ªnot“dimensionlessŽŽ¦‘GáIf–\äthe›\åbase“unit˜is“not˜dimensionless,‘k˜the“expMÞonenš²!t“m˜ust›\åbMÞe“a˜rational“n•²!um“bMÞer˜åpUá/åqŽ‘I3á,‘k˜and‘\ätheŽ¡‘Gdimension–E¹of›E¸the“unit˜m²!ust“bMÞe˜a“pMÞo•²!w“er–E¹of˜åqá,‘mso“`âgallon^2|3á'˜w²!orks“but˜`âacre^2|3á'“fails.Ž¡‘GAn–€oexpšMÞonen²!t“using“the‘€pslash“(`â/á')“op˜erator“(e.g.,‘¶ñ`âgallon^(2/3)á')“is“also‘€pacceptable;‘ístheŽ¡‘Gparen²!theses–:Kare“needed“bMÞecause›:Jthe“precedence“of“`â^á'“is“higher“than˜that“of“`â/á'.‘¹ÔSince“âunitsŽ¡‘Gácannot–ûzrepresenš²!t“dimensions‘û{with“expMÞonen˜ts“greater“than›û{99,‘©a“fully˜reduced“expMÞonenš²!t“m˜ustŽ¡‘Gha•²!v“e‘ì¸åq‘çLâ<‘¦fá100Ž‘&nY.‘ŸøWhen–ì¸raising›ì·a“non-dimensionless˜unit“to˜a“pMÞo•²!w“er,‘Úâunits–ì¸áattempts˜to“con•²!v“ertŽ¡‘Ga–decimal“expMÞonenš²!t“to“a‘rational“n˜um˜bšMÞer“with“åq‘çLâ<‘¦fá100Ž‘&¼.‘«If“this‘is“not“p˜ossible“âunits“ádispla²!ysŽ¡‘Gan–¦ferror“message:ŽŸ’/‘.ùœâYou–¿ªhave:“ft^1.234Ž¡‘.ùœBase–¿ªunit“not“dimensionless;“rational“exponent“requiredŽŽŸÅa‘GáA‘vódecimal›w¬expMÞonen•²!t‘w­m“ust˜matc“h˜its˜rational‘w­represen“tation˜to˜mac“hine˜precision,‘+ýsoŽ¡‘G`âacre^1.5á'–¦fw²!orks“but“`âgallon^0.666á'“doMÞes“not.ŽŸz‘Gëc5.2‘™Sums–f@and“Di erences“of“UnitsŽŽŸ33‘GáY‘ÿeou–™½maš²!y“sometimes‘™¾w˜an˜t“to“add“v‘ÿdDalues‘™¾of“di eren˜t“units“that›™¾are“outside“the“SI.˜Y‘ÿeou“ma²!yŽ¡‘Galso–jywish›jzto“use“âunits˜áas“a“calculator“that˜kš²!eeps“trac˜k“of›jzunits.‘ÉãSums“of˜conformable“unitsŽ¡‘Gare–¦fwritten“with“the“`â+á'“cš²!haracter,“and“di erences“with“the“`â-á'“c˜haracter.ŽŸ’.‘.ùœâYou–¿ªhave:“2“hours“+“23“minutes“+“32“secondsŽ¡‘.ùœYou–¿ªwant:“secondsŽ¡‘\öì*‘¿ª8612Ž¡‘\öì/‘¿ª0.00011611705ŽŽ©9+È‘.ùœYou–¿ªhave:“12“ft“+“3“inŽ¡‘.ùœYou–¿ªwant:“cmŽ¡‘\öì*‘¿ª373.38Ž¡‘\öì/‘¿ª0.0026782366ŽŽŸ9+Ç‘.ùœYou–¿ªhave:“2“btu“+“450“ft“lbfŽ¡‘.ùœYou–¿ªwant:“btuŽ¡‘\öì*‘¿ª2.5782804Ž¡‘\öì/‘¿ª0.38785542ŽŽ¦‘GáThe–fMexpressions›fLthat“are“added˜or“subtracted“m²!ust“reduce˜to“iden²!tical“expressions˜in“prim-Ž¡‘Gitivš²!e–¦funits,“or“an“error“message“will“bMÞe“displa˜y˜ed:ŽŸ’.‘.ùœâYou–¿ªhave:“12“printerspoint“-“4“herediumŽ¡’ lØ^Ž¡‘.ùœIllegal–¿ªsum“of“non-conformable“unitsŽŽŽŒ‹ ¥VŸò‘GáUnits‘¦fCon•²!v“ersion’YÞ*9ŽŽŽ ƒ33 ý ÌÍ‘GAs–£;usual,‘×the“precedence“for“`â+á'“and›£:`â-á'“is“lo•²!w“er–£;than“that“of“the˜other“opMÞerators.‘‡zA‘¢ùfractionalޤ 33‘Gquan•²!tit“y›¥Dsuc“h–¥Eas˜2“1/2˜cups˜can“bMÞe˜giv²!en“as˜`â(2+1|2)‘¦fcupsá';‘¥¥the˜paren²!theses“are˜necessaryŽ¡‘GbMÞecause–3&m²!ultiplication“has“higher›3'precedence“than“addition.‘„If˜yš²!ou“omit“the“paren˜theses,Ž¡‘Gâunits–¦fáattempts“to“add“`â2á'“and“`â1|2“cupsá',“and“y²!ou“get“an“error“message:Ž©¸R‘.ùœâYou–¿ªhave:“2+1|2“cupsŽ¡’œ3:^Ž¡‘.ùœIllegal–¿ªsum“or“difference“of“non-conformable“unitsŽŽŸ*¹‘GáThe– uexpression“could“also‘ vbMÞe“correctly“written“as“`â(2+1/2)›¦fcupsá'.‘©ãIf“y²!ou“write“`â2‘¿ª1|2˜cupsá'Ž¡‘Gthe–¦fspace“is“in²!terpreted“as“ämultiplic‘ÿp¹ation‘}qáso“the“result“is“the“same“as“`â1“cupá'.ަ‘!GThe–p¥`â+á'“and›p¤`â-á'“c²!haracters“sometimes“appMÞears˜in“expMÞonenš²!ts“lik˜e“`â3.43e+8á'.‘ËñThis“leads“toŽ¡‘Gan›¥ëam•²!biguit“y˜in˜an˜expression˜lik“e‘¥ê`â3e+2‘¦fyCá'.‘Ý´The˜unit˜`âeá'˜is˜a˜small˜unit˜of˜c“harge,‘¦so˜thisŽ¡‘Gcan–iõbMÞe“regarded“as“equiv‘ÿdDalen²!t“to“`â(3e+2)›¦fyCá'“or“`â(3˜e)+(2˜yC)á'.‘ɸThis“am•²!biguit“y–iõis“resolv²!edŽ¡‘Gb•²!y›¦falw“a“ys˜in“terpreting˜`â+á'˜and˜`â-á'˜as˜part˜of˜an˜expMÞonen“t˜if˜pMÞossible.Ž© ?‘Gëc5.3‘™NumŒÌbs3ers–f@as“UnitsŽŽŸ33‘GáF‘ÿeor›ıâunitsá,‘ÌCn•²!um“b•MÞers˜are˜just˜another˜kind˜of˜unit.‘8¾They˜can‘İapp“ear˜as˜man•²!y˜times˜as˜y“ouŽ¡‘Glikš²!e–{áand‘{âin“an˜y›{âorder“in˜a“unit˜expression.‘ϱF‘ÿeor“example,‘„bto˜ nd“the˜v²!olume“of˜a“bMÞo²!x˜that“isŽ¡‘G2–¦fft“bš²!y“3“ft“b˜y“12“ft“in“steres,“y˜ou“could“do“the“follo˜wing:ŽŸ¸S‘.ùœâYou–¿ªhave:“2“ft“3“ft“12“ftŽ¡‘.ùœYou–¿ªwant:“stereŽ¡‘\öì*‘¿ª2.038813Ž¡‘\öì/‘¿ª0.49048148ŽŸff‘.ùœYou–¿ªhave:“$“5“/“yardŽ¡‘.ùœYou–¿ªwant:“cents“/“inchŽ¡‘\öì*‘¿ª13.888889Ž¡‘\öì/‘¿ª0.072ŽŽŸyQê‘GáAnd–Œõthe›Œôsecond“example“sho•²!ws˜ho“w–Œõthe“dollar˜sign“in“the˜units“con•²!v“ersion–Œõcan˜precede“theŽ¡‘G v²!e.–ÝÝBe›¦fcareful:“âunits˜áwill˜in•²!terpret˜`â$5á'˜with˜no˜space˜as˜equiv‘ÿdDalen“t˜to˜`âdollar^5á'.ަ‘Gëc5.4‘™Built-in‘f@F‘þ¦functionsŽŽŸ33‘GáSevš²!eral–£Ybuilt-in“functions‘£Xare“pro˜vided:‘ÜW`âsiná',–£õ`âcosá',“`âtaná',“`âlná',“`âlogá',“`âexpá',“`âacosá',“`âataná',Ž¡‘G`âasiná',–ìƒ`âcoshá',“`âsinhá',“`âtanhá',“`âacoshá',“`âasinhá',“and–«J`âatanhá'.‘ìŠThe“`âsiná',–ìƒ`âcosá',“and‘«J`âtaná'Ž¡‘Gfunctions–Ùrequire“either‘Øa“dimensionless“argumenš²!t“or“an“argumen˜t‘Øwith“dimensions“of“angle.ŽŸ¸S‘.ùœâYou–¿ªhave:“sin(30“degrees)Ž¡‘.ùœYou‘¿ªwant:Ž¡‘\öìDefinition:‘¿ª0.5Ž©ff‘.ùœYou–¿ªhave:“sin(pi/2)Ž¡‘.ùœYou‘¿ªwant:Ž¡‘\öìDefinition:‘¿ª1ަ‘.ùœYou–¿ªhave:“sin(3“kg)Ž¡’–s^Ž¡‘.ùœUnit–¿ªnot“dimensionlessŽŽŽŒ‹ °5Ÿò‘GáUnits‘¦fCon•²!v“ersion’Td10ŽŽŽ ƒ33 ý ÌÍ‘GThe–WDother“functions“on“the“list“require“dimensionless“argumenš²!ts.‘Ã|The“in˜v˜erse“trigonometricޤ 33‘Gfunctions–¦freturn“argumen²!ts“with“dimensions“of“angle.Ž©t^‘!GThe–|u`âlná'›|vand“`âlogá'“functions˜giv²!e“natural“log˜and“log“base“10˜respMÞectiv²!ely–ÿe.‘` T“o‘|uobtainŽ¡‘Glogs–`for“anš²!y“in˜teger“base,‘9ßen˜ter“the“desired“base“immediately“after“`âlogá'.‘?ÌF‘ÿeor“example,‘9ÞtoŽ¡‘Gget–¦flog“base“2“yš²!ou“w˜ould“write“`âlog2á'“and“to“get“log“base“47“y˜ou“could“write“`âlog47á'.ŽŸt_‘.ùœâYou–¿ªhave:“log2(32)Ž¡‘.ùœYou‘¿ªwant:Ž¡‘\öìDefinition:‘¿ª5Ž¡‘.ùœYou–¿ªhave:“log3(32)Ž¡‘.ùœYou‘¿ªwant:Ž¡‘\öìDefinition:‘¿ª3.1546488Ž¡‘.ùœYou–¿ªhave:“log4(32)Ž¡‘.ùœYou‘¿ªwant:Ž¡‘\öìDefinition:‘¿ª2.5Ž¡‘.ùœYou–¿ªhave:“log32(32)Ž¡‘.ùœYou‘¿ªwant:Ž¡‘\öìDefinition:‘¿ª1Ž¡‘.ùœYou–¿ªhave:“log(32)Ž¡‘.ùœYou‘¿ªwant:Ž¡‘\öìDefinition:‘¿ª1.50515Ž¡‘.ùœYou–¿ªhave:“log10(32)Ž¡‘.ùœYou‘¿ªwant:Ž¡‘\öìDefinition:‘¿ª1.50515ŽŽ øÚÁ‘!GáIf–Vyš²!ou“wish“to“tak˜e“roMÞots“of‘Wunits,‘'&y˜ou“ma˜y“use“the“`âsqrtá'“or“`âcuberootá'“functions.‘¨ØTheseŽ¡‘Gfunctions–drequire“that“the“argumenš²!t“ha˜v˜e“the“appropriate‘crošMÞot.‘¬2Y‘ÿeou“can“obtain“higher“ro˜otsŽ¡‘Gbš²!y–¦fusing“fractional“expMÞonen˜ts:ަ‘.ùœâYou–¿ªhave:“sqrt(acre)Ž¡‘.ùœYou–¿ªwant:“feetŽ¡‘\öì*‘¿ª208.71074Ž¡‘\öì/‘¿ª0.0047913202Ž©ff‘.ùœYou–¿ªhave:“(400“W/m^2“/“stefanboltzmann)^(1/4)Ž¡‘.ùœYou‘¿ªhave:Ž¡‘\öìDefinition:–¿ª289.80882“Kަ‘.ùœYou–¿ªhave:“cuberoot(hectare)Ž¡’Äpà^Ž¡‘.ùœUnit–¿ªnot“a“rootŽŽ º”ò‘Gëc5.5‘™Previous‘f@ResultŽŽŸ33‘GáY‘ÿeou–¿–can“insert“the“result“of“the“previous“con•²!v“ersion‘¿•using–¿–the“underscore“(`â_á').‘)mIt“is“usefulŽ¡‘Gwhen–¦fyš²!ou“w˜an˜t“to“con˜v˜ert“the“same“input“to“sev˜eral“di eren˜t“units,“for“exampleŽŽŒ‹ »YŸò‘GáUnits‘¦fCon•²!v“ersion’Td11ŽŽŽ ƒ33 ý ÌÍ‘.ùœâYou–¿ªhave:“2.3“tonrefrigerationޤ 33‘.ùœYou–¿ªwant:“btu/hrŽ¡‘\öì*‘¿ª27600Ž¡‘\öì/‘¿ª3.6231884e-005Ž¡‘.ùœYou–¿ªhave:“_Ž¡‘.ùœYou–¿ªwant:“kWŽ¡‘\öì*‘¿ª8.0887615Ž¡‘\öì/‘¿ª0.12362832ŽŽŸo™™‘GáSuppMÞose–´½yš²!ou“w˜an˜t“to“do“some“deep“frying“that“requires‘´¼an“oil“depth“of“2“inc˜hes.‘âY‘ÿeou“ha˜v˜eޤ 33‘G1/2–Žgallon›of“oil,‘(and“w•²!an“t‘Žto˜kno“w–Žthe“largest-diameter“pan˜that“will“main²!tain˜the“requiredŽ¡‘Gdepth.‘™3The–Øgnonlinear›Øfunit“`âcircleareaá'“giv²!es“the“är‘ÿp¹adius‘¾~áof“the“circle“(see˜Section“6.2“[OtherŽ¡‘GNonlinear–cUnits],›Çþpage“14,˜for“a›dmore“detailed˜description)“in“SI‘units;‘íyš²!ou“w˜an˜t‘dthe“ädiameterŽ¡‘Gáin‘¦fäinches‘æá:Ž©33‘.ùœâYou–¿ªhave:“1|2“gallon“/“2“inŽ¡‘.ùœYou–¿ªwant:“circleareaŽ¡‘\öì0.10890173‘¿ªmŽ¡‘.ùœYou–¿ªhave:“2“_Ž¡‘.ùœYou–¿ªwant:“inŽ¡‘\öì*‘¿ª8.5749393Ž¡‘\öì/‘¿ª0.1166189ŽŽŸbff‘GáIn–7most“cases,‘#Ùsurrounding“white“space“is›6optional,‘#Úso“the“previous“example˜could“ha•²!v“e‘7usedŽ¡‘G`â2_á'.‘ÝÝIf–¦f`â_á'“folloš²!ws“a“non-n˜umerical“unit“sym˜bMÞol,“ho˜w˜ev˜er,“the“space“is“required:ŽŸ34‘.ùœâYou–¿ªhave:“m_Ž¡‘n5ê^Ž¡‘.ùœParse‘¿ªerrorŽŽŸ-™š‘GáWhen–‡ù`â_á'›‡úis“follo•²!w“ed‘‡ùb“y˜a–‡ùdigit,‘Žthe“opMÞeration˜is“m²!ultiplication“rather˜than“expMÞonen²!tiation,Ž¡‘Gso–¦fthat“`â_2á',“is“equiv‘ÿdDalen²!t“to“`â_“*“2á'Ž‘%íìrather“than“`â_^2á'.ަ‘!GY‘ÿeou–¦fcan“use“the“`â_á'“symš²!bMÞol“an˜y“n˜um˜bMÞer“of“times;“for“example,Ž©34‘.ùœâYou–¿ªhave:“mŽ¡‘.ùœYou‘¿ªwant:Ž¡‘\öìDefinition:–¿ª1“mŽ¡‘.ùœYou–¿ªhave:“_“_Ž¡‘.ùœYou‘¿ªwant:Ž¡‘\öìDefinition:–¿ª1“m^2ŽŽŸU33‘GáUsing–á`â_á'›âbMÞefore“a˜con•²!v“ersion–áhas˜bšMÞeen“p˜erformed“(e.g.,‘Êñimmediately“after‘âin•²!v“o˜cation)‘ágen-Ž¡‘Gerates–¦fan“error:ަ‘.ùœâYou–¿ªhave:“_Ž¡‘hv@^Ž¡‘.ùœNo–¿ªprevious“result;“ _ “not“setŽŽŸ-™™‘GáAccordingly‘ÿe,–¦f`â_á'“servš²!es“no“purpMÞose“when“âunits“áis“in˜v˜ok˜ed“non-in˜teractiv˜ely‘ÿe.ަ‘!GIf–Œ3âunits›Œ2áis“in•²!v“ok“ed–Œ3with“the˜â--verbose“áoption“(see“Chapter˜10“[In•²!v“oking–Œ3Units],‘Ä£page“25),Ž¡‘Gthe–¦fv‘ÿdDalue“of“`â_á'“is“not“expanded:ŽŽŒ‹ ÂÓŸò‘GáUnits‘¦fCon•²!v“ersion’Td12ŽŽŽ ƒ33 ý ÌÍ‘.ùœâYou–¿ªhave:“mileޤ 33‘.ùœYou–¿ªwant:“ftŽ¡‘\öìmile–¿ª=“5280“ftŽ¡‘\öìmile–¿ª=“(1“/“0.00018939394)“ftŽ¡‘.ùœYou–¿ªhave:“_Ž¡‘.ùœYou–¿ªwant:“mŽ¡‘\öì_–¿ª=“1609.344“mŽ¡‘\öì_–¿ª=“(1“/“0.00062137119)“mŽŽŸoä‘GáY‘ÿeou–¦fcan“givš²!e“`â_á'“at“the“`âYou“want:á'Ž‘?Øprompt,“but“it“usually“is“not“v˜ery“useful.ŽŸ Ÿs‘Gëc5.6‘™Complicated–f@Unit“ExpressionsŽŽŸ33‘GáThe–¸âunits›¸áprogram“is“espMÞecially˜helpful“in˜ensuring“accuracy“and˜dimensional“consistencyޤ 33‘Gwhen›#‘con•²!v“erting‘#length“y˜unit–#expressions.‘U]F‘ÿeor˜example,‘BÛone“form˜of“the˜Darcy{W‘ÿeeisbac²!hŽ¡‘G uid- o²!w–¦fequation“isŽŸ¾•’ÂaŸéP‘ýá=Ÿø—ž‘ƒ8Ž‘=ÚŸÞȉfe ìŸ téd“ŸüÖ0®2ŽŽŽŽŽ‘ùéf‘-¼LŸø—ž‘33QŸü¾®2ŽŽ‘33ŸÞȉfe $ˆŸ t‘z‡édŸüÖ0®5ŽŽŽŽŽŽŸrH‘Gáwhere–ÜéP‘aòáis“the“pressure›Üœdrop,‘øé“áis˜the“mass“densit²!y‘ÿe,‘øéf‘ Xáis“the“(dimensionless)˜friction“factor,Ž¡‘GéL–EÂáis“the›EÃlength“of“the“pipMÞe,‘m™éQ“áis˜the“vš²!olumetric“ o˜w“rate,‘m™and‘EÃéd“áis“the“pipMÞe“diameter.‘»òItŽ¡‘Gmighš²!t–¦fbMÞe“desired“to“ha˜v˜e“the“equation“in“the“formŽŸ"¾•’ÂÊÛéP‘ýá=‘ §éAŸ¤z®1Ž‘|séf‘-¼LŸø—ž‘33QŸü¾®2ŽŽ‘33ŸÞȉfe $ˆŸ t‘z‡édŸüÖ0®5ŽŽŽŽŽŽŸÖ‘Gáthat–.ˆaccepted›.‰the“user's“normal˜units;‘r™for“t²!ypical˜units“used“in˜the“US,“the˜required“con-Ž¡‘Gvš²!ersion–¦fcould“bMÞe“something“lik˜eŽ©‘.ùœâYou–¿ªhave:“(8/pi^2)(lbm/ft^3)ft(ft^3/s)^2(1/in^5)Ž¡‘.ùœYou–¿ªwant:“psiŽ¡‘\öì*‘¿ª43.533969Ž¡‘\öì/‘¿ª0.022970568ŽŽŸ:7‘GáThe›,øparen•²!theses‘,÷allo“w˜individual–,÷terms˜in˜the“expression˜to“bMÞe˜en²!tered˜naturally‘ÿe,‘N›as˜theyŽ¡‘Gmighš²!t–mbMÞe“read“from‘nthe“form˜ula.‘òAlternativ˜ely‘ÿe,‘ ïthe“m˜ultiplication“could‘nbMÞe“done“with“theŽ¡‘G`â*á'–Q+rather›Q,than“a˜space;‘¦then˜paren²!theses“are˜needed“only“around˜`âft^3/sá'“bMÞecause˜of“itsŽ¡‘GexpMÞonen²!t:ަ‘.ùœâYou–¿ªhave:“8/pi^2“*“lbm/ft^3“*“ft“*“(ft^3/s)^2“/in^5Ž¡‘.ùœYou–¿ªwant:“psiŽ¡‘\öì*‘¿ª43.533969Ž¡‘\öì/‘¿ª0.022970568ŽŽŸ:7‘GáWithout–™¡parenš²!theses,‘Öoand“using“spaces‘™¢for“m˜ultiplication,‘Öothe“previous“con˜v˜ersion“w˜ouldŽ¡‘Gneed–¦fto“bMÞe“en²!tered“asަ‘.ùœâYou–¿ªhave:“8“lb“ft“ft^3“ft^3“/“pi^2“ft^3“s^2“in^5Ž¡‘.ùœYou–¿ªwant:“psiŽ¡‘\öì*‘¿ª43.533969Ž¡‘\öì/‘¿ª0.022970568ŽŽŽŒ‹ Ë­Ÿò‘GáUnits‘¦fCon•²!v“ersion’Td13ŽŽŽ ƒ33 ý ÌÍ‘Gëc5.7›™Bac•ŒÌkw“ards‘f@Compatibilit“y:˜`ëg*ëc'–f@and“`ëg-ëc'ŽŽŸ33‘GáThe– ?original› >âunits“áassigned“m²!ultiplication˜a“higher“precedence˜than“division“using˜the“slash.ޤ 33‘GThis–3di ers“from“the“usual›3€precedence“rules,‘VÈwhic•²!h˜giv“e›3m“ultiplication˜and˜division˜equalŽ¡‘Gprecedence,–¦fand“can“bšMÞe“confusing“for“p˜eople“who“think“of“units“as“a“calculator.Ž©@‘!GThe–˜star›—ÿopMÞerator“(`â*á')˜included“in˜this“âunits˜áprogram“has,–šáb²!y˜default,“the˜same‘˜prece-Ž¡‘Gdence›§as–§division,‘Ú+and“hence˜follo²!ws˜the“usual˜precedence“rules.‘ˆÅF‘ÿeor“bac•²!kw“ards˜compatibilit“yŽ¡‘Gy•²!ou›jcan‘kin“v“ok“e˜âunits–káwith˜the˜â--oldstar“áoption.‘îêThen˜`â*á'“has˜a˜higher“precedence˜thanŽ¡‘Gdivision,–¦fand“the“same“precedence“as“m²!ultiplication“using“the“space.ަ‘!GHistorically‘ÿe,‘óáthe–Ç@h²!yphen›Ç?(`â-á')“has˜bMÞeen“used“in˜tec²!hnical“publications“to˜indicate“proMÞductsŽ¡‘Gof–ªunits,‘.ûand›«the“original“âunits˜áprogram“treated“it“as˜a“m²!ultiplication“opMÞerator.‘%ªBecauseŽ¡‘Gâunits–r8áproš²!vides“sev˜eral“other“w˜a˜ys“to“obtain‘r7unit“prošMÞducts,‘¥,and“b˜ecause“`â-á'“is“a“subtrac-Ž¡‘Gtion–¹4opMÞerator“in“general“algebraic›¹3expressions,‘½èâunits“átreats“the˜binary“`â-á'“as“a“subtractionŽ¡‘GopMÞerator–È}bš²!y“default.‘D!F‘ÿeor“bac˜kw˜ards“compatibilit˜y‘È|use“the“â--product“áoption,‘Ñwhic˜h“causesŽ¡‘Gâunits–§Ñáto“treat›§Òthe“binary“`â-á'“opMÞerator˜as“a“prošMÞduct“op˜erator.‘âWhen“`â-á'‘§Òis“a“m²!ultiplica-Ž¡‘Gtion–Ì-opMÞerator“it“has“the“same“precedence“as“m²!ultiplication“with“a“space,‘Õžgiving“it“a“higherŽ¡‘Gprecedence–¦fthan“division.ަ‘!GWhen–Hï`â-á'“is“used“as“a“unary“opšMÞerator“it‘Hðnegates“its“op˜erand.‘ÅxRegardless“of“the“âunitsŽ¡‘Gáoptions,‘ì1if–Þ;`â-á'“appMÞears›Þ=“-273.15Ž¡‘.ùœYou–¿ªhave:“~tempCŽ¡‘\öìDefinition:–¿ª~tempC(tempC)“=“(tempC“+(-stdtemp))/KŽ¡’¡òädefined–¿ªfor“tempC“>=“0“KŽ¡‘.ùœYou–¿ªhave:“circleareaŽ¡‘\öìDefinition:–¿ªcirclearea(r)“=“pi“r^2Ž¡’¡òär–¿ªhas“units“mŽŽŸz‘‘GáT‘ÿeo–†see›‡the“de nition˜of“the“in•²!v“erse˜use–†the˜`â~á'“notation.‘þ>In“this˜case“the˜parameter“inޤ 33‘Gthe–¼functional›»de nition“will˜usually“bMÞe“the˜name“of˜the“unit.‘ÃÞNote˜that“the˜in•²!v“erse‘¼forŽ¡‘G`âtempCá'–C›shoš²!ws“that“it“requires“units“of“`âKá'“in‘Cœthe“spMÞeci cation“of“the“allo˜w˜ed“range“of“v‘ÿdDalues.Ž¡‘GNonlinear›xQunit‘xRcon•²!v“ersions˜are–xRdescribMÞed˜in˜more“detail˜in“Section˜12.3“[De ning˜NonlinearŽ¡‘GUnits],–¦fpage“34.ŽŸ#ˆŠ‘GëZ7– ¸QUnit›z³Lists:“Con–ÿuÂv“ersion˜to˜Sums˜of˜UnitsŽŽŸ€‘GáOutside–œÑof“the›œÒSI,“it“is“sometimes˜desirable“to“con•²!v“ert–œÑa˜single“unit“to“a˜sum“of“units|Ž¡‘Gfor–vexample,‘,:feet“to“feet“plus“incš²!hes.‘ The“con˜v˜ersion“äfr‘ÿp¹om‘èásums“of“units“w˜as“describMÞed“inŽ¡‘GSection–æ5.2›ç[Sums“and˜Di erences“of“Units],‘9Gpage“8,‘9Fand˜is“a“simple˜matter“of˜adding“theŽ¡‘Gunits–¦fwith“the“`â+á'“sign:ŽŸ÷w‘.ùœâYou–¿ªhave:“12“ft“+“3“in“+“3|8“inŽ¡‘.ùœYou–¿ªwant:“ftŽ¡‘\öì*‘¿ª12.28125Ž¡‘\öì/‘¿ª0.081424936ŽŽ©8‘‘GáAlthough–VŸy²!ou“can›Vžsimilarly“write“a“sum˜of“units“to“con•²!v“ert˜ätoá,‘‚­the–VŸresult“will˜not“bMÞe“theŽ¡‘Gcon•²!v“ersion–hkto›hlthe“units˜in“the“sum,‘˜íbut“rather˜the“con•²!v“ersion–hkto˜the“particular˜sum“thatŽ¡‘Gy•²!ou›¦fha“v“e˜en“tered:ŽŸ÷x‘.ùœâYou–¿ªhave:“12.28125“ftŽ¡‘.ùœYou–¿ªwant:“ft“+“in“+“1|8“inŽ¡‘\öì*‘¿ª11.228571Ž¡‘\öì/‘¿ª0.089058524ŽŽ¦‘GáThe–šlunit“expression“givš²!en‘škat“the“`âYou‘¦fwant:á'Ž‘>íäprompt“is“equiv‘ÿdDalen˜t‘škto“asking“for“con˜v˜ersionŽ¡‘Gto–¯8m²!ultiples‘¯7of“`â1›¿ªft–¦f+“1˜in“+“1|8˜iná',‘à§whicš²!h–¯8is“1.09375–¯7ft,‘à¨so“the–¯8con˜v˜ersion“in‘¯7the“previousŽ¡‘Gexample–¦fis“equiv‘ÿdDalen²!t“toŽŸ÷x‘.ùœâYou–¿ªhave:“12.28125“ftŽ¡‘.ùœYou–¿ªwant:“1.09375“ftŽ¡‘\öì*‘¿ª11.228571Ž¡‘\öì/‘¿ª0.089058524ŽŽ¦‘GáIn›5Ûcon•²!v“erting˜to–5Üa˜sum˜of˜units“lik²!e˜miles,‘Y¸feet˜and“inc•²!hes,‘Y¸y“ou˜t“ypically‘5Üw“an“t˜the˜largestŽ¡‘Gin²!tegral–¼v‘ÿdDalue›¼for“the˜ rst“unit,‘Á†follo•²!w“ed›¼b“y˜the‘¼largest˜in“tegral–¼v‘ÿdDalue˜for“the˜next,‘Á†and˜theŽ¡‘Gremainder›ßcon•²!v“erted˜to˜the˜last˜unit.‘)HY‘ÿeou˜can˜do˜this˜con“v“ersion˜easily˜with˜âunits˜áusingŽ¡‘Ga–üuspMÞecial“synš²!tax‘ütfor“lists“of“units.‘à Y‘ÿeou“m˜ust“list›ütthe“desired“units“in“order˜from“largest“toŽ¡‘Gsmallest,–¦fseparated“bš²!y“the“semicolon“(`â;á')“c˜haracter:ŽŽŒ‹ôŸò‘GáUnits‘¦fCon•²!v“ersion’Td17ŽŽŽ ƒ33 ý ÌÍ‘.ùœâYou–¿ªhave:“12.28125“ftޤ 33‘.ùœYou–¿ªwant:“ft;in;1|8“inŽ¡‘\öì12–¿ªft“+“3“in“+“3|8“inŽŽŸ*GÛ‘GáThe›ƒhcon•²!v“ersion‘ƒialw“a“ys˜giv“es‘ƒiin“teger˜coMÞecien“ts˜on–ƒithe˜units“in˜the˜list,‘Šhexcept“pMÞossibly˜theޤ 33‘Glast–¦funit“when“the“con•²!v“ersion–¦fis“not“exact:Ž©áu‘.ùœâYou–¿ªhave:“12.28126“ftŽ¡‘.ùœYou–¿ªwant:“ft;in;1|8“inŽ¡‘\öì12–¿ªft“+“3“in“+“3.00096“*“1|8“inŽŽŸ*GÜ‘GáThe–¦forder“in“whicš²!h“y˜ou“list“the“units“is“impMÞortan˜t:ަ‘.ùœâYou–¿ªhave:“3“kgŽ¡‘.ùœYou–¿ªwant:“oz;lbŽ¡‘\öì105–¿ªoz“+“0.051367866“lbŽŸff‘.ùœYou–¿ªhave:“3“kgŽ¡‘.ùœYou–¿ªwant:“lb;ozŽ¡‘\öì6–¿ªlb“+“9.8218858“ozŽŽŸ_§‘GáListing–jounces‘jbšMÞefore“p˜ounds“pro˜duces“a›jtec²!hnically“correct“result,‘›but“not“a˜v²!ery“usefulŽ¡‘Gone.‘É^Y‘ÿeou›Ÿ’m²!ust–Ÿ‘list“the“units“in“descending˜order“of“size“in“order“to˜get“the“most“usefulŽ¡‘Gresult.ަ‘!GEnding–3a“unit“list“with“the“separator“`â;á'‘4has“the“same“e ect“as“repMÞeating“the“last“unitŽ¡‘Gon›±˜the–±™list,‘´dso“`âft;in;1|8‘¦fin;á'˜is˜equiv‘ÿdDalen²!t˜to“`âft;in;1|8–¦fin;1|8“iná'.‘ÿsWith‘±™the˜exampleŽ¡‘GabMÞo•²!v“e,–¦fthis“giv²!esަ‘.ùœâYou–¿ªhave:“12.28126“ftŽ¡‘.ùœYou–¿ªwant:“ft;in;1|8“in;Ž¡‘\öì12–¿ªft“+“3“in“+“3|8“in“+“0.00096“*“1|8“inŽŽ©*GÛ‘Gáin–©e ect“separating›ªthe“in²!teger“and“fractional“parts“of˜the“coMÞecien²!t“for“the“last˜unit.‘­žIf“y²!ouŽ¡‘Ginstead–ÎËprefer“to“round“the“last“coMÞecienš²!t“to“an“in˜teger“y˜ou“can“do“this“with“the“â--roundŽ¡‘Gá(â-rá)–¦foption.‘ÝÝWith“the“previous“example,“the“result“isŽŸáv‘.ùœâYou–¿ªhave:“12.28126“ftŽ¡‘.ùœYou–¿ªwant:“ft;in;1|8“inŽ¡‘\öì12–¿ªft“+“3“in“+“3|8“in“(rounded“down“to“nearest“1|8“in)ŽŽ¦‘GáWhen–Œy²!ou“use“the“â-r“áoption,‘Ä~repMÞeating“the“last“unit“on“the“list“has‘Œno“e ect“(e.g.,‘Ä`âft;in;1|8Ž¡‘Gin;1|8›¦finá'– is“equiv‘ÿdDalen²!t“to‘ ‚`âft;in;1|8˜iná'),‘,and“hence“neither“doMÞes“ending“a‘ ‚list“with“a“`â;á'.Ž¡‘GWith–w*a›w+single“unit˜and“the˜â-r“áoption,‘€a“terminal˜`â;á'“ädo‘ÿp¹es‘]Cáha•²!v“e–w*an“e ect:‘Æ@it“causes˜âunits“átoŽ¡‘Gtreat–‚)the“single›‚(unit“as“a“list˜and“proMÞduce“a“rounded“v‘ÿdDalue˜for“the“single“unit.‘ÑÈWithout“theŽ¡‘Gextra–83`â;á',‘\¥the“â-r“áoption“has“no›82e ect“on“single“unit˜con•²!v“ersions.‘“DThis˜example›83sho“ws˜theŽ¡‘Goutput–¦fusing“the“â-r“áoption:ŽŸáu‘.ùœâYou–¿ªhave:“12.28126“ftŽ¡‘.ùœYou–¿ªwant:“inŽ¡‘\öì*‘¿ª147.37512Ž¡‘\öì/‘¿ª0.0067854058ŽŸff‘.ùœYou–¿ªhave:“12.28126“ftŽ¡‘.ùœYou–¿ªwant:“in;Ž¡‘\öì147–¿ªin“(rounded“down“to“nearest“in)ŽŽŽŒ‹ÿ:Ÿò‘GáUnits‘¦fCon•²!v“ersion’Td18ŽŽŽ ƒ33 ý ÌÍ‘GEac²!h–Îunit›Îthat“appMÞears˜in“the˜list“m²!ust˜bMÞe“conformable˜with“the˜ rst“unit˜on“the˜list,‘Ø andޤ 33‘Gof–иcourse“the“listed“units“mš²!ust“also“bMÞe“conformable‘зwith“the“unit“that“y˜ou“en˜ter“at“theŽ¡‘G`âYou‘¦fhave:á'Ž‘Mp¹prompt.Ž©‘.ùœâYou–¿ªhave:“meterŽ¡‘.ùœYou–¿ªwant:“ft;kgŽ¡‘yµ>^Ž¡‘.ùœconformability‘¿ªerrorŽ¡‘\öìft–¿ª=“0.3048“mŽ¡‘\öìkg–¿ª=“1“kgŽŸff‘.ùœYou–¿ªhave:“meterŽ¡‘.ùœYou–¿ªwant:“lb;ozŽ¡‘.ùœconformability‘¿ªerrorŽ¡‘\öì1‘¿ªmŽ¡‘\öì0.45359237‘¿ªkgŽŽ ¤DC‘GáIn–Frthe›Fq rst“case,‘nuâunits˜árepMÞorts“the“disagreemen•²!t˜bšMÞet“w“een–Frunits“app˜earing‘Fqon“the“list.‘¾InŽ¡‘Gthe–£÷second“case,‘¤sâunits“árepšMÞorts“disagreemen²!t“b˜et•²!w“een–£÷the“unit“yš²!ou“en˜tered“and“the“desiredŽ¡‘Gcon•²!v“ersion.‘ÝÝThis›¦fconformabilit“y˜error˜is˜based˜on˜the˜ rst˜unit˜on˜the˜unit˜list.ŽŸ‘!GOther–¦fcommon“candidates“for“con•²!v“ersion–¦fto“sums“of“units“are“angles“and“time:ަ‘.ùœâYou–¿ªhave:“23.437754“degŽ¡‘.ùœYou–¿ªwant;“deg;arcmin;arcsecŽ¡‘EøD23–¿ªdeg“+“26“arcmin“+“15.9144“arcsecŽŸff‘.ùœYou–¿ªhave:“7.2319“hrŽ¡‘.ùœYou–¿ªwant:“hr;min;secŽ¡‘EøD7–¿ªhr“+“13“min“+“54.84“secŽŽŸbDD‘GáIn–§ North“America,‘ç2recipšMÞes“for“co˜oking“tš²!ypically‘§ measure“ingredien˜ts“b˜y“v˜olume,‘ç2and“useŽ¡‘Gunits–êƒthat›ê„are“not˜alw•²!a“ys›êƒcon“v“enien“t˜m“ultiples‘ê„of˜eac“h˜other.‘ª6SuppMÞose˜that˜y“ou‘ê„ha“v“e˜aŽ¡‘GrecipMÞe–ücfor“6“and“yš²!ou“wish“to“mak˜e“a“pšMÞortion“for“1.‘ßÔIf“the“recip˜e“calls“for“2“1/2“cups“of“anŽ¡‘Gingredien•²!t,‘^ y“ou›9Omigh“t˜wish˜to˜kno“w˜the‘9Pmeasuremen“ts˜in˜terms˜of˜measuring˜devices˜y“ouŽ¡‘Gha•²!v“e›¦fa“v‘ÿdDailable,˜y“ou˜could˜use˜âunits˜áand˜en“terަ‘.ùœâYou–¿ªhave:“(2+1|2)“cup“/“6Ž¡‘.ùœYou–¿ªwant:“cup;1|2“cup;1|3“cup;1|4“cup;tbsp;tsp;1|2“tsp;1|4“tspŽ¡‘\öì1|3–¿ªcup“+“1“tbsp“+“1“tspŽŽŸ-ww‘GáBy–Ü9default,‘)®if“a›Ü:unit“in˜a“list“bMÞegins˜with“fraction“of˜the“form˜1â|åx‘˜áand“its˜m²!ultiplier“isŽ¡‘Gan–¥inš²!teger,‘ä§the“fraction“is“giv˜en“as“the“proMÞduct‘¥of“the“m˜ultiplier“and“the“n˜umerator;‘$NforŽ¡‘Gexample,ަ‘.ùœâYou–¿ªhave:“12.28125“ftŽ¡‘.ùœYou–¿ªwant:“ft;in;1|8“in;Ž¡‘\öì12–¿ªft“+“3“in“+“3|8“inŽŽŸ-wx‘GáIn‘©man•²!y›©cases,‘©¯suc“h˜as–©the“example˜abMÞo•²!v“e,‘©¯this˜is–©what˜is“w•²!an“ted,‘©¯but˜sometimes–©it˜is“not.Ž¡‘GF‘ÿeor–xbexample,‘•a“co•MÞoking›xarecip“e–xbfor˜6“migh²!t˜call“for“5˜1/4“cup˜of“an˜ingredien•²!t,‘–but˜y“ou‘xbw“an“tŽ¡‘Ga–¦fpMÞortion“for“2,“and“yš²!our“1-cup“measure“is“not“a˜v‘ÿdDailable;“y˜ou“migh˜t“tryŽŽŒ‹ ´Ÿò‘GáUnits‘¦fCon•²!v“ersion’Td19ŽŽŽ ƒ33 ý ÌÍ‘.ùœâYou–¿ªhave:“(5+1|4)“cup“/“3ޤ 33‘.ùœYou–¿ªwant:“1|2“cup;1|3“cup;1|4“cupŽ¡‘\öì3|2–¿ªcup“+“1|4“cupŽŽ©+{¼‘GáThis–Ï¿result“mighš²!t“bMÞe“ ne“for“a“bak˜er‘ÏÀwho“has“a“1“1/2-cup“measure“(and“recognizes“theޤ 33‘Gequiv‘ÿdDalence),‘ •but–nŒit“ma²!y“not“bMÞe‘nas“useful“to“someone“with“more“limited“set“of“measures,Ž¡‘Gwho–ÝÜdoMÞes“w•²!an“t–ÝÜto“do“additional“calculations,‘+¸and“only“w•²!an“ts–ÝÜto“knoš²!w“\Ho˜w“man˜y“1/2-Ž¡‘Gcup– measures› to“I‘¬need“to˜add?"‘ ÈAfter˜all,‘jrthat's˜what“w²!as˜actually“ask²!ed.‘ ÇWith“theŽ¡‘Gâ--show-factor–~ áoption,‘´the›~!factor“will“not˜bMÞe“com²!bined˜with“a“unit•²!y˜n“umerator,‘´so‘~ thatŽ¡‘Gy²!ou‘¦fgetŽŸU‘.ùœâYou–¿ªhave:“(5+1|4)“cup“/“3Ž¡‘.ùœYou–¿ªwant:“1|2“cup;1|3“cup;1|4“cupŽ¡‘\öì3–¿ª*“1|2“cup“+“1|4“cupŽŽ¦‘GáA‘|¥user-spMÞeci ed–|ðfractional“unit“with›|ña“n²!umerator“other“than“1“is˜nevš²!er“o˜v˜erridden,‘¸nho˜w˜ev˜er|Ž¡‘Gif–GÂa“unit“list“spMÞeci es“`â3|4–¦fcup;1|2“cupá',‘pa–GÂresult“equiv‘ÿdDalenš²!t“to“1“1/2“cups“will“alw˜a˜ys“bMÞeŽ¡‘Gshoš²!wn–¦fas“`â2“*“3|4‘¿ªcupá'“whether“or“not“the“â--show-factor“áoption“is“giv˜en.Ž©V‘!GSome–pÆapplications›pÅfor“unit“lists˜maš²!y“bMÞe“less“ob˜vious.‘<üSuppMÞose‘pÅthat“y˜ou“ha˜v˜e‘pÅa“pMÞostalŽ¡‘Gscale–cand“wish›bto“ensure“that“it's“accurate˜at“1“oz,‘8Êbut“ha•²!v“e–conly˜metric“calibration“w•²!eigh“ts.Ž¡‘GY‘ÿeou–¦fmigh²!t“tryަ‘.ùœâYou–¿ªhave:“1“ozŽ¡‘.ùœYou–¿ªwant:“100“g;50“g;“20“g;10“g;5“g;2“g;1“g;Ž¡‘\öì20–¿ªg“+“5“g“+“2“g“+“1“g“+“0.34952312“*“1“gŽŽŸ+{»‘GáY‘ÿeou–”îmighš²!t“then“place“one“eac˜h‘”ïof“the“20“g,›˜l5“g,‘˜m2“g,˜and“1“g‘”ïw•²!eigh“ts–”îon“the“scale“and“hopMÞeŽ¡‘Gthat–¦fit“indicates“close“toަ‘.ùœâYou–¿ªhave:“20“g“+“5“g“+“2“g“+“1“gŽ¡‘.ùœYou–¿ªwant:“oz;Ž¡‘\öì0.98767093‘¿ªozŽŽŸ+{¼‘GáAppMÞending–¥Ý`â;á'“to“`âozá'“forces“a‘¥Þone-line“displaš²!y“that“includes“the“unit;‘¦ here“the“in˜teger“partŽ¡‘Gof–¦fthe“result“is“zero,“so“it“is“not“displa•²!y“ed.ŽŸU‘!GA–¦funit“list“suc²!h“asަ‘.ùœâcup;1|2–¿ªcup;1|3“cup;1|4“cup;tbsp;tsp;1|2“tsp;1|4“tspަ‘Gácan–çIbMÞe›çJtedious“to“en²!ter.‘ ‡The“âunits“áprogram˜pro²!vides“shorthand“names“for˜some“commonŽ¡‘Gcom²!binations:ަ‘.ùœâhms‘3¼úáhours,–¦fmin²!utes,“secondsŽ¡‘.ùœâdms‘3¼úáangle:–¦fdegrees,“min²!utes,“secondsŽ¡‘.ùœâtime‘-ýPáy•²!ears,›¦fda“ys,˜hours,˜min“utes˜and˜secondsŽ¡‘.ùœâusvol‘(=¦áUS–¦fcoMÞoking“v²!olume:“cups“and“smallerŽŸU‘GUsing–¦fthese“shorthands,“or“åunit“list“aliasesá,“yš²!ou“can“do“the“follo˜wing“con˜v˜ersions:ަ‘.ùœâYou–¿ªhave:“anomalisticyearŽ¡‘.ùœYou–¿ªwant:“timeŽ¡‘\öì1–¿ªyear“+“25“min“+“3.4653216“secŽ¡‘.ùœYou–¿ªhave:“1|6“cupŽ¡‘.ùœYou–¿ªwant:“usvolŽ¡‘\öì2–¿ªtbsp“+“2“tspŽŽŽŒ‹0Ÿò‘GáUnits‘¦fCon•²!v“ersion’Td20ŽŽŽ ƒ33 ý ÌÍ‘GY‘ÿeou–&Ùcannot›&Øcom²!bine“a˜unit“list˜alias“with“other˜units:‘ ÞÂit“m²!ust˜appMÞear“alone˜at“theޤ 33‘G`âYou‘¦fwant:á'Ž‘Mp¹prompt.Ž©$€‘!GY‘ÿeou–´tcan“displa²!y›´uthe“de nition“of“a“unit“list˜alias“bš²!y“en˜tering“it“at‘´uthe“`âYou‘¦fhave:á'Ž‘=!ôprompt:ŽŸ$‘.ùœâYou–¿ªhave:“dmsŽ¡‘\öìDefinition:–¿ªunit“list,“deg;arcmin;arcsecŽŽŸW³‘GáWhen–aÊy²!ou›aÉspMÞecify“compact˜output“with˜â--compactá,‘o‚â--terse“áor˜â-t“áand˜pMÞerform“con•²!v“ersionŽ¡‘Gto–/‚a“unit›/list,‘‘Èâunits“álists“the“con•²!v“ersion–/‚factors˜for“eac²!h“unit“in˜the“list,‘‘Èseparated“b²!yŽ¡‘Gsemicolons.ަ‘.ùœâYou–¿ªhave:“yearŽ¡‘.ùœYou–¿ªwant:“day;min;secŽ¡‘.ùœ365;348;45.974678ŽŽŸ*Šç‘GáUnlik²!e–¦fthe“case“of“regular“output,“zeros“äar‘ÿp¹e‘yáincluded“in“this“output“list:ަ‘.ùœâYou–¿ªhave:“literŽ¡‘.ùœYou–¿ªwant:“cup;1|2“cup;1|4“cup;tbspŽ¡‘.ùœ4;0;0;3.6280454ŽŽŸelectric›ã=curren²!t.‘”dThe“CGS‘âìsystems˜do“not“de ne˜new“base˜units,‘2sbut“expressŽ¡‘Gc•²!harge›D_and‘D^curren“t˜as‘D^deriv“ed˜units–D^in˜terms˜of“mass,–Wúlength,“and–D^time.‘½0In˜the“ESU‘DFsystem,Ž¡‘Gthe–Ìconstanš²!t‘Ìfor“Coulom˜b's‘Ìla˜w“is“c˜hosen›Ìto“bMÞe˜unitš²!y“and“dimensionless,‘Õ…whic˜h‘Ìde nes“theŽ¡‘Gunit–ûŒof“cš²!harge.‘¤êIn“the“EMU‘û`system,‘¸the“constan˜t“for“AmpMÞere's“la˜w“is“c˜hosen“to“bMÞe“unit˜y“andŽ¡‘Gdimensionless,‘¶whic²!h–²çde nes›²æa“unit“of˜curren²!t.‘`The˜Gaussian“system“usually“uses˜the“ESUŽ¡‘Gunits–úIfor›úJc²!harge“and˜curren•²!t;‘$;it˜c“hoMÞoses‘úIanother˜constan“t–úIso˜that“the˜units“for˜the“electricŽ¡‘Gand–¦fmagnetic“ elds“are“the“same.ŽŽŒ‹\Ÿò‘GáUnits‘¦fCon•²!v“ersion’Td21ŽŽŽ ƒ33 ý ÌÍ‘!GThe–ãdimensions›âof“electrical˜quan²!tities“in˜the“v‘ÿdDarious˜CGS‘¦systems“are˜di eren²!t“fromޤ 33‘Gthe–,üSI‘,Ýdimensions‘,ûfor“the“same“units;‘Utstrictly‘ÿe,‘EDcon•²!v“ersions›,übMÞet“w“een˜these˜systems‘,ûand˜SI‘,ÝareŽ¡‘Gnot–™YpMÞossible.‘ÙƒBut“units›™Xin“di eren²!t“systems˜relate“to˜the“same“ph•²!ysical˜quan“tities,‘›õso‘™YthereŽ¡‘Gis‘­2a›­3äc–ÿp¹orr“esp“ondenc“e‘ÓábMÞet•²!w“een˜these–­2units.‘òCThe“âunits“áprogram˜de nes“the˜units“so˜that“y²!ouŽ¡‘Gcan›¦fcon•²!v“ert˜bMÞet“w“een˜correspMÞonding˜units˜in˜the˜v‘ÿdDarious˜systems.ŽŸLÏ‘Gëc8.1‘™Sps3ecifying–f@CGS“UnitsŽŽŸ33‘GáThe–Ú CGS‘Úde nitions“in•²!v“olv“e‘Ú cmŽ‘×ÿŸü¾®1ó 0e—rcmmi7´=®2Ž‘"Céáand›Ú g&îŸü¾®1´=®2Ž‘ ¸¸á,‘çwhic“h˜is˜problematic˜b•MÞecause˜âunits˜ádo“es˜notŽ¡‘Gnormally–ó¶suppšMÞort“fractional‘ó·ro˜ots“of“base“units.‘ÅÎThe“â--units“á(â-uá)‘ó·option“allo²!ws“selectionŽ¡‘Gof–§a›¨CGS‘unit“system“and˜w²!orks“around“this˜restriction“b•²!y˜in“troMÞducing–§base“units˜for“theŽ¡‘Gsquare–súroMÞots›sùof“length“and˜mass:‘y`âsqrt_cmá'˜and“`âsqrt_gá'.‘F˜The“cen²!timeter˜then“bMÞecomesŽ¡‘G`âsqrt_cm^2á'–D€and“the“gram,‘X`âsqrt_g^2á'.‘½;This“alloš²!ws“w˜orking“from‘Dequations“using“the“unitsŽ¡‘Gin–°the“CGS‘°system,‘²‚and“enforcing“dimensional“conformit²!y“within“that“system.‘úíRecognizedŽ¡‘Gargumen²!ts–³‰to“the›³Šâ--units“áoption“are“`âgauss[ian]á',–¶Ò`âesuá',“`âemuá',“and˜`âsiá';‘ºthe–³‰argumen²!t“isŽ¡‘Gcase–¯©insensitiv²!e.‘ù¥The“default“moMÞde“for“âunits›¯¨áis“SI‘¯§units;‘´Jthe“only“e ect“of˜giving“`âsiá'“withŽ¡‘Gthe–Î-â--units›Î.áoption“is˜to“prepMÞend˜`â(SI)á'“to˜the“`âYou‘¦fhave:á'Ž‘=Ugprompt.‘•ÊGiving˜an“unrecognizedŽ¡‘Gsystem–¦fgenerates“a“w²!arning,“and“âunits“áuses“SI“units.Ž©Ùš‘!GThe–Z´c²!hanges“resulting›Z³from“the“â--units“áoption˜are“actually“conš²!trolled“b˜y‘Z³the“âUNITS_Ž¡‘GSYSTEM›“Æáen•²!vironmen“t˜v‘ÿdDariable.‘רIf‘“Çy“ou˜frequen“tly˜w“ork˜with˜one‘“Çof˜the˜suppMÞorted˜CGS‘“ÂunitsŽ¡‘Gsystems,‘)äy•²!ou›—ma“y‘˜set˜this˜en“vironmen“t–˜v‘ÿdDariable˜rather“than˜giving“the˜â--units“áoption˜atŽ¡‘Geac•²!h›%xin“v“oMÞcation.‘²äAs˜usual,‘?Ban˜option‘%ygiv“en˜on–%ythe˜command“line˜o•²!v“errides–%ythe˜setting“of˜theŽ¡‘Gen•²!vironmen“t–>v‘ÿdDariable.‘¤¿F‘ÿeor“example,‘cîif‘>yš²!ou“w˜ould‘>normally“w˜ork›>with“Gaussian˜units“butŽ¡‘Gmigh•²!t›cîoMÞccasionally‘cïw“ork˜with˜SI,‘cïy“ou˜could˜set˜âUNITS_SYSTEM–cïáto˜`âgaussianá'˜and“spMÞecify˜SIŽ¡‘Gwith–áthe“â--units‘àáoption.‘ÑUnlikš²!e“the“argumen˜t“to“the“â--units–àáoption,‘‡–the“v‘ÿdDalue–áof“âUNITS_Ž¡‘GSYSTEM–_äis‘E!ácase“sensitiv²!e,‘mNso›_ setting“a“v‘ÿdDalue˜of“`âEMUá'“will˜ha•²!v“e–_no“e ect˜other“than“to˜giv²!e“anŽ¡‘Gerror–¦fmessage“and“set“SI“units.ަ‘!GThe– CGS‘ òde nitions› appMÞear“as“conditional“settings“in“the˜standard“units“data“ le,‘*õwhic²!hŽ¡‘Gyš²!ou– can“consult‘Ÿfor“more“information“on“ho˜w›Ÿthese“units“are“de ned,‘!.or“on˜ho²!w“to“de neŽ¡‘Gan–¦falternate“units“system.ŽŸLÏ‘Gëc8.2‘™CGS–f@Units“SystemsŽŽŸ33‘GáThe–)±ESU‘)‘system“deriv²!es“the›)°electromagnetic“units“from“its“unit“of˜cš²!harge,‘B¢the“statcoulom˜b,Ž¡‘Gwhic²!h–gRis›gSde ned“from˜Coulomš²!b's“la˜w.‘È×The“statcoulom˜b‘gSequals“dyneŽ‘7UŸúÞ8®1´=®2Ž‘(œPácmŽ‘:‚or“cmŽ‘e1Ÿü¾®3´=®2Ž‘Ê,ág&îŸü¾®1´=®2Ž‘‹éásŸü¾óO!â…cmsy7º®1Ž‘ ¼tá.Ž¡‘GThe–"…unit‘"„of“curren²!t,›<åthe“statampMÞere,˜is‘"„statcoulom²!b‘¦fsecŽ‘Nþ{,˜analogous“to“the“relationship‘"„in“SI.Ž¡‘GOther–+electrical“units›+are“then“deriv²!ed“in“a˜manner“similar“to“that“for˜SI‘*àunits;‘mPthe“unitsŽ¡‘Guse–ù.the“SI‘ùnames“pre xed“b²!y“`âstat-á',– àe.g.,“`âstatvoltá'–ù.or“`âstatVá'.‘Ö5The“pre x“`âst-á'“is“alsoŽ¡‘Grecognized–¦f(e.g.,“`âstVá').ŽŸÙ›‘!GThe–×EMU‘×system“derivš²!es“the“electromagnetic“units“from“its“unit“of“curren˜t,‘ãAthe“abam-Ž¡‘GpMÞere,‘Wwhic²!h›Ëõis–Ëôde ned“in˜terms“of“AmpšMÞere's“la²!w.‘NˆThe“abamp˜ere›Ëõis“equal“to˜dyneŽ‘›øŸúÞ8®1´=®2Ž‘(-Âá,‘WorŽ¡‘GcmŽ‘ &Ÿü¾®1´=®2Ž‘.t!ág&îŸü¾®1´=®2Ž‘‹éásŸü¾º®1Ž‘ ¼tá.‘ÖûThe‘‘¿unit–‘Àof“cš²!harge,‘•àthe“ab•MÞcoulom˜b,›•áis‘‘¿abamp“ere‘¦fsecŽ‘CÖý,˜again–‘Àanalogous‘‘¿to“theŽ¡‘GSI‘µrelationship.‘8%Other–Óelectrical“units“are“then“deriv²!ed“in“a“manner“similar“to“that“for“SIŽ¡‘Gunits;‘@Úthe– ^units“use“the“SI‘ Cnames“pre xed“b²!y“`âab-á',–'e.g.,“`âabvoltá'– ^or“`âabVá'.‘ÅThe“magneticŽ¡‘G eld–¦funits“include“the“gauss,“the“oMÞersted“and“the“maxw²!ell.ަ‘!GThe–ýGaussian“units“system,‘;âwhicš²!h“w˜as“also‘ükno˜wn“as“the“Symmetric“System,‘;âuses“theŽ¡‘Gsame–6cš²!harge“and‘5curren˜t“units“as“the“ESU‘Ùsystem“(e.g.,–ii`âstatCá',“`âstatAá');‘Ãit–6di ers“b˜yŽŽŒ‹-—Ÿò‘GáUnits‘¦fCon•²!v“ersion’Td22ŽŽŽ ƒ33 ý ÌÍ‘Gde ning–@the“magnetic“ eld“so›Athat“it“has“the“same“units“as“the“electric˜ eld.‘ÚÐThe“resultingޤ 33‘Gmagnetic–F6 eld›F5units“are˜the“same˜ones“used“in˜the“EMU‘Fsystem:‘­Åthe˜gauss,‘Ysthe˜oMÞersted“andŽ¡‘Gthe‘¦fmaxw²!ell.ŽŸ‘Gëc8.3‘™Con•ŒÌv“ersions›f@Bet“w“een˜Di eren“t˜SystemsŽŽŸ33‘GáThe–ÞtCGS‘ÞBsystems“de ne“units“that“measure“the“same“thing‘Þubut“maš²!y“ha˜v˜e“con icting“dimen-Ž¡‘Gsions.‘ÊF‘ÿeurthermore,‘vÀthe–j×dimensions“of“the“electromagnetic“CGS‘jÈunits“are“nev²!er“compatibleŽ¡‘Gwith–*ÄSI.“But“if“yš²!ou“measure“c˜harge“in‘*Åt˜w˜o“di eren˜t“systems“y˜ou“ha˜v˜e“measured“the“sameŽ¡‘Gphš²!ysical–|”thing,‘„ñso“there“is“a“äc–ÿp¹orr“esp“ondenc“e‘O5ábMÞet˜w˜een–|”the“units“in“the“di eren˜t“systems,‘„ñandŽ¡‘Gâunits›•ØásuppMÞorts‘•Ùcon•²!v“ersions˜bMÞet“w“een˜correspMÞonding˜units.‘¬4When˜running‘•Ùwith˜SI,˜âunitsŽ¡‘Gáde nes–Óÿall›Óþof“the˜CGS‘Óóunits“in˜terms“of˜SI.“When˜y²!ou“select˜a“CGS‘Óósystem,‘ßdâunits“áde nesŽ¡‘Gthe–¦fSI“units“and“the“other“CGS“system“units“in“terms“of“the“system“yš²!ou“ha˜v˜e“selected.ŽŸ{4‘.ùœâ(Gaussian)–¿ªYou“have:“statAŽ¡‘n5êYou–¿ªwant:“abAŽ¡‘\öì*‘¿ª3.335641e-11Ž¡‘\öì/‘¿ª2.9979246e+10Ž¡‘.ùœ(Gaussian)–¿ªYou“have:“abAŽ¡‘n5êYou–¿ªwant:“sqrt(dyne)Ž¡‘.ùœconformability‘¿ªerrorŽ¡‘\öì2.9979246e+10–¿ªsqrt_cm^3“sqrt_g“/“s^2Ž¡‘\öì1–¿ªsqrt_cm“sqrt_g“/“sŽŽŸyÍ‘GáIn›ÖÈthe‘ÖÉabMÞo•²!v“e˜example,‘Oâunits˜ácon“v“erts‘ÖÉbMÞet“w“een˜the‘ÖÉcurren“t˜units˜statA–Ö”and‘ÖÉabA“ev²!en˜thoughŽ¡‘Gthe–W¾abA,“from“the‘W¿EMU‘WNsystem,‘Ähas“incompatible“dimensions.‘ ñæThis“w²!orks“bMÞecause“inŽ¡‘GGaussian–5EmošMÞde,‘Xüthe“abA‘5!is“de ned“in‘5Dterms“of“the“statA,“so“it“do˜es“not“ha•²!v“e–5Ethe“correctŽ¡‘Gde nition–¦ffor“EMU;“consequenš²!tly‘ÿe,“y˜ou“cannot“con˜v˜ert“the“abA“to“its“EMU“de nition.Ž©{5‘!GOne–Xºcš²!hallenge‘X»of“con˜v˜ersion“is›X»that“bMÞecause“the˜CGS‘X¦system˜has“few²!er˜base“units,‘hCquan-Ž¡‘Gtities–¯ÿthat“ha•²!v“e›¯ÿdi eren“t˜dimensions˜in˜SI‘¯ýma“y˜ha“v“e˜the˜same˜dimension˜in˜a˜CGS‘¯ýsystem.Ž¡‘GAnd–yš²!et,‘2›they“ma˜y“not“ha˜v˜e“the‘‘same“con˜v˜ersion“factor.‘.\F‘ÿeor“example,‘2šthe“unit‘‘for“the“éEŽ¡‘Gá eld–„oand›„néB‘á elds“are˜the“same“in“the˜Gaussian“system,‘»ñbut˜the“con•²!v“ersion–„ofactors˜to“SIŽ¡‘Gare–šqquite›špdi eren²!t.‘ÙáThis“means˜that“correct“con•²!v“ersion˜is–šqonly“pMÞossible˜if“yš²!ou“k˜eep‘šptrac˜k“ofŽ¡‘Gwhat›%6quan•²!tit“y˜is˜bMÞeing˜measured.‘ZNY‘ÿeou˜cannot˜con“v“ert˜statV/cm˜to˜SI‘%without˜indicatingŽ¡‘Gwhic•²!h›8¶t“ypMÞe˜of‘8· eld˜the˜unit˜measures.‘¹NT‘ÿeo˜aid˜in˜dimensional˜analysis,‘N§âunits˜áde nes˜v‘ÿdDariousŽ¡‘Gdimension–units“sucš²!h“as“LENGTH,“TIME,“and“CHAR˜GE‘to“bMÞe“the“appropriate“dimensionŽ¡‘Gin–-KSI.›-LThe“electromagnetic“dimensions“suc²!h˜as“B‘Ä>‰x³HøŽ–ÑtFIELD‘-(or˜E‘Ä>‰x³HøŽ“FIELD‘-(ma²!y–-KbMÞe˜useful“aidsŽ¡‘GbMÞoth–±¤for“con•²!v“ersion–±¤and“dimensional“analysis“in“CGS.“Y‘ÿeou“can“con•²!v“ert–±¤them“to“or“fromŽ¡‘GCGS›X™in–XÇorder“to‘XÈpMÞerform“SI˜con•²!v“ersions–XÇthat“in“some“cases“will‘XÈnot“w²!ork“directly“due“toŽ¡‘Gdimensional–D incompatibilities.‘½This“example“sho•²!ws›D ho“w–D the˜Gaussian“system“uses˜the“sameŽ¡‘Gunits–¦ffor“all“of“the“ elds,“but“they“all“ha•²!v“e›¦fdi eren“t˜con“v“ersion˜factors˜with˜SI.ަ‘.ùœâ(Gaussian)–¿ªYou“have:“statV/cmŽ¡‘n5êYou–¿ªwant:“E_FIELDŽ¡‘\öì*‘¿ª29979.246Ž¡‘\öì/‘¿ª3.335641e-05ŽŽŸ4ÌÌ‘.ùœ(Gaussian)–¿ªYou“have:“statV/cmŽ¡‘n5êYou–¿ªwant:“B_FIELDŽ¡‘\öì*‘¿ª0.0001Ž¡‘\öì/‘¿ª10000ŽŽŽŒ‹AŸò‘GáUnits‘¦fCon•²!v“ersion’Td23ŽŽŽ ƒ33 ý ÌÍ‘.ùœâ(Gaussian)–¿ªYou“have:“statV/cmޤ 33‘n5êYou–¿ªwant:“H_FIELDŽ¡‘\öì*‘¿ª79.577472Ž¡‘\öì/‘¿ª0.012566371ŽŽŸ4ÌÌ‘.ùœ(Gaussian)–¿ªYou“have:“statV/cmޤ 33‘n5êYou–¿ªwant:“D_FIELDŽ¡‘\öì*‘¿ª2.6544187e-07Ž¡‘\öì/‘¿ª3767303.1ŽŽŸ8‹z‘GáThe–‰Bnext“example“sho²!ws“that“the“ošMÞersted“cannot“b˜e“con•²!v“erted–‰Bdirectly‘‰Ato“the“SI‘‰unit“ofޤ 33‘Gmagnetic›Q) eld,–{ÚA/m,“b•MÞecause˜the˜dimensions˜con ict.‘Þ'W‘ÿee˜cannot˜rede ne‘Q*the˜amp“ere˜toŽ¡‘Gmakš²!e–ôBthis“w˜ork‘ôCbMÞecause“then“it“w˜ould‘ôCnot“con˜v˜ert“with“the–ôCstatampMÞere.‘ÇqBut“y˜ou–ôBcan“stillŽ¡‘Gdo–¦fthis“con•²!v“ersion–¦fas“shoš²!wn“bMÞelo˜w.ŽŸñà‘.ùœâ(Gaussian)–¿ªYou“have:“oerstedŽ¡‘n5êYou–¿ªwant:“A/mŽ¡‘.ùœconformability‘¿ªerrorŽ¡‘\öì1–¿ªsqrt_g“/“s“sqrt_cmŽ¡‘\öì29979246–¿ªsqrt_cm“sqrt_g“/“s^2Ž¡‘.ùœ(Gaussian)–¿ªYou“have:“oerstedŽ¡‘n5êYou–¿ªwant:“H_FIELDŽ¡‘\öì*‘¿ª79.577472Ž¡‘\öì/‘¿ª0.012566371ŽŽ ‡·œ‘Gëc8.4‘™Prompt‘f@Pre xŽŽŸ33‘GáIf– #a“unit“system“is“spMÞeci ed“with“the“â--units“áoption,‘¦Òthe“selected“system's“name“isŽ¡‘GprepMÞended–¦fto“the“`âYou“have:á'Ž‘?Øprompt“as“a“reminder,“e.g.,Ž©ñá‘.ùœâ(Gaussian)–¿ªYou“have:“stCŽ¡‘n5êYou‘¿ªwant:Ž¡‘\öìDefinition:–¿ªstatcoulomb“=“sqrt(dyne)“cm“=“1“sqrt_cm^3“sqrt_g“/“sŽŽŸ+XF‘GáY‘ÿeou–¦fcan“suppressed“the“pre x“b²!y“including“a“lineަ‘.ùœâ!promptŽŸñà‘Gáwith–i„no“argumen²!t›i…in“a“site“or˜pMÞersonal“units“data“ le.‘'8The“prompt˜can“bMÞe“conditionallyŽ¡‘Gsuppressed–¦fbš²!y“including“suc˜h“a“line“within“`â!vará'“...‘ÝÝ`â!endvará'“constructs,“e.g.,ަ‘.ùœâ!var–¿ªUNITS_SYSTEM“gaussian“gaussŽ¡‘.ùœ!promptŽ¡‘.ùœ!endvarŽŽŸ+XF‘GáThis–áÇmigh²!t›áÆbMÞe“appropriate˜if“y²!ou˜normally“use“Gaussian˜units“and˜ nd“the˜pre x“distractingŽ¡‘Gbut›¦fw•²!an“t˜to˜bMÞe˜reminded˜when˜y“ou˜ha“v“e˜selected˜a˜di eren“t˜CGS˜system.ŽŸ#}[‘GëZ9‘ ¸QLogging‘z³CalculationsŽŽŸo<‘GáThe–ÃÄâ--log“áoption“alloš²!ws“y˜ou‘ÃÃto“sa˜v˜e“the“results“of“calculations“in“a“ le;‘Òrthis“can“bMÞe“usefulŽ¡‘Gif–®æy²!ou›®çneed“a˜pMÞermanen²!t“record˜of“y•²!our˜w“ork.‘÷^F‘ÿeor–®æexample,‘ñthe“ uid- o•²!w˜con“v“ersion‘®æinŽ¡‘GSection–çä5.6‘çã[Complicated“Unit“Expressions],›8Bpage“12,˜is“lengthš²!y‘ÿe,‘8Cand‘çãif“y˜ou“w˜ere‘çãto“useŽŽŒ‹O‹Ÿò‘GáUnits‘¦fCon•²!v“ersion’Td24ŽŽŽ ƒ33 ý ÌÍ‘Git–U½in“designing“a“piping“system,‘’yš²!ou“migh˜t“w˜an˜t“a“record“of“it“for“the“pro‘›»ject“ le.‘ëâIf“theޤ 33‘Gin•²!teractiv“e‘¦fsessionŽ©"#‘.ùœâ#–¿ªConversion“factor“A1“for“pressure“dropŽ¡‘.ùœ#–¿ªdP“=“A1“rho“f“L“Q^2/d^5Ž¡‘.ùœYou–¿ªhave:“(8/pi^2)“(lbm/ft^3)ft(ft^3/s)^2(1/in^5)“#“Input“unitsŽ¡‘.ùœYou–¿ªwant:“psiŽ¡‘\öì*‘¿ª43.533969Ž¡‘\öì/‘¿ª0.022970568ŽŽŸR""‘Gáwš²!ere–¦flogged,“the“log“ le“w˜ould“con˜tainަ‘.ùœâ###–¿ªLog“started“Fri“Oct“02“15:55:35“2015ŽŸff‘.ùœ#–¿ªConversion“factor“A1“for“pressure“dropŽ¡‘.ùœ#–¿ªdP“=“A1“rho“f“L“Q^2/d^5Ž¡‘.ùœFrom:–¿ª(8/pi^2)“(lbm/ft^3)ft(ft^3/s)^2(1/in^5)‘>þ#“Input“unitsŽ¡‘.ùœTo:‘>þpsiŽ¡‘\öì*‘¿ª43.533969Ž¡‘\öì/‘¿ª0.022970568ŽŽŸlˆˆ‘GáThe–¦ftime“is“written“to“the“log“ le“when“the“ le“is“opMÞened.ŽŸ""‘!GThe–2ôuse“of“commen²!ts“can›2óhelp“clarify“the“meaning“of“calculations“for“the˜log.‘ ƒ‡TheŽ¡‘Glog–Ñ$includes‘Ñ#conformabilitš²!y“errors“bMÞet˜w˜een“the‘Ñ#units“at“the“`âYou‘¦fhave:á'Ž‘A[Sand“`âYou‘¦fwant:á'ŽŽ¡‘Gprompts,›¿Šbut–…Ónot“other“errors,˜including“lacš²!k“of‘…Ôconformabilit˜y“of“items“in“sums“or“di erencesŽ¡‘Gor–#Damong›#Eitems“in“a“unit˜list.‘²'F‘ÿeor“example,‘=~a˜con•²!v“ersion›#DbMÞet“w“een˜zenith˜angle‘#Eand˜elev‘ÿdDationŽ¡‘Gangle–¦fcould“in•²!v“olv“eަ‘.ùœâYou–¿ªhave:“90“deg“-“(5“deg“+“22“min“+“9“sec)Ž¡’ø-Ú^Ž¡‘.ùœIllegal–¿ªsum“or“difference“of“non-conformable“unitsŽ¡‘.ùœYou–¿ªhave:“90“deg“-“(5“deg“+“22“arcmin“+“9“arcsec)Ž¡‘.ùœYou–¿ªwant:“dmsŽ¡‘\öì84–¿ªdeg“+“37“arcmin“+“51“arcsecŽ¡‘.ùœYou–¿ªhave:“_Ž¡‘.ùœYou–¿ªwant:“degŽ¡‘\öì*‘¿ª84.630833Ž¡‘\öì/‘¿ª0.011816024Ž¡‘.ùœYou‘¿ªhave:ŽŽ ”"!‘GáThe–¦flog“ le“wš²!ould“con˜tainަ‘.ùœâFrom:–¿ª90“deg“-“(5“deg“+“22“arcmin“+“9“arcsec)Ž¡‘.ùœTo:‘>þdeg;arcmin;arcsecŽ¡‘\öì84–¿ªdeg“+“37“arcmin“+“51“arcsecŽ¡‘.ùœFrom:‘¿ª_Ž¡‘.ùœTo:‘>þdegŽ¡‘\öì*‘¿ª84.630833Ž¡‘\öì/‘¿ª0.011816024ŽŽŸ_UU‘GáThe–àinitial›àen²!try“error˜(forgetting“that˜minš²!utes“ha˜v˜e“dimension›àof“time,‘½and˜that“arcmin²!utesŽ¡‘Gm²!ust–ºbMÞe›ºused“for˜dimensions“of˜angle)“doMÞes˜not“appMÞear˜in“the˜output.‘îWhen˜con•²!v“erting‘ºtoŽ¡‘Ga–¦funit“list“alias,“âunits“áexpands“the“alias“in“the“log“ le.ŽŽŒ‹XÕŸò‘GáUnits‘¦fCon•²!v“ersion’Td25ŽŽŽ ƒ33 ý ÌÍ‘!GThe–"l`âFrom:á'›"mand“`âTo:á'˜tags“are˜written“to˜the“log˜ le“ev²!en˜if“the˜â--quiet“áoption˜is“giv²!en.ޤ 33‘GIf–_the›_log“ le˜exists“when˜âunits“áis“in•²!v“ok“ed,‘.the–_new“results˜are“appMÞended˜to“the˜log“ le.Ž¡‘GThe–_Þtime›_ßis“written˜to“the“log˜ le“eac²!h“time˜the“ le˜is“opMÞened.‘ÆZThe˜â--log“áoption˜is“ignoredŽ¡‘Gwhen–¦fâunits“áis“used“non-in•²!teractiv“ely‘ÿe.ŽŸ(0û‘GëZ10‘ ¸QIn–ÿuÂv“oking‘z³ë]unitsŽŽŸ%|«‘GáY‘ÿeou›¦fin•²!v“ok“e˜âunits˜álik“e˜this:ޤK°‘.ùœâunits–¿ª[èoptionsâ]“[èfrom-unit“â[èto-unitâ]]Ž¡‘GáIf‘$@the–$Aåfrom-unit›a@áand“åto-unit˜áare›$@omitted,‘C·the“program˜will˜use“in•²!teractiv“e˜prompts‘$Ato˜de-ޤ 33‘Gtermine–¤üwhicš²!h“con˜v˜ersions›¤ûto“pMÞerform.‘ÙŸSee“Chapter˜2“[In•²!teractiv“e–¤üUse],‘ä¡page“1.‘ÙžIf“bMÞothŽ¡‘Gåfrom-unit–‰²áand‘L±åto-unit“áare–L²givš²!en,‘vDâunits“áwill“prin˜t“the›L±result“of“that“single˜con•²!v“ersion‘L²andŽ¡‘Gthen–]‘exit.‘Å—If“only›]’åfrom-unit‘š‘áappMÞears“on˜the“command˜line,‘l"âunits˜áwill“displa²!y˜the“de nitionŽ¡‘Gof–ãhthat“unit“and“exit.‘œÞUnits“spšMÞeci ed“on“the“command‘ãiline“ma²!y“need“to“b˜e“quoted“to“protectŽ¡‘Gthem–Þ\from“shell›Þ[in²!terpretation“and“to“group˜them“inš²!to“t˜w˜o“argumen˜ts.‘…¾Note“also‘Þ[that“theŽ¡‘Gâ--quiet–_jáoption“is‘_ienabled“bš²!y“default“if“y˜ou“spMÞecify‘_iåfrom-unit‘œjáon“the“command“line.‘èSeeŽ¡‘GChapter–¦f3“[Command“Line“Use],“page“4.Ž©K°‘!GThe–adefault“bšMÞeha²!vior‘`of“âunits“ácan“b˜e‘`cš²!hanged“b˜y“v‘ÿdDarious“options“giv˜en‘`on“the“commandŽ¡‘Gline.‘»RIn–>Çmost›>Æcases,‘Sthe“options˜ma•²!y˜bMÞe˜giv“en˜in˜either˜short˜form˜(a‘>Çsingle˜`â-á'˜follo“w“ed˜b“y˜aŽ¡‘Gsingle–|cš²!haracter)“or“long“form“(`â--á'‘|follo˜w˜ed“b˜y“a“w˜ord“or“h˜yphen-separated“w˜ords).‘ÏÃShort-Ž¡‘Gform–nsoptions›nrare“cryptic“but˜require“less“t²!yping;‘long-form˜options“require“more˜t²!yping“butŽ¡‘Gare–µrmore›µqexplanatory“and“ma²!y“bMÞe˜more“mnemonic.‘ With“long-form“options“y²!ou˜need“onlyŽ¡‘Gen•²!ter›·{sucien“t˜c“haracters˜to˜uniquely˜iden“tify˜the˜option‘·zto˜the˜program.‘F‘ÿeor˜example,Ž¡‘G`â--out›¿ª%fá'–Îvw²!orks,‘Ø{but“`â--o˜%fá'“fails›ÎwbMÞecause“âunits“áhas˜other“long“options˜bMÞeginning“withŽ¡‘G`âoá'.‘ÝÝHo•²!w“ev“er,–¦f`â--qá'“w²!orks“bšMÞecause“`â--quietá'“is“the“only“long“option“b˜eginning“with“`âqá'.ŽŸK±‘!GSome–=üoptions“require›=ýargumen²!ts“to“spMÞecify“a“v‘ÿdDalue˜(e.g.,‘£á`â-d›¿ª12á'“or“`â--digits˜12á').Ž¡‘GShort-form–Ž«options›ެthat“do˜not“tak•²!e˜argumen“ts‘Ž«ma“y˜bMÞe–Ž«concatenated˜(e.g.,‘“j`â-erSá'˜is“equiv-Ž¡‘Galen²!t›äòto‘äó`â-e–¿ª-r“-Sá');‘„8the˜last˜option–äóin˜suc²!h˜a“list˜ma²!y˜bMÞe“one˜that˜tak²!es“an˜argumen²!tŽ¡‘G(e.g.,›\O`â-ed‘¿ª12á').‘’tWith–7îshort-form“options,˜the“space“bMÞet•²!w“een›7ían–7îoption“and˜its“argumen²!tŽ¡‘Gis–_optional“(e.g.,‘;`â-d12á'“is“equiv‘ÿdDalenš²!t“to“`â-d‘¿ª12á').‘BÉLong-form“options“ma˜y‘`not“bMÞe“concate-Ž¡‘Gnated,‘£Pand–¢Šthe“space“bMÞet•²!w“een–¢Ša“long-form‘¢‹option“and“its“argumen²!t“is“required.‘Ü”Short-formŽ¡‘Gand–Élong-form“options‘Émaš²!y“bMÞe“in˜termixed“on“the›Écommand“line.‘EóOptions˜maš²!y“bMÞe“giv˜enŽ¡‘Gin–…þan²!y“order,›Œybut“when“incompatible‘…ÿoptions“(e.g.,˜â--output-format“áand“â--exponentialá)Ž¡‘Gare–ÚIgivš²!en“in‘ÚHcom˜bination,‘'AbMÞeha˜vior“is“con˜trolled“b˜y‘ÚHthe“last“option“giv˜en.‘y…F‘ÿeor“example,Ž¡‘G`â-o%.12f‘¿ª-eá'–¦fgivš²!es“expMÞonen˜tial“format“with“the“default“eigh˜t“signi can˜t“digits).ަ‘!GThe–¦ffolloš²!wing“options“are“a˜v‘ÿdDailable:ŽŸ×ï‘Gâ-cŽ¡‘G--check‘“MáChec²!k–Ž.that›Ž-all“units˜and“pre xes˜de ned“in“the˜units“data˜ le“reduce˜to“primitiv²!eŽ¡‘Kâ:units.‘ØÇPrin²!t–—$a›—%list“of“all“units“that˜cannot“bMÞe“reduced.‘ØÇAlso˜displa²!y“some“otherŽ¡‘Kâ:diagnostics–ÌÌabMÞout›ÌÍsuspicious“de nitions˜in“the˜units“data“ le.‘QOnly“de nitionsŽ¡‘Kâ:activš²!e–!ðin“the‘!ñcurren˜t“loMÞcale“are“c˜hec˜k˜ed.‘±¶Y‘ÿeou“should“alw˜a˜ys“run‘!ñâunits“áwith“thisŽ¡‘Kâ:option–¦fafter“moMÞdifying“a“units“data“ le.ŽŽŒ‹aëŸò‘GáUnits‘¦fCon•²!v“ersion’Td26ŽŽŽ ƒ33 ý ÌÍ‘Gâ--check-verboseޤ 33‘G--verbose-checkŽ¡‘Kâ:áLikš²!e–dthe“â--check‘dáoption,‘“Œthis“option“prin˜ts“a›dlist“of“units“that˜cannot“bMÞe“re-Ž¡‘Kâ:duced.‘[_But–zæto›zçhelp“ nd˜unit“de nitions˜that“cause˜endless˜loMÞops,‘°it“lists˜theŽ¡‘Kâ:units–ªas“they“are“c•²!hec“k“ed.‘èõIf–ªâunits“áhangs,‘«then“the“last‘ªunit“to“bMÞe“prin²!ted“hasŽ¡‘Kâ:a–¦fbad“de nition.‘ÝÝOnly“de nitions“activš²!e“in“the“curren˜t“loMÞcale“are“c˜hec˜k˜ed.Ž©×ç‘Gâ-d‘¦fèndigitsŽ¡‘Gâ--digits‘¦fèndigitsŽ¡‘Kâ:áSet›ŸRthe‘ŸQn•²!um“bMÞer˜of˜signi can“t–ŸQdigits˜in˜the˜output“to˜the˜v‘ÿdDalue“spMÞeci ed˜(whic²!hŽ¡‘Kâ:m²!ust–# bMÞe“greater“than›# zero).‘²F‘ÿeor“example,‘=Q`â-d‘¿ª12á'“sets˜the“n•²!um“bMÞer–# of“signi can²!tŽ¡‘Kâ:digits›ctto–cu12.‘With“expMÞonen•²!tial˜output˜âunits˜ádispla“ys–cuone˜digit˜to˜the“left˜ofŽ¡‘Kâ:the–˜decimal“pMÞoinš²!tŸü¾®2Ž‘ › áand“elev˜en“digits“to“the‘™righ˜t“of“the“decimal“pMÞoin˜t.‘ FtOnŽ¡‘Kâ:most–¶ãsystems,‘ûthe“maximš²!um“n˜um˜bMÞer‘¶âof“in˜ternally“meaningful“digits‘¶âis“15;‘?!ifŽ¡‘Kâ:y²!ou–Š&spMÞecify›Š'a“greater˜n•²!um“bMÞer–Š&than“y²!our˜system's“maxim²!um,‘Íâunits“áwill˜prin²!t“aŽ¡‘Kâ:wš²!arning–…and‘„set“the“n˜um˜bMÞer›„to“the“largest“meaningful˜v‘ÿdDalue.‘¨=T‘ÿeo“directly˜set“theŽ¡‘Kâ:maxim•²!um›h(v‘ÿdDalue,‘tšgiv“e˜an˜argumen“t‘h'of˜âmax˜á(e.g.,‘tš`â-d‘¿ªmaxá').‘ÉBe˜a“w“are,‘tšof˜course,Ž¡‘Kâ:that–åæ\signi can²!t"›åçhere“refers˜only“to˜the“ädisplay‘Ýèáof“n•²!um“b•MÞers;‘§if˜results‘åædep“endŽ¡‘Kâ:on›¢¿ph•²!ysical‘¢Àconstan“ts˜not˜kno“wn–¢Àto˜this˜precision,‘áÕthe“ph²!ysically˜meaningfulŽ¡‘Kâ:precision–@Úmaš²!y“bMÞe‘@Ùless“than“that“sho˜wn.‘¼The“â--digits“áoption‘@Ùcon icts“with“theŽ¡‘Kâ:â--output-format‘¦fáoption.ަ‘Gâ-eŽ¡‘G--exponentialŽ¡‘Kâ:áSet–!|the›!{n²!umeric“output“format˜to“expMÞonen•²!tial˜(i.e.,‘€Ascien“ti c‘!|notation),‘€@lik“eŽ¡‘Kâ:that–ZDused›ZEin“the“Unix˜âunits“áprogram.‘Ä|The˜default“precision“is˜eighš²!t“signi can˜tŽ¡‘Kâ:digits–e(sev²!en›eŒdigits“to“the˜righ²!t“of“the˜decimal“pšMÞoin²!t);‘{*this“can“b˜e‘eŒc²!hanged“withŽ¡‘Kâ:the–&žâ--digits“áoption.‘³EThe“â--exponential“áoption“con icts“with“the“â--output-Ž¡‘Kâ:format‘¦fáoption.ަ‘Gâ-o‘¦fèformatŽ¡‘Gâ--output-format‘¦fèformatŽ¡‘Kâ:áThis–…÷option‘…öa ords“complete“conš²!trol“o˜v˜er‘…öthe“n˜umeric“output“format‘…öusing“theŽ¡‘Kâ:spMÞeci ed– ×åformatá.‘.The“format› Öis“a“single˜ oating“pMÞoin•²!t˜n“umeric– ×format˜for“theŽ¡‘Kâ:âprintf()–©Åáfunction›©Æin“the˜C“programming“language.‘çüAll“compilers˜suppMÞort“theŽ¡‘Kâ:format–¸ôt²!ypšMÞes“`âgá'“and‘¸õ`âGá'“to“sp˜ecify“signi canš²!t“digits,‘ý—`âeá'‘¸õand“`âEá'“for“scien˜ti cŽ¡‘Kâ:notation,‘Ý=and–Ÿ`âfá'“for›Ÿ xed-pMÞoin²!t“decimal.‘ÇâThe“ISO‘žÓC99˜standard“in²!troMÞducedŽ¡‘Kâ:the–D¤`âFá'“t²!ypšMÞe‘D£for“ xed-p˜oin²!t“decimal“and›D£the“`âaá'“and“`âAá'˜t²!ypMÞes“for“hexadecimalŽ¡‘Kâ: oating–¿âpMÞoinš²!t;‘ÌŸthese“t˜ypMÞes“are‘¿áallo˜w˜ed“with“compilers‘¿áthat“suppMÞort“them.‘*PTheŽ¡‘Kâ:default–Óàformat“is“`â%.8gá';‘jœfor“greater“precision,‘>y²!ou“could“spMÞecify“`â-o‘¿ª%.15gá'.Ž¡‘Kâ:See–ùpChapter“13“[Numeric“Output“F‘ÿeormat],›N2page“38,˜and“the“doMÞcumen²!tationŽ¡‘Kâ:for–‘mâprintf()“áfor“more‘‘ldetailed“descriptions“of“the“format“spMÞeci cation.‘žñTheŽ¡‘Kâ:â--output-format–;áoption›EáandŽ¡‘Kâ:its–¬žmš²!ultiplier‘¬Ÿis“an“in˜teger“other›¬Ÿthan“1,‘®,the“fraction˜is“giv²!en“as“the˜proMÞduct“ofŽ¡‘Kâ:the–ÈÜmš²!ultiplier‘ÈÛand“the“n˜umerator“(e.g.,‘Ñy`â3|8›¿ªiná'‘ÈÛrather“than“`â3–¦f*“1|8˜iná').‘E>InŽ¡‘Kâ:some–0”cases,›Sthis“is“not‘0“what“is“w•²!an“ted;‘uªfor–0”example,˜the“results“for‘0“a“coMÞokingŽ¡‘Kâ:recipMÞe›dþmigh•²!t‘dÿsho“w˜`â3–¦f*“1|2–¿ªcupá'‘dÿas˜`â3|2“cupá'.‘§With˜the‘dÿâ--show-factor˜áop-Ž¡‘Kâ:tion,‘o•a–GXresult›GYequiv‘ÿdDalen²!t“to˜1.5“cups˜will“displa²!y˜as“`â3–¦f*“1|2‘¿ªcupá'˜rather‘GXthanŽ¡‘Kâ:`â3|2‘¿ªcupá'.‘®×A‘–{user-spMÞeci ed›–ºfractional––¹unit“with˜a“n²!umerator“other“than˜1“isŽ¡‘Kâ:nev•²!er›VÌo“v“erridden,‘‚åho“w“ev“er|if˜a˜unit‘VÍlist˜spMÞeci es˜`â3|4–¦fcup;1|2“cupá',‘‚åa˜resultŽ¡‘Kâ:equiv‘ÿdDalenš²!t–õto“1‘ö1/2“cups“will“alw˜a˜ys‘öbMÞe“sho˜wn“as“`â2–¦f*“3|4‘¿ªcupá'‘öwhether–õor“notŽ¡‘Kâ:the–¦fâ--show-factor“áoption“is“giv²!en.ަ‘Gâ-vŽ¡‘G--verboseŽ¡‘Kâ:áGiv•²!e›ñísligh“tly˜more˜v“erbMÞose˜output˜when˜con“v“erting˜units.‘¡µWhen˜com“bined˜withŽ¡‘Kâ:the–š‚â-c“áoption“this“givš²!es“the“same“e ect“as“â--check-verboseá.‘ÙæWhen“com˜binedŽ¡‘Kâ:with–ùâ--version“áproMÞduces›úa“more“detailed“output,‘Wequiv‘ÿdDalen²!t˜to“the“â--infoŽ¡‘Kâ:áoption.ަ‘Gâ-VŽ¡‘G--versionŽ¡‘Kâ:áPrinš²!t–q0the‘q1program“v˜ersion“n˜um˜bMÞer,‘{Õtell“whether›q1the“âreadline“álibrary˜has“bMÞeenŽ¡‘Kâ:included,‘•tell–eJwhether“UTF-8“suppšMÞort“has“b˜een“included;‘ļgiv²!e“the“lo˜cale,‘•theŽ¡‘Kâ:loMÞcation––Fof›–Gthe“default“units˜data“ le,‘Ò>and“the˜loMÞcation“of“the˜pMÞersonal“unitsŽ¡‘Kâ:data–¦f le;“indicate“if“the“pšMÞersonal“units“data“ le“do˜es“not“exist.ŽŸ‘Kâ:When–¹9givš²!en“in‘¹8com˜bination“with“the“â--terse–¹8áoption,‘½îthe“program–¹9prin˜ts“onlyŽ¡‘Kâ:the–¦fvš²!ersion“n˜um˜bMÞer“and“exits.ŽŸ‘Kâ:When–Ô9givš²!en‘Ô8in“com˜bination“with“the›Ô8â--verbose“áoption,–_­the˜program,“theŽ¡‘Kâ:â--version–¦fáoption“has“the“same“e ect“as“the“â--info“áoption“bMÞelo²!w.ަ‘Gâ-IŽ¡‘G--info‘R÷áPrinš²!t–´division“signs“are‘s?not“shoš²!wn,‘¦tand“there“is“no“leading“whitespace.‘DfIf“y˜ouŽ¡‘Kâ:con•²!v“ert–dto“a“unit“list,‘¤then“the“output“is“a“semicolon“separated“list“of“factors.Ž¡‘Kâ:This–¦fturns“o “the“â--verbose“áoption.ަ‘Gâ-qŽ¡‘G--quietŽ¡‘G--silent‘ Ó£áSuppress–the“displaš²!y“of“statistics“abMÞout“the“n˜um˜bMÞer‘of“units“loaded,‘3.an˜y“mes-Ž¡‘Kâ:sages–8Öprinš²!ted“b˜y›8Õthe“units“database,‘]qand“the“prompting“of“the˜user“for“units.Ž¡‘Kâ:This–‘ýoption“doMÞes“not“a ect‘‘ühoš²!w“âunits“ádispla˜ys“the“results.‘ºThis“option“is“turnedŽ¡‘Kâ:on›|Êb²!y–|Ëdefault“if˜yš²!ou“in˜v˜ok˜e–|Êâunits“áwith›|Ëa“unit˜expression˜on“the“command˜line.ŽŽŒ‹œ§Ÿò‘GáUnits‘¦fCon•²!v“ersion’Td30ŽŽŽ ƒ33 ý ÌÍ‘GëZ11‘ ¸QOutput‘z³St‘ÿuÂylesŽŽŸ+™œ‘GáThe–†Eoutput›†Fcan“bMÞe“t•²!w“eak“ed–†Ein˜v‘ÿdDarious“w•²!a“ys–†Eusing“command˜line“options.‘Ó'With˜no“options,ޤ 33‘Gthe–¦foutput“loMÞoks“lik²!e“thisŽ©UV‘.ùœâ$‘¿ªunitsŽ¡‘.ùœCurrency–¿ªexchange“rates“from“FloatRates“(USD“base)“on“2019-02-20Ž¡‘.ùœ3070–¿ªunits,“109“prefixes,“109“nonlinear“unitsŽŸff‘.ùœYou–¿ªhave:“23ftŽ¡‘.ùœYou–¿ªwant:“mŽ¡‘\öì*‘¿ª7.0104Ž¡‘\öì/‘¿ª0.14264521Ž¡‘.ùœYou–¿ªhave:“mŽ¡‘.ùœYou–¿ªwant:“ft;inŽ¡‘\öì3–¿ªft“+“3.3700787“inŽŽ ™UT‘GáThis–¦fis“arguably“a“bit“cryptic;“the“â--verbose“áoption“mak²!es“clear“what“the“output“means:ަ‘.ùœâ$–¿ªunits“--verboseŽ¡‘.ùœCurrency–¿ªexchange“rates“from“FloatRates“(USD“base)“on“2019-02-20Ž¡‘.ùœ3070–¿ªunits,“109“prefixes,“109“nonlinear“unitsŽŸff‘.ùœYou–¿ªhave:“23“ftŽ¡‘.ùœYou–¿ªwant:“mŽ¡‘\öì23–¿ªft“=“7.0104“mŽ¡‘\öì23–¿ªft“=“(1“/“0.14264521)“mŽ¡‘.ùœYou–¿ªhave:“meterŽ¡‘.ùœYou–¿ªwant:“ft;inŽ¡‘\öìmeter–¿ª=“3“ft“+“3.3700787“inŽŽ ™UT‘GáThe–áâ--quiet“áoption“suppresses“the“clutter‘àdispla•²!y“ed–áwhen“âunits“ástarts,‘rÿas“w²!ell“as“theŽ¡‘Gprompts–ì‡to“the–ì†user.‘ŸéThis“option–ì‡is“enabled“bš²!y‘ì†default“when“y˜ou“giv˜e“units‘ì†on“the“commandŽ¡‘Gline.ަ‘.ùœâ$–¿ªunits“--quietŽ¡‘.ùœ23‘¿ªftŽ¡‘.ùœmŽ¡‘\öì*‘¿ª7.0104Ž¡‘\öì/‘¿ª0.14264521ŽŸff‘.ùœ$–¿ªunits“23ft“mŽ¡‘\öì*‘¿ª7.0104Ž¡‘\öì/‘¿ª0.14264521ŽŽŸ~îî‘GáThe–´Lremaining›´Kst²!yle“options˜alloš²!w“y˜ou‘´Kto“displa˜y‘´Konly“n˜umerical›´Kv‘ÿdDalues“without˜the“tab˜orŽ¡‘Gthe–T´mš²!ultiplication“and“division“signs,‘€Gor“to“displa˜y“just“a“single“line“sho˜wing“the“forw˜ardŽ¡‘Gcon•²!v“ersion:ŽŽŒ‹§÷Ÿò‘GáUnits‘¦fCon•²!v“ersion’Td31ŽŽŽ ƒ33 ý ÌÍ‘.ùœâ$–¿ªunits“--compact“23ft“mޤ 33‘.ùœ7.0104Ž¡‘.ùœ0.14264521Ž©ff‘.ùœ$–¿ªunits“--compact“m“ ft;in Ž¡‘.ùœ3;3.3700787ަ‘.ùœ$–¿ªunits“--one-line“23ft“mŽ¡‘\öì*‘¿ª7.0104ަ‘.ùœ$–¿ªunits“--one-line“23ft“1/mŽ¡‘\öìreciprocal‘¿ªconversionŽ¡‘\öì*‘¿ª0.14264521ަ‘.ùœ$–¿ªunits“--one-line“23ft“kgŽ¡‘.ùœconformability‘¿ªerrorŽ¡‘\öì7.0104‘¿ªmŽ¡‘\öì1‘¿ªkgŽŽ ï¾t‘GáNote–¾rthat“when“con•²!v“erting–¾rto“a“unit“list,‘Ätthe“â--compact“áoption“displa²!ys“a“semicolon“sepa-ޤ 33‘Grated–¥ílist›¥ìof“results.‘Ý´Also“bMÞe˜a•²!w“are–¥íthat“the˜âone-line“áoption˜doMÞesn't“liv²!e“up˜to“its˜name“ifŽ¡‘Gy²!ou–Ù execute›Ù a“reciproMÞcal˜con•²!v“ersion–Ù or“if˜y²!ou“get˜a“conformabilit²!y“error.‘™jThe“former˜case“canŽ¡‘GbMÞe›Zprev•²!en“ted‘[using˜the˜â--strict˜áoption,‘.]whic“h˜suppresses˜reciproMÞcal‘[con“v“ersions.‘«ÙSimilarlyŽ¡‘Gyš²!ou–-„can“suppress‘-ƒunit“list“con˜v˜ersion“using“â--nolistsá.‘µ‘It“is“impMÞossible“to‘-ƒprev˜en˜t“the“threeŽ¡‘Gline–¦ferror“output.Ž©X‘.ùœâ$–¿ªunits“--compact“--nolists“m“ ft;in Ž¡‘.ùœError–¿ªin“ ft;in :“Parse“errorŽŸff‘.ùœ$–¿ªunits“--one-line“--strict“23ft“1/mŽŽŸ6ñª‘GáThe–Åv‘ÿdDarious“stš²!yle“options“can“bMÞe“com˜bined“appropriately‘ÿe.‘ úThe“ultimate“com˜bination“isŽ¡‘Gthe‘Aâ--terse–Báoption,‘8wwhicš²!h“com˜bines›Aâ--strictá,–8xâ--quietá,“â--one-lineá,‘8wand‘Bâ--compact˜átoŽ¡‘GprošMÞduce–χthe“minimal“output,‘ÙÏjust‘ψa“single“n•²!um“b˜er–χfor“regular“con•²!v“ersions–χand“a“semicolonŽ¡‘Gseparated– þlist› ÿfor“con•²!v“ersion– þto“unit˜lists.‘¦This“will“lik²!ely˜bšMÞe“the“b˜est“c²!hoice‘ ÿfor“programsŽ¡‘Gthat›¦fw•²!an“t˜to˜call˜âunits˜áand˜then˜proMÞcess˜its˜result.ަ‘.ùœâ$–¿ªunits“--terse“23ft“mŽ¡‘.ùœ7.0104Ž©ff‘.ùœ$–¿ªunits“--terse“m“ ft;in Ž¡‘.ùœ3;3.3700787ަ‘.ùœ$–¿ªunits“--terse“23ft“1/mŽ¡‘.ùœconformability‘¿ªerrorŽ¡‘.ùœ7.0104‘¿ªmŽ¡‘.ùœ1–¿ª/“mŽŽ —ˆ‘GëZ12‘ ¸QAdding–z³Y‘þaGour“Own“De nitionsŽŽŽŒ‹ ®×Ÿò‘GáUnits‘¦fCon•²!v“ersion’Td32ŽŽŽ ƒ33 ý ÌÍ‘Gëc12.1‘™Units–f@Data“FilesŽŽŸ33‘GáThe–ounits›nand“pre xes˜that“âunits“ácan˜con•²!v“ert–oare˜de ned“in“the˜units“data˜ le,‘ ñt²!ypicallyޤ 33‘Gâ/usr/share/units/definitions.unitsá.‘'If–¾Èy²!ou“can't“ nd“this“ le,‘Äàrun“âunits‘¿ª--versionŽ¡‘Gáto–Þget“information“on‘Ýthe“ le“loMÞcations“for“yš²!our“installation.‘ÿDAlthough“y˜ou“can“extendŽ¡‘Gor–hkmoMÞdify“this‘hldata“ le“if“yš²!ou“ha˜v˜e›hlappropriate“user“privileges,‘˜ìit's“usually˜bMÞetter“to“putŽ¡‘Gextensions–¦fin“separate“ les“so“that“the“de nitions“will“bMÞe“preservš²!ed“if“y˜ou“upMÞdate“âunitsá.Ž©"#‘!GY‘ÿeou–ˆ™can›ˆšinclude“additional˜data“ les˜in“the˜units“database˜using“the˜`â!includeá'“commandŽ¡‘Gin–¦fthe“standard“units“data“ le.‘ÝÝF‘ÿeor“exampleަ‘.ùœâ!include‘þ¨/usr/local/share/units/local.unitsަ‘Gámighš²!t–LbMÞe“appropriate“for‘La“site-wide“supplemen˜tal“data“ le.‘¿ÅThe‘LloMÞcation“of“the“`â!includeá'Ž¡‘Gstatemenš²!t–aŠin“the‘a‰standard“units“data“ le“is“impMÞortan˜t;‘x~later“de nitions‘a‰replace“earlier“ones,Ž¡‘Gso–7ôan²!y›7óde nitions“in“an˜included“ le“will“o•²!v“erride˜de nitions–7ôbMÞefore“the˜`â!includeá'“state-Ž¡‘Gmen²!t–/ëin›/êthe“standard˜units“data˜ le.‘zkWith“normal˜in•²!v“oMÞcation,‘RLno˜w“arning‘/ëis˜giv“en‘/ëabMÞoutŽ¡‘Grede nitions;‘„rto›syensure–sxthat“y²!ou“don't˜ha•²!v“e–sxan“unin²!tended˜rede nition,‘}§run˜âunits‘¿ª-c“áafterŽ¡‘Gmaking–¦fcš²!hanges“to“an˜y“units“data“ le.ަ‘!GIf–l¨yš²!ou“w˜an˜t‘l§to“add“y˜our“o˜wn›l§units“in“addition“to˜or“in“place“of˜standard“or“site-wideŽ¡‘Gsupplemenš²!tal–‹Þunits“data–‹ß les,‘Ä_y˜ou“can–‹Þinclude“them“in›‹ßthe“â.units“á le“in˜y²!our“home“directory‘ÿe.Ž¡‘GIf–Ædthis›Æe le“exists“it˜is“read˜after“the“standard˜units“data“ le,‘Îdso˜that“an²!y“de nitions˜in“thisŽ¡‘G le–R/will›R0replace“de nitions˜of“the“same˜units“in“the˜standard“data˜ le“or“in˜ les“includedŽ¡‘Gfrom–¶¿the“standard›¶¾data“ le.‘èThis˜ le“will“not“bMÞe“read˜if“an²!y“units“ les“are˜spMÞeci ed“on“theŽ¡‘Gcommand–Ø3line.‘™!(Under“Windo²!ws›Ø2the“pMÞersonal˜units“ le˜is“named“âunitdef.unitsá.)‘™!RunningŽ¡‘Gâunits‘¦f-VŽ‘A›¹áwill–¦fdisplaš²!y“the“loMÞcation“and“name“of“y˜our“pMÞersonal“units“ le.ަ‘!GThe–§Fâunits›§Eáprogram“ rst˜tries“to“determine˜y²!our“home“directory˜from“the˜âHOME“áen²!vi-Ž¡‘Gronmenš²!t–%¬v‘ÿdDariable.‘[°On“systems“running‘%­Microsoft“Windo˜ws,‘E}if‘%­âHOME“ádoMÞes“not“exist,‘E~âunitsŽ¡‘Gáattempts–Éto›Ê nd“y²!our“home“directory˜from“âHOMEDRIVEá,‘7ââHOMEPATH“áand“âUSERPROFILEá.‘;Y‘ÿeouŽ¡‘Gcan–_ÄspMÞecify›_Åan“arbitrary˜ le“as˜y²!our“pMÞersonal˜units“data˜ le“with˜the“âMYUNITSFILE˜áen²!viron-Ž¡‘Gmen²!t–Î#v›ÿdDariable;‘9if“this“v˜ariable“exists,‘ùcits“v˜alue“is‘Î"used“without“searcš²!hing“y˜our‘Î"home“directory‘ÿe.Ž¡‘GThe––default“units“data“ les“are‘—describMÞed“in“more“detail“in“Chapter“16“[Data“Files],‘-Àpage“44.ŽŸfh‘Gëc12.2‘™De ning–f@New“Units“and“Pre xesŽŽŸ33‘GáA›§°unit–§±is“spMÞeci ed“on“a˜single“line“b²!y“giving“its˜name“and“an“equiv‘ÿdDalence.‘á½Commen²!ts“startŽ¡‘Gwith–ÍSa›ÍR`â#á'“c•²!haracter,‘ø½whic“h˜can‘ÍSappMÞear˜an“ywhere–ÍSin“a˜line.‘•‚The˜bacš²!kslash“c˜haracter‘ÍR(`â\á')“actsŽ¡‘Gas›Ì?a‘Ì@con•²!tin“uation˜c“haracter–Ì@if˜it“appMÞears˜as˜the“last˜c²!haracter“on˜a˜line,‘Õ¶making“it˜pMÞossibleŽ¡‘Gto–ùuspread›ùtde nitions“out˜o•²!v“er‘ùusev“eral˜lines–ùuif“desired.‘×A‘ù` le˜can“bMÞe˜included“b²!y˜giving“theŽ¡‘Gcommand›2%`â!includeá'‘2&follo•²!w“ed˜b“y–2&the˜ le's“name.‘·The˜`â!á'˜m²!ust“bMÞe˜the“ rst˜c²!haracter“on˜theŽ¡‘Gline.‘[The–å le“will“bMÞe“sough²!t›æin“the“same“directory“as˜the“parenš²!t“ le“unless“y˜ou‘ægiv˜e“a“fullŽ¡‘Gpath.‘ÚThe–šüname›šûof“the“ le“to˜bMÞe“included“cannot˜con²!tain“spaces“or“the˜commenš²!t“c˜haracterŽ¡‘G`â#á'.ަ‘!GUnit–ªÈnames‘ªÉmš²!ust“not“con˜tain“an˜y›ªÉof“the“opMÞerator˜c²!haracters“`â+á',–«á`â-á',“`â*á',‘«à`â/á',“`â|á',“`â^á',“`â;á',Ž¡‘G`â~á',‘Ù±the‘¦…commen•²!t›¦„c“haracter˜`â#á',‘Ù²or˜paren“theses.‘ˆ’They˜cannot–¦…bMÞegin˜or˜end˜with“an˜underscoreŽ¡‘G(`â_á'),‘úra›Ïvcomma–Ïu(`â,á')“or˜a“decimal“pMÞoin²!t˜(`â.á').‘–7The˜ gure“dash“(Uâ+á2012),‘ústš²!ypMÞographical“min˜usŽ¡‘G(`êá';‘dUâ+á2212),‘V¹and–BÍen“dash“(`{';‘dUâ+á2013)“are“con•²!v“erted–BÍto›BÎthe“opMÞerator“`â-á',‘V¸so˜none“of“theseŽ¡‘Gc²!haracters–©can“appMÞear“in›©unit“names.‘‰gNames˜cannot“bMÞegin“with“a“digit,‘Û¯and“if˜a“name“ends“inŽ¡‘Ga–Ê—digit“other“than“zero,‘öŽthe“digit“mš²!ust“bMÞe“preceded“b˜y“a‘ʘstring“bMÞeginning“with“an“underscore,ŽŽŒ‹!¶ûŸò‘GáUnits‘¦fCon•²!v“ersion’Td33ŽŽŽ ƒ33 ý ÌÍ‘Gand–—ãafterwš²!ards“consisting“only“of“digits,‘šÊdecimal“pMÞoin˜ts,›šÊor“commas.‘ÙF‘ÿeor“example,˜`âfoo_2á',ޤ 33‘G`âfoo_2,1á',‘¨or‘ÁÍ`âfoo_3.14á'–ÁÎare“v›ÿdDalid“names“but“`âfoo2á'“or“`âfoo_a2á'“are“in²!v˜alid.‘0Y‘ÿeou“couldŽ¡‘Gde ne–¦fnitrous“o²!xide“asޤp¤‘.ùœâN2O‘¾Rnitrogen–¿ª2‘ T+“oxygenŽ©p¥‘Gábut–¦fwš²!ould“need“to“de ne“nitrogen“dio˜xide“asŽ¡‘.ùœâNO_2‘þ¨nitrogen–¿ª+“oxygen“2ަ‘GáBe–þcareful›ýto“de ne˜new“units“in˜terms“of˜old“ones“so˜that“a“reduction˜leads“to˜the“primitiv²!eޤ 33‘Gunits,‘P§whicš²!h–;8are“mark˜ed‘;7with“`â!á'“c˜haracters.‘º#Dimensionless“units‘;7are“indicated“b˜y‘;7using“theŽ¡‘Gstring–¦f`â!dimensionlessá'“for“the“unit“de nition.Ž©p¤‘!GWhen–9gadding›9hnew“units,‘O4bMÞe˜sure“to˜use“the“â-c˜áoption“to˜c•²!hec“k–9gthat˜the“new˜units“reduceŽ¡‘GpropšMÞerly‘ÿe.‘®hIf–ëêy²!ou“create“a“lo˜op“in›ëéthe“units“de nitions,‘ýKthen“âunits“áwill˜hang“when“in•²!v“ok“edŽ¡‘Gwith–Qõthe“â-c“áoption.‘àŠY‘ÿeou“will“need“to“use“the“â--check-verbose“áoption,‘|Ùwhicš²!h“prin˜ts“outŽ¡‘Geac²!h–m•unit›m–as“it˜is“c•²!hec“k“ed.‘ÊíThe–m•program˜will“still˜hang,‘xòbut“the˜last“unit˜prin²!ted“will˜bMÞe“theŽ¡‘Gunit–¦fthat“caused“the“in nite“loMÞop.ަ‘!GIf–Ùyš²!ou“de ne‘Øan˜y“units“that“con˜tain“`â+á'“c˜haracters‘Øin“their“de nitions,‘ǵcarefully“c˜hec˜kŽ¡‘Gthem–êbMÞecause›ëthe“â-c“áoption“will˜not“catc²!h“non-conformable“sums.‘íjBe“careful˜with“the“`â-á'Ž¡‘GopšMÞerator–øÐas“w²!ell.‘ÕWhen“used“as“a“binary“op˜erator,‘ jthe“`â-á'‘øÏc²!haracter“can“p˜erform“additionŽ¡‘Gor–ùm²!ultiplication“depMÞending›ùon“the“options“used˜to“in•²!v“ok“e–ùâunitsá.‘ÖT‘ÿeo“ensure“consisten²!tŽ¡‘GbšMÞeha²!vior–GÂuse“`â-á'“only“as“a“unary“negation‘GÁop˜erator“when“writing“units“de nitions.‘ ÁñT‘ÿeoŽ¡‘Gm•²!ultiply›šXt“w“o˜units˜lea“v“e˜a˜space˜or˜use‘šWthe˜`â*á'˜opMÞerator˜with˜care,‘œÁrecalling˜that˜it˜has˜t“w“oŽ¡‘GpMÞossible–ðªprecedence“v‘ÿdDalues“and“maš²!y“require“paren˜theses‘ð«to“ensure“consisten˜t“bMÞeha˜vior.‘¼©T‘ÿeoŽ¡‘Gcompute–¦fthe“di erence“of“`âfooá'“and“`âbará'“write“`âfoo+(-bar)á'“or“ev²!en“`âfoo+-bará'.ŽŸp¥‘!GY‘ÿeou–4maš²!y“wish“to‘4in˜ten˜tionally“rede ne“a“unit.‘·ÃWhen‘4y˜ou“do“this,‘Jôand‘4use“the“â-c“áoption,Ž¡‘Gâunits–n¿ádisplaš²!ys“a“w˜arning“message“abMÞout“the“rede nition.‘ËPY‘ÿeou“can“suppress“these“w˜arningsŽ¡‘Gb²!y–¯rede ning›®a“unit˜using“a“`â+á'˜at“the˜bMÞeginning“of“the˜unit“name.‘¯KDo˜not“include˜an²!y“whiteŽ¡‘Gspace›¦fbMÞet•²!w“een˜the˜`â+á'˜and˜the˜rede ned˜unit˜name.ަ‘!GHere–¦fis“an“example“of“a“short“data“ le“that“de nes“some“basic“units:ŽŸp¥‘.ùœâm‘(=¦!‘V:ö#–¿ªThe“meter“is“a“primitive“unitŽ¡‘.ùœsec‘¾R!‘V:ö#–¿ªThe“second“is“a“primitive“unitŽ¡‘.ùœrad‘¾R!dimensionless‘ T#–¿ªA“dimensionless“primitive“unitŽ¡‘.ùœmicro-‘ T1e-6‘Dûø#–¿ªDefine“a“prefixŽ¡‘.ùœminute‘ T60–¿ªsec‘9|¤#“A“minute“is“60“secondsŽ¡‘.ùœhour‘þ¨60–¿ªmin‘9|¤#“An“hour“is“60“minutesŽ¡‘.ùœinch‘þ¨72–¿ªm‘Dûø#“Inch“defined“incorrectly“terms“of“metersŽ¡‘.ùœft‘"}ü12–¿ªinches‘(=¦#“The“foot“defined“in“terms“of“inchesŽ¡‘.ùœmile‘þ¨5280–¿ªft‘3¼ú#“And“the“mileŽ¡‘.ùœ+inch‘>þ0.0254–¿ªm‘-ýP#“Correct“redefinition,“warning“suppressedŽŽ =o‘GáA‘Ôunit›ÔÜthat–ÔÝends“with˜a“`â-á'˜c²!haracter“is˜a“pre x.‘iAIf˜a“pre x˜de nition“con•²!tains˜an“y‘ÔÝ`â/á'Ž¡‘Gc²!haracters,‘«FbMÞe–Cçsure›Cæthey“are“protected˜bš²!y“paren˜theses.‘ ¶_If“y˜ou‘Cæde ne“`âhalf-‘¦f1/2á',‘«FthenŽ¡‘G`âhalfmeterá'–¦fwš²!ould“bMÞe“equiv‘ÿdDalen˜t“to“`â1“/“(2‘¿ªmeter)á'.ŽŽŒ‹"É·Ÿò‘GáUnits‘¦fCon•²!v“ersion’Td34ŽŽŽ ƒ33 ý ÌÍ‘Gëc12.3‘™De ning–f@Nonlinear“UnitsŽŽŸ33‘GáSome›unit‘con•²!v“ersions˜of‘in“terest˜are˜nonlinear;‘Crfor˜example,‘)EtempMÞerature‘con“v“ersions˜bMÞe-ޤ 33‘Gt•²!w“een–Òôthe“F‘ÿeahrenheit“and›ÒóCelsius“scales“cannot“bMÞe“done“b²!y˜simply“mš²!ultiplying“b˜y“con˜v˜ersionŽ¡‘Gfactors.Ž©‘!GWhen–óòyš²!ou“giv˜e“a‘óñlinear“unit“de nition“suc˜h“as“`âinch‘¦f2.54‘¿ªcmá'‘óñy˜ou“are“pro˜viding“in-Ž¡‘Gformation–<Çthat“âunits“áuses“to“con•²!v“ert–<Çv‘ÿdDalues“in‘<Èincš²!hes“in˜to“primitiv˜e“units“of“meters.‘¡F‘ÿeorŽ¡‘Gnonlinear–¦funits,“yš²!ou“giv˜e“a“functional“de nition“that“pro˜vides“the“same“information.ŽŸ‘!GNonlinear–±¨units“are›±§represen²!ted“using“a“functional“notation.‘ÿ¢It“is“bMÞest˜to“regard“thisŽ¡‘Gnotation–?not“as›@a“function“call“but“as˜a“w•²!a“y–?of“adding˜units“to“a“n•²!um“bMÞer,‘vm“uc“h–?the“sameŽ¡‘Gw•²!a“y–©$that“writing“a“linear“unit“name“after“a‘©%n•²!um“bšMÞer–©$adds“units“to“that“n•²!um“b˜er.‘æIn“ternally‘ÿe,Ž¡‘Gnonlinear–ÿðunits“are“de ned‘ÿñbš²!y“a“pair“of“functions“that“con˜v˜ert“to‘ÿñand“from“linear“units“inŽ¡‘Gthe–¦fdatabase,“so“that“an“ev•²!en“tual›¦fcon“v“ersion˜to˜primitiv“e˜units˜is˜pMÞossible.ަ‘!GHere–¦fis“an“example“nonlinear“unit“de nition:Ž©‘.ùœâtempF(x)–¿ªunits=[1;K]“domain=[-459.67,)“range=[0,)“\Ž¡‘sõ”(x+(-32))–¿ªdegF“+“stdtemp“;“(tempF+(-stdtemp))/degF“+“32ŽŽŸ33‘GáA‘ynonlinear–¢unit›£de nition“comprises˜a“unit˜name,‘#ca“formal˜parameter“name,‘#dt•²!w“o‘¢functions,Ž¡‘Gand–’Zoptional‘’YspMÞeci cations“for“units,›–\the“domain,˜and“the›’Yrange“(the“domain“of˜the“in•²!v“erseŽ¡‘Gfunction).‘SäThe–;functions›ͽtell“âunits“áho²!w˜to“con•²!v“ert–;to“and˜from“the“new˜unit.‘SäT‘ÿeo“proMÞduceŽ¡‘Gv‘ÿdDalid–»(results,‘ÀXthe“argumen²!ts›»'of“these“functions“need˜to“ha•²!v“e–»(the“correct˜dimensions“and“bMÞeŽ¡‘Gwithin–¦fthe“domains“for“whic²!h“the“functions“are“de ned.ަ‘!GThe–=%de nition“bMÞegins“with“the“unit‘=&name“follo•²!w“ed–=%immediately“(with“no“spaces)“b²!yŽ¡‘Ga–zÓ`â(á'“cš²!haracter.‘ [$In“the“paren˜theses“is“the“name“of“the“formal“parameter.‘ [$Next“is“anŽ¡‘Goptional–ØÒspMÞeci cation“of›ØÓthe“units“required“b²!y“the“functions˜in“the“de nition.‘™WIn“the“exampleŽ¡‘GabšMÞo•²!v“e,‘/—the–ä`âunits=[1;K]á'“sp˜eci cation“indicates“that“the“`âtempFá'‘ãfunction“requires“an“inputŽ¡‘Gargumen²!t–+conformable›+with“`â1á'˜(i.e.,‘L>the˜argumen²!t“is“dimensionless),‘L?and“that˜the“in•²!v“erseŽ¡‘Gfunction–DHrequires›DIan“input“argumen²!t˜conformable“with“`âKá'.‘ ·„F‘ÿeor“normal˜nonlinear“unitsŽ¡‘Gde nition,‘ÝËthe–Ò·forwš²!ard“function“will‘Ò¶alw˜a˜ys“tak˜e“a“dimensionless“argumen˜t;‘èßin“general,‘ÝËtheŽ¡‘Gin•²!v“erse–Çïfunction›Çîwill“need“units˜that“matcš²!h“the“quan˜tit˜y‘Çîmeasured“b˜y“y˜our‘Çînonlinear“unit.Ž¡‘GSpšMÞecifying–$äthe“units‘$ãenables“âunits“áto“p˜erform“error‘$ãc•²!hec“king–$äon“function“argumen²!ts,‘DƒandŽ¡‘Galso–¦fto“assign“units“to“domain“and“range“spšMÞeci cations,“whic²!h“are“describ˜ed“later.ŽŸ‘!GNext–¬the›«function“de nitions“appMÞear.‘û®In“the“example˜abMÞo•²!v“e,‘]}the–¬`âtempFá'˜function“isŽ¡‘Gde ned‘¦fb²!yަ‘.ùœâtempF(x)–¿ª=“(x+(-32))“degF“+“stdtempŽŽŸ‘GáThis–‚ßgivš²!es“a‘‚àrule“for“con˜v˜erting“`âxá'“in“the›‚àunits“`âtempFá'“to“linear“units˜of“absolute“tempMÞera-Ž¡‘Gture,–¦fwhicš²!h“mak˜es“it“pMÞossible“to“con˜v˜ert“from“tempF“to“other“units.ަ‘!GT›ÿeo–V›enable“con•²!v“ersions‘Vœto‘V›F˜ahrenheit,‘‚¨y“ou›V›m“ust‘Vœgiv“e˜a˜rule˜for‘Vœthe˜in“v“erse˜con“v“ersions.Ž¡‘GThe›@ªin•²!v“erse–@©will˜bMÞe˜`âx(tempF)á'“and˜its˜de nition˜appMÞears“after˜a˜`â;á'“c²!haracter.‘ ¬¨In˜ourŽ¡‘Gexample,–¦fthe“in•²!v“erse‘¦fisŽŸ‘.ùœâx(tempF)–¿ª=“(tempF+(-stdtemp))/degF“+“32ŽŽ¦‘GáThis›*\in•²!v“erse˜de nition‘*]tak“es˜an˜absolute˜tempMÞerature˜as‘*]its˜argumen“t˜and˜con“v“erts‘*]it˜to˜theŽ¡‘GF‘ÿeahrenheit› tempMÞerature.‘ øThe‘ in•²!v“erse˜can˜bMÞe‘ omitted˜b“y˜lea“ving– out˜the˜`â;á'“c²!haracter˜andŽ¡‘Gthe›ùÂin•²!v“erse˜de nition,‘˜but˜then˜con“v“ersions–ùÁäto‘ª´áthe˜unit˜will˜not“b•MÞe˜p“ossible.‘×ðIf˜the˜in•²!v“erseŽ¡‘Gde nition–#µis“omitted,‘=Øthe“â--check“áoption“will“displaš²!y“a“w˜arning.‘²LIt“is“up“to“y˜ou“to“calculateŽ¡‘Gand–¾¸enš²!ter‘¾¹the“correct“in˜v˜erse›¾¹function“to“obtain˜propMÞer“con•²!v“ersions;‘Játhe˜â--check‘¾¸áoptionŽŽŒ‹#Ø.Ÿò‘GáUnits‘¦fCon•²!v“ersion’Td35ŽŽŽ ƒ33 ý ÌÍ‘Gtests›çthe‘èin•²!v“erse˜at‘èone˜pMÞoin“t‘èand˜prin“ts–èan˜error˜if“it˜is“not˜v‘ÿdDalid“there,‘>Gbut“this˜is“not˜aŽ© 33‘Gguaranš²!tee–¦fthat“y˜our“in˜v˜erse“is“correct.ޤø°‘!GWith–¦fsome“de nitions,“the“units“ma²!y“v‘ÿdDary–ÿe.‘ÝÝF“or–¦fexample,“the“de nitionŽ¡‘.ùœâsquare(x)‘(=¦x^2ŽŽ¡‘Gácan›Eha•²!v“e‘Fan“y˜arbitrary–Funits,‘9½and˜can˜also“tak²!e˜dimensionless“argumen•²!ts.‘?{In˜suc“h‘Fa˜case,ަ‘Gyš²!ou–¿îshould“änot‘ÉØáspMÞecify“units.‘*vIf“a“de nition“tak˜es“a“roMÞot“of‘¿ïits“argumen˜ts,‘ÆPthe“de nition“isަ‘Gv‘ÿdDalid–¦fonly“for“units“that“yield“suc²!h“a“roMÞot.‘ÝÝF‘ÿeor“example,Ž¡‘.ùœâsquirt(x)‘(=¦sqrt(x)ŽŽ¡‘Gáis–¦fv‘ÿdDalid“for“a“dimensionless“argumenš²!t,“and“for“argumen˜ts“with“ev˜en“pMÞo˜w˜ers“of“units.Ž¡‘!GSome–qúde nitions“ma²!y›qùnot“bMÞe“v‘ÿdDalid“for“all˜real“n•²!um“bMÞers.‘ÌdIn›qúsuc“h˜cases,‘|uâunits˜ácan˜handleަ‘Gerrors–§ÚbšMÞetter“if“y²!ou“sp˜ecify›§Ùan“appropriate“domain“and“range.‘â9Y‘ÿeou˜spMÞecify“the“domain“andަ‘Grange–¦fas“shoš²!wn“bMÞelo˜w:Ž¡‘.ùœâbaume(d)–¿ªunits=[1;g/cm^3]“domain=[0,130.5]“range=[1,10]“\ަ‘b¶–(145/(145-d))–¿ªg/cm^3“;“(baume+-g/cm^3)“145“/“baumeŽŽŸ+â‘GáIn–äJthis“example“the“domain“is“spšMÞeci ed‘äIafter“`âdomain=á'“with“the“endp˜oinš²!ts“giv˜en“in“brac˜k˜ets.ަ‘GIn–Ãcaccord›Ãdwith“mathematical˜con•²!v“en“tion,‘ðÊsquare‘Ãcbrac“k“ets˜indicate–Ãca˜closed“in²!terv‘ÿdDal˜(one“thatަ‘Gincludes–ÞÛits“endpMÞoinš²!ts),‘Äand“paren˜theses“indicate“an“opMÞen“in˜terv‘ÿdDal‘ÞÜ(one“that“doMÞes“not“includeަ‘Gits–ÿ endpMÞoinš²!ts).‘çÊAn“in˜terv‘ÿdDal“can‘ÿ bšMÞe“op˜en“or›ÿ closed“on˜one“or“bMÞoth˜ends;‘+]an“in²!terv‘ÿdDal˜that“isަ‘Gunš²!bMÞounded–Y™on“either“end“is“indicated‘Yšb˜y“omitting“the“limit“on“that“end.‘÷vF‘ÿeor“example,‘†faަ‘Gquan•²!tit“y–Ëto“whicš²!h“decibMÞel“(dB)‘Ë4is“applied“ma˜y‘Ë€ha˜v˜e“an˜y“v‘ÿdDalue“greater“than“zero,‘Åso“theަ‘Grange–¦fis“indicated“b²!y“`â(0,)á':Ž¡‘.ùœâdecibel(x)–¿ªunits=[1;1]“range=(0,)“10^(x/10);“10“log(decibel)ŽŽ¡‘GáIf–¦fthe“domain“or“range“is“givš²!en,“the“second“endpMÞoin˜t“m˜ust“bMÞe“greater“than“the“ rst.Ž¡‘!GThe–êmdomain“and›êlrange“spMÞeci cations“can˜appšMÞear“indep˜endenš²!tly“and“in“an˜y‘êlorder“alongަ‘Gwith–xthe›yunits“spMÞeci cation.‘¬8The˜v‘ÿdDalues“for“the“domain˜and“range“endpMÞoin²!ts“are˜attac²!hed“toަ‘Gthe–»Uunits›»Vgiv²!en“in˜the“units˜spMÞeci cation,‘À‘and“if˜necessary‘ÿe,‘À‘the˜parameter“v‘ÿdDalue˜is“adjustedަ‘Gfor–p‘comparison›pwith“the“endpMÞoin²!ts.‘<]F‘ÿeor“example,‘£if“a“de nition˜includes“`âunits=[1;ft]á'ަ‘Gand–wˆ`ârange=[3,)á',‘«Ðthe›w‡range“will“bMÞe“tak²!en“as˜3“ft“to“in nit²!y‘ÿe.‘QBIf“the“function˜is“passed“aަ‘Gparameter–ê7of“`â900‘¦fmmá'Ž‘+dE,›;+that“v‘ÿdDalue“will“bMÞe‘ê8adjusted“to“2.9527559“ft,˜whic²!h“is“outside“theަ‘GspMÞeci ed–Ÿrange.‘ŠIf“y²!ou› omit“the˜units“spMÞeci cation˜from“the“previous˜example,‘,nâunits“ácanަ‘Gnot–ûµtell“whether“y•²!ou‘û¶in“tend–ûµthe“lo•²!w“er›ûµendpMÞoin“t˜to˜bMÞe˜3‘û¶ft˜or˜3˜microfurlongs,‘ and˜can˜notަ‘Gadjust–íthe›ìparameter“v‘ÿdDalue˜of“900˜mm“for˜comparison.‘ÄqWithout“units,‘ÛÍn²!umerical“v‘ÿdDaluesަ‘Gother–WBthan›WCzero“or˜plus“or˜minš²!us“in nit˜y“for›WCdomain“or˜range“endpMÞoin²!ts˜are“meaningless,ަ‘Gand–þìaccordingly“they“are“not“allo•²!w“ed.‘çoIf›þìy“ou˜giv“e˜other˜v‘ÿdDalues˜without˜units,‘U then˜theަ‘Gde nition–¦fwill“bMÞe“ignored“and“y²!ou“will“get“an“error“message.Ž¡‘!GAlthough–Bsthe“units,–Vpdomain,“and–Bsrange“spšMÞeci cations“are“optional,‘Vpit's“b˜est“to“giv²!e“themަ‘Gwhen–±#they“are›±$applicable;‘¶‚doing“so“allo²!ws“âunits˜áto“pšMÞerform“b˜etter“error‘±$c•²!hec“king–±#and“giv²!eަ‘Gmore–1êhelpful“error“messages.‘· Giving“the“domain“and“range“also‘1ëenables“the“â--check“áoptionަ‘Gto–¦f nd“a“pšMÞoin²!t“in“the“domain“to“use“for“its“p˜oinš²!t“c˜hec˜k“of“y˜our“in˜v˜erse“de nition.Ž¡‘!GY‘ÿeou–Ï¡can“makš²!e“synon˜yms‘Ï¢for“nonlinear“units“b˜y“pro˜viding“bMÞoth‘Ï¢the“forw˜ard“and“in˜v˜erseަ‘Gfunctions;‘s®in•²!v“erse›ZSfunctions–ZRcan“bMÞe“obtained“using˜the“`â~á'“opMÞerator.‘ÄSo“to˜create“a“synon²!ymަ‘Gfor–¦f`âtempFá'“y²!ou“could“writeŽ¡‘.ùœâfahrenheit(x)–¿ªunits=[1;K]“tempF(x);“~tempF(fahrenheit)ŽŽŽŒ‹$ê Ÿò‘GáUnits‘¦fCon•²!v“ersion’Td36ŽŽŽ ƒ33 ý ÌÍ‘GThis–‚is›ƒuseful“for˜creating“a˜nonlinear“unit“de nition˜that“di ers˜sligh²!tly“from˜an“existingŽ© 33‘Gde nition–¦fwithout“ha²!ving“to“repMÞeat“the“original“functions.‘ÝÝF‘ÿeor“example,ޤÃR‘.ùœâdBW(x)‘¾Runits=[1;W]–¿ªrange=[0,)“dB(x)“W“;‘ T~dB(dBW/W)Ž¡‘GáIf–•yš²!ou“wish“a“synon˜ym‘•to“refer“to“an“existing“nonlinear“unit“without“moMÞdi cation,‘˜y˜ou“canަ‘Gdo–± so“more›±Ÿsimply“b²!y“adding“the˜synonš²!ym“with“appMÞended“paren˜theses‘±Ÿas“a“new“unit,‘´nwithަ‘Gthe–Îexisting“nonlinear›Îunit|without“paren²!theses|as“the“de nition.‘•ÅSo“to˜create“a“synon²!ymަ‘Gfor–¦f`âtempFá'“y²!ou“could“writeŽ¡‘.ùœâfahrenheit()‘ TtempFŽ¡‘GáThe–¦fde nition“mš²!ust“bMÞe“a“nonlinear“unit;“for“example,“the“synon˜ymŽŸÃQ‘.ùœâfahrenheit()‘ TmeterŽ¡‘Gáwill–¦fresult“in“an“error“message“when“âunits“ástarts.Ž¡‘!GY‘ÿeou–%ma²!y›%oMÞccasionally“wish“to˜de ne“a“function“that˜opMÞerates“on“units.‘²¼This“can˜bMÞe“doneަ‘Gusing–Áa›Ánonlinear“unit˜de nition.‘-ÚF‘ÿeor“example,‘ºthe˜de nition“bMÞelo•²!w˜pro“vides‘Ácon“v“ersionަ‘GbMÞet•²!w“een–ö#radius“and›ö"the“area“of“a“circle.‘ÍThis“de nition“requires“a“length˜as“input“andަ‘GproMÞduces– an› area“as“output,‘+²as“indicated˜b²!y“the“`âunits=á'˜sp•MÞeci cation.‘ª¼Sp“ecifying˜the‘ rangeަ‘Gas–¦fthe“nonnegativš²!e“n˜um˜bMÞers“can“prev˜en˜t“cryptic“error“messages.Ž¡‘.ùœâcirclearea(r)–¿ªunits=[m;m^2]“range=[0,)‘>þpi“r^2“;“sqrt(circlearea/pi)ŽŽŸ Ø.‘Gëc12.4‘™De ning–f@Piecewise“Linear“UnitsŽŽŸ33‘GáSometimes–yyš²!ou“ma˜y“bMÞe‘xin˜terested“in“a“piecewise“linear“unit“suc˜h‘xas“man˜y“wire“gauges.ަ‘GPiecewise–*?linear“units“can“bšMÞe“de ned“b²!y“sp˜ecifying“con•²!v“ersions–*?to“linear“units“on“a“list“ofަ‘GpšMÞoin•²!ts.‘ÂCon“v“ersion‘R÷at–Røother“p˜oin²!ts“will‘R÷b˜e“done“bš²!y‘R÷linear“in˜terpMÞolation.‘ÂA‘Râpartial“de nitionަ‘Gof–¦fzinc“gauge“isŽ¡‘.ùœâzincgauge[in]–¿ª1“0.002,“10“0.02,“15“0.04,“19“0.06,“23“0.1ŽŽ¡‘GáIn–þêthis›þëexample,‘ i`âzincgaugeá'“is˜the“name“of˜the“piecewise“linear˜unit.‘¦ The“de nition˜of“suc²!hަ‘Ga–ëunit“is‘êindicated“bš²!y“the“em˜bMÞedded“`â[á'‘êc˜haracter.‘5lAfter“the“brac˜k˜et,‘5‹y˜ou“should“indicateަ‘Gthe–Úunits›Ú to“bMÞe“attac²!hed“to˜the“n•²!um“bMÞers–Úin“the˜table.‘xÃNo˜spaces“can“appšMÞear“b˜efore‘Ú the“`â]á'ަ‘Gcš²!haracter,‘ˆ)so–€ša‘€™de nition“lik˜e“`âfoo[kg‘¦fmeters]á'“is–€™in˜v‘ÿdDalid;‘4instead“write‘€š`âfoo[kg*meters]á'.ަ‘GThe–îÃde nition“of“the“unit“consists“of“a“list‘îÄof“pairs“optionally“separated“b²!y“commas.‘¶ôThisަ‘Glist–D›de nes“a›Dšfunction“for“con•²!v“erting–D›from˜the“piecewise“linear“unit“to˜linear“units.‘½DThe“ rstަ‘Gitem–ÍŒin›Íeac²!h“pair“is“the˜function“argumen²!t;‘áthe˜second“item“is˜the“v‘ÿdDalue“of“the˜function“atަ‘Gthat–ÑÎargumen²!t›ÑÍ(in“the˜units“spMÞeci ed˜in“brac•²!k“ets).‘`In–ÑÎthis“example,‘ܧw²!e˜de ne“`âzincgaugeá'ަ‘Gat–} vš²!e“pMÞoin˜ts.‘aíF‘ÿeor“example,‘²Âw˜e“set“`âzincgauge(1)á'“equal“to“`â0.002‘¦finá'Ž‘6vx.‘aíDe nitions“lik˜eަ‘Gthis–¦fmaš²!y“bMÞe“more“readable“if“written“using“con˜tin˜uation“c˜haracters“asŽ¡‘.ùœâzincgauge[in]‘¿ª\ަ‘K·î1‘¿ª0.002‘ T\ަ‘EøD10‘¿ª0.02‘>þ\ަ‘EøD15‘¿ª0.04‘>þ\ަ‘EøD19‘¿ª0.06‘>þ\ަ‘EøD23‘¿ª0.1ŽŽŸTÃQ‘GáWith–¦fthe“preceding“de nition,“the“folloš²!wing“con˜v˜ersion“can“bšMÞe“p˜erformed:ŽŽŒ‹%û}Ÿò‘GáUnits‘¦fCon•²!v“ersion’Td37ŽŽŽ ƒ33 ý ÌÍ‘.ùœâYou–¿ªhave:“zincgauge(10)ޤ 33‘.ùœYou–¿ªwant:“inŽ¡‘EøD*‘¿ª0.02Ž¡‘EøD/‘¿ª50Ž¡‘.ùœYou–¿ªhave:“.01“inchŽ¡‘.ùœYou–¿ªwant:“zincgaugeŽ¡‘EøD5ŽŽŸ`¢€‘GáIf–Zy²!ou“de ne›Za“piecewise“linear“unit˜that“is“not“strictly“monotonic,‘iHthen“the˜in•²!v“erse–Zwill“notޤ 33‘GbMÞe–Æwš²!ell‘Åde ned.‘"üIf“the“in˜v˜erse›Åis“requested“for˜suc²!h“a“unit,‘-Ýâunits“áwill“return˜the“smallestŽ¡‘Gin•²!v“erse.ŽŸoO‘!GAfter–Uadding“nonlinear“units“de nitions,‘|Py²!ou“should“normally“run“âunits‘¦f--checkŽ‘RßátoŽ¡‘Gc•²!hec“k–;†for“errors.‘º=If›;‡the“`âunitsá'“k•²!eyw“ord–;†is“not“giv²!en,‘Pæthe“â--check˜áoption“c•²!hec“ks–;†a“nonlinearŽ¡‘Gunit–¿Ñde nition›¿Ðusing“a“dimensionless˜argumen²!t,‘Æ,and“then˜c•²!hec“ks–¿Ñusing“an˜arbitrary“com²!bi-Ž¡‘Gnation–"ûof“units,‘B as“wš²!ell“as“the‘"úsquare“and“cubMÞe“of“that“com˜bination;‘aEa“w˜arning“is“giv˜en“ifŽ¡‘Gan²!y–¦fof“these“tests“fail.‘ÝÝF‘ÿeor“example,Ž©oN‘.ùœâWarning:–¿ªfunction“ squirt(x) “defined“as“ sqrt(x) Ž¡‘b¶–failed–¿ªfor“some“test“inputs:Ž¡‘b¶–squirt(7(kg–¿ªK)^1):“Unit“not“a“rootŽ¡‘b¶–squirt(7(kg–¿ªK)^3):“Unit“not“a“rootŽŽŸ9è‘GáRunning‘ áâunits‘¦f--checkŽ‘Qä áwill– áprinš²!t“a“w˜arning“if“a“non-monotonic“piecewise“linear“unit“isŽ¡‘Gencounš²!tered.‘ÒÇF‘ÿeor–…$example,‘‹Ëthe“relationship“bMÞet˜w˜een“ANSI‘…coated“abrasiv˜e“designation“andŽ¡‘Gmean–¦fparticle“size“is“non-monotonic“in“the“vicinit²!y“of“800“grit:ަ‘.ùœâansicoated[micron]‘¿ª\Ž¡‘K·î.–¿ª.“.Ž¡‘EøD600–¿ª10.55“\Ž¡‘EøD800–¿ª11.5“\Ž¡‘EøD1000–¿ª9.5“\ŽŽŸF<‘GáRunning–¦fâunits“--checkŽ‘Oï*áw•²!ould›¦fgiv“e˜the˜error˜messageŽŸoO‘.ùœâTable–¿ª ansicoated “lacks“unique“inverse“around“entry“800ŽŽ¦‘GáAlthough–Ÿ‘the“in•²!v“erse–Ÿ‘is“not“w²!ell“de ned›Ÿin“this“region,‘ÝÜit's˜not“really“an“error.‘É^ViewingŽ¡‘Gsuc²!h–Aerror›Amessages“can“bMÞe˜tedious,‘UUand“if˜there“are“enough˜of“them,‘UUthey“can˜distract“fromŽ¡‘Gtrue–(°errors.‘d¼Error“c•²!hec“king–(°for“nonlinear“unit“de nitions“can“bMÞe‘(±suppressed“b²!y“giving“theŽ¡‘G`ânoerrorá'›¦fk•²!eyw“ord;˜for˜the˜examples˜abMÞo“v“e,˜this˜could˜bMÞe˜done˜asŽŸoO‘.ùœâsquirt(x)–¿ªnoerror“domain=[0,)“range=[0,)“sqrt(x);“squirt^2Ž¡‘.ùœansicoated[micron]–¿ªnoerror“\Ž¡‘K·î.–¿ª.“.ŽŽŸ+Õ´‘GáUse–*the“`ânoerrorá'“k•²!eyw“ord–*with“caution.‘´gThe“safest“approac²!h“after“adding“a“nonlinear“unitŽ¡‘Gde nition–Ûôis›Ûóto“run“âunits‘¦f--checkŽ‘NZEáand“con rm“that˜there“are˜no“actual“errors˜bMÞefore“addingŽ¡‘Gthe–¦f`ânoerrorá'“k•²!eyw“ord.ŽŸÚ)‘Gëc12.5‘™De ning–f@Unit“List“AliasesŽŽŸ33‘GáUnit–«Ûlist›«Úaliases“are“treated˜di eren²!tly“from˜unit“de nitions,‘­8bMÞecause˜they“are“a˜data“en²!tryŽ¡‘Gshorthand–5Ärather“than“a“true‘5Åde nition“for“a“new“unit.‘‹÷A‘5 unit“list“alias“de nition“bMÞeginsŽŽŒ‹& NŸò‘GáUnits‘¦fCon•²!v“ersion’Td38ŽŽŽ ƒ33 ý ÌÍ‘Gwith–Á`â!unitlistá'“and›Àincludes“the“alias“and“the˜de nition;‘<£for“example,‘'{the“aliases“includedޤ 33‘Gin–¦fthe“standard“units“data“ le“areŽ©B‘.ùœâ!unitlist‘>þhms‘¾Rhr;min;secŽ¡‘.ùœ!unitlist‘>þtime‘þ¨year;day;hr;min;secŽ¡‘.ùœ!unitlist‘>þdms‘¾Rdeg;arcmin;arcsecŽ¡‘.ùœ!unitlist‘>þftin‘þ¨ft;in;1|8‘¿ªinŽ¡‘.ùœ!unitlist–>þusvol“cup;3|4–¿ªcup;2|3“cup;1|2“cup;1|3“cup;1|4“cup;\Ž¡’¡òätbsp;tsp;1|2–¿ªtsp;1|4“tsp;1|8“tspŽŽŸSB‘GáUnit–šTlist›šSaliases“are“only˜for“unit˜lists,‘œ¾so“the˜de nition“m²!ust“include˜a“`â;á'.‘Ù×Unit˜list“aliasesŽ¡‘Gcan–Þnevš²!er‘ßbMÞe“com˜bined›ßwith“units˜or“other“unit˜list“aliases,‘9úso“the˜de nition“of˜`âtimeá'“sho²!wnŽ¡‘GabšMÞo•²!v“e–¦fcould“änot‘°Páha•²!v“e–¦fb˜een“shortened“to“`âyear;day;hmsá'.ަ‘!GAs–busual,‘5–bMÞe“sure“to›arun“âunits‘¦f--checkŽ‘NÕ"áto“ensure“that“the“units“listed˜in“unit“list“aliasesŽ¡‘Gare‘¦fconformable.ŽŸ#Ô‘GëZ13‘ ¸QNumeric–z³Output“F‘þaGormatŽŽŸña‘GáBy–Sbdefault,‘~ âunits“áshoš²!ws“results“to‘Saeigh˜t“signi can˜t“digits.‘äÐY‘ÿeou“can“c˜hange‘Sathis“with“theŽ¡‘Gâ--exponentialá,‘žqâ--digitsá,‘žrand›lÕâ--output-format–lÖáoptions.‘1,The“ rst“sets˜an“expMÞonen²!tialŽ¡‘Gformat– ½(i.e.,‘g‘scienš²!ti c“notation)‘ ¼lik˜e“that› ¼used“in˜the“original˜Unix“âunits˜áprogram,‘g’theŽ¡‘Gsecond›Šallo•²!ws‘‰y“ou˜to‘‰spMÞecify˜a˜di eren“t‘‰n“um“bMÞer˜of‘‰signi can“t˜digits,‘ ’and˜the‘‰last˜allo“wsŽ¡‘Gy•²!ou› ,to‘ +con“trol˜the˜output– +appMÞearance˜using˜the“format˜for˜the“âprintf()˜áfunction˜in“the˜CŽ¡‘Gprogramming–…ålanguage.‘}²If“yš²!ou“only‘…æw˜an˜t“to“c˜hange“the“n˜um˜bMÞer“of“signi can˜t“digits“or“spMÞecifyŽ¡‘GexpMÞonenš²!tial–Eûformat“t˜ypMÞe,‘mßuse“the“â--digits‘Eúáand“â--exponential“áoptions.‘¼›The“â--output-Ž¡‘Gformat–÷áoption“a ords“the‘÷€greatest“con²!trol“of“the“output“appMÞearance,‘ Æbut“requires“at“leastŽ¡‘Grudimen•²!tary›Ïkno“wledge˜of˜the‘Ðâprintf()˜áformat˜syn“tax.‘,See‘ÐChapter˜10˜[In“v“oking˜Units],Ž¡‘Gpage–¦f25,“for“descriptions“of“these“options.ŽŸ_‘Gëc13.1‘™F‘þ¦format‘f@Sps3eci cationŽŽŸ33‘GáThe–Üformat“spMÞeci cation“recognized“with“the‘Ýâ--output-format“áoption“is“a“subset“of“thatŽ¡‘Gfor–,Ââprintf()á.‘µQThe“format“spMÞeci cation“has“the“form“â%á[ä ags‘æá][äwidth›× á][â.äpr–ÿp¹e“cision˜á]ätyp“e‘Ò¡á;‘UNit‘,Âm²!ustŽ¡‘GbšMÞegin–)Áwith“`â%á',‘J—and“m²!ust‘)Àend“with“a“ oating-p˜oinš²!t“t˜yp•MÞe›)Àsp“eci er:‘ä“`âgá'–)Áor“`âGá'˜to“spMÞecify“theŽ¡‘Gn•²!um“bMÞer›Oñof‘Oðsigni can“t˜digits,‘a;`âeá'–Oðor˜`âEá'“for˜scien²!ti c˜notation,‘a;and“`âfá'˜for“ xed-pMÞoin²!t˜decimal.Ž¡‘GThe–¢ýISO‘¢üC99“standard“added“the“`âFá'“t²!ypšMÞe“for“ xed-p˜oinš²!t“decimal“and“the“`âaá'“and“`âAá'“t˜ypMÞesŽ¡‘Gfor–ó¢hexadecimal“ oating“pMÞoinš²!t;‘@these“t˜ypMÞes“are“allo˜w˜ed“with“compilers“that“suppMÞort“them.Ž¡‘GT²!yp•MÞe›!length‘"mo“di ers˜(e.g.,‘j`âLá'˜to–"indicate˜a“long˜double)˜are“inapplicable˜and“are˜notŽ¡‘Gallo•²!w“ed.ަ‘!GThe–ýQdefault›ýRformat“for˜âunits“áis˜`â%.8gá';‘¨Æfor˜greater“precision,‘Ó y²!ou˜could“spMÞecifyŽ¡‘G`â-o‘¿ª%.15gá'.‘$5The–h„`âgá'›hƒand“`âGá'˜format˜t²!ypMÞes“use˜expMÞonen²!tial“format˜whenev²!er“the˜expMÞonen²!tŽ¡‘Gw²!ould–ÃJbMÞe›ÃKless“than˜êá4,‘ʃso˜the“v‘ÿdDalue˜0.000013“displa²!ys˜as“`â1.3e-005á'.‘4‹These“t²!ypMÞes˜also“useŽ¡‘GexpšMÞonen²!tial–û¢notation‘û£when“the“exp˜onen²!t“is›û£greater“than“or˜equal“to“the“precision,‘òso“withŽ¡‘Gthe›ž,default–ž-format,‘ŸÑthe“v‘ÿdDalue˜5–^yê“á10Ÿü¾®7Ž‘ ádispla²!ys˜as–ž-`â50000000á'˜and“the˜v‘ÿdDalue“5–^yê“á10Ÿü¾®8Ž‘Ÿádispla²!ysŽ¡‘Gas–ÙH`â5e+008á'.‘v‚If“yš²!ou“prefer“ xed-pMÞoin˜t“displa˜y‘ÿe,‘æy˜ou“migh˜t‘ÙGspMÞecify“`â-o‘¿ª%.8fá';‘ò¹ho˜w˜ev˜er,‘æsmallŽ¡‘Gn•²!um“bMÞers›Þwill‘ßdispla“y˜v“ery˜few‘ßsigni can“t˜digits,‘/þ198.838782Ž¡‘\öì/‘¾R0.005029ŽŽ¦‘.ùœYou–¿ªhave:“kmŽ¡‘.ùœYou–¿ªwant:“furlongŽ¡‘\öì*‘¾R4.970970Ž¡‘\öì/‘¾R0.201168ŽŽŸC\*‘Gëc13.4‘™PrecisionŽŽŸ33‘GáThe–g%meaning›g$of“\precision"˜depMÞends“on˜the“format˜t²!ypMÞe.‘ With˜`âgá'“or˜`âGá',‘—Tit˜spMÞeci es“theŽ¡‘Gn•²!um“bMÞer–Ô§of“signi canš²!t‘Ô¨digits“(lik˜e“the“â--digits“áoption);‘ëÈwith“`âeá',–à7`âEá',›à8`âfá',“or–Ô§`âFá',˜it“spMÞeci esŽ¡‘Gthe–¦fmaximš²!um“n˜um˜bšMÞer“of“digits“to“b˜e“sho²!wn“after“the“decimal“p˜oin²!t.Ž©”|‘!GWith–/ñthe›/ò`âgá'“and“`âGá'˜format“t²!ypMÞes,›’Ttrailing“zeros“are“suppressed,˜so“the‘/òresults“ma²!yŽ¡‘Gsometimes›Yha•²!v“e˜few“er˜digits˜than‘Zthe˜sp•MÞeci ed˜precision˜(as˜indicated˜ab“o•²!v“e,‘Çthe˜`â#á'˜ agŽ¡‘Gcauses–¦ftrailing“zeros“to“bMÞe“displa•²!y“ed).ŽŸ”{‘!GThe–‘\default“precision›‘]is“6,‘•‘so“`â%gá'“is˜equiv‘ÿdDalenš²!t“to“`â%.6gá',‘•‘and“w˜ould“sho˜w‘‘]the“output“toŽ¡‘Gsix›ž"signi can²!t–ž!digits.‘ÛSimilarly‘ÿe,‘ŸÉ`â%eá'“or˜`â%fá'“w•²!ould˜sho“w–ž!the˜output˜with“six˜digits“after˜theŽ¡‘Gdecimal‘¦fpMÞoin²!t.ަ‘!GThe–è2C‘è!âprintf()›è3áfunction“allo²!ws“a“precision“of˜arbitrary“size,‘ø¥whether“or“not˜all“of“theŽ¡‘Gdigits–D{are“meaningful.‘¸With“most‘Dzcompilers,‘lthe“maximš²!um“in˜ternal“precision“with“âunitsŽ¡‘Gáis–ŒP15“decimal“digits“(or“13“hexadecimal“digits).‘Õ+With“the“â--digits“áoption,‘‘ˆy²!ou“are“limitedŽ¡‘Gto–øÛthe‘øÜmaximš²!um“in˜ternal“precision;‘"with‘øÜthe“â--output-format“áoption,‘ yy˜ou“ma˜y‘øÜspMÞecify“aŽ¡‘Gprecision–žgreater“than“this,‘ "but“it“ma²!y“not“bšMÞe“meaningful.‘Û@In‘ž‘some“cases,‘ !sp˜ecifying“excessŽ¡‘Gprecision–a'can“result“in‘a&rounding“artifacts.‘ÆÈF‘ÿeor“example,›oa“pMÞound“is“exactly“7000“grains,˜butŽ¡‘Gwith–¦fthe“format“`â%.18gá',“the“output“migh²!t“bMÞeŽŸ”{‘.ùœâYou–¿ªhave:“poundŽ¡‘.ùœYou–¿ªwant:“grainŽ¡‘\öì*‘¿ª6999.9999999999991Ž¡‘\öì/‘¿ª0.00014285714285714287ަ‘GáWith–¦fthe“format“`â%.25gá'“yš²!ou“migh˜t“get“the“follo˜wing:ŽŸ”{‘.ùœâYou–¿ªhave:“1/3Ž¡‘.ùœYou‘¿ªwant:Ž¡‘\öìDefinition:‘¿ª0.333333333333333314829616256247ަ‘GáIn–{çthis“case“the›{ædispla•²!y“ed–{çv‘ÿdDalue“includes“a“series“of“digits“that˜represen²!t“the“underlying“binaryŽ¡‘G oating-pMÞoin•²!t›s¬appro“ximation˜to˜1/3˜but˜are‘s«not˜meaningful˜for˜the˜desired˜computation.ŽŽŒ‹)2®Ÿò‘GáUnits‘¦fCon•²!v“ersion’Td41ŽŽŽ ƒ33 ý ÌÍ‘GIn–œgeneral,‘ž-the“result“with‘œ excess“precision“is“system“depMÞenden²!t.‘ÚpThe“precision“a ects“onlyޤ 33‘Gthe–9„ädisplay‘1†áof“n•²!um“bMÞers;‘ƒif–9…a›9„result“relies˜on“ph•²!ysical˜constan“ts–9…that˜are“not˜kno²!wn“to˜theŽ¡‘GspšMÞeci ed–precision,‘6òthe“n•²!um“b˜er–of“phš²!ysically“meaningful‘digits“ma˜y“bMÞe“less“than“the“n˜um˜bMÞerŽ¡‘Gof–¦fdigits“sho²!wn.ŽŸö‘!GSee–’Öthe“doMÞcumen²!tation“for›’×âprintf()“áfor“more“detailed“descriptions“of˜the“format“spMÞeci-Ž¡‘G cation.Ž©ö‘!GThe–65â--output-format›64áoption“is˜incompatible“with“the˜â--exponential“áor˜â--digits“áop-Ž¡‘Gtions;‘Pyif–%‚the“former“is“givš²!en“in“com˜bination“with“either“of‘%ƒthe“latter,‘?Ithe“format“is“con˜trolledŽ¡‘Gbš²!y–¦fthe“last“option“giv˜en.ŽŸ#…É‘GëZ14‘ ¸QLo‘Š=calizationŽŽŸ{à‘GáSome–øsunits“ha•²!v“e›øsdi eren“t‘øtv‘ÿdDalues˜in˜di eren“t˜lo•MÞcations.‘ÔThe˜lo“calization˜feature˜accommo-Ž¡‘Gdates– this“b•²!y› allo“wing– a“units“data“ le˜to“spšMÞecify“de nitions“that“dep˜end‘ on“the“user'sŽ¡‘GloMÞcale.ŽŸ$V‘Gëc14.1‘™Los3caleŽŽŸ33‘GáA‘ñloMÞcale–ûis“a“subset“of“a“user's“en•²!vironmen“t–ûthat‘úindicates“the“user's“language“and“coun²!try‘ÿe,Ž¡‘Gand–H÷some“attendanš²!t“preferences,‘±›suc˜h“as“the“formatting“of‘Hødates.‘ ÅThe“âunits“áprogramŽ¡‘Gattempts–^to“determine“the“lošMÞcale‘]from“the“POSIX‘þen_USŽ¡‘GáY‘ÿeou–¦fcan“force“âunits“áto“run“in“a“desired“loMÞcale“b²!y“using“the“â-l“áoption.ަ‘!GIn–y&order›y'to“create˜unit“de nitions˜for“a˜particular“loMÞcale˜y²!ou“bMÞegin˜a“bloMÞc²!k˜of“de nitionsޤ 33‘Gin–a›ÿunit“data le˜with“`â!localeá'“follo•²!w“ed˜b“y–a“loMÞcale˜name.‘ 8ªThe“`â!á'˜m²!ust“bMÞe˜the“ rstŽ¡‘Gcš²!haracter–1™on“the“line.‘¶îThe‘1˜âunits“áprogram“reads“the“follo˜wing“de nitions‘1˜only“if“the“curren˜tŽ¡‘GlošMÞcale–Úímatc²!hes.‘š Y‘ÿeou‘Úîend“the“blo˜c²!k“of“lo˜calized›Úîunits“with“`â!endlocaleá'.‘š Here˜is“an“example,Ž¡‘Gwhic²!h–¦fde nes“the“British“gallon.ŽŸö‘.ùœâ!locale‘¿ªen_GBŽ¡‘.ùœgallon‘(=¦4.54609‘¿ªliterŽ¡‘.ùœ!endlocaleŽŽŽŒ‹*?*Ÿò‘GáUnits‘¦fCon•²!v“ersion’Td42ŽŽŽ ƒ33 ý ÌÍ‘Gëc14.2‘™Additional‘f@Los3calizationŽŽŸ33‘GáSometimes–c¾the›c¿loMÞcale“isn't˜sucien²!t“to˜determine“unit“preferences.‘ǦThere“could˜bMÞe“regionalޤ 33‘Gpreferences,‘¯Åor–z²a“companš²!y“could“ha˜v˜e“spMÞeci c“preferences.‘ZÂThough“probably“uncommon,Ž¡‘Gsuc²!h–Ú€di erences›Úcould“arise˜with“the“c²!hoice˜of“English“customary˜units“outside˜of“English-Ž¡‘GspMÞeaking–ÙÀcounš²!tries.‘wëT‘ÿeo“address“this,‘&—âunits“áallo˜ws“spšMÞecifying“de nitions“that“dep˜end“onŽ¡‘Gen•²!vironmen“t–s×v‘ÿdDariable›sÖsettings.‘F/The“en•²!vironmen“t˜v‘ÿdDariables–s×can“bMÞe˜con²!troled“based˜on“theŽ¡‘Gcurren²!t–¦floMÞcale,“or“the“user“can“set“them“to“force“a“particular“group“of“de nitions.Ž©™œ‘!GA‘ç¨conditional–èreferring˜to–y4its“relationship˜with“the˜foMÞot.‘ÎÌByŽ¡‘Gthe–‘”20th‘‘•cenš²!tury‘ÿe,‘Ì_the“inc˜h‘‘•w˜as“ocially“de ned‘‘•in“English-spMÞeaking“coun˜tries‘‘•relativ˜e“toŽ¡‘Gthe–Y¹yš²!ard,‘†but“un˜til–Y¸1959,‘†Žthe“y˜ard–Y¹di ered“sligh˜tly“among‘Y¸those“coun˜tries.‘÷ÕIn“F‘ÿerance“theŽ¡‘Gcustomary›‰inc•²!h,‘Žíwhic“h˜w“as˜displaced˜in˜1799˜b“y˜the˜meter,‘Žíhad˜a˜di eren“t˜length˜based˜onŽ¡‘Ga–¦ffrenc²!h“fošMÞot.‘ÝÝThese“customary“de nitions“could“b˜e“accommo˜dated“as“follo²!ws:ަ‘.ùœâ!var–¿ªINCH_UNIT“usaŽ¡‘.ùœyard‘9|¤3600|3937‘¿ªmŽ¡‘.ùœ!endvarŽŽ©'™™‘.ùœ!var–¿ªINCH_UNIT“canadaŽ¡‘.ùœyard‘9|¤0.9144‘¿ªmeterŽ¡‘.ùœ!endvarŽŽ¦‘.ùœ!var–¿ªINCH_UNIT“ukŽ¡‘.ùœyard‘9|¤0.91439841‘¿ªmeterŽ¡‘.ùœ!endvarŽŽ¦‘.ùœ!var–¿ªINCH_UNIT“canada“uk“usaŽ¡‘.ùœfoot‘9|¤1|3‘¿ªyardŽ¡‘.ùœinch‘9|¤1|12‘¿ªfootŽ¡‘.ùœ!endvarŽŽŸ4ÌÌ‘.ùœ!var–¿ªINCH_UNIT“franceŽ¡‘.ùœfoot‘9|¤144|443.296‘¿ªmŽ¡‘.ùœinch‘9|¤1|12‘¿ªfootŽ¡‘.ùœline‘9|¤1|12‘¿ªinchŽ¡‘.ùœ!endvarŽŽŸAÿÿ‘.ùœ!varnot–¿ªINCH_UNIT“usa“uk“france“canadaŽ¡‘.ùœ!message–¿ªUnknown“value“for“INCH_UNITŽ¡‘.ùœ!endvarŽŽŸ0‘GáWhen–ÏJâunits›ÏKáreads“the“abMÞo•²!v“e˜de nitions–ÏJit“will˜c•²!hec“k–ÏJthe“en•²!vironmen“t˜v‘ÿdDariable‘ÏJâINCH_UNITŽ¡‘Gáand–6,load“only“the“de nitions“for“the“appropriate“section.‘¸tIf“âINCH_UNIT“áis“unset“or“is“not“setŽ¡‘Gto–Ìwone“of›Ìxthe“four“v‘ÿdDalues“listed,‘Õüthen“âunits“áwill˜run“the“last“bloMÞc²!k.‘PIn“this˜case“that“bloMÞc²!kŽŽŒ‹+M¸Ÿò‘GáUnits‘¦fCon•²!v“ersion’Td43ŽŽŽ ƒ33 ý ÌÍ‘Guses–~the“`â!messageá'“command“to“displaš²!y“a“w˜arning“message.‘®;Alternativ˜ely“that“bloMÞc˜k“couldޤ 33‘Gset–¦fdefault“v‘ÿdDalues.Ž©%Ø‘!GIn–;Ñorder›;Òto“create“default“v‘ÿdDalues˜that“are“o•²!v“erridden‘;Ñb“y˜user–;Ñsettings“the“data˜ le“canŽ¡‘Guse–"¦the“`â!setá'“command,‘A¶whicš²!h‘"§sets“an“en˜vironmen˜t“v‘ÿdDariable“äonly›]:if–]9it“is“not˜alr–ÿp¹e“ady‘]9set‘ êá;Ž¡‘Gthese–N‹settings“are›NŠonly“for“the“curren²!t˜âunits“áin•²!v“oMÞcation–N‹and“do˜not“pMÞersist.‘ ÖKSo“if“theŽ¡‘Gexample›T˜abMÞo•²!v“e˜w“ere˜preceded˜b“y˜`â!set–¦fINCH_UNIT“franceá',‘dõthen˜this˜w•²!ould˜mak“e˜`âfranceá'Ž¡‘Gthe–ƒ¢default“v›ÿdDalue“for“âINCH_UNITá.‘ÒGIf“the“user“had“set“the‘ƒ£v˜ariable“in“the“en•²!vironmen“t‘ƒ¢bMÞeforeŽ¡‘Gin•²!v“oking–¦fâunitsá,“then“âunits“áw²!ould“use“the“user's“v‘ÿdDalue.ŽŸ%Ù‘!GT‘ÿeo–£ïlink›£ðthese“settings˜to˜the“user's“loMÞcale˜y•²!ou˜com“bine–£ïthe˜`â!setá'“command“with˜theŽ¡‘G`â!localeá'–ßcommand.‘¯[If“yš²!ou“w˜an˜ted‘àto“com˜bine“the“abMÞo˜v˜e“example“with‘àsuitable“loMÞcales“y˜ouŽ¡‘Gcould–¦fdo“bš²!y“äpr–ÿp¹e“c“e“ding‘žgáthe–¦fabMÞo˜v˜e“de nition“with“the“follo˜wing:ަ‘.ùœâ!locale‘¿ªen_USŽ¡‘.ùœ!set–¿ªINCH_UNIT“usaŽ¡‘.ùœ!endlocaleŽ¡‘.ùœ!locale‘¿ªen_GBŽ¡‘.ùœ!set–¿ªINCH_UNIT“ukŽ¡‘.ùœ!endlocaleŽ¡‘.ùœ!locale‘¿ªen_CAŽ¡‘.ùœ!set–¿ªINCH_UNIT“canadaŽ¡‘.ùœ!endlocaleŽ¡‘.ùœ!locale‘¿ªfr_FRŽ¡‘.ùœ!set–¿ªINCH_UNIT“franceŽ¡‘.ùœ!endlocaleŽ¡‘.ùœ!set–¿ªINCH_UNIT“franceŽŽ °Œ=‘GáThese–5‘de nitions›5set“the“o•²!v“erall˜default–5‘for“âINCH_UNIT“áto˜`âfranceá'“and“set˜default“v‘ÿdDaluesŽ¡‘Gfor–š four“loMÞcales›š!appropriately‘ÿe.‘ÙÆThe“o•²!v“erall–š default“setting˜comes“last“so“that˜it“only“appliesŽ¡‘Gwhen–¦fâINCH_UNIT“áwš²!as“not“set“b˜y“one“of“the“other“commands“or“b˜y“the“user.ަ‘!GIf–†the›…v‘ÿdDariable“giv²!en“after“`â!vará'˜or“`â!varnotá'“is“unde ned,‘-then“âunits“áprin²!ts˜an“errorŽ¡‘Gmessage–srand“ignores“the“de nitions“that“folloš²!w.‘EUse“`â!setá'“to“create“defaults“to“prev˜en˜tŽ¡‘Gthis–;êsituation“from“arising.‘º_The“â-c“áoption“only“c•²!hec“ks–;êthe“de nitions‘;ëthat“are“activ²!e“for“theŽ¡‘Gcurren•²!t›”Ven“vironmen“t˜and–”UloMÞcale,‘—óso˜when˜adding“new˜de nitions˜tak²!e˜care˜to“c•²!hec“k˜that˜allŽ¡‘Gcases–¦fgivš²!e“rise“to“a“w˜ell“de ned“set“of“de nitions.ŽŸ%åK‘GëZ15‘ ¸QEn–ÿuÂvironmen“t‘z³V‘þaGariablesŽŽŸ" #‘GáThe–¦fâunits“áprogram“uses“the“folloš²!wing“en˜vironmen˜t“v‘ÿdDariables:ŽŸ+‘GâHOME‘"ÒKáSpšMÞeci es–±6the“lo˜cation›±7of“y²!our“home“directory;‘ ¶it“is“used˜b²!y“âunits“átoŽ¡‘Kâ: nd–Ï a“pMÞersonal‘Ï units“data“ le“`â.unitsá'.‘WÊOn“systems“running“MicrosoftŽ¡‘Kâ:Windo²!ws,›â!the–<– le“is“`âunitdef.unitsá',‘â and“if“âHOME“ádoMÞes“not“exist,˜âunitsŽ¡‘Kâ:átries–„¬to›„«determine“y²!our˜home“directory˜from“the˜âHOMEDRIVE“áand˜âHOMEPATHŽ¡‘Kâ:áen•²!vironmen“t–ü‡v›ÿdDariables;‘§—if“these“v˜ariables“do“not“exist,‘Òunits“ nally“triesŽ¡‘Kâ:âUSERPROFILEá|tš²!ypically–âC:\Users\èusername“á(Windo˜ws“Vista‘and“Windo˜ws“7)Ž¡‘Kâ:or–¦fâC:\Documents“and“Settings\èusernameŽ’ÆŽØá(Windo²!ws‘¦fXP).ŽŽŒ‹,Z€Ÿò‘GáUnits‘¦fCon•²!v“ersion’Td44ŽŽŽ ƒ33 ý ÌÍ‘GâLC_CTYPE,‘¦fLANGޤ 33‘Kâ:áChec•²!k“ed– fto“determine“the“lošMÞcale“if“âunits“ácannot“obtain“it“from“the“op˜eratingŽ¡‘Kâ:system.‘ÝÝSections–¦fof“the“standard“units“data“ le“are“spšMÞeci c“to“certain“lo˜cales.Ž©NÅ‘GâMYUNITSFILEŽ¡‘Kâ:áSp•MÞeci es›±¶y²!our‘±µp“ersonal˜units–±µdata˜ le.‘ÿÌIf“this˜v‘ÿdDariable˜exists,‘ô‰âunits“áuses˜itsŽ¡‘Kâ:v‘ÿdDalue–¶irather‘¶hthan“searcš²!hing“y˜our›¶hhome“directory“for˜`â.unitsá'.‘ åThe“pMÞersonalŽ¡‘Kâ:units–¦f le“will“not“bMÞe“loaded“if“anš²!y“data“ les“are“giv˜en“using“the“â-f“áoption.ŽŸNÆ‘GâPAGER‘¡áSpMÞeci es–¸ÿthe“pager“to“use“for“help‘¸þand“for“displa²!ying“the“conformable“units.Ž¡‘Kâ:The–ø–help›ø—function“bro²!wses˜the“units˜database“and“calls˜the“pager˜using“theŽ¡‘Kâ:`â+ná'ån–Ôásyn²!tax›Õfor“spMÞecifying˜a“line˜n•²!um“bMÞer.‘­¬The˜default–Ôpager˜is“âmoreá;‘FâPAGER“ácanŽ¡‘Kâ:bšMÞe–¦fused“to“sp˜ecify“alternativš²!es“suc˜h“as“âlessá,“âpgá,“âemacsá,“or“âviá.ަ‘GâUNITS_ENGLISHŽ¡‘Kâ:áSet–›»to“either“`âUSá'“or“`âGBá'“to‘›ºcš²!hoMÞose“United“States“or“British“v˜olume“de nitions,Ž¡‘Kâ:o•²!v“erriding–¦fthe“default“from“y²!our“loMÞcale.ަ‘GâUNITSFILEŽ¡‘Kâ:áSpMÞeci es–lthe›munits“data˜ le“to“use˜(instead“of˜the“default).‘®5Y‘ÿeou“can˜only“spMÞecifyŽ¡‘Kâ:a–-vsingle“units“data›-w le“using“this“en•²!vironmen“t–-vv‘ÿdDariable.‘s If˜units“data“ les“areŽ¡‘Kâ:givš²!en–M]using“the“â-f“áoption,‘_+the“ le“spMÞeci ed“b˜y“âUNITSFILE“áwill“bšMÞe“not“b˜e“loadedŽ¡‘Kâ:unless–¦fthe“â-f“áoption“is“givš²!en“with“the“empt˜y“string“(`âunits“-f“""á'Ž‘A).ŽŸNÆ‘GâUNITSLOCALEMAPŽ¡‘Kâ:áWindo²!ws–MÆonly;‘¡uthis›MÅv‘ÿdDariable“has˜no“e ect“on˜Unix-lik²!e“systems.‘ÓûSpMÞeci es“theŽ¡‘Kâ:units–OcloMÞcale›Obmap“ le“to“use˜(instead“of“the“default).‘ÀÜThis“v‘ÿdDariable˜seldom“needsŽ¡‘Kâ:to–¶°bMÞe›¶±set,‘ºÃbut“y²!ou˜can“use˜it“to˜ensure“that˜the“loMÞcale˜map“ le˜will“bMÞe˜found“ifŽ¡‘Kâ:y²!ou– GspšMÞecify‘ Ha“lo˜cation“for“the› Hunits“data“ le“using˜either“the“â-f“áoption˜or“theŽ¡‘Kâ:âUNITSFILE›L)áen•²!vironmen“t˜v‘ÿdDariable,‘u™and˜that˜lo•MÞcation˜do“es˜not˜also˜con²!tain˜theŽ¡‘Kâ:loMÞcale–¦fmap“ le.ަ‘GâUNITS_SYSTEMŽ¡‘Kâ:áThis›‚Fen•²!vironmen“t–‚Ev‘ÿdDariable˜is“used˜in“the˜standard“data˜ le˜to“select˜CGS‘‚non-ASCIMÞI‘ç de nitions“are›ç=loaded“only“if“the˜platform“and“the“lo•MÞcale˜supp“ort‘ç>UTF-8Ž‘#L .Ž¡‘GPlatform–ýsuppšMÞort“is“determined‘ýwhen“âunits“áis“compiled;‘¨Qthe“lo˜cale‘ýis“c•²!hec“k“ed–ýat“ev²!eryŽ¡‘Gin•²!v“oMÞcation›Ý‚of–݃âunitsá.‘ƒ2T‘ÿeo“see˜if˜yš²!our“v˜ersion›Ý‚of“âunits˜áincludes“Unico•MÞde˜supp“ort,‘ëJin•²!v“ok“e˜theŽ¡‘Gprogram–¦fwith“the“â--version“áoption.ަ‘!GWhen–¹´UnicošMÞde“supp˜ort‘¹³is“aš²!v‘ÿdDailable,‘¾‡âunits“ác˜hec˜ks“ev˜ery“line“within“UTF-8‘¹³bloMÞc˜ks“in“allŽ¡‘Gof–tÓthe›tÒunits“data“ les“for˜inš²!v‘ÿdDalid“or“non-prin˜ting“UTF-8‘tÒsequences;‘…Zif“suc˜h‘tÒsequences“oMÞccur,Ž¡‘Gâunits–¶áignores›µthe“en²!tire“line.‘°MIn“addition˜to“c•²!hec“king›¶v‘ÿdDalidit“y‘ÿe,‘9 âunits˜ádetermines‘µthe˜displa“yŽ¡‘Gwidth–ƒnof“non-ASCIšMÞI‘ƒ5c²!haracters“to“ensure“prop˜er“p˜ositioning‘ƒmof“the“p˜oin²!ter“in“some“errorŽ¡‘Gmessages–¦fand“to“align“columns“for“the“`âsearchá'“and“`â?á'“commands.ŽŸ­L‘!GAs–@of›?early“2019,‘kõMicrosoft“Windo•²!ws˜pro“vides–@limited“suppMÞort˜for“UTF-8˜in“consoleŽ¡‘Gapplications,‘ÀZand–»)accordingly‘ÿe,‘À[âunits“ádošMÞes“not‘»*supp˜ort“Unico˜de“on‘»*Windo²!ws.‘'The“UTF-16Ž¡‘Gand–¦fUTF-32“encošMÞdings“are“not“supp˜orted“on“an²!y“platforms.ަ‘!GIf›ì!Unico•MÞde‘ì supp“ort˜is–ì a²!v‘ÿdDailable˜and“de nitions˜that˜con²!tain“non-ASCIMÞI‘ëñUTF-8˜c²!haractersŽ¡‘Gare–Vadded“to›Va“units“data“ le,‘Áÿthose˜de nitions“should“bMÞe“enclosed˜within“`â!utf8á'‘ÿø.–§‘.“.ŽŽ¡‘G`â!endutf8á'–Ãto“ensure“that‘Äthey“are“only“loaded“when“UnicošMÞde“supp˜ort“is‘Äa²!v‘ÿdDailable.‘õôAsŽ¡‘Gusual,‘4Ëthe–P`â!á'›Qm²!ust“appMÞear˜as“the˜ rst“c²!haracter˜on“the˜line.‘3œAs˜discussed“in˜Section“12.1Ž¡‘G[Units–'FData“Files],‘G~page“32,‘G}it's“usually“bMÞest“to“put“sucš²!h“de nitions“in“supplemen˜tal“dataŽ¡‘G les–¦flinkš²!ed“b˜y“an“`â!includeá'“command“or“in“a“pMÞersonal“units“data“ le.ަ‘!GWhen–@¤UnicošMÞde“supp˜ort‘@¥is“not“aš²!v‘ÿdDailable,‘g4âunits“ámak˜es“no‘@¥assumptions“abMÞout“c˜haracterŽ¡‘GencošMÞding,‘§úexcept–§©that“c²!haracters“in‘§ªthe“range“00{7F“hexadecimal“corresp˜ond“to“ASCI˜I“en-Ž¡‘Gco•MÞding.‘¥®Non-ASCI“I‘ý¯c²!haracters–ýÚare›ýÙsimply“sequences˜of“b•²!ytes,‘and˜ha“v“e–ýÚno˜spMÞecial“meanings;Ž¡‘Gfor–ÃÆde nitions“in“supplemenš²!tary“units“data“ les,‘Ëy˜ou“can“use“an˜y“encoMÞding“consisten˜t“withŽ¡‘Gthis–‚tassumption.‘ÑâF‘ÿeor“example,‘‰¥if“y²!ou›‚uwish“to“use˜non-ASCIMÞI‘‚kc²!haracters“in˜de nitions“whenŽ¡‘Grunning–+âunits“áunder›*Windo•²!ws,‘7Ðy“ou–+can“use“a“c²!haracter˜set“sucš²!h“as“Windo˜ws‘*\ANSI"‘(coMÞdeŽ¡‘Gpage–ý²1252›ý³in“the“US‘ýœand˜W‘ÿeestern“EuropMÞe);‘)Yif“this“is˜done,‘…the˜console“coMÞde“page˜m²!ust“bMÞeŽ¡‘Gset–Û‡to›Û†the“same˜encoMÞding“for“the˜c²!haracters“to˜displa²!y“propMÞerly–ÿe.‘}?Y“ou˜can–Û‡ev²!en˜use“UTF-8,Ž¡‘Gthough– some“messages‘ ma²!y“bšMÞe“improp˜erly“aligned,‘4„and“âunits“áwill“not‘ detect“in²!v‘ÿdDalid“UTF-8ŽŽŒ‹.u@Ÿò‘GáUnits‘¦fCon•²!v“ersion’Td46ŽŽŽ ƒ33 ý ÌÍ‘Gsequences.‘ß0If–ü,y²!ou›ü-use“UTF-8˜encošMÞding“when“Unico˜de‘ü-supp˜ort“is“not‘ü-a•²!v‘ÿdDailable,‘žy“ou‘ü,shouldޤ 33‘Gplace–Q´anš²!y“de nitions‘Q³with“non-ASCIMÞI‘Qˆc˜haracters“äoutside‘$Uá`â!utf8á'‘û—.–§‘.“.Ž‘6`â!endutf8á'“bloMÞc˜ks|Ž¡‘Gotherwise,–¦fthey“will“bMÞe“ignored.Ž©`‘!GT²!ypšMÞeset–l}material“other‘l~than“co˜de“examples“usually“uses“the‘l~Unico˜de“min²!us“(Uâ+á2212)Ž¡‘Grather–£Zthan‘£Ythe“ASCIšMÞI‘£h•²!yphen-min“us‘£Zop˜erator–£Y(Uâ+á002D)‘£used“in›£Zâunitsá;‘!Óthe“ gure˜dashŽ¡‘G(Uâ+á2012)–1•and“en“dash“(Uâ+á2013)›1”are“also“oMÞccasionally“used.‘jT‘ÿeo“allo•²!w˜suc“h–1•material“to“bMÞeŽ¡‘Gcopied–ŠÀand“pasted“for“in•²!teractiv“e‘Š¿use–ŠÀor“in“units“data“ les,‘Gâunits“ácon•²!v“erts–ŠÀthese“c²!haractersŽ¡‘Gto–´±Uâ+á002D‘´­bšMÞefore“further“pro˜cessing.‘½Because“of“this,‘¸Cnone“of“these‘´°c²!haracters“can“app˜earŽ¡‘Gin–¦funit“names.ŽŸ"Y›‘GëZ18‘ ¸QReadline‘z³Supp‘Š=ortŽŽŸ¹›‘GáIf–`Wthe“âreadline›`Vápac²!k‘ÿdDage“has“bMÞeen“compiled“in,‘ÎÒthen“when“âunits˜áis“used“in•²!teractiv“ely‘ÿe,Ž¡‘Gn²!umerous–B"command›B!line“editing“features“are˜a•²!v‘ÿdDailable.‘±T‘ÿeo˜c“hec“k–B"if“yš²!our“v˜ersion‘B!of“âunitsŽ¡‘Gáincludes–¦fâreadlineá,“in•²!v“ok“e–¦fthe“program“with“the“â--version“áoption.ަ‘!GF‘ÿeor–F'complete›F(information“abMÞout“âreadlineá,‘Ygconsult˜the“doMÞcumen²!tation“for˜the“âreadlineŽ¡‘Gápac•²!k‘ÿdDage.‘‚Without›·òan“y‘·ócon guration,‘üUâunits˜áwill˜allo“w˜editing‘·óin˜the˜st“yle‘·óof˜emacs.‘‚OfŽ¡‘Gparticular–¦fuse“with“âunits“áare“the“completion“commands.ަ‘!GIf›Öy•²!ou‘×t“ypMÞe˜a‘×few˜c“haracters˜and–×then˜hit“âESC˜áfollo•²!w“ed‘×b“y˜è?á,‘ 2then–×âunits˜áwill“displa²!y˜aŽ¡‘Glist–ZŸof“all“the›Zžunits“that“start“with“the“c•²!haracters˜t“ypMÞed.‘Ä›F‘ÿeor‘ZŸexample,‘iÇif˜y“ou›ZŸt“ypMÞe˜èmetr˜áandŽ¡‘Gthen–¦frequest“completion,“yš²!ou“will“see“something“lik˜e“this:ަ‘.ùœâYou–¿ªhave:“metrŽ¡‘.ùœmetre‘J»¢metriccup‘3¼úmetrichorsepower‘ TmetrictenthŽ¡‘.ùœmetretes‘9|¤metricfifth–(=¦metricounce“metrictonŽ¡‘.ùœmetriccarat–(=¦metricgrain“metricquart“metricyarncountŽ¡‘.ùœYou–¿ªhave:“metrŽŽŸE,Í‘GáIf–öthere“is“a›÷unique“w•²!a“y–öto“complete“a“unit“name,‘ašy²!ou“can“hit“the˜âTAB“ák²!ey“and“âunitsŽ¡‘Gáwill–l›pro²!vide›lšthe“rest“of˜the“unit˜name.‘0{If“âunits“ábMÞeeps,‘ž'it“means˜that“there“is˜no“uniqueŽ¡‘Gcompletion.‘ÝÝPressing–¦fthe“âTAB“ákš²!ey“a“second“time“will“prin˜t“the“list“of“all“completions.ަ‘!GThe–jreadline“library“also›jk²!eeps“a“history“of“the“v‘ÿdDalues˜yš²!ou“en˜ter.‘ɼY‘ÿeou“can“mo˜v˜e“throughŽ¡‘Gthis–@history›?using“the˜up“and“do•²!wn˜arro“ws.‘¯&The˜history–@is“sa•²!v“ed˜to–@the˜ le“â.units_historyŽ¡‘Gáin–:Õyš²!our“home“directory‘:Öso“that“it“will“pMÞersist“across“m˜ultiple“âunits‘:Öáin˜v˜oMÞcations.‘ºIf“y˜ou“wishŽ¡‘Gto›èk•²!eep‘éw“ork˜for–éa˜certain“pro‘›»ject˜separate“y²!ou˜can“c²!hange˜the“history˜ lename“using˜theŽ¡‘Gâ--history–!ðáoption.‘P|Y‘ÿeou“could,‘@Òfor“example,‘@Ómak²!e“an“alias‘!ñfor“âunits“áto“âunits‘¦f--historyŽ¡‘G.units_history–¦áso“that‘¥âunits“áwš²!ould“sa˜v˜e“separate“history‘¥in“the“curren˜t“directory‘ÿe.‘œTheŽ¡‘Glength–’]of“eac²!h›’\history“ le“is“limited“to˜5000“lines.‘ÚNote“also“that“if“y²!ou˜run“sevš²!eral“concurren˜tŽ¡‘Gcopies–¦fof“âunits“áeacš²!h“one“will“sa˜v˜e“its“new“history“to“the“history“ le“upMÞon“exit.ŽŸ"Yš‘GëZ19‘ ¸QUp‘Š=dating–z³Currency“Exc‘ÿuÂhange“RatesŽŽŸ¹›‘GáThe–XÓunits›XÒprogram“database“includes“currency˜exc²!hange“rates“and“prices˜for“someŽ¡‘Gprecious–Ñ·metals.‘_ÒOf“course,‘Œthese“v‘ÿdDalues‘Ѹcš²!hange“o˜v˜er“time,‘Œsometimes“v˜ery‘Ѹrapidly‘ÿe,‘‹andŽ¡‘Gâunits–%’ácannot›%“pro²!vide“real-time˜v‘ÿdDalues.‘ [bT‘ÿeo˜upMÞdate“the˜exc²!hange“rates,‘…^run“âunits_curá,Ž¡‘Gwhic²!h–°rewrites›°the“ le˜con²!taining“the˜currency“rates,‘ òvt²!ypically“â/var/lib/units/ŽŽŒ‹/‡ÍŸò‘GáUnits‘¦fCon•²!v“ersion’Td47ŽŽŽ ƒ33 ý ÌÍ‘Gâcurrency.units–¥áor›¥â/usr/local/com/units/currency.units“áon˜a“Unix-lik²!e˜system“orޤ 33‘GâC:\Program–¦fFiles“(x86)Ž’ŒW[\GNU\units\definitions.units–¦fáon“a“Windo²!ws“system.Ž©ú‘!GThis–Vcprogram›Vbrequires“Python˜(âhttps:–#/“/“www“.“python“.‘"orgá);‘®aeither–Vcv²!ersion˜2“or˜3“willŽ¡‘Gw•²!ork.‘˜uThe‘9ïprogram›9îm“ust˜b•MÞe˜run˜with˜suitable‘9ïp“ermissions˜to˜write˜the˜ le.‘˜vT‘ÿeo˜k²!eep˜theŽ¡‘Grates–§upMÞdated›§automatically‘ÿe,‘çFrun“it˜using“a“cron˜job“on“a˜Unix-lik²!e“system,‘çFor˜a“similarŽ¡‘Gscš²!heduling–¦fprogram“on“a“di eren˜t“system.ŽŸúœ‘!GReliable–ýÀfree“sources›ýÁof“currency“exc²!hange“rates˜ha•²!v“e–ýÀbMÞeen“anno²!yingly“ephemeral.‘ãìTheŽ¡‘Gprogram–¦fcurrenš²!tly“suppMÞorts“sev˜eral“sources:ަ‘ ØêŽ‘'¿«áFloatRates‘ë´(âhttps:– n/› o/“www“/“floatrates˜.“comá).‘­ÇThe–ë´US‘ëadollar“(`âUSDá')“is“the“defaultŽ¡‘'¿«base›²ôcurrency–ÿe.‘ˆY“ou˜can˜c²!hange˜the–²õbase˜currency˜with˜the˜â-b“áoption˜describ•MÞed˜b“elo²!w.Ž¡‘'¿«Allo•²!w“able–Fbase›Fcurrencies“are“listed˜on“the“FloatRates“w•²!ebsite.‘½ÂExc“hange˜rates‘FupMÞdateŽ¡‘'¿«daily‘ÿe.ŽŸúœ‘ ØêŽ‘'¿«áThe–^JEuropMÞean›^ICen²!tral“Bank˜(âhttps:––œ/“/“www“.›–›ecb“.“europa“.˜euá).‘ˆThe–^Jbase‘^Icurrency“isŽ¡‘'¿«alw•²!a“ys– Xthe› Yeuro“(`âEURá').‘©ÙExc²!hange“rates“upMÞdate˜daily‘ÿe.‘©ØThis˜source“o ers“a˜more“limitedŽ¡‘'¿«list–¦fof“currencies“than“the“others.ަ‘ ØêŽ‘'¿«áFixer‘Æ(âhttps:•ch/šci/“fixer˜.“ioá).‘IýRegistration–Æfor‘Åa“free“API‘§k²!ey“is“required.‘IüWith“a“freeŽ¡‘'¿«API‘ðkš²!ey‘ÿe,‘BÔbase–ðXcurrency‘ðYis“the“euro;‘•Qexc˜hange“rates“are“upMÞdated“hourly‘ÿe,‘BÔthe“serviceŽ¡‘'¿«has–Üa›Ûlimit“of“1,000“API‘¾calls“pMÞer“mon²!th,‘49and˜SSL‘¿encryption“(h²!ttps“protoMÞcol)˜is“notŽ¡‘'¿«a²!v‘ÿdDailable.‘ÝÝMost–¦fof“these“restrictions“are“eliminated“or“reduced“with“paid“plans.ŽŸúœ‘ ØêŽ‘'¿«áopMÞen– Jexc²!hange› Irates“(âhttps://openexchangerates.orgá).‘ÛÓRegistration“for“a˜free“APIŽ¡‘'¿«kš²!ey–ÿ¼is“required.‘¦OWith“a“free“API‘ÿ‘k˜ey‘ÿe,‘!the‘ÿ»base“currency“is“the“US‘ÿ’dollar;‘7Jexc˜hange“ratesŽ¡‘'¿«are–qupšMÞdated“hourly‘ÿe,‘)´and“there“is“a“limit“of“1,000“API‘Vcalls“p˜er“mon²!th.‘þMost“of“theseŽ¡‘'¿«restrictions–¦fare“eliminated“or“reduced“with“paid“plans.ŽŸÂ‘GThe–ýídefault“source›ýîis“FloatRates;‘)±y²!ou“can“select˜a“di eren²!t“one“using˜â-s“áoption“describMÞedŽ¡‘GbMÞelo²!w.ަ‘!GPrecious–-metals“pricing‘- is“obtained“from“P•²!ac“k“etizer›-(âwww•nI.“packetizer“.“comá).‘qÔThis˜siteŽ¡‘GupšMÞdates–¦fonce“p˜er“da²!y‘ÿe.ޤúœ‘!GY‘ÿeou›¦fin•²!v“ok“e˜âunits_cur˜álik“e˜this:ަ‘.ùœâunits_cur–¿ª[èoptionsâ]“[èoutfileâ]Ž¡‘GáBy–6default,‘9sthe›7output“is“written˜to“the“default˜currency“ le“describ•MÞed˜ab“o•²!v“e;‘K›this˜is‘6usuallyޤ 33‘Gwhat›©2y•²!ou‘©1w“an“t,‘©äbMÞecause˜this˜is–©1where˜âunits“áloMÞoks˜for“the˜ le.‘æ?If˜y•²!ou˜wish,‘©äy“ou‘©1can˜spMÞecifyŽ¡‘Ga–„adi eren²!t›„` lename“on˜the“command“line˜and“âunits_cur˜áwill“write“the˜data“to˜that“ le.‘Ò†IfŽ¡‘Gy•²!ou›¦fgiv“e˜`â-á'˜for˜the˜ le˜it˜will˜write˜to˜standard˜output.ަ‘GThe–¦ffolloš²!wing“options“are“a˜v‘ÿdDailable:Ž©Â‘Gâ-hŽ¡‘G--help‘R÷áPrin²!t–¦fa“summary“of“the“options“for“âunits_curá.ަ‘Gâ-VŽ¡‘G--versionŽ¡‘Kâ:áPrinš²!t–¦fthe“âunits_cur“áv˜ersion“n˜um˜bMÞer.ަ‘Gâ-vŽ¡‘G--verboseŽ¡‘Kâ:áGiv•²!e›Ísligh“tly˜more‘Îv“erb•MÞose˜output˜when˜attempting˜to‘Îup“date˜currency˜ex-Ž¡‘Kâ:c²!hange‘¦frates.ŽŽŒ‹0—âŸò‘GáUnits‘¦fCon•²!v“ersion’Td48ŽŽŽ ƒ33 ý ÌÍ‘Gâ-s‘¦fèsourceޤ 33‘Gâ--source‘¦fèsourceŽ¡‘Kâ:áSpMÞecify–º€the›ºsource“for˜currency“exc•²!hange˜rates;‘ÄŒcurren“tly˜suppMÞorted‘º€v‘ÿdDaluesŽ¡‘Kâ:are–²]`âfloatratesá'“(for›²^FloatRates),‘µ[`âeubanká'“(for“the˜EuropMÞean“Cen²!tral“Bank),Ž¡‘Kâ:`âfixerá'–s(for“Fixer),‘¦0and“`âopenexchangeratesá'“(for“opMÞen“exc²!hange“rates);‘ÙYtheŽ¡‘Kâ:last›¦ft•²!w“o˜require˜an˜API˜k“ey˜to˜bMÞe˜giv“en˜with˜the˜â-k˜áoption.Ž©ÉE‘Gâ-b‘¦fèbaseŽ¡‘Gâ--base‘¦fèbaseŽ¡‘Kâ:áSet–dthe›ebase“currency“(when˜allo•²!w“ed‘db“y˜the–dsite“pro²!viding˜the“data).‘ EØåbaseŽ¡‘Kâ:áshould–°´bšMÞe“a“3-letter“ISO‘°²currency“co˜de,‘³Ge.g.,‘³H`âUSDá'.‘üÇThe“sp˜eci ed“currency“willŽ¡‘Kâ:bMÞe–%®the›%¯primitiv²!e“currency“unit˜used“b²!y“âunitsá.‘[¶Y‘ÿeou˜ma²!y“ nd“it˜con•²!v“enien“t‘%®toŽ¡‘Kâ:sp•MÞecify›ïy²!our‘ðlo“cal˜currency‘ÿe.‘jzCon•²!v“ersions˜ma“y–ðbMÞe˜more“accurate˜and“y²!ou˜willŽ¡‘Kâ:bMÞe–YÛable“to“con•²!v“ert–YÛto“yš²!our“currency‘YÚb˜y“simply“hitting“âEnter“áat“the“`âYou‘¦fwant:á'ŽŽ¡‘Kâ:prompt.‘ÑFThis–€¢option“is›€¡ignored“if“the“source˜došMÞes“not“allo²!w“sp˜ecifying‘€¡the“baseŽ¡‘Kâ:currency‘ÿe.‘ÝÝ(Curren²!tly–¦fonly“ oatrates“suppMÞorts“this“option.)ަ‘Gâ-k‘¦fèkeyŽ¡‘Gâ--key–¦fèkey‘-=áSet“the“API“kš²!ey“to“åk˜ey‘–~áfor“sources“that“require“it.ŽŸ%,%‘GëZ20‘ ¸QDatabase–z³Command“Syn‘ÿuÂtaxŽŽŸ *`‘Gèunit‘¿ªdefinitionŽ¡‘Kâ:áDe ne–¦fa“regular“unit.ަ‘Gèprefixâ-‘¿ªèdefinitionŽ¡‘Kâ:áDe ne–¦fa“pre x.ަ‘Gèfuncnameâ(èvarâ)–¿ªnoerror“units=[èin-unitsâ,èout-unitsâ]“domain=[èx1â,èx2â]Ž¡‘Grange=[èy1â,èy2â]–¿ªèdefinition(var)“â;“èinverse(funcname)Ž¡‘Kâ:áDe ne–±a›²nonlinear“unit˜or“unit˜function.‘Ö The˜four“optional˜k•²!eyw“ords‘±ânoerrorá,Ž¡‘Kâ:âunits=á,‘Ïârange=–Uíáand“âdomain=“ácan“appMÞear“in“an²!y“order.‘ìsThe“de nition“of“theŽ¡‘Kâ:in•²!v“erse–¦fis“optional.ަ‘Gètabnameâ[èout-unitsâ]–¿ªnoerror“èpair-listŽ¡‘Kâ:áDe ne–ˆ#a“piecewise“linear“unit.‘ÓÇThe“pair“list“givš²!es“the“pMÞoin˜ts“on“the“table“listedŽ¡‘Kâ:in–¦fascending“order.‘ÝÝThe“ânoerror“ák•²!eyw“ord–¦fis“optional.ަ‘Gâ!endlocaleŽ¡‘Kâ:áEnd–¦fa“blošMÞc²!k“of“de nitions“b˜eginning“with“`â!localeá'ŽŸÉF‘Gâ!endutf8‘ Ó£áEnd–¦fa“blošMÞc²!k“of“de nitions“b˜egun“with“`â!utf8á'ަ‘Gâ!endvar‘“MáEnd–¦fa“blošMÞc²!k“of“de nitions“b˜egun“with“`â!vará'“or“`â!varnotá'ަ‘Gâ!include‘¿ªèfileŽ¡‘Kâ:áInclude–¦fthe“spMÞeci ed“ le.ަ‘Gâ!locale‘¿ªèvalueŽ¡‘Kâ:áLoad–¦fthe“follo²!wing“de nitions“only“of“the“loMÞcale“is“set“to“åv‘ÿdDalueá.ŽŽŒ‹1¦3Ÿò‘GáUnits‘¦fCon•²!v“ersion’Td49ŽŽŽ ƒ33 ý ÌÍ‘Gâ!message‘¿ªètextޤ 33‘Kâ:áDispla²!y–wJåtext‘´Jáwhen“the›wKdatabase“is“read“unless“the“quiet˜option“(â-qá)“is“enabled.Ž¡‘Kâ:If–T°y²!ou›T¯omit“åtextá,‘ethen“units˜will“displa²!y“a˜blank“line.‘ Messages“will˜also“appMÞearŽ¡‘Kâ:in–¦fthe“log“ le.Ž©ÌÍ‘Gâ!prompt‘¿ªètextŽ¡‘Kâ:áPre x–&_the“`âYou‘¦fhave:á'Ž‘@Êprompt“with“the“spMÞeci ed“text.‘]ÉIf“y²!ou“omit“åtextá,‘F]thenŽ¡‘Kâ:an²!y–¦fexisting“pre x“is“canceled.ŽŸÌΑGâ!set–¿ªèvariable“valueŽ¡‘Kâ:áSets–êVthe“en•²!vironmen“t‘êWv–ÿdDariable,›ûRåv“ariableá,˜to–êVthe“spMÞeci ed“v‘ÿdDalue‘êWäonly‘)jif‘doMÞcumen“tation:‘³a˜free˜program˜should‘>come˜with˜man“ualsŽ¡‘'¿«pro²!viding–urthe›ussame“freedoms˜that“the˜soft•²!w“are–urdoMÞes.‘ÍŒBut˜this“License˜is“not˜limited“toŽŽŒ‹2°‘Ÿò‘GáUnits‘¦fCon•²!v“ersion’Td50ŽŽŽ ƒ33 ý ÌÍ‘'¿«soft•²!w“are›­âman“uals;‘±¡it–­ãcan˜bMÞe“used˜for“an²!y˜textual“w²!ork,‘¯Áregardless“of˜sub‘›»ject“matter˜orޤ 33‘'¿«whether–Ç2it“is“published“as“a“prin²!ted“b•MÞo“ok.‘@BW‘ÿee–Ç2recommend“this“License“principally“forŽ¡‘'¿«w²!orks–¦fwhose“purpMÞose“is“instruction“or“reference.ޤ€‘-1.Ž‘'¿«APPLICABILITY–¦fAND“DEFINITIONSŽ¡‘'¿«This–Ì>License‘Ì=applies“to“anš²!y“man˜ual‘Ì=or“other“w˜ork,‘³in“an˜y–Ì=medium,‘´that“con˜tains‘Ì>aޤ 33‘'¿«notice–ýplaced›ýb²!y“the˜cop•²!yrigh“t‘ýholder˜sa“ying–ýit˜can“bMÞe˜distributed“under˜the“termsŽ¡‘'¿«of–€†this“License.‘l=Sucš²!h“a“notice“gran˜ts“a“w˜orld-wide,‘· ro˜y˜alt˜y-free“license,‘·unlimited“inŽ¡‘'¿«duration,‘â to–o·use›o¶that“w²!ork“under˜the“conditions“stated˜herein.‘ 9ÏThe“\DoMÞcumen²!t",Ž¡‘'¿«bMÞeloš²!w,‘tkrefers–gìto“an˜y“suc˜h‘gíman˜ual“or“w˜ork.‘É An˜y“mem˜bMÞer“of“the‘gípublic“is“a“licensee,‘tkandŽ¡‘'¿«is–ÿaddressed“as“\yš²!ou".‘¦@Y‘ÿeou“accept“the“license“if“y˜ou“cop˜y‘ÿe,‘ îmoMÞdify“or“distribute“the“w˜orkŽ¡‘'¿«in–¦fa“w•²!a“y–¦frequiring“pMÞermission“under“cop•²!yrigh“t‘¦fla“w.Ž©€‘'¿«A‘ ¦\MošMÞdi ed– ÀV‘ÿeersion"‘ Áof“the“Do˜cumenš²!t“means‘ Áan˜y“w˜ork“con˜taining“the‘ ÁDoMÞcumen˜t“orŽ¡‘'¿«a–‚hpMÞortion›‚gof“it,‘¹heither˜copied“v²!erbatim,‘¹hor˜with“moMÞdi cations“and/or˜translated“in²!toŽ¡‘'¿«another‘¦flanguage.ަ‘'¿«A‘ž\Secondary–ÀSection"“is›Áa“named˜appMÞendix“or˜a“fron²!t-matter˜section“of˜the“DoMÞcumen²!tŽ¡‘'¿«that–Ž/deals“exclusiv²!ely›Ž0with“the“relationship“of˜the“publishers“or“authors˜of“the“DoMÞcumen²!tŽ¡‘'¿«to–z the‘zDoMÞcumenš²!t's“o˜v˜erall›zsub‘›»ject“(or˜to“related“matters)˜and“con²!tains˜nothing“thatŽ¡‘'¿«could–Ø®fall›دdirectly“within“that“o•²!v“erall˜sub‘›»ject.‘tµ(Th“us,‘%@if˜the›Ø®DoMÞcumen“t˜is˜in‘دpart˜aŽ¡‘'¿«textb•MÞo“ok›Õ†of–Õ…mathematics,‘ÿMa“Secondary˜Section˜ma²!y˜not“explain˜an²!y˜mathematics.)‘˜=TheŽ¡‘'¿«relationship–GÞcould“bMÞe“a“matter“of“historical“connection“with“the“sub‘›»ject“or“with“relatedŽ¡‘'¿«matters,–jor‘Bøof›B÷legal,“commercial,‘jphilosophical,“ethical˜or˜p•MÞolitical‘Bøp“osition˜regardingŽ¡‘'¿«them.ŽŸ€‘'¿«The›r\In•²!v‘ÿdDarian“t–sSections"˜are˜certain˜Secondary“Sections˜whose˜titles˜are“designated,‘0ÖasŽ¡‘'¿«bMÞeing–2Dthose›2Cof“In•²!v‘ÿdDarian“t–2DSections,‘I}in“the“notice˜that“sa²!ys˜that“the“DoMÞcumen²!t˜is“releasedŽ¡‘'¿«under–S5this“License.‘Â"If›S4a“section“doMÞes“not“ t˜the“abMÞo•²!v“e–S5de nition“of“Secondary˜then“it“isŽ¡‘'¿«not›Óallo•²!w“ed˜to‘ÓŽbMÞe˜designated˜as˜In“v‘ÿdDarian“t.‘eSThe˜DoMÞcumen“t˜ma“y‘ÓŽcon“tain˜zero˜In“v‘ÿdDarian“tŽ¡‘'¿«Sections.‘¢ÄIf–õthe“DošMÞcumen²!t“do˜es‘õnot“idenš²!tify“an˜y“In˜v‘ÿdDarian˜t“Sections“then‘õthere“are“none.ަ‘'¿«The›f­\Co•²!v“er–f¬T‘ÿeexts"˜are˜certain˜short“passages˜of˜text˜that“are˜listed,‘–¾as˜F‘ÿeron•²!t-Co“v“erŽ¡‘'¿«T›ÿeexts–-or“Bac•²!k-Co“v“er‘,T˜exts,‘"8in–-the“notice“that‘,saš²!ys“that“the“DoMÞcumen˜t‘,is“released“underŽ¡‘'¿«this›’License.‘¯AA‘nF‘ÿeron•²!t-Co“v“er˜T‘ÿeext˜ma“y˜bMÞe˜at˜most˜5›‘w“ords,‘6Šand˜a›’Bac“k-Co“v“er˜T‘ÿeext˜ma“yŽ¡‘'¿«bMÞe–¦fat“most“25“w²!ords.ަ‘'¿«A‘C¦\T‘ÿeransparen•²!t"›CÎcop“y˜of‘CÏthe˜DoMÞcumen“t˜means˜a‘CÏmac“hine-readable˜cop“y‘ÿe,‘k(represen“tedŽ¡‘'¿«in–Jma“format›Jnwhose“spMÞeci cation“is“a²!v‘ÿdDailable“to“the˜general“public,‘snthat˜is“suitable“forŽ¡‘'¿«revising–Îàthe‘ÎßdoMÞcumenš²!t“straigh˜tforw˜ardly“with›Îßgeneric“text˜editors“or“(for˜images“com-Ž¡‘'¿«pMÞosed–ÚÃof›ÚÄpixels)“generic˜pain²!t“programs˜or“(for˜dra²!wings)“some˜widely“a•²!v‘ÿdDailable˜dra“wingŽ¡‘'¿«editor,‘…úand–}ßthat“is“suitable“for“input“to‘}àtext“formatters“or“for“automatic“translation“toŽ¡‘'¿«a–9Ov‘ÿdDariet²!y“of›9Nformats“suitable“for“input“to“text˜formatters.‘¹A‘93cop²!y“made˜in“an“otherwiseŽ¡‘'¿«T‘ÿeransparen²!t–„æ le“format›„åwhose“markup,‘¼†or“absence˜of“markup,‘¼†has˜bMÞeen“arranged“toŽ¡‘'¿«th•²!w“art–0ûor›0üdiscourage“subsequen²!t“moMÞdi cation˜b²!y“readers“is˜not“T‘ÿeransparen²!t.‘¶ºAn“imageŽ¡‘'¿«format– Éis“not“T‘ÿeransparenš²!t“if“used‘ Èfor“an˜y“substan˜tial“amoun˜t“of“text.‘MA‘ ©cop˜y“that“isŽ¡‘'¿«not–¦f\T‘ÿeransparen²!t"“is“called“\Opaque".ަ‘'¿«Examples–ÚZof›ÚYsuitable“formats˜for“T‘ÿeransparen²!t“copies˜include“plain˜ASCIMÞI‘ÙÉwithoutŽ¡‘'¿«markup,› kT‘ÿeexinfo–õinput“format,˜LaT‘þ,³Ÿ[wEŽ‘B X“input“format,˜SGML›õ‰or“XML˜using“a“publiclyŽ¡‘'¿«aš²!v‘ÿdDailable– íDTD,“and“standard-conforming“simple“HTML,“P˜ostScript“or“PDF‘ ÓdesignedŽ¡‘'¿«for–EÑhš²!uman“moMÞdi cation.‘¼Examples‘EÒof“transparen˜t“image“formats“include“PNG,“X˜CFŽŽŒ‹3½¡Ÿò‘GáUnits‘¦fCon•²!v“ersion’Td51ŽŽŽ ƒ33 ý ÌÍ‘'¿«and–½ÜJPG.›½ÝOpaque“formats“include“proprietary˜formats“that“can“bMÞe˜read“and“editedޤ 33‘'¿«only–õbš²!y‘õ‘proprietary“w˜ord“proMÞcessors,‘ [SGML›õ|or“XML˜for“whic²!h‘õ‘the“DTD˜and/or“pro-Ž¡‘'¿«cessing–ltoMÞols›mare“not˜generally“a²!v‘ÿdDailable,‘(and˜the“mac²!hine-generated˜HTML,“P²!ostScriptŽ¡‘'¿«or–¦fPDF“proMÞduced“bš²!y“some“w˜ord“prošMÞcessors“for“output“purp˜oses“only‘ÿe.Ž©™š‘'¿«The–Ü\Title›ÛP²!age"“means,‘<ùfor˜a“prin²!ted˜b•MÞo“ok,‘<ùthe–Ütitle˜page“itself,‘<ùplus˜sucš²!h“follo˜wingŽ¡‘'¿«pages–RÃas“are“needed“to“hold,–c}legibly‘ÿe,“the–RÃmaterial“this‘RÂLicense“requires“to“appMÞear“in“theŽ¡‘'¿«title–1.page.‘¶ÊF‘ÿeor“w²!orks›1-in“formats˜whic²!h“do“not˜ha•²!v“e‘1.an“y˜title–1.page“as˜sucš²!h,‘HŸ\Title“P˜age"Ž¡‘'¿«means–­Žthe“text“near›­the“most“prominen²!t“appMÞearance“of“the˜w²!ork's“title,‘¯Xpreceding“theŽ¡‘'¿«bšMÞeginning–¦fof“the“b˜o˜dy“of“the“text.ŽŸ™›‘'¿«The–)—\publisher"“means‘)˜anš²!y“pMÞerson“or“en˜tit˜y“that“distributes‘)˜copies“of“the“DoMÞcumen˜tŽ¡‘'¿«to–¦fthe“public.ަ‘'¿«A›ísection–ò\En²!titled“XYZ"˜means“a“named›ósubunit“of“the“DoMÞcumen²!t˜whose“title“eitherŽ¡‘'¿«is–Uªprecisely‘U©XYZ›U•or“con²!tains“XYZ˜in“paren•²!theses›U©follo“wing–Uªtext“that˜translates“XYZ‘U•inŽ¡‘'¿«another–þ¯language.‘¥ö(Here“XYZ‘þ„stands“for“a“spšMÞeci c“section“name“men²!tioned“b˜elo•²!w,‘ :suc“hŽ¡‘'¿«as›aa\Ac•²!kno“wledgemen“ts",–o/\Dedications",“\Endorsemen²!ts",“or˜\History".)‘ÆÛT‘ÿeo˜\Preserv²!eŽ¡‘'¿«the–›Title"›šof“suc²!h˜a“section“when˜y²!ou“moMÞdify˜the“DoMÞcumen²!t“means˜that“it˜remains“aŽ¡‘'¿«section–¦f\En²!titled“XYZ"“according“to“this“de nition.ަ‘'¿«The–SuDoMÞcumenš²!t“ma˜y“include“W‘ÿearran˜t˜y“Disclaimers“next‘Svto“the“notice“whic˜h“states“thatŽ¡‘'¿«this–¹License“applies‘ºto“the“DoMÞcumenš²!t.‘×These“W‘ÿearran˜t˜y“Disclaimers‘ºare“considered“toŽ¡‘'¿«bMÞe–„ýincluded›„þb²!y“reference“in“this˜License,‘¼£but“only“as“regards˜disclaiming“w•²!arran“ties:Ž¡‘'¿«an²!y–nother›n‘implication“that˜these“W‘ÿearran•²!t“y˜Disclaimers‘nma“y˜ha“v“e‘nis˜v“oid–nand˜has“noŽ¡‘'¿«e ect–¦fon“the“meaning“of“this“License.ŽŸ™›‘-2.Ž‘'¿«VERBA‘ÿeTIM‘¦fCOPYINGަ‘'¿«Y‘ÿeou–’ùmaš²!y“cop˜y“and“distribute“the“DoMÞcumen˜t“in“an˜y“medium,‘Îeither“commercially“orŽ¡‘'¿«noncommercially‘ÿe,›zªpro²!vided–that‘this“License,˜the‘cop•²!yrigh“t–notices,˜and‘the“licenseŽ¡‘'¿«notice–Ksa²!ying›K this“License˜applies“to˜the“DoMÞcumen²!t“are˜reproMÞduced“in˜all“copies,‘t7andŽ¡‘'¿«that–1'yš²!ou“add“no‘1(other“conditions“whatsoMÞev˜er“to“those“of“this“License.‘¶ÉY‘ÿeou“ma˜y“not“useŽ¡‘'¿«tec²!hnical–ò“measures›ò”to“obstruct˜or“con²!trol˜the“reading˜or“further˜cop²!ying“of˜the“copiesŽ¡‘'¿«y•²!ou›òÇmak“e‘òÈor˜distribute.‘¡þHo“w“ev“er,‘´y“ou˜ma“y˜accept‘òÈcompMÞensation˜in˜exc“hange‘òÈfor˜copies.Ž¡‘'¿«If–Þy²!ou›Þdistribute“a“large˜enough“n•²!um“bMÞer˜of–Þcopies“y•²!ou˜m“ust–Þalso“follo²!w˜the“conditionsŽ¡‘'¿«in–¦fsection“3.ަ‘'¿«Y‘ÿeou–}ìma²!y“also›}ëlend“copies,‘¹7under“the“same“conditions“stated˜abMÞo•²!v“e,‘¹8and˜y“ou›}ìma“y˜publiclyŽ¡‘'¿«displa²!y‘¦fcopies.ŽŸ™›‘-3.Ž‘'¿«COPYING–¦fIN“QUANTITYަ‘'¿«If–Ãyš²!ou‘Âpublish“prin˜ted›Âcopies“(or˜copies˜in“media“that˜commonly“ha•²!v“e˜prin“ted˜co“v“ers)‘ÃofŽ¡‘'¿«the‘Ñ.DošMÞcumen•²!t,‘Ûßn“um“b˜ering–Ñ.more“than–Ñ-100,‘Ûàand“the–Ñ.Do˜cumen²!t's“license‘Ñ-notice“requiresŽ¡‘'¿«Co•²!v“er›ÜT‘ÿeexts,‘<ùy“ou‘Ûm“ust˜enclose˜the˜copies‘Ûin˜co“v“ers˜that˜carry–ÿe,‘<ùclearly‘Ûand˜legibly“,‘<ùallŽ¡‘'¿«these›´@Co•²!v“er˜T–ÿeexts:‘ùF“ron•²!t-Co“v“er˜T‘ÿeexts˜on˜the˜fron“t˜co“v“er,‘÷µand˜Bac“k-Co“v“er˜T‘ÿeexts˜onŽ¡‘'¿«the›öbac•²!k‘õco“v“er.‘Ñ Both˜co“v“ers˜m“ust–õalso˜clearly˜and˜legibly“iden•²!tify˜y“ou˜as‘õthe˜publisherŽ¡‘'¿«of›,these–+copies.‘H/The“fron•²!t˜co“v“er˜m“ust˜presen“t–+the˜full˜title“with˜all˜w²!ords˜of“the˜titleŽ¡‘'¿«equally–³xprominenš²!t“and‘³yvisible.‘Y‘ÿeou“ma˜y›³yadd“other“material“on“the˜co•²!v“ers–³xin“addition.Ž¡‘'¿«Cop•²!ying›Y4with‘Y3c“hanges˜limited–Y3to˜the“co•²!v“ers,‘…ças–Y3long˜as“they˜preserv²!e“the˜title“of˜theŽ¡‘'¿«DošMÞcumen²!t–uand“satisfy“these“conditions,‘¨Åcan“b˜e“treated‘uas“vš²!erbatim“cop˜ying“in“otherŽ¡‘'¿«respMÞects.ŽŽŒ‹4ÐbŸò‘GáUnits‘¦fCon•²!v“ersion’Td52ŽŽŽ ƒ33 ý ÌÍ‘'¿«If–î|the“required›î}texts“for“either“co•²!v“er–î|are“toMÞo˜vš²!oluminous“to“ t“legibly‘ÿe,‘‚y˜ou“should“putޤ 33‘'¿«the–ò rst›òones“listed“(as“man²!y˜as“ t“reasonably)“on˜the“actual“co•²!v“er,‘ùand˜con“tin“ue‘òtheŽ¡‘'¿«rest–¦fonš²!to“adjacen˜t“pages.Ž©;‘'¿«If–?|y²!ou›?{publish“or˜distribute“Opaque˜copies“of˜the“DoMÞcumen•²!t˜n“um“bMÞering–?|more˜than“100,Ž¡‘'¿«y•²!ou›\3m“ust˜either‘\4include˜a˜mac“hine-readable˜T‘ÿeransparen“t˜cop“y˜along‘\4with˜eac“h˜OpaqueŽ¡‘'¿«cop²!y‘ÿe,‘[>or›7state–7in“or˜with“eacš²!h“Opaque“cop˜y‘7a“computer-net˜w˜ork“loMÞcation‘7from“whic˜hŽ¡‘'¿«the›éSgeneral‘éRnet•²!w“ork-using˜public˜has‘éRaccess˜to˜do“wnload˜using‘éRpublic-standard˜net“w“orkŽ¡‘'¿«protoMÞcols–¬=a“complete‘¬>T‘ÿeransparenš²!t“cop˜y“of“the“DoMÞcumen˜t,‘í³free“of“added“material.‘ïcIfŽ¡‘'¿«yš²!ou–ªuse“the‘ªlatter“option,‘êùy˜ou“m˜ust‘ªtak˜e“reasonably“pruden˜t“steps,‘êøwhen“y˜ou“bMÞeginŽ¡‘'¿«distribution–—lof›—mOpaque“copies˜in“quan•²!tit“y‘ÿe,‘Ó®to–—lensure“that˜this“T‘ÿeransparen•²!t˜cop“y‘—lwillŽ¡‘'¿«remain– Cthš²!us“accessible‘ Dat“the“stated“loMÞcation“un˜til‘ Dat“least“one“y˜ear“after‘ Dthe“last“timeŽ¡‘'¿«yš²!ou–k‘distribute‘k’an“Opaque“cop˜y‘k’(directly“or“through“y˜our‘k’agen˜ts“or“retailers)‘k’of“thatŽ¡‘'¿«edition–¦fto“the“public.ަ‘'¿«It–&Nis“requested,‘FHbut“not“required,‘FGthat“yš²!ou“con˜tact“the“authors“of“the“DoMÞcumen˜t“w˜ellŽ¡‘'¿«bMÞefore–oÅredistributing‘oÄanš²!y“large“n˜um˜bMÞer›oÄof“copies,‘z²to˜giv²!e“them˜a“c²!hance“to˜proš²!vide“y˜ouŽ¡‘'¿«with–¦fan“upšMÞdated“v²!ersion“of“the“Do˜cumen²!t.ަ‘-4.Ž‘'¿«MODIFICA‘ÿeTIONSŽŸ;‘'¿«Y‘ÿeou–*maš²!y“cop˜y“and›)distribute“a“MoMÞdi ed“V‘ÿeersion“of“the˜DoMÞcumen²!t“under“the“conditionsŽ¡‘'¿«of–…šsections›…›2“and˜3“abMÞo•²!v“e,‘¿]pro“vided˜that‘…šy“ou˜release–…šthe˜MoMÞdi ed“V‘ÿeersion˜under“preciselyŽ¡‘'¿«this–{ÞLicense,‘„`with“the›{ßMoMÞdi ed“V‘ÿeersion“ lling˜the“role“of˜the“DoMÞcumen•²!t,‘„`th“us‘{ÞlicensingŽ¡‘'¿«distribution–¸and“mošMÞdi cation‘¹of“the“Mo˜di ed“V‘ÿeersion“to“who˜ev²!er‘¹p˜ossesses“a“cop²!y“ofŽ¡‘'¿«it.‘ÝÝIn–¦faddition,“yš²!ou“m˜ust“do“these“things“in“the“MoMÞdi ed“V‘ÿeersion:ަ‘*òÄA.Ž‘=nUse–ípin“the“Title“Pš²!age“(and“on“the“co˜v˜ers,‘ÿ2if“an˜y)“a“title“distinct“from“that“of“theŽ¡‘=nDoMÞcumenš²!t,‘+and–ˆfrom“those“of“previous“v˜ersions‘‡(whic˜h“should,‘+if“there“w˜ere“an˜y‘ÿe,Ž¡‘=nbšMÞe–Âølisted“in“the“History‘Â÷section“of“the“Do˜cumenš²!t).‘3“Y‘ÿeou“ma˜y‘Â÷use“the“same“title“asŽ¡‘=na–¦fprevious“vš²!ersion“if“the“original“publisher“of“that“v˜ersion“giv˜es“pMÞermission.ަ‘+gB.Ž‘=nList–ª\on“the“Title›ª[P²!age,‘«Zas“authors,‘«Yone“or“more“pMÞersons˜or“en²!tities“respMÞonsible“forŽ¡‘=nauthorship–"of›"the“moMÞdi cations“in˜the“MoMÞdi ed˜V‘ÿeersion,‘<|together“with“at˜least“ v²!eŽ¡‘=nof–߸the“principal“authors“of“the“DoMÞcumenš²!t“(all“of“its“principal“authors,‘uif“it“has“few˜erŽ¡‘=nthan–¦f vš²!e),“unless“they“release“y˜ou“from“this“requiremen˜t.ަ‘+@¢C.Ž‘=nState–±Óon›±Òthe“Title˜page“the˜name“of˜the“publisher˜of“the˜MoMÞdi ed“V‘ÿeersion,‘´­as“theŽ¡‘=npublisher.ަ‘*ËÕD.Ž‘=nPreservš²!e–¦fall“the“cop˜yrigh˜t“notices“of“the“DoMÞcumen˜t.ަ‘+µoE.Ž‘=nAdd–Äean›Ädappropriate“cop•²!yrigh“t˜notice‘Äefor˜y“our‘ÄemoMÞdi cations˜adjacen“t–Äeto˜the“otherŽ¡‘=ncop•²!yrigh“t‘¦fnotices.ŽŸ;‘,LF.Ž‘=nInclude,›hSimmediately–XÎafter“the“cop•²!yrigh“t–XÎnotices,˜a“license“notice“giving“the“publicŽ¡‘=npMÞermission–ïËto›ïÊuse“the˜MoMÞdi ed“V‘ÿeersion“under˜the“terms˜of“this“License,‘Pin˜the“formŽ¡‘=nshoš²!wn–¦fin“the“Addendum“bMÞelo˜w.ަ‘*‘nG.Ž‘=nPreserv²!e–¼min›¼lthat“license˜notice“the˜full“lists˜of“In•²!v‘ÿdDarian“t˜Sections–¼mand˜required“Co•²!v“erŽ¡‘=nT‘ÿeexts–¦fgivš²!en“in“the“DoMÞcumen˜t's“license“notice.ަ‘*òÄH.Ž‘=nInclude–¦fan“unaltered“cop²!y“of“this“License.ަ‘/4çI.Ž‘=nPreservš²!e–Ú†the‘Ú‡section“En˜titled‘Ú‡\History",‘çŽPreserv˜e“its›Ú‡Title,‘çŽand“add˜to“it˜an“itemŽ¡‘=nstating–_ at›_ least“the˜title,–mQy²!ear,“new˜authors,“and–_ publisher˜of“the˜MoMÞdi ed“V‘ÿeersionŽ¡‘=nas–ÄXgivš²!en“on‘ÄWthe“Title“P˜age.‘7³If‘ÄWthere“is“no“section“En˜titled“\History"‘ÄWin“the“DoMÞcu-Ž¡‘=nmenš²!t,‘O#create‘-eone–-dstating“the“title,‘O$y˜ear,–O#authors,“and‘-epublisher–-dof“the“DoMÞcumen˜tŽŽŒ‹5áËŸò‘GáUnits‘¦fCon•²!v“ersion’Td53ŽŽŽ ƒ33 ý ÌÍ‘=nas–Wgivš²!en“on“its“Title“P˜age,‘ƒFthen“add“an“item“describing“the“MoMÞdi ed“V‘ÿeersion“asޤ 33‘=nstated–¦fin“the“previous“sen²!tence.Ž©;‘-ˆ¢J.Ž‘=nPreservš²!e–æthe“net˜w˜ork“loMÞcation,‘õúif“an˜y‘ÿe,‘õúgiv˜en“in“the“DoMÞcumen˜t‘æfor“public“access“toŽ¡‘=na–½…T‘ÿeransparenš²!t“cop˜y‘½†of“the“DoMÞcumen˜t,‘ÃMand“lik˜ewise“the“net˜w˜ork‘½†loMÞcations“giv˜en“inŽ¡‘=nthe–Í„DoMÞcumenš²!t‘̓for“previous“v˜ersions‘̓it“w˜as“based“on.‘S6These‘̓ma˜y“bMÞe“placed‘̓in“theŽ¡‘=n\History"–8section.‘¦ÎY‘ÿeou›9ma²!y“omit˜a“net•²!w“ork–8loMÞcation˜for“a˜w²!ork“that˜w²!as“publishedŽ¡‘=nat–Kleast“four‘Ky²!ears“bšMÞefore“the“Do˜cumen²!t“itself,‘t@or“if“the“original‘Kpublisher“of“theŽ¡‘=nvš²!ersion–¦fit“refers“to“giv˜es“pMÞermission.ަ‘*¤åK.Ž‘=nF‘ÿeor–Ùranš²!y“section“En˜titled“\Ac˜kno˜wledgemen˜ts"“or“\Dedications",‘oPreserv˜e“the“TitleŽ¡‘=nof›/Rthe–/Qsection,‘G#and“preserv²!e˜in˜the“section˜all˜the“substance˜and“tone˜of˜eac²!h“of˜theŽ¡‘=ncon•²!tributor›¦fac“kno“wledgemen“ts˜and/or˜dedications˜giv“en˜therein.ަ‘,Q*L.Ž‘=nPreservš²!e–?Ôall‘?Óthe“In˜v‘ÿdDarian˜t›?ÓSections“of˜the“DoMÞcumen²!t,‘f/unaltered˜in“their˜text“andŽ¡‘=nin›PÜtheir–PÝtitles.‘Ý@Section“n•²!um“bMÞers˜or‘PÝthe˜equiv‘ÿdDalen“t–PÝare˜not“considered˜part“of˜theŽ¡‘=nsection‘¦ftitles.ŽŸ;‘)M.Ž‘=nDelete–°5anš²!y“section“En˜titled‘°4\Endorsemen˜ts".‘ûJSuc˜h“a“section‘°4ma˜y“not“bMÞe“includedŽ¡‘=nin–¦fthe“MoMÞdi ed“V‘ÿeersion.ަ‘*òÄN.Ž‘=nDo–g!not›g"retitle“an²!y˜existing“section“to˜bMÞe“Enš²!titled“\Endorsemen˜ts"›g"or“to˜con ict“inŽ¡‘=ntitle–¦fwith“anš²!y“In˜v‘ÿdDarian˜t“Section.ަ‘*¤åO.Ž‘=nPreserv•²!e›¦fan“y˜W‘ÿearran“t“y˜Disclaimers.ŽŸBõ‘'¿«If–Øthe›×MoMÞdi ed“V‘ÿeersion˜includes“new˜fron²!t-matter“sections˜or“appMÞendices˜that“qualifyŽ¡‘'¿«as–XSecondary›X Sections“and“con²!tain“no˜material“copied“from˜the“DoMÞcumen•²!t,‘g´y“ou˜ma“y‘XatŽ¡‘'¿«y²!our–ãkoption›ãldesignate“some˜or“all“of˜these“sections˜as“in•²!v‘ÿdDarian“t.‘”íT‘ÿeo˜do–ãkthis,‘ò­add“theirŽ¡‘'¿«titles–@«to“the“list›@¬of“In•²!v‘ÿdDarian“t–@«Sections“in“the“MoMÞdi ed“V‘ÿeersion's“license˜notice.‘¬¬TheseŽ¡‘'¿«titles–¦fmš²!ust“bMÞe“distinct“from“an˜y“other“section“titles.ަ‘'¿«Y‘ÿeou–pmaš²!y‘qadd“a“section“En˜titled‘q\Endorsemen˜ts",‘s²pro˜vided“it“con˜tains‘qnothing“butŽ¡‘'¿«endorsemen•²!ts›‘of‘‘y“our˜MoMÞdi ed˜V‘ÿeersion˜b“y‘‘v‘ÿdDarious˜parties|for˜example,‘•Zstatemen“ts˜ofŽ¡‘'¿«pšMÞeer–D review“or‘Dthat“the“text“has“b˜een‘Dappro•²!v“ed›D b“y˜an˜organization‘Das˜the˜authoritativ“eŽ¡‘'¿«de nition–¦fof“a“standard.ŽŸ;‘'¿«Y‘ÿeou–f,ma²!y›f-add“a˜passage“of˜up“to˜ vš²!e“w˜ords›f-as“a˜F›ÿeron•²!t-Co“v“er–f,T˜ext,‘sand›f-a“passage˜of“upŽ¡‘'¿«to–@25“wš²!ords‘@Žas“a“Bac˜k-Co˜v˜er“T‘ÿeext,‘Tìto›@Žthe“end“of“the˜list“of“Co•²!v“er–@T‘ÿeexts˜in“the“MoMÞdi edŽ¡‘'¿«V›ÿeersion.‘Õ+Only–N+one‘N*passage“of“F˜ron•²!t-Co“v“er‘N*T˜ext–N+and“one‘N*of“Bac•²!k-Co“v“er‘N+T˜ext‘N*ma“y‘N+bMÞeŽ¡‘'¿«added–NÁbš²!y“(or“through“arrangemen˜ts“made“b˜y)‘NÂan˜y“one“en˜tit˜y‘ÿe.‘À¦If“the“DoMÞcumen˜t“alreadyŽ¡‘'¿«includes›Éa‘Èco•²!v“er˜text–Èfor˜the˜same“co•²!v“er,‘/!previously˜added˜b“y‘Èy“ou˜or‘Èb“y˜arrangemen“tŽ¡‘'¿«made–:Çbš²!y“the“same“en˜tit˜y“y˜ou“are“acting“on“bMÞehalf“of,‘_ßy˜ou“ma˜y‘:Ènot“add“another;‘„÷butŽ¡‘'¿«y•²!ou›)ma“y˜replace–*the˜old˜one,‘2on˜explicit˜pMÞermission˜from˜the“previous˜publisher˜thatŽ¡‘'¿«added–¦fthe“old“one.ަ‘'¿«The–^author(s)›]and“publisher(s)˜of“the“DoMÞcumen²!t˜do“not“b²!y˜this“License˜giv²!e“pMÞermissionŽ¡‘'¿«to–¤juse“their›¤knames“for“publicit²!y“for“or˜to“assert“or“imply“endorsemen²!t˜of“an²!y“MoMÞdi edŽ¡‘'¿«V‘ÿeersion.ަ‘-5.Ž‘'¿«COMBINING‘¦fDOCUMENTSަ‘'¿«Y‘ÿeou›¦Çma•²!y‘¦Ècom“bine˜the˜DoMÞcumen“t–¦Èwith˜other“doMÞcumen²!ts˜released˜under“this˜License,Ž¡‘'¿«under–—sthe“terms›—tde ned“in“section“4˜abšMÞo•²!v“e–—sfor“mo˜di ed“v•²!ersions,‘Ó·pro“vided–—sthat“y²!ouŽ¡‘'¿«include– in› the“com²!bination“all“of˜the“In•²!v‘ÿdDarian“t– Sections˜of“all“of“the˜original“doMÞcumen²!ts,Ž¡‘'¿«unmoMÞdi ed,‘L3and–5¦list›5§them“all˜as“In•²!v‘ÿdDarian“t–5¦Sections˜of“yš²!our“com˜bined‘5§w˜ork“in‘5§its“licenseŽ¡‘'¿«notice,–¦fand“that“yš²!ou“preserv˜e“all“their“W‘ÿearran˜t˜y“Disclaimers.ŽŽŒ‹6óuŸò‘GáUnits‘¦fCon•²!v“ersion’Td54ŽŽŽ ƒ33 ý ÌÍ‘'¿«The–¢@comš²!bined“w˜ork“need“only“con˜tain“one“cop˜y“of“this“License,‘£and“m˜ultiple“iden˜ticalޤ 33‘'¿«In•²!v‘ÿdDarian“t–æÝSections“maš²!y“bMÞe“replaced“with“a“single‘æÜcop˜y‘ÿe.‘ŸBIf“there“are“m˜ultiple“In˜v‘ÿdDarian˜tŽ¡‘'¿«Sections–6Çwith›6Èthe“same˜name“but˜di erenš²!t“con˜ten˜ts,‘Mmak˜e›6Èthe“title˜of“eac•²!h˜suc“h‘6ÇsectionŽ¡‘'¿«unique–bb²!y›cadding“at˜the“end˜of“it,‘1"in“paren²!theses,‘1!the˜name“of˜the“original˜author“orŽ¡‘'¿«publisher–of“that›~section“if“kno²!wn,‘!­or“else“a“unique˜n•²!um“bMÞer.‘¦‘Mak“e˜the–same“adjustmen²!tŽ¡‘'¿«to–î‡the›î†section“titles“in˜the“list“of˜In•²!v‘ÿdDarian“t–î‡Sections“in“the˜license“notice“of˜the“com²!binedŽ¡‘'¿«w²!ork.Ž©™š‘'¿«In›ö"the‘ö#com•²!bination,‘Jy“ou˜m“ust‘ö#com“bine˜an“y‘ö#sections˜En“titled–ö#\History"˜in“the˜v‘ÿdDari-Ž¡‘'¿«ous–ÜÛoriginal›ÜÚdoMÞcumen²!ts,‘êxforming“one˜section“Enš²!titled“\History";‘ølik˜ewise‘ÜÚcom˜bine“an˜yŽ¡‘'¿«sections–ÑEnš²!titled“\Ac˜kno˜wledgemen˜ts",‘Û¿and“an˜y“sections“En˜titled“\Dedications".‘]çY‘ÿeouŽ¡‘'¿«mš²!ust–¦fdelete“all“sections“En˜titled“\Endorsemen˜ts."ŽŸ™›‘-6.Ž‘'¿«COLLECTIONS–¦fOF“DOCUMENTSަ‘'¿«Y‘ÿeou–Ò¤maš²!y“mak˜e“a“collection“consisting“of‘Ò£the“DoMÞcumen˜t“and“other“doMÞcumen˜ts“releasedŽ¡‘'¿«under–this“License,‘sÚand“replace“the“individual“copies“of“this“License“in“the“v‘ÿdDariousŽ¡‘'¿«doMÞcumenš²!ts–Dwith‘Ca“single“cop˜y›Cthat“is˜included“in“the˜collection,‘y»pro²!vided˜that“y²!ouŽ¡‘'¿«follo²!w–t”the›t•rules“of˜this“License˜for“v•²!erbatim˜cop“ying‘t”of˜eac“h–t”of˜the“doMÞcumen²!ts˜in“allŽ¡‘'¿«other‘¦frespMÞects.ަ‘'¿«Y‘ÿeou–Æ=maš²!y“extract“a“single“doMÞcumen˜t“from“suc˜h“a“collection,‘Î2and“distribute“it“individu-Ž¡‘'¿«ally–4under›4this“License,‘Wnpro•²!vided˜y“ou–4insert“a“cop²!y˜of“this“License“in²!to˜the“extractedŽ¡‘'¿«doMÞcumen•²!t,‘ùøand›éBfollo“w–éAthis˜License“in“all˜other“respMÞects˜regarding“v•²!erbatim˜cop“ying‘éAofŽ¡‘'¿«that‘¦fdoMÞcumen²!t.ŽŸ™›‘-7.Ž‘'¿«Aš²!GGREGA‘ÿeTION–¦fWITH“INDEPENDENT“W˜ORKSަ‘'¿«A‘]Æcompilation–]Øof“the“DoMÞcumenš²!t‘]Ùor“its“deriv‘ÿdDativ˜es“with“other‘]Ùseparate“and“indepMÞenden˜tŽ¡‘'¿«doMÞcumen•²!ts›ÿhor‘ÿiw“orks,‘©in˜or˜on‘ÿia˜v“olume–ÿiof˜a“storage˜or˜distribution“medium,‘©is˜calledŽ¡‘'¿«an– \aggregate"“if“the› cop•²!yrigh“t– resulting“from“the“compilation“is“not˜used“to“limit“theŽ¡‘'¿«legal–1 righ²!ts›1of“the“compilation's˜users“bMÞey²!ond˜what“the“individual˜w²!orks“pMÞermit.‘¶¾WhenŽ¡‘'¿«the–žDošMÞcumen²!t“is“included‘žin“an“aggregate,‘Ûðthis“License“do˜es“not‘žapply“to“the“otherŽ¡‘'¿«wš²!orks–¦fin“the“aggregate“whic˜h“are“not“themselv˜es“deriv‘ÿdDativ˜e“w˜orks“of“the“DoMÞcumen˜t.ަ‘'¿«If–»Vthe“Co•²!v“er–»VT‘ÿeext“requiremenš²!t“of“section“3‘»Uis“applicable“to“these“copies“of“the“DoMÞcumen˜t,Ž¡‘'¿«then–°Dif›°Ethe“DoMÞcumen²!t“is“less˜than“one“half“of˜the“en²!tire“aggregate,‘á~the˜DoMÞcumenš²!t's“Co˜v˜erŽ¡‘'¿«T‘ÿeexts–0maš²!y“bMÞe“placed“on“co˜v˜ers“that“brac˜k˜et“the“DoMÞcumen˜t“within“the‘0aggregate,‘G°or“theŽ¡‘'¿«electronic–5qequiv‘ÿdDalenš²!t‘5pof“co˜v˜ers›5pif“the˜DoMÞcumen²!t“is“in˜electronic“form.‘ŠüOtherwise“theyŽ¡‘'¿«mš²!ust–¦fappMÞear“on“prin˜ted“co˜v˜ers“that“brac˜k˜et“the“whole“aggregate.ŽŸ™›‘-8.Ž‘'¿«TRANSLA‘ÿeTIONަ‘'¿«T‘ÿeranslation–̯is›̰considered“a˜kind“of“moMÞdi cation,‘Aso˜yš²!ou“ma˜y‘̰distribute“translationsŽ¡‘'¿«of–Tþthe›TýDoMÞcumen²!t“under˜the“terms˜of“section“4.‘ é£Replacing“In•²!v‘ÿdDarian“t˜Sections‘TþwithŽ¡‘'¿«translations–v²requires‘v³spšMÞecial“p˜ermission“from“their›v³cop•²!yrigh“t‘v²holders,‘êÄbut˜y“ou‘v²ma“yŽ¡‘'¿«include–ðktranslations“of“some›ðjor“all“In•²!v‘ÿdDarian“t–ðkSections“in“addition˜to“the“original“v²!ersionsŽ¡‘'¿«of›Æthese‘ÆIn•²!v‘ÿdDarian“t˜Sections.‘=Y‘ÿeou‘Æma“y˜include–Æa˜translation˜of“this˜License,‘Î and“all˜theŽ¡‘'¿«license–òúnotices›òûin“the“DoMÞcumen•²!t,‘Fand˜an“y›òúW‘ÿearran“t“y˜Disclaimers,‘Fpro“vided‘òûthat˜y“ouŽ¡‘'¿«also–Ïinclude›Îÿthe“original“English˜v²!ersion“of“this“License˜and“the“original˜v²!ersions“ofŽ¡‘'¿«those–notices“and“disclaimers.‘5åIn“case“of“a“disagreemen•²!t‘bMÞet“w“een–the“translation“andŽ¡‘'¿«the–:•original›:”v²!ersion“of˜this“License˜or“a˜notice“or˜disclaimer,‘_ the“original˜v²!ersion“willŽ¡‘'¿«prev‘ÿdDail.ŽŽŒ‹7üŸò‘GáUnits‘¦fCon•²!v“ersion’Td55ŽŽŽ ƒ33 ý ÌÍ‘'¿«If–pèa“section“in‘péthe“DoMÞcumenš²!t“is“En˜titled“\Ac˜kno˜wledgemen˜ts",–{›\Dedications",“or‘pè\His-ޤ 33‘'¿«tory",‘A¿the–(•requiremenš²!t“(section“4)“to“Preserv˜e“its“Title“(section“1)“will“t˜ypically“requireŽ¡‘'¿«c²!hanging–¦fthe“actual“title.ޤ™š‘-9.Ž‘'¿«TERMINA‘ÿeTIONŽ¡‘'¿«Y‘ÿeou–”maš²!y“not‘”cop˜y–ÿe,›—¾moMÞdify“,˜sublicense,˜or–”distribute“the“DoMÞcumen²!t‘”except“as“expresslyޤ 33‘'¿«proš²!vided–¡ðunder‘¡ñthis“License.‘Ð|An˜y›¡ñattempt“otherwise˜to“cop²!y–ÿe,›àÓmoMÞdify“,‘àÒsublicense,˜orŽ¡‘'¿«distribute–¦fit“is“vš²!oid,“and“will“automatically“terminate“y˜our“righ˜ts“under“this“License.ŽŸ™›‘'¿«Ho•²!w“ev“er,‘ó·if›äAy“ou–ä@cease˜all“violation˜of“this“License,‘ó¸then“y²!our˜license“from˜a“particularŽ¡‘'¿«cop•²!yrigh“t–Jholder“is‘Jreinstated“(a)“proš²!visionally‘ÿe,‘sšunless“and“un˜til‘Jthe“cop˜yrigh˜t“holderŽ¡‘'¿«explicitly–á_and“ nally“terminates“yš²!our“license,‘0and“(b)“pMÞermanen˜tly‘ÿe,‘0if“the“cop˜yrigh˜tŽ¡‘'¿«holder–"fails“to“notify“yš²!ou“of“the“violation‘"b˜y“some“reasonable“means“prior“to“60“da˜ysŽ¡‘'¿«after–¦fthe“cessation.Ž©™š‘'¿«Moreo•²!v“er,‘Ï8y“our–Ç license›Çfrom“a˜particular˜cop•²!yrigh“t–Ç holder˜is˜reinstated“pMÞermanen²!tly˜ifŽ¡‘'¿«the›V`cop•²!yrigh“t˜holder‘Vanoti es˜y“ou˜of˜the˜violation‘Vab“y˜some˜reasonable˜means,‘fbthis˜is˜theŽ¡‘'¿« rst–Wtime“y•²!ou‘Wha“v“e›Wreceiv“ed˜notice˜of˜violation‘Wof˜this˜License˜(for˜an“y‘Ww“ork)˜from˜thatŽ¡‘'¿«cop•²!yrigh“t–Õúholder,‘áÞand“yš²!ou“cure“the“violation“prior‘Õùto“30“da˜ys“after“y˜our‘Õùreceipt“of“theŽ¡‘'¿«notice.ަ‘'¿«T‘ÿeermination–Nuof“yš²!our“righ˜ts“under“this“section‘NtdoMÞes“not“terminate“the“licenses“of“partiesŽ¡‘'¿«who›•qha•²!v“e˜receiv“ed˜copies˜or˜righ“ts˜from˜y“ou‘•punder˜this˜License.‘ªþIf˜y“our˜righ“ts˜ha“v“eŽ¡‘'¿«bšMÞeen–Îterminated“and“not‘Íp˜ermanenš²!tly“reinstated,‘:¹receipt“of“a“cop˜y“of“some‘Íor“all“of“theŽ¡‘'¿«same–¦fmaterial“doMÞes“not“givš²!e“y˜ou“an˜y“righ˜ts“to“use“it.ަ‘‡“10.Ž‘'¿«FUTURE–¦fREVISIONS“OF“THIS“LICENSEަ‘'¿«The›ÿaF‘ÿeree‘ÿbSoft•²!w“are˜F‘ÿeoundation‘ÿbma“y˜publish–ÿbnew,‘UŸrevised“v²!ersions˜of“the˜GNU‘ÿ F‘ÿereeŽ¡‘'¿«DoMÞcumenš²!tation–ÙâLicense‘Ùãfrom“time“to“time.‘xRSuc˜h“new‘Ùãv˜ersions“will“bMÞe“similar‘Ùãin“spiritŽ¡‘'¿«to– æthe“presenš²!t“v˜ersion,‘?…but“ma˜y“di er“in“detail“to“address‘ ånew“problems“or“concerns.Ž¡‘'¿«See‘¦fâhttp://www.gnu.org/copyleft/á.ަ‘'¿«Eac•²!h›ˆ×v“ersion˜of˜the˜License˜is˜giv“en˜a˜distinguishing˜v“ersion˜n“um“b•MÞer.‘ÔIf˜the˜Do“cumen²!tŽ¡‘'¿«spšMÞeci es–r”that“a“particular“n•²!um“b˜ered›r”v“ersion˜of˜this˜License˜\or˜an“y˜later˜v“ersion"Ž¡‘'¿«applies‘æQto–æPit,‘öLyš²!ou“ha˜v˜e–æQthe“option‘æPof“follo˜wing“the“terms›æPand“conditions“either˜of“thatŽ¡‘'¿«spMÞeci ed–Žvš²!ersion“or“of“an˜y“later“v˜ersion“that‘Žhas“bMÞeen“published“(not“as“a“draft)“b˜yŽ¡‘'¿«the›î!F‘ÿeree‘î"Soft•²!w“are˜F‘ÿeoundation.‘µIf‘î"the˜DošMÞcumen“t‘î"do˜es–î!not“sp˜ecify›î"a“v•²!ersion˜n“um“bMÞer‘î!ofŽ¡‘'¿«this–$œLicense,‘D)yš²!ou“ma˜y“c˜hoMÞose‘$an˜y“v˜ersion“ev˜er“published“(not“as“a“draft)“b˜y“the“F‘ÿereeŽ¡‘'¿«Soft•²!w“are–ÖUF‘ÿeoundation.‘m©If“the“DošMÞcumen²!t“sp˜eci es“that“a“proš²!xy‘ÖTcan“decide“whic˜h“futureŽ¡‘'¿«v²!ersions–é)of›é*this“License˜can“bMÞe“used,‘ùÚthat˜proš²!xy's“public“statemen˜t›é*of“acceptance˜of“aŽ¡‘'¿«v•²!ersion›¦fpMÞermanen“tly˜authorizes˜y“ou˜to˜c“hoMÞose˜that˜v“ersion˜for˜the˜DoMÞcumen“t.ŽŸ™›‘‡“11.Ž‘'¿«RELICENSINGަ‘'¿«\Massivš²!e–{"Multiauthor‘{#CollabMÞoration“Site"“(or“\MMC‘zìSite")“means“an˜y‘{#W‘ÿeorld“WideŽ¡‘'¿«W‘ÿeeb–Leservš²!er“that“publishes“cop˜yrigh˜table‘Lfw˜orks“and“also“pro˜vides“prominen˜t“facilitiesŽ¡‘'¿«for›M an²!yb•MÞo“dy˜to˜edit˜those˜w•²!orks.‘ÀEA‘MŠpublic˜wiki˜that‘MŸan“yb•MÞo“dy˜can˜edit˜is˜an˜example˜ofŽ¡‘'¿«sucš²!h– Ya“serv˜er.‘µA‘ ?\Massiv˜e‘ XMultiauthor“CollabMÞoration"“(or“\MMC")‘ >con˜tained“in“theŽ¡‘'¿«site–¦fmeans“anš²!y“set“of“cop˜yrigh˜table“w˜orks“th˜us“published“on“the“MMC“site.ަ‘'¿«\CC-BY-SA"‘8¤means–8Éthe‘8ÊCreativš²!e“Commons“A˜ttribution-Share‘8ÊAlik˜e“3.0‘8Êlicense“pub-Ž¡‘'¿«lished›8b•²!y‘8Creativ“e˜Commons–8CorpMÞoration,‘N(a˜not-for-pro t“corpMÞoration˜with“a˜principalŽ¡‘'¿«place–òof“business“in“San“F‘ÿerancisco,‘7£California,‘7¢as“wš²!ell“as“future“cop˜yleft“v˜ersions“of“thatŽ¡‘'¿«license–¦fpublished“b²!y“that“same“organization.ŽŽŒ‹8•Ÿò‘GáUnits‘¦fCon•²!v“ersion’Td56ŽŽŽ ƒ33 ý ÌÍ‘'¿«\IncorpšMÞorate"–­zmeans“to“publish‘­yor“republish“a“Do˜cumen²!t,›¯?in“whole“or‘­yin“part,˜as“partޤ 33‘'¿«of–¦fanother“DoMÞcumen²!t.Ž©33‘'¿«An–&\MMC‘&‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘´¬27Ž¡’óáðÉ--minus–T¬(option“for“Éunits¬)V‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘õ¬27Ž¡’óáðÉ--newstar–T¬(option“for“Éunits¬)‘Ç*‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ˆ¬27Ž¡’óáðÉ--oldstar–T¬(option“for“Éunits¬)‘Ç*‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ˆ¬27Ž¡’óáðÉ--one-line–T¬(option“for“Éunits¬)‘x—‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘9t¬29Ž¡’óáðÉ--output-format–T¬(option“for“Éunits¬)‘ýð‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘¾Í¬26Ž¡’óáðÉ--product–T¬(option“for“Éunits¬)‘Ç*‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ˆ¬27Ž¡’óáðÉ--quiet–T¬(option“for“Éunits¬)V‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘õ¬29Ž¡’óáðÉ--silent–T¬(option“for“Éunits¬)…‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘Èb¬29Ž¡’óáðÉ--strict–T¬(option“for“Éunits¬)…‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘Èb¬29Ž¡’óáðÉ--terse–T¬(option“for“Éunits¬)V‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘õ¬29Ž¡’óáðÉ--units–T¬(option“for“Éunits¬)V‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘õ¬29Ž¡’óáðÉ--unitsfile–T¬(option“for“Éunits¬)‘*‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘êá¬29Ž¡’óáðÉ--verbose–T¬(option“for“Éunits¬)‘Ç*‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ˆ¬28Ž¡’óáðÉ--verbose-check–T¬(option“for“Éunits¬)‘ýð‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘¾Í¬26Ž¡’óáðÉ--version–T¬(option“for“Éunits¬)‘Ç*‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ˆ¬28ŽŽŽŽŒ‹:, Ÿò‘GáUnits‘¦fCon•²!v“ersion’Td58ŽŽŽ ƒ33 ý ÌÍ‘GÉ-1–T¬(option“for“Éunits¬)‘Þ÷‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ŸÔ¬29ޤ f‘GÉ-c–T¬(option“for“Éunits¬)‘Þ÷‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ŸÔ¬25Ž¡‘GÉ-d–T¬(option“for“Éunits¬)‘Þ÷‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ŸÔ¬26Ž© e‘GÉ-e–T¬(option“for“Éunits¬)‘Þ÷‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ŸÔ¬26Ž¡‘GÉ-f–T¬(option“for“Éunits¬)‘Þ÷‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ŸÔ¬27Ž¡‘GÉ-h–T¬(option“for“Éunits¬)‘Þ÷‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ŸÔ¬27Ž¡‘GÉ-I–T¬(option“for“Éunits¬)‘Þ÷‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ŸÔ¬28ަ‘GÉ-l–T¬(option“for“Éunits¬)‘Þ÷‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ŸÔ¬29Ž¡‘GÉ-L–T¬(option“for“Éunits¬)‘Þ÷‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ŸÔ¬27Ž¡‘GÉ-m–T¬(option“for“Éunits¬)‘Þ÷‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ŸÔ¬27Ž¡‘GÉ-o–T¬(option“for“Éunits¬)‘Þ÷‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ŸÔ¬26Ž¡‘GÉ-p–T¬(option“for“Éunits¬)‘Þ÷‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ŸÔ¬27ަ‘GÉ-q–T¬(option“for“Éunits¬)‘Þ÷‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ŸÔ¬29Ž¡‘GÉ-s–T¬(option“for“Éunits¬)‘Þ÷‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ŸÔ¬29Ž¡‘GÉ-t–T¬(option“for“Éunits¬)‘Þ÷‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ŸÔ¬29Ž¡‘GÉ-u–T¬(option“for“Éunits¬)‘Þ÷‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ŸÔ¬29Ž¡‘GÉ-U–T¬(option“for“Éunits¬)‘Þ÷‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ŸÔ¬29ަ‘GÉ-v–T¬(option“for“Éunits¬)‘Þ÷‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ŸÔ¬28Ž¡‘GÉ-V–T¬(option“for“Éunits¬)‘Þ÷‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ŸÔ¬28ŽŸ+I‘šßëc?Ž©Ìe‘G¬`É?¬'–Tfor“unit“completion“with“Éreadline‘ƒ'‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘D¬46Ž¡‘G`É?¬'–Tto“sho¾9w“conformable“units‘ýB‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘¾¬3ŽŸ) ³‘½4‰£ÙÜ+ŽŽ¦‘G`É_¬'–Tto“use“result“of“previous“con•¾9v“ersion=ã‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘þÀ¬10ŽŸ+a‘šßól!",šff cmsy10ëljަ‘G¬`É|¬'‘TopAÇerator‘!‡‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘âd¬7ŽŸ*u‘‘šßëcAަ‘G¬abrasiv¾9e–Tgrit“size‘¾‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘~ì¬15Ž¡‘Gaddition–Tof“units‘oM‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘0)¬8Ž¡‘Gadditional–Tunits“data“ les‘‰+‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘J¬32ŽŸ) ³‘šßëcBަ‘G¬bac•¾9kw“ards‘Tcompatibilit“y‘ð0‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘± ¬13Ž¡‘GBritish–TImpAÇerial“measure‘ q‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ÎN¬5Ž¡‘Gbuilt-in‘Tfunctions&j‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘çF¬9ŽŽ ý ÌÍ’ókˆëcCŽŸÖ’óáð¬CGS–TUnits“Systems‘÷ ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘·æ¬21ޤ ƒ(’óáðCGS–Tunits,“prompt“pre x‘aY‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘"5¬23Ž© ƒ)’óáðCGS–Tunits,“spAÇecifying‘S‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ß/¬21Ž¡’óáðCGS–Tunits,“using8Œ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ùh¬20ަ’óáðcircle,–Tarea“of‘o©‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘0…¬15ަ’óáðcommand,–T`É!¬'“to“indicate“primitiv¾9e“units6ô‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘÷Ь32Ž¡’óáðcommand,‘T`É!endlocale¬'‘“>‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘T¬41ަ’óáðcommand,‘T`É!endutf8¬'‘0d‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ñA¬45Ž¡’óáðcommand,‘T`É!endvar¬'‘~÷‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘?Ô¬41ަ’óáðcommand,‘T`É!include¬'‘0d‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ñA¬32Ž¡’óáðcommand,‘T`É!locale¬'‘~÷‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘?Ô¬41ަ’óáðcommand,‘T`É!message¬'‘0d‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ñA¬41ަ’óáðcommand,‘T`É!set¬'\x‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘U¬41Ž¡’óáðcommand,‘T`É!unitlist¬'‘áÑ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘¢®¬37ަ’óáðcommand,‘T`É!utf8¬' å‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ά45Ž¡’óáðcommand,‘T`É!var¬'\x‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘U¬41ަ’óáðcommand,‘T`É!varnot¬'‘~÷‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘?Ô¬41Ž¡’óáðcommand-line‘Toptions‘ˆ£‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘I¬25ަ’óáðcommand-line–Tunit“con•¾9v“ersion‘)ø‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘êÕ¬4ަ’óáðcommands–Tin“units“database‘Ä^‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘…:¬48Ž¡’óáðcompatibilit¾9y‘Ø‹‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘™h¬13ަ’óáðcompatibilitš¾9y–Twith“earlier“v˜ersions‘ºó‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘{Ь13Ž¡’óáðcompletion,–Tunit,“using“`É?¬'“(Éreadline“¬only)‘û¯‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘¼Œ¬46ަ’óáðconformable–Tunits,“`É?¬'“to“sho¾9w‘´_‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘u<¬3ަ’óáðcurrency‘ÿ:«,‘TupAÇdating‘쌑ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘­i¬46ŽŸL‹’ókˆëcDŽŸÕ’óáð¬Darcy{W‘ÿ:«eisbac¾9h‘Tequation‘øè‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘¹Å¬12ަ’óáðdata‘T les‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘Åñ¬44Ž¡’óáðdata–T les,“additional‘¿‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘P›¬32ަ’óáðdatabase–Tsyn¾9tax“summaryxБÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘9­¬48ަ’óáðde ning–Tnonlinear“units‘JÜ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ ¸¬34Ž¡’óáðde ning–Tpiecewise“linear“units‘,‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ ¬36ަ’óáðde ning‘Tpre xes‘îÜ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘¯¸¬32Ž¡’óáðde ning–Tunit“list“aliases‘@^‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘;¬37ަ’óáðde ning‘Tunits‘ 1‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘Í ¬32ަ’óáðde ning–Tunits“with“`-'‘Mø‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘Ô¬13Ž¡’óáðdi erences–Tof“units‘CÖ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘³¬8ަ’óáðdimensionless‘Tunits2®‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ó‹¬3Ž¡’óáðdimensionless–Tunits,“de ning‘¼ç‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘}ì33ަ’óáðdivision–Tof“n•¾9um“bAÇers‘§d‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘h@¬7Ž¡’óáðdivision–Tof“units‘‚€‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘C]¬6ަ’óáðdomain,–Tnonlinear“unit“de nitions‘ ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘Éñ¬35ŽŸL‹’ókˆëcEŽŸÖ’óáð¬en•¾9vironmen“t›TdepAÇenden“t˜de nitions‘퇑ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘®d¬41Ž¡’óáðen•¾9vironmen“t–Tv‘ÿ|rariable,“HOME‘Áã‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘‚À¬43ަ’óáðen•¾9vironmen“t–Tv‘ÿ|rariable,“LANG‘²š‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘sv¬44ަ’óáðen•¾9vironmen“t–Tv‘ÿ|rariable,“LC‘¥Æ‰c4ÆgŽ‘óCTYPE‘Ç"‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘‡ÿ¬44Ž¡’óáðen•¾9vironmen“t–Tv‘ÿ|rariable,“MYUNITSFILEyç‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘:ì32,‘T44ަ’óáðen•¾9vironmen“t–Tv‘ÿ|rariable,“P‘ÿ:«A¾9GER‘û}‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘¼Z¬44Ž¡’óáðen•¾9vironmen“t–Tv‘ÿ|rariable,“UNITS‘¥Æ‰c4ÆgŽ‘óENGLISH‘m‹‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘.g¬44ަ’óáðen•¾9vironmen“t–Tv‘ÿ|rariable,“UNITS‘¥Æ‰c4ÆgŽ‘óSYSTEM‘ás‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘¢P¬44Ž¡’óáðen•¾9vironmen“t–Tv‘ÿ|rariable,“UNITSFILE‘>à‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ÿ¼¬44ަ’óáðen•¾9vironmen“t–Tv‘ÿ|rariable,“UNITSLOCALEMAPH©‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ …¬44ŽŽŽŽŒ‹;U°Ÿò‘GáUnits‘¦fCon•²!v“ersion’Td59ŽŽŽ ƒ33 ý ÌÍ‘G¬en•¾9vironmen“t‘Tv‘ÿ|rariables‘Ä2‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘…¬43ޤ »Ï‘Gexc¾9hange–Trates,“upAÇdating‘¥ù‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘fÕ¬46Ž¡‘Gexp•AÇonen¾9t‘Top“eratorq‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ÆM¬7Ž©"ò1‘šßëcFŽŸ°u‘G¬ les,‘Tdata‘Êj‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘‹F¬44Ž¡‘G ags,–Toutput“formate†‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘&c¬39Ž¡‘Gformat–TspAÇeci cation,“output‘ †‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘Êc¬38Ž¡‘Gfractions,‘Tn¾9umerical‘H£‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ ¬7Ž¡‘Gfunctions–Tof“units‘‰œ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘Jy¬36Ž¡‘Gfunctions,–Tbuilt“in‘ë¿‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘¬›¬9ަ‘šßëcHŽ©°u‘G¬help‘7‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘P¬3,‘T44Ž¡‘GHOME›Ten•¾9vironmen“t˜v‘ÿ|rariable‘üŽ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘½k¬43Ž¡‘Ghš¾9yphen–Tas“m˜ultiplication“opAÇerator‘j‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ÇG¬13ŽŸ"ò2‘šßëcIަ‘G¬ImpAÇerial‘Tmeasure‘ C‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘Î¬5Ž¡‘Ginclude‘T les‘Éø‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ŠÕ¬32ŽŸ »Î‘Gincluding–Tadditional“units“data“ les‘ ¹‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘Í•¬32Ž¡‘Gincompatible‘Tunits‘¿‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘P›¬2Ž¡‘Gin•¾9teractiv“e‘Tuse‘­‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘mñ¬1Ž¡‘Gin¾9ternational‘Tmile‘0Œ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ñi¬5Ž¡‘Gin•¾9ternational‘Ty“ard‘ªÅ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘k¢¬5Ž¡‘Gin•¾9v“oking‘Tunits†‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘Æc¬25ŽŸ"ò2‘šßëcLަ‘G¬LANG›Ten•¾9vironmen“t˜v‘ÿ|rariable‘û}‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘¼Y¬44Ž¡‘GLC‘¥Æ‰c4ÆgŽ‘óCTYPE›Ten•¾9vironmen“t˜v‘ÿ|rariable‘Í‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ª¬44Ž¡‘Glength–Tmeasure,“English“customary‘ Z‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘Ê6¬5Ž¡‘Glength–Tmeasure,“UK‘¦U‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘g1¬5ŽŸ »Î‘Glinear‘Tin¾9terpAÇolationâ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘Æ¿¬36Ž¡‘GloAÇcale‘°‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘p÷¬41Ž¡‘GÉlocale_map.txt‘¨ñ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘iά41Ž¡‘GloAÇcalization‘uá‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘6½¬41Ž¡‘Glog‘T le‘Ðþ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘‘Ú¬23Ž¡‘Glogging‘Tcalculations‘Ni‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘F¬23Ž¡‘GlogsGM‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘*¬10ŽŸ"ò2‘šßëcMަ‘G¬measure,‘TImpAÇerial‘Ä`‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘…<¬5Ž¡‘Gmile,‘Tin¾9ternational‘õá‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘¶¾¬5ŽŸ »Î‘Gmin¾9us–T(`É-¬')“opAÇerator,“subtraction‘t_‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘5<¬8Ž¡‘Gm¾9ultiplication–Tof“unitsGM‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘*¬6Ž¡‘Gm•¾9ultiplication,‘Th“yphen‘uo‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘6L¬13Ž¡‘GMYUNITSFILE›Ten•¾9vironmen“t˜v‘ÿ|rariable‘ÂÊ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ƒ¦¬32,˜44ŽŽ ý ÌÍ’ókˆëcNŽŸ²3’óáð¬non-conformable‘Tunits#N‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ä*¬2ޤ ¼_’óáðnon-in•¾9teractiv“e–Tunit“con•¾9v“ersion‘GÀ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘œ¬4Ž© ¼^’óáðnonlinear–Tunit“con•¾9v“ersions‘ º‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘á–¬13,‘T34Ž¡’óáðnonlinear–Tunits,“de ningù‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ÂÕ¬34Ž¡’óáðnonlinear–Tunits,“other‘H1‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ ¬14Ž¡’óáðn•¾9um“bAÇers–Tas“units‘™´‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘Z¬9Ž¡’óáðn¾9umeric–Toutput“format‘Ë©‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘Œ…¬38ަ’óáðn¾9umerical‘Tfractions‘ƒN‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘D*¬7ŽŸ!9’ókˆëcOŽŸ²3’óáð¬opAÇerator‘Tprecedence‘¦U‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘g1¬7Ž¡’óáðopAÇerator,‘T(`É**¬') Ÿ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘Î|¬7ަ’óáðopAÇerator,–Tcaret“(`É^¬')‘k‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ßH¬7Ž¡’óáðopAÇerator,–Thš¾9yphen“(`É-¬')“as“m˜ultiplication‘º‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘Á—¬13Ž¡’óáðopAÇerator,–Th¾9yphen“(`É-¬')“as“subtraction‘S ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ç¬8Ž¡’óáðopAÇerator,–Tmin¾9us“(`É-¬')‘;בÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ü³¬8Ž¡’óáðopAÇerator,‘T`Éper¬'‘I¶‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ “¬6ަ’óáðopAÇerator,–Tplus“(`É+¬')‘Ù,‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘š ¬8Ž¡’óáðopAÇerator,–Tslash“(`É/¬')‘V&‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘¬6Ž¡’óáðopAÇerator,–Tsolidus“(`É/¬')‘—í‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘Xʬ6Ž¡’óáðopAÇerator,‘Tspace 2‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘á¬6Ž¡’óáðopAÇerator,–Tstar“(`É*¬')‘Z‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ì¬6ަ’óáðopAÇerator,–Tv¾9ertical“bar“(`É|¬')Vl‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘H¬7Ž¡’óáðopAÇerators‘«M‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘l*¬6Ž¡’óáðoutput–T eld“width ©‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘Ì…¬39Ž¡’óáðoutput‘Tformat‘öÄ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘·¡¬38Ž¡’óáðoutput–Tformat“ ags‘®i‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘oF¬39ަ’óáðoutput–Tformat“spAÇeci cationD1‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘¬38Ž¡’óáðoutput‘Tprecision‘ÎÛ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘¸¬40ŽŸ"ýþ’ókˆëcPŽŸ²3’óáð¬P‘ÿ:«A•¾9GER›Ten“vironmen“t˜v‘ÿ|rariable‘6(‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘÷¬44ަ’óáðparen¾9theses‘¦‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘g]¬6,–T7,“8,“12,“33,“34Ž¡’óáð`Éper¬'‘TopAÇerator‘„a‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘E>¬6Ž¡’óáðpAÇersonal–Tunits“data“ le‘ŸÖ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘`³¬32Ž¡’óáðpiecewise–Tlinear“units‘º‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:ޑɖ¬36Ž¡’óáðplus–T(`É+¬')“opAÇeratorבÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘Ô´¬8ަ’óáðpAÇo•¾9w“ers‘¦Ü‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘g¸¬7Ž¡’óáðprecision,‘Toutput‘…ø‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘FÕ¬40Ž¡’óáðpre xes‘)ø‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘êÕ¬5Ž¡’óáðpre xes–Tand“expAÇonen¾9ts‘Ce‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘A¬7Ž¡’óáðpre xes,–Tde nition“of‘…‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘Eò¬32ަ’óáðprevious‘Tresult‘Þó‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ŸÏ¬10Ž¡’óáðprimitiv¾9e‘Tunits‘Ç¿‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ˆœ¬32Ž¡’óáðproAÇducts–Tof“unitsÖ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘@²¬6Ž¡’óáðprompt–Tpre x“with“CGS“unitsZ=‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘¬23ŽŸ"ýþ’ókˆëcQŽŸ²2’óáð¬quotien¾9ts–Tof“units‘ª‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘jë¬6ŽŽŽŽŒ‹<¡ÑŸò‘GáUnits‘¦fCon•²!v“ersion’Td60ŽŽŽ ƒ33 ÿ7ÊÕ þiø‘šßëcRŽ© û‘G¬range,–Tnonlinear“unit“de nitions‘Ä2‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘…¬35ޤ N‘GÉreadline¬,–Tuse“with“Éunits‘+*‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ì¬46ŽŸ O‘GreciproAÇcal‘Tcon•¾9v“ersion‘À‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘Äœ¬2Ž¡‘GroAÇots‘ð0‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘± ¬10ŽŸ%²‘šßëcSަ‘G¬setloAÇcale‘Tfunction‘M‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘P*¬41Ž© O‘Gslash–T(`É/¬')“opAÇerator‘Ñ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘Q®¬6Ž¡‘Gsolidus–T(`É/¬')“opAÇerator‘Ò˜‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘“u¬6Ž¡‘Gsphere,–Tv¾9olume“of‘kN‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘,*¬15ަ‘Gsquare‘TroAÇots‘Å‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘†y¬10Ž¡‘Gstar–T(`É*¬')“opAÇerator‘”»‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘U—¬6ަ‘GState–TPlane“CoAÇordinate“System,“US‘œw‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘]S¬5Ž¡‘Gstrict‘Tcon•¾9v“ersion‘怑ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘§]¬2ަ‘Gsubtraction–Tof“units‘f‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘&ë¬8Ž¡‘Gsums–Tand“di erences“of“units‘6®‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘÷‹¬8ަ‘Gsums–Tof“units‘œÐ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘]¬¬8,‘T16Ž¡‘Gsurv¾9ey–TfoAÇot,“US‘B‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘N¬5ަ‘Gsurv¾9ey–Tmeasure,“US‘AZ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘6¬5Ž¡‘Gsurv¾9ey–Tmile,“US‘ C‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘Ê¬5Ž¡‘Gsyn¾9tax–Tof“units“database‘Ä^‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘…:¬48ŽŸ%§‘šßëcTޤ û‘G¬tempAÇerature‘Tcon•¾9v“ersions‘e‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ÄA¬13ŽŸ%¦‘šßëcUŽ¡‘G¬Unico•AÇde‘Tsupp“ort‘*˜‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ët¬45ަ‘Gunit–Tcompletion“using“`É?¬'“(Éreadline“¬only)‘=‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘@¬46ޤ N‘Gunit‘Tde nitionsFÜ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘¸¬4ަ‘Gunit‘Texpressions‘™B‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘Z¬6Ž¡‘Gunit–Texpressions,“complicatedC‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:ޑ֬12ަ‘Gunit–Tlist“aliases,“de ning‘³‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘Ƭ37Ž¡‘Gunit‘Tlists‘‚€‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘C]¬16ަ‘Gunit–Tname“completion‘ÐŒ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘‘i¬46Ž¡‘Gunits–Tdata“ le,“pAÇersonal‘e+‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘&¬32ŽŽ þiø’óáðunits–Tdata“ les,“additional@H‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘$¬32ޤ ÞS’óáðunits–Tde nitions,“adding@H‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘$¬32Ž¡’óáðunits–Tde nitions,“c¾9hangingd‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘àA¬32Ž¡’óáðunits‘Tfunctions‘£d‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘d@¬36Ž© ÞT’óáðunits‘Tquotien¾9ts‘ÃÖ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘„²¬6Ž¡’óáðunits–Tsystems,“CGS‘Rò‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ά21Ž¡’óáðunits,–Tde nition“of‘°¢‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘q¬32Ž¡’óáðunits,–TlošAÇokup“metho˜d‘òi‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘³F¬5Ž¡’óáðunits,–Tpiecewise“linear‘¿×‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘€³¬36Ž¡’óáðunits,‘Tprimitiv¾9e‘‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘Mñ¬32ަ’óáðunits,–Tsums“and“di erences‘Ë‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:ޑ֧¬8Ž¡’óáðunits,–Tsums“of[ ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘å¬16Ž¡’óáðUNITS‘¥Æ‰c4ÆgŽ‘óENGLISH›Ten•¾9vironmen“t˜v‘ÿ|rariable‘¨6‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘i¬44Ž¡’óáðUNITS‘¥Æ‰c4ÆgŽ‘óSYSTEM›Ten•¾9vironmen“t˜v‘ÿ|rariable‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘Üû¬44Ž¡’óáðUNITSFILE›Ten•¾9vironmen“t˜v‘ÿ|rariabley‹‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘:g¬44Ž¡’óáðUNITSLOCALEMAP›Ten•¾9vironmen“t˜v‘ÿ|rariable‘‘Œ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘Rh¬44ަ’óáðUS–TState“Plane“CoAÇordinate“System‘×"‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘—þ¬5Ž¡’óáðUS–Tsurv¾9ey“foAÇot‘Çí‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ˆÊ¬5Ž¡’óáðUS–Tsurv¾9ey“measure|‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘<á¬5Ž¡’óáðUS–Tsurv¾9ey“mileCî‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ʬ5Ž¡’óáðUTF-8|‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘@X¬45ŽŸ$$’ókˆëcVŽ©v’óáð¬v¾9erbAÇose‘Toutput‘¦j‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘gG¬2Ž¡’óáðv¾9ertical–Tbar“(`É|¬')“opAÇerator‘ŸO‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘`+¬7Ž¡’óáðv¾9olume–Tmeasure,“English“customary‘K!‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ ý¬5ŽŸ%Ç ’ókˆëcWަ’óáð¬white›Tspace£‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:ޑŀ¬7,˜11Ž¡’óáðwire‘Tgauge‘Íâ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘޾¬14ŽŸ%Ç ’ókˆëcYަ’óáð¬y•¾9ard,‘Tin“ternational‘p‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘0÷¬5ŽŽŽŽŽŒø÷Yƒ’À;è‡33ïÿ@ól!",šff cmsy10ók·ág£ff cmmi12óg߆µTff cmtt12ócÂÖN ff cmbx12ó]߆µTG® cmtt12óZÂÖN G® cmbx12óQÂÖN ¼j cmbx12óFßê  b> ó3 cmmi10ó=ßê> stream xÚmTM¢@½ó+z&ÎÁ±?tBL$ñ°ãd4›½*´.‰<øï·_•èÌf’W¯_wÕ«îrðãc;Šòê`GæUŠOÛV×&³£øç¾öƒ¤Ê®[vïÖæ6ïWÛ7ñÑTÙÖvb¯“uYt/N¼.³ó5·½êÿ¢¥=åS‚> stream xÚmTM¢@½ó+z&ÎÁ±?tBL0ñ°ãd4›½*´.‰<Ì¿ß~U¢Îf’W¯_u½ªîvðãc;ZäÕÁŽÌ«Ÿ¶­®MfGñÏ}í I•]/¶ìÞ­ÍmÞ¯¶o⣩²­íÄ0^'ë²è^œx]fçkn{ÕÿEK{*ʇuÄpg6;µÞ$4»¢;»µgZ8, ’ü²M[Tå›P¯RJG¤eWxm½ñ­ž÷ŽE™7·¢â žÒ"/²îÑ7»¸¦‘¼ýj;{Y—ÇÊ‹"1þt‹m×|‘£o¼irÛåI É‘c¶×º>[TÒ›ÏEnn#×ÛûþbÅø¹‘ûÒî«¶BS¬ØEVå¶­÷™möåÉz‘”s…«¹gËüŸµ)gŽÏR©ð133wÄ xAÄbêí;¬ÒaGL6K& 0+‡}&ö"?‘á°(Ò¦Òa/ ¡cì,•!£½¥‰î-fö3¤Ù*IÃx {aªùð”sIC%ÒðhSô¢¨7å£Å}­HÏ=ŤIYƒ¹(îƒêjŧ ÿZóéàü4{ÖØSOØá5˜‡áZ ä®ekxvKº·Ǭü÷…Ü@2aÂ> stream xÚmSÁnâ0½ç+¼$z Ø¨"¤€ÄaKU¢Õ^C<ÐHàDN8ð÷õÌŠV{Hôüæç=üúØS`¾Jñ m}u%ŒÒßE Y]^/`»w¦¶oâÃÕå:1L·ÙÖVÝ‹omy¾èUÿ­àTÙ ÖÃþŽv¹Êó‘DM^ug{¦…Ç‚° ÉpmUÛ7¡^¥”žX[“ÖôÚã{=1î+kܽ¨8 …@iaª²»¯è_^|Ó˜¼¿µ\¶öXq,ÆŸ>ØvîFŽ^‚ñÎp•=‰!9òÌþÚ4gÀêBË¥0pôùÞÞ‹ ˆñs#P~k@hZ+vQÖÚ¦(ÁöA,åRÄÑf€5ÿĦœq8>K¥Â_¸—žX NˆHæžÐÔ3$¤Çž˜{<Ý0Š*¢5cÕ~ÿP÷õʯÂùÝ5WÂ42^!ž0^#žrq‰xƘœE„3xÎü ñ ªz“)cÒgl1BÌîÒ°õ•?ŸXqû!òŠNA‡¨Wš»A*dý1ùÔ)iȧΰÅç“Оó â9ç’†NVf¤¡–kô¯VäaŠžUJü†ôì?%Íš5Ø»bÿTW£=ј«±®–¾Œ¿É5ëñ2éfè&p2pj³V^ócH£Mc†VYxLS7˜E=›þ1âj· ¾gÈÈ endstream endobj 6 0 obj << /Length 272 /Filter /FlateDecode >> stream xÚ½NÄ0„{?…ˤðâÝÿJ@(Ð Š¹ $"wðü¬cr:$„ o¢ùƃÚÊA¬Ìš¨_Þ”]þίº ÷× ¿÷&¹ÿ\1yÇà?ÌŒPM Åï¢UgW‘4Yð.:Ýö9“ó!FÝvú©z‡Ã¾6\u95cõY3U»y?Èçs{£6­z?ºg¹cˆxL‘ƒI,qŸwºWwêœF É&ÌPv´]C@.ò¦™a˜¹"@_¦~š3V,ü©Eˆà}Þ¢ýXR—µŸ$Z×ëÈëSVL,2iàÆS–Éû…Ü3K_ôçÝ> stream xÚ}TMoÔ0½ï¯ˆ89R“Ú±ó%N´¥UBR.”Cšd‹l\%^–ž»Ù­ ªÔŒß¼{žŸWþDPò —2.U4›wèôPðåf%yÏSþ ˺iÖf$0‰E qË> stream xÚí›[oÛ6Çßó)ü6{€9Þ)í±Wl(Ú¢IŸ¶s5êK ËióíGŠQ2IsMzI¨c瘅ÿŸÏ9$e4òš”p"%-&Ëõ ì^m.&ú‡7ÏO‰›ËÀ¹ùèìä·gŒM%,Ñäìý„¡” wv>ùkZÏþ9ûóä陇aœ)¨" <Å„ïNœ‰H:™>ÞïÚízÑ\«§Tb3CS— 8 K €Ù­brÇHІEµ«Æ€c@Qãjpu<œï~¸<Ù¸¤¤s@!²À1Ü릺ª·{“áÞT»ýª ’ ßú÷m°».mT“m:⼉ž{á!àFƒêmI$.O·#.©éˆ“Õ3 7À=Þ®/WõrÑVç}Ë¥ëª\MÎдQ=šî¢9ï¾ub1Nôôæbâ¢S”xŽ!„$K´c$%踔$l \,Uóõñ“úÑœ›®K³hëwõJò"s-'HæÓé¿ÆŒÝfÕ¯&fxdDòËh•t?Ú·Ìcƒý ~ù *ö÷§7cgd.‹68…bO"As;j;\D@ Wƒv¥ªw¸^n7«zS-½ÍÕox™Ó\s0»S»¥±½/ŒoR1o‰ã¨LáÜýùǬÓÑs/<´A54n_×ejÛª±v8¥FvçÁíP©VºZ«}*1­Ti¤y‹vßT6½lTV¹šé_´úÐòÐ%ÑÒaëDfVðÂya`o83dêªÜÖtH©Û&°CÊî,½j?T.~¾Hî"r/w‘nž­ŒûƉ\¤úðR¾½ˆ‘ÊÓíiy „p-'ŽT^Ô»v'çu½²­6Øä$Ónõ£ÙÛôî6z¿•! x&z±ba.=·Xôá©báÏŠgdj»b‘Ô–6`ÁAɱÝlôo™Ð•þùé±)Uµà‹Ï4îäÝTÆ2;w™xá †`ã SÛr0ÖgxÌe8¶;Ï®i85ÇZËúýµC™w`¤³<¤`=ÂfyëFf–÷ÂY~`1Ý™•««²|ZÓaE Âae‡A]ûyz½k«u',û^Œš†Ûì$¬5¹Œõá)Æ|¿#ŒåévŒ%5c2}blë˜;Á -g:ÐUÝîI·¹RU›ñ‰¨z¹Õt&ÄHÝ”v—Žóc˜ÙËÅ Oaà[‚ƒûh™ºIM‡F d1 n{»¾4~¾nº[?‡ -™|7{H1ß?ãZ.~}x ?\"gêvø4iTÊK(¨=ËÒô‹íÅEßJ/VËýj‘¸U þÉn37}­ŸÌfÙ O4˃IÇѶLmÛ,§µ•×LKwŒäù ÛÝ~ŒÝs^ÊÚÄiÆWTÓy·N´oåŽA묙â\\úð.¾o˜EqÉÓv¸$µ.X–.ûý(ä¾Ö´o/÷f·ã´UÔ\¯ªHb×/ßrî=’CÌDæBч§ ðÝ!ÑwRû?÷÷b· endstream endobj 89 0 obj << /Length 1499 /Filter /FlateDecode >> stream xÚíš]oÛ6†ïó+|i_˜å·ÄÝuM\l²"M6 Û.T[KØr ÛKÚ_?Rüe‹,±%©›½ˆìè•ÎûèÑhå?4p”ÍGóÕ l¿mnFúàòí 2qS8õ"¼:y5cl„ P ÑÕß#†D¸ó]-FŒ«jò×ÕÏ'gWîL ãDIy ™ã¢€PŽ•¦º|y dZáÉ!ÌÆ¯‹ª¾™LIÆÆ¿O¯wþôË]­NË?!¢uµ­ÖõF]å«‚¹vL3€2&¯¦=ùòÜ<ÓxïÓÃ}¹—,J( »›Œ'ÌFO½ð¤íŸ´½9‚´Œ²Tm} Ý‡A*í¤#.`BX×’ €ޝ¥é!ãÓb[¨#:žUËÒ8ÄIïlò3þ=–±G²òPY¶F}‰<=õÂÜß?©&—ª+#¿ éˆË! ¶,Iâ°!Ζ¶ZHì.Ê;M‡bQ/ôÁ»¦¾à˜g€ ö,q áa²šŠGÃ÷*€Gšn‹GTÓáÁ3€E‡ á±®—U]þ¨!bIÄòì?²ð̪P“óTxºð<¾‘„“¦ÛÂÕtð0 uk@ð¼«ÊyyWmJ]aΓ@ÊàìYrÂÂd3‹.<†…oáƒX¤é¶XD5T~'¸Ã‚°PÞë£ój³Õl¼^VÅ&Ðf‚‘£m3O]“óTxºð<¾‘$„'M·…gOó`¤áú 7ÄŒ4»UÙTs3Åì¶·»­>žµóM³*¶ÃS ²€ ãÄ%0ïØ $Î;^xdÞ饕ä¡y'QÛÎ;ûÚÃ¥€ y ²–ºyg6ɉñ®-ïo'SœËy¥JļPÃé` ø¨'Ÿc_·Z?Ë„)=“KÕUe"®éÀÊ Øqe§šÙ²¸l²wä({áæØBœj{S1uÑ1J=bˆ„4I´e4&èå9@ܵ37ZͪriæêߪÅö㮜á—)ê‘BôçRñëÂcüù8LÓm Œj:uÚí]#;í&Ðc3¨<ó {_A!¤ñ1È.<¤…ƒ@¦é¶@îi¬î–Lº–MÍêþ|-+!Ï‹eõÙ[õí­åF=ú~ÄãÃð{#6Ÿ‰³‚™z&ÑàÞH¢¶öµÅ æ€ bq³‚BDΑr¨\qyœ¼”«£}¯e}M-^]x¬xù° ‚šªÛ¯¨¦” &˜P;t¨MWUºŠ¥y›å€íÕ´½I–yœÜ>Ȫ̦?‘#/<ÂQÏS:¸ç’¨«8Ú×fS’ØÇ¼ðHëå™’PKÔ¶},®­ì%ä¹}ÝŽfG_½²¬‚>Ê Äòok õÉžã©In*(]x ß1Jƒ ¤i;P¢Ú"¤ÝÐn‘d”뺚ëõð¢ÔÀ¼ßÝÞ¶_¬›á·ÜˆQÀ²ü)«ód lî9ðÂ#ô ¡,ÄA¢¶å ®­8[0rÃÁeY,Ôn{2BÊ‘ç5…Ì7 K5¿ ™ï»@yÐü4mg~T[™/«DÆl¶h³råhÉ÷f×4e=ÿ¤?ÝÏÕácQßB.‹m ­`Fô òÁ\{ª]xÌ?!Ò´Qmé–O)±=C¯k(6&ÅoÖ«•þ9”z"?éEZq?œtÅü«?ëìí&Zç…G¬ëå7µ­uqme|Æ -ÛëÞ^\{[ÄMi<<5ïšvv‘­‡³öÿΫyYoÊa?39+ä÷û¶/æ^R}éÂc¾ø ¢"èKš¶ó%ª­|‘Ï·ï‘~ªåð“BPGßÓ‹½§‘ !flIE¬ !æ{Ͳ b1í³×§ endstream endobj 10 0 obj << /Type /ObjStm /N 100 /First 829 /Length 1971 /Filter /FlateDecode >> stream xÚµY[oÛ6~÷¯àã6 4/çð2Öfl]±´À¶®n¢tÂ)°å¶ù÷û(Ê—ÄRv ýIäá÷+Éã°P‚DTB[¡ m„a/(k F„SZh/<^uÁB2ŠH, ÞÇ™Á¼öJ$q0 0$4+8À`©€7Q Ò ±iHÈF=³˜2Ñ‚ ãaX„õ‚ÂSÁaÑC*«@ÂbÊ(X¥°TóŒñ$€–’s"@Ž}PÁ,&ƒ%À#‹%À#Âð`"%{Èa*&`HÅ™7‚qIÄCùpÑÈQx'`¶Þ ÖãA°‰‚Ik”`†‚ìÈ΂ì±.XÁ 0c„ §á¿€81rÆn€sU޼ PGîGð8gZc-#Œ:a±FМƒ4Âæœ‹x±Ây•^/ý„="¢¡óà׈‰ )€˜v0r¦`š†å.,‡ß]d‚Ž—axÔ+ k¸Ô«¤!|è‘,xI~DÄ‘)¥ ƒ•^‡8Ó —JIŸxGs€“Sš$¯ZŸòÈ” ž8™UÊÔdRѧøê‡€i8ËÃÓ24à ±/@öɈ‚}Ž9¤)øÝ÷¦FxT#>&á??}:›¿¾½©ÄüÕâC5›?o›®jºµp¨ª_fó_ªu»Y]Tk”X?ðSuY/žµŸÅ[…‡xùhÞͰ|…uˆR/öÍ7=ò  ‰§OÅüER.Íà6‡í«±…üüÕª½8¯:ñºœ½ó×ÕçN¼ÛB*©é¾–Ðç1jèæR£Å#úÿ¢ÜüÛ¦ió6íaI=¨³†:{ΨüÐùaòÃæåG6Ãd“QLF1Åf›QlF±Åf›QlF±Åf›Q(£ÜsKoÆl~¾yßõß?ÖÍ_³ù³vuY­²Ô»ä¥ x—ÈHÂöãðTذ]I¦´à›rßö:óïÛ×­˜Ÿ‰/ô—)B§T,#¼²£ÔAºpJFöF2Û#–VI…(IËèöF2ãÛž†‘2ƒ±’TÏ(ØZ©' ä2â‘îЧˆ*MPº2‚V†ÐSâu’8œ”α <Ðy8×ÄQºPˆ•ç•ÉtNIãÇ­‹…èlDM tä%îc'¡ÂHñR:Ó!;£÷㯠ñi-Óå¡ç3JãÆùL>Üú`ÓÀ§¼ÄåhœÏ>–àG‡cAI¥÷åg}ÿ©8±‡ÑPÖi©& ¢)e>¤hŒ|TȧZI‹cwçSä™âte8ÑžHí÷ç/ÚŽ4Êi Õ†áî\úÆŒÛht!>bi8×¾aB-úÓòYƒÓoàÃ9ìãøÖf Õ>ZQ9ÓÜeh¼B¥¯C:Ò>e”’ñÔœ}Øv”è $.Uã”\ˆÒ`·éÏÅã:Ž›iïTÆ@†æâ×ß~OͰÇå½Ù,—ïlDZ'­ÐYëÝGjË·Ý Zo[¨« GKøŸ e])kIYAÊýå~‚r?᳤ϒ>Kú,鳤$³3|vÏ–†Üy„Œ2JÈ(!£„ŒÜ£{”!<ÎSCû»4¢9ž…ö­ä˜Ïr¯p˜8Wm¡ýÃù -ºÅÄçPÜjbÿ/Ƈ‹­ö.óáü ~¼1±Tˆ/õ”fàýÁ› >WˆÏ™~ëù(LîTÖ—Ù©œÂ†|ÐB§ëæe(c"£û²ƒ… ÞØþ‹Ñáv©‡Š`dhˆã·i[¨[`ÜJ´øfܦ>—܉V]•É6$£Ý§ c<Äñª§B»#K)æÛ;k'•‹'å£ÈÒÒÀ‡züF¦ŒOS»nx_ ä™â,t-"«ezωÛf ‰Ü)Õ¥À¯é?,;Î׉ßϨÐ]Ì¢&,éƒnõ2•¯…:#‹«tt~Ï™nò:ž”ÓÀ·|ðk¨…o-MØ q"o•ÚÇ3u„qª6c!Nä­;ØR—Äñdïn}·½NÿÓú®V?¬VëêS¯ÛîëEª½J7MÝ­¿æ<œ8öÿ ìéÚÕ°fÿy$y¾¹îÝ08쬾ºªÐÄ ÛÙG+«Ø#ý{ñ#¦—›ë÷Õ*¯^߃˜;Âx¶©—Ý“ºI"/6ÍÅA,ƧŽ^­ªu»éIÐØm–]^>2>–X7ËúbÑU—[GCô/äŽ-[\üõi±ºìH‹®~_/ëîv0orþë4òÕAPžŒø¾m–(…Å*¯nPúÞ™Ýj{(u„÷ººîSj³ªF˜?ÎÕîÏj5Tâ]5¶Ùû€ÀdÝüX¯»{Ó}}WŸôÕµéï6³ÌáÝöñüûó{ZŽO×ÛMuQ_ÝNÂ<0œ³½ ·ë®ºÞ&áÄäHVï‚“äžUݧªjŽñ&Ŷ›@÷ ë›^¥vUîQÿÌI®‰ endstream endobj 302 0 obj << /Length 3429 /Filter /FlateDecode >> stream xÚ½ÙŽãÆñ}¿Boæ8+.û$¹A¼ ;X#p{ü`¬Gjˆ¥D-™¿OÝ<$ŽGF‚`€aÅê꺫D±JàO¬òd•*ç:[m¯ZmîW<øù﯄‡[àzùîöÕ›ŒY‰$Γ\¬nwST·ÛÕÇè×cÙµ7k¥Tô¾>ÞÈ4úz#³È5m Óµ&³‘¸ùtûã«ïo‡ƒŒ”WR„$er%ÒX £=I6Ó±PšI7kceôÏ›µb”b¾–îˆIMTï–7?ˆDOq ã O%=ÝŠç×_ÀµÔ@RÊà·{çíXŠX¦Ù‹8•ˆ…´ìÔÔ÷Mq¸YK`ãYš!KS¸2W¿ô-weW:¿æOk[·Åi•G^þzclT4eÝ{¸ö©íÜ¡e(`-\Ñö;8FË›]Í›ÝÞ• Òˆ5ðm-T,Œ`zÝ—¾äS*Gò'u¡# ø¬AƒÃt<œÖwüÄÃQTýˆ‡£@G|³¶‰ŠþQ~&•b¾û¿Ü–‡²*¢”G>Þ‘ƒˆ X ßEdâð»¢-7h#2ªGmàø“‹¨ly|Å©ro9:¸’n_t¼8{óïZ·I/×üÂf ;ofÙÌñ'f»æÆˆ$µ`‘l8b³ÐSÊ ’[Ðf'î P/“@½È'ÔÃ2 i¤k~ÎUi‘z¡óXŒ4uõ²'y@bTë$ú ý‘ô°ã„ûÖZÙOâx° œ”AJÅ&xèêÉ_¤ìöŒÞ8œX%œâd!±ÊÍ\ÏFV€ªmÈ1y´ "[”Žv›È†`ÂêïÔ‡‹&àßÝóêø0N­WEÎHPL¼º`¿¯—ò ¼½"YQ<Ž `Ìét0Sžô”2 dݰRðôÞÓÕúÔ7lSuë n‰W¥7šò÷Dè ï@¤\3ÃebceÒ9Ã7}Ut5™PƒJªˆ£»;µ~ä‹+ŸyJn žA›…âÌŸaÎ%Ü%ˆ ˜†z¦²©žy§Šp—uàIÑÜ•p^óäjË#OE·_/DY$Txå4ä]Þ×ÂÑ Ïm iÌd|YÕoÙWÂý.*i–¡Êƒ·ý¦ k_úšnCù3z'ñÕ£“mÂë"Å*t\ò®þ°š’IÃnŸ#½È>°¤Û=%E–ŽÆ‚°ÄL\…7(èâb±Ùô º'?CZdÀ‹£—áˆòÀ#ƒÂ-öîÈ[tŸºù¼^"|`7ö4‹ª:¬]ˆÁ«•£QÕÕØÈÁ›¼Ï&If ÌÊ5CŒï÷˜·±ª¥Ù€ÑáMLå(…¼'Ä=lJ]ê;_©»2p&Á•ÄÂŽƒÙk^¢Px™I¨K2‘­tš€áå/d.z=_H]Αγ1¤ÆÄ–Iÿø/ŠÉ³óñWök0ú~Î'‹å`ø¢9X %Vª®¼J€~á*çH}@âà™ÊXÉÜ{l1Ötke“ÁñXLÜýÚÖ¡×;ÒUm†'‰ àÜ#D)Rx.º‚GøRQ )‹îI³{‚1üØ mâ# !{Á €¾ó¯å3˜RV€!&úšé(¹QÁ¢rôÊ¥_ó¡Óæ’W'ÉOð© K6VnÝ Ì¿D›ÖS £R<·ægÛ“Ò\ 8:·¥šKêÁ¯/øˆM0_†~ ±|‚–GšÔ@“šÐ„q¾öןÀ„Çâ×| £¶OW4ÛeDÏ&Cl’€ƒÝ©2“ú’7èÜØº]å)¯ÞqŠ»/˜ç(„ ³\!SùÈ«š¹`¬x”öfl ãN{Y<ó¾ ‘†÷ü=<ÝzÈ8'ylÔ\`œ5AZ¨Á¯\–˜JǪA¨‰ã,³/•˜z=_*1Ïï÷ʼnóH¼Oû0 Ÿ9þxÇæ™ëIœHs~Û<½òú…œ#¥xÇêCˆŽ¼n]»iÊÓè±)?™j0«upʪ¸ Úïå³²Ì;n Ê@¨Œ­ð}7É•0M‰¦s|6¬P‹7 5L¯h¼yÀyãÌÈ·{¦Âb׸`ô\¥×¤Îùh5ÌÔጱIC“¼ zJ…5Et_†2j+gú'@júÏ’ÀÕ'Õoip‹yÔî]Uñ jKIßXH¦€<@:áMQA=i³³º»)§.®…ø€¡†ê1¯ü vhÆ)o[ŸYœÍÞû¾i8å3Ò@<Ûx7‡3Èo0á;8zxxˆ;È¡)]¼ Ë¨Æø”à_׉Z'f)ÈÌ& º8IÎHGvå£ ë™á'wé¶ç†Wv(ÀUœ7:n„Ø_ÝÛEm½¸ÿwgCŒäßK¬S)xIäþ[(PŸ= ÊpmÏý cfmxíÏ›©$í{ä´—ÒY%|%¡Æˆ: 0ò:èAò¬á³Ð5à³”H¯êyðnfÖ<ÐØÕCY™I,²³¾˜{,0åö€rÇ‚?Ý÷ Ö–ßt¾G1´±&o`‹Î’/›¾´9Ð;Ȋ㌠h_”­ïŸüÙàëg4G‹«Úbô¸ä|³%Ø?gÅ07µsæ.klœ\êëCqì®ÑWôX©" [«ûjËã3奥½xíÄá _œÌåK¯Ôü¼¢+'u[¥_êkɉTð! §LµhJ‚W-ÓÁ˜ß ZFvY#z^\£`&‹å$lùëeY‡Ã ý©H¢;@¿@ý9Ò!#M|FŠ´êÆSUñG ߢÇ;\ÓÔ}·(z•ƒ‡×(Ÿ6Ô°Hfõ½†hœŸõ"‡Ì\Õ—¾ô|_ÌêäìdB¹ÜÇ7zˆiÇ.PAÅfEw×`*ü\émå;PFÈ €4•œç$Üâëh\KÕ%Ìd¨3y²-ÛSå;^¸ºõáõ8 }ì­<šIw‹â–ÃÚ¸i;ž°&S³~Ç+ §žcªŽöåðž×2Ì¡h>tÈ¡¾8ëtø‹b-dÒåà%À±?Ò»èÑâtŒ—ß0. ÿû|[jzáÌâïÈéôwä6x«†Z¹õˆ0˜o|óxºyù“¯é L|' äå°R´#w` Ö†M'a— À›Ömø ›©ÀˆH²éD*Ø‚H`H*ðœI澯d3’€}FÌ]Ÿgð›«D8Ixú(‹=ܯeëÛ¥@é”ë6 µYWø:ÞÕ—G:–gAaò«ÏÂg.XyCMH|Æ(öaÇ68ÿé"¹š jÌ-''N–Xf5°Ì\“êÉô,Rûušê#‡ ÛĉÎg¾â[®xa–dPL.U]o&gè,ž/C4Éá_ÚÒ—<?%«-¬H-²ÕA ¢ï«V¿¼ú‡šé 9xY›®rëT;`+pòÖòAq’bshõ±è]Y˜1X?˜ÉG´F™<ýw<)éi#®19ɨ‡˜s–i0Šáï˜>Aû©öÈÚÚ¯|ç‘7űÃwS&´âOûÉ ¢ÛËË€dðò ôä…B•Ù]¢…tBÙüÐÚØšA~OL²@ZlÆbåñE žv@ñ—Ë÷±;5ðtù¾YŠ øaGª¢¿]b¢O-‹& Ù¥x+ûßÝÊÄRª9UøÔÂý ÔL9ÿjžáÑœ¥•¯Ïµ ýzZ^Ü…¼bzP –36xÿ¬s[(x–,d_,à³Fý¡vI1Ð{w‰?œ}zðÖ³Kž›%±0ì Ø#u`õ].ëŽWØöâààþ‚ïQ6 endstream endobj 310 0 obj << /Length 1691 /Filter /FlateDecode >> stream xÚ­XKsÛ6¾ûWèHuBš Á—gzh:M'=fœC§é¦ S‘Tù°ãß}Q"eÊv§uÆáXì ßîV«þ©U®²8 ¯Êê&¤Ùv·bâ˯7Jø|`ô'œïon?%ÉJ…Aju¿Šºß¬þð¾Ö®ïÖ~ÇÞÏM½Ž2ïqåžm;C?VIžzÑúÏûßn~¹?)J¢è!çÛ&¥¹T¬Ù¤§½+ц=¨Ïr¯·‡CÇä3Ú× 2¿7=S*äoe{°›iû÷`Æmæa탼fþ8 r¦¶ÖöÁÚO²Â»ß[žëlÙÔ¦k´c¨ð–a[^Ø9ÓÚW^7Ú#`»ƒø*TÂn]ÄUyN¾¼ˆæxdC;×ËÔÆµ¶ìa X©ãÌû<îY+oï:”¦C;ì:/ÏõÂ#òyMþúŒp(þlV+³£X !’¡×7<5‹$ŒÃ Œg®*öucÿZ'©g* KD+Hë\]Z&ÙùXO¶ôdX#C`‰ÎÆ|¾ xŸ{ž„SnD”ø ;Îþ’ òÝÂу19˜3ó ÆèU@n) ¸Õ+?RA¨Å7 ¬ŠÓ)ŠE{b(­˜möX€sá:¶Í®5h×9 Á ÓÇ$xz„L K3Œ3]ñq••툂Hgä$Ž ª¦þ²™È­¥ä—MDÏqÏñÓ,Ȳd~ÚÊ(Õbqšxö»©Ž˳ctÏʧ&_ÓÎØeZ¤è™ß„ž5åa × /‡A”’£¨O¬©eÏK3W)ïD€kì“ I¬HL+ûÃóB:#HB3b¼‰€—ª½ƒÀN0_)'°@å$ƒc˜%E í™òŒÂb@ …R™ ØÕdìuà~Þ2ã$9ôEhÄ`%j¨%›zI0©NC½é>,ˆzr‡ƒä·½Ìîms8ž\½»[Êm3lqÄÿŽ¢“(ñöæÑÞ1‰¶ÕÝœ˜ŸLÝ ó‘Œ%f¹ÊæÀý¹à(ÃPé(O2¥—ÊÙ-óeÀ¶”Ó~¦ƒeO£ýiÇ^Û`r#¨‹swAúGÆT³½`ÃZ¤¼#"‡§Æ‡ƒ’„«*»qêÞó(ÜŽrŒì4ü¡¨!)¡(°¼ƒ ¬ð´£™ñw”qR‚Ý3õ¦Ç&Åä@iÜŽDJFH¡\ˆ hL#)êÀRS»‚Ê7Šx :Ì [ŠR #àùÇÔv²‘Çká†C±#ÝŠqM›‚H‚sX8ìsò‘Á/&\[Îp;@ÛIôí349f=µ½¥V¦A¢Ó± øþ£mšÎ.a+I•ŸÚJsì©x-õ#èmEt«´äùR»sµ©à÷j ¶ûÇiBišf‹ræhz)á[˜„ŠII¾" C˜UKâÞ•ƒ$œÀ-d%@%Ô âD-t ^–’ÝS£Eª×°IîÑÉé~;*kºû-«*4|RÒÅ &7аkTA5!¨×KÇ«áJ§úÍû…?2ÎŽHJ³†NåÆ.zâ`°° v!GøÀ³˜om7ÈKà~r”û0mdÙ~ï[ËÜ"ËÕWšž³‚”PpHÚLⱬz¨{#=OŽdì››¦¶‹ÉåAþvb¤üiöÕ{ûKç,žßÕÔÉ=ä÷¯»ujG˜7”:×{QúnÜy‰»ä ÆSî-È ‘åA7pøÝŒ‹QN¨z¬x@öWnÆ)Ðq~.w]ß:¸š-8 ‹ -âyµÃ÷\Õ~êF}ð*ÁdI!ï:ûªf|»i¬fçø¯Ë­”øFîFV^ |“Fªl*Ïùá nW*uÄ äM<ööû{Ëtÿ oÇÿˆBfžW]4aZ—u‘!ô®äBí…‰¯ yYܱaD¡JŠ0-ÎEþ$ݽÂÈ…¯\£¿ÕqÿÞ ¶åmåöJá¹[Ss¦Py¸ ýµs¸&i9” ÿ¤çPN½»[jUœož8°ü@Å'‰ŽB¨íˆ|(î„zdÀ¶ÄkÔ%ŸùÅ`±¹áMìZu óèí·sD*zñxFÅÜàPñéÍ †gáYܙ햞pÇ‹â *¾¼ šþâ¶Á¦^Ff¬|™ÅR€µAÁ[¼.žÊ¡¿(á+MÇÇ<ì\wÄ>Ìuúúkíf(©æÒ ª­xšÞÍHXSâéìåê a»ÿP÷n„$® endstream endobj 314 0 obj << /Length 2265 /Filter /FlateDecode >> stream xÚ¥kä8ñûþŠùvi´‰G'‹pÜ‚AèıÂvw¦ãÞ8ÙÞ¹_O½œ~löf3Ò¤R)—Ëõ.zHàW=TÉÃ&Mã*+ê㛄°Ãá¿~÷F Ý×W”¿{zóøÇ<PI\%•zxÚ_³zÚ=ü3ú{ߎ~µNÓ4ú½ëWz}Zé2²ƒoáuª¼,¢tõ¯§?½ùöiÞ(×ú•!å—"×")UÆåCQf±J3–êG7­`i5æ“}Ç þ±qÓ€ÂóµJc•ßÑŸM? ýÞŒ;z~ùpx¯zäÇÎ<ßðQ̨výÞ G³m»v|Ž7Íò¸T›Û:ÞÐOi×J…Íøy¼ÛÓÛú}º ½Ž•*àgc×I~/ïñž2¸·êz“ÅJ¦UœkæúÃÍWFÏhOÔ¾¸¾{fèŒhÓãß‘1£ãçO‰Êúà‹À&à©¢ÝJES- áQ[Âzàç΃v‚/"‰á%|{  V‘o§ Ði°ÞËánü#ÝÀ¡JÐëÛ~´Ã’RPc’23^€_gIƒÝ(þß‹ÛÅI¸_al°_-ìšUq–Ï»~ÃÔ§ÁOc¼ZgY}oQwˆn%Ð ê%Í"ûÙÀñí»%)ÖZĽ²èRTüÇôþÃóË!ñ5÷ýƒÝ·l«6Ýô-Äo¿á‡²k]0øÇÙ­¿ÿùkD!‚׊—¼VU,ÐSð87§‰¬XD{Pè’–Ê4Îô¬ý‰rÙ²k $dm¿kk3ZÏûŒ‘]fg¥²2qk+~ÏÁRDÛÕÓ%#íÇÉtÂË1J|ÖæA¯øùÜ´5†^ÃΩTÈoMÓ‚›èŠÆieÁç•,Dàø9Ë‚/†µF8Õ E Ø¶½áèD$F'>9!Œ£‹lRL<*²lazÙ¯ž?£wëŒÍ…ÈýÔa$#8ØÝ‰¢&»¥4ûS’'ÄŽÂBÂa„5 ÇHÕÆKÔxw´g¶à.DS=<ŸÆ¶VŠ’Š€ÈœN(IdÍ ì( ›‰ÍÀ_†öÐPŒIP•A¥Ên]òo g*êÍqN~ð:IñÐX™ŽÆÁ‚o ñŒÜµGÛcEí0ÇÑ':5<=ò›7ðí8‘m<ê·¨P¿ÞÞí¦aqÝM˜Œ%¹©¯uLG…¬ f×bÊA˜”ž%YäÁ°„‡}Š< û ìƒà¹í:¦ß²Bùe>#±Zq~Ñ!‘NñkÛÁ¸vTy>aÃÁ½†’Ø_¨váŸ3SÂñó*jW¤7CÈH!GÏáãdÅ ¥éSGVÏÃÆ;*D¦ÆbYfQŒYKJZYú¥´Ì…y‘Ò ä—œ/â‰z'¹Ê¿_ ŠÙ7ƒÁÐ=ÃQ¼q¢x)jl¤n\w©d`ð©L²½äùn»ç@š $dz,þ"X{©ù:c"ùjÑùi½Áæ)Ó –—Ê‘ÄI’¥U¢ó¤zuã3¢U”-³rZçcØÎSÌ¡f·å/£P@†„¢cyáàÈn Œ8x*À4芈ë]¿n¹‹¢ÌpN¼V|—:jY¼g‚»œ€Ÿ(@~½ ±™{‡®žkqŒT„æ´!9s’êÂéÐß%?ÓgvVrãž±ëüsÏ ×»I–¹aÛŽï~Ùß~¡C©§­œÑ«¾“ŽÚ cs4Þßt HP·CÝÙGßî k2téèuïõÅ9×W,Ð9'ÿÊyàØ‚¢_vI¥±.6KŽ.rfqVåàµ9µë¯íkþl(ü±ÞYQ’©Ìb%A w#sº¥ÏD–-1¡2OqO%söóH`ÈôÏòÑô¸ÇÂI/ ì?y+•ÚøÐ¸Šw÷–Ù·sü}¡å†›&÷-S,vÜ Ú¸ôÒt±éx/IpA½Eoôæ®å}ý+ãÎö\Q “ÞÄIYÜšƒ¦£R_MGðr7Æð£k½ œ¬s§n÷LjJÝpA9‰*é …¾ Ÿ¤ˆ‹tn_»tØ*.«Û¡9S °<À±Vêÿa€ó<ÂäU"=9cƒ9²^¡¯…‰ý.ޏcHKÌoþÔ.ª€¨X—å¬ËJtYRWµc0ô8ð•ÚA#¤Ü^Á< w‚8‡\>6²®±^ 3Ÿ+KQ$6Þ½Bý.å^ŒÇª\V6øT–~9/rþ{²‘3+›a³½¾ŠÁ¸åë™ËÉ‘’ÎÇ[”7áTq¾™eªW96˜¡é_`E çM®mˆ[p B©NâÇØ@!‚¦‡ª”Ê„Ú5D\ …!U7¥á‰£¡íK¡–±ªf‘Û–Ä„~AÁºëhï´-ç;„ƒ&¾r@ÏÃ߸Aüv"$ô‰Þ¨†cK¬²èGìÉ ð™£yP7ЋñB}ÜTú¥Saé§ùôÚëön.ôÈ“•B^†þ³wE© Qìåa‘¯„Ö‘Á–T‚K¹+næ/|N†Zä̶Mƒç_ª€;3Ê‚-MhÄa¼£—êІLJ‚4x²Øö’!µ «yÐMµ¾ ºt—’ IR6 ±I4ΛfÇôûZÝ_BiÅÍ-sÇ£¥›NÊ4Z]Ip4¢`|9´ò‰O &êÎ/‹ž. ca ikM ™ÝSèÊÐ !Êñ‚ßYu_ŽQ¡ÖÔÍ>ˆßèÀH}°=Lo> stream xÚµYK“Û6¾ûW¨r µer|å–ì&Y§*{H“C²UÁP„ EÊ 9ãñ¯ßn4À‡Ìñp)ˆG³»ÑÏÛÅðc»2ÞåI•¢ØU—7±]5§ ~ùñ st!†3ÊïîßÜý¦;Ge\²ÝýqÎêþ°û=xßè¾Û‡I’ÿl›=σÇ=/e: Ó0ai‘bÿßûŸÞ|? J9ߨR~¦RÁw,8K…S)+DÄA*%û0Íxð¾ÓÍ ßýÀb1!â¬þ–|°'°tK¾iåb$ûOÛ„ïš}‚^YõúqŸð@ÕÏôêÒJ!ã"*Y± y• #÷g刳91O¢iT²¡ÁuZÓ[㶈Q¡wйwÜFÓvo<’ÀÁìöÑ´ŽYê;V—‹l¨$8(Ð>dIÄRwÐZ7*Ú‡ãÁý¾H‚¡(ƒ>Ëéî-°Š“ GYÏNq¢²b̉Ù@Ù}Ò¬iM#õñjT‡gµLD€ZÓ«_àÖ¨'{´ØjîôYðîHt’ã›ÅL!ÚrNé¥noô†¬¯gâ8\”ѽ[áÂY¢‹Àoiq¦J\$æß³c¤Ôaq 盾¥l…êU…†JD` ‹äl ÷²w‹àÁŽhÈb0èΪ®i°YG«0ªEkhûÐ~íÃÐpy¶ÈêÍ ƒ„å³H°’”'Ë&óc‹_®$¿€âT,Ü™ò4øŠÓ³Ö(ü+š|¤YÏCLébÉ Ñ¬f¶ˆ ([¯f6xžx²'M¶D9/¬ñSŸ,ÍóÒGŒAdbÍÿwDG"OÐä«gLY”Ç7§¤äI :®©ƒ>å±-nv­úëÐ;Jˆ ì´œ¹ÌrŽ‚Ón½g5?MuG»òÁzµõüàd4 ÷`d)R×À¡‘ó 6 [±„ôa¬\¸N¶ s4– y}QsZ¡¨‰VãnÁÅëAÀ²± `©Ä3 ,ž@Uèi`Ô‡AEIî*+»‚ÙBP=Ö[˜”õÔDë«Ê>dA›W8²•v÷P½d=xþÖáÜ': P{4:Ï‚®½ÙƒBñ¨Û¡£¶ òˆÅéÒà꣼\}öÛ®EÅêL““ó]ãÑ­¦Õg 8Ëf^»8ÚžÅå²2ÊÅ´ú@Kgi{çXÚˆTÌKØX ÿˆ™0‹(iN`mß>+kŬ¬ æxˆ˜úÂ-” .ëhØ U­ä8Ô葼X„X¹,²-U(IùMAPÿÓ^N(mü§ñ'eZx2§{{Y×d4X%3<ê"„³2Š_†ˆi›É\a-ÛÚ0äT?`¢¬yÀÏ4Ŧ &CÜ#©½À¢=¨íûñË0^¼Í6ÅÑœm@ÆT¡aJ V¡Dtò¤h "½fÓž0 Æð,óÆ0ê0TÊÅ¡8 ¢Öu=%©OÒÌÁœÄ£lÚ®^ù"Èy(ž¦G©ëÁŒšÆ`¹™ g‘=†óäBÔÀ¹Ð»)_j—O¿Ù6!JŽ¾Ë­ïp¢'Úþµ©g—,âYúºcDÇÅä˜þLBÚÆâ×G£hižŠ) w´Ò½hæPœäŠƒÂ´-l*Z ljÄ:”‰®ù2ž;K*ï£k… „ á—,x×Ó’SF>ßp<ú 'úHOR Ù cµc€½ Ÿ¶UàÀ©ìeÚ ÁÁ˜Ãë<ç ?GÁ#ÓhíÆ´àáï;/bIðÞ«™äið¯™!W=»;ŸîL!/ç÷—|,‰¸®1íAÂÅ6²s¶2k$1JhDøG’®qàð {·ˆÖN,!+ÈÑaB´¾YÈ›(Kò±‡«£v^ àп4·2%tY )Á+ÝRŸi±&lPÉ^y²†žýú“ ` ¯×ÝЙ»жº{Q­2ÊbB#9ª¾5Ïx™Ãºœ”T—ËbÊm§È†ÜfPùgú|©ê–_&÷Ž {P4Ê›»høëkè™»½ötGLrFE4¾ˆÂh^å3,cŠÆ“/¨Gg®Z{2ë@˜PH!TN2•a"Dµe›ŒQ‡º©êá :O6Ï»t´˜Þ‚°på‡N´8ûQ^t­¥…ÇñØ¸Âˇ„kÛ #qM™Gø1t°žî0\‡â?ª¯·Vïzڵŀ0š©‹/ËÆßCaÖ>tµœ'3¶Bª³9/ܶQžÁÏt~¦Æ„_Z}uÅ„ G´î0.rwØÒ8ÈŽOE§è-þ¹þ5&²lLâN=ª¦W#|XDÜ’R16©¯§.*òý·jOþä &Ô¶.{Ù òœŸ/á­aê˜Ú³€,ê?´y<WÁ ’¾«ú­¿È£o&äzVúfë-ùª×ŽQÎGÐd0ö犴©†ËQÕTjŽ+@=-!¸¸­%°c¼ˆáêu |xääíSëÓÙÚm³0õº0ÿ©âä ïcQº§ª¡T>z]¦ËÑÖTÄJhÚµ2ã—˜ÉØ'ã.'ôdóY/m½Aî·TÌOò`Ú¯»1Ár›`Eðà>9n–ú$'çA¬ýL6"Uÿaóøž•õ0Uæ™ãŸPA¹)ÊHÜ¿O·JÓ•Û¦7B7³ÝWrØ!†]{Ñ•¬gZmñ×ë¾këþTwɺޕ¦­–¾ ñS;ã^”|€ÖÏŠ£zúTQ †›“ûÚéºmþùºïõãùøßÆÿ¹†° endstream endobj 323 0 obj << /Length 3561 /Filter /FlateDecode >> stream xÚkoä¶ñûý ‹¶8+¢D½äÃ]p¹\Ó^žAÚ)-i½Âi¥%Ùçþú΋z¬µ±Q°È!9΋3ÃUWü©«<¸J£ÈÏuvU_µwWÜøÇûWJæ]ÃÄëÅÌ·7¯¾ý1ޝTàçA®®nöKT7åÕ¿¼Ïm=ô»ë(мºv¦Þý.̼Êö5t¯#g‰ïþ}ó—Wïn¦â0|!E8ó)IÉ’$¥2?»J2í«H3UïqÃsÒ“ÌOÃÐòkÐûz0j>Dѵý`è ƒ Ymv-X®U䫘QMqx~Ãþ´»FÎT%ïÔíùÛwc[âr`êÇ„;óã<äe7‡ æ%±‡d•ÆâêD{¥ à ”ndNÝî”W쮕׌Ð*«žáfèŽuÁí£é{ßw–Ñ™¦aQß·Õ^ÕTÇ 1¶È.’5ÎoKžGÐñXÙnœ,µtž@¸¤ø$k¿»NÓØ{ÓôÝîZk ¤ÍX"s´ŽœQÁi•}¸p£ÌÍ~™€ 7©v„7º_„¸Mù.BˆSrÎ¤ÕÆxÅե̥ÍW˜·iÎ_M®qߌuy‘î8õÃ4:£•ð"ö›³Æ7Ý7ùB3[è˜h|ìçQ¾Vù_Nôo-ø¨þÀœLl³dˆó Ð,k`NTYîímw䈻&`ì}þ$xàìtOVödìУÛT×B<ÙôÓú R>%®±5ÄP×þÄ]‹˜3§¸i$RŽRÍzŸNž˜Â#èò%Áw ŠØ{^÷P»± ¢ÈýÙÚoí¦±+_da‡€½È%´àÓfg>ö±ê3¬'KÇûZ¡&Ç&ýºË Š-7ä¸A®ð§§˜k(¢»›ŽÜ4r&‘ŸÅùÊœK¸í±n1`R.r‚‡HÍ(]Šœ–ãc;W:Gy@i’¥Þ£µU[<òŠ ¿çkX4c)“vYYÛ%ÿ¼¥'φY·UsWǽ5mq1Üž½ª„Û^ \N½}6u{ñj>C,öª¢Ì“t °½ê$ËVÄq&€(ÚÆ†á²¨Œpc{±Pp¹XUƬ‰É¬`K½’U†b¢ Ÿd©‘ݪ¯¦ð®§Ñ~ABÊ’æã¸Àf!”’áâÁ2Î 6Xš)𫓬Ømð3¹iÖÉvxõ0^RnÞôòF Û`«c7G öă£"« ÜÿÇáëÂvôoo¬ÙtY¼ e0Nœ%똤Œ™~z?‘Ó5^ÝïˆT N¯®F^Ny06Ø“¥âÉDåö ëZÈ­Ž›T`kßAÐA¢¥<Á(ò§ðñµ«Âpò·Éú0gÅ–?ý1_ruò⢤° ±¡³_dsÓŸOØ$üØ™pxÙ3"ÊýXÇç·W¤þy¥IHe”{c¤£‚”‡ÚÅ…Øu^ ¦7w%Kèsì¿cbݘÛï k7²”m Û‰²y—\JØâÒÀëË7ׂTdg :"Ù=8a¬$ñU‚&Gháú4ƒ$ùßþ·`t"ÁnÀÛ€O"ÔÚWè7BïUÅî°JE¥1ÄJýÐ ^`Øý|É{¡)B|Jõ¡A¾BÎVÌ84Eö˜æVÁ=N¥jVp^ æp9¥py9Õ!cµÕÖ?0à‹!¤—©o9.â)Fˆ£RË×-Ò?öC…¹FÌ1о±»fDˆðceú®ó¹<‡Ð=;<å™s:K9ÀŸÐŠ@Î'D ±ï{-g§< $e&2y‘ÙÀ ¨Ù:ÎGÒ€JvÄš„h:)R?åû ¡OÙ WhÑDü{䞦¸±lòå…]h˜He'ˆêaE.zÆ|ÚªgšÉ—@¦é~Ujl©‰Z„þØ ¸}äaw—^FÄÞŒ×ç¤'®Ç.Q÷·¨H@P0ó|–¤ùxÅ`˜ƒ„ùÍa1ßiE!Fãs@ôV†Ëjo°äLz¿Y€+OÅùKâË)‚·#Õ†u,2uÏ#úBÆçN7uÕþþþí‹êbˆp] À#iïȉ …%^¾É!Õq¶UYÏ£…UådédÐGoŒlf§‹-ºÂvXNEø rÑê<šwØ®¾DÊçXðùÓËXŸC`ÏG¢{䎰æQ•{AKÈu­Þ@PnMSéÿ`ZSrGy)²ÿ¬LÜ‘9R);³VÌ è7μŸŒ²Ã4LEª^Nù„y p*Ïî…óÀÍ7{[†Û¦ìNÓÊ ÑZÓãmœM®ŠEÖË,‡ÅŸIàaÉ÷HGìU(­™¦#ƒP1¤Òˆ‚C‚³t™‡á¤)FŤ÷–rô¯5Féô `t¦Ù? Ï7îe2éA,b7“3Kå2FR–^øÙGn%ÒŶL‡ììç­#rý?s±U†qÛw ¡Û¾s>Å”e=ýŒLÉFÅA°¹“id¿0|t m%¸Û)3Þ÷<²NÍ€âÈß36£Â‚s£Ì੪QÄ­£p•R‡‹L! Éô*˜K»ùÊóÅp{SÈôÁ=µÓ/gpñ¯X>µÙ¨A, ’˜ÎèµIiˆF'“ÂŽAW± ‹ 0håbr?Ôå|µÀ¿mQËÄáMÕÞ ‡ž;Ö$¡óD8 ã„ ƒ#˜^rä‡9, éd *ë’1Rž Bá–þÉ3[âíGÛ°ƒ¿}'že‡_¢ð¿£ßW¹Ÿ‹FÞÅP¯vzLä±/ñyO ¶œSÐ[ZàìÉÊrâ|/pû=Oœˆ;ÙêÝ#÷ÈûÓãaxÉë!:w?gÁw-üç_âÄÁÌž¼X,ÈæòYÿ ÃawP.&ð %¬{-i å8†žÒ¤'6Ê æ ,nêö ß;¸?Gû¹0bCV¬".ÊK¨þuÏU¼+ʯ­ò9çÝwœbÒïUÒU… çM†J·‰ªC°a¨ašøj§‰ç0{Á·õ®›á>pê…©Æqè~„–3Ê4X˜˜ü²ïU½Y endstream endobj 326 0 obj << /Length 2442 /Filter /FlateDecode >> stream xڥˎã¸ñ>_áÛȃ1‡oQì!Yl‚Ídz‹l€¨m¹-¬-9zLOùøT±H½Fîñ"èƒÉR±Xï[l8ü‰MÆ7©R,Ón³¿¼áÚUe×nwJ©ä‡ºÚÊ4ù¼•.)š¶„íN ãlb·ÿzøë›†‹Œ”wr„˜ßfÉ:Í„ÒÄRŽ·R6CbJ#Qbú#pflÒö qû‚û4¹”ç"žÝ¦L‡ó–é8['g“cQtïaie’W‚Š_¹ÐUq £«¼ &Ó*^Øvy×w¿Å¢,MÝ’Çüu‘Cj4 “)èZ(& Qy8dY^i0-Ò<÷E°ø±nèCw*Ú€Ûq(AVUœcS_ÞEºe…ÜtESå¸K~^¿æÝê…Öùãvgê¾£½¤ŸëõB‚T1RÆ3=ÊA*³S•IÅܨeâ{E³ ›E¬kS?59È¡-ˆÚ"‡Új’A+!$2Q"Ü{Å…ƒm8êøÃ<ÞEzÚk>°#ìóŠì–J¦Ó4˜M“¤"¤š¤~ìòÒû›N-ªÒ¡*qÝ·eõDH€+’²;m-€úï5ý k˜U¬®hO¦pÞ¹ú.úÚ2ÃÓ! ÀwÁo× ¤™²jqŵñö…mw.ÉO ²·ïóÖ !j„ˆÌ˜¤-/¾‚2(Ö6;iR–fzǧ̑˜È’¦8{‹·§òŠ6’<É/µ×/|%Ú°Ñá?7vɃ×x;7ZƒØ KAh«:Rûœ]TÓëpiÑ«IÍBf̈l®fôò¢ Í,%tmĺ>¬d’ÿîpj×&æ 9X!¸s#Ëðõk¡¸ÚÑÖ¿'ÌýÕæD³¢çç¶&И  û@à®,úìÙ$1píó.üN*&©Øˆ†Yðy§2Š|&ƒ‰²IÚ¦m}\|÷…/hʼ ǯMé + Ÿ™É0ª¸2O×õ)­ƒ’`F;Þj¼Bg‘ƒ,6tá:i8a¦ºE2¦LÕ‚ú¯ÜðGÐrCÍÍB”ñHU¯Æ#$* q»(yëÉ‘MsÈëì‚ÒR9›·À¨€ 1©K¶ÔüÃú©èhA„…· üN- [oé)ÞØÄÁ™ÀDâ2tI‚ÅÊ„ë›v͸›D$o6­Buf^ä« Y&–©â%ÞéK¡©„Ü©MèÅ}úñ˾¸v³öE¥ÚÇ~¯;壸Ò>¨š@º8\Äg̾:4Å!œôj‡_d3€ÐåÚ~¨§ÐB¶C÷9oG©ÍUÉGPlý›€¼ mÀÐ\N”öCM is(«áØÇ— ƒNô~v‡zâbwÁ‡žrõÀH‹)ùÙ— —U[>UHScòà òݪó8ææMñ/u½¦INùçâ;Z Îi1‰¿ß-¾G7ƒOSá@ó9¯º@³¬ö'ª sb¶ï]¨Ä)„¾™Ñ 8Ú—ÔeBeN¯¦pwëÉOœm` Lì0…’Ò>ýLÐùœ¡G\g¨çóH¨)Þå†þwÏØDÇ‘h¸;”(ܭǘvÓ² üÝ*½_…˜‚ö,³fnÛŸüä³4vŸ>¾_@ò½÷,•-AjàÒîËà[ða:ªÂ÷2-šKcNÙo»Fx§mi‡WFëw$ÂnÍRk.pùÐ~mú…å9‡&Ñ*ž¹×ÀrHôÿù?‡dH» endstream endobj 329 0 obj << /Length 3319 /Filter /FlateDecode >> stream xÚZ[oÛÈ~ϯð[éÀ¢9’ÃìS»èÝ¢@ѦXÝåJ”ÄF"’Šc ?¾ç6¼‰ÌÚ æÌ™û™ï\Gê.‚?u—Ew©1afÝÝöü&"js¸ãÂßÿôFI¿ tÜŒzþáý›ÇâøNEaeêîý~<ÕûÝÝ¿ƒVe×ÞoŒ1Á÷uu¯Óàó½vAÑ´%T7FÅ. Òûÿ¼ÿñÍß÷ ÅZ¿pGØó×·”8*cyKÿºw&¨¯¼©m^qáÚX°Á%oŠ ÷Ø‹¶½ïë†[ͽ‚Á—²:¼Ã]ÃbÉx1íBw·QI¥F–Ã¥bÇüsñŽ‹?Gq¤5|>øû8´<<ž‹®h¨¬çÝ(ªx6íS^u2í©Èׂ:Û8t*•Ї¼å^QE‘ŠLœ¨$™Ì,ýdYÃ1œ1rÎ S7© Z`tÔŸŽe\´Jí%ßúâµiêkµ–1¡¾ÜoyW7-ÓÊÖ·uŒü\~Šá5·ÀupáÒŸËú*Š/ùùr’¦m}=í¸xÌñ?#â¤nx·ÀÈÿ.]£ #ý¨Ãè²àN–®fÎ`ne~üïB‹Kg:´.þ-‹ó¤eËë”,ÒEèaþAc.Ë+G¡rÚOg#²áziG¨Ñµ—MdÃHÛ©¤üõzêÊË©ÜæëÁYA‚Åœ?"DX<Ò^} ¢<Ъ‚†[àdÛb‡xâzwÌeæ]ù¹l¿µÎ)oB©v\Æ1H,¨V;  3N‚üte(êTƒêÙwXRAW3¥Á"Ïázu¦ñˆ^ü)Sl»Ä&î’MÐb›VæY¼•ÙЦ½h=.â Lu:‚N¶E:æM¾0éœ7[^—T ÒD^eUVïg€Åõ¹¬ò 3HGQ¨£dÊ¡Žì…¶4Ú€2͹zsÈ¥â ÜW‹·‚êÁêà=2‚à ÝÏùGR-wæAqЖ¬ë†|¦‰ÈªÒ±°* }ºÖ])vŒÇ>•Ý‘ÛZ¯]@ÍR >û•*™ýX,èJt8˜eË·”Fa÷’ø#KÎ#Kι>qý/KwfK§f¢9µÖ ë“aâИo_ ˜‹¾:©ÎB“ê×á æš›6¤õ–ÈrŒÎŸ§ÍÏR„å"M‡í;Â/u‚;•©0ËÌw"‘&ŽD"Í)@K¤‰]Pî™þŒDrˆ BvƒµÓ3S86[I`D¿‚ÿ¬a–EÙÇÚ†‹lþX0̓ŠR$QtáÒ %=³mrÀÞÔÇCÚ"žíº)Hc·Œg´©=¦ß ´×ƒ$™ú¢aá"£™ ÈÛÔνMÍDÑcÔ1Hïüï|aÛ…­-’IgÂã3WÈ*ãàüô„äœ<–i¢¹g¾cü1ßòC.ȧKâàò¨›ƒ!ö‚}4¼÷5Ån³Pe‰gÍùQüîöq—?/*Š,´±ûDŒ}*ñÓµaT Ê]Íí‹;p)8C=ŒÏ“Kö»áÏÊ–bðˆM2ÛÛSÒ²¹]y.*Ôû-7…€/lõ@øDm ZD¶ #Ö6 ­RSXo¯rO;T—™ þQžËSÞ€üµˆ°-Ù…ÆõÚ|\>ù¶/c:j•bÏ& ¤hšœ?bí Tï}ç-¹DW¶©iÛ[²B¤°„P–Œ'78Z »àÞ•5ièÌ,Þñ\<æÜŸsŒv,<s)=#àI 9ò½Q%a Uï4V¾Ž§pÙHs±ðže!½:™;›Úø¬%I5ö9²|Î=QÄó“Lßóf}ûe-Üëh«Öé *Š7 ‹B-DÙ¥½«Ú®@}—‚×±¬ÒAÌpÑ“hõ›I°èÆæÛeZt™[YÌêÐ%¯3ß8×ÄÒòÉ)†tVƒÅ­J9<·í{ ‘%¡‹Ý1cãÇN²KùŠ\àƒ5& :ö³ZºåÕ¡ ÈDxôºÏF+ºOÇQh¢ôFù½峦c1¾‹#l¬¨/ê@DgÍýÖ‚Jݰ‘•…µ›h:±cVÇaŽØ„£7ºÎ5ˆF†"npЧ†Ò«± §LÅúF_ ŸVQI|Jg!ñ:$‰4Ɇ…£ù¼N!ëpc£—®SƒìÃÀ+%À–¢E (ÃC“£Ñq × [mˆv[&å ¹Žd Â9,G’˜r}Ô_4%+T í1ÜACƒé!3Q[J_P(«†¡baÀuOÒxêô÷Ñ£Nc>ÆÍcïÅÕõüË}¬(ñ°dFLhl¯]Ø+é%Š}Š°ã£ å—¼áê¢epDI˜ô\ÿúëjÕÅ )¥˜pòrÏßžQXa·H”“¬a ">Ûƒl{6« ScÖ*±¿¸ÞÔþ’‚t²;jÍþÆ¡íùÃâºh`F^ÖwKæ—ÛP¡á!YºM|Ën'Ï ¾çº‘Žœµ—sÕKæô9AGóræ Úe"î&±5f€¦’1HTgI¼odoè›á¶º ·Sɧ68•ç’_Oè³zÕg¦±>³’¹LƒÝuÛÉXbtÉ2®‹éjñ¥%®n·uƒ?€À<ˆ |ÒRYLÌÝ I¶¬@NåGy92Z­ƒA÷Á_»Š¢—½‘{7|M傳™/rÿƒ`¶ø`ìÊÛÝ,Ís"›ÏT !4žä†ÁZlÜÚF”1¡ëïùãwÁJëCâõ’¦GÂâÕøõ¥ÿ] ±%gtöXt’G}^ž8ìŸ6njÔZ€–„Fg¯ÈJH=Kn*ùEá~A|*ÚŽ›'ï‡ÖùÙÌè•MB+nÒh>P_Ÿ®ôÖˆDÉÍ×2;GõÐWB] z™uS³;–ÍŽÞ5ä2“µçîcÏýÕ|ÀÔÆ¨¢Ù/iÐ5å4úÚÜ& ãןÝË‘tôG`+ŸD½†§VÏ~¬ûQåï|нZ)ØM|H }KaP!üf+Ï*ÌÒÙo úgÛiâßwÆ¿cÁlÎ5?½ó?¦û?ºùÐ endstream endobj 333 0 obj << /Length 2048 /Filter /FlateDecode >> stream xÚµYY“Û6~÷¯Ð[¨ÍˆÆÁÓÉK²ñn9ɤR©M¦’0#–)Ráቫòã·/J¢ ÍŒ³•Ò6}¡û¤ ~zQªEnm\&Åb³¥h¶{Xp燿ÒB·ÂÕå··¯^ÿ+MZÅ¥*õâöþœÕívñŸè§¦úåÊZý³m–&>,Mù®¯`¸²:-²¨Xþvûý«··ÇRc^(R~*Rv.’ÖE\,²"‰µMXª_Úq KÓhç>ø7ÜM¹ù7æÎÞ ¶Yiëôbå£k†7D¤q¡s¡ÒLö¿¯@sÐQ¸›4SH}i¯UžÄ­ÎãTÉ&?WÃn¹Ê 9lt´­ö¾A‹Õ¾ïùËÚõž?ްÑÍrU”&r ÷ãÕEþÃrmã‰r`ÊJ>ï½kªæá~¬yþW•*?Ä73CˆŠÿuf¶¶±²@H‡êöC&¶¹†ŽY ¤É´è $‹aûLGo9T L[FîvØ/@χÚó4ÊŽmßîýËpè¼ü–®çe3‹€É’,“ä'“ô¤ì*Ïã¤Hæ*o\Ó´GóÎ!õŒhÏ3Gîïí=¶ û&d-ƒ9ó|(0Í]綸å*óØff.ÖK<ûÄ_Þþq@½fD²cg¡¨<“,cVïP•ƒœÉ!ª°¥Š<.ó ÏPö~m¯å"eeh]Ñ@½ÍÆ·®ýW0‘ª³¨×ÎÍzpØqç{L¦L#˜ãNãý“;ö×”¾ýƽ|%CcçÐù 6ãáÁöJdªX¥G‹ß=oqfV‰p» ª“Ž(×u8•€ µE$7œË„eÐ`eÌgx=F‡šèG̳¨g¨&C.·Çª< åüDY( É,ûLÎaÔy°gï)³ÊÔyÉÃñ#“Û‹²Š (ûã§*ͯÁtYÞ`Ø&˜¬ð  ú#êüvÜ¿a>pÐpš³ßTc†b9–lÌ‹¡„¹É”—ùnfË2â1{}2cI6 ­:Șèçâ“aª8'àÀqÓ´Íê®™¬@_-5)ƒ¡-ó¢Ö’Ëo‚Qì5Ï{ßêøûnüþ0ô¼Ó´ñ¦mN§äðÚ2ÖúËhë7Õ 2‚n+™9´²äTÄqD„Eœ>Pœ…<P¿L³¿Ã…! yGG>gìIr¶¢¨Ø÷ä¹à‡ËNåè)wdǺº­úCM±ûQÀ©-“ØÒž[½aÜé»Ó>BO€Ã½{øÀçýp§cc“Ðyú– R1¹Ž1¿â¹“wqägà´ó¿ôçà¨Èú ¬‚ò| ±´ –`œ>AG¹aƒ;f@·Sœ?“ Gë¦dÞ 7"àUµÌŒyUç ¬8j ¹,KSÄBåêD0NäU˜RœÃðù#JAE0\rK C"gŸTz˜Ë²Ôx¹ë´|e?ðzÌk ³Ð› \DÐq:/ÃÎ…:³HcÆÊ h{\Ÿ§…¡ó]õ«ÒÖwX³å!^hºvVи„Œ¼8ü²,àî‘lAÀ½CÃ|äU†Ó5Ñš’S§;^4 '$lÝvË«>,Á®§%$ÁËä$ªDœå¹QÉ'V[hé8ôÕÖ3)#x˜ýñ]̹ä(,úP1°ÂkÄc…`’îP2ƒ@(àvp…²/H=ÈŽU¯ÎtYáfãêÍX3®äk) ½÷T„üA臎Æ{’ÑP4Ü•0K>¹ÿì+T˜û¶Û#H<#ç”§AD•gVèäîýØUP³ÎzŒBpšm|íh<ØU¿| âCftøÎ†V]šã¦W€yŽ<à! Ÿv[}®> stream xÚ­YK“Û6¾ûW誥2M¼øpN¶§œCÉìakwSÁH”Ę"e><žªýñÛnR¤†ÔhRã©2Alt7¾þº‰Eb‘‹H)?Ññb}x¸Þj· Æo?¿Y]+4c»ò=|On¦®fo‹¾ÕP«Üv=Ká±µ%ø?)ðD ¶)«Ú_®´ÐÞ; ¼me× ìŸÍQ·ÅJD!hœ@CùÂR_ZX4YƒÂ@Ý®ñmOo–‘!é!ÞpcÝydzc㎴¡—]F *Æb¦)Œ¯Lçªÿ&7âb°Ø„‹ÃÐUØûøší€‚£­R2pŸÖ)k}Ô(Eum«rŒ…ŸÄ!;HH6imÛ¿Š•wÀøhó&;ælÊz¹¨4(0¼w†ÆÚÛãèÎm¾1‹ï´Ûø…Ýl2ü¶Ï$Æû´¥î\§lé¥<Àñw¬Ç#Û„÷zÊ·ÁØ ÖÅú„+•ôeÔÚ6Mz8v¬Ð”øÔ¨ê…]Œ•&=àå\HăpûQlHú¤PåšÝ'ŠË€Ðjt¯Ï–x@‡9§"BÓ¦¦Ñ´ªI°ë€ÈØ¥o§TZ‰0òRÐ0~²cÿ…b4€€¯ðk:S³Ssˆh¼+pŒŽÆhèSž§;b'¥nÔ@=ñ¹É¶Û´"X¹þ-=‹²X­Ë˜ñ`ïrœÝû²ÙØœ[G¶`ÿ@·¦L £È[—m¾¡!›×%µúȧ€½Éhì¾ÊLRÓœiPÌ—g<ðæù<€L(CJ¸XJø‚ê°i“JD‡$ÔƒØ9îIØã‹Xž€ívSƒW“³î©©>ZG»Œ£,£pN+px“2bm·^<Êi ZË^ÍóÑzi:2šrRâk%ºoêrD–Úƒ]1¬J}6XÛC:$r=Ÿk±Ù…kïµ)}$äem›æ¼¦´îhJ̬*/O‚n®"E¬ æ‰G'Oæ÷s™”9-æ^(Ÿ\íž>¤Mvpù—=rÖ¶÷d=!ÔÜHY0³óxž}^rbuŠ|Hþ6 v:½‰'2î ƒƒ³n±Ôn¸ ´O[b?Ôc w9ßPµ»l×j6©§V5b|˜4—Nà5V=—ƒ=„&óW<²Ik (ÓB&.\Ã-¨úÍN¯)æ†Qb9¤1lžÓkËK*GÊ.»”óÒ)³š‹Hú‰9ó5XB ,! ^w¶Ú8ž€!–ðL¿´Px™È™ADý.…ÃsÚÕ`"GÄ‹î>ñî´Ë5ŠÑ£.3Í.$¥o’Ñ2 \êÆ>'ênñ)Óg¬øzüÊI@Bw7 (,sªL7ìòxHˆQÒ½”Ã6¿Çüa]×UgÅî% éÇ'&¹¹\Ï)‹VW eò†âñ ›} ä8(:qÇ3Oc‚‚H†ªÂ§e!ñ I3”TA2”ÅAŠŸ@RvëC}©4TÞ¯PÁ(‡døŸ(2Ò¤Wdø$:a V±‰iÄ}\bQ\Mú¸*éA9[ò@T :òœÅ-ˆOV¨p  ñW[7ÜUðI _>gn» åªMG:ˆÏñ™>Ð83L°G˜Ñ§–YÓØÎeüI—<ú º/i¨Ðˆ}W(c˜2â.ÓÅœiï$:K`‘j8;FƒS˜VŽ\Üͱî–Þ70‚o…FÁ7¥ l³`ò‰!â…îT¡Ò.˼=ð»s êH¯wG´÷[÷¥e­˜5ƒQìr–Ø2r‡¡¬æ‡϶é#œ(‚<­_O¸Ææ†ÏG}u·-s>á9¼»?àG^8@Е§¿ŠÓðc7ôâîmѰ8gŒ›«ÍãCÈ÷¼¦¨8j$“§¼¡)X::f²4¨èTpá<ô= =XØd±©µ¦ X§Eƒ¯³b½lÑÈ è‰ñ_rÑ¢ š<±®"í‡â¬}ç@,» ‡Fíà'.H¿ÙÃ1ï÷„Œ]tßýŒ%l2ŽðƒlWÐ\Ãá´–ïê ¹.]ÅÐèïêdÇ0²¿s I|…4áŒJʈ.¶÷>í.vªtÛæ“øƒá‰çÊ[…û¬+ŽºŠ^«–îJïR}ÆÃú™ZJˆójֹϚ=É-ʳƒ×)NÖLJóµÇ\yj"¨ûõhûþ˜ÔÌA3t¥M•? N›¦K›šÒæ{ðQ›åÍÊ2åÇe‚%¦»â»˜1’ô{ÊwºÖídà“8$,”ßI^“I؇ׯԚo©²žvH¢üèt‹Wg“‡PnÄø‚f®*•~trÛº¬gåÉëåõQc‹—×ë—W€òâÊÝ‹š‹uÝKškgö*üAaú3âÆ|·ѢƷÙÓ…2d³~‰L>ÖY›`î‚ÃONwœàƒýU:_+Ü¿„†áå/+ÐÎÚ<*¨Ÿa³5zR¢«eñvoz»C_žîÅì¬ùñù}a$ùÂ`V´†ªG>ŸÞ®‡ÒõòžãƒëxnþÆr{J 2\²vYû p2LØfü«´-V쉷SKUI©vPæw){Ü/w‘;ÌÌ  >ÈÒÜcøM±Ë;­ü'jí Å)쨻‘øf=ÝUiZw×OT§s5õé6+ÜÏ;o»BÓ<¯ffµŽ߃ÿ ]fTŠÈ§ýCoŸw½6"’Ç\Üÿ 1§Ÿ›»_)šîgŒ!Vø‡æÿ¹c„“ endstream endobj 340 0 obj << /Length 1300 /Filter /FlateDecode >> stream xÚµWÝoÛ6Ï_á·ÉCÍðKÇ}tèö2†b]7Ŧma¶èJTÒö¯ß’¥LN A€øt<¼oЇ?1[òY®[j3[¯xàÖ»oºQn‚‹äw««ë×i:œ-ùRÌVÛ¡ªÕföGò[Uúf¾PJ%ß»j.óän.Mb름υÜd‰àó?W?_ý¸êOJ¥|"$”ü:¦Ìh&”&L«½…“yš8¿·5‘Û¶Z{€ÔÄ•Š~}'z(OTm?¶eÙ›òh+¼ÊÁ6ak–õ®&ÞÒ7l¾Ð*=ŸX~gK;|]ÎE²s•;GÀ7|–k´ Üq!)!¢‹ÖÖ·uEtlžt¿/ýž¨fXÑ‰ÛÆMÕî`Y8Hh° ž-¤f*SCiÁ“¿QÌš Í*3&„AöPE™‘é…`:ÕÌ7¤­¨6@ðå´Z%Yš§½Z·›Ô›3aä½ë ö]Iv¦Åª[ú@­A† ô n t ®ATNm›Ó|š@;©<|ž•€s³\%+¤ɺ[_”Áà7.™Ö*:Pô÷AäqC/‡€ 1ñ™¸%yÐîB`ñ¼Ò$•û(6AdcÈÍYžÖËãÑnÊÂ#Ú°Tlû½,Ÿ1™ç™Œæ"y=7VQ»ýTO‡¶wd¥ËÒ±9vÖS$ûchFüÀ’ôó âÚÒh×6ñ³.½¥}“7)““œº’”H¢‰rcCš`<†Uç=XÁêd=T]ºÓ§C  q ©a™ÊÆŸÐ.,‡[rù¢Ješì‹;{C$Úã=O¹ÂÿbToă]÷Eåo‚„N™ù¨,ý`·%ÔyH½¨8%DÅ£8Ô‹àÀ%icžG¿ˆÆç[æe\$ž äÿÁ—p°4N™åQ0‚¿8œ‡¹·H— êý8­Þ@'•y~N| õï¾löÄÆÚ_üƒeÌÒWíB?qبQÊm‰ßâ°ô ×ÌPaž‹Ø"ð£m¢šÐ3Ýž5ö^ÕÕŠæcíŸTû šN˜V,˜‘½Þu{kkç&uG‹uC—†ñfœ{ _ã”$37àj±Wd0Žd—†iøyÿ/|GEÖp "ξ8_#a‘§@©Ý©Æ†I¼à%°…ðòä]èó-í\C×Dìøt@¹ e€wöñDxÞv-BÛ”Ul(ÛºWÄ9—ì'š<\Õ ”7“1Ì|½Úc`ÒëÚ>1m¹µÖ_L ocaãZÏõÄÐzM"œq®ó¥P’Ëq¶ÃØ¡¸¼ AkÎéã÷ëãIdTÜx»-ª[wð_ŽEUáÕ>àq­ÿsÍÉCž\¤Y2Éçÿ2qGJh—)ˆm³d1pƒÐ¼ùàüqŽœZÃw©­\$ ú9'#Li0ÕC*ÉP¾(J *H™“’ÚÑ"Ídò+fcmïJ׆éT'oÃK¤¤h“¹]2!ã;¯O¥%%eÕØ§&­â¸ L˜§Qg ÃC~ã¢JNg¨ÈÞKôdÔç”9ï”P<7 ²vuÔ„fžs3Î$ïËÒ_S·KY.Ï… Ý„EæÜ7ñ6eDÅxÛbÑÊR¶„GæÈQ÷{[]diò÷ã1s|çnq§Ç¦8Fª¬N탭»¨~èdƒÉ÷\(K>Ÿ§úfƒ4½E`CœÜ»çø¿\. Ð endstream endobj 345 0 obj << /Length 1808 /Filter /FlateDecode >> stream xÚXY“Û6 ~ß_á·ÈW€æ³þø,f©”,WÙl±=‹,µYÏhð×ogÜñ…ÀŽ8º<»ø5ŽgÿrùûÙ/—ûb!žhr~oS2¶‰óŒe³$SŒKEf}¬û9ˆÆÁ¦¸Õ/i(˜¤AWW^5f­›¢C3Á8Ø,ä’ñøHþ®¨:'Ýõ›Æ2«˜e¡­dýV7fQ”´=!dhï·¸|M:©§r_»Ô­X7£ w9H3nÏ¡4žHBäd¾¨ÞR<'‚倓›øJù1Y¢•?‹›$”×O~ìÁÊ:Å€}Ž'.Y±C%~Úu€*ë 1¹tà’¨×8¹'΂HK³6ºW(ç^ ÖÔû MõD³½±¾ìÌ®„+=¬/:Ë]£êo®¬4õ4ÆŠœ;°øŒ§Ýr[WM½á‰hÉ(Ù£þ•8™jï óq¼¨Ãåv'AQêC#«\#+ýÛfp‹*?ÜŠåü½6@Vmp¡:¸Ê–5êvOl˜¤ 0q¿áWÿASÆ31Êvë\(šªñQá™gҵǠÐmÝ·z°F?tzžœ?"l–§6Ë¡­v @‡{®Á;ÔíC4˜­Æ>Ç-:t=÷&<ƒ<OÈø'¼Ä¾«\Äõ³^€2ç¡‚ÿ¯Jzõô'ás ùúôßû–žeêDÂAO˜ñgÞ=èr׉µa…O$ì‘^ÐgQW‡J8üÐôMÑäaÉ"¥’Á€K[ jÀ‚]¿fk†ù­’ÀlaPF—÷n«•}váÐv«­&0êO‘a­«Ðõê9‹e6q3¡*\åbß[rF€Ÿ=öC€{JùêoémM‡fgð|X~E“ϯðM«º£A«»ÇÊ“³öÇÅ¢n°3?fœ?RpóÙó[‡V7·¶È·C»@ß]ßL~{ЖéÊÿ^…j¼Wk'ž£—êÐ0˜Ão\õ;Jº¶Å½ÀáÊáQGV¢T0€+—ŒË£fså32'Îi9ã©Û(œÙ±¸pgða ¥}rùà:g´Ã[Ý\£G}·£X”í›zçÞ± ýÄ“r‘ÅJÍrÁ$”·‡Ÿsxàö<>TZK^oŠýf¦ð¿"øôfp T“jÝÉöùaÛTZÛT†6G8%ã$Þ—ZhBbhBz7Jž?ÓeÏδ¡ç±0€hËŠjéšetÎ`?m« endstream endobj 195 0 obj << /Type /ObjStm /N 100 /First 859 /Length 1627 /Filter /FlateDecode >> stream xÚµXÛnÛ8}×Wð±}‘y¿E4iŠºm¤»ÛÍæAµÙT¨#²Ü&ûõ{†Vs±|I”là€9<œ93#%‚fœ‰`ñ_`V1É9óbB:´š M­cÂk´>ÍI!˜4­d2˜L Ԝ°L 5ÉJδÁ:©˜á­f†ä€maŒ†X„–ÂÀ€l‰Ûd«Aj²Å†ŠÓP%ùÊ ,ä"A¤UX½šXÃ4DW2‰ø €áDTÈMY‰‘ Q˜Œ34aO#ð(Tòè$ktÂÀq†f¡$Q‚ô—ЮÍÉxB<À PQi8N‘ˆö•XmgRÖÂBТYß+§ ›9OLy/3…QŒ*¸@sè¨ ¬yŒgZxreZÒ.p &a¦• fiüx£&ŸàAÉK8Zmèk§É[Àu œ¢Z{2y¤Œ‚І“:#,´Ö’r‰‚¥FK—½8jêËYû×ü¨‰_Ë«—Ù«WltÂFïêӚ؋÷õÅEY]È~1/¦E[ÖÕü%{ý:Û8ÙCù­úQï$?UeÛ­¿;¼Hý•íl‘4®Iêq1-ÿ½£ú½‘õòñŽdìËP*ÑêbšÜÒÛaË|ëmõ£lêê2V‰Í?Цc«?Q_ÖçW?5wd$"j\ORÈž,f³ºio2zu¼·ö8Ê¡Þâu½Õû‹¦‰ÕøºÛo6-Ý[µ›¡þÛ«ñ·¢ºHPÇE»Éè/Å2íN®«¶¸ºµü×ø~}yÙ½B:‘Ì»ŸOML+êñ‚OÎZæÜ8Vó.*¼æL˜Ä«_çu!‘N¯g‘ŽŠ‹˜öëªÔç¹D xœŽãïéqœ§*! ý'eñ¦¾bg4`Q¸ Ï3@€¹§ÿRl¯ªj ¥â#©6Y¶¾kCjÏ3ht«IZ—N_ÚôŒ·Ù÷lô¦n&±YnÉÏI¯qË΄ ¹Ã!k…Ë9JÍeŽSÝJŸ£þ€Ø[%á4^ÎbS´‹¦sNõ#6ó›v°*(s2G[—[*5œË¥Sh}nôZU³)½²âäî öíÕ¬‰ógPI(K°ƒ )©†ã¹ T(ùœÛõô¬¯†« m®=]T®Õ~:§ªP ¨æÅZ6¥v§Ä;£º—"gô×ç¿QæãfÀYµ˜NÏŸ(£¼ÊQåÝ—;DN$Qß.#wtˆ‚Õu]\Píu(kC×EAˆ"»F½Êu÷@…!®<ËêÛ_ è/Q±õ•âø$‚C$çÁ!Æ«v5WV³Vð~ÖúÇdí]nÂvþÖòrcÿ` tÏ!dnÕ¡žbЧîù0e“}’¥²ï+á[vûÜmräÈ3äÃ`–T%)†²$åÓâ᎕϶ošlšÙíÜåe®q]Þ)§LÎq¿~U·¤Üãí^êÜ8˜·ÐçÍ æÍ?-$î˜6ÔÕq58Ä•Ü+2‰ÿ8»ïºúÉ.UýTPLÕ§à©°"c¸É­3;å$¨¢ânhˆ<Uºl(?˜ª +2µµÆA5ìÅ9ØjÓ³Z«GY}{¡ït¤ }¦[¶ò©÷­lNŸ›Vy OÚ8iŒÑ¹Wrm‰û±ý›-_‹+B±¬xž>‘£Ê÷*‰Ün¨´ÿ75à\z4ó!·8æ ª}'éÓ3Ï2¿xPj½9Vÿ™‹E endstream endobj 351 0 obj << /Length 1811 /Filter /FlateDecode >> stream xÚÅXKä4¾Ï¯È4ÚöÄvìØ ¼Ú ƒvÉtÜÓé¤Éc†ž*—;éô¤wGZšCûQ©w}U%ðÇ#›D™”̦&Úì¯ÚÞE´øþë+èÖ@¸>¡üìæêú+¥"ž0›XÝlOYÝÑ/ñuÙw«µ”2þ¼©W"‹ïWÂÄ®íJØ®%OŒŽ¹XývóíÕ—7£$%Ä3UBʧ:éS87ÌDÚ¤ŒË”Ôú¹Vð©Šwù½ûˆ–û²r¨ð]sɸ:#}Èë>n{O˜*fx¨9‘{.žèúQÂ$³¯’w|ðk¢NËkúIX’$ÜX )\ó¿õLËö½Y’¾dÝþ¢qofŠrX&Óôô«¹ïÞ<Ç0-¸Ì8·“ažÕyf­³”i¯a*ÕAý•‘1š€ ¶ÉkZÜ•”d¸Kãß·YN茙̂ºAÏŠe";R|@œóžxö;G‹ÌS®3ÇO>êG.^”Z–ªôLÔ¡mö‡þÉ»V<²Ëž†nÈ«ê‘6eG—unC™=iA_oËP1ÒÁˆˆ§?-¼{¹NÁ%&ZKÁ N¤‹bB¢ïþP•›¼wpÌ”/lZ}ùסuÖs·df„e\@¸Ù¹%— ÁR+.&­‰<éE$¾ê«è‡«WÔ+æjŽÌ´b©½"ƒMi¤™ÍP€€£èÄwbÉlPI«ÊLŠ‘—€ø@ß‹_zE²L˜øê©(ôHA–=zY&ûvIôV­/ŠÃf:bSVRûDšm[n¨Xý.ßôM»¨Ü'LX1Ç€—ܬÍÌxi“€0°hæ×~,Ÿ.%"r»E%¸PŒOuÿjQº`Æ\~ceS {׃åt60طй1ÓDyh_ÒCe,£”b9$Vª‹z4wXì9häZÀpÍUüM˜Ö$àÈälNÚ—w¾„Kî¢MẲõ]p¸oèw—‡¦Èä4‘œAu}víÛ¡·f `t92õ ÷ Ý÷éÌqƒÉÈ´ óÝ¢2)@’N¨þCL)0kJ“±”ÿ ˜ cn$³ Àð9˜*ÞŽ©†e1Í vö;?¡ãŒ;д; ?,`l?èh]C*ø©Æpš¸>ÆÉ0Eè°Çüz<ÀØwJ52 ¼}ŠÊøñ‡g'-$eÙÂðé§Ð‚˜Ád´^šAæDÈáM3T!ÿoǃM×@}íÂ'ãªüƒ¦þ¥ñ_€ôrxË 1Õ\Ê×ÁwÕíþzÛ¿–¸ßöx‚»k¶ž*á×eýZyð}æóêЕXI ÝfMmÞTÓÓI›AÇ7Ï~-ÝP> stream xÚ•ÙŽÛÈñÝ_1o¦v­6ûàµv2 ò‡õÁb½ÀRbD˜"µ<< Ÿ:ºyh¨9l`ØGuuuÝU’7!ü—7Yx“h-2“ÞìOïBZm7<øõ賈ÛàvùéîÝÇÛ(º‘¡ÈÂLÞÜÝÏQÝ7¿ÿ©Ë¾ÛlµÖÁç¦Þ¨$ø¾Qi`Û®„éVË0©7ÜýëÝßïÆ›"¥^IB>¡)U7ÒmbåhŠS#¤6LS$’Í6ŠUð)ßo´ ¾=àß¼-Ð$BOç¼/weUö¸óø ƒÿ‰T~¼•¡™cW PG PCÈb %‰Ð°à Þó-y]ð`­‰Djf{ «ž°ÄR[ï6*ºÙÊLHådrw´›­2aд塬óÊçG£L¤aê±$Æ•´*Ÿ–w]y¨mÁèO(é¡êËsUî¡(p\ÏùsÜÈ <mËÓsk÷¶°õÞ×s_”ßËn<=te}€¡ÎÄÁvUÞÒ:*EÃ5HÅ¿·Dɦ0} ¥åéîÛæÄ„ C7?hwNnµCe»0ÎâàáXîñuGÞ:”¬Õ<[{7®³Äóô \¶ ,à"“-™î‰€lAŒ@›`¬Á•¼Ÿï…ɾ©ïwpzß´ } $°Í¹²¼ðpl¤?–õ76÷ü¼Á½Îps‡>¯ö›­ [•÷MË …ÌŒÊc!35Ó0 ”u}Þò¨93©-žä¥¯aþ¹¦{Y$ŒN/,j©w`Ãj´¹÷€I2βÞWCÈ3þö¨+¥©ÐJ½¬äJ({°sÛÚüĘ9©„Ê@ÀäG^-ì} àvú‘ùÉH´[VX¥c›d¡²£(’‚23¥‘àU±du@ã}ßTUƒ”:ψK GDÏn²ê€{#½d¼W”¥ÓÐN Á®ê 7³øU†ÎÁ{ï1a­;ç{»â 5ÿ,;0xÀRUð}¤»ÞuG<(*Й˜Šó«NA*°ÂI)¶¯õ t Q4úKÙÐQ¬‚QY3@o÷h=Ç)æ¥ó°ó\è¸oü¡cì¹Ç€k  ŠaÏ ¼0J¤I¼9ÛD±f£œRåóg±:Ñφg Y‡1¯3‘,yêºðžÖá߆L‹¤øååUE€í…7GÃwôÉîs`èµ[Hpbáã®Ó¬!‚ÏÝ-¹Œ²°@› ã ³.‡D áBÓ“­à𥗓N9híú¥Œc¼šG ‰$Œrq7w81èñÓhuU;µŠ„Rò ÚÉÈJGeîž6ìú6߻Ƞc#Bi–ºã„€éÛEH…¥ÒmlÍìÁI^ì®Í!c¡©ýfß¡‡€¯¹kØr©‘IØdÚ¨IQˆÅ GõÙý9£vYȳµ‰O.¸$1cúq=%`¹èL^q¥ý§o󤈋j¼L¹˜Ž+Äüº ç‹`åÒàñž¿µ=@Tt¸`Qn<© P°X¦Á¯Û;»‹(¬gêšåcÁ±¾\n@$Ð|ÿ¥ÿêÙeƒÐ ²Á« 9Yå`dD’©·qpåg÷Äœ d\¹ï) ½vQCš<Š S·×ÞÕ´7˜õL&ÆHôóËñÁq§g ‹\^Èʪr7î{7ðd<[ Òw™à„&øÒðž¯l8¿ËR†ÑRV\î(P½j™àÆ¡§BP*äÅÂZKj‹'®’w@ªå2«'lŒñ 6-í3Ù–ÕãR@®ÎF–âõø²éz°åŸÙ·x/næí¯^a¾T‰ˆÌ-Þ» xG‘éláý~ÃäŸÊA:ŸÙõ<㈩]™£$ FÕºŽÐ Ûaï Œ~Ö¦2ScÝýò¥Ú¡«íƒ»À÷4R_¸tî \ÝôL÷š icÞ¯9Bg–Ì9§eÀ¼1uÄIYï/ýŒ¿¿åu÷‚rª¹J×9c¤à°·c 1õѯD%b¼Y’0u1¦æ:øwSWem©“jÊúVgÎïø‡{²«)ÄRS(ÿæ:J`/VA}dz¼µcl)ë}»‰€™'[¯GÍ*Ý þÅš\» öG~¢¨r~–\¯Œz_Ê5Æ4ßuME>š0\ðWWyA‡=¤Dì#b¥–O÷þÛå}”1šš¦=› lpõ$[F"š“Dë w€›Y¸ˆ“& -·à[G?ˆWM·¸ôÅîâÜda>3Ù$‘Ì?<°äjéºKŽ¥N!h›…™¢|Q¶N M2ƒ“ mÇ ö00(šÚ¼[Á¡c$ gŒ„™cd|¥UP‹¦S= q5â%B.~Ê!‚¨aSáûèIã/E´ö¯¡dMF"«^hܹè€&æ®R+ÒeVýÊÃõ1ÿná!ÊáÓ2Q3lÅüÆcyÝÏŽ}&`ƒÊ•,O@°á.Ø; >C‹‰ÆTãöµ„ìu:~b­xý¼ŠÐ¬fØh„oñ£ÿb 'òæZJš 99š‘Å aa‘ñC?Öï?Vsõyrì…ôb ´qžb\ÀÂ/¼ñl7”¾„òÊų“•uAýÌn¶ÁeË&†QòäeKS …ŠGSéŽÍPŒõ˜OaÌDOŒõJ2îŒåqÍp KÑÂÞ®zÀTÄ:^”!TÞ}Îm*a¥oø[b+(R:øbíå¯Ó*Ö"Ln2›~Ÿv°Û xåWó%B"ð‹õRb$l0~ÿ›K)ˇ­yjSú½ýü`yY›Ë7˜ÌP™ýªGxàç_q’žá˜xwt‚6¡Ã4·d|Q‹ÁØ?Irxˆ² Œ²qêT7°¦oÿÞí¡«Á•±ªÁ µôò#d:G[º£ÍÐwe•ÊA†.Ž1-0|¶UWôCÙô$äéÿâBz™ endstream endobj 358 0 obj << /Length 1669 /Filter /FlateDecode >> stream xÚµXYoÜ6~÷¯Ø·h‹.#^:òÖuhÄE[4-JïÒ2­´¥8Î¯ï ‡Ú•lù@ŠÀ;$‡sñ›Cæ«þøªLW¹”¬TÅj»?KÃnW­ˆxÿÓ|`ÜL8ß^ž½¾ÐzÅSV¦%_]^OE]îV%¿5®÷ë”29o›µÈ“OkQ$¶ó–ÉÓ"K¸Zÿ}ùóÙ—GMZˆš„œÏÛ”Šq©È&o·m³[oD™%[4ª˜…û®Ù¹­é­§ecz¤tbâ=¼pcšÊÒº½¦_¥‰mg«ÎŽ·/Ö…LÌMg›뢜mÛuxΓlä X4êjé×DF i‚ Ó.×ä ªÅØ ¿ê¤6ÜÖÞ ž­7JéäòÆÒö’Ëx÷ºk÷Äñ/j‚(fÓ( ¤èŠ{»?\|LuJ¬™˜²JÅd&GÖÏKÒ4ËE>r€™ô£L¯È6çÉZŒ®Í•o롾¡Y6tÌôCg¿§m߯KøŒ Öl„ÈY©s J&¥ ¶Ãð¥!úŸì"~+=Z}|~ïÚ­iúx Þå}àUš<Ÿ_øŽx@&Ëò…G~Mç)KS^\•¢\ŠÖ&‡ûüž•£w£6‚À›}¤…CÝÓ±ñ‹/_°"J•_™Çƒ·¾&2üÿ‡æíÐGH]“÷w)´ñA–`švýÉQJ0¾xyr¨o“}ÄùrK–“y¾$U$bcþDØ(ˆNÖ<‰xq±ÒºöÊ\Õw´jÚx|ª&nÍBk?ÇÝ –²‘ëŒå¹þ–Ùxþs3ȉ"e2B<ƒ:©³,+rþbÔQæú”w<Æö(ΰŽZC¬eÄââx÷=­¯b(ÍàãÝGª7À®Ì_ôüÅU¨Ò“àý˜rÕØmÿ„¾äA‹.üÆ9ÎñkCOJö0²€Kz -˜‹g\6q|µ@úù´Ö@׃¥%ͧHÝR¥­ãÕc••Ž“ˆÆVfb*œLE™A€¶Ø×a À+Q¦í:HÐ…Z¹·Þ›Ê¾yf°x¦È|@xOežì4ÂnªìŸÌÙýÐUÃÞ6=ÉĹ¯‡fÛ‡ 8ì½w;›D»7±§u½¾€*‡¥UAe­KIX«*XVDÖŒ ¯ÿ+å¨ÌUòKÛÔ® Éd ×Ã®ŽŸK Ũ– R–$~hÃø¦à©£Hõà³Ùêð2xpM¿ *ÂjbMG;±þ Iˆ†»áÓ ;{è;¶k‘ŽL;™ mw,«¸Ù"òî éÌ#baïÖuÑ¾Ê Õˆò{Рb¯dRu®'ê(K`¥ÞÑæu(ý S©3~h± +}²³[›a…mMm#›¿i錄‡/Ð5ž"§ŸiSÉÐqzÔzGZP0T¦[t¬–U ¤kY&W‡À…vVB; ÅQ•¹fº­v¦7Daá©#©ñã%p‡CíÐL\ÅGD2XŒÄ¶Ý(ððtíô£*xè(;KO²uݶ¶³ ‹íÆÍ|(û¸¡ÈBoÂ4Z†~Ë䃵T7û±œÆÕˆC,¶ !¸‹Ñ}¤é5€Ø·cñÝ‘58„Â%W‡· *Eò;ânÁ/B!Ý¿uàÉDg <ºÃ¨î Ÿp™%ß»ªÁ> stream xÚµWÉrã6½û+T¹ •a°q›œ²LRÉÉ•h©8 LRj(Ráb{.óíéFƒ”(Ó‹)W‰Fwã¡WX,8ü‰EʱR,ÕÉ"Û_qÇm¶ "~ýéJx¹®N$¿[_½û1 ‚³”§b±ÞœšZç‹?‚•íÚåJ)|_WKwK™EÓZX®”àIˆpùçú—«ëñ¤PÊWBBÉǘ¢SLB$,YD‰fBi‚õ{Ý/A5 væ®xOä½mŠ­é·Å ¹ð+³ЉðLóÞT×´U¶+Z'¬C–ˆØkRùš¤8ã)µä\Nìz©w$%ã’Ëйd±ìɈ).žÛLào9„_\~3üJ'Ï —,‰U)yrAŸýþµ`Ç‹>épˆ·ä"éeH¶íþ¾F÷E—¹Ï)šªµYmº"ÊJKG©T(p^8«X³È)„àgEë]5ñ 4m‡”г?”žÝîj,©û––Ý ž-W"ÀrKÎÊ ö6M½'S×ÄØ6&ÐdÐT9mÌa¹rªo‘‡ìl†¶v$i[’ÏüÐ7µW1ÕœçÚŒ›&§n@±7x…Ï´¸%ÃNóÉ¡w’:¸ò½†Ð|EÛîBð%°kÀOo=¿>ÛÿøÛ·Ä0ShèÚ;^ú(/8"­bð¦Á“bdõþÐwqÉ,pMS¢ê mùef›¬ôÒ}k«-±½"ªº*mU˜†ø=´J„§Á?>C&mLñ„éH‚[D²îŸI§0f2eß0HÔ0z|-W*á,Š“i´LÙ‚ÿt”¹û&€cŽ$Ýe@8}i[-áæÒ©ÕÍQ , Ó¸$@I((Áq·*:¢ÆGå“wÜ xlŽ6øóÙcƒ¨?nÚÇÀI 8 \àœ%·ô½ív^œ>7\h**Z7¢Ô’í[¯àRÁVƒ1ÄOp=–š$2¬I(:ðÝcœî´ºì÷ňv¦¼ŒÏíîh|Â{ìXmôÑÁ¦»³+£¡ÜŠ®hØ\æIœŸ“Æ4×> ‰-4&ËEsT¾4Dã„…*MDôÌ ‚A+d¬¤J/¢‚ÿ%Oï‚cñõ#T¾0?ÿWèö»ºDß»H^2À6zÉñBÇ,•a¬fbyÏ£8‚úHå…#NÊÀBîOˆŽï›*ìZž6MàfsS­µ$n«Üfn(»åí0k€>4Öò5f`Ríl™û³Ñ™ó½X¥L…ÉÐ_¿Ì¶`ËxìÀ.Î(Õ¼êûôJÔŽ! < §QÀá@eZ™=ýù*•O'Ê—É;ñôMzò|eî<•2? x!Ca‰—óá|òjå'/[{‡‘+heès’ Z ï"ÜÈ]` q°Ö½ß&£8¸·ÐS]þøÚ›:@#>8£ha*ë0¤~Žb9m;‚3w}¨ çn®$S‰rÃ`dµ†Ã  ¢ç³üj.˜c0ÎÑ)Óá(ÿ†,8å8n†³kún Ç^MÀ™:·\EÂŽ¡åiE·Ç:¶Ý7¸‚é¸y|·‰E—òBÀsEÈISÁ –)¼ ꎈ»%¼`LisZn0XH˜²$&§\ìú=þúeƒAT<‚ûНæLµõ$ÞÉâ! •ÛÎw Ü@N;ˆO#¤†´¬&† ~öVºá„©óä¿=T`;ûBöïçÌ¢VFÑíÿAÓ ‡·­àú{ãc[Ö‹6Ém{(ý[Ã=¢ßÿdÿnÆ endstream endobj 368 0 obj << /Length 2117 /Filter /FlateDecode >> stream xÚ½XÝä¶ ¿¿bÞêéÝè,Éò-ÐæÚ"¹ z›‡Ã%EtïŽÏxjÙû÷·‡)ÇëÍÎ=´XÌŠ–)ФÈ)ËU rUÄ«\kQ$fUî_Ä~¶»Yñï½Ì·ÆÍ„óïW/^ÿ3MW2E\ÈÕÕõTÔÕvõ1úñP÷n½ÑZG_·‡µÊ£Ûµ2QÕ¹7ZÆ&‹d¶þùêÛÿ¸wJ•ºP%ä|¬S6ÕIJ#Ì*3‰:!µ>´Ã–¦ÑÎÞVoˆì«ýñkTd•¤ÂÈ|µ‘ZÈ”¼­®k0”žrÿ§ñ=ü“4÷îixGÃK\¿Å%^~fD®‚|IlqƒjKÌ×mw&ê¯,y£r\â…l¤LDš$çb– ûüe–}M Ĺyã¶Ÿ7l2ãïõ»/4t"07~™µeÝ•Me»Ê^lñi ÚÒ=²øXÓØýG=iVqD øHîqÑS |ÂU¬é‘N ¬ñÄJK'6Ýd…S#«|oi²³‡›ê|Áí:Í€y¨œ`($„Ov–íß·‡ÇvXmro7Qe{vl Ž£…ĶreWsälq.óvá»}{âêmÝMq<­dÀ"‚:%Ò> stream xÚÅ]oÛF콿Âo“·úz_’NÍÛ†mذ§!CQ¬ªØg[˜#e’œ4Å~üÈ#%K¶œ4k¶ÂÇ£x$ßg5“ðS³LÎRcDfÝlyýBl½™ðë/Ó-€p1 üöòÅ«âx¦¤Èd¦f—ë!«ËÕì÷è·²h›ùÂ}W•sF·sí"_7lFI—D*ÿqùó‹ï/{I±ÖŸ¨Ržê” uRÊ 7KœÊXRëmµŸÃÑ8Úæ·þ5J 픎i·nQ'±PF¨øèØ]^¶¯;‹¢¼P;Úe8gcáTʇVºgÖoh1ýÁvÌðØÎ‹ÔŠ$Aš\n=˜T«h‰¦vG¦|¾»CTŽ~¸G·hmŠ[Üú†HŠp²õ_w¼æ ü>_¨èTɲðDˆ·ŒÚNøž]NÌÂÚÛMûAùKÓúD¸¨jšâjwß™+:ôßr—7-EJBÈFw[_ŽDp°Az°à Dzâ³þC¾g’‘G£1nF~ n’ɸQÿà)eÆÚ|Í*þë`CUõ*Ęª`Þm‹%wKÛ{´1Þ7èâ‘+,ø |ÉuÀö(®Ùíu›SD}†Øn>ÕúÕÇ‹ÝÕy‹Ë¸#W +“¤.a3EÇD'ÂÈçÔswu:œèIJ •ÌÐTÎÅ®¿Â£>×Äïð]Qnæ +Áïûr‰Uá«à)¿®jOvݾ\1ÅM]ÔjßÊii=ÅJY,ó¦7"—U]ûe‹Õ!Õ¡¾4û] 0T %àjßqHÕGÎifµoüz¿›²gUz1_¤JEoç΄µZGרΣw¯Vs¼"Š+‚ñ¸®|³ô劌{NŠ®éxS|ôãC¢¶"¢g±½°ëªÓdâ"tÚ£aDø¢,t:;vÛ÷¬˜I-š.iŸ€»+Ú-A”™4þ&¯ó¶ªiû~*•Q±‚°‹©hŠEªÓŽâ+b¶Í›ciù5C:‰ þ:3aí)¬|Þö÷á>`®üÝõBâi™ˆXg#{Q©O»äú¶`SÑ·É«¦*•ï1(С^•“WOµ0‰Þ¸Sƒ›üµ‡ö'Ðy¹k¾}H °w–= ÃöL5W2ÛĽF4xCÞGád–;ßõÍŽš,2„ú¢Ç”SâW‡iâ%‰n)¸¢‡Âáñå›èÅó_G àYº+²ÕN®5X)%Ѽ˜H†Àh8CD^®è了!fœ|G€–0±>!IÏeI•Ú¦9ú´®ê#bÊ9„0ç0– öþ´&Ôý<4)geÓú´3ÖAsðë0CØ”Bp56) á'8 Î訙A^ÒZ€©ÂË¢ZÑa"Ͳ£\U¼¹qI´T+&¢×dJdªË¥Å‚´žò2SëÐ;Ë)¦VhÛç÷¢žLb%lÜç00R<ŒÝ —Ñ 6îSz0õ‚¥o‹jÏ#'xŸ³LDý¤‡§j>\Bšq—yrÚ~Ñ7SXÑÁc~EˆUuÇŸ0Šp-}æhO29˜üS³ùMx~h…CFÀ&4tž .(ôI?fØ ÈýàOn—iß.;IØAV䡞´¬L˜ðSUæ@FD…ž­Ãëˆݳk`Ц^l+ñ~ºæK‘fî´…Q§¯ÜGõbØã¦,a38eV§YhA¸N5ZÄ·­ÓÖkÜÙF;¥D’@oMz%0JЙäRœÂ ëan&©¥‡ µ6+.iÆ@ßÕxØæ´°+¢ÒÔrg,­¥Hœ}Âp&øÁ¢aÊ0ÙØ \PTÆH•ÂL[nvžPÖõ<ÀK±:Œ2#VÚ x—t”Ûü0uv!Å»¦ÕΚ$ê̶̡ L—[•—dgzL(`´®'ƒØfWªõÀ•m eá蟙ޛ€do¢µùÏšœ¶ü^@Dp3 †o»ƒ‡€k+q(¯¸ç ܳ¼0M 4 T?OXâ®ÚÔ=m#þC[£TOG‚Ñ]=!0Ô2w.‚!€Óä± Õûð,¢&éåã’PE1xîÀŽÈ’ƒ1Çîèô«¬”H]ÒØ'»Á=h¶a<¿ãoƒ?ÎN‹,>ê¨`ç›}÷ZCï¬Z”r0ÿœ3Ä€† 1ùWÎ"É„qú¿{ <0Ht³ºM…Ic+NCìÕaÄOR[»‰?wžzðÑbÓÏi“ þ¿þ­è- endstream endobj 376 0 obj << /Length 1786 /Filter /FlateDecode >> stream xÚ­XÝoã6 ï_‘·9¸Æµ,É+ö°nÃö°[÷0ì6LI”Ähl¶s½÷Ç)¤îµ j‰¢(’"¤"ü‰E-R)Ã\e‹My9j³_Ðà×®ó­€q5â|{wuó½Ö …y”‹ÅÝn,ên»ø3ø½*ºv¹’RßÕÕ2NƒË8 lÓ0]IeI ²å_w?]½»ëOÒqüJ•óe’L…B*ÒéÙ 8^eÁ4ÄQtÓÍœ–"8-W¨©iZ"•g³D8-ï,QÞ¹åÝkÚHK›ºÚÕMiÖGÞõPt‡ Aï#¡/kÐÇ9–™/u^ÃP‹ÀT[ôø`%d(4YVï–+¥"8ôÜ´–ÆpšxŒì–ÆgºêãÌÛF2 !™#C@† ŸSÐËô§¢/qñ/½>ÓĺèlCSÓsÛ‰5‚Ìù‰p›Éø6eI`t  \Œ­ƒù`¿fîÉÝ«rºão·²š,ÑJïóâXt$Ë6MM+f"ÊÚuÄõ }¢PF*cç´µÆü‚>¬ìÊŸ' GüOÎ8®oëg‚÷ËŸ1,Bgê<–騤Ëð@§'NìèºļË#λ\Œò¨ÓÚë¹ÐÉd˜F™5J¯™#efp³5–`¦nLŽOÝ­Ù7Ö–˜4€´Ì9Ù!é“ÉZV—‡æÔƒWQí‰æÐIJ|ƒp¹JD‚»û" “è"gLÚËœèË&^Ú¡U˜±,ô njáÀî n*Øó3¤ð†ß–¶)6æS$…ß „˜èS-ñ¸€ÃÁ¦&¸w˜…ÊžH8‰TZÓž1¸pŒ­'6Ë[sÊáØ¥i}<—Ö©QªXA»3Ûrô]Qî[¹`ÆAU{ÊÑAqG1ÿ$_ª‚º.xìBj´Ž]qr9$jÙ 3ê›RGÅ\`I°;3š×­½ÔìÑÙw¦ÉÁ ÈÄjÎd\Bqê;ÔDqÂà ¡e) zá8y(Ú\þ÷4÷ËAŠ¡OácñìÑŠÍŽåxëðºÛ‹Ý1 ¹áÁæ|b–zçõž»Ðiˆ`÷œÜ&áõQûƒ¯/0eC3M†循©Ø¸©û(Ë!úê^ Èf Ç)Øo ‚ Ó­ýPl,oóÍX0½V‡©DÐI`Š#6ä×DÌrð}>2Ür¬?[%B&¯ªÓiìÙz÷僼™í¥4mÐ~¾ÜL¿t¿ŸbpS÷Kƒú$¯ECØx ’Æ9ž¨aÒ­[ø×Žøi¢úÉó­çHèSy/ˆž¥“ÌWõ¡oÄ”‚@Ù D°ÐsGTCÿäR.ò”’~^§8âŽi_T-øå£]0e*wˆXuEôšá—ËÃ’FböQ&ÒP‹¾åûÄ<ù˜G‡iÜ·Çç¼ ô[Ó@s†u¬÷> ÷„ÄÅ–J,ĨÁs“[2}Á¡º· —"2,F˜ •cä²/(ߘlZúö»à霺=o:¢8YJ¬¨,þ”Àúb[à PÏètƒ Õ˜®n MQIî`ï)tÛ¦<ç{î8 ³—û&èhãLÄÚ?K¿à †øÄOI?Í NŒ¸—=é7N©ƒÀ—³"½Î$–Ÿªï­µ{‹´ ƒíyƒ¾?0Xr“Êý²ò^¤}fíz‘zøeêÚ³S®¹W‡¬¡Ÿ‡¤(¸ËplmyãúÜѾ¶†g14ºÌ\L6kì%™;þ~™ÉÀ=‘¾’qäJ¬H©MJ}›„”iÂÎ Hè3.q(ê룦¸QÌ‚°&ái芗pfºïÓz š‘Ͱ:T ˜ŒÝ3h†™¶ ÊþõÅÃåó²X‘š°Ð·…ÃëJQ»æösÁÔ\0}ov;‘Ê’œ¯RÿÜìšGÿãäñ³]§ endstream endobj 380 0 obj << /Length 1961 /Filter /FlateDecode >> stream xÚµXKo举ϯhä²ê]K#ŠzŽÁ$H²É1ãÁb‘ °²Än£;¢dÆ|ªX[’åµ÷f±X,Y_=ÔlÂÛá.ã<(â|WÞ…†ÛwDüûóAПIþåæÝû¿'ÉŽ…Alws˜«º©wÿñ>wrÐ{ŸsîýUuû(óîöQî‰^K˜úœ…yê±bÿß›½ûÛ;)‰¢7š„’ÏmJç61–ù.Íã€ñ˜ÌúQ{ØšxMy'>ù%LÂä;öÁˆUg"ÞÓÀÑN8×g<`ÉJÕ}Ù V{Šœ‚köÄç“ø¢•ÅI³Ìjd¤’϶ñݤw¹{ýú~©Ñ–!+HÛM#Á1/¼^è±€ŽCï$ zb ¥Û½n¡µ/!‹»=›¦Õ“PIóÛò+ù¸÷"~Sê‹ ŒØì}䛋 ï$J=öîœ$,»z2®RÇN> M‹C#¯mßFüo”wû$õÊVt•@_]Á†ˆ{·#Þ%L“÷*‰©}†K‡\nCÓˆ¢Ë EÞŒ¶ÄX¸X cIp^G£]˜ÀÍ6q7e^³eVO{Y×AÅ¹×ØÆ•;ýÓ– $ä*^0´ 2©ÂIj0BoucMb?m¡JzeéF^Œp¿ôò9 ²(›¶~se³46•/¤eohíÄÌ‚ëÌï#"à–»§ ½÷ ˜ ÕÓä$^Hn, ƒÐùã-¹ ©Er#ýRÓÁGI ëz§(cA/ÃåTOôxè|4µ²¢"ELê)À·„9dµR›ÚÌYå^ìVTZ9u‹vÜI5jÈôiʼO㙪´Ý1PÝ€\ÚÃIcÜN÷°v’ü´}€0&ÄÐ[Æ+@Ù(˜Pµr¨±R7D Š–DG½Žá3+MIC^YU#d€IÑ@\FSõˆÁ EÐô5¸àLÎ<«” c Ù9õ}:Øjf÷9w•aÖ"tõ?_$¢—k„­ êñÍ… ‰8^'Ž¢1rsv‘™ˆÈ­¹MÏŠ…Æió¢4$[Ìh‹É¶˜aÀã"‰8‹–•h’}­ØDk7€Çæn0ÅAtDÛ²Dš> ý eÜ"ðÒ8¯pÌñº—ia2ÔlÕ@›S2|V8š,XeC„›ÆÓêiÔy–_W0 1yf <#aâÙ„ˆ zSGZÛ’ê×·-¿›ÿ߈hõø"ÁôÚl'ºZvÇŸ©DPM²ÜÕ€ëÍ‚³(½î_Öq°ÃéÜ6š± N’•VHþ•°Þ,iû­4(Ç×RŸ±™Ê7®jÇzR@€+É5‘P"ÅjUR— ŽÂVÍsÙÛ¹€¹X%x9—ýñ¥ùpu{¢WW´¬Õº—Réj³¹µÓ§ îŠË²ÓœîCJ°2OînìÛéÍrσ8s˜¸ÖëÕÖúz¸ÕðOÏäi»É&6ŸÇ\…=,‡ÍÕož j¬Ö´bÐLA¦¢‡"ž°Ø»y¡‰£€1×™Œæ§¥ cx€©“عWǾ<щ01=³¬éç J*°=QmwMÓ®<|q¦S1"¦£A|® ßQw€QÉÓ%zÌ÷\ŽßsÔó|x[šjN›÷I!v/qÖ¨±×WS…¦‰Aè ‡¢R]½‰ ßêYXZ¿åȲ;¶˜6 ŽÅ±ü0È“xÝŠ™²ŸÎ­mÓn}ö&ðñ^” òí/±ÐÂLß©öu ?²Õ‰~ÐQ_]>6 ›jákïƒûzfz*ÛVô6'e€áeÖN%d%mó’ît×Ôˤ`èyìø”[ me©Å& ¿O WìAæ^¶W¤hG|¨Uâ<¨¶¥/&g~¥ºK'k~ ÞŽ¸=ä²0}µ½,;7‘Õ ä¿ÒNÐÛü)Á–w£nÑ Øa6çó N±”¦2rä–îÍù)]þ¾ñºý™›˜²÷­>o536‘ãîÿ²©úí endstream endobj 384 0 obj << /Length 2698 /Filter /FlateDecode >> stream xÚµ]Û6ò}…ßbkø!‘Ê¢½\äŠ<ÜíÅ¡-pŠÌõ ‘,G’³Ù6?¾óA}y¹É^ƒD‡Ãá|-V1üÄ*‹WF©(ÓvUÔ1AÛýŠÿ~}!<Þ·3Ì¿ß\üíÇ$Y‰8ÊâL¬nnç¤nv«_Öïeßm¶J©õ«æ°‘fýi#íÚµ] Ó­±M×2ÞüvóÏ‹nÆ“)ŸÉb~›§ÔêH(Í<ýgcÕº9m¶I*ÖE~84=Žåºhjdî}yp Èùs‚Kð¨*»ž÷åU™w ¼/û;5ýk§=ÝË ˆL¬‡ÝDýÔùY~?ô/=öB&:‹t¢üŒ}l›úØGtâV™¶"b+Ï'µAÁñ`WvÇ*Ç«=0™æ÷k,4‚tæ–¿9X°8bÁÒ ‡ïgDÝ'½kËÞ!ÃÖ¼?;6,©¢4MIè.ÿäž'!$Íz:`«’,’©ò"S³s™øsh¸«;±N"+ÌB³ÿp·%ËËãzÓƒJèÒpû«¼-êò€ŸÎ!þ·FG)‘Ÿ±óóC¯‹3+ˆ“„“Î[bQÞ> Ä’+lÅú¸³,pÔ3¼9õÇSÏ»Èî’™ˆ„MÑm·@ì˜}ˆËD€•Z¹ ‘KAj"&й ÂT¤ÇC›6È8I61äHèÈÊQïùaÇ—õjoA"M[3°xÒØwd%©^¨¶o6[m4š¾6Ê+¬Ø·FERf'PB Cì³±ÐZÇ„É!ð,bÓ"›fŒ¼¿¥4­Ç¾‘ÔÂñîœÏÒïòdõh‘`;æmÞ»¯xÇ%YˆØ@d^‚¹ì\] Ä». Ý\ÚÈž…ž€=`äœGGq†ËÑ]&¸BñÎr¾E¥É•Òö \23:56èQÙzw¨Ê¤}Ž&$¥4DÇ΃0ä!¤uûS…¡ž€äF—<ùݵ͠Y{îHFšÑÛM"ÖAÛöè$塨N;T’G½1oeǬŒN PTb8ž +#°«oª¡*Á%Ÿ«‡ât¼_ä|¢§Iÿ"Q€’¾Šá\Ú‚2³ < IAzR8ƒI|ía1‡ªõ;ðØŽ²†2ÉúÕëk¼{ÊŸàliÀ¥2¦rCi%Qëë7_(å%zí>÷îÀ~„+”Õ¯}\ûÓ5C~“¸v Ÿ?>”U³oóú°Àæ°ƒÁ¸ÝC×»úË%=Ø6²wÕOºÓr+t®€hØ50Qí°öÐZó†Ç>s–ÌÇÀÆtà_¬=+¸Y¹Dë÷h!Hd¤Æˆ0óÖŸÚõeU1ìÔ‘ûk¶8üæ¼pëîEÌ”s ãÿN[eºÆ‚ÁU»™ÐÙÚuœ…¶¹ƒxtwjº²èxá*0ÇCÇ®\¾c|ŠÂÉùS7²«ÜÞ š·å±^«r®_šèàmþùž‚@U½@6,0ûñDÛ ¾A ¨¹øµóLAˆ)„J’B ÷ 1CãÊõþR Bš¬K—ÂyS}*Q‹{F©A±°t—Ê"¯6¨ Iµ.Ä×·y¹'IöpmºKÞîPX½NœÓièH@–Õ×L|c"Á xð1Ñ]´<9Áq§æÏw‘Dó¼¨ÑAhiœÎ„f&¡!É'XÛ€©õPµåûƒëËÝÊ"Á!Y2ØpľQ+kIÌl—h„Š´ÊXp\b’o'kÕ̘¬Ñ½YŒíÀO×:ÏÇ®oP`ÎìÀ d%äÌK–AÉVB‹¥YªwhEmID Ž®ÏIÊ&ƒ0”MIU?\¿C\ò¢ÇŸÄ·Ø‘ðŽ·ó\1Á€s!P}Ÿº®Ä؉`¾@²C µXWM7/0@—xî'–ý‘áʵ€4 áy[ðÛ¶©Ï){™â2ûLSòa€Uç»a'VETÿµÍ¨ª’'„­-ó!`qâAÄ|ê Z9ŒXÐ<–(.ÎÃ…–,ÿTùfô…ßÏ-Ö=Oö%;…_;Ó*‚€ñÂñ0bpe’fÒ‡%|á0+óÐY‡þ Ç9c@3÷.|‘ÝмHIt¤íè#m°€’wÄx¢"ÓÈ fæúƒ%t©H}dPÄxÚFÑÐpdFYæ&5œ¥*e¤W!:&RV¬ ëãcRÐU˜%¢J³Õ ë9”äðzòq|QBBó—B!EôWE}ñËoñj‹ åHevuO¨õJXºd¼ªV×ÿâ÷“%S Ê,Û•4YdT²ÐÞRZ¨»™ýÈ Ðc@0p ¥äBÍçŶ–‘áKè’•'ø}=´aîÅ…lr œÌܧ`ð8ŠÐ{ôjCÑòìÎM]N*wØãóîxÏhäõ³„'¾Õ0 8µCŒÙyÛ>`’ ¹Ô‚'ß…¡-·søZžIû)OM# qa‹ÅM¬ç¹ÛÎÑ[_âÍsãeHL‡Tÿ•¸|öðY)çò‹·3„« ùW,ey^)³ˆÞ¾Á§“ߪpöß :(ÚÅËÁ|ÑÇ),I*R5ðᤩ$qõÕ+Úoß0/nøÍ«i$ \˜ŸV<¦…ùĤv²$[¤³×AʬÛšçÖÿ;X>s¼¡Lúæ×o°{±b‚ŒVlÖÜ] ¨”¦Ç@FÚAÓMïØÏ&|/Å£?!ßíè¹—›5¨ÕèÝGXdû]ã¡y=d*wé_×40¯—9¥vywjµêÆç>LzZ§ó¼¥¦±š—|ŸŸNU4nß5 ¤?Ipàõ/ ·'°gõ9}R o’á:ìÏG`ªûz¡ ×˼˜dfçì2€^IcçÚ’%í1‡–Ö¨ÒÎèÏj”`HR†…}‡|©8ñ‰ÝOü=“` ®$èUˆ@gÄ:a}ê6É]ñ’Y cw(k_ß®ïTå(iB/uH‚_b¡¥‡*7`_1ýA²õoß)>¤hÿl èÿo„•ãË'ñúþ®yÕL§þÔóf}$šŸdqâÃò¨7ê[4ËÌxÇA è 2¾-É¡5DèRD¸D„Kgµ‚¦KôÍ[G= >O7 eƒ“™lfMüùIJe^R–$¥ìBR0Íù3UŒÊúˆlÏ\MC›îs¢wÄjhéq JìNüÈEd»áœ~؉6øØä††<õòÃë—} çl¸0ñu…O¡–þIƒ„;ˆ’Û\>›6ú¿5ióÒ¦aS×ðJ—÷ÃÈ9²¥'¶ÆÅ1.Á¼â+ÑT±CþYužst^_-ý ôÎÑ5 endstream endobj 387 0 obj << /Length 3682 /Filter /FlateDecode >> stream xÚÝZKãÆ¾ï¯Ðm9Àˆá»›6r°ëÅHxf¶ãp$ކ°DŽIj×ã_Ÿ¯͇†ÚU؇@6»[ÕÕÕõøªšá*À/\åÁÊıŸ'vµ9¼ ¸·Ý­¤ñí»W¡Î[câz2óë»Wú&MWaàçA®î¦¤î¶«ï½÷uÕwWë8޽7M}ïÃUd½²í*¼®ã0°™…W?ÞýåÕÛ»a¥4Š.d‰f~†§0H0š¬2›øaœcwåÕ: ·­eMÜtòÞ<ȳܗ›¾­6Å^Þ95±ÞW}Uêܪ–gïˆ}¸J3¯h«æ¨3Þ¼»•F÷ÜõåA{‹vXü‡ ŒË¶dÑôÒùÐ6Èj ãë0öÃTøæ¥¢<ðnoä9åŸÞšVÃÌ®8hëH§ñ%Ä$^G›ë÷ÏW6ö®i8÷6 ïprBJótõ4ð‘GA0ôj·ÐUèqGçVt›¥—¢ÞÎ9¦ÝÓöÝX(;«ì?Žrï Óp]WÝïK2Ibïë£U¡Ð$éÇ`f*Dëé¼ziË}Ñ—Òîù‹‡g²xxáG"ðÜÉ¡SÏ/Gl­Ãás¿Öÿ4Jì±\ÞLÅJ] A(¤*døa˜à/Òk(ö V¡ßpB‡¢Ç(w¨¾mŠc·lEi0µO™Qb°m„¬®J®í!ÎC?‰ÓSGÙŠ=<÷:ÎàsOªã-Ô¢—·¶Ø‚°Ã{+ôÖz¼S£ç}Á-ç RÈàŒƒˆÒÌO‚Øñ¼^ŸÝ\‚ƒ€ëÄ‚4X¢w“ §µ>. ±}ôŒ„Båÿ©ü€6DѰõëÞ:ŽÜ4," 3¶¨©K‘í#Óêyá6$-1z.ØyH›]LÓþÜ)¶9²VgXi0 n‡ƒ«²h 4W¤]I4á8nÄ?àoî0ÌàŸÐäp.äM\Âh"0žÒäS¦w†2xîËz‡ v&FH‡¢ë¾Àyç¡÷¯EEάŸÅƒè~iûŸœ?99íÀ…-Ôu™l™6”?ÿ¤w‹FO› Fòê™e‰B7,²ÑˆÔ—­ôALµ´îYå`jM‘U# Ï<™ q™IÔuÝý?}Júi’NåÖ¡žÜÁ0ëQœ$gsN(žßžeyÁ$õmh§bI§îXÿxí‰E NiYÓh#L*¡>½zÖ;vÃå;]dSxØ©-I5.€*äåXÏ6D[ŽU4\ÖPiUz ¾²«Â8¢<&ªÞÙ ú>V0®aAÎFÔ$޷冎¹Ùqpü|»d0E»;Tq:á!al‰ŒMý8Ï.q{±oÌp.ƒ¢Ý·¥4O>MýÈj¾Ch龯ŠúÇEe3~4ÆÀ×,ÝüŒ#Ð烗ݲ‡5кÿŠÞá? §§fÿ0ó ößUŸ¯)‰I§tvvªÒS©ÎÆ qtB7âjcrÇé__ nRmºsʼ-Šã^î >[ÇÈ5/‰ ú’¥éxt‚’0N’Ìü娗<ØÔ{µˆ’SžM/“9ž¡wW}PÃ2gŽÐ$~f.t2qgÎEžI@(+}‘”.®†ôõ"É|k³SÃÞ`±Ð“L”žOm)h§dÿšžñ¥a€˜”ÎÈí Ç…Õ£ˆšSÿ=YPÜ`zFžq°7Èê;¤1œ2<Ê/7šŸÈVöÔžzÒ¼0÷ÞéÒ@¡B8Ö-ÂØ®®~S—-DMÌ p˜ì4A×Äœ !gÀ€G2¡‡†¢­±æµä?dª‹¸6ŸÄÃOf‡fœÖ•ºœ¨uâ`¦F“ÌÃ×aÊŽe’ó þlˆ³Ç¢Þ1‰œQ,Qô;×* œÓ¾”Âdt\M¢—~;w~«NsoR(ˆÛïË­ô /7g9²ýé ÷»¹»ýÉ}´efVuûÝíÝÛ¿.J† f,nïCÕ6õÄFc5ªë(7ä)¢Œ²n뱺F$JÀý'o}3è™?ÿ±©KébŸ¹¸‘I"Ò³P"‡¢l "”ùÕåêŠ †’¦À©ôF\Âö½ô*ØFW©ED}'®¤Ñ, uÙmA%Gƒ+ èü&ÚgÎ.FpŸ€®OkS¿pfDºpY…Ò Z¢ñ$B;¦ô' uÃ0N1ʽ¯È+Zä ”’‹wFœúïi9pT«…¨ëŸf kT1º¯jín&UÀ¶Ú–Lþ†S;äÉãèÜZVNkO•3bÿæÊ&ç;/-OûòšÀ<Ζ´Íš‰ÞZ—Œ÷[›äÅÖNØ Œþw¯*>y;fZhÞûÙ„ÿCµ{t\‡; à†¬¼XOÃ$],¤’çµLùFïFyFÇ@µ_L·£Ä7I>÷ç}"B ¡…!-–:“Úaj:Û$ÏgBSÀ1¯¡˜ª\º_˜á*yj†³¹68?2—ʱÄqÜN͉¡±› ¼÷õ¾úÙÂÆÕ¸}i”…•Ÿ‡1!âT|)GfÎWŒ#ç&ÕûýQ_a> Kæ“ÏŠp!RØ“HaÆ¢nµÈ5p}0ˆQ‘q`½.¦]„±”oyL=½ò˜n ¯{Ns?$úö¯ïϦáTù@îcµßKë±Ý”ôÔÊÝ#êñë<>• t*{H#؇ ¼Š3ß‚¿©#€+d×0s(»®Ø•#^’:qÙŸÅ:ÃEÎ)Ò‰Œ–Ÿ"“/Tw©·x’ ‘²hµ£“ÿ…l+Wå£=¦„™¦÷n®¯E»•7õ|ÔÜ}!si}ö¹‘͵$J!éåe”îatkY®…úŒë$i‹°rdO ¦2âŒ2üÂÕÇ$0Ñó±¹bèÁ/îö¥[WË”a†»oØ’v㹕¦äì@®‘A÷§_ï.Š}_¶µÜÉ9Reµ“7Wu¸ä6 ’Û€“Â?7oõ~êÂ[:··ï¥á€>µ·e«&ÚI‡Fi+ÀŸ/1›C±«K.aÓ€;yLÖBZC—Ô@©å"»ÔÅá6K…½ãÕS0pp½F-‚ÑÂ:žÃÙÉ«¢y„7Jùu']{†€¹Îe4C@7¯ÎEÒ÷'ãÍËíÝÞ­ø\—/¯ àƒÅÒUê‡aü{Þ‡d>ÐÒj=YgsÆXmñ\º­˜h™Þ‹Ä¿wvv/²pI“úYðܽäEÍ$Ìftb䣓I?Aðr9‹†àž¹šßSizŠ”TfBM1Œ$S#”>¶îš­$0#f¨*à¬À¥Vì(•↎NÌÈ…“*àà›ßGÒŠ\™`?Òç n Õ“Ìbïçí¿d•× hÃÙ‡”} 8TOkÃÉ-“F·³••òŠ´¢v tÕ¡Ú­Œ³fŠ\ÆEëáJMm6ª_I(r[ØÌQâ„»ÄÍ4ãY. ù„eZv:¿2ÏY<¹–‰ÏÀ”$óã1ѦsZ/Vèª$›=‘_–þÎ׿rñ(óÓ,žÿÐìû³0ÜL‘8–hw†ó(öÍñ‰ö?.`œîÿø&AÅø¤ûÄBtKŽ·DËò9) ¹JºqØ6…-ÎMnRùb³ Rž,¢ñ"O6ö³I•syë'è’Šƒjø6Ť%°FÄUÑÆj[΃0uônzy€©ÓY¨hÜ£ç¾Ge!4zæ¾%NÓ‘~q_ÖçñÙÔã$Y2 ƉÔÈù9 ÆÜ]Ë(è 3ø*ϯF'öZ‡ÆèlR«—sT‘¿Ÿ8¼ùrté´×%å`18#ó÷3œíïœõ³€É:*0)ñ#@º¡±'·KŸW€™øøAáÄÿgÀ6Ÿ Ø'ßppÖ©‘F.> stream xÚµksÛÈí»…>R­Åp—K.yýçŸo.íôì´ss¯¡%ÊâD">ìÓ¿/^ˇLOÒÎu2a±ÀÀXV‹þ©E,lú©IëÃE@ØúqÁÀ7JèV@¸Q^Ý_¼yE øiªÅýv|Ôýfñ³÷±,Úf¹ ÃÐ{W•Km½§¥N¼¼n X®B$±§õò×ûï/®ïû/EZ¥HHùe™âÄø*4,Ó&ÿ%P¦,ÊG,ðÚ]ÎÀ!{,ó¶Xó ‰òý†Måh³–¡B~wYsvL“R^W.•'PÞ Â|Ÿ¯Ûúì{þreLèÝ;¢:oº}‹Â‚@ç• }±&ƒÀ:MqѱáÌêœú0,!BU™ U×äÂZ”gä×> ß©ióÃ7 !Üa»åPÈ ð³püw‰¨hàËñ·îY¹™(£X±KjýñŒ®’ï÷>¾yŸè…2~hb |Úú&J™/ñÃå*Š5yØù ÿcC‹ÛÈ»Ê[Ä=/CíåyÉÈo 0X˜×91µŒ¼# þêÔPÚÔWZ¾J¤ñ«7w 4ÂK q2¡q· {B‡èm¡õÞ/“Ðëj¢>TuŽW¨b¹%g8{ºÚò¯„âÉÕ(€”ÑAòEÊ\/×ÕᘵÅÃ>ŸóŒçœm&wwë# ¼+´Å–wNx\Õ1²7-î¬Ñ@»¬~”5ú7µÈñLlŒØ þÍÔt«èØx³/>Ô_AB¡0|zÃÄl!@ӵΨvÜÑ…6Å:Û£)Rºv¦G¼­9ó( ·œmÚ0*7MÆnª &ÊÀwèüõ2R^U×ø“7GZ•›¼<ÄœŸÛÈ“Ðñ?pô¶âøQ©»üd¸Þ„M;Þ{iRåÒ% ­\61â±+@´¥vâ³ü©¡AiôJ7ÝñHrW5Jf@5^aU·åòƒPIKJÚ‘’¸³Ó¡Ùè0¼– n‘,à6PÞ¿wÌxuW–= û-Bw·—sJ†6ðUìÄ~U»• B?ŒÍÔu\ŠAÛG—íÑLÊÑ9ß"`ÜMNòD/ŸI%ÆÁZ!jðy@7íòѳ/ðÕÎë[Ð!ù¢²¡†Ôî¨1vVaš‚s'¯¼w·økz5…ÎE@OTa 1K 8–Ú1o¶a3!»˜ ØòVâ˜{0lœ%ØfÓåÎ@:ñQ³È7:dÍ~ ¢à&ëš¦È ¯G ž9y?áùì²§ü›6kß’bí§i:µPÏñœ•­pdL¿RÖWð¾NþÂ4àta•¯”šyAÞ0~ЦÚÄù_UÀgš®ÉNÏüzeœh_«Jó¹nñôÍ©Ìéd’aÂ-ɰ*·U}ÈŠ}Ñž˜9¯ëª&Ž9¡§ºõ_û}}ø--ƒ4¿é¹T¯&ü¯sÏfkü˜„¹Ç-j‘+ÔÈ8[W“²ðùÙá¸ÏgÃR±hõå°T¾‰‡ge’J¹¶ \ÅT{ö` bÙº«‡w\y ;2kƒ±‹ô謯?¯êwâÄ!„I4“L’à— m¡Ha¨ß¼þÿ‘a—¾à",Wöˆ-ÊQyB˜¡ ‚T™ Tƒ…sAQ’¥¼ŸkpüÜ6ç.2°Z0Þ‹æ Ub©ue„aS„IÄ5 \‚Üð²\¾JÊW‰Î _ò&UÈ×ÊqR­ËéeÕ2ÝyÓñ ïÁËüà­–{=Ȉ} @Kñ7N‰àIMþ¹ØŸ°½d¢I2]g%KÃÔÐ.å^ÏW†BtöÔÊ$À`Ëåêë³Óc?²Ö~5w8 ˆ#‘C©d†ÂªæîaN¥Ê™ ?Z”“-=ÊoDèò¬ ¥¹ƶ½±ÏÆ 0º ŽGŽAixöÞs·©Sˆ‡¢ðÌ©ûq …(ìCÿVºAÍ<™ó`šc••GÕ¯NçBKƒ¦qº²?1$˜€Þ"Úòïå`ñ©wàüȘ¶Î(ý|’#·³ 2‹iQÓ%¶Th9óÞÝ–ɦ.ñðô ð®_E††õ'Ì¿$ Ðö9è¦w"H|Jþõ‹$§| XJ–ÛŸªÒ¢Ü@ûbÕ+Pp’Å ‘ñ¨;]9¡SN¸¸5šr7d2U‰><ÙÐÞ=…$‘ÂÆ.3d콑½x3ßÀ@ „ñ×TJÉ\C_xZF H]Tki NM5}8G*B×Ï`qØ93á*ì׿¹ÿî’÷·®äî€wß½ýùn®yM7¥ûWH;²ã±®Žu‘µ‚䙹:7N‘ÑŒ–Ñ%`^N…’³YF:žÏð*ì•›îG½¡†BÕF Æ>„,{þ5Xl`dò]<åaúÚâc¿¸»øçÜDâÙWJÑQ:QõûÛë¾å¯SbY¯g¤HR?Mþ)R•·~UŠ=È'^ 7 ¨¶Ýže§vžðy“Û‘Ž€æЛc^I]ˆ'—1”'G±¬.6x›<`ßÝ`²ºƒ¤ãóFŸ@pw•3Ÿ£2©uSd¬p„ò9f¸ZDÅRýeQÉõÔÄäwð[Õ*†°L®øWGÍc(%ÁïË—¥q6eÐþ\¨¾°Sà 72B%¤ÏMZâä˜Ú¾èçÕ¦À‚˜R?®º¼—n&|ÎrиÛÀ.µLæž(¤Ê‚Í®¢±•ìí*n¼hÑÏà‡×—X¤®D¸kÜÜ<¿ÿÁŒ°£ÉŠ”ò3÷À·g˜g#£i‹+.yŸžz!8É„f/¼çµb8yª­'œ³o.°÷µÉÀ˜fBÿ—Y =zÿÍŒâúwŽì/\4Î|mâ×ç-ÃT&ˆþŒqËÿ¤ÏÕ«úLÔ ü Ôœ+‰2 ö—fÿƒóZÖ endstream endobj 397 0 obj << /Length 1692 /Filter /FlateDecode >> stream xÚ½XYsÛ6~÷¯PžBuB˜8xµÓ‡Æ±]wÒN¦VÚɤIJ“°Ä •GlÿûîbA‰”éÄi;=p컋oˆ/<øñEì-B)Y¬¢EZyf¶Y/ˆøõüˆ[>ÝçóÕÑñ™ï/¸Çb/æ‹Õõx«U¶xë¼®ò®]ºRJ礮–"t>-Eäè¦ÍaèJîE#äòÝê§£ÓÕî$_ˆGª„œ÷u Æ:q±hDŠq©H­?<ß;Oú¶Í“ h¾„}|çMݱI>éo‰l»¤ûí8-QÃE XÇ —KÆ}Úi's“T•ùñÃÙÅéËFÄå!ã‘°2œ„¾!¾0f~ªPNoÊsL<ó¸ðƒ@†œöS>‹x8Ñá¿°†?l΋Gš#Xà+Å£P»^81ib‘ ƒPz0,‡øqCÅc^À"8Ç®6zé*®œJßvHù޾MÊma§ÛM ºiiØmËÕ ‚õÒ%Ôu:£™4©ªº#úŠVíÂ4B˜† °ãÏòF§]qg¨‡£4tyA=àÝy=w«e²®t—§ýXÁÅq¥‹ìJxÎÇ%R^<(”Âjâ4ÉØ=–Ü)—.wt…1ÔÒ:h ›ùyÚ±¥€ê¿/#éXáÁV¤i<¶:Üü §¢Ívl¼‡eòqI¾’á¼%êÝU7it ¿áÔQè+9u_d4$8ð¿eλÍn#"ʤ3^¬f®ÐyŽžéÁEFP8wtŠÝ:©Ù¼(æ®'«)WYÃ䣬‰]°g§­åM2 ñI:˜ßükã·¶þšðXQèÎ €y×uS&Wy‘ww$ ›¦nŒÈL®±Êµ5݇5Ñ6®ÛÑŠÍ0ÞqÆBSÆ÷{/f2Þÿⲇø¿ÍßÇg°WLª@LòFÏn1€ÞWˆæ¦.·ˆæP9¯»·s™¶ð^\Ã>à?Âæ%œhïÀ%јKZ;m#)ÍMRÊh–â7À¸›3û!œnNuÝÞüýTÀ8ÆzÛA(Aº ¼bÚ(¡ H²Ãá¤éS«`•”šTÉ[º¡$óÂ`êöm£­%U†™hÞEµ¦ ýsΔ(b‚‹AA "(Í3å«ÿ)qo‡Û‚SÛø$ôit™ƒNÍ3ZÕlÍžÍéáBOÄ¢ ø§9¢íN ö+ú }ÃE‡²u]^ÑÄ÷û¸EÕ²»JïÕ¢Ú2ñIÀ¿—ŸI!_l C°¼ WDyˆ¶ßÂý·-]üPÜ̵ØÀ±IðqG,y•}–WëÉ]y¥¿»moòÄÞøœâ÷3=Å“òÎ5}“fÝ—ÚÔ˜ŽfòʮЧÍ;M$eóêt[WIASu†Ì ,…X꡼=B‘6ŽCbßál]eæî“ú™Ô6u³ñgHþ”‡þlûMÛØˆy×PèÜ^ÞlP ˆnµQöäSÒ̹Z$b‘1°])ÿ% d°ÛÒÅ{+È̇[ƒ‹Ú®éÓ®ýb4‹ `"žÂÀ˜aÿú—‹Õå‡Ë7—«ÓŸifmƒ|4š»ƒîî-=lË $W¦ÕtÊ|½±8uÅ!bÉJ¹mò¤³sù5Éíz,TØM nÌÈôHœï¬BɾZb#ØÚ½«Œ˜L_jiºHìCGY~OÒ6cúUßY`¡N‰ypvÓ"°ƒú('ÛtqCMª™D`ÿnµ¨ÞÕ©ª3¬œZÑ!˜qíäüÒŠ˜bÆö=@ÕÊUné3 UÔØcí—ÎËz½¦0‚Â’i_$iøç‹?4Rðýƒiò‚ù2Þ×ê¢^Ïm&“Q0­Ô †K‹b÷ÒÂñÞMŠÞDøm“}ÃlW6–€¤Ñ†|1 l3+ùp}(}‡ƒxèÌÕõÕèù†@ÜuO½½ë+ Š­2éߪ®àn+­±ÓÊh”Çð´(“jŸŸáÓv {Z7V¢žnÚЈ^8ÍGÈB!0™’e×ìûß{¾}Ôà4¾áú<ƒ\$kÞ ‘Îü}‚óଃ?Oð?˜˜ O>æßœãæÐºqÝ%`žŽU‘ã³€ˆ·'‡Š> stream xÚÕXëoäD ÿÞ¿b¥û@.ÙÌ#¯žøˆ¢;ÄC‹âè‘nfwòR’m¯üõØcgmz-ˆ;„úa=¶Çã±=þ9³þÄ, g‰RA¦ÓÙª: ·Û̈øá›3Áz>(úGš_.ÏQ4a…™˜-×Ǧ–ÅìïÇÚýÜWJy_5õ\&Þõ\¦žéz K_‰0=©ç¿._}½ÜŸIùD—PóqŸâTBiòÉpp{¶¦ßÂôvSÛzƒËÈˉÛÚ–Y±×ßöƒ©žÏ}-¤w‹hv$©ìf‹k6yƒt^qØZgVMWݬù|VYÏ…×tD[ÃÇwÍÜbïw³bµ7¡Ð¥ æ~¬¤÷r=êÃfƒáƒpøB"âK’¦ËWƒ¥˜c´×›ÞŶ@ âã@É4HÁH„‰"+ÏÀaê®Ç”áz FÑc¤¿Ìm'ì:C«¢kÚ÷ĉåâ;úýüÔX·mØ*ý¼¦Ÿï/墸Œ¦ìýŒAm~mΉ|Faºhí¥JxåUµX— ¹ë9¸Zô¸vº¡XØú2:ìbo_Öín rç û~Ü÷~ÜäõÀ~´½uš: R‘œúý)©hD šMÝmA:aJ™%a§œ½“2÷ÄÎüQoèµqîËf³1ÅszTj@—Ä®Â\=¹å zYÚŠÞïÛ§Ï3Ûk<‰~È»Á´¸è,ß®8¦¡¤_GѹŠh%C±Ï¸ŒŠÿ[m^tMõ¯–¤ˆ’¿S“Ëæœ÷ü‡•¸Ëm°˜ed¸éì0˜šÅ ï–§âȵ¹ÝëzÇâÑ2ä×ÇP›"p÷€BOx¦!:»ž ìÐ:ÑPòU‘ƒý®™ö$]Aƒwâ­)[f•yg×·´F{•É VP™lâîrµ+ó –í¹ê<ÚèÞ)ôù4Μoè·¿wüV­Cèõ«r(F+x§`±Ê¯l ~ßßt]ӱ΄%ñÌ€šZ†%äTLŽÌ¡¾´Ê²ß&@©L ds@ y¢LtèHúŸðYuñž3祊îA½ö G¸PjhUÙ⸭ڡ‡Ö(#á]á‹’*ôêÆ€Ï ´P ‰(œ¼2àr²2_aPÿà½kâN%ù$#0côÄÂÑYýnä4|la¡Îtôzeú©'êÓÄ˫ƹ“Æ{ÃÀu†S7–à“LŒÒöÔœ–™w1O›‰=ó.¯ÚÒà=³ý6éé(‡üé²B3Ò3²Dˆ$9Xoð¹ ü‚hSšë9 >î…L]÷$1:ižwœGMÉóΓPjjpÈBFÃÀå:utGô£cWeë~ÆÈgV®uã}dBUÊ“·|I¥y*â ¿,K³ÉK6´«ˆ!­°ë5•ó–ê¦ö÷Wš‡B|(äÝê@€ä8OEÕ?Y©žvC%º1‚.ùÁ aÂôT@Þ>Õepç”…ï‘X…©RïGY!R‡ô}tÇÏI7§Àø~É/§'?fþã±Oß›v>~F0ü‚Œ¼8ÊõG®¢£X¼}ÌÛP2OÌd¬ …Ú4¶\óÔÓÝòIéòec†0/Æ9 Ç”VÔ‹wN$(Úæ´ N3`͸K‡€°GCDš$¡9ÀñØ®ó0š¾ÎÊÉzü^Öb#ZÀh‡õ s…›¶ØûГŠû,wà ÍÙN­¡’µÜDàÔZž-s¶çþ0NPÎành!œ;‡«qìýD3+hp°£º­Í$àÑC$¬vŸqÖÝxyis˜A&Þe’—’'Ÿ}ß¿[J2Ù«™w-Ľ?¬5B<[¿÷ÛÑã?rþ•í‘ü endstream endobj 406 0 obj << /Length 3369 /Filter /FlateDecode >> stream xÚkoÛÈñ{~…¿B!Ë}KÞ}jƒ^›âÐ+Š" ŒDËD$R!¥8þ÷×’KšŠÕ€µÙÙÙÙy/ÕM ê¦Loœ1Ii‹›ÍáUJ£ýî†ÿüË+%p1ÆäŸî^ýáç,»QiR¦¥º¹»QÝmo>D¿µÍi¸1ÑÛ®½Õ.úz«‹¨î‡º±Qi‘G:»ýx÷·W¾wÊ´¾’$„|&•Z˜µ7yae,v÷P߯6ÿî Kòp‰Æ¸ÁþÜw‡l†YInröšVíö{˜Ë¤(´_r×­âU.Qà=U»Avè‰v=öÍéT·2ßɯ?Ù¾Û1Øï©²{¬™ÿ²¦¹g\³Flª;ñ!Ž¿œ›ú´F±5‰VÆvÇ]/m!Dxýu›àú›Øäi¢My+“¨Œ×½rLYò°AG°iJG¸Už»õ·f ¹˜Ç8Í ñJ»ÄåãíœIWH7:)KÕÒ¦E6ÅÝgâØö l­2¦ ihëG†íëá¼÷ÔÐÝPãxă÷õVŽÕÇC{8RxÂ}-ÌQÀÇaæ¨@dMZD§æ -"7-'A éN~=7­0¬Tˆ cb2ó"ù±ŒKŒu þo$®;óYFY.H–áúÖØ•åIš«ÿ‘]û†•ƒYuz€Ã!UôãÚqV&™RU™hmÂÀŽgÑ^”ë™e&–s ÖÜHÿÇï`$ë:BÞƒq‘ˆU¦¸ð´«Ø²Äiç!NÝET ú>®^¦÷ 3-²UtE`¤ËÙ¤IîÜ¥ãÌ­4ðߎ*ŽjŸV‰Kõú‰æ¢à±á2»Ú"4—¦LÅœÀð±ïv}uàÎc³ßs  E3Žd^Ø6WF[´-ƒiÊ$72³ €ìдhkµ3Ñlëv³hÓMZÁÑÈÀp¸þŠõîï»þ¶Î)½¯ëe b ¶(Lv“©,ÉK÷B°â¡ã|%`Y"¥Ã¼}¨Žp &Nóχw ĺM3¿ õGtXÖEÇj'ƒjI½u  º¸’zýõK¤D½pE)ùDÌíÀ`¬`l Ù(¼Ì—Û¥æeÁ.²ò:ÁÖ¶˜ vi8‚A‡þfÕT(°*öªhCDˆòc/N»ÚG@F‚ nw÷~²’‘ÜÇ^ ŸK4 7ЦàÞf¡#68Œ©NâÔÉâÀPׂ›[á$Ò™ºÎ≛ èUýàwàß1êØt‡EÐ8ºí]e¶²ybÒ+b;ˆ/Š%·ñ¶Žû 9õ4‹z`¦Æ¸ð!ÿ8èP*ÉÀÀÎØ†W¡s+W¡Á±hŒhxŽjåó „›wª·¼œÂeBXscdvödÆîP¡–?q§­k à?÷Š%°_ÎÝi ÖôTo讀-að ;£uÎ Ý(¶€Ö‡šX–ù(Lͱ¯O•j‹5È4Ú]ß24¢”ÕrÂÎ#$‚¤ß5{€X–¥6ú;*³ûÁ/dÉgÔk‚‘ίé{‹…ÔÆ= =1ö$Éh«O{ïg$„ÿäeÚÛú¾"ÝDàFR—':Õ™;ÓU߯ê‘NK ø®õÝΠžÖ1•˜ôÓ&àbnõšÏ‚”pÏ!(1væ‰üAÍ$2FY Ä`tÓ?Áø†;ŸÎ'žîk°õd_·N$gG`ýO0 Sd(0zû]l¸‹™£9tÜ—Eh¦mCªÂ`Î(+MÁîãl G[ºþ‰!Ä$–¤ ÌfS’*¸hZm}èÚfƒÌÓè_  <âábJïÇT4prGÐápÀ$°[’_{'H΢䛦ö¡)Šñ!±Å0Ç(i‚_°j_ÎXøÄ­¸ôºPòXXû—;­O§IÉ1m0.úùM•U«Ç=Ç…‹f]ד)3ˆãÅK?ܯzÙ Ô¶•ÃúH¥ÿL-S"r0±º_nml°ã÷ö36S±Øï¾jöx¼‰eÜT˜'¯læÒDWÕ8­ÍÝC5ðF›TÜHÌ ŽÚ0í¿kÚ¶ñ çmàn³4Y¹ï »dl'¶£”[ýµCé!îKÙºÃaÂ:ã¡iÊ X}Uiщ‘)ý_`ì(Ño©ü l4ã{Òƒ…ulÈ8Îr½ßàk=C|«îË«œŽNëÖ 4]*ž¿ü1XØØž7µ¬êü>Í¡Ÿ[W䌰&,šÿ@,Ï´h7¸&¤}øƒôB…ôj ¡ ›R»‡\»D³.ŒO !q+ûý‘Ëþ0>®Ÿ£} »Bù¶©vm7œš¤²•<:ròî¢á<› —I±¾üÈ™Zë_§ áƒàÄdlù/wb ñʯœÃ=Ã÷\€ÂwnúPª]|¿µ9÷}íÙÍtQ¸©öòý—|–KMÆK}®DOåô%‚AðvÞË×iÕž2sU¾ÑêÏ«_Ò˜?1°W•®37½¶¡Qà5ƒ„þXˆ ¬2|K>hŽ<ØèÀ§ÝB²Øøl¸â©óôU¡\´‚¨ðá¿E> stream xÚµZëÛÆÿî¿B˜L†û"¹è§ÄˆƒE‚6WôC ´DI„)Q!%ß]ÿúÎcwùå»( ˜Ëåhwfgæ7=±JáŸXÙt•+•X]¬6Ç7)ÍvûþñÃáèb ŒG”ß=¼ùæƒ1+‘&6µbõ°/õ°]ýýóT_úu¬”ŠÞ·§µÌ£ÏkYDU××ð+‘Y$³õï}óýCØÉHùJ–ò–§lÆSVèD(Í<ÅñæPm>ÅŸ«îcÛW¸7¬ •ã)Ü7¦Dй &O2÷Á?ú[ý‰D[Ç:ÑåP¹ŸMxÑ:I‚íÆœ,­„:3ž°=_à¼ÞÁÒ¢€¥ëž7áiŸ»ú„û_Ü·’MÝ_ñŽŸWV 3Yº›òtjÝøã:=99º*¦Š‹"1¢˜Š¼½nªm²Ž³\Fß]éç6º´üÛsç"mäF‘ÂKê½z£4QIO„Ïn¦«x°ÁÓõàƒ5‹¢jm£wKªªHr#½Êx“Í*™È"÷d‡ò´GpG`âØá©¦Dõሎ>¶<ƒz"{ÃÉ ~:®-OÊž•'r‘¤ÊNµW²_~,µW5ê„„5ÑÏ§æ™ g érs©?¯.êÏ;þU´¹v]E~á ÒZúm…;o…çßœ÷Â9ÇÎõl’gÖùÑ– 39QˆIpäú´­÷ƒF¦+:ÊÉéÄñøÓ•µM´ÑË+Ot]$BÏ`â—ŠNBø3BÛa¯Güß©´ãè±J¥Q_ïO5ž=x)é˜?»miÌ?Z´½^Πȫ߬}ÿ¼6YT6W÷ÚŸyç íSmyö·Ô¤‡š=aÁ‘ˆç+Z(Xô€ø²ïªò‚‚HxðëOÿ§êZXU$ì²Ö…ŽÚŽ¿UOåñÜTà ÒfÑ¿—4%S8^ü>4‘K‡/‹$S™§}ˬôäxl̘cwQH:@‚ 8Ô .áUAþ%%Xc®gèèôCHÛòSH„KEÿª/žªžøìÛSÅKÖeãtxEo\„›&¢°/ÃJÒ4œØ¶îÏM‰Û<ûrrHOìâ0 ÜÒñP©vCqƒ¤6ŸJÌôYø#·7õ‘¤ÉòÈIYçöͽʛƒBÑW²Ä@ăHnœ[/jÕÙˆ¬¤Ø’å¼cS1 x.(¸"±`.°ÙÕûƒs(œ§‰t¯´Yè@’OÅf”fL|¤¥Œ>öÜ_ª#E+cÜ&àÝÇò©>:ó#ºE[Ôðé»SÙ 8ã·cUžêÓ~wm˜&ÈàÐóœ0A‘r7qf§½g\µ½‚ëK5„Ý3Ï`¸zplœ[†.©œÇ#½[ÕÍó¼íù͉žÃïݽ°‰²ùkBªÈBä}¬›†×A‘Y)YIJŠÄ˜Y0|Dº²Ã3DËØªpÐ#`ã€ÁË`팲)»}Õ»ßU„ï‚ Mô°.TäVØÖ]µ¹ roXX€á±)AànheL,„‰ö¤É?ð+iŸÝþz¬Â ïÜ7H“ƒÏ©‹Ân‹h›&&h‹‘£Jö 1pÌXjçX~gy¥•…Äù­!*¾ób¡ ('¤NpŠ ðmØWïte:1…šC¦ž 4òxðMÄýŠ¿*ÊV`ÔU;(bxÜrŠdØè²ÿbŠÙùØžŒŸÅÍ!ý„$†Y4¼\Z,Õ;ÏWm.ޱmå¼ø´u¢Ã1Ù,NQÞrà¸Ps|kxvÉÞ¥J ôzªÀ¡>Z:t·á«Ô¾@!é]é¢cL÷r?óþiK³`æa1Lr0Z‚_B.Œ/P'`|·ˆäk¶w~A#Ap|“ Éèa¹X“-TÕÚýD2ÂÔØi¹Æ{Áù!™zC9L vzÇ™D‘È¡ü¢ Rfsï¡2å>€›Z­‡µ_p”÷gž›Ê?[{‡U>î½<Íg¿>]vˆKwÂî(MÚ]O§×Ћ2¾å¡£÷üî ÷ȲÀ|èr-÷”†ë"ú–ªl‚%Ô gy@Ö_ÏNêî2¬LþæØ˜¨0D5ìºP¦âtÚsα˜g`Þiðžýb¸Mr™š¸>WÀ0XγU’ê‡×.J¡%[Ì}%H3·ý(úQTÞÞÉø” ¶Xý?äûþÞ¢ÅlQ²HªË)ß­}ˆd §ižØY½à3 JlµãPÞQk-ßݫƵ˜C /OÕ6ž{~saŒ7‡pùàìù"zo-Ï`ùEÙ9VkîËvÜG§^>Ë›I!ô,EB'²é¶œL´ ¨üá5òáZ·à)Ì{)lzWjü6$ðB‡¯ û—Ø1KÄ,_ËfX~Ùú$dÒÁe¿ýS²÷Nx’¼À«“§ÒKèJV1 èÂר#LÖr†É˜_iª1°å©´ºÝ~ÃÝwø; l΃%R>žê¨«þ¸ÖÁ`j¢ÒÍ6ß·"Áu[#èž™Î7¼@ûŠé¨îMͽ¼VjE7CéÿÒŽn¸B ;õϰË'jhw †iñ„¼ÓÍש³>½½ðÝ!ƒH]Ûž|ׂ #uwTênšO öUf.E€G÷‰nðÓ)ÏÔÀÁ {afú!„äFþØ`á?!)-‚¯¿§«-ÌC‚Š©X=Õ²QTK³úåÍß8Æ·QPîÒ‹TAê§'÷Qrf•ešo£R¨‡c•©™2_ÀœV¡sŒ$|a ©çRœ˜Æòw_¹V2wøÜ_xñz ÈË&eFüIl²çAC]¹õ],9¡J ˆúê ^t©<|™¡ÂµÓž¯;´¿"QÑ®+©ð Ü—Ý¥÷ ©éþ1+Йõ³-ý >†D†r=Ër[ÎõF÷a–LÔBå1].ñ¬Œ¾‡ˆþÔå÷¼BU~â¼ÈRwPRW@FJêÿƾó¡Ð*`Ϙ¼­r-߉»Ø¯Äè •Ì]ȡξ9e ñ'ŸÜ`¼sŽG d¥“G¸;C±7rV€™fa§'ɲY’­çä‹þL´Ú½—!};–üåžhì`JžÅw¯!ñÞ÷_n\§ endstream endobj 417 0 obj << /Length 2562 /Filter /FlateDecode >> stream xÚ­Y[¯Ü¶~÷¯Xä%:%‹ÝÒ·qëÂ(ŠæE‘(½âîQ¡•¶’6öù÷á uYssÖh±"¹Ôp8—o.»~bW¥»B©¤Òånz•ºÕḣÁßþøJð¾6Æ«?<¾zó.Ëv"Mª´»ÇÚÔc½û%ú¹k¦ñ!VJEoûîAÑo²Œì060•HË<’Åï~õãã|R&å,áÎxºHò]^êD(Ml»o˜…*Ný`i46§sû 㲊>5Ó­NO9Âù†p¦](`Äãº9âui놇,MÒÂoìÏÓ|t?Ða£mí'šÛÏç‡$Õw¶C‰MiéC?œÌ„‡ìb™ê$Ój •ˆŒ¨;¶ÜÊ,QU¹0 ' qG8ÀqwË´ßž<ÄY•EaA(™d áþ2/S¼ðù¥‘$i¥¾F©£m¥TQÓíûÓÙLÍG” þÃÊ€Kˆ6ÞºªÀ6¦§Ñ?À¶ú ´7 FôÂ""×lÏÄÛåLÿz®eÆëþ²¨Ò<) ¹±—ÑZEhóøtÕíO'<ÎQM¶MgÁ¢PÑߟ,¿ñŒ€€¬âä2ZO§‰Ýë ƒ[g‹µßÖŽJtžûmŸš¶e~P?´¿Ü(=Or5‹¿ïCTcˆ™§ùÆ:IÑB-ÒÁÉ3Æ §R'QÐPËK(4ôYÞ×Ù?ÀP¦QÃ/ë8êz^b[¨èhœ€†ê5#|à0óƒ2œvÓ­Z ©!¦õ‚´Ì•7Zzj2×Ñ4Û¹;Šˆÿž•‰@ª¶Ù7† œÓÅñM`õ† ¥ˆÞB µJT~Ÿ€‹–Åìú sâ¤gÙÓyB®˜ põ¦;²Y—y"5®Ì:Kÿ²¶"‘«ðx <à›oB,ÉÙŒßIñ÷kV j{0—v¢‰GÎêrã,u*s/Þ<²†ö îµ5­~¤;Ñ^'E1›óÏyÿøÓ»÷~ Fv±fù&êlxîw8MÐølMÂTiêR’0›ŽÄdêºáÀ3‡4ðºéX1¸Øƒh†quÅâúŠ5aoP?¢Òk$ô±ç ý´E37BY€¡+ eyÅô>¼ËÚþ¸§ß es4‡7‚¡L‚±É0Ùì:’Wü“A±Rj NVäŒÊE v£iÒè¹w8Ýî/-8´q!ž^Cíá†ùõÛ!K‚`«EøÀñfï–ç2Ñ3hÂe:÷xܘŽNÿèƒN 0.-íh˜oDE÷ôQJ§‰.õ!¦Ìs˜ÈÚЉҜLžOYኡäÔ½ƒP£ ð‰nJ£}ßñ{§ÿ#oø‰ÖÌ{h½\ÝáäËxØ`g~X<;›„$DüHHšíçÉvcC\;tåÜ·¡ÒpnhºÀñöÉqq?5¿53bª~Ùã%žhfÆÍËç¡?æ´= ¶csäCÎ`1C9Gôo»Ÿ’Ð%ÂC¡î²p†e§ý P¹Sˆ†ö­Ìöíàe`˜2gÆ“®öXâ!ˆóïôb\ƒ|té€É§ôŠSz|;‡ TŠBV:W/|÷O˜æ„0òj-îI\¤¬Ö¡ C&Žº¾‹2k;8Ýz“€²3­´Œ~òlÚëºTee"K¹Ó‹Éì…ÚÔïŽWÛõé5QÇùÛ'sžÐ銿|èG Ånövå$¿¾öYgšäåUÖy6GVºT×%TιÞiüüþ…üîxµ=Tp_u\¼&>:šsé £ÚN »öÁ~?§«>†‰*K\h­¾]–E`SÆu$Ä=g}ÒEuHj-mhiÉì‡~i\c¥ì`]Ë*¨Q@ÆšÞ¥‚|–AÓÍRï] Úî€KgÑ#‚PO,œKÚaÜ"¥è0X™öÊD\·=C†‘ô!ÑÎG³âš—ìŽ8²ýê΢ö–zSÐe 8•ZîD**Üøfý R¨6ªù|p߯« @¬9 %¦J®:o òŸ•˜³ßëz:Ê:;ØsÑp 3XSc­I3á¨ÀD¨º6¾0@eØ–ÜÀÓS(|±í9Xz ¾ï_‡fNÖ0_¦ ÌŽpÁ× ‡«d€»T Bk-yñ¢½Cªš/uèj|§JÕöò§ðåOMw_ºý[ÞeÃe¸ÒÑ€{)t‚ô’BÎ×û–h¡ãsÎ*q2§࢓Ë+`Ñðé†ãåãäÒ ×å…Þ7 ø-Ø%Ôßl—Ž$?¹l(çZ—Ò¤<)å¶¥Ç q.Þ ÉûLì–2¤­õj¾”óúl/ìL‰›ÂΗqSØåJØH …ÏYØ8ùBظhøtCB¶VÚ©Áþ‰!±ã_±Ó’K0‰öDÏ'OÏÔ'×ybÉÉUy¾„@ä:sYô~¢æ˜o“i,hÉ™…vnˆÎ™9×Ü2çHp“OS©¦ ¦Ü‚kªqçÐòÒŠ™ïCŠ ª’nµê”fi¬\Û"ä̆åªöwÇþðüECæFƒ!/Öz¾ËíÖˆ:ÐN–ó>3zt¥†ÇÚÃÄ6NßrWro<"îÛzœÌðU¶¯Òâ†p+¨?f\úî®-*® —„™å3ÿùÄ%/pþýÜò~Éâ’Š‹ì»þ„Å”[HÈŽse YW·!Z…Úv{žûÒ½†²7f7ÐI•]Õiã,ø±ßöÛnÙ‚„øê`˜<ÐÇ:ÓíÇÁ|ï[Vü5Ï5A,Y©7=üüÂo…“AüŒ+е+Ë7E½>šÌõ__x‘¡"]7ðÞ¼¬9tÈŠJ :ÖÇUP)§y~'xßçCÅÿæCþmõFÞt!¹u!l,üÕ{y endstream endobj 423 0 obj << /Length 2525 /Filter /FlateDecode >> stream xÚ­ÙŽÜÆñ]_±oæ";x@O¶` |ñ*Bw†³C˜CNxìJ€>>U]Õ¼¦gµ‚y`³ºØU]wÕˆ›~â&oR¥¢\g7»Ó«ØB»‡ZüýÇW‚ñB@ ˜ßß½úö17"Žò87w‡åQwû›šjèoC¥Tð¶mne<ÞÊ,(»¾‚×P‰8K™Ýþû~¸›()_Èb^ò”lxJ2 ¥‰§°Crðy(T$ î›=îlïdÒ(l‹öñXÛ2˃^'sתæàCKÏ¡ã¾jŠÁ^íž#I—Õ­ÀÃÒÀ¸Çï>¯>¡—ºê‡×°Ì³€X'òÇ’·& Šz,W—t dub±•ÒA]ôFKWU³Eª^rµÕ”EWöó‡ÀúP>”]Ä])$´ ¥ŒÒIü¿yuÒÛ§ðP솶»ª™ÕÅH?:μúÑqjYÇý¡môƒ8(Üdý ¨?£XƒrWý ]î ¡âø0V‰–(ù'<·°Jìinƒ¯OŽbš¶ ­H÷ ðøú°NÁ&,‡¶+i³ + ¯w,‚1îCÕô´õT ÇÕW‡Ž&?ÄíÛPh…¬ ;û²iOUèQH°…‡ZåÁ÷ˆ-rÀ>cBQN?”ÌFL|È› ¢"w¦&¶×€-¾†XñoíöpÒ‰@Âg…J‹Hé<û ãä+‹R™:ŒO>Ì£<3£ r*“D™ÔkÝr$Lkq •ê\W%jV™ â½¢á÷ɇP-ŒÔÂÝ:Â=3¦xí %-bYüP‘+0¸è7_;P½]Á~Ü ™zŒ”¾Ñž‹hce`7',{“ñTvÙ1 ý›¸Œ"d]çÁ|ú¹Šb#œl՗좽•ŒGJG*Qù¢ Ž/@½Ô’,Rz2Eì/ÜÄó¤ ð™O”áj Áû†­AgQ¦“•³ôí Å“©`Wôe‚È‘I«®L’Ú`·iZ<‘c/¶(À°ìßPT9XVù©8ër:˜©A”…1FVÖëÔ?„¿?0ZzßAøã8ˆÔDpªŽ–>¾ÊU€~9çäœ^“³$9ïÆ³WÐ F‘.tŒTŠžh{©I™ÔÌ&ôüù:^*”˜è,øhà R@ú,GD&ËÜg_ÍY)\BMVÝžC1òHB ³v4ðbÌ'±±Ê«Öå±·6°]— +·l~†'°†‹oÜ詪kZí«þ\.´ç$JDö‹ÍÜü¿4gïâ¼HZï$Aeé&tz9~ÔŸR­Xê6~²…ô0öeÚŸ®´Á€ò­`džF ¡ËäëË–Y”þ¹(4‡ºöìÊÅ傞Ë/ŒŽtšqï«G_ÒÃDz»oûòeüL•äA_» S&ÈÉÖ¾¸rxIî)oõ¼ÓŽÃyhýD[r¥cK¸ Ô-•ëï’eㆱÀž„¥º¢‘¹¢w¾ë ÅZ_èAæ®ù¤‰ÞmØ‚-úÂV*ÁUik6x+z/7 Tª"Ÿ dw,w<§šÌÀr²(”vòA2+ù¹fy”µ eNf®”€'¥37<ð™H™)»©DEhC½<È.pµ/‡¢ªm‡7²Œ>YêÂÊ*_"’m ñéW¥46BMÜVÍ¡õ± •ä•nšm«ÖwÂÿðvÂÏ è‡þÖUS5 ´ëˆ Jï¡+NÝ bŒ«Ó­V)Lv¯©“JSá£9` ,*¡þð *^N‘²+‹} †âÍÌX÷L–PW÷]Ñ}&bG¹wY6s\L¥ÚtWÍ®÷åÞæÇ2–mËX-~¸{f\¬ŽgJùmÇåë‘jIá®O£1%ö¢“¢M+\üº&Ëܶè¶<K.'<ž7šÙ"äi›;ç¹ìè^ \p`ö&Z:¦¶K»öt²™ŽÃáJ ë×Nï sDs~C‰¢ " ã j=[R["ˆÃƒ,Î5Û“i½'þKFj°=h]~‚b&š˜L£\©åüÜpÕïÂkÅO¶p‚jeÑ œ§ :¾ÎS0T¹È°ÜÈoÑ*ÊÖ!ݶ¹ÒuÄñÂí ]¨Èé Ô6íÈÔ%T¹2óõß "š:€Ç…iƒºr&»¥èäRtFÉ…ÛºA?/Æe\MŽ «ÞÛÑCi/Ô*ê?S(#/Äh2#Òe1.À¾+!ˆÄxŠ’«ÕD"¾êˆ"’Ò³ 8 ʳ0Ê‚ç E?{‚7%Ç‘ž‡G×ÓŠÊ|¼°‚kªaýé›)™l3Ì{™vürþ½È,ZÅH$ŽïpÚæBZ¹îs·¤®»W¦£$7/­¤¶¡^N \­„DÏÐj6¨)r*ÈÒ¹\Ïc04š˜o„ ¹¸\Ø™^9VøýP #°<ÌÛGˆHM)ïÃ/ïï~{÷þ§ü²ßÌ/Ï‚‚c’ÅÏÿ|ö4k´6½•ÅU×6§¹*J“€*¥®*îk›èÁ²qPe„àt8Å~_M rj6†€d§íȇí˜Qâ¼Ù×ÓÇИÌ}Ì”Œ.\bìÜ\Ω®ìÝÈM@¹k> stream xÚ•X[oã¸~Ÿ_ìKe VEIÔeçm¶»A‹(š ú0;h›¶…Ê’W”’I±?¾çFÙR”‰‹1uxHžëw©n"øS7et“'IX¦ÅÍæø!"j·¿áÁ?î>(á[ãú‚óÓÇ?þ¢õŠÂ2*ÕÍÃîr«‡íÍ—àsSõnµN’$ø©mVq<­â"°«às¨¨È‚¸\}}øË‡ŸÆ“t_)r¾–)›É”i¨’”eZÆã`ùZ%¡ÒB\(ꮪ-ÎÎõÒy˜ ¿âïªUéA‹"úƒÅAÔíj äéYC˜kw<%_mˆš³ø’QéGóÔíÆŒq9ÝPgVº\0Ý8-ÃT§‹OÌU„*Ùë—UnÀñqR ±â$À>*8qˆm*Œ »e†1jYᆠØAÖ;þý÷’^*ÍÃ\Ç^NÛüëîÓ’˜qfIîÙþÀ;ö-ÿîmσO]ÕWîÀo- ž…üQ¬Kn†˜gIðp¨âZåY˜å4Z\'€ÖU[‹±û<³©°µ½íŽUƒ&Âï]×yÄñ%cÛ÷U³—Ý(¦à×Rv>U]Û-AiÏO+¦«Ìcm]¸”6÷ÖÎVeYX–) mê¬|e=÷ú‚}ýç›ÊáBH 8̹õå¯- çë-ÓNf/¨’ª¹ÀIT„wÀžûç›’À’Ë;NæÔ£¸wÓU§³.ëð;õ2!aw4ý2ÄJ# ðŧY¬HM[W®wסٟ*‡À"m–j-Ð13ðe¥ÞÅ*/’[e×wÕ¦SNÉÎûátê¬#@Õ,"eO~!¢«ê3öj‘ó ª‘E¼©:žérNN˜úb5æ°ŽíE>tö·¡ê¼‹¤nöÓŸcNˆ¢‹ìJÁS¿Œ‘Ké3†²Y)ÖÎ.IŒY§&ö‘Ë(É]p¿h´¯˜¿LÃ¿å ¹Ðeíø÷ÙÚAøzêa¯Hç®g¢÷, =Ÿ³èUwusðFÔ6v]C¹îÎz&QÐ6d븄‘h+&í„ièOCÏ4쳸¤Á˜ÿ73Ý–g_C v`™{Ûò/7‰ÀÍM¦”®2·í¬ßÀ.@ák§Bhj­ƒ?£¸yDÎÏ£y¼3ñõb¦WŒùØ»P`Yj†s¬YòQœë0+’k "˧A‡º~žûm(E‰žy®÷©‡Ýøkí‘þ©JàÓ«q½_¬?½wÇ÷Pýâ”BûÄÑ•&%ú :Ìe/•%¤ï̦onr]rËE;xp¡¥F#và`á–yŸÑaÂYƒîû%Õgyô¶÷ (G ¹IK!ÜLC¸ˆЬtí¾32ãZþ¥…ˆÇ–>›p)4kÜ‹°µ²¡sƒŠh4‚F„]K€°PÓøàhÖypÀv20Ø€Ô`ìGé6‚ob ºµÜJy“%lp÷ãbäC‹”Æ…7ÊXôiáz ÐoÇKx‚H“•3 ùNæ®A…:Õþ(Œ‹"þÉN³™fHy®úÃâ5"ŽÂ<*ÏB?IØ-š…©¯\ØáÎ>á¶ÃÛ{$þÙVîT¹9 Áè>ð,Á‡ŠÃí$ÓÓ+Cã+䶆͑¿s”¬çšƒY—·n«M[S¼ ÐÅô„Àˆ[Ë6;¦ì0©…gpש‚ÅË$CEðÐ5ò6Ô"´œãz! ¸ÐÇù$Û7Ê ´áÅx÷gPzã6E¡†üž6M¿-7M Q˘ª¶ÍÿsÉ}þæé@6ͱ³…À…Š¿qL7ü×’Ûà[v lǃÕ×ä½Ðñ¼ßза¶nÍ–»•q×½0ÓѺõB®8¸[;~; ‡Bãû//ôù!s|—Ôôò÷hœ½•+F³ñ„AKL)‚ôÙƒ§Æ:Ý1‰oÕÅxC{3Àb¼ Jãë#ã°•)Êg˜±¨!&7¤èò“Rj•½ßºA(•c ^8WN&¥bº|:(ºe*õ†Ôž†©Ö–—¤2ÌU2»pÑkxqv…*.ž‰áƒî"ª¼¸‹ÀGuÆ“ö? ÓKš'Q§êš¦õ\©¤ÒɆÏ`‚ýFi /øå(;»[Q•8rulDñ5çmcJ‰ endstream endobj 432 0 obj << /Length 1101 /Filter /FlateDecode >> stream xÚíWKã6 ¾Ï¯ð¡»]{õðs½tÛ-ÐKÝ,Š¢íAI”D]GNm9ÙüûŠ¢œ8‰3=Œ)Ц>ÒüD†ÄþÑ "AÁyR¥e°Ø>§m× ~¢Þ.¶†ñÈò‡ÙÓÛYP’T¤¢Ál5v5[„Ÿµ2]sÎÃ÷ŽXî#V†²í”]Æœ’29‰þšýòôÓìtRÆØƒÀòSÉZ$Œf©Ç”—iByŠ˜(â,gá¯QLÃÞìzciøÉDœ†ÇZvç:2zÊ“”èd¶‘ö-ÆÂfð`å…€˜ çQ Q¢Ö@Ĉ]Š/.ú%n(Ï}”å¡hUÓw¨8€•€G¯é;¥×þf»Ú»¨•pìŒMi—Dqš’ð7e6¨×ÍÅþˆ ‚¡<¡Æb\,öbáiXG4l\͗ΫÂGc³QC¢òq¢X™”AÌhÂ2Ÿðol¾Yö®ÆÇSÜß·­Ô‹#šÉ¯‹Ðk‰«Vû=œ¸j›-JêF˜ç?IF>úsÑI« ¸‚*ƒ'#´Š ‹™H'a|ƒ2% »V®ÔWy£×†ü‹v">–'œ0tÿ{Ó£ÅFìå³ÇÃWfÉÉô ´ñ¦[g—fII‹ËÄ}‹EB(I§2û HBS–§£Î(¾ðuãvÊå•ygkùJ>áó;|ð„„eK|ÿštq‘&9øsåÄê)¥(_˜¢]÷b^Q+ð1W…ð¼µå|´X¼ÃW æ'Š—æY’[Ž<*Ž÷²7œ—e -é`Šü·žçÞ¢v5;‡0‹H¢|æ}W Ý=Oa‹iÅì—~‰\N¼ý?×€k§ |° '(‡Æìª˜¿¿`à}ÖÜy’é“wCÕs^·¬¥/ÐVÙ>x·¼Ì\ô4üŸq9=·Ñ©“2+Ï,ü§WÒL9µ¨i~ÃÁ4Ï®ßÙZê:¨[X»&—æÀÆÞ¸°@»TÝ®ÆN;tfP6ROâbp=dÃy§*¼†eç‘‚äƒYgDë*=­l[ïuZ-¶e— Ï/¾ßÎrr$gyšÆ?!,úN¶Ðüm«Ç ”CB@tRÛ«…ÅCwòR®D_\¸ 8é@¡t`±V{?¸3ñÒq'é+<Ø2A ròŠÑÁßn§b¸ªï—iþš.úPß>·p]ŸùNy]˜^¶«”a+·Biœ!ye+Ò}÷ÚïúÙ¢®œX©ã|~؃ªåÒö.Ï(t¢k/ix¥ßÊV-D/àˆ[÷Òr°óiƒ-¯µB+‹¹w×ÞT«Ü&ލÚÕößy+Ë#7W@ì½ò¿1¬y§ÖÚRpì,\,vo|8Åß½…ÓÁÐ`¼ÓÁ‰^ש]úÑ66˜0Lo•a®šgùv’‹Æ¥jô“èyø%ô/7dÑ endstream endobj 435 0 obj << /Length 1340 /Filter /FlateDecode >> stream xÚµXKsä4¾çWÌ*<ÔÚ±¶lö´ÀBÁ( 88MF¬ƒeoÈ¿§[-ÏØe7¢R·¥Vw«Õß§ö°M lS¦%DRÊbS·W©î6$üôÍóz1(Æ Í/n®®¿Î² K“2-Ùæf¿4u³ÛüýÒ™Ñnc!Dôeßm¹ŠÞoyéÁxK‹<lûÇÍwWooNž2Οj^Æ”/cb¬HŠM^È„ Ia}²……Y4Qt(ÆqݷǪé•‹½—ZŒ |ÅL$,£å*IY*WŒfÒ„IžËŒ³y–ç‰HÙ3ݶôø=eÙ~|m:BnÄk‘•¦ªPÏõÓw:nL§Ãû“YR0µvò),6ÏjÿÖ»~ÚÝ ksúºjH·î»÷¾NðÁ=Ê÷ðÝ]È„²ï‡¶º5HSC?\nfU òÙÒÝcÅJ&¹³˜%¼P´âû~„h…äÑx¨F’îº#©Fp3¸FÓÝyÝžž=0$5ÆŽ¯P”`Oû(V°áL%%Ï!rçÿ\©ˆ3Te³j Ýàgg챩0¬» ÅêÖÔ}3ëY}¬b:C®DÂáð– ªQïˆG0r’ú==m§f´É6–2‹Þ4¶§ñÛmŒé Ã=þ«7$çDÂä“)™ËÓ¾æ¢ d@– TáEÀö®§0l÷é8ï€Î‰Þ¦£¡§¨N„ÙU­W1{Ÿ™<ØçëRz@[ý´ÅÙHÿ­ë _*z°¶1‹ÌqË¢‚q ù:@Ê8¥ížàÙ=WNîô¸r°‚‡;j BO…§ÑÍÁ…šÚYg†õ£uDùéy‘FÇASœ®Ô]=àðd]µ£8`‹Á“di™jQÌvL¸–%ÜŠ­OÂËðfjL×^UÙé1Y«-¹÷ ¶Èp‘>B&fØ*XùÙ´¦©†æ—eE¢¤zêpKJÌ9ÆÃÔx®ÖÒ,a%Bˆ[qr®ÎÇ[Î9 U| ·dÊÎyêz´fƒ gI&O ÇM‰4úÖ{6>*Ó]>zkÍm£iK÷ñèDýäaÖ: Zû‚Ée¾¢¢o„Q±O?˜™iL‚»ÃF`Ū½‘ÏxÑý–BB]ÓÖ|Nc?VƒÕï“_æ§jß¶×Ëe:e. R²Òô“¥K€nÜ<÷pðs®Q@˜ªÈ›€ôá’[oG#À¤?8нX+…àg¯ÀÞ¦­Æ ±(:66Ї=AÛ¬L¸ç5f9u(öâê¢È–P*[nÊ]²<ÉËgÑ v Ŭù*dL%\dg[MF‡M¥ J/0õ¡,]ÅÏÖ\ªn÷Ê”?·5ÈʼnxùÔ§q.Ö ™¹s7Õ®Õ)ˆ PhMÒÐ ‚|rÝKÆ¢?'×ÀpE¤¶Æ/s¼2µx¾FšØ÷^ôÝ$L/—ti½én·öqj^ØÇVfîWÔÌÆ(‘Sºhܵj¦òy1ÞY&.Hª8zošfž献Üû¹åQžIçQØÑvoj½Œ+/ñ Cmî•îqu53ö¹sA>€°ÕRˆe ‘*Ep(Àl)åÔ›uDîËF[û¨]¢.0Èûq¡àV+?NýÄüd¡OÀñõÂîÿø‰Œ~þäzÑ'Mx³O~û¯™ë…Æõ×ßÀg™\\:pÆ,÷¿ 0úÀ÷ov;ú^Q2úu[B_? ĺ?Üw$|¥!Möê é,ø ½<Ì endstream endobj 439 0 obj << /Length 3590 /Filter /FlateDecode >> stream xÚ­Z[sܶ~÷¯P¦¦Z/MàmòäÆqãNd9™Lœ¶Ô.WË —Ü’\Ëj;ýí=7€àŠ)8Äåàà\¾s ø"‚¿ø¢ˆ.2­ÃÂäëý“ˆ¨ýÍ7ÞþåI,ãV0påüóՓ篒ä"ŽÂ"*â‹«­¿ÔÕæâ§à][ÃåJk|ѵ—* >\ª<¨ú¡†îJÇQžZ]þ|õ×'_^¹¥É޼ÇS®.bj“*á)ÍMkÃ<Å*Œ/WIªwY¼,Ç’[¯ê¦¡Ó³Ááã"Œ•íjWÁ„4޲JZe»aÚ¡¯ÞG±ùX Üwå(k¦þš±NC)X›Öä¥öÖ*Lc‡­Ë–—]£Ls”i2™XöÂØ†xh« 3W·–—SÆa(Fá”æ2`L‹ :BöJ¶hˆ5Õ£]зuÓðGa;`üp6>ü†GÖ`Q[nN* Cš¸An”SQ¨bý {Py˜êt²J$ “,ŒÒ‚¿ýx™kÚ]é˜Õu»nŽ› ;pS› X.&ñÍãH'-$×2d„ ±;å—БØïCÝÞÌæ¨àŸ‹O›*wðÏ,ƒ g7I˜Ç¹ùTNÖí÷¥(úJçQ¨ód®¬ î~A+F˜Pö¹˜)p‰otª‚.É@œ¸Ì Y N®>–ûC³x‡p7ùü>›ÄGûɦç:ó–D9ï'W÷×Ý×`ü M¨¹Qìé$tfæ‡ò+ô…†z¬V·õ†>«`8p{Mµ§ë£03¢:àX‘H{!pDjÃ>dSÅ÷!¹ÛòïhÇ-_}Ž·¤~ÏÕ³Úƒ`Šl~Ùp·cµ—SàÞ £Â2Sðý£Â’ Áª4í'w­£<¨åk½g+îzX‚¶ø¡M€{®zYáÄ{Àô¾:4åZv¯Ê¾©íà®EW¸àÑÈ=åIÀÛÜa'½·4|§Ãñ8é“ 7Üsg€ÉâÂ€Ú ’@tÖ³õÞâ)éÀ P YƒEƒ—ï3Q¡R¿ë>iQº»•Xr‘‡‘™¡ ïVsqñ¹²,)ߪs¶j¸â{r«¹šÔ8)TðC=î˜Übìn¸]OèÕÒ. #yÉ[ü^ö-¹9š6ðïMÍ Mø+Ù8»åÀÕW3±£6©˜¢ŽXc8’è¡-q*N½°äMÇÈš‰s‰‘BJ3@ :‚Òø<ßÏççÀ“N£0)ôxZ/^pªÄa»r‹æ!±ªs“ÏŰ/a9‚ë]#›»ƒÒ ASqÎ$ø,ѯ:oܲƒÂ˜¹÷|M8Æø8ÆÈ}²Œ˜Â˜Ã`”œï¹GVtÛrGøÀfݺiµ Ao±®ŸÇ@Ÿ„­I‘ý “×&1ºsù>ˆšÄOH2væÆÙ°ñݺqž$휯Ïn™_pî(Eb}{a¼PSÜwé+~â³@[¹—ž=K!ûÆŽœÈrÔ"™1BP£029ñ 7%6-œfÛw{´^¦u1ƒi.0ëÂC"Ø_ñÕj/^›ÈÁõÜõÈ ·öz¡Uoù×ó*p«¼,çÛÈÀj]ã÷JÖ"ô#'ð(©¼Õ•J£ ©[:¤@ï£$zNµò¶êvîeà¡ Ÿ¡!{öC×’méÈJ## A»Z W»Ytèxø²öó¶š™ÐLu‰¸Ž™ÿ·Ç–‚àR±@gàñb~ÕžÏ^}¿;2ÈÓ]¨™R¯M=€r{Þßel³tÚ† Á÷-+·Ý×Ús+H=0ȱbå¨bÅŠ=?œ@xM\ÌãÉÕ7¨C£ÌêÌ&Àî7}¹GѲõôÃȱ¯Q©Ùñï¦ß´U⮟ Çî’†9wI]65Zg™q¦a–;Õøê›7_.¦¢Y˜7Š£Î‡zeÃü}lÞw­‡á²°J’‚QÕå5C²<¾iùÓp7ާ’aÁYðåM½î»¡ÛÊž½B‹Ð¤‡yú˜CE&¶£6¬Wdÿ°ªE'ûRôx¶´YJþà½SÖ®Ó“^Žp샭UæÉ’©è•¬{îñ-ãï–±K·¼¤•ÐNÕL/ß¾þ~QIìßðòaCÍþbß¾¸úê ,"W|“Œý>sa:ÝÑ»ï¾|ûíÛo^½þÛ"w“‹@ÝI Wñ˜j"ÙI)€Ë©‘M‹_H±_Êþºû²²Ÿ–’Îy7½Sÿù$¢í{)å|±[Î=¢ü¬ª4Ì•SÅ7?¾ûúõÕwg…‘‚.ŧÆçò)C®Î$T ìŒ1±Æø9J‡ ~ø‰ñ“ rË‚èkε u!L™Ù¨äÖmŽ2Þ®t0lb %éuZ¯ìa=N¸Œ”¤>„ž€Ah-€ÁlAÕ •Gà/·%ÞM3rßBãÌ^§º)âóÔaÝ×"6ü‘`*|ÛS~L«TcY7L­ÛÓ· —¤À¹hPMS$¼wØÑ+oøÂ;Ìé¢tâ/vå`+2§ÌÐO/Ý_a|£CÆÁÏxaà6åœÂ˜{¯41yóÇ1.ƒàûdÉ©œyú¨ãÊ<: Užº—Å/;/ãrxH‚¯«[nxO>Œ ñíôXóð³Ï‹)Å”ª²‚%ôgý™@’P¬6< ÑØºöÐËMýA’^8D4¡0†=Vÿu¬Ùþšª]sq2 ¾X)v<¸òf¿Xl`—ƒ6SòÏ™*ˆÙ:’?,†…0S™_†…¥ÖÈÁ®ìË5è¹ÜîPÍØŒeå–è"ÃRìYð÷í®ê­£hg¼ZÄçbÏ@».iñ_†¦v¼°T˜…ûÌIÁi&.мµyø¸ |‰±5vŽ5Q~‚v(Z@òWò<à5ý-RÅ/¾è˜DY þRº˜úⲫʯä¤XƳëñV©åe‰`)‰¦Ê‹Û-“D£†úº©–‰`I :~D*½ÿh’jªyqÃ+8ÊÌJº2€,É4:<­8€kß`pÃxÁDB¡-£þ›Lªý (}ƒƒ¶3¸T?˜£gž+°Ä™%¿ïµÖÜvMÃhÕ¾!Õ2‰mN÷ [©Äç1ì¡_ â{$êŽÁ8Õa’¸²Êg2`XlOj‰:ĉD=–â)AªØ5kÔ4 %=Cm³óÈ>T ]v’ŠA'I4=°O·[ؼ¨Þõr£‡O®Òaÿä­2ö ÐÂÚ‚Â%BŠ;y¼Næ λÄDžÆéM„»Çb¥Ìqµ2ìP­WX+Ⱥ€¸=ã Vs(Ç9m-V…s÷'§Ê–?”WÏ@bǃ¤ Ϻ%‡kÔ°ÊÌ‚«0Ñz’Ĥ°rQ®ù 4âb¿åZb  3Wrß^–ÝjéãÇd ÙR@§)§ÕÙô%ÈgBB¸9i)}è¤1?¦öëkÐá¼ßÖ¼`1{9ò³^2;)«²žÏ¼u¨²¼é½öO›Ù³_Y àLfœÍ®>åbü”‹=ÿ”‹ý÷,æÔèï+Úãûü1œÉdºømFñ¿Gñ:Õþð`|Ë$Â<È#éÌÁT¨uöðœlÝɪ“kÜUœœ ÃèøN˜ƒmqQ7ß oש(¬BCP(´JrÄêç°Æ,Šß64f¾ê´Ü}Åehÿñ8'• eÆQÿ¬˜&a2‰ñÙãqbư@6?½®é­;숺zJijó<ÄT²-fÿüñ0t[…Í™m7Ç^ϼó»åAÓÓ_ÅÊ“³üWÃÊ›¾<ìðÌX*{~n=öG‡YœŸ½ûÔœ½û÷Q-q–‡f*f>¥û(X>f¦êñ.])wJI–©Šœž~Uá[ä|€ÿüúÞ`¨ù„,±{kQ²BþÓ? "¼+á ý2–Ë8æ.â·e¥ËL8½å=244Ù°íZ»ãÖ±0ˆ¥C¶&Åü™æÙýAúؘçFž ¼÷“7aH5¹©¯=È2â§\Îàü”uKšìÔàkÃM=’3Œåj ç&ÞÞ [àÞÇÑø+9=¥E¹ÙznŽ;΋MðoŽõÿóyP‡ÞÔ¡éØºÚp]-™² Ì·ùg{©§O­ÐW!àÀßÉ7?³E¡ÿ~ /® endstream endobj 442 0 obj << /Length 2767 /Filter /FlateDecode >> stream xÚ¥YoÜÆùÝ¿BFLÕ&Í9xõ-‰›6}h€BE4E;ZŽ´„¹ä–äFÖ¿ïwÌ sm%…͹ß|÷E‹›þ‰›*½)”J*]ÞN¯RÚoxò·?½î^ ãÅÍoï^½ÿ>ËnDšTi%nî– îê›Fïši¼•RÑw}w+‹è—[YFvXÆJ¤e)uû¯»¿¼úã]x)“ò…(áͯ㔗:J3N¦«áeÀ˜z—ôètÖüV’~»‰¥HÓ MkZ™_!©`˜ßZ´û,:€4.-/ g*pÕÙ'ž\Ø5âDÏ¿°ÃÉm¡«¡¹C“κ£ÑÁŽfâ™áa°õå0‘cÅekM=®Q™Ž‹óМš©agL•®\!‡Þ(1›Þ;ÂO«Œ''3|¤ß×¼~j&weßü´NtÔÿõk³¤ÅÂ@¿msöóT2úМl‡1¤µãÈ÷ú÷H§+ljÏIà)iºšTqt%µóÐs(¶Cû|[êô&UôFð¬% ×Ë83 zÂkÃCÛs0?óGL>8]ʈ¸œݾGÊ“rÖr†²-d’é XOMÛò[GCê³'¹Ãb¨wïmÒ…‰*QÅÊ´ÙL•cñ‚`§Õ§¯,5+×Âçr±ð ‡6‰‘¼»¿" ´_ÄCä*Éu‰ +ã_ìpßv« ÍW­±ÂÌD¤K'†O‚ÿs)ãÒCLr ÓIV–km²&üVÓrhôë†Öz£Ø$ò[etGÊWAAsâ…ãÌ óôS”3ª’(\Ä„½Éÿ¼5ã´Å&ÐDŒ^ ï,=¾˜Ñ…_2Bœ‘e˜ 8ˆg!>{/ÕtNïÝ:˜ ;*àe¥õÚO¡j‘ψ‹9DâÊϼpV†SÆK‹Œñê™Zƒ†‰ÇûQ§”‰–!~{-ꬲM¶Ž:¼çò›a…x0|­rŸ´ÏKH^Øe¥eW%¨¨yNÒ*"{0l!y~ÍBÊ2IËâ«–ªµÚºaêÔ#Ûì'Þ‚X4–\QŒÌ†ºèæýp2÷­Ãj¼œ0gZPÄ\ħÉ]Þ[ûœT!f󹚦OµrnÁ뛉Bj.ÙHs—mZ¤+ºå°‰çÀìzý ÃÃ}Ó™á™ç¿pðÑ:‹Ôw%=TJ_§m™õ ¬•þ¹-Ó1~žFÈNSù$XV¯ êb­^TÁd::!àK;5çS#Òܯ­Ûqö€{þŒ(¤ R4‡ ü÷Ò-еžÇJvS‰¥Ô¯ÆÁu= b+Ó"º£ ÃÏA¾u‚®|·ìœK—i¢ôÆÚœG<Bµ!î”’cNve™ƒžÎ¹Þ‹d‰° |æjäÀ¨Yô+N;ûè…¿X«1nq°§ÙÐp‚A°{„éÊ!Ÿ*áùD|­G°´–….¸Ç„;O”GðÀ1s'Å’"ˆÖòÃÃx6»ìvT.¾#УýB_*±DUAÀ¿‘…à3S‡-çp`†~èã<€#mÛÐÐqÁ fdï âKÏ1)òDHµI-9Äcãa ‘×lm»ƒ[»"þbG^sÇ &'ã".ûßK3P2YEg@˜úc@`75ÒÏáŒ&øWtœoö>ÓiôqR/•`óýé|ñÁÛEup (’²ƒ#ލñu­rÛ˜ÚCdérS÷0c®5lTºìÄÜ›á*Üm=…&b¿¹HòtÙ±yûsš¥1<ãn¿++YlÑ÷U›eƒè¾À$],iÁã+mš_®äƒà™Hµ©ùBª-+9ë–¬0õ<ãbKF>7ä\„¡ ¯@55·(àªámt-”¶ŠP\Ê9mõƒ=®-K÷\ ©®å. œiZ¼ †Ôù6¡ßI|Iåæg)íµÚ*ÍܺÏ-sÏ%ðÆ%ÐÜîØyÀþ ŠzóèòhÃöÖsr®ƒåâ<°Ô•í”üÿ„…(UFX#P4Ç”ÿrÿ1Žˆmx½€×("0ú`F˜/½ø½—{¹|—:jpàì¯øÆ‡?»Ö-…²:¿*o&î×i ¥ÇcÓyœ´kn©ùÒŒvs‘]ð›=RvŠgMwh1é¨-¯C€ (ð&߯ÑiR¨MÀ÷J”æXg½é†Âf—%•Zö¼ß¾(P-\€>\½íö0ýDF©’²ØTO¶ƒ/½\c×8ÔÝ„¥¿f=†åxìßM2“á3D µÛŠÏ#æ ýÉ3ÍŒPAlÇ?ì+MR¢v.Q¦µÈ¢×·qQÂø;n­R%Œ““¥ §Hކߤt‰I;Al„ÚŠ{Ôמ€= á·¿1˜Ú¿±îðqÜ=ø ›/yƱª9 }ì` ç·q®Òþƒ}h:»Aö>ía|j:Šì+O#h²ÅØ_^2hñ`Þ¸÷Ʊ¿ ®•îoŸšnó‚k¥óݽøñq‡`ðG¿îòš%?Ð b:1Ç ¹;ô$e†8Üpuêï?,ôn—¬rè(À9—ÛQ.ˆåÓ. W_vàv…†Ig²tüAtt!³™£î‰)˜þìsö½eþ‰ °Æ"4Ó‡ZÎ<üŽYÅ tM@EãZg¸õä# iƒ‹VÜ`|Á§‘oðk§pg®‹3‹j3éwÜ3<\M4µÌ~]ýÀèã18s9MÝ^>iÆÕ«@z¿Oøí-/¹UåOe8åÍe|wÏÌ )64²ô•ŠRVøÕãûþÿè|¬V(:QÎ}?]ŠÈUÉ%u,žy¿>–Hz?P)KŸSЗ&%ç&TY–3§‹>^)–}¼R\û\R%ù,Ä£ib+âýîç6¸•ýòK3Ræ»ë˜ùa"Y­ 髟¶ñ]Ž<{,I67žß„¯•EøZ¹l©bð…JÎ}sE¦tøyEáž|õ½ÎY*ŽêZ]R¤«º$ñÿ“âJ*‡{ endstream endobj 447 0 obj << /Length 3082 /Filter /FlateDecode >> stream xÚ­َܸñÝ_1o«ÁNku:bø!Ùĉ³À>d'ȃ½@8’fZ°ZjëØÿ}ê"u´zw Üd‘,ë®â„7ü oòà&c?WÙMqz´ºáÁ¿þþ&”}ØxXìüËý›Þk}~äáÍýãÕ}yóÑûw[Ãí!ŽcïÇ®½Rï·Û(óª~¨azˆÃ K¼XÝþzÿÏ7»w_ÒQôJ’pçMYt*?VI$4%™òÃX1MaäÇ·DÞ_«OA¨Úº}RRíýܵMÝV¦ç)¤mo ls?Œä’¿t§ O„Þ'pxÅÅm^èykÝâÒXõÕ02Äô‚¥µd¼…y–{]Ïga=ô^naë Gg5»Ã7€æ§óí¾^õfœ,V¢(» (ô`/€xSºZ쇚o6âæg:AxAd‘N½ñXá óÞßf±gŽ}Õ+¼9ÂL[òàǪêiàÉP˜¦’qaÚ¶•|œÊ®•Ñ~ó«­OçFÆ'„OÍX„ĶÝ|yËÕµB¾×£)Æ®|ZUÉ•‚ ~yý?Ç ®ªthQ7á$öžjÆËK†VcÄòÇQ)ª5’ž#d˜ <|äSf`èE¿’¥~Eqæëuœ¨©ÛâÈ6ùZêFÚ+N{Š™$~k{î;w…T®±’áàÜwĨº$>"¨nYqøA¶aYן ß&ÎP̸Gzªü,N-Ó5 Š#?Ó™Û6 jÚŽ×bøÛ­Öži&»¹ní/svGÓTç¾>¬ä4‰W‚!™#üž*0EPˆC$¨ÖÊ£#f„Aê'¹^s£]x !¼ã±c7NfÁ™Áå=Nmœ4 ƒ×º‚â.HLxuð%]ýáê`Èó¨nÑK€å£™‚œ`صWõ{áèT”ùˆY‚3VôÕ¼S%Žª”½ë À C–×Á9"ëFÒàg‡Þ‡‘W*ùˆØý +(,DÙWO¦—/Çzج$0ZuL2ü ЮèRGÁ5e=O–~ìO{Áx”dùÙ±:ß tðÿ…Ûèï>†oú•ew2uûî#D©ÜOÒ»ykoÚ§êÝÇ`úr> IŸŸFÉZ2ô¥ïñrxf>WVOïyô=ÿ c‰Ôñä­ ‡“D2ã-Ñ8âh/úòÔ×њƌM/ù‹S¶á(U› kEw Ð‰S³>¡ÉêïPö‰]£ÞðølzCAo³9]$}³F´k¼l,ØÜÙ5˜ ¬vUQ#Ý…±VKœÏÂÀ…ÍÈúB²° šZä˜opn‹c:o&y¬O 1üëë•)íy[{M”$ú/àÛ=VÙÊ€_+${ ®?Nãפ? ä/ÛŽsœ¾D¶­ö2 Å"³â ”å€Úê™øuºGêݣ땳˜Q dÊ©¨$¼¦‘ŸæùZ¬lÞ45}(„À<@ÚMÂR±ýXþùi:UÄZr;J 8{†Š‡+î@!%ÏøN¡w4ó}]ßWÅÈ“²†36á…«cötô¹†dÂåVâ*KÌS8_ª[ÎL(;ë$©{>Ö.X/“®åmÐ…÷ |t1TxLªòª·%ÅRi¶­RÎŒ t{ªñ@âyóȧr[gˆC;Ž»¦¡\‘ëµ’¡õéT•µ…ýÊGÑbfŒmÇÐálŠj`gˆp‰¯W³/p(:ö«—0¦ýÁìq÷L@ƒsN• ¢+ü#8¦b¤"WSXeÀMà¸$N¢‚ ¼Z¼(»Bá ‚PW¬D % =í ½ù£?W/ã±i…€Â•ߘý^”»~WüåêsÚ³žhø ©îQ||@Ž|µçXÁ¢, ·95ÄÕºÝ`_jº( ^®öØÐ¾çÖÙœºÙ(1<äÂÇ(»"|­ü4\×É÷ÊÕx¡ˆò ó2¼^YÜ‚]J… ¿ON¨?\¡I¡{’(ƒÂ9ÙP3øÉ¾ú2aÜ[Œ#í Ä9צÈÐÑXœ,±Ûȇ­^u\lLQÚ×a¾`1& ?‰™J˜©2“A@¥­h±jË>ˆ?»Æ¾(…t+tJðÓ³ì%ƒ°Ií- ˆº·Áã¹~ÎÂ9Î߀B€¨M·`iŠÈPí"(5÷¸ÌëKÌ%«BçO%+ŒLóŒÎ€ËÁa£ùìâeN…ü¬dˆ_ VǦ¢–æ ì~ªÚª7Í‚¬g°1œLV„jG¨Æð^òÈ#*±zÀ“]XUÚ2"ñ¾L† ¬G[ÜáîÊ SÏ“¹ìƒéÌõ¼BM‡¹4Q‰¤?;—ùÅ9™Ç¯Òúµé†Ö¹¸‡YÕ¢– ûF õ…~U«+M\O޲øžÐУ"˧úžû¼™'í, ‡ŸÑç0•¹GÌN³%ëÓ|%]ÊÐrΊ$¹ }j’/ Ñ4®•bÞ@uøÔ.šYëe—YÇÖÀÀ¦á؇ÚKö¥è]¥Q.]®×P icת–Ü­ä#qìþz‹b4T„’é%[¼´º7˜³j0Òg8ò¹Ú¥ý{APåÁ¼}×á@=ãç:ÿö¨ƒ)- Ö Üul3,†l]Çù®‡©D4súvá 3?ûÃüÝ\ì~k±¼Wí.¾Úô—Nº©LÑ…Tú‰"#¤VÜ>¨Hï+ºöðÈå /¯ ˜QÈN1 lÕ:[ˆ®„–$õó<þvA#B2.ø˜sZËïI…,yºf… îHŒtë#Èq²u¤ÅWŸ»Ý*æ$Ãöˆ¤uÃïEÝ€Z‡}")¶±ìé½(²‚TêQ,…¸üDOAW_耋ËþøõbÈV§y"—Ç«غ "‚ ¶\Þ òÄ>FQŠÆUPTVõˆ&.žAp/÷béå f‹.}ž’Pt0·ýŠÜ6òdއ©‡[rùÍ¿^AqHéã&¶*J›†GRòd_Ù!éTÊ©ò‹ëQ‘¹îh#¤fÙœ}Ǩɭc)ÈïY°Sš.ܧì‘~2 yÏ>‰YèÚÁ·¯±GÄÉš;„H˜<6¬aèg‡'~÷_±WÜøÝ¦æ¿Ld¸áùO¹aìÖSþÚ‚Ÿd?eù†pJ‰ya–e@X£./”Ã\©ä W‚³¥+ágbÚc?8ÚëbÑ•<ØødwRðwò»ŸSnߎãä’$¹Ö‘´á’|G|øÔNê$Ÿß’qÒêqäç‚|Îa{Sq£Ižs`çd¿~ŒûA]Ç~~“ #Rîip›¡ÅÑŠKÑbûqœî½!$ñΓ¹Œï2RTàK>ß„ô½åÑÞ«?Sž­”Æ©^f©;×Ãö½š³K ¼3ÁHj€$¶ïqñR&/ Æ÷áÑ‘<ßwÛ¨=D‘ò“@­‚ܦ#Ž¿·»EöÔ°H¬þ]ø¤0;sAùp( ãþ¼ë/¡¤›ý%·{øƒ|aüdYçÆ>Õá’‘\Ûáߘøü¬ùa\;¥íÞñ¯û‹\´ÀÂ4Åi±­®`C¢vñ läÕMtMY¨(ŒK+UíyCµhoÊÁŽ·v#UŠß¤Ïî©PÅñïjrJÃ[tÙêš$bL`Òü5’PËÈ%’¿úTÖ endstream endobj 348 0 obj << /Type /ObjStm /N 100 /First 870 /Length 1673 /Filter /FlateDecode >> stream xÚÅYßo7 ~¿¿BÛ‹,‰%A¶Y†]W4°-˃ç\cŽøÇÐý÷ûxNVÛ—Ôö]¶MO§£$òãG‘’‰É8CÑ™”ŒxãS0>\6ÄÅÆ32Ú Ï`X‚ÑŽ!&FØ/ÎH’Ê ›äbdRÔg29“2%eˆáÏyL…oÞéœè=4°h ]¡ ‘=Éx¢T&õŒ¡$EWÒF„–PG¿ä’Ö*ÒA˜¸èèäa¬!¼Õ“’C£`©MR*‚½Ag§Ä°Ò„¤æ¢›2†Ç¤ÂÙ„fM˜$GƒµCÊP;‰ YÍÀ*ë =Er%ÈÁf1rZg,â©@$¢UH!‡é°˜.í³¢MY¼B ¹Ò¨ ª¸J5à!œØNÅé˜6Šaà%ç {¯= 8„±ôà»a,Šz9… À²à%è !‚ÑHÚÀ_*:‹Ó¹¼‰ŽõSF1@ˆô›H¢ ¹pÅ2T&¢¡Ÿ [L„3¼ Ð(ª\2±tÆ`ŽCÕt墕a¾Pp¼):iP 9bbÒD 'OR °ADmC$‘6²‘¬Æp)ô &Á¨*x0WR ’:¯6Tsö&i00ôH¤Êäœa“´»(ï1yÀÀA+æh’xWœTƒ³ÙtiNNÌà,F“tµ)¦<4á_¯/¯^UƒóÙè¼^š 3øpzfŸêÏKsYá“Nöéﻆ7u5x‹‰ëér¾x^ >Ö‹Ùj>ªM7]?ÖWãá›ÙgsáÐ!—p‰e†sŒS#w?ý©¹Ð-¡Qì—_3¦g¦«Éäò+21F›Ñ–Ü>»@龉¨‰tßëõC#¶ÐXÏ~0ƒ×Óé S]4[Ÿê²³d󽜯þX6ïïÆÓ?«Á›Ùüªž¯çv—ªÀš! 2çb|F|XÆ>㳑"¤^7 ›Á÷³O3x¿9­¯ÇÓñôæwÇîýl:Oëá\_~žŽ—‹o˜M_ðþ:^†r¶Öï•óƒñý†Ã=¿&퓱V`¿sñáKÑ•úñ"·y!£$€è¶Œ‡ë5g%[ ü‹`W¤½QÄ7 ¡]dÏFñuÓ:›Ðö¢ÈQ&lD·¬¹¦5ÆúûF;ô³Œ,}Á–¨)™œEaÔ3Ö×Ewf'VPR •ÙŒœ}²ââK¨‚:Á65%ëE³{´PçQUÎW· ]y8½ÒÇéøúº†ám}]?¹Êa¹#ƒúÆ”%]“×3äïZœN®kX&ß',ŸÇiÛÃí‰=íéŸ9²kÛ“;ÛS^ÞnÙ“CW{2í¹±…zW^þ‡ÅcNmhâaÐׂF€f[F|¶znÛ'POjßnâöøö6-Í´ô{xÑóm¿|]¨hñ]-a? ;2ÂÉ’?®<} ²/TëŒF›^å8zmT/…ûV+Š!Êwìט6é ´òãõÁÛÙíÝd<.뫇ü«Ïï>ßÍëÅb<›¶²q9€ÿ;2TpNÊa¯œÁ QǬÝÑ}zeÓr_îLæòõ3»VnfǨwJª ßï}êfÇ6SDlÑ›©„*1d½bBáš%ä°i>-ÇÕ !uÿ"•غæ²4Ä©™mIüT<ÜÞ¨˜õ1àevqo ìÊHð–¹t®H·N×Ï|ŠfïÚüÉù“úòÆã¼EžõfŽ Që žm~b#{¿º­çã‘:ì§ÕònÕlcg³ùípÙò^Ïbm ýÍ4»b¾¸ep¦#Ú¤w¨ááE¯X©ŸóZéGoSq‡–óüZ}½öíü1Û3ƒøà„š<@yÔïf77÷Õ·ÃÉh5.wÓO·èÙææ Ÿ° ±ÞÛØYå—gäÏMúÓ8´J3½•?† –†ðÒÇx¯mtewˆý·&±5Z ÎfýµËeë`|$oSôOÐj4œ´rHHÏÆ¢®ØRëŠBzéÈòûs"u¹ÆØ¬áûJÛSg‹ù‹·e¼+Ö{þŸ+\*m«S×"é*6°}M‚rÇcýùÓ{+éñ»ÃÓárØ$ôñ¤níÇ”ðÃñ2Ç&ýÕ³C ú«z/¿q;>ùÀødÞe+û—8™p»8áØÙ„ýGϽ2G8ðàlü7@¥ endstream endobj 450 0 obj << /Length 2972 /Filter /FlateDecode >> stream xÚÙrܸñÝ_¡7S Mðž¸öa7o9yË*•Jyí 5g˜å1æ!YyØoO_ÁÇ«ri4šF£oZÝðOÝ샛,Šü}œßÚ7A‡ã þñó%x;@Ü9˜?Ý¿y÷!InTàº¹¯\R÷åÍ'ïŸ]=·»(м¿ôÝm˜y·aîéa¬aº‹T§^”Ü~¾ÿÛ›¿ÞÛ’0|%KˆùÇ<¥yì«(fž&=OYæM'ƒÔ«W¼i^-&^ì;œow€Ð#rîM‚ÔÝ*¯”õA–F»FO= ý U ª…v-¨]/ôo“Ô+šº´úÆyæ=Ì“òk¯(JÍNE¾JøÀǹ fLãI¢(×t>˜<ãR?|O|„G”‡ˆr‰‡~ôaòiƒÔcØ*YË…ÿ«Ò„:ö­lVê_ƒ&Àw¼Ê’‡Á¼hH[à¦ÏÉŒ&‹@·Ž?°ÿ–I²ÿX±¦»r¸ {ÇÚzâZžCq@ÃÇø”]˜D~gë‹"é$háù’Èpжà§> _@ÈÁÍ™ðBw¸qŽžHy_g4A3-æ%·¼0´îJ 9iÙ[H7ý¨KƒÀÉÞ .‹¡¨#”Ê":¦—©bÝš¹Ô$¡)^Šõ ùv2à07] &¬2âI–ÚÂ6ÌŠŽŸ½(IgÖf  ë©°N£’c¦Ù€Ü6¡Sl9ŽÌiråH˜=E{ïÇŽ‘^rƒPv®©`Ωƒ ˽̬uzÄ„z }ÌÛøCåßådIãeÜ:ðÜ-Q¨Ÿ»’xÙgÌ ¢qTŒaU'&~3•Þ\5X6¯;"§ù“½.@Ÿ1’ËÉçw¼p%Å¿ènG‘ø6§;%‰ÿ)÷qR®š¨Ñº!·8êÉ JÚÊÇ€?N€Á"0¡@u-íü±ÁÓ1k£‚Ž…cûÉ"0.™pÂ…  _IJ‹s.,Ï-!SOoCÆGLôü]áå;.ïoÅ¥$‡0kÓ»ÝîGüm³ßAÆ`eȪ#Á oá2¿c!GTf™¶s±úš°*äêî;Å£¡5úâ†ýÔ³E“®Šn {xÎ÷Š«]í÷ç‹ï¦×­uéžÇ¦Ú‹±‡a?Âl|îz®ÞÚ‘!Ì? `¡©;. ã|)Sò¥Ñãó@6ðX—¬w±m)QÏ*6}¦L^·JHM“¿ø²|ÍlM¾J=0•¬„c¼Y(îU…Åç)Ë‹3…Iÿ0ÁmRƳyäs©0ƒí2 U~Yíü}3÷‡‚#wúд1íbê2¦Äû¥—é öLý†üp.JÌ8Mý,UUÛõþÏÞ-€&Ýž?lv~rÊç¶9ªdöS̾ÿr„êIo÷†ö~’Fk•¬ŠÓ »“®§kí¡¿K{ˆ¸³HÒúÝBW„”ù_"ÿ*Åþë endstream endobj 455 0 obj << /Length 2473 /Filter /FlateDecode >> stream xÚYYܸ~÷¯˜7«ƒiY÷ÃëldA<Œ½GbwV«Û:v<Á"¿=u‰¢º5kc1Àˆ,•Èb_U±Ã›þ›2¸ÉãØ/“â¦:¾ˆÚíoxðÏ¿¼…o Œ[‡óíÝ‹WïÒô& ü2(Û»»Ô]}sïý«5C¿ÙÆqìýéÔn¢ÜûežîzÓmEæÅÙæÓÝO/þ|gwJ£è;EBÎoË”‰Æ Ëtw0(RzÓsìõnlpx»SÇĪÓj0ížgŠí©mL«•ðŒ ™'µþ„ Lùh@jzgà] Çæiߘý14O²mw:ÊNò±þjzÚtg݆±¦|‚‹@¹f8œÆ'EŠ6-H‡âlj7œøU§Ï›-@ ïpÐÌqêÌÞàqTÃ„ÝØV¸Aïo¶I’xï6Eì‘rà3ýUϾEá@ß™«ï¨ð ·ð³2yß~ø¤ÁWøÂöY”z#:Æ›ûðõ‡O0bêuªÝë7÷Á-3!©~ë|…„üx½Ù†ðÂû3Àê¯> ³0þöZš¿îà   '4ÀiäÉ£é8*ÈÒ@èŸZtØÂ{:2TÏNït·$‘ÉàiMF á÷¡gÝ(³»ÀMs¶̰¬Až’T U‹oÊ¥ læzD(*&ƒØôÄÕ:-–zâñÆÎMcU×,*ŒÅ ì©s>uœ³”Ì×ik]3é¬:M:‚ï{ÝóΪ~~´°rè=ò­~Ël´ðµk“$Qš9ºÄ™w8Åu~µ>”¥(¸eÿ+J‚ïìšnÜ W‡…÷µž²)‘…¢^Ø?\OXÑünЉÿ¬CXúy”Ã7|:}<¿[sSðÒ,Î&¶—¼à‚ì“ê46µ{g@ĕͶ°[šÅKwß©¨æ Í€ÁÂÁDáó¬0+1sÇ_AOâQ5c/xòÀ>ÂÅní÷šyvW€…±!Ðta€oãͳG>êb÷GŽx‘GÓ4höc3°,FWÉSwÝt€#»]¯örüǃnW}"Ïü 'k® G~”G[?¨n0FCÇ~\”Ëcÿ›zD äÞQ‘Æxr"«T•´«šFÈ z8"÷/ ¯f­‡ZÑJ3]1Û”ä#Jo´¾@C±Ó I˜ètldœy‘Š(Fë/8©O­–ó%Гe =ÁAVPüpP!¯âÑE çI>§/|?ûZ’–Œ—Ÿ1EÄkN¨ÌG¤¥Þ¹£Ù/¦Æ³"WÅîé–6+@!k ¼5î’‚ƒ©ÚŒ=U[ó€¥BJGQ<;í„ÊÊtU£áŒEˆ~‘|qÜCM7™·_,Òèv0O$yeÚ3bë$Ò5R£ð@õX‘Íó‚‚"ÊK”XÉHÞNÃr ï¨ ,Ñ´µD‡Ùy&‡ÍÅ$ȳ ªQTúQ-èÍj%~œ%¬âÚý™­®œLKš{ïA?âÊ•Ù=qúqÅ¡*…]4Êb?-³¥UQV‹¶z{°sð[ò–ñˆðþÀ²Paˆž4áʹÓü'5yÛ=S­  Öÿ>ˆd¿AC!Dvs%…Ùñõñçh½4 Ó‚ÀÈ»Ÿ#[”á£ÿÒèÎë¿:›¹8+¢í8É"uçòHP7ŒüVÊ"ïGqa®ÀSïFWKóôo¶ O¥ËX±@)1Œ¤y‚`޶Y<×U á%ÕF8±¨„Ã&Ð~E=ú«Ðé©xµó,N-0‡Œú±Âmò¥rT­ø>RM'kìÕ¸×ù`âj£À*“ÀšÓQÚ®"‚Áœ™ Û«P!Gïx{÷—€ü×'ËS \8e.МݩH(¸}‚ic¨NÀ»5H¡O¢pÊàõ«c°„Kê Ø:&],Àï%‘Él<¡dC_Ùª8˜Í†Öð²l:¶h‰àÙò²Q²ÅxWì†ð!û_ÓVÔdd&šþû‚?¦ÏîM+1*ÑøAÝ )°4KJ-)™H¥%eBŠâ‰ôÝ-¿Tm”ãs7ÉFÐä¯yúÅ\áØc­íš†~š¤ (Od«xÂg€[uÔLBE³HBÀøÄø•¨A’m)r.( $\ì"m™EÝU)Ž ï ÕJûI˜/|™. ¦š$Yé9g=Ä.z“¬8ÐTTKÄÖÜoy½Ã%–Y1iæ~Uy°…Û]Àb|Õ© <ÜGÌͽv…Ò, Èú™âÚ·"qzÔÆAšçx¢™"/¹H’¼tY HCÆ‘ÔA^œ¨aཤ 0[8/ñL*Mžé“‰uPØc±”÷wÙ±?+*`pÌ`‰;Ÿ¥H ,˜åÚq[MËJƒãU»$QìG‰uîOßaRYáUæK-lE·1wúQÀ÷Áuå>µhÂîç©ú€Ùº%1x‘íIv§ÓýçýT]À¦ýªüyá¥ëW°<ù9>%c`#ݘÛ=ÀÊSýÀ-5,¥Ÿý Ù@“y/eûÃoˆUrö,/ýI±©_Æå"J¹¯…ࢯ !õÔà@BF {ÈdxÐ,°ŒŠ’ãœÎʰSé<Ø 罆ì!`–s&¢MŽG…90"®ìWÒ o•…Í興% ƒT§a"õÚH^¦s¹fAº…D†M 9e Ò-d–“Bˆû´þ–S8ˆæ–€Áw(j’¯œ\¯ž c£Nð®R°–¨¨Lyßó{6Pâv§8SÝ~bá.Ómä“£®ÿ8ýz÷ÕóKÄ endstream endobj 458 0 obj << /Length 2080 /Filter /FlateDecode >> stream xÚ­]oãÆñý~…ÞBÃå7ïзMŠ´E_‹âš kj%-,‘Ê’<Çùõ™¯%Eš¾Ë…svvvvv¾GjÁŸÚTѦH’°JËM}~Ö6 |ÿ×7Jè¶@¸½¢üÓý›¯¿Í²ŠÂ*ªÔæ~Íê~·ù¼olßÝl“$ þÜ67q|¼‰ËÀ¸ÎÂr›¨¨Ìƒ¤¸ùñþoo¾¹oÊâøwŠ„”/eʯeRª ËM^¦¡JRë?ípG³à¨?š· þj›ú ‡ƒùo”E*‚ÿ Å‚k¶* U¶8ù¤›^NÚ†ã®,…Z1ù˜" £xÆL¶¿æí,¢ÍíŒÃë’†‘ò×Ç5¶kBŽÏ{UÖ w–Ýf*,ˆ²“¼bÊïö`º(žÑ–x.v 8•6†Wš?kjódÁT ;'ÛíÀ=êZ $ÆoÓ ¢ë­ûÓ3¯Î-l´­oÑ}4g!7Ø™£ òÉžNã¥=ÜlñÐqðD‡é¬üÓv!è2øý€çÀK¼±ð7"²ã¯3?¦ëÍŽ—ûÖ1Ð 5ž:òJó5r+†˜yq\æa•Ð$ì@qµb¯$ó*õdòh¢\³»;ëÓ DcïKTæi:×Êø2ÖeH¤*…pKç>q·ï <,Í‹@ïv¶9 \‚²opÜb¹ ¥Ú2AÆ„ › vÇv8호iÊúÌ+74k*Jâ*,«b®#Ê=Ûm}4õãšÂŠ"LóØŸé[ÖE ’DÉ\l.S£™Á[ªŒ‰€q®uøGšÄäˆ$E#ð¿5q•‚;TõY“Æe˜'¹'ûŠ9>’EžŸP–Ö퉇_ –-×`°D ´&I\„U9*áÚJYyÂöÒSÇ«fÊ9´Çû€øYÆé"ùH&Hã™_ & †P± c!R µ=›‹ øq';î0åéñÝ)ÒÀÉoK€³K‘7t–oˆñð{°½ÓîYNµg<÷`·+å¡Ñ"v~LYB|)«@w¼w_Ê+ ®ÿó áãºÙ1²®RÔÄ^2'xÉXŠwàŒQĉEnÔ®áçÂÊ¥£z¿–5©ó™£‰nNR—r zÈ"c÷Úž0Ò4øö¦jÇ$æ}¾œÌ+É-”Sð}ÿfI¥v퇦f½â Ü#Y×c¥þ 5¢xsgöàj;^ ^§Kz|&T·lLy|5ÊïPx#еgþÔWßËÐwo×Ô5‰Wà¿ÇŸø;Þý“Âÿò²÷äöQÌ’Ðüqíz™ú$ëä‹X¿¨õe&˼þýÐϬX-͈ìËÒ-T±bQŸÒ8 .Ž+MKª†ˆ9-"À;¯÷!³ldž@IÇax9Ÿ8–Cl:NE Ó|ºHó¦©Û…1Žj~š*ôå”}8¾ «TÂ6VPdOyÝÑ^#Û#7ÊÕ†â vîþùÃw̬n57€ÕNw¼»3=ŒiI ¬øÅÙP¾í_´ëm}2ŽýUbÔŠuJC"+Gù%|´µEmù O%è“ Œ"Îöo?ÌÞ‡4dh~凳­]Ûü(q 9·£\âf ¥Ùõ2Xñ¢rä(’€Y¶`<ÏÎåH aÿ ¥pU‘§­–¤Ÿl‘‹ÏGM&S‡ö;£& «jŒ´'î’°7"CXn<&¤Ž„mw†Ú¨«¥[*ªdn¯{ýp2SêœÌ7åÙ“®%»Â Áõ9ñ#7À”nÄ‘dRÓôX@D+¬©ñE¸;õÐŽ½ô0^4Û„ìøK¹Ž6N/WüÈBxúsÎ Ân1ÖáýWKvÎHûsc€_Ò0øgcÈ¿,$6ø‹Œ=öùqUx³ÄUéÍÒñF­Æ* Pºmj¢”{ ³ T» ÃD¢ÂRTÈÈ—¼ååÛtþ—íßB¨ endstream endobj 462 0 obj << /Length 3231 /Filter /FlateDecode >> stream xÚµZYÜÆ~ׯØ<á"šNŸdÓûd ¶á ˆxóØÌöÌâcrÆ«5ôãSÕÕ<·Ç»2 ÐôY]]Ç×UE‰ÅMÎo2¥X®íÍöø†ûÑnC÷F„uX¸™­üúþÍß¿5æFp–ó\ÜÜïæ¤îË›Ÿ’ÿ4Õ¹¿Ý(¥’wms+³ä·[i×õt7Jp›&ÊÞ¾¿ÿÇ›oîÇ“Œ”¯d W¾ÌSj5JOÕùp»‘Y–ü‚çÂòt¾\fL¦Hß/þËnPWý9,]P6‚m†¥%¢ESb#Mªf[_J×ÓðùàÂ|]ýjé8YºŸ¹Ðp$ˆç†r“ìÚŽæÜÇâxªÝ[èY»¢7œÎ,‘[‹e–§7¡˜0ÄdÕ6üv¥tÒŸ‹¢+iø2é«,ε¥:,/:œçdŒ±ÜF˜Ì$‡#²˜JhuwǪ¹ëÝÖsÉü­·«#ÞSpž<¹¢»+‹§»+®\Ž—nWt[Ü ?¯Ü¾;£È<»ólŸì-˜AQ¾Ìÿ¥ÿ­­C{{9Ý©OšvcG~RSG|’óÎbf¶çg°c®¬O/¹??ô§»s?£F=ïØ±3êЊ)OÕ9ù1€Ìº¶FÃóÎQ£mê'jyÃÅÆe±¹‹–Ä“¾¥1²DhÌmŸFŽˆ—á¼`Ûá<ú‰z°Ò‚¥fôË»¨ë²Lf£ç²ÛÖêoéJéŒ)+—2ßh Ö$ àFÝüIu¶­¿ÌCÕ¸’F A+86Û°·©tÓ,µˆ)l¦ rí%‰£ Ö¬$ééíè7.¯L1Òð.™”Øœ£ì-Þë± ÊS¦GÈ *H~!Iˆ°dÛ^ê2œdç'¥|8¥i£À+9ã\‹Åšr½ `Lvgç%ﱯ¥UQa´ú ÿ'Ð9ö1NR»2$/i8³Ú.\è+¯b€ØþRÔ^sjn"Àå¥ ­sK¿Ý¥‰³h€úxè ³7›íÁm?ÄÍ Óf¼Öp‚kf§ŠóÐ C£e*o|dºÊ?"Ãô4K­…¿Hž2©WþBPÜnÛ0âX<ÔŽËàZ 1)ŒF–Y•aiÞm˜Êä_§Éåèºj t2üp9Ÿ.讀±ßÞ‚X‘hÔn"hF†èäkDªýeW\êóÛ˜°eÀëRÖÊ œC§Ã²Á+z¢ß¹È‡Ž·>øuÕþ€Ñ™º}µo*t[„؆Ëj'>¥€Eÿ½·šñ°ã¸üP4{8Tá(‚‹>Û›\0™å‹l³qOmãšsUÔQKÒ`I£óE…–±TÉaÅfC—ˆÑÒ`É"›hm´”>,ŠÅ9K§µ›MëÕ¾Ù]ÕvΙš6´'„C/J“%÷hâškÜth¼Øéj [(\üYx@¼Z‚PÀ¶á-°*[Úv`f£S” ¯˜cx+Dém5ðjÆE®@¾`± muõ! ΓSâø¥G÷Ã1t?ñnŠmn€1? ¯ØÇ(Ì+Í2._6eÅÒlDŠS×î»âè/¡;7àƒwcy{©Z iµÂ'ª}ûOØAÛÅú€Æà“„ë¶Õî)l£‰e¤\çšà"8è¥w9âgæ_ZÜ„¯þF|‡Éüð)§˜©‘ô`º.úó3žŸGvã”á ažÁƒ)ÚgÔüSÐ,ZÇp߅ɸÒD*™Ö¯‚F!x6±×0Qé‰ÜKÐ ÑŠDÆ#bä„"Þ\=CÝ`–Ã[`¢CÀ a–ǃ¸Á t÷¶+{ê’¦*Ùw®8;‹Ã°÷6;xߎ–…õrò:¤y j&¯Ã´#Í“‡aºs¿^ªÎç/@¡£µ+(×ÇËynçÐ]Jމ‰¢Ãè!Sɇ†@£v¥‚aÈó•©«V -Ì?Ëu­_²Ñá„þ)pó‘at¤“[WS”Õ…È‹ Hy¡ž2¬ÝŒ‹#•%AÏÓ»Cq:£K"S‚ÓïOß7cdÞ~ ¸Ë(Íêß¿ Ïh\ L±1¢4ëÛ™2•jˆ¸r–é—î3¬ÞÌ–Gn´&:„#ÈBbx”j¶]EÆ mšó§ºJ’öÓÁÃÆèVCjJ{©3Τ±CŒËE¹³@Ö¶?ž°\†˜E燸"gbq}œƒûw3ZþÍhù™Îmñ‚í¯Výîo[ÒT&³«Á¤„s`ôšsñ àÁf>PY ©Ñ„f4D¾e(2"GåxðsŠ0“R†ç-T|ààýðB•³çÛq¡âÌÁ×ûl(u û¢ÜÙ$2>_\«\ØaÅO±ôY1>6ðbŠ}%ŸÄ¾’J!VO–rºà Ja¥cy¤£2"6†¬Ý—MJ X˜bŠ~D=gbVçÂIúÂáïØ‡BÁXsØHÀ7µúT÷ÓY³iéãݰg5`µó/[©‘C¹ó ¨«ÞóâC>G¤U`’Pþ]ɦZÇw¯2n 53ì®}Ç|™E˯Ôx*# ™<œÿ6*†<À-.#Y €¥F²y`]p»TÎ#©5ª´ž>Þ(­úž†`B¸ Ïä<Ù‘árŠË9 Ä2=iB㓬SúTªCɿݚ\ðº˜FA"¥ˆ•²êOµÿ$öX*Âï—0ЃsÁ”Ûpn^g[:ó…£>0ò §ñðšØ'­ÑËîL,0öJÍ-Õc|B…Ô%‡¢ŽèЯô9$LîJ›Š°'°€_/ÃI>Šœ(«…s«L’"‰Š2¡uá0¼â|B»©ªûvQaå ¸‰Ù ŠÒ)C£‘Ñô¿6ŽV#‚aiHºòLÙ°¿Ý*–›PÜÈâÖÇ3¬HLËVÆ„Åìžø§6ùV†ÓŸWØÑ ñÊgJÉJf”ùÉþ !…,Q3µŽ]½äÌÕ0”¥S5߸¿q=]i_5šû`žû’»2³’;žÖ»óvoÄõˆÖÍØ¿µÚ—½@èOèJDJ$Gÿ±rܱJ³`A<_IAæSŠ>½]6š7hÀ±\ÌŸ]Œ ñSjâŒðÿ+‡=Ä“õÜ PãQ"¹]OÈǪ®É¡çW÷ᕽ{ Ž¿H büö! ´C°íiãm¶§~x|=Ø£ŒóKÕòË[ÎÌh_FÕ±À(¢¸70‘ÊA@.¬ÖÎ Ò¸7Øõ›5÷,¨Oø‡1J’ÃØ¡”4( ÔJî$Íë½=§2Ê÷ÐøÝumåI6ˆÿí /¤ endstream endobj 466 0 obj << /Length 2563 /Filter /FlateDecode >> stream xÚ­YmÛ¸þž_a (¢mc)Ru÷íŠæÐ~,öp(î Tµe›¨,’œÍö×wÞ(ɶœõ¢Í1I†Ãy}†Ò+zU¨UnL\X·Ú?(Zíö+üí§ZèÖ@¸žQþøüá»ÏiºÒ*.T¡WÏ»9«çíê×èçÆýÓÚý©mž’<úò”¸¨êzÓµÑÊe‘)žþñü×~wJ“äA‘ò ™´²ðÔ®2gcm, ö|¨`{e¢]ÛËÇIÔŸžÖ(ÝÆÿ¦´Ý” TÇÅ~å‰o6õy+ï…ŽÂ¸ê¶ +'äQÖ̸¦å¾ÿþim“"ú'ž„ÍæÂmb«,ŽÄü£Ð\(ó$?!oäºH£a§TÞutéÊ Ž*XÓDì–·Îò¸HÛß½cã^:‰m(×ð’¨% S¬Ö ò3Rj‘ÜÙ'•µ¥îmäÆ˜ªg €ÉÖïýÀÃÿT]‹jŠŸÖY¢ÁIĶ…!*˜ kÔ徃a{>ùf¢e¿!h¢Š™Füm¥L²–ì˜m?tíé@–䇾çß²®[ôЊ®-/¾øáÀ£M{<ù¢ŽÕœ0µ jÖ¼ÝpÀ0°¹‰úóIöëh¶@#.³Ñçü—×Jôq$ßµ´y>mŽ«ÿ’€ÁqÙðï ÈàËSš‚àç‘MÇ2 QÕ¨ôÆ‘ÿùÈœU½e¢¿ì>êò@eƒ$iÁÛÃïl{˜:ˆsNC8]Ž}|2 n2ÇZƒ$ÕÞ7=?e%Ó6—ùt¾¥È€V¬â} Ac u'öÓ<¶n Á8[r­c›Ž4Å[yköbý­MæÀÖE*R7¦2<‹KDóŽ}è?aJQÑtr$­Áq ß y¡ß«¾žH?mSÍ4«°=÷`’ž)ûêTvåÐv2Gýˆ*»À‚EI¬õ¾#ω¼ÛŒa³cY*\éý¾á‘ßô§Wž´²ô}ů’oÓ««&f[¸d¥mll– -@¼¤ˆµñ@ÔΛ%& ÖÃÁ‰›W¡"»“3²X[ýf)¸LnÙ,eeþò Ú§jPõ¼<„}Ûóp:²Øâo¨Öqæ'%?=Ò©ZÎÇ…‹sçÞQ¾DŽŽ·XÖƒí”ä¨&!…ƒEà ü©ÜT· š•M ò¢ŸÞ}]v£^8kfYœÚô:k"ÓLß‘<[›÷ix±€èÏØà+—ïÓÀ9OãèåP5aM¤˜åTœÒy2¢¶÷ƒg»ï"òÃ]WaòøJwà ]òBÐ" !zU7ÊÔˆ’òØ¥ÙÓ"„Ô©>÷0¿q^æL ƒ¦Ú——ºª?×TAŒ+!f\,gž\àLùo@ä• wl–Æ*-ÞÝ¿o‚íú \轜½ [‚½#F6sŒÌSŠY7ó'ÙÁÏ„A]í‘Jæ¦p¼Áñ £´@°ä…/‘ã ⬓±¦À˜ÀÇm”n}ªù²d„耤ö¬i;èãàáÜÉõoF<øc}“µàm9ÁLI #ª¯åñT¦"Á,ÆL ÀxÇs¯fCþ‰Ó)·ÿ~w·ó²—W׌ A-ÎA%ÄxÁ¤ÇЇ5ýP~©¾ç!àËÅg¤})›a¤ÝtíîÜÕmCÉbeÓØÑ&³ÿÀ´NÑ¿˜ ôÓÍ)® @ÔÕ!wAú9–ûÆtÿe%7âï‰=  »~à Cðn¸€ T_Œ>†> stream xÚµYYã¸~Ÿ_ÑH0X9kÄK”&OÉfg‘<»A&ÀªmÊ&F–ÓÝûëSÅ"u¸ånHz#²T*ÖŪ4»Kà?v—'wZˆ8—ÙÝîô.qÔöpGƒŸ~|Ç<ß·3Î?Þ¿ûøY©;–Äy’³»ûr.ê~÷Ïèoµí»ÍV}ßÔ®£ožE¦í,L·‚%YÉdó¯û¿¼ûá~\Iq~£JÈù¶Ni&c&$éôm£Ò¨¨³ÙJ¡£îØ J5NÓÈvDníáˆôžÈEeµÙ€Y*¢¢Þù\ì÷Æ›š¾ì†•)ý×¶?ÒKS7ÃáHÔî\ìŒ_®o¼ÀÖióÍîÍ$ ¼Ön™ˆ™"ºóf‹~ÜÙ/ “N˜ºqå'vßãÍVó<úÃŒDÃ¥€]Ñ»xàçg8üó|¶»¢ªž‘”GCgFáA~þdö[’ר:8 {**/¯YØÁÈcáÌuIùÈh×TéîhÒ”ôtR‡&Ð,¤1ƒè ŒöôtÀÁ¸>N– þ“YmÓ†â-ÅY V¦ó#°½¼(g=™–Î3M&"©mƒK~â[dä60.\Ñ‹šÒË{7åQÕÔ¢‘[Š–èÍП‡³1WÑÃÐõÏ“sê3±ÖMmÀ#d‰KÞ®³]øÂ¯øïÁî𛯕ÿ ˜À‰,^Ò€_ÉÄÖT¿@¯:; í7DÛ_±ë}ç¹kzöAVØ!Žˆ¥òôñ_Á–K‹þN•V·Àd—:lÚ%*Ö|äøÎ«Ò¾"”ËX¥,|ñãÛ2±¬±œª½èuÝdµË*¡Èç˨Žý"sýT•P%‚g]÷¾Ð±¼·,0þ© ¬ìWô¥!"¸EfÍL¦uœåY°b»õ²VÌ•yœŠ±5gl¾°æ¤BsÅÕVý™æ£ÑŸæš?³¹?…ºR4¡HæŠÖn ÎÂÊ›5kÚWÌåi,ó4|òùf ­©K?)D™£y,2qÙ…}¿9OÖH#GXÏ)xAÝMNɃm«¡§ç¤‰ƒšÚAMœeDøUA†K/§*!x¹D.±SªS.¥ïN^u¿¹µG@нÖ=ªDœ¤â¿Ûä ”@ï5¡Á5s—gBÇšr©fùpuF•äQß¶¢ 쿚¶é¼:­·±ÎP,¯ìý']³ð‚ °ƒØait)À°Š‹ Ö5'ÓÛ“«4,½€¨H)ÍãÆÇ§!î8ö Ž)¿:K×°:C ïë;qc±)¼ [ïu÷³ ÄÛL§§tVWøeŒ²X‹Ñß¿½)Ì ”TÅÁwìDÇ2UK÷ì ÀÂ!ÍÇè`òúè\ÉJnDÖØ• °ú@àû=–¿•Ìæ³v)8¸Ú”„’&çvÚ,þ<‰(«£·)Ö<é4D_¯XRÄ©]ð~u30@‚JÎÜ„âÃ2 ³?Qš±“Ý9€_‰M¦ ¦%ü}œ®®ËùϺºsÛ%»l†ÊOÃ9Ö/·Æ÷ù$2O;¼MZ9MÏí$¶sª'™G`D´Ö tœL moËbG-ÀÍgl-.Ýuv9Û¼ ¢/Ÿƒë‡(·™w=]äå‘N’„F€*µ3‹ we¶¢þ‹k'9»vº|3ßó©—³l½™gpæKÍ|¾ æ"Äsð\§éöyŽ¢Ö.ª2Y½}OuvžºíÈùêµkdJsìp³?vå~E…++&y¦ôô¯^­’á²ååÑæ20à0ª¯Æ°V¦¦øpuK|Hà3Á \Æä`|¬f7”¡BVZ–ŠØôf°ØGqÃ%صýÉ”šlÃOÁûââÉŒç)K¹J¹¼=X,8bwoŽ#,æxêÎ pOïg¿»àÔÖ»jp7Ä8+èÑ™ÖâG=ÖÀXã¨5xè!÷LhõÞ8uµ%<ØñÉŠCñ°Ó=p¾ü#mÏþ÷€ á'’ÄÿX¯1JŽ@7ð ‚!*à8võcÉÅC‘Jº1Ó1º18öîÔÄ-CïÃÏcÿ.ÿó: endstream endobj 473 0 obj << /Length 2785 /Filter /FlateDecode >> stream xÚ•Y[ÔÈ~çW O¸%Úë²Ë7ñ´ $›€–YmVÙˆxìê ·Ýò˜üúœ[•í7L„—ër®ß9§Z]ðO]åÁUE~®³«òø$ j{Ń_ß>Q2o÷‹™/¯Ÿüô&ޝTàçA®®®Ë­®««y¿µõ8ìöQy¯ºv¦Þ—]˜y¦jxÝG*ÈO«Ý¿¯ÿúäõµ;)ÃG²„3ÌS’i_Ešyz‡GwkZÓÍs~ï z3LÍã0÷¾ÖãSÍ·Ò O½)k&ÕBî‡Ñy\™Ón‚¶•iQâÑßíµŽ¼k{ÌÙ&ÅŸŠL9Ê^]ÛÜ£R@ȽŠ|3ëÈ$PAÂl)¡Êý(©4§ª‡SSÜ˼•&¢ÔOóÐNìp¨Ÿø›Žø÷†™î‡À­ ½Z¦üpªÉb7µ˜NBÀót‡›ÜuY4L)»v Ö€LïŠQvípÐɦŸÛ}äk˯cg—Ø`íTŠJ‹1ˆ¦ËT¨M…oѬ^0o˜k6o˜é-iyª',…#íhжnoSÃs«ú–üš¾4Ÿ_pËÔ“£òÌ-¯ü.Kƒ«…‘¢ùÄ(ÒÞp×Ჯ­O+”ç×°,ñ³<åe ª6LÄ­§ª#ÖÊÝ^yÓNyGˆo£øaâº^<'YyX˜ûÊyΩ¯Ûñðgð_myšL3;7¥Ý]oÙ1cQ7h-¤Wf(ûú„l L!¹ažðOŒÉq`<›|Ï~¡òÈ×úÌ1ÐJmCO‚O×. Vâ†ÊÏ3Çþ~ßMãi÷ÂÆ¼¨'p º+4Ì#Bz¶ew<;7a—dpÁoã6 ‰*5³a¾ºÖ´c áµÁDšúI9&.ÒÏÃtÞRüjÛ„Jg‘DÕÕX»R50# "ÂŒ0K­§§d9²Œµ´Ûšó@+dpH‚–(&êV¼§‹ªà³o–Jĺ“2¯)ÆÑôñÉú|ôœåùeÇžßw :áC¤½‘ ÆØ“Ô] #“¬…qL²@г›ýô& ¯T †‹5ª¶b?Êy[¥wû8‰¼_Ù”Sÿ—åܰ. Ž$¤»#²‹'IªIèÝøðùL©jÊ$½„6¯ø²‹n›‰;AgäçÆäÐk:Š.òV…’·`‰ûê8§ESŒS/sЬxìö[€V#r¡z­i:m#P—á W(‰Dbƒ©û®=ÎÆ›azÝVÉXüAtÛÀœ¦ho§âV¾¨=$—ÝDµÞØßï Õ=ßRMÖòk…Fo[–Íiü€î Å„u ‡ S‰ßïø{1ð“í{p°ì;’Õ‘.n§<ðç,/g~9 g—Ûª¤ à Ôœ»Û¾82@F9$ˆ÷µ´ ÚñÄ%×5ø„$húcÝP!b˸Y¤k@{G?ô€¼ ã[ì}xÿñÝ?y¦_¸#ÓS[¢Ó<+çX‚GeÑR†c)E„=H6Ï·´´†Êï))­ŽÌ·%¥ÐËm\åÛŽˆ²úº€|9lf²4÷Sˆ*Ùÿ—WŸ^]ÿñáõ#1 #g-ô¼­œúɼÛÏÿx»µL‚¡…¾+ï=Ef Üs/@> )±Ï€‚ ¿<\0à“¢WÙìtmá)_õ7©¯S' É uèëYcŸ¶6‹A§.ésgÇ[öM ¯i;û(©Ò³ÙÚšLÅØ\W1Tn¦Õ‡ÓÃHÙñ¥Û3}QŽXàç’ZY­QÀàèÝÇ÷l‡0‰ý$Sk;$Q¾`ŽRˆ·â­ÚÔŽò•ÒTV˜»—R¤ÊÅ8E Á8?& VÂÀŠC)îÈ/(MŠT’ìÕ‹-†¡|ô“4}”Ö“¥Y~%ï¤Q"ž“Ãos4­†¢'ð“(\!ÅÃdmw(¯¦ÓÉõiø^ÂÑÔLÇÞ›"¼Ð`Ny~V³}q\R·‚UÃsv Yѵõ&°äoK*ÒyDÁ¹™5”ŸÎý‚i?½}¹‰¨$™Ñƒ êî¾êKR”²8Â/ýÔ¶œØTàý½.ûnè#ûÒ5› AGÛ üHSñ'»°‚ûaØ·('Ò] †Ç®òˆkôè[-ܜ׎܈ÙkY:¶­?ލ¾‚§…LàDE¾ŽÃ‹ínöLõcRs2c½Ë»t~ÇÏcq² ,ÔÇW1¯WK¶Yâ,ÛŸ‰¼XåÙÜLÀ¯ÂÃ볪¥‚ZC¤P}OvHø&eî–Z2Ln.À;4Ø'пmwªÚ]#ÿà*‘Š£¼Uuoʱë…õbXÍ,š¡W9h%_žƒ^jõ !°£HY¨£˜É<†.¹™*ª[Œ}m ©88r•xÏog=£L¦Ò/X©øÆug¯ÀˆŠÔ½†7³ójµÄûè¹@Âó V  €«:¤Š üÒq»ŠCâ2E.Ai®¹Jâìâ-D¢|¤ÿŸmsçû³^éìS_¬Çx™y¤4ôâ󮾸Ùæ IÀ“k3¹Õh4…­Å €:é£Åo{ƒåùR蘭Qp•ûU¤„+ú†Jöw½\¡„PÏ8Ôö Ô ó†Æ»„HºÖ—˜-øµ›ûvÂku)‘*à*L\Ò¸¤’­ë Ü×C2ùýÉÞj"›Ô$M#|wÓhsñá-…kägIüà*šìºèÁ¸Ü’§,Â+ò(cëGeì•=ÌÎz‘#ïã(-êÅäüÐ^··M=Ü}²ûÄaìöQqcÿíã#½é’h²µIë˜.7c: Ô#úK0z:Û®ã]¡Øâû2R¸Ü›ÀZ”²î)"½ºÍšª!¬F7SJìÃgwI¸yÙ¨b?˜±†ïä¢>ÕSµÖýêýA×W\©§,–’jÌ•%Åh˜ŒÊáÑÙÝ ’Ø+`PðPj¬Ë©)„|ÖV¥ =z4ÚIeöšþ¶n›Ù•‡ðç³ð{Øâáb±SS/È…> stream xÚ­ÉrëÆñþ¾‚öÅ`•ˆ`l¾ÅkžËåC¢W>Ä©d I”@€Á"Y©÷ñéeHÈÖ+»t@ÏLOïÝÓM‰Mb“G›T©0×Ù¦8½‹h·;løû÷ï„ÃÛân†ùÕý»¿|Ç…y”‹Íý~Nê¾Üü3øÐTC¿Ý)¥‚¯Ûf+Óài+³Àv}ËQ–Znÿuÿûoï'N±”o 1odÊäFèPéD:™’L‡Bi– Žäv'2øëv'‚²¬ÆÔ Nªƒ[øÊ 0uõ?ƒ(Ûµš`‘‡B:-ÿÑžìPlOÃÑåA ´@[ eù¤ê›/>ëÇ_"‘•mÐ ƒ»Ùòai‹²u[œ¨€‘lÊhçÎîmg›‚ûp»Ó* î°Ç¨E;Ö%ã>(N°ÎXeДQ¡ˆY— ÍþèÁ¶ƒ/\2ü)ÚÓÙÐ/~ƒ˜ x4óNf¾Eêê‚7g<@æ$• 3è׎‡£GhÌCíŒ ð<µÍÝB\ÁòöcìࢊeP"åhó–·€¦«zËàs5¸+ì-D$:mU¸u»çï·Í¡®z‡]ŒýОL÷ÂKð>8Ví8ôU¹~}·*¼³Žy¬š(«ŠËÑUd4UÁý6SAËç¦,;Û÷¼ŽUç4™¨ÈTg˜%Äg¤4\ dHäÍÔ±ÀûÙ‘¿8oÿ2 XZôdCI3‰aˆWÒÀ6%opþlvR¤a/µçЪº¶9Mi #  8AgAXÞéí0€.‰Æçý7‘èy«€¨%àEt»­3w[ÛÒ›žÁŧ- ’Û\)Æ®»ä/Ô¸YÂßᎦäÁŽ2ÆÞv|Dòà(7!øŒ ììÛ®p ŸœM7TÅXGøÐµã™AŠ8uå¡ä†š—kncÉÂCñ‹fos)€±Ž‚R"ÅtHƒGFBÊø½ò=¢Ce¢#ÃKŽ4F6ƒa/¡'‰<‡Ô¡jg"Y„¨Ìaå£Ãÿ¬·Jã0Ž´ÚÏžÀ+±-%‚ë §IÇñ¨Á*Nî\gFjΩi‡5f: º0ÓR‚÷|BqöÀÖƒ/œS[3X¦2Ù iPé…Õ9ûêØñ†~/ÆUçÑ‹¶Oƒ2!”3™ôA‰ ¥¿Ìišk6ã‚6ä—ìô(Ð<¤KëÌšh$®s÷ªž¿ƒíNUÃÖW‰ÀH1^7^‡2K&ëA-}%Â)è&¢›T|³ÌQ¥™‹™ñK÷è§j(‚>fMþM¦G2yÍ˹ E">9‘ é¬OÄ(Ô:Y$¢ýÕ#L§Ø TíùËNÒIpI•«'±–¯Ýïùk5Åà‰ÚÿŽäF¤ÛzŽ®ÛBxÉ3¥ìñ¢]rÁþ+‹ÁûÕǾºøžsfµâ“LÏŠ$JârM{À­u$8雫Õ"ùy„¸Ì¬m[%Þó¹Kµþø"ÆÂòüüGq¨u•C¬¹õI¶ˆ&Ñ”¯è!Aè*’÷$>–¾A¥7xõsÄ£y‘cAó0IR~(EÎt¹ðE˜G”àG^MÏ@Ý’ƒ"éý†•—Xi"µèa÷dM?vŽ$É8µmÃѳqˆ-ã\C(˜Ír«¯/’=o©Q/yEHí‰ 6wÿÜöû®ÅVCøÀàGwš5W¤*”ù¬—,*³ÚKF¡”Ó« ZºB¤á«mŸmHÛz?ï>Ç+ h&è¦+”‹ðåÊ-28¯iëÕ™\:ÌuØsHµ(¾zñ5úa/ª ]ÒpIFH¡‚Ÿâa_Aã¤2˜±ÿiÖ@dRcZžæ ƒ~áS×*Ñ›‹j4üõÓÀuçÌç?o±ÎO[×®²YVJ ëŸã»‚2u%J. ŽŒï;ÊUÍK‘ǹC¹¹Ê«i¢uôuÃÒ ræÄaŸ£ù[š«ïz|I` }ß0Úw8Æt†ÆU¾f×”™§‹T“Ññ¥–qð|¬¦N''ࢬús ]OéoòW¤yÎï¾fÅ€ÙÝvŽúÑÐ]N]¢èçI_Þä,W‘"Ï ºQg9"×ÇãDêkõõ³8ՔȽ+Nsõ!ůZnÂp­R³©‹^As2m•®á ¦÷<§ñî˵çCfa¶˜èAßÅ`–÷?}ý·øéý=/ÇÞ¬¨úBÁçQ ’(ú¨r•2þiÍͳ¾ææè5Æ02™òwxƒBBkÇ]ûg1×Я9Chñ÷?¬¹dÕ ¾´·ðX²Dâ£bT’òVÈ­ã„*$ãÒý?Éf{N÷[Îs!µþ¨5¾1Éo„Ë'‰ZWøØ\!…OöFãä\Ë…7œª¯Å©' ¯roïCóØ´Ï /ž°ñzݘó7¿~Šw7¹ü3އkã­ó4ýý߉`žSÒ£u0R+ù¶j0—"*0þ@Ü¿®_°E?_jœŠëš!®è–{à+Âë]¦Îfc14FÜhÞj—„‘žºÈ…5ol¦2˜Dâe@s¡Ìñ—ã nˆeîžNܺҷȃ8$ãlמATxp{½-ð5+"x¿_/Ë0eåé›tˆu˜ê©«œ,cC¿0!C/•?¢èF€ËɯEãÕï—áèµÉhߎÏeìž‹.3¾±qÄ¿T¬/iÎoŠÅ)} A¯46דšéÝ(H2Ÿ³hTs ]Á1Ë [˜Þúmã ,nûWüÄ£…m endstream endobj 479 0 obj << /Length 2501 /Filter /FlateDecode >> stream xÚ¥YmoÜ6þž_±ýT-àeER"¥öSš&×&°×iË!'KZ[°VZHÚ¸îÇß ‡’¨µÔ¬qå›8ÃyyæÅ|åÃ?¾Šý•–’ÅA´J÷¯|³ÚÜ­hpõë+nÏmààÆ9ùóöÕïÂpÅ}û1_mwîUÛlõ/ï¦*ºv½‘Rzoêj-´÷u-"/oÚ¦ÉýHy\ÿ{ûWo·¥Pˆ3YÂ“ßæIEã2 žŽm,‰HxÝ}Žéý€ï”û] Yj c¾únŸ·mr—Û“ AÈ"õ'¿§ËÓz¿OªŒt5-fE{(Ám$´þˆKISÕ- µõ†{@‘­7îuÙåM•tI°|êßttÕm‰D´—¢˜z&Že†,¯6QÌ”W.‰Ó6ïH7Y¾KŽ¥™ ¡PyIyÌ[f¾ä7€#æ[µ^¢î"íÕM–78Tæ…¸”6yÒå4ÎÖÜËñ;X‘vМž€£¤Éé¶Ú1•¦È²¼¢õ[+:< zlhïè@r­åä¾'Ÿt >û<(íÕiR‘@†w¡@ø`pJGö­Lƒ3æÔ›ÊqÆ,„À¡cx±5‹ d&òï £®{"µt,©è/þZ4uµ§qG$ĦHnËÞ&£ q0Ëžz]¡ÁÈ8öŠ5ꃆýE¢qäUµ]HÊf Ð]zËì‡ ¯äÒ7¾e ýD DÄb=.ÈÅD¡£± Hí¸L\âhW7´g+é±iz ̨„Ç!ã1ïÙ8à™a¡B b)H¼øŸñP°ŽÎ R4Þ‹¢Ñ`6··—IÛŸ¨é×–\ÂÖx;ÄKYØ×ØàãBÄS‚œ÷\-òˆO¢~b£:•€nC²z‹Aà‰Æueñ²Þ`` £†Ölh²-£édËîWßmú "¦±àV¸HD‹¾§é¬ÜÙJ¼¢i²ë 0œ·I¨“ü` º_“æÌ¢QÐC–.PÑøÂ½yN0Ç+M¿ÇÊÆ›œjS¾˜ÞÅúœÔN¹±’2ÑÎ’J¬Ä ´'T'R3Fr‚i}ÃeøÚÖb¾òŠ» ²Þ–V)Ñ‚U7V¶´D&ާÆ .¥TàÝ´ö³yy*àA‰—çg>uAdß!ÞŒ‹ö,×´ õ¥8cI‹ 5—æ§¥ êHÄHEw´õ©ˆà`$Sf¦Ù‚ï#hHa@cÎCPL40½Ig ¿Ò”AÇõ¡'Ø—ç8¢¦Ež"ï–;JãâgÊ =Ó¥‚‘©õ ÃißÊ¢ ™ý=”Õ+ ð¬Nr6§ p¥—Š$k28p2C4m jÂ3:œe9µWå4XŽ‚°Ùa™KÉÂ:µ®)XR."™nœÙ²¨‹µK9ÅÓÄ´&î0•ìs`Ä-P¯u6UMlRHíÀr’4æÙ ’hºI%ÚNE-¾ÞEb%¹àa€\IÍthÙâ!äJzo«5˜Ö iÉ©zŸÖqÐcã,à…€RP¡õ‰Æ¬ã eÍyu£Á¥¾k’ýP#¶'eã$A¦¥œÑ'ÚÑ«è)óùtþí`×—1qñþÃoog£¤ü=§×¶k”¨dTû6Àh_ŽVJþ†{¨4ü}B~M"³{ìôIV4½…¦]Ý<ý´ÞD‘6!-;®Mž'3Ú˜9Ó²#ùX.ë@1édbÃä¦îj¬ È*!Ð`•àcó¬® 2;DÇ ©i‹#ëtnqºè`Žü²e†§$€IŽí¬]Þ>µ]¾·, Põâqþ[‘6u[ïzö}¸KO<÷¢ÊÈÊÚ ü(&½†*zÏ¡öFpm¡)Æœ]ÑCäX~‘XnÉBl…:ÔRÛÍv|bårÿÝ’ábÓR 10#ÛÌ-û&QC ù_EÛ]ÌQ‰8gøòFÕ«“.|׆”OMüÍrÈ®ö¦e€S[Ú74#0ÇŠ&7®@Ó]ƒáÑܳ9Ø»R®4~¹ºü´äËNþ†Ñe>óGpÂû>¾Þ¾Ÿ:øZ‰éÓg£™’QMLàè:6 6{¶©õì-¡òð×h Vk̓Áó`Ù¸*¦'{iS `®NÀܱü›ë·W¯>¼»üç¬ÐÆêê¿AC‘3°FãÞüø™ËRµ¦Å}iÙb7ú*ÙÏ÷±"÷êÏ~è;‹u™ö>Pð¯qZQæ€kxã$â/Sž†¯¹E(?A¼ùBN8øCoû¥N äþ¤”¯@캶ɥgó€V¨³Þ» ñìÝHöÏø Öÿ öQ'žl endstream endobj 483 0 obj << /Length 2857 /Filter /FlateDecode >> stream xÚ­YYoÜ8~ϯ0æ%2ÖÍðÒ5ó”x<Ù,’L0v°²AFn©ÝBÔ’!©“øßo«¨££Ž{…7U$‹Åb_‘êLŸ:KåYlŒHmr¶Þ=‘ŽÚÞQ㯗O[ÁÀÕdä‹›'ÏþÃ3%E*Suv³™²ºÉÏ>ïë²ïÎWƘ಩Ïu|=×IP´] Ÿ+£dÖžºùד«›a¥PëE‘?ÊÈ%V(cI¦×—Ÿ/o>¼»º ¹^?û×?ÜJ‹èl¥ŒP!Í»Ükþ n£Èav”}¿± ò¢/Ú]YôÙo ꯠ欳Š{Ê /6“QE©0‰†=¹¥öNm B-¢(õÃÖY]7=ñmnû¬¬iÑ’i›¶ÙÈÓÜ;yŠ6ëËú—8[i©… oVïî¡ë‹8_Yן‡ã“l6ôKL º>«ósdmN„ýxìyÖgÔúT¶âY[±cyÖ%v¯™qC¿k¤‚¶GÖno0s¢ÐN,©rÅ— møäÞ|xÿöÕÍõ¯^_=rÒ¼ùë™TlÅê4xÀÓoö-~%Wd×ÔYExÛØKÛF"m¼Â mhH¿-™ñ×ó0•”Ù-ê)Å÷²ë»‹¥ý s‚¥aÔ8¬ó›àág ÌDDÀh¶q’¤Ú£TŸÁã~ šPVS«+²vN°Er¤‰jàkÛì˜A^¶`:Mû@›†Gü½´3u'ÊË,ŽïÍ ?î©ÓmÜl b>?2ñ4ÒÚ™?OŒtjšßʪ"*ù4n‰!}TM–lç%{h<Ì-Þ2[^c0ù»’b šBM¤}ç4éêÈ©GQì÷¼Ú,éE…[<¦¹GŸ]ö'„ »IDÞ=yõ×Q‘G]ιßòßgwd0Úy1’Àö¨Á§¯‚mQÝÓŒó¾¼ìî«Ì©“­kஃuSÃÀû òÆ3t[ùf–LÖZ¿´6ûÚ…1úºm\åyz?û14ñ,o³Ž;HZh@ô©gù#:Nß=•Ž„[4#ä`Óÿ¨ÏW o÷<$=Æd‘G ‰p`Ñ=8Ãí³ïx¨šN.,ÇxÊ:$fôS¹,‡-7y¿Ãÿì"-& ˜è´Còb“í«?ã@zÙ-F€X ¶¶kÚbiZcÓúm‰S$ôè G Û(«I6åÈ& Åƒ”0‹`Òù4UÙIÛpÈ*@5¤YòvŽÝž"'YÔ‚J¢©Cé×ÂŲ&1ãþî¨MÙÓ¹»l½,¦“hdDP¡]%nè^¸ÂrúƒóŒ?ãå‹“¹">j¨éê– RÓDDîìV¾î³žlq”æE[öe·%¢³Ö¦ÚcÇμÀ8ÿ]ƒ(# ÍÜA\4etß–9'4ëQ¢C~04…Öúƒƒ”]x÷(º›žø ØîXþÂpÔûxű_'>#ÑÃ7²¡^—Õ¨3”e `9ˉ€ðGô1*Ρ¿ÙS7ÆšXW4Õ‡_„.¢,$8Ä©AÑ@AŸÔ@´e2‘©j¸M—<´ Ò¬l!9ª`‡Ë”¨`aè*l!LÒàÕ†ù_ÉY[,ÉïaB ©¹¤:b+â8}ÁkçC‘LØý  ©Êç$0â–ÐÜRh6R$z€Õ?7=+’1Õ2¬„5oýÙâaL·¦Ï/@eŒIÐ5…J«Ë ?Ë`jcˆ=-OgàºÓ#ò7ˆ‹•_±»ï'зëÛÁïÑ/þ^No˜)ây㦯64õ—_õ™ˆD Óž’;-ƒ[%T.D‰×^>}õæù»ÓÊÀ—uÎ KóÐßÐ…w Ϋ7¤l3îªúÅjœW­{ω~!6_Uå®D•7 ÚU¤-Å«x¯pÌ2¬ôªt4½wÂ.»Ç†™™¿ËxÎù ß Á BÆ3”7Ëi€+ù¥öNôCLƒC»!…È‚nVT¹‹÷Ð[EÞ-‚Réi¥0³Gÿµà ûžH\kÒ‡ žØ -¾ü°r`WÔݾå>¨a{ßbÒ\Q@ E™tR¦CQx ݦÙ×9/»YÚÓ(k,1"P2úd`Œ¹Ron á/›(ÐBkp…æ€`˜ÁÚH¡  6Õ?„ˆ˜±Ãqî+AÙpfž?–!Ö>Röq i7f¢gð2¦ªŒœÂnªP(r"ƒgòЬêØI× C%OñN¶bÙf'{`7ÆÛ.|þôòùúÃõÍÕ›“ û™–Ó¬=Q’–³tMšÙ|»s(玚~ÉÌ`„»Ë£‹<=XšžXŒ! ŒAU±Fn¼îåËkjìŠlµä艣¨:•“`‡77—û¶%,£¨¸ì AØß“÷4­Ã²ŽFs‰‘»^Aê2¶µcò(ºý¢¹Çiszœ“e†J cÍXýùÝeû®ûXfõ§#&¡ã)[ªZ£D@ :‰5שËZ±BÛQwB!öÔ][ªï1UÏ@}Ùýd±Äž°,䯀ú@‹ZAúb‡¯ª2‰i¬Š’F:øÃbüQ"ú\XìêT«âñ’h¹“Iôø«éðîÛæ®ÍvCBådèàÑ7—ˆ{ßàµ6éN·†rÏ¿.šIl t GÚ/¹4;~[ª¤„~zhË5y›Yƒ#õúá8×D‚m«Y~†×ÚPÄ+ôKÈǃ~ðƒjhPøÅTHâ.J7x·î¦ ò×ín×jÖÇ)lqœZÚa +õ ×Ë‘HÇ­!$Zb7óä‡qœg O†çEË*“VDƒÎ~žˆ°ð¡,™$5¼â‚·ò¥ 4@‡íS4<•[¼pU<|Œ÷ð‰ œKöa•“bÓ«×1« öÌŽíèC&@ :úÍ‹nÝ–ŒFéR€»ÓãûHµ_¤×‡O€*’Î ü‚¢Óô‘g@?z5¾ð¾Æ‘ôtO§ŽFJt‰]9LŒsì^¦BÚÙæ«´ø˜ ”†yªÀ*{J¾Š’ù½¯›Ý=5ß6˜8*=x ¦Ë:G¬Œ8ºfß® "æ%ÖýPŸ¹ç&Hað¶éy òÉÜhH.4à';ŠE8‚¶rÈœF³ ÂrKü0y¨hªrM½UYñ×þRÄÊ,¥øÂ×øKa~ƒŽ¹¼ ÷S`¨î}/š8ŸÖ#N5Ú-Bðº¦R ¾ß”ë¶éšMOc'‘=SûûSm&þ¨±œ÷×.ZOjRø(yÕa^—í¸kV1#÷„ ¿.Bðõ®ß˴ܯ(´³™à.*(6h,gÝ0VheÅJÀ%Äá]‡žÜÅa5Ñ·ûu¿og% úfÑMªår!îÄòë8Ãt¼ùºüut´%‹Ìëx’ê•™PFôÿeæÔê endstream endobj 488 0 obj << /Length 3505 /Filter /FlateDecode >> stream xÚ•ZëÛ6ÿž¿b{_¢ÅÅŠø’¨öÃ!×kŠРh6mjmíZW[òIr¸þæEY’嬯brH‘Ãá<~3\u“Àÿê&On2câÜú›õþYBÔöñ†¿üøLɼL\fþýîÙË×Îݨ$Γ\ÝÜ=Œ—ºÛÜü½¯«¾»]c¢ï›úVgÑÇ[í£²í*讌J|YwûûÝ?Ÿýp7ìä´¾’%œyÎS:ã)õ6VÆ2OGâ vœ3otì®LÓ*äÛ›hÝìÕ®ÜpïáVEm³çN¿-¹Ñ5Çv-íMÕõmuìá„ñíÊå:zóÀC Ï«]õ'‰`X}_ÔÙ«h‰¬£ºé…‚s?Þ:Õ®¸ß•/ó›•ðºR&VŽ.à‹,‹ö -’¥´6I¨»æv+­‹žÃUÂDZ ¦Øg&HáûoÊÏmóØ{¾È× ºSý–¸ä³OáGá´߾ǟ‹V¸Í³°6~ýдÌMjW·+݃|«žyþPÕ›Ïÿ©cBU¯äôÊÇI&§W¼Z×»¯C~˜WX}áŒi{›?uÄ«Nä’Ø:s~"XÄèÕ=ÚU=c/æƒèÄÅÆy8I§JÔeébTlrvúšgéT‰35÷}QÕ¤ÄÐ{` †k04à ØÈAèpµÑÜû¹…¨ŽK£—ëžçâ)çk\k“Þ¤VÅZåOXm˜½M_°Üù¢t¤mß¾EF¢—ðoJÿfÑc}üT ÛQLl”p¥PYä©ì=Vžºì_Τ”FNnR Ê–>åˆÂìÕhú‚ƒœ/ÔF½`Eá !ÓRVì,øcĤw_xNU_²àÜ\§ÞõñJ ÛÝvùª²ëìF¥aa‘§q qZ4Ø ¼²‰…Ó€ú”ÜÞ”Åq×sçˆJF¡†Š¾àž†vòM%ÈÚQ3¡¸ïšÝ±/™z(úm]ìÙ7ÎÅ¡}kŸ>m8&NNRûTív¼¸xÎæOÞ™ÌétSg`˜…a\ 6ñËú[›ÊÕBcSµ`KMû%Ћž[k ‘`”`ªxñ6‹zƶ\¼åbž¿ÊØSP;°|w‹×UÎ2> _vÉ{À8G#h<4Çz3|Ó. \ù4†¨üÿ1Fò&Zåà"¦æ9ºö¦bl'y.p“+gõÆñKÒó—Ù‚åÕ¢Ú}öǰa³¾™ª™Ü&t?U ô<óÒÅ©kd£O1X.m°7'ÚM î_·€š#(¤‡ ”,:›²/Û=ø~ìæ¢µÐ˜$5üÉ0gðAعG!|áv{¬ëª~\4·,š]?Ifµú(¸ï’Øýɵ¬r¥¢_.oƒdd'–6Ù¬ªš¥²$Vi6µs£môxºfè}Á6 ÔhгͦB12—n÷Já„{ÖÏcÏX9`@$ˆÎ]§Ñ–Ñ̲ؠíÍ5š±È}Ñ÷åþЋŠd&6j†‚â"KdÄæäŸU´—øSðÐH¿¸ôGÁ{¨!“A²RV+É{}¬Ú¦Þs[Ðã×¶BüÚÅ|,¯o8få,  ÄÚ0¯*CÈ€™ÂÄ9× ÉÆ]ôîx8`êà®_¬¥Aµœûyՙƒԛ¢ÝpOt›~°%®œÚjr6ØÏŒ@ ³¿× Q¬CíäÑ»×+ÏͲ^³mm`4ÙÂõüÔt½lVÒ>ÉþÇN¶¤ÈŽ7˜LÔúÕ»ïßЂoØ-¯Q´àÅŠ5˜6¹hÆdU\ÆxNEqäVÏŠ/EbËûEï”eq òûë’€ÄûÁTøObÕ¶mŽ[ægqñÌÅê‰/®ÖÎ^#6úŽ7˜‰·‘ÀѺ©W#I Ö³±ÎgXïL| ºª\mY´´"Õ½~?úSœ [{ùX±{šø}ý±hßßG'ûæØ?øEŒåãÔ ÓžOŒ-lƒùïiŸÚ3§æ°%||iWëÆAïyˆ4)8›N“6§ÔÍåM´¹r§Ž¡+6vM±AOm†°ØB‚¿}Xö½«|]Óéà©°½c3\;!tG¹>ôô™£C¶vª?»XpMò½çï­Kx:wŠž¦ږ˘Ûçºk@fš¸qv†«†è¹SÇ>ÄhÂÃÀÎð©pÉJ)Q \ O*ä ¥”Z¾ˆ-h¸3S`‡@ófõgÐÙ/åÎ.vþiCzͯ›~Pðª^ïŽJ®œ»¸Käm¤OäPýIR¢PÁ ÎâXæ²n=Œ³®12$e^8ä*05ðùUÄäЙ8«9p½‰5¤â255ܨºà)“ù25¤0ôO.ԟΣ†£ì¯]xí0í¤Å»VØï¤´ÔÝpÅJ3©!Ø"ù>8ƒñ"•´9…Ö*V™š^™`nF¹>!Oy¸J9ùÃFP0³bWm˜Èƒì­[vÖ0˜†fWþç(¡ì0°iÅ&€ô#‹d6KVçs¸Çô¹]¼‰dzÆË7áÈöðX7-î£}ðÄ>À¹¾"xgÀÝ×L"`Œ©BßðïÄA1Hê /øˆ’ pË9;Fw…>á)g48ëùI6Ua…·”ê©‹Óiîð©Ú yZ¥9Rú,Â!m¬2th+ëîˆÂÂ6X>[TÙ J‡×‡%64W ®vdÏ/³O€-¬z¿]³—yeÛr‰s~ñû²ëŠÇP§=¡zIàëPRÚ÷µLŠ—Âÿc9Üùq¸ë6­·‹dc“šKpfqm3A-{$>?Uưª|ܱš&ɯð¾R‘6ü×Clª#¨<½Í]ôSµn›®yèyÒ¤¸YNs(€ eWí+J‚°3Å"HáŠf3ì°I7 û®'5¡x4*RÓ?veJ"­é,Öë¦ÅcwÙ ;}]1ƸÁl8:öÀF5Ö€{nÏ#Å4/bJ#nz$:ôiÆà‘BˆB¥rì £Õ ™ ‹3©¬Kð7짪J£\¤2fÂb)«KdRÅ@b€š¢3ƒøg…L ŒOC&aÎà‡ÇòÀ©”7Âï,rJU“FÔfçp9“b ¶FÅ@&œî!¨Ð|Œ€,Ø9!{X¼ï.ëù*Ÿ¡'íÅÒO#$þ‘ˆˆM©Ñz/´ÑiÁåìÕdµÙ¡Ôm›ãnÃmɸº“e8„yl/»‡ åIU¿žH¥#'á ]5Ô`BôcBÛ&$‰Sõ[Þë’×fS~´µu"Yø‚Ò¶ŒÕ©äö…[Eä [!s².ㄨS•DÊ<ñ’/øAÓ€â@^åèY>öÖÏ Cw,vès|¨ge<6 _“Qø›'KÏy­=2uìzîÂ;gàHèøwØÕª Ó'q˜Iü®9ú@‹;y%‹X»ŽÂÂÊøÑÇRY]Ýh€ÐFÛ'}ÂìÕhú£Ï|Q’»rÞbm¤ïœjw´äÈR ÏèYýƒ‘©Oð'Tïºßñ¢ò$:ôØ£à3gGÓ:‰•Ñ7|Êž:Z˜½M_8Ú|Qâ—˜ÁwÜçÂ4é½Zeyð|“9C`øpÂCo^ôñïi"DÇ2”©8‹ €Øç9ÂX­'ïj !“ô™‹;§QÔ_*Ó\íI*¯r#À"…ÕvñeCŠRm'µg jÜ’¤˜PfÙŸò±¦×ñQ “ìÏÏýRf1Ý{ùÛ‡<ü‚¿6 ÌaGsÕó†ÏP²/ø†=eË®;îõûi‘ž90à0 >k³‰ñLʱ/H|^—‡> ]z~3v±0XÕ§Çj´Eý(ˆ#Iþ›½fê¶ü >z]íÃ54ƒŒJÄ:”Û}O º„kVKþ¼Œüv2sÆ5Ò¸è~¥«ö*µefœObQ0þÞ£¿ôôHA9¡ØCqHV«YI\õºÂã"e_˜Í@B»pN*¬=/àŠÂÃÐÌ–9ÿ?i» ÄØ=ªØtôRCëBÖ£š:6NˆÏΤ|¬T]z¯°RW=¯Ã2A^tB± ±0ê'âüC ˆ÷õ­[†¬T„_¾à— ÊñáÓÑÃ’‚º-“I5´¼ aŽöpðLA5ç’57çâ…UB½r~%_yÀ³Iœ\ów&z›QÁsƒa“íêGÊGoi8L7Ä'’20èHbdØKg ôQw¶ð/^½}÷æ/ÒM\rrwä$2{3/ÔqÜL1;Ì6°4]3…M‹Êï˜À^ðº!•mÍ„ŽœöƒÏï¯xTô'å¿k@ʦ©I?2v±üzÛÔݱµ ô‘Ó†nàØqôîyûõíP’øìß7§Ú%ºb/­‰³d[/M—¿ pçNg¼ì¸ÚB£Z¦ª–ËÁ­-›®H–‹,°Ç‘Ûƒ“äùÅ’.÷[~vÒ>TF´7£õ?Ø "¢8È {´ •GÊ é/×+.©À]e)§èÏO¶¸sH«±¥«µ´Ïj‹HäDOÝÿÍl™Ù endstream endobj 494 0 obj << /Length 3091 /Filter /FlateDecode >> stream xÚ•Z[oܺ~ϯpŸªE³Š(Q·Ó‡"I“"}h‹ÄAqÐSœÒZ®WVÒÑ%ŽþøÎº¬åØÄQäp8—of­®øSWyp•F‘Ÿëìª8¿ˆÛÝ^ñàã_^(™·‡‰ûÅÌ7×/^½ã+øy««ëãr©ëÃÕ¿¼Ïu9ô»}EÞÛ¦Þ…©÷ufžíúÈ}¤‚,ñt²û÷õ__¼»žvŠÃð™"á̧eJ2í«H³L½ým´ua{·£ÄûpAíÝ£dÍÈÄØ[|¾~¿Ïx5»=L:”õ-³îN¶–yuéÞÊ—ýضÀH½¦˜Söü¬aÜòë.Ž=SV榲/Ÿªµ(ý©«ª޼W‘¯b>H[™÷Êa!Òí=ûK 4htÜ3ë®N8ŠaïzÿúÓÛ$Ùæ¸ÝÉt¦àfp'Ða¶Ôa¥~¨B€vnÆ¡/áœb?²‡ZnbëÃcûèØÏT¶ØÕuSñU’b¾ôÿ#åï#°¢Vå;P¢Šád»»²§«3¯!BWónh1ËDy[7=ø´¦Ò`¸VLüH‰}^ã¦÷-Ó[0hïlànJS1E»òp8ÁåÓhaHÚoæÜV¶gjìGSU÷ŽplX‡kû¥Ë%eæ/A|ÞTuûa2©ð[ZŽý4œŒ"K‚ÕkU±ŸGùʲ;#ç #w¾ÐÉ ƒ×ŸvÊ{»Û+o2cdŸXqà’û¥ìð¦aG´°nÓ1ëÑã€eù³á=}š ÿL§!i)n(ïÀH±±C Mb÷ýH!òIø#¬˜äN‘‡.~;v¢‘ƒéOb¤qàgY¶6ÒG«B>ÿ« äêÀ"ˆ:P„'‰A£Çw„ëŽõC[F‹-ñÄ4¨ú†G⪅ÁœÂ6Žl¸‰Fˆ<âiüø6Ì¿c²9ø15;Rƒ|âÜ—ô«ÂÜד¹Š~‹¦--ê"tJ;iM?8æÍ™l—° ÄÚ’s!¿à„S3‰%…†¨ÞÁðK¼}pí—›œÁ8Ò¼¢¬pºú¢©9±DÊëÀÅx_r¼^Ä|˜*ÀäHzåÁ¤»(ó¶]LAŽP?æb¼œ\¨“¢iîG”¢Òm'æ`û²´y#÷ÞØÏdF˜ÛãÈòrÍ‘ŸÃ©ì1~ëóãêe>>¢|.NÏ< O80­ÄlÓ±^BÈ™ù…'Ò­F|«<ªÍ™Þû¬‡,¼R˜lA¡ Èø‘öC@9ô¹('¡÷‘aUIÒ¦ÚûDh# ml(€¢˜!èÑ9in3¦ƒÈѤÿÎí´uQÊWédF­á”IæÖò'Óóà†£0F $‹æÜ–ºReýñ‰$]mÚOD>ø¤‰,Ì'ÐRŠÜ–œ¢xüK1l@©W†Íyål»“K”åxŒ³DÂÜ“ ‘=#œÄÑš‚µ|aÐfešaP'‚É&J-bV.NgEµÄ*ü¤Ø1µ×ÀÞП0Åé'õ·w/L¸¨Æƒí7WV~–æÏ±›5îðTº  ùËnÆL”õSµ ¸®¹íÌÙa,µ2e+Ýèd™áöû¯¢ž-SŽ}•Ma©i?ûΕúÅÙ¨½§+Õ‡9Y€­Á2UÖ¢ ›ÐE ðípÞ”2Ö¾NÃgë-]ê-H0z÷c5ðV¤,$‚µ²¡/ä9:¹Ó[ cý¬›CK@qk7¹`Ôi”zÿ„ëBì5ø¹!¡î™€¢!!7› ©’g¹}4/†á´áœú‘œ ŒËšƒú¤«„Äd@MÑËiþ~ãPPóÉÚKZÓ e1V¦“€ßÛ…Énœ.×~0ã¢ï¥íp¶†CK;ä/$:õbÈJ)ÃÚ¹Ζe'X W”Êk§ê¸†G‹ø)É/ñÏ¡`ˆKHu 3ÊM»!¾„ÑtèwŸÞnaH1ùtŸÇfºFëÀrܰ-Ñ×I¸òê *Ái‹?=6V¡(MYö­ÌBDÌžsMI®mq({(ÛÅðY¡œj’ŒlgeCUÙìà„E‚M˜|ß0pðxfàiý`:ùR"äò“(_.‹NÄÍ:Šç‡3¤œDõ¨ópg“mW‹lÝE”eK´p¶C·yá‰NõZŠP,c(_ÁL¶0°ó»:¤®•Hb™ÅÂæÚë­¸O߀,'N×À¯J°û/¨¦É½Êþ§m°í_d…Ÿq›8ŒAÃ_íO £S_Ï¡ëúõ›Ms‡J,ŸB ãTŒÿÌŠüä‰ð¿­òa ©VB¸UºŽÏÔ êÈ“¨Ñt¼x%ÚjÁjœâulFwÀ^Yüœ|è)(H‰g[¬Èt©™öCó0õÔµ2Ã$W'’•ò²n&IÑ8EG¹‡ªv%0Þiíý£ãª‘ƒÀcȯ+TOÝi°„·ÓâºFBŽÌsðRžíeÓ°í¤<¹Hð’€Åj$Iaö¦t5hžÇ FZ ‚x7W@QлéLwÏ´tX`ÄâÃÈ ~@H7™dQ‚ŸÁ%M5Zùèž@ýȳNÊ7™÷ó.Ó2'”ºçfÙ™@Îp‚êëV^S uq³®ÑŒ¢YÈ0à ¨Ty·L1NÆNQËOÂ-øæÀø¢vÇ~r‡¸OÃàÚ}¸ZÜíØ›©†±f <ùC×¾ÙŒPOgjrmŸœæW·Ñ&ú–/–>^ÊÕ!R§ælyt(;[ˆè@â=ã“Ý G¥<Ùqä:¨=™rLÑ5}Ïã3*²Ý>V˜¥€nçCœ%žBA9÷¤¤”1bÜ`.!%Å)ÄS'`y®.`9õ¥’T’»m™¢Ñt_Üä¶áGa»AÒ]Æ &(jþ dägÌœOךm—`˜\ßÚ ó‹Ù‰€`³à†Î%%écÁè"«î÷ß±(o“ù \y»ìÎŽ—‚Ðôs“" œI¥ˆˆx}6Sïèœð­©Jlö ¿Ûl¯Ç~GÏÐél pm[¡8Ë¿hcPD\é;h;³hå"O{V¦—µ ÅÂT±l9n –›>«.Ȧ¦>Ûª›ÖîÍü ©pfÛj6–4äNbê". бëì”2€1{yÆ?–Å»8lÆÚOÓ‹¸ Æw‹P1ðŸÖ¸9RsÈí kd$)³*Ï%u¾‘ ØÏ8÷º¦ß^5$‚¿5ƒ|ÌÙ†¾à(„ гƒÑ5z+í.ì×#òéR¨“úôý”=·•ö“ ùÁ*|Vfai G‹\~q±Øér¦ZS% ŸÍ—ÉOˬ¿z+éƒû \n¹rß~+‡ÍFò>Mü,ͤ,úP9¶“#ï3—ùSFš–ãß’2‹{¦Þ}+v0Á1à|4ƒíŸÑk¦|™€AЇâ°u]<$ðwÓˬ©¿HT1 ”ý¶Œ¤ÈéHRþæÅËÂ1)|%iÀ}Ì€vÑ‚£”ÔÐÕšª&°Flò$16yˆ Q±£y5Gc”ùKœ£µZEz|¿/sìQ|ÕIÂ¥'°ä{™zÏs;Ó–ìIkO¶~¤"X—߃ÚéâGSÓ¿"hPϺ€Ãjϲ"Éÿ¥€çÅ@ŽžÔøRŒ³+Mq‰›ÜúÁµÑêxmØðÇjcÜî´P•³îˆý æðȯ±Žç7 À¡øZÝôÝ©t¾šæXèÜu%Pš‹·áÀ9N‘_Æg,&ê…u"Û*\û¬- úEróx‰Ì¿N¼újºWUyóŠÎùÊýGÌÿ™+ endstream endobj 503 0 obj << /Length 2899 /Filter /FlateDecode >> stream xÚµYëoÛÈÿž¿BߎBšË]¾’O—4 ®èFâ4(.‡––(‹5Eª|ØVÿú΋I­Ï>àÄ} wggg~ó ZùðS«Ô_ÅZ{©IVëý+ŸF›Û7>z¥„ÎBwBùîúÕåÇ0\)ßKýT­®·Ó¥®7«_œ¯Uѵ®ÖÚy_WAìÜ_‰“7m]W+?‰_üzý×W®Ç x!KHyÎS´à)JŒ§´ažÖ}ÓäÕúèõÄl½ðQ<\iå±ï%1Ü'ˆ5U)¯p½+6œÃÈ9tšü¿}Ñä2uuìv´´ñ KU "ßSiºŠÂÐó£ðu¨Ý ¹E¥–‹»»®;´oðnœKøè_9Ôó¨wv¡éÑpÝÜ.YÖ)¬˜²ë Àƒòˆ‹¿†)“ðA¦èäí¶¨€úVÞäǺ©…ì?õ 7†¡X ±9É>xCò¶ØeÖÌNÂi׸Ä.ßôeQݲažnÌvfÅÚÙ 8¬ámuç–¬ ±a;xÏyYÈUEÆÙ69µ€«ºoÖdÆÐ©·<=`&æÌ_VÝÊë"yœÜe8w/2ÀQRåŠé³ª"Ô9ÂñÊ#ÑüľC(ml²QÇ |ßîxŽ“¬Sød>q厖Qµýá@ ÔM'ÈÚæbCY)¢â3¿aüŒÌÌëÀŽáLr ëØ†´*ðÀŒ ýXÖY÷Y4Ò¤VTq«Æ«p6 ô32P»r .¡`"þÿ„‚co‹,ËUB×£pœgH¤žÒxÛõ9Ûs$\,:"!°§št€ùõ ?7u‰Ö3 ÷ß6¿›&àuÇxàë—¿X/.öT D?়,::úŒO´g¾Íú²\Õ h?œiãMÖ¢Öëäd2€3.;ÿ$@ëe>«¤1µ%è3‚Ö[Ö¢žÀ­Z$ ‰&äÞXzÊŒQÁ¡cw‹nòvÝ#Ò+g#ì0š—. B{qÏqøÇRˆð1&HS9¶ä<*ö³F&Ê¢%ÀÆ6òƒO’6¦…ý»ü¦7‚;þðð±Æa‘'’5§7zFô 6ÿ±ÉŠRîË®Ø÷,zîj`àCßÔâéúaè½àƒ ¼Ëª;nY§0ñL¤WjzA<8 µ;!·N‹Eç“¡IÓ¿‘ÀÉPœ ½¾¡9éáñ²qZÃÀ’±uª’ò?PŸó?“örÑ)vDFä/&uRÁ#÷ŠvPgÈp¿©Zd%+29,Ô¤XŒxdlÅOcP¢=Œôáëç'1HÍ0•:ˆ@©§{ ›N➦ À·9ZÇvrÜ®9^E2Ü×L—™ ²Ï…ð±Ì¡²ë¤A›™Iãx·Ëª¡•KЂ1lû¼mý>7[Q$ZÛ@ÚÅAó•'¾Ø*Îl{씕8eh  ¾ÅÜÍçÈÐÜ›‹\®Á^G®L^%ƒ‰CØðȬ¤œ²1nÓæÍ}±¶:Ž]FÂ0|fÃöƒM±R¯}ßç¦Èlòy‘ù`M6`‰ìv¯1ßÁpyÃ_¾ü ŽæNŽÆÈõ‚½Š(«65f[0¶®Kkp¸éªîl§‘>„Dò“ÊÇŒ1ÎÏõÒèA6¢hPP§bÝIž‡¹I#vŸ£8*1½Ý ¯lú5š1¨D'+„ðPfUûGûâÁÿ:©e.#C.£»†-Ã0]@ì(zÎZ…Ø=QÛÜï|É œ\^Ö‡¼‰?â̳•&_ò2žâ3žæáø|É)~ .,ðÄÆøLúŒÐB}ËI¾Yx×Áða–5ŸPÁLù¨9éGÀ6†^?ì s ’ppÓfˆ=ãi*;Ýp$Ä쟜]¼Å¸QŸÃ ñHzrž¼³ÞÇjôÍ'ø!+öç£cľ¹Ê“3)‹#¤(u‚€u‚5V_¸7B â4ä"bÌðî°³­¬ò§š6‰Áމ%É4^ŽBη@~e7-Np›™IZð–¥yÄ»¢4 +†à«y™¯;)?ÈꓲIâÈu%5 ,ÝÚâ9H†PÆ|ÑmŸH¯Ì)ñó+Xwƒè75æXgé\u¢çé¤%ç²Ôr®š|]Ô=Øàªó.#%HðÅšKH {N|Ö7]VTt=@²mê=_Q˜KxÈ®¾+þGús6(Ôb„øžy¶ *Äî‰Ú…‹%¹T‰‡N)¢õA‡Öw#c4ÿ–"…‰"Rö—17Ÿ17O3æKÎbª$ ã ,LIåRcYxr©“˜]ì©®ÖâF'F –CÐ7!ý×?©+h§¨Æú[Í·hÓá0òühTOúxð/@F›&‡á439•79@d g‹Oiìé$šûèÓNnÀþ‹8÷`úbxišÎM§µí`ÀŒt¿þÆŠóOÝwÛ¢Ì_°¢E€S©§¢Å7‘wGö7RBï“N†aÇCßa[<Œaù»Ã(„üT=õW‰ M4:qYÐãù@v†%D“1pÔ§R,b£ ?ì?<û¶§r¸øvYÇ÷|‚TÄs‚ ÆLt`:t&Õ¢uÖ·£vRqå'šü›í»„‰ÍÒ&~xpîQ9¸­ïd‰AÌs†§ ÆÄÎO[ÛiŠ–Âìå¸ÔçŒÓŠM®‹íqpXÕd4»:P—ÂD•ís&"OHƒ €¯=Çzzò@ð^†!6Ö ŸJ½0Ž_j¿¾•š> Ñ>Ã÷—#b’„¾ÒÐé@ ¦¢ôQ”Ò/ ¢¾ {Žn‹û ùd=k}Ä̰ȵžÁ‹ƒñ´?ðZËËÖ£e Jªò0|@£cã}˱±2QKù¿ág„+l¬›¸ÇI²üšŒ…NÙ„?Ö˜´¦Ñ’f(‡Ä*++núóXÈÝÙLÓuwyy°Š ‚“ARWM1êáé›oÛƒ¶5Çi*7­ÒLYß>ñ•=V^ë—©ŸòB3f_žÕS 8T*»MþKpíº÷òéó©£ÏÄ´ÀõrîáÏýg8ÿ £Íú=þKèÖØO¬ÂÔKµ^œøÞ~Õp䛺͟92S*†Oo&Jœ¶,nwãç0á"¶Ø.†îº•ÑÁUaкâV®jŠú}´|ÎÊ80)Õ@/tm'šgÜ’IyC÷„±K endstream endobj 507 0 obj << /Length 2107 /Filter /FlateDecode >> stream xÚÍYYoãF~Ÿ_áy 0;}òØ É‹Y,°AÆy&„–(©aŠôòðñï·ªrËRyü f³X]w}ÕfWþØUN¯R!H.³«õá 5»íîÊ.~ùçæèb Œg”?ݼùî“RWŒ’œæìêf;gu³¹úýZë¾[ÅBˆè}S¯x=¬x•m§á1ŒfI$³Õ·›½ùx3ž¤8¿P$¤|)Sr$S’I„´2Å÷ݧ„Ï©˜"¸¢–¦k†v]Zº%·ØÆL¦ÇxN¿ä+s"• ò]X.#L&Ž+³Ä_îW1k­·Ï+ÐTDý¾´ ÇǬ·Mkë¡mËzíh˧5Ú{_Ô;GØ}Ù}¿Š–9ZôE_¹ºáÞØ´}¹±{+•DE5”Æf ÅBÀ¢-Ñ·YôGÈRœžå^ómÕ½‘ ¤½J O¹§}g¹þN5Ê ‘FŸðû_ð{Øf׸™‡ÏÍÉÒñÜr¸-ê»Ð™B‘ˆ×Î4æÆÝCÛ mÒ¨,j»õÞY¯-*»ñcECKÅœ&$£b'Aq¡£[ýT¶!YyF‘Îd•4™d•ì³b|½ŠYÔÂÒIrõÆÒ‡­Å›,ßÜ—5Ž š“ÎÊÓ#ýÆ«¶&3ŠHÝzGB8JiÛšSÂ)_ÆYUt½-"=†ô#2kìF[þwÐ6 Ed}#£þl7îL±y¶»½ûäÖf•}Øi[Ü—ºß»“öÁôç"!@蕃‘eJÄdÒj ÖAsB¹Äh!)u53¾=_Ÿn‹î‚êÄ|yšÈ—LE`¸T%'ÇU©_ÈÄe‡L2û­Ùš*îcH<îMÀ»¢ª4õ#ºë nÞâŽ#wüÒ¨Ó½ã|ßšOôF×»£S7E_`yËæ ÅHÌù9íbO·Ð°Û7Cµ±%`, ‚ýqUö}éŠÄç/ÿ±‹IyóÔ˜/7‹&)¯ívIväúÕ¢™šŒÁóë—A¯¤„ec0¼#`¥¢›½“³Ã] ®õï”Ér’ñQW•K;¡W‹b5ižæ`u«®ï[}нË»5c O4}\eÑÐÝ7öÉ9; 5ƒ*$ó1ƒN•ÁÄ“Ú*cÑo«LFÍ`Ï>.¢ð5¯7víEZÏaH­]wZ6SB¸°ŒŠE7–ŒÁ)X‡†Ö>UÖákìø 6›Y³d…MÒ4€‚:K> Ž£íÍ›¦u«b L‹Þ?™ºÎ(Ê‘àîèÓ£^=¹Êoq[¹•)ŠðkÌ’y¹úåK¶K^5ÏÞí°y‹TnÝéÃ}åÖ{Ý÷ºâ]0à•""SÞ§ë>Ü#y:’^½Ó#ÜZ%Qj —ßLŒ@i,êþ¡3–Xí ‘2­wžP–÷=f¤u.§®Ò#ª…ps{zWƒû6îak­Ô°ð0×›Æ&¬û°nz»˜ê¦ýd†¦(.úBwìý1Am$J)Mu~¿Dhœ¦®\¿„ìQ#f3ïæ±ómR»•ësX’ƒ ^â]¾lž¯5º»òùr>u9>—Çei0äc2MÎÀ×1E ûM³‘—ÿ t(…z6êêp§G÷;b_ô¬£{×ø2Ží€3\c˜”ÊrŒ[–näáJe£Ð3m·©‚Zt8¶>ªèËs½,ê‹§ !œÀŠTª©@〠¢M¹Õð€q†õGèáCiвlVÅ¶Ü Uá”GÞ$$Ã<‚2ŸˆpüÓ‰ÔŸaÔ8hÐsÔXQ^WhÓŒ_  H„»Og5p9°êu]‚`N*’±1Œ0_CLIù8<m°¿"^à3NÌz¯nʶµã£²]÷‡¯¡3 â¿×u<ïЯÈ|}VàfèO3p§äè¡o.âšC¡ë°œË1ò)XˆŒÛåY Gžøy.ß\«€^F³e¯hqè K+élLx>-¬ºÜœÏü<—o'“A¾LŒ:ªSUp["FÎߟO3]?ì)Í´èBÆ{ ÎÔä$e'³Ž'&ëLו®KSB`×PxѼØÁSí@];ÌŒûÈ!­mdf¬‡ý;3®<Û™³ÝãT8áÓ•ƒÏª óæv 瀃Íñço1‚S¢øx¦Ç '×ÙÈ CøR'˧¢is1¨©$r†êÞ„ïr´Å$O/I[1/²Ðù’ðjHå6gó UoAîªÁ±¼ C}4˜m·ØÞMŸhì;'ÉÖþΧ[\ít];ƒ‰ñêKž¸˜ $ƒìíi™ðɗ`Í0ôÛì¤è_­þP_¤:Ë¢Òñü·§„\ÞN„5‡<€Ä_À„Üþ¾ŠŸ‘s\..Ò…í¼'ƒIš°9_wÿÏX”pq4¼Õõº6ÁKÏeuÝêp'„ª£2ùÙñ\†]à¢Í ϲ*ɹI8 dÓH\êü_̥ʿ›bs$ì¶ñ· cÞÂdºð±äˆÙ-—ŸCݘÚsp$ƸŸ•ñÿJÁx’sÿÏÁÿ¬ … endstream endobj 511 0 obj << /Length 2434 /Filter /FlateDecode >> stream xÚåY[oܺ~ϯpûR-à•EJÔ%oÍ9q"ç 8qZMÒ+jWˆVÚ£‹ÿû3Ã겫ÄîcQÈ’£!9·ofH‹«þ‰«,¸JÂÐÏ¢ôjw|Xj»¿¢Áoï^ æÛãvÆùæîÕÍ­RW"ð³ WwÅ|«»üê_Þçºì»Í6 C罹ÞÈÄ{ØÈÔ3mWÂtŠ ½(Ûüûîo¯ÞÞ'))_(r^ʟɧ‘/ˆdúÓÑtÞ<ôæ6–s^%|)ØÚröæ[O\K-c?ÂV„¾PÄùsÙ*ª=ñ‚l¾ Ì|!ŸÛUJ?I…ãz<k Äëáçº×÷ºãY‰¦±×e¨+PލýÙ~JÓ­9õløÄû¨€åXØKF Wœ9A¶¿¯ +„©ÈñÀVb)’©õ}er×^!ÅW2b“ Zô¾Ö ‹Ùš'ÊkŽe¿fA6ñs&™#溶†v¨é¤£†eUÑ(g×% ˆ%hú¹¯tý•†UY³BåýB±s±‹®º†G§Óf‹1®[R>Q¾’¥îeM  …pD³'Ê—@D•ñ׳U‰Ã>©ŸÈŒcùÔ6ÇS¿Ê‘òS‘>k1A'—Â}l Jñ J2ÿY“IEpÊÿ´n-úÁ¼^;/Ê nF€ý…vf%ìø±„x_ܱAw%Šerþ ST*(’€4EL¾Ip¦Âì¿¥ŒC‰"Í›eKÃéš2€õ¨ùVv=øYx{"œ&³‚…JN‹;]ï@OáU„ráå0x±ÿ;³ê|™úq8ÂåA·%¬%̪Á¬& ÔÏâ3~21*ew¨ Z>”mSÍé=}xØ(åÁQ ?žv½f}„£`{N¸‰Âăpî„8òú†ŽcÒµø¥©kVÚ;]F¾ôaµÛ¼©+t\xe±*Jì§ÑèeOG£®lŸºé94€U†ê,4*LÒOäspÚsÙ¿˜²*¤Õb•ø2ËŠ®JÝ‘‡sS”°3ýŠ&ÊtY½l`Ö†¤Ó®x2ìùô Ïx±è}‘®o9Yè­\óLX4UÕ`„=–5çÄœä³1lØ]À.(ÖDÉrJük^•`Â1À&Û¡®ÇÃ9!ÁIŸïn·)çåíÂ2Nýv]XãÊÁjjd›Pº\ÿò'L –£XeÞ{>‚üT'Tw¶þµ]Â{gjÓbÆCêGŒËÝ bØ \Lf朿Sò«Ëè÷:4V(´s¦«”…kI nLBÏjÓ  z<Äõ'Ë8a»þÃöv°Nâƒ2wq‰£ÌŽ’‘²Ä ‚ÍwÖh$ðZ KL¹…¥äŒ ¤x"ª”Ò „©Ütg_Xug}ÚPò@Ш“=38­ Gî.ú4¤Ö™;N¬ÕÈ"êCXï̹%>©ï[}äSÍPå4†Èá )I#³Õ4!MWâö¢+hN©dúÛRìBF\OÆ?>iû''5cµº&󞨬–éì=-óÞ ½ÛÁý-iJÍ0qDÊr°UBsfÃ5®üæ`T÷ endstream endobj 514 0 obj << /Length 3019 /Filter /FlateDecode >> stream xÚYÝsÛ¸Ï_áÉKé™HGФ$NŸœ8¹º“ä2Úæ¦éLBŠÔñãb÷¯ïîþ$¥ÐmÇ3&°X,û½PtÒ_t•…W›8^fÉö*?¾Ú<\að—Ÿ_DŠ· ÄÅóõîÅOïÒô* —Y˜EW»ý”Ô®¸úGð×Êuíõ"ŽãàM]]¯6Áï׫m`›ÖÑtGáv¤áõ?w~ñv7œ”®Vÿ'KŒù?xŠ¢h¹¾Zo“e'`«­÷óñÿ™Æ2‡ëàx½ˆS1¬7eûG†n×a57÷× ¾&}k Œöuƒ(&Öö¶±Un—rÔ"J—ëmJßõ2‰Õ&#ºÒz7Ÿ>½¿{sóúîýÝîWl¿ùx z·oßÝ}¼ÛÝýòñ³:£“ÎNîMdÇ{óÄœN¥³²’]­@o<96†93/_¨÷M,%Y'tßÈdÁÑ®¿Ž`¶ŠØLÔ¼†V ÉJ7ÏØMUwÄ;­§ëàTšœm IÙô‚WäõIÀ{8màê²¾ ¥5‚áªÌâˆó0`p†ŽÔèîûÇ’7UJ)O%Ã?¶s†Ãî’D‘ÚT¬ßÍ6øÜçÌÌk†?«ñÂzh Ï® D,û ë$ ÊbñÝ–eGASC(2ÊŽ‘žûÆ*±g nH)ÝÑá^´Hú›¹@Ñ7†M˜ö¤ÄV²MÀ:mY§L9[{fkÏÙ7̼°2¯"ÚKZ/Ól±ÐvLЗu '#ß”úW Š·pö¼'§¼|5c+ªºRÄðcX´XL–™ÝûAöc6ß(Ž¢ID¤I;¨…gS_à¹8ò™$‘xn$}(‘£=ò6eI÷Hüƒ°HàË1–Ð%Ç£º¬^ƒ¸ˆ‚bNI¼oµIS Ej¦LÌⓨû—Ìè* ~åPY÷Š—çöÔa,|­6±?P·ÇW©`â]I½âKR`%mÈgöOÀaQñwô¢‹cs™»V…ˆg4êŠUy‹éo½kÄyý$g“'º¶‚® £Ï„Æ(…ä÷åÀÁ$ ßÊ:~€ýîk%’†6að·ëm¢…ÂK@D¿´ú%À-DÂvË–Wù“× ûcÖ·Î&.ijIÄU Ôiñ¯P.f³˜†ÍW 2S¢FÉ+®Ó0b†y’ØbÄÊF÷Ž‚ºBb`g -@:N%•ïé´bªâ'ßQ`kKõ|>ü×3Nm*Í:¬ÅÒT½y°çúÊ}­¶0øÏ–ãŒiž¢i-­¶¨:jð©ÌQ|†!'ˆ‡*÷ذGN%ˆ4¨»…/zx½µšìeÓ_:m›ØöÎiatE×,,Uw<$ûzÌ˾u=*¼qó2Nw(!ìƒ;"LLQ|•Õ´ŠÐÁp<ïu£GbcfMÿ-%B«=QýàyUɯaŠÉ„Ùp€\Tì†&Ð@Kx&e|Q`„M ™_85³jÈë¾d Iì)èS$ƤpTVv¬ž± ¤èIV>ÿôÇ{pz/ŠÀ›ÍJ.¶;°,‡\*õQ&Á–7AŽIÛÙÎÇ©L»Û,Õ£[GÞu `å‡Ì;¯w†Œ¼/ñnrŒ10~²ÑÍË(9òa.¯ß]kŸMEçQ‡S[,%¶ÅÔ{7Õ»yx4Í·þtöVCñ¾åß0ñ?Ì88}²Ñ@j+ÝÙ+þÍföµ¦;L~µÒZÒŒøz놜Gëãž8ù­3áÌ<aáÞ÷˜4æèˆWŒ¡RŽ´ñ¤ÁŒÌ¼‚”–8𜸇 ¹ÙÀ¬é‹z”Sºç—nØã«?¸ÑVLƒñ&|íN‹D'“1Žu?%V+167â>¥ô~È$ÝðúaÂï³Õ4éô¿ä°ág«$ ž±ÄÏ…ØñËÉ‚^Ζ{oÍñ$ YJ}3œÆSOâÙàdŒ"â`è¬U3†¼6¶@rU^ö…Å‚>%0üæó›;±‘;Ì9¦×}7ßw«Qóc©V®ÚsZ¯†ÀDl*â{³Ã/jël¹ÙFW‹Õ2ö¿¿••õ2\GWð—"ˆ®Î‰~þùÃ{œ%6AË_< ×$·F®^û_Ê'ý…p“.·ÉêüQt,懤Ì»[=qšljÔ„ êa˜#=‹kã?í>¼×Ÿäù¹í>ç;éS5X¦µÛw ášì€ÑSÕ"‘ ?ÊÒ\ÞȃþB0z7ÿ¥cb\QüL,Š·“/žàÀ2,LàÞfxòéãϯ@æ sòæÿ ÿ?â©N endstream endobj 518 0 obj << /Length 2809 /Filter /FlateDecode >> stream xÚÙrÜ6òÝ_¡ÒËRUš Ï!™7Ûò•²o2ÙĻوÄhPæ1!ÈÈúûí $F¢“-WyÀF£Ñè»[ÑEÿ¢‹2¼È“d[¦ÅEÕ> :Ü]ðâ§7Ï"ÁÛâÆÃ|±öÝë,»ˆÂm–ÑÅþà“Ú×ÿ ~éÌh¯6I’/ûî*΃?¯â"Ѓ5ð¹I¢°ØYtõßýÏ^í盲8þ?YBÌ¿á)Š¢íîbW¤Û(I™-ÕÕW›˜úáÓ›-¯~<©?&ÍëC?´ ùÆÓUÍTËÎièOƒÑ£VPÇ£yU©Ž·Wx4Nƒá*Âe(º>^øÐµub€gm¢deÌiß5pS²‹ŽÖÑ9¸y›ýPÏÛpmTÚÚ~°×-ƒŸß|xÏûýÀ§~s€ƒƒÜM…¤Žü95#ÜìoÇÈtÍæŒåˆyÆkMw‡/σ‘YéËßjмèú‘wºÓƒjð„€÷ÿy•íeuÛèk$PÂÍ ½Zˆ…H«*4ª£éô†é iëíþÃûk^~"éØñçj0§qezèáÓÍk\¤"Â<¨§ "hVàÙ¾Õ õ$ÏöáKž,]Àí'xÂxšF¹cNtIoµ Tw‘Û™É|›9«Ý“6ò]ð;òÞŒ }ÊóÔ¾äÝV«Žt^är5I•öÀj:Ä&)!à–µÃÿ‘S£»ht—ÀI¸€IGëæ ¨§f²Œ`§ÙràëÐ7Mª¹GKX‘8ÒÓa(úMØ4Ði]ƒDûAرojÞ5 ÑwæE•$,…g8îH>†ÎfTçǣ‘KÞ›JwV.ô“´=¿JN$­Þ0£¢W\T„—qp‚;INQ@a% ^#‹¨„¸Œœ­|±Œd<ÇzˆŸøæž—ì0€TK eˆ¢ÐúÀ>?Ä ay§%’Zè[b9KÂ\®il Mu'Ç…þ:òªc‰-›YÐ")p=þ÷hÁU‰[yÂV]%$ûã;œäþá.Gž¯y}4ø(wf…s6t0›®ÔD®IÜ5©Dkö†úÁGJRBïý ÿ,Xª§é¶1ö¨‡K†9ÉÁrÖ~p€„Hù°à šÕŒ.ìŒ ®jcÇÁÜN£¢U2nM,©Ñ1tÃÁ¬Be` jIÃ|Áš°È|ÁÐkà`Ŧ½òøç€CÐÕÈ©=ÎH¯XÙ¨¯š¡¿}þ÷%#;™ÀRñ^§ZFÃxr;AõÀô"Øg†p#qvjEN ¾?¢¿XäRË a°© V<˜cš§KЕ÷À^üò6iUÏW*ÓÉAAI%R%ˆeŒtÔÜ(1±à˜È…}'ÌœjŽ`5êâ+ºRðY à$hTw7côA„YøVsÆM˜Pœ§![R†@ âo+îX™ßÃ(­ä€Ó*b Žìd[œuçfòNJÝ^jXcßrüF[yNh_:> s§Ý¤ÒKŠþ áÞ€ËW ¯¶ NÅÜjÈ»Ë1·Çº+ç-øN?<\nA<†é]°§0½pò ’‚$Ä®9FE@Áó’ ,2R€y™ J€³cÀÇýQw¼û@mbp+‘Ç ×”«æŽÄv¥³ùt+J\<5û…¥$yä«Î¤¬—…•ª*(væÊbί©5Ú 8.Pþ‹( æ¼ö&·Ê<6y :È•áþÕ¥†AÉÁåÀ±U£L«ëj ö°%½ŽpSÉÚ/|Còq. P²«6@oÎc¯¦È#Lh GbØ¡;ñ÷ÈÅõ“wƒ³fY‰‚™ÐùÆ‘ÀÙñÊAHCd²¦‡¯çë¿ Áò£ä©„k†»j׃>MÊÎr„~éQ(ü\KÛƒ5.‚¹I£˜‰Ý©¡–ZžB…X÷hË«A߯=ÇÆeޏ4-ŸÃR×’Q€Õ¨"\þŠ%¶\’Ï¢M}ó¡ Ò2°U’¯ñã(ý‰tuh£–©R´èMÍ_ÜÚÁ⨄Lׯø zK~èÊÿ³¼›ƒ?*W|g¡³Ÿm¢l»+²so‹Á¸v»0ø×«Ÿ^¿ûø†ŽžÎ>SHœP-¹'ø€RÃûâ‡F…W’ð=7VÁlF…§Ë#Zm¨BA1.oÓ~Õ·`÷•á~!ýZFïúî “û„ *^ìÐP†-}—;¡éV‹5ã~Ényù`îŽî%»\‰lÈ._Ž5V yŽAX›säc}—±Ósé˜2¡Š¼•cL)q­tÍz¯Vs”€Å ]›êº[iF«ixÁ%ª Ì]󽕴%(4ê7êÚu- pEJ)Ѧ'Š”&æÎš æKË”Hi€Æco¥QAWˆg!ä=‰‹Ú(à0*ØlLj5'—³†j²«}æŒÐA@ixâîh'îÁ§Hð8N¹ßȇê¦#®JúFÐÝ0eÐJ2¨‡~˜–ÉÎfSØERZx4¤Ü_QÈ\QÄö[õE"~Q©¿‹§R˜o¹â"T=•nñcj®ÍÄŠ¢ªôiä5øš”•à‹`#¿ú+Oi 8NŽ~Çví!ïðÍYâ•HY ¬;ýŽÔàs¸ÁÅØhPKÝõÓݑפ‹©E6d$7ð±^n™û§ó!㙉:XøR š(®–jž¿Y5µl×ÄéJ·!AÞ+¿Ò 9¯•Çà8Î=ÛÅ&øÀU£1Þ Âì±qZSW“ÿÄnZ¨–+wŒ Ì#6Kä~¸9Êì ©»Fxž3UåîZì~Ï8;aø†n±‚°ûôñ`z§Fy“4Ñ —?kÉL'’Ì\ê"ï>²ÿùËóûwûÏOZºØSœï<Öq¬Åmº|øÓ18£À5öRÜ+ÃÉÈiìVÅK‰‰„ض\á×£ÁÍúR^М„ƒ™~³ I˹Áç*Ƕ'‹³/\Õ7pL3mO !Å6ÇÕ‹ÂPN’¦$w¬¤qÆF3g'ø˜ZZ,ãµ§vðÒ{'Oëhl¸ÇÊŒ_qTj¥ ÀIãâ”(lz9e¾ÜUMoÝÌÒ /gÆ™eç`¾xyO:'Ü…špž)•U£Õ@cØdÀâÑìð0g®k‡*NHBþsñS¿ŽPànvIΓÂA’Ææ¥ç{x .¹GÅ|ž*ÜXôƒ€ƒ;Ìpv,ïZLå'©<„ŠÛí'wùÌÍw}Óúâ0¸JØj—$ã™&˜4 ^@ú_Ùµ|ÞÓ&`Hˆø"ÿXÊ*Üwò'(”qÒ)PÏ•KB´äfóXnío-‡Ù‚¬Ìº]zÚdyºÌß=I3Ò™rÅ>]Ò /‚þ‰ÙF•[þ¨Gæ£LѹCü•AfíÌé“AýŠŽÀ¹TN ^ƯÌIRˆT,ˆ-H• ‚¬Xn-9¨å€tŒ0B\¡" 7:þ•&¦xêtI!IÈ=xÌ¿<+ƒÊY2%Ž2¹ €(ÁãjËðzIþãF™KeìÄTžkÊýÀÅlG•£Ò»H<ðêä†|ò…79Á/R’l?5¶µ¦(tÝ,°Ž²‡þ˜{×|©.¨4wò§Æ0÷Úz<E&ɈZþÜéÖQó$Œ#Äú'£RÑ ¼ÞMG®Ûð·ÿFóU endstream endobj 523 0 obj << /Length 2780 /Filter /FlateDecode >> stream xÚÙnä¸ñ}¾ÂÈKdÀÝÑA·Ù9vìdo€ ›ºE»™ÕÑ+JãøïS%ª[“ XÅb‘,Ö]ìä&†¿äæß”Y¶?¨êæØ¾‰ ;<ß0ð·ïß$B·Â]@ùÝÛ?}Ìó›$ÞâCróðnõPßü3ú¹³£»ÝeY½ë»Û´Œ¾Þ¦Udga¸Ë’¸*¢<½ý×Ã_Þ|x˜OÊÓôÿd )‡§$IöÅMQ©}’)fëþ ÎÎÑx2 æ·É¦´ùq àS?0`, |ìñ_ñ:¥Ùiìow€‡ÿYómûfjm×On¡Àï/q¢Fól›×ÛJEw¸°ˆ^iáÄÓîÔOðvžF”Ü~—dû$ç ñEà@Ütp¸m‘D}g£ëFº‘ä±vLÑêzåõœj0Úõæ`YÂ8Ò|åÐ$ÒÇqÒ #gÙ –é2e¤»š =7ZúLfÙ'¼RÂw ÝL‡-‡ä#]ÿ[ oƳ~6n?ï‘ï“2Ptz(q¦‡Døò8ñ ê‘5Hh°Óhÿù¬› Ïû³EI½ìH—ÇÉ÷¨ð*:NíÌÎó [üÿHf°Ý3ϵý ‹Ç(€pIßm(v±ƒÖÑž$Í °íŽÍTh¡ÖG¤?ÙÎì@5(QÐÐݹ3˜-Ë'è¢8zå‘nzäW¼ÀYrªìÊ#‘Ò†öh+´¬*#›>T$ê¬Ê#7j”2‚¶ã/O)`èœ2’Ñçó-˜)‡Ÿ0Ò¼öx»“oÏâþI4´C €0#òôB2~åÕèO’õäCßòàåd…“[²€¿>›Î è8èÌêœÝäXõ…ØÞ‘áúúx4N`Šð­É^º¦×5cæ]rÙe‚ìj=Ô—§–t»kc:ý(·í8O¥d,*EÍ·çÆ Øù€Z „¬'f­Ò}“qå  y•ÇÑÓ`L¸Ž­AÆ5餿MZ0ŠÁêf»+Ó=wCÞ³;àŠÉ™ÕùEÔèqD—@¸?£B‘uX¯[܈ë_)óhŽwÀÞ+£ÎxÖ"„ì—øF“tÈ/' "‚Õi” Àw[šÃŸJ,!øú¤Òx@ˆ·B÷Û¤%˜Žì œ<”JȆÄtnd ˆ4#cÇ“•­¶ÕœVjŽÁ)›f;@·š8ƒ#O,TiòE4jËAq£§…šáK'Ô$·kÖË£{2 !Å1@27zê'²ƒÕyæ|’¦­ù_±VÅj•T Y§cü¬€1æÕŠˆãØ¼òùV©îgwwƧ‹†ýìxh»U@È6. ÈÀ®þL,{Uµvð·~vÒûÒÖyµ´Õvlü yÖÏÆ÷¾Ðƒ’~€œävã«’B.Ô¼Vzv àÒŽÂr-«—³Ð #yþ‰Ky:@KÃMšN)~U{•¤+ר´É*ñf•ø}KÊd$Ù¤Ð÷ÌWË-?ŒÄ@ÇÄ ¸³à^ PÜåË)öÉomÙú…åA£tÎcTõmØ$1 VÙÒþ+Ñ¿òúÄ0Ù¯Œ•Ç3t™ôJ&¨´Uð†9Üã ÷lä°ŠêôÕ>N·¡Ö$ÀÀHoF_-Ì"Ò­Dg/]?X(ºé]Â×?ŽæUZäÂrcCÊ퀒ÏR´Ö!O•åþ{¿È˜ßïÄ/~´ì•9[8|ç` °÷ ½oÜñžað;Q‰tç÷jê•á˯!kŽÍ+ 1¾E°Ffã$BusqžÓ3ù¿N(~fãdé˜B2máÓg±_ÏØî‚t#—`}ÃNÕ=çâ;y$éŸ ?u 5§&„(w“¥€¸­TdßJãEê»v4)öÌ}{êoÊsÄéæCOÁe¿nd^Æ8:FlŸ€+K2YÄZÙJÒèɰ³³L6ß´X©ÜˆÑï¤.ìzPxeˆË *÷6òˆ„3Nί :¿½(«}Ö6ÿNlþ‹¼íd¥½Ï€˜-¾¢;Fγǘdßœ§*ô]°†Å}7H®K@™›s×*øÏW d;GŠåºy¡Ö©ï½\÷'p'3|eQªnš‹üê3>„£“k44SPϸ0íÚ•±I熯ÚkV>+ok ðZ¢·>CÁ öÇ Qê‚nªÍŒ0ÌÏÝJ]*޶=œY?Æ*©Ž”Z‚}O¾+Ñ¥Èóíw©Ì3å–(›åéÚâ>ʽïùé“3m }\¹ñ˜òç‘æ¼8Ðr¦ì¤ÉE§ )x7H\ãÆÅ²3¾ ñ ŸÜ—Ù­kFÐß+yô«8S‚ƒÎFɳë¢×IÑ®„k·Žq•*ql„–j?Åb£“%'9Ì Ý ;P¢ð«ä7JI°AÓÕSË#)A^³xSyHÖ&üý¦7¥yÌœås£”Ç‹>pàõÁ$¨Cô4Q4ÎùWÇ ‰ GkáÒ2‡ô ®1r˜ú²4wÊw¥yü4„£waiêC_h)é]M~C ‰oIíÊ×ÿ(%Çb{s¼X¤Èõj ÅÖqñR€ùT7#Õôæ†¦Ë ä㿘 ªö©º8ò~; 橯åÓ  „Á_Ž4üS[ý’dJ Ð? ãååÆfü"”Aˆ¬:º€XãtJ¶æDë ùJܸâ7FøJA xvªT—dIŠ1¡_¹P$mÞfÒ—nø D¬ÆÕª%‹…‡\g±xíí×¼–@Ýî" ûä àÒŠ%ïÿ ÊäƒPYçÓƒÔìagp¡HÀ„Š  µÑ=ì¶bKØf Y F~%ò¼Uh«ò»UÊlÐ2)ièfzà 7 *éƒW, ÕQIïVyÛÄuÅ'¿Sÿû¾AÎ endstream endobj 527 0 obj << /Length 2699 /Filter /FlateDecode >> stream xÚYK“Û6¾ûWLù²T•¥ðý¨=­É:‰íÔZIjk½ŒI(K¤Bã™­ýñÛ/ †3ÙÒ@h4º_wCÑM¿è¦ oŠ$ÙTiy³;¿‰Ún¸ñ^D2o ×ÞÌ×Ûß}Ÿe7Q¸©Â*ºÙî}VÛúæ_Á¯éíj$Ið¦mVqÜ­â2Ð5Ð]'QXæA–¬þ½ýñÅ»í¸SÇÿ§H8óOdŠ`4¾ÉËt%)‹¥P¦*æeÒ w[ù²ÌUlMÒLûåVýjµN£8輨T]ó 5®ÖgªµÝuæÖ4EÜøÐ®ÖÀ®6_Â(Õ²þ·U™LšA†õç\GÉ&ÊXtÛ«žV€J NLRá „K§ïL;ˆÆ­&÷ºÙé ±ZGÙ¦LrúF…(ãÇÍjçaðK§­îØ>À sòB£Ñ=rú†cm÷•‰'>ÄNõ(q€f’<Ìž‡A0ú€‡’ÒvÉÚ† ¦¹Úå­0ΚÖöLÞ·7.ÃíÉì„ûn§­-n<*+CÃŒ4¶«2 :ÕØ‹ê&Þ0°k/,%õZ=D" <’O’¦x¶(¨yÎÉ|¥S}3VVÉòhAm@œ©Íò _3ÐÍ<6¼p-Õ”–¢&÷œ Ý7ËMÏ#$–’i·Ê’WÁxÛ€C¤p/·Gmeϳƒ<È\Ú_F.'µã•[¾(ª1Ƹ7¶o»‡—À¢HÁCÁœ ov Ü6΂¢Ë´Ï7ÆN{FÙ±¥ð“±‚KOÁH$Î/‰Dº×¥¸ p ðú¨Þ££J°Cîfp¸…³àФëke¥¹o‡Ž[¤sÕŠ$¤/Bó¸à@¼hJXø£O{Dš@I˜Ò½ò·9˜F¸ç¤•Ù­7û±/ÍA„| £Ó{Ý |Àµ¢1çœB¾°õ»³±¸ÞK¹)€û X~`ùž Š€Žƒê€ýÅHÐyÇh…[3æo;œÿµiÉÐ0tÐNY}ç%OuìqÉ[]¹^/_±̱ '’±ÁOâÎàÙõW Ø‘‘oUÁij&_æ/ÃÒJî€Ù ®g ·ï€Ö2Ç1ïÛFH,Nˆ{À8©æ8yâîíZÖ„£¡'—S"ƒâIÝÒŒ¦þŽg§ÍFµò Z…àDG¬ƒ5 4F)6aZÍ=äçåÐS.NÜ`w‡Æ{Iü;£ÆûCŸY³–{äúþÊ%OÃ8àòôº#ô‚i„^¼ÎtÒÔ÷²Ú‚|ÄbºL´®JÇuØDŸ²x8ù³³;ŽÃ"°À(‘É=wÁúÁðqO:†1ŒúµBãZSËI QNFÒ§¼btIºï"4Y+7q27Ö1Ö[}Ò=%Åt›±ãq+è6—ãmF ^ÍwMÝvvò²—ˆùY|œ/×~ÆøäIî…¢ÃÏî4Ô‚×îÞi;(§K)§a…Ÿ†ñ7Ì'lƒ”O”‘0¯N’Q$E! h/Icyꎾ‡ØÇ¹`ä¡vjañt ^i(‹ä!ò¸*3»žé’RŒGñÔâäÍ|3ý‘µà6¡«WâÕËæW†Ä¹Ÿ‰Ÿ–ïøõ¿cP]ç¸O#oÝ”9ƒMœsnÊ2#D‰ª‚wyŽž»d2_J±óì*ÅÎsç2–{þÆ}'p¹>«¾§˜ T;ÁL.q¾ê"±xtœ8¥ÀÖƒ:™ýÃb“à uØ6µêð¼ð=4ƒA ØØqýÔ+rã¯?AD V9ñjÈh–%pŒ3·X-¡äØ!:€ÎglxÉ-¸ e/˜1sg X gzœKÈtÊÑÅ.âÕнšC£+ kÛ³$ú­LfÇU{þö’qâìI 8S¾fÉÁÁ2pyJò[Þ¡†£µ®¼À(D¹Õ!¡Tl¼ ö‚e % Ÿ²šÂ ¤Y½iªé~Œ¡©XMb<^½ˆž—þź=wº±²°Æ`E·ÎñÔ¤²çÎWˆâÍ`åÎz ™ÀÖJ;¹¾œmω%•¨É'ÂF8¿úc&Ÿæž'a‡L@ þŒhˆ9ð!eø0ŠW%d^”¾Ü™ÚÍÆd¿.çc™š;c¡wÖWÛÀ!ãœ- _ÏÙã|!~Ä×e<Ô3·®t‚¶ó\.Ï€€¡Úhû_®Þ`¹¾WçË ŸXFÕþYêxY²,˜[@̓V°D4Ã6åÆUåꜪt§Kp°u¤²âº‘ ÷²ŠXÇ®–¬Ý<Éã«’ž>prÛTcþã*¯ŠëËÙŽjèP¹À¹${\:L­Q£™¼Œ € ){'¦É€˜õón‡p0ŒÇtóªøsQ–€A4hø—y8EqÆÐt©8k+ì¬ðç.Ña÷ŠÒ¨Ð=2„Ë/ÈöÔiU?,x¤—Q19t‘ÏIRZ±<\nS³Š2…"ž/D×,ñ‘Ó•—wÙJÉ `Sfá)ÈSBSÄÛlDåâ‘R—ì$.ó‰sY¸8ž;‰¡¥Ý+Æ8-÷(s)ß`±ÚI5PÊËs9Ö3GuÚË?…s“wA‡KÒ½Dã ì¿âS5º¤z‹‡ò“xO|¾Ñ»ž˜ÊÙ¥=ÕÒh(@a¾Õ0Eß_ G¡g¤âÑ%·ðzO•Øóž°hÖb¾éŒìr,XB‚-†„-áLQIøÁëeù’‘° £WØ ÉÛ°±p-\·ü%“`ãv|½ÄÅÆrëg—Íaǽ¢ˆWš[JìZ>ë@ù`@kÀ%çãk•ÈËàÎø%Õ8æ^‚O@OMoÞ˜|äIcr„·o*ã)<ûYãuzôg˜îþ¡ÈËl^lgRB¾ùôáõûï?þ …á§7¿~x÷qûÙ=ÿO % ±÷”Œ*€ÀAÚ[ƒ°ˆD2/>A/˜É\cKblÖRQ ^š†Ì:o䩚)CS»Eì Ø_xµ¤· ªœh!àfw¶L“,‰Ò^èbLÅï,CGBÊÅàâ!*s$gÀ çëb‰þÿEitqG.³DfRN#‘µ% @á€t=c|·/¸@Ä_ÀqzñÔk M%òu+Ÿf5½£c¯¾6½}µBCs¥,J›Æ'ÛdLФÎÜb°aùûÄ» y‡ü¿SùÓ³ß迲«÷GH•H’•ðß™,ã΂q¸¦|5¾úº?•†S¨à¿ù)§pU$Wò ÉFÞ‹ǤjáE'}ô¢ƒýþm› endstream endobj 531 0 obj << /Length 2677 /Filter /FlateDecode >> stream xÚYKsÛȾûW¨|Y°Êdâ]99²ÖëDk¥ln¹RÙ p$N\´¢Ÿþº{ð !'ÅfzzzzzúMÿjM?ÿ*[_%A°ÊÂôª8¼Y3´y¼’Á—o|Å[âr„ù—í›?ýEWþz•­3ÿjû0&µÝ]ýÓû­²]»XAà]×Õb“xß›Ô3Mkiº üu{Q¸ø×ö¯on¶ýIÑfó²ÌÿÁ“ïû«ø*NÕ„ÂÖvoÀÔÆ+êø¹·•Ù äóºy’Ye¼®Ê·§N—ÛÊ-15ß+Kß«XUÜúAVº½mrk SµæÌòJÉ3§²³ÇRY³;#çØ"/! ºðÒV~$wøÄ«ßQäåÍ—¶F±÷ÕÉ·•Ù!‡Ü_dr¿XBþ2iÌ±Ì ¾!Ížm·Ç(ñr´¶z,µÀµ@% ½Õbù¡÷éA–º½i+—Ar~Zšgw|-_î50¿ÉBej“8F@m~0ªtz÷§N@;ûûÚˆ!'¬ºS` á¯IæùÓB„$¥OÙ®Tž “ÀÜ+§ÉLø»Ê©²œpÿ$ Á«VÐ8ßíH´:îäËÇc`X%ÕØü¦4¨pÌÝõö¦5­®öD*9 ýRÝØG[‘:ñù©Û×[™Q±ãé¾´-=/Ý4Qi$˜ÆÈÝ'V—Ÿªªò\½ƒ®Å ÍpS¶FF¹|œx0æûœØMÈEš…›Èûux¥Ä½ކ­Éûƒâîß§¶;˜×Õª« 3N•@œžð»·‚e«3l’C' –}{…ŽB'¬o„ÛMê=ÓÒ£é¯ôö0+‘‚HôÂÇdL=½ ž1õfG!„ÑÞ¦²µ÷½8=öŒ¬‡§‚ÐÛ™ÒtFx^–2J(g‡"Å›jW7ípÕ[>léG«8¦Wq¼ö®ïnoo®·Ÿî>Bw?Ëî®ûõæóö+Ó˜#á.Ä—FÀë%48ù Zsd#`Q—¥3}™W-=»è ÍÙqÒW' >œ«š{ •sݱ—ÄðR+Þ(sÑÁÝ|°ØDGš-`4d a–ÊqkàvØ:°ÕÎ~·»ìsŠÙÖ(!Üh–´ÛzFËù5˜Þ ³s— ÉI¸ã’Àå}j„™D ZÝl«¢<íØoðLV•¥dôh$Žh½öŽ  ]Ùíh:w6ÃûÑK#Ôu¢Р9±ÿÇÅÅkV!·v¡ žJ`BtÃø;»ˆæž@dkº¬‰+\Ç=]N(¤chÏɬx×*úÂ/]SB²œÆ´GÉô ²½¹°0²˜p”"ÒÄü§kò‚5<ƒ‰†TÖws¶y 9EAîó£žB8}=8+µ¢G–×XÊàŒl°JÕÞwwš $pœ†Ît0$õóY¡0åÚYr¦.Xá¸y’‰%̦“q.ŸAa1c§À‰Ö}·Ÿ…Q;>¬ÒœÜ¢|'AGdCyôXWÙèlº_+“áøHTƒswöÒ4pÚ@É6È^[öEw5RWŸÝ‹c·“‚¢°q\*Ÿ˜tïâR«ׯ»uýïøñ㗛ˆBìÛ§í/>}þpó÷╾Ÿ·û†mw_þöz`xT?á€M—=B9Ê\ÿZR­ÀYìèfz‡OhE*ZX©i¬øÉΊùë‚VRëáh[k(oÏYÉaÁü Fº{”Œ·âŠ/™Ï_gà {#_—r”h±0Zç‹_Ø¿½äkðÕe¤@ù£™’è UÄG¥§ƒ;Q9¢rµ´¦G§Í)5åHMYòE‚$Ž©´sú³Ã±<Åt§±Öµj !.ÜPz-‘H\­€¶ð{,³1œlc† ”ZÉ U7á0…€)Û¿çެÞ‘nîÔ¼²â²Ã1åžÁ‹{½›uùL Tó~ÍÕ˜æËR¯<ʳZPبÆu@û¼TrÂVäÈÆžëˆ5Š:ÖÆM ˆùúOzòTò3¦âÞAm¬¯%0é›gl}Ú:cPÉ·pÔ‘ *í–`{#m$)H:·¬ôæD›§Xb«3Üɽ³LZ,Š0s'ƒÌ«©+48'!åm/‡®Ïp¢á©\0vÐãÄf®$J£>÷b3ÅY“³#®ÍÑ@¤„ì¯EuõþÓŸ­£§u)©¹Ä̼@­^áØhæŠÑ¢wùº\Ež$ždbÝÏûºžøL'ôä3©æ3Û/ï?½r™×ÒÖ¶&¯Z°Â O¤R•’gb_d\RøÉrHö‚ïAž‚{ŸaÑwuÇkÁè3]FwÙ>&ãìónàf¶òã3SW«Ð`Fvåìµ£XÕÊPÈÄÓ.!I0£šè —¸R8þe·­?iè¶aƹ׌¯_‹ŠéÞÅê¬O-WÏQ£èÚÊŸJ¾]Ê62œ¦*l¹¨ÖIyHÈǢЗ5°‡§È†VÅŒ 5k+pÂþ&Îú&a[s4V'@®\‡2¹”–Hf|‡j¢'é•hO»¶hªÓlèFM8€Gÿ缪/øðV ÈWø–{Kä3Iúƒ"µ—ΨÄìÆ†øp¶«šÂqKeR…JݤÁæRÊ>»‰6Ú¬me"ÝÌëfn. ‚;¬ÚÁ ¹•×·O7T Þl'µLбmQæö :¦þyÃ农ZÍÊâ²Aj˜ÃA6zPÌn¨Ò·í^&.”©oÊÔåd.ï£Ñ÷Úûñ½¶'8›°Ö¬-øgÀ ;H"}®„›N8ˆ&1{^)rÙ©Ï/7è–œ<ø(©’þÛÀ‚çLÓ%¤ÿšœëV»ùt,w©iæÒIŸknöwbuXN4æÆ}W!wäÏ|sÁvŒ—Qp£Ãu-A›AGªÀôÏ×ÿùu’TþÇÆˆ}Úråþœý/ endstream endobj 536 0 obj << /Length 2909 /Filter /FlateDecode >> stream xÚ]oÛ8ò½¿"èË)@íêÓ’î-›¦mM÷P»W,nï‘嘨,ù(©Nö×ï|Q¢e·‘Cr8œï>ü¹‘FÑ2³‹âðÊ'¨y¸àÁ—¯Ù·€ gç/›Woß'ÉEà/s?.6;Õf{ñ_ïk­»örE‘wÝÔ—aêý¸ 3¯4­†é" ülå%Éåÿ6ÿzu³nJÂð'IÂCSËÕÅ*‹—A3Y·;¼;ö€ÂÀ+‹NhŠ=-ßn_òà]s¹º‹þPÖø€NöáÛ‚Ä»a îªrË+¿Ã]WB¿× ¾ûK¥=Þ¾~ƒû2Ú÷®ÜêBáí¸1#šº] ƒàÁ‹ Z ¿¡kÌnó”é ³Ü3åÿ{mÊ‘Ê0ƒ;üÄoK|£<1@v þ·)ÛÒ°€BÂÃ-|šƒÍeƒÛIWŸîÓÓÞVUO¼(ôMžð{ˆY{U?èú5†¹˜Š®W•‘’%!XÉr•%ôMâÑäËËÅjå{››/w·Ÿ¯.³ÈÛÜþú™Lö˵¿áަäáÊ;(ÕOê¥ ó¢9ÒKp'ÊÆÖ‡­Þ¹Ð¶¿¯tQÖm)# Úê¶3ú¾ïJÆÈ/ƒÁœ^¸|,Ê£ŒUË8H€—w1ḦÎðñhÄôCoQã0òúz[v{TY}bB[)èÙUÍ/¤%Õuå¯ÇI´š“Fý! ‰'Ȫ,Æ×ÇñŠy’ºÍ13QÉ!¹ÄðQJ^Ú™æ 72ਠ>!ª…¥f…bÍ`àÏCoßTÌ'…ð5¥®Ûø¼å9ú Å.§ƒŠb éˆù)p½*[AÃB…A/þµâ)› þš¤™7”G`¸'ÖNºõðw?ˆ™‚ŠÒò|ä'nÕý¬£K‘ ²)£ßuç_õ¦d0 oÁõ” fd0°)òù; ­Zo‘cƪ0“ÒØÁaÂ&-y³y6lmÐ)‰¿ž‡ÂóÀ ‘„H?B¤>=À§ 5¶hNl+²…³+<èÄdßúvˆ·.=!›o9ëQN{ÌM‚|T;ŠÃ™ªB@Æšœ»$Û´ËyÎwÈgTœ rƉͨ‚ÌfTt2*ß§Ã97{EF¤ÚšhîM÷̳’ÒìdäՖ礅a&¹*B殌®‹Š±Å£œCþ""ÅÓ!å,²!ˆ8×_É–—œE«’rP3ÀìD †0Nícoëhle Áƒ¶²Ä]£ÁQÚgÍVÎ8².€÷íFJáË žF(¹pxÿuóõË øróŸÛ5TkFôë{o>Þ®%¼½¾ù¼¾!¬3H7Û!Çz6fJš¥Þõj×QYˆ+ãnk@»ÄvP65‡“G¬0Ú=¯Ôå s‰ #4äR¤ÚɤÂny# W:K·Ï_ÏèšÑ½gµÉàÆBǃ;²eh㎚ŒóÜ[÷\âñσ)¹‘0‹ú3¸ÕÍaV´ÒµÑÝlyÌ9Èî`Ù4Yi*q‰.F§l„‚ƒ—Æ:³ŒÂg])_ŒÐ²S”âr—Ún '¯0áÒÅ DÚƒ€ÁS4uQšº]α~Íq["Aä/ó<¾ˆ¢l¹Šþ¦+b7/ÆÝÜYM#S”œ`vÝñŸoßžN§åCÝ/óð|ÁSUç$…y°„âçH²›Ÿ‘4éÕœ¡$’l±ŸæË¸v£‚¢tÚ[ÂâuÇ_©·Io)4±î†R±„£‘ƒŠ?X‡êú¡“ã®ÄÜ%¤Sýÿ‹¾Ôø8à6Shcl}^îÏøJqá%£¨Ã£° Ï3$ n‹à*È!äEgùBJ± NöŒl:QL„-ƒƒÅHdJ3à´\x=›Þ¡Ð"O^†Á ü/ªá´>Ëqÿ^Íñ¼†úµ©*.´Y$î~Œtgj4,«ê­î¬wYy¥ÆŽÆçK™à™,(wXM5œ@ˆŸ VÓ`b™6wP¤ Z8§GiŸ´{{;¦»é&9¥ø³53JJ¸ˆŒçÈ Ë¸„³5< ðÎâÒ°j, M àI ŽÆD<ÌFœs=-»Ñ¦Ýa0ò˜ÊV€(F8Q[:ò\Åy¡y¡ÖÒR¥~›r¹›±§ù]qû¦³!;Æ#ÍÎŒVKH9Ìá™j›4EEx„ÅS̈Gi!äÞ¹G¢q>~)@¯)‡È&² øÄCPì]±'Ë’`^HþŒó¡2…Ôר“zO<-T-õ ÜÊ §½ã½ïíú®7s¹áyüOÅ*3§¤H27ãHí…©› ¤˜çQ;p §¶×ôøôÁN2*xLù0ê°ËKøÛ°ª.Ê3øœ4¦ªÙâ‘Ú¡C*Ž­°dÉUUßí£ÿ°É®“ÕÆ’¸F3ú O³-ÐñÆÈã*Øí¨¼ãžìÐÚ;pô£·þE.H.üå†ÜÛÏ^Jq1XÜ©¶Õc½å{wpU_uš_‰½Ü»¦žREýE[clš ËkÝ•¯ù4š=Eèï®=âÞ`*}(:×÷¾‘˜jËkßP%ŸëÝ7*{ï¹cèüîÁ}$ê2£óˆŠv±ì–!ÏZÒL%²ÆÆ|—CSUm#èÆ};4D¡®u6íT¡+ýR­+ýŽÐ>üžÄ,?JùúzñËo‹õr yKuf›Š»6%0mà0BšÃ¡±û®ˆhþÁX»Xï9Á¾«JwŽEKà¯Ïã±M›Qš³˜Óû¾0‡øˆã)E±ñÄ]óF”W!$/À€`uå:†|&ÝBO-òH® }TÕŒì•*¨AK?ˆî[М¶å™®ù»V2àðF·EóFˆW•òj­ ä4ÿ²Ä—*•ÆV“°\cÈ4ºº”½”óŽrš¨Ø(7ECwõcËÅ?S÷Š endstream endobj 540 0 obj << /Length 722 /Filter /FlateDecode >> stream xÚUÉnÛ0½û+„œ$ÀREm–މ» EÒCãЦZ¢-¢é’TÜü}9JU-„³ñÍ›…2 RûG‚& 6yž4E´Ã*uVu PøòaE|\lãEäÝnõæ}Y$Mš´!Áî°„ÚuÁ÷ð«àFGqžçáVŠ(Û„ÏQV‡LinÕ8'i]…eýØ}Z½ÛÍ™Ê,ûOJùN„¤ ªºHH^ ­'+}­Tç(¶t¤¢†ÝÍ*E#á,Ãó¸?qÝ£Q*<{e¦úV:Àv˜€BÍì› »ôòÄ–@åì:S5ESí[´Æ–“ñsT–!Uœ" tiÖûÞõWÕ ì@%óT¬z½u ÍöÛ"ŒzBýZ=ÂYqé¾Ö<ü¼à>âÞ5tz'daYšÖ¯žHÞ`=;hYQØzö©Ît€Ó(Pwï Ü0” 9_PY|$®^k%¶‰ráöÓú¸@—™hèW÷Ê¶Ûøî[üx •ÙÙ > stream xÚíœ[“Û¶Çßý)Ô¾˜›Xq! ¦O‰»î´™L»îKÓs%j— Eªµë~ù\H€ …ïÎXã‹ pÀóÿᄨŋþáE/2JQÎøbµ}˳ÝõBüýÅ#¬í–`¸´,¼|ôÝó$YàåqŽ—»©Ëõâ_Ñ«¦ê÷KJiô´m.HÝ^•ݾ‚â’☧Q’]üûò/~º=%„vIXõ‰“fˆ²”è>¥œ!L™êÓÏžýôó³WûügIôçö‚âèNúV}ö¥>qSíÕÑ_«UÙì/p¤¯l.–8j;Q`ѽh£=têÒZ´‚£Õa[6â„np+&Î&:T—œFÒ}®ÝóxtŸk÷útÕ¨“…* Uåzuú^·ezSˆÒ­ TgïËæ ”r M®êÃZ·_(‹U»ö÷ªÔn†>é À±³WýM)îWÞ E8Q÷çê$`Q4kqÀ¢ÝšíÕ±hA^Ý´uÝ ë»ª¹V×d§xtßU×7ÇíШ»ÆMÛCQøŸÃ^·_lzu8êÔµÑc_õµ>Ü×å÷J9ŠåiÊ„p”#‚™¼9¦oîi»“‚ö’D¿ÆIüþê6phjg1Jã‚#+Þ—ôƒ}t/ùÕ›b[:üŠšx¨ˆdˆ—˜aèL1bpU^û¥ì¶Õ^ 1Ñž`H|^wEÓ—kU¨‹Oˆçýu¸®ö}W]úR•!¦ßµºOÛv]mîuÕ›¡Åu+õìG½­^šuÙ t‹=ôLW8M®½øù•:xÞ•úÔ3Ý|Ñ÷¢‰Ó=þçID#:é‡êÆpE£{_ýЯ[»úîpUWû›!>W÷³þ™ný£ÝôwE7œoáNeÿä Ã]Fɪ#þ²¹-º ¤Ð­•+Qyÿdjõ¼k›~ù´½:{Y¾é#I»mýc±úM;ú «"ÍÙFwã²áÑ b=”fuöê.T$ÃHÛ¾~-¤ut+DèÇ‘+y. E$ƒæRHì¹jî%Ü£Üä=F3™÷†YGy©ç¡$¤ :‰ˆš–,eÑó ΢®U]kþRMÉœ-b«ªKUÄyPCØþ&ëp»7u¤uå®.V¥º8¤N×0£1@u¸~…)LÑ”bÿKˆõ m3Ù6ú£JtuÕèd¦*ªTWí]ie(%¹Jk,ŸÃ; í¡WšRäé㤇ÓÅ0Cëä㬛­†$!Ù;:Æ¡.aC]=dÏd¨ƒë™¢eZ×0z ·#³Io»…9â$Ÿuk˜ŽÈYcÔꉒ;ÜNéô|Ý#0ÿ0Ð;:™,ކP–£,áÇcˆÂšì^ð+×P×\Íûj ñã1$. DU†öЫÂ829Ä){4Ð÷©;°“jc΄'0œaõA&%üðµ÷©0{Ü$¢´¡Ds?Q¶¸,ñæy$ê„gA΃§¶0¢†©3Q(­D(QÆÜO”-.ÌóHÔ Ï‚¨ž…ÒÐ囿(̦ > TNÎ@=<÷i=B¹2æ~®l‰OÌ}ažG®Nx®¤]š©Äj×<†OPêÉÉ”EÞWJ–‡¥Aƒ@–,s/KYiæc)ÐóÀÒ)Ï‚%ž œÒP–œ‹(BQBÓ%g육Þv´ e̘û³åö¯¬=ŒÍ÷èVœÇð™ Šo*çW‘b/+ý¼Rçô÷õ° Õá …Ä˜û!±#Î_)z•Ì<º!Is”2@rSÖ»3$ÞPHŒ¹[1$a^%$3nH’Q’Tͦ=Cò!Ñá …Ä˜û!±#έ‡@¯’™G7$ŒËõ¤†ÄûŠçyÕ´ê …1÷Ca+ä~ ô*¡˜ytCA9Â41P\;„Kí(~b"Drþ{ø"҉p(&ÆÜ‰­™g‚ ó*1™ytcB2”ŒûÛª9ìÏû–ïû£b ÆhíçÂɃEKIÅÔ œÊßi*šònßÝyWëí×:¡(s? ¶6¼JfÝ8Ä w°Ûz}ÆáÝpÐ ÅÁ˜ûq°µñàæUâ0óèÄç Ê’q?«mÊ¥üññ‘^IŒ°ùÍÐ'ž6Ä?ç{†Ø`™{ ˜Èá^[zÌ=º à ÂɸÍÝúÝ¡_‚ Û¢ÿŠ¿ÒÂ*®1÷‹kGÚ½yèUŠ;óè7S¿Ðâîºv}8¥õ.8è@†â`Ìý8ØÚ¸³} W‰ÃÌ£‡”¹q/û¿‡ªìÏOïù„05 cîGÃÖÉ3 „y•hÌ<ºÑH(¢Ù¸ï´¯jý÷ÎûNï²ï4„3 cî‡ÂVÈE˜W ÅÌ£ ®³qÇZü™©ÕŠw‡B‡3 cî‡ÂVÈE˜W ÅÌ£ J׋}Ù¹^}:Ï!o7‡¨˜†‚1Zû¹°Dò`äRR1u熂`”ðq‡Ú#Þ™Š·£B5 cîçÂÖÉF˜WIÆÌ£ ñÇ«x>AÃý…x?! ¿Â?øôxø´×Q ÕÞ˜ûµ·…ðhæUj?óèÖ>ŽÍÇÍgççχpÐ ÅÁ˜ûq°µq¹èUâ0óèÄç(ËùŒß ö_ÍV“ŽJ ´ÆÚ«¬f÷>S˜K¡ëÌSÖ,G$¦–¬ò¯³žùÛ‚ ã‚±ö‚` ãá§\þ²IÕ endstream endobj 452 0 obj << /Type /ObjStm /N 100 /First 877 /Length 1858 /Filter /FlateDecode >> stream xÚ½ZKo7¾ëWð˜^¸äp†"4p ‚<€¶iгv„¸ZC–›¤¿¾ß¬èÆÑ&‘våêbRÜápæã<È¡™‹q†Å›"†9<~²!—Ma\0DbB(&$mSO‚‚éDÅH–K4¤½IN™“)àw©3%ïR4‚ñÞ: !P8tŠv€_Á&ž{tð™_D¹FF‡µSŒ^LÐÉ+ G|Ñ‘ŒN"ã3Ä)øR A_ Í* X1ytð‡“ò:‹E|ÇDRý9± ÅSÆ*Ù> AL"Ÿ0AJšqÖQÈÄ|²Ç‚#E‚ÄT2ÊÀ*T9™àAÃP“B‘‹b­#].΄yæ]?LèdÝ'èr˜ŠBä0Á‚<Ü£µØ{€¡øz€ ‡î·ÜÓŒ±5¬[ÉÀ¸*CU hGG„b/Þa˱„PÈè`”€80 Q5U‹”{Óà™èˆj©FbÐ阙`^geE*KñÊG;Ø""ÑÁÒÛ½.s‰¤<|B'†™øbÀÌ [„òF÷#2'tØDaBÇ£ƒ%„@ƒÊ›MLø%@?¦(3ÖXC,ÞÍö «N )@`±É«„°Ø¤Ð©J‰€ºÀ,RÐXjbQ†ŒE!SÒa%æÙýû³æÅ§ËÖ4Oççí¬ù©[®Ûåú à;xá³Yó¬½ê®W§íUï‹ýЯíÛÅüQ÷ѼRšè•½žÅ sAÇ=݃=ûÇæ÷.ýÌ4¿ýþ‡Á^&rfy}qñú†æËšû÷Ms"bò†ö†QnºÖÙs5˜Ñ<]u§ÏÛµy±Ÿ˜æEûqmþcö }d öu¢>Âß×ç+4°xëá£ô†ç¦Ã´ÎC­ãd­ÓZIã)Z*ÇÖN´­ut£´n.—X½ês†Ê¢9CÛ­¥{ºYóüúͺÿýËbù~Ö<êVoÛÕf ÷Z9…!³Õ¬ØÁB‚xë²Jð°‡ä¹i~î^t`Þ{²ü»{¿Xžÿ‰ðùr¹X_ý ˆL^^£6%pt[ÒVÉ"È_]·!x§9lÑ šÛŒÝÙE<Û€h<5Hܲ¡æ¤Oϵ¿9>Ôq•µï5m•ÃŒ.Ž÷3º˜¶]-ÊØ~I]°š«wÑy‹¬rd—LÃtódtÊè|I7¶ YøÈZ‡ÖÉOÕ:Ñn­·hDÈf¡t0^‹°°8·}ìkHaÇEƒmèJi²+¥=\iÍW±¸­óURªŸ&«Ÿ÷PÿK\1lNw|‘âœG:QçD·²yv‡fq zaŒÞ ü(p±‚³9njˆ¿þ«¹´ÏŸšHÏ×smOí ¡æ=|‹†ôø0ö|uËCï Æåá3ïyÄ,~°=âš‹õÊÙ·å{ÛöÓ">½‰e«+m.cÅòë­6Ÿ7ìå³'›?÷Þ­×—?6ÍùòúÃbÈnt;ëVç­]¶ëæ›G±ož½"ònÐâ'[œ^såÿf/ƒÆÉÖxA@r›c)¶e¢)O:™®G /"ÂÙ÷^"²Aâ!Þ´Çme‹×tKtä3Báÿå?·*a·Ò[4‚x¦•]t>2n*þn ‡§qƒ´ åŸ‰q§ÜÄ™XÛTÛ\ÛZr‡øzÌ8‹á¾eBÁo­ÁíˆãÞà àÇöòÓú]·´pþ‘1HT¡„ Ç% Š*Èd$e›Œ¤9»èæëÕ|Ý^ÙÓ *ë ÑP+_ì¢-^ëb¸ÅJ{úƶ׫îrŽf,0Œ`—µòŠÌî´²š­ˆ3½%FÉr¶øØ®ì¢ ‡,Y ãâ[‚S½œµ*j3Ó(ºËvÙ~<}7_ž·›ío+!êú¡/¤¾b­Vñ ‰a?yzcŸ¾o׋€É– ÂhÙ÷ ²àí›ý]D”4Œ(21kzW$Þ¦a€«5æq|ÖûŽOvâý21Âj‘}läôIß'pnBëØ&§©¥ÿ=æàtvu¦>ÐlÛŸw»÷h‹& F”|W[´»d5yï§ }°˜hË>ŒöÓÉrç¡ÜûÝ&„Ü@ît4¹ix!?Un¢ãÉ=Œy$“åŽG“; c•©rw<¹¥-}¸#÷­˜Âø˜¿ô]oŸÈ?T¼Þ³Làþ÷˜¨ªùWÒ>²žv—Ÿ.Ú³õ Ä9$ÅOE™Ýå<Ù:ÊѬ£ )¥ì÷H)%n[o¢ˆp¨-×Vjk›j›k[ï:›`£'áM[ùÕG©œ"•ŸT~õ P¤ò«h+¿úÖ#±ò«k+¿ú^!±ò‹•_¬üje_Rå—*¿ZÓ–Tù¥Ê¯w%U~©òKùÐR eܤõÏëÿ ”d–ž|D/ݸȿøroÅ endstream endobj 679 0 obj << /Length 4260 /Filter /FlateDecode >> stream xÚí[sܶÇßý)Ô§H3B$ô%ã8ŽãŒ¤±ÒN&É4k-m³Ý‹¼»²ã¶¾ ˆÛ’8Бb¯uÙÉC$ùˆÿåùÿpp!@уBÿGTqPsNT)Nç÷ óÓÕ«ƒþ‹ߣ6îXG‘_žÜûüëª: Q…¢'/ãKL~9üiÑnÖGÇœóÇËÅ«ß1yج֭þö˜ÓBŠÃJývòí½G'^©b ù‘ºÈÑgâô@%Di?’%¡¼ì?Ò1íÔ>ÿšE1”‘R }EñkQ˳Mÿ K~ør¹êe뺥 ¼*Ý]˜qRñøÂV\F1‚0êCþztLkÚÿm}G/þ·Oñ 瘬‰¤Ü§<ïž‹>ŽÂƒ[9\Ò䉩‘²ªIÁVÙF”GìÔœ²²ìœîÙÙ;6åXvB8ÌNì"«@vpÊžòˆÁHÁ;Ó=;;`ǦËN‡Ù‰]dd§ìÙ(Ø©t¯êëN³ggìØ”cÙ á0;±‹vpÊžòˆ®ˆòuçåž°cSŽe'„ÃìÄ.²d§ìÙ(Øa’H_w^ïÙÙ;6åXvB8ÌNìb†œ²gg ú8 û?¸¤¹mÚŸ~Iº  ­\hûÍ>â_~+¦ú¿Õí[pyð΄ε…²dú«ÙÁó{K”ùìš ^I"•ÀôÏËt¾¶¬¬šõùlÓÿpù²ÿÙÙªyÛ.Ïׯ¶·GL¹}üc´J©ÑúØ¥Á%Y¢p°4lå˜HegìPYkŽû ®Ýµíþ•í+JÿÃ1°<;:6g2&7`‰½,)´¾±ãŒú @bªë ¶FEá`r1&éàs¬°åp(œ³°ªÖUË*?Àp8y±š¬Û¾ ôH½Z¹AǺýObè ”;ÉÛÌP²˜nMR)lÉŠÂÁ’åbú’m@*{T2ʺ/b¼Ð™L§mVº^uhë qª T*lâ°¥"„Ã¥"öœÞ`…ÿáΪH­þOfaʱî!˜N6“þ«_ ZÎŽèa“‰á…ºÖT@ Ú&Û C8Ü ãÜrŠSö†”“µŸÖúãv¾ú%j¾úbrÚþ¿ë…“ÕÔçg“Mû¢éž@ÿËû”ë1ÊnB-̧‚*ÐsÓ(4ßÅôÕœœ •ù9eÝšiÅ¥VôKÝw·ë×}«}2wƒÃ¶oÝüpÞLÖç«&å'#¬¸I#E F»t ktÖè­ ƒ}4Vعšî\Õ]xáPzqÞÎ6Ç­í£uMu™Öåø´+܉’\º6ÜÝnÚå‹@‡ˆíŸ~`…áíªÎõ×¥Û'§¦Ëº¾'Ê®’>|ü¼oìîü¾fæùûõ¦™'P‘TwÞ·…•á‹(3;Ï…nT^t¨ÜEGá#†—ì—¥iêHÕî9ÅUk *= ‡Í`í~oñÙJ÷Ú¿èÓ ÙþHÖJQޤњÏyŸ¬‹>61J)ãIQ’ÆBXÎ;Xvç:cáºë¯õ<ü´}ù¾]¼J´V¥Ë»-¼61XgC8lmœk }âT¹Eï.—¤eÆÝóuÒS=§®«»´œâ=²ÃÚÂaÛcX‘´§jlÏ(zÛ™$LÙ"rÚ®NgÍýÞúɪ™øE•‘ë• LܹuYˆ›D, !&!öe¼°fHÀ©2Šž„›%èô|²˜Ú–ŸZë/kB ÿ ö/éÕ~ <ñiÓöt²i\oßÎõD¶ýû™|éÑ?J?;ÔSêÏÌõ m °>†pØÇ8«ãõã#NÕø˜Qô>v{’ÊêŠ>6‹ély:™%Þù¡#‹šGÇÏä‰ WºÁuÝ&KA‡)ˆ=)ÓÝ9NÕPQtTJY³«Sp¾y)Ç ðšè‘b†nÎwëx.™H"¢pˆ-Êd}GªvDä=RîVv¯BÄÛÉ*Óóvš¢+X7| qaSŠå"„Ã\Ä.¥+RÕp‘Qô\ÔQL\‘‹vq:;Ÿ6ûJaí³ÉÄÂa"bÒ#¤ª!"£è‰)+~E" áÃÝ®6¥X.B8ÌEìP)pª†‹Œ¢ç¢Òÿ¿êaެדWûBáÜës‰åÁGÃ8Dæ4 $ °œg¡Ô¶¸‡µ—†aݤÎïI"™ÊÎ/„¼‹ M.×XXB8LKl€ NÕð’QôÀð’î1Ð¥éÖ!gí:AM·É]ˆlù`7qÏÄ‚M#–…³;Ãë$ 8UÃBFѳÐ0ôª,$g¦æÐJ­\²[Y= Tl–±¨„p•Ø8`ÖŠS5¨d=*´{ËñUÉ)뾟€±¹ÆÂa`bû€~§j€É(z` F­®Ìb¹ÙO^¶¹°)ÅrÂa.b—.pª†‹Œ¢ã¢TŒÐr»Ï96gËúg\gÀ^$©ô|¹ºmÓ— ¤¥Q8héV‚Y²o@ªv–æ½¥’!$di|øpÑmÿúÇø¡c¤ª¯ë´ŠÖ„+æoù"ßúèã(<áÛö%û¦˜´ 'Ê.ô¶Õ”Pµ]¡íŽíî‰ß"ÞÁï÷q¿˜¬S»>»{âÚšf[†½alc ápc‹sX&ÿ„ RÕ¸–Qô®‰‚Ô,Ù¤g@…²Õô&n­çuI„B»…ƒ6»˜¾÷N>vGªvFç]“æ¢$n<78ºš:·Êk]ÁÙþÕxHúübñÑ0"‘aer挓4€ÀržŠ“º¬@ì /:=^Ê*‰,ª[ºH鲃µ7„ÃþÆ Oï¼Aª‡3ŠÞâ’æÞlá—=úwY¼7kX›Éöûóù|¢‡y«äáæî­@êFVr›¬!¶1Njz­©jlÌ(z9Ó-ÍvÆSs”má'\‹e·ÈÕÍ‚&«ìË*T·¶uó·S»d` á°£q~yºòâT£E羽xr÷Ö®¡£gݲesÚ¼k]c î2ðhúŠŒ}úþrÍÞ0Öµ»ç'GÎHUãZFÑ»F)‘U¸¶j´mæ˜ijx%$)n÷ú%ä¼MÖù;ût¤8Uã|FÑ;_P³Ý#é¼]qMum¿šÌZÝÛ¦ qy¶¸¤` á°³qžÓ{‡ªÆÙŒ¢s–©‚¨Be]'Ï+вÞ?ŽèmsID’…ƒ$lù’nãHÕŽ„œ¢'A¤äâ¶žJðÃß?K>ãÿsç ¯åcG—¬É!69Nyú‘RÕ˜œQô& ¥f—a¦­6™7Ýbgcí_ø޲êÚ¼þäNìúëW¢]‹ÛQ8¸¸½åArþ„ezÓ+E܃³i;oÝsÃY³^ç½î^ûZÞ)¯ûЈê{zˆª®ù.w·ØrÂár'§ éÇ2ŠÞ2.IUúrü¶]û?8à*±yAóù¼[¬zÑ¿f•~oe·ý ”mT6gØfÂávÛu#EÙ‚Þw¦§ÃuÎvè«‘ò½(b Ï ’\JÁ)²¼š·_«VÊù¿œOÚÅýÜj¦«ÙveÑnà?Ý{ë?áÆwkزÂá²g‹'wÂ"U=ÅôCb*õH—Ú‰ø#ÌCâ¦ßÛ®–‹ycж}óþ´±¯ñZLû˜Ív yYRò±÷pÒš›wÃ"=ŒÂA]Lfƒ:Rµó0§èÚŒ(wT4çíQUNVm·ÙÇ6Áo¾ö(µ¾LIY_Ûõew·XËB8lYœÀ29BªË2ŠÞ²ŠéÆW^Þ²§¾{œÇê g×|ënë\‡‹ó˜~’ŽT5Îe½s%#EI¯àÜC÷éÂ_aévñP©ÌEý®Ç?èû•ÿ+,£WêF[)µýñžüüC¢óîµåìÓÔ[ûñ°„pøŽpªŒ¢G€ë\‹+ÔÛg?ÿôÝ““ç_?yš*»UM.¹Çbp«¥ª‰âÒ¾üíºèã(|ŒÕà’ÐmQZq¤²‹Î*/i”ïƒ\á„=W9áÁ%s\áT WEÏ•nÃ…;šq®~èöë=èb?ú1Õ¡ë_òO×;@¦ÙûÅšÂaÓâ¦áTiEo-ˆp{¹.cš)‰.wûý„¹®ìO&^µKè¶Tbû>úîñÓ'Ï¿IC夾Ú9TÈ]+‹u7„ÃîÆw¸‹S5îf½»EA¨[×üî…yŸñp7þ„Ï~~òèYÂ\#>Âk/8Öã{ßà1NÕxœQtKE„;‚qi‹¾\"JñIFXönŽ„hÐ8=i?p’9çF­sÇ!.íÆÓï>xúèÙƒ–È‚°‹êSû™9 Ñ`Nã›Lç4'ùãÿkþ endstream endobj 597 0 obj << /Type /ObjStm /N 100 /First 905 /Length 2201 /Filter /FlateDecode >> stream xÚµZ]Ë·¾?¿B—íŽæC# ˜@RãÞ´`’\4 ¾H“—üÛôß÷™³ãã œ-¯À¼Ú³Ö>f$͇F]¥´ÒU ‘¡í……ÑZhGQS´xžÑÏ‹9úõV&Z*Îñ› 5¥Kï ü鈟ö^HFǃÒ9ð0 uw<ÌBãã…&ã+k…\ÐÙ¨pÃ(ºqaêóÒM óÀÊ2ñ•a°êñ•¶_ƒ@a³ðdP˜vEg|)-6¨áÓ>¸»ô!EdB¡Ez†+ÐÈQd ijˆ‡ºTÓ %cÚ_ÅI+†>ʪ@ö¢’†î <”&´,PoŸêÆŸÊÑ9$ñèlñ> ­9Ç›Y¬i»ô‰‰ ¨¶ƒØnjq*&ñ©s±›ŽÎ¤ÞÚÄ[£˜ÇxÃe´o¤ òv|A_+¡Ð¡ŒŽø1º <Œ2 Smm–1,ÆâeLH`åICk3$5â‚)IæúÅH È-^fL‘aÉM›Ñg”9bà4Ët ÁÈ‹7ü¿q+NŒÎkMC\.X#茉q,Ï‹±I3èÈ Ú2,J1ŽÅ[k!Ö5ŒãơL 5ÁÊ4¹-åzPÃÔ]Lb¾-ƇµImÆ˹yŒª!À 8ˆBUb̯aÄx…¥nX†Dй2åØ%X¦±_ÌõòâÅåúíþýT®_¾}ûüárýæ×|¸ýþËÏoÿu¹~õüî§§wåû†íÚÞ\®_?ýø¡|ÏsÔ ‹RP-û¨ òaeUŸ‚~_–/Êõ›rýóó·Ïåú²üAéå‹/.ø÷™œÒj,¶;§ÞÏÇœý$Nòª˜Ò;'÷j]r ŸÄÙfeÛÉIZuúRÝÞ¸|'g“*| ç8‰söê"wNv®°ÓkæØa[˜µ2LÆSÀ9é!§DIRóÜ)™* ÍCÊq%b%ú4›d œã!åü<ÊN\¼ìcu˜™c)Ö*LèC:’ÏåU`D¹ÞÜYðõV…ÖŠ'T9¼yÐi«üX:î'Ñqƒ™™{µƒ­ÈvµÚ,g&‹æ1ŸŸÃdzj9{0w*²T>ž³ÎA7¾ØSæZ¾ŽXîÆsÇz°^ÆI|6ªmË´Õt¬¥ë°+úŸYmý±å“v«…Üøz¯êÖ.Oéuºn|ªuÚZu"¨`Ïé8(ëkùPŒ¶3f©f¾–¯iôåÆÞpèR>dtÏ_ƒKsérA*Y#0>rªs®µf4àûx³f^*ϵÛ=‡ÁÛv§Ïä¼VŸ*mË“J4_»Û þ¼Ë¶ÛI½öFkùàÐ]6kF2«·¾–]4õÉ¡ÒZ:øó¡›5CZéR>ŸÈ¶Í#ƒ¸×—ú"xó8P :·ÚyíV‡3wÛvzdK<ÿÙ^âs8¯V¾.׿}÷÷â­ nåí¯¿üòæôQxšúû~¯žß~¸Ñ½ê}ëÿjrù(GPùÃ"˜ëù#žíãxÞ¾ìõõ»ç¿y‚åúúå«rýöé·åÍïuõú‡>]®ûÓÛï‹ ÏC;ïŸ}÷ãS¼Û«¿>ýôó_=ÿ¶©0ŽÆÍ>½þá¾-ÝmëwSÿ{°ö ìvH¶µ”-g+Ùj¶=[Ëvd;³Má4ÇŽLô1çI³IJ0¬Ÿö&…;ó¤Ó È t;˳aˆ Œ,DSàYÈ2‹zöÁQ¬œÄ jV&,*!¦kå‹ý—GÍ•?Ðg;‰›¯çá¡ "öƒûtR¡Õ}Äu¤‡îK6þ¯ErµVÞ2ÁKîu|äë®i;k¶ˆ9|ÍýŠ;ßÔç#Á×aìÀž&ßÐJs;ێ܇º,¿n‡›kÅ‹[s3/>ƒÛbu*ZKuÂ_ ‘µ|suö¸UaK.ÝÙNJm2¼þAÝì´Í@vã‹"ÌA%ä4m¶v¿åÐÛD EKùÔQdÝZŸÊÁnøü[1ÛØpyÍA#’òÇÆZOû›|ó :àwB|=©²¤È|l»Aͪ«/ºB•|ˆç{Ûlµv«zgŸÆ‡X¢KêSí°ÎªvÒrað¥x‚$QVä„wá(®Äl¶E¹×ÖÇ"áòÆÖ€gØt)³ÕƒŠ<äöÄ´r^ öpzÞeÂÖ4/÷9v….õêq›¹ åí¾ãzâmÂöñzŸÄu»Ç†Sô¼ë„·ëþ·ë„Øõý ʽ/Îÿ@ˆë endstream endobj 767 0 obj << /Length 4618 /Filter /FlateDecode >> stream xÚí][w·~÷¯Ð[¤ÔB·зÔÇvÝæç!'M[š¢%žR¤BR±ÓÓ_`·%1Ø±ÕÆ2©“‡Höx?r¾ƒÁ`€¥'ýž˜æDqNŒÐ'ÓëGM÷§ëË“þ‡ïž?¢ÞîÜžg–zùè³gRžÐ†˜ÆÐ“—¯óG½¼8ùéô‡å|»9;真>Y-Ϙ:ýõŒéÓÙz3·¿žsÚèöTš³Ÿ_þåÑÓ—I2†üHÎrï3±MLÛ ÿ‰Z-å¢ÿD3û)Ìé¯óõjyí~Ö§[û9³LªÓÉz>yµ˜mÜúì™Îž£ i · ÝSþxvNíÿÇ¿Ññ¿ûÿ`ÇÁL+¢)®©;9XŸgæ{ŽÞ}dç'Á÷" 3Xdo]Ev+N„ žâ·SÇñÕdy9sÜòÓõd;Û<îy¾½9³=½˜lçËË}žiÃHcÔÇ@4Ä©÷–Ódsš»W´ §8äÈiÙqÚ2¢„ œö´­–³3zšÛUÿ3Ëñj½Ï§DÚŸ>Öq‹ø{d0"î#£·>ÏÌ÷e°óÈΕ T8¨`X³*-óaWrûL¦ˆá¬G~Ö³œ†ˆÖ>ÔþÃ6„ž¿5T,ü¨çv¸[Ùl'ûú ‘ìåqg=…@9aF£ÃJ2‡ÃŠ·éÊ…CŽ‚ª »°b|Û$‘ÈÉeÉêÖ‰äævÛÿúzµ¾žl ©%Zˆd ²½“°d's˜ìÜïÜ€dã#ÙdK¶4”?oy:;j7nÒ°yètîÂÄÔæ«åžös«,sïr€BÿÕ‘ &kÀÜ—\Cüá`}XÇžiŒúùæõz2u4…ÁÚåñ·×³õ|:Y©°Aà ;0Ó7!gúÌœéžgz,p »ìØVn*æžíÛe϶”¯}òÞ­'÷“dÏ—Þ9i[}„ɽwvÄGkxÀg<€s350?D-æõ’Ib'à÷Ϩ¼þj¶¸)LÍš0&òøwM”"R‰IÂG3lo|ž¬÷õ4|`Köƒ#Ôê‡ê«¨Ãv¨ÁЉC ‘³†:xàÈ* k£¦0†´ºõÃæë/Ÿö³c_ÏLµMsêcg^Û,¥µšPqoj›má;#yËÌAân„K•Hä@] Ùq§í¯Æ‡Ú+GÒo7W³eOÔÄç;×]r»ØÎoó~u‚*vQ®‰Ô¿O„hò_KS2‡iÊ=FašpÈ‘¦äâü$¤ Tù<øj~zqí×–v¸-<›³Éæv=;ª¼µž¿ný+Ð Lff0Á¦s¥E‚"©»±Ì4ÑÂô˜óåtq{1몯>êš(Êõ&iÁaXÞ“9Ì{Θ¤aï`Ç»’v)ͪ¼ÿæþt²¾(roØ1¦èÁmXö“9Ì~ÎÌ>8°_vì·vm¦uÎ~þWÿŠ)0ñKEZMŽ}ð[ð#2 ÌÌÁ$p@ ƒõ€CŽzØA.®ë93D+¿Xü¢¾®÷Ñê‹Ï¿z~Ç2›Í$%½çe6N%aøòhfóìmF ¤HäÈsÙûFØ•{àîIý%>‰6œ4mg§úÇüôssraÿî/'®öÚž¼é,¯O˜Í*Ü`qòý£o÷ÁhÓZµ˜!â“—?~ó´WElX{wÅ0F(粜¾VÉ–Cî§ŠpÈQd+f8ÑÒw/,fËËíU?˜}mÎo9>]^.æÿWÓÛÍvu=YÿVZ‡sBõ!ÆÏ¥á !§çÌœž>Ã1ØóRv¼hëH©Çxùᯅ;8˜9Šà%,ÙÉ&;wš4B‰*ç5 潌oô*mé£Ü8¢R-ѽ]™9X¬6õbØ«¤lƒ µÉ%õ*n[øñN©"n î3ßu Ý彯°ŒGk˜ðÌù0ß8Ô@7ŒêØæ®—$ÒÝ.Û„dS6ÿìi¬P9·Ë™˜2œï‡ATJF?±¡þ4Sèu]¼^W›ÛW[Âm_Q®±Á|ˆSÊßÞ[X“9ÌxNxº 8¯;Ò™õkØ,·\=3MF?ú0ñì„å9™Ã<ç>kXàÀsØñL]ƒˆxö#0ëÅßgÙuó&L.8™Éeæ`&7ð1ܤDŽÄV±ìvjûîǾzñòûg/¾¸ãq)»6²w!{ïXs‹Ÿoì\Uo}ž™V  uÎú“PHäp¶ªŠ¼óÈúé*,pVxøÈ‘ c$r”Öòp‘ÀíÏ’ÒámF_•W ý"!\³\-ϧ«ewÛÀXo±<4?´ÉCRE¸ÍVÚÖ1z'XŸgæ{JØ}d¹ØÝ†e#€Ž~£,ýv Â %ŽY¸Ø2ÜG—é*u™ù‹Î -‘òÃw•CÔù¯¥.™ÃÔåžEêp l0Rçòý†Eêòýfw°¼ÂW©žÔ(ÂîÁEA;~ÆÝ‹¤ã—­û.XŸgæ{þÛ}$0¡ËÆu³q$r°®"ï>²<ÑHʈÒ ì­ëÀ;ìçÖ²Hq¨H+ˆQ¤nÒ´5‘ƬfnÓcY¼´ÎhòQÝqQê½¥4™Ã”æ(Å¡v”V#¥n-B1Œ®¶W³uñ¦IªÌ¡Ü4‰èÝ‚¥6ZÃÌf~¦ebQ¯0\¤Õ­D¨/û»‡ÜŒñÊ—r6ÃÜ@ÂgSmŽáº9(±ð^Ä&ÉN,rbŠ7É"AÙ`T‚[8P3P‚»…*\.c§¯­7Ní:ÀûÒ=r†ÛuæG_SˆãÑ»;“9<ÄsOï_9Öq‹Cí¸­ n¥±+¹pÒð†±þJÀp Y¹7QCÑ? ¼à+äXÎÌÁ±¤šžyOVLÉSÎm[”F1ÙÈÑP^ÓÍb,ü´’pë”x¿ð£ˆ’GU ¾Çê'™ÃúÉé,#(Œúi)áTWõ³YLú3òÕ¥Š0qûÙûÎ_ìÐNwAÊñ^Ç*'™ÃÊɉ,G(ŒÊ‘îÖ´ú"w³ZÌ/Fs» Vw׎0æ@;k‚§±jIæ°ZròÊjÁ²À¨nˆaõ…íæfR*§¶Ìêƒ?$-ž9ïH¬’9,†œ›²p l0ŠÂê9ËfvÑÁ)GžÚ6?}ï)Gš£ÊYz×cÕ­añd\–µƒBdu´¨ª‰äõ%·ïìÚÎûÓäþå"cr2Ò]å•ðŸ÷Í€™ø(AâðÞŪ#™ÃòÈ +VP‘ l0*¤QDs`u½)¾ʇ#äï»zcE’Ìa‘䜕ƒ”‘p£ºW`ô"¹Mït=w³…•ÊEÿû›ùÅöªø–Ñæ8Žü…²y𲟙ƒ•ø ¼ØÊƒDu´×#íº%"¼«:§zõcÿJ££‰ ÷ÞmXî“9Ì}ÎD¹Õ‰Úq_AŒÜ+w•>¹¯qpï-^q0y"IJw–åd³œûá8ÔŽå bd¹µi\xÑÄòÆgùÛ@K÷·ÚUí=M ý·ÇR˜Ìa s‡‡ÚQXAŒJ·°ÛgÐu\¹n K÷âžã¹~!Ô» Ky´†Ïü/š"á(ÈŽï!\¹%SÓï:Äo0-yßœéöôs·Ì{þô»»þd¬k¾w³< ZâgÞdÓëm€Ó•¿8ÔŽà bÐÌBÃË@n&kOÏÕl¼0Iß×ã»§±$#\ñøGNcyëóÌ|ÿ4ÖÎ#Ë+"![b4·3<°|Ë[ÒR†…õÖuÜG–«¢U„áq;ãØÁ¯«Xw“1Ö[×qwYÞåJ! ¸·>øÆÚ]{€þÆÞº¼óȾëŠíŸk´²oZ,²·®#ï<øÊþô#ب¬ÙgNàJr¼pÊ0ÔŽ7á½A,½½Ç·÷1ðrRÃm8˜ó^Á5Øp‘Ìáp‘{›ïw@¢vüV#¿6߈™Ï¦³7ó¿Ñapr·|œSk"ø¡Ô >Á›Ìabs7óòÀÅ¡vÄV#±’Ú¼Ù¯!Çûݘ$­|·v7Ô¼ îÓ~—"„ÔÞýØØŸÌáØŸ3Z¬;!AÙ`”hHn»îcÿÊ-Tßœõ³@ñöi­ùÃÖáóïw¬v’9¬œÊâ¦3”Fí0c×Ͼ¨â •]•2Üûàîè꘥û„<ƪepvÒIæð¤“sP.\"Q;Ö+ˆ‘uj §Ã,ë.|[ªiqÖ½1ì!P¼_Ë[ð36B$s8BäÔÉ¢Vp l0j¥ÑD†cg™Vú³YË _Å~ë'ž¥/’nŠË ý/>!޽°'s˜ãÜååYÊFÇÔU~ºËñðB'·…5¸mv•!‰üàz™û(|„ ü™9øn//#‘¨Žèb$Z+‘1Kô¯óUXq¬g›ÛŶøŠqCÍÑ·’ÏaéOæ0ý9´8ï#Q;ú+ˆ‘~Õyݬç×óînHÓß _媆ÞÃJ ™ÃÈ "µ“@1J µAš†Åâº{ÕÅítëOY÷·ˆ×î3Ç|/Xpr¶ÏÌÁÙ~ÀH±ä„e#€QRJãšou}“UÜLo'ú·¡‰tëÏ=yþ}õ‚`׎ ½¯íá+c‡n2‡‡nîEV¼Ž‰Úñ¶ƒXn8¡¬!,ô4}‹i8ùåvµÇ”<{O8ÂÝõÝÚ!\/ç¸{¶[ü•™9<´½Meh×@ÿ Nù1ñ endstream endobj 681 0 obj << /Type /ObjStm /N 100 /First 906 /Length 2279 /Filter /FlateDecode >> stream xÚµZÁŽ$· ½÷Wè˜\4"ER°0`ÇØ\`aûÄØƒc#ÆN°^Îß籊Ý=º'A¦ìBuÕ{"‹¢HJ&RZ1ÑBÄh­0 ÚQz7´^ÿMfQÅÏZ´T†Z.>£í…Z£“©ˆ:F€È¬èX¡Þ:£H¼ì…Ôâ­YÈ~²Vh8~Â(͆ŸŒ ·À±^˜XNf‚©uÌÍ[A‹ÉâMîÃË0ÌZb¦˜vÃOéB˜¸A·ÌK1bú}àA­twÌyPésbƒ‹lj½sŒH‘K¡+h11ÇÃsv<ì-&†‡'Ak®E[瓹¥ÐŸ¢lñ–9Ç›*#³µ† #”?¹¨ 4ŸuB61Ú0M›˜7¹lbt“4æ½I:=>C¼BBÒÑZLWÑ¡ Æ'Û^˜1ÒË Ì{@­è`´w?feˆÆÈ(C-pBÅoá^-cRt¨xcF†@â›9ÃLIñnñ“—!§Õ¸â1ñy»Ͱ#0s+³Aóƒ©LêÑá29ÄÁ,g‡¥„ަ@æ5Õù4ØÊ m ¼9}“ÉËœ–É!Œ &’+k Ñë0HÈŽžXŒÁ„›0vØpÃw9 ¼u…Ö0%j2¤%ÀÞ £ÇøÂ"æƒCnY(Pb™„®Æ¶òþæÍéá›ÿë±<|þáÃÓ§ÓÃ׿üýÓö÷Ÿ~üðÏÓÃOxüX¾mX¯íýéá«Çï?•o•¸`wjs€•1ú^›3žù¼¼yS¾.|úæ©<|Y~×ù÷å³ÏNø÷:>ž³4°ñµQaÁ·ùÆA|>+Á–ƒç¨Ôu­|Ã붃ϭÂ!Ýä£þZ¾Q;xØfpß°J>oòùAt:køô`3­Xš·µy2eT)œjeé·éŽRf÷ª’|"uŒ›tã 6Ær;Y— ë¼Éfé’´:ÌFǽÂuÜÖ¥Ã/UÃa ,z¿-žÐA|F°]>¢`º-Ÿd›¤ ö±;NR¯pÜ·ùä >i0‘ÝqbW¨l¾„Oà$glQv÷‰ ½ºÌ¥|Ó« ,ÛèšU„¯Ké<,g÷žSël})ÛUvÙ\«ü/\_–o !t+_•‡¿üõo·¸ñÃ/?ýôþüÌÛ§Ÿ6˜·HDòÙ·ˆû1×þGÄ-–}æÜGÈš]¤^£Ô‡wŸ¾ÿú3/ï¾|[¾yüõSyÿ[¼û?€üñçŸ6oP!òÏO¿|üþ1†túóã?~÷ÅÓ¯»^ ô˜a¶ï¾ûˆwøÛþܦӟÁjû›[r³·#[ÏvîíhÙR¶œmÏV²M¼‘xžÏy>çùœçs~~.y=y=ygòÎä‰7o&ÞL¼™x3ñfâÍ/ò—½¥l9Ûž­d«ÙZ¶#[Ï6ñ(ñ(ñ(ñÒ$"cÙÛģģģģÄãÄãÄãÄãÄãÄãÄãÄãÄãÄãÄë‰×¯'^O¼žx=ñzâõÄë‰×OOOOOOOOOOOOOOOOOOw¼÷ÿ¿¯`¸$j€ "Ù2€µÁäj7Z \8…i^8#º·i¿2ÈãÉU8 T[{&§! e[Å^Ä$ªªÏ(±§êØòµ®ÿÂÙZu£+gì«ýöçìóN…É<ç™S±¹"F¹ÍéÇ|N…ɼï…s‘•ŸSGÃç{F‰œr܉ú2ZÕ(;ؕҬ6½­Ù×~L ŠmLa0÷ÇÎȘ"³6Vä²Åž)ÏR¾@yÔ:‘(¶<×lCXF}©Û´Qv;s BA^S9 U¸úY½—¸ëA""q÷ç"vE"oKR£ 'Ì%bÐ 'KíÞ×pžõÚ¢ÂóLNê0§Û)ËA”}ÂÝØ3ʆ`ÿΦIQ:ÜÍÐ eÇxo¼Ä€Î”£oEÐ ¥#Ths¥Ívã:å™”ðó“n;v>Š“°ôŸ‹É„”M—º¼Þ¤ês9)Ê4kÒúóçŒ6E.œOÚð•İ¡kÔeîî²Ò‚3øtí•nZœ9ÏF‘íÂi£Î¹¦xᔉpäjA¬V]m1g‹Ïwå´–’¡J¹Æ#Ü#6¸­Z>(6`Bl ×MŒ9bƒ¾–³YÕkÄÿp›‘Ú1k“tTºÚ,¢ƒ¥Î€$bƒ«Œ¤ØRÊ_îºHH`ßq%CcÙ¾à™²cG›sÅ™ÉÙvÆ×.”¡­ fı8.Fl |IMùµ/ ./œg9_à|}ùv?ý2‹“ĽZl&¯ˆ+/lqB“§'f‚þMä˜ÃÊŒÛçËÉsÑIð^¿p†ˆ/ðõƒêï`yòlm_ˇŒgÚ~ h±öï_è(EÆÕh?Œ2,|¾sÀ7kPÇ~ ±ÕÔÄ–Ô–Îâé”jœŸ/êiºò¬!y¥ýpVµc{\JÖ;B›]•*°”;®ì(:î5-vÉ´èÖÀn'Ñjžã+*ü_zÁDÁ6ö3KE2å¬+/˜È¤JéUfI¼ô>‹x‹K,¸Ã©ØšKI‡MÙèN‡üit_*Î(Lítæµ /•N¼æÕ.A Üe,eëŽi·”­æ×d)[¾¯ƒ(øMÕ¥tØ}8Ã#‰4IçJ&È’ÚÜØV棥—‘úÔº»0Á¶wïå ‰uÇ~åÉ„ Y´³&ßÚZ^qtªóN)è0ù *¤ÝTú Ê÷ÊÂGɧö±óY¤Þ¥ÛAtM°¥:5_s¸(«o‡mÈ7i…łߊyÝ—¤™b¡H¾2Ú¨ÛµØûŒ¯\î‚$Ó•®Œq‰Fç‹”¯´ñÏòŒr+¯Û‹”ÄǤagÎsög?êÎê™ó¿|É~Pš²U‚GÞëôYmö¥×Há`âžý~ߨïVc¯¥‰ÿxº  endstream endobj 823 0 obj << /Length 3353 /Filter /FlateDecode >> stream xÚí]o·†ïý+ö®«"K¿†œÞ©!§ œÔ¤A ãÕDtµ«ìGýñ%gHw‡‡{»N¤Š¢¶u4ïîyÞ9<$‡S:)Ìè¤*&ŠsR =™ß=+º]ßLú?|ûÅ3êâf&pEþåòÙó—RNhAª¢¢“ËãK]^O¾Ÿ^-ÛíælÆ9Ÿ¾X-Ϙšþ|Æô´YoZó×§….§eqöÃåWÏÎ/ƒ’d ù‘läè3i6¡‚pQ2û™tE$¯&¥„rÑ®o­âó—l¢IU–†D”æ‚Ô\йO¿®—7Ígæc >]žÑéj¹h—M½îÿeg¾[ÿ§kó³æMA…ùó½6ýÅutqÊ RJó‘»ëþélFíÿ‡íýÿÙÿö ‰eZMù¤TaEy$¹>z…w ŽóvxÉîr9R®)X…UvÑ#eN#iã¶RVD9¨ë¦¾¶€Æl¹2Ù×>ýŽènÓØ?°é»v{ÛÿÎÞÕ#R„_ÚuNeÒØ¦ú Àâ²@Ÿ9¬B4l€…(Aþ(Ù€–µðEEØ@ÞÞ¯Wgæ3Oçõ¢g<·E§Ú+:#„Zm*Åï!þFYgD02u,í}ô, ã>¸d—5âF {Þa œk¢ _-ëjºJÞ–ŒT•x$L?½küíÒ­C8\$b‚´mƒS¶9PN7¦OQ¥ .P À¦Ù.BEiú’òãn9ß& ‰2­¥éƒÈª$𣠅ƒñ1ý0B!ƒ •½Arʦ®H]®˜ƒ¾¨7·=ë7…,þ•h ˜&J…!ãùØK‚¨"´0—¡ýW÷›šu½]­Ç‚”\„ƒÜ(â3˜¢pp`Úƒ ö!Xao Œ°5’fäjËfµh¯w›¼…xI„]ر&DÃCM” NXq²9,k‰KA*ß3o~ÚÕk×T¸yK²—•”hVj/ ™Áeë†!¶C nM‘ÊÁeëS¯¥ï‡7[¿¶6¦A¥÷Â?jã!Ùcö4”¸üc‡’!Jb¤ðP‚ö6Ê[qA ázž‹m½uuåõ.ê¥ûÛ 7c^ÛËv¢.Þo¶Í[»2?»H¬`ŠÒX‹ÿ-Arß i‡!Å ƒk?RØCÊ[HŒ©”¿××í|{¸JU«T¥&fs£ä—<¬†pØ1p +ì=¶ œPJvo·ëº_Mð^ØZHtš®ùãò„Ûå ‹{‡qÇ©× n¤°Ç¶¸ Ó¦ éqß¹Ia½¼î_·o ÊM翜7îg½äJµù6¿·v¢è¾>–âSŒ3 SD {ŠaCQmªªCŠGHII ÎN°b+e* Y;ÂÀEÏ¢ð1üƒKðµù©fXa>¸¤Û?&%Xa7)É ï_²Ÿ”€Ý$RÙû=§lýneÄß×}còÞ­ûm·Xq•hKAô°uúø§¬@ùóyD–¿(,{hÀ¾+ìí¶vP”0¡Òv¸kjóOM~ò`®/Yy‹O–ù3ó3G {æa˼,ˆÒ`Þ.ðÔÝ/ /éÓÝïRˆuÂ;!¦;)ì¶NáÔom¼ïfªÛú—¸ò–¾¥­·õÛzÓ$Z×¢ ÕØ¿@¼Ëv€Âá>N¯Z¤r`z œÜ¬ Ì»éµ!¾mÄ_½?e³IÓW\?dúEI¸ähúC8LßÅôíéã”ýå$}®LõÏi¢è_-Ûy¿QqíÈov÷÷};hþõ6¹l¥©<¥…eG–—ŒpôT`ˆ­âBú:Ö~œ¬7JFÖT~.©a/†çýÝ~g`ß/¿ne¥l—7}ùOíZTœ°a&üçc»ÃHêZ„ ~‚Ÿø¶Øø°Õrñ¾Û ùωA¼]²°À‡p˜xœø‰J¤r`žQ¶Ð%BêCèæ†§Óì#ÎÆJc'·M 4>Èæ/ ›¿=2tRØ»!#lÝÀMËV±C74¿Ü¯­!6ÀXofªR'?ðÙÚ`‡MKRØ› #lM`úD;}Ïšà³08Ü/Úy½m®Sk×)ÄïfUr÷u±•|‡+yœA n5!•¶Œ²ÅF RŒ¨-ÚͶ©ëEk¦iܵ;ÀbϹÜÝûÃx ÂÚ§K5DÃP£ür2Eɤ°¬!Ê*ÓºW"…4Q„¹Ý°z"Ƨi‘(ôÈ1xù©ì]’S¶613<ʪC›,kÛ·7QnÒϱ›_·›aÕ8]—,Ý!¦'nБÊnFÙÒUš”%O¥õ¼Þ¼µŸØXõ⻋Ëó¯?Œ,+Í,ò#´ `÷y±ˆ‡prœ3NµQ ¨¹};¦ŒP¿üòÕùÞQf.÷‰LBhܷ¢Âa4q¢48ÕMF1 a´ÛMмúÛ‹Ï_ýùë㣎M¡¬º„Íêg5þŽ@Vqª]V3Š!«¦wÔÚíJ\]¸gø7m°éëƒ×lhûšÑ;6RïÕ°7[ùÛ¸Þ5‚î«a{Ë!î-ãl%¢ìˆ`ÀSاè>žäÑUû–¥ôb>{ê1=—L¬!†pØ1Ÿ´!p¢ìˆ 7„Ðaœç á¯&Öx5¡ÕI¼]ÍòùB2ÂAæ{’Ì‘¢ìˆ``n°‰BaÞ¦7{z‹§àȹDbÍ0„ÃfˆÙ¤Í€eGƒJ5¼ÝçêòåL'ŽÿhSõåÓ#²¿r-§ÙØEá`c·GM¤}‚Sí|r ¸Ò:ERãn實¤OBNfTo_wÐõmßMø­…Õn{¿K·å)=*r¤´ÐÒÜsèÞ" ‡K‹‹I¿Ç«³ N” ¥¥¤¬øžì÷møÿx{ìEŽR>†þÏÇ{ý¯ýdð”F`éR‹µÇÛ#¦¥’öÀ‰²#‚Þ¼D—q­X-vÆwÍø•)lz¾¼Y´þ…ãóÝf»º«×ïSEûøð'}ÿ¢Ï ÿBH(Q8e/GÉ2e Át™çRæŸÖÿg¶Ì»Zòî¶õÓ÷Í}=O´†‰àüäk{ѯJ;ªŽî¸èY>öÉÁ%›·P„JŽî£ï_2ýÆ/ß® …}”>¸d¿“|$ ©ÚÝÅP¯LÿÃÝ­ø®õ/õ¸©w7MúMÁ{j™3m±Ë'Ö!¶Dˆ&;q’!öåÒ¥’Uœ(êvù¿Ã”Ê÷v˜«» »Mݶ[e¶mQ³^ÖÐÙej²8©…Üa¡0˜æ ^L³¢ÿxë+ endstream endobj 842 0 obj << /Length1 2419 /Length2 17768 /Length3 0 /Length 19181 /Filter /FlateDecode >> stream xÚŒ÷P\ÛÖ ã®Á-4Ü݃»»kã4î.Á-¸;‡à®ÁÝ!HHpwysî=9÷ûÿª÷ª«º÷˜>Çšsíj*2e5FsS ¤È•‘•‰… ¦ ªÍÊ`aagbaaC¢¢R·vµþWŽD¥ tv±vñýËBÌhâ –‰›¸‚ @Y7;+;€•‹•›…ÀÆÂÂû_Cg>€¸‰»µ9@ ëº Q‰98z9[[Z¹‚óü÷@cF `åååføË bt¶63L\­€öàŒf&v53k «×ÿ„ °ruuäcföðð`2±warp¶¢exX»ZT.@gw 9àwËE{àZcB¢¨[Y»ü­Ps°põ0qÀ;k3 Èìâ2:ÀÙj2ò%G èocù¿ ÿ!ÀÊÄúO¸ÿxÿd úËÙÄÌÌÁÞÑäe ²XXÛJ’òL®ž® ùoC;°¿‰»‰µ‰)Øà¯ÒM’"*p‡ÿéÏÅÌÙÚÑÕ…ÉÅÚîw̿Ài–™‹9ØÛA®.H¿ë·všy÷bþÏáÚ‚<@>ÿEÖ s‹ßm˜»92k€¬Ü€2âÿ±‹þÈ,®Nn.^Ð ô4³bþ@ÝËø—’õ·܃Ÿ£ƒ#ÀÜÐÏÚþAòq1q\Ý€~>ÿVü/Bbe˜[›¹L–Ö ¤?ÑÁb Åß|þÎÖž=ðø±X~þy2O˜¹ÈÎëù_GÌ,§¬¡©¦JÿŸ–ÿQŠŠ:x|9ÙŒlœ¬VVv^7' Àïã(›Xÿ§–?¾2 ïßå‚yúoÉîÿ™šÿ,-àc):€' ù3èú,œ,fà/ÖÿÏãþ—Ëÿ¿)ÿåÿuÐÿoE’nvvéiþ6øÿÑ›Ø[ÛyýÇ<¹n®à-Ppïèÿšjÿ^]Q;óÿ«“q5ï‚ÈÒî­]$­=æÊÖ®fVËßrß‹fg *;¸Xÿ¾ZŒ¬,,ÿGÞ.3[ðõážÉ¿T@ðòüoJ ™ƒùï-cãä˜8;›x!±€G‰“àà ^Gs ç_S `f9¸‚]àæüÎH¿O”‹À,ò[ô7â0‹þAÜf±?ˆÀ,þñ˜%þAÜ,fÉ?ˆÀ,õ±˜¥ÿ v³ÌÎ'ÿó)üAà|Š8ŸÒ?ˆœOùçSùƒÀùTÿ p>µ?ˆÀ¬þ{×øƒÀµhþAàZ´þ pv/Xgòâç3qÏ‹µ‹ípñ¦ØÝìÄ Ö™9ØOü¿’ßÏlþ/nøÇ\Øß3÷¸+ð(˜¸Xý#cÿ-ò4³3±ÿWpi 8ªÅ¿ào¥õŸ,ì¿¡û¿ÒþÖ;¸9ÿ+ØÄò_LæŸü`2­¼­€ÿn ,³þófû/æÁî_LÒ¿jgSò''Ø^ˆéÁÝ8üÉvvø5¸zÇ?j0…ŽàrøC2¸G;7—? €ß.íâ?'Çõ[èà ´Züá|ƒþ-uþßca3ò/¾XÁíÿ‰ÏùÝÿÅ'ØÜ|Íÿqgû|Y2»Z9ÿu$`N\=þå¦Åí_̨û¿ ¸L7Øû_ÉØÀá½þÁ„yÿaÉèüwªÿ¹pÌÜœÁ¯Ý¿^ àü/þëzÍV—ÌøCmêC;ïêDˆ<w§ç©vµÒi}V»ÜÐàShk³ƒ¿9߈¤Œöc¬ïHÐ\¿ÿJúìsØÖÞž¤ÒñèûdôQuv·iewhºøP¤a‘˜Qýýžï³“¯f-td,U¾“šr!ÖÇ)φÁе‰°¥]•½Z.9ä§Š9ÆXý O T¦9‹øäp®Œ$toÎ<Ñ®oæßäM¿’Ê~¤Gò;Še/ñÑÝb‹»_ôÞ¨Rgsé% $ÐÅ'¾~31ûÎGôgª,Þ²OYi¼lXt©‰áR‹Pº‰Çg²žUŠñéïãø¿Œ‚Ä*ÐwfÃâÍT¶©DGÙ©åuã¿Éoàþ4÷ÌjT„ä¢Ò½ÿŒë]½í"“íñF{PÌ=4 þj(°wÿjkÙI}×-tżB8—iÃ'Û‚—{Œ¢`S+¬ÓK>Ì5}# A•bð0Nn*ÊvE–P‹®MßUáh}ºÆ‹GíëùÒS#e™mýïZŠLb%4šsú§Š{{Äù]ý­ì˜h° "ÂvF.}å aÊ-·ÈÝq^j^eß—zL·0'ŒyÝHã†n”·GêÝœ—håݬÊãƒçFħV Úû”¢ ?ùá·´’Âöö. ý`,›òÖ ›\{Ë^µï³#]â⽫µ8 ßAжô}’)yÇ̳½·È?­‚&3ø€®@×J&§ÜÚBfä<½÷¦TW $mo€³NURßr-ö¨Y!$®(jy·ŒæbÐ3ìÒn¾Ök[–ªjS6ïX]Ý,{_3<‡ÐðÏ A£Á2úöaŠaþ ŒäƒÝc”›|}‚g y”,g˜•%˜”Î ¥/¯þ_7&㲪{Ñ!¡ù!Ciƨ¿î‘¥õY|A}b.1ÓJ O~&(ã {P¢ÑG/ mŸÂ*„ù²:דùDéx†•D6CN²~ÉÛ£ äÖ½ð+Ï^O0 ?ô~Àׄ×ËC$„³obì¦û¶Ó»ÅQŠM¹š¬)®ËX›ÚW“± õU.Õ±©夰µ¹À_Ýí¶älIé°çcÙ}±¿IÖ;nŽâ}ؘ_ës=ƒð ‚íôãš’xf{ìƒìuãÃ<¶ƒÈVGF°Çpv8û" „„o&™»MÁ-7Š½Ã¨ =|gŸô2('óÌùf¬Íp–2lžÅØ~Op:×ÈÇ_òáÿh(yتîžôßz1˳¬`ŒX¶‰EfÁk$¤|Pë‡ Y\~S-»²—Ž•Òœ¿‹À‘ÔIÂã „Ò@ —Å?†½'°Å$@bö¯1¬ÔªõÇ|³éO Ë—*•LjmJ?½—Æv×™`Ÿi½w?•à áü9¥üèjPH·òdbSx:n’g[YÒþg…=P\ùj6³,‚«ècò=o©» •D¯‘6ÍWB˜â]:< /á§}|qôVeÖºÿ…ƈØTfb$»×”do•T´¸ îl Ü×sÊjù„À”³$ÆâF¬QxKrÔõ®bwAdу‘œž£r³Dh®­8]¢ø^ŽN ªS"²ÖÆh”Q¶+yÙ”dª(¼èR×<þ¬Ü*<5¡>:þ‹§âqyá¦ãN¼ tiN›”|àªR‰•ÐeÞ¼CìÕüa~Ya/ÄWYþ3Yz}{¤)RbY‚G.ü±~[¬¸%û ^r8E€±ø\Ÿ^×à§—‡º™€àf»_Öº2„XÉ7„9º(_‘å´# ¹!ú«jV² êØOIj ûâÁŠØ#Lº0’Ü&}ë32œ{ÙIëì1§ñt{Y€\À¢+?‹NíÍï&ÒZJ“Ëäï;¥}}˜»†·® ‘¡üâ>‹âªSæ Ù÷¨›¼Rç” iÀ¤ÿɓц,â³X°Œ°çy ,²:Š·Ë§Æc?7yãT…•ÀŠnrî\¹îydè“ÛýŽ‹a<^J€hŸ‹‹„bß|wcÚ·ýLâaÄÄì«{)r”)ØE?3: ìõ™©s.9âx[󪯑I%ýê¨ÍfŸá+ÙŽ>†P=y‰ë+4bªñJ¯œ©Äv.æ8[\I}2|Òçä O¡ØYuÇÑû 3ÝH‹³+÷C­Ä¸ÑÔ–Q­@¨ýÈÀó®ˆÛuÈœò%m#ÙЕYëMЊ×tO@ÏüO—U­*r>´«‚“´Ä;Í…:_u³WS­Cèï•å_Mã}«n(aɹzäbÑäI•µÇ¿y›¢•æé†™ÍÝú½ÓRáɯÈY(±¡oÔmoh5j¯]Îy1n(ª•m^1ê¶v¸BíÔ[õÒÇó(›¼³ÁŒÉ´÷=nŸ‘zÝè±íͯp4ýjõ.7“w O½S—…ÓロrŸ"|ú°#¬©x­€C׎Z§k}z"oqi!¹ÀüI¹b"ÙcjÂÈd’,u[ôÀÕàÚ;X¿ / ¶j3Y•9Ù£øðç!®ÂCY*î"DÖ²¤GÀÈ)“:Îà" Q·Wyò­ãdÜòrs©s­ðˆr‚Iè(ú”|5#4Ñ Ò´fEôú-»”_‰:$Á>uæ×‚xP/ň¡Tü\þu>cV+Làfàºä]·‡‚’zB­¸‹lú¸ Q{ãC_ˆ<âcP—úfwË[&ÁÇE—osqèÝT¢!_­b.Ö(‰—¾_ åí…^:ü’KûJ.3]‹¶€žh­d›Å(Ә䦖ýLÓ|ÚA2œ5{Qmƪ,³‘ðý–É._eÒfT’Ê&¯L¹‰õ¤ÃÛ”m´æ³Vঽ½\KhÛаù:3»Ñ—ZþÇ›TîBfî¾jÁqÆ}UªÀ¨½-P*±¬h3ñ{Ðä+—˯~«^lUIÞº<õ%ŸšÂwég”ß>$ð_YõÞ¾^Ç+¼Úôî×塬Q%HBái†¾~Úqo †6VãÛ:ä“:ªM4¢ßlófUBÄäoèÜêFÒš«¯†7¡â°ç·º¿/…ðP>ôPfß,Ú’ “œ[lZ„¤ÆÇä#×¼)nDQö ’hâýt=M©ØúU ð¹ì5‚ÜF¶CÛúYÁ™på@¢¶ñ(gQþ‰ü'Ù>}¤†HäÇé1(aö7½;žÜ©ç\D=¯&d—Q‚;#XÏÈ£)£n%xѦ…­ÌIߤzÖ)ÒÊ·úåúƦßw)oœ»i'…˜K oyã²°D50W¹k˜ò9ËwðE›wTe %¼&äøšdX;ïH<1Y-÷>V9¥Û¦¦†Å0tY;Ãbk;7¤õNk2Hš@·«¹¿Ÿ+²þÕì±?çEñlžù Õ?~†Aå2öÍ?Kxy7o@wú‰o÷„­½Xxk}ÝçCþîŽTÞR.Âûz¾¡»ª‡A“=žŸ«ÝRísšQW²˜ë݇%2Æm'qŒÂ'×üŒ—‡¸pR~j”oM|Qn¿; ,7ÛºQŸzda<צyAH¤‡n:4²½ÅnKúâ'C·Ùˆ'*6-ä%œ©d4 ÛÉ‘öæ‰o;峩Ä~¾¦A(kóœæÙ½)Cy¸œƒ$‹¹i‚ aûÁëDÞ¦‡”áD•m"ÏþÀ$ß:BFÓ˦#P¶eÅ”0eÜ,hQçsÞÓ„Õè­ ý›©Â€¨‡!£&—¬Ü!µz¼œŸ$ &®e^ÖŸÏg'œ_Ú¨/$Ù ž,1JòJ6£ß*ø­¬•°ç‰ÛŽXÇêç9»™ };翵n!2ê>‰ÄAr4šÍ0³½VÌZˆ¾#>¸/ã,Ò²e¦¬e$þ ¤8F废õy9ExªÜß®iÖ—t¿Ö8Ò"Aî ´;A¢ò„Õ³l\À8þ`Ãå_òF yg<1ÑÐÖN¬þÔ ½}Šø…”v† Ô¬µ(™­Ä ­€‘áU0н°ï©ëÔu\þ•ÔZ¦ðCeižØ¸zgHÅ ÁcÅ~*í©u$¤+‡nVª&Ä‚ýndæ<ÄǯJIA5×´–Ö/mHTŒP²CùzuêÚÜ ÌL„ÌÂq£ƒ4`"n­¸Oy 9¦ˆ½òòíL4|·y±wv¿ÎR¾Š£@JÌG0 ô¼èØ1ºí(—hý’‡ìUV‘Rw5͉>«úžÙÇâPEìܯÒ|¬adùÆeǹáY-4GÇsÞlÂuGŒ…r‘CËq`Â<½!5C:Ú —óš–ÕÊäèé(sälæÁ„Í~ƒšßÜ˱l¸7ò¬KXÔbó¨ïK6xˆe› þÞYò>N"úªsV”´Ñ|ÞŠj²ò^Ä6†¹_’‡Iš †ˆßÒÎ©ÏøÏÈéB‹à<(³ÀÆÃÉ*ãúÓùón¿(ÙtïÛ6|%Gí¦í ׿Ü'´‚Vœ 6QÄX©/§Še…Ý^r‡c]·tÞäàjà’¾ùˆ{HörÙ¤xõÜgS¸­ÄARÖ…½Úmºñº[Ü éZ yáu±×°{}þîÔçÒCE^7J6±Ð©‰¾íû{äÓ{Ã7„… Š=r™ªI­Lu£Z-Oæâ¼²¢×9Œ(>"ƒ/Å¢dƒxŠÂ²8Q§ûÔË"L7¶½>Ê#ýi»”̦…;TfªAaßAd0t!;™¼ØØ¹Éø^߇ҿ.±”7‘#ó!C&˜ã©ÁŸUWösÕhx\+‘K,?Ìœ] JÆ ‘æ£Ïê‘ðdÁ†ÀÜyFθÖõñ ޏÚ$e ÅG9æ¦nÖElì›42¡²4GõïH0Ýù)§µPy¨‘ïvyS=¦˜Vxà ˜žX#îCÙ 5?íW7Û) ë…¥g¶ÍŸõdžöþp˸—Ü­›­…ƒ¥eÖá?ƒõëC$^Œp@¿&ƒy ¤>%i•+±ºj/¶OŸøQ@ëŒ|ž‹ŽO¤x#ò]ˆ¸I¹¾  %¨Ã|,zrRN%•Ú1iÅdþíͺ‘&$ë’9ÚÓØ“‰„Ú:yO©€ÞÁh•,w 7ÕJ{Æ~ -3›L³m$uõ'hS Ñ”77¾Ãü:Û‘kzìz%}V*pn²÷Jx‘°¨„B쉋tœÞ×ãFâc‹E×0 q|õ½Ð øY¯Ç6\îs×:±»çseÔ@n»œN½^šëôu‰ª ÙïåȘX\ÑV•$`Xœ]/.\r§ÀÅÙÍ‚2Îg\"Â-ï¯Mo´—Þ­J!õCDó‹«A”ø¦9jw#âKà6]Û7Ø5ï+ÓxuÁéuD‡•Î:³Ç¥õŠQuyÍT—³–#„Úï¬&#¸V”º÷/¶´¦Ø>~Å¿K€Dó–ª=~X+æÏMU>?{Yt©½’¯ =2YߊrIí#=Ц¼}1×>Ih¾ŽkÓ–ðƒøœ}üáÃPëM‡ÑÏ<;;•r,®g8k‡²Ð DI†Bö…Œ']è—mE*ÜM8C)ü蟬wÕ1|…¶‚ôÈ_Dç™Ä¢eŸ[d|KRòü¿fÕZÈ•[Ûz–âO¼ûì›ZÈóì« þöǶHªEŒ%-;ÎÒŸ]R¿F~}Òý´[UÁcðÒg€W(@ÖŒcE;ðͲГƩ°[c_ Óûî=„6È €ût¢óü©#•á§ùl¸þe—ClúqíÂJïÏ6B‰~©E=Œ9,4‹ÆO^ï¹µõòQ0¢!ᙿѢæê){”º–e>E¦ô#‰#kÜöËGÝ „Qk@iÑå»É'èîCýøÑÁ{¢FR¥`“/Z-7©EÙJ wjï«{Ûs¦F‘u$O%þ×ÓF.ÃÛä3™‰Îª¤7ôt™ª}ß.¶›ÉOù˜ ý§2îÞU?†­6©#&CÈ)ò6Hù Ò›Lu™0?,‡uÐ4"½"õ@Í¿:óVXµNì‘lºæ¨åüÖÇ=ӷݼL)ÎUÌðxf@÷”©zF¥ÁýÕí/a‘z} æûLJ*Ý/›‘ð3M|ãhï ~*´ógѵp}¼~Ú6TèŸóz”2o»–'þÄEVOõVnÓqë#Cæȱ÷­¼¿–8½¯Ë˜¹–WM½+¼i%6¼6¬œTI=Å—îÙ}öEFg\ Œä Ô)‘TÙËÕ7Dp)ßIqø™ü!ãÅå!ÇׂuKgø‹1a‡—~n ' ÑîÛìai™K–Ùk-‚•z¼G¨±eaþ<A°•»ÎKhª“ã1v¨Ð—øÀD?±áz°±bwoôÜSìSèo[Ò¹(=Ë@fL›6vQ•<}/ Ó1eÃ/,Ç—o$’|#Ö=Ùã Ÿ©„51,ì-˜ûmmøè«—°šw3.e´öÉVY¾´ýõ³™©¬»úÈó@ û%‘ vg £PBªÜ› =\Íuÿ\ ;ïý·èì÷OÂ¥‡Þú¬´ª_çJñ‡Æá»&=ü?ï $W³§¶”C]—ÕCq,½ÖÐÜ *cg˜ ;’,«h‰4ÔMÆ„ëE!nÖ%n¿J{#˜ñ©5Ó»£^G>ÒÚT\tvœ¿Ñtøµ®yËLñ–Zàüψòf8Ð+?{ææÍ1ºY# §ÂÈõ•Þù'’EðêÆ ,xbܯ/‰l´?Ä:èÆTŸ¾%ŠøB;æÔÀçç‰þ?“- õé2ŽîòÆ€A©]´ßÕAfÁ@¥.S·¼ti:—½wzCÑÓõË+åFÆ©>ç²Á.Í.Õf™ Tëy*×ÂvÇÕgJ;µXIrY“:‚±¬,}å8ú‰–çNûN$ËÊe#­Yã­­á0úü·Ày6 Ï|ñ_AõÉ/3 £Èl O6 _½%bŸÝÆå¦íÚëyÓ¯ŠÇ1è;´ué“WñíG& ê†_Ò–æ ø¸ícük²£wÎÖËìœVèǾ3‰Bö˜Y˜"°|| ×”†Ô•ÎØ³í!µª\Ç+)†˜ƒ®é­U›ö–ìR/¯š~iwézV)“ûeƒ…yä çð@…e<+œp)XÖ¹?qP^§›ê›ào9Þß'*#Ý-ý$+ s|ÆÀ>â ž)l‰ñ†Žìå*ªPǽËÿj`CºA÷€D^¡S;x*"GäH3_ùÃýˆ††(&ªíkà©&ÇèëN6f‚ÑãªÇGø’ÎÛs%N­½$E~ÙöàP\u–Ä6+C¦Ÿ± øÞðÌÙ4‰rþˆ"ã,”ìî™,„}-‰ ;×6Ú ©\C©Næ ûT¤÷ÞKø«· ¬Þ’¡õ–'iLk@+¬†t–&`ìLh<«H°V 3‘Ê4 8IH1ÑA í±ß!"»hS)Nár¨Mi‹m†óáM˜¿!¶€žC´³B£îQe[î„F,I(‡çñe/O;öñ=·EÓQ@â­pšÈµÞ£‡Â¨WÄ›}‹…=ã_ª›;s’QIå²¹ŽÎ¶ß”©ØMÓqJ7Öè|÷2“Û[Ö4ù_ÞvŽ E5ë_ï0^öÂÓïʾ{0­ÜG02‹P$I_k5•Ÿ¯¶¢îu¯@hvðM±³ÆòQŒNâþ¤\ÃÏç Xg(14~âi%”|Âh²ãpÅ—‚¹c à;/„Z×î„“—%¤Àx_Ì;dêz6A5ªÛº«¼ë*«RD¯îY2Ú‹çí±™}/IˆëQ$²¸&ÓHÏÛõßD§*{+ âc.?ø<Ôù=Ú˜Râó¾­¦*pNÁëqwÙ‚¿ x¯Zïîé×ÊõSÌv†ª)÷¥‘%Ù>22€1žoøáu²‰jKøƒ"Ý“wq~$Éç _98ΊÃt*¾¢bl=øÂ6äœX°*%›ÄT.àö›´ÔÅn ÈÃbÅ'œ' Ì™úÒvyLÈÛ¹r‡çw[ÅžCœ½ÐÙ%õ—[ÎáÐO\©°ä³i}C>Ù°ëè]£¨¨:oßHP¸^#ôeRç£ÿ.2Š¶× £Íu²Z­–ý$Cp!-”nEŽ ·tÓ;”cõÅ„Œ£®'<Àåz]s´/à¶ùepºa—E7”‡…€ê ÏÔÄ÷¨œvÀ®øCÚi/kº7ß‚ÇÐÁžx6®]u¡ÛaòìÑz„-hö×®2q³UQcËr9V`e‰úDP*qøiïŒÂòVƒ>ÊÓrªø¤ý4ÑwRF¹Q¨ðªdÕºÛwþ_6M#e«ÄG3nIzGoòó‡²à©¨{ƒ­¦i•_Š Ísä±W;VyÙ¤81K 9äZ±©îM<€ ªý ÄCÏÌèðFNä©Ë»fÙVëm‹"~ÆÕÓˆ{¢r Üûµ¯´È)«~”‘=[ßZ:ЪOjÝTÆË.In ‘©ªÒ£Ä IBÊà°8• “TE¿ÕžËd:çvš÷?}…ßæ5 ¤&ÑFC“e%Ô´(„^i*ÓÖ* 3ˆMØQZh˜Át"©òêè›7çJ‡Ÿ<âÏ¢1Jn;¼@\˜U¤lŸ£ŽPt­¢-"f¢Eø2÷:¼¥@þ²0@ÞðÖ=Å ºåmÿ…&UWêåŒõ}¾½(ú MâDá²[õ3R„"5?Y“/D«)Žkÿ¤‚Öä<Ñ–`E]šZt EhI¾o04~Œ÷Íà¡Úý.ÚCòègEЈLxÿsWC½ õH±,uîk–*/OçawÝa}¤½‰«B×Ù!dž)âåî*ÅèѪÝ÷ý™Ä,›õ”^UׯÕ¹Šèô.\Tñ(ÑTÇ{8ÉCs½÷œXâ2ŸÎZP‚¨Α߹ýÚËô„Äþè Ù!¹t‰-Ô}õí5gIÿ6êcç¶NvmÊ[—HžoC?éwJíöÃØÌ«+%~ý’ç»(¢•©¯:%¯*g÷|Í_éÜâÑœ­]¹ôsäT@ˆob([ÓäbÆš¬<Æ}ÏÀöÅÐûÕ~I\ð Ëìd¿2`üóòÔ ëG5ˆ’Dθ¿%º$&Îóê ½,‹lné‡ÐÚë‘̈)î0ïSNB-pb·¥–ŠDôo¯ª<Ó,]ØÛ¿ÜúdI;QjÁ%/ÃÀßkžÜª$¿n±ß¾õ¿KÛP)RŠ+@—®~Ëj>zÒ”ÕßE5ÉÞg„›§L¥Ù3röK”{£þÛD‘¥† kZ®åÛÍ)xò*=×áÉÏ &1*14Ȉ |ïÓü²@¥( aö]Ûaµž’„-–ú?Ó‘~Ð’‹•p¸óåô³)qZîy§Íž° «†S;ï/ Wb»†…a6JÄB€3Ÿ¾;åOnû®¤/+ÖÐÔ8jï©Õ“Þó=úf >\ým‘{PþåÌ–—낊$(Ø?b I'Ä;—-¹¨Ø„BçÈÑÖ•dZø–Á¡%†7ñ˜”ƒ?f‡v¯[–W N 6 XÆÂ£¦Y«…®!ÃXjö[™Ñ’ ?Ö‰AB¯õkH”äÃbcÑåGþë#uÅ>1J<7¾C…8q5¦,¾•OX»j_„ûOð¾\HjÄ"m`¤ðÜðä^d«â6O†&¹¸AŽ)Ë_ðÍŒG–è(æ:¿œÓet‰ëÓ¥°9#§Km”ã¼@îÛ¾Võ1µ™„FûÕ=2ÑÜ^,ÿtqv54ŽÊå=P®f‰AÉœ:|Å kìf'•¿èÃLO¢/k 'L"‹ƒÄ†-†ur7JÄÙH!‰Ïºwvq»ÿ‚I‚np©¡ÏNçüÛ'¥¾i#®„Fzõ·M:Ÿªc )ÕA§áŒÝXvs»ß&&„ûàÉkBôÜŸ¼Ð…á¡ ~ðHð’$ÞYÇ‘˜#ªîmÒå9}|Œ©"qSÊ"‘è½ þ,Rc*eó ñV¼o.ür½+Ÿ\3Ò…âmÓt›!)’@áû®g!þä­ %Ì›%4l¼Š‘B|Ä…(lj£j¡3Ô0_CÓ–auhU¿HjÃÃoZPW^kåÛ?©;¦yhi‹ßÊãpÀß<~îÉiЗ¦æ®]GÀuñÍïEQSOó=¿J0ú˜CM÷B57$¤»Ø §ëŽóið…B ßݱ½‘³B£¤­Ìƒß ÓôCgd\§°äo¡Ôêùp‡¬:ö 8*VNT÷C’Þâäbá×!ÕƒÙ\óÏ—BS‚©BKå.6^an¤½.’çý¬Ž3{&Ây\nÉé;üáÆçL³&ùT8%ƒsô›²5'ccjõuŠ°á¸ª:åfeI «2!5(“ .3„mg‡åÉdxœ/©åΞlzãe Æ)r!~lÚ‰GY°úã4ÙüÜ7ßâó×)£Š¦ƒb6ôXSÚŒ³Ó ÎÿÔCÒÐ)eFSð“ý2²Jºú¸ª¿s¿¤¸ë•²NNÞ\šÞ- oàÓ‚Æn…Zt{ƒø•ݳgÙ²dõ ˜î|²"îÐ…^dºÌŽ2+§EÆt¹sSwPÂdÇ*âÌCÅÔ¸ß_ï¾êªD_)µÒ(ÜvˆÐïe‰) j&}ï!™sçúNó]ZD—µƒt‰W”O^_r u³_f‰â¢QÉyb BȈó¢TDî’> þ™Ì¬·’[2‚63²…½Oƒ„cí“^W•ÞHȽ©»ôñ û6þ¸“ª¿ù#0LL=™-–$A1ù SoÒœ‹j˜zÂïórëÔÌV<ñ7ÝmÌuª 5…¸p®áuFL¯Ðd%™øä{Å3õO/Uë9­ºé ¤(-tië¬gO!b˜’Ûtæ³I~ˆ©ÍÃF?Ÿ…°Ü(cÑ-ödˆ4Bî¨.¢õóBlû‹§­4VÎ=yD?ÍÖi{3D«Ë?ò¹UÛh J•-  HyÊh;Ÿ¶ÐŸCr>#93¡éùGvæoßS•®N";Ø_¹­ãjìÉKذJ&¯aùr T„¼ñêñaX̬’ºöÅqŸ¨œ˜é7æRr±*5FÑϽ§§/Lìh›{¯·£Á̆Ú1úÊšpv <¦/óìÌ@&$Ü}8@©SÉ=ÕЋќH;öwyzSï{Qö¾ûM7vŒU5e_F†³Ù˜'ïó–}ÎY•öfÌ÷ÓáêÅè2ƒX1ûòÐñá÷Áª­$laõ‰sÅä#ª6T÷^RèP/*|ÉV¦åsPz>\ì \Qƒ©w†›¢M¶&¾]  8ÖS £±êFÃò$WÄѲ¾rÇ«L6/ãÖjóm&½µøMªIdË(O~ê¢j÷ÏsÎŒýJÜ®¸%riÔ¤é´Õ¯¦6¬¼9OU {gg¶„0€?Îí×κÆ]ßSù±FØx,-=Ù‹'ÛH-,… ƒ¾ËLÖð]óF«Qô—ê²ÚZí1ê¦Ø%ÙЋLŸ¨o¡­´³‰£Š¹%¦ø*bTAEUp2œñŠi½£øÓÅ•¤è³hV¢@\/jµ¶BtdÉó<†t¾bÄŠÙ@Ú”|È;ÏÈ¥©X“¿<”`-lUŸæ°$û’»7~‘$ )y ŽkK¾Ò5äG~:JRAä(Ì ÿ€¶Šže|e¹a?Œ¬«oò( ¯°(ˆþÏmÙÓ &‘¡èºoÈ S ‘aµòÝwzC°fʸm^®Õ»n\£†¦å¢„ùGšVÇìbÑ,h(ïê9KØŒ}b¢´ÞaFµ6Xú)¨h}ÃWõÏ7ŸO®ÜŸŠ 3ý¡ÂÃG‚ØDvþX±wŸÏ;ÇÓEZC‡îôütÐN]£ t$àlêY‹H¯Ç&0œ,áÚéc8ÅŠ¯vWrß(„Þ"NE$v{7·ˆ¹YßþC²—„LÃ-p¾]¿Öèpµ6½Á¢ž+?¾È?ùÝòRÐëNè‘ane6Õ}ÅmEÑõ-+ÚÖ[¶@ö¤È­ÜЖâI¸”›ÝÉ !ÇBæ!ºBäáçqáI=ŸÀÀ)/áLìi”-ÃÂhP¢Î‰ÏuŸ¡­Ý+&[<ÍAüË6 ú{ß.‚_‰›óÇ‚†tá ÅïÔUði7»8{Ìiu~¼ºõÙWk{Èn….0UMÀ»!u[¼EÈž#¢¹‰ù̼D'xeÈì–9ˆÛ9;xªœ&à‡Èà!~y·¥1hb±ëuGræmG»­{pü.ñ! ~Rݵµ]z¿.RH)U qoÏ0ž/ËAG½!¸rn0åì5K«¦I¾ÙEûLöèe,‡ŽŽ™"ÔŽ!%°¾¦~˜#ôÂ,×k¥› =mîæ£T¿ ·p!¡-+‘ÞY”„ôÁšh1¥ÈÒ°—µƒ¾Qu égä(OÙ†Xæ㮳£ÿÃt2¾Ý·›ª(÷Àµ˨ŠðŽfǤ€ŽçlPm^åÚÖFê+æže"þª„¯ÂúƒÞã¤ØÖæÑˆ?ÿ-@Hõ ¤¤ñ}ätˆùbÏÚÑ$$ý¢a&n®œÆòÁRLkdÌšVÌÝ5"]‡¢ æâw¥&©BXAC^ÅÂÏ…5;çÁY¦ÁB µ@Ñ .êÇ J>™êqëQœç§íø6JfëÜVrâÕŽÒ—JMs‚±ÏÌC”û[ ùñSÁ·F:3í”ÌFtG¾Ãëmo»øî¤KH¤k5‰1ÕÍ ÊÐW¤ûÛà¥ýÛY"Â:V!rSÉñ‰ŒUSLZÙ22ÖÒ Žƒ˜•Ò߆:çlÞU8¼I*ÑÔÜð×çËìŸ2™PÌfÚªÉhXÓ.(6Hwº.ü\K—Ø…GDvs¾ûœYúÎU)Ç…†£c¨øÒ1µåI,FìîÊMM‘É%Äûã”.%ÃÁˆœÞÙIªéakTÑ¿ åÃꮲ} üŸït!;ÉGä’mªlYü”Û%?šÎ=là·Ò渔¼Ú”„¡47RIªñ,KôÄfÜÄ%í_D„™uF!¾~„²•´ÑÕ–²†»>ßÉõMÈáy" 6í-ùÙOË+5ë á 6Ùz™%YøTÔÊðîÆ¶a—+ZSc˜)©±@cˆcßA—7„öÔ~­Ýñýªr— èí¶éÚ:âÃ!K'`¼]ŒÊaŽõ›®YN¸0”novÞŸµv¯%Vápìpæ h¾„‰íÂXõ"m:îqpŒjì¬oJIŠ ´~ÕŸ§ K½ûįZ§6÷ýޱ¤ QTçîDxÁáÓqD‰`â„Q†ó¹ø3i¸õ‡êÜ;Ñ24®b±Sͱ&¶ÚWz#÷år’ãkûP®Ñ`BŽþ‡N9úA½i…òst…b +>ÞÂYÇ÷±˜mßï¯Är˜Ä–ÕrÀœu tÎ 7H9ˆfÚ.Àx4]¶cƒì(|oê?ê‹¥÷Mü"†ì Ð’ê£4=ŽŽc!.*™$ÎAjÂF›#ãÆ¨:¤m"uvrñlnÎjªáI! ¢Mä<õÅÛÙž ÍPÒ\¾{n®ÆpÍdz&ýÔ>,ÿÔ‹á€|y‘4•L rõ'P#©¡¶!RŸªHc垣ϵ°êc{W/å~;Õ­@†bMe+~̺ŒÎ¾¿=áEYT žsç)5Ê È\S:žIAÍóÀM1t»·ÈØ,wD,e4¸RÊ,5”3Å®°_1¯mîÛÙ(7\ì¶n%D;3³–²÷SŨè`x`¤â„µ—Ó^†-×# â€gºX>¸¯¨iç!*þïnIfñí£b^¸»L>ç P»ºé;ÉÍ®ßÏiô熵¹ëÐZ­qê¤Ó?.2»x\íÕ(®w©RÏ´é)IiRðÒ3û”ͳÞÿ¶¬w ÖûA.o±´¦D©9 öŒËhpÔÀŽ5 ÚÓé†õöèÓ÷×Ñ=N¥C4„‰Êܶš—²ÑŠì oð3(4'€n)ÐÉõ[=w—%ëì©¡rîiHei<(m6íY’Ü xúá·1‘Ñ©;l%4U옽ƒ‚¬Ã-ûþƒƒ•|Õò.Qv<"¤½ÎQòkf0áF…ŒôÀ qfÇid†š}Ë:}”—Ð%æ¼ ¥‡Ôû¥Ž‘@¯Ö­Oœ§ÇÊ•6æY¾+kÇ]Ó·å0YÝ1/ˆ9«a©ÏÚ¨~R|Àá´¹Œ‡êù1ák`-½WªøL½G‹(×”qÁ‹·0'7b¬Omßm62>I[M^|<ñTSÆ])žIÖ,oÅ?eÜÌç¸IF'> Ê_–cNR?Â-€!õÆ–—@xS­¿ÓÉ&/f½mTXï÷VmÃcõ ]òîÇE‰»ëÜ5þÓÖÃàN@«*”Ú©5ðÂ{Ç4ûÑĵ·R!…_î.·þF¼),é®5æ”eÙ¼q‡TJÜ? Ó%EφU ëö?úáÏSZxÎB 윋ã%jwãPoŒAÃÉÙl]VgÈÊåð6Üä˽º[.¾a°ÌœÎጕ,5Ï\0íãI³0—3r=oï‰[Ázÿ¼ 0¯P“¥»~c‹ñCÍôæùùÇÛÕ66*+Þðšè4KÁ𦪦ŒRiÜ®ýyb·Û1Øw$¼¬g‰@Þ]-ïåÂ/Ë¤ì Œ”Ùˆe%ÒÎÙçRS…É……ÜMe²L)¶ÌfŠxÌú,d‚CßG¾B;?î¶~ \¢ ¾'Ÿ²¾&{ÓÞ±úe;øÀ‘Q<6´C7ÖþØó̹Œ¼?5‘|'É}ÅJòf³í}^áLø¸ôP° Ûõ¢©šùΨçjUþa¼Ë¹TU·H¬æO8nqÖäuˈ{h’:’Ч0”Þ@Yþ"}àõü…ÆØ"±Ìí)::ï¨$Eã•X¨îOi­Ï(ÊŠ•5ûêó‚ýíLÒÌhwÌât¬ü¤û€nC ¸ÙþöWqßvø‡ŒÄ—ü 9¿PÚ`ÅŽÆO)Ñ -f.¢&3¿¼^&Ý 0g‹0¢\€PG„+UnÍÒÇTÿé¢óPrBrT9[Qf€`‡n$2é$=>®XÊ-CºóŠEpÂèÊŽN+Qîh.]¾¸µ¶ñhú@gb|euL¸)×|õÙR‘Oô’B”è4÷j€#ÁU“HúGâw¸Ü®’Y]{œÑ‚ÖËMd·’¦Þ°:½°c9‘\Ù_¨HߎòLj¢/BDxhF-ÀÀ"í8-s…ûÅë’M¾,†Â \þ<Ëgvÿ:í=À¼rQ‘¼‘°)sÚùæû ߇TˆÝççÓòiÙ Á~-}ý¨bù„ ÅÛ1CÁF}hTB‘t€?ÿÊ0ñÀÅ Šuwb§ÎÏ›)E:V›.)RÞ‰W èþV‰e¨ïaÝ=3þä–Χö™ïBˆµ”JÐYU3û q;ǘ~¼xÊhÌ„~ÝuŽaRR»åö.‰‰“-£Y—åJC¨åZÞŸ!J×qÞ{å{†‡póŽÉñò|OC+šÜýBCì>/©üPÎg$£Ük¡²syÚ‹ÃÝ¡X6ÆÕðÈz‡EÝüÁó®ÆZ+7ç×gȃš-+I5˜ùuYsöÃOAT2“ž¿<›d XNJ’ß¿GùØ‹ZZ ¢¹e%`ÖóšÇžþ~̹Í\G¼ÀÇpY…‚¾A­CŒÉɈRÊÀ…§W£ÓŸb@ÔzeOvÂâÁ\ÑT§ÿ¦?ÿÌhsð®H€VC•ÀCp`b˜³0x÷âÕ´ƒø%=ìw¹¢¨„\[B¸oô÷9ñ˜m¬<ìmëZUÓG¥(G)ýåi¥Å|ß#‡Ìˆ†œB‡ž\—ûb+Ë!®ÄP ´L’/;-…w†ÓqÂJ£{°ZÏ–Z †¾ï=ãvÕPUšy4£Ò0³Ò°¤ §ñUŸºÓý “yêã Z#Ùvv¬Ù^ßÑûóã½K¨éöZ¹@N´ @r´ 4J²¨¼ï;ÛD£ÃñÂQD‡a‹ø˜#dlÏ@yuñ¿¡Ò»²ä‚@„*ºK/;!ûIÛ}y€½õ1!ÄêÛ4TÝè¨&ý©¡Çžr Ãr“‚{Ý*^ÌNo¥H6B ɦv<®©l$Kuàè0ã‚zøˆûI­¦ 4Ê ²oÄéà[Ó–J·]g'~C«ß@¤¢±ð¨‰÷—PýÊÞÃ’~o@òѪö뇢_ðclÁø a;j8<öh-î¥y˜¤íªiJïQm{i‡Í¾Èâ^ã*±+nugsáE<Ë8!‚¯>ˆ;ôY?<{›(v¼_×È[0ó+ Ö"†Ë€Øè ¥D&s Š˜(”Ðy1H¡kÙAR˜/ ¥v!lî½èë/§K¶0Ɔ¼4ûáëf²ÊD?p”U¨+F¹K÷~˜ps¼M“t|&oœ†(D*coXÚVZ#[u¶`š¼C­Õ½Ó°é$œ¹…¯¾(WϨNŒ†îâö¨w!˪óþ)]ÌþJè2€pRfxȆôÔÿµÅÌ&ÏF¬h„*E…è#OÐ]ç12Ëà×ûlIé‘ú£~ Á¬$çï|ÓÞs¿|NP•cN¦ý¢P`|Òo4Kb W¼ßœÏV#C@îCYgɤR•ØþZ giÖ¥‹Vð¡'›D¯«HÙLåÍÄ\¼a³±:ýãJc½:ÂîwOôSÝfÒÍe¼œ¯ Ęlg¥šl[çøN>¤;FúÜêëųv¡[ÂävßNrˆ'sØ ·÷©„é‘b06Xãù4ëN;.LB\DgØàÆ—&JL:Q+’Ù˜§–‘<õ)‚V…—¥ KJÎoï¸sEÚÞ¥%SÓ¢ž"òOgÀÕMÜŽc„5š¸ŸD_`$°gw¨ÉÍjAaŽÅx•¿–>B£C¨”4Ãö©§îžˆ Vˆc ‘¬¥ã2 ïËoõäÀÔäl)-óê¬x™l÷ÞÓ’¢AËÛ«… co›Ñ Ý!‡tóÒèwôœÔƦEÕ1c4««iÓ&/ówššß¿L ‹†ö\·a-ç9a^>~ÿfB\ñÌ]D¸àíìôš>o×þ¥à²Í±f_§;–» ”Žî(¿³¿F]ú¤\Äšˆ)ˆòµ!p°JQ¶`³KÉ vVLñÝ•|FW*—ì¸v#l™Ö·š^R;xTÏ|c¸}-w¤M'™s%q5Ô–_~§ð\§VœwXL/Ì/òZYɯ1“6 /ÛL­W"J N ›õ¤¹,a-dCC¿îÑe»Î;šÌ±„œ²©¶ÕÒwŒØØ` >XNBÍÝçWT,ËUë5I(¼¥è·Ã-XL¼Jë7˜àr]èk|ø½˜ü¬ßv£ˆÂqËѳ9 xÛv²„@q ñVƒ#!éÃc¿áÜj6©w‡ì¾SC=4N-ûºóIÛ ýùäpM'÷-…´¡§P-Șìÿ ; ÄöI\‡3ÕIÚ€ÍFh·ð1rœ'çj%²¼ÌŠ0g´3q0ÉÂkZ`“{ø6à[é<¥û”usÉ™:àâkú0©I¶cýÎârÙ¼ƒc[Ó`%AÁ6fUG”ž»Ü`J"–²aû-_•´=fæbI’©²j8 ‰ý°¢N±áÏŸy7¯ aâ¤.‚ž‹ô™Ÿ<¬LcM"o‰Úï«Îì¥ô©Úi?å½(Á¼¬ Z9(oyÅÅ++^í€é^Å«¡,ZÙeQÂHNÌ'iôáš žÑ§Óϸúà 2™ ‡r³˜´„C§K[Œœ•Ïò ¦Ðmö"GÕ¿»&`/™”£¤¢dN•oø7¦§ Éž÷žûdÙ™,I‹±ÃÉÂH¥/ŠG@ýÕåRêœMéGšM2GÍ;‰¬céÖ/ÙëS¨H60V)ÍcÇNNu£HKØFŸ-†Â{-g,O¦]¤·vù¯ ÚC Þ´{—lA  *ô¨Ð¼œ}MßH+”n}v-·tnŠÔs)pðt*P`érL—€/#T$-eøóß}…îèL”újÜ0›gÌž£.‘öXít~Õ‰jŸCÎBdÞ?ž­¢LÙGòO3=ΔºÍ&,û»)»n•¶Ñ[3¯Y>×WK‡ wÓ€1¢#»ù:Ï'›[wV̫аC8Ÿ¥-_‹p³ŸºêÔLíS~eô¶\ÒSÔ Ë9;:Ò+YÍ@ÅNÞâÿ!ôÞñâr’À¨ë?,ñ‡ÇŒYø{S¿Å tŠ$"lÉÁÊ•6ÁMÎ/{¥m®bõiÛa‹Ùn„>×ø'J T‹'\ÑÓÚt L‘Ë›ŒÛã3öö±¯ÊùÖ#˜Ì©Ð×(ÇíuVDˆãÍÚœJÎ#÷N dD}LLü3PdP§tëy9Ï€›¥R¬ÂÓ¥|^,@˜¹|„MôÔZb³NceM;£èÀøXï÷¤Pæ–LŠ$Òæ¸<º ¬Aüä ü=!o5”õj•R¥”_ÆÆ5Šz{1OÑ aÖì,ë¶„6åT™ i—Ò¦»'¸ &ì_”ÓF²²,c]ºú.↉˜[ qUÊ/¹&>G)Æváɇ#„>u€Š–ÿå°ƒ|àœ.„?ÍøÏ#ùëS4}¼‰ЈAÞsaëëÔ|È«Ò3j“ãŒÏð–Š8߃´¬ ñ#@ ²`ëy?(Á3QXÎ2ÉÍd}4''dâJŒtÏd—‰!¿k%s¹ø©@p™Î‰^¬÷ZÆ;gŽ[Ô†á Fgs#é ^Ш¶OZÀ®D'*¬×¬]ÇÀ/´_ZÚ@°£âs>å¬m©:V:ÿWVÖâ}ß×¥vSÐCªÐê’ýæKwõ¹i(?9pt8˜Ü’¬sVi§ÍÇû6é¿ 2¦o;êW±`´¤˜ÙD´ï$8¦lPý”ÞŠš(¤Þ2.¼AÍ Šêy­ßÂvCD§1"e\…9ÚÎC˜nR¶= I°z0D›{²‰ZBÛÌ8®f µØƒ45Œ4M«»OSÀn8®ttÙˆ¢}øN¶Ixû ?A:Ô˜°íý×A«äïjØ%ý |Ç"7¤úccŽöoFUÞIdÒ‚v ÷È5^úqcÆÍ<®Àf:NÒ¬$êɃ,€©Øìá£Oêzú[ÄT5S©¢Èiä¹õ¥#ós\wƒ‘nt„cå.2ç§œ’b½rpMû† ¬•gÒPÀ KÞ‘a\½Út¨<ýç+õŠ:Å¡XtL?Á®ñªKmèE×ø6:È"`3}Û`øˆÂ7ABÇ3ˆ×ŠÿÆcY)ÖXôö]Å‚6]_þ. «±É .À¼'©¿‹$z½û0ɆJXöå¤þ8“Û›¨>¯gš/á; I·Ïƶò&Òÿ—oÙfƼбç¾2²ÂšÑÙ•Ä[Ò¡Y¬9—pqZ%|±€™\æDíEµÒK ’G%dFK¡óô¶`ÄXàX-‰ €W4³þÙä”Ý5ˆO°9zƒ*ßExgóáåÍjÜÁLÈÕRä‰ê{2CPÕ’keÒ÷â€ök°¾¼«ü4$ÅFèþÆb¥Ÿð‚ìÕP¿`+vdçÆ›΀=,ØF—5«kÊè0]™NnÃþ±D¨gf\MŽ%p#(øð’…)šÙTh—Øx¡ÔQ&qÿ'~…«yj4ÂpãPœ²ÇVè=žÃH2ÑbûÆIíÆÚqΫø–xîõèºôUëësÃ:¸ÊîÆÅ練“P%Æó"£j,8¹«sæètQ\:!í<$(즲†ËeJ;zâž:ô% Ýj”®BK>þ©ˆª/‡†˸ZýFíFÌ­.½äHºg“qüÌeål™h•sZðU6éh>,O"þZ* dûÉ›v}a›Ñ© æ“1Ï€ý…vó0·j“ÙãaHß6Zº‚º)@ƒS…§UèçØ©ÌñzᤖªÎHÐú<°Êkwê4ÖùKD"†ÈÊu÷‚ˆ‚Q1ÕßGËŒžQÔ öŠE ž|Ctf6À:|•ý[=×ËãPØ@è端nY‰ýfa4j³!õcÆ0 læÛ‘BÓhÕ!¥k³$Ô²îLõ‘Ï“;y—„¿ê~`MÁ]ʺÐ{ãÓC¬CÐÈÀðÿGuýVlµi€ X…鿆Á¤>Ì8ÈsR}ˆ|¾ùfHg˜›T²1Å‹µ:óAÜmJ„uý_:þ`t›Jâ~³Ê_Íã¦êô7-·Oýå{ë½fžV%FCÓ¬ËBo ©„¤PZ…Á01^otré‘P%zwh.7Éuõ×eÀ?Vð >"ŽžßJ9cM*¿Æs}:D¾ñ&Ëãåbd™ø0/ºÅôAGNXO“ñZ—Ä®àÞµä ‡NnÍ endstream endobj 844 0 obj << /Length1 1663 /Length2 9606 /Length3 0 /Length 10693 /Filter /FlateDecode >> stream xÚ·T›é.L±â^Š‚îîîÖ‡Á Å¡¸Kqww×R¤hBq·âP ¸Ã¥3sfæœÿ_ëÞ•µ’ïÙönyö»¾ÐRªi²ˆ›CLA2{ ;+›@RYYž ÀÆÆÉÊÆÆFK«†Ù‚þ#G£Õ9:!öÿ²t™ÀždR&°'Ceˆ=@á½-€ÀÎ#ÀÎ+ÀÆà`cãÿ!ÄQ eâ 6(³ ö '4ZIÔÍli{:ç?z3;??/óîq;#ØÌÄ l³Ù=hfb Є˜A0·ÿ A/dƒA€@V;'Vˆ£¥3À ³h€œ@ŽÎ sÀï’*&v ¿JcE£hYþThB,`.&Ž À“Àl²wzryoor<ДW¨BAö+ýiÀ ø«9vVö¿Ãýåý;Øþg33ˆÔÄÞ lo °Û‚ª2J¬0W3ÀÄÞü·¡‰­äÉßÄÙlkbúdðGê&qu€ÉS…Õçdæ†ÂœXÀ¶¿kþóÔfi{sIˆÈæ„ö;?)°#Èì©ïnÀ¿†kcq±÷ø²Û›[ü.Ãü=¨mvx’—úËæI„öÌp³ññròq@«™ð÷ZnPÐJößâ§¼< (Àâ© Øôôƒæádâ À߃¼<þ­øo„ÆÎ0›Á¦ K°=Ú?ÑŸÄ ‹?ñÓüÁ®€wlOôc°ýþüýdðÄ0sˆ½­Û?挨¥"£ôF鯒ÿVJH@\,œn6;€÷éÁë¿ã¨™€ÿÊã_¾òöÀï`¿ó}jÔrvþ‹ôm࿃©@ž¨ ÐÿÃt}6n6³§/öÿg¾ÿáòÿGóßQþ¯LÿߌdÞÛÚþ¡§ÿÓàÿ£7±ÛºýeñDÝ÷°§5P†<-ƒýÿšê‚þÜ]e9ø½Ýÿjåa&Oë noùDiv.V6®?å`'°+È\ 3³ú“6ʵ/œ-ؤqÿ¾bž¼ØØþG÷´ef6O׈Ó7ÿT™8=­ìAþÆ §¥úï<¤íÍ æ¿·ƒ›`âèhâ†ö4ü'Ä ð`ZSsëìYí!°'ÀSÍ^ ˆ#ÚïAóp€â¿E"PâÄJÿxÙ@™'(ÿzòSúñ=YªýƒØ@õ¿ÿSL³¿ÑïÍÿ9@‹A^Ðæ_´ýr?!è¯ ÿøs<ÿãðtoþ¹@ÇŒŸrv´‚üSíSžN¶&NVHþ«ÉfðÇv‚æ\¹yZØsÜÌë7ÎÔfŠÑŒ‹Ó‚Lî£/žëETá¹cÚ^æ«O¬¸ôŠ˜8ô™òl²GÊß´Œ(âЊ‚¾O]ƇìY´4 ý²V¼‹š ±i¶½X¦5:³£1ÀIá_géñÏÞ|ic¢4ôdñ:YkTÝã»/> }vhÔT¦Ì¼‡©Öçá6 ä Ù¡Jãût!hƒzü냅«7—‡ +"¢¾øóõZÙ³C —Ô‰5´`ò4PËð5´uçY¡ÛíA3–W@v0lk^/׿•Š×çİjqãÕ‰·5ÏP権1¡—àöO(Ý©žÃ:AÕ°mÍ¿‡¶#Z;£5pÕCd2˜]^U"iYÙd¡-÷Ê.¼4ßö°"ä à {nè"UøK ¤~fŽÕƒ°g63f¸*ÖÑ ŠÅs ’ÕúJô¶ˆ¿ÝÞ’÷Ÿc ŒQU(šín¡¡‰Ü}½Ó‚Œ ç3’á7ºqË÷™£†â#Ó¤h™úÔúdp«s¼å Êh"z#;æÁ~õh¦#O\ÀCoä¨Lu 4÷ññ_*UÙâ00›¬]p> ½úæ˜òÉÙm¡ÊʱKNq®ÆSÿlöM¨ ~‰ò~'3cCO˜3·kiáËê,*“¶z\,ЛÝT¯<%^Šþl‡F:Õ„#Ÿ"ž/ ‹x:½‡BÙNl$bCúlE\b—õö„~Ƚ‰¬îCtuÆûŒïå³!ÃB“F•fJ@Ißàn#¥®a ¬ëÇÚµÎoîɰAßP!¾àª˜@æºN9[©[|´gL3¶V/­©E¥/Üò­VÇÔ¦„šî|¼ê–„ãíÒɼ£G˽ ¼þx](:BévÜÖjtVøwÜBEwù;üzqVñûk¶¥Ë˜H`l%]÷9Æ×ñâ놩YTß–¥7:oKMrée¾f{?lM("=iSëSK©×Û©ô±½ñ*§?F;©ú"m l{£%G6`?þà–ÖÒîë{¼s G\LƒrRŒxPª R6¶HÝ[|—T*éHâe§´ÙÅ‚Xüð‚ýcòÏöFeÜãi Û}´gŠð¶3<®«Ù¯PÝÐj]¼jüää€uŒ´7 ¦ 6qUwojÜ ®ß­+“\ój5?'#è»50Ø¿mÍÔÙñSh$&¿Ff¢ µ1 Ì~Gè¾8l‘\プ4c!ϸô΂X^s‚¶í¸¤'Ρ´²Q•©CŸå-e1yæ¾B7š™£úÅdžWêÜy´ˆL•¼€"#Ü6x?‰.…Õ]rUx ¹ïB¨If˜sµ•ÔDcú_ªHVni*_L¦0çE°pûF/C6169g¬©u»3¤öøvÂiN& ™«'*ÈÓ4¶&v¿ Ÿ%"´ÓpØÁ¿ÌSxGëm1ƒÀÏœXÆS÷ã¥ûMÞ„· ýÓ~ ™&3’({´¨? úé´ød-½ßºÒ³–Qاl „#íx‡?wP;‰ËìÄÆ o?jð\n/ÐUµd™OœîŠÀ®–Û…na™È!“S¡è»çßÁŽOH[ë yd°‡ž²ûkÕ$è(Ýs»é*zºûŒŸ®'ýòœo„=Ï·–0ß Ô®tŸãœïÔšVðnÛzWÛÞð0Åi|ïœýµwôׯPÖÑ-M»`ÝÆÃÛIIÞ­®¨åpϘ:Ž (€ FÒä±7Øö,2MÝ ƒËj…“ß'{eÄñ6åtÒ„#¥ Ã,Ð6ãþùMrM,ÜÒËÓïª$õ­C<9¬ñÃ}¯Já«ï(¥ðƒt‹>×-)úD¿aûìÚùéôðbdéèXI„f÷\[¤ÿVÇe”jòSéw%,å÷M?ϱvü‹}Ý?'nF;V"aï­ŽÓH”¢+ÁÃ>n 4Kž¦—gè|dI3ÇGØßó°8û¢Åž%x¦¶ÆÑ×re­Ñïþ’¨½gÁµiûÔ’Ù—hS°vvûI‘¼Ò.|IlÙ(_üõÖLçÛÖ‰N<f ªÝ¤Ô;„ŠÈÎH¨÷ЯÊ_¡èÈz‹qâ÷|vâîsçÛéˆæí*‚T)ÞDÈc±ÅíЕ¶‹¤ÍÄ’²…X>q*ß³ª£zV<ŠÏyp:ÅW.'û7Ú­€èð/áÞÖEû<>hÒ2ÞðêÏž6Jl­ÅÍÇ îmªEÐ@¬+|:ûv]ºaLàâepe¾BédfÓÝ$à³vAïÐ/§7­Ö^¹hú_`r’{ϯÉS€hRk›€Oƒ¨`PÏ:F B¹PNiûÞè½çV$³ê`Û+¶¨¼ú"Âù’(ÉL‡ßÈšÉæÞ6?@itÇ8&EØõ4Ò¥±2r‘vp +/—ó9‘Êa+›à4[6ZWÊ{ÉþÝm£–O^6ÞJcbÛå_0‡d…{ ˬf÷lªÒZÀ¨|¦1WbN†/¯\eYc‚P°÷‰T/ƒR߆ZW­Ëh-¶}Çd¦19ò'ÑX¨¾q²ˆ¯ÏËŸÕ·ó1³a‡Ô0m}@ ÞZAôé’Þ 6= g–¬t8í¦ º×Ãß—ÏKë›LFtü¬¿ÐøÅïëã[ ÄØ9v­ÕÑü%TôçèdeUºÅ”äÈ äš’é]¤ hÐä© r®ÿÈ€x6ýœòñ .6*ÁÅâGCߊ±)Õ„Û¥ÑïnÂdgņîÜÒ¾Äî4~CfËlC6šaÐèÏâ¿à­ŠÐ?‡#)|‹{° ok–•¶š¤Û}áÈÃ_­$5NÈXã§L†è‹)Å™h%hÀÐb»wT½&aìºÔ b‘#Ù Œƒ|Ò2ý±ÔÁ½QÕÔq÷™#¾]¤ì§¢«gwÁêW#XÑ«Š´Ýß=ÇtghCØò†…·¤cĪZãY8 Wë ²è_ɉ”ƒvæÕ†—ê&«.gûgr¼ìtÓwYŽ”×ÄGÜŒL½>fFÌÝw;5‹Å9µá“2×eB:°Uc¥¿”%Ù†/[éË›>»0!çËOm¢¡_>0ÔæÄ¯rH­Ÿ·~À…‹MκY5Ñ´ÅÍZì$ÐnÐO*(ÇQø¹VÔ¶£¾ÖŒoãN­àòŒ„’·°Çcš’ûcL…‚âïmn›+È»cñ´‘lü€èo}ë? ødiqC¡#m_÷ûš”&nìï¿Ð˜iúì“rS–Æf¶²%„ý˜ ¤LlôÞB æÄøsRÿxê„ø*Ëp¯ZØRòWnL½ï’èõÎþŒûsÁH#ƒ¸6Gï§?¾rqU¡@Øz÷éd ¯¬eTKòõWRìk a~šóçÇýûD4iŒM<1ç7VŽØç”þ¨ rÁ!,ŸqÝ^ÖbsïKÙ6éäµT¸üe1öÆ‚HWpu˜N©FÌpsUY|Î4tÛ2_噋›ÁÊ´~ú¢‡ƒÝáƒh&ëlbãÍ… Çù¹V —NPgÖ—è"•Ü£IœUäv›ýÕóU×.y+iá~ÿ¢ƒXG€Vl§f롼ßíAÇq%5fA0bÊÃ^ï;Ôê$´©X³÷÷n-Ú¾6«ŸÞHCI˾ùvx¶é©Mfë|î¥ßu_Û³ópþÕ­cÌ>N5ÓJ©&‰E7„ÙL.³¤eìq½¢-*jD’)¾>J!ƸZ:¨%y† ®šE_äôÕ¢†–~ñ:"µ GÅA‡”Ì CW<ò®5]?ã¤~/}ª¾Ÿ„B¿/%$Xg]Ý3Øt³2'¿yÍáDð*·qåV¼Þ2H6f˜YÇä]ëŒ#kÐÒ:ï”d”¡¤DöZøN5ð’ãÇ1ãÄ‚t[‡ zƒ¥Ži†âN<[Ý«Ÿ¢EãPöÄËctÃÈä,‚¸ÆjÞšŠK¢Ò×[ФiituL§¡yŽú4¨4ïf"€®ÓPÎv¸ýo´sÊü‘á³%—âèqÚ|}ý½ŒP' ²kLé‚ [›"S1{u¦ÓaA˜ûÌØP·Ñ *€¹F/òO;Š»³Š:ZþÔe|$k™ Piv—ÁŒÌ1Bi3<ô¸¬îònaùóÝÐ"…~ã__ãõ4\–cw?"ô¸¢r±Î[S£´JÉïeͱ À›5xwµ*`¬5ù8 ö X¹).Õ?È ½yÌúxçÝíyRÖ´‚:‰‹¦tì¸/¤¨:ï1ÝkëÏ«¿Ý°-§µu?cK5ñvÚŽ“R“TáRÔo\:Ù•¦>Ö°¿L Ú[³¡^Ê:‹Ó̾ñT@gx<“ÓG$E&ðbŽwÖ•bðJ<2ÈO»Ï?Løô+¶üÇò®ì÷~Ü®8$¸¦T-šyå‹5·p¸T>B. ò+Ïê¦ê,ac’>$x¤&þŸÍ 98wYÈô:!=«åÚzQ¹ 0f¢ì‡î|8¼šŽPº ZšP›óobë( …Éá&Ê>!__PÖ‚Ew®äð¨¢[K̯ó‰ŠloJ!}Š„‹!{uæ&?×ñÜN·Ðˆ:Ö4Üä1ÑÓ…WÞx»¢lbâiÒçô™…U!C JÅ9 .F·å&öù€ðÇ„9¾3¼ˆ†‘ »¢'œž3 2ò6É]© ±;;©ú´øk=«[°™âN2×sºI”‹ªñ7·Ñ…òn:¸iŒ õ“¯¹¢ Ÿ±¤;‡ ÞÉŽxU¿i9t7K™<«eaÃÛéL¯Ð—+¥&®ëZ†—<{pÖ`wбËhyI·qæ¬iÒ’Ñ)7»E潑ÌG5½^o.ŒdBwy¡˜‡vù@V“Žš'ͳñÊV×1X™ëáJyЈÄ@+$Åûu²sÕ«[Qu74ëÕÀï™ùkñºÐ“=YªÍ”pÎêµq³ݽpqáÓI•nH‚x' *d™ÞveIDÔ¬„uì 7£0Ò ûjñ–ñyþH<¾Ú×a›ð…âE#Emïçf+…ۦ®l²\zëÈGÓMFBaOX)³Ùx^/›mÓQuý7'!V¸ò~öñøË FŠhbÿ“$–âî…ºkÜînÿ‚Ų:óréq·ƒtÝ~³È}EùW”ZXEÙê—X¦Öç5%1àüx@Z©ù„EB¦èP(¬¶iy¼¦¥«jD6þ‹‹UÕ•Æ5Öu÷8êJ¯™8»|È’OQ–Àè­ŽÒwræ^¨ëÿkx,Ð¬ÛÆt‚˜¤X×Öq7­…è²]âä¬UÞnåÇã8¿w¢G' û&¬§-%°nYšß d. ¯ø< Sì–sJÿPSE€/'ðµ%âná Š¶è2ÃÆ¤†)íØí<$¢É'yG$Œs½§ß›!U5­¬¤_Ï…ûjhÍÓ&¥˜DL$ZV(k—Eo^#ï?ïÊ$cS>‡P[AÇ´vi{N6Ÿ±hdÓ‹0ŽÜ Žÿàà±jÛ9jõ”gå~ße¬®–w9íÇ`|\’¤®Þ߸K÷ü’+Ž›(¡Î°È9À@y¥ ò …[–ÑXô›†Œr1æj·ÏÃÔ°åzÔ´Ób~Þá®»Û¼<¿%æ@±gïš[³j½Dg#M·ØkâAž]JÝýU´‘7Ò/ûä[Žx®˜o嵺h‚#FÜÒæ‚ãžÉ%BÁ-[:fV™D¶t +92ÝK-_pTówi¨ÂP(¥ŠáÂqáiàŸ˜­§)»ÆÝôS)%݈’}1Çc¼žf;â0àu¥ÿÙÊE¯Tãkc$cEtæ~•é4d*tUg ¤ÄvÄxÕ¨x0ÃÔ$&be™‡”NDï·ókÕ&ùæ %®Š¶þ›¾6ºEÒè¼Ó­S©®¶:\¼ðGZ™œ Í$w’»ypBÂRõ–^ÇbŸEËd'; ©·&êGϾ‰É!2PDêµÜOÑ8¿V“k@ZÒ5ÎfÄ«,À_´¼Yi…/ ’E㜩»óÞ*SU[Ž5tíÞwðš©íf­-Eu“Jˆ:‘°¶VÀ7¨ø¬ßÖÅû³â´‘á†m‚ç.Lˆä¿D;^`4ÝNsIþ¤ŸH ¶Ȭø¯5g¼+=gOKwÜý> þ6Öbò¶G•‹Ivl|›Ó-¶Zº‰7Þç„5\t…‰”:<0É€9'UeÑj™åWCrö orêTÚèz\øjxñwjêFŠƒ!‡ 1fªÃeÁ4ªÙÉP–Æ8Vü›²×€ËNé èÜe¤SW]±:“‹à]çϘoœ*# 1t[/³Îz—JPû ª¢ãg@ Ü!/2 ÝÑò¯H¸J·Ø QIÚŒ‡)´J;hÕGvì©È&SšWêø5`5—E÷·¥‰9^;´³%‘Ë¥—QaZ9N ¸d¦¡êü¯Kyå'?oL%¢Wz†ÜÓ d¬¼çÒ’f:Ky¢‰[Z™©‘VÏÂUîS>0ì¦éˆwø6°nH|aXxsh©¯ÓHªa =&–?/Ž‘ yËRWøñèFëH – ¯½‰êïR®ó²ƒS‘ü–ȹòÃé墘Í5Kç­« •F Á€¨ïuùÁBâ’°=`À'˜ÀkRàŽÔÆ'ñ®X¬„Ò·`P~ø pÓ‘Àï—dwhL),®mÇ´¶ï«tM-7Š?£·'-1¤Fѱ¨ *`˜Gå’ÐHK’2¼<­=‘H]2ïxkW·Ã/Êwþˆ*3WY!¼vÀM Œ5ÁT«âyoM¶Éz‹`fJ`%õ1âK),¸‘M'~3Mø~j°©kÜ{|¯Á IÇ‹Äêî×î—[Ñ XŠ{F3w)˜ˆ3éw…~ì^?‰ ¹žŸrßå`'l­3¥œS_êSÌ_Å€X¥“^éˆþ¢¯8óO)OßÿœÍÍ–[ë8V|¤¹êêBø1 Í£Ög®ž›å…×öåyA:ÙÛbb}xïˆN!}¡2”À¼ç—¢¶ßÜ9ƒÕ zíQŽ‹EæôªÐk#‚l?Ÿ°|ƒ?W¢Æ¼H)ò?ÄÞ+C\|Ÿòæ!ôÀ\qw¾¡yàN%'d÷«*cűÑ#ýKÝغfhaxÓ›ž.evéóuæ ÜÞ›>)¨X®wZ*’ò%|V‚çˆHw…ñk€¸ó×žÇøFÌ’æˆ}ÎO/øžŽ-À¦M77ÿ[䞘ð™£3܆ŸÛra:­iGwœèØïÚ úÓWdÛ|Ñ\PŒ“ —¤­HÊ 36ž%€l4ÖKÏè k¾ýŽ!~æ£ ÉΕ(Q›¼à®çŽÉ|*± ‹Äóò½G·L~V9¿L UËFU½¨¥¾¤^ºÌpµ/¼?ŽˆâŒÑ,&ˆ>á~×*ê; ™-Zø~&/¾„8\QA¹I¢ž!™ÌȦl'¸‘þìÎë €Þïè †²o5”‘è´f³nÙ¹•ü Õ­Õ0 ÏŸÙ:gö{¤£ý‹,ª÷Š-®Æ:{K5]’”ͺ’‰ÙC’ Y¦®æˆàÆG4 ö„=ŽUoÏ-Ãç予Wš/j?õ‚‚jÈ Z9˜‚ ¢q–¶4lEeóÓ2iU¨’ ‘.ôGKuxO7;íRÒ 4r?ó“4}®3,YFÌÌu¯÷ Ž1–Ð:‚—.Äoo ]GJ’Š={%ÅȲZ¨™Þ3­RøÚ¬Ãj"£„’‚þ;»õ±ƒ òb˜øx#òRýgÇT üâ7S=ż3KJ—ýÃ*W18žw‘¹ê´ÖP³^^~øsÀŠjçæ£ÖÒPùSNn%!: ³„Øwo-ì¿ͧ5dÑÁîŒÁ´p!ˆ—ýkëº'ó ßnà½ó·¦¾öÃã´d4+̦¸“5aúévvós<•è”æ‚*¿\¤>Q~‘˶6Šiñ!pöl¿»ƒ­aßJó:úÇågÝo꣥¯N4ÈB 0Ô²´IBÃyèdj£É‰®¹t8¿S1Þu ÊZ'9Ô/T2”Ó1Û¾…:[+}Ã9ßZ3¯u:ûNý(£±ïšòô°<¥÷`.® !À…ÞÊÈ’^œóš<ïüÈDø@=£ÐÕ#Ž“0|‹ÍwÕP!RA«•¼dó`A ESë—ˆ—‡ ˜X< `AÀÆ q”QEÏ-¥“ʲ÷…Áƒ-lª9-Ÿê¹Õ‚Ú®Ž/J¥Ì(c:£À¶Áƒ”ýU7ĤØÚkGwQÛ•~œ}ñtj‘H¢: ðƒŠ g~ÀÌ|A7h·¼»#çÓ»£ød•Ü?|‰±òX÷+vSypà£EsÞ¼RÄé°¤:Ì^ˆD-…CôzÆÊ1)d¬Æ0‹XÏCá)ÉÍsZó¤ÙútñJ^ f¼…®½¹?q ÜfÆ,qÝ'U±¸m"åïæ¶=×w\Vµ±0h•uqb~ê"ðÑ*¡-4C¿±zoè¿q\°èÏ@­¨f›Å†­å)WJåÖ)Y¥nNŸ*Þ[×m·Ø «5.¦6•°*ºn²¾¾Y¨ÜW£â{¬‘K;E´EÛ{|ìQKÎKP…6¨º¹ºˆsdµ Ÿ%Å-ׄ™ âÆYj…s`J6}*ãˆkMHi#Ó¨FÅef¦Þ(é¸ÄcØK 2W‰gˆ)¾‘Ék3Ãá@‡dGyg:ƒ'ýêh.E÷‰žùMÂ8n-;÷Ô¤·|o—i7•ò,å6E‹0^üª•[ª…ýt-Ïà endstream endobj 846 0 obj << /Length1 1398 /Length2 5888 /Length3 0 /Length 6843 /Filter /FlateDecode >> stream xÚuTÓýû6("LAB¥a”Ò0º¤$¤[’±ml£AºD@º;%¤„$DAB:Dº‘þ3žßó~ï{Îûž³}?÷}Ýõ¹¯ë;NV=C~E(Ú¦ŠFáøABÒÀûÚÚê a ˆ€0€“Ó‰³‡ýmp>„a°H4Jú!îc``Þ¦ ÆáÚhPÃÙ‚Ä¥AÒBB@a!!©¿hŒ4Pì‚„µ€h à¼vtÇ á¾Îß@.7$%%Á÷+¨èà !`PŒCÀð!`{ !‚„áÜÿ•‚KÃ9J ººº €°h \Ž›èŠÄ!€0, ノ Ô;ÀþŒ&à!ØßC´-ÎŒñ{$†ÂâCœQPˆ¯4T×ê:ÂP¿ÁZ¿|À?— €þ“îOôÏDHÔ¯`0‚vp£Ü‘(8Ðiêªj àÜp|@0 ú¶Ç¢ññ`0Òlƒüj TUÔ‚ñþ™ Á qX,Òþ猂?Óà¯Y½vp€¡pXÀÏþ”‘ïî‚–û…vEyþ}²E¢ ¶?Ç€:; £NÎ0uå?¼ ð ÃÅ„$%D$Å0' Ì ‚üYÀÈÝöË úiÆÏàíéˆvÚâÇ€y#maø€'ìâ0Î0oÏÿíø÷ ¡Hhƒ#Q€²ãÍ0Ûßgüþ1H7 ¹ž~  ÐÏÏž,ñ ƒ¢QöîÿÀ­XPMOQÇÈ”÷ÏÈÿq*)¡Ý€žü" ¿°˜$$,”À?xÿ;ù§¡bÕQ¶h|Äï~ñõwÏ.HÀõG!ÜÀ'ÓAã© rýÃt !1!þ ôÿÍ÷_!ÿ7šÿÌòÿdúw¤êloÿËÏõðøÁH{÷?í›x,"Ö ™˜ù™-þÌ*;­jàÛ\?Ò3Hs4~e¶gÁþZkÿ®4v/DiÑžÏÓІávI¯ fü&Y°êìwT<®¡kGõj DY·ŒŽ¼½¤æ icäàx¬ Gë_í + €Æ¦êmý1ð–Çg‹êjà 0•ý“®DÜxQÁé™t_‰Ä¬TÜÕ¸ø8š¹­(/A«ZùØ(iFÚ5’,]è÷¥µ= 'Åu%÷å/ Ë&5 ƒýd¶³ ·®UyôãŸ6÷·÷Fš¯O–l 2:T µ-_ò£®ÏÈë¤ë¡ÍÜ›Ô 7¿Ç"ªBªÕPpgítž<¼xGBüÖ¹½óše®RïI¦GЕn¾l“³x%lÎ_lò¨q© Õ‡_ëYoõ›Öz.±ZÁ½Ê\f@žþn"1”åïb+;²4I—jæ!#Ó] .¥te& Ú<°Ž°…€Ù2š?Ä‹B¬\éI¤Tj°À#•Æëý$ã>å—š 7 4U[¿Ü\ݦRO”iƒÍŒ%ÈæZžz‰¿ZT9uŽçª+è^®Br«4)ŠO†=•_ôñ?Ÿ¤•LfÔ¢æ›]ôªc¿#U˜F ˜ÝÙfˆ™è}ž‹d€ó?ãì÷–ôñfµ|ª/s/Žs¬ÕU{@RØcsË+aÆU:¹•hû;®’¼®‰\•,iX ŒÐRìR’l%ªux1dûä"í%q‘Mê’†ý|á“KYfØfÊ$£eí“7ºQÉk.a+;zËÊ ñêTLù‰ý;„ÆÓã’ß®Q±ðV·z<ŽàìDô,2¶NÙ|¸ÉNóÕèŠs=¼:l4ö`Pxo-W™©übÂ.—;œhøæi÷+»>ú ?ɅŶÕÎSp.—‚wn•CÒe`aßP³èÀJÉ^!M$´ŽS£Í|{º¿Ø1‡§K‘ ‡‘šügã ÝÇwY2³\ Ð=ù¦ïÌ€|…Ç0³Be›¬éý˜µ©€= £~BFǤY œ0GF·¤¾BÌÑŸÇÞÖÅ–LUTÁ}N^4š\aAT|ÕÈìå~ÌüÊ“4¥0í¨l©3ôЗñN©eì‘ Íníï¦]/a& ,Åå^/+“z`[,ï;©®ˆ–Þ_`Dyé²…]søôp¥'µJùú„⻌“žUf²ÝÜÃÔ‚)©Æ±¿‰ü'»oíP•ñ^&!®–Ã`#ÞqÙNOMUyI‘+PNqÅÉúÇa­hNî23µAšÔÙg÷cß­Û]ë£'õ>)ÁÒ§:¬MúñžsÍ£c`ØD%³LuŒˆ%KàÚ:ƒZŽ$nþ‰þDð ‰N³Ø=ó¡^Ç$céUßEƒ× ^q›ºí6ÆŽŠ]ŸÞ÷½æ¥üï9k-ï!ú ›>i²V´@‹ÂÛ’ ¿˜ôUŸ9](Wõ‰„ÄRÓ(o’|@"Δ¿‘ïèùíŠ9KË̼kî7×¾ìLƒË8Õ>×ða<“Pb9^{ÞÔT³s®çé^Å  VWs[í1ÍM£‹MöÝÜØ½|‡¨:ìšÇä`Î @n]êz”(¤Î8¯"u¡ÝɃî:˜L7HkÛÐ1WÎ^V¡¥÷™aó’X ¼BÖ¼eÙØ3ňè¿Ð’Sº(âT:U‡§O™>y“²ŠÈçi0Bê†Ú OEg½K×ÉTÍSÑ$ù<î« .Žá~‘ºuséè©%UcíñƒœÀÝ…1UѵÎú½âï_ˆ® tâ JŽ,j‹ Û]Íðä⃒µ·ópÿ»ƒ7–j]¨@ªöb©pTÖEÍFN_çtà$ß`Ð øÞgëa‚•ýI¹´òÖ ÷ã7r×0—oˆÜ¸eÁaÑA›5ÒÓYyP£±Aä}) ~ÃiîªÂÃw6ésÏÔÑÜ|_+Ôç3„<’||/Zý.Ïô ‰!3ÆÉÁºt‡d#Ìd=Î?ÜpKTXXã-¿¶ìG5ªLº7vÊp©*rPéÙ©™˜èNž«¶Yñ² ┪ůªjvONF)ž÷Ò_çpù!*&|UÓûÍïa\à¢[QV oÏ„âEú\ñØÁxAœ‘ÎGrUvƒöúšB=t+bÅ­ƒ…·ÁHÜv¢ÄDýfýhc_,!B©ï¢«ÍÿÕíß=»eê>Ðd«j?ó…ñ¹žnW˜É»\¢–ZéýñKk¨’"žˆ¬°gÊ%±w õf[0Ûõ^ň®|µSu_? (Â51ÿzkEƒÏôW×÷ùêa|f ´m-‹8Rè JÚ´¥„ÍÆR3áüÃàìDØö€òÉøb¥[.êÓØÊ–£E?h‹ŠkoA€Xc\²òfVÅò¢Ë^ð,ÆæîZtm^q¥MY´‘{¬ç±¨|#—òÜÞ $ëÇø ƒâ*ˆœß­½SR3èa¹Ý20šOûšÆh£ã{n7°}ØñéѨç†ÙD$ÁŠq$‹ŸôÝ)âÔ‚£²ñ;G/òï9 ŒÆìRÚ»^Êóèì ½ÿ*öá„}<¿9Þë[f¿sL«Â^`-iw§mf—Ù,'<@ÞàÑ{ŠÔ ñô+ì‘»ßVùvåòÔFÉ,(Å*Cd¬gÝ),¨¥V¤cŠWÛö¶ 8>öòSö) ïGÆp`V¶O*ç>&%Oímotí g_ra:#¶2µÏ"Æ—òê 9æžß7øòc¼¸K‚µT¿“Ü£Á»qaé÷ ^à<­kè%ˆu“mߤ5ÃzëŒCvè ÕMNŸ êa€úèá¿À ny@‘ŠçÂêØ ±í>—=³{¸ð†râžÃ›Á ¡­ i¸P·½èJ«6F[ëüÂZöºÕ«b&ÛWU=ÑÔ“§BÍ}k--_»=ä .úHÖF´ÉüŒ,`ZzWM<€Y¿wöܵuØDxè†Ù=@5Ì3’6S”Sèqvd S“K…°¾éOèÅ3#|íè’VH^ñ–«.­kk]PêwG“ÁÌ@ëjêàˆ@I Ùï«Öü:Åörg½áù /®,ßOx˜ˆÖÊ×éÓM«ìøx™ó1A@лó8Õœ§3GvcÑ‹V;:4{‹ÀfÛ×yÄHœpúQ=ÈVÅ©ºÛ\ñmÄY„ peMÑÐ2Ø48#ò¸¢d6­°c-6RÌõ˜*þ¾Çû‘RŸ%i§sÕ‰G«<,ÏLÁ/ìjƒòQšê ñ–&Õ°.šÃÌB?vFÖ5‰¼l± ¾ö>‰WKÁä'ÛbV[¬ù„Ó÷ëIK_ic‹aÃ9 ºÚ,Jh¥~±û$Æã×ëÚ3^Õë¡ÈÜßhÖ§’}ÐáÖ¦¿»À¬¼·R§Y(ª÷3qüâ]LaÕ¢Ø0:äw²“‘R]@g —Dº‰Å­37AZ‡hx*ëlÝ?¿TÊÏ ì"Q\]”|!¢hΖ·‹kAøÒÃßM$æÍ÷ºå€C$Qä>”ùÓAâ%ö~¯bv®sñ#¿>¦„bR_ººçùÅ7TÌ¿xùEǾ§6 tk@Ôˆ½1:cèm$i¤9M”ýªU}íÖ-„ëù@Ù3·§ò?ØôÔnꦨx¹{¼ÐìWÊ8M ÒßäHŒ4›õ,ØØë ¾CY<V('®^—uÄ}±ªgw2™±¾Ml¦TÏí¯Ä>Æ8Ñÿ–=zÏêǦô]0ˆlûFÚ’ZR)…þÝ-òég”ÈB(V½6‰nóŠþe›-ã1¥ÜNþ›¸LØ{c#‚°lcþñ^®Ëö ŸoÓg„e¼Õ®~ÄЙ;Ødº<Ü©þfép/#°œy=Î܇Krþɤe¾#âc¤MZ€_Ò)Gb‰NrZâxÅYÒr@zNMÆ_“„LØõ€Ò*»o\¾/i‘Pa T+L,¯ióªN—Uuz6‘~ ‚ì,×›X_·*ÛYU÷-\&,ÚøX9u{Ջ䘌½YtÍað)¶­L|“‰@!ÚÖv3Ã~¿4¦Y];Ó-²=×TLÖÚ¿ È­~)×&{%Äm}Ü„4d³¢Tsµ Œ®¼„´ð*ò®Ë¶‘A·’§ç[‚B=ǯ$£Ú AOÚÉNŒ›wew\r¾m_v?ÙÂ=ÌØðyyUà?3oÒ$çÏjâHî¬ÍIö 6°#Úd°4d–]+Ö$˜„Ù?R}O°¼óе`;åÍë  ñÔ“NïÐp)},ƒì¸…šÊÁóÓUãŽG—ö߃N£i£¤ßN3õêT–—­WŒ$è]5˜Yjçc¥¶ÃiójØ|ahZ—蟅«Â9 l핯ô¿ÞH&n&Hó }ó âMx“ÀõHzÿòRk•Ú^i>çp?³Œ¨þšqÿu ÒÆy*~=‹£ó/íýUØåÑ»ÃÊ2_‡öRÁ•ÎÅ˘a‚üGì쬶MûijßF‹6/OnKÌ?}" Q ô·§|NÇeiG4í”OÙ¾AòS¡UxtI^¶5fhÙ"ªs7ž’à‚“—*=«|öfJ AȸJ(ì/BOrg h ³©5ñžàÊ5ÉŒ®jÞ„áá‰ÙÂÚîµI>Óí…ëeõÍ,¾ôåÞ<¼60å)_¡¯aUì›.ŸK/èÅv=ßPÉŒ›Xõ1,4§Â¸2zß3>o«…¥Š©$@‡*~°ÖKù7}2¡SxœPé8êý‘´Ä5÷”Émh1Œ>mÇ«ÛÜ–›_ÌgòºyÁ$îŠYÄ_ªóo(öhJ/ÂÚöȼÀ=«Ê¢€ð S ^¥»Y(×N6oY~ßqZ¤ßZñâ+"·à׊ ;"]PnÅ)µÜÖlÈÆP“÷Ö’I‹6ÿd‹ÆjŠg¹¥âǼ`×ÌœYß’Ä9ÈeÊñг!¥å­1‘˜«‹¥7  ªÙ “xóõA?öPÅüU¥+øÙ‰§ùD˜vì/Gù¬¼ˆ?ß°?ƒ_¤jƒ_šìœ¨µ×u++<§3¹ Ï•-'æ›2ᡟE/µÊŒªTDõ‰‘3mc* Ÿ&|T²-Hyt(uý³1½‘ ”6ö×븽Ñ~L©nY!Oí$ÁqÄ×¹ÁZñÉöû}nãôgyá˜dùÕôjÓÍDLK~â«dâKô$ߘ¬œÝÝ™P×Ì +˜sX¾ÌIÓ·LÉæ®|þØöó9¯û*Óëº_øµ‘¡t’¸tV5æ<êIç™l vÚ­‹ç „^3Ç}<5ï˲ïÂ¦Ï  m! +*Ú|i#y4Ì´Ü~›RP×y'щË$ðìÙ1 ƒ€”-O÷À„‹·Ô.:5ßÛº%lMá’'Ä¥ŽÇ9E' —ÏúBJW%ej¾ä;™Í C/‚(__‚‘xÕìîŸÈtEÐo­¦«i´õm’j¿z(ЉÊR·½°r‰}2×ò“éêùÀ&md›‚Eè/½dÃÿÃQ <Öê/=ä&|ˆÂ¾kï xpímTëýX²ORcÑòÕ"Ô|°è$“øÜ§kåÚë{‹´/¹:âÍuÖÖŠ›»n]^{¦›Â ¥=ÃTd~@Ý $1Ë™jRÅ)\u›.·8¶Qëk —kÉóÆÎÜË'¥*ESÛÝ#È\®W› Á”Ï{îôb™ê¸ ‡‡.Ž4+ &±›ï6wójóë> stream xÚtT”ïö.)ˆ„H÷CÇ Ý Ò‚À0 0Ä 0Cƒ(‚”„ % ‚t§„„”4"­„„”¤Hóãœóÿ{׺wÍZß|{ïgïwïw?Ïd50Pr@ÚÃÔ‘´X$ PÑÕÕ”€@"‚ 0hG»Áþº‰€f0/‰þ_/ñ©BМ.Ðòv€E`qi°„4¤þDzIT!>p€® @ ‰€¡ˆ€*H/¸“3sÌ¿^ÜPXJJ‚ÿw:@Éæ‡B]ÚæŽ9 q#¡pÚÿ%¸eÑhi!!___Aˆ;Jéå$ÏÃð…£F0ÌËæø50@âû3™ `â Gýñ#Ѿ/ãpƒCa&Ãáó`kêô=`ˆ?`?~Àß»€Áÿ.÷7ûW!8âw2 Eº{@þp„Àîè«ë¢ýÐüÂáâ†Bbò!>¸ÄøÝ9 ®d€`ü; ê÷@£Qp·_# ý*ƒ¹e5„ƒ Ò݆@£ˆ~õ§ ÷‚A1×î/ôg³®¤/"ð¯áG88þÂÁÛCÈ÷ô†iªþ…`\Dÿñ9ÁÐ1¤„ˆ¤0æ €ùA…~•7ñ÷€ý‚¹1z =Ž˜!`ÁpGæ(ñÐ^Þ°àÀÿø§EàP4ÀæGý§:Æ sücc–ï÷X0Ü@¿~ÿ~»¡—áæÿøïý i™Xš¨óý™øß1ee¤ P À` 0@óüÏ*øß.@ÿIÕD8"`Пn1×ô¯Ž}þ€û¯8xÿ,¦‡Ä°àþÉ­Ab (æþÿ¦úï”ÿÃUù‘ü¿R÷vsûæþÿ?Âw¸›ÿ_†´ÞhŒt‘ þjû#Z]˜ÜÛý¿£šhFJ' ™À¢‚ Ñ?~8Jîs0€£¡Î(óÇoúKjnp̉‚ÿú¶`²@ ÿŠaôuÅ|?P^þ AP±¡¯ñ— ÃÈéŸ}¨! H‡_º@¼¼ þD˜Õc,1@ #P˜ßof„H4&€™9àˆô"úµfq0@åA9ÿrý£4ÔÛË söoF`Îý—ý[ß0˜ J43‰„Ê„¹Ô„µœT)1ø ¬ŽÈâï¦X ŒäÙ¢{ÔÆm—³2gµKÔgºÁê6.ízÊž'/¿L®Ô²Ôù‹ °¨sb±O˜¼>ÆžH üÉÈ6IÖˆ•cž¢Ì,]èÕƒeÀsûÝM§c YWM×t’/'e‘º„Vx‹^Û»ª¢LjF)³íe#t“}ŸÉªØ-Wö²{üã¯O­£Rõ^°i˶%úVÞ^ìè›'ïfêˆy¤åººÇñM®&ÓǨ*JPi6ŸKz‘]è³õâN ý] e «qž¤¢„ÕŒó-¼ˆÊ÷µØ5ï×2]¶J.2•>‡Õ1‰“ydÚ½_ý^[}øh^ëˆåz€÷Ñ–ø ‘=Å—ÌÛy- ÆJ·îRR€é2£œñ,}ôâæK€©pkÙÔ@%ÑêPS/vþ6¹øü.玫Ãs«’1]NIŸ«ÆOó£S¶î]™8Ð(ÔóÒF)_¸~,êÊ?S„† D*åêêN7çIÞ°¥l’’2ÀÏ2j`¹å¶ïøºZàÈá~(éͲ˅r5Ó†ËnÛ1šŽŸY²¶xÏ\~R–Ÿ>#yõÀ®™ÛõJñ7á‹K7ߊë#Û7Šåß¡&¦‹ò²¥j¿üM5äzì̳yzk´¸>Š«üÎ*®çKª›:?”Ÿë"áûænT»­2üïótd» lÔrdÑÌ•O†O_‚¤àA=Åß:,$X Œò¤¹>vSlSÉ.tF%Ê¥´“ªÛï“.•‰ffèõjžcAfVÔ߬‰Ei,ŸVhÎÇðUS‘,¸ÁÊ1†FœÈ²Æ°‡²ëôÇõ ª¨öë\’/ÐÜ›Ä?ô[õrZ¸óB_J®á^ðØ›°¡.îJUöI$pþ4$xCEωsµ6êÃxr!d›$ŒxÎ(2û°xgðsCÔrA®.»D¤dÄ0ÉãökkÙý¥;ÑA%"ªxÒ¢ËfçU]¾sžYÙ(hCçÆFVDa6P­¨Ô‰Q?è{€°×g&ÃÉ•Ê]Ð3§´q¹—‰×tŠ_­ïÄ9Ù®GÕD±îJÑ® ¿˜Å^`Uú8{\ÓLÁ’0Åösfä3µÓ[ ?/ÞOeö œ^yúð 0îÑŽPJ$ã*¼„0ÊdíóË-ÉnÿÍi¶Ù÷¦9W7ù2z“g¥Ë[ÃBr­(°.È3ƒúÝedt…f' ϶wIΙDéÒæ>Cuýól×e5d<.i9ã†-±Å¾õ/rXaMQ12µÓê”â5º±îwïY\Kúà8x^­K¨X‹öe¾4¿Ï–kŸŽÎ„ê]Dk^ ¾¿d\À:—'­mÊà<~ÓÒœi5œtŽ«Sx‚[g9Üÿ޵LG°Tm f›«ò²Ï z¨É6Ë.æáö„ƒ´e¥#‚Ýü¢‹:bëòhª§"׌—‚>ÓFàž†óý„ÓËHÝ.‡QÎ*_Gäã•ú{µ¶~éoôsë?žÜEš%-áS’v/)e{Ÿ´<¡0^¤éÝ ävÔ6²|ú£ý‚ŠÝûÉ÷ä¦Î¯Ï RF#Ÿ&ŸGvëÀÞømµZϾ" ˹mÎÂÐ*¬×yk¾Ñú¸üØRØksÈCÝø]¥c!1ÎÏÜ nÒÂÊ"1{Ñpáæ`Ž}FÚNr"\*Oj*›vXŸðÍêülæCñR=¬{fó¯cãÎÂ?ì9Š÷}rmÄ#û¨Vk¾4»…SØ ñÛ>Bœ"Ò÷q-z_»D‘+TA•çÊ–^¥ýhÞÅ¥ÝÕó£mY’@‹ ø=×פïÔÒH§‹ ºü ×€ã•\îåÈ»9}缚ñ­*Ø Ÿz"¦bÎÀ“û454ÿÑÙAäð”xºOðe¨°r¤<)NOÑøÐ¡gpÿÁWÙòr¿aQ»%d×HŽ[e{²Ñ´Þ©,ºoõ]—|Ô@‚¤'©oͲƽHcŠsÌyðÅèÌOåKkô´ª.áàE&ÜŒÖ-¯+Ú¹"9Iuy:⃠y±ns 6ar%Gœ–qzq‚žsîÒE%É{‡™Þ8©Ç}*üQBñ,,{®´­Ä£Rêb#Ý@¥Õw‹¡_"ÚC$ ›û'ª=HWs–J#Ð×·ø&â ã¢J´’~µ%yËO“6ÂÆž†`­oý‘?hâ©Ù¦ÂÁ[-I*qéuÂ2ØDß@-Nn–§Ø¬{á’ÝbÚÔhÃV¹ áåÁ1»ôZL"ú)ú/•ETYï7Íí=¯ùÄHý>ãø›RÏ ä•(ôqìß4F)³:èRuµjkOáæ°ÖMžZçÞ8–Ú¢Îa /Æî5$"óm ÔºTÊ.9⎻£éùÓ¦d÷”C ä îMˆ*¾G‰hÞK7¥Àýt¢°}wÞÆw–û£ý„WÄÚ³:›XŠh©“FX¨î6O$ûÕb|ùΕ‰ƒM¾RwÔštÉZè…©) nko8£`SbtМ’M3‚:[ Qûl°¦Y°|Ÿ@äÚÅÕÎïÙæÔÆBP Ú6 \VÏÆ­´Ð„2u6Èít»³èÍ—H7šãËvMHG“I#ÏÁ7$£'uÓ^ù”ˆ´Š£ßæÄ|´[l¸påU°1¶—kÄI¤Î]ÎÿFÎÿöÊ•ŸG2÷ËÇÞqâõ:_[•|:½xéñ5ËQ@—ò1Ùñí'³«™àÚÇ⻇'RCFU2·?ùxzߢ Rj˜j hîÕ[S­¢£b°¡,:?Öl ŹûêÅú,¬Ÿ–°«nñ±]JåTÚ(mÖ{øut¨t>ÓQë\€8n´Xûóµ§Å„Ã%dq\I²§ŒÈúö¤wÞ&}ƒh¹È5„dM«»18d iN¼q‡>.0ûyiøu?TŽ]wæïöºÎl™[5‘äÙN)Å®'¼ÁÚÁ™jÞ(÷¥`îDSÒ„m£–ÝÏLmÆû剸Þåk1«;$ÑŽÛj£K™†Ö¥åú¾9©éƬ`U{_&z˜=¢öà”°’òœ#7Dj~¿¼¨7KÁ‹×¾éŽ?tpc±”_,=¼ ªvœZV÷*9%|NfdæsñÌæèo¯â&öñPPw±Àsi¿»;—»¸¥d±Y! \ë1NíÓÔn5EI'{›ü¯VFjÙ ^4)½QQ/OO±tnsk[ñ© EÁ4j²9aWžÁ‘õ>ãô”ù«ñ*·ï^VyÓ6o|2¤Ž÷W‰o©0GÍP%éªZ挪y¤iÂ@®>üPk§ 6xHö-–S ÆaöjÔHSs³{žz'ÅÇý˜K|?ãVL­äIR ‰ÆB›Rè´DÆëûUð©Hr˜%á¬ßàÐÊj¤?ãý=¢MùlO›U»ÄƒGg5Xäk¸j³‚qíE®ð:6&¸×VÀ¥“s,:7&Œ\”|O¼+ ’ìh½*Ïœ]ü1ÒÂÐ<ŽÛØ_’S>3ÖÏü O•»©ø¬¼=¦þ-Ê?9S xG½§tˆ ¥ë1O´ºö£‡ÁZ‚'™DÈfÁmÏ¿ªŠpà¸Òñ?íPudÔkB&%ñrJé¢O+Ÿ=ñ0ølèU¯Ò /Kï›v½ï©ü€…3ÿ1edÅåËçÖ &æÖÁ\Íb¤ï7ozgU²²âa²»ÜMŸ©Þá3¢\só¾!÷ ê¤XÃN¦(ýÂÆR—ÕêŸ×ß.·jÇîZN|yܨ%ϹÈ¥º“Öúb*úˆŽy 8DLõѪ»ªiJ‹óĆvX—ÇõýÞ4!Á1!P@È<½…ߘvm=§ IZ2!¶u~·à\½ëzÑÞ2ÿŒéMD¿J}µàhÇãtåµî¦Õ§nÇïVùXF"]¥8¦EŽk)+Ä„§-z%½.†C6ƒyÕhpRp_GX¸†?›ëu¸a'€2ÿZ÷ÌnÏz<†ëýÕÆàN+ë²zݧ±tÇjIåÆIÇ™ðîùBn¬ÚÊt6ÃØE ý˜"m'_¢Aƒ¸Ò‡o–’îàE¼0é»Üxø.g5xµ‚!lvF³¶ÙõhÒþžæ»XGŒ™„[º ’,ª¼5Fü'+@Ò« r£É/“!¶£¹=†C®« xž7&tyÌÐ’€6›uêÍŸ$5ÖnÚñÙ±8å¡h öû+[¹%wüô’•ÌT \ІõJUñä&3’½È#„$%Ê´j“Má«¶Ð |£¸ÛÂ>zwÞ»©É0eáj\ñZPÃz}L1#ÂpÁTm©Ž|e×yßEM• l9ê_ ˜S%iÇŽÈûXÖŸ¶½øüÎ;ëÀšæ-Uý~Ù¸±æððÏÁé´¯û 9M‰óVúú¨o7}’ñÏK~}Ù=£P×Ió>?Zª³{êT¡7›õ6ŸæOK…WЪM{̾ÙVzz4iÛ.MIzצšÙ˜üŽd_ËÀ=öâ:%gžêMYú ëIšº5ëל‰³)Æ>ÍÇW@íTÃÍèe.ÀÚëj‚KzQ©XŽÖO±T„ªý Kgîu™}+™”¢´¦ª±‹ òu~µÅýÓÅOfç=ú´B¢H‡öœ­è ÌóÁ9Ýn ™áèxŽéš‘«ð› ´9Ôü‘Ákû5²‹gV£+þL½Ù³Å|1<܉ø~ž í+6º/çǦZÑåQ¯ÐI -l·…ÐaBº’Ê'ï ú¾ýqJëg’àsÀc4gyûÞ[|´7Raj;â’{Ft®Õ쓳œ@n(÷…m¯MÉSi»Àa…‚kåvÓs‚)Μfì«óGÇW7g¤4º=M…N6°À©Ð‚‡-{ªonåÑ©¬¾3:óÑ^S;ƒ›}a=k\?mª«–ñL&Kd&#\C'\è%Ì’Sw\Twîš:Yz¶„­î¬ÇÇw0¦Ô-ì™SÊ:~Z‡ë· íÈç[hÇéì ³õÈKUrDe1IÞ+—ùr#`—àJ¤&F¢^ÕÍH«ìâ–A¤úhêL¶Ä»®M{–a—n›Mî[R’OP„æòm³Í4¹à–臟4v™tkÏUŒE-ß ž8)›éÄ äè§0m~p^”_ý$(Ê>üd·wä §½{ÂÍQ“šŸsüøë{OÇä†;‹J_ÜQÉ¢¶É]v!9_[T_vªÙo ´8u«‡Múù.xô< ü±7²e7ú6ømFš¨H=‹zGM—÷?ô0‰A“m¤T!ûµdOqþIÃû5ÆàŒXƒ(C^#^Ž© hÙEÇì y§fÄ4±@BwÆÃCƒ±!6|4[‡ìTv²V“òú{AÝ4¢S»¹Ê£ Åø/|pû¼ZzÏ·1Ž®þhŠm{”E5Y(Ü6Oƒj¿/Ž9–8½¨¬H¥ó%èŒÙÓÍ7?ûɵ õ·?pøC6>µ›!’çÝñ;Ö²²üﯱ2çn’_j¼ˆl:4”~Ýÿ’‰’øhò{ƒêðò²¶tŸÜ÷Ñtäf˜ÅÏÛ$¥uÕ"_§¬áblnUÝ©ü§p®ÝÎ …ÂS×kJ÷NÂ7ffpBMAá¤^20>ƒ÷sxW´IMVeêó5zp(ÿ‚VçAq¤þ™Q]ÙalC~K¨€üƒô#)í4iÛ+€]ÞÆ l3‘¯9o,Ý÷Ù½Ù›¢uìæô± •Jä`ÒDLÃJ®×z¢4;oŠõ†©÷h›]¡úž'OÙ¢C% 9y4g7Ë^=Í'rç–+²õlñ¼Çì=° 2°z6S¸¥0ËæÔ´þ¦5OFñi räÓôZvtJ›½8·^Üu°ƒ'ü˜a‰È +¥|Í/¸ºS4h–ˆt<‡ Êäu|øÞ}‹r*Séì[q+zu=w“×›VwÈùT<墀!ŠR¼çK¾¡¼‹ã‘yáz“Žï:ë;=…³¤u„(R–œB—x,âÒ$š7ÂÀ]PO¨ Ý3;dm ^(Ï1lÏÛ‰âÍ7êø$e®eš3{Ö0Ù”°VÅ>^)ÀYÞ *™€Ø™,Ae`X€×»äu[Ú0nÎ>g쇾Ã`|Ù%'¥ùï½åýs’omÍ$’ʨ`¼›ìGû? ö<Êí4’lŸ>ò;¬k»¢” Üãgϰ>¸[14 #ŠX—c ]¯íâž¹Û¿ÑHb«>~ýsXÖv.€>Ú€ZŽH~qÅÖ5VP-#CµzL‘$rUb&èò°ní'8ðû…æKùqœ;cTn0§g©“BnãQ«È+»±®ì7^§èÏ/:‚ÅÎËÛb`)|³d9+½¢ïáȱÿ²Ó´‰|éÑ Ç‰UyÊ‹¤@UðšjOA»ÂçP=x•;Õ<îò%3ýjƒ*‚­_¨²ˆsèÔSb@ÛŸ”¹c’£Ëf+‹#¨¡gªž6±?ÙÝ™<ÒK×árkºóÕpp»Ü³Í‚rЍf7Ã÷hlØÆ|Ë·ûb¯ÄPõ>mF×EÉÜÏÙ®î_šfQ‰u¼ÐfÃS5¹:$‚§¦yÓ{±>qSçwÙ“­ ± 5tôSùÚ’l!}ë0øÑíarÿ[ÏÁÆ™«±mDÎí$"†Í¶ÆvȬC{·Íè¶'Ys£3UO\ZšDráucÐ2÷ÛÌÃ¥ü-âCý‹Þ‡f8#¡öã¥àÜûRÁ¯Ï#ð÷Cn=>¦ž(M0Q¢(ß22pJÌœ‡PÐI!0”B|ïqä;cÝåvÈ÷“SÉÆ6×t'‰x¢ÓçlE£I¯â™GÝ(Ù37s ¤¨“”꺴Z[Õw¼…P£k±3ÙBYÕ¿¡žÍþÀHX£W¹ð)æ²,¨úmðŽw!É-a}ð]ö‘ Ô8ͽ¨îiu‡­co+8±þQ×3|é­ð]ÞjÊzÉV{ð÷´­WŪ÷ù1™-_SmÔ¤wtÝ-Œ%{±°L9+)Vfàn‹×;¯œt:>Nˆ:m¥Wtï©õ†YUu‘FC-*V#÷^­+r5Ô×£0kÙ6> stream xÚtT”íÖ6ÒÄ€¤ ÒÝ "!ÃCÌ3t— J§€Ò Ý)©4H7ˆ”JLJúžóž÷üÿZß·f­gžëÚñì}ïk߬L:úܲVpKˆ†äæãŠä55UÅ@ ÈÇÊjE:@þ¢ñX .(&þò.òŽS!ïü4á0€š«€OÀ',Î'"ø@±9Â]Ä 7¨@“ ‡Ax¬òp'O¨-òî3ÿzp€9|bb"~‡d!.P0Ð!m!Žw_ƒúp0‚ôüG  [$ÒIœ—×ÝÝäˆà»ØHq>¸C‘¶=ââ±üj r„üéŒ`` EüáõáÖHw pG8@Áâ.ÂfqÜ} ¯ªÐv‚Àþ8küqxøël|<|ÿN÷Wô¯DPØï` wtÁ<¡0€5ÔÐVÒàAz @0«_Ž ü.ä‚:€,ï~W(Éê@w þÕìuB"xP‡_-òþJswÊŠ0+y¸£#†DàýªOêß»'ïŸÉÚÃàî0ï¿€5feý« +W'^CÔÙ¢ªð—Ë…÷7gA„€¢"¢‚ˆ3â¶åý•ÞÀÓ òÛÈ÷‹¾ëÀ×Û î°¾kâ µ†Üýáy#@nÒÅâëýŸ†"<>>€ŒXBl 0¼¿³ßÑë?ønø.P€)ðN{|à¯ß¿ßÌïäe‡9xþíþ{¾¼Fº²²ºO¸þtüo›œÜàÍÍ/àæø€"B‘»ß¦ÑAÿ*øw¬*Ì~ñ§Ü»súWÉn)€ã¯íàü3™üN¶Çß*7 Áw¾ÿ³Ö‡üÿ$þ+Ëÿ¦òÿ.HÉÕÁá·™ã·ýÿ1ƒ¡ž9Ü©Öy·šð»=€ý·ëÈŸ­Õ„XA]ÿÛªŠÝm‚,ÌæNÍÜ|‚<@Á?<¡õ€Xé@‘`Û?šùÃþÚ5( ¢G@].wQ@àÙî lw î„ùÇBÜmò÷aÈÝ>ý³Enõkñø…„ 'ÞÝèïÀ›ïnC­ ¿¥ àåÁ‘w!€»ž}Öp¼_c¾Ó>¯Á/ê7ð‚þF¢^Ë#¡;ät7E¸Õ¿)>~ €×ã? €×ó7üG`W—»&~Kë®áß7âãÍNÁÁCìªBšÏ*dï»soŒH`¤œósä?ÃAö(ŽY¬$ègfÌ©+Ívó)=³kÓ’s>ËZœþî½^ÍXã)xÂͨ´mÃh7u{‚:‘è}JÇ+‘{U×L¢;y¡’ˆZh³Vk{Ea†%˜ÑÞª²Á²ß`Cè5{öªclðZ”ÙËd­4fu‰Ös¼÷râå¾þy’núŽÈ@5· C–HÅÇýt ‚ØåFóo¯²ß¹}M#õ¶T&“ùjÕS²Ä™tV¥ul»~üÕœé¡swVu7Î^†r‚_ZnÌ@‚Ìp|Å÷x³©÷a°Er¾‘6iûÜrš!ƒˆ˜ó¡rê|ÍëÀË J–¯+³eû¡ôwlüÇ=½ÁïÛŒm„mSŽzmôÍ8•f|ØúžÝ =Ó×ää|”4&‰«š¬#´P6¹¸£›…‚E§#»‹çoùÞk¢ˆJEûøx=ùaÑò‡é KLA.+Dø·ôš”ðS—/QÇÞƒ›+;?ü >=U×åX Þ>FêrÒO{ ZéÒþZíD®ó¨ ‚`BDõ“.,£9Ú¸gÀ%4i{Éóa#ÒqÝ hò‡`&øÕo›ŽƒD»Î2>Ê}8µ=ž2édNm,_p]¬˜ÅgpŠYüE<â‹ £ÒIîc—î,~Ý:'{®ÂƒÉÅž°âŠX¢¸%ÈGl³,9ÿ¸ð[ÈØ‚ƒJI¥ûÿa½Ÿl|ºÄy¤Gôzb”qíÏ¢põr4†ˆ×˲ïïïÈlw–z±ŸÐ"–aÕ4iÈLͤ¸¿8dÎÛL0W€ÒÂæ¯Je­TÎûtB'm\ŒÓë }KSz›Æòt}‘ǯh7*‹|à EVÝNíe»²éC<¡cÇÅ;8ÞQ*¦C¶Z,¬êTÉIã|V‘)Ù{Ó½%~Në쫃1ŸúE8Öë¸mÅ©ß <­>¿ná¶¹Ÿ<^Hv Úv#£ "ß¼MëQ]»Ÿm8^½ŽÒ±º°ýÄżŠNƤõr"˜¸P_õá›ÌT”þPåqz¬@²¤Åä£Ú‘Ê57Æ–[Zy€ºÅ#ñlúü’epôòæ~¾¾ßefS‰@õg.mVéãVÓgÛ‹Ž#òT$ò<{ã—J£È¥VawÁ‡ïY,3Ü ‡´UŸ&‰Û$J…RtaëΦ×5zŽw\Ú"”Å^¾ßºoü ÿG˜Y¬tc_Yiš ]'ΑŸáCÓ•¦œ˜'^f#+EÜÕëB®ö¥€èo‚æƒÔ¾[ÅÏŽ_Ô| [Mé3`ª™ä¹ýçX= H™’Y9Tõ5yÌÁzáT¬Þž] ,ïy~&æ9«{àTy.~I¹õ°’z#ÚöÑ®Èç{[fâ£Ä¯®®-l)„ xjžÉ¤ˆk*߽؋1‡—™“??.yŽÓ`*6r(ö”Ü.:¾2¼håÚ͈kë`ò u¸ÁyPÛkÊ4׎T#ÕÕ7hÞ àX®:ÌbÊç•ÙÐì2×êåæq±G‡ÒZI¾Xp§¬†‘>Ñ)$‘2ÉA~!¯,š†˜¬¦2¡ŠQ©ÇŒ~ì([ë¹ –Äò¬ó ZŒÇ£¶ð²[ÖÏ´eîßQ³ÎFœëÛˆºöÚ1ØíÛÌ/(Ù/JeåºÊ¸JÇÄ£šE¾÷‚¯¡q·«÷ÞÔÆü„M–ó+u«ê'ÜÃØŸŽ)5Éyïb± $º9v]fí–ŽK)³M5?ëïyÄ–‡ Ýó\=%¡8z*Ã!(¹yj~O Ó“'^B¹ Û¬¾õoêÛ =½ä‘´ ¸ðóÍWW½y—í”ÍÄÙ¡ˆÝoeÒÁ ûq ³€ù;ÈÕIC©Þîi ÉÒaZ~Ì3œ¨ÉM —І+x Ù' eQH¡p}N.TÝæw1ZÉdRæzG—¥ƒ½,wîýçl S¶S OŠÏù.ø™üèjõ =Ñî}ÏEc¥ÞÕbÝÞ I‘L½Û÷|-Qúç9'7/¦ü¼,¿»ÂSç§eâ<]1‹ÄUß©w}B”æ,¹Ÿûø–vÇ-šÊ±5~þø°>©N¨F™~%ZɶÆ["À ··,˜gИ:³h³VUM4^œ§â%Á®1Í}T¿hìQgãÞVAçwcÌ_3ÉÈË’J)ÇM„¯Ç­kCyºÿ¥Ëm7(Ì5üÑæ°S/:Îi<àV+zRhõ>ôe±®Š6Ø.~íÇÙý¬é–òŸØ…x¡§2TübhÁÁ. ¾êñtFJƒ ¬¯š—ßžù³e´øèœ¤|:;âà»ò Œã: vÍûîýAŽm‰é‰sYpuÑÆec‹¯x#Õ%‹o&Ö"ËpÙžë˜ÏIÈS*ììòWF´XX£2×® à¤xtÜKÍå‚ò®JûËÇ,È®ð®Y¸æ"ŸkïÝÕF»áªQ-5mðºŸ:ÉɰÔ/ê¦?æ#ÑDÈ ±8нo@ó–¦}Ä‚WÃ'õãó|g"lÛEÒñtçUù½Ûx®•ŽH]L¼kœ‘8ÉËolœ] ³Â\Óß¾7þ|®ž½G`-‘cŸ/´L¨òû(9lÊ#L.úÌ¿[·ÿN]\žbQxoCب0”êù?· à¦¸Fœpðbõ©D_VòPn%zcäg\1è½Ôű·¨[JØsìÐŒú Öë,1Íà'} ±6ÆàÒYõ½'µ…ÓŒBM¢ ú¤kŸ=ç^ÛÑ´öÚdå«äGâÿ`dAð¶iiMŽK¿åLO—)¢¡(_$9wV¾ ÓX§Ö§Ñ,ŸÙ5ÔŽ‘~“‰³'ˆy µš½õ8ËÂj’w~jë7!³&~ázô#Z-Üy$Vœ“K%ñ'É7¥!ÖpÛ‚ú(á¥f“¾ê‡æ¸ÃöRW)­,ÖÊ'.ê,ØÍ¥íä1e‚…JˆÏ\h É6^Q}q§ «Hª;QžXïÐýªÕ®sŽ•›‰o*޼ò74 ºî‰°ö¾ài0S ~SÍÃŽˆÅèÎ%.AáÁ- a’ÀßÇ uS¤˜÷ µeÃüžýüPû”KŒqL¦áh˜êXnR¸%Çq]]Fœþqsq·â–|u"ÝŸ»nÉ ]¢®#ç×àóE×¹iI_T(2’f@ù:0Ÿ´9±ózjL,3¹¼ZHfï@"ÔMu5Yï!\èÆý¥`È›£2†Ô)”ë43’Ix2Uü‰ª9 #•WÛ ’ mO!ã -j‹H¦wÑÌ&€2¤u…çs”XŒ‘À/˸׎½ [(àëûއ ÁÕWµ6…Žr=ü¶Û©´ò‰Ï9‰‚tÚo©&ûî:÷.Íí¾—¦±Ïuµ¦˜R&šý¨,Pª†Õ’â®3U>!ÅÌb˜TM C‡_IÿÔ÷ƒJä­Ÿu£643ë¨q%ÊœYÆ^0 ú ”õ§'qÌNÕøŽŒ5·Iµ¹©Ø·ÔD4‘öTf»®§7„Râ)…ꬊç8ÐÕý—Ä_TŽÒKgÕFÞŒ™œ®ï ¢Ožå<€<ËúÑÞ*ÝëøÀ¼NlàÉxcÿˆ¤l³¡þëL)ì{híÖ` *ßZÙ2¶šH1¹òz½SRÅy±Ãá gÔë²­¯$Ü{®×OB£e+en4% 5h“0ñI¾có2½K¾¶¥ëa¨pPò[bŸ Äá:.öH!|tþVp*7hÑdœ›"&t¦ à÷?~óñ…•ìž Vkù%å›WÓ.”}ÅS+t.³ täåYù°§¾"¼ L&ÄØ…áÎßÓ\—[h`Õ{û[â5_Mbß~4YÆ'—šñWÍxô>”àá:S­§K4¿Œ¶#þF¤ºÁN8O‚  ¹¦§0ìÌCc¦wóËå§#oõ4€"™1ñ„2–ywªÉóýÙ‘|òKQŒ#»̾°Ï»þFã8ŠÊ>®*޲5IY/² \<ÎLî*`ÂWÒ®S] ”Ú½G5¦áôbuvMÏéú<ÐðÉ!. x‰7ŒÎt%$¶fÛyN°º¦‹‡™Ê-u>â1¦Æb Q»p\^ŸÞ‰ÖP”7 u*ÏzÙ‘ÝkÚíØº)\ªF£4;B¦òÉTIÎyn‚÷äê|ýd*¦¢c}_”Ï·•!ó^Ùڭć"þÛRtÕÎ •ugd¦yÔ«·Šo¨YÍR‚¬²XÛ’3XyXƒ\‹ô¡Ä4%Œ÷õQ‡~fN‡%À*hùq7DpÙkoDHü©‹¾¯^Ö6U1Ò:!ŸCigÚÔ)a<²™5Åaœ»^K€ MUÇ@ÏË*áž³L7—5ݨÛSc6{zÙ‘v]Piå_ùŠN¯îƒy=6Ü<ÿŸ°Ñže¨ C"Õ?JW`]ü Ê]B´8Hó›6G›´Ë@·:¾ƒÜB@…œ…~ºÞKC¿úB‡÷ÑÀß«|ýR{¹p»Rïs‚&ñ-ž„|#lñªööÕ׃¡—èiDmøO‘ïÆ4§™MP>¯¿x ‹_þÄärðrki4ÆCÎ(¿ÉÔÀ›5àíöaÈ/”4µ‚™²(IÑZ±èÔ¼þmM¹Ú–äçLgV𔫍úÞèÛ‘Ûý: Ö]Î QC™•ÉN…m’Y¬µ¹Á7‹“£¶be…&Ï®‚þù«Éž÷èÜ…zuã‚AËlé_©ˆàãK^ uO0ƒ­Ò9ªüúì•ÍãÄz™åm·ccíâDk¼tÝ =¶å—VŽŸ̺ØT2dÔf­;µÜýÆ: ¨GaßæçÚÙ~Ê”ÁÚæX‚?MÕ”ÝàqÜûιRëqÁî°]´ðPêãdR•´æWÜ7¯š‚$êfÄlK'tB‰bG3ëEøËù?²jôäÃq:`Iº\Ç ²= a=M¡¥ŽÜ¾…¬Æ{ùÒ:XŠ íZÈUo%hL¾ÈŒ·IÖ`h£‹˜Ã“ü°oo n+A 2Ø™iÄ2$šZ;cŒ4“éŸð?€œYr¥^y’gÛq}}5±VâLFìM¤ÁVª7}¸U·‡Ãâ²Óù:›],¼Lîõç¹"·2~Ì™¯ö¦Å#ïí-´`åj¯Ž’³(µù„.¥ b” c ´ÇØôþàŒUGÁŠOû\ouq³λڡšãÞöÒ•¢ôñT:ö¦s;-±'hì:GìÒŸ+¯zaÉ6ô•é“k]¹Ui¨áJsR±«ß´fi™}‰ö7fu¨}³¹~Vw÷wj»Ç¿ ¾úxØŸÆý¥+ïÓÀþAçR*^È·J,¯I—ðQF°hcŽ--«÷]81hóÐÅ.@|ÕäØ3(;Z¹ Ç®&ŽLb‡]Š%aøÕ³ÐÏÊfâž"l°ózø\‹5<òE6p´…M¦ítGCƒÞ³õ”ÁH…k‡¥[áæðXÙ&ϧš÷‚Ø0·Q¿ýƒÓuqÿp Nt㊵Ù6¢ùÆïeÈNðÆži«»³:ƒ¦ÙBà`Åž¥Ä“r í»FU –JuDrÿy!OA´†Åô‹>"ƒ¬JõÅ:¸®ª&§m«É¹Ø/ß-Ó‡GÄGv‘Û™µÒBöa²h(6Ã.Ìq&\§‡*#Øg¼z&B0 qW÷~pÙíäÉg#¬v½W4á-39‡SÂmà¡Ùå$Ó:[ÊÀÏèÒÃ7Eñ4Õ€™Ó'³[þÍ4 ‚”£ Dmï¹bfîY8ú˜Œ ´at:j $‡´ï¸ ]M1ö=_­{±­¥q6íÄAß6ÈX½Òv²R‡†å_{š¨ŒCžŽ/LgÉä£âY¦|š;üílÍ6ÖïyÞÍxL€Sù圮5)ƒ½ŸxZÚR³Éý½lWÜö0=Èœ—•‚°ñ½ÂPFêZ'€a@vyÆë÷¯n¨>IFwCK$~vO¦_8>—Ÿ†|×év¢¯#ݜՉ~ŸÇ¨Y:RË\H†º=(=Øÿ`;‘CN Ûü,åäoÏm~°²úRQ·YÿH×,“\ØÂïÕÙÔ\]ˆò6µ&ÄÓ§(ÎÁ—h{pÚ $¸aˆ¦^À÷x,j—LÈa¼µz”x¤Îôy2ýÈ0ð *ŇȶÝÍ–íæùÜ&¦­Šat{u›§³÷?̆øÿ|¹K³é×”˜âIYE‚oùj+5ø4oš»5pµJ™o$GÑ÷å¤ÉkÙDå|üžTBï~$ÀÅ?o»ãtºNwàÖ`=¯YïÕF“Î3¬ÞÁ¤T¾Ü’÷Ïô}® ÃʆN\2T%ƒ£•ºr-ž—SjÌÙ¦ 8j¤`ð¤@S=Ózb”§Fn"\‘HPèÄUeÀ`Ó@[ˆXúÄâ}-óýÀü˜8Î_úÔo6 Í$¶¬2žÑ^“oTJ÷بáðƒD·XWy¶=¿äØò„ÚœmŽÍeÆd4£â!Wœèã£;éñ‘S@tËŠ.H6(òzÇøœ×k&}l—es,/f#%Ò9 fx+9ݢѕÒfb`c’ðÉɨÔïctèV{óÕ2âÑK§ì€H¢RÜ–›ÙUÃ7Â%3;Î#˜dì]¼º@“f€},!‰r?ÃGS6]ÃéÌ3ž×a’†M¡¥y%… €R!m#{Ûú@©L•Ùïöjžöu-¨xUÏÃéíÌò££×µ š3íC^LPHåœçk‰!åx•~¾|¼áó¶ÒyÃ!*½ 4É” Þ÷‰t)•j©ƒFg(×›¬R<±ÄÆL®¶K*½»7ì³ /dÎr½«—ü´T+”ž3_YÌ7z^³LJ€ I=´©vžǮ› ûq‘8•2ef.»RJj:éûT´OìYO2*Ä­rælõÄØb²Û8%j˜ìÂÖY,Ü¿Mè.µ¼E®—©§·º¿¹vùq2rTq!š®27µÑ›@n;¹ïJ;·> stream xÚŒ÷P\ ׊wwH qww îÁ¥qw÷AƒC°`ÁÝÝÝÝÝ@p·33ß$ó¿WuoQ½¶®mç4äÄŠ*ôÂ&vF@q;[gzf&€¨œ23€‰‰•‰‰žœ\ÕÂÙøž\èèdagËó‡¨#ÐÐ${oè ²“³³H»X˜YÌ<ÌœZ9 ‰…‹ÍÿÕJ9‚AØÖÌúß6Z8‰[¸M-œÍÿÞ–¿åj¿®ÌÚ¨hçdñë± æÿè@§elzt8Vò/t9ÿM)fklgòëÄXØ9†ŽŽ†ð !ƒ;À‹t‹&@÷¿–ÀÈ`kç r€Êó˜Ú9Âÿš(;€Qø—èoÄ`ù8Œ¢¿€ñý¿ˆ€ÖΆ¿ÕÜF±'€Qü7YKüF,FÉ߈À(õ±¥#9™ßDNö7‘“û@ää#…ˆ‹âoâ¢ô¸(ÿF .*¿ˆ‹êoâ¢ö¸¨ÿF .¿ˆ‹æoâ¢õ/âqùðü~wägôx9[A¯%SçßrÖåŸÖ¿ P"ã;(˜±5h­þ'acû%±±ùð×¾1šüA)¿#€Jþ'3 (ÐÆÄÐÉüˆh+ÿ”qüŠãàºåß¡A}6ý A¦@¶_Ð☠ü²³þ‚®¿™1ÿüÎþËÜÎÅñl ³? (þovl Aš{Ø›mÿ°ÉþÈÏ*Ýò“ÕÔÚ?KõÝæÒ@=ý™äj :ä?ô Úí~“9ÛýG *Æþ·Ìô~¶ýÏ °1ÿ#ýï°XÛƒž¨vŒôW«~ær:ýõ¸ùwoX~ íœ&FÖÿIÃÊö[ñVãÍí¹ÿ‘þטù×xÿ3¨×N¿rrÚXüwWÙÙ]ÿ;(ˆèøo± Æ:Yÿg™A¬~§½jÍ,4¨™Înv8€b¸üAsuý‚˜¹ý±“ o÷? (¼ÇÔDÏßä@‘<ާúÏãÚØÅ47ç¿^¨ «ùþëëè4†_š·3æ ¶¬n½¯&p£ßçŸ!ßÓH¡¦÷ZrlsyD†I¤®HÜp¼NêF]Ý£ºZ&úéuÒT Ú¯Ôòäý¬«<µ×¿8‰Ý?‘w"\Ó÷î-½ªÐ¾÷Ooõ+ˆ&°iò¯.\ÈŠ9÷n½î5}Å+£!ó{Jû2ÏÅÓôQj‘:³äÙFs¸$ÐÎôï`iÐ/ÝQfongг&^‰¤ciá}N£Xó½>l²D?Ìy®•ª²8uâ‘á}À}qƒ>:Eá%r˜$³àU˜¿Ú¿èÞÄ—O”…D—¼JÊpÈ’Va¡aÛÐSå:ºÔμû5LIб_UÔ€©ïH¢€UÑ¢á\Åj|wØn*²Öz«Þej™üv™{ºæ0‹¤e~âߨåõTë°64ÜO’Ü|?Ô0¼Óå£Q Ø'øÖÌ™FÌ\;|u…'í]2T±óx§P •nÙ5‘ëÊð#ŸWàw‘G|æí<&¦\P=`£oÏÙ¿zö)«»”oßœE[°vC× z â5êH¾¼ÌÃ3g3H¡ÊNëú”½C©Ä[ ¬› *f¼Ü,Ãfx_äA$·Í¾ø}€,ŸMJ¢go¡|(\'ÐÃò;—á\½L­å3{®ñîiýØa]À HÐÇ^î[“ÃíÛ’=¬#;õ‡Ë2·0‘¡è-UÎàìOíÊþYN ©ÂàßîvæzàŒHÏTE\‰mbP4TùwÆ:¿=»ÑK½'§Ì_’ë“9â õ^Ò]|ŸßƒWé/„ýé¦ÁŸ¥ºMážê b:êZ4yúþ ©~ÛPƒú÷|ÕûRÏÍ7= Óc;Ä#S;d^Öe:l½^öÈTëX â…ÿ/×üT‘á/¦áëjnµËo«Òfû§ƒ£"¤0m¬L˜ã§’€¼"ÊôuÙ|ZÌ×ùøLËmÏ ¡G¢˜Fþr'êu̾%ü:Z`dïÃÔŽá&÷Ÿ9³¦Ý%²•lJ¾„ãíZTÏ'd/LÁ˲¼Á©ÒÎü‚öc'ßš8Òô£f ¬ñ!Z웾9JÌÁ꘤ïÊЬbÙÄÁôd~¹þ5x£ìȶ®®²2MpÏ@ðš3éAô+”vbû5—»"óÜ»k~ç‰{É7Ë(H¼©M>Ž2.ÌG¬O_ÔDß@Y|Á®•t.«žšñ¹õÀ%œñ5&$×Ùp¸ð×inÞgS`s%ÖNÓ¿“jΩ¼¨©xÆêß7ŽÀgÚxWr%'ý —¥ÅT:ãêű›0¯sßwÌrúBŠÇ‘¡:­%ð*ƒ{Æå¤ŒÛ¥ýÙ*õl.ÿX;ﵫ€@Na†u5ž³Á‚²¨ûÖI1H"wzlÓ+Ô 1R†›Wf³jDδ”Eóhðå¦7;~#žÑô¦'ú\QŒ%›‡P]˜ZED–qŸ¯ûœ£X4S8wã.Ú·Ük¤Š´yQÊV:Ž6âMÊ›`./åE»8´®^Uª]}Kp#á?o;9}Œù™d ´—·±mH»r‡¯þ%_«ôÚî 3‰`…˜O²3Þˆ'J¨gõ $MÝ1F‘“[˜”èûðsM¦ôµÙs"RÜݺø¡„¤[Z ¹¨.£!òÖç@ú3äªÊàŠ]öEÀzÁ…2:v#v~[‹xÔDq›bÃa›,䔿û=ä7\}íqMõ04œëJ_+T_o\ƒ¾>À‡éâì_–ñƒýÌãã]°¿Ž4 µö‡½*ÝÍÖ2Åá`Å—ÜP4tòÄSÃÒ¯ÌÃìÿPÂLHS¼;…^#G;`dïÂëµV< P¦ÄŠ}¨®Î»˜Ý:6ƒŒ„^®À ¹iA×ÊÅU2OtÚòÑ,‹_‡SˆD|óQFü^5Ûè)%¶]= ÚšÊÚ¬¼+cÙhº,j¸ñ°x.inDgëçƒ!›3Nå¨/ „{ÛA=¿±`4ç¤gu–ãdf‹ìÛ S–{Ç3ÿV6ÓO7í²Ø!®ùÛ÷£Õk}$©Ä„¾»%¼´œö:ynîxèZÛðzkìbåc«‡ñXèo³ôW›’$êî¶.ü©…­0¦Î™ V¹\®]hÏw–H¯x/éü<‡j§ÈáíZ*6¾ºC 2¥8¢Íâ¡k0‹»OœÏ&oÌ^lb£êÜÕ=nê–Ѧ2HtI=}q“ ì]¯º2ޅĦÞ.ö28Šp"òmÔ-e~ìu.6"½+äz3i%:!S öu†7·óx6Þ:@ü‘ a1Rþ:üïæV¾ÉKi÷ÓX\êóMk8_ÿ·ìÄ>Œ`Œb§ÎoÜ|u1H¢bÕrÌ7Û†zɱ”âÇÅóíÛz·§Ð‚üÈŠ?·‘L±²¶Þ)r/pŸ~ˆrâ£4Ø)#D:u\Öxà‘OÈ?tš¹Hh ‚6 BL×{§±ö‘‚…Í ½ÈÚaŸl–Eã£Úmícÿ©·Ñkî‰Â·,Œá1qtÝ5ÆoÅ‘JUpaC :J‰Ýâ4Å«ªØß£õä·&ú¹rAy!*äª5òÍ2œ1°´Ê©ó§ÚŽùiσZ7}gZ@ŸÖªÅ·ˆùw‹Z¡Š?àÇÅÁÔÄrN¯_"/gd‚:çP$#)«ëÀ>( £H-m:“çî¾&¥wjRsöR´?5·Í@¬Â;Ò¢œ]1ì®WíùN©éè7»‘Êh«o›!-›K•$_}ðudò |Yü;/ñº•K=«4£õnÛc_ì3ÙŠ\]ØÃ<µl°¦>¯ç0t×í ÙÕæý¶øÌ)d~Ž6¯çN‰˜Ýý×W¶6 hR[ø‹î†n.íÒ0„¼b=æ`‰EE‰"¼pŒa4ü>ÔŸ^î3áØ"lÙ4sRL1!£ŸÒ¹­ŸM£å³ï€DoD±Æ@ônòM«å:|dêMª§5ðô(t "ÚÒ¯ñ,Í ùÁ"è:Û ~|Ýz³Ú£ f˜KÌ…7—gŸ´Škæ¶D {Ϲ'§%ä¡¢ëûýcxjÙƒµÈüQi<QR†+1ÓÃaC¸xB âÚÆãy‘؆¡vX é½¢;›¿äǯXÞÇ0ϵ¼+„ó˜¨Z$¬"?Ø—®Ÿ÷ï·$uHfJ´¡ï™“ÆSÏŒÙå﹋íX8¥[D~^×91Bœ‡×›Qý(rÇR¢CvÐ.ßæ‹—pêk à!R&ãÖåÀ¤{´ñ(§¶¨Ã w:²ì¾Õ(ŒíUÑ{§,bhÝqâ^£ÿuA+ƒ§š]® rcÿ|ó"#º¥ ¥ŽÀ¯ð‰Ñ2ïãfßR6±ÏºAÂùÉ{ ·þƒÅ»óJšMdÐ’(£ÎRye­p~ƒs KZo¿ -Úb•8&¡êÿ8µ] è†EjWxÞq–‡¢—E²MŠH„Ò_ÇÖÓÿ¸b†W盉ÝÃe@X9yV(#º~Éì­ïZ%ªˆm„H8´îP² Á/Éñ›¡î ©Ïx¨Ë¿bŒâ…QÁ£DÔkºáÙu†”®²:Æt/© £b’æoÆZQr.H°R¥lºÌDåÍäûì@`»¸ëàl-+ʯ٠`ÃO†wˆ]èu˜ÎܘôdU¡í|›«ÈÜãKWaC`-‘N’[N´¦ú>SGKØ RÚc´±—g—áÓø ÷¦îYY\7 —L*ÛüÐ4SÁæ¥æÓÑ×{Ðó£S 0E<’¤•xzüæxL vVk¯p& O†üÐ8_¬¢ñ”ð)_diTJ—À_šù@z=ÓŒfŽ<ª­"k^¬E¿è«âøâaÈSÔ’(š›ä%䆌z« Y4…£õ;⣻ÜÚÆ>ü}z¬BFOPÃÐ{IËÐÔ',G¬@÷Õ$ø}†nåÉùŠŠì «äòeë^^Ф R¾ƒå/•WÀÏÔ¦S»âži  ‚9;RÆo„T$)’ø^¡ZãÎ!®¶o¸02Äßêì¨W³ö]– {x´îð|Ÿ¡ÅÌ4&Îu¿„J 4š{™ÿ´Åhêú‘”v2òm`‡D¢( ­ì€ÒTÎi f–HSCí§Ïóm]C£Vo]”‚ÿì¹åرdûE„‚ä+ìÐX4‘þC}ïahõø•_ì¶t£k6ru€î*)<ÙL1Ê ¥¨¹`{*_° îÏw-g#•]ß…âËp3ྖÖúÓc¦ û‡‡YÛi€ÕÊQ]Å@;¾i( ]1X˜´Õò²\1`õ¶w}WnÐL)eýõ§ßfñ^ísöÍŒb÷ð©WB´XEÊÿ¸½á¡BÀ¢ù‰‚„AFÃyÚŽýý#b—‹Ç*™ãUÒÚu¢ ¼©±C-{—‡/ñÏ5ݹŒG‚ûÎSd5º2°vç¯Ôû<’W_Û>ö®P•ëŽÞ‰«·¿8LBc ”ºnöÒKð„m}ïõ Êü˜&ùA‡0]¡ ¹ƒE½é& ™[^öè<·“È])G‡ áBVSáÀ -4 —RÿîµÝž«¶©‹Óit-GÔ£wïonyb¢–Ma”ó!ÖñÂÎhˆ'ôÅŸé0©·› ‹ó†šÍ·'¸µg \^aUp¹eâð‚ÑzUeŠ 5ÉvÝ̆âë‚´·ÁÝ#‚r= ¥¨’^[-QÙe Š¥:ë|¼Í ;Éb=ßoc¨MtvkÑŠ¢mûYúgüâ w"¯/¹ãªÎÚo ØI0fàr/Žï YzJ„5¿vXû¥_o™ƒàœ1ÓcêÉÀð2ýÛ R¸vÅx8ªÁtû¨Xfn·~Ô©!!b¶ç¾Å•¬a0ºåpåÁÐSnøžOŸŸ;Êþ…F=Lêžm¨St “- ²r…µà‡"ÏëˆÄaôÆ®3"{zÙ)ŠÁÜ'ˆ €Am!y·ARÎùZÇS±`³ëHK¿žÎó'š8¬ùŸJÃ[…òF¦iWZÛ׃3íH࢖ ÔàZ=§®ÍŽÍÆ w£?»ÔŠJåëÁÐ|ôXk,.¤i4»}eÔdÑíþÌV(ùe,'máê‹^פƒ,Ю:=EíìÚñ.?.n’Sà”º?ï:UÒös&xsa™0'É‘×ûe>FçŸr}?œö¾ù?YqKiþˆ3Í-JŸ‚Ø~øùD‹±ôMSì´ uáx‹¸s²‡„FzE…¹sY‹°öí!Ô…å Ò;Šé%áCiDÚ’ý°Ž¦Xôetþ›$ùì=2×j|U-´O¤+¸å²É¯lãç‚io&(oOïzüÄqLÔ%dçéh°°J%^ò6õ‹j{ ‡nÁÌ#ûPJ>–z¿/rBd½¢IË:”[°¤æÓ07Ø•k x]ÈzõÝnž©¿—žóNnnÖDñ™*u ÄéW‡q¡>«å§?ºQ—_ša„`9ÌòlšX’æ7U¬b…™Ã8 ä§·:Ù!Ñ7 ÅÁË@HpÆì”y+M†‚ï?î>\y:y ôÉí•«UÁÏçñ7-ž³i-èf½ˆ™¿TA`éåNj׮1iXŒ–N×Y­Á&,{{…m|ºŒëÿü€â =âÜnÉ<ÕŸ&|àøŽUÞ9Uþ‚7*íÚM'Cä wUûq"Q}ýóçtø”ç4¥àZíÕu>µ.Mž·Ë+‚Æ´·ä›Upgò-«"*ìÜ!÷A]5`QÅ™$=ó½é5f‡ªG­k»zFE}°Ð+TÕ4d€H7èÒûCj¬ðÈøz˜òÄŽe=Zžù|ù!8ŽÉ¼Â&R¢Œa>ðô–0Oë+”ÑŸáé2lø4c2ôx kù*{ŠcåÂÅ”A½Ø½«85“Ó£b,‹“’Šœ]8„gZ»CôÕâCèbr± º_E>mg‘¡¿ÑýÎBΧԴ¿í»a®·E¸s4zZé—;@º<àeòÍÞm*øÝ‹G‹c";XnÇø15/[ÏÝk~Eý3ì€Ouª€V%U{¥|yeí‚ð;»¼Ÿ Å &ý[eøBÄ ɇÂzøå82å«¢ ¼äΫ£ó[¡öUh5º´1²H'ˆVã’"¤F3LðD¾b¼ÑÅ„ƒ©òÉÓâ­X?vMìîÌûÞ/z€‰6H²*ÙnïÁúïÒ"›kc‹R ÁÕ÷e½±Èò~y¹Õ:o}"e£ -Û"¬Û.ž‰Ò?O—n‰=|—IöVÒò"çò¼nntêef¹:‰ BuGȲ1ÞÀZ)R‘K£ã´ð€kdC ø‡šÑ¶¶ºo,É•çåý¢Z@nÈ©c‚Œ-/?È–4ê(ÜШ„"c[WÞ K7Üx´ É䨲Óud|¥XõœÈŒ6g!ÝÝ>Dí®‰ˆØ_:E œ4éq“"~BJTÈèMªÃÒqI™_@Ü2Übé%PQãoóp Nš*@Eú«KsìÉÂVd|w; ËFöeE¼ ºäÄoÑ`»p““¹´D¿g ‘é+¦ÔäõÅ⇠kÓ¦”Š5öö‹MÃ3çs_u~¤áVŠU‚˜ÜÌíjVõ´W¬y-ðˆW±}nã#N÷'Ð7Û‹8Ô ÄZŸÌÞ`[d[oÙÅüªíåc°Í«ùàìác.¾ÖÔÌW´cÈ“»Å‚ˆ6‹\šùl3ÑõWK.fÃ9”n‰²!íÊXÜ %45@æã¶%o § 窌B à+À-h¬‚#lÏÅÄÉú›› öm€HBë°ä„‹ÑÜ|zKÞ¶Áfчàwy1cxñÀ"7…È*ˆ«M$ˆGŠo¥Ö¾ŸY“ïÞaÎÌ6F™~רÊÿ”`µYÖ9ò¾µã=æ[GjÂllŸƒ/õ'Ä6ÚHÃÅaözàÇ[$A@Œ/4b…µUº:Z­:VxqNa"=tgRJHÕãN™¥6×”( RíT3kÙ‚ Ñ[ à&·¢NÕoÅáø¬¯ïüÌ$ëymTØSIÈ%õGE­µ‚jIfŠ&H<”ãêBDŠ2lóCÒ$`Zö .Äî DR—žÚÈzcy öslºèUPiˆ´®]] —Px/ ÈMÓrÕ3ä0N7:Zݘ”îPŸ}(ñ¦yÒ|5ÕæÕØEŠºÆÈõ Õ£ùðÆš•GÅcËÍ r­cï5âF›ËGúD¥Òí¥µðÎäËUÉ+ºàÓ RÄZl/ú”}f:ÖGZ6öTOÀ1ñbrå^L¨Ð˜W÷¬Pœüì™_Ñ=êµ=KÌVð‹ŸWu4…Èj,ù$Ó7™ŽøÒ€pY œš1"}À7”®sjTפžï¬,Õ·’ÙZ•¾sC¢*{°ñîS‘º,Zëœw{º]ò;‘a¬4f)ìfi²R/Ã]x„ç*êo?ŒiŒr2g§ÊL /Z ç’èÆ„È{~³I†›bzxaäÇ~4{éÓ•l†ˆ8&øN^ »ÇÆWÐÄë$ûö› ‘Š 1Xgä4q¨ ™yÕÛ›©;þOPé0UT¥þqˆâ-Ùß ï:’ÔËÙŠŽ> Óÿ ’¥Tt¥ùº܉@-±CEqŒDX õ½¤ö"\/âZ"­¡mBQȈúÎO ?R‹S}*W;ô ê*Íä°ÎK9Æ€Ò»­Ø¹Y¶„ÂCw!ñ['„wìì•ÁC ã²wæóª]ë˺Ôk¡PA]ÿXŽ¡{Ûˆ†Ôkd2:¿ðc'ñÄÓbuËòÎcEG0ÖçŒlM»z×—P9¬‰·žýeöt‰a~îä) O+— ¼ÚÉø7×8½ÈŸN“”ä=5pדùÁ®”îaÞþûËËù‡4öØ5Yê`¼ YÊØG?¿—\¹83èO†Ûg鉷Í&Ï3è‚{ã7:vôõ°F®:u¾ÃÄFü’0€á+~ZfÓ¶æÎÀ=õ9Tì°´/VôŽ# ï">æ §¨¼5ýþf\7=Ü­®/Ç™¨ê4ß©‘cû[ÛÄ8U~úß„°…ðé¨-%l,ÝeÎÛ-ï·‡IJ!zãw–d†©ûs–ö!m^#Êp¾½q˜ë¾‹ed­²¤êýæöªÁ¤ ¡ÅÞ?™]Ã’Ý—Ö¯úÆíþ†ê•›ßycbªº¬è€t´yPYîSOêùe‹<=,ÄùU~DÁ§rX+:à–N{¤J=Ä#â?rè ‚pBÁ úçóŸ¶xã8 OƒÉm8ñNÁÝ4Gâ}woÏÆ8©`ýP‡rz‰¹ò@‹Ú.Y¬7ûdH1Ö‘ÈF9A¢±žÍu=¦Ž=_1Ä1¦Qü»"ýp>›H¸¶¾ôŠ¿-Ù ©Iõ0@¦ aÀdütÁ¤Ð¾ -¦´(¯6GfC¼ÕgmÐiÇÖ­uÀ\œ7ü¹5Ì—ša˜\,3†4µÍÅiÅw»³ÆTÉ!||}ƒñ–!·}¤\ð‹÷ógá'ð˜.‚åí„—œÇÂ+|„÷¯ÏôqšD ­eÇ¾ï šåÇ£±nè8Î.‚¯•Ñ´#¸}/–±3f|“dÚ']*ðSé¯lgÆÈÁD¡§ ]=ï–Û_xÌïšã?0ϯ Є«Å«wæòEmrлV9G 3Qh\7n-‘ž » fð&¼Þ©³Éê»Sß‹’•¼á $åu~B§¨òÝ4$#¶Ò°uDsÏ“kÓ¥¥þ.­MsÔ½3â0"iiÿZ$ ú"Ü}üñá¢È[¿çSlÄ!Ì)$WCê$©e©ó8WUSÙiƒ9àêÄ~œ¸ýqÄ7 ƨ@ŸT†åpWµ¨ÙnXpB7@W‘ri/N«iv< ?ëÓL@É{ýÌØ Ÿ‰ÛeGB'àx5¢ŠP™]'r?D¯£çºÂvĤÑ^‚MøÕùÊ1uÊ|$ ®>)>8ÆjàšŠõš½=êðS(9±9•—£å®†ßAARZKa÷È…/Üе”à4ŸuÈí€Ñ¥ñpâ_»åœ@^ðÙ¡~®³ßQùàZP?bå&A8ø)›XÄ„õX0ÇÕjLe‘iø*‰V¿c“ƒË¾–1ñY”N8sI·©VûÑù¡þ¸ýëH;‹ ©*@䶯ôuŒ6SÅvoˆçºü¼Xyu]W£ ®³B´ìæ©’YUe¹Ê?^N‚K ÆÔõ©Ÿëž©š|Ë„G·ô®£µ¯)ê3Ò!zG9âÐ7æ‹M0“r[÷VùäÏ3Ÿ}QÌÎwå¢lÒ>YF‹9«À+*¥ŸÚv Š¢°K'w¢…•d_ê ùVŽ[yPÙv·¸q±ß«p§&;4à?Ô V?R¼óåÄäeÐ$)ûüãÎTtº…·£EÔXfhój³žº(\3#ýÜå4¬ÿ°M ÷(©£Mf©Ø°ßâåGƒhálj¥£’ÌCpOÔP>HIâ貺b5Ùª—J¡{oßškÑ >‰)à{Û‹çð$ôœ Ž£0sA¡ÞÛE2£þ¾+K_ì¢*ÙÅøÃ‰f¾OÖÝþ.’Cƒ…Õ>–-9£ _úq¾²ß<œü´ö™äÊ–p»«ÇÝ<|ýS¨tÌûñœ!ŠXÞˆÞºò~ëTë=DÔEg½æ¼«ã`9•ÇÝÛtgiŸËŸ 0ÞÆUmß6w-¡aŽ:ß&Á¬Ø¸Í£Ë¹4ʦ@–xš¹] %À[§J3£ õÂbœÓ  Pî·QYëÕ/¼U±7b+Ò‘ô•¹7‰‚Á߃ñeÂ¥óÌ•Ž²Eï@ gc¢;\ÉÃOÙùºûÄ®uÈÃ.\³¡gÊP\p:)F Ò¬óT‚NáO5ýÆH&“軦ºƒò$tŽo…®åíüDY>Ö±¨å0äìártò¼oG%†¥±lé¿eTItHƒÞΪòž‰Û:*2ÞÒb’Zgû(iSH9H®¾OŽ=HNìþ4;\Àx+ù3Ú‹p ‹M1®`Q™wÞņ Î[ô„fñÖÀ­ì娼½‹€Ç ´‡fæq¸Ô¶u ¼wS³†)±ÔÁ¥sÓ_ u$FówsŠmÖyÁœ,,0•à5ñÈûqõb?"m9L…}•J‡—B„=¯‘š2Ð!³‰Ü¾Ó3YÏ ·¸þ6ð¹D/4ÓFÆKi|_Áð”Íù»bèóvq±ï<]F_dG¶9—Üú9_ß»šƒéFùo’8<³R<Ýäjβò¢Æ¤·ª’Ѹ®‘ý” /;vÙÃ>Akí_‹‘i^ŽšaM8Môi¬H4!°9¦ôxá)Q‹¼2%t Jñ$oɧTùðr6IÆ+ÜT_óê 3[*5RÃ ÞøÖËuÍŽÁ§T'@ê1ÍO‹%Ö ugЕ'$^äýõ~L™áÚé¾}\ cŒ¹ß†$ã,È’M4 ²ú†›×zñ´¼*õCNváã†iä—(.FzUã›ÆêáxAû‰h=ãš\»ÝpïQªÎ›d2¶Q¤B{½y_Â@ ÃçùÆ‚™oÌj2~ªØ¯P¹ 3ÆÜŘ_ßèM‚Q)¨™<.ºÈ¶ béÚùOY­¨ÙëRÏ+Ho\L„·x{(›Ê"á°„ŠdÂÿULw‹ºo¹Î6R޽ zÞ9È^©GÜsK'-wcV¯úÊû>>S¶÷£œ=‡ƒ‚d*]­évXMB­Ÿ<¨{€^`±;Òç˜<ÔÅö9’n†`¡€Àë XëÄbp}NÙ”càC ˜x+ü”÷PŽª¸#ÃI5U—«†öÝ ¨jãdÅ<Nµ–Åë&ØxDK«ö3äxÃgºYa‚ßz¤vÞ¨ÉtÏb·¢ŸRã†c;=oÏ:ËâÏÖè:ä¡GC&ž?´:¡×f%ˆ.:<‡•ãÑ©,~•7¦HþZ -@\9Å*Á˜µI?~iÕ|sO{¡gm®ì²Áîš+i:Mç¾t 5X­cÄ÷ ¯—U3T³¡ûâð ©hußI>ø†Cüv?ú1þƒœñ‡ Õ'Èð7 ó«9¬anv¥ßŸbÒð÷WV¬ðËÞT¦(öá³Óñ=Þ!šÇ`×R>åvõ¥9†§¦4sa’?âghHà ÜÃ;uŸ7×¶¯Õ›%–Ù’W6I;è«RòvgˆœLÜ`µn åèÁèðþü0«Ã­ FÃQÉj‰«ä5³NJŒô¾Ó˜)šÏãⓦþwó9½‘c“Uü¦ÓwôBëWÙ¡öp;ù‡—ïH*_“IsŠw{ýÒ 3¾Ü}Aä6/*÷'$à&«)’¥*RKÑãÒz¯?CV'p±H°o:)Љ&%l¬h\ç[üä.~Vz­X¶G¿[jUeOˆï†ñƒg¤æŠuìxÏÅÃÍõ­w!nýbØ-ZyhŽPøìƆ…Œ¯MÓnêo¦NoJ^Ä-ìÓ¦˜ƒåÛ-B#ýÚâÄä Á Ëü×Ê€.q%Ê•QjBñÐð°‚í¤q4ݳJÌhŒžaÆÔsìQ}Ç  ÿKÊHõnµ*ìSQƒ_4‰o7§à²ðhšØñ—e¾Ö¸%& C:Cm q|ERÃ`±ô ˆA^³þÜS“wYO5ÊÓI›óúE,» ·‚¶˜ýMëN~/3¥œÚX!°Fµâpùò"¡yv¹µ’§‡è§•$jŒ‚ûüéâåƒ >™Þ=ö2¿ÇgʬŸŸÈ†2!’RŽ´çãTT’ÞD\æòU°ópÖi©ß1CÒœÞЄ;ò}(äŠm¥U—©ÖÁ}ÔL¨Ø·^¼ ¾ “öRG)ñ+‚¸°ñ.QïüÁm¶‡ÿÄ BªÐ´ÑˆÖ dn±†j¸X¿n™{}¾«žw–ÝëÀ™É‰Ü&±ù¡s½ðCmÅ»Øj'¯]y·É”$”%ªºþ¥TSöK22CQ†êÊÊÑe¬{6‡¤;:™;t—|É\Èø¦¥àÛì/„ XŠ‘=ŸâÝØ‘—ñ'îM䀖¹ƒ¸e†×åÀؤ2ÑÆ˜‰¦ÚÏÊÆ•[Áx°.¿U,KéEâä4» k—µ¹n­ÒÖ'B‰™p½LÕ°>‡m*Ÿâá­Zî"ImqK¶bCó’¶ó‡*BÉQíH>öÛ(¾•íX»Ü˜úêߋƄ}l<ÖêáËÊ å•[ÁÖ}=££Ë6#Uœ±ôßa&ú,zõŠc®ÈïÇmPh8÷3bj&¦™1&nÙ=Îä$-þªf ËØõ{ï]üT*n‹eÓ~# Ežõ§.ókÚswuÈö#76w¨s¶¶ÙÉ뉲êuíšx`Üg*ä¡”5Ö*Ƶ?? ¢xÄuîœ`<œÀŸ ¯Ê-røˆ©¶¤?aõöq» +¢k‹¬¾ïOâ8¿ø¸\‘ñëŒÆIî«c½5¯niyubý#>{=FS@“D«ùm‹ÌAá½Ï÷C¯¶‘%ùvÇIQûµIdÃCßFÒáâÌ£ òR+ÕŸú5Öðž{`¬§êãÏ„Œ”ýCvÏ e¢4Š*Y( ŸS‚屑­E'k˜`ºóÍ2«õ H2„óÉdžªò¶;±ÐCÇ*ª/´Qvu›ÐâÐíT^D#áܰا®´ äJs8‰ö˜h—ýÙ5ÕPGH|ß±uõ·’ žiã”üaÆGÙ /yÙ6ÆÄ„QGóBù¯\ééép* õÞ á"ÚiøJ)kåÌΡè²)PÑЉ¸–Çp}Ú—t—./ •»1æï OêŠelWŒ”ä5ž ±ödˆ.ýŒ—’×$7š·DuàZs~µŠ©”-Æ‹æ¶ß¹¶ –ÏÕDy6Ûû!¥ëv“Óº¦eV>Øô§c²¸CùÊô“øoúèK°¬þi q´ÔÊ"è1*x“çã5…~£Ÿc). }`ÖÛŽg{%£ò2?[k»8EÊšÙÉ#ÕQ‹0!6‹³Á=vÞìÖÎÔX~O¡žð -öAB4`Á0è‹ö-¹ô>áRw}Ï[—ñßfëcˆ Ä·ìù晦(Ц‰†×4ã1%ù®!òIgbàFÖ©c—Xë{q+¢a¦M³çlÍ ´k½Ù'V:^fó''ôK"$—0¢õÍî #ox×ŸÚ 5º.²š]D.Õ+yJ¬ „×VSÄpB-‹7ev =URk-tÍ â–×s¬h£Û'NBj¦hŸîNüKÈÞŠhÓŠ¡Èˆ©°-†âÁ¨9àñMá@|EA„±Ö¶6ïC\²!T<ð[)×ôuV½¹H£–•“M2\1ª¼•¡ø:iêÈ¿ôc…-õ ·Y\h;ƒÃH³è1„´Ä^MNvsãšËöEàÑ\”ò“rgýäàŽxÖ¼Äí¤Ùçq±›«báíŠN ªM; ÷p^€ àÀ*Z¯4Ω•d…_”è% é.Ô‰šÒ¶#WúMmÕi¿C1ûçõF¼ÿèmf¥ß!ŠÌ×èlz¨&ˆØòºåV¨ª¡¬.o°Ý|Eyýž1:^/6ýØ} LWÛŽ“>Ë>3âT‘¼l—ûà¹ôº!‰ôϧŽîPÁ-©8y2ßU~13™Bµ(²ŽPåŠ{ÿh9üñ¥7C¤éŸ_s¼?()eä_tâÿ€ÁZ"Bö)®r ¦¨ÄQÉŠŽX,N ©‘»¤‡»;³ý4mÅ\–+Ÿ%íoÃ}sªQŸBH[óõ -È•?Å‚â-´Ý6Ä乄ÊLò¡€œZÛëO=ï$®iµåõÑí µT–¹Û&©¯î"ô¨……Ô*ÏMlïè»%1¼ý½¬RKû G;–à„x/çÚ{€´ò–óÚ¹|ñÑ= ±P=FŠÌNÑŒZüƒ/®ãV^™úßôu·.pO´E¿/²¼ZWjÊI»i\©¿ŽÝAת£#Éú‡0û oêG49·åp›Î^À—çY\@ŠøÜ…Ÿ3Ϋ %î¥ÐŒ‘£=tü© Khêg±´"ñBÏáûð«à¹ÁhwmœÀ”!Â…òNsÃp¬Po2…¡äë”X¶A~úâZpJ !„ü÷`U¬ioyï¿,>“ZEΗO®GfY…šösÆjŒc­œ¢IÉ‹ÕVôós?§Ù¤ÚGyTÒ²Cز1ÔkøšΗó=yݶí 0[Ó,ÔCÉé”’¯ù€·?”ò.ÑÉ5i™@¸[ö¬ó$žø÷õ]k»ûÞRìgž}\©4¼,ká˜!i#j­É?uîGIÁ58s=±5ÐÝ3 aŒK_ªÓ5Á¿ñåc„TµmwâÅÇŸ,?`¦^å)2h¶w†NOOs0¬Ë;Øu»ÈÙtÊŽ(ú8«jÐé¤}‡‘;FæI’²eDëϰ%e~KD¹FíÚ“PåßDÌàÇCôS!·—Ðo!±‹#îà˜o2òwƒnO¹³ðÁ ³WNýßÕ»É/­áSV(0…ïLyñKºØ1ÛeÒf‹,Ñ%› dV`º²ú‚Ä„è|{=3€ƒ±ð‰E=¼ ƒP­“µhÂdéq(¬VÇ#•?|a‰NçÐfÏɳûÒY­¤R,árX#ü§CœûÎÏiqÏv",ÕIòK}{4/ÝYžþ;kˆk¯ƒ»Ý'Æ<ôJ:V]^mó#þf2.¹JÚ=j<)%ÿ. ¬šrmXì\à¿Pb‹—sQZ¬=þU]Õ  ʳÁ‰ñìĈ•z¥à0 QŽÇÆoÎç|>GãÃók¨#Âhé!Ì#›ÛqlÓ’k c&xó“ØÎ}å9ÉZÒDàGŦðEî'Vu9§CÖÁ´MüÜŠCLŠ©Êµíã‹è±åÏP“¸¸q)Cþ¾´Ù»çé dÔÔo,h¨5¡(£•âTŠMù=õv=ºžü…ÈÜxÒlšõ>/nšyοx´wz|¶f+ˆrËHÝ=©·ƒzÕª]Ñ9TJŒÂá~¥NäZD»Âˆ/ÓPA"ÖXz-ÿôèÃ*WnóAŽÓä«þ„>s½¿+ßÙsÔÇMfÛ$¸6à?=Û“ºål¦~ Ñ•Ò`YîÒfaL¥p–úÓpÕ†ÊÖeøKñ€,É’ªvøw[qF <Óæ%Îü65ø_šåM³g`m˜ÁpLíAÆ*™w·sß¼ì`eí.=VŠ¿À(iÔ® ÑÉc€äu~¸ì±Ð—áû¥™_.óy ‰&[YÀШÎR©!Ó/$¥ŠYÝoæÈü`û]êL¿.%Ùøîõ}v€k  H¶s“pu°wqñbiÓÙÎr½ð!óÛ5bå›”øHbÔ:BЉ•.ßå>È8¾3¢5‚ï?&Λ…ùg<_Úõeig‘#J<Þ¡ë—4|ë€H¡­Žn^‚õ ñ§Z#sÜh:k‹ûœ>p+U$,W@ßG* ]S@P#sñ`ýfb!8â¨ß±D­ô[Ø yã“uhžL¢²·­¶ÀùA0¦,jEð‘W\Ðû¥•ÅaË‚T'¥µó謂5€g— :ÂCŸ@®–æ‚DúI“.Æ/í1ZY¿²£ÈÃaæá%Oùc–Jü+–þ‹½Ã4¼~u¬*‚ßöÏ^™iâ,e¬!ÆgQy®"d¤Ô~¼É7&Å€1Òq*éïZHÛFÆXé, ‚(¶³¹1ë·]ë}Y5‚o "&)2°ƒ*›fx\>Kd+×ÌwÉÓ¿ÏŠÅÆž8炳W£rI?ŧ³<Áù‰·ˆ°DgõpQeïQ8¾@Òäĉ:ýþû§ÖÈV•ÄTÌûxY_¾ÑF§) J¤³Á"èN§$Š´8ì¦ú¢:$ÊTÊ*Žæ´Yórn¢åN§AÚä­:åCê°×OŸs]-W­ÚøÂn|~U½Õ·-£IªF]Ûd&›ùq Žßî‚§ª !”.yØ ¹ý0}´,†yb²zQÛÈ^*ß2øèQ¸¦ñáEŒågù9i¸;1Bøí½]ƒä‘$WÈÊÎÞ¿N^ç¦J§­zó n¯=šDl¸” f÷døÖv\;\áÍ¥f9Ò1­#UÛ{׳ ®ZÑ…Ýw(/„3z ºÖãƒÏž©y~Ó¿šD9%ùù[f÷ &Éû¹íl@™­ÛEÜTwº áÿ} ÿû·6ÿ0Òò˜^åOWŠrÏ+0=¬'°cp1P€ŠúyÁr%R¡.¯Ó„¶˜»š ¥u!pÍT ÊÎå!/pƒ‡jˆ-P áS²ëOÖÐ;ßéúÝ•ÄêÌ ûU6ONnÊ­¥r»Ì[v¿¶aa³.Êa^Õ­æ¼j6þ)&TS×0ô‹]¾†ÏK¢4IS_‰›€nbÕ’üá¬ü¿õzÐ;uÕ^þV}ÿ¥3ÇêUê ï“z4ƒ$Mtã‡|RD&pÀö’ò¹¨6ª1>#Â$Õä‚QÆ%‡Z§Õá?J]©:Þ`!á9›Üf, +ŸÕlñYöK*w¸sÂð$@]#õ©C Éx *ØÇ¸¶!øÍáñtÁ#°‰½Å"0Í"Ó¯ŸÏÌ'N_ÿŽò)bmáö¥éÕ©ÓxØ.@´ YËÑ{2àtõ£Íp9âî=+ã,Ì}ßñ޲%>²_¿ÓŸ×b[Eç]éƒ0ÊUM#êvΛ³vh‚_vTü2Bfâ\}ãš0DHÑÀÙ|ðˆŠVóE#.E<*h³·ô¿J©Œí¾ÁÜÞ(€.*76G¤_ À°€•¼ìÑ~.×ÀC¾Ú¯¤S;ßvë5Xƒy½ åkLÅ(è Åtó yÚ ð±¨äo¹æKúý‚^’³Ë‘ÏÝ+­py ðÁ+ØÀìÝ! pw÷¸„3xâA€ºñ"6$ÃT4\DLéDŒ×Ð2\AVtòuH×îŠ÷e’ZÀ® ±h‰×.꓃[ܹÝÄNzUJÀkú׃Ë3N{(í<î‘? BÜ£àÝWÃ?·q\7[ÕõeÈæ¼œ„)K–ôÅVß·³÷ʉ&I‘ Öeäœ01Â}ð@|ô7„ƒ#‚#Ùí?ÚDnYÇÑ¢¤Cô.c&m)ë¦-çJrŠ3.ÌYä„F†»lI‡¦óÓO[Hû ß5Ñ£K*ꉱž`G–naŠ02Ø.®í?¤äV¯•ä<ƒŒD¦r„ZÔK¦áâÏЀSêãj´Ê“ˆ”¸N×f/G¦FMøYVOŒŽÑf$Éà_°#¦äJì®åª'*ÃDĈÜ4†ºvð:?ÖdLæxê|‰ëÔÚ|Ì3•ŒÒ[v`‚´@=ü õ”´§6.¹I'‘SeÂÈâÚ ÎF»^´[*‰·)IÒ*@:œí¿ pÔÎ^m¡´ñ§.e=ïÆ „BßÿñÏ!v&8›Óã’Ïå™Õr—€ÕÒÍÌ‘'%ù ô™ÐfæuãßINyŸž¯j ÐÊe%]nGЂ4vøáݽô ˃k_àoÅ,}P¡ŒV¦‹E·4ÝjÞ°¶úü‡v[¼ìVóhß,÷sÄÀ8ÃŽàkïE¾YrGt‘t™ô•ÿÀe]çÌÙ½è Ñèì¿GîÆR=÷¤»ì¸Ò†Pk,•ïâî¤ öq.ÃL´âåUߢ#<@ï¸ÊÞÒ”Jìuêþ‡±p¸á‹/¬ÇƒïÅea¾:=vLƒR£É=ä¹yàZ´UÅ®B·ˆ¹þ#‹‰`ºñܦnq.ŠzkÜûó˜Kõ¸1àm–ÑJÄýʃ.44*Ëœ Q*| ½s ··ö %]‚ï­Ô ÀãOj(|0Þ=p“6ʇå<¡“ÒœmV}ÁºJ²ÓsÇ$RvŒêlþ©:VÅ1×›œx£« íZ¬š;m…#$wÇ{¸ÓW…MkámE@D·§Åbly¤#¡wáqš×Å â…‡56ñU¸¯ÓÂ|³°ò†g%ÿ›Û=-ÉT„®A£ùäz8UÐîXïˆl¤€@Q5]“ÀVÍ5¢ó#5iØÕ5gÍÌ(öÂÖчE ?cÔª{©ÅÕ"òñJ]¯‹À±´~ÚB¥c j\ßÐŘc|TÛOíBÓZG2érgXcÚØøÔØD£µz“Õ¿7蓸jVͧ)†¨Îöyu¾®ÀtWWyÕþa@`=œèî”­ÆŠ il±iaI@åF¿ ÌPiò\‰¿q&aËè©‚{?9ÞM*‚ÿfH~9’4Ÿ#a;ïg.iÄNÒœgçTýdW­h>!u!ç¹4=~k%:‚bŸùY.róƒ(ÿK„|\›Ò‰îjúivÃlj°R+µúªÂ÷°‘:Óƒ‚³}¥C¾þk•mó“s72ǘÓÑãog”bìK 쨸d“xÀÐ/ôDÓ©;\c*³iFÒÓ/0þ†~.á—Sj1y .ŽÍ•¾»k_¨§{í}4šOÞ•5ìˆÖÈTäÆÎÑAød)Žü®vEÃWJ0‡6pïûÊÆ›š ûs"Œöê/…IÆ…w Ô1”ô²7ŠMÈáÖêwdÁ© ö»-GÞ‹r×3ˆ Ø·Ãéû?2Á7àk\#Ù@­ilyo¿‰¡¢£^Ÿ)ˆÓÙ˜Gg^OÅÆ›Æ†…m ¿ñ@£´E€i@h³ %ŽDF¸ÞÕ`ÄçÕR¦ø»² fœ¼ñI¬„¢•OmhÑ#>V x…®1Þx¦ãdLcuhc)Ûçïš{™¯¡Ô‡LL^pLÀŽ¿x&,ŽuøLnâ…š^ž4Ÿr§Šç£²˜T Ε PHµNÄ#%d´»d2.Ÿë.d\Ô5Ç·l f\}­-%!èy,OѵTm2޹͚q/¬|K\^ „;“î¿2ø¬óD=é.êõn%‚’0„£aÉbÔŒ æ®ÐìV¥u%mŠ |Íd¡—ƒ~XhJ؃YÜáܱ PG¾Ê±Ù&HÖËyVf Ür—’*@„Y‘Nôm š/ŒU°ô=ª×ƒÅÔûy]ÇrÉ.¶÷Iýp¹)Õ§lZÔ¦zÝ@EÝ ïèælu¹TàΞ©ž$ïø8/á83¨ŒÌc3N{þ•¯©Wb.ŸïöKv\Œ5‹[|š Î”šád_Åü^Å!hXSRì-‚±'ìñ—³ž¾– ²Éˆ_¨«MgÅÔU!Ô¾„Ò6&·<µï¤k€÷µ`oHZíh¶( ?G{!Í1É ¼ä*ôZ›ÙµÇ¥ÌsZLÆä¤`ŸDñÎa–/žS2ªš=þ×0C|oqõ!M®TF,d{Y0>ÏâÜÆtfƒÝ_y@'~e%e7ð 6p³æ~ÄFâ½AŽâ¼ —+k9ºH‡öî¥R“ßÙ†kóhCO…9ÞCÝeLû“’*±©ãu@IA€x.¸¨¹e2‹µ!RódÁ }-ÓZíµIÀ¾„Y“3hï~›u•qaõ®hør°'Ú’-o Ë7x­¿ß¢‚+Ñ”nfÐÌS»,¨gXªq^M“ç/Ywõ: óo?%íÆöôÀAgÁqX~Ó¾ o*¨ œ@H'…B1´”E“Ïh䦿nZø-YÀˆH–Ô< åÜ’éU Gâ.k:ÂÙÿŽJÃóöŸ}îÙ©°¨®Ôª°bŽÕ ’œ¹@4?‹QCøÎAæ„os=YÕSÀdm³¡Ÿ{“´Í_2¦9¼)q'Ξta=f/I8ËÍ£)FƒÖ¿š¼E·Jú¯TÞ7|W\Õ)û¨<ø£˜`6cF¯gº]%Ö`UïýA¾*F55mEÂ:©ñ˜É}Ôïµ7%”V´Äj5ʌЄÝwp/s¥F7‚ÓD¦ï®Ñ¶øØ$—&ªSI8ØÅ)–uÿÝ—€$oÙQŒÏ—pH-x:{_ñâ;ØÒ")C4¥b6˜þ*¯5N¬ä¨Øéž‡_%]í¹¹ï<9Óé\î«J‡«LíJ„‰ÛaQíq¼²ß>PŠ@ó‹ð<îó™ÇÈŒçœY2ù¬#ƢÈÀ,·JJ¨ã6u^,í­H¤†B¤ŒÏ»4†Æí·d§>¤±Öâ¶ö2y"\~¾»ù¼u.ØÛŒEeöÎëÅ=Ù3­ õ¦‡° ~\8þ¹cD°«½ñ$‰RîËbÌðÖ"Þ†!yÿÁRDSvIÞ~ß²ÕQûÄŒž¯oé$ïsÈ…ÅÕöÄýÊ-•m3§N°^G‡,;n½»êCmÃ:´MÆšˆî)ŽßøƒJœG˧45Î,ÐOc¹6ñ•®~oM Ê†Š¬¼x"ΫջÚî³á ¾—÷ëÞ6/‚„šÌÄÈà¼cï3øa”$Ü}{šü>¼¯c–¿u÷S•"p4ö.>eú½Å»ûì,ñF]Ix]rGv´,ðuMI¯£„ÅÜ}o//M+†êUzó²-Tôåv¯Öû\p*° ½u¥­H\%N!M_o›x2ºsæ´þ0\ã"Jì‘~¬ºáѽqª×üÝýŒ0ÑŠÉ»%Y»´míÕÚ àá÷Ew8ÞzùŸQÞOÀ†»!«r÷J¸¢ÍвÉ…ÄdkÏ[Ì•žj‡¦Îm¬ø–éÔ§šÒDZ !°!K¶:¿*ÕìX¤*ùWÿûX¹"(mx?<—ÿÙˆ]8Fà¤èm‹¯•­{ÿLª`¨4 ‰¬gñ±l#$eR@‡²ºÑ‚Y˜VêV 6ëj¥sf1ªf`êyi‘«Ÿ’JF!½±=2œp«ó5öó®Ú¦ñ(œáӨͥ0ЦÒþÃxé*·à4<¬FÈ”yÎߣ\#0±jÑp6ÝŠ‰>ÊþÒƒ1ZÉä·=<õº†¿t CñéXÜbUÂ[%¢¸owUl&Ω}± 4;¸ èrh fÖÉü.Ý~^U*°ÐV_âÝÔë ,s›ù¡•×ã›7å/ªã#0'â¡R÷•ÞU<“0õçÉÕ{ä´ŠŒ`còÅ›ÂøAÿÛˆ]R—%¬ësP×ý¡ÕăÓ6Üâm-ú§Óõ`-`?¾Ë§ô÷ØNYÝrMzZú/†Ç ŠXkjŸјˆ£Q¡¡ƒñ^–¨+œd¿T·Ú$+O6ÌŸCo.³þ݉ètÐeÆPŽÖ)]ZËÚŽg(•I4b² ÒùtG,pHè4§-gòǽ}‰,ª Ñj,– K+·#ÂÀHú—0扌}AíôԻѧ8‡Žômy¸"ÚÍõPøówŠÁ‹:R²ì…ûÊ»¶ŒŽðtût|‘‚ÔµSjWÿ8¦U>Í'³(ê„-åØWvøªöõ4 ùÿ¤íGF¶*1„«Ãê ±Ô: Àup¾bª÷ºAÀþ–³Ãíaæ'Ûÿ±Pš…Q¾“·ÒÌ9ˆìô-¢Ÿ…?÷m%Àìr“”ZðÅ`3–Cºˆs:©,Û±vܬˆ½®Á irïì#¥ % ÷XsÔª Zj² Ä9êú™E‰û°ŒÐ½dȘ1^m‹jQgeê¡Ýˆ"ך8|I/•ŸÔ’€`§6u ݒΊW’Ê8¡%x¹Üã!øó¤‰ì€ +}éWÄX³šZý‡dVŠ YüøvkÏ‚ƒæ)º¤L&VÞmë…dC/›dϵ;÷!.)3}& : öX¬¬{Õwç(÷Keÿèʳ¾ctÔcökÉv)»µh˜ù7Yºh¸µ9¿ž«ìgíò Ùoræ¨éYü<´¶}Ö¨­G‡ÌÌ”n¼^:Åt?³?½oFèft»w6ºšeGü™ ‚1›Û&Û%SjóÉA½Õ@ \²¼ðF1­Ç°Vüýðð¬4ÄäKããÇ ¹ÏÊìÓXñ²þ»Q™Þq;V–äÙ'Q1VÒé°Q÷Šô¸¸)dc_s$s™:–±È[üøn÷ç\*ÐpRÄJ‰§9õ(Á|…=nBH³.ê8m³S‚iìÛa} Ÿ–®4Ìe©_*ßøÖV³o®Ü £¥iõ‹hÏR‡A³¾÷8°­SƒÚتœÉKùÆæ Í„N3gÞM¸ÁÇ"ü_™¢pO.X²†Ï8Çq•þÉæUp­Û—}÷ÏÕŠky¿\tœ=q}dužbŒñ ¬Ï.Úк=|É؆Yß9îØ¼Sÿ{Ó6ÕÆ®2@ÄÈKlËlTß.ha'ù¼n-µ')>¶´ñÈEõžx´«¥ýÚ~ŽÔ DA6*ŒÅÙR¿¸Ãy„ÀL¥r‰L@>>FŠjnÜ(ØÖ°¼Òâw~Nî'HäfE;—7ó8ïHe3f¢\]r›gR<žKGyÊ—‚R3®R}ô­wÈ*K àG|BoSWØJÃlÓ´Æ´œàD BøËyK’ÖГD° °?Òg{ù¿(šcþ¿‰¹³ÖTB„d’DÄ7‹+nb‚ó}ûk®XS¢`Œ5x7`O´{BUÅZÎ?VÒšÈBT+¥÷bĪ/þ`¢ÖÉFÏ86y&Ù~#ü=´™a[L„żEjEcMO%\k ËöRÿŒ†²èhET5›%u:åo°±ý6ÍùêÅÂæ'êŸ{è:ÏÉ/Y? :ÈZuÛÿCœä‹s„=þ~fÙ>NL~ê¾,Ò—[äû½Óº‘§ÛlN^»U«ÅùkàS‡@ÊðçÓ_¦Ü%Ÿôô5¬’õ'µÃ`Øs‘c„¸Š–yÏ[“<Û ‘êúeÔ9íÏ ïÀŠi‡ú°åÉ«tæB>¢‚ ì©–å i[·ÊKXÔ÷|Öñ^£… ÈÚ#zÝG‚Zqé%§m–Î’¬ѪqRËKõ«9$*G÷HLÂèp¯^î§¡JÒîH•„×ð´cù¦j^8((1-ž<ó†ZbÒ"xŽ¢WO[eIÿEz¢ÔV÷@ âßû>Ë7—zX¡Ÿî›Ÿ»JJ%öˆ¨^UÑÒ:AaéžhÞ=ÌͰïH>-cÓ¬Ú¼gÆ/q‡®gJ¿óX¹MÒsRÃ'| ß]]5îIð‹»×Uå].ÀSÀkc÷786V‘¬G2¾Ë›ÿhi9V泞~é¡?n¦\Q;Uë:.ÕåÆtK^xi·Í`á_‚³/êHƒÐú}`æþ9ä CÚiŽŠ½Ì'yTØ*{êh[ %jÒ1(p—ýxF6§äO#Ö\±3Ì«®à;ü®ŸÙÄèÉH]±âá›Ø©;Œ‰€ÿBÍnéî¡ËÍJ ÝýKQ(í%ý±ÜPZ©8,[JTÆCÐy‡:VÂðóéRsM¹Á­~xñ¨Æf—í -?žÉ@Û$ 7oXçï­‰ê;­†#öeÔvÀ6œ¢*f H¾UóQ‰ÄæFj¸„ü‡3SÏ%«Ìr:N½3`âë™%Å~7‡PrïA$zg‘[âB#¾E?Å〸äÏwéæ§y÷')¢F éÁíAˆ(“Ìž¡íæ®;ïîíô3‡ #Ãn5xó¯`Fy'Šƒ §_x½ý‹¢%ƒ¿`šdk¨æ• wI}O8šÉÑ-øŠê7 < ?àš3½O^9?>ûEùL—{ébƒR²e9¤åwîáê°«ú6h‹à„8±1mäaþñ0M>»”âØÈ¢ÿbR§°Ä±±ÅÖ-O¸yÁÏ —íj¾SÌD ÐteݸEëµK7 §ÄäMUª¸ú†5lAT·êÀsê0©°ø¶À,ßé6Oíê%ÆS3RgSß–€ïEä«Ä<Îå ŒÇ(N‡=n.ó,8+‘ÔYX[tËòpÖÿ‡|T2´g;5?ëßàã°U¯ËÅBÖçA[ÜÁ]ÔÞÛ‡¦ô…h1ZH¶D²ö«®,@ˇ,ÝT]¢ÙzØr@fïZ³z°<Ë EE÷S­’èýBÎ"™é°ù°ÙY- 8¼€üs?½ÝEògx ÑCtŒ„<¬¸zp ¿:ÄDÇåß¾bîâÁuåjÄP—ƒúÞOLHZÝÒOE:Ïfpòî€w]_˜ŒÍþìB‡_nmH,ˆ„¸^I﫷敪ÛO¿«æ_Dž‡'(]ÙxI»sº-+S¸7êð¬‰ïÿÞwÁw¢7$ÇÆ·n_½AB‚åÕØpžõr€D ¸A%³f=êZÚ,h¤ù)sb÷ZùÄ/÷Üw© ¿²89¶üdž;c‘£¥þ!©Êj}U3·êñ¦:å¹ÌM­Î©„*I(6¯d_ÓÄ…­‘ËÏ/N= ±‡¿uª@«¾x7ì‡ãbn¿^‚l;“|<œ‘Ù!¹¾¶;Wt²%ˆ]Zå‹àlÏ©°}{.ulgòÀ5«‚É:õ«&Ó6âah?Žzæâù¯ ±~$ÿL=ýBxv],9r”ó´.™IA[àuY¡q¦hOŸ¾}ø›{q?áGÍl¨¤zò6·Ê¢xüí31Èð–qé3ïQ{Ðýk! #%+Š…œéƧ¡›è~FÉù³ƒÑ@꘸ušiÀÉž¼ã×YúXü¥2ÏCj˜o@—Ô4^0fWf652|Í0Ä ¤ú@<¿ÂóÎÛ£å¯už¬ñ?&žOØé£zûbKÚ)s(|Ê­ùVÃn>Õé”+ O«™ÍB¢ø$Wäy²å‰ެEÀ µÇ­<Ý6¬©C‘«C0³}Î_xëeâ×ö7 ?±Ê<ÚÞ|r{”/zíù•h‰?ô ‚¿¶Y,”õ•Fp‚æu§Ú Õ©öl@ß+¸/so<¿ÿ¨øe¹KøÄ‘“š)û‡¥Æ† š*O"&lðì°L7Ü(z~‡Y RÖ-*“FÁut' çJ}· endstream endobj 854 0 obj << /Length1 1472 /Length2 7171 /Length3 0 /Length 8169 /Filter /FlateDecode >> stream xÚvPZ×-‚RB¤#‘"$tÞ{—&-„¡$@B Ei‚tAzEºtiR¤(UŠR•"?êýîýï÷ÞÌ{“™äìµËÙ뜵τ떱 ¢Ê®†Bb!B`i ²®‘ ƒ…\\&Œü à2…{¡(¤ôÿò+{Á¡¦ÅàÂtQH –·"„ˆKC$¤Á` 0,õŸ@”—4Pêƒpê µPH8À¥Œòð÷B89cp»üg äñ!RR¿ÓŠîp/ ŠêB1ÎpwÜŽ0¨ÐCÀ1þÿ*Á#ãŒÁxHƒ@¾¾¾BPw´ÊËIŽWè‹À8àh¸—Üø‹.PêÿMLÀ4qF ÿÀÆ(GŒ/Ô Än‰Æ%x#à^@ÜÞ@cM ¾ù'XçO€ð¯£B„ —û+ûW!òw2C¹{@‘þ¤Ðáê«éaü0@(ÒáW Ô ÂåC} 7¨=.àwãP š¢!Šã÷;4Ì áA ¡n¿‚~•Á²*ÒAåîGbЀ_ý© ¼à0Ü©ûƒ~_«+å‹ÄþY;"Ž¿(8x{€î"žÞpM•¿"pàÌ ŽŠÁ` )0î „ûÁœA¿Š›ø{À;!¿`\ÿAX”ÐG„p„ã~X4ÔÄxyðÿÛño 0 Ðî„@þ©ŽƒáŽlÜÍ{!ü€÷À8áA€à_Ÿ¿WÖ8m9 nþÿ„ÿ¾\ºº–†© ÿo»””P~@¬ °PPX „@„…¸Eп«@uþ'WéˆJýiwJÿiØç¯Ûçùk0xÿ®¥‡Â)äùGàV`10 ÷ùÿ–ùï”ÿ›ºUùü¿ûQóvsûíåùåþ?¼Pw„›ÿ_~œ^½18íë¢p€üïP3øŸqÕ…; ¼ÝÿÛ«‰âf@éäö÷!"Ðj?¸ƒsþ#•?øÝ_æ†@ Phį(ƒÿˇ›*˜+îÑ@ãôøÛÇ Í¿·TEÂP¿¦KXLõò‚úpWŒ³Ä€Xn à~¿  !Q\ G/èˆòüºOq1 HñôÇ’‚”ÿ¶pAèþˆAŽœÀÿˆJA¸WíŸ\94Ü÷Zü@€ Œ³üÅ€qˆ/ê·ý/.0o//Ü$ÿÖŽèìßÏ'Q°;\^=xsT­Èì+¸2$;Ƶb–Î+ˆöjñ>¡ Já}‘6ïu¨˜ÒßIõiY•ç@a†í»Ñøš(²)ɰù4ðÌ6Ñht¥05B÷v¸pC±¦‡•„EÐDa5ðÜ3Ð4Ô• ñJ›W®§·$…A>Í‘o·º_MOùìûˆÉÃÕâÚ¤gåãîÆZ…–ŒsåÙ?›``'IJó]ßõ£?8»ž3|ɦ•ÈÚŒ)ÂZ.ÇO|®4F·3r2Z2°\?z«´žªEÿ[Z4W0nå]-ò©ÏZ=xr‰DBÆ‘(ùR¾àÖªÓâÏÍ6Ò†¤€zTÕLjáê¹@Åý*|±Õµ3ðANß}ªmì$kùõºWìmg…ÊG¯3n,‰G‡hqÜb’•=àNfÛõz4ãÃ&7æ¾Ï˜Zu+DÎfH®F¡û:¸Çä~“™/ñˆ'›ý¢¬# "F#GÖSpFâ$ eSQû™ñªÀî°u˜M> `žžé3ÉZþ(Wç²1|}ßõ–Ož›ø$»®·’VmåC2Þ_ôGÁn²'!勇&Ì¢’x³“R'±Ñ´3 ±“Ĺv¥®Æ¤ØmÅY>¯Oîí?6¾NNšÊ7(ŸRKxHô%yÅ¬Ç Õš¸x>Áô®ê•}BÒŽ>j­6¤Dœ<èoåUËK<¦ñixwø4Ä€Ìt{¥”n*¡ÝášØ`ç²3±ûÅ®=³¶Cµâ./Šxû[­Ù.©‹’žã£ŽÙö†pƒ~“Ø)¦âP[ίTÏÉû½Uh#¦Dâ ‰Ó”-ý½EÉÖ³Ký:Š›çGõŽe.rb!SÌ–òÌ]S$èÇ43帘ÏÖƒÆî¦¸gWL2.yË‚opjr ]z.<1Ðä¨Ô½ž4¼nêç:DÑé׳©0÷f|6‹Ær^KÜ9dçùÒŒ¬³âLõüÐ{Biª6Ž”ý¤OÓ-ÞjuζO™·u¥3¯‡œÔ¿~ífðB)ÛÔïˆ';Tç‰ùöYý)7¶ ò±]ÁaH%ØßÜ«5E¥Jß2¡Tµ_h8á“ìF—Mi HØ´½ž·¡•éÙ·=½_xæw·Üw𛉮]g1Š3ØÍE×›è¸ïƒ®~1¤‰×yòŽ%Œ<@{J—Õý%Û`ÑË¢¬Ý³)~›¯ “>Š5o(Õ u?¶r–Í-ózM?Eüþ=³×9…D}'r~3Êåmb£WÓ÷wnùæÙ|M";¦ê.šòIæ!Ø,ƒw~3Ö\@,2Š^ÞL“W©ñ„{v¤vR?‹«`!®ÌË-%öSÝÚr|J£KÈçA½Y¬J³çcùõ„NÎkCz䆣¢¸esCë{5µNYºŽÖï#•ÙÑȰê\á0 VäDVõlÆ¥j_ô`ÜRï0ïÅv0Ÿoh“üÅ•}ºÂõmŽÔ×¹W¥Ê™îì^_U¼ÆûÔÀŸ‚T"*è“M­»7³ÚvÖT¯ðIL^reµ_°»x'¡Œ©¶ÛP€écÿŸU…ìªE’”êTGy«=_ºë»[•¢\Z(ÖÞÄt§Û%XÙP2]>=å/²Îæ„ö˜s(»$Ϩ)ÂùRœŒö§åu‡FRÒw((s>n°h¬:}t<£ìâ—-§öß¹ Ŭ ¼Ï²NùzAšq7huš§K²wBý³µ_AŸ˜Ô«§uAè>ÑiîQ0û»6à C µ­uö(<›o’b5ë8ÄÂd;´›X,~»Ý\iÇk9úåPʑܗ J6ÑÛÄê=ò^EV♥}:¼pßÎb†ÄO]éJü^ãJ °µÙì\‘‡>€Ì´…[¯+¥ÁXoFÀÍ®üÅ›D³.AXO3%¼2îgŸyÎi,Šðúœ‘àI³n£õÇÆ‹òxÞ×ñfºÉÎñ7Ó,{تëR¢#‘¯—'ÞÉN·4Ìäö¦ón$akÑ/d×Ý­ÂBÃRÚ¼©ÝlÔõúئN7xXÒÐä~W›OÄo$M³¼¼j¢Ê}ïq7AyqøŠü—• d›bn#6+»:ƒM 9…ÍT=ŒÚš4òs×elr_å¡Åó¥ÉltëS•´åÌ®.Z©âÅ0Öx.×ñ_Ïgxœo b¶ü?“0Í£¶(åŽW°%PÛ´õƇíå€{*B©Û˜QMêtÕ±–í+¤ÑÖ¡qŽ='k¦ßª&’*æ\$L¡¶Ðþö½vA,ÇÖØýj ³`èÉ À¡ô‹½~Úì½ï¼ÔÛÏß+šãϨn4'w_–ü¼ë”#ãZëY‚§ÃØU£T±:ùŽÏ¥r¬‰Ú™bR3–›ŒóZ«ÂŒ´»PÈ3«Üà ¨b&·rüºâ­»™ÖB¡³²ûÔ99ÎÇÏÚ?YŒlkÝkû(µ¾-öŽ•äŽ˜wðöÊ=i6~uåéýWjüìzT€‘1¦û‘–éîŒiŠãáÀÍÃá÷Y~ÙêrÓn B³\ƒ‘‘§ø¹î`öæ¢Ö»ku[ûgï¤cZ^¨½k òš¨óo´Î-xÍà8SÛ22Áu£/ü(€íࡺî‚að¸l¼ÁÀŽÊ°Þ—}j^‹·ZˇdŒQ¶°9ÃgÒÛóx.I_—Kç¥'N€CÙ¹ÑTëVbÒRæwG.1øF™óNÖ;øfžµY;– ¥‰ËÍ!O;cc¹ÊÏÖwüÙ³£‰7^¹pð÷.õöYeLb““ïû§¬•§X´Pê3ÍúªÂŸx›žî_žiZ[:T®ekkQ­«¦Zœ U;n¶DÐÇ’ò}+ejÍô÷Ý¥;§¢&ÓΡ¾õ#‚\µ¾!rDàés5MH­Ê–Õ\15O-è𑘙’¿ >UP¬™Üø˜p€~ŠçêÕ’’ûžÕá±ÌìÙÀ‡^šýÁýŸØ8KäЫDs[„×ÀÕ ¥ÇM}¥b'eëTõXÍ–ø)|9š÷þ×ÖÂ^¡F”_Þ gS–mW:–ß.xÓÁnE] èp²í®;ýé)¤D¢Þ§™ˆßAÈ›ÇØ¿ ÿ¼„ù Ïn¿ `ÀŸ¹¬×†oÜNÒq° ÚŽ0ÛˤÚ-‰Ún¶áä+a­¡P™ܱ”¯Ùz ñ Þ ²{å9¹ŠŒÁ2dÀÅú8z4@«•æ(%÷3á·'r¬ßiU˜rä l/w0#¨¼Á=혔nXyÌA=+ÞÁÉ'–ùÈÜGî ´Æ„r´‚Ïb§8ãÉîÜZºg!X™É”b·¨UP@Õ !œYvß÷˜N~Vãð¡ùœ“ö…×Èœ’ƒµ¡ø8_ª úÝ<šý‡ý¥/6†¡¢÷oÑ…˜;óml®aÌx"¦ñåX˜ù£É 2x[h«"ø m€9%°Ü¶ç&Í.Ã|BÃ…ë0ÏsµKwrY’/ûŒÅOä˜]È /ø«ˆ±ÒTå­Á´ƒè9É7$üCËŸ#ÈSSé Ó_U$ûéTΚ«ö8V^̶£TOu Àc`2dùûGªV¡ÝÓU§üS¬©ïlI› „uG“3 TPJO²dss‘œÂö7L»2[ÍØöwjiv½wŸÚl6Z¿–æˆxÞ¹[ ð“ ]©7V¥k«.HÑÏžÙ¹ûNZõÜ“¬†ÊÌŠòâÝï+l9ž1øÅôôóxï027œ¯,×vö. ø¼xD©jÖ³Úd)F+Ët וyœF”±Û3™E{TÀq£ÙÙøº‘bͦœp÷a8±þ„¼%»çå¨Ê7ýˆÈo×QÛ ¶ÙÞlŽ22¼";½¶¨°^QU³­òJå´’Ì’l…Ó†¶>tm¹µu+r<‰ÇNkàùGF)¡È^£‚R‘ Qñw7dšNÍO»Çãaºò0†ç“ÁƒåÞÍ1Z/]|U† R»}Ú6f:—Wxj?´¹j¬KzõܧßTÅÒõÚ?¬ø:º|‹†¬åAÄ©ËÉXÿÁþûµ:ïT’ºÓ%S”I£m…*gDIpôºŽ¥òF¨ý7Šª¡Ç ¼%Þð‚õÏ Dë|2ùTî„=AÌ„—7ƒ¢ÉÜ·|]¡¨Ü?J±–¨K[F®?Ü€ßä°{~¥k× ¹ð剺r #¬gA3Ψ“Ç‘úÊk2¥üRÊW9~" m"feKÚ‡\åÉhZ^Ã?çüv/5ôéUŒ>:?Ð9ÅŽœ¥^*+“¨ |;T˜­OxÚÛå&¸ÄåGASk¶à½öV¿Ý$-75Jš;(Xe컈¶—]BÆÓ5”Ââ²¢¡€U/ ϺzVšNGæ9S"wáÅÙ†â.Oˆ¼©¶£oÕ’'cî¯Xèp¨~»ð ˜å›ˆ¸L],«“íé˜ô=‰E÷t- ¦²FùCÚGªç>;Ê ðŠú”8”²%̵u¨ÆN§mîÞÛÚmµ›,ˆLø´ÅÞ Ç¦n23³gl ÆNÃæ64\Ó¿ÏÊ‚UÈQöX<ÎÛh>ÛøãõÐ#çY«Ït;œôî·-õB‰îÕÔq¼VTW’¯cëé]¿„ÛÜ¢½]Lp¶Ïm[¶9œF1­Ør¥C£¸cÛä>å U·Zݰ¦”*àŒ ÅÍ8©zŒ´ 6[âO4õ$u¢2ÆÅwpvSˆútzPl•ô=f1ß}pfÓm`Íûn) CÓ%êPC“²ˆ¤½T‡M­Ž3£Þtaè#ÎÅGñX0ðWó/BUoõ%Aúwä•wíkoø™sCàïÅ—ŠBƤ uÖò®¹A ÔìTâ­£ˆ‚²o,YþL|Å[ùXÒ#¬ø^$…ï׆A>ž öæ{·+¼ó¥ûùžy=õÞ$‰‘M/­e÷RVB¢&˜ìf : #_••«ÌÈØ¿ª€’îùLG.1ó_…ûs0ül|¤&š”°¾!Û(^‰zYZIÿã¸p‚¢ŠÕq|Ð6)Áb£l®QÆ%Zͯ;«A€ñÝbŽÄv<š æ :v Ùëžy V*8·ñƒ%Š ±ü¥Øtûá½pWéÓ*hÄcMÈ—âe+:ªëÎ$wG]HŠ4® t—=NÖÔ 3œ<‹Ësæ]¿¯74T:K·\®-G ®ÅÛ.“óÙé—K‹½!ÖÝÌ~º”x´b©×|·÷güÆ-ŽyrÃ-”ÊÕ©Ùšm€ÆàUóOR``öÕ˜%Nm ²7ÐO*«)jkBªp‘èjPk^›äHí>JÈ ~,æ(åQê.™ (@uw¨Á ÿUºÐšºCþ:Å£6&E­µ\¢$2³#Á¥nc“4¶Â[Éfµ.åͺú]ml_ðbVŒgÝáeÌì]-ó¤Ã²ùîWÊ¥’b`{Žýö#åçÉVRꬆ„ íáøÖ™¯ „‹@Í6ÂxÍ¿û̶%YúÏ~Ló·'ÝAjgÍK5è„vÐÄVñÑVØ5 ÆAÈBø_tüHËÜa¨réy?«ñcÏ cûsûíÈõv­pG7ÆÍ•Ö ÅŒŽûŽrP1e*Î2ñÆ%7§„Öó”:>ÑPM:Ë2§îsEñ…û’'QMR)çupìUøê¤›úé¬*Šœ‡yÛW$Êêk†•yö²b_[æ}ÑL»÷Ö/¶R“|"–Ãg„!m¼I³Ïæ8´ˆ_’PkrU^-àA¦´Ä2WàYê]/£O˜Â=êRCØñ|ÂL˜çÛç³õz‡×¬Z¸ÞEÀ•m7åºh8Í$aJ?¸±dE9ÈÛ¯,õÞz‘ÕšìsNçÕZ>cC &%Û{afW•®w:9®ív[Y‚™©Kã7ïù½Ÿ%x ºŠïï± HôÉE6Èe0ú½»>Õ»â=2àaÓݪÁáí;"#ºlO%pÍ/¨ÜãyçC½Dl³ã~®jH”‚£^î‚Ež«{Omøu†ÒJ/Ò¥ê)&´W“¨c¬±`×]Ú~*z[¿§ø —vïÕ8(æWÚ°CxeîΕÞ-BÃïó± ^jwÎó¸ÚU‡œ¼¬w&¨–>Z÷\s›ÇÆ'/Šˆ FÒ¸UŒËÓ‡îN‡[Çá“M\éy½w;& ²×8¨)d¬›a¥Ÿ¹CïNŠJ®aú²µÎñãìQnòý“2¡{_¶ï¾äp æ ”YðHXONÌ‹qž|ŠæØî€rŠÁÚ Ð‚é£›?cLT06D—†cÝ1Õƒ}<¯'UWûšt~~äæÒM63‡Q’ßwꪜ›¹\ó ŸXf’µkÛ‹VbiÁ’<|9ðÄVÎä ç­§o3QÎG6…ÞaQ% Ìû0›s{^;¯&éßKzˆËá‹ì¾y›Ã¾¼êË?8:UóŒò¼™^ù¬¡ÅjÿØ?ügÖº¤¨-éÆb¼è¹2¹øCý¸•ŠúˆøWY®+a«Ú?[¦SÅ-\ò”c|¤-÷ ï OÌxºq;ìóP0[5hÜút››ošm¨6ˆ(÷ͧæW½T¥›Ó9Ü7Ý…ét³ìœóŸkTß~™—Ý>t\<ž¡"¯Rÿú#œÖ.ªßÿ ˵åþ•tZ¹‡gðnñÀ{…¹‡0IO>b‡™’AßÝO†gÒàÝB—oÏe˜½W± ‰i Ÿ›ÖºsK†&ý_Y3Š((õ~ Ý©±Úv:³Feê¾¹²c£4E3—ÛË4J¼R&¯mŠüäÐŒùi˜ é¼g‘yT!DWs¾RLËøŽ9!;I/Çé»þÐT¾°p¤½JçÕs¹+Ý;Ýé2ßÂeV¬º`!_Ó Bx9L·c’ön6\ãh_ù!ŠŸyôÕé½C—Ç=v¾'K])tØ{9<~o=¨9RMÝwd«4¹ÊÙzci¯Æd ÏÅf˜ž°Ä#ZÏgÎÓvÊþlø4*PªG«"*ô¥tc.¶tÿðztLç•⇠§ºyá-0»â;t¬z«ÊiÌD‘¶bb4µDío‰ùþ˜ )-ææu:g¼È[¼¥Jl,ôè­Ø¯š8Aã1.M^8üHUˆïÃñG"ùze‰cJa–£P=0IH\[n°©À»ÚËUË¥­VOI%HRAkaxòž›mIÓk¹g1ÆÛÙOËÞw––‡¾¤ˆn³/âsÝ]ЧqªwP(~ò®ãÇeô§É$ªC!v”¬ãSÌ—qѽ¬6î6•8Ñowdö)›^|g=·4ÓÉ #· =å¯ATRì‰uì^ÃK¥)•4ª™ÎxFL—o·æv¬²|.ðn*r7VŸ ðñµ3I O C\{¾üÈ·’„iVkôt{áb|»âe ›Þ$Úç=/ñÑñ T°i¨{!PzÈé&Mu¬ÇKþýÌÈ<ÃŽËêŃðj›˜òO×mÅ?¹ž«ŒÞ÷ j"-K´ °Ê&q°UFTEPª6úi£ÃK§¥«éA9{Én=nÃÞ²æ<ÅÌËêO_Û‡@­qQW|ª>›ª–ÔkÜjyz[Ò)¾Þ_éS¸Æç¡ê{ “®X@µ碖$Es7/Y¿ ôtÕ¨ˆU~P‡y ½Jµý‹hv9©}Jb³¹¼ä<ä®cNc9õ£)ÖcÑ:ôBúJG…âYnw Aú“ëN_ê2ÔÓ‰ Zjã6Tú$N”µÑ`±ƒŽ² Í8Ui62s¾@ø"ýž–h(ìëïIöhz6_Ó­G’-å¾-ð 3c дdºz©YóËb0±µ_ÜÝà€ÔžKacŸ@u¤û`é#e•óZD¶ƒ$)ºƒiMFØ?ø]î)€òkY+4”N‡ê?äÊNðVÑ”µé w(IT†š‡‡´Ò›Ûí0϶èÔ ¶i Ž4ÜæQUSu®$¸fÍ;êÝhÀn´ÍÑ7uçó°Õa¥(Ñ@.›½¹üzB\Ã×W6;·‘l“1{³É#1Jò¾fz7%¿É0KÌ..’¬qú¤Ìs÷Ôøkõ;SDf±ïÇ?Uõíaì2‹òf(¬ê`² ¨Úm›ïÓ0ŠªWüD«\> stream xÚŒºeP]‰º-Jp îÂÂÝÝÝÝÝY¸»»»“àîA‚ww $ÜîJ÷>;Ý罪{‹ª0ÇgãÓ9ù2"E:!S{c ¸½ =#7@DN™ ÀÈÈBÏÈÈ OF¦jébü[ O¦tr¶´·ãþ‡^Ä hä’‰¹€ÌäìíÒ®6&;77##€™‘‘ë í¸¢Fn–¦9z€´½ÐžLÄÞÁÓÉÒÜÂÄò?J*í_î![ “¥‰‘@ÎÈÅh b41²¨Ø›X]<ÿ‚’×ÂÅÅ›ÁÝÝÞÈÖ™ÞÞÉœŸŠànébP:Ü€¦€ßåälFOPµ°tþ[¬boæânä€6–&@;gƒ«)Ð â¨HÉ€vËþm@ øOkLôLÿ ÷ïß,íþr621±·u0²ó´´3˜YÚ â²ô..´#;Ó߆F6Îö #7#K#cÁ_‰Ä…”F úþS³‰“¥ƒ‹3½³¥Íï ~‡5YÌÎTÄÞÖhçâ ÿ;?QK'  ¨ëž ÕÚÎÞÝÎûïg3K;S³ß%˜º:0¨ÙY:º¥DÿcÁÿ‘™]lŒŒŒ\Ì #èabÁð;¸ª§ð/%Óo1(_o{€¨ ¯¥ô ÞÛÙÈ pqrúzÿSñoÏÄ0µ4qÍ-íàÿD‰fcÐä,=:Œ Åc0þþùï“h·Lííl<ÿ˜ÿ5\Y15Yaš¿ þ¯JXØÞàMÇ cfc01²°8@¾ÿŽ¢hdùŸ,ÿøJÙ™Ù¸þNÔ¥ÿIØí?Ó§üÏaPþKÞ´±@åŸ×edc4ýÃôÿ¼æ¹üÿm÷ï(ÿ—ÿßùˆ»ÚØü¥¥ü­þÿhl-m<ÿ£í«« h÷åìA`÷¿M5€Ÿ«ÐÔÒÕök¥\Œ@7 dgnóß&Z:‹[zM-]L,þ^•¿åj¿ÌÆÒ¨hïlùû… cbdü_:ÐU™Xƒ^Π}üKÍ¿)ÅìLìM_3;ÀÈÉÉÈ4bbx3ÎÐèñ×èíì]@.Py¾3{'øßódg0ýýØ Â€Aäâ0ˆþA\±ÿ"FƒøÄ`øƒ˜ ’ €Aê±ËüA vÙ?Ä.÷Øåÿ »Â'ˆ]ññ)ÿA >•?ˆÀ úØÕþ ŸÆbÐú/âéŒþ P.ÆÈÒ俈ÄzåÙþ±þ=UÓ@Pw€ÿ… ¡1ü½Rÿ5`¥ š³‘³ÅŸnÿöqtÝÆŸ0 2Íþ@Ù? ëohù˜ ü²±ü†n²`ú-øœí·¹½«Ó?Ø@æÿ€ ø²cõÑÂÓÁôøc’ýƒŸÔ@ë@PÿY ¨…¶ÿ¨Ô°?¡Ø@®v [ø‡T¬ýv³ý¿Ô ìþ¨AÁ@_7; ÙŸ&³2ýGêô¯Þ³‚¦áz%Ùÿ™+¨rWçÄIÿŒÄæèjï45¶ù ëÅ¿Y¸Øÿ£ù·=פÿ6fú=ËL‚ ÔØ?ɰœœ¶–&ö6öÿhÙo Û?æÁ â úšü Êá è­ÌàbáüÇ^‚ÚæânÿÐ\ÿAtûåáþuyÿƒŒÞóÔ2¯? Eò:ýMõ¯w›‰«hB.}{@ñ?ø¯?#€@  üÊ¢½ OˆUCHÇ}ž;ÝÞ$ßÙžÆ'*:ï§N×G$˜TªÚ¬ M§[¡Ô‘^”õ1ÊÁUÂ&˜ð¯ÉJíO>ωÊ3{íðËÓXƒSEGBpøtª‚û>/Ž>êÖmﺥÉò]9‘ ÐïÝû%<*ÖÆÃ÷”ökÙež+fébÕbtKçÉò³pˆ¡]è`©ÑÎ=çonçÐr§Þ¥ià}cYнµ·˜ã¼6ªT™{pIqµq nÐÆgȽ…Ò¤±—¼ËŠ×—=Úx‹ siÓ×éPè˜3k-•£íZúêÝÆWº˜vóR!xƒè»Éõå-NÄ ˜µíÑè.õ,Ö@‚ƒ.3áŽ[õofVéø«\³o€¢äzÄœH÷‰ Mîž÷,ù¹EÒîgE'‰Ÿ¤d°¬¶ŸÌp5ž±_¤>Ó[»‰Œkl°ÕÇ–š¯ihߤkÜ*<û­ëÉ{ ÷ -GÎ8¹KÏLjO¬²=Hgc;F‚ñC]ëΘ!Qð2w%'î&á«TC{aeCò3´YoîuþéR¬&¶ºè LZÇqÙòÕA[%ÁL×qØOÜ3@6@€9¹(@<Ô‚9YÁ¸%i{ržF$tõ[_‚dˆà”Š0Óx'.zà “R7û?­‡YSe·Ô‰>¼g™J‰RKëDLJu{8?LfHèK‰Jª*ä€pMQa~»vkߘ <~ï±ïér;&cJ<ºgF¤=*@ÿ«yh¨øtüFÕöKð‹Í¾äuVÞ˜˜šNˆ¶xPC¹¡Òµ'•á÷ìõ{sS ®¸Tz±“Ý ´ß^´Çù k˜Œæi5b¼÷·ÿªÆ»äŒTÄ}ŽCÒצ½‹O ‚rO…º™cДx²‘?Êã2`½Èr!>ÈÈK?'öWÍú.j°·ôçáÁÆ*â¡°ËÆdGq¶w¬'».Èêœj ^R[ÎõÓ¾zH­eQ+0§õ ´À»0ñÚ ¿‘!âòŸHò…i |—VÚŸî1)ëJ”UôóŠ±æǾ|6 ¿9¬ƒ¡ìòËnÀiºE"Ajë) ÙÀ¨Zë©X¦œ‘Â'‡ìEÍÝß™Ø%ô¤ÛþÄí½ç)FÚjË}I1ê[2WŠn¥¯ûë­ÿ+ÿŽóËO`Ú°ùÀ¶íú— †×ó|ºw\Í®¾IÅÀÄ/RžPSsÍΤq¦? †—䕦縪xñs‘f Ͼ!†|¶åYeuM02Áôpª&êÞ€•~/ÒÓ‘àJŒŽŠ##ú+NÅ>m¦ÃäÁ‹×ZÕ¦;V7k[èiãóÒKÛ÷ס±ËÍ!æ!)…s¡V|üøLõþ)R¶\D†OÚäùjù¨˜*ZYJcö@Խḥîƒ÷Œ%ü€—úLîcú‹ýBÀ¡¼é`¾^f÷½Z[meßi÷,ä]9ÞÆ¼×GBväÄlHóu4r¥:m)/¼©†ͤ}ö~è¶D»Šï&NDù‚¯&c‘ÒÝ^ׇˆ÷wo~ô[Åj«/ dÅ”?pÕÖnÈF–UvP:¹ì(´¸¯ ĵâÙ;2¹ÖR®™ÅÝ«{G1ÞÀ 5j‡¥¯{YÑç!_µs5Wß*Û(¼‡àsÎ¥®-b×mð/øõ.¸6úÊìiósZGÞ7Û‘-le]wi7¸)e‡Ûº‹=J¿°3€57B~D¬ò/c@K]ÃîïÛIùéÆ[b+4'Œ¨Õï„LL5_ßeWfÊ¢›È\Ë4Ÿœ.¿ÄIÓ¿³‰õ=íõ$^µ­é!2 Y-õ0ž½s`“×y¥VötNO!=â6f8ih}•y„D÷6+[ÙôûÄQ3Gx÷»ÍŸEõ­œrùÝø{ ¥¸È}v‚6 á©f*³¬A›ÈóV¾éÂC°˜—Æ~ÿªâ¯ðC$èby¡GqÍ_ãÓìÉ,-_S;U9ña{ÝhÉȽٗ‰¥ˆ]ùÕlÞÏ–ØeúžåæþÚ©(ü³äú öÀ *Ý3YR_?('3A €8–S¨¾/ì]\L×w™W4 ƒ¦:ùuÇý‰ÞuJò_–ïZ?°æB9Ç|ïÊ®$®bø5bL»3³ŽU½sà•‘s´·ß¥Ôk^hóåwÓ  J¢ÌÊjÊCD\µª¿Pƒ¸ƒÉ ?›<=Y[ÐW˜3E£´´àëˆK—¬¹ù3ôÝ÷ç%¸ [‚x_›!"zmó ¡Ü‡µ*Âñˆk^.·©¢”3¦\S´£íefX§º5úóþñXûÅÎzø#Sš¡m-•æpÆøsdßʲ2?>ŸÀGŽ\•AúPB¤3óoáQÇâQ|ˆ";ˆÊ—|´È>_àÀŠx©á„ÞÍÓ9† ï-»ÂMSÇß÷R|EÑ7‘–vÓÊ­7v Cudq9Æ[ºá²ºì^lÅô^)§†ŽÅ÷sj!áº*<†Š+$õ9š¡7íJõæéöŸy„›%´«nMÝ}!„D4ó‹Úz%×”'Äšvá–½dµÁ)¥ZCWò|¢žm,†²Ø®ÐQ,–ÚÆžWÛo¢~Öš,s³¨,œ’Sö"ŒSjÑ3`ßhw«ûDGÓpÍù²VÀ4À?m¶½ßªóìhC_›ey §ZÞa[&VPsÈð±mÌ—n¥d¢”"²fÊË¥?§÷óe=æ;öwÎßÙÓ_o•wEŽE­®JQ¹³1+N V²S1tBuß«C&3'oêîÕ;(nÀH*9=·Ô?ð²JR©ôI=&q6[7Å÷O(?Ýøð\OzAÓHfŽûëàéäˆ,Ç9|òh! >ÂËmLb|˜¡£—‹±[qK”¥…ÍF[$N›W‘ó5Ƹ[À*‘«¸™7ªê|Z’ùù<ðr³äJIp¢ùMàÍM‘QW2ð{‡–_þ)ãM®_+ÅþìFDkAò*mäêåo/¼mEÞÓ—”|ÌøUÕ‘èܬÿ´QRcë>[*̈ùKY+ëý¡$9—ydLÿà ӸåÇÚô>)ÁôÆáf¼°ÞÔs-Ϲ s{¬‡•Ò¯õOíàV‘–?[õŠ«5ž”jz= ºÙqeò˜ 1%½ =¢Ä{\ÕÁ˜7˜ëHµ¸DžfÖÇEG°Ùö“åñï|Ozð!üYT-½Ü!ƒwO }GÓŠåoöJ_·_ßåàK %îù(â4EÀ¡f&9ËbŽìcôžý+b€{îéŸ)m©ùuúï%¸šêN¿™ÐsˆA­„‚ûVwUc¨\RŠ-LHûM‹ú#)‡zÀÛù¡>¨Km„k‘@="H·¦jÈň@âÀ$JR þ5_2ùºihÿ^†ë¡&²ÔÂû§x¬5—0*¼,SÍÝQµ§=¥ŽD")ãç¥:=–j’_à´ Ò%œ>~Û§Ä1gS§m C} öæ”ýí?D6ÍORÚ¡Y}?Éím:p“Fï(z[Èüµø'ÕÛå퇖£C®m7`­røx<Îb^û«¯3G{Y÷¨ Wˆ$®\ڗͤõpC)aoF™½×©,˜b9ÒL³´†µ˜„ÌyÕ–RÆ-Õ^}¯wœZ›!ôéä¬i¢&7ÀŒwülÖÝÙ葺빌PT;a㩊*û>¢åu¡˜RpÁ-4pà!êús¼‘ðq‹Ežq†U׿ñ9¶I»:×,ùS°ðô$$&å(ïË»PÚ%ðÃ#W ½…ÿ €üöÕM(=ÚÕÃxäL ñz6#SR:n£õºÁeF"5dÈÂÈĘÎòêè{“ ×T³^¥IK'ÔÉDÕù=ÇÄZºè‚--IÖ‡wi­ÛU#KÇš|k—8‚1&É1„5¡“ɬŽü»ÑDÇ{™"ÊSï¸Ã>êR^9I¨×KAŽ~±`™.­EfJ5^ÁÉ¿‡_èž ¹VŠt6vk‡wÁ‹˜éëè'å÷<å;¢ûáó3ªJ´›p]R¸òõëøÇ–1†Þݽ (óÛÅH•~lñ<±ovsßÕ6ã¢Ô’™­l,uˆ!!O{¼TÛ·÷u…­Î|ƒ*-R6:Â_ºß´Ãý6I½Àwþ£Öm3u“ù%éxè`ë¦dÉåÁÄO Ì~4lǦ¦O¼«U`€mòu‹wrú…‹GË0²1æâ·YðdrõÅbÑ€RÉaÌ…WÃ?Õg¬Âïlä;=¯º$‚HF¥æ Ϥhl“¤0ÁS<‹„¶jåT>Ÿö”KÌਵÄÇR%ÑÑ{œ‘>ÐÃRýìà£M!e…ò:ÚC²1¶>ÇwˆVóbÜÔ40W!þ®ºÑ-Ö5Ÿ*0n?Õåg\GÎá tSÊÏ‘ý‡ûÝ3^'=o¼ä‰Y’ƒóiŒ´Î¤ˆ‰át"ËÕºÜY%z—ÂÓ('··s—kqnXÁMy5:!-›ô¡ÂØžŽOHØtmîï«Æk׮ϯù¡VÃÞÐ+VË2/©#0”1hLzhÝSó†~¨—Úæ5Åûu\ ͼÎSÜûHízfû·dà bÃ$¼ ‘Åf0ÚYaÛyãXDñô+ð¢ùdÎç+´}©„-÷H<ïL ¥É¬·]9û¿š/k@m|Ó!T&Àv‡@ã™§*Â~T×Ú œ þÆèJ‹€-£šþ},î8ȆÝbŠò>AYšœ5r¶to2ÜK”òލq“p˜*ÖªHƒ>i£4–”ç:ùU„&6yËì8"ŸC!åp‡·ÙˆÖa9ß+»äÁuÄD‰`âí¡¯({³t6?«¹a®B"©™vgÜ $*G…,¾²Ð6P(Û+RW"Éù%ÍÓ_…[1òŽÅ‘}YF3Pɬ|tîyL¥Œ·þñÓó!²b«ét¿Å>Št~gP<Àr[zxUPË^/¼ €»·;cÖ·,ä9åªnI2uuˆÏùÆJ^+ÊÝbª@þ®GœW‰ÉÀ!Üz qW8||Kd5QÎýµ’.˜qo¯6לÇð>Öö p<Ág‡_˜†1^ ?êB76ŠÍXÔFç»F+J{–Õ!¿ôžëe¼òzÙÖtú@xŸÜÓiO°šxÝôÉæ—òåvv—~Ê«ž±=ÐJ¶‡¾T¶píèM‡è_;-›™œ¶6ÞÙ%Re)åœùG¢.7u÷4Nv¹3¤xÿj¿*J|ުnjbá™b3ß¾v¦­ŸÞß‹ÄÉþöùÛÚ‰©’óûýë‚ãPš`ÏèwIu%¡üÞËxç„¢Å2,tø^è"¡ '´‰ÆDøåH’fZ²B3~/ŽÁ?±OÖèÍ2â˜ínLìi£kÌ7ØjFHÂZo}ClkپÌíÍÚK_;ôKÆ\ˆ4µØ»z#œ ½*2ùb-ÂYâ«"Z+ :·ÖvŒÚYF1>\q†Ù:ú#-Ûd´E#3o5¿&â”je¢e µ;Ãø¦×‰ÅbÉŠÖJL©PS ÊsF²Q‰ ®Ñfâ¸ßÜ™Í`åëœg'–ór‰ËÑ[’¦Ò“M΂vò¡–²K«ÍÑÿ©D$Õ‰VŠ¥¤ž”Uwþ9j/F»áÍ$Šyu!A %¬hgV8&½IÜøB|¡65‘óÚÒN3÷KºA¤,@?æ&‘º7(3Äžþ0M÷QåtûöÃÞ d¼–”ë±'ަsµ:ÂÇq¦‚žî«éxî" ¨ÓÚŸŽïÊ®åI¥Í+ ídw½…µFõ¬pS¿˜½j ¯:ÅE„Ü\ZváŒ]±58¨Ä@W~ilÈs䆂àâòš@ë)Ïy{‰ÔC„ðTøª²H¿O³¥Jbø,MÝD]V£à4±ÄÀD×Ð!a„B,®iÜÃüi@Aœ†°C ï€1¤J¥Fi¤þ&ÿ¬¸¾];i&<öI0"b£K;»aש^?nŸ[®„˹âýkh`µhÒ£Ö'ÿ9^0)c~‘  Îi\›àt©YAÉp‰ G4aöü¯Çƒae«Ä,kf¡Lþ=rü`ý†\e¯>3ÔÈÃ4ª{s+¡d pcaESÞÚbýÙ8Ú9"ä¾|·…=Ûei¢ÄzjÞšz•ðá^p>¹q._M5e–íG!fù`Ó#ân`âìpb7I:gôÈù“sÚòòA¢x;½? -p0c }ÑÎe~ò³ÍFÓ³QÊl?bÎñÓÀ„Ó°¶{.–a~‡ÊŽ›^8ÕÑ"líH¹«" 3|FILI¼˜H$*.¥ó)¿QV—sb‡3%EµŠ½«t¯~ÈýZ{BIFoH{‰èÒ“ oˆs1ì‘spÛoÇ´g@¶óšY*goØ=Øîb|W¨] ÃqïuWp¥–ºG²ó0‰Êþü¦^8ÿ«J²×‘³Žy¤h •å¢`òòrÉ!óº ˜>P%šf[¹3*Q·F¯'ÛXc3Ÿ¨@þ{±Ã ¦Qß)c’Y|‡Mü†]û¼˜hìû&˜'+Ô½ùc%H¾Â]°ÄŒãÙ_ð °8½?&ÚŠ¨-·ð´(¹¼âídëÔDioV ¡Z f4ùhA(±ï‹ðbj§–O±íw÷E9ïà>Ò±IRð·íNÖ¤ë÷¾€_ݦ#›@sô¯îP:‘äØHÔ0 ¬NáEˆG¦œ&ZCŒb°}Ì»‹',ÍqÛiˆb…A¸§Ý5‚12„¯äƒf9M¡nŠÓ0(}İó–ä.@/ÿ¨Z>šÏ€}¼ C£wÐ@>»:w$ñÄÃa¢àƒÁeà@Gã§P’ÀK(šb/rÀÉ^|hûœõtâ|´„¸Í*r?¡~0§„(Õ1ÂXblbOÜ–ÌBYƒÁdÁ£–àJry~÷í£gÌÙ„¦arÎwƒ‚¨~HJ6ñ¥@™5w«s£’ŽÚ·]ZüOb”œçL:Çž^¨¶PØ4"`_<ì<±–_¦U^fm‚ŸÈÊ:eý5”æ×Áâ‘ï»ô2,LZ¿ËšLF{Û³RÛŽCˆåUÆ;Ñ"Ÿ{]%/íccxcè8°¨ÛDLšèŸÊÄsžn«D³IíKòÂÎâ^Ì+üI˜+4ýí‚îk`‰({·ƒ¤¼þmÛ>âô«5ÛÚm“ É´uZù´ã3“h"8&w¾ÇÛhrnß³°RNy±Œœòïxü¶uîׂ„lÍÒªÂÄr©ÞQSv4§D’ô³¾ž”ÒFEÐ^Z”÷56¶®‹ŸwrkiJ¡‰‹6I¾7¬!#K¡k Ó^«,\G'¹­Ù@\¿VÎ48±DzfÔ,䯡±yê&£ ¿Švž[HÑ9/ól…žƒ:c ùáËGGdd'¦PÛ:¯;,ÉŽÄN¾ª¶Y%¥Ý¥ŒÀ&gD'Ñ'¬¹Ñ?€B»FÄk÷u§ëYk¼w}µ›z§nó=ÊRì9>ï¶gO­ÌésÕ’ˆEg…¯yb%GG‹[1¬øÌìÖbVàí#lZi¾ˆS¾æëÒçÅ4³æÐÜo«ŽôŽhjÕéóäçÎrÎêé¯û ¢ûÔ+ÖÕè7鈵<6%E¶ˆ%¯â1 t>ZW-Õð··K?ÐwðEOz™²jË28ü” )´ƒâLyG“ÉKo¾[pcw–ÛÊS……C!GŒF%Ø ð÷â¶Y­Æ2U» ú Úë%î¼.~Ðvž÷“l¥“®µ\)ýr §Suâ±Ò¢¥{•¿ö*ÒÒ<ÿèÝR²£Â`òMÍ¡kÙ;{ÂŽÎ{”šè›¶ðæTãà‹ÊŠeû¶òö×åo$ŠÃãì/é~2Û…„3B¦¾ jnwûöL_XÂÔ”›Û>ù¿«JÚ²É Þže#ÎE§d}ÓM³œ… A¥((Ý úæ6Ѽ¨‚¶rž–5$šWA}ñ)ÙQªò¹K2ük¬å/ºñ ~ɰ‘ò q‹ ‚]Íñ§)œ’œ}ÏÝ%w5žw<§cvˆ•”éT¢ P68@*)-‰bƒÂÙÎZ¹ˆ°_áÑùå—oýÝE›&¼]†÷M±UÔXÄlÚ*vAJÆ Æ ½äê÷¯Ä@ F0{n®&ž×½eä1Dî`¿Á –öí:¸ZTSzâêÁb“^©+þ{Â6 ?j4‘1˜|Ÿ$EMËΗýârÛÉC½ aí¬¾ÈÉrñ1GºÔQ£”6&Ù­NiéÅÚÊØ­ÔÜ>jê%$Pœ+V ’òùx‰Þ³(’º¨$*µþkÄ”.¤çå5åcÓ$@y9ü£I>ËûŽoñt•¯.)½f·‡ UηИfŒŒS€*ÚW…aYD”¨^¢Ñ…Œnr½*—@è²Ò€Û\̲O×'qqêÙ||ýÛYÖu°ôV±cW_8f:ê•üóáóŠÏŠc%Ôƒš×gûGù ¨ áºoúûlÒ{Ë{ÁjuØÍ½ Ý.h,ûÅìè‘«>z²å¼§p2 xš£Rþxµ7®.À¯þR” '/ˆP•'g>…{zÔÚ!b½çÏÕµ:®—5è?(s©¾´à9$µ,èSüSVïdìÌôµé\#ÞÄgóaç%u%!þh÷Ã{«.‚RŠÈšºnæ¸cmƒìläµ4MþìïìSS_Æ q)“3J:NDÕ²`HM>bîuÝÊR|&#N>ÆQn¨Ã™+¼ ÎÎêóíDt|{X1YŒ[èbfÀSvr¢~TðöáöXÊ”¦oÏ{žØÅâa ä²þgT¶mï˜O4Á©õ÷'":[~ºÏR]PrPMpVL¼âDùvè'ãð2mEOîÓG›¦k{ƈ¹ßްy_‰XÂQMHt*Þä ×6ÛïÐky­$!-|‹T7#û`6 ~‹fÍ›`mAý%Ú*ª=o‚ÍïÇ †M}‚#q*LoÓÕ£»åšóOíU:*K·Ü ÍælVƘ·?¸V‘\–2vÔmSv!x…kQš‹Z‰¼‹ÝatšyÑJÖ_eØ/Û¥ùðî9éO0ç§è²Í0 IyÃí–áZœ]Lˆ`,né¡(Å}»m+FÇ×"Èmí Îxºwµfíš0¯”q÷…¸¢¬í[jJÏÖ2Ãó~ÜWä˜`E/ã~¦•_¹ENÓ—êH¿÷È‚|Ei¿e<ȼ¥£ÅZƒ8‰{îLþ¾¯i}šLÜ#Ü ¸ô†ïLÅÒU'dZÏÚó„[¢Jô\àEu¨€ œ·I«àGùÌÆ5¾ÖDzéÐüˆ(ÕåÖä8ƒ°ðmY&õn\K¯ŽÊ”µŸ©P5ïtx`t@Á瘮£àt!¤ÖjYI×aQz×ð“²äH?¢m8kjÿÒÕĘŸ°cLd¥Ê¤X±g-)[Ctš4/¹ÃzÉŠš­Wñ%dNxÒ8GRTfýNCḧ’Qª11°|ú®™a¡ý¡ É ×8bÜÀ¯l‚XV9QÙ+#8_ †sè™<×µ”¨üÑ®ÆQ†O-OÉ¢cEDc÷Eë 6 E¢S…?:ãl±DäH¯Ë¸N» —cÙæ¬JûHö€kn´Ÿ‰IŠ'n…wƒ2Pt¦Ì†­ºäÉ Bk‡MB»‹ê>(¥°+¡çóáÙBE­oŸ_RWÄ ڎàUçšêqƒÈKŒ»ÓÊ«$Z[Q$-MÉ×ÏG/AóòBï@åÎCNŒ´ûó”(“,ñn@±j=þx!«!¸u»†ëi÷°IrýhuL`ω"Æ»ÂU1ôäÜ܉x¨0lô+rL_ÅìøŒm?_õ½ßãE°¯üÊäÐŒ&BmÉrŠb#ÉaYlzsEì4ÎEi†ûòkMZ7¼Lm‡'ÕÀMí6ÕšÔ8: ¹KûfØrËERÙùà3eÅ\sÊy¦qø+äʳ¼ä÷̸}VY„ÂÛ[ù0ÂÀ6üõZ79+ëµÖ,šmW©™ï<œî£.‚í šègºWÉÀ~g¶IHSÊ£úES/¶+ÒPn0'¤Õf¹O‚Ü&d„)ANi9š­™cu¹U/%>‡”—ÛQ‚®\6UEqÙ °9ûm¹ÙG´w4ÜŠ…BKÕâÈD˜êã’ØœúSÖáF …2Õ®R¶$ÅèŒEB€7Ém²†òƒ¥…²Íð"ewÌ—CºdMÖÐønTÞÙH0B‹$6Õ‘ImÙ\ÉDnˆšÑgKC¨tQ²”üÁR–yÔçe¿ïf+5©¤_ŠY\çïÆw8¦g ³¦d™_J`ó-*“8óóG$&9¬Ñêìe`Y;Ú0Ì®?ÐöîK±sÔØ³=¹vN ¦‰õuç–Óßyo•Ã0¥qûÌ4§¹(|Žf"J{«ºÐZ&Bï5t-ŽH9©qŒ™¶“ú¬ÜX·µ4—P㬼ZøîìÁ[Œâ€uÞã ojõ}­1‰º\„ˆ×9dÿ‘æiÚ7!ÅU}yÈkrªnœ=‰·Œ!FñÌCd“ôH|+¾»Ý-‡=ïe*L«/Ìg -G)C†ÝøÌf*Ùj«¡øö¢‰[Vºâ»êY¡"iÌT)Ág¼Îî3Zz:Æ^:Q2»×õsyžÃpŽ”®[ÃÎ ›<œR¦ø½ð¾e”8BW¨ØGë2)GÚ©âŒBÔÏö‹Õ¶—Éý¸ñí9‰;C:\ÂÇÒï­ ~ʉƒ}çÁ‡¸ªÌ~´â]'d|é® çÉ„™ç”a{|8+÷1(Ãï‘Mi=|fÝ Á-Àƒ „7à-cE|jì"i"õ­Ioô$ e5K)Hõc|_»?úÚ<#ÿ?]CˆäLóP?Šu2Pz6G÷µ¶ø½ø HjûÊVýˆ"\âRˆx6²_ñªðöð[«›cx Çü08I§ô”7ëEŽîËϪ Ä¡%j»êóÄò m¦t»•ðL’rtÄÏæAY¸¶;êïë1¼u†E‰RGV1J8wjè(šc«´<ÓÞïРì”C¥¤]*ÇR>—ì[lU÷%òŒ—š"± këÛYz†m{¦ ~» £¢æ¹&}CÑš}¾æ±–¨ÓóÞ‰?ºnuXŽœ\‡E Ó`;cjRW#‹À¶ZŸ"‡±².G;° ÿMN1¿èN»aBì'¨>@­ñlÁíø¯®O£;Tûé’o?Y Šx1Jùt„±£756É»øçcI:rÊñ\Ž1³1¹4~è2l1– u‰Û2)ÍØ>7+i~wŠÍ-W½®á¾d£“)“ÞôáÌ;‹9Ã…Þ ]><æø¤ÿ…]³<¡J·97Ë£O‘bùò(­M«¯Zé3/Ü–0jÁù;Ÿo¤TƒÅ~ZÖtAþ‡â"Œ©îOP$b¸AVÊìÖš!Ûv™nZ†åPŒMŽ¢HTÜâ%?æ«´_œšöö†mÁÞÊ󪬆•×;ð&“3«v²Â9Ûèøøà„b>¶¸éŽ9 ˆ‡t€½|½åú#âŽÍ=—4œOÌZh=úÊ|‡q#í® häeÒ/’lª¯ül«k +šB×¾=M¸´‹Í-‡b7Ü«¡R´: )Ñg¶¼Ò+× öô±¨ù‘Sy@CscíùpØÿÒÍäÌó͵¯°71HØ8šµ8fÆ t¦>»Ïaç®üìýE™¬ïha›;&æŠ{&”²&Q0ÓM«þ$ô ¯ÃjyįDuZaRô_ ´rë_NŸEbQË”ÀÝL­à‰­kUùøÙ ov¶=;H>xæBÄÒù¡ ¯dÊ_°Bä¨Ú g­W×x›ì»-õëßH‹^óÕl1êÜåæ±;×'=s)}2#6šµÁX^ Dü|ã¸÷ÖwUë)÷d>*ª¹!I"Šá£Ýz4â<¢ºlÙ­¥H:áòå™ÜèY¿¨½yÓéÙ å;”P‰‰–Å‘òÌg’´Â#YﵕYã좻ØÓ…—LåÁ–JT˜ujuVÁPm ÷¦¬S w+xJ÷ÑíÐ{"‚=™’¿ò IßøåSQC‹&ýr"W¨n^cÄ­æ¨Ukvü´îª7~~òc; f(KÙ­èGð+[Rc°Á¸û³ë—¤ûp”W4Í%9ËKÄ-Qò›iÇJ4+d¾¾‹bã§s‚—78Õ>ÞCòÀôêxj„ÝpÄ6~Šâ[ Bõíü$êà ö ¾¨¸¦Ð_@nE/kF*Bö\'úiM­g!ø}jE$¢ž ²w€WkRÈyªÝ)ñj_—H~_wÜÜnnà AV»‹Mž½ù5‹*S¸;Þy\Â{Eûñš _Ý*šx3±­ó@Ó,î7›#´–$Îs ¹ÛSÅÀií—ŸÕ zƒE³¯ÈêkvúÆ£AR¡¾`£ÖA îúÿ¦ZEòNÊkŠ|ƒµ¤y2ûËòG3±yx„•[R‘Æ•]z"cE4B¡ÆôVq„ϰÝ"¼ÒŽ  ¹W:*$ŠhGl¢°o²½3ÃÒWò…ŽpZ& Ó9g©¢ÕÊ„PSƒÊäH2Ú§;¸~·°B:|Qp…à-ùKwÂæö9ãö½¡Õu2s¼Œ Á¹¡LpU^¨ÙjH^Žãë9B—õ™¦"¼ù:Ë34N8>4øaË:„t¡ößgu…ê;]PÕK&ÈØ QÚwŽò‹9)ë#Z[33R0·ºe§:Ð5ÛT¿íb~ÛŽËIŠö×Ðù¼NâÕè™ojU»«+^/}XÍí‘/XPñ¡¤ûDŽŠù¾ã‹h¡,ï¹…þBê›,±Ñ¹Õ¨Ï‰²t.¦ç©Åþ§âÉ_Ýd¼r°œ4‹+i>1 3Ý:N?. « mRΙ^2nÃaº\æQ%ã¡_œ åÃ_”¬KÔuÄFœD¶É$ ¤oMB¤½?ƒõÖûÊ¿»ÈƒÂòü F]£gÍE»TSíã›Q¯,ெ¯Ð4h h‹ËÊý¨¼L D-š,•MO ü6—äç‡eßu?X³ËØúëh¶îp¾ý0kZ30·eŸ¢×lcÃ?gîn¾§%×*À© ưÉ@|aêV,ÃeŒ <Ñ–/ÛòI™ ýxÚMõ†gÇ|¯Öü²„v¿mSI´6‘øc “Y鋦wnaÛøÅ@©:ª' ^4Õàâ¦SÁHš¼sÒS§ã8q ÄÌ’›ˆë÷ÆÆM¥¬Ú"yEFÎ¥õú×óg’~’OÑÚ.”¤Vò*„Ç”Œ¯ªM¾‘ÁÚ(oaNú̬©òÞŸCÖ©¦ò Ê7<Î~ {*åɳ(œ,rÊll›/æ_âiì ÎDŽ)7¿ÎÅ×s¨ÐÜ’Å—¥Ïoµßú×Siýš*WrOÐ=O€ú˜cë tÊâ§Å ÕòàêM“EáÊîE P}i¼ ìå{0°ù%.Ì×Y”‰ÃFðéƒhÉB-Ó¯zN¸ÙtÛÐ!Qqí‚4¾iA\Z¾ zl& øæ¯NOèÚ#Xs扃ë¥ñ/‹Ì¬ƒGÔ^bzƒµ=®dªÉÜÎ.y­©Ÿ² 3ѻѢ~‡y…Š„.XÖ´G·Òì]\̘ O²™,xŒî%¶œÚqÖŸ‹š*:„áOê—Ž¢ò´´K:'¬ó!,Õ2-"HÔ›~}Á€çüºcÍ›x"+?t6zÞ,Ž·¤ˆLQk†‰$%Å1wΟ6ܘ‡X°ßA˜À«Ä†qËëk ÓzBò"üÜó&;Þ‡©çØY ) ¸Hr§*ãx’àŸhœx‰º(y䙋ØhÜùpÖh)Y8.Ùù §sj¢ýèì;çFÐü櫆O„|Iâ*isu’âk±ÝÀŒ‰R“!ôYï³i{E¦èœýó ¯¢°Ó›Åd£¯Ã)«Ê݆OoäcNŒÎ´AÆõƒ„^þv½¤÷ªA°`lÂEÒíÁù_U‘Â-|WJ?êÔV0­/t1Lj ƒ¼ [çM^nßì’„¾º®µò‚Ð/¯¨¶9ˆ°¨Z˸+*šã÷õ‰„îÏ–•"Ã}­îB 6²#„¾Ù/õw›Q]v¿‰1Lùj × AkTFœ+Ú3.ÐbNËUƒ" …ôö£,f0KÃâÁ½®UT·ÑÂ!¢~a+ü}‡ªÄ}ßK§Þ<é}pYÁ­¨w!!wÌ)Ÿk•þúáM¶{Š8À;OÕ<ë… ÔÙø‹1wÁBD¢^…X.å3P•ÎEºDé†Ï˦=°ÝÒW áÖŒ§'ôAÔV÷CŸ¹‰¦?á¸AžAëÆV-(ø¸[îØÔ³VKüZúfj”…ˆÝEZõCᦑ5ì¬YSõˆr?ʹבe°Äc+Ð"׿Ý=íO#TÆÁDv9cÔ4ˆÂ Ö~´£v‘MºÚ“êû(L÷øK1.Ñæ¦\‘²¶©ÔïÛN'îÐüƒ³ÐÒÖ’÷èˆZ_eÍŸÅìó–¤r?‹!ÃRðp[Ù' )•E¾èéû€A=2ÑPAjÚ2c.8Ûè{Ã{«‰G =R]‡†™÷Ì (QSlKßVÔ¹²\ƒm§z”Ã<Éφ ‚Ô7± ›ƒ,®E°ÚTåÐݦ1~Vryë½Ýé\)› æ–ï|“¿Z<Ϥo~Išj«TýáºSŸhTúãñª@çBw}Œ‡OÎË>hŒ’Á)¬zó9¬@_óCùî;ý¾Îªäò«;Áú‡ñš—>°1 oYU-‘!û `פڎǺ/çaò¹Zå]z ú¨rˆ8ÑG.ƒæ¾b AÖr\Hȸ§ÊÕ²ã÷J™CfQ¾(Y“’ð¼<ÕƒËô4’)½ ´? ÓŸhKàmÄ“+m·x”“Í'¡Rl6ðå8?÷m°O]ùVJ¾¼7uƒÖzñé@)q4ý(Ñw+?Pþ#&¦¼˜wO°Ï>9üÖ‚¥¤è8C.Ú\µuŸ—Içõª¤ÑÐqû`ãRNYб&9Mæ;õ²MÉ-£C?c³;É yÚâ½Í²¢Â~ëæ{ÐX•½•5à‘Ü6±Àõ&³0Ë}ÌŽíüÅ~BoÇ1ê óvå‹Ñ™ôn˜*œAÏ:˜ù€¢Lt €GYýž½+QùlŸõŽWÞ8Þ/}´¯:„[ÏJ:O«aÓ'Rñ³ïÙW¸ýÙ™àY‹SÖÒáOÑ—rBÊF u2žïh§)8-Š´'†Ž³õª0kͦ+/ëÖ3!¬¡ŠÁyCô–ocÑ%%Ê~E1ÔGhpŠŒª2—6Ï·)ÀÂëyâs9oßàÔ?‡'9Gkëw Ž=ˆ(ýð¦ÒÜÀ&™Ÿ™7A±4*ڵߟ¶F¶ LëXUüÚ"°Ç¤‘ÜpsÖ!fÌà¸ð1n\¢ÃW峌ZDQ5ׇbfâÃlÃSÔœ–ΣŠÚvô©ûc1+ËÜaç †±zuåµ6¯Â†yú’v×* ’Õœ:GZlÇ÷(OQ|ÿå Ü—¼ch½§C7DN™/ñˆ« /匙[£\#ýb™O¼¯Ÿ …•a5,2âÅ*ÚOF ™ î“žeoVütÉø}ð‰Œð·ó2™?rÞPUU;ûv€MÜYƾ=#£#ªèt9e¯‰Þ¤dùU]ëìa&ÂÆÝíýÁÊôº}ÁåIû¸u§Ò”Õ?”ÙŸð­r,kJ7ÇA uüJüû‘óÆoû–j³’ŸšÇ{†+Í…u;rÔòÏž«NŠÕÐF ŒY¦GJ¤P@¸ŽÌïÙ§…vLmr܃ø…tŸ½¡ô 0’V-,Ë’xá¥Wùt㬫uMÂŽk,tpm|ƒŠ"ú~¼•Ͼµ¦a0[™(‘­¦zû^Ò×ß»‹ÓÏÑ ½xvÏ -µ¾å«tå…A—à«ø1ÍÛ¥Ð+9›+’ B«½‹9S]ÃÛÃÝÓÅlÍåÑøás8>/âúgåNáÙÓÙñŠ[z€vø±)JÞ×ì´,û´ë£§Ñ]©–EÆpèISŽ¥<ÍF:7²ñIƒ†,à ú0‰‹½È {nBáˆSã`˜À£ªà8Õ>Ý ükUmiÑ "J¶ŠºzÕNÓ­[wPÉX8r ½éª½Ò'‚b÷­°Iéñø¹'µ§„Šg÷2K–öÓrA»˜(tè…‰ƒdGÚŸ¾›}àdº©ü¤5C‘'üY¨äî=ÙÙHuá篯ΤYdâÆ‚á± ¹èü¾rKÎËe~º¢íéâ]:áp“ß­»¯ÝÈ`ÿißø Áçý]eP£Éßí J¤Ð‚¬<6õøÊïr¾?ÛIž¶N=b—Ù ÜG=¼Õë—ÇQK›ïª|†HZÄ}Êà¥Æ¶¾b¢®«ûuß‹1ày/8\”¯õ ¬AȂ¸[k)—¶ˆ§ÿ=ýšý~TzA|Ü¢—Ųb¡`{RŽ®ûõ ÚÌ yžûKHPÊጀ6ôö@–c³às*B´*©6û΄}=Ö‹ÙàÆ©¬„‘¨ŽlÖ$KΩv"o0µƒ°z±gsCÙ„H —¢‡@ACÕmŠß÷z´ðskÔh’#ì¾k2ëç1(C”Ø ­œ¹zO DÜ%Û:¼w†;žSr4l¶£t2Um,ÂÝ`•—!âÃ^ù:?Òˆ2Išøêİÿ&Pô)$ 0­rÐ.”*Ë?{iz!£úC!Qymûø8±jŒ<•÷ŸVYð(w‡mOç¿IÂD'n<°9ÌœHÞ ™YDzEoçg5—÷ž+J.ŠIÆ<+;6‘ÇÒÌžØT ¯®B>“q‘ì#ÙÆô´îì½ûõBÑ3‰,{”áv¶vG[ƒ*;«$¥€½kÖ—<ûœ×ŒN§Æ¦Xÿ¶Ó,ÛWNÉVlÉÝÝköÚ]ɺ<¦T¿K35¯…–¿ÅÂ%žA¡Ábí|ͨۉq»®ð³…2kk±@{Šxdœ{RWW׎9‰å`Å×l&˜Pg“îŠøœŠs©#ŽŽû…vNÓ|³Ô_jw ¡¯ÛÁ6‘PëxXÆP³dýC—–©-ïôqé –Å|1y[{p (=ññÍj÷SÌHZb {wL [Êî­KÖ…/›>Ùu黜·z ÝûMÞ~~_È)¿¼ô‡øÙfZsCÊêë#îS74c|jð”©{¼½Û²-í|Wޝ•¤Ó?êÜY¿Ï©chIóݳ¹A÷^6šaûˆÝ\$B•(ŒöÄJîA~½å—žc“ÜÏÌÐòÜ0W¶ºCBsê óþœfÂÙ*•Çms”ë¡ÑdËŸéŽ~Bש¡ªÅFÙI´·d0ê˜ã/®ÐšâÇ¡KO¨µrhÔí™Lfêsú…`¡§U Oix Ý#4—]S¢…ÆkñeÃÞdÙU)¬ „—ž£5OïHÓ>“êßCCE>§“Vbq½ž(xe΀ï×W ìO8¥÷­ç¤•ôþ“'}þéµ›”Á¦8š´cJ²±{fBÿôòEΗÛE½çÈEÀ×·—·ÊØmÑì͔Ԛ§Ôâˆ:3« ›¾7ÕØiDß][®ÁY‚gçnT5Ì•8ßK\ ŽvœT*o‚ˆg¹ƒ2Ž,x4Q¹Â¢oÃ4ã'8Â">ÌrFÃÅMæ¼ìOlõº­•ýIÔr»…Ñ}¾–YO0È6ŒT&‘iØø< ”¨¸OA[X¦}ª\zc\ï Â®A«Q˜ÆvÛ=^ •Û>ÇÏZ½ÓÆ\tRJ´àÎ ñ,™é¡svػŜùæ›G6ò/þÓÓ¶`•ßô!ozÒˆ”°UXrBô°åºÛnV÷Hë\î³ÓôdÎo½eâ3¿¶ó(8’`Ûé®M”•ã¡·+hóyÞt…HU%>GÃkË‘Ì «Þûœ¥‡ ÏïÐW$†ž§"Ý/ž=Íãת¥ÄšÚd'ý‘‹a°f¼^µ(®kÊE©h\»Ìfžp.7éá µV6£¶M¼ob±„8”ëü]AI1W ‚sÏ»µ.udfÚD÷šªŒ_ØŽ ·’ `ÀýYÿßvÊLe¥¼§º©&« ìqvœEòI½)À>â˜Õ<6µf. –tF —ÚÊ!Ž–oY€‘Œ§ôÚ’a¡ž“žþö@:©W¾ÐÕýÒ4|¯ß… â¦)I1™¿ZÙÄ$÷ã:+‡Zû!«’ëdØ6˜¢ºF9LšGÉÐo2¶–j€Äf"° Ÿ% !ÁÌHg£à ‚š{Úck¢º ºO!á俬ÂÔQ ã8¨ÅoZÜ4<]ß.¬hà …æÐv©5C–…=&4ÌMMýæe5ô¸FYU_XëÕ(}8UEðOSQ%àöíÔLÎKãü…4Ø=eÆ#(Ǥ0ÐÛìyX¾E'ËKc¾Å.»ÂoÆÀÝÛÚÝ×!µ&8ix…eµì¡ä7ÚïMî½A±]¿¹/P~ @"fd[îõfWß×9WÕ8†ò§tÿñ Oâ*ühËúkž…]»®‡Pè1Ôoþæ²OŠyHZ¬èÇtõ’DcÔàH»OÀ>ý”´Œ§ƒ¬N¸;aË’ó>;*‡£ÜìÂÄxa±áR¯@ŽÈò¶þXø{ilï»”…Y°a‹Õ>i°Ghðd–:¥Ä8ÿÁ(ªcÖxx}‚¢Žã° >L»_Ÿã°¥›’à$Li÷,„Šk'¿5BÕ}¿œ…!ß9zz,ŠKZBÝf…]%!LõrqKŠ6±ÀÈ´ð8Û\±ë1Ð rc\`Kâ•ê(ÊÙ-t8e|´?È>DðŽÅT´…ûw $…Ú&i \8Ër.ˆ©‹Ýÿ(P6'œx$˜P#ºÔÞ–ƒÀa¶þ@•Èþ­Ø?'TU}°:5.·8|"ù‡µ¬9ÚSµøh§¶ã§P—¨úKÇ(+oV›­1î¡Â(öž[Ü(X /E+°,æAõ¹)Â=òÃêèRHc6¡?É;øUP£Øy¬:M–{Ö{ªu‡Ü}@0ã `õeŸ~>Ë.žÂPq Ðþ¬;Ë ½>€bã~c<)ßðÇá(::üa‘u{GÛKóÐEFW-Û÷HåÑg)WÓ(§ÊnH ³bWíSó ^©ŸT­y~•6貤mUôÚèE×:Dø-Zæ ½¹©×:›{äùî€Êr Žo»CƒÀBžýÔÔCF$Ü$“8rŽy\^dþ‹/œ’Öíû ´‹Kaú¥äLT™ü_aïd~Ô ¿bŒÓ-<‹€$}òþñ»¶”`訩#yl¤]Üe]…GæŒCõ,µ^¨ßûÛ…Q›Ù‡$¾sŸŒ`` בH*aå'@ Cm|^Pøz“ù¸;K½¼¿MÕ$õŒ®Iïð¾.:†ÄElDJÍvÞ¹ÇPª…Ö(?¯¨”4kU,·ãj8KJ£±¿ö’û—ÞzËö3ÔÍä Úyzý/qœÅª?è ówé>`!ä`ÖêôZ;XÜ{ÖU“Õ WÀñƒûçg[ˆÜ„¬*_þËòú€S½±W±„²°UÂÑ/[ó…[è]”{ÿ9wÝVët‹,qùªÊUdèƒVé8Wä¿¶¶¡NêÀ?”ì*u:دiÀvç[4Ñõ(èþ09jydlï™´­µÇ;OÎ-†–K}V£álA³>‚‡Z)mf‡ðŠ^*7YÙ¯ =ƒoŽ¢]Ž»¹ð'zÏ1;dýèµ*t- 'J$ãÚÛöêì÷e×Ú³ V:Ú Ž4€ªÊ‡ÚÐìÑ&²åŒObPÊ#¼¤ž8£¯àŠ®UË„x¾ä!y_ ‰ä9´0 aùYå+h-;•¸+5?>‡9 ¥_¾×W%ý$âTÃ<„)!#|Ž>7§ü"Å­­£®±Zâ2軓SÒS×±K–Wóf3&1ñ—ÛÊž§ï'¬´ˆ¨^5ÞŒ°cå’çäß^ØÆŽê˜Pë8©*ytˆ0æä:£l,Oð'(çî•ÊùöÖÒ5:yÆ0ÿ¤Ûû3t`tr%¸oØ«äã]Ú‰— ¬u¥5ùÙW2ÍÈé£ -¶c¦<ñÿ;ê²ùºÌ¦woæ†(uy­Ñ¦¾mI;ÛHµûcYÇáEÉ¿wøÿšì@( ÐÄàLuÿiúszSi4$Y†ÂóÏ¿O˜Z' b#‰ÊgÕåÀmâ[ž˜§äˆwØXú3M-Ò=Á5JŸÂÉ‚ »™tÂ\—ÅÀ;!K°USÛÃ;¶ãi ÅTx¤§WÀ€µ*.‹%ß[fr‹>ÍS2À ™.G }Þi>š˜u®¬C0”Dá±ãåœÖ:ÑI,0‘Y5¢Ïg—âíŽé™Rp*lg¬ÃJCP»5¤:ÁŽåîO*PúÓU—Ù¿¯ÍÒk—‰yr ÷S]…~Ƭ qOÕTYʶWêkÄ)&JSt:ÙÚ:¬ezkMHbMäØåäã Ô3o&¤È ‘ÊáááàÞÈî0WÄ»$@•‘åT"»„1˜PKN1Â1Ç¥=s*Äu«CcuÍþþYÆ6zñ»±yqVÒåØ,tïje:ëfsµÊ )H»²óiB¼—Ó×2#zg¯#bíÁö=V5 ­õA„x½D@L 71ì&Jœ 3º¢¶É/;Õ;ÌÙÿ°Ó4ËŸÛÌ;vM‰8ÐûíAh©r‘wèäܲ‰:ÉYðˆAöœ„5µ×—ùé¼.0¡2, ì‚såÚtš§ýë‹éž²Ö“HC½bëšè/µ¸I  °ë,·?õÁ]£cуv#ð¾yûz¶_ Ó«œ!JñõoÎó/ ËZ¡¬È^ÿ×ÎÄâÕId¯Ô¬ÊYGl»ïÕÅî:P¢zª=s,eLå,4øEfÆ«C¬­@sº9¡é`ãÀk(+£¤¿»lø€wS¯fÕ‘¸põm\_þF삞äõGÔ-G ì’4'¡B²ÛݺÂèàêF¥•,žµS–6Á¶' ¿M+y\„[ÝØ÷HÍc«”ÛÔüe̺Qº™¢r¸ØîK:#¤É?ÝñÃ} –ãCSˆ-µr)>Ê4ø`'W+ãZE 43Wh»Õ‡&´­vªûÕi"jô5c½Œ,ÈnËMY NM è׳¶¸ÏiXè„·uôøæ9°¾n,avÇKð“iÃõˆ‘ ì5„Ï- ˜è–ÄW3M÷ö"É ÁõXØ1Èæ`üaZ¨*§ŒOº€Ûú’ÀÉÊ/%»Ðó6ÔÃ<[d-õ–ú²ª•Hñ Ä/­GC (é ÿNíúMMä̉ŸÎÒ‚¥)>œ¯=ÝʇlaqîæUŠß/4€¯¬@^ψûAŵµÏžbâZK:ö B µqeԲ̫ſÁÃØˆ2eNÕš¹<Æ¡$£ñN÷Þ×ÄI{Ò‘EQL'ТY¯„ªe8 Ñù»ÇÛª£M€Õꆮ«à‚xÀÏo•׎Q¡©ÙäÞ†>WÅÓAƒù ÖÅû]œúºÎo›¥?€þÅ7ÐU0†µå%¦õ‚ë¿·*L­à§ãœ{¸àÝ%ê‰E5Ü íY¤#qcì°}¬”XòÍ"O«7ÿȉ.Qµ¬úð×>þåê„P“ºLzsŒY©¨Z!|Ë>dê ú÷ Ü ˜À|“D-˜§2R¼ë8¦Èž5 Õ«û]ª*2ÚT×~l’"qíÞ wøóC[l#UÀíØ4ˆ3ƒE÷ÞBi<Æþ>ËÄÇVbp·‚ÆA–úèZÓÌïØé %±ý#GZÜn£lm©_§‰ /NOÈ1î=RÑøC"EvCäÆlxLøóh׌ŠoX‡~„Õ;m¬J`2ÊI>£c–Ýo­ð˜óE$—Ú .PÓ ¡Á±§Œ]» Sù5ݘ„J|.X4æŒäOÀ½¢CCMW¸*ò9V¹ËÚã|ÉUå¢ÿÒ˜æKù˜K{§ŒÖM.Ê5U6 ƒõ„o½(Yk=¦5]ç|‰Ðz¿lsKÎhNxK–, Üz¥~$eþºó¨à SæœÙ(Çy˜zò`¥qüF#(OÐÁµ¥Ò ·ÉQ9NßøG… ¤æáŒJœ«®Ïûà^[ökÛ"“ÇTçû§¯Îöd¶J¦‚òÞcš \œ =aþ$€›/—”áÛu2;W<‚9HOy#„$¦ÔõRõñk0&£É?õº¢ªDÉ1˜û"Š|'ƒØÒÈ~rG“4Ÿˆ»ø}¤’ÕÖDáy.µd[£[N„«£txou`®Áëÿf,[_o6êªÕYSOßu°gk¶/‚ù⵸PNû…«ØYsH?7ûü ÝfÞ]ÛXþðšr¶M¿hi÷¦´?{¤×«?´ûGiaš0¿ ÑEw‰Æì‘ G„±ÙÁÝ8íâxv¿×(6²'ÒX—ò endstream endobj 769 0 obj << /Type /ObjStm /N 100 /First 908 /Length 3652 /Filter /FlateDecode >> stream xÚí\믷ÿ~þ lUeí±Çc)ª¡¤yŠš’D| ô*E%Ün¤ô¿ïof¼çì…sn ì¶j…ĵ÷ø1/çaïÒ ‡Zi!¥ŒZB΄º"Ô5†R*êjeÔ907Ôèku ÒêRŒ´k” RÄœKh,!c µ$çJÓ1À‹¢é!'#ð7œB¦Ê8‡\#ïSÈŒ©KÈ@LÃ`e @sW²”¢(m(uÁC#I[j ’µ…UEÚZ ®²kMé åˆD@†€íKR()²äP2i …BS“Ñ€–&5”ŠM8î LZ(’Ò®‰„Ò³¶ôPcÁt°TønZÍ ®õªqÚ 2ŽÜK¨œtL µ‘vq¨bÓ[¨½–]o{ïx’g ”˜š pMx$¬D'±nXW‰5°`aø¸W}“‘ÛN"§¦Ó!ˆ 2%©‚XRMÀt]`h’U€I¡SUºAORš°(’ìOv–$w è$HŽ ˆ~(Š€z<ƒ/ÉèV•ˆ¯'Ò‡ KLǸžM‘º>ô@F]°ÂB z˜¡I‚µJ±ƒ+yÐHÒ§‚'Ñ™€— EJ¹4íU-Ö•ͽ踭%ï@/”6BÈ‚öT F<r¥¨Ü^-*tÝI•»ŽÃÜ*Ð ÕÑı)³˜Á™õ 3¸@‘Dw 3Õ݇îöþõÓEØßzþüòj·¿ÿóß®ì÷çOŸÿs·¿}ùâï/Â÷;6>Úí¿¾xr¾¯)Oªƒ€:AÕ¡UØ1,ÅŒ1·Â‡†ýý°ÿøòÁeØß ¿#þ}øãwø÷[ñµ‰ ´¹ô)AR†¯Ê”b9‰OVBG2éÆPl…§Â§¹kïŠm3Ë”Ë@Gu‚vDWâJÜ¡†þ8¾\§šúI|u%t‘'ÕEC—Ê$™¶”fê<%¨¹¡‹eJù´4)¯„O*Ä·Bê4:­,)®„¯•©1;>ÉS}#þ|ù`8¦èâL-Og6¯Ä\¥‰šo…Äi¢r]¦•˜‹4 ¹áKi‚ßûuöî„ïubø:ì~û]P çòüçgÏÍcî^>¿2(wÕßùØ»0Œyw@ªãn<’Æd?iïÅå“û 8ìïݹö.~¹ ®ó}ïñ»ýG@xñüê%•MWN_^þüâÉÅKstÖôÅÅߟ>¾}ù‹‹ƒÕ³veøÞ㘠oÏ>ÎDùX5jRZ4h²šã¨Ó¨ó¨iÔÅë6Ƶ1®qmŒkó¸:juõÀÛ^ðdÀ“O<ðdÀ“O<ðdÀë^ðú€×¼>àõ¯x}Àë^wxyFGM£.£®£æQ·Q˨¼4à¥/ xC74òzÀK^ðÒ€—¼ìðýö-“¥MŠžáî‹ʽMA78H:mÒé]ÈgmS‡è8^’ÏxÉw4E¹ç©`Ãp—¤tÄYá)c:mŽVba‡jÂe)S= ¼«;™qbÏOƒpÂ""Ö?-Ú´Žh‘^ š; ¬ðš±·-üÊc£I#ýJ8N¦´ ÊY° ” ­-„3‹¹Ò>©pŸy¡³a:ÒçmhmÉSæŸ5Út5 (ay(K ›±”™¦Ú\æŽß¼‰5˜Q&š“Q¦Žœ«m‘÷PFl ¤—”Q4<ÚeƒyEPz„ûà±#“|t¸—È› »ä€rpyÊ´’Ê–Ö§…1( ¥—-¶04-^¼Yoвö).\IaÔQ6A9/ehÑ1)•‘ÚžVز–ú ©äx´>¹ Õ3I­ƒ“`ȹU–„q:­²e%ÙRéËQ¶T³È¦A•4•zT!BÆr&Y %,y.Çå$bÄš›†”dÒÌå€2óy7½RlI0唎ˆOùLlImœðÑSíGD±NÈE·1´3NÔ$G–{Åî¬ÛhíŒ)POGʈoEú¦ÇNØ™u?vb84â´->„¯iœY=—ò­…OCWªŽ֮ź->„­\‡<‘nJ“MO´™à,ý@†Û"oy®ÆzÄ\ýœ‹aàÒt9­„\–ìçxœ±Ï;kRr„ßï~(Ê Y3ó6GÚÎ^…QÑ»FC‡„¹ÑVÊ2ðÁ Œûˆ ·ÅB›Jq92ßëš)Ç3ød%î)gñ­®Yr>c®ÓZÒ¬eò­ ùq9s?PÊJØŠi|Ebß’ãZ†4 †³¥mñå4µä5kZCáÊû”fþЖoy{¥É!â5G5f’MÑ!¤WsE#—myCÜÂìªY`bøÌÕÕJVSóA=C1t VóÌ]RY‹=8‚6ãË ¡´-Îkèàʈ 4',I¶¹çttÔ n| ‹iŠ}›Å‹nN¨è¡ |PÄ–«šê¡IÙò&÷€Þ„.­´h&ˆ@Âñ¤\N[ê´’%›Ó»©¾!e¨¯\>ê;Moù¸¸dÚGPG`ˆÒàù‚,z¶:åºêeƒ6Îz½|ÖpZ_¾ŒV6-Aë»p: z®×ňÓôÎ])¬²(¼õJN{sK`ƒÙU«õý©Þ@ÌsÓ,v,œÓˆñl³’=c.àT{óNïP«õ屋–åXœQ!+V^ôfT)%*ñîa»Ò‹Åœb×Éò=@­*Ë’­…*JXp´ô¨²b8€Ò•ÿšêÔí ŠÉ*©Ò5S6¬ˆÞ¸h¯*û=¨Çµº§õ¼Î-€¾·h6ÃË…UñU8Súº å-fE–+؇8ìÓ~0Q^úa®ÏË‘Ká.dôei í]Ê%mKÅ,jGé-C%5š™–:Ԍѧ/Ë'6NßM®Y°(Í–ƒmFW™8Ÿç½<˜ð}lh*fZ»lb¾ÃëÏׄôßñ,󨣯Ô[Àô$ƒêó†lÖÍ…;ieïb&äØÂÉ0-五ʒ'oÑ5³u;üò>´-çh«¯œ¯Óµ”‹ÁËé°bC{hžÍ¬4 vÔ$²j›/yË’2)w‹R4×c¬QêoqÙt1ša…_SÞÌÊ(-¤« ï…ÖZp¥«Pµ—³ùZ‹Ü'ŠYKO¬+ÌvD˜ôüWŠ×"¨ßH#ÞãS¥¨+oQœ¨«Ð ýA[Á½º R=‹Q|R·8¼x,¢Úb!£F'ö5†Âqžü“Óç>´*ÛÑr±Û$Ð ¦ªDôàÙBW‹–¡µ—G© [Õ¡!‚Ì}AÌÑ$m‘¥(¥úõCmJ?y ¤oÝÚ8½Ý[qýÜ$N~&…Ñ‘,‚cóÉ"•Ü,^|8¼/ÿÇK¬dû•Ñ=7—¦Žó†{óioÔŠÓ­3¾WlÅ«Ãyñô§«Ë~ôåãÑóÙ½¿|sÿë?|ôÅí‡)£ãÙã^†â#nÛ7aT dý~8‘¥!zõò‰~ƒ»Ûôø§?_<ýáø)¼Û+íû iç'WŸ=}rëùÏ.BÜíï_]üø~½Û?“°aÛݧ£_˜ë·f×nÑÎSÿàË»Ÿû¨ÿâ“OSOY©×íXäW¨§›¨ÿ •™þ–äSºF~yò?¾wëËü3§4“¯ßð¯B>×óäóÛÿ郇_=¸kä·ÓÔÏÄ'=Ÿ\…xI牗·!þ›¯nÝúê¯F|?M|î³èõƒXGsÊYêk|ê¿øì»ÛŸªè¿>§÷%ÎÔÇþ.Ôv-÷ó´¿Õ¦ýøãOÿüÍ¥ýŒÖä6«MΫÞn ý­6ìçúì/ŸßVÒÏè t†xÒoИÃfý7œñ{ƒ endstream endobj 858 0 obj << /Length1 1849 /Length2 13414 /Length3 0 /Length 14560 /Filter /FlateDecode >> stream xÚôPËòÆ ÷àžÀ‚»»»î°pX¸Kpww î®ÁÝÝÝ%8Áå²åœ½Ïÿûªî-ªﯻ§çé™î!#RP¢4Å@Ö´Œt \aY%F3<™²™ƒ%ð?vx2 ½Èšë_Âv@}‡w›ˆ¾Ã{ ,È åh `d0²q1²s10˜8ÿ²ãˆè;™déR k =<™0ÈÆÕÎÌÄÔá}Ÿÿ|( )Œœœì4.ZíÌ õ­²ú¦@«÷ õ-J C3 ƒëÿ¤ à1up°á¢§wvv¦Ó·²§Ù™ðQÒœÍLŠ@{ ÐðGÉ9}+àߥÑÁ“”MÍìÿr(Œœõ퀀wƒ¥™!ÐÚþ}‰£µÐð¾;@IR o´þ+Xæ¯À߇`¤cüoº¿Wÿ‘ÈÌúÏÅú†† +}kW3k€±™% /&Cçàâ@з6ú#PßÒô¾^ßIßÌRßà=àOéú1Á¯ý÷ ÿ®ÏÞÐÎÌÆÁžÎÞÌòéÿHó~Ì¢ÖF ++ µƒ=üúDÌ쀆ïçîJÿ÷åZXƒœ­ÝÿCÆfÖFÆ”aähCÿÍÚÌÖ()òwÌ» þ› ÐÀÊÀÀÀÎÉÚ€.†¦ôl ìjüÓÉø‡ù½Ow Àø½  §™1ðý¼»½¾à`çôtÿ·ã ž‘`dfè0š˜YÃÿ“ýÝ 4þ‹ßïßÎÌ ÉðÞ~Œ†?þþû¥ýÞaF kK×Âÿ¼bzEE Eê¿Kþ¯SHäp§ecÐ2±2™˜ìïžÿ›GAßìoÿZ+im pþ%÷ýœþ#Ùéï ø{@(ÿ›KôÞ¹@Å?®ÅÀÊ`øþÃøÿ¹Ýÿ\òÿ¯ËÿÈòÿÚèÿW‘˜£¥åŸ~Š¿þüúVf–®G¼w®£ÃûÈ‚ÞgÁúÿ†ªÿ]Y ‘™£ÕÿõJ:è¿Oƒ µÉ{GÓrÒ±°ýe6³3s)˜9šþÕ4Ù¿ý1n–fÖ@½Ù €–‘áÿøÞgÌÐâý±ïÌ?]À÷úßmE­ AFÌ+@ßÎNßþýªß‰àÎø>”F@—?{@Og rx_x/Ñ` ²ƒÿã^Ù™ô’˜þ"N½ü‰ƒ@¯ð½G*ýC¬úoÿ;€^õâЫýCï9ÕÿKœï‘úÿÐ{¤Á?ôiø_úã4èþ…Œzà¿ @oüþAfÿò¾‹5ù/²¼‹5uµ1}Òþ‰x·ý{Á».‹á»0Ëá»2«ð}Èèÿ•ê}¬éAÿÂw-6ÿÂw)¶ÿB½Ý¿ð]†ý¿ @ïð/|Wåø/|Wåô/|Wåü¯#xWåò/|Wåú'þOÃ:ÚÙ½?žö{7ý‡ÿ|©@ !üÒ<ÈÛ߼ƿí¾Jß™voœ‰©ÿ*ôVuW×é૯0ÏÃ5s^Ø¢`çì~ØÃ&Ú SÑ[£…ƒ…ΆGJÖR]”±ÁÇ$ï㉽Œ#Ó¾tG‡†³µ‘ Öy“â óÀ %6íåÞ\ú‘8Ï—¦Š»rÓsò†_tˆàãa08̈àþ?ÓVU Î̶K’Ú_ ŒŸÆ};zHéabÝî_.¡3ÛJÁ?>F²‘¾I?æK>ìfÓ֛Ìív‹â=.([^d–J?OPȸ˜®ÎS>T¬uÒl=Š®¸uü¬&司¬«ýù­Ë2DÖɬïÇg¤”B¹†„@$TfpRÃp±þcJ‰¢®;eMàÜ€kC­v"íF– pJ«¸®…š8Ø ­·ß«ÕW·qÊn>ÞdkIß/ØkVcPÕ–»¹b®øÖ|\´ÓT¥ÖâªsVwôê¾ÅUl4q‰t¼?[¥)ܹV™59 æïù! u§çÈß•´sÈȰ‡¦**àø´X2Ÿ„}-5ðf˜n±Abõa·É7òábQ²°¬·ŸÎôôæây±œ>Ç£”$¹*(·¨IMEñƒÈÝ‚\$jÌüù̾ú›æQÜ([VÔXÜSù7ß^í!Ì!sðÜðêÊ:â²Ô£ƒSš{ùAÌ5ÿç®·µÓò7‚£Z÷J×>¬±ðg-;þ´ôß@?Ý%—ëä-ž‡1 LÍ5ÊnšJ²´(„4ú™¤ÃÈEÓãƒöb9€EˆA€ËY|¤sxPôÙ¯*áC5½žâA0‹Ä¨¸­ºH&¨‹·Õ@¾–5|Χ¨"g 3¹¯aÑð"–omhÐRíx»>™{ŠoV^8nbÎõo:K©ºq‚ËûmÅRxaAr8‚´[!¼LÏ,:8?Õ]Ù 2å¤úà•ƒuØ^”²9²}"°¢”ÃJ'áøìmÂáTKhãN&£9®3ýPÎí±Boø°Ã{Eµ£œå^Ìûíé5…›!çÞàwó­+!„b]Œk+† E 2`)f@dÃçÃÁåD!)¨õüƒk)3ðfÔ)vsÊ‹Fs )bg ?N‚‹ÄVά2q´Ebg#ºô¿JµmÂ"®³¾Rˆ§v7vì̆ûÕ±ä—ý ‚Ô—H@]’Ag!©û1Ùy%àò,üYë~TÓ =›„ß¹é¸T7}¥ÓÚ^k… SÎÓ¸‹J¦Ö.q›#ÙØ¶g§·ý=Tg­–ü~Ý£[Öy"ÿÜ~3·SV¿Ã ¥ <7>!ï_3=·Ÿó}p‘ÿE> º6ÇE ÙV–"—k=»‡Ø-+¶¤ÙÕœïIËŸÁ«•c¨ ‚÷ÑF¦=~Ô;ìxÁF²ýaÕ£žˆkd™0Ÿ°½Úø ÇJäýK5u¼s;Î ³`ý:p9íëËÆÇ¡ º¨2>}E˜Äç¼Ô‡³G~pÙíùâc¤L¯>n*‹m¨Mç‡üÒ-BÌ0˜ôoä¯äWwQ¤JŒV¿Cyx!À.e:ãp´â¬¾‚áXC˜ôª­æ$b ì²Lˆàë§qÿeΟA?OЧIСÉ‘+³¥fmgndŽÅí~žQÇœ|Îký4S‹~iXÞõ\ðcÇ£`óóU .ÂA—®F꬧*[÷6§À™Ý›‚rhQöÒ®k«UaE‹«we¯×Øq©…*àÄo&óüÚ‡jÏ&í\“ôd¯.‚û÷„p!+.èB‚>‡±lIV®ÿ ~¨XÞð]e‘¦Wâ-ާ# ÒÞz)õ+¦Ýåå‹c$¤z¤žá5%V÷’µîÃô„Jû -ù”wMœç¤KêÓ”ÖÓ.³zîi)Ñ$’¯êÇûœn¨ëú Ut›ñƒ)6ßEý— Ó5Á)=Åi®„½3ç¥tÓË Z½ôÚ©37ÕSÝ Mm ‹‘I‚ÆUž7¯j,ðÒBýjáxóñüŸPç2wè…’©ic a§Í§ôD…ß2ê<ÅbÔÒ9ˆx>ªX5oõ"Áƒ­ð°ßÙÏ`:f‚Ts‚^X¯†ùéøb?níŸ$É!Ò®˜HG ´5•ñ ñ$ñÁ<’TH>¬SáÚòÈÙá,“;¿ú£Ó¸Ó>Eî`6¡˜CÓ"aÀ7#› iàHk Úk J×ÿ¶´%ÅOÃÀ_äi‘¯³™ˆþ4—b°Søpd¿@ùº’–ÈÃí/ya©<@÷Q$Úª;nU;~̽O¤W‹:"˜Ùökúþ‹ð4KØÖ½AÊÈdŒÂvHn—ÂÅQÐZÕXóE.-™jØØpÞýµa·Ã8™ˆ²Ð¬’vôÀCÑâ/àÁŸ7µ‘L¶o׉ ”:Rk—Å&±à4œžÇ¨ØÃmnƒSï¥Òûµ>ÑÑ”Dz?8ɉX¹d:3×LÖü‰Ä©ºƒ½_ëô×mæ/y6jó¶šE¢‘âá—ıûK¯Á©­O‘êýÞ{~P 9kŠÑÂ/Õmm™W*E«ƒ3©Lu› =Ö×ý€ˆýxÍÕôP&›SjN¦œ]žöÇœA#$áÚíž- ŸR#Óä„n,#~6ò·ˆä‡+!€Í öó¸Žqá‚WåôieÀQj§í†Á°á³?nCáª?6~^‡k‰î!~`€Ês­Â’÷°ÓõMOÜRÜŽ^.~`w䦯óõQléˆKè×¶ƒ@‡"á$T—Ý fÇØ’¶Ö«"8j– ÝÂÛô_—úÅ„'í¥)<:@/ƒBàþEÂiXèRØ%–º‡”#¢4¢­+NØ®£{›:Ì/SÀÕ‡1™¼ J {“£jø ¤Ã1²Ï&OL¯'I±D—×¢œ4ì42xy{–zÑrKŸÎ s5ö„b]´µòo4³çí|ïnŸx$‚¨¼QÙÄñFÉy—|vð¶ ÁÝgÈ MF“½F ÕôŸÖYâ~¯ß)·[pŸðG«¨­4Œ6£“p6r³†X?sîÃnõçkapµu󸂘÷É+³@ùÿDj‡:jO\ÅQj’{îøh:æϓá†ãbÞÁ_…ÿ Æø›˜oЩޏh+n>­ˆ?a¦òfŠÂÆ—šNߊ4¸±·Eu#ÛaØcK<‚~Qöù'A`Ÿ"Ù(ßF\êl(]>oe‰`³Ju‚Y±¼Ã|KÃ.mÖ4zs/DÓiÈêí÷ ólÓï%À¬¸}KŸŸeg†ø˜³ÉéjÔ´%¦Æíè×mÔŸb¿«ÍâÒÓälú™:½ì{F%ÇáÑÕd¯‚õź[ª›W:á†jè…9}@Ü¥À£q&Ç,}UiXQkŠo<#FÕ‰D›d®Õžô’L‘Ø7‡}DB6ç#åêRn'ñ[Ä]ü+ÜÌöl‚KŽÉ|ºFbY¿&Tzx,ÍâÄ86ø2Ŷ]¥Îë{«-û@Ó|?ëºúsxl¤£ªqÌÌŠMìFÌÅã-œåU„Yï¨f0+|ã¼/YrÀ¾Òˆ@ù‹àZì’ânúµÓ$½-¾r¸-úql Iëq”äÄa4I%J¤óÎŒa™M¦á.R ¢Si¸ÏÄåÝ¡Êŧ+ûuU# ²¥•Äggi½ÂúåÜ* i=ÀGÕÞ„z¡‹Æ„re'?&cSì´ë‡¹åᄯ¹}:˜_’ñi÷©‚øÉŠÒÕ, Ô+¡£"̹ì¯HH ŽIìŽË$C’ xs5ÖOÉu¼î™ÍÇs¹éÇ+ùIxáeGFþh»Oiض-*Ót2u“ˆö8Èë7>†(NØÂêÐ#la‡;Õb¤¬!¦›þÍ3ƒžmÄ`EÞA` À2c"‰$¦3åîÍëœÚݵ„N^ß µ²Ãå|²wÁZgr½yQ!XþŽíyçí$ù€|÷‹€Ì†ßÅp u§¼£K~^ 9Ý–çu…;Èb9sëú·ÓÀ¥S nJ©µo9vôKÚpºC]>ÓátÁ÷ªuX›š¼ñ±üù·W¢¬·»è$Dê×dýÌšöòK¾$Ñ0¤ãnôÜ\;j.iðô¢IäØ%;^õôˆÖLSÁÙ=üªQùKQæ5¶„BSŒ™œà›üŸ£ýscC_.|Gâ±ÇF¸y½µ§Îñ{V­$ÕŸÇÒ³=º2‰NêÁ›ýü3dÎ^hÓµ¯æ!ód¨ê¢wNO%I° y§oÂWy¯"*—€­ÒGFJ‚°0òTÂËÖ±5x\œs%Wn=pov' Œ“ÃÉ…,ö˜—1õ’0[I–fˆPÞ#Ÿ©5¦¸s¡J,iC@ûž‰VoI7ñ̾ êdB¡ØÙËâQà!—<µcE³ŸmnûO±‡©¡è]+}â0²×rpá f_þŠ-~ŽòKWˆP{ :Û/+„–;¥µSÑtdijÜž¤ŽüðÖ<R”Õà„é{†ö° ä3ŽcîxâúÞï¾^«ôKZä¢*³æÇ1±±ŠéƒÂ=•YÅf"í¢¼ n¢IÁI<†«ã|yäéJ÷½¿Âp¼+Ûo<Ýnxu’{F9™&ù¸3 wí)c| ãEÇ»/cvÈlDÀ5œ²¶hî)ÁƒVÐò~\9Õj° 8œ£ùÀðél„ëœTJ¼…ÃjvxÅìÑÅi×å—‹ñKžô F´MÜ/=zu™¨“!j°Ù³=N:UëcPn¤\Á/_(˜;zhÐáÕ&—±ZlÑùù ×Û¨±áÎÈFtˆ¾Î€èò¢Zã†0Ч<ûcNW‹ñÐ+%¥ŸìÃ^Âgö¯FL8 nüÆØ°­ìk}Ð#Üùi®]€o{…mS%}ª‚ªbÞ V× ¨*¤y×Z,¨¶¢M }l0†!:É23ÞFEõ×€»v’/óHO¨4]h{ÐŽC¿ÉPìÖÇM†Ø—‹q’R¹E­ È*â‰TæÜ¥ŸjSò¯;Y—$tûÏ§ÇÆåó8YH¶ÌÖ,Ÿ ‘éÑ̆[¡c*Ëuä$+K¨3Ê·‘Öó‡üݲ}c¦J} ã¿áqèAÜÑë‹_Nc†rY Z¦]cínû2žö–+âe³fž†]*¹ í÷Á­*ïÀI€uÖüj.å>÷£;§¨u~Bi c5¿?æõm9¤Ýf]›LåýCÜ èš—ý`«ËtÔ¢!ÍýÓr¤ÛíM,¢ô2`]œ­›ËÈdÌN7Ð)Ý!€m.V›s#ÛàT›Iì&ƺ»`ªÎúU›‚ødvåVR§:§Û…WÉÙòv1|Ýî­P6xTë'ð„(ÂlÓ;ˆ•ˆƒ@dg–Îãáv¬ü-tMâšÕXSõ‚wgÂQÖÜl;A<zÑx­¡Ra*¿À€\´üôàwÆÈÌóòu¥ƒ|·^¢MÞ×’ãKop'–\•°¤)VSëø)¡àYõ¶MÚ¨ç_bÑj‚I[“ ‘Yp¹z­*\›¾£‰Í6°òÙwi˜ü5“-D±¯å(Ôb÷¹Ì˜·i:^€Iö8ÄT‚Üù’ªöÉù ù4ùªi~3_&Eò½Ÿûƒ»iø¸4¶>œ[ÉáOàÐöÊ nRþ?\X±§ m÷h?Ÿè1¶»N7 Ž ±H”%×ÈRfZ3Ë»¿ä#Ì Ì7Ù(D)~+Ä-ëdêëÅtw¿Ë3Öo÷+¡mX b¬üÅ·<~k5qýÝj _Î ”7œ¬Ýö£ý¶mýJDl绡ænkA´ S`ñtË㎢ZîcãäGZ*‘Âpç+¸cª»©½_ -‡œf†#Ÿ¿ö´ }\UZ¢­) ”f Ž„uÿ".B‰gêù¶zÍ—öuF ¡ 9“† å;ñimÿú¸Ý¯í“QÊœì2=`Ý`ŵûù›Ó _4pòÚüTe»z˜2LeàŽÐ'±sË “X¶ „FÅ:> Æ„PºŸí’Д]zÄh ¥»‘ŠNÇ$ tG eïôÑ^”ZhˆÉYáȈ¶ÒãÝYÖA<à­Ö†¯!7‚±KòØ_Be:Ò¡t¼ÐÓ6ÌÛ„ê[0ìèE‰úÛj‚i”~†OhÝÛb¦Ñó,'*O??’+XAž{×…Hü&¢!%žÛKâ°°‡\)ÖúÄ4<õ8Ú— «'ߪÙ¿•.€{(ê¬UµØ–h,ÊH0O±çÆ@zpø´¥4“PÄkœœ|àÔé\‹S¤{Cþñ­2mVÎÉ¥¾@?.´å|ˆ î‰$À\tP+Gâ ìG(¬û1íÛÜ™Åõ..6= Òï¡ÂªÞ~ßJ'ðwü°Y†Ã¢äŸôÔr¿iþÔ6;µM5F±ÞDÇ!i•>‘˳䲦é¹áŒ#™h5ÀKôKs2ZG±Ö¤÷Y-¨“ Ú‚Æ@6Ÿ=´(ºÛTpϹ eI±-¸.´WPT½¦õלœ‚PÑäC˜âùø`°HÂë„uUš¤x¸@Ǩi÷8$v ï65f ˆÃˆ<ÓI®æM5âêÓ¸²ÑÑìy<éaÉi¾w‹ÞLû鯈“ä(UíÙTÎUj¿dôÂY´rj·HÙ'qÿ˜6Þ‰)Ѳ±õ}†Yn|!0b& ¡a·à x5LN[%/vìGMŠžáO:¦"}£¤É;„‘z;W¬i±ˆ¹•±[Ô"]@H´µ<ƒ°ò&«·¼ˆK¡Pæžäl©3ì“À´Ewõü2Q/dÑÔåô(<0Ï‚V1tž^Ï ð×ÃâåHnú!€bò«þm ‰'ˆÀõC½VÅöÔCaHT,”p5×®o ä`Sh6ÇO/1·6ó|WYlD)Õ~£¢wãŸ1B üÜXðÈ-¦dœdH²±;¾E¡ÅuB•$Ç•¢/uâb =Ÿ (´—ƒ÷’´ÖÔ¾S"ò¨~é÷% / ¼¦ÜRÄý¨‡‘üûî­f¼'Ä—D]ÏYB³1F,ÇbÅ!\¥&¾` M!á»IDÅ0ËIxIløbÏ€¯è÷æÆã´xî^kTØ”¨2rÅÓhÅâSuKÕwÕ¢doj௙T(±ŸÁvºù¶K=Žü8ùsŽàë@¶¡ùi“¸kÅE \'•3Äù\FbþÃÁ‹ÔâÜ…ûRf”TB<®S³ÐÁ¥rT !ÃSƒL2Qn$¡uòZLÑÀY+”³%u¬Žþ¦Äœú±ÐAì‚:jQZB2àuçœÝó²b޶&Ïs6tÍëUm;b…E(èƒìcªF}Y‹Ç V¾çÊw?Jäa-é âL!¾©{V•áBÀBeý~à&@U†9³œ: ²l.sã†ëŒJr†^¶TR¡QA”é½®Ù\¼¨”]9]’ó°wjÔ Wš‘ÃÉ{Ý·éEüŽø¶¥@ Õ XÊGüíãßB|î ?±O3™vLQ~"wt×~fÃØöcy¡ÄÑ©”ânׯ@âQµíSö ±Ã…B8·¶lyK^Cųο…mm©Vç’‹¨(øþÆIKÚ÷˜W–¿4ÉQ«æ¥S#_¬'–Œ.¥È Ea« Žt™¼Õ¯Šáõh¬FöÀP²Â*êà œ¾C»ÎC¤—VxÖ®V@ ‡|ÜÉIµ³MbÜmyuG¹^XjGïRóX rꓵ¬\4è§jFk7V”m£W¬ @ØÚÛäib„Ȩ¨ –gûjviêùõΡ­{ †?ø= vhÀFØjJàxémU»öEs‰ €õúêÀ.J7rø–Zåòf«'ƒ¨lex,–¸I_ù#¬µi9 {_ Auæ¬k³ÛP=hß«‚fE„<’Š9”ÍÒes¥-<>kªbÄÄл“ UPmWkѦJ¡¡ =984YÜõû)~†o*|©xƒÔ¸¯aÍÑ3”ŠLìdÜ ³âãYŒP¿DÀ=Í«Fö¿S¥;ÍÒ¯Z‹r§ë«û=7[Ô/T6îí—Õ% ¯&lmlwó¥(p§®t„ݹ†+¼±Nî¿N‰ã·5Ç×O-ŸïÏ"àN#Õ$¶Ç˽~ Òò%”äÒ¬ý‹!2Z* G ÏŸË¿ü66V€š +õ=K­_àC¢@ék£"‘-­vœ.}¡ ñTÐBª£Ä|ô>f»Š¡+þÆÏõž¯B³‘ïNå¢Óî`uE*ù1E¥1á~)ÂŽÃÆ)if`IÈœ!$’œˆh8ò«Êo”F uÜÌ›3õ#=Ç6OdETÅFÍ#d«ãs-^±›d²Ï—ØCå{ùŸ„ÍS3¤}m››iÀm‹vP—ó²]ª 3ÜYMtFI#j¹~cZŠ~ýí¸PÌÃjð‰lƒëf™Z7“â%yü-°F­{‰0ÄÊ*׊8t¦í¼'ï¬ðÊWgfÜ?_o½Í§g–'ÁK¨,ÅlÆ©¨Ïh HÔ½Ð›áòo;\ .c«ãy eÊ6OŒƒ…‚¯ïy¼Üá#ÎþÉ{ôÛVµWnKÅéìBósJ]n@"5Íø,êô½q…ú¹*9*ïìŠßG—škx­üÒD쇻öæd#\k‘óÚú  Ó¹fDÆ&§Y3 jÇy"ÑÙNT2 ¬áT…­äÇuÓ èAmI W¿'h»dÊÓe’»_r·$RWDÊw^ _»ÓåW—íÕès'gF”jz÷ ­ç­3ôo‰áõ‘håŠÌr1ÈP‹ßšÏÇÒHw’ ºЫR¯®‹×¸ÑòeÊr¯¥·Ø Ü?6‰&ôc‘Ðyš QÙf´î µä“Õ2‹}IWí kyùAÀ€“ö_}à¤0ŒfBJèC"SDn}Z6Õ5•å CÇ2¦d˜„;‘ |ûÀ‡»Óê¢ÔK°ØªMà²2îTºÕ£L+Œ Ë\ðžH“º9î¯ÚyÛr.µ˜`ÝÊ*IUíÆÓR´¾àŠ5Ó¶ÂÛzK6Gþѹ!JÔC)CùáxnåÈnla©% ˜Ä ̾'nê¬Y‚ Íª}Nl²EÒ ³(gùXiÊ×4*„@Šž»‰ê0ø²ðå{«««BQ·%T¿¨(Û ð_Û{»iY;CÅ$‡%'“›ÙXŒnßå]”ozëqǰ" ^¢×Ð9læB;Û½—?}FŽ¡àh¢÷«pô¡Á1²5ÿÚIb*ÿÎPNX±$E69ùjãÜŸÅÙÞíü2Ö®¾“OùéZ¤YìŠ\ÀŽáƒË¹­ú|ò«døŠ…B`Ç ÿ-%‹‚Ÿ+í…‰x4»û„sÆÓÁ‡&¢p”œ˜£\¿éO9žm"ÆË+]bÓB‹6hU*Ô´ˆmPô£äÌ™P´©d«mb+>ð_Ì„¦T}ÙÕ'µdßg°‘jÅ_y¬^›!—0mô‘±¾|˜ý¢‚óë$ Ê“T{^XÎÅŸˆÅÏç¼b jé’e°&eíx ?óÒ°†dÒxŽ·=_z啳…Ôaü_I㬠½ßb±9`†TGÈdzÇ>Ki‚á_^ôäöm&s$<¹ž4¡OPٮķè5þ”nKî&Â&o æ¸ÿÅ_kòÍË»Q RÌä'? YQy]x~УiÖ  ^Eƒ‡uZž=…#3äF@/;äA¿™%¸Ÿ™ô²£Œ#ÓÓ}lªÕ{¤úVÁ‘¿ëk2¶Ö Hmí)gšò­Ò>á‰kCí"³b~k(¸šã‘Ëdd­0ʦ%XA7D¹D×·TûÃÙ÷;©î¬ãPCï†yfr-°þ%i,ÖGx}oPIÿšÄ<<Q—„ÅFc~ûð¡GнéxÛ6sž£øc¦”4¢ùŒu(;›ˆ7ˆvti¶½Ë;8-¯Ý0è<ж6ò#Ô>ÇÆ¾’äzŽkµªQ‡á´†ÙyŸ·2“£Œ=¥=°—°ç´BÀýzöñq—k)²1däôã)'-MÌÜd×3,ŽÕ6·¥¤ù ™|¤ ³@ UNs=, -•D¥ÝÝ8ä=| d\XÕkEà &%|Θ=d¬—AÑy>rX9ŽH < ´¥hà½æ¼t˜×Ó’­A¤MþŠ×ËÏe;r6”7&Rب2xØy¥©_}(#  ¬ …+¢?л8p2Ðß+²U13™Û®ùOKìH´•FÐwÞ]Æ*× ³_/I±·òš€YùUtùŠwóêhÎrÍ1Û3¯ÁäLøÅ­&ϦSQÜ ‡Æ²ÁFRÐ;š|mUë+bèýkHÎ-³e¬›Ü29K{Ú€>Ž'F\¥ð…ô}ÂÚ½eY§2xK­¦Lsð B@*m–3ÞI±%D‡ÀL„† D)d,¸W ï•Þ–Aûÿ”r—Lj³Ä¡I”Ÿ] ëÍ'^Äžµ‹”…­4v‰d;û-Œ“Á½þ¡IÉ–^é1GÎÉ1’óÔ«ÍôÓ`Ôï·2m•^q}±Â2²þpÜÝÊ14XÚvI¢ÇN—~o÷«Z§4cOº½?º:úiJØ&¨¶—ÆÝ¶Ð†$7Ëþö1 uºGõ°Ú6©MëÔŸˆ÷åVXJ£7Y`Ü2|ø’ªG‚)c†k$ŒV¶ã™ëÊ»ÝÊI®ŸFöUóñ¾¥”\Z§î†øk%c ©xH¿üòw‚«®êI•.sËr#)(Wø\ûýž£Œ=žçÖÜÝ(–¤ØÊºb¿FU¼/ðMb7Êz· þû-–rÍÆ»R Î!£#LL`W¢£ᄯ[‘“Cóœ5+qõox q½ dÈ,ha~MC"Mæéq¾ãη/jL»— 'SUç)Ç££ŽÛ°»út a˜G Ò-Ÿý \c7Oèæ¼¾êeK èv? "HW¶âw·uÅ–׌ûÈÔâ)Ÿ*treÕËrD@ûF¹aB.yZŒ¿îèOdBRÒÕêð”ú‰­Ÿ$|Í«õ®¦p3Ñlíyÿ 6¨Ws;¡ˆg}˜V k6@ʇ’ Êr¸ºÂß÷?nú”²ùÁ¦¾Å<}i8w)€Fú;åP๕0 mŒÝm´×:¯çžÅ±‘ý>ʆ[ÓS uîÀŒÑ®ÚÝyZýÒ·ú‡u"ç8^Kr,‚V? 0òlLIŸÑi!yÒáå+Œ*›ÈOœ”•Ÿª¾è–óbàÉ=b»}OÁÅ +¾ûÕõ›5 Dâ²»ÉæÞãñ÷e ¿o–¢P—ü+wsœ•?¥1iL§Zìl“úßFiÆ$Ñ7–ø&2Ž3‹ÚáŽ;Y[Y™Ò¶`QÝ|1˜æ&·l¦©Ô¢FÇî˜júáM ÔiçùÊÆy­|¼Wt]Å`w)Þ^´&Ô™˜ºøuæƒh¦‚ÀsÓQw\ÄWnÛz'ù¥áóW¡ O8be\?äè¬ù£s0©1tI¡iØ«àÜO‹ç´ÁâV5óûit Ÿrî:k¸mˆó ¼-å-'^™[•º6r*Ò´GVAŽNžqÒ´A”2C˜–cWÈÇ%4›WfP·8 6ÐÕ«öݵ“ küòspQø8º”?/!Ü6ÞQndJ2§>Z¼ýQkóIøPïeeìK.™sØà\žT,þ:_µ±EM¬ñð‘.âÒD8yˆtòõB5’“ª¶(ET@a|òkÍ AÑ>Lx„ó©ûFCê§©ôy?þR6ì„”®Í´4¬Uô!Ï×êœä(>UD—‘ñ² Í•õ6Ë.ç@ñšcœp,>qWpÆC¡ÙVc¤¾ž«Ý½‹`z]Âñ”_wýæ-K±ÝÜL5lh©.䪘´n’ªd2[%¸Á\ÉNV‚­®ž;„åy³(‰ƒMf:+—P«ßÜOâ½jTŸÄáõå=ÊVýq,€gem?øVà†ü¿k ­ñ­1«ÜCŒôÒó-·­€xJ–ÜÌš„L çT}[U`ýíâ]2\¥G#²‹Ï¼ž0Æú*Gb L—Ï æ¥BÛ§ $•¢ LÝXf{pL¤ÕD‡,j ´e}q~ÈÞÊUîxy&¾Ìù5«­£áÆ_ð“+Žà…§"ò‘Ðë.ŽYZÒ?AZMÇâUêÏi;Ô¢C;"£P߯vM0˜ä9Éûï7Àh^-~·fr«š¶±éúQç ,¹ãðÂ`Œé6€ºâŸ@&ÛKôw–h~ºÝFÛrªL*Z£ÐHßñÎâ(À”ÕdÆ7Á™ïôÿÝ£‹O>¦ËåÔ7>sfã€(Î/ƒ2·Óo3Sš «,BÊN!püÓ «øÑ¶SWÒ}X–%SÚxm6rǤÒ,q{ƒ±¢Ã“fnë“â@?¦A$ÁD¨ Si_E|ç3d÷wn¢ß’$2Çír‚°CÖ›oúsÅ©§–}g´é7v²Rajã]a#Ý5Ð'ýÐö¢-vÖ0ì ¼F)[â¡KéxzƒÁ^ÛT±G3ÕÌ{SK3óCØ=ÎW‚WñGž'‰ßÛ/xO-¢ÝY2ÞåËþÃÃÖy¤S‰· ݰ³$•¥{, F*s|¿\Ø 8°=ƒ¿Q îyÝp:ytwôFyUQˆtHÆh⇇íxà°ùžԌ٘o è]£€Â'm¯‡¤Á_¿¯5F€GÏúÔ-nhñÂG†­«’ÔÅH<„áÙ6ÁìøJæOÏÇŽYèLc–z¾RJ³`Àƒa¸Ñ¸kÕ-p!.½²…Û“›FÜ«^ùhÞA,dA˜}¡ÀJþ©8‰Ì²Æ´>¬ÀR­µœ…*ð¯BÓ[±q#Èk›túˆ¯@X™ØS¡G?ç»ÄØ øÔÑÖRˆIÿà©OM˜ro¥Q‘^:ˆì ÊkŒ0Êkë$¥ˆ¬ºÃ¬½×Œ„,b8O7/’î 3H²P-e£­nÚ²ûÖgÛ¢rþ3ZÂò7!¥›^w»yODþ& i¡­w0U–03]­£dI‹;çNLä)–Tʯ †ÿ *wì(˜ªÉB†(mÔè„^€œ G ­ÔDu zW’¯0°‰Óq“ .qË‚Ù7Úƒ3½*_-ÎûqËb"ËóZ¼drgÄ%É.»Vòëj¡Ú~ GÑBñH)5›ý|EèKp–À#Y¢Ì¤ˆå%ß®—àŽ¯I+ñ˜Lª&º¬ÂêáË{»Q¨4‡9°ç'á^l¤Ë\¦n¿ž_ÅS0{0¿$…HÀŸ©:? çÀªœ"¤czÄśʚ-dÑÎk¬ýp‚ôÊp!WGÚü2Šä ó W(HF£>—5S ŸÍp^n] ò×»ûg=ŸlýÑeü+ƒ(Ò§eé…ƒˆÉÜ5ïbÛÞ¦K¦[©6ÊÒÅ–çu…BÛbÆÚI·ÑüúÛ V˜(1sD\Ÿ·öÜOé"³9YCeicà= Xý‡«d~÷<ò ‡(Ñìtúôð¹¹+BýÂÛ¹m¥¤,,þƒT]c°ùÝbÉÅö‚šg³¸5ã´)Å]œbˆÎ¨ݨÊ9 !‹ª` ¶µ® Sì|ìýÙK¹0ÈÄ=dß’®æÇ€ï 'L®q#B”oC¾ýÀ“7L[m£9©Çʾ\WÄÐçÅ£Öj”¼ñÄëj1½Wžóò"]ÚÌ'#ÈîÝlf%’.ìOìñÅc Ecë4W~§cì8Ó…ñCT òqÝ™PON–ã¡°@ ‰rïR¸yâ1“ÊÀ)rºèÍØ£åÆÍ¶¼²æ¸è0Œ?ÙòK aù¹³Þ¶fƒ6D?÷øaøš!6ê+D¦{¼<|—ÌÅrmŸ_ž6&‡!Ô³mDVrô|‰†åÁĽ –NÓæF¦F~,ÃeÞæ¬}6“\&H‹x’eVã­•Š˜õk{J´^U!ÕéÂKæ¤Çîëµ³åBšÝ˜ÑD‹›<æEÙÍü TûŽ×_*²Yb• wŸ§,x'ðŒØ^‰ÒÙnû½fgcw© üE®væg†‚(é–÷¾óú2¢B±7âA“l¢+%yxæçþh*E#Æ >eî¤ñx6Óp¶ëg胄-ãàý ±qä©§ÑáŽüýÁò27¦™Í8ñG$­³‹¯Ã”Ÿ±ÂÝãž™ê1D¦01·ïpø;Eä^§='ÉÎOŒ'U+®õmÚ¯1“u—tÖ‹ÐŽQ /=j¯º —†Oå> 8È]Úܸ³ñ¹I#¬VKåùȤ¸µœŸ5‘=`Ýè»Có?ëˆ%¤ß[´oÊñlN`ñq{ÿNÝ/ü?’ZË,`J‰1¡ÇÜпŸµa¡Úè3¶öbtÍ]-€ÞsÐ=ÜÄS–HÞñK±‘gNE‚i¶ÿœe/Å—W8$§äíJñ©þ~†<¦ÈífMõ»¿Œ “ÉÈãoÿƒ×lTмiÜÿè›hœ endstream endobj 861 0 obj << /Length1 1427 /Length2 6879 /Length3 0 /Length 7850 /Filter /FlateDecode >> stream xÚuT“ÛÒ6½+DŠ¡w]ŠôÞ¥HI€P¡Iï½H‘"¡ ( EšT©Ò”Þ¤J/ê¹÷Üsÿ­ï[YyóÎÌ3³gö~žNVCcA%ÂªŽ€£E„€2=c]i(&Š’pršÀP®Ð¿Ü$œ HO.ó$„ÂøTA( Nh{¹DÄ"’2"R2@ @”þ”¨‚¼a€ž@‡z’pª Üý0G'f™½xÀ¼ii)ßé%7(Áz ”Ô ³"ä 0F€aP”ß?JðÈ9¡Pî2ÂÂ>>>B 7O!ÒQžWàC9Œ žP¤7ø50@äý3™ 'ÀÄ æùÇoŒp@ù€PÆá Cម /8Š`ké Ü¡ð?`Ý?À_{ùw¹¿²‚Á'ƒÀ`„›;îƒ;`®P€º®Ê%Á!¿€ WO&ä ‚¹‚ì1€ßƒêJ÷ Ì€ç FÂÜQžBž0×_# ÿ*ƒÙe58Dáæ…£_aM #u#þ?ÿ;¦¬Œðø JŠE%€ÌC ó ügCì¯6€çjÁé?Ýb¶é_{ÿEž¿ÄÁ øg-}†µPÏß$·JÁ˜‡Èÿ™ê¿Sþ ÿUå#ù7¤îåêú;Ìó;þÿ„An0W¿¿Òz¡0ÐC`dÿo¨ôhõ ˜—ÛGµP Œ”àŽ2 J ‰KþqÃ<Õa¾Pˆ! vúØ?~Ó_Js…Á¡†Oد« (þW #/° æúðÄÐòwŠQÏ?—Uƒƒ_2•€H æ 1–À_£GÔ÷7‘ÂBp “ÀŒp@ I~*†é _®ßÖ¯„!ÿaJ„a›"âaäߦ(ìûÛüGK`/$£ÌßÄÁôû/û÷5…úBÁ$3`ÙçWmg5JŒ>‚kc¢â7ÞÆ™­ª1x½¦"w~$V?­Ô9¹¾Hµ-úüºÉÅœèb³/C7S߆ï`¿"0NuïǶ§®—èºÎ›7–vbpˆ#ÝÞk£ŸcżôkS¹›r\¯«N_:ír7î‘áŒ%ÆÞº{WŒ '¢])·½J¹VéÃd‡‡ç¡âØn³úæyvß°¨ÄòÛÏåذ¥lÆ­­î:ǹ[òYÝ’·uìÆ8W»Õn]¤ð„·E„òØ{Ž+°Ë¢µVÇ5¿¡Íë)®'’£Ïu(H륹mà[Í th:ÅVõúë¹ÄïÒökŠ7»ÙMá|7µhIPœ“qÞŒ9B=l $ÝkéU¸…ËUÅdˆ&ÞÁåÊÏeú¨ÇlO‡ÑâTK–~>‹éÝÐÆ3 TËÎîüÞ…/ŬÑ3G윇ÛðfT•óXfÝ-Pò\, U»}Ä«OYúÖô;«ª?#¸N˜Â+=>²ÍÐóLlÛ—Ù–qö Y9 'ÇT¤>u^øFS©‘ÒX–%öçx[ª—}pr&Ül='nÍQãûÚ¯&vLpË _´ÊÀ6·çmz^³Ñt¸RÎáF^=Þ1 éc$éûPø{¯ì”[Pâ ÖóU«§8Q„Ý+Å…šÏÑýB1#p….Ã&ø—ÒgÌX‚ßcÝ!ÁŽ”d#²2P† êËr$Jdq\5QZ>§Õ#=õˆoAŠ:ua–\³àY ì> øÇLF!¶Â­X¦É;Z;”ÄJáŸ&cÏdø´bǃqô×ÉÛQ&Ímr„e§µaøHw¬ ³”ãUê"ú5± {ǘ‰Pž¬›H²ÀÎü»7¯Ó¼è±”>÷Gžht¯s‚-3„<àáÝ–ϪŸ8ÜÑù@v©km@€÷hê ¾øö¦dáT/ôsÚ4™4Ó&jtþˆmVÏ–ºÛ§S÷0:Zq‘k¯¹Ý8ÆX¯>7‡H¡æó!ç.ITLø°šÔ©1ED,2£NV{è¶Š¿ãÜ“8:!¤ÄÚ¸êLœ ÄÈû´Fí‰x X¥Åñ™lšüÃÛN`»Oö:NR§—¥‹÷ªêÜͱox”&%%’äTÎs7ªÞ¸>æ5å‹Q‹4ÞÅ×Ü¡o9>õ]í³(¨åqn$<¸_æqô<)Qgh%“rš3€6]e¼233þ(íñTN ¾‡.Ý™`}ô–ǃ\[ÆÏâ`ÞJ»Âpb9µ×îÐ'Ä&h„ô«s×YIÿ€,>B\=6摵M7Š'díHà«­\±”(F1¿zµðÞžt¹`E¼cr»Nаžm»öTŒ\~ãØXP„ýÖ°ÃuŠêmamÐÝ:W±9y÷y{éîåò‰GÕlçHÙOõ]pë—žr•ÙÝ—<Ó5£^!†ïF×%ÔEÊz­š~?ˆ ¥aljnŠG h¢ãà…C`cPÿænB9.;îlŠòHZ4£ âœbÞ=ƒ@m"üjo+pªy*å V¹ioLkÒ¨<ƒ¿‘" ò±¦¬žmLÿ‰D£ýUAÀ„Sq1+Òï‡|T€ ñ ± †ft€ì=0•Þ»8—–žÅyœR3o:Òà­ÀÀÎàôQ>»ÿÝŒ¦‚¸Bã5Hו €M/©é³âV>œÓáý#àlx°ë£ŽÑøe“öƒîä||¯x 7ZX= “¸6yóÒÉŽ «ÞëÒþø ÖdAÎ"Ó–2ÁeÑëG ¿ÌØ`û3B[(N6‡s8²èø6«Rõ e&ÕÄ—¼oòB¸ ½ª}ÌHÏb>tÐkí½zÇ‚µ'Šú5³‹]a ÓÑéÐ-s˜¬Í+‰*bsŸñŸ¸ÄA…_¦zøùçWìúJ™­teÛêfùÄ’'\¾û«í¥Y€A>ÉÂÖ"_÷å¸Ó£êS*‹3ÌÎBÞ£ƒàÍÌ–ÝW ,ç ó˜Gþ6AеØamLvÃä1Më‡ {¬vª2½×’‡:egQoõ ¾¥R?;úJMXCqJró’¦ì —ˆý-¢ú¯ñdúgë™Õ¨ÁÒ5ó;ò´º(±`÷oÄFq}§\ŸÐñŸv§è‘?ýöë}øð–Ô¦ƒ~±­A‘­Á¸s2£î¼UÒ²÷|“÷¾è*nž&lô¬Õ•îAuã˜:p¸Îxì'4ÙÝY)§x™£œÀݯo¨ÑYÇÄþ.ôHºª{Nà§ZÙí‹·§M‡sR½áëfJå)ŠdN͵fêãZ[5ùÈ^êìbû51à’¶×W¥s8WCëJfM•6ø,Õ˜›¬HµxfIŒÚ'´ ×b“š"µõS-Ï퇪cl]Zê™#í´ëÌ=tÓ t¢ˆZhB™ðV)½ûuBç§½ËpJáë·FÑ’>g’UÒ%·øùY”}! YVŸs=.& ‘Ò1É &ôRxl((9ÚµÏ-q…«Àqp¿î'Åê̶sÚÑð¯t%µ'c‚0K`fªHÊÒífu^n©î“}c­âG§ÎÂÈñ©Ï¹qÍœ?g¡„NBª}/Š·^˜´Þ¡h ngŒ²»¾3áÚÅ&tVÿ^}4M#rkßFü£æÞ+aµ„l=g—”ªÓ³µç‘šy›/DZʯg¥^ÄIÝÑÿ9Ï ›&Γºõi…F^¨NÛ¼Ý 5ê’ñwàà4$rü&q¿qj!’‡!êV<ÙKÚ‡WÃ<ô‰øîPSâSMÊU>š·ØÒ^»Ñ.LîàÈ8s Úƒ<ËzãÉðèQ%¹4¢´ÀúΓ]-!k“=÷,p|_ÝUâëT_¼êrDÖž¶ø¶¤Ð’·mQÔÔÜN{„¢ˆxoÄœ-z±9qìeDßߊˆRGpv±¤°Èà]Z{§l~NËtºèÆÞ¶µåÌE¾”š¥=6•îj6·Uˆ<©, ¥¯m$c]¬~ä#þý€,@v±‚®”"^—!щ'0³³JÜ`Ѥ­0ûNPnŒÿtO,Î"ÏÒM­ç[­y©sNc=ýa>2Wàæ¡©{ w˜"êâ"£tý“Æ m‹ºÕ4¸@î+ÿ-zÔÖ¸^‹Ó¬`v¤ó‰Ê³ƒ×\Öê–{ql>™o£•øhe1ƒb³×!áån“;iGaSžÜ'‰ ”söQ‹þÞ"͵O00s§‹ÔL ïôµáÙMì9gòw Ùùž·>ç¨ÒÄ—Oݰ¤×Úf)²‚3Ï¢Uƒæ'ÍÉ?³á+sßÞEŠÔd<5•fšÑà°Ûn/\°›7v³¶åÒÕÌÜLŽí/Êߎàäž¿¥ÐDÌʳqUÚ=Ö]{å¡…‚ºð Ô©‘Õ¶·ñÙaçu£q‚t`òI¥’ԙ͙“ÎJ@;æùôj´z:?´°ñ ñHÍf ƒkç¥ÈÕy—Ù9a%ºú«ùéô²àΧˆ•«ÀòPS?ÜÁN¦U&AͶ¤×k•= ¦2á¬{Ž©g%MKäDq]½Ðï_8!®ào¥lø!Þu=Û‘ÿ˜òLþ¥Qèék…Ø€ÈRI•“.ƒÖ6oGÑ[—©G:¨˜™Iè©Ë0,-ù{,žpÃiõ­.S!£ÃÙ cÿ:ÊÆE_ºÅ[çblß2:ÛycÓÃy? G/NW#5÷yüUkÁ#¢*–qk0¦I­nÉTäõGs-´–6NÒjwsäõ„”™9+T>*¡"­²§×:_KÄ]¶N™iQf#™ÆM÷xë3»l[â°o{÷ú¡¸»ÓâCQö”±÷ÁF#Ê‹¯êã!?Xè"õ8Î8狆ÔêveOÁ¦nÏö³›ï†ªÍKÙˆ™Òç&Åß‚N¾bOÂw±ù©øWïB«ã´™‡Â\‹½¼e£é™Zo†iAÒ›™¿[¹Á‚t‹è3À%€n,›¦¢’Ôœ´ªQ7늳èf3Nøzh ç÷'¦ªîFGyœõ½nEéÛŠ-y/Ö%iÛ‡'¾§Ü,1ÛW´0Âÿt¤.XHäå­êC7:¶Ó“K“•ˆðãdCҠť:ØÚ2õ AâºJ{cOÊ—™7)UúLý šæ4¹°œ=¸ö.C>zpŠ[×’¼êÞKëêÓ—3SbŽø¤ØŒýž‡mÙ{Œä^Ëÿ¼¬$¿>­ªØÇ ¦þðµ2’QŽƒp¥¶ºÝŽ-” Q Ižû )W3yQíÜwhîAâqêÏê½’ƒéÍc0+iCqæ}<Ç|¼7-#'7Z*Õ$ÚJnÿL‡ôˆÍ¼šó•mËøøf.!•Ë $ÄtXKŸ•Gù\å—Y~Ö7˜ÙX‘þ¬‡².æéŽÂã*\P“ÅàKCxZÉäxŒm`NC”À\(¶*@}É÷9‰å!( 5ûÕ'óu[•¿á3OÖÄÒËÜÏ@Ùƒ BžÜq |ǽžÝg]Ãï’s³!&Jµ—)Òþ­Ôû‰!¹²uù_.Œ ©+WM ÆŠ4$¸¤}ÒcýÍ›#ž±A¦"ÈŠn ³bˆ^<áÙ‰¥¿PÐMân™ÿv>Ã4®sŸÄ¤UB¹{ŠäT¶7dþø ÝÒ]¢S¥%…`ŠLl²ƒc¸CX_‘õy± f"КzãŠZ¨Ù—×4àSJTû«àÈï%MN<>΀훻µÕ ]QVn•ŸTÐTmU!ª!Í37ú¼š°0ÿf.Mn_.3œ0Yxr”B°†?ú0)rSzçÁ$èí{IÆç: +dÙEIûb¶jÕ‰UL¾¬.‡ãòZswe&ª»c¾¸´ýÓÕMPÁÛÃWTçIãßr1ÞÀ¹2Ÿ*켦Yx~^1 qWpGÃGHùØt©è²JJL&Q";XuôVê¨ðjhô0ŠŸW;óˆ–AN“ÎyÙ«Ñ˹Èã®ùª©d/ù«ŸÝ®~,Ie‘Öõ5gßLñƬrT+=ñ¶†uñîìM»oˆ šƒµTÖˬæ1ÿA‡Ct¬`YŸj¹³ÿSçØÚLÞ¬ä’NàXØS§Á·8åËfƒv$Âo^‘3ðÿPT­ÓÝ·™ßê»yâ¹Ã&Ú_3ì‚ýq8v(Å%=4®øÂœÂ¿|X^¸ÓÐÿnØçöÂÑnÆáQ‰k½Íø¦”h^½ýºZOÝA|ŸÅ×ä‚UçÀ¸—cñ—„_šîíÃ~<ˆd±òщQ8’û$§’qBœ3™wf)€fÃo 8» îÛ&œr¤F¸‡´6E}«Œª”Wؤ¦7’[¢¥|©è0=<•ï~ gë’ Ì ²èîN¨Ä©gßV(ßP*NýæïÙVR+IýNÜäïyè“×ÛÝ\åïm N^_òƽÊÖ²Ók7^Èã^¹~è Ü4ÍN+ð·¡Ñú£äMòqá%;Ñ×Û8¸ØJ='Ý áLkÕä#¹ •x8¸ª “„_:N¹t3ÛÆÓˆíQ1æ3::`òÓ’ÇÅEƒÝç$ËYtÙsæ¢owÐ:éŸJ†g‚÷v·"o”j'S$Þõ(,\…Ák|£GŽ¿FïáãWQ1…»žs;¾k£OÌf Ë'J´Òô«ÖÍ*Cß>x-ò œÌ}Ó&cÊÎØÏ]q—Fh ú’«tçÊ^f©PO>gðTÍY汯YÙÒsu´•Ntã×`xJ­76Ðás\›¸©î 3Õ(÷t5"rD@OØ?Ì´(¨”Ö2ørXÎ>°³Hj|NlÐõ™¬=åK*¶jŽdŒ9ǶÆÒ?ý½úR2š®,ª®¢Ir¯† 2ùð•ÞÌ‚k”ÕCQÈÛ&ÉåxÍÅ¢ÖàËî¢Ò›HÇ“caq©ò®üñÙ´#ØÒ8™Lß¾†ô¥ä܈ˆNmÀIMÛÑÂ_Íq™dÿ$YW`*Ï)Íg¶–QLä%;H+gëxSæ¡Z6$ÿ¬IÃ.r9ÜË"b?=œ&Ö™˜ˆ^iÔpß#D µãdíG!‘<¶OðÖŸ¸Jҭƾ«aÀã佤^7 ;ðÖ:9é§£µ¯ÀãÎ+ºpÝê›xô8ô5ˆØgœ­é£úøeuÄ]½b¿€œ¶¡ã³"“‹þ0¾[XãT«°M³i4oDJë‚ÿ­ …ÜŠ ð˜ž¾¹””ÂGñ³U”ÀTž«:qùûJ¶Ÿ1 ¼•QzTÛg[eõ´èP ~× …­¤I±¿Úó4àA Þ=æ¥æ¹L¬±˜7€è¾µ/ÑþwÉ©ü¦? Ñc·xpábE2äß¿¢Ùf}~kÖw†p$+I Üréμܭۭæ«ÏEÍU­~c]¾Ëžð×éÏjÖ÷>íS¯eë™—Ž˜êOT?´/.‰ìvvÈ$Ù˜Ñ08sÒ ò¨_Þ1¡tž{TOìPd~'Ñ h‘ œ*¸_l’¿`ÌKѥ͌ªˆŒù ³p¬·'´¾Ë*)a¶ŒG_"ÎAvõ„Ì¡žø˜ËI‹°`£Rrš/a­’õÀàZU×J«0+n;hXÿæÆ>™|ÛD'‡+ßÁ›H;ÏéìÀ?pùæú,Ó·}{Èê硹’Ýáz†ÑSœ¥é†eÅOšÌÙDŠqÚ>Éõ5»ðf—´~9–¢åŠ;ƒ†ßÏœ jÞÜqÏS“ tvlôÂêCUå,¾|h%Ç$÷ê)A+»dúÁåï\ˆb¤è ³hÏî(oJ ®U;Þ$‘B˨£sð¥#ƒ­F³Ÿc¿±uqN½\…ÆŽmE{· ùZìlèÓx¸<ürÓâ Œ¼s„Ì÷¼·ƒÝ‘ˆkÞ˜½´g|t7»ÛÄì]ò#,‰«JJTòSö£ú…°áÛìd/ÇÁñíÂ>ŽŒ@‘”òH=±#ˆ´››8Þ¶ kèc}ÜÌ)•X‹D¸59œag­PâËÄ£’Oô ¤ªÃ"Åï(eç ™—%´‡p§èÎuKt•ždÆ „Ò/ =#@t|x¡ÍN ¡Åšªã?Ò¢œqÓ‡ŽúeÝÚÛ òz~ky&½ø-’¯©'¿.Ù#@ñÑ´§j]Ü6š„ò,XÆfÓI!€£”€F}Y¾Où·ô÷6™Éäʰ'ùÎíºî*@q$›»³>%÷æ·L¾MÐ"úÊ>á®(<žŠ´Æ™X’ÄÝ`1Ø=Vï-«(göàïî™\8›ÑbwÖásÆ© ¿IhÏzqd‚v>¿©¼¨6ºªÅ=ÿÄçþ²­Ú<¥yY |ù#õŠyO •G¿u²žÃÅSv²îÞ$­‹Ïl¸[å×RÊ é=Tˆ¦ÊÕlèEí:y­ ¸WÄ$Ob±â<}‘%ª:T[=Lϰ7¬Ó¡Ií¼Û²l‘Ÿ°¢"ÛÂ\“Ôœ»xÚŠn7סi„&¼î» *;szPö?(ÛÊ¢©˜+0#!jnŽU-{/'I +‡˜iôfÈ3ÎÞ %Ë•íÙ[Xë÷Ñ=KŸRÄ»ŽAƒÝH#&îˆCÃY}—Ùˆãë‡z&ÙŸ=¨CÑ€±uT¹:„ˆµûßS6ÑóÚ{$½;ÖW˜ôÑk¾ £"Oú{Qܱ½zƒ2ÈUû‹ç¹AJ6ñ}á$•Þ¯âÞ\gJÑJ(n­e…Ö¢”TcÉ@åÔÅÁÚìN͆4#}–tì©*ö'i…¶§d¶|­÷VfS—ÑeÍÑ£|ü*¿ Âë}1½~·žÎÚ‘W¦)bG½)ð¤½GAÑ—_/´&ãrV•Œl<òÃJhOž½œ1]b]«p7F,[ ¥TÛiGh7Øoª'î(žœ`£¾ô8'œ±}~ÎnTr&ºÕ.©Š)õ)MðØÛÎè¥<3»/>&Ø©·²§–EkŸ¶ùZQ*¯IôU§s²L£žÛ…ÿ ¹1õõ Ùô»Þ(âñÈ…™1²w«ÜÑE…ƒ I#õ–0+ÕAY»µ,Âr…zýê|ùyJŸ§Q½²,ß>O™Ó‡Té:¿¼A?2ˆ” våò Ëh÷³帞âhŽƒ¯÷gv#µÙ6¥Tþ-VTòEïÑlé>½gÒ"·Y…1£sRšò=‘ý@›šõ9\+ø¤ LÞyB6Þ-¹À„Ñ¥ö©u+âÆLm³Æÿäw&ÿ endstream endobj 863 0 obj << /Length1 1865 /Length2 10636 /Length3 0 /Length 11800 /Filter /FlateDecode >> stream xÚwuXÔ[.-- ˆ4 ]Ò!Ý 343À Ý!%  H£ Ý )!ÒÝ]*qñœóý¾{ÿ¸Ï<ÏÌï]ë]k¯õÛïÚÏ&z mN)0Ì"ƒ"8y¸€¢Um äãy±™˜tìŽßl&=ˆ+Üýƒ#ã !îm² Ä=U(»9xø<‚¢È †¸î×h+©Ô!пÉ*8ÿ¼Ï¿éþ‰þ•ÈúW0ÈÊ æä ‚zÙAmÖvŽ€º¼ ÂÁAÁ¿ˆ G8ì>ä²sYÞþ*—Ò€î{ü§C¸•«3ηsüÕ%÷¯4÷/Z –99A 8ö¯údí\!V÷oÞ‹ûß-v€Â< >¿±µlý«°›3·.ÔÎÅ ¢$ûëÞ„ýÛfA€@ ðýÆB\O+[î_‹èx9Cþròü2ß÷áçã sXß·ñ³³†Üÿ`ûÀAîÂÕ âçó§ã¿6lg…XBlì Ø¿³ß›!Öã{¸ÚyŒ÷"ä}þ}2½×uôúMÿk£¹µu ž«°ÿÛô¿nii˜'À‡“àäåãòE~ÿHd÷O!„*A­a‘¿ë½Qÿ©Ùý!°ü3'¬€ÿÎ¥»0Àò[ï&@ ÕýÏÿ·êÿ ù‰ýW–ÿ½ÿoMònŽŽ1XþCù¿ ';G¯8÷vC܃*ì~( ÿKÕ‡ü=Ū°›Óÿz• û±‚ÚÜK›S„‹_ðo³\ÞÎÖ°CXÙþ%“¿Íº¿ÆÎÑ Ñ€Áí~5N ð|÷³fåpœÀïÕù— r?Jÿ½ªÔ þ5s¼‚«+È x/*^€Ïýp‚!žéÀÍ…!îC÷ú¬a®Ø¿¶VXÀmðËôpƒ~£{Ÿåo$à¶úýª•üäpCþ€¼në? €ÛæÈà¶ýò Ü#/gÛûƒç7ãÞf÷¼¯Ëáx_˜ãð¾2§ßð~¸ÿHu?xܰߋÝsïè?Ü÷•:ÿvßÇ:ߟPGˆ5â·•çëߪþ{ß–Ë¿PðrƒÀÿÚÌßœû^]ÿ€÷Áÿ€‚îß ï7™áûÃ}ß·Ûð¾o÷ßð~´¹=ÿ€÷Uzý®ùžë qý;ÙIÆÊÍõ¾Ä_Ó}¯§ÿà¿ÎlÄb…=3³ µ¯ m¾ú(EåÁ¹>Ä×)¨{qçFÇ㈼ʅҡFîðžŠ?ç\89SVcÀV¢ÌU9,ŽJ.FÈÃADº…ëÑ£D(Š‘”{\UOÕDq0YFŽ”ñÑä©o·e¼zéK. ™$d‰´Ã`$4WF›[.êT´%y¥Xê[S¬"¤?‚Ôý5E1&úZeöÁá©8Êmµ£ß™•pj÷.•¶YLNuIã L„)`#*,© ß ‰¶¶ñþ°myþ¬ùGAT6óæ)GAßåŒ j‚?ãcqW!MÒ¦(€[GR¡¬üÔþ oã¹RŒº©³‡Äð[¨ènš=–µGÐn­âA¬w–Ðûݾ@ÁqE–÷Dcmvc_,×ÑÞª½|J–£ô8\fZ?jØf[ñ…TCÝÅÅcüº¼`¼™y5–áõdÒgÄ>vo Ž²^É&á>„ÝU]¶}Üâ9È8zß—}„åõÀÖóå)b9ycáfžgÒ*óLÞ¤¨Uט»©ÑQû‡2¯°ªaÕQöø÷Þ{£Õ´îÃ|¦ÁR¥·MŤLG¦‘7)&ri+³BJÛèñ Hì¶"jV:uxv÷q»Ç‘ýŒÚ‘¾°x5£I”áX¥~Àf—Üø>†þÆüÄjژ؄<¹M`’*l14 4 z? œ$¼ˆIŸñpYÜåb$õeŽßÿ†\ _Žz˜3Lú¿†‹ýÁÆØ#<¯_úÑËEÁD®Ížp„VyœÖÚúšx{(DO[2Àq^ÆI´¾ämóÈOà°™Á†ŸÒY,A7ʵ3Ðê¢ò4`=µ £ÈU€«¬nï‰[¡;YÔȈY燦©Œ*/~¶FFjšú› !g»œ¸bø&K#>†C½%-«*¾éU{•–¡ÙøûEÏ2¢KÓ”Ÿj2—$î«ÍRÆÒð¢®à¯uÂU37¬øÜù;vlD*IšÎn`²`g°À=ysTЛK*d2^ñ¸9&RŸ¼Å½’†" "c¾g¥Ñ+¹ÈÉ+xSmw¶¥ìWÒÉ!a»•wì?¢Åð¾.‡ð|+D—‘n ‹®ÒüÜšÄe÷ª'];èp£Ö~¿èýÝ©ZKC3u†dímq»faD4œ1ÍUœ;ÙĺÅé‹íK|WãÁqðüWèõÃ/N+«ªu€1¡"lû/訔5@·⩳¹˜ä(p& ëíÄÀÝ ÍÐ“Ñ äBJX]p×ñ¦Ã²eÖïWí¼é;<þûÒƒ†gk•QÕjš“¸é ?\Çžn•xÆnEÛx¡šÏhHi6˜âH¥KèñY·l§—~Nd¼’Š)Z)=–Ô•ñØ^‹vb”„/b¥ Â£Æ`–[Dñà‚‡qÇä¡$Y4„–¥Õy¡uïdÖ ›Bävñª§z9M}®)½È“"=ã1gÞ,?+æÀ¨áå.—·å$1JJ@\Ïiw+ƒ­Wß5ˆôtc‡¹hÝuŒ?mÇ,)iä/²äÅhØÐIÎÞ¼[™·U–çß«¬ÖCsñÃÝMÕ<'ÌT“®}óõ§'í(ííÏšuo~Œ›KUé\3"‰§}KƒÞ2)7Ëì¦ü™žÂÆÌûå% ?Ñ*€pÜÓŽ_GçVêˆr/µào)þí¯½ “[Üeño¬ìå騏*¿Ï¥cÊ_3›m¹˜ÕƱð1YÞ šË¦TìÈ0¸?Ó$:íÕk^x1—ÆÜ¯D„Yˆn<8~Ró@‹PÓKæƒâºGò"7YN±Žñ¶R38^Ç*Ú:860œö­7WIV®Ò3%4³ÑÊVó¦wˆJþ …^8]óõJˆÊ­ÌÃ"‰;»ü\ûE¥[VùRíEFßjÅ»GÅÏ˵´ƒ1{5ˆ‚BšIßæÕ5ãÛŽ >¥é÷­]íÍ_PÔH|¿Féö%u–âb¢4¦k†É3oêóÇ 4iX1“Ÿ!½¥ýA™¡9¸A²Íõ­ÜßG©tưè$‚´÷-vÛñ·.*¡àχÁ4Ó·Ae×ûj2‘,ãNùãß¿ !u¼®zŸæ:¥D¶KÛU\cëäsUÖ7‰’˜HnÅx¼ù®ØJ·-§š!]šÅT}8Ù#í¸Á•Ú>É^Çߊ6øäÑÑ]‹{#ï§É§Ø5Ôß-®õAGSêõÃÛux*}jd~¦r©¾I;ù_|Ó^Ë]7èh ˜ñN±¥ì™oŒäÊ4;3‘|´ÌÝ’÷ñsÕø <6¶°¹¡“tä"ÁYDó!{”©8Ù–¬…ÿçp€5fÏ„3óÛ)À)¤qmŸ=AÑœ°¤õs%‡í49Õ€§ˆô­™¹‰ ³eI~[Jƒ|ÒÙá ²ê»µ¼(BÐ4DáàvU†€^<_`-&•ßÙ›£N@^±z¦ýÔä¥åkV4ÁšÅ°ѤŒd½vJó,/dWÚç|ÉFó;7% Œú¡h†z9ðBµ#¦•ÅØGÓþØ«/(8Ûâôså驹~ŠŸe›JiÃw)_'¯r„нóC|æ^œó&<ˆ+º3`©à:ç°8z„XÍø€Ø6ÀÍBÇK|UìX<,ý;žÂ‚5ÙpdFÏMâ¼åP´‘`Ëw˜½óré—._ÄUŒEw¢äèIbnRÛ’F¿;ÓDÇ RCå‚+³úÁ-©&] ˆæVm8ãçö–ÏÒx[ã5UÚƒ1Vj¢_ç þUI?ªúøwï¨ú¢§Q}æuiÎË\Ÿwt{ms’ý=o÷ %ñ¿Rz=GOrÂÓJÊx3ÂäEì+T£ñ’¨!ê5…J£÷X5n?®è-"þâÚ<½Ý³Ei'I8±7°00G›ì4Ä#M¨Ùm­bG²ÿEPö¥Õ¹5¥ÅlŸ=¦qöoVGØÛ™¨Â ·òò˜Èø›>8J,#ÝDÚn°˜Ç‡E¾ÿ]×ÏŠÐ=W1±)4øoÇâ!™ÒʶÌԪ؋+Ñ=Hþôm»YÛI¢Ší•Az–·ÏÈÚÏݼ¢Rm´7_†÷£õlîŽ%°ËñLÐÄzšqÜpÎùz Âõ³t'÷ŒÎB1tv³ÔüÙýŒ ©ëFº®¤lÉ !Óu‰…LI•W›?–ËÛW KÖ¿'Ü&'µ>f€+Žü3ÿÎ]2*@°jv:Qiøk׿|vßãñd¦ ºã¤Tiƒ7F'È!ÓϼóñÁ­ Ö¹©Çïy{õZ–üÔ½¦c´E\×­Þ/I*Þ‡s>š@£ŠˆEæûI$j¿š ºA3´ß_ÏËH[Ðfë¹ÉO[O•¥pG€ú+–9.ÚmÂxùd‚øzdº?5“§‘LùÑé}Sœüøâ²v~ ±Kc‡ÕäzL48Z——pú¤Öxåf7;¼U^G,Ä÷f±¥dR0Êð y=BÞÕF[’@½dk\0H‚ÕÉ+8_¿4¤2uŒbhõ=šë¬„Ó„¼|<¾Rä‘¶ÄÊá?ÂyMa¬e~[+Dâ9•uZ¹iÜú3k‚Á395×G®à)6Ι°¨Ë¥¿k˜×|”É~¼wñJ ß}¬ÿ©Îm6ÙDµãíÌû-™Ÿ€l­F÷Ò}Té“^Wø4Ë+¾Ñù*-} ¨þ:ŬÛÍC™(·s$†ÝUºÙì§,KÅrï¬q¿.Š•Û.&B¶ bûÜ–ÖýµbSêŸ!7hîïľ:6C‰™‚ÃÈXÛPƒæžxç}¥BÚ XÍö1a38q9 ×`ï&ñØat‘úJc’1í5HâT~Ç6Å`š³Û®Ç-Îi” y³=—­~,I!DŒTMázWU•cí2©¾ID"g‚î%¨N oMØ[šé÷1q9šJp•á4ªpÏÞÂ?Nd§R½@qså$y*åè–^¼˜PB[QãꢪيԻ XÏE[AŒ}Å gãTŠU3|‡î€ö!ÐmqÞüäsgÃ]99õä×4NÙéÑÅqu…/â麌hÓChûD`‘úªWO;-ž!Œ–³ð¢êÚ £·)*7n…R¾ç"õ¾©ãkÙ1ÊM'•VEF¤±ÖŽ éô×p† dÐÓt"¬˜^~ïí®Ñ*ªx•;³·mãûÑ$¥ÊkªÈ½l~™õNø"‰Ýì.£ÇU¸6Z½ÈÌ4&:ƇÌm ’ºŠÃ×èï¶L\Án¿¦A²j>íp‰¬ö4-9Ž’B§@ºï*ªå|ïÁHÒÇÃC=þáIçÉU:Ï¢Á¶’³O—-ÇÑêÑ„šäM/Ïõk]6©NåÇjjE-g8¾7”›ZsÎ_g«1@ÅU“NçB@J5  ì•‚fŒÜs§× ¯#[廌ƒža?ÉB§Ü…wÅ*<Ò}b¶–lGX+ò¥Q8?ZŠ)²SUn Öe ¿Âžãz·Âã+œ69NÓÞÕÁ¾ \W Ÿ{!zgšé0à V#}ËÙ2äc+¥$^>+¦ªxÄd,Â)áx¬Lã>®Xóöc¤Ô"7ÒšÆgýIcàß,ÑMíG|a^7Tæ¨ãº‘Ìxý°ÿCM°š„@;Ïë‘;ËHœ{Ì„Í ÍÔÂË ·ðÂÁ'wP2¾ë޲†VÚ}µ†e´±iúúâÝÄÅJèÇѱ#¹õ©+d’íJ©–]*ù'ÙWÇõ)‰ sðÌ9ÌrEPˉšáxè2$Ô ÿs5Œ/GþEØ5véé]Õò¹Û°XéÕO~†ç‹"%(¬^èØžÝòŽ|\u@ra@ŒdB}$§ß—Sd§ZdgYú’ŒƒC,ÛCâ µ×~¦éXÚÌÀ€¹C—6âÅ«Xvºúv¨ßGè“bbã!T’Þå½>¬S ’¯2cNàÂáŸÁžêÕ[؈|¨ë¨“,Cï1ñ FJ®X¹þq»Ý{¡[8‹'%2%•6\¥ô¶Í„þ•«è…ÁÍ"v. SÜ_‰ šHîða mx%¨ö`Œ±OM8 â»Ð¸÷M—OËá,Ü¥zêWÝk|âŒ_ã,åiÅN.Î Ìr>òÅYMÏ·pGœ!ð_,€Ÿ‘fÖ].©Ù޶ÓáÎö}Ä:z°´-ùax°¦ŸNíâÒ“¶&ÿÒß<ÏÏ»ëéíeÆ4q0™ŠÇ@œv>Ni!v@Šuƒ¸H§g˜F,Uϧ$¶ƒžÏ Ó$Á€;¨µ=2yc¶4\ÄGX>ÛïG÷Ü«y!&\ž`³¾H÷ž  Ý/Y÷·Ë’ÍAñLj#MäÀÅ2ÎͶGä‘ZB5þžÂ¬7OöñÃÉÀ¤´’ æ%4 $KR¨-åJg³zkÔ@Z‡QTšò6©W /4U¥q`­7Öë’O° “¯¾Ë‹©˜*”òh˜Òý8™ú‚gïÄtâ€UH`žáƒT¨‰Ë ©U“¶ýgJ+䨛ÊqZÆð&‹"< »ù™szL‚¼L)dFMƒ|)|ßbGÓÂÏZ½>;K#¶Ôë cá[‹@U‡ÕÖÍ)çä--çS·ƒäŽ“Z\i€ûÊ7Ó½FÌ&“^ƒL˜Ë+,Ñâc¶‚ÌL¾š•"-MwþЛþ8B^4Àçö,­»`fÒ]¡ˆÒü—.ùâ!CÜ¡í»¨Y£¶ö_Æ–¢d)½#Z¥…Zé²qå¥JK1rÜÎP. è×gÅ KÀ›ydyN°æ/G櫉Õ\0P”ÜAöZ±ã:Å:îŽNÂYˆD¦>Umªý¡·õœ÷ðÍuâÊíNRkÆX8§Ýw‰“èÓ8{®=“<<ívÉèÍãð×òlâëÍŸÇYöÜß>WI(ÇÜ…|SQ¤&xÉó1cÕç£ ’i³np°ù {,ײè`q ý öƒkÌ|b,ìÏRÞ}Ÿ°®JLÎãj¯a 'D¢²óUi&ðRØXVø ¼*Ñž:æÂ†÷ŒüÐÃÂýù^æòÃìÉ*ªÚ÷o²¢½ ÝÏ—òsÔj³e×Î;N‚eIoušDöÖ—7G¿‰ãßõJšu{ëï†Ü¼‚›©Úmå!{§õÌ®Y[×­BpϦ#tD_I3LÑîÖÊ¢ø‰·›_i“ÉmˆR·¹×ódKŽïéAæ±lí h‘Ø¢{E§ÞÈ[`¾=b­…¼yÖ&>SÊùfÈÝ“ Ãu3»ƒ ‡½Á¡»{ºjCZX?šš?0”ù(bóû; xéË…ƒˆ…œ¨8&º—˸Ÿ°ñ+~ê2ÊRè´é¶šöZ^…œ y‘­Ó$ﯹ‰¾¬´7¼yu5y ¡u>5MÃj#xÃèÓ¶.3=  ÿ¢»ú™ž|°¹ŸZI˜}»€]‚W¦B½À.íLk`æC‹ § Sl_—Î7™Y$"Dž/x=Ì“‡3ÕŪ”(Žê_ôù‰¡†4i“'«sBãݸÆà‚} ‰šÖ‘ðù.‘²;‰ÒÁ2CÆ%…ýéðªêÉÐ5‡ó/"+-cézYëž_PØ>—kzóm½´Óöéwx=üùHC~-Éû5—s,zÔT mŠÿÚPG>ºÜwx8n“V\| µA5Ú·ÁríÐËÂdMðÍ·[ä“ÓÆÛë ×üÝ}…²5¬TŸ* 7ºÏŠ!ô>ñæ>J£¸èóŸ:O`¶Ö1¼'m°ÂÔ”•RY¤È€ó–gg2[êî¡åGýbxÆ6'X¤ª¡ÝíÒï¡*Joz¸7«áÍ¡¯³çu°>¢Ë¤®…7EqEËl NÒ=êiM³ø2êGÄ¡bƒ„° G½;ªØkH]ã§Ôë¶ÓU9Ú‰UÀ]f¬ä‰ñ‰å mÄCrÒIçûøE-êëÆ6±$˜U­“ÂüÏ%ÙÍ_ídŸXîàè+VZtâ>aÝsqÿxR“½Þð<\¼JiýIÜ.×Cèù%D­ø Dw%V™ýÎQ•ri“Õ÷óŒÊj®æò»7å‹«ƒÕóʃèüýùþ Csý;M!ñŸVØ»ýÝP1ßñGŒç¶e8´–[’ëS—’îÉ\Îè¾ÔIhy·øqcœ‹;lF‘³¤lnm…Âÿ¢¦Ñø âÕñrL'ÖíÒMÛà’uˆ-¥Ý2ùC NÉ÷ÈšÊö]OÌ÷'ëvØ<äÛÆý—i‰ûyMmÚý—Agו$Ó:µ[N=Öæ¤û¹ž³Ï{•úV UL ½ïÄxYËTô]“`Ò–sZ~kt”¾ìRÓØ'ës;à«ëP¬¨…Cöa]mD¨eéMm9J1dïÙåÃŽW %Ó¥³dMo32INEÆãÁ™Îi;—>:Öà,Lb:o¦ô´Ìb“9¢Ì×OB ÒÚÍ!¯p§¥³ß¢l+Žø×5gß<#°´ç2 m‰[kõΖ>í$f¼ré°xh¤V•òB ϯ'\ ¸ÎP/Uèíj§ÁtdŸZ„(ØÞâ}É _±„_‡²…'—XnµCLJ†jlú!šÇÞjŒc g[TN“] ›*¢1O : ­Uc>ŸxXúð\Ù˜q*/)Êž „ýôX"|‰“Š¢Ac7eV^g–;>½éëueÊÞò׊|Í©®+g7êwÆ®«ë0Óê’zÙ}(ûTP‰‹{ì!¨‘×Ð=„œ+ïMªeðv¤µ4WµÍçBì÷&™™)§ó͸æꎔï“Äxr¹HŽÃ˜„Qá©2L_Š#[5ÚÙTßM‚«Ç±Á$0ˆÙãáÆ§ö´mWQzÏóa…»®³:9@>©‚çÊZê/^ñ<áˆëuWÕ0]ºb`…È ¯>qú¸q¦ÁW1I›“¡_ƒ†!ÚŸ¤ISý•D`OÍüê‚ú¢\‘w•èç[Pÿ@¿¦Ä’˜Ãƒ$Ü•+G ÷A›Ìgô…,êw8§(·ĦÃϵîe>êFl2m’C924DÐ\ù˜¤Ž÷¡PߨvuMiÖÈ5}'=µÒ@6ß1¢Ë\ØÏ á¿XÔs–Ò™Ù¥æóÒ·_ÑàoÁ°=‰Ã2z;ÜgÛâ–}õa¾Ysy˜x¿%·Òb`ùðÊéÅàÛ¹1 Ͱu KÍJò“MWƒ— \,±[%ˆ9׿ÅÜhbLŽ2jb£È˜ê<½Aæ?ßÞqZ¿è{yÁ/FÄúÚëè£Téî,–”Ë;¿†&>£ºä~.çì7\/ªæ£ (½–ÆšóÆ V»>¯*¨/oدtŽ6$7 tE:Þ¯ž¶æXÕTËÕûm'XJä=úé J&ì1¹¤:Ã~@G*ÕU‘G]‰ŸWšOÌ(îºæÝJ!¡/I)x;侇÷®_šˆ]ScÛý¸H8W«oDð-Ήí6õx(Ùn"mJÿ·J½Kø+9åº9C¡iÐÈ77|ï¯tSVÏò?Ó‘œ/о01ËÖ«VtøP9/ûv 1¦@-ù]ý:–œÂêêM»ø [àì4KÌ>~65Ímî¨@FnÛÓ K ¸h¥/¡ {%r&-¬Gº3¬·”Ⱥ ø±usÖýÎ’@%Éøµbñ§ $f{×ÞéuÚá>íÖkïA”ìVÏŒs5':‰(ù¯xž³Å#K1_yêgøI—T1 ™9ÏAY•â\ L3“¡ŸBÆÙÉ ÏLÉM˜0ÞZèÇГìØÞ” ¼„t|ÝúΉu‰»ç`ʯ0 F®ª3i¬çA,‡"N9­FSeª-V²ÚF…¾«à$äþ²÷™£Á–A¯=o·QlÓ¡ÅûJ¾Á¾ly%@W:"ïú€ŒTTÛ*š—Q£+—8ûèR°Ì,**5ùÌO…nó¦?†CÓ¢Œ¼g RûCLáС—/e(½}êQÓ«Œ¥ÚÜW+ìk!êÅóñUr[A ‡y `ú(?Ê\jÿ ’Ô r¢%Ñ½ËøR…Ìóø€"㆞M‹²i$Zx>¡¢gäÏÜ…Où<Ž–M=Ý–ÓUZëžãs%².Ê òpí€;9Bw>-­;„÷»Ë9/„{5¿TqÉ)ø¹À#:z ³s7.QæJqÊ\Jåõy[ðºJà'j¬,RÜf»ø9±Øƒ›P62ug£Î§£:V}X ¥œˆ‹gøñ9Uí«ÅC³¥øSO2!é)w®fÓ8˘§¥ÈñûF\ þlLJ¥†Þï ý9¹m­$´ÁÕܹ³qF_J§ÛƒÆy©Oéçmºç©(ÜŸÞùû tÿl„ #fãbAî1ð3Lõº¾‰Ó=½ó×Yì@ð±ãž¡‹¹%;‹ùê•W¨V ͽ%Ä0:áý±$¯&~¾v½ ñÏcšÄ¦ô¿;_bž‚›ïlßülGˆ³=JÙ/~ý)ú-'ZÓç#VEtâ ³±(f¥Ê¼'U?ÔcÈ7ž²nãÊ»ÖPú$…ð¾áí«’4U~ž\ ÈÈÏçùã×S}û»xDZ?h1WÖ‡/CÜ%‹Xü:{ý‚“Ë0üþìÞK!.Í!Ú}xk",Nø¶pƶ PÕùNLš–/eb6fåp«‹»ŽXw–ÙZ^? Óŵcx1é3Ï¡Ö ´ã›t'ŽÞWíàKå}{v‚­_éÙ˜eâèÚWi³ÕY˜N¹J1.*ãuóÔre 7w×tõnË%¥ß"µÊq'=^³8¼ß÷”"ÕrúÉÑòW{Œ¥€µNô„¯íÍ©TIœOÌi13•èäìO›÷ý>¼ïAfZ´Pù ©zpŒ*‘ UåÜ2;;-z{¶4i¤Ovlã#W>ÊSüN½_ýC„h‹ }qyž¤iǦI,{—FP¤¬‡6¤Nƒs©:kE §á,ì& êŽSÍŠüT6|¸üí‚|“ñ熜\°ÓTªn…âdçÃö}G·‚?H«( ûo@I •Ÿ|æe:Óy¯‰-1£•Ï6¥R11S'MB£Ò8NÅZ¨ÙP#€ a'eÏjëuŠŽö ê€*†él8F¤WËÙŸúòÚ¦æi,bG˜oàéú2Š–È kÚš}|Îû©fÃ\>ê’À+ în‹(¨å€™ìG´<3‰bfß·@T·¼³_q+0ŒVˆN™sŠÊ†Qö髺cí–É‹/µÆp¼ü]¯w|jæ”õ•4={¦YÒèåyDÎÖá¹Ú pëèÚš5zÀ âNOµ—"ÄÀã~Ïàßk¡]Úí q"ƒvâ­D¢Ž¹QÍË_Êl½,o¥‘'=DRq?=˜¶?¶%›òä,ÏÒÓTŸ_ÌÊûôÎôÞÞ|VÈÒðÂHíï¯)4çtQ1‡µ¬¨§õY‘}!Å’’Rt%dƦoÓpAÒþ3%{Ót$_)ð¢WµÔh›º›2ªõé¨y1³e»‡=Í»Š¦©³W#¶cÅ`ÒcÀà Í÷ði«¥o4 ‹lƒ ŽOXúâ ìi9ªhç5Å„œ¢c›ê4ç]áÚ/„ì%½\$Ûi¸h»±À˜ÑÇŒn{è:Ùs"Ñu.Çḛ́•¨tWÒ §"‰Ãi§‹­»¤ðY—Vtvfá!ᬪcØL³¾R’§eÒÓy0¨q†!|à~æ4á„5µq1A²¸;«!åk ENäéÏEOs WÉØÞYê#ÿPñíüX[y¡5—Ô µ*Ãù$¦i¼¬ú… ®Ë—rÐeÄåeZh¡Dï2/ï6=%)â_PMÞ¼“µ—¾¤Z÷ >Ni#¸ÎQSg[@˜€VËc¤†6)YTÕµms“ñRea²ùV¾ó¬ËŸGCù2W­¥È2½c]¥œ¯ª««ºøD—¿D£Á¬ääZgEóìì«­ÌÖòó9×ó¿®k) —›xl°Ð¯ÔÎ.¿}wÆ(׺à„rgÖ¾YãjºÿÓV,Ÿ5¶W«êpÁɨ’â8úeÛ@.eu>)kŒk•¸Ò“©œÏ_‰0dº¶=Ëé}c"ìóìo1³+çШb=kz~¦ ×D&…7â!ê5ö€ZaCêAа`s7{“S÷+¶²Æ½F—…¥‹Ô˜å;§ Èî)ÓS s[ ®³E͘7–oÖ}½i’FXj¬}“²QÔ¢hè÷bŠ—”¾_ûºâœ–î*S{w…WuñD' —l3¯–…Úä-¬ÝŸx¼¨mø4éAÈU¦þÌzï^i>+;X•,‹EdRH¨žÓ³ÍìÉQ)þ·±=%CêP 9øœµeZýSy2nQ2Ó´¶ã5X[ÈMƒ³µ6gLC'XÓ=#5]š›÷¹ú#†£q+â×ä0Þ%ÄÐ8Q ©ŸÅ$ÿxªXsú¢^8–•‡1ù æJÚ26±Ö±2zE—~ŒÓãT’A•Múä†h3 ™hécTmb””öÓÄ! J0q¬J&BypN^¼ÁÁµeÛ£yŽ6v¡Ìˆ¦feý28ÓËD¥õÅYr›hVZ+ÿ›^ôÊêþ2—†oÉ™ ØrVq‰Ed€â•Y{ 1ç5-y”zÚªzuuzU‡œ¤!¸ Ÿxøˆe¤U…“Æëè ¨G̬žuÖ: Eì'y7ýWsÏ TW–vÂtVúgåT),q˜„è…g˜"Ëú4ÃBƒ”_><ÏÃ|Ñye8¬–ÑGAmò¢É#vP}:.zÕš°š×Ñ=›ŸŸð›(|ƒw®kJ!L*„éÖ¾·`YÍ¢MuìˆÒ¬4YÒ3Ÿùh\þªMk­¸]¸a¸r\£ÀmÆPJ3H±m¨uëK‘wW…=L0¦51Ìb“êu .՗㯨£–æ$‹xƳ£B“D?Ú’*"µ"”¤ ã÷€MÝl endstream endobj 865 0 obj << /Length1 1460 /Length2 6459 /Length3 0 /Length 7457 /Filter /FlateDecode >> stream xÚx4Ü[×¾è½F¢ Fï½÷Þ"ê c3:Q£EôNÑK%º„ JÔèAô^‚ B|“rï}ïûÿ¯õ}kÖšùíg?{Ÿ½Ïyö™YÃʤgÈ#o·«ÀaH~^ @QÛМy@Èû[˜ýO¢-GÅÛzÙB ¶v(¯Òm*òú[T‡úC€< nH/ýÙ#ßÏ4¨mV†Ù+Â]]Á0$ïg}J0µï¾|×÷†ùÿe9@`ö?Û°÷tã3†AÜ=ÁêJ8(ïÌŒÅED„ù`wØäÄ÷s#_7ð/ç/ÕC ¿Ü à€jq£>ðü¶^`ÒÃèÿŸŽ[xüü{ °;B`xÿdGÁ`‡ß6êü= > J~üàÏ×ßO–(…ÙÃaPß迎˜OQGÝPOûOË;à>q¸ÀÏÏ/þ;ž-äOÿ«s€Ä—‹Ú§¿Jöú£Ž? øw.8J¹`Ç?B‚Poüÿg¹ÿ ùÿ©üg–ÿUèÿ]‘Š'úËÏñ›ðÿøm]!Pß? ”r=‘¨)І£fößTSðïÑÕÛC<]ÿÛ«Ž´EMƒ<Ì¥h~!^ Ðo‚Pø€íõ HÓoÕüÆÎëÁŸ7 * ü/jÈ@.¨[’æ/5Cÿ^W‚Ûÿ6a€­‡‡­/ê¬Q–0ÀŸ5•ö`Ÿ_bðñÂàHTÕc Àî÷ó`ù">;[Ÿèo@e£6 ¥ø¿!Aâ‚‚A?ÏõÀç y"þP€' qCU÷ûW© OÔÜþÒª¿ì_—ìáÍNÁA’áίÂÛ.jäi½yÖ?`/-wD'˜÷D #Ù¦Ÿû;iád©Ž»+ØØWÝL×›)‹›  å:¸öyø6'd1M-‰¦Ü³ªpÄ“ßÿíä­#˜ÁNã8"š½Jr˜¨OOdciÁžl:uõX´KpóåFáubóø.ÀP|FÌ”F‹|*ŸÛ±‹þÄœ‰e9`þ8ŽÔÃ"ÃÓHÝxäý $î\¡-–ú›ïªE\æÀÂÂûœÞžtÁãÍîj‘ª2jr? ¦ÜÁ¤>jŠÄ×46á3ŲÔfê"×¶E ÑÅï½­‰}‚ž Ž:Š!wt 5zÖÁ…§¤s»é¬×²¾ñÜmJŠvº_“΢ÀZmv6qX-ÍëÆ¤d`×uÌßhOÀKJÏ͵Ðçcq… ZmŒÞ½°yš•È/`™* ëûüBADÊà6è`:w%• £a%ÓSÇÐar^ö¼wŸ÷ë‹H…c2ìt«é}Û@Wäœå€žb<$Á¬=k÷ÝNâkuá³$&\Ê"ÈZÍix§5g|nüDA^.¦^k‡ªä9ñ™QæxA¢|#’i#­M´ Ûæåƒ'ˆ É\Êè_ÎUŠ =—m’N >š=º¥¤¿O\»zG¿ë–U‚ÇŸ®•f^Ç'›v ¤P¤q7ájKÁ|<äHtj1Oá‡q5Y飇yO¿Ç}ݿʤÐZˆ›ÕVƒÎ¡Û÷rw%)ûÌcqÁÕ*í`6qLü(“ %‚¯b¤¶£ ¡S0^4'‡F¼5¨¬æeÁ®Ë“¦’ºKU·£³nº²–Z:>>?Ð9FQ¨ŠØw/=ÁOŸùÌtEÞûÊÃ;kínZšºÓ*…j7cG™ -•œD4‘˜ÇO˜é)i] ¬Z 4ß©j.ƒ«¥úãñSùŒS“÷ï°w¶yR´Â .Î.Mué ²”SŽ‹÷3›ã'ÐO¿³¥¬f@Un(i‘ 8ñ¿dPɵûR\5È %P¼°Íwqà†Óy9LÂøFîæhïî3ÖžCeé@\‹QÌUVA•–å®kÄ!%ášåºýãqLêwb_M¼ú¾y÷«Ékä„©dfçЗŒ>O9Ž{åH®¡²‰;ÆÏsüV¿~Õ´\W)…b¤vœˆù`VÒâŽ#“ÔLåK»ªV$ë˜æLG(¶ ‡™ÀëÒç½Zr÷’d»êR%Srj¥?ÉÜï]-©èxÈ\ñ­15‹jÌ`ËË@1u¦3G_É špBÎú~nå`Q» )åS;覼ú…žzy]¦÷lY±½z¿šŸ è\0Ìç{CLȞေžzƒ¿æpÙÍcüƒæÕmùû|{^oãG,ò›¿Ï04i±êæËífª…E$“J-ê±Çi¼œòJœ¼ßËRÏìd\¢-{Z·+»œìÆ5.êE8M%=¯Ç\U%J–+ÔI¶:L6Z¯sh‰ÐøêG†5ër†×TE'6ÆY ßWÅ/¼L2ð{Avrâ°í9jE¢äôéTj­À?3sE!upg*ðòMïl.BÀ]ñÄwq¥ÆºïåÄK9KƒXr-ŒFÔ=Œzã–fÔ•‹®4Õþ ¹)c@Ré'èý=¸ò“Eª ô™\„¢¸îsLØ{ç—¯‡g¶&Â[C­¦Y^³Å®Ÿ[’ˆASã×^#šÙÂÃßò%¬¬Xqf1­¿ ¶%8A_®<˜­[¦ i7dΗŒßJ½ò´B3ŒÆ“>ÎQ&™/ð‚Íg­âVeÆ×Ž´1?;/#³äÃþÀè5ÖÛ/—7‘Æý„. Bxëº d;ìëŸ_­Ÿø<é_N SŠvèÄŠøV¾}” @kž^Ö)¤ ][¯4™[î ë´-˲<Ý’¼¾l‡Ì‡&g8‹$ÞèFyuY—`lÕ‰'¬0ôö™ôÝÎo¿M =oö9o{+YT÷ m«³wÍk†AÜß—$޲A-É×M’F©zìL½ÏŸ3*qdnY¹m秪(ËÌ^(òfÚªMû òt°È@o‹eãu³ÄMûGÎþö8å{3[Eöì•Ýë´<ÍøïÐøh{¬_â#g;icg>Qá»>®~pEó®@‹PläÍéìSÐàIÜ|½2&[K­èc‹æ§Ó“Æ\ÎŒ¯8î¹ÜÓó sßÔž­EyÙ·ðȬµ‡b¯mxäêp€¤&Ø×´ì§9#µ£geHÃÒþB"{Ù…Z3 L2Ž0ó°ÇïÎ]tLÌßì«ÌHm)Ö¥m»ÔÍwã,ìsÌMŽX ̰Ñ寮÷\Ã[Ñb‡‰¶¡®að‰÷{eBÔúë-Uáù¾ÏÈ’ãç¼I¹%æ1¼KQnÅ}|5‹‘¤Ý»;ÍWuFO¹‹œyŒq¥Ί˜ÕS¬ßöÒ9ØdV Ä/Þ#8ÀÉ˵làÏ—§Jx›Â°YñÖl2ùe)Fµ´*ªé@kJî·è‘g½/ý]•ÙŸ½\h0ÂLPÌÑy·;µ6âÚïS]ã¬ß¸V÷ƒð€æh¥[ ½B,jÑ; xJÑ-žÄf›ä,ÉMïOÑ Œ¼Í9:'ŸäØ]£Éµb¦Ù…>oÒÈî7ûàdHž~Žó6ìàläNݤQ[ Iwf¼Öð¡Æîáñ¶•¤ôÚ¢øH!õìS“@ÓòEãÈË€l´´{Øß„MÂwÆŒcvÜõBϯƤob³P¿gº„uôº±·Yâ_Jâ×Ö“¹ðè¹Ýäƒï×Ü+à\! L¢Ø*šýu?é0­º!}†Ž8ˆw›O¥”–¶¿yX†4ÈYn‰Açe¦óã;ÑPwê?¯M¹ºhDÂëåjjWÒBn¬väǃKVô)¶;LN±‰+´P&8Kã=±”Tl=ó÷ƪ¶&çª,7y´áE;#¼ùÍÃw†R^—R}éPù™ª©ÍJ •¾[õÖ‰ê#×`{9/6ߦ7ö»h±¹ÙÙ'Y~ ¦v¹n6u×ôÜ…2fLï]SÁ_䆡”„¦7Ìã&Šj[ÏÄ>ºPM&bIù^äèxئàì•¶÷ð÷¢#uê‹ÞEA^7¹È«[FrRi_5lܘ§ÍÂhBŸbcgÆO²•rYÅÑ÷%²_äЈVî^±½îZî)L?ï`£Ù¯!½Ù™-çNV7Jå?òewÝCHeo‡ˆ»1Yw —è·Í}]c/ÖÉV­?\ÆÊ!Dï)ýðÆÙ²žv"h&£‘ï';«´,­sñøV»Œ€þ©¿;•9‡ ó¬×Ö“Žþ.¥¾‚𕘠´O€à“hµÕ.‚x%ï•æ ËÂ`üvÚŠ]ûçþÊIEÝO¼Cf©—3IxY(L–7h9g~.,..,–B»Õ˜G ‡¦üËjâVELÓ4¹ãÁ“ï‚ÏÎÒÝ¡úÕÏ“õ72£1í–K)øÜNn5œ<§3JvïPôþ1)O’Ô Û%ÓÿˆsSàªçÏæ')5Ù™‹âz¼j¡¬ßÍyñ…‹òÚÝ,Øèì)E;ëṙ+[&àJÍ™;8âpÚ\½Ÿº¼Rpá{cµÚ†uοœ–¸„©MŸ!‡ȆXòi>uØT¨à®œôxr¨¼th›sÔÕ¤{ªÿ‚å’å•49ÍçÐéÙ{9A'±¥`9MáÎ$Ý$+—v ]7MævQ®¤¢ý‹å ¬~·vê~rçë<âÎ(Ðc=2u_•ý|EñaZ‹'fçökÆ,’ÎÚIŽæË좆;ÚÚ-x uáî½^lÕçŠKë‚:hZuÞFzžþ‰”ˆ¶–‘š ½Ü'Ü<ϪÊòŸ¤×ª|5¾ÐcnÕŽˆà®h7ï‹’É+8RÏp!ö´´YZõ’Ž.8âoI9ÌÕyb¡6/¿HÚLRlnÈâªIÔ¿|¾l®FoǟܰҪÖçßäÖg`e>–EMxï9‹JéÇ45¥ÙcY·cß±ôfr½EVéÖЮ¾^…Hì³Ù³|UÍ=§ºG:õM˜êÖ;QÁЏGF”~‹ã·7oKM¤¥Ä^…ܲB}++óOi°·]//°ØÜÆ& Å™ zXL²¢#àâP`{÷Ô|D¼Sìµ¼Óy¤9o꟣=±((;ÿ´LûØò›„)µ$9‰cÂcâ ,³I¬pƤÛÑ%fdñ¼zËê’²yLF…QÞ;¯”{gÆ–k/Ã’¤ÇÌb~ܹN®ì¬”ñ•®ŽàZ ±SÄèxdEÐŽì¡•÷¨Í‡²7^ô§^Üzxz>“×O§‚¾–¯—Ì&ŠD¡ŸyªúIj: ÍŒ=e|íÉɼ]'yùÉ05­Ë«}ðèê«â£:ÙN°V¾$fcÞ Ì&6ú)÷'Mý‰p 5óÀDŘônÈÄöâ~˜\ÃryºœiÈûJDw7ðIn0rw0H˜ä¨Àde°¬Ž»’¤èueÕ›+zј:cDhÖË©²^ßÍõwÉ8Fy±ŠÂWªŽ+ÆØïˆ…‡Xâ#ÓcÙjâ:cp¥.¨–¯Íˆå¦ïäWck{­/q8S!KÂV—_F `_ö³-‡-{ôчLï>ÖI¤‰r%ä}WutÛÀ¢ƒj4®#å|o÷{èæ»6þ*²Â7’ŒDGj=MqHÌ€ãkeÏG¬’=ÈbÐŒrŒÄ,ëÙ*ì*Û$"“‹Í1ªLL²Ûž1³öjØèk~.x¿zì©‘“MxÂ|ýNLœ÷zª¤uÓŽÆKĤÜÉ-‹ß/\Å?5kÖ“…9žÞVWÙ”íB¦Ì$`ëƒz ]-Š>WèŠÊ„¸˜^º”µ£šU³‡½: /¦Ì!¢è’2.y5­3/¦·wžGL GÊàgÞ£¥ù’6†d7Kµ§çV­=ÒYÃÆÍ´óï±<Žum~ÆI}§÷ qnëtE‘=õsôl󴳌Þp7²ÓíL¦LåwzÏDUdáwGÞ9뉯W1g¿uLVˆy;Ü3«ww*©`¥¯[–,ø­“KáŽ`]˜'¬ƒåõ’z/áÎMžµ.6ø‡ÍG<Æ –7K6¡<âú|ïŠÖµëÀÁ¹²3oûúwÆkn1ï9­aXÆÛuÞ¾ÞnÝ©°Þ»øÖËI¼‡¤ë*¯±É©¢ÖÈÿQ¦+WȪ¨º¸M€,n˜ñ‹˜|HÓÌg·:Ö}¬m¢B1¾ævQ_0—qH ,{ ½x×x*ˆŒl¬¸iÉw.(î`.©ß8=H˜ÂËëë· ˜ÐŠqÊC3'¥¨ãœ ‹ºP,ýH¾Ç„£–ôí~¥ÏpÀ)¢á³_¤–+¥¢I²º9ƒõaß©äNó‘Ñ»Ñ\ï/Ž9ò˜> 'ÄÖ¸Ëþºæ|@ºtí“·Îú³:[h¹D4Ë…®ð’ÞZ¸w·õh´20†IsQ0ztÙj}웣ûq`­ƒr/‡¤³ôÐ4o¶‹*bRqp7d5æ¶î·/»6¤¸%nIþMK¥ê"TŠiš×Š|Þ5Ï\Éq*> ~dy©ÿaLQë´à$±‰Ò'ÃûöçŽbúÇ*M‹ÙXl˜Ã×”“e>D4JÚ`õà{}g½`œ«6²ØMa[†‚Ñc˜UÓiœŸ.U`‡ûÆ!½|&%<íõ)=øZ“¿2²gN.aǽùV7ÂrZíó™]ÄûxUÄì•"q§’&ƒ.õÛH‡lG9oK‡b“ÌÁ.‹ G»±ü*ß¶¬ˆä½*o÷­èf{WÓ5 ÜòÂÇó»\7jZ¼Î.ÛÝ;˾e‘íç;’4É‚ 毜w™N·7ß³áèy,çŸ åk*Óyµ&s™X½é+·ÑsÓl¼|‰ûë/…n5É>Ú‘”¯‚h”‰Í'¾åK®,òãa*.}>æ|»çÚÎC´®èÌAçìžL2ó‚ßõO©ºÛ^XM¾L¹Ë9™ÉãÿZ7¾¹FwêR€Ø ´«žÈçýÖ..c”~î©·‚ãhâJÛµáukn6ót94ÛîèÌO²¹6CÝwò¡ò4ÖÛÁh7Rmü×rØr]`¶7ÏS3 ÝÑHÃów¬ô!ûœ[|n}‹³oÊ™ï 4xâe(ƒ“„/¸ßÍÖ J³Óà’×6—|Íø¼i¥ÿŠæô¨ÆJšçÜsH ¦ñÃñ¢F#^ ^yÄÊK¦é÷P‡™™¨Sß´åy˜îõ×±D!.]¿ï-¼ ¦gPJ…9ÛÕÒ§™™²ø½é]QÒó»™õgïvîË ÃÔ—TbRùrd¯†b2— ,m¼õ:|7$9©¢3‰PËJÇÝ€U=1†´YÕGF@ܶÛl·Nè; Y½õÓã,î䌹~©™Àü¶·QFÒ•ÌmŸkÔ—¼d¼—w­Ïî7D©|8âÏ*sÇZõj8GñiãÙ-/™®|6Ñ»o^}JÿJˆ¡IøÂ–w†¸‹š-fΗ4ƒ¯]¸šx6{ã¼âÝçÞú^ˆ“R|0h™?32iÕÄ‹ÿøy4[î‚“àéŠ,9.hrYëá’èo6sî0Ñ©ïmÆ×¿z©¢¹÷5âáèëqj8[ˆô4ŸwàèÓ…ËvŒþj^¢ Øw‚/no±ð&0¼¢¡‘œcJ$L^ 雼…§d„&_ϒĘœ„™ö1ª'…WÕCO©£Œ¹D ɳy¸˜’|J(Ó>¯¼½ëŠc #±ŽlϧnÙ[áªJÊ^i˜¨—<6#"caæ?;ù®A¸ÕCŸk²ò•Rå^³òæs\¬[CÍcwº4G¹-Ó„• C­½\¥yÊRÇÀ—:ýÏ®µ+€imëû€é÷{gæ ùûÁZ’çhÇœäŒ{Vd _Ã:—¶Ùêz ÆÈ7|Îrê[¹5rƒ¾G«¶ÎãxOÖ]Vˆ„Éæw‹NºôÅûÑgd5e1j&¤ï½>úÏ}Ó`ë|Ð3’ZUðˆÓ/bn]ølÇ#qÁfØÇ„K^E$%ßIæað!bnØu)T9íœä‡˜¯ž¶Ð7J]!*h½‡g°¹ ž§oc-ÊúdAóÏ¥â"<2*)Þ$×ǹNª¯€n–Èú§¸;æhu57Èß´º–¹U\xvL²ðþp'} endstream endobj 867 0 obj << /Length1 1371 /Length2 5904 /Length3 0 /Length 6848 /Filter /FlateDecode >> stream xÚtT”ïö.Ý(¤ƒÂ0´HHw#ÃCÌÀ0t7RÒ%R ÒÝ !Hw7‚ üÇ8çüçÞµî]³Ö7ßûìgïwï÷}žEK—GÚ a U@ÀQ< ^>1€¬º®‘€O€—ŸˆM†r€þ…‰Øô¡H.ö¿²H(…ÆäÀ(4O¨¸:@°HDŒÀÏÇ÷è_DR vƒYÔy*8Ô…ˆMáä‰„ÙØ¢ÐÛüëÀá€=yø; íE `8@Œ²…:¢w„€º ŠòüG q[ÊI twwç;ºð"6’œî0”-@êEºA­¿h€¡&ã%bèÙÂ\þàºk”;   wAg¸Â­ Hzs€®²@Ó ÿCVûCxø{6/èßåþfÿ*ƒÿNC G'0Ü·XàM5^”ê! ·úE;¸ Ðù`70Ìl‰&üî PÖ€ÑþÏ‚„9¡\x]`¿Fþ*ƒ>ey¸•,ÂÑ G¹ýêO†„BÐÇî üs³öp„;Üûï·²þ5„•«ð)æì U–ûKACDÿÁl (€ß#aaAQÔõ€Ø•×ót‚þ‚~Áè |½NkôP_˜5ýGäívƒPHW¨¯÷ÿüsE¬`Àjƒý§:†ZÿY£/ ó˜ð¡µðýúýûÍ -/+ÜÁó?ôß÷ Ô2”QTRãþ3ñ¿c22€7HÀóHñ£"¢üß–ÑÃþ¶Á÷Ÿ\e¸5ðèO·ècúWÇnÀñל€ÖÒ@ U püGä¦|B|ôôÿ-õß)ÿ7…ÿªòÿù7¤àêàð;Ìñ;þ„ÁŽ0Ï¿´h]Qh¨#Ð6€ÿ7ÕúÇ´êP+˜«ãG•Q`´¤á6h1ó€yùÿà0˜ÔJ †‚Øþ‘Ìüé/«9ÀàP-„ ì×·ÅÇ÷_1´¿ öèï‡ Z—¿CP´}þ¹¯<‚°úå3~!a‰{ñ¡åÄ/$ð¡ iõø­dŽ@¡Sè}Ö$ѯkåapW—_(Ñ?*C\‘H´Ã~ ½í¿Ö¿í …z@!DÓ“Èã»ÊÆïåÒ î<ëCx‹ËÍÏ㌺"„PìS¯¼mÕðÓÇœežY•ÜHÑúò6ltÒ‡ëàû°‡i[fàB²R C¾kUæˆ'·ïâk› ”Ù Ao3"’ò|•ü0^›éö3“‰“?CEÚ6K7ò¯š]6í…ßÈX’P1ÒÙÍ»XQF,¬Ë¨~#S²X ¤Iª«žòÓ‘+¬(Xì¹Lc4Ý…çªIlZÿü|ofwWŠÀÉkÕŽ2á’0J:*/–ì„:êøL•Z v¡o²o“âîÑ8†±/`;VN€Yc;éøEŒvҰ̤æm•‘ê†ÆÑA~ö^q–Ÿ^žx¯Ø$†n5"õ’4ÁXà^X dÛ³¨?¾y£ùø¹bõúâT’ÛpÀ.؈5+R·çèÎÀ~;‡l΂a”ó‘Ò- ÍËȥͶ´8§ ذÙ]íR!¹QãÝYµJmáyhtþgÛ¯¦²t/((îÈÞs86ܘJW<ÞÝÄ œ”ñ¿ÄgÜ5ÈÀ-{€!¿i²¬nq©¤~1Ð!ü–B¹l9㔽hlY#ÿ‰¼Å? ÷pÀ1'¸V½=ÜÿŠ$Z±\w‰oÎôÚ8÷õÓ‰ýkµL??ì1?ä£d„ïÆ¾Œe³N4V…÷Âú»yÌJb]ªNÞêG´8þýóÀ|÷º†ÅQqúû5ÛÙ@“ñ4Á/ Ev^M^ÎK£Ìi”ñ’ j‚fòh¼vÊ<–¯ 1-Sy~h(½  M¤é?¤I‘ËrD‘Íûcüœ|êžLzxý`§Ü5õ$ãFªˆc7Ï“‚2¾®jqüÈê´šåÒ5‡‰¸«+{`¯£ï*—1`îŽÅ‹\Ri\eÐ/8»Í©ÔWõýÌœÄ*ÕŠÝþxŠðnl\¡]VåëÑçiäíµ8¼’|(?úð'X2"cWÙÕ%’åý(Ü÷G¥†n“ Yƒ(®TAm'3ùqÏÊ2^uóõkÛ‡‹%¡i#žñÝl·-__Ô»/ÿd à÷'’F å­¯9;Þ×S±Ã›OÈ ï„œö¯™9eTjÔrË#à9Ò7á Û‹ô,YC“Õ&bf+ø-û,XŠÈ@öšA¹‹/bïLu}&,e2 Ê­B,UµZÞÎZ÷3KkÎÅ?“ö`Àá÷p i›~5âá«1WÑ“½;3˜ q3Ù4;å=¹‡uq ÁqƒÔ±.ÜO»É˜<|œ&g¸l:+ò‰¡LñX:[l"¹ÀxGTBþ–£0&õ%ø d_gp.ìdû%ݘÎÚËëD*RµŸ˜jšî’5Âè¢FŒt>é$kyy†½1DprÀûd}Ürþ1„4+A…J†|Üý`݇@©+2_¹`»?IH¯±„~JrRáÊлU‘Zyq¨·ÉG´ãл 9ª½²PøÁô]D^b^j•’`çŒà7% Æ»|r:Å ¦(ðãeJ;ÍýîPœ®C¬ ),?JÓäÈ!íÙ~úÑ7®þ3×-gU`绘ÇÄG8Ùäñ&ÐWDè<"Ñ2~£»¨=*AŒÓ D}Èîíùpt­2ýÎÜ­íšG©¥ ŒãoÞŽm½ JÝ:Â Л§¡,qÉÁyd‹pfÌJÔß_ù¦‚‘Mõ°Æ]'Ñb³A[ïs1M²ð_Ï ¾ÇÐM[¿WLé¡«~R¨8`ÅwÔÆ1Õxëe=o 2C]ÿŽÌŒ­¶×§f¬Ç"gû†Ãt{Ø,Ÿ÷@—gG®¬f 8ÑJ “OC„HÜÞçÀHžÂCùÓ#L;¨Ë[$„ ƒi—ãöÙüg¬îneT+°Œ®e±'È”_âvÜVñûv§àøOôNÞÙA„IÈ7ÞuÒ¿+4Ç&[aÞÒñéÖ1™Þ[xDõW.g~Á5ößü4!ýAÀ+¨›/c]“™úÔ|×x"ùáZu‘gœëycÂÎÓo² rëá· ˜>^„Ùj“{ÌQvÌßÀ%ga?éÝ¢ˆØ­yÎöÉ&×pð5êxà[†÷8’u#æävÉlT¦P`„ÔÀ佊Q \:[Šà·';~uô2Ž’0è#+£×ë¨K —˜}=Ï·;¤4Â’Öå5~]¡ìPá&Æ›lRûÆ€ø5¹»'Â_^§KÐ åAR¨¾ö)¾3 5¼ç·³0¹È¸¯™´Ã¥µvøø±}f“cÞÕ˜)Ó.;ßüE²ÉEø²ËGgñyžVµ†PßJ¸ðÞ¸Å^s¡uvq8Ò„ÎIW 4·Ë=<8J¨ïRö> 3¿õ¼d‹FØå u žˆàÏÅ Åð×.Š,¹ØãRczƒ*…&#fH,â0º«s¼NëhmwŽßtj”d'R.’vØOȦÎ3«Ü0Vl“l©Ù0.i i^©ï˜òW5fÑ®Ø0p‹'øvJ­Úù<^ÉÔôºËØZmþÒ¶«{¥5*­ ~HàK«pªh¤‚Ÿ”µè·KïÓ3WÛ/lc‚ñ+>-øÌ2óá§xËÒ°6»ºq6mQ“®ËÈ›š!’šH›]=ï1¡h'¿ö(EªY÷‰Ê~Í÷„'t[Öw é>|P?[\ü/¯™Y@û¦Š8|!Zk7ñ}P”¦åãBLŸÎÊ>ŽSîOµK«_ßïXü„UöIS×¶}95¯2¡àÕàÌ#a4Î{¼^5S°ú}äúgæ€ÆW†Wd•Ê£•šNéB­¹à7¤a2»lÝ_½ù‘g¶c̲@ýeæ1ÀíÊÿU69Ny j” –#¾åÖ'¶ÙÂ.o8ß[ôžÝâ ·çVÒ$;Ä-_¼2*¼‰<ÑSä§9ôŒ–,u.æÀ_8zD/ˆ‡;ÆÄaߌ+óõ2Ò¼¡3ömaÐèWÁ(ëÏ?ORy²…½ÏfO¨^¼ä[ãüãcHñgÿM¡'P÷ÚhF© ¦ÆóŒiMŸºÊÇkÍÉ­=aKž ³{; £w¤GÀ)†ÛBC» ][÷Dz=õš•Úvsj¦¬´~óž¯'ŽP,¥W­©X[˜àÐ/OžÞa1þÒkß"ÉC#Á€ÿJ¹ReƒGGšKëI-‹kËó£š}ÎþÙŽI73hbÞ‡«+V¯¡©-q¥ ~ ‹3¯Ã«Ä¿SÈ“v‰©I¸ÒÈn(/žñ5'UþÜ–½Û¹æ5ÓÓ²õ~RdäÄ?z¦ƒÏmU‡ÞäY}5sôÏó™.Îî1ŸËoáŒÉ(‚J—XÏlP‘Ÿ+‘nvîs£^سíi/¤B‡·¢¼¹RÔ;‘@Ž|ß8õ±é }žÊ2®ïVÎTÃ&;‘æ#¤SdkÀiOZÚÎxÒÙz °rq£7p ù ó¡F¹·»Ü½í‡Êá—_Vž7Gsh.²bÇJ‡ªême¼»ÇÎËÌdäýÍf×T6*;sÉÞB¿r«(ô£bW¹˜¡QN=óH§înÊSG„¹pSðŠSm[2ƒ!§ßÁ&fÎ(5Íàè˜ÇT F‚´R 1^2¦svõC8j¢%äù<øHdLsÔOÞóÛ…Ìœ4^¡w~´I¾iªûé™ FÛ* ŸW¸ñpÒ>KzXS×xs¼y y•Nu2À`cPµJ©š Î|MvÜôúfçig‰&’ik'’çûákQ6¤›íE ¶Ž”ˆ–6EpãºàUÚÜ(Bõ á ü¦iæ /ŒÐ;ÁUæ8Rm+4èT`”îa‡?ËbÇ€t7Î׬q³N¦ÈÞ”í‘ûmÄŸ=È¡òYªMÒºGyèGÒ à§£Nøp¢FÍ5}‘»»N$ñÞXvK´ éí@’~Txr6£Ïï š<ƒ¹¹0Ó°¢Ž%äDz^ŸÍŸ?††ÌNðv›þäéǨP:&±oeáÂr#ÛúšM@õqº…R#?_«Ë¸RÕþ§¹;ö7.p~Yæ –åòbšz’‰È$šJ·—}$¬Þ^ò©:´íPêEÇÛÞ~õìLö2çº]ÝÞZûY½¥¯»d~®oôa G°9fcU e98¶ï öhßž¾¦’XT­y´Jn[$I‹ˆý¨{|r˜~Ð.•œÄäEÑ]RÌóvåw>]Ã!dµ}S!2>Çáta¼$K$í8-,Kî¨ÌmÖsÓfíÒ‰Ä9Äçª}-˜©‘lÓKÔÊt*ÏÌV~ûT§µ<¹?Àz/–»!)¾9´žÔÒÃÕà>ü>hÀóÖû”õ}œ¢Êá0Îe_=xji6«šáj–?f³Q"v¶èÝ`>G³O<‘0lNZh¸.4¢(£ÞÈáu†«‰Ï->;Óæ9ñ’„Yâ&•¸i{OHÝO8;E;™-sä„3-œûJœ6[mÞ‹ßG?äÔ›IÉûéù×sœ]OFP<¨Ž|¦wÙ²²ÜŸò&ï^a¯ô:°h€.«îæ2ÏêÓüÆ6¢Ýç0–µÖË<­`}Ïc**òm\—IÊWråÖH߫ËiJ&TÜGºB©ä˜ÅÖ˜®ªÌ'2¤„ø³m mè¬÷L}é™Ê­¯•<_ªöž%zTèËý,fÇJ{ætHÌÈýðõVgÅ ½&†Pñ.¦~…‚bójVSRËÞuQR$—¿êìμpÓû5Þòý3Òe&‡|Ã*]Ȫòú…‰ÙPêÁmöðâ(–ðë^ÃRTIæYÓ± 2]•Q'°ÞB°fºKgŒØ;/‘åî'6Šy^Ú`ßE¢)™~îÁŽ…´›Õ—?ºa3WÌþ~ŸƒëÅÕE>L‡õ:¼lߟ‘pYÃpôÍömêäô„ã½Ð{'*Ø@‰]¼æ'Ð¥'Lö¦¨è¶Ã·Ìñ[üˆšz–î2¢n çhvòŽZM2›Œ¡®¶Ñm­ðjÂkF’fýâ̶GKv 4·.`"ôo÷…˜E¨22kIƳâžÕÕ ÛáI’I×¶CÿÕ“M®‡ß€¶UUZvÍÞkÏ胉[ädOÝ-(miOë€åNP% r¦ô»>NØQ»ýýuO‰Í°Ÿ•°#îq Ú 4Iâ'£qS™÷¾J<RÅi"Z<©‘þäS…¥È½ 'µ¥³q4L* 9y,½*SçÐ>ê½áâprøt.X¶ï£·ˆ‡®òPÜÄi‡i+hg|¦ÃÌ zy|Ãkî”Ø®Å žSÝãªÌ¥Zb“P/apÄ k5)Ê5éU n÷â½g„¾,&ÕBâåW‘X¦‚(yÉ)jeþÑù*=Rë/“_ÃÕˆÏeïÚ¦¹Ë|%¸ÝõÞ* 9òÅç{µwF¯ÞºP®6bž¿y¿y7KJ«hÓñ)${–—g`¤xÝÌ¡²»¥ï¤D4÷F0ƒšêZ|Xk—G±h´ó‰AËqãð@ñÑ™y’ýd%Dn|R]]=¿ç‰ÜnÛ²†N/çµ[޳öqQðgh7‰Îf1ëÐG­~핳’5Ë ªVèÚQòzK•°D0”·ŠîfQÁ¦¥¢M^<̘ø‚¥Çxóù)=}—ל´ý ™Ðý+Æí>z"réû¹V›¦kæ’ù±ŽÆxÝÓ ‚b,Žíëcœýíè ÖX”ï±83‘î% ¢pϳÖHÒš7ù¨‡,áø­NÏJh1ÕÇ»vo }ßQs“Åi•ÛÉóæVM|7¬£{U<`#ªªHeqÀWÅ8‰8õ*4þÉ%hæÑδ×ùn³­ŠpwZÀñ¸Iøõ9¹e—[?”ºéêöNÒAÍÀ½€QKÃ9k]q!Æ•ÿ”ðúåÁÓãù8¯Nå*Û‚|‰=åV•*b&¢ù¯:?3[37 qi¹kh0²JÙbÈ:'u@§^ÅDxcr½bX´+6•Q'ÞåF'¾A7’—‡ó›$Äݪ)GÚ¶g$E_ºn ™³LŠ:Ãèžoåðš›C|©y]ŠÞ0-™Of*JÞHW\ ¨ ®žBO‰G“Çp¢½¹NváÝÔc^oÜZ“i+†7^ özξGi—Nn<ž´Ø ¾ØÄšÎîssVµXÉj½çY*™µ¯óÚÈ{À³Û‰]øÖz&m:¿[d9ô;•žÜ9õçõER$¥è«©^HLé¤@ÒWop;¦ò ¨Ù|Ý!ñ+x®ôR6×nóÔúa‰7´j(nT)õ(ÛMå½óy†”gxåEÐ&]N½¦ô9>e}[u›âEšpnŸ2JÃøN‘Q¬w亪J“¬%Ð%•BM43kºú!©˜ì%Í_{ª ~“!kF=jYW¸–=ÁÍu^M0Ò@240dß¼WÚÜý3_¸\ ¶à Ãf\34i’Íkó?Š2Iä endstream endobj 869 0 obj << /Length1 1674 /Length2 11132 /Length3 0 /Length 12204 /Filter /FlateDecode >> stream xÚ·PÚ.ŒCq/Npw‡âîîV$@ ®Å¥Ðb¥¸[q‡â^ ·ÅŠ»?ŽÜ{Ͻÿ?óÞd&Ùßòµ×·öLè¨4´Ù$­-rÎ`(;§0@ZUG‘‹ÀÉÉÃÎÉÉJG§‚:ÿ%G¥ÓºA@Î`áXH»- /2 è‹¡ª3 äîàâpñ s sr¸99…þeèì& ±ðYTÙJÎ` •NÚÙÅÛ dk}Éó¯#€ÑŠ À%$$Àú§;@Ò è²²T- v@§—ŒVŽmg+êý_!ߨA¡.žžžìNvg7[1&V€'jÐB€n@kÀ-Ô,œ€·ÆŽJбAþRh;Û@=-Ü€€#È †¼¸¸ƒ­n€—ìmE€º ü—±Ê_¬€¿/ÀÅÎõïp{ÿþÓÙÂÊÊÙÉÅì Ûl@Ž@€ºœ ;Ô Ê °[ÿaháq~ñ·ð°9ZX¾üYº@NR`ñÒáßýA¬Ü@.P;äøG„y¹fY°µ´³“ … þQŸ È hõrïÞ×ìì öý²­mþhÃÚÝ…C ru*Êümó"BýÌðqrr r €® —•Ç t¼]€*¹þ¿ôàïëâì°yiè²¾ü úB,<€¨›;Ðß÷ŸŠÿF¨\\k` ´QÿýE ´ù ¿Ìß ä0æ|¡€óÏ¿O¦/ ³v;zÿÇüÏséèhjë³üÝò¿•RRÎ^_6>7'€‹‹› ðrðÿï8 ¿ëø‡¯"ØÆ ôW¹/÷ô¯’=þæãß ÂøïXjÎ/ÌÿCtN>N«—/®ÿgºÿéòÿÇò?¢ü_‰þ¿ɹ;:þ©güËàÿ£·p9zÿmñÂ\wè˨:¿ìøMõ­®*Ðäîô¿ZE¨ÅË6H‚m_ÍÆÅËÎÉû—‘y­5@P+»¿Xó—\÷}sÎÐ/Ì‹'çÿè^–ÌÊáå¼PóOðe‡þ;¯,ØÊÙúeãæãX¸¹Yx£¾Ìúñ|¹^¶Òèõ'™ì`gè‹ à¥G€³êƒpXü!ú 8,ÿƒ„VÿFTÇaýÈàþr8lþy^ã?´/ØöÀa÷Èàý¾TñOß—2œþ_(Îþ|)Ãù𥠗À—Dnÿ€/‰ ÿ€üè?àË]¸ÿ¾äõüä~Iäý'ü¯X¹»¹½¼FnÊËtþ…ÿ|ú€@/ êÂg+‘PûÚж›jIRO¶íqn^Œ³è ý-YbÍ`é7·ç<ù1ó’]3¿bn×q¸Kž› 9ÌÖüRc„ êÛm,7Yý&qEï *îÜ¿”;;Þò€­m ›µ¾y^HL3½fu=ÝžÍØ“Cß\y]awŒÌÐø›n<6™HP.´]2£½RªFrz¦C‘r&1~˜H.·w›Ú?ÂÍ÷s`ñ +,h#•tÃEù"c_ìón?‰òÛIÀ4ÝV,ÑýGÆà‹¶ÐwŒ–Qmq‘LÅ­É3…³­XE-Ûf…ÁuøþxéõÔ'ë¯$³½,~š‰0wÊ”|^HÖ)ôáácøÒSV&'*÷ ­oþ•ÜÔïÐZöle?•š¡©3Hrætj!ëH:^£†ö¹ï×”Õ«‘˜·8«T;ùf VLV,²ýœ£ùJð´F· ­KŽ +úôžâ€&X¯€ÌâhT^”K2zÏÑÆÀÑò 7ã¦æˆx°×ú.Çù×ù@ŸþHŒ¹|dßÔž¨¬ tj xí»Ol%ÅDy¶;þÐ³Ö _búäÒIÃéËÌ·QЍ!~Kyœ)ÍôcË&ÙH„éshݸH"Ÿ‡šß çôOŽ™'ú)Ïaäº5£6ñÑheþ¹®±fV¬aåɾ‘u#ü=ÇkâÑJÚµ_úê<.i“ê.@uÔ´§µêïQóÒ(³õ4ãÅ`VvQ¸aÎÊÊyø¿¸À–ŒŒ¿õÇ­uȯmƒùIQ±™ÿIè²s»·†fLU´Ù†Ý÷lú[Ù&I`+†<Å4zÓAéï­w¹3ÔÊ”ù¤¸‹wÙ_RŠ©&juÌ»'š9K‡Ìðø"}ò¼$HØø¸ÄœFŒ´ã{³$Ìúï!±O àÊWvOº"$…ìý”ƒßùà|US}vÐ:u6°’/틒Ń^÷Ý“o¤!™¡ÎªØUTÝ+B ý±ÉSÈ›øô;¬’7XZ—'¿Õ¼ß‚„T76'wv¥m°£5½¨­Þ¼O\\ P³«ˆ¦ã<~»!S±½ÎçztºF‰ç8½2hÈ)ÉP…ù ƒîid] â9îÑ‹IýEÍBËÈ7‹éÇž¤u}÷v^Þ¸ŒÀkbžLUBß8(@äJ‡Â,:×xA—ø˜…⓯Ä#'Iw ñÑ!'î;åúùwkŽ ¸2Ó,Ûó¾wÁÜ#WƒEoLî£èÖÁúŒ!ø|kôßW­ó_ØèW·AËLSnM;öy¸)/á,ÏöJ³õ0ᦴ‚Ô/K+0vé“Þ>îÙ­@ä%©ë6év°âÆR¨§ìŽZß<7Äé àVÚÑä$Ó¦"ëLLDçBÑT¤a)l3g¾ji=òä-ù«Zù¿í9û_ðø.U¾´Ê„Ãn ìfúëNˆ6ôÚÞ?~²Ÿö6{« c°óʺtRoô²±4ß°D섹ø}ïx:܈Ý[a[RMÛ´‚ d¨Úú§oBÔ-4…°2̧´ƒ_Ú2pz{›äJ„Ôa d±}½©?fjJz^pœNrHX¤|MˇiäççŽ×Âv£ánº„ {…ÇrnzØÑ?ìAX^û~í`¾¯ûIOÔ]óµ`ÀèøÖF,>`éì†7‚1ˆoG„üœ°³EÄ~~S)ä‰åf¾Å9“*fçK1“w»Ù<”©ýìç3[5G=áÓýP´å;Æü;Ê){Zö·ñxÒK¯‡Ä¾ßX»mátæúôð$ɘQS2Þ¯|ñN(ÿRµt)ƒ ‡È„A+y)øÈ•Énnf\­ óŠõ ?7ø¯öi,(2BâÇfõÓÞ5Œ"å¹Ü5ˇû£ló7¯ûM±/ßí»UÓk&Ïqw¤OIªšfÙÌüoô2¥ˆµÜ¤þ:ëŠÝ¿Ë[¦n~dœêÒ'IcÇǰàRA`¯÷lY„‡­*T”=í]ÓHDz½µ%y\i³Â„ª“X++xñ˜®è.‹â,.Gj‹6Í—Ú úÿ¡“*èbRÞЭ7˜öGî/Àqö¹ÊVWÿ ~»`¢ð=9èU†Ì¶Y„ ûÍ‘ãaU–Ÿ£Né‡ù uáüä÷ ~lÓ`ï0‚|°ÀÍ™â$J νlÔÄX-Ïb faQYòMg_2˜òkiG…Øf*kìƒK# 7ÜhÀúñD§Û“ˆ’HKÚTäºwÃþwoSv®[”M`Þ{Γ’}\Õv¨0Ù‡w¶]k»r,NÁûnIq‹}^6´¶4&x£ËgÜb>¹Ö=Å´wDuÞ¸~~l暉Ŷl‚Ã)z|í?"÷6þGgçµÕNÓ8Ok9¤Kñ*Ò¥Þ¤->êÃç L¬Ó¶v={^€¢Ÿ143•ôøã6 RÅœ¡|ôܧ§y„mMFú´OªšÂm£]&G]ãžEW­çöÍ¢ãÏëæ*Éá…×_<{Õ¾7#…úË-[ˆ ´ÄGyÆ þ:§ûj¡ZbÕ›xÀ‘wDvjiI¨ÌBžÎíºZfcƒ£ŠÝý¼‹¯‚5çÌÎໃ†RnƬ——dQ[R˜åÜxz½AŽ™œ„åxÄMÌTOÄ»#a™¯»î°}ÊOD{|Ýï ªµ­Çb°éw­ól‚Îe(çÍÞC¯/é§àrXßÐÀ<2ý4üÌêóù¶ß'f²3ùWQUrÌ`Ncu]¸>µ‹ûÄ ÉéÂBË«dmÓíá¡OB:‚Í,³ Ú¸ñ¬eÆY3¦ Å=öíIJ•ª»§ž]+¾>–±¹¡Z_õ‹I(ÕœC…ß~8Mdì|eÝP" ñ °LNt(Ó@³%Ûä8!ªEúu~õÑÜT†"§±;ÙgŸ2]瘕V¯tJÇ~ìhÉh­áâÃ36ùs ßÏŽµ¦bhè숦ëhåáBêwy«ñ«#ß‚ÌW~ÅZ_oáU`±Ñv_˜â{HKÚíÒ`1òåz ‰ H :ïcqÜ`Vù•«=¬þ ]ÒC\<&%)g­un³%^Ï"êèa¹:‘ '8äWû­×¤ÝœÎ÷ä{I=½™"2AÆe5¦þ^»öHW2öX/Ÿef:ö›ŒzÛ¥üåÃn&PÔFÅkÀrȴi&ûöªéKÓÞ²¢Gîé‘Àq Žr[ ¤5WÆ'‡rÚXòÔ¸ÏËÒ½ØÑµ-,& t¹Óáø±ÐLoð73T¸’»¤Ç*¡&âY†öt]:Cœ}TýÅç[Ûtñ:áľpö~Å!ÁJÔgðäÒbëVáíì[Úן®xûpî°P'bÖqäÍ28 (úÏúSÃ;ãîd|Ì–ýðÈDBj?‡àcëégªü›h2™Q–QÜ…‹îDpøÝ5HpgÍŒèvQyJ¦ü&uø6Ä £úFB{*84¶²ÝACІ¸¬EL¼l÷¼"l°­Ã¤ÌѰ±Ó©Üi‚!¶FK›2³0=7X£¢­†Á×#'ºÊ5@E3' ôšKœ±­IF2W«ü¡ ׌w¹,L’[’YŒ˜‘¸d¢+ùЇhýFÂüõpýJå ê†^¨ˆjÎê8Ÿô NÕéøShà©])rn¾ÆôÀäÔ½Û«2Rœ{µaU¤Ú4•ã –  X€/†™WÕ˜ßïžÀpà/+œÐ)L ØD%ššã¢S‡mÀþàûÈ"$;ù—[§y´ùÛ/éú“8õãðºY¼Ê錳ï0¶·¢oN$Öë¸UxÌ:á;f‹Ápf±‚ëø n”VÀ}O)ªü‹„ë{°é€ ‹"Ÿ§¡©‚Þrm»ˆ.õàgÊ‹õ÷jÄDÝˈ¸-'¼géá+Ì+H}—¢¾F™¿uù?8³¨Ð­ˆ>Vß²è[ë<†BpÜýË\!ÕÁ]%¬š?«åªÄµ:ä,2;o–Aë$ÛYâÞèÞ–!^“6º¯U>~ÐÇѼ.À ×]fã¯.í-´|eQ$¬H†žPéÛ{59Iª¶©l\l¶À?ÍN©,©Ÿ\{+•k&2‘uiÀÂsÃо1l³c~¥NQ0IŒ™qDù\G( 6Fš îŠÿ 8.pH¶Åÿ»R¤ F–¡ÚIñ×™Ù·ì-’y½Ÿ³®U,OPãuF_½ø©®Trr]pU÷´ë–23-%>(HáÐòÄ-A¤“ŠpÄz§Yd¸óJ±å~/´NJvQ©ƒÞ­ÍÈòápµºö€ÈL€«œÕ7š›¢2+«â¯?R;¬U ,9>tâĤ­ÚõÍÔj…à+Ęgä¿ É}X Þô‘f:*Z8pX3æ#øó~¤ÒÿÌ“uJ9#IJkÉo>I†k¿„ öìq§ê“û¡*‹¤Ô —N*1Äà½>ÖßSÝäÅ ¢c ©ŽI^¦ÎˆT]ÏFûcZ>oò`täqp/}ˆ„01™á•,#\®J?­ÆdphõÏ_'ˆú? T’}ˆoÞ¥´å¥œªåuäèî7Ђg™ôS´± õ͵G—Í 6å 1³¦û šRTIç°¾n“š…Õ¢fV .4šiJ±MªZe~[/þ°ô9³P#cN0Þ#ÎÈøö-Ö¿#2›‚ÙÊ ÄÃT˜Þ—ë°ê[T“!>Yý¢Üƒ$Nl†6&ÕFÂMTá Jò'%)©Ú‘~r’½–w1ȚɹÚÌ1i%Ùr'Í5§ïDk«­4Ù NÉÉËxî JO|²ùâIji*æ÷öù,mtH²#Ý(³8“é»å3™CØöÆåÃ,©ðI ßë)g+3—÷í”Ë1W?ìÕÐ/ßZþt!F°9åÑÿÕ¥õá^ìâI6Ó2ÌsÈ„É÷mkƒŽ lÿJàÕ;FG„,ä°¬‰(hˆÁ‘xÝþ Tç÷7¹…È­wwiðUS‹)–Þ@âÔñŸPî÷"¦ÍÉŠ\¦Sæß6±ò‰Ùàê+ÇÄMÆ?ÒnçòÆ6—{ mê‘®ÝÄó ·¤žÙÜå$TüH«ÚRÇ?‹X.õdÞ—` ¦„ç7ì)¾;H0}âÊÁ…ÿŒ³ßå¢ß‚û :~ÜZîìí4­;Nsí{‹1îvH²Ùc™‡¤ú+è»H*[ »Œ÷ 1“¡dÚaŽ,Ó|}šì:άÌU?U6Èë¬`%mNbw\[‘± /¿3ZS;àŽ-í*ÏbâÛ€ ëfõ\ªT8Q¾µ˜4ÝJG™þšqƒ•ÚXƒö&·“L§ö_|wµÑ„¨\2‹â‡!:«ôce’97zÂzÏÑ'u¥»áËpœï„4L1.ÖÅnÇ›2ÅüÕÕ·ˆÙjñ™Al¬*½Úë²»@¼W Ë ï ¬ñ0‹Â jš(%­Þ h^ê 4Y ‚Á$¡QÒökèÁŒªöîı¯–$›Ão7°À¶n"H]”Ù9·özòl€Mˆ¸ûD¦Îø“¡¸^ʱ3\0Vlþ,!ºÖÝ3L«¹Ç1ˆ,U, všR·­"´T£ˆ—–S¹Ù?ܳRÇÀ•vPòÑÊ!œòŸ“g>˜l,­P±æ·†ÝØuXSmõ¦›+•„UÆÖךX•E€U¹Åi½Ÿ#¤ÚÒ&j|«ù^ÝB&QcÌiQÄÇÖ ‘¸¡é²”o œA.¤NHŒ‡es†ˆbÞ-¾!eg¦ž¢k¦‡V}ï¡)4ï´@©5³0®ê_#¡Y¸[º¶TŒ=¯[s%BÊ?N¯Éýt+A‚.oJŽARévïÍo%Žè]þz:—Á):‹›Ö­DÙÏs|ÉÅf¨éwøFæ"òÍÝü¸¤ '‰"Lqž N²êD(jTí´¼qÞc˜ ªg~©G®Ò½P]‹—–<"—82BÖ3€ÇbbÄ#Vv)v¹™‹¬]˜ÏÂHCë°gfÁ£ ê–÷Ÿ7×ëfØ´qºi"czk¤ãÐ^4g¬ñm)ÿ´=N+‚FýUïc'ZbÑ}!úÁÏÆGħ³à‚–HßÉlRÝÀ'ªíì·ÔÚ«îí>±iaÝþéüâÊž­Îšõꊣ¨¿ûYíZ‰Ú»"Ï-–Ï­MíúyDB§ÆDõVÄ ’¶k‡©4l•Óíê¾Äm$,pczÙCÐS.UÍJg†Ë4U—m>ýrdsF(HGn§Ìor±(\)±TE÷.ú?)t:Yk+ÄD ‹_ç·]<Å#ÍKJqYL Núf«ÁèÎC:–†¸ém5;¶\4ò‘#­:é u+eWq^ì¢aà¢í‰öègHaƒº,Z„µÒ¶€%&¤Mô=\ÞˆmVlƒ·Íõ{Ëï9¤I®©Ü2Ã*&±“ŠÝ¼Ì0ŸU®mÂ7Imæ»çv‹‚”*M7wóñ¿©^Ntø"µNÃ9N°(!!㑊£&C«Kí‚y\ß{S ݉B¤5-°#zß”ù¶½[´eGdcÙƒét¶“@¦áMëÒxV.¾Úq8Á×Íp¼£Z€[Ï~€fKÆçƒÙµHœ–/æ8§€¡ÍÀ°éV|#*òˆœsƒ˜ÒÝüÈzÜO±¾* K:o ¾ÝÑôÆðn­1ÂÔP& ÅE"u–‘×vïûLìiNG݈fX‡@]Ñ‘¼Ž®QÑõKæî~ëûnµ“/‰‹-›çòÉgÝѾ ¶/[² C«WÛ“¿±ùk¾ÊáÄ„Y…úM_i E]WôÙý<!ÙU¦©ÝØE?ŸÆ¶¹v0±¯÷‚é7C×*dm²BQ‹ÞUwÏP›Áº}y«%.i¡Íô”-iK…ªtX(sæ ‰Ÿ/~îØL¼JP`¬ùPÚã±[B³üù-åügqýn¼³ªéõ‚û$+*ýªBº\$#tþ 8õ¡«ÖñGáÈÇ™]÷hɲr¦ß͕§l'qÐB¸$±2XÞE°I)¿w|\2Rˆn¦ Š'ÁÇrüäMšaÚPæ"¡]gK’Ïn‘6^bŠúèixmÏd6!©ùYß·¼çÁtg¶þ¸?¨Êsš“ã¾Ös¶C Q±£iÜ ø–ô]ÈìEš à+ïÒG©}M¹gÎGûk}Cå}rCÏQŠÌx?W?[‹Zz_‚óán7<`€æ°¹µ"\ C!xs«Á3mŒÊ4­=Ûñæö¾DTæç¾#éôâyph€97I½ŸZ’¬gMeZz­áhÆqv]+§VÓ¨C¹×Û²†ÝÑ OF¦˜þÙJÛ 2Ä›»Ñ‘F\Îh{Ï6§¢JŸŸ¿¯¥2ïà×QK>/ÈÃôˆ¡])É0KÍl¾¿‹Éß—ío®ÿÎÚY A Âks"!xù›¡åyht$`1YI€5)rèÁ+_ŽûÅ‘H˜­<…²_whÓ¢±¡6 טƒœ ¶knÕmŒü³0åXóUXKêˆä)ÜŒ\Ç]Çgrž,Zâ7ž7Žm뾦 ØïˆY»ÏG*OQw$ CO)R¾Í]¸æ´GDÛ]”-æOf¶=”·6/bEY¡ÐW•Èô7£|d§ë÷ w䉡ø퉬×ežzØ2—•â®þv,¯¯ãËÉñÆ ·CìÄåBÙ:ŠŸ*»þã+y¡#š~Ü3yrfíîqEîÍkÇÃÝœáïªjÌE&ÃÇ̼߯ׯÿÑÜO±ÜZÄ*W¾½$â‡á$èÆŸë;ñªì?Z’2dÛYÛη齧G¯Ÿ$­[bñ­½6 ÔR,¡Â‚¼H¨õIÑÐ>ÿsÀͪt }Z¦‘†€ ¿ÉúUØû`>Ôv´¥xÆ EÙëÚÉaâõá~úç1U²ÇN™»u›†š¸+”@Ø4­¶:æQ€Ì¾Î73©ïÍw¡%™i‡_ú*ѤÝô„€m)㦌ÐÄÜÉ/.ä‚:–$•Bõéb?$Éeø‡´U8³X¶k:USõ‡ §¢Ú(H qK^½M3(5WTUÜÄú­”Hþ±S^ω±±O¥?69›ùr¶IóŒÕ-,Š%æ×[ é¨..UÇË»¶ËwE×Sç>.µĘq++C¾yÎ@?Ö_ŸaaÝ\”^ôÞÑà¯ñìµØüäT‡o(ÇÃÈOáõ¤ÌG—¥KyÓÜq1 ²/itü]~ ´í „&|,¦YÖ ååãìœ.‹,ÍKÙ·JÙ§k,='u;k¦KèWYœ¸ùíjýÖà[Êñx:ͪl™ëPÅTi‰Øu´’~O¶¥Q>¾M¾e¿4j¾5#õjƒHÕOµ0û\<`ÕV•øÑ­ñJd í þBíÇ(ø yÛÛ‹“\$¤ºWDe0Í)ïTNjHʺ.œqÔá |=£rù<â$ù|K­ÁCÀ¤…_õ˜^›®ÏÛ}Huö¥ædpêrá PÅçý:™!¯@-éæÑ§Å,U 4%±Ð¶øl«ïîØ;§£Â~Û´œ;§U·tjvS•_µ¼ ä­h ÷ «O­ûܯÎauérƒ`¶ݹµt÷ŽBý©]ØÍIç\Rò‰ìüi©öù¡×.HDÞo.JÝ8®d— “1"b$Vþr'rÙ‹«Œs9ä“àñ‚ôíE yo©IUæÈ@Kð›‡#¤©qrm"¦}€%g¾é’qÛ!üŽi$.¬|8ã¢È!sî+‰X8©o§Ty_pØâÕ…º’#OÕ‚õi‡ˆ/1¬wî“ÁçZVc;ßd—’ô©)Þyiåf¤›0#Ô:.I÷ƒ š? —Õ/”™ä½Èuo  s¯¿%ÅãÝnì *FkÖæt |Ë@§±äÀO§þºRŽPœûyýј ¶ŠŸULéý5Éâ±ûD¨Ž„ˉT3“hõâ;éMYßÂ`^(%y™áµßUnÀ@¨èúrº§×ÔÑCú":¡q‚3_]øðÉ!S iØ[ ÁÙpüÕª™5±È÷wÚá6Pt,yæ;buø«›K=˜›U~AëÅ:[Ê#°a•Ûï•i_¹çô¦¸ºX‚}f0[yŦGÕSˆ¾#îõ¿‚·UØ7Ž™õJíǰ‡N±‹ ¢Wô´­™€ÚGrÎj ƒK&©'ê!ó7|"l®úË4®¤ƒêÉì?°Ã…Bˆ15FÍð»*H×’~çK—bõ¼Mgb‚®UÔ•3±RPS9xïÌS~Ž2lOäe5(Ih‚«Ü〛Eö·k"‹ÚÙõn‘’_ð˜|Gk…ï¯oZ*ÈÝ×QÈâH „£ J›|Øm[>É3!‡ØôN˜~‚Ë9øãÒc„Ø_r¯owð¡2•Wt¯­¨ŸZ>¨âáí’šD˜ –«0 5ýLR1~T·Ü.þÜ{<÷•ÏR‚ÈB^èÜÖD27ñá=d98S¾iÏÜ6‚²"•VžE²×¥þ¼wP“êäÊ6 t°$¢:P–+úÊð”3$î+3¶®¤ÚbÍQ]ßé¸T^eËzê†ú#"‰n2k¼Äñ[c¯<Š©i©à ªò(ŠqlÒGE9Òa”fV¢ØM÷úŸ¢TŸë!x§¿—ì.‰"‹H´}9Q8aft&”ɳV¢BeÑVìÒ°ƒ†Œý¨Ï°³0Q‚3ûQ9ì.]}¬õ<ÞK“Šözw0$ñ½‡ºÛ9ºvöÖ+ž˜Ã‹i ¯ú „®nŒÃöÝŽjë„õù<}\eQú˜åÊ ‡.Igjv?*ïX}ü5ŽòPšr|Ò5–™+šÑšÇK)ß—í¨©yV̼ÝÙ„¾ØÖ°˜‹’bW¾^|D´/…8ŠŸŽÅjr65“TIûŒÀ”ÂÚ»¨¦ÅÛEÃI£IßëÄU oÙ4cyƒh(P+•I—š8—䌗öÕ®¤$ß›¢îÔ÷×r0¸³Ð–Õk–MrÞâc¼ó´Ô!ütR`>e&ÛÏÙâÕÎØýQ¤`gÐa?K‹ÄÙ~µÍ)”ƒÒ·ZôA\ÓKýõ%êù!BôPÛ®Ù³<¦ósŠ‘˜,!§¡c yÞšÚlðoê°»ˆžpC”¯ü½ß߬`G¯‹¾6Cekß'Ÿ+V`×Ê(‰K!(`áÍ" Œ‘gH¦Uëóü{a ëùçÛ‰ßõ+–+ Ã’!ßí·ñ B<˜1É`MºÓYÜ¿½‹úÊFfÚ8<¸sv²X.VÎóŽxÀëUÅ’ÈØ¢ôùêd¯×Q„‡yž({‹òù<õÿ8µzÓªÔöû|F‹Ž±ÅIãitwѶØì»Ë©Ê \İë ÎE ØwØ‘(5½§°D?(ÜÛ¢&vÍÕf¶‡?MOÌRçŠ|2t` Hj€OJ=íÃŽ@=¾ûÞXínÒÿKkò.‰¶Ä«ð¢ßc ‰ï§Î…A†w2¸u&Å&½-Ù=e3œ7ŽPÈêk="FÉ´%õ„bŽwô#W”C ßµ"›øBLt=—ï­PY6U¹Ìw6z˜÷a´ÁñÒ5¥Ðs­‹¨±øVJú°™¡oMœ­9–¬äT?‘ðÔâ¥ã_Òw#ÜÃ!¥ÊÕM“d©©{PžÁVkÖ«úùÑ ˜9 ÅÁšÔ·3ÕLÜ}íTI'>©î8ùvnŒ™Ôt8íÒ-?aûƒ™íÌÚë¢Þ¸ôµm¿!¸ìËg¢~ëešÛ¥ßkdTŸâ¶äO#ÎÙ½ ¡1:j½VùÝÙ^J’ …ï÷ÕÄ v*ÓÔ¥ÎTßox½GƒYWÜm)D]45zýJ¶¸ endstream endobj 871 0 obj << /Length1 2805 /Length2 19973 /Length3 0 /Length 21576 /Filter /FlateDecode >> stream xÚŒ÷PÚÒ cà!Øàî.Á=¸»0ÈàÁ%¸w‚»»»,X°à$Hp}“sÏ=9÷ûÿª÷Š*˜ÕÝ»{µí=P‘)«1‰šÛ›¥ìÁ.Ll̬üquu6V++3++;•:ÈÅø_9•&ÐÉdæÿ—…¸ÐÄ"“0q*؃r®¶67??++€••ᅥöNü 79@ g:#Q‰Û;x:,­\ qþû@kF`ãããaüë8@Ôè23L\¬€vˆf&¶5{3ÐÅó\Ð Z¹¸8ð³°¸»»3›Ø93Û;Y Ñ1ÜA.VU 3ÐÉ hø2@ÑÄøwjÌHTu+ójö.î&N@D` 2‚!G\Áæ@'$:@MV äÿÇXþ?Œ€¿‹`cfûÇÝß§;ÿ:lbffoç`ö- [ @IJžÙÅÃ…`6ÿmhbël9oâf²51…üEÝ %ª0døw~ÎfN gfgíïY~»”Yl.nog»8#ýæ'ršAêîÉòwsmÀöî`ïÿ" ØÜâwæ®,`£+PVâoˆéÌèàbeeåå`@3+–ßÔ=€)Ù~‹!9øz;Ø;, i}A@È$og7 ÀÅÉèëýoÅÿ"$66€9ÈÌ` ´‘þx‡ˆÿÁþ;<z¬ñc°þþùç“dÂÌíÁ¶žÌÿj1‹Œ¶¤¸˜Ãß)ÿ£³÷x3q˜Ø98\<n>n€ïÿzQ6ýÍâ_'eÁö¾ÿ…Té¿„ÝþžÚ¿×ƒð¿¾í!s Ðþs}V.V3È/¶ÿÏÃþבÿ3þÛËÿë˜ÿ_FR®¶¶éiÿcðÿ£7±Ùzþm™[WÈ(ØC6üMµ€ÿY\ 9ÈÕîÿje]L » ¶´ý§ g)Ð\äbfõ×lüG¬ñ{ÏlA` ²½3è÷Í`bceý?:Èr™Ù@ngÈHþ¥Bvç#J‚ÍìÍ/;7ÀÄÉÉĉ2Iì\\o6È6š=þb 3ØÞrÉÎ`aï„ô»¥Ü\Ñߢÿ n‹ØÄ`ÿƒx,€EòÄà `‘úƒØ,Ò;d2ÿ ‹ìÄ `‘ûƒ \ÞÿA.ò„‹Âá¢øA¸(ýƒx!\”ÿ •?ÂEõ‚pQûƒ \Ôÿ ?ÂEó‚pÑúƒ ÑuþA|Éñiâl™œÌ\íþ‘³±sÿ­pÙšÿ‘s²ÿC†älóÇ $YÓ?bbjbfãlkâlõ/‡œ¿ÅNÌ y›:A쀗ÍÂåœãùVó$ ³$¦™½-d*ÿ¡Æù[bg÷'¹ßãÊbþ䀤dnokû/l‹åOveþOPîßzGWÈÚÿãÂ2®¶&ÿ*+$e‹?^  ·¹ý­¶wýwXˆ‰åŸ ½åïWøoH:ÊÇ é¶•§ƒü/ ˆ ô/!oý/é³Í¿ ¤^’à†Æö÷ÖþÑCªû¯Œ ×3ËŸP\_`ȶÿ)$4ØÕÎô÷=kù/J‡ƒÅþiˆOûbcƒ$êðG ‰áyÝÁÿÓN¶¿¥ÿÛ}È£Àât‚¼âÿ2åþK²ÿÓcNHal]ÿ•ä‹ãŸÄ#W ó_÷Ù?¾9 í]€æ¦Jô×¹ßBgÐ_—å‡ëõ‰ RŠ?Ḡ);í@ÿ;š\¿m€nÿjĉ3äýü‡7$½ÿ³0lìþä y™X\¬œ€ÿš*Hù\ÜíÿuâÃõϺ@bþõUÉÙÌÞéßô!ƒàö/!ìþ¯-…8õø„Dõü„ôÏëgˆ'/ ÓüÏoæêi Ë_Ï2äAø/þë[è4CZ^´7¶® %tgÚz7Gµ«•JÇä½ìÔéz†LW¸át-š<Ú‡±¶#I{%²Búä}ÜÚ€Ö–¨Òþàóh¯:»ÛŽôuohºðX´~‘ˆI]dÏçÉÑG3À¶º[Ž*×Ñ•M9ûÖ}@Ú£~°lu"tqWe¯šû=òcÙ¦h(ý€âyª<Ó¬…7äð.Lįé±Î<Ð篮ç°r¦_Håâ|O¢9>{ën²ÇÜ-x­W¨³;÷Pè¾!†½Âš˜¥ö;ø$‡¿ä]Rµñn)›•ŽjcbÔg¼›ì¿ž¼,>«­Ó2Ÿô¥o{=K€v? b殚±}Ã1ÚÒ ww)é|¥–¢ý‘0Ä›p's·XEOï½­e¸+ã«÷Ç?ê¦õ¼Æô,¶‘¶qךÅÖ%žÂ}qà‰.÷x{| ­3J)k½û­§Oæ<ö<Ô:‡Ê%º¢!!&§¡c`¦7ñPÆ_Õbsê#Vóµ›B!ê÷Òé¬Hi¬2;žï=sþÈ›ÐMå}ÿàåîNÔèi›4]$ËeŠÕLjmÿC·--‚1‘'§pq´ì}-ÿ-…ˆÜªy•Èl»Ô ô¤BØþM¯QYÞƒ9&…%CÝýñ»æ¡ã¸yݬ0¿–æ-¢Å+œ.–•Aݺ¡ÂƒÂ¼°ÁDhÜ"åû9‡YG,Õ]V>Ó3̷Ū¢pßFkÞÏÃÚeÚ^®Qk­ùãG®{“4çŸ=ÙI ¼]?-'ÎjHé&\YH刓zÿA/ô3ž:èšÂƒ’2Z³@Ìz\”Ì(T»6[À·.á6gÏzPGûJrɵœ´£€k¸Ýa5NL¶£h+/B €÷XšËã ÒÍÉj-“6¿Àyæªw‚ê®ÓÙÿ)={7‹½CÏeæËèØ§•‚¨†La«Ë´ˆÓÌ­gúebJ$ó¡ÏƔ唌üä¹ç¥t1¥>³§C¥ÇQøðw娅.·óæ)}Źï*22¹&uø16þ´æé¥:‰¼¤àmc`Ò@φ«³@Í8†¿ÕX›‘:¬½‰keKr‘œüÒ¼ž/‚:›ïÏFÐ_P'e¨*ü‰)+9뢯È/Á0“ì! †žÍÒýfŸ½'“¥(7§…£[¤|[¿†ÇkÕÄëh–èîc3ófÚÙ¯€HI@š¶‘²›#®p)3¿w`ë.öíÎøE3œƒ8w6”èÇÛ‰ÓYƒ°Ìˆ^Ï–:þ˜‰ï¨‹y¥kG‘‰»GçE%–'TÝy‚ sR%ZïÒØ…ºq4÷ògµ=5` ¯ÄËùø,áv=ûôTÏž/ÉT¥¿ØB‰ý\t[ülC¸ Þ”ŸºE9ðÈÇË/4Éq•¡hÐJÞ³R©ûM¶2´Fn§¸Ö3 •íDçGr5—ƼÖÇ 2ÌðHÃÞsª£!å(»!Q¿­©Ùé=ªˆ7¸QUÍ(ÿ,gXÍõÄGq)úc‹AxXì˜rm˜îH$¡Ž¿˜V‹f6 êYlPº …€É)aB=/4yOä‡,Æh“[²Oá7U.IžázÞ¾¬³y_j|*„9khLÕ@›\9Go—vOŒüžýýö*Pf¦ä¦²"#¿Âw„‡4»*š·~Φ0ÓÙ‚!žv4ÿêÁ•Ÿ³£Ujÿ«œ‹Û@“²÷‰eÅ* ‡ÉbãÊÊËít¾ZøïF8r–_LÝɶSP&:œÆÔ¿$AUJôÀšŽòk9’ø†òÜÛ_ Ká¢hvûŒ7­ áûPÔÕceËÁ2¶ß›ò1;'.bnús±Ö¯wRý¯—Ö4%$áh´ïàÊuØZ÷®Ë?æjtÏV”°œ(Ý¿RG¢2¦>!ò¦}ó~ŸYü4ùž/¿ÛCf Ûm[òqžÓÈ‹$|76w¹í1"}€ñ2»Ø|Û–‹ÆtÜtÝ‘ñ“Ì53@)±æ€wp QQ|£; }ñ ÁÑu’¤y¸vQ! ¦ë²×òápÞœ†ÁþÇúÎOX[m]ècÝ@‡ÛñF$¶Ÿu¾öèþï¡Nh?z‹¾qVØ!6`¢d7Žû`ø`]dbAa•~Y)¦}XaëvËQ€Ö~ü*jG¦ ÷+ȆëÝÑu†NÞ ˆdÙýWè¸~É›¬P7ñêHe ×Ž\í·èCc© m9%²žòg¯¡¼áþIf:ÞÑLc†”)û£å£¤×U•¨þA^8Æ{d>Ï~•&ôU“æûÈqptÌ.²DVŽñKÏá$ô¬°¹Ž?ýÛjý«…öƒq‡59†HGb7yÐüù”\šô8|¢Ï¸œXaµ: }}~øÊ‹°‘¬•Jä(!?ØÙã½öø'qÄÜ=‰Ðg)UZîÅ‹¥9ó@†¦K—2øã2TÚW…©BÞèÂ͘Ø!]Œ‰ðèÂׂ<ÞÕòß0ûo4騰±¶lÆÖ8‚‚OÒÔí ÅÁ¾œBͺ/N#5ÞíNø½º/|’e9‹óÒU[®ñœ|+B›ÆöŽ]“,…[Ñ<¶?Ū…ødZð‘.U÷hŸ3»ŽˆyXH›J>2»k <„¤Ù3ö â“·±yßèÀgñÚÒò‘ÚöЧœºƒÐÿË4…ú‚yÊëÄÝnkMB'<'f‡~“ýMåP4Í08aàEô™´)¶¨ôý"­oCåÏ%Ë/šk(¥©Š®ð |/+èœ<˜‘žÒè´³}Ϩ%¨}=ä•^cÛhöJ}FI>fºÏD^b…{A"ͺþ¢¤ë]w›"&@O»„¦ÂqûBäS¸ÉÐ/£:=!§?3ñ?ªYŠ5ØÂa/GóiT¸Þÿ&ÿ‘Ÿä}¤@ÕÕ}žÖ Õ„vRðå×0~|ÓQ>‡)Cót±)’E9UZhn=&uúœd™Ñ³ž:PÆ4 O´°È•¯«Œ)`—+‹R YÄû«“[E‘à oRžµ‹©T»$‡‘ JØåýB ¸áPÎ…­èx©'pYÄL0,‚®?%’á·±†7ž¹`4+FÂj³B{u²mPrSâ6û>h n°Yï‚¶y¸÷Ÿ(»8kÐ5 õ€ýRù]F·©#š¢SJ˜#aÐ6¾açš:Åýà«tH ɬnÚ¨‹¹Ðú!Óˆ#B3¿á'A.|!§ê!y,1^aÝLãÑÙj©}¨\JŒV/u7n«–.í]ðÑŒŒ<â¨È^عRÁÞX°£Vd¨IüAõZ%~6¿3>‚ =¹‚àÚUá]Ú`ä¦ä"X ï.bï Xø³·›ŒÚÿµ˜Žº%F*ü |­/žzžºIêTx`xNù4ŒnƼeNQûüó™v‘ƒK[;è"š÷FÉíéŽYÐRMn|y‰—2½ÊxiŠÚ’ê®9=é¾­âü¯±¦ØÖ£a¥80î®FƒÅ°oˆX7Þp|6ê¶ëËr°á§r~Yïjq¹tN#‹¨—ß¾-<Šíh]vžF‡4sœ>WÇÝ”'Š5• ›VG‡³N$¨Y'û™{•ðú47¯óýŒÁ 3`øò9g¬qÉð°Ôô&µM¸\“¦ÚÄã —¥~kq8ºýC¤Â®¸øeþǪ¤+Ö/äNé„ÎSjâU{0ïú¾xŽ¡<èÍ?Ì ’1±QÖpÉ'}SÀÄ”ezÆ[H’ý ÅfN‘‰%Ç÷“:M66„¢0=h³ÑdFß.† ÍPR‰»&¥6UðVÕqM3U†m¬tKß76²T°áÒµ°_ÇùNT’SôÅ"7öþÆé>¡ùǯǓáŒ9¹©;–6£0’¼ØÍ°©9_MÂYŒà‹Ñ÷§¶ÙÙA°%÷.㈴,z";>âEP&NÜ; ÚW¨ÁZ-Œ0â‘PPJx×UN>ê—ìˉUo’XÏ;žbó¢ Œ2_LvÓtË+ÜT Ÿîg˜v')¼'H1ñ6µŸ!»žÕ¶o!t_°$¾àHè]ˆö‰Wír$Æ<+§¹/E߃V»_´—]ÔÔ@X5-ª[ŽDFëmè6X‡U<'qV—Ð(òº£+„S!0Hò»E!EŒ‘ö̕–úm%šyà Lë Ä×Û¡ÜÔN £/NOKÉM7AŽBŒouÁcÄý%{}QÀ™ Úϵ–C_íŠp;ï(OTïš_rŸ×*î_UçÐÀnËñ›Y—qZ°#)&4òsˆ‹Ç (aŒ¹‘ úáÔ‹ ó½ëž3I˜{3âs¯0ÞÑtMí+¿vÍ*ò{ó™s5GSob“9ß(Äô¨„Òåº<Žíˆ¹Éwtqx®×lö±Úû{¹ `†ÛÉÍZËÞ„×âe˜à=ò$Ôù§‘™‚u(¾ 'øooÈ3M]šÒÆR)=gÊó4OZŸÞô-~™*Xßa…ÍÆ¼ò#U.KhÖ¢'ÖʈPÊ>R ðGÐ׆)¦Ä“âM) »|**ô.#V5yò!”–[½§Â”©…[Fká5ãB¨ BUhÆlS‡´^ EÈ\êÄRå–jY¬7éi/Ç…± w´èã)¹^üz¾€tÊ£{¡E¸Yƒ†¼}Y[·*OåËåGó¨9=Ø@Ì6¯Y÷ï³VPfŸù>Uj£¨ñž`ygÅ£-déTÈqÚà:·žÑP:1d¸¤?…íñÐÓmØQGÊkM¨Ì£îÈó$ÒUÖ[^û7„.ýŠŸŒo"gïéx±„cHf<Ño#¡×à+Œ]òóU_Y¿µËH…E)#k¤)‚ëÆáhõÀ Ôsüü^÷óc.Á18nÝ0͹m”?Ç0EÁ»ŸO2q°g–f‚wv]lÇEpE‹â¸^Ëy‘#Á·#`ïƒÁ´¢èÓì‡Ó˜‘©ö›—ÙÙ ÇÁpª9Voà7gáû ÌÆÝ*R͹­Ù扚5Jd” &ÇÜoƒ0’é?“2%§zžbå´ÍJ۱᱅«¥ïåéõ‚h-P~QIÈ!}FžéeÐ8!k]¦‘Œ“íI_Ò¥Y˜Óü¶ÒÕ©àŸo²wúE1òÍzArŠŸ¹lL"63ÙŠ «ùv0óÐç vÖ;4yè€õ͆×z‹3…É€iJeäf£ôœi¢÷¼ò¡¯öŸÁÓíf*8x0ýEZ4"«(#pÖ^ œ¯õZ½\ð‡ô0ÓcýÌ©ñ j0g’ôºJ (I¸×‚i¢Λd(oÕ¤`üdIGúÝ,×BÓül¦9›ú\ÝJÜóaÀ£çYfˆ¶FÃ>¾ßÙ¤X8Îùü¾ŒŠ… 4©!(žih­pf&T¿š;ü¢SSÎéƒ\,€ ™]RðqlKû°›æðÅqk Qa®g°fí#«À×¼@Ç‘[Ôc;'ú”¥{˜o4ëÄù+$„99ÁñB]´²v(xL펴ŠýSa¢sçÆ¢UÆú­n—¹>_ã¼æF©ÊžÀÆN°yZ>ÁÄ—Ÿ;küD•,¦ÉÉ/”XÃ÷÷rBd#Ʊhâb|rê¢â¶5x¡í#‹*eVîìôûÔ©±Ó§´â–²g‘¦¿`”Ú©œ‰?‹t«ÁpgNÃîŠU|Q&Ånb+²"6‘»â‚UùV_mz>v^ÕgôÒ’¦&ÂÁðjZ§ö®Ñ†Àá.W÷Š#~—m¹ˆ ÌÏà(žƒûžÜºH¸ “õô$ ~v·@“ZûA™‰è•Uþ*:؃j¶8ˆû®Ï+C‡ØkżFnrã/™•Æ^ÝR¸³ÒqÛ¯àИ=çD•_W œþ.*k¿IŸñÆa“Bü’Ñkûà(jñ'ÒGhÌå„VÍcT‡¶¹LTzxX‡DÃÑ Ëäçwå%w¹~ç¹_iž(ï'<—-ô.Ò“‘Îh1Àük¦êµï§Ã×L+y™nŠ,cŽú#«ëêÛ¶ÆCË´Smz5»>ðz¹ÚãíÍaØfˆÉg~ÊT™?Æcj£ýe–­´Ø[6*>ÌAav…ø¼.¦ ¦NÔhý ˜û‚ôš[‰^w INH42«jÂü3eÜFgp3,§ ó9ÏƒŠ»w¡½¹+6Ÿ¡vvdÎ2Âó õÝËTýR:_®Eǵ.Še:ZiF­½ RÕ)'šÔÞžds]‰½á 7tW“‹×„#è9il"Κõ!V€Eõ!ã¦}õi~þE´VC‚8f+|³Æ·jš#K†rå¬\º&æÝå7-:€R%:°·uö´¨7Y˜ö91™YuþÝÉxŽ¢WEY1|´z“M3aï9o±8’¦QÜ@?²¹ê¼TSˆr ¹Å½>UΔLg"}ÉÝ,ð£¤=ê(ãI`[5ä`Ái|°8#Ã-þ¢»'¼OKœH—sHBÿò.g€·Ö{w¸nGˆŸ³íg;t§È˜ãùl]R tÀ$<ÆÑwfª°,‚Ëü~YWyy¶ãx-¬­8 I ƒ½QòX‡XÛJ  kË ®‰ Ú(gí³9óÂýÆÝúTNßÔÛYÕ=,íhûy¬Ç@2î¶ö­{N—¢Ëüí2‹ÙÒ“ü˜SùÊ·Ë‘aÍÍùÏÓ_k¨ú&óí}hwT´šÊ–Ùã&J‡Ï—\Lýk+EÃH9®zM_·ôz9ê _Îe¹ØÖþ¬g²ˆâƒ»QcaΨP,xHú5ÕMÃúë‰)³ñVC‰•”¹ aCKÏc—S*WÀúm¦ ⽯*Ù{/Ç&V¨ƒA¯¬xù²mu•E$ž’ä×{Uª¿f RDb¿_À|ºh0Ž(Ÿû,;Ö²ýQ°7ÔeŒI¿fYs½ëS©‘¾8b‰tŒÕǯ§ô.Nã‰ú8¢G°w 1š~#žEÉ ’UôGÍÉ=Zë“EŽ”¤ó7Dëù¥®¼U÷£Dâƒûõò%ÑÇŠ­í!˜ z´›<ÂUЙ:ÈMhAžT¼„/`X ‡êÚ‚¹êÀR>+Œ?8ÙÔˆv€·mº$bf|îVe\¦¿¶ b\2R¹³8å”U´î—›“™y—ð¿ÙœñÊ*“7j[ïú.©üíœYL7mùÄpéÕ/R`ºÚF1{ ñ®ìËq¬@›R%:K·Ò´»5“…§SB…ÅÄ ó+ÇÏìÎè8Õ¤ƒ³ˆº£Ôa†ü±$ óÇMöÛÃÍSë×$“úŒ?ø¡±=wçë@t¹¬HmÉa¬=nóU7kö”O¾on’<ô+…ÛüØ¢U„ZBË HÍï2~¸¿EÏtx¤LÁ퉻i F§ß}? Ûw(,V)WŽ(sâ­hÊÊ)ãb‚‡âZuùIÊFÀº•®×¥Éòœ‰M¢ÇT“(ütù1ѧ‚ûçV)]šAaΊÀÌè)ЇӝgôeZîÞÅS}EõÍ„ïâW²Fá0;a{¤J˜%£ö,jÎUD@âPzuyiÒ¾„üEH¥ž ¥;"E©³o¼´ŸŠ§~ÉÑ6^ó­Ú($*»f¯½PúÊ:(5Îá*þ‚/ÙÇ´6$ùÑéüj5a”dßu 8£‰;…F„›Œ# øðÕ»£¤ËøîÕñç—Ÿ¸<;ÝI«\3]k‹ 9Oá纄ªœrÇE¤´In¨k=—-þl]ëë €¶¸Œy–_í ¯jÖ¨.vdѾ7!ô #Ð\È7ZŽ¥~q\)©#bîÎ 012ö” ½‰7öVäP ý)9îOã`=SªG¤¡èÜrG5XÉúbb®í©t¸yü*XœŸ±È ú]0õÀ/`:l[º£a¼:ú®µBÓ–o¦p‹(L(|ã¹Kÿkü\Ž Ü û4ª’Áä#ÐÊf¹1œßÓL*o£—×iO/1jõ=O+ëœrsú=A;Ó!ñ=×Çì0¡€O´|zJâÇ-Ý€€mÌž{h 2j;áÄø3SÕ„ Ä™È31XñIG,’]ⸯ¥¢øŽÏ45æì³ü¦P<æ%¬vÑÃ4AüÚ>pb?x¡©f ý>w°kÜÔ<ÿÕT¡ ÎHgÙ¡bJ¼3&o£BE¥ú~«²t9y\aýEVñgXÙ¢ëÛ‚A‡çÆ|ãt”;"'}hxî#N÷f˯yÀ'¼·‡• ¥ýÇ냢HSÆò×åQYœܸQª¿^Í êgn[ø»â¼†Î\}àÂøü^…bSäF”òÅá~¢4¯AÔ¶eá£à—ÁüMk8™›‚p.Ày²šÉ©H®ËãéSþÊzh€³Bl„ýc†5Á[Ænj¾"M//(>é ©ç œŸzXF® ®³0äGt!טÙÓNg›œºæúÉöçäQØÈÓ£¡i!šå›žzb¹Ös¡ÕFh=Z’ãøL¶-ìôåœ,jßö¢ªw5ŒÂSЩá¸oÎÓeàÜDál…Ùꆺ<ç] ÞãQß±÷¤Ã"-]S?ñx¤”¹üÞØÖ® ›Ó¦Q/Ùd—ÞÛ°âQR(Ü}:N6Q¹åÀ\m·$ilïÚ»Èæ¥ôòƒ%X´’+SÓÇ 8,ôŠ:ôÇ«à‰ê ´®·3Œºw<ò¢å#ãÒQöG¿ÉÖÑçDrÇ 5Å}9¨—)ÏúÀPor‘Àö‘Ÿ¬tÅ·¤m›lkâVÕÇù8p‹*çËšöž°^¼™GÁ2v7Yšëˆ8öß•Æb8/ú$oî®Öò­°Ö8çä³²á½Ô~\ §¯ù5ƒ0ÁZ·_ž°-064ýKêŰȡ» W§5#öú œžÉó]¥ÕHœ‰·Ëí¤§I(8ºbÒ͵lº3ÙÅùÒ™ýÃÝZ,½—׸ ›­‹ÏÒÉäøé~¶oÍ+t¶âøÑó9f=‰^ör\*á°é°7yšSµ)˜wÙÑÔœý€lôÂ¥ÿ ÷M¯­[¢§kè¶püIuüãhì%å¸Ã`à u·q3š0—Œ€W…ŒGy ýÙKd×Pì˜ík> ÿÒf™Ÿ}šj¹ÄY§Ò÷Pôe…:I†&ϨÐYO­ \+Š VÍ·Ý”™ÒtCÒõJtgýXÝ–‰Îü¬Ý†[/Dålª‘@v¦'ñËyЩ¢§âõ"{aõêdcÅÒ\ÎnZ/ûpwÍ;´}Ÿ^ºg#x8Ç¤Ä B·Û ‚É=ز=V‡Pê,,³' æ—ÒŸ§³=»ÒôÄß«qhÆÃåã:o9"öÑ­’åLaè¡w™–¸¯d„GopÚU’¥Þ55 Ì0Q9¿î 癎o„8ȧ AEñêÚ~øFåñdòÎô4¶['ØëÞqy¿n`Ó3¬Mv´aæ вÄè¨Þ÷>×O´]7ÞÖAß뵃’FÓ¸›Õ²–R ØÞiôƒN5¶Pº,­Íôqï=Ž”4ƒ‘¾úÚ&™"¦€6gÍfîɰb¨Ã [þš"~´¤Ñ+ô겟Ïbs—$1ç¢Ê‚Ï™ &fBx9¨ B>z*Buëí[…’ÛK˜h>dqøF»˜çd ´ š¯0kŒdJ£öÙœäæÃ$àn®—€GÕ¸eËòÜÁ·w?nÖæSÃwÓî¿·¦+u¬ËëU|©@-¬5kÛïkR¢"¹a×dʦÒÉ¡гpW> ª¦0\úÖ >zïrYŒv–îT›œŒo>ÏÒ,µ] OAÓ'8ÚÊ“ÙÚ‰‹ùë|ŸO66ÄïÚƒÕ(Z½¿ãKš7½Áºÿvwq=Œíe‰¾@üÇGÜÞ/€3>T¼pÜO8AMß<= ² |Æ”¢œžÔ×Öòôjp7"&A_-he¡÷—u“ÙŒÛ`Yv±};#5°'ìF2mr¥x:½àâ1'Ëúµf÷åið7×d¼6ŠƒUÚ »•¾¯fØâGÓŽr-ùÂoâ¦vZÆÜª8¹A¤Å,wpD̸9)¤ÞUN£ÊwÂ¥²i N_Íõ<}’ýÒ¡ü]‘8håP\ÞÞ~Oò,ÅÉ1m®`×Ȥ]´ÇÝk5/¨Ð©PœÌ¿B¡™ðö6¼!¤âéØù'R%NNäÁnàzÓ·=°¤âÆÖÊDE° Þøé€xqþâ¶F××£‡¬6Žã÷&ºJÅ0 Íú"z¶ŒÊ–é)It\.Öë–]Aä*KÉZ>ÓNh€aç›o_˜j*i²øtŸcЦ-Çð§—¿öÖôE›˜j~‡ñö%A!/á7Àœz27`/^xõv3>´“ž*#—‚>Ó*yILœFvkë“­èvt6ëX•Ü”^´¤´Ä¶ÒüX¢`¤Îóôì9d‰ÍòÕ-â÷ÀˆJg§”LK¯ÖdœúÛWi3Þ¼y•b±õ„½ÂáOYbµ'QûýŽòbõ(‘bá“©øÓäZãB‹xîÜý|W§E§HÐÝR?j6ØáCRQF`"<*Ð$¦»’ΈK{Újœž×€Öoú7Î]‹yr–_ Že$ñíÿp/É%j(Š ±üš":×µpPœÄSˆ¨0þòú×/3Çm·áê”ŨnÆéà˜Í¦|ï¨Ê¸¤eÜž‰.,L!!ÂršÌÌœrL$¼pT\O;¾Lÿ© Öc:hðfÅ·ë´Ž|Ø.õ{KYŔֳ4áo˜0{8òn~¤BÞmK[è0:ð©Uÿ‚T êvîh:Ï6¦ñks–º”Ÿ°@#¡ZÖ¢ûâÏuy÷Ü".~öN<²^w/¯çN¾pOIÓÏÊ6beŸxÜyz>Åe6Â|D‰«òÀÕ°W2µÅ hSmb£Î˯=N7ÞžO*¦IPÛ#ˆúÈß!›qgRKîÂiG¼¥îê08mý¸rl2ï¤:j9+öVœ‘Ç›žQ öAº˜TMÖ*Ëo£48“iù×= oâÎpÙ¼†ãÚÚ³ˆŒGÔxc´ $Jœ·ÂñÑ啲T«S74Ífi!„µIß+ÕG-w+`lõÑÙî.ï4g+ï ñe4„ªÖ…»2oNz‡¯VÀU­o•Žô×Ü¢îËÃô†s?aæ¥ZW];òÖWÕ ,ÌK*,#E vÞœÊÛ µz›¼åCXQÝMx39¤WP•©_äE³¹1ÐøÉ »ûÎâÈ¿^~ã‹]OU n½é‹Ï6ÙS¸9’«‹Wm©üÆhã:¨÷*Rå¹h9èé0ÛÞº³PéÂv5yð“(Ê iºGKƒýøv¡‘c}£,EÛǺ¦¹c™0è‹ io¾.Ü#ʸ’‰ê¤à µh^tÛ˜ÌU@Fˆ+Ö›âꋨ÷.ÃŽ‰ÅU6D#DuMÕÕsxþ°­ï ¾X«+Š355¹&œõÒB7 Ûægµq˜eG>Hq¢[6,FÉ¡#k–0sžŽœ~âWq\øT”÷Ǽ¼˜vJüfCïãgù4?n`áßÔza;ùZêVì`Ý¡,5K£4ÅGµl?¨ŽP¦VÍê]àÐÇí{âé̽&ÉÙ5è¾­jʾ¯+$Zo/`@횎ß^…NÓ_¨÷ÞN®!¢Öº ¹xb„²2r=jÓlÕ%ŸzÖ]o\mBÂ=ùïfõörŽ*vø‡Ÿü#*‰=J |ïd,V ÖG±x_¤m;üç±tT™*z*2FkîiZä ÔM¡ðÕn‚êÆsœŒH"n©yºè÷”Ï{’‘û<¼Ö%‡»[œä’»v—Ýúèè-¾`Z)¼n£ÀßÁ§?¨ÜÉŠÇÔ gèîVÕ`ܯq^+‘umÕÛJ*ͬž¡$¸º¼)]A៿)a̦,2¦/‹²÷þV«3…ÑN\G¬&³sýpÿ~Å`ç§£^Ý9aÝðÌ-¬$µîÝY}¸m*2TâÞP’‹kø“m÷%®;™Í,§´ÜI@ȉÆâˆVòû$Ö±€ý~çÖ#é÷jâyÛ‘sÍ’¤_‘­´é§#:fŒúß (j)²qDh&>…äÍŽJŒèN rm‰!PÎâÔ§÷2 ½Öj2RÊY;œÞ~ šì5Ó²Û# íd5Ê™”:Òç-;²®ÆÑ¼â´—k¿Ç H,Ó†+V§[öqê‰ãÇ–a픞ŸZ$Ræ’ëúì-†AʉѵÆàÕÇ42Z^¿X›ï1uêº\¥L9%‚§ŸúôÑÖ9+Êh޽ Hù3º¦¦:|™!#‡jcëÊâ'GËaîN —QÎÚro×[>•cÅtÏ%¾%Ú,`ßî=¹©íëpò6Ø I™³}4añ¿ŽHYKûxèfwqâ­ò}¡tuxæpV§Ç­ÎŒ“9É3§Yc7Ù5vAFc¹‚G“ß#êë ¯ǰBí>‚«¢ØþÐãŒv.%b\j܃cuCö£Ë¥(Ð,©ð‘Æ]²$,úexЧêøGëkëɤ´Ìh‰6É@fæŒÐÆí˜UÛUœ ‡0Åäàv×/ÆÞ8àÖ/ä/$ÒνÜT˜oÍR°Õ¿Iç ¡Y ÀA§*ˆ©-ìS6Q‰­‚`Û W;ÎEަcã>Q1;ÌžµŽPü‚ÓhÞ“ð%Ð.>~·&T ˜<`·È;¢ÅÕç91Lfú­êzÀvݦXv m`à LláþTðð_ìåÀr‹Ís®|Š‘{2#‰îé[~° gÌU°#Ï@'f)ÝIÈ7Ë’Z¹¨Ùfˆ,âò}æ©nL Ù*«>Êy [°®‹†-s]ùÝ?.¥£„*†ïN}8Fk~X€³¦ZòüE^1?hvCÿ.iGŽyÅ ^–ì©ÐZ´Žú—Ó÷rÄ-·"šúY’MyºaRŽïtº·yÆ ¿Œhç"—"áóÕQHñFȕҀ„Ã84 S÷ô½?C_«ñh4“öFÞã݈kd>\'¤(9:¦”HÀ<´¦Ó2¥Ë`ˆz¢„ÚÖõ2ứˆîÌzÛ“üVÀÈtÇ †Í³ _Lìä™2ÓŸ­×‘µUþSy$ŸçIÉ׈Ò]Ì&]Ï<:ª”˜ZqOK@ªL‡Ò°2Y5E@Võ“a5¦ýY5|¯ÏŠ(êSy&vœòÔ…bgÛ‰ýÍ»Á²Ð©U†j°±Ý}ó€á¹•OUNb÷O·Ô@ÐLmÏÁ±•´¬B‚¹|Y©ä˜ã»…š"•ÔNÚg BD_< êÒ®étËÓÆAŒ§vµÚG|ÒZ&IZnE§1°Vœ?j¢ÉÕî#à§tr¦Yç"m}Lx—uÊŒšrÓÁ°ÆBv¦t#œÅHçü²¦²iX¾‹ý ÏÜ1¥älnFõ+a¯Y‚E;85¶Éõ†ª4ÑÈ‘Yv•ò®ÔYÕÔuÖå+^ýlVC&§¼$½J‚õ}ÛýI¡,èy·rwÜ(r©é<4—=z½¤Š!€ñ“b©Ÿ à «ÇÊp‰ØÖLÊøs!%ý…ò~*쳋(VXÉW†¢îÇï:ŸGÀ)±UÏØaÚQë7_½—Þ@å×Áp–a»ï)ed¼Ÿ]ˆ“Ž;û¾3ì©Ëú3Û’°U Õ+ ¼¸óxÑ¿üЊü,r½<>ÙG÷¬j!·ä-Ýšr÷ÁƬ È(W=¨ûµjBî»-mjê2OªncCe=\!­¶Àì©~Š'mù§»Òá«ÎÚ%-ÔJ‘ž$÷¦×÷Vn©ÆzQ[<µ4[ÑãSVþ£ •Êó3ábY™2ãBS~|ÙßàOáñrñ$jzU„mè®3ã&¤ÎDŸý¿Ô#-#4žù6¾‰9Ç‘–WQó¬T>Èù¼®mYQ,Ý*u%15Þ;´j‚ŒkŸƒ°RþæðÀ›{aáÆ6}š²DðÃÐÿJéΪt—¶µ‚¸¨SËh¤¸šÙBt)Š›æ}ÙMþ6u¤^Æêo˜%ڹꞓÂLqOuê 6·ÎË>÷ÿŽæ«-;ÿntV]7ú«suó›·H¶³ zEcP¤ ¤FØÉ»l#èéž—©ùF*®GX†3¤$?ø>¢’é#²v\N,¿L•Ú¨¶˜ËzrYÈé¿Î ü\PR/K…ýã†ËoVü~RâqËÔPS7çE)tŠ#(——JÓ4kFk#­¸´´+=àZ(/ÎL9´i»Úáêš¾{¢áµË¸¶§÷rT¶‹Üµ”œ©Fòàù~:žCvD–Gë;CsPæ†þðžZ¿)†ÛP}q–÷ùG°×–¥SðÎ¥÷{‹ÃQWoé6·sýaÝF "× &Âu–1ÎB}ÎÝÞ¿5I‰My·Ê%1¬è¼}¢èıgÀ÷8U_a€ÓŽPB‡>'I îÄÀÓuîòÓ˜Ÿ–ç„"Ít³Öü©µþà¼c¦ÁÊû ,È{‰º–¤ë+‹•[iнMnâs ÐNÈtïcË¿T¦~§q©¿²]É6‰÷&›^¿4Nä£ ¿‹U;šŸêu¼€Ô§Ì}´`• B®,ZM5í¤ ˆ§šCÈÛP{õ/úîæX`7:¡žµŸßnµ<¨bÇ]!Ý÷ø.Þ0³ã˜!eé•þ6åS,ƒOÃÜD^æ'–s¹û—2³ kŠ™ÕfuÛ8q÷ /ÛìO>&§¤)?&e–g,IÀz7²øå£¾’y’¨¶‹ä6ávgn5ãlãFô¯%¬qÔíÕ¦|eáu]‰‘~ @ô«ÂlyÜ_ì,£R# uW„Qt!ÛBö¸ã!× ÑiŒvÉ$Œî¥x²µ0Kר Ú××T) …1u|ü°p×¶S)ßDŒ«•ñ›Ú´|KNÛ¼>‚I2†RôÍØÐM(ÉHúlóË26âöR•uŒÕ£Ÿ7]ì ´íNÍ~p¤[èÎÜ0ò3 õ ®¶¨p>–™Œ¢10ð{‹b3_øj„h·¯ŠÆY¸XºÉOå?=ò‹çP'£YŸ–¦OÕé«¥¨»"feƒ÷“íãúü{Ù–Zê;ØãŠÌ¥_pòª<Ëxòòn¿d6¬"u\"è ]- XT 7M"w‰w¹M›%ŸylÈ·qp·ÇÎý¦kÕU ò³ÚªKÑÚ*Üç;X8±Ä|öö!ÐZ›>EERn°ÛSbA¢ö´û)Oí:ûNf=VÊK\éžu©^Nz¢ Áª…øÍpÞ‘Œp„®C‚«h:wx›q¤,æg4ó½ðM%£Ü2,‰€ò—›HÄŽ+2a;š¸åk Fƒ6:‘µáÊ2à‘¼íÕí¨™‚\!åž±Xõ¬´oÁÖÇ OV«g*½ÍÙ'j;tºÏ”}¯è>cZÖƒú:Êͪ¶‰ÒOõ5޾˖ަ9οDí–@â­oËq”Ùù€àsÒM÷ÉzÕÎoÈ2ö[ó§Z#!;Ü¡H“Åîo€Pà¥:Ptû'èϰá7^]?p6Š[ãrúÓ–ëâ6¸:qm63õYL«²Ý"bŽºB—Gµ«±c­ÏI·¾½ÖHÅeHk@WLÈ®)¯Ì/ó=¦lýl¼,0,‚^6ݾÒUÊ}4=ÇKÂÕîDÿÅÈ^@Ÿ¹¸0o?µµ^íÙ©-ÌZM¢B¾,]4¿ò•Ýàÿ UªíîÞaÈBdÖMøˆùì¤{…[§r´”Ž”ÚèMÊMœF s„OÈΆö«œÎúî똒Nr vù5øÿPùb¶ws—b–ûÊíç§AKÉ×ïk ¨“ñv¸᦯‚{8Kï›âøaxâ¬[V¢ý¤ƒþâ‹0]R£Rg¶}R –ÝùBq±sQ•föØtíP`¨<ôE«â5ÎÒ7óNÙOg`#FÎv«©R è=ìõÄ{ØJF{})¤Ãg>C‰ Ô}"YÊ`Bj™ÝÏý’ˆÎǤ{Žyhê1HÇ'©á²ºÁª¤ ì«S/ÌÏÇ CZß L5¼ƒ­¡ÊÓ§5ƒÄŸ>¤Y` 6\ ª™;Þ,€¢Íˆ ø@ÏV0Y3;'ߟ¾a²ëm¸ÛSèÁPé]ã#{apïAlQA1q€õRÕÞÉØróTo¦"x€Aû†8Iá·NÁgž¿ïBÆ);‰P‚Ƕ} ^cè¿5éL1å‰wT›3bI“î,Çq‚ †Äû‰õ-Y±«Rwž á¹q6=|ϧÒT{[]Ø4Æq`—‚­¯ÀLŒVVå4Ïy _#ªöÖË@{nf4ŠÂ·ù±ÐxóL½ˆEÁ‘Ž7»Œå6îδ?äÃôÍ^4Ä”óe(Øâ-l_w}…ßʾ¦Ñ[oÐG`>0-=Ít•Pm¬9á‚¶üHÑ37ÞßU8½óŶV‡õé¶Ÿ5Ÿ“-Aôi³ÔQr~À~F^”l`7Ì”iXdü»’A#0ÁúM½Ó—×$%‰6¢æÕŸ…A s޼[)4!*r3mmª3KÀ4ê ‚Ò Ô:¯wë;6¢&·ÄÜf4-¤ð³†~Þ ;CÜCÆŒBé»y[äO£„úf w\ …´ò9BnQ6ñ([,m”©kyúOEð«ªã#5Yûã\ŠR^ƒnúþlK½HzƵg©ÈËM_ïÝ˼¦jÄQ ;dð•z7$Ü_äÏaC sE"N1þ[ìzÁrï¾UѪ-­Kj¨HƒšFyu}Ú/ßj¸ÍØÕëØ¯9A›VÃò¸àVÍ2›Ðð¬=Jº„¡Ö?ÿå{—ˆ[~Ï`­©Üç<—öS]„éø™Ø¼89 çöùv*²Æ~öÖ5üVIÂà¸Mk¬×‚ãâË©!z•CÕ“2”‘;ÿ­]”ýÿDp/‡^[-5ÎG/‘feÃ/U W·Þ]®,º}ïØÎW‡êžãw-Þoz. `È6ƒsoÄ`î œG¥q}ª¼qˆDYÌhûÐfHªC—œ½£Üßq }Q§³ñÑ€ê*>d§ýçVì!°8üØõʾû«À.»‚Å[P%B׋Ëß¹côö*ZL¦:ÇÓ}ҫصAðGó+ 01µ8ZÀ\Ï–o¬8Ô Ÿ?Œnü¼N <ÏP·œ@U•×|䯶ÀÁ!ßzâïP\¢ï/a#Þ¿dÓ$×ôzY»=8O)ÅD¡Öµ>ë^Ôgn•ÔZ¿}GÌ[®n.Ú NÏ$¢Ú‡áä˜ñ3ôƒ’ú$œ¦xÂâkheû {(G4¯Ò|.&Ë©µImÓt>¯[KbU´nòûóNãqI bùÆ)+ÍŽÖ#da“–U© Ø ½¯aš‘ 5ÔzúæïJ8‚lë;=t18\Eb¼ nÊÂ5O&ñyÈX›Ø¾Ü´‘}'£6»6È©È€Õ ÇýÓK~Q‘ªo 5¦gߧΠɸº7e¼oÎx¡ÿ™U$¦»l®9'— ¢W7uºià¹Òá'Mß%žá¬Ò¤´þ2ûà`tÀƒ³ÏÃð9©È½^ƒ ZQíD^Êþïlf”ôþÍ’±(®¢[ÂÉFÓoKwWiÒïºc—äOà6¡ ÇÄÖ'g>õC¿.Òº}ƒÍ> ‘/ùä4¶d^ã}"]ç2Ÿ·²×©~Ä0Ëv­ŸD©gÇ Ò ûWÞÏÙcZHq8å¿Ö4-cN `óÉŒqÚþNôÈI=AØUÔê€ídx÷ϤÆ}ïî‚Çl×NÐçsŒ `ÁÎWn=<ˆasX ~}içÚŽÙž_¿T¨J¨hn2 BØÌÄÍó„T"ª \ìh ¬ ñ± Öz#Cì3Àá@g,dEu¼çuɃ¯)Wå¾ð4É¡ r:”ùÇ!öº3Q«æwúÓÓé+ÛP ܆f®Ç®³u?Œí÷A^{t2ot `®†ˆ„Øà ü1:@ž;ŸEsh·$íƒ †j‘û….8ͯWÓ]a,òZs“yØ»&ÌN†«bÜ£è4'6Ü(‚ê–bRÔBÌäØM‰Ü$‚tÆhv*=ƒçOrÿfS<Ѽš&Ñb±5 dôoW|¼y©l˜XjNðRNÍ“¦‘™{ìÎ>Ìi¿þ­g†KÌÀÒ,ÇšÚ+ðŠùª83‰‘£wª+YØ“¥•ž’ŠÈÌ: žÏga੺ŸëIÁA-Ûæ\Ïü‚’?ËÔÇÈýuÔŽÝߊ(½Ü_ÿ¯±òÐpuÿ7% õßîÅ(˜!'yTp˜‚á“á*5l~¸Yvt­ð…¿šµ §Dÿ¼`‹Æ¢ÉqÜ»+H¾Áë ¿»EXÒv…B¦YÜÏRÆÑ6À^êq­ÿ€;H}cLACÐN>ZÆÁ½ÍgàÜ•œõ5ñêLˆYÊ‘÷khnž yD^p0yô~;‡6 ÍÑPèÈuϬå”t¨: Rr£Â¶L¤Ž )¨™Ûuý€Åt¤¢© ¤ŽU¢ý’g°ü\H“H`&CPœ¨™ý¤BÍ7üg¡âìÂOÞ°¸Õ¥ñ+a 'JêA§ÞßÜKŠ’—Œ¬ i}ƪ½í>³“ƒ¥üàþÙDS¢­íYË;åøÙl,ô0š@àÀæéå”ÍjlöB £E=¦…ê¶@}®™[\aC S¾iQ8ý·—Ý冡·ÿPõsÔ(d­`dÁJûÈ8`à?ÛPœ§ýŸï=ªÇFÿŸ˜p€ðëäçÇ»«>ér^5–ld³ØáÉ)ò) bÐQ´®…‚ˆþÚ0=`{ s¸$`EÏð±+=‚¤7ý鬦eg¬£Gë§Xd|ðÆ*9íUÖbܚׂ^í®äšÍj–Ô0r(ó‘üàœ2[·ÉhñÈÄR —ë}:u§Îà¾R:2ݤ²2æ]^?\ʃ,*2®nV©ùÖ$ùdˆÇRmO8½³£«âãÇ>4r»J®¯MƒöLDhNÞ «—`ÕÏ ‚Ð>¼‘\¦Þùv»ªã!tcN`&pyÒV'ÜÕ䮸³ZÜèˆè"šüŒ*ÇT6—"íõ²M„•Ëtˆã­íß¿ƒ· Mé ’ìbÔ›|í&žø+>ØÖz¿=z~Î'ƒ™k¨P±fóRƒÿªõ0ë'ù¥*ysŒ@y'cî"Û8@19b;½~“ ^˜Q)5Üôݧ )‹NNÜ~Wžô™vHeþ|Ž®-XèÜÆ÷@¸pLû¯‚ãµ¹1þúe8 Žs¡ô›`ð›Ç`TåEÖNÓa¡OcZÁú61ÝÝý’Û¬‚4tãœ+<ª§ úÕ´þQ¸œôcþñ4G¾} ƒUúp„€“œÐòZtŽê‹¥·‰Ë— â–nûV|ñ“Ügy¨tüâ—æýUVU¨â7'jÅWcÛÓÿåFa{JòR ¬¾X×[‘Fb5°Âk ø“;Zv¢tá~bÊkɈ•ƒmç˨—ìxh៛¿“ÃÏï›AI‚-\£0¯óS®,b¨!dŽJ,%—oX“¬$ëG®5±¬zŒqœúÌÉk/]"¬D)º£![¹?ÅfÅ?„'÷OÀï{ó2r€NPÊØñëö '"ç9àœt¤„±9ãÇÁ3Šà¿ÒžwÜ(ðó䈵3½3D?îÖô ]¤6Ñ•gG,‘˜ìr‚ÅT´âO}Á°=^{59à¯6rx&)Æëz¥ @塘ÏÐ,dSüÆàʬeHÈJ*_Tg²#ŸùˆghÀ×ë ©Úê µGî[šˆ½!ú5Y›Q˜MÎKM{Õøñ¥¯æZ`nHçþI;eïZöî@;¡á¢Â£ãsõ•Š‚†ÚrwµŸ„žªt“/üË´rî͇§A4®M2Ûúçl¤ë|×^ 6¬s 2åó6oùÄ< °B;%Ç Q‘4±ælþ¡ä§ÉS«‹‰^發sÖdGÃé“bôU*þžý;õ»½Ä°•¤å‡ôôÆs°&g[[ºE^Û ûÇ$´¹®æ+±“m× •t¸Úüá¿.žK8ÜFQ…Ž\‰µ›dn”-“Ï:Cûan^$×ЂlYË1¸R)7'·ËóÕ½ºÉp˰Èê&O‡øÝ^ç÷ýxSäʳòº+>šŽ…t²~ı)5-LÈÝnØ­xäÌ…­žÏb¢Î͛Ŭ|Ûæ¦¯uy§*ÂUU«x¿Æ}¶ËÜMÑø=»¹Á({_$΢#¡ãªÆJÙwz á!¦ûòš=9Fw÷vèÛ$üø´÷Z¾¢ËûD&–1 H?TžÙ\øp¾êìÇÞ«ü »txûlY3çî?U²Óõ\¿È"ÔÈetpR{L£·©ßõ¥ºö÷'/&îß¿þ‘à<\ÑF¤¶$ùŒ­½)š;²jưÀ¹LǽÑÉÛi;ñü"Šéªÿn{`@ãû…¬ZäêªüÌ_³ÇÆ3 ,ÐÍÐL•È( q×éxìœ+ðÍ$Q4ÿž£k›âüíŒÑEJã,›Å›œD¹ÍlÙZÔ}bÃ'fnªµ±tÃjΙPvO‡%þ®ÝGêÐc¡n;U€wíߤ#ÀÀ2¦×â°Ó eã endstream endobj 873 0 obj << /Length1 1469 /Length2 2187 /Length3 0 /Length 3135 /Filter /FlateDecode >> stream xÚTXY×Þ•ÕÕŠE/(Ò HSzAºÀº„dB†2RH(Qi@\DXdÁ"¨4]Å‚"JQ¤«ˆ¨Ô¸ê~CqÕýÿçù¾gžgfÎ9ï9÷œ{ß÷ª©¸¸i›1ÐÈExÚdÉX8¹»“)€DÒ!Hœšš;Ì ¾øqjž‡ £ˆá7 Dãa>K:¡°ç‡² ë’7’H€B"|¢C`I ‡À‰ìQââÔ,Pvdñ°u¾ü<] 6jM§³PˆÓip¢ñXP(¶"ÜP: ñ"¾+7fñxlC"Q h¡\Ê Ü¬¡0\!.Ä ‡`jd°… ÍŽFÀ©wÌ ¸¡Lž€ÆæéÂÅRøâluàfçœÙ2vœhÙÍdùŸr³ÙS…`d:™F§£¡l#€ ‡@ÀÙÚ‘Àò´ aLi!\˧…ÓàZ˜n¬Í¶6áì|\:fó¸.25#qª ¶ÍVà …7ÕŸ%ÌèØ¾Gg7AHÔ‹ # æÔ >›èÀa|ÈÎrƒ¹p_}PI$’¾Ž€Â$¤³ˆS ¸G°¡é yÊÍ Šb£lÀÄÆ€D0Â>¸(.-<E}øÞ‘ɀÓy „Ü×ê˜bÎØØùs`!ð%aô#ÒÔóÏß/Ã(ñ>}ÄD­.ÖfGþ'hnŽ A”6hStt•¢ ô ¨@ô}<Ûék¦ÂDÁL³Ø.}i8|–øYyh€ïkmA1ÞBÿ•æ~$*‰Ž½Èÿ3Ù§Sþ?ŽOUù¯4ÿwGÖüé8~ðâ´P8$bñ–ÏÃ4à„bJ@þ õ‚f„ë1`~è¿£v<¦3$0䟄¹Ö°b¸À<:kš3n)…Àä‚rá©›h“I¤Å0qу±Ûƒ‹Qr:aÚù~E+„Ž2¦DF¡ê‡C‹À‘0&Q¨TEÆÔÈ€„Ó$D‚ò°€M'L”ƒ›:R] Ҹظ07x*2ã¤"+‚Í´ÿÅE&a>ø«I&â7Q2å~cê"ïs# ò§Íïz§ó9LÀÓôÂûbOß$„踮”nt6¾î}¹ÙJöP3EW¶q,ÖúîË^92"ËvÙœõ슞’ƒ hU¼bµü¯T|¬¸.>À½í’Z¤«Ät¯~QÄwVáÔ¼<;h{·äeྉØÝutc¼f oÚaÑCGóù§kû9”ªù©.ø:ãmÚV{[v˜ž¾ó¶Èdí6®i¾]”wý›õ«›;:=Zð:"rŒ<5ø¥k;}Í^øô7ⱂò¹{“ûÆ?<ˆþp”mškos®jàÖ¢ L@ã“ãknõåÿÕƒ¿/쟰-‹Ä|µæ€÷»‚‚GG‰>šå£Ç¼+üZ% ÆK…Ë­›Wª32r;bÃ,9ªšY΂MÉ¿'–¹*¯JÛ¾\é5ÏÈÚº®fâ±æ_èD«¬M±ü¾†Ã¹Ý´î7í¢1§é×Ç5»·ŸjU«)•=ù(C,uŽ×p+éÙ$åíÖZ›®yªˆë 2•Μ·/¾´÷•”Šã’ª¹ýå9Þe+÷Ü]Þ½ lÏ!Vd˜OP‘üï~ç,ø§ç8ß+HyÎRhôë]‚’ˆ7$b#¦¬¦_¹j€iÖúá±ÌŽÏ÷6—¯5[ç@vù‘wŒ3‘Ï<&½«“¾·À­ÇàÙ"CŸ·ësÎo]xþDaÁÓKNãÕŸÄÇ=9“†øó;”7ðá‹VžÂ/POáTïr<#®7úÔWX#¢mˆA1în¸ îióºm?ªwZUX¯ø¼ç¹5#@þw­¬‚î2#aXcæäû?–lÁœ xôÂo´mU«ŒOKö:g%ìkýù1~k®™]ËØù*S)½éRî¦úCGjá™kÃ//ZòÍC§Šý¬è¦ø°1o1Ò»óïöT#ûŒ´´Ûç¯ÍÆ?X¸¥/Þ(®¼æV`{ùõÓuOöKNÙ º¬ZhXÙ³)ᘑu-ƒ:P¡ªEjçë]Îø¢'¤Ô„â¶ë±Õ‰Ôæý—pÒ¥óZ:¹«5ƒå´P¯ór½ÄÎÂì1߇ÞqnNQ»wµ´ÎÓ|ýL©Î£TÎ4R¤™² {ÉÆ]OÕZW(v¯vöŒlÖ{0_™á×”œ­‘ÐÝu$iJ¶<Ѿͮ[xˆŽW…?%lè÷6—|^Qèàk¡üÀî'¯6°w‹·­Ñ Åí¢Ò\Me¯‘aÒ8‡Æ‰hbµ¯à±ûÍR¤†Ü_ý˜¤Å):®pÄôÞÃ=ã¹ðþøIMýË–îþå7eÖ¶—0‘9Ö?¤‘ÒÔÍKM–“ì‘«ÜÓ+: 9Ö{Ó•‹Z*²˜÷G•rÝ»•аÅ6SÒáWbS"‘ží½Ë©kÍS‰ÆS(ŒîLGí:ƒ¤5Z›äùì‡Áþ® ÐëB+YÛ.SR ûQåœX›QÖ™%£¯…RÛK»¾#—G£÷c~sÉtò`]ß ÇÅõy>¶A¬>®91Fÿ©õϼ„¥9—³q/'žù5úzµãŠør+&âE:þN¾þ׎¯Ëà„¹—ô«¹µŠçm;« žÛîq2þÃÕ|¾Hrõ·ÁùÆöÛ§beÂ>Ÿ¿`÷ØôI—ëV^'u9¯ÐÑ+:sHئ!™|&·S%˜ú~·ÊEùwíxñOÏUŽ ²J(£ªðf­ÀkŸùua6‡ÚÞxú†U^ÏÍH‡+Ã;ÞZ K]ë·Ë`ÎËàç^‘««’#Ë:Ž´zÏ]}$BÚ³o^â¤RyÓdi38&.´\ÍýF¬Äùý§ G®+½Œl,SRT¡¤ÜYöävFä¡öÞYªÊ4ÜJÕß\!D±Üæ—ây®9/[¥Ú_Qà¼6ã´%U‡¤×°|*ç%UÇ«¶â®o¶¹cd¤ß¬e·›U,)Ië÷µ*Ý(~~å¨|\ó&Û?ÆÝ»Îã^zAæºØHg°Ð¡8p‰"Õ(i•”g´n>ê4/þPwU‹ªe2ßÝoþO9Iqꎕ{}VØùæ”ÈÞ¥¼•#w›p uo÷÷ºvjÿ*Q0Š0 û©`4­Ò¶ò?h{pµª§^vÛúû¸ªµùmR·Œ—û¡;‰*{Dƒ=R×3¬U,ç-Þ1¶tÛ>ÁhÃ}jŽœÏð¾lO×ÃyvÇßÑTö\ðI¥Çåºô‹GþõxÉþ®ä‘}i쫎ù]5'5ÞçZõÇú„ }1Žô?k+$ôDÉŽ¤¨+V¤»qÇûÞ™¤¥&-Só0ëÓ¼ŸžUŸ•žvrÓ¤·šó§+gcœe­uKàØøÝ^Sªœõ=ê?¶Pž,tMHŸÐìjZe´=÷@Ë/¢?WnýóüJ—5óvV_ÊÛbª»g©%óH­†LWqSfD°FÑæwõ»ö¸Oz5šÆ ZÊåÅi­Ã/¾–¸_ÆVY$§Ï]+%9.|m¼†—úÑ'H’Â0^eâ˜y!ºvÁÙ-“p§ü¡ñ†jåj§ ëbÏ~^É ­xtñFÐeý…' ‚ÿÆÓ”b’’RÃ"Ë2ŠóÊýá–ô«?&ÜÊÒ¯Ìy»¦²²ñΪ÷Ôí£EŠ’¿£ìW’Ù}lÇeÂçÒÌ›ÖÚh©ÊÝZ×vÖ„Û‡IióñãŸYL6ÔÈ¿(Þè¤à[AÛÚý™žÞb_äëz­÷”D†™˜-"ÔÙUÌ#«ÃŠ;TVöëÖŸí–Ø¡~(ðsFÿ»µŸÒ˜£qJ&‹×;5i6<@ãÊvåØä‡˜^ø¸Y)üÏE'²eñ¶ŒÜÿ&r endstream endobj 875 0 obj << /Length1 2279 /Length2 13602 /Length3 0 /Length 14958 /Filter /FlateDecode >> stream xÚµP•mÛ.L§´t-º»¤Dº»Ar±èîîFI‘îîî”îîîA`¯'¾Wßïÿgöf€ãì8Îë¦"SRe6±3IØÙ:3±1³òDåÕÔx¬¬̬¬ìHTTjÎÖ ÅHT G' ;[¾? DAFÎ`™˜‘3ØNÞÎ ãb `ã°qó±ñð±²ØYYyÿÇÐΑ fäjagÈØÙ‚œ¨Díì=-ÌÌÁiþç_-ÀÆËËÃø·;@Øäh4²È9›ƒlÀFÖU; ÈÙã¿BÐ ˜;;Ûó±°¸¹¹1Ù81Û9š½§c¸Y8›T@N GW ெ F6 :cF¢¨™[8ý#Wµ3uv3rÀk ÈÖ ìábkr€“T¥åŠö ÛŒåþ1`ü;3ÛÂýëýW Û¿€@;{#[ [3€©…5 (!ÇììîÌ0²5ùËÐÈÚÉìoäjdamd 6ø»r#€„°2ÀÜà¿í9-ì˜,¬ÿj‘å¯0à)‹ÛšˆÚÙØ€lþªOÌÂ݃åŸÍZÙÚ¹Ùzý L-lMLÿjÂÄÅžEÝÖÂÁ$-ö¯ X„ô[frp±²²¾ã`€ w 9Ë_áÕ<ìA+ÿƒ;ðñ²·³˜‚›ùX˜‚À¼œŒ\AgGןŠÿFHll  3Àdfa‹ô;:X 2ýƒ—ïháÐes Àú×ÏþÓÓËÄÎÖÚã·ùßûe‘ÐQ–Óbø§ãÿèDDìÜ^LÜ&v';€›÷À翃(Yü[ëoOi[S;ï?µ‚‡ô?õºþ»~ÚOƒðß±ìÀœhSü#++ü‹íÿ™è»üÿñû¯(ÿ7Šÿï‚$\¬­ÿVÓþ­ÿÿ¨l,¬=þ5SÖÅLy;ðØþoSMÐ?'+2±p±ùßZig#ðÛšYÿgŒNî % g ùßÄøG¬þ׉Y[Ø‚”ìœ,þzSLl¬¬ÿK¾+ øÝpóño|6ÿQÜhgò×}±sqŒXâð›o!Óß·ñŸ…pÿ%´sýWRÞ¥ÿ” <<Ç? xR¿Óqœ@6@;ë?p‚Ççdmädþ‡8çï àŒÅÙÜôç\À>.¿Kgùûûé´süÓ ¼ ×? 8½ÛÌOÓýÎâñ7ü¯kº8‚Gëü÷s ~ þÿýiÜA@¤¥y; °eMpÛC•0¡ÓÞ¸à Õžf2“×’c»Ë#*|"]ezà†ãpâPúêŽ8íí‡eÒg¯“æ:ø°–åÖ'ï_q*S{­H‹“8ß'òO„kû‰‰˜Ô>ì{?;xkXA7CvÊPe;¸¼CUÊÅzpë“t¯í/Y ßSÞ¯ä–EþU2ÍôYýÓÇ€o³T9ÆsxäpÎLÄô˜îh³·w3˜Y¯¤2q H>§Ÿ9 ¼t6Ù£Îy®•©±;uáSâëàCßbŽNQ{‰~•Á]ð**ü´!¸ÉJÇ ±hÛ{!b¢ÇR@ÆÎ$¹Àà{Uh<ÁS Px ¶z1p‚ºMÞ¢²ãj¼àPhz›„Qªòž«3~Ñ>©dņ•«é¼;¨fPî6hVÊ0s8;$³ø˜i¾ážÏ/Âð«^«™z5‹ÎÏ®&驼ÃHúÒ² PøóVwˆA?`:°Ô$#Eoé´øƒS´=YïÊBçÏN†_›ç`‘|š:€Þ¦ ³{:.—“ߎ2ŠT½.HøEœ¾ü—´$RÜ-ö0¼ sY«zÞ ïÄÃÝrE²Þþ;2”$U£¤o­ù8¥Gäƒw¤ÓœïÄ5PÞ§(ð§4ÌÀg®îݵëòŽ&ç[DÍ„RB¨LÍãÎ%O™õ_#¼r‰v/šÑ7?•£äP‚J^9{;½äÑŠÊ•^ö–±ÓŽ|’‡&ü …îL ¦v’í­é®VîªS¥‡1÷ØÕ6£o'£á—0yëñÈ‹â*ÁÜâÞC­¹ê;q0 ŒÕ>ê(´¼)G Z½D©ÙPKg2·lJž…éŠGà›¯95öÏäºþô4#±ÂƒaõKÕÏÓùª7^TGý‰ƒÃìÓ%Çþ±› û=LW´½È§téQXÔ>߇2 ÔÍ£À5}<ˆ iqÁ ú)™Iær·Ðià9 GÆü;ÂSíêyf6tKYa§ÏüÍ}­Ñ÷†ã*ú³¤¢Êœ­áÑ냨{o¨½ð]b.”Í$&ñ \­k”r~4WåŽvw! ƒú%=¬ÝÜõ\ó[0"áò¨;1ìxM—-”Ûìëzú×§<àm”g-p,cG$ W>Žu©ÃcŠ@¸” ò9‡•§xðœìæÂ·Åd¨Ð쩵ÃG´†LBMzÓY.ŒO#=M]F=n›Ö¿Ãã1È>›/ûfœpîâòÊšfÊßÑ&y&~2õ$£x. q]ÓqiÛ€ÐÙ'×èUÊzt+xfº$‚øÐê·8‚ÂiX²ì>I3$#«£vV+}}-ìà×jpƒÚOˆÓºÎ-#@ úõ]<—¸wLú–ñ¹Ûº?Þ.ã#˜EDWñF¡Gp”¿Yì ùŽ+VÜMÿ3<Hõ¦ºi1eÅ£RFT°ØöøË.Æ´®3À5%åËpñû@ý~Ž"›”× ^ÜîÀ‹ AMûÂp†ëù˜nÛ…0R³ì" žï|ÃÊxÝê•|§™N]>ÌT‹ýÐøHè¤ZÏÿâÎ$SQ6RAc“y…Ôâ!4ú£/:t‹yõS¥2VJR;ÛyÆ%íèã ®\º%Õ³iYú8´ûÀÑ©*\üò'ÇÓµÕŽ¢·¬/ü‚™ÖüU»½þÙòSÒïí¢GõäHˆ6ß×kcZoJ¤õù†±½;]˜õ·§0\® ÒÝŒ O§x[¸Þ×ä?¬#˜ÈÈ„¼©ê»`=»¹ÖŠ-¼"¶¿Ë‚Ñw¾^ÛÄ"r9$Õ§Z,¼2$¦¹EbUóËy#í…HÂm)˜ƒÿ5깈8Ô^йÐ:ÒÏŠÿ0˜üÜ7±rŠÕÿs™Ïë±ðm1ÚmVK˜µT][ ÝUÒÁ»Å Óü\-[ÆÈZ’ä‘$¥T¨v ‹—Å!=-jÔÄ3‘'w/‚d.â2S"ñŽðõŠ1BçÍÏy^Û‘’þ>@ÚŽ3â.ç§p˜—al4ÆlûÊÜîÔÏÞ$?úŠ8¥|91Ï?Éð‰n¦ ä¦Mö”¾­RÚŸ„Lèöqñ<ìñθ7ëÅ€tdÂIÅà#È>tÙ…¼ÎÁ¿ÙÔí;üÈк]5t#˜a!‰’6×›ªRÐóØ¡x³¯l5þzµÇÞ¢Æ!Fê°'÷‹,X¥˜“”C JdÜ‘hgÚ}öAèN.ÇzšÙú?Bwól&>ø€ T1I2ƒh9¸þ™Åh ž–gç岫[¶ýönVYš ˆMéTùuFåÇç§bô„‘1æ#ד«f=ŒÔ;é ?Õb4 ¦d&ÑHsµw T¤D"gÊ“Àü|¬‰ÃóÄw*çò™ ð¬ìûiëÖŸ«ôó¬*äùJËÑåHi—gÉåzgß¼’ FÞgª:Z>¡'^"?{AóÙ¼zeA.màÚ)ioY¦£F,b°±õ¹,ý‹Ë&[ãS(ž%ë•×V‚ô9uå¿~—Œ< °ämð4dNì¹biÙæ”À%ÝMÍÌÍ/XÙ@ý"Ìó„ £êK‹·pàÝÓäÖŽAí®N øPëjS_` ßߘ I'Ï#‡ „ª|Þé¯ g#žž¨ñþâÐ4K “Ž÷ÌÇEzÙß.YïtõùKVÿâÐoðf=e”P2„lD$%Õ^? KàWòw±lï\"jûš'¨µà¡$A{¼ ´ÃvÁµHŽK±½W×£Á¯å׫lHßOŒàT„lž]‰ú¿#@ d›è~íšgG*”9!uÖóm¶Â‘Xu©m‡ìË Å2—‘rôÍí„)j9K(üòyw:W9;ól ¾ŠqÂo9}R2› ¶”ž•¬éätêÅ'ŤàÀV}Ûò ´.ÙØ²= [¢³äÝF'ÎËKÉ]tVðíQA¬Ó%«sœ—ïzš]]¹r+Fåš8óB¸k®à¸od"zúÕ æ‚wÇøRp½‚(C]íñ^Á²Ï+1ÆÃ”F_ß4l,–ðv èzc ¼ýØâk§©·›<’í#hϯ$¥ÈƒŒ¡Q8Ñ®Õv E©Z Dq`ñ¼¦zc^ù½¹Ìj±N%sKS”æ<Ý UD©­jnñ[N|$ò`ÒÅÂõýƒ»}·{Òx$TøŒ~\ãÇaÖ×õŸ»T –B— Â(*AŸŽ>øyÉv)ýDçf G¿ò¯fÒÜÏHÌ8K>ÇÔOZ{«³+ÍÄ›7ßÿ9[©Ò ÿ‹EpB¼ô…öζ#i)ª¢|5׺ãk)Y˜ t–ÙØÖ¤¿;£O0ãý ÎYnª„”­x;Icª‰ùÏT½ìÈgkJjÌÍ×vfí÷>˜ÙÕÆêOÒxª^)Cì<Ë‚—ÐÅÓ§ðo$DÒ¬‚×i üaÐ̾ä}ƒ~7»ÎYgŠxžL*Oh‘ûK:cºIIq ÔÓ;Cæb/÷ÞUÂÊ’¢R¾4‘M†FŸ§‚vØ›ï¼í²ßúÀLRG³>7o´~á…V°²éiŒ#ô³‹òÓ£k S³CDûdØ0Y²¦ä*5_P’µVC5ùù“°Äˆ·½>Àoï–!åD½‹ªûÍ‚¨Ú´KIy™?Å]Õ ¥]ã¥B¶‚"j&üçP{•¦î~Hs2úPd{@ˆ/†¥ÜéQ©¾}ºXÆôaìVEÌ'ó£÷ëf¾Îƒ˜ìšì¼7ÉzMŒ«‹¯Ø˜×CZ­óPªÝ†:wzûU5]u¶„k.Óšá=êXtDu“5wåžz…vËbšò¢Ÿ¹öT0ð?«~ééóY±úñŒ;a9¦k\] >¾ÅÄ$Y‘¥†VØf<Þ²F}Pˆ£‡ÀÅrò™åòä°Ù\L½bù~[TY[–…_g€qíÛy4)iz+yZ—Àù%± <êX°ëé*g¹YoW¡À³«ÀÕ‚‚–w®ðà/I«üQdfx%íòïS3$ŠüE­í"*éDtåÅveGÇU½ª/û}ÉüFýÊ$lŸ\Þ8Fθ¨íˆ¿>ã@o󳹯ÈY÷Ÿ.+ACy“ú6·›%Uü”‡A•а~–§Gx6y(œ%7Ë7=>W´÷)²Q:íš‹NµCk‰ÔU!²”ž2ˆ(2]ÑiãÑÑgÀ6Ïéü«ÿò,û~Ö:‰Õíë+‡¬’ÚöÏՉϘ壽Ë gÚ<DÇ[•„éQÀØ?›e¬’òH"Òµ;oWénjDL)ät,¾ø(ê†%|šE!†r5Œ,ýåj8fƒ†Ô®•mÞTôœôÞ§º“/ˆDȦz£ zºI Ü_| z6úö–’´§Q-GŽ=rBTqí—F(K0ña@ŠgË%/ Ñ &ÕË=%q™ò”BçÊ¢ƒm8¬Ä:Ù¥·Aß[ù)3§Jn"ØI?)eO·Š€8Q4üsÐÛ„׋·†Òås‰š&ýÐ"?qƒ;¨9wAÆÀ¤Sv²Áh²^âašSdã:›¦çŒøÂCLh¸Œ`W·ˆ¯÷%RSª ³êlSzÍ—FIÁ°EÕEć’1ãÇ\âŒÜÝìîu£à£šM-« ¡úìâWë€äp5E[gü<îyr­‘ ¢»‡¶=±hSÖa'^!â¾ÌTƒÔ˜}[)Ãáá ›éÔ|¤ùÕò£ø¹_!?[šÚŽª/®¤|êÍLk6Êsndù´zзßq庲º°±¬ä@$N© ¤o°hòóеºéî9šZ„¨.à¥Ó»¨µÐm:€Í›ó&I„jæµáÐ44W³ü3¹I×7‚2¼´QûýtF(j¿8ó–@‡j†EúÏî$¬¹:¬9†úLäQªÉ~mC~Ę¤È .²0Y;9ÕÖ$…9’ø;s%ó]±‹å•¸<¦ŽàŠfÕ«£ý¨àƒV!Ä€«Â½¹|ÕwO0¤‘d%IŒÃ8ÈÁ¥® ¸D5ºÐmÃ!rx£ýø®yÒŠh|·ø#M*mëˆ_\>–ºÀ÷:Eü Y‰n/Šl¯é3Ÿa!3$¬ds|ÕÆÜ7›†Î:…äoèñq•E©eà\¬‡geS½Ñ¹ ,Ö)ÃÅç%´ÌÌÆ;6¨]‡¥ ¤K éjÖäTð¶è£« a•{̆´*!\R5'ãÉK¨ b‹‰cåÆƒóÉ9]W› z–Š]ý{[unÉ`‘öæFÏŸ6´?<ÈEF¼õòuÝh‰c€W ×ÆIap°Ð{@8gÑ—£Û!‰¬‹$Ž'´ñØ`#¼“=®ÇŠFI©ôõ²¨wöš¶]¢ c¯1!`¬ßmOǘt ?wŽÛ¨ºÿrÇÔ&±R^ˆ™.a,‡èmú}_BHþÐß 7pÞ¨ãë'ÂæE¨¾n®¹–Ý™öÄžOd­ey&ßPØQ£vÆÓP-‹ÜXÈ'øL5¯È£“ô*vX)1Ìì‚Ti^ç¸Û0ÿËYéb~Èôâë4!÷~lÄsxÐSò…¿ §†·ræ¿É±òç^ Fu ‚¢j™CÑ×bŸ’ûd¦—ÿ@x2ªaSÙXY(oî~¿›¥DýƒvÒ+‹pÿ*Ðì)wR>wð±/6~Äû¬º…öÔÄjp ó”%g|µå³”ÿìh‡ ·2‘ó<çŠvÂoþI~™fŠk†ŠÕÙÀÙ›æ„7Óeé¯Y’Ç0žêÐ+šRÚÌbkxuîX]wEâoH4e“üv•ãôŒxÑ&º4˜ÊåAÆúÞëþy„y]ä}ú£ ÔÖXÙÞG1NÇf¯SÊ‚ ¤]˜G·Ž30{]büi>HG9Ú™¦ë`#­žôÔ^iëúRPäÃ̳¿Û÷vœ)h! ›@Qu¿ÐºÇE”_qó1‰üÖþ]@~}Áo%÷m,Ãâ'›!”ªös„ˆ„j]ð¸€7,̲ÂâcÈ$ûÜ_cÐ.Ë GŽ{ Ç”Åp…'J&‰iæm ¹aà‹ž%§w(·ÄÆâoHu•[Þ9 (ˆq'›ñU*$ùļ‹kwIðÉ3B@ØÕnÒ:¾å|}CzåÌû³cÙ¥Š\©·Å)ÜöÈ.žLÖ'õÛè½R›Ô|Žô+[á”9ê#F;­ENÀMÂp^àÊØÑÄtçÆfïr‚mZ}©Þvïnã³J{Îj;œö‹gk»T5¯†×¤ oü=¡ G…ç0|=-·ÎßxmBæwF#¬Ö‰Ð…œ^ h2nr‚^1 ¼”…ˆqÂD‡DCJˆ»˜SWd4Ø…P x–äà3o*dÓyndŸ?íN½æ5‹¬Ã`_(ØuŽ­œßvX'=¹ÜäÕuÌWïTRò{.°˜Û ôÑÅN/˜ÉK\Éî‹XOVõZÓ3©¡__=žëU¦¸‹˜Îâ=ÌQJ¤ää`Ü+F÷(~±0§ì–œQX˜·ú\{âÏ‹~·ÿ3ë‘S8T`ˆŸÖ?«×ì\|×'¬ÝGÙiv£Zd‚ÍK`˜êë\/½àSË0/1OÆ×)0NëXßæ:‹ÿÔ*9¹ˆ|ñvÓÜ;ù™Á¦b•¥:Oèâ"ï×ÍR®›*£-ðbSwôñÉl4d2QF¼[U0 v‹RÞ“¢hf=: ã#@£§Z \“(vUšô%`’]7hž³ù1ìˆ%ìñ%<âóÜKœkBÆÝKÙªJöëfùÈÌÔuC¢Ïóšë°•Ë×Ǫ¨Xæc£kö檮gfv|"“ËðWhˆÕ¾^H]ñ'~¹yûžu¹¡:FH«Y ®bíuYÇ[•^àí•lØ«Zpña>â"g_©­<ûˆÓ̰•RÈb°³Ã„Œ=7²p‹–?:+$‡*›¬þþ¶Œ«”/¨9Ä„V~3ÓŠƒíx\ aåCwhó0nC¢|¹³ÚM'J!Y iŽêS†¥Ç åùC–Fõk÷ ?Î*tHP²ÒxWQˆÉÓ’þHß[“71t²‰Ý)~Ü}F4& 0æÐ$ гÇ\,»¾ÎŠ¢²<é]ušr©šÚbšu†Øœ¥MǾ«‡_ž`ä–ꈔ×Snê0•ÖÜ[Õ7¬-0aÊ£Ÿ%ÞrN>øÙ“ve%‹ÃŠTÇÓ¿™bpéuãI‘àû?ŸÓëKQ}:.<ÛÏ茎ðƒfîgÂâyÒ ´M±Å?Ø®/Eóù‰n1–ÀN4­4blÿy2–//Ãò”X~¦—·ÁcžRž>â†âÌ¡.râKRAÿÎÓ>^¡æh–tn’U`=®^ªPéE°ÿ¼íF„L]Wã‚|ŠNÁ@n°k©]<ÕYY\µ"•§éûŒT³âýü’"Ó­K˜ç+ˆ2I¿«?•ëjF˜½Ìš-ò ´·®bxxرl¥Gc‹?}J¶wgɾþôË»‘Ùy‡&¹÷Æ\ êÙfsê٬ݓw½“Ô¶K½TD²žÉ½ä¸GñlÃïb‰éí+<¶¸Yé“.«N1Äå¶lEÔ6Yõ#Þ,ÚeŒç踤@ED[aù™N ,lS¾Àgí9*:wá0f7¡ „‹Ó’oâ‘ 4uZ!Ó2ýa0l©÷/§ú“•:ÜØ‘›ÃTÚoÍ8”!Dµª‡»Lps«Æaž=s¬8òl%¨~ñ÷ûÖ#w¨¸~ >}%LvTî(?š$…Ü%MSÀA7{³N>P^±A„bšÛ»¼½fh°ŸR,I±LyüR™l“‰ƒG¤>«ÊÔDfí8c–éK:Ö¦¨E㹡*ªÐÝÁB:C·n+8 ]fr=Ý)Ú0V9Õ˜“@9@àZzfò¶·ÇzÅdm?çŒö#zÜù‹ Åt V„áŽþ#äÇ”ö-”§Ñü.é{IùV÷Vx¦iè£!"‚Ù÷"dÑ0Xš‰Úr“«è­|‡0î˜kV_QÑ£ÓÈd b3wÎyN^ƒ'\•¼ù P['Çd¡Ky¤¹#^(N-{‡µo×´Ð& ¢Éª¿dìÊЇF‹‰øÐúj—Öìß~ÌžF®Š5ÐP†ÆãCºzC—}óÊØ}™y§Èb-}Õ““±½=s÷:|éé›xIߥM!NWz¨DTq©Ü3G±ƒ‘¢@«Ž=m)"ºʨÉéüD¨n5,ßÒ[Í(LÇ[¶ôbpètýÃ8—å<{¢]Tã”ë /¬™·ê½]Æ(~&õ*µ‚0#0‰”´¾3…Þ¹™ì{_÷›OÝ&¼‚ ‘1)éÀô´ôœŒÛÓàœ×ô7,ž‚-‚¯Õ?,.²[:¡"¢ðú`½?7Ñìi˜&!9¸*Þ­”S%§ôçœ8íüŒƒ_É+§˜7üˆ{puÖ2Ñt›\FµÄ|¬}´ïE¬²»Š[øòŒ;…–Ò .‰ì×C4¾KJn e54s¿¢ í>N°1óIhd0í0¦ìÒ£½]ŠÉ GSl‘®mzí  #Öë(Ô®IïSΔ!—×àTJêZž3I&ˆ÷c"0%sÕeLxVdR;«÷¯{ðs{÷¢¹¤K‘8ç$ôC7$–Þ@­ÌyÌ¿ý†Ã?ð%°?§ò«—ð|–'û<œMGH®³/Ïj1Œrsƒ5¡OÇ{o¯5ýøƒ|üG·Ô–NwA&¬Ë lbØ£–²鹇ŠôÀÍ7m_‘ÚÚ‚×¼ø%}¯á·>íC øoÎÙSó™RpW‡¤$S0!àOÛyõ«ô—§q ø|Àsš)›) ¾Hìö8_•ÂÿÞtfua.•­ »J9Ç ’PY»¢jƒ»ŽbÙv¬Dñ+ÌûÆëÿ"Ko€74ôX¸0®I•ÆfƒÎÔpî¸` S{X*ëé\ŽF×ͦufýŠ@¥ÑÊbúÂî/´žÇë}¬â"WFÃ"'D; õTò¢=lÉô†˜b§#åj;!¿ÖŒ”'ŸŠ]Òzñ¸â–¨; ¤“Å1¡õ^<‘*@+H>Ÿ6~GrË« ï4N9\h›¯ìð¡ù17;pHÛØ ÅÌŠá k©´«Ÿã]Û{ÛC8©ÐeÿO\ãm±ª±]©–䫚n.ë*bëbB\Ò%O"Ð%/¦š²žà5Qç¯sùæÂ«² Ñ¿´~£¢ŠÆPpâë¼}¥ ŽõÁ©+OÐ$&ʲpß²D3¾¢ˆnEælŒàl¹I”:†Ë—ú\í½y-MÕâK«hõx” “.0\áÉçRZz•ñ›ç­W 4o°'€/gê•IâÔLúÓÛ izp"³²ç0ÌöÌž­¨¼ìç:ÿÑú}†ciÁª:°™•dHÇ„>.V 7Ý´"¨bÝçÁ¦Cû°ïXöˆÒRQ¨¦û³™Ðjd?_)]¤¢[+/1Ȥ›Lµ /‚ü@Kû¾ôŠr!œòþâ0~$´{¥¤ ºÒEm<~_P_¼û›¼™E Màûïd•14x˜†Ñ'Z‡d[®XÖåoYÞ/Xé3ÅKý§.H&(Dn"ˆó æ|Òw•à²ozb¶k;6'M»™È‡#8%Ãâøñé¨8‡+ªç(…àkö#‚#íÛ9ù­žu¢-gÉŸüûi!㙪ÞÐÎóíöË-1™¿y±pùç¼…4ÊÅ=*Ôð>«Un<Íw@uŠH‰­,¢Ësž.Aè!s~ò¾ ¶…VDoÞÚ^ÞùÁ:oÏ33É gêZÙUŒˆ”>þ_¯?Úw 0BÞÕ+ŒnуN_CèrЪm°¿@MPH5o¿¯‰þfKjFÿ4¡÷Æ»DŸÞK™Î)?{{OôqјŸ¸V›ä‘í-f¤Ü 3H^6üíˆöá§¹W¬©FÎàTü@QÖÁ‡é%éÓqÞî)ΔF‰):»úÊ@ßðZ•»övaÊ:ÒUöšÀ<ˆFE¸¾‹ô¦“l†‰@çÉ”A…*ôûUæAZ™Õ†Nï _ÂIƒáuÑMm²-Íx’ä`a&Ôâ<˜¯Ë …ÿt·Do_()Š*£a+7 BF‘~mõ©Œtzƒš²5wÐÇA†kè½Yˆó9úñ Í¥Ú¦ƒ¯=ôT.;ô 9äÚ„ˆ aï»—3›ý7®Ê¥òKŽè”ø3ì³+ퟚ$v±@föGÊK ebįdÄûá£&,ƒŠ$/„Œa[jz¼ñÉ žÝöùV»ï¤ ±çpFG´Ïqéüï‡ [”qòÂ8$L_ª€qTÅß„áe„)ÎkÙÏkŸ!y…áòå¹6Ñü ѽC€ &J‘ãm¸*´Àf"‚ìÒ×m€f»Ww„f™Š­EÒVRÛ,Ö#¯Ðpiúõü ²ŽB1)´¡»²XPÔg²Â´ zQ–Ší+Ç‘D@AÖ¥XæË…òöj\"Ë t©¿›JFhŸ®¢õÙŸ„JP8ìñ ?“v1!Êêƒ>º<ìÜ©|ÙF$¼å?±E)¥Mò·³-ŽŸ“YˆÂ¦‹J0mÆE¹k:ŽbԬˣÑü2`ì ÞßJ›ñŽ +9Œ’hiŒD,nî9i‘p)̳~ô-Sð´çlÑm<[ðø}u Ì 8¸€ƒ+¹ŠÐÕ}±‚ÏmÊ…ÌÄúÊ|)z;·Ðh{¸þ±zŒ¿Úêê‘æ4üLó_£)É„z…‰‘w½Ô÷Ä÷ ïe£Q2E?6ê p  où@|¯Ø,pâÊMTND"¯+º<Êá\„儬H²^Ðz/t˜æ˜.;)v)r+vÐuÛF¸VÊ„{:f™fÅ1uòlc Ðìþ‡3€^½hgnqæé̬H¼Aɤ¾…§õã·°@Ånšgĵƚ¥D/üÑ/j:P‡ÏTvZ%¹>S¾ù^}$÷OEy¨vÇéÅ7z#fí(Å$ùë²_ÙL)xŽæðT¸¥¾;ª© ÖT`ÄŒ!œs¿ç-‹ë<éWN0Ž˜)ö-÷ïZÓ_λqe"ÏÃS#i´€Ìøëý W*ý½0þÛ®UÇ Ãûi«l”&.D"´éÙ6’gë‰P/ò¹Ó)ÖÙIµ×°ü¶± µñD¨sªsÎ u2¼{³˜ ÓŠ”6·àà¸`ßA]ù…—ÇYÙ H!©pwM©ü5™;UÁÑjûÞ0ƒ–Útaâàø º+ž(ÄŒe@øHÓdð㜬•oóÓI•[üBì¢ô™©wÎã}¡WwÔHñ—JŽÀ%˜÷¾QE“]¤ërzp$ŽØÁ'ÃéR¢Ú‹„ÝtäÖaT$bg׃۲Öé±)9ÜpzÊ2Ÿ4{¡Ü1 Tî/(éâŽÛT>l߬˜6b Ûr9õ¡ÝØL{)î$…h$Ht/p«þáÙP¾yÉäyò ÛÞ²;\¦pÆºÂØ3I¼[0‡¼F:Y™SáCMÔ5Σcü@ý6³séqŒ®>hYñíË%†§ìdÀéî:û8ËQ*¢dÑcØZ+'¨mêd›}ôU¬¾^Oåe!y %ÛHf ;ª+Œæ;ŸZb¼w«òý—o½@«8mÛ÷÷a0×gÓ)KkñOƃ1Bx!úWÉ ÊýÄ÷ì¾B‡ & ±_¼wpb¸ ó”sò<1p½'k¥©óŒÉ(ˆú™¦;¹Œ6åZ¬ï´¸*å­¹ft^pïñȈí-jÐi]*¢ò2é4“ÅÓÛ{j¹m[*Ùκ_n†m/‚ÓcÛ!É·½â®WüÑV®hÕáÝ"dÔ q»‡}þÛiéÜÍ•¬¢  •F‘ÒÍqÅE”Éë¤ÏÞöúÍ„IU ÷+5í÷†#Õ}ùp« «+…ý—%«>«íe«íðiuwfgé$£{³Õ0RVj y£¶N•ÄÈGó¶!ðïÕŸ¦‚a%@,òç£×Êà ,jw¶Ë)ø§Ô²ØîÐÐ?¦Ð S„„­gI-b|&ÜFÜ>½SÞfžÇu1ãïŒS>Î)òaPÁVÞ¸XûĈùIHrïôÞ\7¯ð» RAØAñÓÒÔŽFG"®Ð—ã1fǨ/° cúrk;¯˜ßS(ݽˆü‚ʘ‡sYÞÛiŒz¹ËZÊê@êã‘›î]îæ¥,s«n¸Í@ ò‚€¶]<½îÛMä½7Ôí…jðëÄrÚ—DÙ£øërE£XcæÙ»«oP .„Å'[š[Üà ±pªçÒ®µ€’>ÕéԦˇ=62¡t¥Óår#*\vboÒóºJaѸw‚zÊ„uG‚ ëJ˜5ä°,^ð—™ÂóŽºâëÛÃB!U ¯Öfg‹¨3cࡉaßþl£•í¹Ä&ÛÓy1ų¦ÊŠÇYlÇÓò£Z‹÷ W¾@'æ,T%†÷¬*Ï”k9yNÒ†ÀüT—­TÉõá¯!Ѥ´ÃM9ÑßÜÄ<ëV©}¡)êÿ–Fcì}ý¡1ÈGôoHb~b²l¼}SM$S'Í{n=Éí÷»”2®æò,st&"çs%OS2c_V44Y›š³&kW¨u5¢ˆhv5lÞ£8®â˜Ì%¢x4eÚ÷¶ÕQ$¬œW ¢ÛSQœœ=¥^÷& N,C¦¯®¤û†žê¦e/A&åä;f$  8ã¤ç¥ŒS ïÅ#‰hýe¿µ—}"iüuü$°6Üu¼¡ö]Œl¨]üd•dE³1#À_Òi¿—Û|Pš‹‹ž‹ £ ùì%­Ì…F,—?^¤zÅ8YÅ¢Á~ï)ì"…&G : ç® ÌÉÓoê ZlåS%”eØtﯷêvX,•5ïu†noJj¸éר«ç¸Þ²T$h[« ÊSëÑy†êL.[Œ[”jªëwh]x ¶u`|×T¬udñòöóŽ’µŸºQsÕ48 Ãbq³'ï/c¾Ĥb½4o—ðE¨%r½ß„Ü‹D?8¨|ü2òÀ/ôô€{‡ !›½äR*iÇÓ ÌmÓà2ö#¡—CÉw›´íÇÞ.µóeÄý\÷|²4ú°GžŸyµ›W¾}@X»CïaÄ"„ݸD<Îá&¨ÛÎå€QªáY8ºˆ ÝÖTé<ßá f“aFQ^ø µ#O@LÐÜÎJ@Ñ|*uô«å»æaìü|gÛE¯üåñDº³ dmÇ®F]Âúi!ÚÕh—5áwâó£æù+JÉÝfCáϱñìø¿iRîÄùësÔ.A„*–šÁ¾/i¾-j¯æsWœr펋úXÌl=[Prvh]ÒŽO¶ô3é1%¾‡x’yþX`àÅdMz2ŒA­gÖ™Beó¥í¼œö͈„fŽ Q›µ¯ Ç´5ÀmÁc™eÿWm2 4m|8#1Œ ¬ÆÈ eŽá…&’×ÈC®i2emĮ̄OXTmúžLd19>x£þØ\/xm XÿPå%ùºœ÷¢K’i4DãõÇ0טÅÆ.ÕrÃP¾…á¤Ìýbµkê"íEz¶¹wƒ»{oƒBÁ$CqŒ}0e3$‚YdË–ذÅq8â£m¬²ïNà[ˆ5 ’G zá?Qî6š#AqSà­°(9ãÿöyHÛ¨N;Lƒ .¥ž¹)äéû<4}:vç‘ër-WO)³ýØVT­ÌJ³E}Ë}+ ZÑÞ†Œl¦ƒ×„[æ[ª·?>¦÷+¥><3y¤ø^RÕ(Ä"oœkFÕ”p‡ÍÔ¥è áž*Öõ¨l°>:so?îõaL™¡þr¥F¾í;èã½aýN‹E”š$æ“^?qÞîÅsSn]PÇŠÝ{S‚r,(›Y1®*!¡ô½èõ"ŽóÖî¨Æ’Öé„ IÚs¦Ü§¢[)'Á„¾d.d»{Þì-Z£æJ]•×<77»ÌÐÏû®}xÛ;½øè#\F×qßM‰…à rR2 [w<š‰ÅÌn°lö£›„Iµ±U/9?¤ë: ­*¡=sµ:P”DaøÆ¢cй§9já?Û±²Ú ‘CŸ)Í ÛU.ðv×a…Åûkжú.àSÚM&sEs)š¬ñ…J¢åØm²=½õx–‘<÷ûçÙŸ¾ ÉûÊüB M: °‚}åâ)‘pûȬ#íù—1Ót©pö‰õà5Eë¨'q·S ¿žÒÜ®tЊ³²ÄÖaí¹D¼Ž®£Þ 6å xO•Oÿ˜ðœtB¸…p3ˆè™¬€‚‹ž¢Eݲ½Þ~«Ù"Žðs+„§ˆ^9YF•SHÝ"MhµîøÒÕdÛÓQ_è/€ÖÍ:vø™â nØ«­L”JJŽDG^ZV#¤Õ>OD¼sûÐõvFê먰[6lÍhÞ½Þâ:}×ýw(wq Åõ­*7ìÎí/Ýl½sd7 ±Rð8¯©‡©êøèù1é'“û>hyô¾h Q~E†¦R6/ö¢ª+s õ듸ÀÐýd‚ˆQ9RÖêŒjöýƒgü‰A¾®%êÉ1©0r&_yÂÜq‘S¦IPá-#{ăõq®ûñ %’+¢®_™üá.·Yew(gÂ=]NKÕ2ȲFb¢…DÔÍ=ä²Ióy™X`R/ža;±§ÕšU´ø)´êvyÕê+£|.Ä«Ãã\ë^ZîSJ”Fùij*M ñçwµ,ÙÌ·?Þ/W¨Ñ˜gÎiK¥gW;×±JªC{ ¼”‰’K¨G.=sÇ@j7§`½CÕ¢F`¸ŸóTùJ¨.{åæeO„Qž¶5c–q-@`£(a¾»X§*‡cð!J¯ÃÀcøu9”€2¶,R¯$â$ºe3œ.ÐmQ!GLÿQ}¦/Rε¨'”à[AKö§©¨~¬,è¯è„㧤³Z.Þ ¶†Ù3|ÖrîƒðÕ1Y骙36‚‚¹å„R÷ªî'ÇN<,eTJX˜Á‰ÄöhŸx¶ª6%þÞ¸Cƒ–€¢X¨)ß“/$°"¤.ª;ί?ìµ$5–áÓ Õ¨Tàžg½_\¥´^ ~MR±Lon|ôc±ÄÊÐù¹a$+²˜¤£^“ü.l"/B4jª»¯Ët´l(cÜŽ¬'CúTéõ%$ŒÈZ´•`ÞøÕÂ+äf§«.׿j £sÌÙ­m´ò8Œ\X$ÃXÙ§”:Œ®%űz ÄJ¢U¶¶pô-¡Ÿ÷:ýu„‚h’›‘ßl T™»?¤èßgîŒû_§Ä-˱²¬±†(¦˜tKÄá=;M¶z'€ûÌÁÍÞŽë4·$£8]YßhT'ñórCœîTt·–-‚dz-ò[X•/8e^¶ÛK‹$—ó.•…?t8­ñeÿæY endstream endobj 860 0 obj << /Type /ObjStm /N 100 /First 884 /Length 2777 /Filter /FlateDecode >> stream xÚ­Y]sÛ¶}ׯÀ£2w<Æâ3ÎØn´qS'vR'÷öAµ5©æ:rÆRÚôþú{–\Š"2‘㇄={öì àä³Ò*£(óÓ)3žAùÈý¤b •ÐΞŸ˜GΠáYƒ™1(òTTµ™x«(9X3`´Ê¦¤ŒÎYY•1Æ)ô­×è[e\6he‚ÅT ˜½rd”ÉÄ6ž‡Í„ð4: /­IÎG…~ФÀÍFǦ•Ë –Êi tŠŒa††áF°ÊY';gø5žÎ)¸ð/r#'¡áyNæFFpÑ!bQ†«FVÌ&)i4ÀÎd§¼#„ _ÞáµI0÷‘&£|CÃæÁhêcrh`r ˜ÌiÈ–õ1 aš‰ñ L4Þ©@<-ƒAüªK¬*&³RÆb²  LæÅä€qc09BD¤¤',Cbb„É™‰&gD`¡H€Ú ‘`äÕù«³g¯þuòËÅi ÜÎÞ¯”«gß}Vÿ>@pœ}"]½þ}rx´ºž/×ÈfžÌ>>›/Þÿ‰n²“CvÃcă?­g·‹ë£åûÛ¹:ȓËõüÃd`rx%FÎRíít9 u§Õ«É÷ßûgOß¾:­ÙçòÔÇB>™Aòp¶ù‹ËgWÏÏ*ò——Câc;80ÈjÀþrØ¢OÔ¡ÏÝ }¬¶!úaX{lX{Ð?yñÓÅù9Ó;H>Ãq`ñy㎾eLì#>¹†¾ÓÃôý>ôÏ¯ŽŸ>«ÔËìqðaD¼ëÅdƒýˆøqöï./_^üö—? ‰oýfÙºoªü–~HÃôó^ëöêÇ“ã_™þ`Ỻî½ý¦º×_Qöq¯UûîõËóÓ×5u3P8Lg¬áÎ;u?L}¯{úîåÑÙUE}h·ÑùdÏé›™G7Ì|`±ÂôÓëªË/as<[ÍyD>?ýæ‚wûã«JúN 8—k1O÷«õÉŸ³{Å4ÏfMÇ Ì[ܬÿ\anóÃË»×ËÅõÝÍ\Ñþ|._œž½} >¿Ô‹°ÏÇ÷ù¿Í‡×UÃÇ>@ާçG/.¯j÷%9bß½O[î¹³ñö÷þóåÕËËÓÊ{,8Ï}ça;Üiœ›´¿ó7/Ž^þV9Ï»Î=FNfË;>T÷öþËówÇ?sè¯Ji÷»eØq¾•u§¡ Ÿ>ýùÙ›˜M!~§ùjó·”p@æìÇç¯ÏŽ™L)/ñë¨}ŒÚÿ¸íóÙ)R^Gå:1ùøô>W{tðÝ£“c‡ŽÞ¢ÎîhŸ‘Û©=¸LŸ‘ÝŸQÿ›²Ï'ôùtèè°Eç»Jï“°ï<9ßÎMÜßuÿ{®ç;êJµƒ‰°ýD˜Tjï­ÏÇ|Ïv&ò#Fÿ««Ïg·P;+™¶÷¹ø|zŸR}:;ujíÐ`üWÐ9Ÿ½Ÿ¯ðv÷‰?Æ&èßó§_ UÆÏ7+õï ™¨®*W•ê‡Õ$Ï*¿?Þ ²¥\?‘§—§øª·‚‡ù°‚eŇsõÓky6ýøpA°êŸ\ÊFÑ&Šï(¾“}¸jŒ,å¦_c;íåùð|8ª1äÁÕiËÓÉ3íã#u|8ÁrâË Ƀóâ³¾úx˜ ZÁŽäÃÕÓù~ôá>’ðÌu {mäYÇåIËÓ>؇§Ú‡—|x#ØV°¥¶½ýbÎÝ \ëD“X‰ØF¾¨Ý&ž·AIê_ø[+Ï ë=k©/ý%& ùp²]hA"’ˆS/Qá]& ¡§gôë§õíbÉvÕþ[]¿VLx®®Ê«ž06ãÅ?LM–ýøM9嚈’àœßÏÿªnÚ·÷i±¦uJcÖIŽˆóÏ-§.VŠ-–Å2¬¯d[,=†Õ”[•B«I,°šƒnËu°L «U;ŽªÝ|ÕX1•°Zíèö¡£},iZíèö¾c,iZíCWûµ`•¢ò­Ú>”­kß¡¤¯oõõ£úÚ.Öö̆˜, æwJ½€ú È·ipÝ4lœÔ.]©¸\+¼s£Ö¢÷%á]+¼ÓcX¶SôE^¶Mƒ e,±.¥Á¶i°£i N™{×Iƒí¤ABnÒàú.Û4˜^¨ãÒ”Â5mŒµî¤Á–Ò`Ú4=†E4yQ› £X¤˜RR¨M ™2VmM¥uI­¾zt·ÑÝÆvSÚЬSj»)õ=—ºMŠÝ”t')TJŠn“¢Çþ ì–.$…ò&)”Çj¾_Ë”°\‹E¬u•rÉZo¬›ÓsÀÚo1¡l XÍ ÍXv‹¶±Š¼šXÍéÙÇk_°nÎd¶ö£úÚNTÛ-ͪԚvŠm"¹ àc,Ño“zIi¬«|hÓlÙºöJ‡VxŸÇâhî÷$Û‘Nˆ‰tâhàü#ßfËw³µqR»ô¥ªó­ðžÆ¬]‡°/ ï[á]Åꬆ"/צÁÙQ¬NR\))®MŠÍcX¶³6\©*ÔD-5mÇK\åâaj8š(m¦šv|’‡v|DãtƒpähjÛ8ŽÜIÒA8ÎH &s'÷ý1,íø³Ž„`N”ìX„#×SËÉQ- œ!-P³íûb1²ë Ñ8ß`"¹·™ZD“Fî§±d‘žê“£ã ˆÓ‚'‡@²¨ã8ÑÐ!Ò¡³Ü:ÎqGbtž;;q1*íº <_‚q‘WAÓI<"¡¹Ì‰ .|Ó®§à•ÇvÜy^Prß<õÉ7É÷–;¸gɬ„äÙŸÜaM}๳ڗÇvF&Þ'®gÑÐ#¤Ä!£Ê¤€RÊ—žÕ;ÞðC;Îïà^Â<º¹Y¬wËÙí´Ógw׳ÛÅÿfüæ‰2A’x<»þïß³û›Ï9¹ûðþXÜ.Öÿ€£öñ§Åíú`±ä9§Ÿ–׌±Â¸ÜÅMOž^ðÐë%hrãâŸÕzþgÔNÛ1€ëàüÀ@èÃlySñ_,ç•Ñjþ„ÿ#žÁøvq=[ÏoD~þøùãý|µšÞ4“—Íï«·<éx¾þ{>_ö‹Ž'Ÿî±‹_CÓìb?ÌÖ³JÅí|Åæöý³Õ¼Z®gŸÙh§6‡b)ÙWBü0W+4 endstream endobj 906 0 obj << /Producer (pdfTeX-1.40.19) /Creator (TeX) /CreationDate (D:20190528203234-04'00') /ModDate (D:20190528203234-04'00') /Trapped /False /PTEX.Fullbanner (This is pdfTeX, Version 3.14159265-2.6-1.40.19 (TeX Live 2019/dev/Debian) kpathsea version 6.3.1/dev) >> endobj 894 0 obj << /Type /ObjStm /N 12 /First 101 /Length 780 /Filter /FlateDecode >> stream xÚ•UÉnÛ0½û+xl…E­(â¸(šÆA·(Úyì•DA‹—~}‡["[NÚž†œy³¼ádi@<ÂÒˆø,E“ˆF(’DjÏHšP”)¡~„Ï#4òb\P\°>¡1‹pÊ<6J½Zšzñèü|4¾á4äÇ» ¬D)ÊõO/ôn`«Ä¢msF|š`)wä"Ë\”Àë>ЧC ²)y--?ä‚7 Ñéý]v:âl[ö{zUnD-ËJë+¯•5ŽŒu* _*ý7±lŸÐjÃÃh|- ô&Ëcï‡ÑÅÅAƒ¦9_«l¡%9•uÁuó 2±o…,Ø~}¼Y(ó´Pr"³NU®a¦%” œé#ÖŸÊ%ìp¯_ï[¨yÖŠŽ°P`JŸù«×eÝ(zÌØ–}=`x-3ž«r"K@+ÄoÇ+ œz½¶‘.yžu¹`šZǃ鸔åêÆBbÏBºâµ À›¾ ™ž†®­:ÝjÓtÕãà˜¨«þMÇçY… n¥š#ø&ó¬}‚úµ!Ç;eQϱçí>×íÙAœ!߀-¢ÝäÞ È`+0?¸9Öó¶ÆQjL»Ãô˜b¯ØrÀ M!;ÝÕ;hº¼Ume.ƒ,*]6ÂVb§NÍò¾¾T|5§®ªd­:Ø35S¾wÿqÞo ³‡6ï s¤¥¾J±ZA eZ+W}Ÿ 6>÷Ph^] 'Æ%;´ª§NéÿE¯Ëð–ëaf^ÜM^4§»šÄÇäOÕþŠû3ïÏb‰®ŒŒùVV†VFV’¾§˜$L¬³ÒŒ:K=+mB3^ý€¡‡U3¹¹ó=>‹»Aû ª_ÐÈØJ›9µ™Óô?Þùê–úOUèÔ<¨ú7=Õ•¿›N‚þÑÙ)ï÷ñ%ÒÏåz4¾åkK–h£1>+ê¢ÆÜ)7·ê÷Ö[…ÿ‚3@Æø8´ŠýT6 endstream endobj 907 0 obj << /Type /XRef /Index [0 908] /Size 908 /W [1 3 1] /Root 905 0 R /Info 906 0 R /ID [<1038EDDD813A47F979AFE88E72B9EB16> <1038EDDD813A47F979AFE88E72B9EB16>] /Length 2113 /Filter /FlateDecode >> stream xÚ%˜[h]i†ÿwí½“f'MÓ¦m𤇤M›Ò¦Çô˜¦MOizH›4IÛì6i*"¨"£Ðº{〠.dA™ùdtµx3®ãˆÞ¢¼PDafœê~ÞÞ<üÿ»VÖþ×ÿ~ß·¾?)¥ô?¥´*)eÑ@åzÊRª 4¦Í?jLKµÐº”ºß±ÖÃ-%)µ´X[Ë´š@3XZ@´‚6°´ƒU ¬k@'ðóÖõ  lÝÀ+èÁ&ж‚m`l;ÀPVjô[nfÍ@+`}ù1pL€+`̃Z–TË@3X ºÀØ ö‚ƒà¸Á ‚`Ø ö€!°ìÃ`?8‚Cà08F‹¬ö)u~Ïïq”ºî€ e°´ƒN°lý`;Ø Xn1΃ËYÊf½uÇyéãl¯_=N¢@›cz Œ¢G›ezŒ¡]@»Åô 8Ë”í¬ŽïóU´i¦çÁ´kh7™^—Ðn¡y;q¦zí6ÚÓI`·î ]gz\C»‡Æ¨ê SlS Í·ø¡7ÑV ñ”ª4ƒæà÷ãý³hU4VPõÌ£9?¼´ÛÀV8¸X}õ.X@ÛŽæ×ª{h»Ðxóê}°ˆ¶Í[²pµ¶]«.ƒ‡h‡ÐØÎ¼‘°_ù+‘‹ ‡¹p–iJh£hX‘—Aí&šÝ"ksGö,6æäoÞ‚vÍN;SZÑМœÎËh޲;_EHUПœ<ÏW£ycad|î]…æ$÷óuhhG™Rrò­X‹F.äÔƒ¼mI’Sò^´n4²'§Fä›Ð6¡‘Vùf°Í¥€|Ëû€óc+‰˜SPòmh;ÐÈМüÈB{ÐHÝœ"“¢Ùr:'íó]hGÑHöœïA;†FÈ ŠGᜡ<ä~À0Ú$šÿÌ?~€ u QPr/Üoé×÷¾xÃìÂ!¥þ¸>{w׃Nॠçvú”Òð>6Ù‘3¦4ò5kg¸y5 äæp>®4öK_u6^Rš˜÷”,Ë'•æ¾î)™œO)-}ÊSò-§PäÓJŸþ¹5ò#ŸSz©â•Ú-r!_PzÒã[Hƒ|™ótQéKO囀#`¿Ò¿?níQúpÆSN€“à48.iÈWÏ€q0&µ¿nÍ¥y ð«ò! r©vNê}É·\ŽN¿å$˜¶¿ã«—ÁUp\‘†ß÷…k`LIÇY›3Òh·§·?®óÒø‹¹Þ“n|äé}~·‘«Þ’ÛÌ…‚Ïq‘¤Ï|ÖS)ûؤG_”¤G‹žVA³ôòOÛ€ëP«ôÕßY£|Ø]¬‘^yj+\ z@—ôZ»ïsÉè•~ò9O]ú¤_yá… À€ô›º§Îý!°Súý·¬íûÁa°WúÓ‹';Ùð»Mq‘ÞuØxYÐV£W‹1€¡†'¤÷^¬ê,À²¢áàó Ö&ÀpIYÓ«Öp«¸ª¬ãóžâVÁǰ˜R¶ñ›Ön° ¿%]F1­lð™/ð,øú³ÊU­amqÜV6ú®5>†þ÷Á‚² 'gÁׯpò¨ìÖ]kKà!. ”@T@h+@ ¨‚VÐV‚v° t€Õ` èkÁ:°t  ô€^°l›ÁÐúÁV° ì»Àn° ½`ûëøApGå¡XV6ÿEဲÇïy7FÀQp 'ÀIp Œ‚Ó` œgÁ88΃ à"¸&€[¿Ip\×Àu0n€›`Ì€[`ÌypÜwÁ¨{à>XKàX¼j`|`|`|`|`|`|`|`|`|`|`|`|`|`|`|`|`|`|`|`|àtàtàtàtàtàtàtàtàtàtàtàt8^•}ò#/w²oÏ{4¶ƒ`AXa„EAXa„EAXa„EAXîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîGÃý’ùFo 4ê*ºH5f@·.ºHÑ‹CœhqDc#¾ââƒ&šÑ1ŠOª]Ê^þ¯¨Må™·=¢3R o½£z@/ØèE³¨- ôšEm€ÞL4‹;M¾èêEǨ!°ÐÕkì”t‘¢×0è"EÛ(Îeâ ¦“à ¿×i0hÚÄ—]ãàà˜&¾âº. @©veßÓ»q\œÐÄ‘L×Áà“ Nš3€š89hÌNhâH&ŽjTþ7»ýøš²žxtO¥_{t_¥±y´¨Ò¸GK*=òô@¥göhY¥ç'=z¨òòc—ȤÊ?Ÿ%•¿óGO¥òÓ÷=ÊTþÛ—=jPs¿GeU¶Þñ¨¢ÊtÝ£&U~8æQ³*?ûG>ºÏvã—œòK5<}Òô©ÈÇ ðIÓ½Ê"X€OE„w½±Ò½ú:1^'ÆëÄx¯ãub¼NŒ×YA¯ãõVU>l<àù/Òÿ÷øRd endstream endobj startxref 392887 %%EOF units-2.19/configure.ac0000664000175000017500000001275113472071221014362 0ustar adrianadriandnl Copyright (C) 2006, 2014, 2017, 2018 Free Software Foundation, Inc dnl Process this file with autoconf to produce a configure script. AC_INIT(GNU units,2.19,adrianm@gnu.org) AC_PREREQ(2.59) AC_ARG_PROGRAM AC_SUBST(DEFIS) AC_SUBST(STRFUNC) AC_SUBST(UDAT) AC_SUBST(CDAT) AC_SUBST(UDATADIR) AC_SUBST(RELOCATION) AC_SUBST(HAVE_PYTHON) AC_SUBST(PYTHON_VERSION) AC_SUBST(MKS_POSIX) AC_SUBST(MKS_RES) AC_SUBST(MKS_DRIVE) AC_SUBST(HAVE_MKS) RELOCATION=no dnl Hack to set correct CFLAGS for cl compiler while still dnl allowing user to override the CFLAGS setting saveCFLAGS=$CFLAGS AC_PROG_CC(gcc cc egcs cl.exe) AC_PROG_CC_C99 case $OSTYPE in darwin*) echo detected MacOS, setting flags CPPFLAGS="$CPPFLAGS -I/opt/local/include" LDFLAGS="$LDFLAGS -L/opt/local/lib" ;; *) echo detected non-mac os: $OSTYPE esac AC_DEFUN([AX_CHECK_COMPILE_FLAG], [AC_PREREQ(2.64)dnl for _AC_LANG_PREFIX and AS_VAR_IF AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_[]_AC_LANG_ABBREV[]flags_$4_$1])dnl AC_CACHE_CHECK([whether _AC_LANG compiler accepts $1], CACHEVAR, [ ax_check_save_flags=$[]_AC_LANG_PREFIX[]FLAGS _AC_LANG_PREFIX[]FLAGS="$[]_AC_LANG_PREFIX[]FLAGS $4 $1" AC_COMPILE_IFELSE([m4_default([$5],[AC_LANG_PROGRAM()])], [AS_VAR_SET(CACHEVAR,[yes])], [AS_VAR_SET(CACHEVAR,[no])]) _AC_LANG_PREFIX[]FLAGS=$ax_check_save_flags]) AS_VAR_IF(CACHEVAR,yes, [m4_default([$2], :)], [m4_default([$3], :)]) AS_VAR_POPDEF([CACHEVAR])dnl ])dnl AX_CHECK_COMPILE_FLAGS if test "$CC" = cl.exe; then if test -z "$saveCFLAGS" ; then AC_MSG_NOTICE([setting special CFLAGS value for cl]) CFLAGS="-O2 -W3 -D_CRT_SECURE_NO_WARNINGS -nologo" fi if test `expr "$CFLAGS" : '.*D_CRT_SECURE_NO_WARNINGS'` -eq 0; then AC_MSG_NOTICE([disabling CRT_SECURE warnings for cl]) CFLAGS="$CFLAGS -D_CRT_SECURE_NO_WARNINGS" fi else dnl The -fpic option is needed with gcc if you want to compile a shared lib dnl and causes no harm for regular compilation. But cl.exe accepts it dnl and then prints a warning. AX_CHECK_COMPILE_FLAG(-fpic,[CFLAGS="$CFLAGS -fpic"]) fi AC_C_CONST AC_PROG_INSTALL AC_PROG_MKDIR_P dnl Checks for libraries. AC_SEARCH_LIBS(sin,m) dnl Check for readline with various possible required support libs AS_UNSET(ac_cv_lib_readline_append_history) for termlib in "" -ltermcap -lncurses -lcurses; do if test "$ac_cv_lib_readline_append_history" != yes ; then AS_UNSET(ac_cv_lib_readline_append_history) AC_CHECK_LIB(readline,append_history, [LIBS="-lreadline $termlib $LIBS";DEFIS="$DEFIS -DREADLINE"], [],[$termlib]) fi done if test "$ac_cv_lib_readline_append_history" = yes; then AC_CHECK_DECL(rl_completion_suppress_append, [], [DEFIS="$DEFIS -DNO_SUPPRESS_APPEND"], [[#include ]]) fi dnl Checks for header files. AC_CHECK_HEADER(string.h,[],[DEFIS="$DEFIS -DSTRINGS_H"]) AC_CHECK_HEADER(stdlib.h,[],[DEFIS="$DEFIS -DNO_STDLIB_H"]) dnl Checks for library functions. AC_CHECK_FUNC(strchr,[],DEFIS="$DEFIS -DNO_STRCHR") AC_CHECK_FUNC(strspn,[],DEFIS="$DEFIS -DNO_STRSPN";STRFUNC="strfunc.$OBJEXT") AC_CHECK_FUNC(strtok,[],DEFIS="$DEFIS -DNO_STRTOK";STRFUNC="strfunc.$OBJEXT") AC_CHECK_FUNC(setenv,[],DEFIS="$DEFIS -DNO_SETENV") AC_CHECK_FUNC(setlocale,[],DEFIS="$DEFIS -DNO_SETLOCALE") AC_CACHE_CHECK([for locale and UTF-8 support], am_cv_utf8, [AC_TRY_LINK([ #define _XOPEN_SOURCE 600 #include #include #include ], [wchar_t *out;char *in;char *res; res=setlocale(LC_CTYPE,"");res=in; mbsrtowcs(out, &res, 2, NULL); wcswidth(out,2);], am_cv_utf8=yes, am_cv_utf8=no) ]) if test $am_cv_utf8 = yes; then DEFIS="$DEFIS -DSUPPORT_UTF8" fi AC_CACHE_CHECK([for isfinite], am_cv_isfinite, [AC_TRY_LINK([ #define _XOPEN_SOURCE 600 #include ], [float a;a=1;isfinite(a);], am_cv_isfinite=yes, am_cv_isfinite=no) ]) if test $am_cv_isfinite = no; then DEFIS="$DEFIS -DNO_ISFINITE" fi AC_CHECK_PROG(mkstoolkit,mksinfo,found,no) # assume that if we have the MKS Toolkit, we're running the Korn shell HAVE_MKS=no if test $mkstoolkit = found; then if mksinfo > /dev/null; then if test -n "$ROOTDIR"; then DEFIS="$DEFIS -DHAVE_MKS_TOOLKIT" echo 'using MKS Toolkit' MKS_POSIX=".POSIX:" MKS_RES='$(RES)' HAVE_MKS=yes # if the user has specified a drive, leave things alone. # otherwise, prepend the drive on which the Toolkit is installed case "$prefix" in ?:*) MKS_DRIVE= ;; *) MKS_DRIVE="${ROOTDIR%%:*}:" ;; esac else echo 'no ROOTDIR... cannot use MKS Toolkit' fi else echo 'mksinfo failed... not using MKS Toolkit' fi fi AC_PATH_PROG(PYTHON, python, no) if test $PYTHON = no; then HAVE_PYTHON=no echo ' Units will work without python but the currency update' echo ' script, units_cur, will not be installed' PYTHON='' else HAVE_PYTHON=yes fi dnl Check for path search option AC_ARG_ENABLE([relocation], AC_HELP_STRING([--enable-relocation], [look in program directory for units data files (default is NO)]), [if test $enable_relocation = yes ;then UDATADIR="" RELOCATION="yes" echo relocation enabled else UDATADIR="$datadir/units/" echo relocation disabled fi ], [UDATADIR="$datadir/units/"]) UDAT="$datadir/units/" CDAT="$sharedstatedir/units/" AC_CONFIG_FILES(Makefile) AC_OUTPUT units-2.19/INSTALL0000664000175000017500000003660513341344310013126 0ustar adrianadrianInstallation Instructions ************************* Copyright (C) 1994-1996, 1999-2002, 2004-2012 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. This file is offered as-is, without warranty of any kind. Basic Installation ================== Briefly, the shell commands './configure; make; make install' should configure, build, and install this package. The following more-detailed instructions are generic; see the 'README' file for instructions specific to this package. Some packages provide this 'INSTALL' file but do not implement all of the features documented below. The lack of an optional feature in a given package is not necessarily a bug. More recommendations for GNU packages can be found in *note Makefile Conventions: (standards)Makefile Conventions. The 'configure' shell script attempts to guess correct values for various system-dependent variables used during compilation. It uses those values to create a 'Makefile' in each directory of the package. It may also create one or more '.h' files containing system-dependent definitions. Finally, it creates a shell script 'config.status' that you can run in the future to recreate the current configuration, and a file 'config.log' containing compiler output (useful mainly for debugging 'configure'). It can also use an optional file (typically called 'config.cache' and enabled with '--cache-file=config.cache' or simply '-C') that saves the results of its tests to speed up reconfiguring. Caching is disabled by default to prevent problems with accidental use of stale cache files. If you need to do unusual things to compile the package, please try to figure out how 'configure' could check whether to do them, and mail diffs or instructions to the address given in the 'README' so they can be considered for the next release. If you are using the cache, and at some point 'config.cache' contains results you don't want to keep, you may remove or edit it. The file 'configure.ac' (or 'configure.in') is used to create 'configure' by a program called 'autoconf'. You need 'configure.ac' if you want to change it or regenerate 'configure' using a newer version of 'autoconf'. The simplest way to compile this package is: 1. 'cd' to the directory containing the package's source code and type './configure' to configure the package for your system. Running 'configure' might take a while. While running, it prints some messages telling which features it is checking for. 2. Type 'make' to compile the package. 3. Optionally, type 'make check' to run any self-tests that come with the package, generally using the just-built uninstalled binaries. 4. Type 'make install' to install the programs and any data files and documentation. When installing into a prefix owned by root, it is recommended that the package be configured and built as a regular user, and only the 'make install' phase executed with root privileges. 5. Optionally, type 'make installcheck' to repeat any self-tests, but this time using the binaries in their final installed location. This target does not install anything. Running this target as a regular user, particularly if the prior 'make install' required root privileges, verifies that the installation completed correctly. 6. You can remove the program binaries and object files from the source code directory by typing 'make clean'. To also remove the files that 'configure' created (so you can compile the package for a different kind of computer), type 'make distclean'. There is also a 'make maintainer-clean' target, but that is intended mainly for the package's developers. If you use it, you may have to get all sorts of other programs in order to regenerate files that came with the distribution. 7. Often, you can also type 'make uninstall' to remove the installed files again. In practice, not all packages have tested that uninstallation works correctly, even though it is required by the GNU Coding Standards. 8. Some packages, particularly those that use Automake, provide `make distcheck', which can by used by developers to test that all other targets like 'make install' and 'make uninstall' work correctly. This target is generally not run by end users. Compilers and Options ===================== Some systems require unusual options for compilation or linking that the 'configure' script does not know about. Run './configure --help' for details on some of the pertinent environment variables. You can give 'configure' initial values for configuration parameters by setting variables in the command line or in the environment. Here is an example: ./configure CC=c99 CFLAGS=-g LIBS=-lposix *Note Defining Variables::, for more details. Compiling For Multiple Architectures ==================================== You can compile the package for more than one kind of computer at the same time, by placing the object files for each architecture in their own directory. To do this, you can use GNU 'make'. 'cd' to the directory where you want the object files and executables to go and run the 'configure' script. 'configure' automatically checks for the source code in the directory that 'configure' is in and in '..'. This is known as a "VPATH" build. With a non-GNU 'make', it is safer to compile the package for one architecture at a time in the source code directory. After you have installed the package for one architecture, use 'make distclean' before reconfiguring for another architecture. On MacOS X 10.5 and later systems, you can create libraries and executables that work on multiple system types--known as "fat" or "universal" binaries--by specifying multiple '-arch' options to the compiler but only a single '-arch' option to the preprocessor. Like this: ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ CPP="gcc -E" CXXCPP="g++ -E" This is not guaranteed to produce working output in all cases, you may have to build one architecture at a time and combine the results using the 'lipo' tool if you have problems. Installation Names ================== By default, 'make install' installs the package's commands under '/usr/local/bin', include files under '/usr/local/include', etc. You can specify an installation prefix other than '/usr/local' by giving 'configure' the option '--prefix=PREFIX', where PREFIX must be an absolute file name. You can specify separate installation prefixes for architecture-specific files and architecture-independent files. If you pass the option '--exec-prefix=PREFIX' to 'configure', the package uses PREFIX as the prefix for installing programs and libraries. Documentation and other data files still use the regular prefix. In addition, if you use an unusual directory layout you can give options like '--bindir=DIR' to specify different values for particular kinds of files. Run 'configure --help' for a list of the directories you can set and what kinds of files go in them. In general, the default for these options is expressed in terms of '${prefix}', so that specifying just '--prefix' will affect all of the other directory specifications that were not explicitly provided. The most portable way to affect installation locations is to pass the correct locations to 'configure'; however, many packages provide one or both of the following shortcuts of passing variable assignments to the 'make install' command line to change installation locations without having to reconfigure or recompile. The first method involves providing an override variable for each affected directory. For example, `make install prefix=/alternate/directory' will choose an alternate location for all directory configuration variables that were expressed in terms of '${prefix}'. Any directories that were specified during 'configure', but not in terms of '${prefix}', must each be overridden at install time for the entire installation to be relocated. The approach of makefile variable overrides for each directory variable is required by the GNU Coding Standards, and ideally causes no recompilation. However, some platforms have known limitations with the semantics of shared libraries that end up requiring recompilation when using this method, particularly noticeable in packages that use GNU Libtool. The second method involves providing the 'DESTDIR' variable. For example, 'make install DESTDIR=/alternate/directory' will prepend '/alternate/directory' before all installation names. The approach of 'DESTDIR' overrides is not required by the GNU Coding Standards, and does not work on platforms that have drive letters. On the other hand, it does better at avoiding recompilation issues, and works well even when some directory options were not specified in terms of '${prefix}' at 'configure' time. Optional Features ================= If the package supports it, you can cause programs to be installed with an extra prefix or suffix on their names by giving 'configure' the option '--program-prefix=PREFIX' or '--program-suffix=SUFFIX'. Some packages pay attention to '--enable-FEATURE' options to 'configure', where FEATURE indicates an optional part of the package. They may also pay attention to '--with-PACKAGE' options, where PACKAGE is something like 'gnu-as' or 'x' (for the X Window System). The 'README' should mention any '--enable-' and '--with-' options that the package recognizes. For packages that use the X Window System, 'configure' can usually find the X include and library files automatically, but if it doesn't, you can use the 'configure' options '--x-includes=DIR' and '--x-libraries=DIR' to specify their locations. Some packages offer the ability to configure how verbose the execution of 'make' will be. For these packages, running `./configure --enable-silent-rules' sets the default to minimal output, which can be overridden with 'make V=1'; while running `./configure --disable-silent-rules' sets the default to verbose, which can be overridden with 'make V=0'. Particular systems ================== On HP-UX, the default C compiler is not ANSI C compatible. If GNU CC is not installed, it is recommended to use the following options in order to use an ANSI C compiler: ./configure CC="cc -Ae -D_XOPEN_SOURCE=500" and if that doesn't work, install pre-built binaries of GCC for HP-UX. HP-UX 'make' updates targets which have the same time stamps as their prerequisites, which makes it generally unusable when shipped generated files such as 'configure' are involved. Use GNU 'make' instead. On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot parse its '' header file. The option '-nodtk' can be used as a workaround. If GNU CC is not installed, it is therefore recommended to try ./configure CC="cc" and if that doesn't work, try ./configure CC="cc -nodtk" On Solaris, don't put '/usr/ucb' early in your 'PATH'. This directory contains several dysfunctional programs; working variants of these programs are available in '/usr/bin'. So, if you need '/usr/ucb' in your 'PATH', put it _after_ '/usr/bin'. On Haiku, software installed for all users goes in '/boot/common', not '/usr/local'. It is recommended to use the following options: ./configure --prefix=/boot/common Specifying the System Type ========================== There may be some features 'configure' cannot figure out automatically, but needs to determine by the type of machine the package will run on. Usually, assuming the package is built to be run on the _same_ architectures, 'configure' can figure that out, but if it prints a message saying it cannot guess the machine type, give it the '--build=TYPE' option. TYPE can either be a short name for the system type, such as 'sun4', or a canonical name which has the form: CPU-COMPANY-SYSTEM where SYSTEM can have one of these forms: OS KERNEL-OS See the file 'config.sub' for the possible values of each field. If 'config.sub' isn't included in this package, then this package doesn't need to know the machine type. If you are _building_ compiler tools for cross-compiling, you should use the option '--target=TYPE' to select the type of system they will produce code for. If you want to _use_ a cross compiler, that generates code for a platform different from the build platform, you should specify the "host" platform (i.e., that on which the generated programs will eventually be run) with '--host=TYPE'. Sharing Defaults ================ If you want to set default values for 'configure' scripts to share, you can create a site shell script called 'config.site' that gives default values for variables like 'CC', 'cache_file', and 'prefix'. 'configure' looks for 'PREFIX/share/config.site' if it exists, then 'PREFIX/etc/config.site' if it exists. Or, you can set the 'CONFIG_SITE' environment variable to the location of the site script. A warning: not all 'configure' scripts look for a site script. Defining Variables ================== Variables not defined in a site shell script can be set in the environment passed to 'configure'. However, some packages may run configure again during the build, and the customized values of these variables may be lost. In order to avoid this problem, you should set them in the 'configure' command line, using 'VAR=value'. For example: ./configure CC=/usr/local2/bin/gcc causes the specified 'gcc' to be used as the C compiler (unless it is overridden in the site shell script). Unfortunately, this technique does not work for 'CONFIG_SHELL' due to an Autoconf limitation. Until the limitation is lifted, you can use this workaround: CONFIG_SHELL=/bin/bash ./configure CONFIG_SHELL=/bin/bash 'configure' Invocation ====================== 'configure' recognizes the following options to control how it operates. '--help' '-h' Print a summary of all of the options to 'configure', and exit. '--help=short' '--help=recursive' Print a summary of the options unique to this package's 'configure', and exit. The 'short' variant lists options used only in the top level, while the 'recursive' variant lists options also present in any nested packages. '--version' '-V' Print the version of Autoconf used to generate the 'configure' script, and exit. '--cache-file=FILE' Enable the cache: use and save the results of the tests in FILE, traditionally 'config.cache'. FILE defaults to '/dev/null' to disable caching. '--config-cache' '-C' Alias for '--cache-file=config.cache'. '--quiet' '--silent' '-q' Do not print messages saying which checks are being made. To suppress all normal output, redirect it to '/dev/null' (any error messages will still be shown). '--srcdir=DIR' Look for the package's source code in directory DIR. Usually 'configure' can determine that directory automatically. '--prefix=DIR' Use DIR as the installation prefix. *note Installation Names:: for more details, including other options available for fine-tuning the installation locations. '--no-create' '-n' Run the configure checks, but stop before creating any output files. 'configure' also accepts some other, not widely useful, options. Run 'configure --help' for more details. units-2.19/UnitsMKS.texinfo0000664000175000017500000005234513345446670015167 0ustar adrianadrian\input texinfo @c -*-texinfo-*- @c %**start of header @setfilename UnitsMKS.info @finalout @setchapternewpage off @firstparagraphindent none @set EDITION 2 @set VERSION 2.16 @set TKVERSION 10.0 @set OSVERSION 10 @set VSVERSION 2015 @set BUILDDATE @w{19 October} 2017 @c %**end of header @copying This manual is for building and installing GNU @command{units} (version @value{VERSION}) on Microsoft Windows with the PTC MKS Toolkit. Copyright @copyright{} 2016--2017 Free Software Foundation, Inc. @end copying @titlepage @title @w{Building and Installing} @w{GNU @command{units}} on @w{Microsoft Windows} with the @w{MKS Toolkit} @subtitle Edition @value{EDITION} for @command{units} Version @value{VERSION} @author Jeff Conrad @page @vskip 0pt plus 1filll @insertcopying @end titlepage @contents @iftex @headings off @everyheading Building @command{units} on Windows with MKS Toolkit @| @| @thispage @end iftex @macro label {text} @w{@sansserif{\text\}} @end macro @node Preface @unnumbered Preface This manual covers configuring, building, and installing GNU @command{units} from the MKS Korn shell on Microsoft Windows. The process runs much as it would on Unix-like systems, and much of what follows assumes that the installation will be in the same places as they would on Unix-like systems (e.g., @file{C:/usr/local/bin} for the executable). Most of the discussion implicitly assumes using Microsoft Visual Studio for compiling. If Visual Studio is installed but Unix-like commands are not available, you can probably build @command{units} from the Windows command prompt using @file{Makefile.Win}---@pxref{Top,,,UnitsWin,UnitsWin} for details. A binary distribution for Windows is available, but if you use @command{more} or @command{less} as your pager, it is better to build @command{units} for MKS---@pxref{Behavior of @env{PAGER}}, for details. The system on which the build was done had @file{/bin} as a symbolic link to @w{@file{C:/Program Files (x86)/MKS Toolkit/mksnt}}; with this approach, there is no need to change the first lines of any scripts in the units distribution. The most recent build was for @command{units} version @value{VERSION}, using the MKS Toolkit for Developers version @value{TKVERSION} and Microsoft Visual Studio @value{VSVERSION} on Microsoft Windows Professional @value{OSVERSION} on @value{BUILDDATE}. --- Jeff Conrad (@email{jeff_conrad@@msn.com}) @value{BUILDDATE} @node Building and Installing @command{units} @unnumbered Building and Installing @command{units} @node Overview @unnumberedsec Overview On Unix-like systems, building and installing @command{units} is simple; just type @example ./configure; make; make install @end example @noindent On Windows---even if Unix-like utilities such as the MKS Toolkit are available---additional steps are usually needed. A more realistic procedure might be as follows: @enumerate @item Create a @file{config.site} file that specifies several parameters for @command{configure}. Alternatively, you can pass the parameters to @command{configure} at invocation. @item Start an instance of the Korn shell with administrative privilege. @item If you are using Microsoft Visual Studio, initialize the environment variables for Visual Studio with the @command{setvcvars} script: @example . ./setvcvars @end example @item Prepare the files needed to build @command{units} by running the configuration script: @example ./configure @end example @item Manually adjust @file{Makefile} if necessary. @item Build the executable and support files: @example make @end example @item If the build is successful, install the package: @example make install @end example @end enumerate @noindent Some of the issues involved are discussed below. @node Configuring @command{configure} @unnumberedsec Configuring @command{configure} The @command{configure} script attempts to make the build process system independent. But on non--Unix-like systems, @command{configure} often needs some help. When using the MKS Toolkit on Windows, @command{configure} depends on the environment variables @env{ac_executable_extensions} and @env{PATH_SEPARATOR}. It is often easier to use the Microsoft Visual Studio C compiler @command{cl} directly rather than through the MKS wrapper @command{cc}; for this to happen, the variable @env{CC} must be set to @code{cl} or @code{cl.exe}. The variables can be given to @command{configure} in several ways: @itemize @bullet @item The variables can be passed to @command{configure} at invocation as name--value pairs, i.e., @example ./configure [@var{name}=@var{value} ...] @end example @item The variables can be set and marked for export, e.g., @example @group export ac_executable_extensions=".exe .sh .ksh" export PATH_SEPARATOR=";" @end group @end example @item The variables can be set in a site configuration script that is read by @command{configure} at invocation. Such a script might include @example @group ac_executable_extensions=".exe .sh .ksh" PATH_SEPARATOR=";" @end group @end example @noindent By default, the script is @w{@file{/usr/local/share/config.site}}. If you specify a location other than @file{/usr/local/} for the installation with the @option{--prefix} option to @command{configure}, the configuration script is expected to be @w{@file{@var{prefix}/local/ share/config.site}}. If you wish to have a fixed location for the configuration script, you can do so with the @env{CONFIG_SITE} environment variable. For example, if you have a configuration script that you want read regardless of the @option{--prefix} option, you could give @example CONFIG_SITE="C:/usr/local/share/config.site" @end example @noindent A more complete @file{config.site} might include @example @group ac_executable_extensions=".exe .sh .ksh" ac_ext=cpp prefix=C:/usr/local PATH_SEPARATOR=";" INSTALL="C:/usr/local/bin/install.exe -c" CC=cl.exe CFLAGS="-O2 -W3 -D_CRT_SECURE_NO_WARNINGS -nologo" CXX=cl.exe CXXFLAGS="-O2 -W3 -D_CRT_SECURE_NO_WARNINGS -nologo" @end group @end example (@env{ac_ext}, @env{CXX}, and @env{CXXFLAGS} are not needed for building @command{units}) @end itemize @node Customizing the Installation @unnumberedsec Customizing the Installation By default, @samp{make install} installs @command{units} in subdirectories of @file{/usr/local}; you can specify a different location using the @option{--prefix} option. For example, if you want to install @command{units} in @file{C:/Program Files (x86)/GNU}, you might invoke @command{configure} with @example @./configure --prefix=C:/Progra~2/GNU @end example @noindent The Windows ``8.3'' short name is used because the installation process does not like spaces or parentheses in pathnames. The short name for @file{C:/Program Files (x86)} is usually as shown, but can vary from system to system. You can find the actual short name on your system with the @command{dosname} command, e.g., @example dosname "C:/Program Files (x86)" @end example If you don't specify a prefix, or you specify a prefix without a drive letter, the installation will be on the same drive as the MKS Toolkit. @command{configure} provides many other options for customizing the installation; typing @example ./configure --help @end example @noindent gives a summary of these options. Running @command{configure} is discussed in detail under the section ``Running @command{configure} Scripts'' in the GNU documentation for @command{autoconf}, available at @url{http:// www.gnu.org/software/autoconf/}. @node Administrative Privilege @unnumberedsec Administrative Privilege If you plan to install @command{units} in a location where you lack write permission, you'll need administrative permission for the installation and perhaps for the configuration and build (@pxref{``install'' Programs}). The easiest way to do this is to start the shell by right-clicking on the shell icon (or a shortcut) from Explorer and using the @label{Run as administrator} option from the context menu. @node Environment Variables for Visual Studio @unnumberedsec Environment Variables for Visual Studio Microsoft Visual Studio requires that several environment variables (e.g., @env{PATH}) be set to include numerous directories for a build from the command line. Visual Studio provides an option on the Windows Start Menu to run an instance of the Windows command interpreter with these variables initialized. @node Initialization with the Korn Shell @unnumberedsubsec Initialization with the Korn Shell The @command{setvcvars} script included in the units distribution will set these variables for the shell by running the batch file used for the Visual Studio command prompt, writing the variable values to the standard output, and reading them into the shell. For the values to persist, the script must of course be run in the current environment, e.g., @samp{source ./setvcvars} or @w{@samp{. ./setvcvars}}. These variables must be set for any command-line build with Visual Studio, so it may be helpful to copy the script to a directory that's in @env{PATH} (e.g., @file{/usr/local/bin}). @node Adjustment for Different Visual Studio Installations @unnumberedsubsec Adjustment for Different Visual Studio Installations The location of the batch file and the values of the environment variables are installation specific; the @command{setvcvars} script assumes a standard installation of Visual Studio 2015 Express or Visual Studio 2015 Community. For a nonstandard installation or for a different version, the value of @code{vsbatfile} in the script may need to be modified. To find the appropriate value, go to the Windows Start Menu, find Visual Studio 20@var{xx} @label{Developer Command Prompt for VS20@var{xx}}, right click, and select @label{Properties}; the @label{Target} on the @label{Shortcut} tab should contain the proper path for the batch file. On @w{Windows 10}, additional steps are needed to find the location of the batch file. Find Visual Studio 20@var{xx} on the Start Menu, click, right click on @label{Developer Command Prompt for VS20@var{xx}}, find @label{More}, right click, and select @label{Open file location}. In the instance of File Explorer that opens, find the @label{Developer Command Prompt} shortcut, right click, and select @label{Properties}; the @label{Target} on the @label{Shortcut} tab should contain the proper path for the batch file. @node ``install'' Programs @unnumberedsec ``install'' Programs If you have an executable @command{install} program, you may get an error message to the effect of @example cannot execute: The requested operation requires elevation @end example @noindent while running @command{configure} without elevated privileges on Windows Vista or later with User Account Control (UAC) enabled. If UAC is enabled, the system thinks executable programs whose names contain ``install'', ``patch'', ``update'', and similar always require elevated privilege, and will refuse to run them without this privilege. If this happens, @command{configure} will simply use the @command{install-sh} script included with the @command{units} distribution. But if for some reason you wish to use your version of @command{install}, there are several ways to do so. @node Running with Administrative Privilege @unnumberedsubsec Running with Administrative Privilege The easiest solution is to do the configure with a shell with administrative privilege, as discussed in @ref{Administrative Privilege}. After installation, testing should be done using a shell without elevated privilege. @node Providing a Manifest File @unnumberedsubsec Providing a Manifest File An alternative is to tell UAC that elevated privilege is not required. To do this, create a manifest file containing @example @group @end group @end example @noindent name it @file{install.exe.manifest}, and place it in the same directory as install.exe. Sometimes this has no effect; if this happens, adjust the modification times of the manifest and executable so they match. The procedure is discussed at @url{https://github.com/bmatzelle/gow/issues/156}, and a similar discussion for GNU patch is given at @url{http://math.nist.gov/oommf/software-patchsets/patch_on_Windows7.html}. @noindent Last access: 16 May 2016 @node Embedding a Manifest in the install Program @unnumberedsubsec Embedding a Manifest in the install Program If you are using MS Visual Studio, an alternative to having the manifest file in the executable directory is to embed the manifest in the executable using the manifest tool @command{mt.exe}, obviating the need to worry about the time stamps of the files. This is discussed in NIST link above; if the command is run from the shell, the semicolon must be escaped: @example mt -manifest install.exe.manifest -outputresource:install.exe@backslashchar{};1 @end example @noindent Microsoft describe manifests at @url{https://msdn.microsoft.com/en-us/library/bb756929.aspx}. The Code Project also discusses UAC awareness: @url{http://www.codeproject.com/Articles/17968/Making-Your-Application-UAC-Aware}. @node Fine Tuning @file{Makefile} @unnumbered Fine Tuning @file{Makefile} @node Behavior of @env{PAGER} @unnumberedsec Behavior of @env{PAGER} The MKS versions of @command{more} and @command{less} do not recognize @option{+}@var{n} as an option to display a file beginning at line @var{n}, so @w{@samp{help @var{unit}}} from the @command{units} prompt will fail. If @command{configure} is able to detect the Toolkit by running @command{mksinfo}, @example -DHAVE_MKS_TOOLKIT @end example @noindent is added to the @code{DEFS} in Makefile. If you have the MKS Toolkit and it somehow is not detected, you should add this manually. @node MKS @command{make} and Suffix Rules @unnumberedsec MKS @command{make} and Suffix Rules The MKS version of @command{make} ignores suffix rules in @file{Makefile} unless the line @example .POSIX: @end example @noindent appears in @file{Makefile} before any suffix rules. This target is also required for the currency updater @command{units_cur} to run properly from @file{Makefile}. The configure script attempts to detect the Toolkit by running mksinfo, and if this succeeds, the @code{.POSIX} target is added. If you have the MKS Toolkit and it somehow is not detected, you should add this line manually. @node Install Program @unnumberedsec Install Program If the @env{PATH} at shell invocation uses the backslash as the path separator, and you have a BSD-compatible @command{install} program that is detected by @command{configure}, the backslashes may be removed, giving an incorrect @file{Makefile} entry something like @example INSTALL = c:usrlocalbin/install.exe -c @end example @noindent Add the slashes to get @example INSTALL = c:/usr/local/bin/install.exe -c @end example @noindent If you will always want to use the same installation program, you can specify it with the @env{INSTALL} variable---@pxref{Configuring @command{configure}}. Giving a @env{PATH} with forward slashes in a file given by @env{ENV} will have no effect because configure unsets that variable, and the file will not be read. @node Icons and File Association @unnumbered Icons and File Association Two icons are provided: @file{unitsfile.ico} and @file{unitsprog.ico}. The former is made the default icon for @command{units} data files, and the latter is embedded in the executable file by the build process. The latter also may be useful if you wish to create a shortcut to the @command{units} program. Both icons are copied to the same directory as the @command{units} data files. The installation process associates @command{units} data files with the MKS graphical @command{vi} editor @command{viw}; double-clicking on the file icon opens the file for editing. The encoding is set to UTF-8. @node MKS @command{units} @unnumbered MKS @command{units} The MKS Toolkit includes a very old version of @command{units}; if the MKS executable directory is earlier in @env{PATH} than the installation directory for GNU @command{units}, a command-line invocation will run the MKS version. To ensure that you run GNU @command{units}, either change @env{PATH} so that GNU @command{units} is found first, or create an alias for GNU @command{units}. @node Currency Definitions Updater @unnumbered Currency Definitions Updater The script @command{units_cur} is used to update currency definitions; it requires Python (available from @url{https://www.python.org/}). @node Installing Python @unnumberedsec Installing Python If you want to use the currency updater, install Python if it is not already installed; ensure that Python is installed @emph{before} running @command{configure}. If you need to install Python, unless you have (or anticipate having) applications that depend on @w{Python 2}, the best choice is probably to install @w{Python 3}. Python's location must be included in @env{PATH} so the shell can find it; the Python installer usually offers to do this. When you first run @command{units_cur}, you may get a complaint about a missing module; for example, @codequoteundirected on @example ModuleNotFoundError: No module named 'requests' @end example @codequoteundirected off @noindent If so, you will need to install the missing module. The easiest way to do this is with the @command{pip} command; for example, @example pip install requests @end example @noindent If you have @w{Python 2.7.9} or later or @w{Python 3.4} or later, you should have @command{pip}, though you may need to upgrade to the latest version. If you do not have @command{pip}, you will need to install it manually; see the Python documentation or the Python website for instructions on how to do this. @node Python and @command{configure} @unnumberedsec Python and @command{configure} The complete pathname in @file{Makefile} may contain backslashes; for example, @example PYTHON = C:\Progra~1\Python\Python36/python.exe @end example @noindent The build will fail unless the backslashes are changed to forward slashes; for example, @example PYTHON = C:/Progra~1/Python/Python36/python.exe @end example @noindent If a 32-bit version of Python is installed on a 64-bit Windows system, the @file{Makefile} entry may contain parentheses as well as backslashes, e.g., @example PYTHON = C:\Program Files (x86)\Python\Python36/python.exe @end example @noindent this will usually give a ``syntax error'' message when running @command{configure}. A @file{Makefile} entry such as this must be enclosed in single quotes for the build of units to succeed. The problem can be avoided by using the 8.3 equivalent of the Python installation directory in @env{PATH}, e.g., @example C:/Progra~2/Python/Python36/python.exe @end example @noindent An alternative is to install the 64-bit version of Python so that the installation directory will be @file{C:\Program Files}. The backslashes can be avoided by passing @env{PYTHON} to @command{configure} at invocation, or by specifying it in @file{config.site}, e.g., @example PYTHON=C:/Progra~2/Python/Python36/python.exe @end example @noindent A disadvantage is that if the installation directory changes with a future version of Python, @file{config.site} will need to be manually updated. A better approach is to give the normal Unix/Linux pathname: @example PYTHON=/usr/bin/python @end example @noindent This file need not exist; it simply tells the shell to use Python. Do not include the volume specifier (e.g., @code{C:}) or the @code{.exe} extension; if you do, the shell will assume that the path @emph{does} exist, and will complain that it cannot find it. @node Running the Currency Updater @unnumbered Running the Currency Updater @node Updating from the Command Line @unnumberedsec Updating from the Command Line If the location of @command{units_cur} is on your @env{PATH}, you can update the currency definitions by entering @samp{units_cur} from the command line; you will need elevated permission if you lack write permission on the file. Reliable free sources of currency exchange rates have been annoyingly ephemeral, sometimes causing update attempts to fail. Accordingly, several different sources are now supported---see the units manual for details. @node Automatic Updates @unnumberedsec Automatic Updates The easiest way to keep definitions updated is to create an entry in the Windows Task Scheduler. The Task Scheduler is fussy about the format for the action, which must be an executable file; an entry might look something like @example C:\Windows\py.exe "C:\usr\local\bin\units\units_cur" @end example @noindent if the Python launcher is in @file{C:\Windows} and the script is in @file{C:\usr\local\bin}. @bye units-2.19/locale_map.txt0000664000175000017500000001270611747125613014741 0ustar adrianadrianAfrikaans_South Africa af_ZA Albanian_Albania sq_AL Alsatian_France gsw_FR Amharic_Ethiopia am_ET Arabic_Algeria ar_DZ Arabic_Bahrain ar_BH Arabic_Egypt ar_EG Arabic_Iraq ar_IQ Arabic_Jordan ar_JO Arabic_Kuwait ar_KW Arabic_Lebanon ar_LB Arabic_Libya ar_LY Arabic_Morocco ar_MA Arabic_Oman ar_OM Arabic_Qatar ar_QA Arabic_Saudi Arabia ar_SA Arabic_Syria ar_SY Arabic_Tunisia ar_TN Arabic_U.A.E. ar_AE Arabic_Yemen ar_YE Armenian_Armenia hy_AM Assamese_India as_IN Azeri_Azerbaijan, Cyrillic az_AZ Azeri_Azerbaijan, Latin az_AZ Bashkir_Russia ba_RU Basque_Basque eu_ES Belarusian_Belarus be_BY Bengali_Bangladesh bn_?? Bengali_India bn_IN Bosnian_Neutral bs_?? Bosnian_Bosnia and Herzegovina, Cyrillic bs_BA Bosnian_Bosnia and Herzegovina, Latin bs_BA Breton_France br_FR Bulgarian_Bulgaria bg_BG Central Kurdish_Iraq ku_IQ Cherokee_Cherokee chr_Cher Catalan_Spain ca_ES Chinese_Hong Kong SAR, PRC zh_HK Chinese_Macao SAR zh_MO Chinese_Singapore zh_SG Chinese_Simplified zh_Hans Chinese_Traditional zh_Hant Corsican_France co_FR Croatian_Neutral hr_?? Croatian_Bosnia and Herzegovina, Latin hr_BA Croatian_Croatia hr_HR Czech_Czech Republic cs_CZ Danish_Denmark da_DK Dari_Afghanistan prs_AF Divehi_Maldives dv_MV Dutch_Belgium nl_BE Dutch_Netherlands nl_NL English_Australia en_AU English_Belize en_BZ English_Canada en_CA English_Caribbean en_029 English_India en_IN English_Ireland en_IE English_Ireland en_IE English_Jamaica en_JM English_Malaysia en_MY English_New Zealand en_NZ English_Philippines en_PH English_Singapore en_SG English_South Africa en_ZA English_Trinidad and Tobago en_TT English_United Kingdom en_GB English_United States en_US English_Zimbabwe en_ZW Estonian_Estonia et_EE Faroese_Faroe Islands fo_FO Filipino_Philippines fil_PH Finnish_Finland fi_FI French_Belgium fr_BE French_Canada fr_CA French_France fr_FR French_Luxembourg fr_LU French_Monaco fr_MC French_Switzerland fr_CH Frisian_Netherlands fy_NL Galician_Spain gl_ES Georgian_Georgia ka_GE German_Austria de_AT German_Germany de_DE German_Liechtenstein de_LI German_Luxembourg de_LU German_Switzerland de_CH Greek_Greece el_GR Greenlandic_Greenland kl_GL Gujarati_India gu_IN Hausa_Nigeria ha_NG Hawiian_United States haw_US Hebrew_Israel he_IL Hindi_India hi_IN Hungarian_Hungary hu_HU Icelandic_Iceland is_IS Igbo_Nigeria ig_NG Indonesian_Indonesia id_ID Inuktitut_Canada iu_CA, Latin Inuktitut_Canada iu_CA, Canadian Syllabics Irish_Ireland ga_IE isiXhosa_South Africa xh_ZA isiZulu_South Africa zu_ZA Italian_Italy it_IT Italian_Switzerland it_CH Japanese_Japan ja_JP Kannada_India kn_IN Kazakh_Kazakhstan kk_KZ Khmer_Cambodia kh_KH K'iche_Guatemala qut_GT Kinyarwanda_Rwanda rw_RW Konkani_India kok_IN Korean_Korea ko_KR Kyrgyz_Kyrgyzstan ky_KG Lao_Lao PDR lo_LA Latvian_Latvia lv_LV Lithuanian_Lithuanian lt_LT Lower Sorbian_Germany dsb_DE Luxembourgish_Luxembourg lb_LU Macedonian_Macedonia, FYROM mk_MK Malay_Brunei Darassalam ms_BN Malay_Malaysia ms_MY Malayalam_India ml_IN Maltese_Malta mt_MT Maori_New Zealand mi_NZ Mapudungun_Chile arn_CL Marathi_India mr_IN Mohawk_Canada moh_CA Mongolian_Mongolia, Cyrillic mn_MN Mongolian_Mongolia, Mong mn_MN Nepali_Nepal ne_NP Nepali_India ne_IN Norwegian_BokmÃ¥l, Norway no_NO Norwegian_Nynorsk, Norway no_NO Occitan_France oc_FR Oriya_India or_IN Pashto_Afghanistan ps_AF Persian_Iran fa_IR Polish_Poland pl_PL Portuguese_Brazil pt_BR Portuguese_Portugal pt_PT Pular_Senegal ff_SN Punjabi_India, Gurmukhi script pa_IN Punjabi_Pakistan, Arabic script pa_PK Quechua_Bolivia quz_BO Quechua_Ecuador quz_EC Quechua_Peru quz_PE Romanian_Romania ro_RO Romansh_Switzerland rm_CH Russian_Russia ru_RU Sakha_Russia sah_RU Sami_Inari, Finland smn_FI Sami_Lule, Norway smj_NO Sami_Lule, Sweden smj_SE Sami_Northern, Finland se_FI Sami_Northern, Norway se_NO Sami_Northern, Sweden se_SE Sami_Skolt, Finland sms_FI Sami_Southern, Norway sma_NO Sami_Southern, Sweden sma_SE Sanskrit_India sa_IN Serbian_Neutral sr_?? Serbian_Bosnia and Herzegovina, Cyrillic sr_BA Serbian_Bosnia and Herzegovina, Latin sr_BA Serbian_Croatia sr_HR Serbian_Serbia and Montenegro, Former, Cyrillic sr_CS Serbian_Serbia and Montenegro, Former, Latin sr_CS Sesotho sa Leboa_South Africa nso_ZA Setswana / Tswana_Botswana tn_BW Setswana / Tswana_South Africa tn_ZA Sindhi_Pakistan sd_PK Sinhala_Sri Lanka si_LK Slovak_Slovakia sk_SK Slovenian_Slovenia sl_SI Spanish_Argentina es_AR Spanish_Bolivia es_BO Spanish_Chile es_CL Spanish_Colombia es_CO Spanish_Costa Rica es_CR Spanish_Dominican Republic es_DO Spanish_Ecuador es_EC Spanish_El Salvador es_SV Spanish_Guatemala es_GT Spanish_Honduras es_HN Spanish_Mexico es_MX Spanish_Nicaragua es_NI Spanish_Panama es_PA Spanish_Paraguay es_PY Spanish_Peru es_PE Spanish_Puerto Rico es_PR Spanish_Spain, Modern Sort es_ES Spanish_Spain, Traditional Sort es_ES Spanish_United States es_US Spanish_Uruguay es_UY Spanish_Venezuela es_VE Swahili_Kenya sw_KE Swedish_Finland sv_FI Swedish_Sweden sv_SE Swedish_Sweden sv_SE Syriac_Syria syr_SY Tajik_Tajikistan, Cyrillic tg_TJ Tamazight_Algeria, Latin tzm_DZ Tamil_India ta_IN Tamil_Sri Lanka ta_LK Tatar_Russia tt_RU Telugu_India te_IN Thai_Thailand th_TH Tibetan_PRC bo_CN Tigrinya_Eritrea ti_ER Tigrinya_Ethiopia ti_ET Turkish_Turkey tr_TR Turkmen_Turkmenistan tk_TM Ukrainian_Ukraine uk_UA Upper Sorbian_Germany hsb_DE Urdu_(reserved) ur_?? Urdu_Pakistan ur_PK Uyghur_PRC ug_CN Uzbek_Uzbekistan, Cyrillic uz_UZ Uzbek_Uzbekistan, Latin uz_UZ Valencian_Valencia ca_ES-Valencia Vietnamese_Vietnam vi_VN Welsh_United Kingdom cy_GB Wolof_Senegal wo_SN Yi_PRC ii_CN Yoruba_Nigeria yo_NG units-2.19/README0000664000175000017500000002526513346441523012766 0ustar adrianadrianOverview ======== GNU 'units' program converts quantities expressed in various systems of measurement to their equivalents in other systems of measurement. Like many similar programs, it can handle multiplicative scale changes; but it can also handle nonlinear conversions such as Fahrenheit to Celsius (which may appear to be linear but is actually affine). The program can also perform conversions from and to sums of units, such as converting between meters and feet plus inches. Basic operation is simple: at the 'You have:' prompt, enter the unit from which you want to convert; at the subsequent 'You want:' prompt, enter the unit to which you want to convert. For example, You have: ft You want: m * 0.3048 / 3.2808399 In other words, 1 foot is equal to 0.3048 meter (exactly), and 1 meter is equal to approximately 3.2808339 feet. To quit the program, enter either 'quit' or 'exit' at either the 'You have:' or 'You want:' prompt. You can also quit by entering Ctrl-C at any time. The program's features are described in detail in the user manual. Building and Installation ========================= General installation instructions appear in the file 'INSTALL'. You should be able to run './configure' followed by 'make'. If you give no options to configure, it will compile units to look for the units data file in a standard location (probably /usr/local/share) and the currency file in /usr/local/com. If you want to use the program without installing, you will need to use the '-f' option; if you plan to use the program frequently without installing, you can avoid having to do this by setting 'UNITSFILE=definitions.units' in the environment. You can also avoid having to do this by building for a relocatable installation, described below. If you wish to change the locations of the files you can invoke './configure' with the option '--prefix=' to set a different installation location. You may also choose to use '--sharedstatedir=' to change the location for the currency file. Building for a Relocatable Installation --------------------------------------- By default, the location of the units data file is compiled into the program as an absolute path name, so its location cannot be changed. If you invoke configure by typing './configure --enable-relocation', the data file location will be compiled into the program as 'definitions.units', and units will search for the data file in the following places: * In the directory that contains the units executable, typical for installations on Windows. * In /bin/../share/units, where /bin is the directory that contains the units executable, typical for installations on Unix-like systems. For example, the default installation typically places the executable in /usr/local/bin and the data file in /usr/local/share/units; if you wished, you could change these locations to /usr/me/bin and /usr/me/share/units without recompiling the program. If configure is run with '--enable-relocation', you can run units without installing without giving the '-f' option. If units is invoked with the '-f' option or the environment variable UNITSFILE is set, that path is used, and it makes no difference whether configure was run with the '--enable-relocation' option. GNU readline Library -------------------- For full functionality you should have the GNU readline library installed to provide history and editing of data entry. Note that MacOS comes with editline, which is similar to GNU readline, but not similar enough. When compiling under MacOS the configure script looks for GNU readline in /opt/local. If you have installed it somewhere else then invoke configure as follows: ./configure -I -L Then the configure script should detect readline and compile it in. If you are installing on Windows, readline may not be available; however, command history and intraline editing are available via the standard Windows console facilities described in the documentation for doskey. Currency Conversion Updates --------------------------- You can update currency conversions using the units_cur Python script; see the user manual for details. Building on Windows =================== units can be built from the Windows command prompt using Visual Studio; see UnitsWin.pdf for details. units can also be built from the MKS Korn shell using Visual Studio; see UnitsMKS.pdf for details. Documentation ============= The documentation is provided in texinfo, roff, and text format. The roff manual page source units.man is generated automatically from the texinfo documentation; this produces a readable man page when run through nroff, but most equations are not included. The manual page formats well for printing or as PDF with groff. A printed manual can also be generated using 'units.dvi'; use this if you encounter problems with groff. Icons ===== The distribution includes three icons that may be useful for installation in a GUI. Use the icotool command to extract the png files from the .ico files. The icon_ms.png file is suitable for use as a small button. Incompatibilities with Unix 'units' =================================== This program has the following incompatibilties with unix 'units': * The '-' character is a subtraction operator rather than a multiply operator by default. * Exponentiation in numbers requires an 'e', so you must write 2.5e-2 instead of 2.5-2. * Prefixes are listed in the units file. * GNU 'units' tries the -s, -es, and -ies plural forms. * The default output format is slightly different. * The units database is much larger and more informative, but with some differences. (e.g. 'g' is for gravity in unix 'units' and grams in GNU 'units'.) The comment character has been changed to '#'. GNU 'units' Extensions ====================== GNU 'units' includes the following extensions: * Multiplication can be written with a '*' if desired. * Exponents can be written with '^' or '**' in units. * Exponents can be larger than 9 if written with '^' or '**'. * Sums of units can be converted. * The units data file is extensively commented. * Units which measure reciprocal dimensions can be converted. * Parentheses for grouping are supported. * Functions such as sin, cos, and log are supported. * Roots of units and rational exponents can be computed. * Nonlinear units conversions are supported. * Conversion to lists of units (e.g. feet and inches) is supported Windows Binary Distribution =========================== A binary distribution for Windows is available at http://ftp.gnu.org/gnu/units/windows/. The executable was built with Microsoft Visual Studio using Makefile.Win and the same source files included in the source distribution. The binary version is usually the same as that of the current source distribution. There is currently no support for UTF-8 or readline; however, command history and intraline editing are available via the standard Windows console facilities described in the documentation for doskey. Other Ports =========== A port of units 1.87 to Windows is available from the http://gnuwin32.sourceforge.net/packages/units.htm This port includes readline support. A Java version of units by Roman Redziejowski is available on SourceForge at http://units-in-java.sourceforge.net/ Two versions are available for Android. Steve Pomeroy has a version based on the above Java version that you can obtain at http:// staticfree.info/projects/units/ and Keith Flowers has compiled the C code for Android: http://apps.keithflower.org/?page_id=6 A Perl version was written by Bob Walton and can be accessed either as a units converting web form or as perl source code from: http://bwalton.com/cgi-bin/myunitscgi.pl A project called Frink uses a (modified) version of the units database to supply a units-aware programming language. https://futureboy.us/frinkdocs/ Jillian England has created a units definition file that changes energy to mass and seconds to meters: https://github.com/NinerXrayBravoTwoTwo/MassEnergyUnits ----------------------------------------------------------------------------- When updating from 1.x to 2.x: The name of the personal units file has changed from $HOME/units.dat to $HOME/.units ($HOME/unitdef.units under Windows). The format for nonlinear unit definitions has changed. Run 'units -c' and add the "units=" keyword in front of any bracketed unit specifications. ----------------------------------------------------------------------------- Ideas the future (may or may not happen): * Bundle up the units conversion stuff into a library. * Inflation adjusted currency? * Allow multiple definitions of the same unit and resolve the correct definition by a conformability check. (This has exponential growth behavior in the number of units typed in!) * When a nonconformable units error is given list units the user might have meant (e.g. britainpound for pound) by a conformability check and string pattern match of some sort. "spelling advice" * Allow some way of having units like '$' that don't require a trailing space so you can write '$5'. This could be handled by having a command in the units database that specifies units which automatically get a space inserted after their name. * Have a metacommand in the units datafile that specifies how plurals should be tried for this file. This would allow expansion into other languages. (Of course, the real work of expanding into other languages is writing a units file that is appropriate for the language in question and includes local units. It's not just a translation task.) Another thing that could be accomplished here would be translation of English words like "cubic" and "per" into their symbolic meanings. A command in the units file could indicate that "per" should be substituted into a '/' and "cubic" means the cube the next unit. As it stands, "per" is hard coded into the parser. * Represent uncertainties in values in the database. Acknowledgements ================ This program owes a lot to Jeff Conrad who made many helpful suggestions, found numerous bugs, and helped me to find the definitions of obscure units. Chris Madsen also made some valuable contributions. The documentation has greatly benefited from the suggestions made by Robert Chassell who kindly read several drafts. The following people have been particularly helpful in fixing portability problems: Kaveh Ghazi, Eric Backus, and Marcus Daniels. Bug reports and suggestions for improvements should be sent to the author: Adrian Mariano (adrianm@gnu.org). units-2.19/setvcvars.sh0000664000175000017500000000631112722427650014453 0ustar adrianadrian# set MKS Korn shell environment variables for MS Visual Studio 2015 # # Copyright (C) 2016 Free Software Foundation, Inc # Microsoft Visual Studio requires that several environment variables # include many directories if a build is to be done from the command # line. These variables are normally set by selecting 'Developer # Command Prompt' on the Windows Start Menu; the shortcut runs a batch # file that calls several other batch files to set the variables before # launching an instance of the Windows command interpreter. This # program calls the Windows command interpreter to run the batch file; # the resulting values of the variables are echoed and read into the # shell to set the variables in the shell. For the values to persist, # this program must be run in the current environment, i.e., # # source setvcvars # # or # # . setvcvars # # # 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 3 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 program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110- # 1301 USA # # # This program was written by Jeff Conrad (jeff_conrad@msn.com), and # tested with the MKS Toolkit version 10.0 and Microsoft Visual Studio # 2015 on Windows 10 Professional. # variables needed for Visual Studio 2015 envvars='PATH=|INCLUDE=|LIB=|PATH=' # batch file: this value is installation and version dependent--adjust # as needed. It should be the shortcut on the Start Menu for 'Developer # Command Prompt' vsbatfile="C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Tools\VsDevCmd.bat" # don't set the variables twice, because new values are added to previous values if test "$VCVARSSET" != "" then echo "VC variables already set" elif test ! -e "$vsbatfile" then echo "cannot find Command Prompt batch file '$vsbatfile'" elif test -z "$ComSpec" then echo "no path to command interpreter: ComSpec not set" elif test ! -e "$ComSpec" then print -r "cannot find command interpreter '$ComSpec'" elif test ! -x "$ComSpec" # this should never happen ... then print -r "cannot run command interpreter '$ComSpec'" else OPATH="$PATH" # turn off echoing with /q eval `$ComSpec /q < Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) 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 3 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 program. If not, see . Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: Copyright (C) This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an "about box". You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . units-2.19/units.rc0000664000175000017500000000004412324067720013560 0ustar adrianadrianunitsprogicon ICON "unitsprog.ico"