Compare commits

..

6 Commits

Author SHA1 Message Date
henrit
e50c7a6de8 ECMA compliant Math object.
git-svn-id: svn://10.0.0.236/branches/jsmath_henrit@3974 18797224-902f-48f8-a5cc-f745e15eee43
1998-06-17 14:56:25 +00:00
henrit
0e59d9a6a0 ECMA compliant Math object
git-svn-id: svn://10.0.0.236/branches/jsmath_henrit@3972 18797224-902f-48f8-a5cc-f745e15eee43
1998-06-17 14:47:15 +00:00
henrit
ed2ac58da0 ECMA compliant Math object
git-svn-id: svn://10.0.0.236/branches/jsmath_henrit@3970 18797224-902f-48f8-a5cc-f745e15eee43
1998-06-17 14:40:48 +00:00
henrit
a9328119cb ECMA compliant Math object
git-svn-id: svn://10.0.0.236/branches/jsmath_henrit@3969 18797224-902f-48f8-a5cc-f745e15eee43
1998-06-17 14:29:21 +00:00
henrit
16be25fcbf ECMA compliant Math object.
git-svn-id: svn://10.0.0.236/branches/jsmath_henrit@3968 18797224-902f-48f8-a5cc-f745e15eee43
1998-06-17 14:06:16 +00:00
(no author)
b4d0709d23 This commit was manufactured by cvs2svn to create branch 'jsmath_henrit'.
git-svn-id: svn://10.0.0.236/branches/jsmath_henrit@3951 18797224-902f-48f8-a5cc-f745e15eee43
1998-06-16 23:10:58 +00:00
621 changed files with 88051 additions and 97981 deletions

452
mozilla/js/ref/ChangeLog Normal file
View File

@@ -0,0 +1,452 @@
Tag JSREF_RELEASE_19980414 (4/14/98):
- RegExp unicode fix.
- Added new iterator-style JSObjectOps enumeration API for host objects.
See jspubtd.h for details.
Tag JSREF_RELEASE_19980413 (4/13/98):
- Date fixes:
- ECMAv1 fix: fixed function length for Date setters.
- Bug workaround: avoid MSVC optimizer bug in Date.
- Y2K fix: Use the verbose '%#c' date formatter for toLocaleString
on windows, to get a 4 digit date.
- New thread safety fixes from bjorn:
- Added more asserts to catch cases where the thread
identifier stored in the context is out of synch with the current
thread. JS_ATOMIC_ADDREF now calls a function instead of a
macro, so that when compare-and-swap is implemented using busy-wait
(e.g. SPARC v8), we avoid being confused by the busy value. For the same
reason, we now call AtomicRead at certain places in jslock.c. Finally, the
environment variable JS_NO_THIN_LOCKS, when set, effectively turns off
the thin locks so that all locking is done using NSPR only.
- ECMAv1 numeric fixes: print preceding 0 when formatting 0.4, ignore supplied
radix to Number.prototype.toString when printing non-finite numbers.
Tag JSREF_RELEASE_19980403 (4/3/98):
- API renaming: JS_NewRuntime for JS_Init, JS_DestroyRuntime for JS_Finish
(the old names are maintained for backward binary compatibility; the new
names are macros).
- Improved JS_THREADSAFE locking, with compare-and-swap based optimization of
the uncontested lock and unlock cases to avoid DLL-crossing and worse native
OS locking overhead.
The Request/GC interlock enforced by JS_BeginRequest, JS_EndRequest, JS_GC,
and JS_MaybeGC allows requests on the same cx to nest (JS_BeginRequest may
be called more than once before JS_EndRequest, so long as the number of End
calls matches the number of Begin calls).
Thread-safety for prarena.c and prdtoa.c, based on jslock.h/JS_THREADSAFE.
- Experimental JS exception implementation, subject to change. Any value may
be thrown. The catch expression must be of the form (v) or (var v). Catch
code must re-throw as there is no way yet for the compiler to decide that no
catch clause matched (and more than one catch clause makes no sense, yet --
no finally yet, either).
- JS_ConvertArguments API addition, for converting an argc/argv pair according
to a simplified scanf-like format string.
- JS_GetPropertyAttributes and JS_SetPropertyAttributes API additions, which
take C-string property names (Unicode string and indexed elements TBD).
- JS_CloneFunctionObject, for server-like environments where code (functions)
should be shared in a prototype object, but data (global variables) must be
per request in a set of objects, one per concurrent request. You load the
functions in the prototype, then "fault them in" on demand via the request
object's resolve hook, using JS_CloneFunctionObject to make a lightweight
copy that has the right scope (__parent__) link.
- Whacked js.c (more whacking needed) so it uses fewer secret js_* calls and
more JS PUBLIC/FRIEND API entry points.
- Simplified Windows MSDEV build regime to use js.mak/mdp only, which builds
the DLL as a sub-project, then compiles js.c and links the JS shell.
- Fix a lying comment about JS_AddRoot in README (which is being turned into a
real "JS API tutorial" document, due soon).
- Better error reporting for an operand that does not convert to function, and
spiffed up the decompiler (jsopcode.c) to remove hardwired opcode lengths.
- Atom indexing does not abuse the atom's next link and a flags bit, which had
been done in haste long ago (and not fixed till now), but which required that
compilation be single-threaded throughout a runtime.
- ECMAv2 change: undefined is a top-level property with undefined value (it may
be overwritten or deleted by a script).
- ECMAv1 fix: arguments is implemented as a separate object from Call, but with
Netscape extensions (callee, caller).
- ECMAv1 fix: array length and indexes are uint32.
- ECMAv1 fixes enabled by major overhaul of the compiler to generate a tree of
parse-node structures and generate code from it. The bugs had to do with the
order of evaluation and conversion in for/in loop and assignment expressions.
This change also moved the "quickening" for name-to-arg/var-slot bytecodes
from the interpreter to the compiler.
- Proposed ECMAv2 toSource method, which produces compilable object and array
initializers and new expressions to reconstruct a given graph.
- Proposed ECMAv2 instanceof operator, based on hasInstance JSObjectOp and
(for maximum code-sharing among native object classes, with one exception)
JSClass methods. There is also js_IsDelegate, for checking whether a given
object is a prototype of another.
- To-be-proposed ECMAv2 in operator, inspired by for/in loop syntax: ('p' in o)
for o = {p:1} is true; (1 in o) for o[1] defined (even with value undefined)
is true. Note distinction between typeof o.p == "undefined" and ('p' in o).
- XDR (eXternal Data Representation) code to support Script.prototype.freeze
and Script.thaw/Script.prototype.thaw. You can store a persistent, portable
encoding of a script (including its top-level functions and all their kids)
and load it later.
Exception "try-notes" are not currently XDR'd; this will be fixed next time.
- Recent GC bugs mentioned in snews://secnews.netscape.com/netscape.dev.jsref
have been fixed. The patches were posted already; this tarball rolls them
up along with other fixes and improvements. We've had help from Netscape's
Application Products Division in stress-testing this release; we are pretty
confident that JS_THREADSAFE GC and request execution work well.
One new fix: finalizers are run without the GC lock held, to allow them to
call JS_RemoveRoot and otherwise to avoid AB-BA deadlocks.
- Call and construct are now optional methods in JSObjectOps and JSClass. The
hack of converting a regexp to a function is no longer necessary, and script
callability (shorthand for script.exec) uses the JSClass call hook likewise.
- Fixed standard class bootstrapping bug that left an extra Object instance
in the middle of the prototype chain for Date, RegExp, etc. (all but Object
and Function) instances.
- String.prototype.split ECMAv1 conformance restoration (split-by-empty-string
was stupidly broken last time).
Tag JSREF_RELEASE_19980219 (2/16/98):
- Fixed very recent i++ (for undefined i) crash-bug (also prior, longstanding
bug where i++ for undefined i resulted in NaN).
- ECMA conformance for [[DefaultValue]] (8.6.2.6), ToBoolean (9.2), and null
(default) this-parameter handling (10.2.3).
- New bytecodes paving the way for ECMA-conformant for/in loops and unqualified
name assignment.
- JS1.2 String.prototype.replace did not emulate Perl4's expansion of $` to be
the global left context (not from last local match). Essentially the same
bug bit replace for the empty-string global match case, which "bumps along"
by one character, but failed to include that character in local left context
(so "abc".replace(/ */g, 'X') produced "XXXX" instead of "XaXbXcX").
- Fix recent regression that clamped String.prototype.split's limit argument at
the subject string's length.
- Fixed type mismatch problems in #if !JS_HAS_REGEXPS code.
Tag JSREF_RELEASE_19980216 (2/16/98):
- Fixed stuck GC lock by adding JS_UNLOCK_GC at the bottom of js_GC.
Tag JSREF_RELEASE_19980213 (2/13/98):
- Add JS_ShutDown API, which must be called after all JSRuntimes have been
destroyed by JS_Finish calls, and from a single thread, when shutting down
or restarting the program in which JSRef is embedded. This is needed to
avoid leaking the deflated_string_cache and (JS_THREADSAFE only) lock.
Tag JSREF_RELEASE_19980212 (2/12/98):
- Finer-grained locking. Instead of one big, reentrant lock around the entire
runtime, there are distinct locks:
- The non-reentrant runtime lock, a binary semaphore to protect the runtime's
contextList and other members.
- An atom state lock used only in jsatom.c for a thread-safe internal atom
table API. This lock is never held while calling out from jsatom.c to
other modules that may acquire locks, and no caller into jsatom.c's lock-
acquiring entry points does so while holding a lock of its own (the GC
calls non-locking entry points only).
- A lock and pair of condition variables for interlocking GC execution with
script execution. The GC may run only when no script requests are running,
or when at most one is running and it has invoked the GC from its branch
callback. The new JS_SetGCCallback API may be used to supply a function to
be called at the beginning and end of GC -- if called at the beginning, a
false return value will cancel the GC run.
- A reentrant lock per native object map (scope) to protect the JSScope and
its parts (JSProperty, JSSymbol, and PRHashTable structures) as well as the
slots vectors of all instances sharing the scope (the prototype object and
any unmutated clones of it).
The model jslock.c and jslock.h provided include four new header files that
are not yet supplied with JSRef:
- pratomic.h for PR_COMPARE_AND_SWAP_WORDS and PR_COMPARE_AND_SWAP_INT32
macros that take an address, an old value, and a new value, and return true
if the old value is at the address, in which case the new value is atomicly
stored there; and return false without changing memory otherwise.
- prcvar.h for the PRCondVar condition variable type and its operations (New,
Destroy, Wait, Notify, and NotifyAll).
- prlock.h for the PRLock binary semaphore type and its operations (New,
Destroy, Lock, and Unlock).
More lock overhead and lock-free synchronization optimizations are coming in
a future JSRef release. In anticipation of these changes, the JS_THREADSAFE
version of JS_GetClass now requires an initial JSContext *cx argument along
with JSObject *obj.
- New String.prototype.replace feature: a function expression may be passed
as the second argument, in which case it will be invoked with the match and
parenthesized submatch strings as arguments, followed by input and index
(these are come from the extended array returned by RegExp.prototype.exec and
String.prototype.match).
This "lambda replacement" approximates Perl's s///e flag; the idea came from
Mike Shaver (shaver@netscape.com). Here's a example function that replaces
any number with an F after it (for Fahrenheit) with its Celsius conversion:
// f2c("32F, 212F, or 0F") => "0C, 100C, or -17.77777777777778C"
function f2c(x) {
var s = String(x)
return s.replace(/(\d+(\.\d*)?)F\b/g,
function ($0,$1,$2) { return (($1-32) * 5/9) + "C" })
}
- First-character discrimination optimization for regular expressions, plus a
fix to anchor-search for \b and \B.
- A first-class Script object to decompose eval into its compile and exec parts
(so you can compile outside a long loop, then exec in the loop body to avoid
recompiling invariant source). See jsscript.c.
- More ECMA fixes:
- bitwise logical and shift operators use the correct ECMA type conversions,
intermediate types, and boundary behavior.
- Array.prototype.push emulates Perl5 for JS versions other than 1.2; there
it emulated Perl4, except when no arguments were passed (it would return
the array object bound to this in that case; fixed to return undefined).
- All generic Array methods now update a length property, in case no such
property existed in the object that delegates to Array.prototype, or that
refers to the particular method.
- Except for JS1.2, Array.prototype.splice always returns an array, even when
given no arguments or a zero-length slice. JS1.2 compatibility continues.
- NaN Date fixes.
- JSFunctionSpec's nargs member now species the "best arity" of the function,
which ECMA specifies as the value of the function's length property. So to
allocate local GC roots, use the new extra member of JSFunctionSpec and let
nargs count only the minimum or optimum number of desired arguments.
- Relational and equality operator fixes too gnarly and subtle to describe
here, affecting mainly the hint argument (or lack of it) to valueOf.
- A new JS_IsConstructing API and underlying support, so ECMA [[Call]] and
[[Construct]] can be distinguished.
- A JS_InitClass extension to tolerate NULL for the constructor native C
function argument -- this causes a class like Math to be created, where
the class object is not callable or constructable.
- Fixes to handle non-finite indexes in several string and array methods.
- A high-level object operation dispatch table has been added. See JSObjectOps
in jsapi.h, and the new flags and function pointers in JSClass. To provide a
table of object operations, your class should set the JSCLASS_HAS_OBJECTOPS
flag and implement the getObjectOps class method, returning the address of a
static or otherwise appropriate-lifetime JSObjectOps structure. The methods
in this struct will be specified in a forthcoming version of the JS API doc.
The JSCLASS_NEW_ENUMERATE flag can be used without adding getObjectOps to
your class, to say that its enumerate method returns a JSIdArray containing
all lazy and eager property ids for an object, instead of having to define
all lazily-bound properties in the object, to minimize locking and reduce
the space cost of old-style enumerate.
- Atoms are now garbage-collected. To clarify the fact that symbol table ids
are either tagged jsval-like integers, or else JSAtom pointers, a new typedef
called jsid (equivalent to jsval in C) has been introduced.
- Major changes to remove JSProperty's object member, in order to optimize for
space. These mostly entail an extra &obj2 or &pobj result parameter being
passed to js_FindProperty, js_LookupProperty, etc., to capture the prototype
or original object in which the property was found.
- Updated Windows MSDEV makefiles to support MSDEV5.0 as well as 4.2:
- js32.mak, an NMAKE makefile, builds js32.dll
- jsshell.mak, an NMAKE makefile, now recursively invokes js32.mak to build
js32.dll
- jsshelld.mak and jsshelld.mdp, collectively a 4.2 IDE project, build
jsshell.exe and have a subproject that builds js32.dll. These two project
files are not derived from the other .mak files, nor are the other .mak
files derived from them.
- JS_PUBLIC_API etc. macros in jspubtd.h, used by jsapi.h and a few other .h
files, to optimize linkage within the Windows DLL.
Tag JSREF_RELEASE_19971128 (11/28/97):
- Major Unicode changes. JSString has a jschar *chars member now, not
char *bytes; it points to a counted array of uint16 (jschar) elements.
The scanner handles \uXXXX escapes; so does the regular expression parser.
JS_GetStringBytes(str) now returns the ISO-Latin-1 counterpart of str's
Unicode sequence by decimating into separate memory whose lifetime matches
that of str->chars. The API entry points taking char *name or char *base
arguments now have UC counterparts (except for the JS_*Property entries)
that take jschar *name, size_t length or similar argument-pairs. There is
a new JS_ValueToUint16 API entry for converting from a jsval to a Unicode
code point.
- The beginnings of JavaScript 1.3 version support, including === and !== for
equality by type and value identity, and sharp variables (see below).
- Linux support from Mike Shaver (shaver@ingenia.ca, shaver@netscape.com) in
config/Linux_All.mk. OS/2 ifdefs from IBM (initials DSR?), via Dan Libby
(danda@netscape.com).
- A new gc command in the js shell for testing, useful in conjunction with
the GC_MARK_DEBUG ifdef'd code in jsgc.c and js.c to plug leaks and find
stuck references. Use the new API entry point JS_AddNamedRoot in preference
to JS_AddRoot, which still exists but provides no debugging name for the GC
thing graph root that it establishes. See also JS_DumpNamedRoots.
- JSCLASS_NEW_RESOLVE flag and JSNewResolveOp function pointer typedef, for
more efficient unbound name resolution.
- Sharp variables (based on Common Lisp's dispatching macros of the same form)
for expressing cycles and join-points in object graphs created by object and
array initializers. For example,
#1={p:#2={q:42}, r:{cycle:#1#, joinPoint:#2#}}
creates an object, call it o, where o.p and o.r.joinPoint both reach the same
object, which has a property named q with value 42; and o.r.cycle is o.
In a future release, the final JS1.3 version will return object and array
initializer strings from {Object,Array}.prototype.toSource methods, rather
than toString, for ECMA and backward compatibility.
- More ECMA conformance fixes, apart from Unicode:
- New ECMA-conformant jsdate.c by Mike McCabe (mccabe@netscape.com).
- Improved equality and relational operator implementations.
- Correct division operator result sign.
- The unary-plus operator.
- NaN and Infinity top-level properties.
- Setting a read-only property fails silently, rather than stopping the
script with an error report.
- Deleting a permanent property fails with a false return from the delete
operator. If the property is not in the object addressed in the delete
expression, or it is successfully deleted, the expression results in true.
- The beginnings of finer-grained, non-nesting/low-level locking in jslock.h,
used in jsstr.c for the deflated_string_cache_lock. For this version, you
need to provide a PRLock typedef and PR_NewLock, PR_DestroyLock, PR_Lock,
and PR_Unlock functions that implement a binary semaphore.
- Performance improvements based on aggressive, coherent use of the property
cache (part of the JSRuntime structure). This required a fix to restore a
watchpoint associated with a deleted property when a new property with the
same identifier is created in the same object.
- Regular expression bugfixes and Unicode extensions in jsregexp.c and jsstr.c.
- Fixed Perl bug where \xZ or similar was translated to "\0Z".
- Fixed another Perl bug where [x-\d] matched {'x', '-', '0', ... '9'} but
[\d-x] matched only the digits. The second is now equivalent to the first.
- Fixed JS bug where only $1 through $9 could be used in the replacement
string passed to String.prototype.replace. Also allow literal $ in the
replacement string if it is preceded by \ (as a JS literal: "\\$").
- Fixed non-JS1.2 versions to return left context from start of global match
instead of from end of last local match (Perl4 had a similar bug which 1.2
emulated too much). This alters "$`" expansion in replacement strings.
Tag JSREF_1_14_RELEASE (around 7/22/97):
- JSTaskState and related API entry point names have been renamed to use the
trendier "Runtime" rather than "TaskState", ditto rt or runtime for task.
- JS_GetScriptPrincipals is no longer in jsapi.h, it moved to jsdbgapi.h and
has a new interface that takes the JSScript * being queried. It therefore
requires JS_FrameIterator and JS_GetFrameScript.
- JS_LockGCThing/JS_UnlockGCThing and their macro wrappers JSVAL_LOCK/UNLOCK
are deprecated as of now. Use JS_AddRoot to register a pointer to the thing
you would lock, and clear the pointer and/or JS_RemoveRoot its address later
to unlock the thing. I would like to remove GC thing-locking in a future
release; it precludes too many alternative GC implementations.
- ECMA conformant Date API, including get/setFullYear and the UTC variants
to all the get/set methods.
- ECMA conformant Number.MIN_VALUE, which is the smallest denorm now, not
the smallest normal as in all past JS versions.
- ECMA comformant isFinite() function.
- ECMA signed 0 and NaN number to string conversions.
- Watcom (__WATCOMC__) support for PC builds.
Quick update (4/27/97):
- Prototypes are no longer constructed in JS_InitClass. If you want a class
prototype to be constructed by the native 'constructor' function passed to
JS_InitClass, you can save JS_InitClass's return value and do it yourself:
proto = JS_InitClass(...);
ok = JS_CallFunctionName(cx, proto, "constructor", argc, argc, &rval);
- Object, array, and function literals are supported on input for JS_VERSION
1.2 at compile-time. Only for JS_SetVersion(cx, JSVERSION_1_2) at runtime:
object.toString() returns an object literal, likewise for array.toString,
and function.toString returns an anonymous function literall (rather than
the definition of a function named "anonymous") for functions created using
new Function(...).
- Final RegExp API: regexp.exec and string.match always return null on mismatch
(not -1), and always return a match array on match (whether parens matched or
not). The match array's 0'th element is the matching string, and any paren
submatches are in elements 1..N. The index and input properties can be used
to find left and right context without resort to the RegExp.leftContext and
RegExp.rightContext statics:
leftContext = match.input.substring(0, match.input.index)
rightContext = match.input.substring(match.input.index + match[0].length)
- A JS_MaybeGC entry point in the API, safe to use from branch callbacks (well
tested) and arbitrary preemption points (not so well tested) when garbage may
be piling up, but a forced GC (JS_GC) is not desirable.
- Various bugfixes and improvements.
Newer news (3/18/97):
- Regular expressions a la Perl are supported.
- Perl array methods push, pop, shift, unshift, and splice are supported.
- Perl substr, with its righteous interpretation of negative offset, is also
now supported.
- Lexical closures a la Scheme are supported. See ycomb.js.
- Property caching and other performance improvements have been added.
- Mac CodeWarrior JSRef.prj and MacPrefix.h files are now bundled.
- Windows MSDEV4.2 .mak and .mdp files bundled.
- The 32-bit Windows version of prcpucfg.h is shipped; on Unix platforms, you
should remove this file or set it aside and let gmake generate the right one
for your host architecture.
- Classes whose objects have private data (JS_SetPrivate/JS_GetPrivate) must
flag that fact with the JSCLASS_HAS_PRIVATE flag in their JSClass structs.
- There are also two new property ops in JSClass, addProperty and delProperty.
News flashes (12/31/96):
- Define JS_THREADSAFE and write code in jslock.c for multi-threaded JS.
- NOTE: JS_EvaluateScript and JS_ExecuteScript no longer return a JSVAL_LOCKed
result in *rval -- this was never safe in a multithreaded environment, when
*rval referred to an object tree of depth > 1, because a preempting GC run
could reclaim the unrooted, descendent objects. Instead, callers of these
API entry points must use JS_AddRoot and JS_RemoveRoot to maintain the rval
pointer argument in the GC's root set. See JS_AddRoot comments below.
- Labeled statements and break and continue to label a la Java are supported.
- The switch statement is now supported. You can switch on any primitive type
value (number, string, boolean).
- Numerous performance enhancements, notably the quick ops at the bottom of
jsopcode.def, have been made.

BIN
mozilla/js/ref/JSRef.prj Normal file

Binary file not shown.

View File

@@ -0,0 +1,397 @@
(This file must be converted with BinHex 4.0)
:#8T68Q9Q,R"bDJ"069"53eG*43#3"$b`!!!l48dqBfp[E!#3!`%!N!-F!!!m4!!
!2'!!N!03!*!$"!#3!fJ!!J!`!!)!+!j"6P0*)%aTBR*KFQPPFcTSrrG!!!8!N!F
'!*!+!J)!-!#3!bJ06@&M)%aTBR*KFQPPF`"SD2rh3!!'!*!("`#3#`)!N!8S$8e
KBb"-D@*bBA*TCA-!D'Mrpd!!"J#3"`F!N!3XV!!!$FN!N!FS$8eKBb"-D@*bBA*
TCA-!D'Mrpd!!"J#3"`F!N"%S$8eKBb"-D@*bBA*TCA-!D'Mrpd!!"J#3"`F!N!i
#23)rIrm!k`!$!!!NX!!P!%J$j`!"!!%!N!J#!3#3""""6P0*)%-V+bj38%-Z6'P
L!*!B!3#3"J'H!D!!N!-X!!%!N!F"3J%!N!3(DR0KF'NZB`#3)3F!N!G!Vb#b"`!
"!#@[),)(!!%!,+mJXJF!!3!eVb#b"`!"!#L[),)(!!%!+DmJXJF!!3!RVb#b"`!
"!#D[),)'!!%!-+p+,rN!!3!bVc#$h!!"!$1[3"rA!!%!0kmS[-3!!3!jVd!Ie`!
"!$L[0VlQ!!%!3DmS[-X!!3"#Vc#c(!!"!%@[-J9C!!%!2+m`Jq!!!3!pVdS[q`!
"!%D[3"rC!!%!4kmS[0d!!3")Vd!IfJ!"!%Q[1G9+!!%!4+p-rSS!!3"$Vd5Pi!!
"!%U[+,cT!!%!0Up8QVX!!3!aVc#$i`!"!$k[9*Um!!%!5kp%TH)!!3"-Vc#$j!!
"!%f[4+AM!!%!2kp+,rm!!3"IVdd&eJ!"!#f[-)2Q!!%!,UmS[33!!3![VbLp"3!
"!#U[+,d'!!%!0+mS[3d!!3!kVbLp%3!"!'#[+,d6!!%!1kmS[43!!3!VVbLp(J!
"!9i"B!#3!b3!!3#3"`&#!3#3"!PUFf&bFQ&j,Q-!N"m)!*!(3+mJXJF!!3!PVb#
b"`!"!#b[),)(!!%!0DmJXJF!!3!SVb#b"`!"!#Q[),)(!!%!*kmJXJF!!3!QVb#
b"J!"!$#[5Lrj!!%!-Um`Jp`!!3!cVd!Ie`!"!$Q[3"rA!!%!1+mf[ZB!!3"&Vc)
&@3!"!$b[-)2J!!%!2Dp+,rX!!3"'Vd!If3!"!%L[3"rD!!%!5Dmje8S!!3!fVe5
DZ`!"!$'[-)2M!!%!2Up8QV`!!3"-Vc#$j!!"!$q[5Lrr!!%!Akp0"GB!!3!YVc#
$jJ!"!#k[+,d%!!%!,kmS[38!!3!UVbLp"J!"!$5[+,d0!!%!1UmS[4%!!3"JVbL
p%`!"!$Z[+,d8!!%!6UmS[4J!!3!VVbLp(J!"!6B"1!#3!am!!3#3"`%b!3#3"!K
UFf&dEfdZB`#3)!N!N!G!Vb#b"`!"!#b[),)(!!%!0DmJXJF!!3!SVb#b"`!"!#Q
[),)(!!%!*kmJXJF!!3!`VdS[q3!"!$1[3"rA!!%!1Dp!(pF!!3!iVcDqjJ!"!$b
[-)2J!!%!2Dp+,rX!!3"'Vd!If3!"!%L[3"rD!!%!4+p-rSS!!3"$Vd5Pi!!"!$D
[9*Ul!!%!-Dm`Jq-!!3!qVe5D[!!"!$q[5Lrr!!%!Akp0"GB!!3!YVc#$jJ!"!#k
[+,d%!!%!,kmS[38!!3!UVbLp"J!"!$5[+,d0!!%!1UmS[4%!!3"JVbLp%`!"!$Z
[+,d8!!%!+kmS[4i!!3%Q!5J!N!-G!!%!N!F"3J%!N!3)DR0LEfpX,Q-!N#!+!*!
(3+mJXJF!!3!XVb#b"`!"!$@[),)(!!%!++mJXJF!!3!TVb#b"`!"!#H[),)(!!%
!-+p+,rN!!3!cVd!Ie`!"!$H[+,c%!!%!1Dp!(pF!!3!mVc#$i!!"!$f[5Lrl!!%
!4Up!(pN!!3")Vd!IfJ!"!%Q[1G9+!!%!0Up8QVX!!3!aVc#$i`!"!$k[9*Um!!%
!2kp+,rm!!3"IVdd&eJ!"!#f[-)2Q!!%!,kmS[38!!3!UVbLp"J!"!$5[+,d0!!%
!1UmS[4%!!3"JVbLp%`!"!$Z[+,d8!!%!+kmS[4i!!3&1!9!!N!-L!!%!N!F"3J%
!N!3*DR0MER4iG#jM!*!I#`#3"d#[),)(!!%!*DmJXJF!!3!XVb#b"`!"!$@[),)
(!!%!++mJXJF!!3!TVb#b"`!"!#H[),)(!!%!*UmJXJB!!3!`VdS[q3!"!$1[3"r
A!!%!1Dp!(pF!!3!mVc#$i!!"!$f[5Lrl!!%!5Dmje8S!!3"%VdcqLJ!"!%1[4+A
J!!%!0Up8QVX!!3!aVc#$i`!"!$k[9*Um!!%!5kp%TH)!!3"0Vd5Pi`!"!$q[5Lr
r!!%!Akp0"GB!!3!YVc#$jJ!"!#k[+,d%!!%!,kmS[38!!3!UVbLp"J!"!$5[+,d
0!!%!1UmS[4%!!3"JVbLp%`!"!$Z[+,d8!!%!6UmS[4J!!3!VVbLp(J!"!8B"5!#
3!b%!!3#3"`%b!3#3"!KUFf4KG'8ZB`#3)!`!N!G!Vb#b"`!"!#@[),)(!!%!,+m
JXJF!!3!eVb#b"`!"!#L[),)(!!%!+DmJXJF!!3"3Vb#b"`!"!#H[),)(!!%!*Um
JXJB!!3!`VdS[q3!"!$1[3"rA!!%!1Dp!(pF!!3""VbLmb`!"!$b[-)2J!!%!2Dp
+,rX!!3")Vd!IfJ!"!%Q[1G9+!!%!0Up8QVX!!3!aVc#$i`!"!$k[9*Um!!%!2kp
+,rm!!3"IVdd&eJ!"!#f[-)2Q!!%!,kmS[38!!3!UVbLp"J!"!$5[+,d0!!%!1Um
S[4%!!3"JVbLp%`!"!$Z[+,d8!!%!6UmS[4J!!3"2Vdd&6`!"!#Z[+,dH!!%"KJ'
)!*!$+3!"!*!(!6)"!*!%"'Tc,Q-!N#4V!*!(3+mJXJF!!3"AVb#b"`!"!#@[),)
(!!%!,+mJXJF!!3!eVb#b"`!"!#L[),)(!!%!+DmJXJF!!3!RVb#b"`!"!#D[),)
'!!%!-+p+,rN!!3!cVd!Ie`!"!$Q[3"rA!!%!8Dmf[ZF!!3"#Vc#c(!!"!%@[-J9
C!!%!2+m`Jq!!!3!pVdS[q`!"!%D[3"rC!!%!5Dmje8S!!3"%VdcqLJ!"!%1[4+A
J!!%!5UmS[1N!!3!fVe5DZ`!"!$'[-)2M!!%!2Up8QV`!!3",Vd5PiJ!"!%b[-)2
N!!%!6Dp%TH-!!3!rVdS[r`!"!&q[63A@!!%!,Dm`JqB!!3!ZVbLp"!!"!#q[+,d
&!!%!+UmS[3B!!3!dVbLp$3!"!$U[+,d4!!%!B+mS[4-!!3!lVbLp&!!"!%k[+,d
B!!%!+kmS[4i!!3$f!2J!N!-A!!%!N!F"3J%!N!3+DR0NBQGKF'NZB`#3(Jd!N!G
!Vb#b"`!"!#b[),)(!!%!0DmJXJF!!3!TVb#b"`!"!#H[),)(!!%!-+p+,rN!!3!
cVd!Ie`!"!&'[0VlR!!%!2+m`Jq!!!3"*VcR95J!"!%5[62k+!!%!3kp%TH!!!3!
fVe5DZ`!"!$'[-)2M!!%!6+m`Jq3!!3"0Vd5Pi`!"!$q[5Lrr!!%!Akp0"GB!!3!
[VbLp"3!"!#U[+,d'!!%!0+mS[3d!!3!VVbLp(J!"!8B"5!#3!b%!!3#3"`&#!3#
3"!KUFf9YDA3ZB`#3)!i!N!G8Vb#b"`!"!%#[),)(!!%!8UmJXJF!!3"9Vb#b"`!
"!#b[),)(!!%!0DmJXJF!!3!SVb#b"`!"!#Q[),)(!!%!8kmJXJF!!3!RVb#b"`!
"!$#[5Lrj!!%!-kp!(pF!!3!jVd!Ie`!"!%+[-,-F!!%!2+m`Jq!!!3!pVdS[q`!
"!%5[62k+!!%!3kp%TH!!!3!fVe5DZ`!"!$'[-)2M!!%!2Up8QV`!!3!rVdS[r`!
"!&q[63A@!!%!,Dm`JqB!!3!ZVbLp"!!"!#q[+,d&!!%!+UmS[3B!!3!dVbLp$3!
"!$U[+,d4!!%!B+mS[4-!!3!lVbLp&!!"!#Z[+,dH!!%"EJ&`!*!$*J!"!*!(!8)
"!*!%"fTcCR9Z,Q-!N#%2!*!(3+mJXJF!!3!XVb#b"`!"!$@[),)(!!%!++mJXJF
!!3!TVb#b"`!"!#H[),)(!!%!-+p+,rN!!3!bVc#$h!!"!$1[3"rA!!%!1Dp!(pF
!!3!iVcDqjJ!"!%@[-J9C!!%!2+m`Jq!!!3!pVdS[q`!"!%D[3"rC!!%!5+p!(pS
!!3"*VcR95J!"!%5[62k+!!%!3kp%TH!!!3"+VbLmk3!"!$D[9*Ul!!%!-Dm`Jq-
!!3!qVe5D[!!"!%Z[4+AL!!%!6+m`Jq3!!3"0Vd5Pi`!"!$q[5Lrr!!%!Akp0"GB
!!3!YVc#$jJ!"!#k[+,d%!!%!,kmS[38!!3!UVbLp"J!"!$5[+,d0!!%!1UmS[4%
!!3"JVbLp%`!"!$Z[+,d8!!%!+kmS[4i!!3%Z!6!!N!-H!!%!N!F"3J%!N!3'DR0
RBbjM!*!L%!#3"d#[),)(!!%!,+mJXJF!!3!eVb#b"`!"!#L[),)(!!%!+DmJXJF
!!3!RVb#b"`!"!$#[5Lrj!!%!-kp!(pF!!3!jVd!Ie`!"!$b[-)2J!!%!2Dp+,rX
!!3"'Vd!If3!"!%L[3"rD!!%!5Dmje8S!!3!fVe5DZ`!"!$'[-)2M!!%!2Up8QV`
!!3"-Vc#$j!!"!$q[5Lrr!!%!Akp0"GB!!3!YVc#$jJ!"!#k[+,d%!!%!,kmS[38
!!3!UVbLp"J!"!$5[+,d0!!%!1UmS[4%!!3"JVbLp%`!"!$Z[+,d8!!%!+kmS[4i
!!3&Z!A!!N!-Q!!%!N!F"3J%!N!3+DR0TER4PFR!ZB`#3(K%!N!G!Vb#b"`!"!&D
[),)(!!%!,+mJXJF!!3!eVb#b"`!"!#L[),)(!!%!+DmJXJF!!3!RVb#b"`!"!$#
[5Lrj!!%!-kp!(pF!!3!hVbLma!!"!$Q[3"rA!!%!1+mf[ZB!!3"4VcDqj`!"!%@
[-J9C!!%!2+m`Jq!!!3!pVdS[q`!"!%D[3"rC!!%!5+p!(pS!!3"*VcR95J!"!%5
[62k+!!%!3kp%TH!!!3!fVe5DZ`!"!$'[-)2M!!%!2Up8QV`!!3"-Vc#$j!!"!%f
[4+AM!!%!2kp+,rm!!3"IVdd&eJ!"!#f[-)2Q!!%!,UmS[33!!3![VbLp"3!"!#U
[+,d'!!%!0+mS[3d!!3!kVbLp%3!"!'#[+,d6!!%!1kmS[43!!3!VVbLp(J!"!&B
!@!#3!`-!!3#3"`&#!3#3"!KUFfa[BfXZB`#3)")!N!G'Vd!If3!"!&q[63A@!!%
"0J%i!*!$(`!"!*!(!6)"!*!%#'TcE@&dD#jM!*!J%`#3"d#[),)(!!%!9UmJXJF
!!3!XVb#b"`!"!$@[),)(!!%!++mJXJF!!3!TVb#b"`!"!&#[),)(!!%!*kmJXJF
!!3!`VdS[q3!"!$1[3"rA!!%!1Dp!(pF!!3!mVc#$i!!"!$f[5Lrl!!%!4kmS[0d
!!3")Vd!IfJ!"!%Q[1G9+!!%!0Up8QVX!!3!aVc#$i`!"!$k[9*Um!!%!2kp+,rm
!!3"IVdd&eJ!"!#f[-)2Q!!%!,kmS[38!!3!UVbLp"J!"!$5[+,d0!!%!1UmS[4%
!!3"JVbLp%`!"!$Z[+,d8!!%!6kp0"8m!!3!VVbLp(J!"!@i"F!#3!bB!!3#3"`%
b!3#3"!GUFfjeE5jM!*!K&!#3"d#[),)(!!%!9kmJXJF!!3"BVb#b"`!"!&D[),)
(!!%!*DmJXJF!!3!XVb#b"`!"!$@[),)(!!%!++mJXJF!!3!TVb#b"`!"!#H[),)
(!!%!*UmJXJB!!3!`VdS[q3!"!$1[3"rA!!%!1Dp!(pF!!3!iVcDqjJ!"!$b[-)2
J!!%!2Dp+,rX!!3"'Vd!If3!"!%L[3"rD!!%!5Dmje8S!!3"%VdcqLJ!"!%1[4+A
J!!%!0Up8QVX!!3!aVc#$i`!"!$k[9*Um!!%!2kp+,rm!!3"IVdd&eJ!"!#f[-)2
Q!!%!,kmS[38!!3!UVbLp"J!"!&Q[+,d+!!%!0+mS[3d!!3!kVbLp%3!"!'#[+,d
6!!%!1kmS[43!!3"1VbLp'!!"!#Z[+,dH!!%"GJ&i!*!$*`!"!*!(!8)"!*!%"fT
cEf*U,Q-!N#%9!*!(3+mJXJF!!3!PVb#b"`!"!#b[),)(!!%!0DmJXJF!!3!SVb#
b"`!"!#Q[),)(!!%!*kmJXJF!!3!QVb#b"J!"!$#[5Lrj!!%!-kp!(pF!!3!hVbL
ma!!"!$Q[3"rA!!%!1+mf[ZB!!3"&Vc)&@3!"!$b[-)2J!!%!2Dp+,rX!!3"'Vd!
If3!"!%L[3"rD!!%!5Dmje8S!!3"%VdcqLJ!"!%1[4+AJ!!%!0Up8QVX!!3!aVc#
$i`!"!$k[9*Um!!%!6+m`Jq3!!3"0Vd5Pi`!"!$q[5Lrr!!%!Akp0"GB!!3!YVc#
$jJ!"!#k[+,d%!!%!,kmS[38!!3!UVbLp"J!"!$5[+,d0!!%!1UmS[4%!!3"JVbL
p%`!"!$Z[+,d8!!%!6UmS[4J!!3!VVbLp(J!"!CB"Q!#3!bX!!3#3"`&#!3#3"!T
UFfp`BfpNC5jM!*!H&J#3"e5[),)(!!%!3+mJXJF!!3"5Vb#b"`!"!&@[),)(!!%
!*DmJXJF!!3!XVb#b"`!"!$@[),)(!!%!++mJXJF!!3!TVb#b"`!"!&1[),)(!!%
!*kmJXJF!!3!QVb#b"J!"!$#[5Lrj!!%!-kp!(pF!!3!jVd!Ie`!"!$L[0VlQ!!%
!8Dmf[ZF!!3"#Vc#c(!!"!%@[-J9C!!%!2+m`Jq!!!3!pVdS[q`!"!%Q[1G9+!!%
!4+p-rSS!!3"$Vd5Pi!!"!$D[9*Ul!!%!-Dm`Jq-!!3!qVe5D[!!"!%b[-)2N!!%
!6Dp%TH-!!3!rVdS[r`!"!&q[63A@!!%!,Dm`JqB!!3!ZVbLp"!!"!#q[+,d&!!%
!+UmS[3B!!3"CVbLp#J!"!$5[+,d0!!%!1UmS[4%!!3"JVbLp%`!"!$Z[+,d8!!%
!6UmS[4J!!3!VVbLp(J!"!Ai"J!#3!bJ!!3#3"`&#!3#3"!PUFh"KFR0P,Q-!N"m
A!*!(3+mJXJF!!3!PVb#b"`!"!#b[),)(!!%!0DmJXJF!!3!SVb#b"`!"!#Q[),)
(!!%!*kmJXJF!!3!QVb#b"J!"!$#[5Lrj!!%!-kp!(pF!!3!jVd!Ie`!"!$L[0Vl
Q!!%!3Um`Xa`!!3"&Vc)&@3!"!$b[-)2J!!%!2Dp+,rX!!3"'Vd!If3!"!%Q[1G9
+!!%!4+p-rSS!!3"$Vd5Pi!!"!%U[+,cT!!%!0Up8QVX!!3!aVc#$i`!"!$k[9*U
m!!%!5kp%TH)!!3"-Vc#$j!!"!%f[4+AM!!%!2kp+,rm!!3"IVdd&eJ!"!#f[-)2
Q!!%!,UmS[33!!3![VbLp"3!"!#U[+,d'!!%!0+mS[3d!!3!kVbLp%3!"!'#[+,d
6!!%!1kmS[43!!3"1VbLp'!!"!#Z[+,dH!!%"4J&)!*!$)3!"!*!(!6)"!*!%#QT
cFQ9RCAK`,Q-!N"iB!*!(3+mJXJF!!3!XVb#b"`!"!$@[),)(!!%!++mJXJF!!3!
TVb#b"`!"!#H[),)(!!%!-+p+,rN!!3!bVc#$h!!"!$1[3"rA!!%!1Dp!(pF!!3!
iVcDqjJ!"!%@[-J9C!!%!2+m`Jq!!!3!pVdS[q`!"!%D[3"rC!!%!5Dmje8S!!3"
%VdcqLJ!"!%1[4+AJ!!%!0Up8QVX!!3!aVc#$i`!"!$k[9*Um!!%!2kp+,rm!!3"
IVdd&eJ!"!#f[-)2Q!!%!,UmS[33!!3![VbLp"3!"!#U[+,d'!!%!0+mS[3d!!3!
kVbLp%3!"!'#[+,d6!!%!1kmS[43!!3!VVbLp(J!"!Bi"N!!!N!-U!!%!N!F"-J%
!N!3)DR0cBf&Z,Q-!N#!C!*!(9+mJXJF!!3"!Vb#b"`!"!&H[),)(!!%!@+mJXJF
!!3"@Vb#b"`!"!&+[),)(!!%!9DmJXJF!!3!PVb#b"`!"!#b[),)(!!%!0DmJXJF
!!3!SVb#b"`!"!#Q[),)(!!%!8kmJXJF!!3!RVb#b"`!"!#D[),)'!!%!-+p+,rN
!!3!cVd!Ie`!"!$Q[3"rA!!%!1+mf[ZB!!3"#Vc#c(!!"!$b[-)2J!!%!2Dp+,rX
!!3"%VdcqLJ!"!%1[4+AJ!!%!0Up8QVX!!3!aVc#$i`!"!$k[9*Um!!%!5kp%TH)
!!3!rVdS[r`!"!&q[63A@!!%!,Dm`JqB!!3!ZVbLp"!!"!#q[+,d&!!%!+UmS[3B
!!3"CVbLp#J!"!$5[+,d0!!%!1UmS[4%!!3"JVbLp%`!"!$Z[+,d8!!%!6UmS[4J
!!3!VVbLp(J!"!5i"-!#3!ai!!3#3"`&#!3#3"!PUFh0MEh"P,Q-!N"mD!*!(3+m
JXJF!!3!XVb#b"`!"!$@[),)(!!%!++mJXJF!!3!TVb#b"`!"!#H[),)(!!%!-+p
+,rN!!3!cVd!Ie`!"!$Q[3"rA!!%!2+m`Jq!!!3!pVdS[q`!"!%D[3"rC!!%!5+p
!(pS!!3"*VcR95J!"!$D[9*Ul!!%!-Dm`Jq-!!3!qVe5D[!!"!%b[-)2N!!%!2kp
+,rm!!3"IVdd&eJ!"!#f[-)2Q!!%!,UmS[33!!3![VbLp"3!"!#U[+,d'!!%!0+m
S[3d!!3!kVbLp%3!"!'#[+,d6!!%!1kmS[43!!3!VVbLp(J!"!-i!d!#3!a)!!3#
3"`&#!3#3"!TUFh0MFQP`G#jM!*!H'`#3"bb[),)(!!%!0DmJXJF!!3!TVb#b"`!
"!#H[),)(!!%!-+p+,rN!!3!cVd!Ie`!"!&'[0VlR!!%!3Um`Xa`!!3"%VdcqLJ!
"!%1[4+AJ!!%!0Up8QVX!!3!aVc#$i`!"!%f[4+AM!!%!Akp0"GB!!3!UVbLp"J!
"!$5[+,d0!!%!+kmS[4i!!3&@!9J!N!-M!!%!N!F"3J%!N!3(DR0cG()ZB`#3)4`
!N!G!Vb#b"`!"!#@[),)(!!%!,+mJXJF!!3!eVb#b"`!"!#L[),)(!!%!+DmJXJF
!!3!RVb#b"`!"!#D[),)'!!%!-+p+,rN!!3!bVc#$h!!"!$1[3"rA!!%!0kmS[-3
!!3!jVd!Ie`!"!$L[0VlQ!!%!2+m`Jq!!!3!pVdS[q`!"!%D[3"rC!!%!5+p!(pS
!!3"*VcR95J!"!$D[9*Ul!!%!-Dm`Jq-!!3!qVe5D[!!"!$q[5Lrr!!%!Akp0"GB
!!3!YVc#$jJ!"!#k[+,d%!!%!,kmS[38!!3!UVbLp"J!"!$5[+,d0!!%!1UmS[4%
!!3"JVbLp%`!"!$Z[+,d8!!%!6UmS[4J!!3!VVbLp(J!"!)i!N!!!N!-+!!%!N!F
"-J%!N!3*F(*KFQ9ZB5jM!*!I(3#3"bb[),)(!!%!++mJXJF!!3!TVb#b"`!"!#H
[),)(!!%!Akp0"GB!!3!YVc#$jJ!"!#k[+,d%!!%!+UmS[3B!!3!VVbLp(J!"!)B
!L!#3!`N!!3#3"`&#!3#3"!T`FQ&cFf9bG#jM!*!H(J#3"bb[),)(!!%!0DmJXJF
!!3!SVb#b"`!"!#H[),)(!!%!Akp0"GB!!3!ZVbLp"!!"!#U[+,d'!!%!+kmS[4i
!!3#f!,J!N!-2!!%!N!F"3J%!N!3)F(*NG'pK,Q-!N#!I!*!(*DmJXJF!!3!XVb#
b"`!"!#H[),)(!!%!*UmJXJB!!3"FVb#b"`!"!&f[),)(!!%!Akp0"GB!!3"HVb#
b"`!"!#U[+,d'!!%!@DmS[3S!!3"1VbLp'!!"!#Z[+,dH!!%!@UmJXJF!!3"EVb#
b"`!"!*B!Q!#3!`X!!3#3"`&#!3#3"!K`FQKKFfJZB`#3)#!!N!FXVb#b"`!"!$@
[),)(!!%!++mJXJF!!3!TVb#b"`!"!#H[),)(!!%!Akp0"GB!!3!ZVbLp"!!"!#U
[+,d'!!%!0+mS[3d!!3!VVbLp(J!"!'i!F!#3!`B!!3#3"`&#!3#3"!K`FQa[Cc)
ZB`#3)#%!N!FXVb#b"`!"!#H[),)(!!%!Akp0"GB!!3!UVbLp"J!"!#Z[+,dH!!%
!TJ#S!*!$$3!"!*!(!8)"!*!%#("bE'pZCbjM!*!J)J#3"b@[),)(!!%!,+mJXJF
!!3!eVb#b"`!"!#H[),)(!!%!*UmJXJB!!3"IVdd&eJ!"!#U[+,d'!!%!1UmS[4%
!!3"JVbLp%`!"!$Z[+,d8!!%!6UmS[4J!!3!VVbLp(J!"!,i!`!#3!a!!!3#3"`&
#!3#3"!T`FR"bD@jdCLjM!*!H)`#3"b@[),)(!!%!,+mJXJF!!3!eVb#b"`!"!#L
[),)(!!%!+DmJXJF!!3!RVb#b"`!"!#D[),)'!!%!Akp0"GB!!3!ZVbLp"!!"!#U
[+,d'!!%!1UmS[4%!!3"JVbLp%`!"!$Z[+,d8!!%!6UmS[4J!!3!VVbLp(J!"!5B
"+!#3!ad!!3#3"`%b!3#3"!K`FR4TE@8ZB`#3)#3!N!G8Vb#b"`!"!'H[),)(!!%
!DDmJXJF!!3"QVb#b"`!"!&+[),)(!!%!9DmJXJF!!3"KVb#b"`!"!'5[),)(!!%
!CDmJXJF!!3"SVb#b"`!"!'1[),)(!!%!*DmJXJF!!3!XVb#b"`!"!#Q[),)(!!%
!BUmJXJF!!3"3Vb#b"`!"!'U[),)(!!%!8kmJXJF!!3!RVb#b"`!"!#D[),)'!!%
!Akp0"GB!!3!UVbLp"J!"!$U[+,d4!!%!B+mS[4-!!3!lVbLp&!!"!%k[+,dB!!%
!6kp0"8m!!3!VVbLp(J!"!%B!5!2R!!%!!3#3#!)"!*!%$N&18dNJ3bj38%-Z6'P
L!*!D!J#3"dB!5!2R!!%!!3#3#!)"!*!%$90*6e9B,P"33bj-D@)!N"X'!*!(4J"
)!qF!!3!#!*!)!J%!N!3-5@jdCA*QB@0P6'PL!*!F!`#3"dB!5!2R!!%!!J#3#!)
"!*!%"deKG'K-D@)!N#%%!*!(4J")!qF!!3!#!*!)!J%!N!3169G$8R9ZG'PYC5j
-D@)!N"S&!*!,!8!%!!%cE4""6P0*)%-V+bj38%-Z6'PL!*!2Vb#b#!'!69"-4Um
JXJJ!!N!%!!%cE3j"6P0*)%-Z8&"$,NaTBJ#3%DmJXJJ"J%e36%D[),))!!0!"!!
"-p!-5@jdCA*QB@0P6'PL!*!6Vb#b#!'!Fh4eBUmJXJJ!"%!%!!%ciJG0BA4S6'P
L!*!BVb#b#!'!FfKXBUmJXJJ!"8!%!!%dP!j09d05G@jdD@eP,NaTBJ#3%DmJXJJ
"J%e36%D[),))!!C!"!!"0,N08dP299JZ8&"$,NaTBJ#3%UmJXJJ"J%e36%D[),)
)!!F!!J!"0JN(DR0KF'NZB`#3'+p,$'3"J&4&@&5[5`aN!!J!!J!"0JN*DR0KFR*
KH5jM!*!@VdcqL3'!9%9B9+p-rSN!#3!#!!%f#3KUFf&dEfdZB`#3&kp0!pJ"J&4
&@&5[632B!!S!!J!"0JN)DR0LEfpX,Q-!N"H[1G9'!B"849K8VcR94J!,!!)!!6B
*#@TcBfjdH(3ZB`#3&Up,$'8"J&4&@&5[5`aP!!`!!J!"0JN)DR0NBA4P,Q-!N"H
[63VP!B"849K8Vdd+j3!0!!)!!6B*#QTcC'*RBA"T,Q-!N"@[0VlQ!B"849K8VcD
qjJ!1!!)!!6B*#'TcC@eTG#jM!*!AVcR94`'!9%9B9+mje8F!$`!#!!%f#3GUFfC
eELjM!*!BVe5DZJ'!9%9B9+p8QVS!%!!#!!%f#3CUFfGM,Q-!N"Q[9*Uk!B"849K
8Ve5DZJ!4!!)!!6B*#QTcD@jdCA*`,Q-!N"@[9*Ul!B"849K8Ve5DZ`!5!!)!!6B
*#'TcE'pMDbjM!*!AVbLmfJ'!9%9B9+mS[0S!%`!#!!%f#3KUFfeKG'JZB`#3&kp
0"&-"J&4&@&5[6346!"3!!J!"0JN(DR0ZG@dZB`#3'+p0"'B"J&4&@&5[634Q!"8
!!J!"0JN(DR0[BQSZB`#3'+p,$'B"J&4&@&5[5`aQ!"B!!J!"0JN+DR0[F'0[C'8
ZB`#3&Dp-rSS"J&4&@&5[62k+!"F!!J!"0JN*DR0`BA*cC5jM!*!@VdcqLJ'!9%9
B9+p-rSS!'!!#!!%f#3TUFh*PCf9iF#jM!*!9Ve5E(`'!9%9B9+p8Qam!'3!#!!%
f#3KUFh0MB@iZB`#3&kp0%h)"J&4&@&5[640b!"S!!J!"0JN*DR0cBfp`C5jM!*!
@Ve5D[3'!9%9B9+p8QVd!'`!#!!%f#3TUFh0MFQP`G#jM!*!9VdS[rJ'!9%9B9+p
+,ri!(!!#!!%f#3GUFh0dFLjM!*!BVe5D[J'!9%9B9+p8QVi!(3!#!!%f#3P`FQ&
bC@jK,Q-!N"D[6356!B"849K8Vdd%N`!H!!)!!6B*#R"bBA0cCA*d,Q-!N"@[+,d
"!B"849K8VbLp!3!I!!)!!6B*#("bC(4[B5jM!*!AVbLp#3'!9%9B9+mS[3N!)!!
#!!%f#3K`FQKKFfJZB`#3&kmje8`"J&4&@&5[1G9-!#%!!J!"0JN)F(*XEfFb,Q-
!N"H[+,d2!B"849K8VbLp$`!L!!)!!6B*#("bE'pZCbjM!*!AVbLp%!'!9%9B9+m
S[4!!)`!#!!%f#3T`FR"bD@jdCLjM!*!9VbLp&`'!9%9B9+mS[4F!*!!#!!%f#3K
`FR4TE@8ZB`#3&kp0$YN"J&4&@&5[63lC!#9!!J!",[i)Fh4NBA*R,QJ!N"H[),)
(!)"849K8Vb#b"`!Q3!)!!5lq#9pcG'4KFQFZD!#3&UmJXJB!J&4&@&5[),)'!#G
!!J!",[i(HACKE(-ZD!#3'+mJXJF!J&4&@&5[),)(!#K!!J!",[i)Fh4NE'PL,QJ
!N"H[),)(!)"849K8Vb#b"`!T3!)!!5lq#(0dFQPZCbjS!*!AVb#b"`#!9%9B9+m
JXJF!+J!"!!%f#3T`FQ0`G@0QCbjS!*!9VbLp"J'!9%9B9+mS[3B!+`!"!!%f#3P
`FR4jF'9c,QJ!N"D[+,dH!B"849K8VbLp(J!X3!)!!5lq#(0dC'4PCLjS!*!AVb#
b"`#!9%9B9+mJXJF!,3!"!!%f#3P`FQ&bC@jK,QJ!N"D[-)2Q!B"849K8Vc#$jJ!
Z!!%!!6B*#R"bBA0cCA*d,QJ!N"@[+,d%!B"849K8VbLp"!![!!%!!6B*#A"bBfa
TFh3ZD!#3&UmS[38"J&4&@&5[+,d&!$!!!3!"0JN(DR0KF'NZD!#3'+p+,rN"J&4
&@&5[5Lrj!$%!!3!"0JN*DR0`G@*dC#jS!*!@Vc#$i`'!9%9B9+m`Jq-!-J!"!!%
f#3PUFf&bFQ&j,QJ!N"D[-)2F!B"849K8Vc#$h!!c!!%!!6B*#'TcBA4[E5jS!*!
AVd!Ie`'!9%9B9+p!(pF!0!!"!!%f#3K`FQKKFfJZD!#3&kmS[3d"J&4&@&5[+,d
0!$9!!J!",[i(Fh4ND@mZD!#3'+mJXJF!J&4&@&5[),)(!$B!!3!"0JN*DR0`FRC
dC#jS!*!@Ve5DZ`'!9%9B9+p8QVX!0`!"!!%f#3KUFf*[Ef`ZD!#3&kmS[-3"J&4
&@&5[+,c%!$J!!3!"0JN+DR0MEfjQD@FZD!#3&Dmf[ZB"J&4&@&5[0VlQ!$N!!3!
"0JN*DR0MER4iG#jS!*!@Vd!Ie`'!9%9B9+p!(pF!1J!"!!%f#3K`FQa[EQFZD!#
3&kmS[4%"J&4&@&5[+,d4!$X!!3!"0JN*F(*[Ff4PF#jS!*!@VbLp&!'!9%9B9+m
S[43!2!!"!!%f#3CUFfGM,QJ!N"Q[-)2J!B"849K8Vc#$i!!p!!%!!6B*#QTcD@j
dCA*`,QJ!N"@[5Lrl!B"849K8VdS[q`!q!!%!!6B*#QTcFQ9RCAK`,QJ!N"@[9*U
m!B"849K8Ve5D[!!r!!%!!6B*"fTcFh4b,QJ!N"L[5Lrr!B"849K8VdS[r`"!3!)
!!5lq"f0dHA"P,QJ!N"L[),)(!)"849K8Vb#b"`""!!%!!6B*#'TcC'&dC5jS!*!
AVbLmb`'!9%9B9+mS[-X!3J!"!!%f#3KUFf9YDA3ZD!#3&km`Xa`"J&4&@&5[-,-
F!%-!!3!"0JN+DR0[F'0[C'8ZD!#3&Dp%TH!"J&4&@&5[4+AJ!%3!!3!"0JN-DR0
[F'0[C'8ZC'9Q!*!6VdcqLJ'!9%9B9+p-rSS!43!"!!%f#3GUFfCeELjS!*!BVc)
&@3'!9%9B9+mb"9N!4J!"!!%f#3KUFfa[BfXZD!#3&kp!(pN"J&4&@&5[3"rC!%F
!!3!"0JN)DR0YBA4S,QJ!N"H[+,cG!B"849K8VbLmh3")!!%!!6B*"fTcER9Y,QJ
!N"L[3"rD!B"849K8Vd!IfJ"*!!%!!6B*"fTcEf*U,QJ!N"L[1G9+!B"849K8VcR
95J"+!!%!!6B*#@TcF'&bFf8ZD!#3&UmS[1N"J&4&@&5[+,cT!%X!!3!"0JN)DR0
cBf&Z,QJ!N"H[4+AL!B"849K8Vd5PiJ"-!!%!!6B*#@TcFf0[F'8ZD!#3&Um`Jq3
"J&4&@&5[-)2N!%d!!3!"0JN+DR0cBh*TF(3ZD!#3&Dp%TH-"J&4&@&5[4+AM!%i
!!3!"0JN+F(*`FQPZG'BZD!#3&DmS[4J"J&4&@&5[+,dB!%m!!3!"0JN)F(*dD@e
P,QJ!N"H[6392!B"849K8Vdd&6`"33!)!!5lq"R4TE@8ZD!#3'DmJXJF!J&4&@&5
[),)(!&%!!3!"0JN+DR0NBQGKF'NZD!#3&Dmf[ZF"J&4&@&5[0VlR!&*!"3!"-E-
)E@9YEh*j,QJ!N"H[),)(!)"849K8Vb#b"`"63!8!!6'c"e4jF'9c,QJ!N"L[),)
(!)"849K8Vb#b"`"83!8!!6'c%d0[EQ4TG'P[EQ&X6@&MFQpc,QJ!N!b[),)(!)"
849K8Vb#b"`"93!8!!6'c#deTH'9N6@pNC5jS!*!8Vb#b"`#!9%9B9+mJXJF!9N!
#!!%ZrJCYBA4S,QJ!N"Q[),)(!)"849K8Vb#b"`"A3!)!!5lq"f9bFQj[,QJ!N"L
[),)(!)"849K8Vb#b"`"B3!)!!5lq#'aTE@PdFbjS!*!AVb#b"`#!9%9B9+mJXJF
!@3!"!!%f#3K`FQ4dEf%ZD!#3&kmS[3S"J&4&@&5[+,d+!&T!!J!",[i)Fh4NE'P
L,QJ!N"H[),)(!B"849K8Vb#b"`"E3!)!!5lq#(0dFQPZCbjS!*!AVb#b"`'!9%9
B9+mJXJF!A%!#!!%ZrJGPFR*ZEbjS!*!BVb#b"`'!9%9B9+mJXJF!A8!#!!%ZrJG
QE'pKG#jS!*!BVb#b"`'!9%9B9+mJXJF!AN!#!!%ZrJCYBA4S,QJ!N"Q[),)(!B"
849K8Vb#b"`"I!!%!!6B*#deKBe"bC@CTH#jS!*!8Vdd&eJ'!9%9B9+p0"GB!B!!
"!!%f#3P`FQeKBfpc,QJ!N"D[+,d6!B"849K8VbLp%`"K3!8!!6'c#8p69A4TE(-
ZD!#3&UmJXJF!J&4&@&5[),)(!'*!"3!"-E-,9'9iG&9dD@ac,QJ!N"5[),)(!)"
849K8Vb#b"`"M3!8!!6'c#&0MFQP`G#jS!*!AVb#b"`#!9%9B9+mJXJF!C%!&!!%
aX`Y4G@PMDf4bBAFZD!#3&+mJXJF!J&4&@&5[),)(!'9!"3!"-E-28A9TBfYNFQ&
h9'9iG#jS!*!3Vb#b"`#!9%9B9+mJXJF!CN!&!!%aX`p*ER4X8Q9cEh9bBf9c,QJ
!N"#[),)(!)"849K8Vb#b"`"R3!8!!6'c#%9fC@jdFbjS!*!AVb#b"`#!9%9B9+m
JXJF!D%!&!!%aX`Y5CA0[GA*MCA-ZD!#3&+mJXJF!J&4&@&5[),)(!'P!"3!"-E-
(4QPXCA-ZD!#3'+mJXJF!J&4&@&5[),)(!'T!"3!"-E-(9'PYCA)ZD!#3'+mJXJF
!J&4&@&5[),)(!'X!!J!"0JN%DR-ZB`#3'kp0"Q-"J&4&@&5[63CM!*!'!4`!N!-
#8&0PCrrr!*!*(!!!!3"38f9R!!%!!!CH&4J!!!%H!!!NX&"-Fh3!N!3'AK6i!!!
PcJ!!&T*34Qac!*!%'"m!!!%!N!-h)3!!0L%!!!3NE[rd2A`"!2rfF!!Y32ri,8$
rr&Q2,blrl&Q2,blrl%i*5P05C@BZF(*U!J!!9de08&*$9dP&!!#ahl(I!*!$!3"
A68e38N0A588!!,(IXGm!N"+`P3GY!!!mX!!!1d8M2blrjUQD5N9Q"P@2UDmk(dT
&CKT)E[qJ,bi!%#mZ!!`[,J!)6VVp"Nr[!""J$&@25'lrS(!'UP*86c!&61iFq2p
`6Pj1G6!!!!8!N!8&!!8!"3!%!*!+!3#3%33&N!3!6PB!!%MR!4JQ!*!$!J!'!*!
$,J!&!3$rr`#3#2rr!C!&!*!%(J%"!*!)QCN!!$rr2rmrr`#3!dS!!3!*"Ne[EQ&
ME`#3(!3!+!!+!F)#J!!S!!S"`J+!!*!3!3#3!`)+!!8!#e0TEA"XC5"#C@9`!*$
f!3!"#e0TEA"XC5"#C@9`!*$j!J#3"43!!3"#!Ki#D31H!&d!!5cV!!%f#3#3!aS
!!`!!Irm!N!4rr`#3"(rr!*!%Irm!N!3&(!!%!*!$!3!%!3S!!3%k!&N!"!"GrTi
!@5VS!&N!"!"G!!$!!!"C3)$ErN#!fqj!J%#!hGJPAIrr!!m!e!#3!i)!$`!!9J#
3!`&-3)'Gc!"C,8J!AICJ!)$Hd!#!KAK!J*S+!&NY5!#!K'S!!-!!!&N!"!"GrTi
J%%#"3)'Gc%#"R0i!A0Q)!03!N!1#!!m!!&B!N!5#!)#(U!#3"i!!N!H!!13!N!8
%!&hfB!#3$%#"X"j!JDrN!!$!!!"C!!3!!"*H!035AJ##!!m!!&B!N!5#!)#&j!"
C2q!!J)@f!*!$J!$)fBJ!e!$b!*N!@5VS!")!"!#!KkJ"h!!#*$T0B@028b"6GA"
`Eh*d1NKPB@4PFR-k38j655")C@&NCA*c1J"!Kl[q3)HlrJ%pbq!"C,"d!@5`+!%
pYJ#3!a2@!*!%!@5Y8%)!#!`!$#-8!*!*&%(F!*!J!6ajk!#3"@36eJ#3"!%mHHJ
!!J!!!@5Y8!%q%f`!N#(Q!(-!q!$)!6i6P!!%!!!"C+k)!!!6eJ&NVE!!N!8-)SJ
!%CHS*!!)"!!83G`!SJ%4!+)"%3#3"aJ!)3%!!!)D1NeKBdp6)&0eF("[FR3k6@&
M5'9KC'9bFcS8$XJ!%D3S!*!*!5cN!*!(!J&Ul6!!&&AJ!"49e'Mrpd!"DZdT!*!
$r`!8&5`"DZhi!@VY%!!5J93!%D6!*!!%"!&Ul5!!!5cN!*!)!@VY8!!",13!!#a
d!5[,S(0MFQN!&d3!!"39,!!!rrm"DZk!!!!"!!!4T-!N!!J%!@VXd!!8')!!N!N
MmS*!P,4d!*!$`!#3"!&UlUi!&"qX!83-8!&UlYB"DZf3!!#3!`%!%D4m*!!)"!&
Ul4!!&"L!!"3KF!#3"aJ!)3!$!!!"!!!#'6T0B@028b"6GA"`Eh*d1NaTBR*KFQP
PFcS!&!l)!"'N+!#3#3%Xj!#3"`)"DZd`!"49i!!89G4SrrG!!@VY+3#3!rm!&"8
X!@VYq!&Ul4!!%S&8!"'N`#3!"!3"DZdJ!!%Xj!#3#!&Ul9!!!5cN!!!XG!%Vbk"
cBh*T!"G%!!!8&5`!!2rr!@VZJ%#8!3!!%D6!*!!)"!&Ul0!!&"L!!*!)!@[K[%#
8Y(3!N!2!!*!%!@VZVJ!8(k`"4!a3!@VZeJ&UlC!!!*!$!3!4T(`N!!J%!@VY%!!
8')!!&#&`!*!('!!K!!-!!!%!!!)21NeKBdp6)&0eF("[FR3krrm!!%!!!@VXd!!
8$XJ!%D3S!*!*!5cN!*!(!J&Ul6!!&&AJ!"49e'Mrpd!"DZdT!*!$r`!8&5`"DZh
i!@VY%!!5J93!%D6!*!!%"!&Ul5!!!5cN!*!)!@VY8!!",13!!#ad!5[,S(0MFQN
!&d3!!"39,!!!rrm"DZk!!!!"!!!4T-!N!!J%!@VXd!!8')!!N!NMmS*!P,4d!*!
$`!#3"!&UlUi!&"qX!83-8!&UlYB"DZf3!!#3!`%!%D4m*!!)"!&Ul4!!&"L!!"3
KF!#3"aJ!)3!$!*!%(2i!"K"0B@028b"38%-J6'PZDf9b!*!3"4"0B@028b"38%-
J6'PZDf9b!*!`'N&38%`!N%"J!*!$3A"`E!#33'!!N!0068a#!*!J$NaTBL"*EA"
[FR3J8&"$!*!969"-4J#3)!j-D@)J5@e`Eh*d)&"33`#3&8eA3d3!N%"J!*!$8P0
53`#33'!!N!0849K8!bjLD("cF`!!!T`i!*!)!DJpd!#3"!*6H[!-3Q&XE'p[EL"
)C@a`8%iS8!#3!`'S2G$rN!2p!P!h'!#3"&4&@&3#,Q-!N"d-69FJ3bp$+bXJ8&"
$!*!A9%9B9!3ZBbXV!*!E$%eA)%-[3bXV)&"33`#3&e4&@&3$,Q0M!*!F$%eA)%-
[3bXV)&"33`#3&e4&@&3$,Q0`!*!F$%eA)%-[3bXV)&"33`#3&e4&@&3%,Q0`F!#
3'`a09b"$,d-V+b"38%-!N"G849K8"#jPH(!!N$p849K8!LjS!*!G$%eA)%-[3bX
V)&"33`#3%a!!N!0849K8!Lj`!*!G$8eA)&"KFf0KE#"38%-!N"C849K8"#j`BA-
!N"X069FJ8'&cBf&X)&"33`#3&P4&@&3%,R"MD!#3'`a09b"$,d-V+b"38%-!N"1
!!*!$9%9B9!BZF'0S+bX!N"N-69FJ3bp$+bXJ8&"$!*!6J!#3!e4&@&3#,R)!N"d
$8Q9k!*!J9%9B9!)ZFfK`Fh-!!!+F1!#3#!'S2G!!N!3#8hV`"P"33d&cE@i"F4K
JF&"1+&!!N!-"U$h3rj!$r3*30aJ!N!4B3dp'!*!J%&K$6dC')%PYF'pbG#"38%-
!N"0NEf0e!*"!B!#3!h*cFQ-!N%"J!*!$FfKXBJ#3)!j348BJ5@e`Eh*d)&"33`#
3&A0dG@)!N#!18%9')%PYF'pbG#"38%-!N"N%,Q4[B`#31e!!N!-36@&M6e-J0MK
,)%aTEQYPFJ#3-"T"8&"-!*"!B!#3!d&`F'`!N%"J!*!$68e-3J#3)!j-D@)J5@e
`Eh*d)$Bi5`#3&8e36%B!N#!16'PL)%PYF'pbG#!f1%X!N"909d0%!*"!B!#3!dp
#5L!!N#!169"A)%PYF'pbG#!f1%X!N"958e*$!*"!B!#3!e4&@&3$,Q*SF(0c!!!
#R$J!N!J"U$h3!*!%!P0km!a#B@aXEfpZ)%KPE("36LK3!*!$!DJpd2q3!rd#8$F
B!*!%9%9B9!)ZB`#3(3a09b"$,d-V+b!f1%X!N"G849K8"#jM+bX!N"X-69FJ3bp
$+bXJ0MK,!*!A9%9B9!-ZBf-!N"`-69FJ3bp$+bXJ0MK,!*!A9%9B9!-ZBh!!N"`
-69FJ3bp$+bXJ0MK,!*!A9%9B9!3ZBh"`!*!E$%eA)%-[3bXV)$Bi5`#3&e4&@&3
%,Q9iF!#32e4&@&3#,QJ!N"d-69FJ3bp$+bXJ0MK,!*!6%!#3!e4&@&3#,R!!N"d
069FJ8'&cBf&X)$Bi5`#3&P4&@&3%,R"KF`#3'`e09b"3BA0MB@`J0MK,!*!@9%9
B9!3ZF'0S!*!E$%eA)%-[3bXV)$Bi5`#3%i!!N!0849K8"Lj`BfJV+`#3'3a09b"
$,d-V+b!f1%X!N"1!!*!$9%9B9!)ZFJ#3(305CAS!N#"849K8"#jcC@HS2B!!!T`
i9%9B9!)ZFQP`Fh-!!!+F1!#3#!'S2G!!N!3#8hV`!e*PHJ'S2F!"F4KJ!P"1+!#
3"'4[Bh8!N%"J!*!$FR0bB`#33'!!N!0cD'aL!*!J$P"&4L"*EA"[FR3J0MK,!*!
9Fh4eBJ#3)!j348BJ5@e`Eh*d)$Bi5`#3'33ZC'pM!*!l8!#3!a"AD@ic-L"i1$B
J6'PZDf9b!*!`$94&@&3#,Q-!N"d-69FJ3bp$+bXJH$Jf!*!A9%9B9!3ZBbXV!*!
E$%eA)%-[3bXV)(Ji0J#3&e4&@&3$,Q0`!*!F$%eA)%-[3bXV)(Ji0J#3&e4&@&3
%,Q0`F!#3'`a09b"$,d-V+b"i1$B!N"G849K8!Lj`Ef0XpY!!"&(B!"8b-!!!"'X
'h2E3!"6U)2rr")N069FJ8'&cBf&X)(Ji0J#3"JEFp`!!&1SJ"(ChX!#3"&4&@&3
%,R"KFfcfd!!%8GJ!&6)`!!!%D`EFpY!!&1SJrrm%L3e09b"3BA0MB@`JH$Jf!*!
'"Ych!!!8kL!%GRH`!*!%9%9B9!3ZF'0S!*!E$%eA)%-[3bXV)(Ji0J#3%i!!N!0
849K8"Lj`BfJV+`#3'3a09b"$,d-V+b"i1$B!N"1!!*!$9%9B9!-ZFQ-!N"`)69F
J9fPZ8N-!N"Y849K8"#jbCA13!`!!!T`i!*!)!DJpd!#3"!*6H[!09fPZ8Q9c)%P
YF'pbG%iS8!#3!`'S2G$rN!2p!P!h'!#3#!3ZC'pM!*"$"#jXD@)!N"X16'PL)%P
YF'pbG#"i1$B!N"N%,QpLDJ#3'`j2BQSJ5@e`Eh*d)(Ji0J#3&3P03b"-D@jVCA)
!N$F63da98`!ZC'9QE+2!!!+F1!!@I$"SrrG!!IDM`!!@0#!!&NAm!*S"ai3iSr!
!&ZlN!*!)!IDMm!!@0#!#@12X3!#3!de03dJ!N%4068a#!#jNEf0XSm!!!T`i!"C
m-'Mrpd!"pU2!!"Bd)!!@4I`16'PL)%PYF'pbG#!f1%X!N!8"pU2`!"Bd)!*Be!J
!N!408%a'!#jNEf0XSm!!!T`i!"Cm-'Mrpd!"pU2!!"Bd)!!@4I`16'PL)%PYF'p
bG#!f1%X!N!8"pU2`!"Bd)!*Be!J!N!423NSJ!#jNEf0XSm!!!T`i!"Cm-'Mrpd!
"pU2!!"Bd)!!@4I`169"A)%PYF'pbG#!f1%X!N!8"pU2`!"Bd)!*Be!J!N!4849K
8!LjM!*!G#%e$)%-[3bXV!*!E9%9B9!3ZBbXVE+2!!!+F1!!@I$"SrrG!!IDM`!!
@0#!!&NAm$%eA)%-[3bXV)$Bi5`#3"`(fSr!!&M3J!PM8#!#3"&4&@&3$,Q0M+fb
M`!!#R$J!&R``D2rh3!(fSm!!&M3J!"C&r!a09b"$,d-V+b!f1%X!N!F"pU2`!"B
d)!*Be!J!N!4849K8"#jME(-!N"X468-J3faKFh-J3fpYF'PXCA)!N!k!!*!$9%9
B9!-ZBh!VE+2!!!+F1!!@I$"SrrG!!IDM`!!@0#!!&NAm$%eA)%-[3bXV)$Bi5`#
3"`(fSr!!&M3J!PM8#!#3"&4&@&3%,Q0`F'bM`!!#R$J!&R``D2rh3!(fSm!!&M3
J!"C&r!a09b"$,d-V+b!f1%X!N!F"pU2`!"Bd)!*Be!J!N!4849K8"#jNC@B!N$p
849K8"#jNEf-!N$X3!*!$9%9B9!)ZD!#324!!N!0849K8!Lj`BfJV+m!!!T`i!"C
m-'Mrpd!"pU2!!"Bd)!!@4I`069FJ8'&cBf&X)$Bi5`#3"J(fSr!!&M3J!PM8#!#
3"&4&@&3%,R"KFbXV`!!#R$J!&R``D2rh3!(fSm!!&M3J!"C&r!e09b"3BA0MB@`
J0MK,!*!'!IDMm!!@0#!#@03)!*!%9%9B9!3ZF'0S!*!E#%e$)%-[3bXV!*!AJ!#
3!e4&@&3',R"MD#XV`!!#R$J!&R``D2rh3!(fSm!!&M3J!"C&r!a09b"$,d-V+b!
f1%X!N!F"pU2`!"Bd)!*Be!L!!*!$9%9B9!-ZG(-!N%!,5Q&fB5"-D@jVCA)!N$8
139"36!"cQk`"U$f!!!+F1!!@453!N!N@l%3!N"J"U$h!!*!%!P"1+'!!N!0"F("
X!(1EV!'S2B!!!T`i!"C&*!#3#4EX4!#3'!'S2F!!N!3#8%iSB!#3!d0XFh-!,Q0
XBA0c!!!#R$J!N!J"U$h3!*!%!P0km!G09b"+BACK!A%BB("36LKJ!*!$!DJpd2q
3!rd#8$FB!*!%69G$4!"cQk`"U$f!!!+F1!!@453!N!N@l%3!N"J"U$h!!*!%!P"
1+'!!N!058e*$!(1EV!'S2B!!!T`i!"C&*!#3#4EX4!#3'!'S2F!!N!3#8%iSB!#
3!e4&@&3$,Q*S!*!&!T`i!*!)!DJpd!#3"!*6H[!-3Q&XE'p[EL")C@a`8%iSB!#
3!`'S2G$rN!2p!P!h'!#3"&4&@&3&,QKdE@bM`!!#R$J!&R``D2rh3!(fSm!!&M3
J!"C&r!#D!FH%1+2`!"EZj!!9Jm3!N!3"pU2`!"Bd)!*Biq`!N!4849K8"5jUBAC
K!*!$!T`i!*!)!DJpd!#3"!*6H[!(69FJ5Q&fB3&a''"`8%iSB!#3!`'S2G$rN!2
p!P!h'!#3"&4&@&3#,R*TF(0c!!!#R$J!N!J"U$h3!*!%!P0km!05CAT+BACK!A%
BB("36LKJ!*!$!DJpd2q3!rd#8$FB!*!%@NP3)!!ZHQP`Fh-!!!+F1!#3#!'S2G!
!N!3#8hV`"deA)%TKGQ%"F4KJF&"1+'!!N!-"U$h3rj!$r3*30aJ!N!4NEf0e!(1
EV!'S2B!!!T`i!"C&*!#3#4EX4!#3'!'S2F!!N!3#8%iSB!#3!h*cFQ-!FjZX!DJ
pJ!!#R$J!&N8N!*!*&Za%!*!B!DJp`!#3"!*36LKJ!*!("LjME'&cF`!!!T`i!*!
)!DJpd!#3"!*6H[!(69FJ5Q&fB3&a''"`8%iSB!#3!`'S2G$rN!2p!P!h'!#3#!3
ZHQP`Fh-!!!+F1!#3#!'S2G!!N!3#8hV`"deA)%TKGQ%"F4KJF&"1+'!!N!-"U$h
3rj!$r3*30aJ!N!F'!!%"!*!&!RB!!3#3)3CKG'pdD@0YC3#30`%!!!%!!3!!!J%
k!*$q!3!!!3%k!*$r!*!)&J!&!3#3"`%!N!N"!*!%#J!"!3!!!3%!!3#3"!i!"`%
!!3%!!3%!N!-"!*!%aJ!(!!!&5P05C@BZF(*U3b"$,d-V+bke!*!Y2j!%39"36!!
!!B"BJ!#33Mq3"!#3#98"N!!"#3*l!*!1!B!!N"%i!!N!!3#3"3Y0B@03FQ9QDAJ
ZD'J!N#8-!!-!N!`"fJ!%!*!3!3#3r`#34&pIFh4KFR3!N(`"!*!$$!!"N!-!N!S
"GJ!'!!!&B5jkDA!!N2m!N"pD59!J5N&@38T"9N%26@9dFQphCA*VFb"+BACK)&-
L8L!T!6#`U!%`CN"96b"55'J!*#"65'J!*%)R(c`!!8kj!!!D"K!I5J"R)&92!*!
&"!!#!*!&"!!$&,F!N!1+!!S!N!F+"8T68Q9Q,R"bDJ#3&JP+8e*PCLjcH@ejE3#
3&!e6HA0dC@e$E'&cFf9c!*!5"N*eEQ4XC3#3($J!$3#3"`%!N#8"!*!&!3#3"3d
!!J#3$K3!!`)"N!-!!3#3$`S!!C!$!!!"!3!"!*!$a!!'`!#339pIFh4KFR3!N(X
"&J!'!*$r!*!BZJ!%!!!&5P05C@BZF(*UEfaP)&"33`#3$cq3"%&38%`!!!'!!!!
"J!#3!d!!!&M!!*"K!6q3"!#3"e8"N!!"#3*l!*!0,J!#!*!$!J!#!*!S!J`!!J"
3!!%!!3!"!!%!N2m!&#G$6d4&*b!R4%&835FJ*e"*3e3R!*$Y!N3!!J#3r`#3r`#
34b3!!3#3*4)!!`%!!!-"!!%"!*!,NJ!%!!%!N%%#!!-!#J#343%"!*!%5J!"!!!
&5P05C@BZF(*U3b"$,d-V+bke!*!13!#3"!3!N!3%!!!%!*!%"!"9!C!!!3N#H`#
3$3`!"3%!N!a'C[83J$rP-M!!"!#3#,#9"ff`P3G[!*!3"A"MD'9Z!!-a,M-!#8T
68Q9Q,R"bDJ#3#6MkZ`!$!*!$!3#3"!P+8e*PCLj`FQS!!c%Z-`#3!`-YDfm!N!`
*ER-[DR-[FQ9Q!!!"!*!$0b%!!$BK!!!%*!-JCiJS#!#3!a`#*J!%F&CPFJ#3!bT
`FQ9Q!#-!0P088L-!!!(QBfYTC!!!!I*YBhCc!!!"rJ#3$")'!"!!N!-'!*!%G5J
!&`#3!cJ!N!4$V`!F!*!$KJ#3"$T5!#-!!!+D!*!%&Ii!-J!!!V)!N!42#`"#!!!
#d!#3"'Kh!%m!!!I`!*!%6jF!9J!!*2)!N!42D3"M!!!Nr!#3"&jJ!'d!!#Gf!*!
%$`B!H3!!*j!!!*!%HZ!!LJ!!*ji!N!3TZ!#9!!!RX!#3""dc!+%!!#Kk!*!%1"i
!X!!!+,B!N!4Eh!#r!!!SaJ#3"&((!-B!!#UN!*!%$8F!d`!!+V3!N!3I%J$J!!!
X,J#3"(Kr!2N!!#`f!*!%%Fi"#J!!,$i!N!3I(3%F!!!Xc!#3"!Nm!5`!!#d)!*!
%DJi"2!!!,4N!N!3AQ!&)!!!Y-3#3"!IA!9N!!#dr!*!%@#B"C!!!,JF!N!44AJ&
X!!![)3#3""4)!AJ!!#rI!*!%HXi"K3!!-"%!N!4$!J'5!!!b)3#3"%-Z!D8!!$4
T!*!%1!8"Y!!!0*%!N!33N`(!!!!dT`#3"%Rc!FX!!$8p!*!&b2rr!!!eL`#3"!2
`rrm!!!+8!*!&J!(A!!!eQ`#3"B!"jJ!!0H8$0Rq3!!p3FQpUC@0d)&CPFR0TEfi
'4@4TG'pb"%C[ER3'4AKdFQ&c$P"bEfTPBh3J4AKdFQ&c$d0eFh4[E5",CAPhEh*
NF`a"Bf0PFh-J8'&dD(-'9'&bCf9d$%*eD@aN)%9iG(*KF`P@3e-J8f9dGA!,0MK
,)%0[C'9(C@i30MK,)%4TFf&cFf9YBQaPFJSf1%XJ6'PZDf9b#cBi5b"3FQpUC@0
d$N-[3bXV)%0[EA"TE'9b$N-[3bXV)&GKFQjTEQGc"N0'66Bi5`a*8L"2F(4TE@P
kCA)-5Q&fB5"3FQpUC@0d'%eKCfPM)%0KF#"$E'&cFb"$Efe`D@aPFK"0B@GTBb"
$BA!J6'PZDf9b%8eKCfPM)%0KF#"3FQpUC@0d$e"KFf0KE#"$Efe`D@aPFJp3BA0
MB@`J9f&bEQPZCh-,8&"$)%0[C'9(C@i38&"$)%4TFf&cFf9YBQaPFJT38%-J6'P
ZDf9b"e"33b"348B,8&"$)&"bEfTPBh3-8&"$3A0Y)&"KEQ9X$&*PHL"$Efe`D@a
PFK*8EfpX4R*[ER4&EQ3J8'&ZC@`19fPZ8N-J3fpYF'PXCA),H$Jf)%0[C'9(C@i
+H$Jf)%aTEQYPFJYi1$BJ8(*[DQ9MG!j3FQpUC@0dEh)J4'&dB4G0B@0$9P-J9Q9
bFfP[EL"5CA0[GA*MCI-6:

BIN
mozilla/js/ref/JSRef.prj2 Normal file

Binary file not shown.

View File

@@ -0,0 +1,677 @@
(This file must be converted with BinHex 4.0)
:#NT68Q9Q,R"bDM)!68e3FN0A588"!!!!I%i!!!)S)d4MEfpX!!!!!`!!!5J!!(A
Q!!"h$J!!"8!!!!!i!3)"!!!!!!!!!!!!3fpNC9GKFR*TEh)J8(*[DQ9MG!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&!3$rr`!
!!!!!!!!!rrm"!3%"!3!!!!!H!3%!!!!!!!!!!*QC!!!rrcrr2rm!!3!*"Ne[EQ&
ME`!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%!#J!#J(#!S!!+!!+!F)#J!!
!!!!!!!!!!!!!!!!!!!!"!!!&!!Y6D@e`E'8J3Q9PF!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%!!3Y6D@e`E'8
J3Q9PF!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!"!%)#(J*T!ji!A3!",1X!!6B*5P05C@Bk4@4TG'pb!%T68Q9
Q1NC[ER3!5P05C@Bk4AKdFQ&c!%T68Q9Q1P"bEfTPBh3J4AKdFQ&c!%T68Q9Q1N0
eFh4[E5",CAPhEh*NF`"+8e*PCMT"Bf0PFh-J8'&dD(-!5P05C@Bk3R9TE'3J4AK
dFQ&c!%T68Q9Q1MBi5b"$Ef4P4f9Z!%T68Q9Q1MBi5b"%DA0KFh0PE@*XCA)!5P0
5C@Bk0MK,)%aTEQYPFJ"+8e*PCMSf1%XJ8(*[DQ9MG!"+8e*PCMT$,d-V+b"$Efe
`D@aPFJ"+8e*PCMT$,d-V+b"ABA*ZD@jRF`"+8e*PCMT$4Ndf1%X!5P05C@Bk59)
J6h"dD@eTHQ9b!%T68Q9Q1NTKGQ%J8(*[DQ9MG!"+8e*PCMT0B@GTBb"$BA!J3fa
KFh-J3fpYF'PXCA)!5P05C@Bk6@&RD@-J3f&`)%aTEQYPFJ"+8e*PCMT0B@GTBb"
$BA!J8(*[DQ9MG!"+8e*PCMT3BA0MB@`J3fpYF'PXCA)!5P05C@Bk8'&cBf&X)&G
KFQjTEQGc!%T68Q9Q1P"33b"$Ef4P4f9Z!%T68Q9Q1P"33b"%DA0KFh0PE@*XCA)
!5P05C@Bk8&"$)%aTEQYPFJ"+8e*PCMT38%-J8%9'!%T68Q9Q1P"33b"3FQpUC@0
d!%T68Q9Q1P"33d&cE5"3B@jPE!"+8e*PCMT5CASJ3fpYF'PXCA)!5P05C@Bk9'p
[E%CbEfjd4@jN)&"KEQ9X!%T68Q9Q1PGTEP*$)%0[EA"TE'9b!%T68Q9Q1RJi0L"
$Ef4P4f9Z!%T68Q9Q1RJi0L"-D@jVCA)!5P05C@BkH$Jf)&"bEfTPBh3!5P05C@B
k9'&bCf9d)&0PG(4TEQGc!%T68Q9Q1NCTE'8J6@&`F'PZCh-!8(*[DQ9MG#"'D@a
P)%aTFh3!5P05C@Bk5Q&fB5"2GA4`GA3!5P05C@Bk5Q&fB5"@63"+8e*PCMT0B@0
28b"0CA*RC5"3B@jPE!"+8e*PCMT+BACK)%aKEQGeB@GP!%T68Q9Q1NTKGQ&%Ef-
J8(*[DQ9MG!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!"!!!!!!!!!!d!!!!#!!!!!!!!!"J!!!!$!!!!!!!!!#8!!!!%!!!!!!!
!!$S!!!!&!!!!!!!!!&!!!!!'!!!!!!!!!'-!!!!(!!!!!!!!!(B!!!!)!!!!!!!
!!)J!!!!*!!!!!!!!!*m!!!!+!!!!!!!!!,!!!!!,!!!!!!!!!-)!!!!-!!!!!!!
!!0F!!!!0!!!!!!!!!1`!!!!1!!!!!!!!!2N!!!!2!!!!!!!!!3`!!!!3!!!!!!!
!!4m!!!!4!!!!!!!!!6i!!!!5!!!!!!!!!98!!!!6!!!!!!!!!@d!!!!8!!!!!!!
!!B-!!!!9!!!!!!!!!CN!!!!@!!!!!!!!!DX!!!!A!!!!!!!!!F)!!!!B!!!!!!!
!!G-!!!!C!!!!!!!!!H%!!!!D!!!!!!!!!I-!!!!E!!!!!!!!!JB!!!!F!!!!!!!
!!KN!!!!G!!!!!!!!!M)!!!!H!!!!!!!!!NF!!!!I!!!!!!!!!PN!!!!J!!!!!!!
!!QS!!!!K!!!!!!!!!R`!!!!L!!!!!!!!!T)!!!!M!!!!!!!!!UB!!!!N!!!!!!!
!!VJ!!!!P!!!!!!!!!XS!!!!Q!!!!!!!!!YJ!!!!R!!!!!!!!![!!!!!S!!!!!!!
!!`3!!!!T!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!F!!!!)!!!!#3!!!!S!!!!&!!!!"J!!!!X!!!!-!!!!$3!!!!3!!!!!!!!!!J!
!!#)!!!!"!!!!$J!!!#F!!!!N!!!!$`!!!#8!!!!S!!!!*J!!!"!!!!!4!!!!%J!
!!"-!!!!8!!!!&3!!!"B!!!!A!!!!'!!!!"N!!!!D!!!!!`!!!"X!!!!K!!!!(!!
!!"d!!!!H!!!!(`!!!#!!!!!M!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!S!!!!!`!!!#-!!!!"!!!!+J!!!#8!!!!+!!!!"!!
!!!8!!!!'!!!!"`!!!!J!!!!*!!!!#`!!!!`!!!!0!!!!$J!!!!m!!!!3!!!!%3!
!!")!!!!6!!!!&!!!!"8!!!!!!!!!&J!!!"F!!!!B!!!!'3!!!"S!!!!e!!!!+3!
!!!)!!!!Q!!!!-J!!!$%!!!!d!!!!-`!!!#X!!!!X!!!!*`!!!$!!!!!Z!!!!'`!
!!"`!!!!G!!!!(J!!!"m!!!!J!!!!)3!!!#)!!!!Y!!!!*!!!!#m!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!-!!(rr!!!!!(rr!!!!!(r
r!!!!!(rr!!!!"!%"!!%!"J%!!!!!!!!!!3!!!!!!!!!!!!%!!!!!!3%!!!%"!!%
!!!F"!!%"!!%"!!!!!3!!#`!"!!!!!!!,6@&M8(*PCQPi,QKS!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!-"!3%"!!%!!3%!!!%"!3!!!!!!!!!
!!!)!!!!!!!!!!!!!!!!$!J%"!3!"!!!!!!!!!!!!!!!!!!%"!3!!!3%!!8m!!!!
#!!!!!a5h!!S!!!!!!!!!#J9+8e*PCLj`FQS!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!#8T68Q9Q,R0jEAPY!!!!!!!!!!!!!!!!!!!!!!!!!!!08hPcG'9Y3faKFh0PF`!
!!!!!!!!!!!!!!!!!!!!!!!C#G@jNE'8!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!5P05C@B!38j655"-D@*bBA*TCA-!6@&M)%aTBR*KFQPPF`""6P0*)%-V+bj38%-
Z6'PL!'TcBA"T,Q-!DR0KFR*KH5jM!'TcBA4[E5jM!'TcBQp[E#jM!'TcBfjdH(3
ZB`"UFf4KG'8ZB`"UFbjM!'TcC'*RBA"T,Q-!DR0PE@Pd,Q-!DR0QG@iZB`"UFfG
M,Q-!DR0TER4PFR!ZB`"UFfa[BfXZB`"UFfeKG'JZB`"UFfjeE5jM!'TcEf*U,Q-
!DR0[F'0[C'8ZB`"UFh"KFR0P,Q-!DR0bC@GPH(!ZB`"UFh0MB@iZB`"UFh0MEh"
P,Q-!DR0cBh*TF(3ZB`"UFh0dFLjM!("bBA*PEQ%ZB`"`FQ&cFf9bG#jM!("bC(4
[B5jM!("bD'&cD#jM!("bE'pR-LjM!("bE'pZCbjM!("bF(*TER4Q,Q-!F(*dD@e
P,Q-!38j655"$,P"33bj-D@)!8dP299JZ8&"$,NaTBJ"*ER4PFQCKBf9-D@)!6@&
dD%aTBJ"09d05G@jdD@eP,NaTBJ!k5P05C@B!6'PL)%PYF'pbG#"38%-!3Q&XE'p
[EL")C@a`!%eA)%-[3bXV)&"33`"09b"3BA0MB@`J8&"$!&*PHJ"38%0"Ffd!@%0
24NBJ5@e`Eh*d)&"33`"348BJ5@e`Eh*d)&"33`"08d`J3bj38%-Z6'PL!%e66#"
$+bXZ8&"$,NaTBJ"08d`J8dP299JZ8&"$,NaTBJ"08d`J8R9ZG'PYC9"33bj-D@)
!DR0iC(*KF'NZB`!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"!!!!!!!!!!B!!!!#!!!!!!!!!"8!!!!
$!!!!!!!!!#-!!!!%!!!!!!!!!$3!!!!&!!!!!!!!!$`!!!!'!!!!!!!!!%B!!!!
(!!!!!!!!!%m!!!!)!!!!!!!!!&J!!!!*!!!!!!!!!')!!!!+!!!!!!!!!'X!!!!
,!!!!!!!!!(!!!!!-!!!!!!!!!(X!!!!0!!!!!!!!!)3!!!!1!!!!!!!!!)`!!!!
2!!!!!!!!!*-!!!!3!!!!!!!!!*i!!!!4!!!!!!!!!+F!!!!5!!!!!!!!!,!!!!!
6!!!!!!!!!,J!!!!8!!!!!!!!!-!!!!!9!!!!!!!!!-X!!!!@!!!!!!!!!08!!!!
A!!!!!!!!!1!!!!!B!!!!!!!!!1N!!!!C!!!!!!!!!2-!!!!D!!!!!!!!!2i!!!!
E!!!!!!!!!3B!!!!F!!!!!!!!!4!!!!!G!!!!!!!!!4X!!!!H!!!!!!!!!53!!!!
I!!!!!!!!!5d!!!!J!!!!!!!!!6B!!!!K!!!!!!!!!6m!!!!L!!!!!!!!!8S!!!!
M!!!!!!!!!9-!!!!N!!!!!!!!!@)!!!!P!!!!!!!!!A!!!!!Q!!!!!!!!!Ad!!!!
R!!!!!!!!!B8!!!!S!!!!!!!!!C3!!!!T!!!!!!!!!CX!!!!U!!!!!!!!!DS!!!!
V!!!!!!!!!EF!!!!X!!!!!!!!!F3!!!!Y!!!!!!!!!G)!!!!Z!!!!!!!!!GB!!!!
[!!!!!!!!!Gd!!!!`!!!!!!!!!Hi!!!!a!!!!!!!!!Id!!!!b!!!!!!!!!JX!!!!
c!!!!!!!!!KX!!!!d!!!!!!!!!Ld!!!!e!!!!!!!!!N!!!!!f!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!)!!!!!3!'!!!!"!3!!!N!!3!"1J!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!"!!!!rrrrr`!!!!)!!J!"1NePG(*[Gf9bDh-
J8h4KEQ4KFQ3J6'PLFQ&bH6T08d`J3cT#D@ik!()k6@9dFQphCA*VFb"6G'&ZC'&
bC#"-D@*bBA*j1Ne66#"$1N*TEMS!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!"!!!!rrrrr`!!!!-!!J!"1NePG(*[Gf9bDh-
J8h4KEQ4KFQ3J6'PLFQ&bH6T08d`J3bXV1N*TEMS!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!"!!!!rrrrr`3!!!F!!J!"1NePG(*[Gf9bDh-
J8h4KEQ4KFQ3J6'PLFQ&bH6T08d`J3cT08d`J3fpYE@pZ1P"eBQaTBb"*EQ0XG@4
PFcS!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!"!!!!rrrrr`3!!!8!!J!"1NeKBdp6)&0eF("
[FR3k6@&M5'9KC'9bFcS!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!"!!!!rrrrrd!!!!)!!J!"1NeKBdp6)&0eF("
[FR3k6'PLFQ&bD@9c1J!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!"!!!!rrrrrd!!!!-!!J!"1NeKBdp6)&0eF("
[FR3k5'9KC'9bFcS!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!"!!!!rrrrr`3!!!J!#!!!"8T68Q9Q,R"bDN-
J3bp$+bXZY3!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!$mr2cp"8&"-!!!"J&L!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!2cmr2`!!!!!!!!!
!!&8"N!!"#3*l!!!!!!!!!!!!!!!!!!!"J!!!!!!!!!!!!!!!!!!!!!3!!!!!!!!
!!!!!!!!!!!!!!3!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!Aep
cG'&bG!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"!!J!!!"K,RTTF!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"D59!J5N&
@38T"9N%26@9dFQphCA*VFb"+BACK)&-L8L!T!6#`U!%`CN"96b"55'J!*#"65'J
!*%)R(c`!!8kj!!!D"K!I5J"R)&92!!!!!%MR'#!NEJ!)"B-0J!!!!!!!!!,3"B-
EN!!!!!%!!!")+3!!4bN&J`R3"8PAZ#%1!!!!(!0k!"YSC'aR!!!!iP088L-!!`$
Z689193!"!4j8BA*R!!!"0N019%`!!J&#C'0dBJ!!!@CTBf`d!!!"FQPME$J!!!&
q5801)`!!!BTTBh-M!!!"PQPMFc3!!%T"9N%26@9dFQphCA*VFb"+BACKE@3!!3(
HD@0dBJ!!!IC%594-!!!#!N4-4eJ!!!)14%a24`!!!KT38'pL!!!#*P*T!%`!!!)
b9%e36!!!!Mj`FQ9Q!!!#5Q&PG'8!!!*@8e45)!!!!Q*8H(4b!!m#ENCXB@F!!!-
ZGQ9bF`!"!cT%FQp`!!!$8J#!rrmJ!!!!!!!!!'KN!!!J!!&+!!!!!!%Xrrm!!!4
c!!!!!!%Z!$NJ!!5k!!!!!!%Y!%B!!!6a!!!!!!4S!"8!!!1q!!!!!!4T!#)!!!3
G!!!!!!#!!#`!!!4K!!!!!!4TrrmJ!!8E!!!!!!4UrrmJ!!8l!!!!!!4VrrmJ!!9
F!!!!!!#!rrm!!!@-!!!!!!#!!&%!!!A!!!!!!!#!!'S!!!I%!!!!!!#!!)-!!![
)!!!!!!#!!*!!!!!-c!!!!!!!J!#T!!!0%!!!!!!!J!$#!!!0P!!!!!!%DIrr!!!
1Q!!!!!!%D[rr!!!1a!!!!!!%Drrr!!!1m!!!!!!%DIrr!!!2(!!!!!!%D2rr!!!
2,J!!!!!!J2rr!!!24!!!!!!!J!$E)!!2I!!!!!!!J2rr!!!3MJ!!!!!!J!$P)!!
4J!!!!!!!J!$i!!!4Y!!!!!!!J!%#!!!CV!!!!!!!J!%-)!!C[J!!!!!!J!%4!!!
DE3!!!!!!!!%H!!!HZJ!!!!!!J!%Q!!!K5J!!!!!!JJ%i)!!K@J!!!!!!K!&-)!!
KE`!!!!!!K3&G)!!KK!!!!!!!KJ&h)!!KQ3!!!!![#R9+593!aqIJ!!!!!!!!!3!
%ar"!!!!"!!!!1dJ!!$T)"-INm!5bpX!UQJ!!!"`"5J!,689193!#!'*8BA*R!!!
!KP088L-!!J#58&"[BJ!!!,C5D@4-!!!!`Q&PG'8!!!$18e45)!!!!0T'E'&R!!!
!jP408%`!!!$bF(*PCJ!!!2jfCA*c!!%"#N4bEh!!!!%L"'J!!!!!!!!!!!!!"'N
!$3!!!&m!!!!!"'S!&`!!!+-!!!!!!)!!'`!!!2J!!!!!!5crr`!!!3S!!!!!!5i
!+#!!!9%!!!!!!5d!03!!!BJ!!!!!!)!!3!!!!E)!!!!!!)!!5J!!#ki!!!!!!!!
!9!!!!!i!!!!!!!!!!3!!!!!+99"*,R"bC@CTH!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!"!!!!!!!"!!%!"`%"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&pIFh4KAepcG'&bG!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!F!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!"3!!"8T68Q9Q!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!r2cmr39"
36!!!!B!!!!'!!!!!3!!!@-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!6mr2cm!!!!!!!!!!J!!!!)!!J!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!+3!!!%!!!!-D!!!%!!!!!#N
!rhrrIrprrhrrIrprrhrrIrprr`!#!!!25Q&fB80XBA0cCA-ZDQ&b!!!!!!!!!!!
!!!!!!!!!!&T*8#"09eT3!!!!!!!$!!%!!!P0CA*RC5"2GA3!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!r2cmr39"
36!!"!3!!"%4-4eKMDfPN8(*[DPG68%-!!!!Q!!!!43%!!!!"!!!U!!!!0J!!!%!
!!!*,!!!%!!!!!$B!4%&835FJ*e"*3e3R!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!#!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%!3!!!`%!!!!
!"!!"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!#!!-!#J!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%
"!!!"!!!&5P05C@BZF(*U3b"$,d-V+bke!!!!!!!!!!!!!!!!!!"!!!!!!!3!!!!
!"!!!"!!!!!!%!&8"N!!"#3*l!!!!!!!!!!!!!!!'!!!25Q&fB80XBA0cCA-ZHQP
`!!!!!!!!!!!!!!!!!!!!!&T*8#"+39C"!!!!!3!!!3!!!J%!!!-"!!!%!3!!"3%
!!!B"!!!(!3!!#!%!!!N"!!!+!3!!#`%!!!`"!!!0!3!!$J%!!!m"!!!3!3!!%3%
!!")"!!!6!3!!&!%!!"8"!!!@!3!!&`%!!"J"!!!U!3!!'3%!!"S"!!!E!3!!(!%
!!"d"!!!H!3!!(`%!!#!"!!!Q!3!!*`%!!#J"!!!M!3!!*!%!!#N!!!!"!!!!!3%
!!!)!!!!!!!!!!!!%!!%!!!!TX5aeU!!!,[i!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!3!!!!)!!!!$!!!!"!!!!!8!!!!'!!!!"`!!!!J!!!!*!!!!#J!
!!!X!!!!-!!!!$3!!!!i!!!!2!!!!%!!!!"%!!!!5!!!!%`!!!"3!!!!9!!!!&J!
!!"F!!!!B!!!!'3!!!"S!!!!E!!!!(!!!!"d!!!!H!!!!(`!!!#!!!!!K!!!!)J!
!!#-!!!!N!!!!*3!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%!!!!!!!!!!!!
#!!%!+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!#!&!!!3!"!!%!!3!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!8*d024%8R)#G%394"*b!R8%P$9#F!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!)!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!(!!"0B@028b"38%-J6'PZDf9
b!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"+8e*PCJ!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!%!!6S!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%!!!)!!!!
&!J%!!!!!!!%!!3%!!!!!!!!!!!!!!!!"!!!!!!!!!!!"!!!$!!!!"J)"!!!!!!!
"!!%"!!!!!!!!!!!!!!!!!3!!!!!!!!!!!3!!"!!!!!F#!3!!!!!!!3!"!3!!!!!
!!!!!!!!!!!%!!!!!!!!!!!%!!!8!!!!)!J%!!!!!!!%!!3%!!!!!!!!!!!!!!!!
"!!!!!!!!!!!"!!!'!!!!#3)"!!!!!!!"!!%"!!!!!!!!!!!!!!!!!3!!!!!!!!!
!!3!!"`!!!!S#!3!!!!!!!3!"!3!!!!!!!!!!!!!!!!%!!!!!!!!!!!%!!!J!!!!
,!J%!!!!!!!%!!3%!!!!!!!!!!!!!!!!"!!!!!!!!!!!"!!!*!!!!$!)"!!!!!!!
"!!%"!!!!!!!!!!!!!!!!!3!!!!!!!!!!!3!!#J!!!!d#!3!!!!!!!3!"!3!!!!!
!!!!!!!!!!!%!!!!!!!!!!!%!!!X!!!!1!J%!!!!!!!%!!3%!!!!!!!!!!!!!!!!
"!!!!!!!!!!!"!!!-!!!!$`)"!!!!!!!"!!%"!!!!!!!!!!!!!!!!!3!!!!!!!!!
!!3!!$3!!!"!#!3!!!!!!!3!"!3!!!!!!!!!!!!!!!!%!!!!!!!!!!!%!!!i!!!!
4!J%!!!!!!!%!!3%!!!!!!!!!!!!!!!!"!!!!!!!!!!!"!!!2!!!!%J)"!!!!!!!
"!!%"!!!!!!!!!!!!!!!!!3!!!!!!!!!!!3!!%!!!!"-#!3!!!!!!!3!"!3!!!!!
!!!!!!!!!!!%!!!!!!!!!!!%!!"%!!!!8!J%!!!!!!!%!!3%!!!!!!!!!!!!!!!!
"!!!!!!!!!!!"!!!5!!!!&3)"!!!!!!!"!!%"!!!!!!!!!!!!!!!!!3!!!!!!!!!
!!3!!%`!!!"B#!3!!!!!!!3!"!3!!!!!!!!!!!!!!!!%!!!!!!!!!!!%!!"3!!!!
A!J%!!!!!!!%!!3%!!!!!!!!!!!!!!!!"!!!!!!!!!!!"!!!9!!!!'!)"!!!!!!!
"!!%"!!!!!!!!!!!!!!!!!3!!!!!!!!!!!3!!&J!!!"N#!3!!!!!!!3!"!3!!!!!
!!!!!!!!!!!%!!!!!!!!!!!%!!"F!!!!D!J%!!!!!!!%!!3%!!!!!!!!!!!!!!!!
"!!!!!!!!!!!"!!!B!!!!'`)"!!!!!!!"!!%"!!!!!!!!!!!!!!!!!3!!!!!!!!!
!!3!!'3!!!"`#!3!!!!!!!3!"!3!!!!!!!!!!!!!!!!%!!!!!!!!!!!%!!"S!!!!
G!J%!!!!!!!%!!3%!!!!!!!!!!!!!!!!"!!!!!!!!!!!"!!!E!!!!(J)"!!!!!!!
"!!%"!!!!!!!!!!!!!!!!!3!!!!!!!!!!!3!!(!!!!"m#!3!!!!!!!3!"!3!!!!!
!!!!!!!!!!!%!!!!!!!!!!!%!!"d!!!!J!J%!!!!!!!%!!3%!!!!!!!!!!!!!!!!
"!!!!!!!!!!!"!!!H!!!!)3)"!!!!!!!"!!%"!!!!!!!!!!!!!!!!!3!!!!!!!!!
!!3!!(`!!!#)#!3!!!!!!!3!"!3!!!!!!!!!!!!!!!!%!!!!!!!!!!!%!!#!!!!!
M!J%!!!!!!!%!!3%!!!!!!!!!!!!!!!!"!!!!!!!!!!!"!!!M!!!!*J)"!!!!!!!
"!!%$!!!!!!!!!!!!!!!!!3!!!!!!!!!!!3!!*!!!!#F#!3!!!!!!!3!"!`!!!!!
!!!!!!!!!!!%!!!!!!!!!!!%!!#B!!!!b!J%!!!!!!!%!!3-!!!!!!!!!!!!!!!!
"!!!!!!!!!!!"!!!R!!!!-`)"!!!!!!!"!!%$!!!!!!!!!!!!!!!!!3!!!!!!!!!
!!3!!+!!!!$3#!3!!!!!!!3!"!`!!!!!!!!!!!!!!!!%!!!!!!!!!!!%!!#N!!!!
e!J%!!!!!!!%!!3-!!!!!!!!!!!!!!!!"!!!!!!!!!!!"!!!U!!!!0J)"!!!!!!!
"!!%"!!!!!!!!!!!!!!!!!3!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!-!!!!)!!!!!`!!!!La,(ADrrqFN`!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!#!!K0B@028b"38%-J6'PZDf9b!!!!!!!
!!!!!!!!!!!!!!!!D39"36!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"J!!!!3A"`E!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!"J!!!!68e-3J!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!6'PL)%PYF'pbG#"38%-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!69"-4J!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!6'PL)%PYF'pbG#"38%-!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!69G$4!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"J!!!!8P053`!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!"J!!!!9%9B9#jLD!"`Fh-!!!+F1!!!!!!!!!!!!DJpd!!!!!!#8hV
`3Q&XE'p[EL")C@a`!&"1+&!!!!!"U$h3rrrrr3*30aJ!!!!!9%9B9#jM!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!69FJ3bp$+bXJ8&"$!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!9%9B9#jM+bX!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!69FJ3bp$+bXJ8&"$!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!9%9B9#jMB`!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!69FJ3bp$+bXJ8&"$!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!9%9B9#jMF!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!69FJ3bp$+bXJ8&"$!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!9%9B9#jMF(!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!69FJ3bp$+bXJ8&"$!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!9%9B9#jPH(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!9%9B9#jS!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!69FJ3bp$+bXJ8&"$!!!!!!!!!!!!!!!
!!!!!!!!!!!!3!!!!9%9B9#j`!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!69FJ8'&cBf&X)&"33`!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!9%9B9#j`BA-!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!69FJ8'&cBf&X)&"33`!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!9%9B9#j`BfJ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!69FJ3bp$+bXJ8&"$!!!!!!!!!!!!!!!!!!!!!!!!!!#!!!!!9%9B9#j`BfJV+`!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!69FJ3bp$+bXJ8&"$!!!!!!!!!!!!!!!
!!!!!!!!!!!#!!!!!9%9B9#jb!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!8Q9k!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!9%9B9#jc!'K`Fh-
!!!+F1!!!!!!!!!!!!DJpd!!!!!!#8hV`8&"$3A0Y!'i"F4KJF&"1+&!!!!!"U$h
3rrrrr3*30aJ!!!!!@%024J!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!@%024NBJ5@e`Eh*d)&"33`!!!!!!!!!!!!!!!!!!!!!!!!!!C'pMG3!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!"J!!!!FR0bB`!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"J!!!!FfKXBJ!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!8%9')%PYF'pbG#"38%-!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!Fh4eBJ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!8%9')%PYF'pbG#"38%-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!#jNEf-!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!"3!!!!6@&M6e-J0MK,)%aTEQYPFJ!!!!!!!!!!!!!!!!!!!!!!'N&
38%`!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!B!!!!%&`F'`!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!B!!!!%e
06%)!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%aTBL"*EA"[FR3J0MK
,!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%e36%B!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!%aTBL"*EA"[FR3J0MK,!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%e
A3d3!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!B!!!!%p#5L!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!%e39b"*EA"[FR3J0MK,!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&*
68N-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!B!!!!&4&@&3ZBQJ!F(0c!!!#R$J!!!!!!!!!!!'
S2G!!!!!!!P0km%*KE'a[EfiJ5'9XF!"36LK3!!!!!DJpd2rrrrd#8$FB!!!!!&4
&@&3ZB`!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%eA)%-[3bXV)$Bi5`!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&4&@&3ZBbXV!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!%eA)%-[3bXV)$Bi5`!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&4
&@&3ZBf-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%eA)%-[3bXV)$Bi5`!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&4&@&3ZBh!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!%eA)%-[3bXV)$Bi5`!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&4
&@&3ZBh"`!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%eA)%-[3bXV)$Bi5`!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&4&@&3ZCAK`!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&4
&@&3ZD!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%eA)%-[3bXV)$Bi5`!
!!!!!!!!!!!!!!!!!!!!!!!!!%!!!!&4&@&3ZF!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!%eA)&"KFf0KE#!f1%X!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&4
&@&3ZF'&c!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%eA)&"KFf0KE#!f1%X
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&4&@&3ZF'0S!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!%eA)%-[3bXV)$Bi5`!!!!!!!!!!!!!!!!!!!!!!!!!!J!!!!&4
&@&3ZF'0S+bX!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%eA)%-[3bXV)$Bi5`!
!!!!!!!!!!!!!!!!!!!!!!!!!J!!!!&4&@&3ZFJ!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!&*PHJ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&4
&@&3ZFf9R!+JpJ!!#R$K849K8!LjbDA"cF`!!!T`i!!!!!!!!!!!"U$h3!!!!!!*
6H[!$8Q9k!DJp`!&a''!#8%iS!!!!!'4[Bh8!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!B!!!!(*
cFQ-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!B!!!!(0SE')!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!&"&4L"*EA"[FR3J0MK,!!!!!!!!!!!!!!!!!!!!!!!!!!!!!(0
dG@)!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&"&4L"*EA"[FR3J0MK
,!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!ZC'pM!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!8!!!!&G
TEM-b)(Ji0L"-D@jVCA)!!!!!!!!!!!!!!!!!!!!!!!e849K8,Q-!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!"09b"$,d-V+b"i1$B!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!"849K8,Q-V+`!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"09b"
$,d-V+b"i1$B!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"849K8,Q0`!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!"09b"$,d-V+b"i1$B!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!"849K8,Q0`F!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"09b"
$,d-V+b"i1$B!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"849K8,R!!Ef0XpY!!"&(
B!"8b-!!!"'X'h2E3!"6U)2rr")P09b"3BA0MB@`JH$Jf!!!!!!!!!!EFp`!!&1S
J"(ChX!!!!!"849K8,R"KF`"XpY!!"&(B!"8b-!!!"'X'h2E3!"6U)2rr")P09b"
3BA0MB@`JH$Jf!!!!!!!!!!EFp`!!&1SJ"(ChX!!!!!"849K8,R"MD!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!"09b"$,d-V+b"i1$B!!!!!!!!!!!!!!!!!!!!
!!!!!!)!!!!"849K8,R"MD#XV!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"09b"
$,d-V+b"i1$B!!!!!!!!!!!!!!!!!!!!!!!!!!)!!!!"849K8,R*M!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!"09b"AD@j53`!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!"849K8,R*PF`"cF`!!!T`i!!!!!!!!!!!"U$h3!!!!!!*6H["AD@j
5CA-J5@e`Eh*d!%iS8!!!!!'S2G$rrrrp!P!h'!!!!!!!!!!!,Q4[B`!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!,QaTBJ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"-D@)
J5@e`Eh*d)(Ji0J!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!,QpLDJ!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!"2BQSJ5@e`Eh*d)(Ji0J!!!!!!!!!!!!!!!!!
!!!!!!!!!!!"03b"-D@jVCA)!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!63da98`!
ZC'9QE+2!!!+F1!!@I$"SrrG!!IDM`!!@0#!!&NAm!*S"ai3iSr!!&ZlN!!!!!!!
!!!!"pU2`!"Bd)!*Biqa!!!!!68e$5!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!68e-3J!
ZC'pME+2!!!+F1!!@I$"SrrG!!IDM`!!@0#!!&NAm6'PL)%PYF'pbG#!f1%X!!!!
!!!!"pU2`!"Bd)!*Be!J!!!!!69"-4J!ZC'pME+2!!!+F1!!@I$"SrrG!!IDM`!!
@0#!!&NAm6'PL)%PYF'pbG#!f1%X!!!!!!!!"pU2`!"Bd)!*Be!J!!!!!6d*+)!!
ZC'pME+2!!!+F1!!@I$"SrrG!!IDM`!!@0#!!&NAm69"A)%PYF'pbG#!f1%X!!!!
!!!!"pU2`!"Bd)!*Be!J!!!!!9%9B9#jM!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!68-J3bp$+bX!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!9%9B9#j
M+bX!E+2!!!+F1!!@I$"SrrG!!IDM`!!@0#!!&NAm69FJ3bp$+bXJ0MK,!!!!!!!
!!!!"pU2`!"Bd)!*Be!J!!!!!9%9B9#jMB`!VE+2!!!+F1!!@I$"SrrG!!IDM`!!
@0#!!&NAm69FJ3bp$+bXJ0MK,!!!!!!!!!!!"pU2`!"Bd)!*Be!J!!!!!9%9B9#j
ME(-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!68-J3faKFh-J3fpYF'PXCA)
!!!!!!!!!!!!!!!!!!!#!!!!!9%9B9#jMF!!VE+2!!!+F1!!@I$"SrrG!!IDM`!!
@0#!!&NAm69FJ3bp$+bXJ0MK,!!!!!!!!!!!"pU2`!"Bd)!*Be!J!!!!!9%9B9#j
MF(!!E+2!!!+F1!!@I$"SrrG!!IDM`!!@0#!!&NAm69FJ3bp$+bXJ0MK,!!!!!!!
!!!!"pU2`!"Bd)!*Be!J!!!!!9%9B9#jNC@B!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!9%9B9#j
NEf-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!3!!!!9%9B9#jS!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!3!!!!9%9B9#j
`!'0S+b[!!!+F1!!@I$"SrrG!!IDM`!!@0#!!&NAm69FJ8'&cBf&X)$Bi5`!!!!!
!!!!"pU2`!"Bd)!*Be!J!!!!!9%9B9#j`BA-!+b[!!!+F1!!@I$"SrrG!!IDM`!!
@0#!!&NAm69FJ8'&cBf&X)$Bi5`!!!!!!!!!"pU2`!"Bd)!*Be!J!!!!!9%9B9#j
`BfJ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!68-J3bp$+bX!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!#!!!!!9%9B9#j`BfJV+`$!!!+F1!!@I$"SrrG!!IDM`!!
@0#!!&NAm69FJ3bp$+bXJ0MK,!!!!!!!!!!!"pU2`!"Bd)!*Be!L!!!!!9%9B9#j
dF`!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!5Q&fB5"-D@jVCA)!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!$N&38%`!FjZX!DJpJ!!#R$J!&N8N!!!!!!!!!!!!&Za%!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!DJp`!!!!!!#8%iSB!!!!%&`F'`!FjZX!DJpJ!!#R$J!&N8
N!!!!!!!!!!!!&Za%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!DJp`!!!!!!#8%i
SB!!!!%0XFh-!,Q0XBA0c!!!#R$J!!!!!!!!!!!'S2G!!!!!!!P0km%eA)%TKGQ%
!!A%BB("36LKJ!!!!!DJpd2rrrrd#8$FB!!!!!%eA3d3!FjZX!DJpJ!!#R$J!&N8
N!!!!!!!!!!!!&Za%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!DJp`!!!!!!#8%i
SB!!!!&*68N-!FjZX!DJpJ!!#R$J!&N8N!!!!!!!!!!!!&Za%!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!DJp`!!!!!!#8%iSB!!!!&4&@&3ZBQJ!!!!!!!!#R$J!!!!
!!!!!!!'S2G!!!!!!!P0km%*KE'a[EfiJ5'9XF!"36LKJ!!!!!DJpd2rrrrd#8$F
B!!!!!&4&@&3ZD(4YE!#M`!!#R$J!&R``D2rh3!(fSm!!&M3J!"C&r!#D!FH%1+2
`!"EZj!!9Jm3!!!!!!IDMm!!@0#!#@12X!!!!!&4&@&3ZDQ&fB3!!!!!#R$J!!!!
!!!!!!!'S2G!!!!!!!P0km%eA)%TKGQ%!!A%BB("36LKJ!!!!!DJpd2rrrrd#8$F
B!!!!!&4&@&3ZFJ"TF(0c!!!#R$J!!!!!!!!!!!'S2G!!!!!!!P0km&*PHJ"+BAC
K!A%BB("36LKJ!!!!!DJpd2rrrrd#8$FB!!!!!&T*8#!!,RTTF(0c!!!#R$J!!!!
!!!!!!!'S2G!!!!!!!P0km%eA)%TKGQ%!!A%BB("36LKJ!!!!!DJpd2rrrrd#8$F
B!!!!!'4[Bh8!FjZX!DJpJ!!#R$J!&N8N!!!!!!!!!!!!&Za%!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!DJp`!!!!!!#8%iSB!!!!(*cFQ-!FjZX!DJpJ!!#R$J!&N8
N!!!!!!!!!!!!&Za%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!DJp`!!!!!!#8%i
SB!!!!!!!!!!ZBfaKFh-!!!!#R$J!!!!!!!!!!!'S2G!!!!!!!P0km%eA)%TKGQ%
!!A%BB("36LKJ!!!!!DJpd2rrrrd#8$FB!!!!!!!!!!!ZHQP`!(0c!!!#R$J!!!!
!!!!!!!'S2G!!!!!!!P0km%eA)%TKGQ%!!A%BB("36LKJ!!!!!DJpd2rrrrd#8$F
B!!!!!%j[EQ8!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&069"b!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!%!!!!"0B@028b"0CA*RC3!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(39"36!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!"J!!!!3A"`E!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"J!!!
!8P053`!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!"J!!!!9%9B9#jLD!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!3Q&XE'p[EL")C@a`!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!9%9B9#jb!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!8Q9k!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!FR0bB`!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"J!!!
!FfKXBJ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!69FJ5Q&fB84[Bb"-D@jVCA)!!!!!!!!
!!!!!!!!!!!!!$%02M'X!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%e
A)%TKGQ&%Ef-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%0XFh-!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%eA)%TKGQ&%Ef-!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!&*68N-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&*
PHJ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!B!!!!&4&@&3ZBQJ!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%*KE'a[EfiJ5'9XF!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!&4&@&3ZD(4YE!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%!!!!&4&@&3ZDQ&fB3!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%eA)%TKGQ&%Ef-!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!&4&@&3ZFJ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&*
PHJ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&T*8#!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%eA)%TKGQ&%Ef-!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!3!!!!&TTF%B!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%e
A)%TKGQ&%Ef-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!(*cFQ-!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&*PHJ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!B!!!!!!!!!!ZBfaKFh-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%e
A)%TKGQ&%Ef-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!ZHQP`!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%eA)%TKGQ&%Ef-!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!"!!!!!e*26e3!!!!!!!!!!!!!!!!$4e*98!!!!!!!!!!$#NT
KGQ&6Bh*TF(3!!!!J4NP-43%!!!*'58a&!3!!!dC*6%8"!!!%4NP-43%!!!9'58a
&!3!!"NC*6%8"!!!(4NP-43%!!!K'58a&!3!!#8C*6%8"!!!+4NP-43%!!!Y'58a
&!3!!$%C*6%8"!!!04NP-43%!!!j'58a&!3!!$dC*6%8"!!!34NP-43%!!"&'58a
&!3!!%NC*6%8"!!!64NP-43%!!"4'58a&!3!!&8C*6%8"!!!@4NP-43%!!"G'58a
&!3!!'%C*6%8"!!!U4NP-43%!!"P'58a&!3!!'NC*6%8"!!!E4NP-43%!!"a'58a
&!3!!(8C*6%8"!!!H4NP-43%!!"p'58a&!3!!)%G599!!!!!!!!!!!3j"6P0*)%a
TBR*KFQPPF`!!!!0'58a&!3!!*NC*6%8"!!!R4NP-43%!!#K(8P93!!!!!!!!!!)
06@&M)%aTBR*KFQPPF`!!!!0'58a&!3!!)dC*6%8"!!!N4NP-43%!!#PJrrrrrrr
rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrm!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!J!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%"!!%"!3%!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!li!!!3!EA0dFJ!
!!!!!!!!!!!!!!!!!"li!!!-!EA0dE!!!!!!!!!!!!!!!!!!!#Vi!!!%!EA0dEJ!
!!!!!!!!!!!!!!!!!$L!!!!3!EA0dFJ!!!qJ!!!!!!!!!!!!!%L!!!!-!EA0dE!!
!!qJ!!!!!!!!!!!!!#li!!!%!EA0dEJ!!!qJ!!!!!!!!!!!!!!5J!!!!ZF(*PCJ"
0XIN!!!!"!!!!!!!!!9B!!!"+F(*PCJ"0Ud-!!!!#!!!!!!!!!D!!!!)+F(*PCJ"
0(5X!!!!$!!!!!!!!!kS!!!!8F(*PCJ"0I(`!!!!%!!!!!!!!$,i!!!!DF(*PCJ"
0*p3!!!!&!!!!!!!!&5!!!!k!F(*PCJ"05aS!!!!'!!!!!!!!$0J!!!!'F(*PCJ"
-rbS!!!!(!!!!!!!!$0i!!!!BF(*PCJ"0HP!!!!!)!!!!!!!!$2B!!!!+F(*PCJ"
0Rj8!!!!*!!!!!!!!$3!!!!!1F(*PCJ"0G*m!!!!+!!!!!!!!)k!!!!$'F(*PCJ"
0#1S!!!!,!!!!!!!!$3i!!!!kF(*PCJ"0V+F!!!!-!!!!!!!!$8J!!!!-F(*PCJ"
0JYi!!!!0!!!!!!!!*'B!!!(DF(*PCJ"06$3!!!!1!!!!!!!!$93!!!!-F(*PCJ"
0438!!!!2!!!!!!!!*N!!!!93F(*PCJ"0TjN!!!!3!!!!!!!!$Bi!!!!%F(*PCJ"
0U@N!!!!4!!!!!!!!$C)!!!!%F(*PCJ"0X@-!!!!5!!!!!!!!$CB!!!#+F(*PCJ"
0-qS!!!!6!!!!!!!!+j!!!!!!1("bC@B!6EQQ!!!!&!!!!!!!!!eJ!!!!$A"bC@B
!6Ck"!!!!&3!!!!!!!!eY!!!!&("bC@B!6CYM!!!!&J!!!!!!!!f"!!!!#R"bC@B
!63Cr!!!!&`!!!!!!!#[)!!!!a("bC@B!62YA!!!!'!!!!!!!!#b-!!!"&R"bC@B
!6D+U!!!!'3!!!!!!!#fL!!!!U("bC@B!6GG(!!!!'J!!!!!!!#j+!!!!,R"bC@B
!62'p!!!!'`!!!!!!!$6B!!!#$("bC@B!63iS!!!!(!!!!!!!!$EN!!!#4("bC@B
!6HID!!!!(3!!!!!!!#pq!!!!*("bC@B!63eC!!!!(J!!!!!!!#qL!!!!#R"bC@B
!6G6V!!!!(`!!!!!!!#qX!!!!NR"bC@B!656N!!!!)!!!!!!!!$!q!!!!5R"bC@B
!6AqD!!!!)3!!!!!!!$NS!!!'$("bC@B!6F'&!!!!)J!!!!!!!%c5!!!L4("bC@B
!69kd!!!!)`!!!!!!!$5i!!!!)'edFf`!!!!"!!!!!!!!!!!!!$md!!!+b'edF'`
!!!!"!!!!!!!!!!!!!$#k!!!!Q'edE'm!!!!"!!!!!!!!!!!!!#md!!!!%'edF'N
!!!!"!!!!!!!!!!!!!#ji!!!!+'ecG'N!!!!!!!!!!!!!!!!!!$&5!!!#('edCf`
!!!2S!!!!!!!!!!!!!%Rm!!!#,'e`FfN!!!2S!!!!!!!!!!!!!'m@!!!"`&"-Fh3
!635L!!!!*!!!!!!!!#p%!!!!+'ecG'N!!!2S!!!!!!!!!!!!!$0Z!!!"&'edF(-
!!!!"!!!!!!!!!!!!!#kJ!!!!-R"bC@B!6B@B!!!!*3!!!!!!!$#f!!!!"("bC@B
!6BN6!!!!*J!!!!!!!#l5!!!!BR"bC@B!62V(!!!!*`!!!!!!!(&#!!!"%R"bC@B
!$I@3!!!!!#J!!!!!!!"b9!!!",T`FQ9Q!!j0d!!!!#N!!!!!9i8!!!%!!!!"Z`!
!!,X!!!"Y!!""d3SK3dp%49p&C#iaE3!!3G-E3dp%45"&C'PdEh)+5P05C@BZF(*
U-R-ZFh4Y)&0`EfpXCA)Y,5dY,5eKB`)!68e3FN0A588"!2rrrrm!!!!!!!!!!!!
!!!!!!!!!!!#`r,1a!!"`T!!!!LK%49p&C#iaEA!!$`$rrrrrrrm!!!!"%!!!!!!
!!!!5!!!!3G--)8024%9IC@3ZDA4[!!!!3G843dp%45"PC'PdEh)J6QpdCA-'!!!
!3G8!!!`K3dp%49pPC#jTG'm!$`$rrrrrrrm!!!!"%!!!!!!!!!!'!!!!3GN!!!S
KDf0c)ep&!!!!ChdD,NXrj6)`!!3!!!!"!!!!!,$rT51`rk6#!!!!!!!!!!!!!!!
!!!!!!!KhB@aNC@eKFJ!(-5ia,M)Z-J!+5P05C@BZF(*U-J!!!!!C6@&NC5"hBA*
ZD@jRFb"TER4[)'9bFQpbF`!!!!"-qVX!!`!!!!!!!!!!#NT68Q9Q,R"bDM)!"c%
Z-5ib,M)!!!!$,@YL!!p85P0'98ia-ep#8N&13dJ!!!!!!!!!!!!!#@jc,fTc,h*
PCJ!!!3!!!!'l!!!!Z`!!!'d%X[E!+-3!!!!F!%B!!@0VD@3!!!!5E@0fF`!!!"i
!J!!!!!!!!!5bp8J!J!!2!!!!D`!!!!!18(*[DQ9MG'pb)%4KG'%A6@&M3eC6)&C
PFR0TEfiJ8Q9cEh9bBf@NfJ:

299
mozilla/js/ref/Makefile Normal file
View File

@@ -0,0 +1,299 @@
#
# The contents of this file are subject to the Netscape Public License
# Version 1.0 (the "NPL"); you may not use this file except in
# compliance with the NPL. You may obtain a copy of the NPL at
# http://www.mozilla.org/NPL/
#
# Software distributed under the NPL is distributed on an "AS IS" basis,
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
# for the specific language governing rights and limitations under the
# NPL.
#
# The Initial Developer of this code under the NPL is Netscape
# Communications Corporation. Portions created by Netscape are
# Copyright (C) 1998 Netscape Communications Corporation. All Rights
# Reserved.
#
# JSRef GNUmake makefile.
#
# Set os+release dependent make variables
OS_ARCH := $(subst /,_,$(shell uname -s))
# Attempt to differentiate between SunOS 5.4 and x86 5.4
OS_CPUARCH := $(shell uname -m)
ifeq ($(OS_CPUARCH),i86pc)
OS_RELEASE := $(shell uname -r)_$(OS_CPUARCH)
else
OS_RELEASE := $(shell uname -r)
endif
# Virtually all Linux versions are identical.
# Any distinctions are handled in linux.h
ifeq ($(OS_ARCH),Linux)
OS_CONFIG := Linux_All
else
OS_CONFIG := $(OS_ARCH)$(OS_OBJTYPE)$(OS_RELEASE)
endif
ASFLAGS =
DEFINES =
include config/$(OS_CONFIG).mk
ifdef BUILD_OPT
OPTIMIZER += -O
DEFINES += -UDEBUG -DNDEBUG -UDEBUG_$(shell whoami)
OBJDIR_TAG = _OPT
else
ifdef USE_MSVC
OPTIMIZER = -Zi
else
OPTIMIZER = -g
endif
DEFINES += -DDEBUG -DDEBUG_$(shell whoami)
OBJDIR_TAG = _DBG
endif
#DEFINES += -DJS_THREADSAFE
ifdef JS_NO_THIN_LOCKS
DEFINES += -DJS_USE_ONLY_NSPR_LOCKS
endif
# Name of the binary code directories
OBJDIR = $(OS_CONFIG)$(OBJDIR_TAG).OBJ
VPATH = $(OBJDIR)
# Automatic make dependencies file
DEPENDENCIES = $(OBJDIR)/.md
define MAKE_OBJDIR
if test ! -d $(@D); then rm -rf $(@D); mkdir $(@D); fi
endef
# Look in OBJDIR to find prcpucfg.h
INCLUDES = -I$(OBJDIR)
#
# XCFLAGS may be set in the environment or on the gmake command line
#
CFLAGS = $(OPTIMIZER) $(OS_CFLAGS) $(DEFINES) $(INCLUDES) \
-DJSFILE $(XCFLAGS)
LDFLAGS = -lm $(XLDFLAGS) -Lfdlibm -lfdm
# For purify
PURE_CFLAGS = -DXP_UNIX $(OPTIMIZER) $(PURE_OS_CFLAGS) $(DEFINES) \
$(INCLUDES) $(XCFLAGS)
#
# JS file lists
#
PR_HFILES = \
prarena.h \
prassert.h \
prclist.h \
prdtoa.h \
prhash.h \
prlong.h \
prmacos.h \
prosdep.h \
prpcos.h \
prprintf.h \
prtime.h \
prtypes.h \
prunixos.h \
$(NULL)
JS_HFILES = \
jsarray.h \
jsatom.h \
jsbool.h \
jsconfig.h \
jscntxt.h \
jsdate.h \
jsemit.h \
jsfun.h \
jsgc.h \
jsinterp.h \
jslock.h \
jsmath.h \
jsnum.h \
jsobj.h \
jsopcode.h \
jsparse.h \
jsprvtd.h \
jspubtd.h \
jsregexp.h \
jsscan.h \
jsscope.h \
jsscript.h \
jsstr.h \
jsxdrapi.h \
$(NULL)
API_HFILES = \
jsapi.h \
jsdbgapi.h \
$(NULL)
HFILES = $(PR_HFILES) $(JS_HFILES) $(API_HFILES)
PR_CFILES = \
prarena.c \
prassert.c \
prdtoa.c \
prhash.c \
prlog2.c \
prlong.c \
prprintf.c \
prtime.c \
$(NULL)
JS_CFILES = \
jsapi.c \
jsarray.c \
jsatom.c \
jsbool.c \
jscntxt.c \
jsdate.c \
jsdbgapi.c \
jsemit.c \
jsfun.c \
jsgc.c \
jsinterp.c \
jslock.c \
jsmath.c \
jsnum.c \
jsobj.c \
jsopcode.c \
jsparse.c \
jsregexp.c \
jsscan.c \
jsscope.c \
jsscript.c \
jsstr.c \
jsxdrapi.c \
$(NULL)
LIB_CFILES = $(PR_CFILES) $(JS_CFILES)
LIB_ASFILES := $(wildcard *_$(OS_ARCH).s)
PROG_CFILES = js.c
ifdef USE_MSVC
LIB_OBJS = $(addprefix $(OBJDIR)/, $(LIB_CFILES:.c=.obj))
PROG_OBJS = $(addprefix $(OBJDIR)/, $(PROG_CFILES:.c=.obj))
else
LIB_OBJS = $(addprefix $(OBJDIR)/, $(LIB_CFILES:.c=.o))
LIB_OBJS += $(addprefix $(OBJDIR)/, $(LIB_ASFILES:.s=.o))
PROG_OBJS = $(addprefix $(OBJDIR)/, $(PROG_CFILES:.c=.o))
endif
CFILES = $(LIB_CFILES) $(PROG_CFILES)
OBJS = $(LIB_OBJS) $(PROG_OBJS)
ifdef USE_MSVC
LIBRARY = $(OBJDIR)/js32.dll
PROGRAM = $(OBJDIR)/js
else
LIBRARY = $(OBJDIR)/libjs.a
PROGRAM = $(OBJDIR)/js
endif
ifdef USE_MSVC
TARGETS = $(LIBRARY) # $(PROGRAM) not supported for MSVC yet
else
TARGETS = fdlibm/libfdm.a $(LIBRARY) $(PROGRAM)
endif
all: $(TARGETS)
clean:
rm -rf $(OBJS)
cd fdlibm; gmake clean
clobber:
rm -rf $(OBJS) $(TARGETS) $(DEPENDENCIES)
cd fdlibm; gmake clean
depend:
gcc -MM $(CFLAGS) $(JS_CFILES)
fdlibm/libfdm.a:
cd fdlibm; gmake
$(OBJDIR)/%: %.c
@$(MAKE_OBJDIR)
$(CC) -o $@ $(CFLAGS) $*.c $(LDFLAGS)
$(OBJDIR)/%.o: %.c
@$(MAKE_OBJDIR)
$(CC) -o $@ -c $(CFLAGS) $*.c
$(OBJDIR)/%.o: %.s
@$(MAKE_OBJDIR)
$(AS) -o $@ $(ASFLAGS) $*.s
# windows only
$(OBJDIR)/%.obj: %.c
@$(MAKE_OBJDIR)
$(CC) -Fo$(OBJDIR)/ -c $(CFLAGS) $*.c
ifeq ($(OS_ARCH),OS2)
$(LIBRARY): $(LIB_OBJS)
$(AR) $@ $? $(AR_OS2_SUFFIX)
$(RANLIB) $@
else
ifdef USE_MSVC
$(LIBRARY): $(LIB_OBJS)
link.exe $(LIB_LINK_FLAGS) /base:0x61000000 \
/out:"$@" /pdb:"$(OBJDIR)/js32.pdb" /implib:"$(OBJDIR)/js32.lib" $?
else
$(LIBRARY): $(LIB_OBJS)
$(AR) rv $@ $?
$(RANLIB) $@
endif
endif
#NSPR_LIBRARY = ../../dist/$(OBJDIR)/lib/libnspr21.so
NSPR_LIBRARY =
$(PROGRAM): $(PROG_OBJS) $(LIBRARY)
$(CC) -o $@ $(CFLAGS) $(PROG_OBJS) $(LIBRARY) $(NSPR_LIBRARY) $(LDFLAGS)
$(PROGRAM).pure: $(PROG_OBJS) $(LIBRARY)
purify $(PUREFLAGS) \
$(CC) -o $@ $(PURE_OS_CFLAGS) $(PROG_OBJS) $(LIBRARY) $(LDFLAGS)
$(HFILES) $(CFILES): $(OBJDIR)/prcpucfg.h
ifdef PREBUILT_CPUCFG
$(OBJDIR)/prcpucfg.h: prcpucfg.h
cp prcpucfg.h $(OBJDIR)
else
$(OBJDIR)/prcpucfg.h: $(OBJDIR)/prcpucfg
rm -f $@
$(OBJDIR)/prcpucfg > $@
$(OBJDIR)/prcpucfg: $(OBJDIR)/prcpucfg.o
$(CC) -o $@ $(OBJDIR)/prcpucfg.o
endif
#
# Hardwire dependencies on jsopcode.def
#
jsopcode.h jsopcode.c: jsopcode.def
-include $(DEPENDENCIES)
TARNAME = jsref.tar
TARFILES = files `cat files`
tar:
tar cvf $(TARNAME) $(TARFILES)
gzip $(TARNAME)
SUFFIXES: .i
%.i: %.c
$(CC) -C -E $(CFLAGS) $< > $*.i

674
mozilla/js/ref/README Normal file
View File

@@ -0,0 +1,674 @@
This is the README file for the JavaScript Reference (JSRef) implementation.
It consists of build conventions and instructions, source code conventions, a
design walk-through, and a brief file-by-file description of the source.
JSRef builds a library or DLL containing the JavaScript runtime (compiler,
interpreter, decompiler, garbage collector, atom manager, standard classes).
It then compiles a small "shell" program and links that with the library to
make an interpreter that can be used interactively and with test .js files to
run scripts.
The current version of JSRef lacks a conformance testsuite. We aim to provide
one as soon as possible.
Quick start tip: skip to "Using the JS API" below, build js, and play with the
object named "it" (start by setting 'it.noisy = true').
Brendan Eich, 9/17/96
------------------------------------------------------------------------------
Build conventions:
- On Windows, use MSDEV4.2 (js*.mdp) or 5.0 (js*.mak).
- On Mac, use CodeWarrior 1.x (JSRef.prj.hqx) or 2 (JSRef.prj2.hqx).
- On Unix, use vendor cc or gcc (ftp://prep.ai.mit.edu/pub/gnu) for compiling,
and use gmake for building.
To compile optimized code, pass BUILD_OPT=1 on the nmake/gmake command line
or preset it in the environment or makefile. The C preprocessor macro DEBUG
will be undefined, and NDEBUG (archaic Unix-ism for "No Debugging") will be
defined. Without BUILD_OPT, DEBUG is predefined and NDEBUG is undefined.
On Unix, your own debug flag, DEBUG_$USER, will be defined or undefined as
BUILD_OPT is unset or set.
(Linux autoconf support way overdue; coming some day soon, I promise.)
- To add C compiler options from the make command line, set XCFLAGS=-Dfoo.
To predefine -D or -U options in the makefile, set DEFINES.
To predefine -I options in the makefile, set INCLUDES.
- To turn on GC instrumentation, define JS_GCMETER.
- To enable multi-threaded execution, define JS_THREADSAFE and flesh out the
stubs and required headers in jslock.c/.h. See the JS API docs for more.
- To turn on the arena package's instrumentation, define PR_ARENAMETER.
- To turn on the hash table package's metering, define PR_HASHMETER.
Naming and coding conventions:
- Public function names begin with JS_ followed by capitalized "intercaps",
e.g. JS_NewObject.
- Extern but library-private function names use a js_ prefix and mixed case,
e.g. js_LookupSymbol.
- Most static function names have unprefixed, mixed-case names: GetChar.
- But static native methods of JS objects have lowercase, underscore-separated
or intercaps names, e.g., str_indexOf.
- And library-private and static data use underscores, not intercaps (but
library-private data do use a js_ prefix).
- Scalar type names are lowercase and js-prefixed: jsdouble.
- Aggregate type names are JS-prefixed and mixed-case: JSObject.
- Macros are generally ALL_CAPS and underscored, to call out potential
side effects, multiple uses of a formal argument, etc.
- Four spaces of indentation per statement nesting level.
- Tabs are taken to be eight spaces, and an Emacs magic comment at the top of
each file tries to help. If you're using MSVC or similar, you'll want to
set tab width to 8, or convert these files to be space-filled.
- DLL entry points have their return type expanded within a PR_PUBLIC_API()
macro call, to get the right Windows secret type qualifiers in the right
places for both 16- and 32-bit builds.
- Callback functions that might be called from a DLL are similarly macroized
with PR_STATIC_CALLBACK (if the function otherwise would be static to hide
its name) or PR_CALLBACK (this macro takes no type argument; it should be
used after the return type and before the function name).
Using the JS API:
- Starting up:
/*
* Tune this to avoid wasting space for shallow stacks, while saving on
* malloc overhead/fragmentation for deep or highly-variable stacks.
*/
#define STACK_CHUNK_SIZE 8192
JSRuntime *rt;
JSContext *cx;
/* You need a runtime and one or more contexts to do anything with JS. */
rt = JS_Init(1000000L);
if (!rt)
fail("can't create JavaScript runtime");
cx = JS_NewContext(rt, STACK_CHUNK_SIZE);
if (!cx)
fail("can't create JavaScript context");
/*
* The context definitely wants a global object, in order to have standard
* classes and functions like Date and parseInt. See below for details on
* JS_NewObject.
*/
JSObject *globalObj;
globalObj = JS_NewObject(cx, &my_global_class, 0, 0);
JS_InitStandardClasses(cx, globalObj);
- Defining objects and properties:
/* Statically initialize a class to make "one-off" objects. */
JSClass my_class = {
"MyClass",
/* All of these can be replaced with the corresponding JS_*Stub
function pointers. */
my_addProperty, my_delProperty, my_getProperty, my_setProperty,
my_enumerate, my_resolve, my_convert, my_finalize
};
JSObject *obj;
/*
* Define an object named in the global scope that can be enumerated by
* for/in loops. The parent object is passed as the second argument, as
* with all other API calls that take an object/name pair. The prototype
* passed in is null, so the default object prototype will be used.
*/
obj = JS_DefineObject(cx, globalObj, "myObject", &my_class, 0,
JSPROP_ENUMERATE);
/*
* Define a bunch of properties with a JSPropertySpec array statically
* initialized and terminated with a null-name entry. Besides its name,
* each property has a "tiny" identifier (MY_COLOR, e.g.) that can be used
* in switch statements (in a common my_getProperty function, for example).
*/
enum my_tinyid {
MY_COLOR, MY_HEIGHT, MY_WIDTH, MY_FUNNY, MY_ARRAY, MY_RDONLY
};
static JSPropertySpec my_props[] = {
{"color", MY_COLOR, JSPROP_ENUMERATE},
{"height", MY_HEIGHT, JSPROP_ENUMERATE},
{"width", MY_WIDTH, JSPROP_ENUMERATE},
{"funny", MY_FUNNY, JSPROP_ENUMERATE},
{"array", MY_ARRAY, JSPROP_ENUMERATE},
{"rdonly", MY_RDONLY, JSPROP_READONLY},
{0}
};
JS_DefineProperties(cx, obj, my_props);
/*
* Given the above definitions and call to JS_DefineProperties, obj will
* need this sort of "getter" method in its class (my_class, above). See
* the example for the "It" class in js.c.
*/
static JSBool
my_getProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp)
{
if (JSVAL_IS_INT(id)) {
switch (JSVAL_TO_INT(id)) {
case MY_COLOR: *vp = . . .; break;
case MY_HEIGHT: *vp = . . .; break;
case MY_WIDTH: *vp = . . .; break;
case MY_FUNNY: *vp = . . .; break;
case MY_ARRAY: *vp = . . .; break;
case MY_RDONLY: *vp = . . .; break;
}
}
return JS_TRUE;
}
- Defining functions:
/* Define a bunch of native functions first: */
static JSBool
my_abs(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
jsdouble x, z;
if (!JS_ValueToNumber(cx, argv[0], &x))
return JS_FALSE;
z = (x < 0) ? -x : x;
return JS_NewDoubleValue(cx, z, rval);
}
. . .
/*
* Use a JSFunctionSpec array terminated with a null name to define a
* bunch of native functions.
*/
static JSFunctionSpec my_functions[] = {
/* name native nargs */
{"abs", my_abs, 1},
{"acos", my_acos, 1},
{"asin", my_asin, 1},
. . .
{0}
};
/*
* Pass a particular object to define methods for it alone. If you pass
* a prototype object, the methods will apply to all instances past and
* future of the prototype's class (see below for classes).
*/
JS_DefineFunctions(cx, globalObj, my_functions);
- Defining classes:
/*
* This pulls together the above API elements by defining a constructor
* function, a prototype object, and properties of the prototype and of
* the constructor, all with one API call.
*
* Initialize a class by defining its constructor function, prototype, and
* per-instance and per-class properties. The latter are called "static"
* below by analogy to Java. They are defined in the constructor object's
* scope, so that 'MyClass.myStaticProp' works along with 'new MyClass()'.
*
* JS_InitClass takes a lot of arguments, but you can pass null for any of
* the last four if there are no such properties or methods.
*
* Note that you do not need to call JS_InitClass to make a new instance of
* that class -- otherwise there would be a chicken-and-egg problem making
* the global object -- but you should call JS_InitClass if you require a
* constructor function for script authors to call via new, and/or a class
* prototype object ('MyClass.prototype') for authors to extend with new
* properties at run-time.
*/
protoObj = JS_InitClass(cx, globalObj, &my_class,
/* native constructor function and min arg count */
MyClass, 0,
/* prototype object properties and methods -- these
will be "inherited" by all instances through
delegation up the instance's prototype link. */
my_props, my_methods,
/* class constructor properties and methods */
my_static_props, my_static_methods);
- Running scripts:
/* These should indicate source location for diagnostics. */
char *filename;
uintN lineno;
/*
* The return value comes back here -- if it could be a GC thing, you must
* add it to the GC's "root set" with JS_AddRoot(cx, &thing) where thing
* is a JSString *, JSObject *, or jsdouble *, and remove the root before
* rval goes out of scope, or when rval is no longer needed.
*/
jsval rval;
JSBool ok;
/*
* Some example source in a C string. Larger, non-null-terminated buffers
* can be used, if you pass the buffer length to JS_EvaluateScript.
*/
char *source = "x * f(y)";
ok = JS_EvaluateScript(cx, globalObj, source, strlen(source),
filename, lineno, &rval);
if (ok) {
/* Should get a number back from the example source. */
jsdouble d;
ok = JS_ValueToNumber(cx, rval, &d);
. . .
}
- Calling functions:
/* Call a global function named "foo" that takes no arguments. */
ok = JS_CallFunctionName(cx, globalObj, "foo", 0, 0, &rval);
jsval argv[2];
/* Call a function in obj's scope named "method", passing two arguments. */
argv[0] = . . .;
argv[1] = . . .;
ok = JS_CallFunctionName(cx, obj, "method", 2, argv, &rval);
- Shutting down:
/* For each context you've created: */
JS_DestroyContext(cx);
/* And finally: */
JS_Finish(rt);
- Debugging API
See the trap, untrap, watch, unwatch, line2pc, and pc2line commands in js.c.
Also the (scant) comments in jsdbgapi.h.
Design walk-through:
This section must be brief for now -- it could easily turn into a book.
- JS "JavaScript Proper"
JS modules declare and implement the JavaScript compiler, interpreter,
decompiler, GC and atom manager, and standard classes.
JavaScript uses untyped bytecode and runtime type tagging of data values.
The jsval type is a signed machine word that contains either a signed integer
value (if the low bit is set), or a type-tagged pointer or boolean value (if
the low bit is clear). Tagged pointers all refer to 8-byte-aligned things in
the GC heap.
Objects consist of a possibly shared structural description, called the map
or scope; and unshared property values in a vector, called the slots. Object
properties are associated with nonnegative integers stored in jsvals, or with
atoms (unique string descriptors) if named by an identifier or a non-integral
index expression.
Scripts contain bytecode, source annotations, and a pool of string, number,
and identifier literals. Functions are objects that extend scripts or native
functions with formal parameters, a literal syntax, and a distinct primitive
type ("function").
The compiler consists of a recursive-descent parser and a random-logic rather
than table-driven lexical scanner. Semantic and lexical feedback are used to
disambiguate hard cases such as missing semicolons, assignable expressions
("lvalues" in C parlance), etc. The parser generates bytecode as it parses,
using fixup lists for downward branches and code buffering and rewriting for
exceptional cases such as for loops. It attempts no error recovery.
The interpreter executes the bytecode of top-level scripts, and calls itself
indirectly to interpret function bodies (which are also scripts). All state
associated with an interpreter instance is passed through formal parameters
to the interpreter entry point; most implicit state is collected in a type
named JSContext. Therefore, all API and almost all other functions in JSRef
take a JSContext pointer as their first argument.
The decompiler translates postfix bytecode into infix source by consulting a
separate byte-sized code, called source notes, to disambiguate bytecodes that
result from more than one grammatical production.
The GC is a mark-and-sweep, non-conservative (perfect) collector. It can
allocate only fixed-sized things -- the current size is two machine words.
It is used to hold JS object and string descriptors (but not property lists
or string bytes), and double-precision floating point numbers. It runs
automatically only when maxbytes (as passed to JS_Init) bytes of GC things
have been allocated and another thing-allocation request is made. JS API
users should call JS_GC or JS_MaybeGC between script executions or from the
branch callback, as often as necessary.
An important point about the GC's "perfection": you must add roots for new
objects created by your native methods if you store references to them into
a non-JS structure in the malloc heap or in static data. Also, if you make
a new object in a native method, but do not store it through the rval result
parameter (see math_abs in the "Using the JS API" section above) so that it
is in a known root, the object is guaranteed to survive only until another
new object is created. Either lock the first new object when making two in
a row, or store it in a root you've added, or store it via rval.
The atom manager consists of a hash table associating strings uniquely with
scanner/parser information such as keyword type, index in script or function
literal pool, etc. Atoms play three roles in JSRef: as literals referred to
by unaligned 16-bit immediate bytecode operands, as unique string descriptors
for efficient property name hashing, and as members of the root GC set for
perfect GC. This design therefore requires atoms to be manually reference
counted, from script literal pools (JSAtomMap) and object symbol (JSSymbol)
entry keys.
Native objects and methods for arrays, booleans, dates, functions, numbers,
and strings are implemented using the JS API and certain internal interfaces
used as "fast paths".
In general, errors are signaled by false or unoverloaded-null return values,
and are reported using JS_ReportError or one of its variants by the lowest
level in order to provide the most detail. Client code can substitute its
own error reporting function and suppress errors, or reflect them into Java
or some other runtime system as exceptions, GUI dialogs, etc.
- PR "Portable Runtime"
PR modules declare and implement fundamental representation types and macros,
arenas, hash tables, 64-bit integers, double-precision floating point to
string and back conversions, and date/time functions that are used by the JS
modules. The PR code is independent of JavaScript and can be used without
linking with the JS code.
In general, errors are signaled by false or unoverloaded-null return values,
but are not reported. Therefore, JS calls to PR functions check returns and
report errors as specifically as possible.
File walk-through:
- jsapi.c, jsapi.h
The public API to be used by almost all client code.
If your client code can't make do with jsapi.h, and must reach into a friend
or private js* file, please let us know so we can extend jsapi.h to include
what you need in a fashion that we can support over the long run.
- jspubtd.h, jsprvtd.h
These files exist to group struct and scalar typedefs so they can be used
everywhere without dragging in struct definitions from N different files.
The jspubtd.h file contains public typedefs, and is included by jsapi.h.
The jsprvtd.h file contains private typedefs and is included by various .h
files that need type names, but not type sizes or declarations.
- jsdbgapi.c, jsdbgapi.h
The Debugging API, still very much under development. Provided so far:
- Traps, with which breakpoints, single-stepping, step over, step out, and
so on can be implemented. The debugger will have to consult jsopcode.def
on its own to figure out where to plant trap instructions to implement
functions like step out, but a future jsdbgapi.h will provide convenience
interfaces to do these things.
At most one trap per bytecode can be set. When a script (JSScript) is
destroyed, all traps set in its bytecode are cleared.
- Watchpoints, for intercepting set operations on properties and running a
debugger-supplied function that receives the old value and a pointer to
the new one, which it can use to modify the new value being set.
- Line number to PC and back mapping functions. The line-to-PC direction
"rounds" toward the next bytecode generated from a line greater than or
equal to the input line, and may return the PC of a for-loop update part,
if given the line number of the loop body's closing brace. Any line after
the last one in a script or function maps to a PC one byte beyond the last
bytecode in the script.
An example, from perfect.js:
14 function perfect(n)
15 {
16 print("The perfect numbers up to " + n + " are:");
17
18 // We build sumOfDivisors[i] to hold a string expression for
19 // the sum of the divisors of i, excluding i itself.
20 var sumOfDivisors = new ExprArray(n+1,1);
21 for (var divisor = 2; divisor <= n; divisor++) {
22 for (var j = divisor + divisor; j <= n; j += divisor) {
23 sumOfDivisors[j] += " + " + divisor;
24 }
25 // At this point everything up to 'divisor' has its sumOfDivisors
26 // expression calculated, so we can determine whether it's perfect
27 // already by evaluating.
28 if (eval(sumOfDivisors[divisor]) == divisor) {
29 print("" + divisor + " = " + sumOfDivisors[divisor]);
30 }
31 }
32 delete sumOfDivisors;
33 print("That's all.");
34 }
The line number to PC and back mappings can be tested using the js program
with the following script:
load("perfect.js")
print(perfect)
dis(perfect)
print()
for (var ln = 0; ln <= 40; ln++) {
var pc = line2pc(perfect,ln)
var ln2 = pc2line(perfect,pc)
print("\tline " + ln + " => pc " + pc + " => line " + ln2)
}
The result of the for loop over lines 0 to 40 inclusive is:
line 0 => pc 0 => line 16
line 1 => pc 0 => line 16
line 2 => pc 0 => line 16
line 3 => pc 0 => line 16
line 4 => pc 0 => line 16
line 5 => pc 0 => line 16
line 6 => pc 0 => line 16
line 7 => pc 0 => line 16
line 8 => pc 0 => line 16
line 9 => pc 0 => line 16
line 10 => pc 0 => line 16
line 11 => pc 0 => line 16
line 12 => pc 0 => line 16
line 13 => pc 0 => line 16
line 14 => pc 0 => line 16
line 15 => pc 0 => line 16
line 16 => pc 0 => line 16
line 17 => pc 19 => line 20
line 18 => pc 19 => line 20
line 19 => pc 19 => line 20
line 20 => pc 19 => line 20
line 21 => pc 36 => line 21
line 22 => pc 53 => line 22
line 23 => pc 74 => line 23
line 24 => pc 92 => line 22
line 25 => pc 106 => line 28
line 26 => pc 106 => line 28
line 27 => pc 106 => line 28
line 28 => pc 106 => line 28
line 29 => pc 127 => line 29
line 30 => pc 154 => line 21
line 31 => pc 154 => line 21
line 32 => pc 161 => line 32
line 33 => pc 172 => line 33
line 34 => pc 172 => line 33
line 35 => pc 172 => line 33
line 36 => pc 172 => line 33
line 37 => pc 172 => line 33
line 38 => pc 172 => line 33
line 39 => pc 172 => line 33
line 40 => pc 172 => line 33
- jsconfig.h
Various configuration macros defined as 0 or 1 depending on how JS_VERSION
is defined (as 10 for JavaScript 1.0, 11 for JavaScript 1.1, etc.). Not all
macros are tested around related code yet. In particular, JS 1.0 support is
missing from JSRef. JS 1.2 support will appear in a future JSRef release.
- js.c
The "JS shell", a simple interpreter program that uses the JS API and more
than a few internal interfaces (some of these internal interfaces could be
replaced by jsapi.h calls). The js program built from this source provides
a test vehicle for evaluating scripts and calling functions, trying out new
debugger primitives, etc.
- jsarray.c, jsarray.h
- jsbool.c, jsbool.h
- jsdate.c, jsdate.h
- jsfun.c, jsfun.h
- jsmath.c, jsmath.h
- jsnum.c, jsnum.h
- jsstr.c, jsstr.h
These file pairs implement the standard classes and (where they exist) their
underlying primitive types. They have similar structure, generally starting
with class definitions and continuing with internal constructors, finalizers,
and helper functions.
- jsobj.c, jsobj.h
- jsscope.c, jsscope.h
These two pairs declare and implement the JS object system. All of the
following happen here:
- creating objects by class and prototype, and finalizing objects;
- defining, looking up, getting, setting, and deleting properties;
- creating and destroying properties and binding names to them.
The details of an object map (scope) are mostly hidden in jsscope.[ch],
where scopes start out as linked lists of symbols, and grow after some
threshold into PR hash tables.
- jsatom.c, jsatom.h
The atom manager. Contains well-known string constants, their atoms, the
global atom hash table and related state, the js_Atomize() function that
turns a counted string of bytes into an atom, and literal pool (JSAtomMap)
methods.
- jsgc.c, jsgc.h
[TBD]
- jsinterp.c, jsinterp.h
- jscntxt.c, jscntxt.h
The bytecode interpreter, and related functions such as Call and AllocStack,
live in interp.c. The JSContext constructor and destructor are factored out
into jscntxt.c for minimal linking when the compiler part of JS is split from
the interpreter part into a separate program.
- jsemit.c, jsemit.h
- jsopcode.def, jsopcode.c, jsopcode.h
- jsparse.c, jsparse.h
- jsscan.c, jsscan.h
- jsscript.c, jsscript.h
Compiler and decompiler modules. The jsopcode.def file is a C preprocessor
source that defines almost everything there is to know about JS bytecodes.
See its major comment for how to use it. For now, a debugger will use it
and its dependents such as jsopcode.h directly, but over time we intend to
extend jsdbgapi.h to hide uninteresting details and provide conveniences.
The code generator is split across paragraphs of code in jsparse.c, and the
utility methods called on JSCodeGenerator appear in jsemit.c. Source notes
generated by jsparse.c and jsemit.c are used in jsscript.c to map line number
to program counter and back.
- prtypes.h, prlog2.c
Fundamental representation types and utility macros. This file alone among
all .h files in JSRef must be included first by .c files. It is not nested
in .h files, as other prerequisite .h files generally are, since it is also
a direct dependency of most .c files and would be over-included if nested in
addition to being directly included.
The one "not-quite-a-macro macro" is the PR_CeilingLog2 function in prlog2.c.
- prarena.c, prarena.h
Last-In-First-Out allocation macros that amortize malloc costs and allow for
en-masse freeing. See the paper mentioned in prarena.h's major comment.
- prassert.c, prassert.h
The PR_ASSERT macro is used throughout JSRef source as a proof device to make
invariants and preconditions clear to the reader, and to hold the line during
maintenance and evolution against regressions or violations of assumptions
that it would be too expensive to test unconditionally at run-time. Certain
assertions are followed by run-time tests that cope with assertion failure,
but only where I'm too smart or paranoid to believe the assertion will never
fail...
- prclist.h
Doubly-linked circular list struct and macros.
- prcpucfg.c
This standalone program generates prcpucfg.h, a header file containing bytes
per word and other constants that depend on CPU architecture and C compiler
type model. It tries to discover most of these constants by running its own
experiments on the build host, so if you are cross-compiling, beware.
- prdtoa.c, prdtoa.h
David Gay's portable double-precision floating point to string conversion
code, with Permission To Use notice included.
- prhash.c, prhash.h
Portable, extensible hash tables. These use multiplicative hash for strength
reduction over division hash, yet with very good key distribution over power
of two table sizes. Collisions resolve via chaining, so each entry burns a
malloc and can fragment the heap.
- prlong.c, prlong.h
64-bit integer emulation, and compatible macros that use C's long long type
where it exists (my last company mapped long long to a 128-bit type, but no
real architecture does 128-bit ints yet).
- prosdep.h, prmacos.h, prpcos.h, prunixos.h, os/*.h
A bunch of annoying OS dependencies rationalized into a few "feature-test"
macros such as HAVE_LONG_LONG.
- prprintf.c, prprintf.h
Portable, buffer-overrun-resistant sprintf and friends.
For no good reason save lack of time, the %e, %f, and %g formats cause your
system's native sprintf, rather than PR_dtoa, to be used. This bug doesn't
affect JSRef, because it uses its own PR_dtoa call in jsnum.c to convert
from double to string, but it's a bug that we'll fix later, and one you
should be aware of if you intend to use a PR_*printf function with your own
floating type arguments -- various vendor sprintf's mishandle NaN, +/-Inf,
and some even print normal floating values inaccurately.
- prtime.c, prtime.h
Time functions. These interfaces are named in a way that makes local vs.
universal time confusion likely. Caveat emptor, and we're working on it.
To make matters worse, Java (and therefore JavaScript) uses "local" time
numbers (offsets from the epoch) in its Date class.

9
mozilla/js/ref/TODO Normal file
View File

@@ -0,0 +1,9 @@
- scriptable in jsref
- exposed w/o java in js
- immutable scopes
- so can revive SCOPE_TABLE stuff
- fast-as-prop-cache inline scopes for native objects
so elim prop-cache
- views
- global vars in ssjs object model
- html object model

View File

@@ -0,0 +1,56 @@
#
# The contents of this file are subject to the Netscape Public License
# Version 1.0 (the "NPL"); you may not use this file except in
# compliance with the NPL. You may obtain a copy of the NPL at
# http://www.mozilla.org/NPL/
#
# Software distributed under the NPL is distributed on an "AS IS" basis,
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
# for the specific language governing rights and limitations under the
# NPL.
#
# The Initial Developer of this code under the NPL is Netscape
# Communications Corporation. Portions created by Netscape are
# Copyright (C) 1998 Netscape Communications Corporation. All Rights
# Reserved.
#
# Config stuff for IRIX
#
CPU_ARCH = mips
GFX_ARCH = x
RANLIB = /bin/true
#NS_USE_GCC = 1
ifdef NS_USE_GCC
CC = gcc
CCC = g++
AS = $(CC) -x assembler-with-cpp
ODD_CFLAGS = -Wall -Wno-format
ifdef BUILD_OPT
OPTIMIZER = -O6
endif
else
ifeq ($(OS_RELEASE),6.2)
CC = cc -32 -DIRIX6_2
endif
ifeq ($(OS_RELEASE),6.3)
CC = cc -32 -DIRIX6_3
endif
CCC = CC
ODD_CFLAGS = -fullwarn -xansi
ifdef BUILD_OPT
OPTIMIZER += -Olimit 4000
endif
endif
# For purify
HAVE_PURIFY = 1
PURE_OS_CFLAGS = $(ODD_CFLAGS) -DXP_UNIX -DSVR4 -DSW_THREADS -DIRIX
OS_CFLAGS = $(PURE_OS_CFLAGS) -MDupdate $(DEPENDENCIES)
BSDECHO = echo
MKSHLIB = $(LD) -shared

View File

@@ -0,0 +1,20 @@
#
# The contents of this file are subject to the Netscape Public License
# Version 1.0 (the "NPL"); you may not use this file except in
# compliance with the NPL. You may obtain a copy of the NPL at
# http://www.mozilla.org/NPL/
#
# Software distributed under the NPL is distributed on an "AS IS" basis,
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
# for the specific language governing rights and limitations under the
# NPL.
#
# The Initial Developer of this code under the NPL is Netscape
# Communications Corporation. Portions created by Netscape are
# Copyright (C) 1998 Netscape Communications Corporation. All Rights
# Reserved.
#
# Config stuff for IRIX5.3
#
include config/IRIX.mk

View File

@@ -0,0 +1,20 @@
#
# The contents of this file are subject to the Netscape Public License
# Version 1.0 (the "NPL"); you may not use this file except in
# compliance with the NPL. You may obtain a copy of the NPL at
# http://www.mozilla.org/NPL/
#
# Software distributed under the NPL is distributed on an "AS IS" basis,
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
# for the specific language governing rights and limitations under the
# NPL.
#
# The Initial Developer of this code under the NPL is Netscape
# Communications Corporation. Portions created by Netscape are
# Copyright (C) 1998 Netscape Communications Corporation. All Rights
# Reserved.
#
# Config stuff for IRIX6.3
#
include config/IRIX.mk

View File

@@ -0,0 +1,33 @@
#
# The contents of this file are subject to the Netscape Public License
# Version 1.0 (the "NPL"); you may not use this file except in
# compliance with the NPL. You may obtain a copy of the NPL at
# http://www.mozilla.org/NPL/
#
# Software distributed under the NPL is distributed on an "AS IS" basis,
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
# for the specific language governing rights and limitations under the
# NPL.
#
# The Initial Developer of this code under the NPL is Netscape
# Communications Corporation. Portions created by Netscape are
# Copyright (C) 1998 Netscape Communications Corporation. All Rights
# Reserved.
# Config for all versions of Linux
CC = gcc -Wall -Wno-format
CCC = g++ -Wall -Wno-format
RANLIB = echo
#.c.o:
# $(CC) -c -MD $*.d $(CFLAGS) $<
CPU_ARCH = x86 # XXX fixme
GFX_ARCH = x
OS_CFLAGS = -DXP_UNIX -DSVR4 -DSYSV -D_BSD_SOURCE -DPOSIX_SOURCE -DLINUX
OS_LIBS = -lm -lc
ASFLAGS += -x assembler-with-cpp

View File

@@ -0,0 +1,78 @@
#
# The contents of this file are subject to the Netscape Public License
# Version 1.0 (the "NPL"); you may not use this file except in
# compliance with the NPL. You may obtain a copy of the NPL at
# http://www.mozilla.org/NPL/
#
# Software distributed under the NPL is distributed on an "AS IS" basis,
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
# for the specific language governing rights and limitations under the
# NPL.
#
# The Initial Developer of this code under the NPL is Netscape
# Communications Corporation. Portions created by Netscape are
# Copyright (C) 1998 Netscape Communications Corporation. All Rights
# Reserved.
#
# Config stuff for SunOS4.1
#
CC = gcc
CCC = g++
RANLIB = ranlib
#.c.o:
# $(CC) -c -MD $*.d $(CFLAGS) $<
CPU_ARCH = sparc
GFX_ARCH = x
# A pile of -D's to build xfe on sunos
MOZ_CFLAGS = -DSTRINGS_ALIGNED -DNO_REGEX -DNO_ISDIR -DUSE_RE_COMP \
-DNO_REGCOMP -DUSE_GETWD -DNO_MEMMOVE -DNO_ALLOCA \
-DBOGUS_MB_MAX -DNO_CONST
# Purify doesn't like -MDupdate
NOMD_OS_CFLAGS = -DXP_UNIX -Wall -Wno-format -DSW_THREADS -DSUNOS4 -DNEED_SYSCALL \
$(MOZ_CFLAGS)
OS_CFLAGS = $(NOMD_OS_CFLAGS) -MDupdate $(DEPENDENCIES)
OS_LIBS = -ldl -lm
MKSHLIB = $(LD) -L$(MOTIF)/lib
HAVE_PURIFY = 1
MOTIF = /home/motif/usr
MOTIFLIB = -L$(MOTIF)/lib -lXm
INCLUDES += -I/usr/X11R5/include -I$(MOTIF)/include
NOSUCHFILE = /solaris-rm-f-sucks
LOCALE_MAP = $(DEPTH)/cmd/xfe/intl/sunos.lm
EN_LOCALE = en_US
DE_LOCALE = de
FR_LOCALE = fr
JP_LOCALE = ja
SJIS_LOCALE = ja_JP.SJIS
KR_LOCALE = ko
CN_LOCALE = zh
TW_LOCALE = zh_TW
I2_LOCALE = i2
IT_LOCALE = it
SV_LOCALE = sv
ES_LOCALE = es
NL_LOCALE = nl
PT_LOCALE = pt
LOC_LIB_DIR = /usr/openwin/lib/locale
BSDECHO = echo
#
# These defines are for building unix plugins
#
BUILD_UNIX_PLUGINS = 1
DSO_LDOPTS =
DSO_LDFLAGS =

View File

@@ -0,0 +1,65 @@
#
# The contents of this file are subject to the Netscape Public License
# Version 1.0 (the "NPL"); you may not use this file except in
# compliance with the NPL. You may obtain a copy of the NPL at
# http://www.mozilla.org/NPL/
#
# Software distributed under the NPL is distributed on an "AS IS" basis,
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
# for the specific language governing rights and limitations under the
# NPL.
#
# The Initial Developer of this code under the NPL is Netscape
# Communications Corporation. Portions created by Netscape are
# Copyright (C) 1998 Netscape Communications Corporation. All Rights
# Reserved.
#
# Config stuff for SunOS5.3
#
CC = gcc -Wall -Wno-format
CCC = g++ -Wall -Wno-format
#CC = /opt/SUNWspro/SC3.0.1/bin/cc
RANLIB = echo
#.c.o:
# $(CC) -c -MD $*.d $(CFLAGS) $<
CPU_ARCH = sparc
GFX_ARCH = x
OS_CFLAGS = -DXP_UNIX -DSVR4 -DSYSV -DSOLARIS
OS_LIBS = -lsocket -lnsl -ldl
ASFLAGS += -P -L -K PIC -D_ASM -D__STDC__=0
HAVE_PURIFY = 1
NOSUCHFILE = /solaris-rm-f-sucks
ifndef JS_NO_ULTRA
ULTRA_OPTIONS := -xarch=v8plus
ULTRA_OPTIONSD := -DULTRA_SPARC
else
ULTRA_OPTIONS := -xarch=v8
ULTRA_OPTIONSD :=
endif
ifeq ($(OS_CPUARCH),sun4u)
DEFINES += $(ULTRA_OPTIONSD)
ifeq ($(findstring gcc,$(CC)),gcc)
DEFINES += -Wa,$(ULTRA_OPTIONS),$(ULTRA_OPTIONSD)
else
ASFLAGS += $(ULTRA_OPTIONS) $(ULTRA_OPTIONSD)
endif
endif
ifeq ($(OS_CPUARCH),sun4m)
ifeq ($(findstring gcc,$(CC)),gcc)
DEFINES += -Wa,-xarch=v8
else
ASFLAGS += -xarch=v8
endif
endif

View File

@@ -0,0 +1,66 @@
#
# The contents of this file are subject to the Netscape Public License
# Version 1.0 (the "NPL"); you may not use this file except in
# compliance with the NPL. You may obtain a copy of the NPL at
# http://www.mozilla.org/NPL/
#
# Software distributed under the NPL is distributed on an "AS IS" basis,
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
# for the specific language governing rights and limitations under the
# NPL.
#
# The Initial Developer of this code under the NPL is Netscape
# Communications Corporation. Portions created by Netscape are
# Copyright (C) 1998 Netscape Communications Corporation. All Rights
# Reserved.
#
# Config stuff for SunOS5.4
#
ifdef NS_USE_NATIVE
CC = cc
CCC = CC
else
CC = gcc -Wall -Wno-format
CCC = g++ -Wall -Wno-format
endif
RANLIB = echo
CPU_ARCH = sparc
GFX_ARCH = x
OS_CFLAGS = -DXP_UNIX -DSVR4 -DSYSV -D__svr4 -DSOLARIS
OS_LIBS = -lsocket -lnsl -ldl
ASFLAGS += -P -L -K PIC -D_ASM -D__STDC__=0
HAVE_PURIFY = 1
NOSUCHFILE = /solaris-rm-f-sucks
ifndef JS_NO_ULTRA
ULTRA_OPTIONS := -xarch=v8plus
ULTRA_OPTIONSD := -DULTRA_SPARC
else
ULTRA_OPTIONS := -xarch=v8
ULTRA_OPTIONSD :=
endif
ifeq ($(OS_CPUARCH),sun4u)
DEFINES += $(ULTRA_OPTIONSD)
ifeq ($(findstring gcc,$(CC)),gcc)
DEFINES += -Wa,$(ULTRA_OPTIONS),$(ULTRA_OPTIONSD)
else
ASFLAGS += $(ULTRA_OPTIONS) $(ULTRA_OPTIONSD)
endif
endif
ifeq ($(OS_CPUARCH),sun4m)
ifeq ($(findstring gcc,$(CC)),gcc)
DEFINES += -Wa,-xarch=v8
else
ASFLAGS += -xarch=v8
endif
endif

View File

@@ -0,0 +1,65 @@
#
# The contents of this file are subject to the Netscape Public License
# Version 1.0 (the "NPL"); you may not use this file except in
# compliance with the NPL. You may obtain a copy of the NPL at
# http://www.mozilla.org/NPL/
#
# Software distributed under the NPL is distributed on an "AS IS" basis,
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
# for the specific language governing rights and limitations under the
# NPL.
#
# The Initial Developer of this code under the NPL is Netscape
# Communications Corporation. Portions created by Netscape are
# Copyright (C) 1998 Netscape Communications Corporation. All Rights
# Reserved.
#
# Config stuff for SunOS5.5
#
AS = as
CC = gcc -Wall -Wno-format
CCC = g++ -Wall -Wno-format
#CC = /opt/SUNWspro/SC3.0.1/bin/cc
RANLIB = echo
#.c.o:
# $(CC) -c -MD $*.d $(CFLAGS) $<
CPU_ARCH = sparc
GFX_ARCH = x
OS_CFLAGS = -DXP_UNIX -DSVR4 -DSYSV -DSOLARIS -D_SVID_GETTOD
OS_LIBS = -lsocket -lnsl -ldl
ASFLAGS += -P -L -K PIC -D_ASM -D__STDC__=0
HAVE_PURIFY = 1
NOSUCHFILE = /solaris-rm-f-sucks
ifndef JS_NO_ULTRA
ULTRA_OPTIONS := -xarch=v8plus
ULTRA_OPTIONSD := -DULTRA_SPARC
else
ULTRA_OPTIONS := -xarch=v8
ULTRA_OPTIONSD :=
endif
ifeq ($(OS_CPUARCH),sun4u)
DEFINES += $(ULTRA_OPTIONSD)
ifeq ($(findstring gcc,$(CC)),gcc)
DEFINES += -Wa,$(ULTRA_OPTIONS),$(ULTRA_OPTIONSD)
else
ASFLAGS += $(ULTRA_OPTIONS) $(ULTRA_OPTIONSD)
endif
endif
ifeq ($(OS_CPUARCH),sun4m)
ifeq ($(findstring gcc,$(CC)),gcc)
DEFINES += -Wa,-xarch=v8
else
ASFLAGS += -xarch=v8
endif
endif

View File

@@ -0,0 +1,60 @@
#
# The contents of this file are subject to the Netscape Public License
# Version 1.0 (the "NPL"); you may not use this file except in
# compliance with the NPL. You may obtain a copy of the NPL at
# http://www.mozilla.org/NPL/
#
# Software distributed under the NPL is distributed on an "AS IS" basis,
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
# for the specific language governing rights and limitations under the
# NPL.
#
# The Initial Developer of this code under the NPL is Netscape
# Communications Corporation. Portions created by Netscape are
# Copyright (C) 1998 Netscape Communications Corporation. All Rights
# Reserved.
#
# Config stuff for SunOS5.5
#
AS = as
CC = gcc -Wall -Wno-format
CCC = g++ -Wall -Wno-format
#CC = /opt/SUNWspro/SC3.0.1/bin/cc
RANLIB = echo
#.c.o:
# $(CC) -c -MD $*.d $(CFLAGS) $<
CPU_ARCH = sparc
GFX_ARCH = x
OS_CFLAGS = -DXP_UNIX -DSVR4 -DSYSV -DSOLARIS -D_SVID_GETTOD
OS_LIBS = -lsocket -lnsl -ldl
ASFLAGS += -P -L -K PIC -D_ASM -D__STDC__=0
HAVE_PURIFY = 1
NOSUCHFILE = /solaris-rm-f-sucks
ifndef JS_NO_ULTRA
ULTRA_OPTIONS := -xarch=v8plus -DULTRA_SPARC
else
ULTRA_OPTIONS := -xarch=v8
endif
ifeq ($(OS_CPUARCH),sun4u)
ASFLAGS += $(ULTRA_OPTIONS)
ifeq ($(findstring gcc,$(CC)),gcc)
DEFINES += -Wa,$(ULTRA_OPTIONS)
endif
else
ifeq ($(OS_CPUARCH),sun4m)
ASFLAGS += -xarch=v8
ifeq ($(findstring gcc,$(CC)),gcc)
DEFINES += -Wa,-xarch=v8
endif
endif
endif

View File

@@ -0,0 +1,44 @@
#
# The contents of this file are subject to the Netscape Public License
# Version 1.0 (the "NPL"); you may not use this file except in
# compliance with the NPL. You may obtain a copy of the NPL at
# http://www.mozilla.org/NPL/
#
# Software distributed under the NPL is distributed on an "AS IS" basis,
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
# for the specific language governing rights and limitations under the
# NPL.
#
# The Initial Developer of this code under the NPL is Netscape
# Communications Corporation. Portions created by Netscape are
# Copyright (C) 1998 Netscape Communications Corporation. All Rights
# Reserved.
# Config for Windows NT using MS Visual C++ (version?)
CC = cl
RANLIB = echo
#.c.o:
# $(CC) -c -MD $*.d $(CFLAGS) $<
CPU_ARCH = x86 # XXX fixme
GFX_ARCH = win32
OS_CFLAGS = -DXP_PC -DWIN32 -D_WINDOWS -D_WIN32
OS_LIBS = -lm -lc
PREBUILT_CPUCFG = 1
USE_MSVC = 1
LIB_LINK_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\
advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib oldnames.lib /nologo\
/subsystem:windows /dll /incremental:yes /debug\
/machine:I386
CAFEDIR = t:/cafe
JCLASSPATH = $(CAFEDIR)/Java/Lib/classes.zip
JAVAC = $(CAFEDIR)/Bin/sj.exe
JAVAH = $(CAFEDIR)/Java/Bin/javah.exe
JCFLAGS = -I$(CAFEDIR)/Java/Include -I$(CAFEDIR)/Java/Include/win32

View File

@@ -1,35 +1,3 @@
#
# The contents of this file are subject to the Netscape Public
# License Version 1.1 (the "License"); you may not use this file
# except in compliance with the License. You may obtain a copy of
# the License at http://www.mozilla.org/NPL/
#
# Software distributed under the License is distributed on an "AS
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express oqr
# implied. See the License for the specific language governing
# rights and limitations under the License.
#
# The Original Code is Mozilla Communicator client code, released
# March 31, 1998.
#
# The Initial Developer of the Original Code is Sun Microsystems,
# Inc. Portions created by Netscape are
# Copyright (C) 1998 Netscape Communications Corporation. All
# Rights Reserved.
#
# Contributor(s):
#
# Alternatively, the contents of this file may be used under the
# terms of the GNU Public License (the "GPL"), in which case the
# provisions of the GPL are applicable instead of those above.
# If you wish to allow use of your version of this file only
# under the terms of the GPL and not to allow others to use your
# version of this file under the NPL, indicate your decision by
# deleting the provisions above and replace them with the notice
# and other provisions required by the GPL. If you do not delete
# the provisions above, a recipient may use your version of this
# file under either the NPL or the GPL.
#
# @(#)Makefile 1.4 95/01/18
#
@@ -77,25 +45,18 @@
# is double scalb(double, double)
#
DEPTH = ..
include $(DEPTH)/config.mk
#
# Default IEEE libm
#
CFLAGS += -DXP_UNIX $(OPTIMIZER) $(OS_CFLAGS) $(DEFINES) $(INCLUDES) \
-DJSFILE $(XCFLAGS) -D_IEEE_LIBM
CFLAGS = -D_IEEE_LIBM
#CC = cc
CC = gcc
INCFILES = fdlibm.h
.INIT: $(INCFILES)
.KEEP_STATE:
FDLIBM_CFILES = \
k_standard.c k_rem_pio2.c \
src = k_standard.c k_rem_pio2.c \
k_cos.c k_sin.c k_tan.c \
e_acos.c e_acosh.c e_asin.c e_atan2.c \
e_atanh.c e_cosh.c e_exp.c e_fmod.c \
@@ -116,68 +77,34 @@ FDLIBM_CFILES = \
s_rint.c s_scalbn.c s_signgam.c s_significand.c s_sin.c \
s_tan.c s_tanh.c
ifdef USE_MSVC
FDLIBM_OBJS = $(addprefix $(OBJDIR)/, $(FDLIBM_CFILES:.c=.obj))
else
FDLIBM_OBJS = $(addprefix $(OBJDIR)/, $(FDLIBM_CFILES:.c=.o))
endif
obj = k_standard.o k_rem_pio2.o \
k_cos.o k_sin.o k_tan.o \
e_acos.o e_acosh.o e_asin.o e_atan2.o \
e_atanh.o e_cosh.o e_exp.o e_fmod.o \
e_gamma.o e_gamma_r.o e_hypot.o e_j0.o \
e_j1.o e_jn.o e_lgamma.o e_lgamma_r.o \
e_log.o e_log10.o e_pow.o e_rem_pio2.o e_remainder.o \
e_scalb.o e_sinh.o e_sqrt.o \
w_acos.o w_acosh.o w_asin.o w_atan2.o \
w_atanh.o w_cosh.o w_exp.o w_fmod.o \
w_gamma.o w_gamma_r.o w_hypot.o w_j0.o \
w_j1.o w_jn.o w_lgamma.o w_lgamma_r.o \
w_log.o w_log10.o w_pow.o w_remainder.o \
w_scalb.o w_sinh.o w_sqrt.o \
s_asinh.o s_atan.o s_cbrt.o s_ceil.o s_copysign.o \
s_cos.o s_erf.o s_expm1.o s_fabs.o s_finite.o s_floor.o \
s_frexp.o s_ilogb.o s_isnan.o s_ldexp.o s_lib_version.o \
s_log1p.o s_logb.o s_matherr.o s_modf.o s_nextafter.o \
s_rint.o s_scalbn.o s_signgam.o s_significand.o s_sin.o \
s_tan.o s_tanh.o
ifdef USE_MSVC
LIBRARY = $(OBJDIR)/fdlibm.lib
else
LIBRARY = $(OBJDIR)/libfdm.a
endif
all: libfdm.a
define MAKE_OBJDIR
if test ! -d $(@D); then rm -rf $(@D); mkdir $(@D); fi
endef
libfdm.a : $(obj)
ar cru libfdm.a $(obj)
ranlib libfdm.a
all: $(LIBRARY)
source: $(src) README
export:
$(OBJDIR)/%: %.c
@$(MAKE_OBJDIR)
$(CC) -o $@ $(CFLAGS) $*.c $(LDFLAGS)
$(OBJDIR)/%.o: %.c
@$(MAKE_OBJDIR)
$(CC) -o $@ -c $(CFLAGS) $*.c
$(OBJDIR)/%.o: %.s
@$(MAKE_OBJDIR)
$(AS) -o $@ $(ASFLAGS) $*.s
# windows only
$(OBJDIR)/%.obj: %.c
@$(MAKE_OBJDIR)
$(CC) -Fo$(OBJDIR)/ -c $(CFLAGS) $*.c
ifeq ($(OS_ARCH),OS2)
$(LIBRARY): $(FDLIBM_OBJS)
$(AR) $@ $? $(AR_OS2_SUFFIX)
$(RANLIB) $@
else
ifdef USE_MSVC
$(LIBRARY): $(FDLIBM_OBJS)
lib.exe /out:"$@" $?
else
$(LIBRARY): $(FDLIBM_OBJS)
$(AR) rv $@ $?
$(RANLIB) $@
endif
endif
libfdm.a : $(FDLIBM_OBJS)
$(AR) cru $(OBJDIR)/libfdm.a $(FDLIBM_OBJS)
$(RANLIB) $(OBJDIR)/libfdm.a
clean:
rm -rf $(FDLIBM_OBJS)
clobber:
rm -rf $(FDLIBM_OBJS) $(LIBRARY) $(DEPENDENCIES)
SUFFIXES: .i
%.i: %.c
$(CC) -C -E $(CFLAGS) $< > $*.i
clean:
/bin/rm -f $(obj) a.out libfdm.a

View File

@@ -1,36 +1,3 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* The contents of this file are subject to the Netscape Public
* License Version 1.1 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.mozilla.org/NPL/
*
* Software distributed under the License is distributed on an "AS
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express oqr
* implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code is Mozilla Communicator client code, released
* March 31, 1998.
*
* The Initial Developer of the Original Code is Sun Microsystems,
* Inc. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All
* Rights Reserved.
*
* Contributor(s):
*
* Alternatively, the contents of this file may be used under the
* terms of the GNU Public License (the "GPL"), in which case the
* provisions of the GPL are applicable instead of those above.
* If you wish to allow use of your version of this file only
* under the terms of the GPL and not to allow others to use your
* version of this file under the NPL, indicate your decision by
* deleting the provisions above and replace them with the notice
* and other provisions required by the GPL. If you do not delete
* the provisions above, a recipient may use your version of this
* file under either the NPL or the GPL.
*/
/* @(#)e_acos.c 1.3 95/01/18 */
/*
@@ -97,12 +64,7 @@ qS4 = 7.70381505559019352791e-02; /* 0x3FB3B8C5, 0xB12E9282 */
double x;
#endif
{
#ifdef GCC_OPT_BUG
volatile double df;
#else
double df;
#endif
double z,p,q,r,w,s,c;
double z,p,q,r,w,s,c,df;
int hx,ix;
hx = __HI(x);
ix = hx&0x7fffffff;

View File

@@ -1,36 +1,3 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* The contents of this file are subject to the Netscape Public
* License Version 1.1 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.mozilla.org/NPL/
*
* Software distributed under the License is distributed on an "AS
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express oqr
* implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code is Mozilla Communicator client code, released
* March 31, 1998.
*
* The Initial Developer of the Original Code is Sun Microsystems,
* Inc. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All
* Rights Reserved.
*
* Contributor(s):
*
* Alternatively, the contents of this file may be used under the
* terms of the GNU Public License (the "GPL"), in which case the
* provisions of the GPL are applicable instead of those above.
* If you wish to allow use of your version of this file only
* under the terms of the GPL and not to allow others to use your
* version of this file under the NPL, indicate your decision by
* deleting the provisions above and replace them with the notice
* and other provisions required by the GPL. If you do not delete
* the provisions above, a recipient may use your version of this
* file under either the NPL or the GPL.
*/
/* @(#)e_acosh.c 1.3 95/01/18 */
/*

View File

@@ -1,36 +1,3 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* The contents of this file are subject to the Netscape Public
* License Version 1.1 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.mozilla.org/NPL/
*
* Software distributed under the License is distributed on an "AS
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express oqr
* implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code is Mozilla Communicator client code, released
* March 31, 1998.
*
* The Initial Developer of the Original Code is Sun Microsystems,
* Inc. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All
* Rights Reserved.
*
* Contributor(s):
*
* Alternatively, the contents of this file may be used under the
* terms of the GNU Public License (the "GPL"), in which case the
* provisions of the GPL are applicable instead of those above.
* If you wish to allow use of your version of this file only
* under the terms of the GPL and not to allow others to use your
* version of this file under the NPL, indicate your decision by
* deleting the provisions above and replace them with the notice
* and other provisions required by the GPL. If you do not delete
* the provisions above, a recipient may use your version of this
* file under either the NPL or the GPL.
*/
/* @(#)e_asin.c 1.3 95/01/18 */
/*
@@ -83,7 +50,7 @@ static const double
static double
#endif
one = 1.00000000000000000000e+00, /* 0x3FF00000, 0x00000000 */
really_big = 1.000e+300,
huge = 1.000e+300,
pio2_hi = 1.57079632679489655800e+00, /* 0x3FF921FB, 0x54442D18 */
pio2_lo = 6.12323399573676603587e-17, /* 0x3C91A626, 0x33145C07 */
pio4_hi = 7.85398163397448278999e-01, /* 0x3FE921FB, 0x54442D18 */
@@ -106,12 +73,7 @@ qS4 = 7.70381505559019352791e-02; /* 0x3FB3B8C5, 0xB12E9282 */
double x;
#endif
{
#ifdef GCC_OPT_BUG
volatile double w;
#else
double w;
#endif
double t,p,q,c,r,s;
double t,w,p,q,c,r,s;
int hx,ix;
hx = __HI(x);
ix = hx&0x7fffffff;
@@ -122,7 +84,7 @@ qS4 = 7.70381505559019352791e-02; /* 0x3FB3B8C5, 0xB12E9282 */
return (x-x)/(x-x); /* asin(|x|>1) is NaN */
} else if (ix<0x3fe00000) { /* |x|<0.5 */
if(ix<0x3e400000) { /* if |x| < 2**-27 */
if(really_big+x>one) return x;/* return x with inexact if x!=0*/
if(huge+x>one) return x;/* return x with inexact if x!=0*/
} else
t = x*x;
p = t*(pS0+t*(pS1+t*(pS2+t*(pS3+t*(pS4+t*pS5)))));

View File

@@ -1,36 +1,3 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* The contents of this file are subject to the Netscape Public
* License Version 1.1 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.mozilla.org/NPL/
*
* Software distributed under the License is distributed on an "AS
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express oqr
* implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code is Mozilla Communicator client code, released
* March 31, 1998.
*
* The Initial Developer of the Original Code is Sun Microsystems,
* Inc. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All
* Rights Reserved.
*
* Contributor(s):
*
* Alternatively, the contents of this file may be used under the
* terms of the GNU Public License (the "GPL"), in which case the
* provisions of the GPL are applicable instead of those above.
* If you wish to allow use of your version of this file only
* under the terms of the GPL and not to allow others to use your
* version of this file under the NPL, indicate your decision by
* deleting the provisions above and replace them with the notice
* and other provisions required by the GPL. If you do not delete
* the provisions above, a recipient may use your version of this
* file under either the NPL or the GPL.
*/
/* @(#)e_atan2.c 1.3 95/01/18 */
/*
@@ -104,7 +71,7 @@ pi_lo = 1.2246467991473531772E-16; /* 0x3CA1A626, 0x33145C07 */
if(((ix|((lx|-(int)lx)>>31))>0x7ff00000)||
((iy|((ly|-(int)ly)>>31))>0x7ff00000)) /* x or y is NaN */
return x+y;
if(((hx-0x3ff00000)|lx)==0) return fd_atan(y); /* x=1.0 */
if((hx-0x3ff00000|lx)==0) return fd_atan(y); /* x=1.0 */
m = ((hy>>31)&1)|((hx>>30)&2); /* 2*sign(x)+sign(y) */
/* when y = 0 */

View File

@@ -0,0 +1,68 @@
/* @(#)e_atanh.c 1.3 95/01/18 */
/*
* ====================================================
* Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
*
* Developed at SunSoft, a Sun Microsystems, Inc. business.
* Permission to use, copy, modify, and distribute this
* software is freely granted, provided that this notice
* is preserved.
* ====================================================
*
*/
/* __ieee754_atanh(x)
* Method :
* 1.Reduced x to positive by atanh(-x) = -atanh(x)
* 2.For x>=0.5
* 1 2x x
* atanh(x) = --- * log(1 + -------) = 0.5 * log1p(2 * --------)
* 2 1 - x 1 - x
*
* For x<0.5
* atanh(x) = 0.5*log1p(2x+2x*x/(1-x))
*
* Special cases:
* atanh(x) is NaN if |x| > 1 with signal;
* atanh(NaN) is that NaN with no signal;
* atanh(+-1) is +-INF with signal.
*
*/
#include "fdlibm.h"
#ifdef __STDC__
static const double one = 1.0, huge = 1e300;
#else
static double one = 1.0, huge = 1e300;
#endif
static double zero = 0.0;
#ifdef __STDC__
double __ieee754_atanh(double x)
#else
double __ieee754_atanh(x)
double x;
#endif
{
double t;
int hx,ix;
unsigned lx;
hx = __HI(x); /* high word */
lx = __LO(x); /* low word */
ix = hx&0x7fffffff;
if ((ix|((lx|(-(int)lx))>>31))>0x3ff00000) /* |x|>1 */
return (x-x)/(x-x);
if(ix==0x3ff00000)
return x/zero;
if(ix<0x3e300000&&(huge+x)>zero) return x; /* x<2**-28 */
__HI(x) = ix; /* x <- |x| */
if(ix<0x3fe00000) { /* x < 0.5 */
t = x+x;
t = 0.5*fd_log1p(t+t*x/(one-x));
} else
t = 0.5*fd_log1p((x+x)/(one-x));
if(hx>=0) return t; else return -t;
}

View File

@@ -1,36 +1,3 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* The contents of this file are subject to the Netscape Public
* License Version 1.1 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.mozilla.org/NPL/
*
* Software distributed under the License is distributed on an "AS
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express oqr
* implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code is Mozilla Communicator client code, released
* March 31, 1998.
*
* The Initial Developer of the Original Code is Sun Microsystems,
* Inc. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All
* Rights Reserved.
*
* Contributor(s):
*
* Alternatively, the contents of this file may be used under the
* terms of the GNU Public License (the "GPL"), in which case the
* provisions of the GPL are applicable instead of those above.
* If you wish to allow use of your version of this file only
* under the terms of the GPL and not to allow others to use your
* version of this file under the NPL, indicate your decision by
* deleting the provisions above and replace them with the notice
* and other provisions required by the GPL. If you do not delete
* the provisions above, a recipient may use your version of this
* file under either the NPL or the GPL.
*/
/* @(#)e_cosh.c 1.3 95/01/18 */
/*
@@ -72,9 +39,9 @@
#endif
#ifdef __STDC__
static const double one = 1.0, half=0.5, really_big = 1.0e300;
static const double one = 1.0, half=0.5, huge = 1.0e300;
#else
static double one = 1.0, half=0.5, really_big = 1.0e300;
static double one = 1.0, half=0.5, huge = 1.0e300;
#endif
#ifdef __STDC__
@@ -122,5 +89,5 @@ static double one = 1.0, half=0.5, really_big = 1.0e300;
}
/* |x| > overflowthresold, cosh(x) overflow */
return really_big*really_big;
return huge*huge;
}

View File

@@ -1,36 +1,3 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* The contents of this file are subject to the Netscape Public
* License Version 1.1 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.mozilla.org/NPL/
*
* Software distributed under the License is distributed on an "AS
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express oqr
* implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code is Mozilla Communicator client code, released
* March 31, 1998.
*
* The Initial Developer of the Original Code is Sun Microsystems,
* Inc. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All
* Rights Reserved.
*
* Contributor(s):
*
* Alternatively, the contents of this file may be used under the
* terms of the GNU Public License (the "GPL"), in which case the
* provisions of the GPL are applicable instead of those above.
* If you wish to allow use of your version of this file only
* under the terms of the GPL and not to allow others to use your
* version of this file under the NPL, indicate your decision by
* deleting the provisions above and replace them with the notice
* and other provisions required by the GPL. If you do not delete
* the provisions above, a recipient may use your version of this
* file under either the NPL or the GPL.
*/
/* @(#)e_exp.c 1.3 95/01/18 */
/*
@@ -116,7 +83,7 @@ static double
#endif
one = 1.0,
halF[2] = {0.5,-0.5,},
really_big = 1.0e+300,
huge = 1.0e+300,
twom1000= 9.33263618503218878990e-302, /* 2**-1000=0x01700000,0*/
o_threshold= 7.09782712893383973096e+02, /* 0x40862E42, 0xFEFA39EF */
u_threshold= -7.45133219101941108420e+02, /* 0xc0874910, 0xD52D3051 */
@@ -139,19 +106,13 @@ P5 = 4.13813679705723846039e-08; /* 0x3E663769, 0x72BEA4D0 */
double x;
#endif
{
#ifdef GCC_OPT_BUG
volatile int xsb;
#else
int xsb;
#endif
double y,hi,lo,c,t;
int k;
int k,xsb;
unsigned hx;
hx = __HI(x); /* high word of x */
xsb = (hx>>31)&1; /* sign bit of x */
hx &= 0x7fffffff; /* high word of |x| */
k = 0; /* prevent warning */
/* filter out non-finite argument */
if(hx >= 0x40862E42) { /* if |x|>=709.78... */
@@ -160,7 +121,7 @@ P5 = 4.13813679705723846039e-08; /* 0x3E663769, 0x72BEA4D0 */
return x+x; /* NaN */
else return (xsb==0)? x:0.0; /* exp(+-inf)={inf,0} */
}
if(x > o_threshold) return really_big*really_big; /* overflow */
if(x > o_threshold) return huge*huge; /* overflow */
if(x < u_threshold) return twom1000*twom1000; /* underflow */
}
@@ -177,13 +138,9 @@ P5 = 4.13813679705723846039e-08; /* 0x3E663769, 0x72BEA4D0 */
x = hi - lo;
}
else if(hx < 0x3e300000) { /* when |x|<2**-28 */
if(really_big+x>one) return one+x;/* trigger inexact */
if(huge+x>one) return one+x;/* trigger inexact */
}
else {
k = 0;
hi = 0; /* Unused when k = 0, but prevent warning. */
lo = 0;
}
else k = 0;
/* x is now in primary range */
t = x*x;

View File

@@ -1,36 +1,3 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* The contents of this file are subject to the Netscape Public
* License Version 1.1 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.mozilla.org/NPL/
*
* Software distributed under the License is distributed on an "AS
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express oqr
* implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code is Mozilla Communicator client code, released
* March 31, 1998.
*
* The Initial Developer of the Original Code is Sun Microsystems,
* Inc. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All
* Rights Reserved.
*
* Contributor(s):
*
* Alternatively, the contents of this file may be used under the
* terms of the GNU Public License (the "GPL"), in which case the
* provisions of the GPL are applicable instead of those above.
* If you wish to allow use of your version of this file only
* under the terms of the GPL and not to allow others to use your
* version of this file under the NPL, indicate your decision by
* deleting the provisions above and replace them with the notice
* and other provisions required by the GPL. If you do not delete
* the provisions above, a recipient may use your version of this
* file under either the NPL or the GPL.
*/
/* @(#)e_fmod.c 1.3 95/01/18 */
/*

View File

@@ -0,0 +1,33 @@
/* @(#)e_gamma.c 1.3 95/01/18 */
/*
* ====================================================
* Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
*
* Developed at SunSoft, a Sun Microsystems, Inc. business.
* Permission to use, copy, modify, and distribute this
* software is freely granted, provided that this notice
* is preserved.
* ====================================================
*
*/
/* __ieee754_gamma(x)
* Return the logarithm of the Gamma function of x.
*
* Method: call __ieee754_gamma_r
*/
#include "fdlibm.h"
extern int signgam;
#ifdef __STDC__
double __ieee754_gamma(double x)
#else
double __ieee754_gamma(x)
double x;
#endif
{
return __ieee754_gamma_r(x,&signgam);
}

View File

@@ -0,0 +1,32 @@
/* @(#)e_gamma_r.c 1.3 95/01/18 */
/*
* ====================================================
* Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
*
* Developed at SunSoft, a Sun Microsystems, Inc. business.
* Permission to use, copy, modify, and distribute this
* software is freely granted, provided that this notice
* is preserved.
* ====================================================
*
*/
/* __ieee754_gamma_r(x, signgamp)
* Reentrant version of the logarithm of the Gamma function
* with user provide pointer for the sign of Gamma(x).
*
* Method: See __ieee754_lgamma_r
*/
#include "fdlibm.h"
#ifdef __STDC__
double __ieee754_gamma_r(double x, int *signgamp)
#else
double __ieee754_gamma_r(x,signgamp)
double x; int *signgamp;
#endif
{
return __ieee754_lgamma_r(x,signgamp);
}

View File

@@ -1,36 +1,3 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* The contents of this file are subject to the Netscape Public
* License Version 1.1 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.mozilla.org/NPL/
*
* Software distributed under the License is distributed on an "AS
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express oqr
* implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code is Mozilla Communicator client code, released
* March 31, 1998.
*
* The Initial Developer of the Original Code is Sun Microsystems,
* Inc. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All
* Rights Reserved.
*
* Contributor(s):
*
* Alternatively, the contents of this file may be used under the
* terms of the GNU Public License (the "GPL"), in which case the
* provisions of the GPL are applicable instead of those above.
* If you wish to allow use of your version of this file only
* under the terms of the GPL and not to allow others to use your
* version of this file under the NPL, indicate your decision by
* deleting the provisions above and replace them with the notice
* and other provisions required by the GPL. If you do not delete
* the provisions above, a recipient may use your version of this
* file under either the NPL or the GPL.
*/
/* @(#)e_hypot.c 1.3 95/01/18 */
/*

View File

@@ -1,36 +1,3 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* The contents of this file are subject to the Netscape Public
* License Version 1.1 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.mozilla.org/NPL/
*
* Software distributed under the License is distributed on an "AS
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express oqr
* implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code is Mozilla Communicator client code, released
* March 31, 1998.
*
* The Initial Developer of the Original Code is Sun Microsystems,
* Inc. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All
* Rights Reserved.
*
* Contributor(s):
*
* Alternatively, the contents of this file may be used under the
* terms of the GNU Public License (the "GPL"), in which case the
* provisions of the GPL are applicable instead of those above.
* If you wish to allow use of your version of this file only
* under the terms of the GPL and not to allow others to use your
* version of this file under the NPL, indicate your decision by
* deleting the provisions above and replace them with the notice
* and other provisions required by the GPL. If you do not delete
* the provisions above, a recipient may use your version of this
* file under either the NPL or the GPL.
*/
/* @(#)e_j0.c 1.3 95/01/18 */
/*
@@ -102,7 +69,7 @@ static const double
#else
static double
#endif
really_big = 1e300,
huge = 1e300,
one = 1.0,
invsqrtpi= 5.64189583547756279280e-01, /* 0x3FE20DD7, 0x50429B6D */
tpi = 6.36619772367581382433e-01, /* 0x3FE45F30, 0x6DC9C883 */
@@ -154,7 +121,7 @@ static double zero = 0.0;
return z;
}
if(ix<0x3f200000) { /* |x| < 2**-13 */
if(really_big+x>one) { /* raise inexact if x != 0 */
if(huge+x>one) { /* raise inexact if x != 0 */
if(ix<0x3e400000) return one; /* |x|<2**-27 */
else return one - 0.25*x*x;
}

View File

@@ -1,36 +1,3 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* The contents of this file are subject to the Netscape Public
* License Version 1.1 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.mozilla.org/NPL/
*
* Software distributed under the License is distributed on an "AS
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express oqr
* implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code is Mozilla Communicator client code, released
* March 31, 1998.
*
* The Initial Developer of the Original Code is Sun Microsystems,
* Inc. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All
* Rights Reserved.
*
* Contributor(s):
*
* Alternatively, the contents of this file may be used under the
* terms of the GNU Public License (the "GPL"), in which case the
* provisions of the GPL are applicable instead of those above.
* If you wish to allow use of your version of this file only
* under the terms of the GPL and not to allow others to use your
* version of this file under the NPL, indicate your decision by
* deleting the provisions above and replace them with the notice
* and other provisions required by the GPL. If you do not delete
* the provisions above, a recipient may use your version of this
* file under either the NPL or the GPL.
*/
/* @(#)e_j1.c 1.3 95/01/18 */
/*
@@ -102,7 +69,7 @@ static const double
#else
static double
#endif
really_big = 1e300,
huge = 1e300,
one = 1.0,
invsqrtpi= 5.64189583547756279280e-01, /* 0x3FE20DD7, 0x50429B6D */
tpi = 6.36619772367581382433e-01, /* 0x3FE45F30, 0x6DC9C883 */
@@ -156,7 +123,7 @@ static double zero = 0.0;
else return z;
}
if(ix<0x3e400000) { /* |x|<2**-27 */
if(really_big+x>one) return 0.5*x;/* inexact if x!=0 necessary */
if(huge+x>one) return 0.5*x;/* inexact if x!=0 necessary */
}
z = x*x;
r = z*(r00+z*(r01+z*(r02+z*r03)));

View File

@@ -1,36 +1,3 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* The contents of this file are subject to the Netscape Public
* License Version 1.1 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.mozilla.org/NPL/
*
* Software distributed under the License is distributed on an "AS
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express oqr
* implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code is Mozilla Communicator client code, released
* March 31, 1998.
*
* The Initial Developer of the Original Code is Sun Microsystems,
* Inc. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All
* Rights Reserved.
*
* Contributor(s):
*
* Alternatively, the contents of this file may be used under the
* terms of the GNU Public License (the "GPL"), in which case the
* provisions of the GPL are applicable instead of those above.
* If you wish to allow use of your version of this file only
* under the terms of the GPL and not to allow others to use your
* version of this file under the NPL, indicate your decision by
* deleting the provisions above and replace them with the notice
* and other provisions required by the GPL. If you do not delete
* the provisions above, a recipient may use your version of this
* file under either the NPL or the GPL.
*/
/* @(#)e_jn.c 1.4 95/01/18 */
/*

View File

@@ -0,0 +1,33 @@
/* @(#)e_lgamma.c 1.3 95/01/18 */
/*
* ====================================================
* Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
*
* Developed at SunSoft, a Sun Microsystems, Inc. business.
* Permission to use, copy, modify, and distribute this
* software is freely granted, provided that this notice
* is preserved.
* ====================================================
*
*/
/* __ieee754_lgamma(x)
* Return the logarithm of the Gamma function of x.
*
* Method: call __ieee754_lgamma_r
*/
#include "fdlibm.h"
extern int signgam;
#ifdef __STDC__
double __ieee754_lgamma(double x)
#else
double __ieee754_lgamma(x)
double x;
#endif
{
return __ieee754_lgamma_r(x,&signgam);
}

View File

@@ -1,36 +1,3 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* The contents of this file are subject to the Netscape Public
* License Version 1.1 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.mozilla.org/NPL/
*
* Software distributed under the License is distributed on an "AS
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express oqr
* implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code is Mozilla Communicator client code, released
* March 31, 1998.
*
* The Initial Developer of the Original Code is Sun Microsystems,
* Inc. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All
* Rights Reserved.
*
* Contributor(s):
*
* Alternatively, the contents of this file may be used under the
* terms of the GNU Public License (the "GPL"), in which case the
* provisions of the GPL are applicable instead of those above.
* If you wish to allow use of your version of this file only
* under the terms of the GPL and not to allow others to use your
* version of this file under the NPL, indicate your decision by
* deleting the provisions above and replace them with the notice
* and other provisions required by the GPL. If you do not delete
* the provisions above, a recipient may use your version of this
* file under either the NPL or the GPL.
*/
/* @(#)e_lgamma_r.c 1.3 95/01/18 */
/*

View File

@@ -1,36 +1,3 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* The contents of this file are subject to the Netscape Public
* License Version 1.1 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.mozilla.org/NPL/
*
* Software distributed under the License is distributed on an "AS
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express oqr
* implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code is Mozilla Communicator client code, released
* March 31, 1998.
*
* The Initial Developer of the Original Code is Sun Microsystems,
* Inc. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All
* Rights Reserved.
*
* Contributor(s):
*
* Alternatively, the contents of this file may be used under the
* terms of the GNU Public License (the "GPL"), in which case the
* provisions of the GPL are applicable instead of those above.
* If you wish to allow use of your version of this file only
* under the terms of the GPL and not to allow others to use your
* version of this file under the NPL, indicate your decision by
* deleting the provisions above and replace them with the notice
* and other provisions required by the GPL. If you do not delete
* the provisions above, a recipient may use your version of this
* file under either the NPL or the GPL.
*/
/* @(#)e_log.c 1.3 95/01/18 */
/*
@@ -145,10 +112,8 @@ static double zero = 0.0;
k += (i>>20);
f = x-1.0;
if((0x000fffff&(2+hx))<3) { /* |f| < 2**-20 */
if(f==zero) {
if(k==0) return zero; else {dk=(double)k;
return dk*ln2_hi+dk*ln2_lo;}
}
if(f==zero) if(k==0) return zero; else {dk=(double)k;
return dk*ln2_hi+dk*ln2_lo;}
R = f*f*(0.5-0.33333333333333333*f);
if(k==0) return f-R; else {dk=(double)k;
return dk*ln2_hi-((R-dk*ln2_lo)-f);}

View File

@@ -1,36 +1,3 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* The contents of this file are subject to the Netscape Public
* License Version 1.1 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.mozilla.org/NPL/
*
* Software distributed under the License is distributed on an "AS
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express oqr
* implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code is Mozilla Communicator client code, released
* March 31, 1998.
*
* The Initial Developer of the Original Code is Sun Microsystems,
* Inc. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All
* Rights Reserved.
*
* Contributor(s):
*
* Alternatively, the contents of this file may be used under the
* terms of the GNU Public License (the "GPL"), in which case the
* provisions of the GPL are applicable instead of those above.
* If you wish to allow use of your version of this file only
* under the terms of the GPL and not to allow others to use your
* version of this file under the NPL, indicate your decision by
* deleting the provisions above and replace them with the notice
* and other provisions required by the GPL. If you do not delete
* the provisions above, a recipient may use your version of this
* file under either the NPL or the GPL.
*/
/* @(#)e_log10.c 1.3 95/01/18 */
/*

View File

@@ -1,36 +1,3 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* The contents of this file are subject to the Netscape Public
* License Version 1.1 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.mozilla.org/NPL/
*
* Software distributed under the License is distributed on an "AS
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express oqr
* implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code is Mozilla Communicator client code, released
* March 31, 1998.
*
* The Initial Developer of the Original Code is Sun Microsystems,
* Inc. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All
* Rights Reserved.
*
* Contributor(s):
*
* Alternatively, the contents of this file may be used under the
* terms of the GNU Public License (the "GPL"), in which case the
* provisions of the GPL are applicable instead of those above.
* If you wish to allow use of your version of this file only
* under the terms of the GPL and not to allow others to use your
* version of this file under the NPL, indicate your decision by
* deleting the provisions above and replace them with the notice
* and other provisions required by the GPL. If you do not delete
* the provisions above, a recipient may use your version of this
* file under either the NPL or the GPL.
*/
/* @(#)e_pow.c 1.3 95/01/18 */
/*
@@ -103,7 +70,7 @@ zero = 0.0,
one = 1.0,
two = 2.0,
two53 = 9007199254740992.0, /* 0x43400000, 0x00000000 */
really_big = 1.0e300,
huge = 1.0e300,
tiny = 1.0e-300,
/* poly coefs for (3/2)*(log(x)-2s-2/3*s**3 */
L1 = 5.99999999999994648725e-01, /* 0x3FE33333, 0x33333303 */
@@ -135,13 +102,8 @@ ivln2_l = 1.92596299112661746887e-08; /* 0x3E54AE0B, 0xF85DDF44 =1/ln2 tail*/
double x, y;
#endif
{
#ifdef GCC_OPT_BUG
volatile double y1,t1,p_h,t,z,ax;
#else
double y1,t1,p_h,t,z,ax;
#endif
double z_h,z_l,p_l;
double t2,r,s,u,v,w;
double z,ax,z_h,z_l,p_h,p_l;
double y1,t1,t2,r,s,t,u,v,w;
int i,j,k,yisint,n;
int hx,hy,ix,iy;
unsigned lx,ly;
@@ -182,12 +144,7 @@ ivln2_l = 1.92596299112661746887e-08; /* 0x3E54AE0B, 0xF85DDF44 =1/ln2 tail*/
if(ly==0) {
if (iy==0x7ff00000) { /* y is +-inf */
if(((ix-0x3ff00000)|lx)==0)
#ifdef _WIN32
/* VC++ optimizer reduces y - y to 0 */
return y / y;
#else
return y - y; /* inf**+-1 is NaN */
#endif
else if (ix >= 0x3ff00000)/* (|x|>1)**+-inf = inf,0 */
return (hy>=0)? y: zero;
else /* (|x|<1)**-,+inf = inf,0 */
@@ -212,13 +169,8 @@ ivln2_l = 1.92596299112661746887e-08; /* 0x3E54AE0B, 0xF85DDF44 =1/ln2 tail*/
if(hx<0) {
if(((ix-0x3ff00000)|yisint)==0) {
z = (z-z)/(z-z); /* (-1)**non-int is NaN */
} else if(yisint==1) {
#ifdef HPUX
__HI(z) ^= 1<<31; /* some HPUXes cannot negate 0.. */
#else
} else if(yisint==1)
z = -z; /* (x<0)**odd = -(|x|**odd) */
#endif
}
}
return z;
}
@@ -227,15 +179,15 @@ ivln2_l = 1.92596299112661746887e-08; /* 0x3E54AE0B, 0xF85DDF44 =1/ln2 tail*/
/* (x<0)**(non-int) is NaN */
if((((hx>>31)+1)|yisint)==0) return (x-x)/(x-x);
/* |y| is really_big */
/* |y| is huge */
if(iy>0x41e00000) { /* if |y| > 2**31 */
if(iy>0x43f00000){ /* if |y| > 2**64, must o/uflow */
if(ix<=0x3fefffff) return (hy<0)? really_big*really_big:tiny*tiny;
if(ix>=0x3ff00000) return (hy>0)? really_big*really_big:tiny*tiny;
if(ix<=0x3fefffff) return (hy<0)? huge*huge:tiny*tiny;
if(ix>=0x3ff00000) return (hy>0)? huge*huge:tiny*tiny;
}
/* over/underflow if x is not close to one */
if(ix<0x3fefffff) return (hy<0)? really_big*really_big:tiny*tiny;
if(ix>0x3ff00000) return (hy>0)? really_big*really_big:tiny*tiny;
if(ix<0x3fefffff) return (hy<0)? huge*huge:tiny*tiny;
if(ix>0x3ff00000) return (hy>0)? huge*huge:tiny*tiny;
/* now |1-x| is tiny <= 2**-20, suffice to compute
log(x) by x-x^2/2+x^3/3-x^4/4 */
t = x-1; /* t has 20 trailing zeros */
@@ -246,12 +198,7 @@ ivln2_l = 1.92596299112661746887e-08; /* 0x3E54AE0B, 0xF85DDF44 =1/ln2 tail*/
__LO(t1) = 0;
t2 = v-(t1-u);
} else {
#ifdef GCC_OPT_BUG
volatile double s_h,t_h;
#else
double s_h,t_h;
#endif
double s2,s_l,t_l;
double s2,s_h,s_l,t_h,t_l;
n = 0;
/* take care subnormal number */
if(ix<0x00100000)
@@ -311,12 +258,11 @@ ivln2_l = 1.92596299112661746887e-08; /* 0x3E54AE0B, 0xF85DDF44 =1/ln2 tail*/
z = p_l+p_h;
j = __HI(z);
i = __LO(z);
if (j>=0x40900000) { /* z >= 1024 */
if(((j-0x40900000)|i)!=0) /* if z > 1024 */
return s*really_big*really_big; /* overflow */
return s*huge*huge; /* overflow */
else {
if(p_l+ovt>z-p_h) return s*really_big*really_big; /* overflow */
if(p_l+ovt>z-p_h) return s*huge*huge; /* overflow */
}
} else if((j&0x7fffffff)>=0x4090cc00 ) { /* z <= -1075 */
if(((j-0xc090cc00)|i)!=0) /* z < -1075 */

View File

@@ -1,36 +1,3 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* The contents of this file are subject to the Netscape Public
* License Version 1.1 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.mozilla.org/NPL/
*
* Software distributed under the License is distributed on an "AS
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express oqr
* implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code is Mozilla Communicator client code, released
* March 31, 1998.
*
* The Initial Developer of the Original Code is Sun Microsystems,
* Inc. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All
* Rights Reserved.
*
* Contributor(s):
*
* Alternatively, the contents of this file may be used under the
* terms of the GNU Public License (the "GPL"), in which case the
* provisions of the GPL are applicable instead of those above.
* If you wish to allow use of your version of this file only
* under the terms of the GPL and not to allow others to use your
* version of this file under the NPL, indicate your decision by
* deleting the provisions above and replace them with the notice
* and other provisions required by the GPL. If you do not delete
* the provisions above, a recipient may use your version of this
* file under either the NPL or the GPL.
*/
/* @(#)e_rem_pio2.c 1.4 95/01/18 */
/*

View File

@@ -1,36 +1,3 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* The contents of this file are subject to the Netscape Public
* License Version 1.1 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.mozilla.org/NPL/
*
* Software distributed under the License is distributed on an "AS
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express oqr
* implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code is Mozilla Communicator client code, released
* March 31, 1998.
*
* The Initial Developer of the Original Code is Sun Microsystems,
* Inc. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All
* Rights Reserved.
*
* Contributor(s):
*
* Alternatively, the contents of this file may be used under the
* terms of the GNU Public License (the "GPL"), in which case the
* provisions of the GPL are applicable instead of those above.
* If you wish to allow use of your version of this file only
* under the terms of the GPL and not to allow others to use your
* version of this file under the NPL, indicate your decision by
* deleting the provisions above and replace them with the notice
* and other provisions required by the GPL. If you do not delete
* the provisions above, a recipient may use your version of this
* file under either the NPL or the GPL.
*/
/* @(#)e_remainder.c 1.3 95/01/18 */
/*

View File

@@ -0,0 +1,51 @@
/* @(#)e_scalb.c 1.3 95/01/18 */
/*
* ====================================================
* Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
*
* Developed at SunSoft, a Sun Microsystems, Inc. business.
* Permission to use, copy, modify, and distribute this
* software is freely granted, provided that this notice
* is preserved.
* ====================================================
*/
/*
* __ieee754_scalb(x, fn) is provide for
* passing various standard test suite. One
* should use scalbn() instead.
*/
#include "fdlibm.h"
#ifdef _SCALB_INT
#ifdef __STDC__
double __ieee754_scalb(double x, int fn)
#else
double __ieee754_scalb(x,fn)
double x; int fn;
#endif
#else
#ifdef __STDC__
double __ieee754_scalb(double x, double fn)
#else
double __ieee754_scalb(x,fn)
double x, fn;
#endif
#endif
{
#ifdef _SCALB_INT
return fd_scalbn(x,fn);
#else
if (fd_isnan(x)||fd_isnan(fn)) return x*fn;
if (!fd_finite(fn)) {
if(fn>0.0) return x*fn;
else return x/(-fn);
}
if (fd_rint(fn)!=fn) return (fn-fn)/(fn-fn);
if ( fn > 65000.0) return fd_scalbn(x, 65000);
if (-fn > 65000.0) return fd_scalbn(x,-65000);
return fd_scalbn(x,(int)fn);
#endif
}

View File

@@ -1,36 +1,3 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* The contents of this file are subject to the Netscape Public
* License Version 1.1 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.mozilla.org/NPL/
*
* Software distributed under the License is distributed on an "AS
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express oqr
* implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code is Mozilla Communicator client code, released
* March 31, 1998.
*
* The Initial Developer of the Original Code is Sun Microsystems,
* Inc. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All
* Rights Reserved.
*
* Contributor(s):
*
* Alternatively, the contents of this file may be used under the
* terms of the GNU Public License (the "GPL"), in which case the
* provisions of the GPL are applicable instead of those above.
* If you wish to allow use of your version of this file only
* under the terms of the GPL and not to allow others to use your
* version of this file under the NPL, indicate your decision by
* deleting the provisions above and replace them with the notice
* and other provisions required by the GPL. If you do not delete
* the provisions above, a recipient may use your version of this
* file under either the NPL or the GPL.
*/
/* @(#)e_sinh.c 1.3 95/01/18 */
/*

View File

@@ -1,36 +1,3 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* The contents of this file are subject to the Netscape Public
* License Version 1.1 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.mozilla.org/NPL/
*
* Software distributed under the License is distributed on an "AS
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express oqr
* implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code is Mozilla Communicator client code, released
* March 31, 1998.
*
* The Initial Developer of the Original Code is Sun Microsystems,
* Inc. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All
* Rights Reserved.
*
* Contributor(s):
*
* Alternatively, the contents of this file may be used under the
* terms of the GNU Public License (the "GPL"), in which case the
* provisions of the GPL are applicable instead of those above.
* If you wish to allow use of your version of this file only
* under the terms of the GPL and not to allow others to use your
* version of this file under the NPL, indicate your decision by
* deleting the provisions above and replace them with the notice
* and other provisions required by the GPL. If you do not delete
* the provisions above, a recipient may use your version of this
* file under either the NPL or the GPL.
*/
/* @(#)e_sqrt.c 1.3 95/01/18 */
/*
* ====================================================

View File

@@ -1,36 +1,3 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* The contents of this file are subject to the Netscape Public
* License Version 1.1 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.mozilla.org/NPL/
*
* Software distributed under the License is distributed on an "AS
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express oqr
* implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code is Mozilla Communicator client code, released
* March 31, 1998.
*
* The Initial Developer of the Original Code is Sun Microsystems,
* Inc. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All
* Rights Reserved.
*
* Contributor(s):
*
* Alternatively, the contents of this file may be used under the
* terms of the GNU Public License (the "GPL"), in which case the
* provisions of the GPL are applicable instead of those above.
* If you wish to allow use of your version of this file only
* under the terms of the GPL and not to allow others to use your
* version of this file under the NPL, indicate your decision by
* deleting the provisions above and replace them with the notice
* and other provisions required by the GPL. If you do not delete
* the provisions above, a recipient may use your version of this
* file under either the NPL or the GPL.
*/
/* @(#)fdlibm.h 1.5 95/01/18 */
/*
@@ -44,16 +11,13 @@
* ====================================================
*/
/* Modified defines start here.. */
#ifdef _WIN32
#define huge myhuge
#define __LITTLE_ENDIAN
#endif
#ifdef X86_LINUX
#define __LITTLE_ENDIAN
#endif
/* End here. The rest is the standard file. */
#ifdef __NEWVALID /* special setup for Sun test regime */

Binary file not shown.

View File

@@ -0,0 +1 @@
Microsoft C/C++ program database 2.00

View File

@@ -1,36 +1,3 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* The contents of this file are subject to the Netscape Public
* License Version 1.1 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.mozilla.org/NPL/
*
* Software distributed under the License is distributed on an "AS
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express oqr
* implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code is Mozilla Communicator client code, released
* March 31, 1998.
*
* The Initial Developer of the Original Code is Sun Microsystems,
* Inc. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All
* Rights Reserved.
*
* Contributor(s):
*
* Alternatively, the contents of this file may be used under the
* terms of the GNU Public License (the "GPL"), in which case the
* provisions of the GPL are applicable instead of those above.
* If you wish to allow use of your version of this file only
* under the terms of the GPL and not to allow others to use your
* version of this file under the NPL, indicate your decision by
* deleting the provisions above and replace them with the notice
* and other provisions required by the GPL. If you do not delete
* the provisions above, a recipient may use your version of this
* file under either the NPL or the GPL.
*/
/* @(#)k_cos.c 1.3 95/01/18 */
/*

View File

@@ -1,36 +1,3 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* The contents of this file are subject to the Netscape Public
* License Version 1.1 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.mozilla.org/NPL/
*
* Software distributed under the License is distributed on an "AS
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express oqr
* implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code is Mozilla Communicator client code, released
* March 31, 1998.
*
* The Initial Developer of the Original Code is Sun Microsystems,
* Inc. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All
* Rights Reserved.
*
* Contributor(s):
*
* Alternatively, the contents of this file may be used under the
* terms of the GNU Public License (the "GPL"), in which case the
* provisions of the GPL are applicable instead of those above.
* If you wish to allow use of your version of this file only
* under the terms of the GPL and not to allow others to use your
* version of this file under the NPL, indicate your decision by
* deleting the provisions above and replace them with the notice
* and other provisions required by the GPL. If you do not delete
* the provisions above, a recipient may use your version of this
* file under either the NPL or the GPL.
*/
/* @(#)k_rem_pio2.c 1.3 95/01/18 */
/*

View File

@@ -1,36 +1,3 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* The contents of this file are subject to the Netscape Public
* License Version 1.1 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.mozilla.org/NPL/
*
* Software distributed under the License is distributed on an "AS
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express oqr
* implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code is Mozilla Communicator client code, released
* March 31, 1998.
*
* The Initial Developer of the Original Code is Sun Microsystems,
* Inc. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All
* Rights Reserved.
*
* Contributor(s):
*
* Alternatively, the contents of this file may be used under the
* terms of the GNU Public License (the "GPL"), in which case the
* provisions of the GPL are applicable instead of those above.
* If you wish to allow use of your version of this file only
* under the terms of the GPL and not to allow others to use your
* version of this file under the NPL, indicate your decision by
* deleting the provisions above and replace them with the notice
* and other provisions required by the GPL. If you do not delete
* the provisions above, a recipient may use your version of this
* file under either the NPL or the GPL.
*/
/* @(#)k_sin.c 1.3 95/01/18 */
/*

View File

@@ -1,36 +1,3 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* The contents of this file are subject to the Netscape Public
* License Version 1.1 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.mozilla.org/NPL/
*
* Software distributed under the License is distributed on an "AS
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express oqr
* implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code is Mozilla Communicator client code, released
* March 31, 1998.
*
* The Initial Developer of the Original Code is Sun Microsystems,
* Inc. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All
* Rights Reserved.
*
* Contributor(s):
*
* Alternatively, the contents of this file may be used under the
* terms of the GNU Public License (the "GPL"), in which case the
* provisions of the GPL are applicable instead of those above.
* If you wish to allow use of your version of this file only
* under the terms of the GPL and not to allow others to use your
* version of this file under the NPL, indicate your decision by
* deleting the provisions above and replace them with the notice
* and other provisions required by the GPL. If you do not delete
* the provisions above, a recipient may use your version of this
* file under either the NPL or the GPL.
*/
/* @(#)k_standard.c 1.3 95/01/18 */
/*
@@ -46,15 +13,7 @@
*/
#include "fdlibm.h"
/* XXX ugly hack to get msvc to link without error. */
#if _LIB_VERSION == _IEEE_ && !defined(RHAPSODY)
int errno;
# define EDOM 0
# define ERANGE 0
#else
# include <errno.h>
#endif
#include <errno.h>
#ifndef _USE_WRITE

View File

@@ -1,36 +1,3 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* The contents of this file are subject to the Netscape Public
* License Version 1.1 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.mozilla.org/NPL/
*
* Software distributed under the License is distributed on an "AS
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express oqr
* implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code is Mozilla Communicator client code, released
* March 31, 1998.
*
* The Initial Developer of the Original Code is Sun Microsystems,
* Inc. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All
* Rights Reserved.
*
* Contributor(s):
*
* Alternatively, the contents of this file may be used under the
* terms of the GNU Public License (the "GPL"), in which case the
* provisions of the GPL are applicable instead of those above.
* If you wish to allow use of your version of this file only
* under the terms of the GPL and not to allow others to use your
* version of this file under the NPL, indicate your decision by
* deleting the provisions above and replace them with the notice
* and other provisions required by the GPL. If you do not delete
* the provisions above, a recipient may use your version of this
* file under either the NPL or the GPL.
*/
/* @(#)k_tan.c 1.3 95/01/18 */
/*

View File

@@ -0,0 +1,61 @@
/* @(#)s_asinh.c 1.3 95/01/18 */
/*
* ====================================================
* Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
*
* Developed at SunSoft, a Sun Microsystems, Inc. business.
* Permission to use, copy, modify, and distribute this
* software is freely granted, provided that this notice
* is preserved.
* ====================================================
*/
/* asinh(x)
* Method :
* Based on
* asinh(x) = sign(x) * log [ |x| + sqrt(x*x+1) ]
* we have
* asinh(x) := x if 1+x*x=1,
* := sign(x)*(log(x)+ln2)) for large |x|, else
* := sign(x)*log(2|x|+1/(|x|+sqrt(x*x+1))) if|x|>2, else
* := sign(x)*log1p(|x| + x^2/(1 + sqrt(1+x^2)))
*/
#include "fdlibm.h"
#ifdef __STDC__
static const double
#else
static double
#endif
one = 1.00000000000000000000e+00, /* 0x3FF00000, 0x00000000 */
ln2 = 6.93147180559945286227e-01, /* 0x3FE62E42, 0xFEFA39EF */
huge= 1.00000000000000000000e+300;
#ifdef __STDC__
double fd_asinh(double x)
#else
double fd_asinh(x)
double x;
#endif
{
double t,w;
int hx,ix;
hx = __HI(x);
ix = hx&0x7fffffff;
if(ix>=0x7ff00000) return x+x; /* x is inf or NaN */
if(ix< 0x3e300000) { /* |x|<2**-28 */
if(huge+x>one) return x; /* return x inexact except 0 */
}
if(ix>0x41b00000) { /* |x| > 2**28 */
w = __ieee754_log(fd_fabs(x))+ln2;
} else if (ix>0x40000000) { /* 2**28 > |x| > 2.0 */
t = fd_fabs(x);
w = __ieee754_log(2.0*t+one/(fd_sqrt(x*x+one)+t));
} else { /* 2.0 > |x| > 2**-28 */
t = x*x;
w =fd_log1p(fd_fabs(x)+t/(one+fd_sqrt(one+t)));
}
if(hx>0) return w; else return -w;
}

View File

@@ -1,36 +1,3 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* The contents of this file are subject to the Netscape Public
* License Version 1.1 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.mozilla.org/NPL/
*
* Software distributed under the License is distributed on an "AS
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express oqr
* implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code is Mozilla Communicator client code, released
* March 31, 1998.
*
* The Initial Developer of the Original Code is Sun Microsystems,
* Inc. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All
* Rights Reserved.
*
* Contributor(s):
*
* Alternatively, the contents of this file may be used under the
* terms of the GNU Public License (the "GPL"), in which case the
* provisions of the GPL are applicable instead of those above.
* If you wish to allow use of your version of this file only
* under the terms of the GPL and not to allow others to use your
* version of this file under the NPL, indicate your decision by
* deleting the provisions above and replace them with the notice
* and other provisions required by the GPL. If you do not delete
* the provisions above, a recipient may use your version of this
* file under either the NPL or the GPL.
*/
/* @(#)s_atan.c 1.3 95/01/18 */
/*
@@ -113,7 +80,7 @@ static double aT[] = {
static double
#endif
one = 1.0,
really_big = 1.0e300;
huge = 1.0e300;
#ifdef __STDC__
double fd_atan(double x)
@@ -135,7 +102,7 @@ really_big = 1.0e300;
else return -atanhi[3]-atanlo[3];
} if (ix < 0x3fdc0000) { /* |x| < 0.4375 */
if (ix < 0x3e200000) { /* |x| < 2^-29 */
if(really_big+x>one) return x; /* raise inexact */
if(huge+x>one) return x; /* raise inexact */
}
id = -1;
} else {

View File

@@ -1,36 +1,3 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* The contents of this file are subject to the Netscape Public
* License Version 1.1 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.mozilla.org/NPL/
*
* Software distributed under the License is distributed on an "AS
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express oqr
* implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code is Mozilla Communicator client code, released
* March 31, 1998.
*
* The Initial Developer of the Original Code is Sun Microsystems,
* Inc. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All
* Rights Reserved.
*
* Contributor(s):
*
* Alternatively, the contents of this file may be used under the
* terms of the GNU Public License (the "GPL"), in which case the
* provisions of the GPL are applicable instead of those above.
* If you wish to allow use of your version of this file only
* under the terms of the GPL and not to allow others to use your
* version of this file under the NPL, indicate your decision by
* deleting the provisions above and replace them with the notice
* and other provisions required by the GPL. If you do not delete
* the provisions above, a recipient may use your version of this
* file under either the NPL or the GPL.
*/
/* @(#)s_cbrt.c 1.3 95/01/18 */
/*

View File

@@ -0,0 +1,78 @@
/* @(#)s_ceil.c 1.3 95/01/18 */
/*
* ====================================================
* Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
*
* Developed at SunSoft, a Sun Microsystems, Inc. business.
* Permission to use, copy, modify, and distribute this
* software is freely granted, provided that this notice
* is preserved.
* ====================================================
*/
/*
* ceil(x)
* Return x rounded toward -inf to integral value
* Method:
* Bit twiddling.
* Exception:
* Inexact flag raised if x not equal to ceil(x).
*/
#include "fdlibm.h"
#ifdef __STDC__
static const double huge = 1.0e300;
#else
static double huge = 1.0e300;
#endif
#ifdef __STDC__
double fd_ceil(double x)
#else
double fd_ceil(x)
double x;
#endif
{
int i0,i1,j0;
unsigned i,j;
i0 = __HI(x);
i1 = __LO(x);
j0 = ((i0>>20)&0x7ff)-0x3ff;
if(j0<20) {
if(j0<0) { /* raise inexact if x != 0 */
if(huge+x>0.0) {/* return 0*sign(x) if |x|<1 */
if(i0<0) {i0=0x80000000;i1=0;}
else if((i0|i1)!=0) { i0=0x3ff00000;i1=0;}
}
} else {
i = (0x000fffff)>>j0;
if(((i0&i)|i1)==0) return x; /* x is integral */
if(huge+x>0.0) { /* raise inexact flag */
if(i0>0) i0 += (0x00100000)>>j0;
i0 &= (~i); i1=0;
}
}
} else if (j0>51) {
if(j0==0x400) return x+x; /* inf or NaN */
else return x; /* x is integral */
} else {
i = ((unsigned)(0xffffffff))>>(j0-20);
if((i1&i)==0) return x; /* x is integral */
if(huge+x>0.0) { /* raise inexact flag */
if(i0>0) {
if(j0==20) i0+=1;
else {
j = i1 + (1<<(52-j0));
if((int)j<i1) i0+=1; /* got a carry */
i1 = j;
}
}
i1 &= (~i);
}
}
__HI(x) = i0;
__LO(x) = i1;
return x;
}

View File

@@ -0,0 +1,31 @@
/* @(#)s_copysign.c 1.3 95/01/18 */
/*
* ====================================================
* Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
*
* Developed at SunSoft, a Sun Microsystems, Inc. business.
* Permission to use, copy, modify, and distribute this
* software is freely granted, provided that this notice
* is preserved.
* ====================================================
*/
/*
* copysign(double x, double y)
* copysign(x,y) returns a value with the magnitude of x and
* with the sign bit of y.
*/
#include "fdlibm.h"
#ifdef __STDC__
double fd_copysign(double x, double y)
#else
double fd_copysign(x,y)
double x,y;
#endif
{
__HI(x) = (__HI(x)&0x7fffffff)|(__HI(y)&0x80000000);
return x;
}

View File

@@ -1,36 +1,3 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* The contents of this file are subject to the Netscape Public
* License Version 1.1 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.mozilla.org/NPL/
*
* Software distributed under the License is distributed on an "AS
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express oqr
* implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code is Mozilla Communicator client code, released
* March 31, 1998.
*
* The Initial Developer of the Original Code is Sun Microsystems,
* Inc. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All
* Rights Reserved.
*
* Contributor(s):
*
* Alternatively, the contents of this file may be used under the
* terms of the GNU Public License (the "GPL"), in which case the
* provisions of the GPL are applicable instead of those above.
* If you wish to allow use of your version of this file only
* under the terms of the GPL and not to allow others to use your
* version of this file under the NPL, indicate your decision by
* deleting the provisions above and replace them with the notice
* and other provisions required by the GPL. If you do not delete
* the provisions above, a recipient may use your version of this
* file under either the NPL or the GPL.
*/
/* @(#)s_cos.c 1.3 95/01/18 */
/*

View File

@@ -1,36 +1,3 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* The contents of this file are subject to the Netscape Public
* License Version 1.1 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.mozilla.org/NPL/
*
* Software distributed under the License is distributed on an "AS
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express oqr
* implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code is Mozilla Communicator client code, released
* March 31, 1998.
*
* The Initial Developer of the Original Code is Sun Microsystems,
* Inc. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All
* Rights Reserved.
*
* Contributor(s):
*
* Alternatively, the contents of this file may be used under the
* terms of the GNU Public License (the "GPL"), in which case the
* provisions of the GPL are applicable instead of those above.
* If you wish to allow use of your version of this file only
* under the terms of the GPL and not to allow others to use your
* version of this file under the NPL, indicate your decision by
* deleting the provisions above and replace them with the notice
* and other provisions required by the GPL. If you do not delete
* the provisions above, a recipient may use your version of this
* file under either the NPL or the GPL.
*/
/* @(#)s_erf.c 1.3 95/01/18 */
/*

View File

@@ -1,36 +1,3 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* The contents of this file are subject to the Netscape Public
* License Version 1.1 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.mozilla.org/NPL/
*
* Software distributed under the License is distributed on an "AS
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express oqr
* implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code is Mozilla Communicator client code, released
* March 31, 1998.
*
* The Initial Developer of the Original Code is Sun Microsystems,
* Inc. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All
* Rights Reserved.
*
* Contributor(s):
*
* Alternatively, the contents of this file may be used under the
* terms of the GNU Public License (the "GPL"), in which case the
* provisions of the GPL are applicable instead of those above.
* If you wish to allow use of your version of this file only
* under the terms of the GPL and not to allow others to use your
* version of this file under the NPL, indicate your decision by
* deleting the provisions above and replace them with the notice
* and other provisions required by the GPL. If you do not delete
* the provisions above, a recipient may use your version of this
* file under either the NPL or the GPL.
*/
/* @(#)s_expm1.c 1.3 95/01/18 */
/*
@@ -147,7 +114,7 @@ static const double
static double
#endif
one = 1.0,
really_big = 1.0e+300,
huge = 1.0e+300,
tiny = 1.0e-300,
o_threshold = 7.09782712893383973096e+02,/* 0x40862E42, 0xFEFA39EF */
ln2_hi = 6.93147180369123816490e-01,/* 0x3fe62e42, 0xfee00000 */
@@ -184,7 +151,7 @@ Q5 = -2.01099218183624371326e-07; /* BE8AFDB7 6E09C32D */
return x+x; /* NaN */
else return (xsb==0)? x:-1.0;/* exp(+-inf)={inf,-1} */
}
if(x > o_threshold) return really_big*really_big; /* overflow */
if(x > o_threshold) return huge*huge; /* overflow */
}
if(xsb!=0) { /* x < -56*ln2, return -1.0 with inexact */
if(x+tiny<0.0) /* raise inexact */
@@ -209,8 +176,8 @@ Q5 = -2.01099218183624371326e-07; /* BE8AFDB7 6E09C32D */
c = (hi-x)-lo;
}
else if(hx < 0x3c900000) { /* when |x|<2**-54, return x */
t = really_big+x; /* return x with inexact flags when x!=0 */
return x - (t-(really_big+x));
t = huge+x; /* return x with inexact flags when x!=0 */
return x - (t-(huge+x));
}
else k = 0;

View File

@@ -0,0 +1,29 @@
/* @(#)s_fabs.c 1.3 95/01/18 */
/*
* ====================================================
* Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
*
* Developed at SunSoft, a Sun Microsystems, Inc. business.
* Permission to use, copy, modify, and distribute this
* software is freely granted, provided that this notice
* is preserved.
* ====================================================
*/
/*
* fabs(x) returns the absolute value of x.
*/
#include "fdlibm.h"
#ifdef __STDC__
double fd_fabs(double x)
#else
double fd_fabs(x)
double x;
#endif
{
__HI(x) &= 0x7fffffff;
return x;
}

View File

@@ -0,0 +1,31 @@
/* @(#)s_finite.c 1.3 95/01/18 */
/*
* ====================================================
* Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
*
* Developed at SunSoft, a Sun Microsystems, Inc. business.
* Permission to use, copy, modify, and distribute this
* software is freely granted, provided that this notice
* is preserved.
* ====================================================
*/
/*
* finite(x) returns 1 is x is finite, else 0;
* no branching!
*/
#include "fdlibm.h"
#ifdef __STDC__
int fd_finite(double x)
#else
int fd_finite(x)
double x;
#endif
{
int hx;
hx = __HI(x);
return (unsigned)((hx&0x7fffffff)-0x7ff00000)>>31;
}

View File

@@ -0,0 +1,79 @@
/* @(#)s_floor.c 1.3 95/01/18 */
/*
* ====================================================
* Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
*
* Developed at SunSoft, a Sun Microsystems, Inc. business.
* Permission to use, copy, modify, and distribute this
* software is freely granted, provided that this notice
* is preserved.
* ====================================================
*/
/*
* floor(x)
* Return x rounded toward -inf to integral value
* Method:
* Bit twiddling.
* Exception:
* Inexact flag raised if x not equal to floor(x).
*/
#include "fdlibm.h"
#ifdef __STDC__
static const double huge = 1.0e300;
#else
static double huge = 1.0e300;
#endif
#ifdef __STDC__
double fd_floor(double x)
#else
double fd_floor(x)
double x;
#endif
{
int i0,i1,j0;
unsigned i,j;
i0 = __HI(x);
i1 = __LO(x);
j0 = ((i0>>20)&0x7ff)-0x3ff;
if(j0<20) {
if(j0<0) { /* raise inexact if x != 0 */
if(huge+x>0.0) {/* return 0*sign(x) if |x|<1 */
if(i0>=0) {i0=i1=0;}
else if(((i0&0x7fffffff)|i1)!=0)
{ i0=0xbff00000;i1=0;}
}
} else {
i = (0x000fffff)>>j0;
if(((i0&i)|i1)==0) return x; /* x is integral */
if(huge+x>0.0) { /* raise inexact flag */
if(i0<0) i0 += (0x00100000)>>j0;
i0 &= (~i); i1=0;
}
}
} else if (j0>51) {
if(j0==0x400) return x+x; /* inf or NaN */
else return x; /* x is integral */
} else {
i = ((unsigned)(0xffffffff))>>(j0-20);
if((i1&i)==0) return x; /* x is integral */
if(huge+x>0.0) { /* raise inexact flag */
if(i0<0) {
if(j0==20) i0+=1;
else {
j = i1+(1<<(52-j0));
if((int)j<i1) i0 +=1 ; /* got a carry */
i1=j;
}
}
i1 &= (~i);
}
}
__HI(x) = i0;
__LO(x) = i1;
return x;
}

View File

@@ -0,0 +1,56 @@
/* @(#)s_frexp.c 1.4 95/01/18 */
/*
* ====================================================
* Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
*
* Developed at SunSoft, a Sun Microsystems, Inc. business.
* Permission to use, copy, modify, and distribute this
* software is freely granted, provided that this notice
* is preserved.
* ====================================================
*/
/*
* for non-zero x
* x = frexp(arg,&exp);
* return a double fp quantity x such that 0.5 <= |x| <1.0
* and the corresponding binary exponent "exp". That is
* arg = x*2^exp.
* If arg is inf, 0.0, or NaN, then frexp(arg,&exp) returns arg
* with *exp=0.
*/
#include "fdlibm.h"
#ifdef __STDC__
static const double
#else
static double
#endif
two54 = 1.80143985094819840000e+16; /* 0x43500000, 0x00000000 */
#ifdef __STDC__
double fd_frexp(double x, int *eptr)
#else
double fd_frexp(x, eptr)
double x; int *eptr;
#endif
{
int hx, ix, lx;
hx = __HI(x);
ix = 0x7fffffff&hx;
lx = __LO(x);
*eptr = 0;
if(ix>=0x7ff00000||((ix|lx)==0)) return x; /* 0,inf,nan */
if (ix<0x00100000) { /* subnormal */
x *= two54;
hx = __HI(x);
ix = hx&0x7fffffff;
*eptr = -54;
}
*eptr += (ix>>20)-1022;
hx = (hx&0x800fffff)|0x3fe00000;
__HI(x) = hx;
return x;
}

View File

@@ -0,0 +1,46 @@
/* @(#)s_ilogb.c 1.3 95/01/18 */
/*
* ====================================================
* Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
*
* Developed at SunSoft, a Sun Microsystems, Inc. business.
* Permission to use, copy, modify, and distribute this
* software is freely granted, provided that this notice
* is preserved.
* ====================================================
*/
/* ilogb(double x)
* return the binary exponent of non-zero x
* ilogb(0) = 0x80000001
* ilogb(inf/NaN) = 0x7fffffff (no signal is raised)
*/
#include "fdlibm.h"
#ifdef __STDC__
int fd_ilogb(double x)
#else
int fd_ilogb(x)
double x;
#endif
{
int hx,lx,ix;
hx = (__HI(x))&0x7fffffff; /* high word of x */
if(hx<0x00100000) {
lx = __LO(x);
if((hx|lx)==0)
return 0x80000001; /* ilogb(0) = 0x80000001 */
else /* subnormal x */
if(hx==0) {
for (ix = -1043; lx>0; lx<<=1) ix -=1;
} else {
for (ix = -1022,hx<<=11; hx>0; hx<<=1) ix -=1;
}
return ix;
}
else if (hx<0x7ff00000) return (hx>>20)-1023;
else return 0x7fffffff;
}

View File

@@ -0,0 +1,34 @@
/* @(#)s_isnan.c 1.3 95/01/18 */
/*
* ====================================================
* Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
*
* Developed at SunSoft, a Sun Microsystems, Inc. business.
* Permission to use, copy, modify, and distribute this
* software is freely granted, provided that this notice
* is preserved.
* ====================================================
*/
/*
* isnan(x) returns 1 is x is nan, else 0;
* no branching!
*/
#include "fdlibm.h"
#ifdef __STDC__
int fd_isnan(double x)
#else
int fd_isnan(x)
double x;
#endif
{
int hx,lx;
hx = (__HI(x)&0x7fffffff);
lx = __LO(x);
hx |= (unsigned)(lx|(-lx))>>31;
hx = 0x7ff00000 - hx;
return ((unsigned)(hx))>>31;
}

View File

@@ -0,0 +1,28 @@
/* @(#)s_ldexp.c 1.3 95/01/18 */
/*
* ====================================================
* Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
*
* Developed at SunSoft, a Sun Microsystems, Inc. business.
* Permission to use, copy, modify, and distribute this
* software is freely granted, provided that this notice
* is preserved.
* ====================================================
*/
#include "fdlibm.h"
#include <errno.h>
#ifdef __STDC__
double fd_ldexp(double value, int exp)
#else
double fd_ldexp(value, exp)
double value; int exp;
#endif
{
if(!fd_finite(value)||value==0.0) return value;
value = fd_scalbn(value,exp);
if(!fd_finite(value)||value==0.0) errno = ERANGE;
return value;
}

View File

@@ -0,0 +1,35 @@
/* @(#)s_lib_version.c 1.3 95/01/18 */
/*
* ====================================================
* Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
*
* Developed at SunSoft, a Sun Microsystems, Inc. business.
* Permission to use, copy, modify, and distribute this
* software is freely granted, provided that this notice
* is preserved.
* ====================================================
*/
/*
* MACRO for standards
*/
#include "fdlibm.h"
/*
* define and initialize _LIB_VERSION
*/
#ifdef _POSIX_MODE
_LIB_VERSION_TYPE _LIB_VERSION = _POSIX_;
#else
#ifdef _XOPEN_MODE
_LIB_VERSION_TYPE _LIB_VERSION = _XOPEN_;
#else
#ifdef _SVID3_MODE
_LIB_VERSION_TYPE _LIB_VERSION = _SVID_;
#else /* default _IEEE_MODE */
_LIB_VERSION_TYPE _LIB_VERSION = _IEEE_;
#endif
#endif
#endif

View File

@@ -1,36 +1,3 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* The contents of this file are subject to the Netscape Public
* License Version 1.1 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.mozilla.org/NPL/
*
* Software distributed under the License is distributed on an "AS
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express oqr
* implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code is Mozilla Communicator client code, released
* March 31, 1998.
*
* The Initial Developer of the Original Code is Sun Microsystems,
* Inc. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All
* Rights Reserved.
*
* Contributor(s):
*
* Alternatively, the contents of this file may be used under the
* terms of the GNU Public License (the "GPL"), in which case the
* provisions of the GPL are applicable instead of those above.
* If you wish to allow use of your version of this file only
* under the terms of the GPL and not to allow others to use your
* version of this file under the NPL, indicate your decision by
* deleting the provisions above and replace them with the notice
* and other provisions required by the GPL. If you do not delete
* the provisions above, a recipient may use your version of this
* file under either the NPL or the GPL.
*/
/* @(#)s_log1p.c 1.3 95/01/18 */
/*

View File

@@ -0,0 +1,38 @@
/* @(#)s_logb.c 1.3 95/01/18 */
/*
* ====================================================
* Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
*
* Developed at SunSoft, a Sun Microsystems, Inc. business.
* Permission to use, copy, modify, and distribute this
* software is freely granted, provided that this notice
* is preserved.
* ====================================================
*/
/*
* double logb(x)
* IEEE 754 logb. Included to pass IEEE test suite. Not recommend.
* Use ilogb instead.
*/
#include "fdlibm.h"
#ifdef __STDC__
double fd_logb(double x)
#else
double fd_logb(x)
double x;
#endif
{
int lx,ix;
ix = (__HI(x))&0x7fffffff; /* high |x| */
lx = __LO(x); /* low x */
if((ix|lx)==0) return -1.0/fd_fabs(x);
if(ix>=0x7ff00000) return x*x;
if((ix>>=20)==0) /* IEEE 754 logb */
return -1022.0;
else
return (double) (ix-1023);
}

View File

@@ -0,0 +1,26 @@
/* @(#)s_matherr.c 1.3 95/01/18 */
/*
* ====================================================
* Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
*
* Developed at SunSoft, a Sun Microsystems, Inc. business.
* Permission to use, copy, modify, and distribute this
* software is freely granted, provided that this notice
* is preserved.
* ====================================================
*/
#include "fdlibm.h"
#ifdef __STDC__
int fd_matherr(struct exception *x)
#else
int fd_matherr(x)
struct exception *x;
#endif
{
int n=0;
if(x->arg1!=x->arg1) return 0;
return n;
}

View File

@@ -1,36 +1,3 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* The contents of this file are subject to the Netscape Public
* License Version 1.1 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.mozilla.org/NPL/
*
* Software distributed under the License is distributed on an "AS
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express oqr
* implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code is Mozilla Communicator client code, released
* March 31, 1998.
*
* The Initial Developer of the Original Code is Sun Microsystems,
* Inc. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All
* Rights Reserved.
*
* Contributor(s):
*
* Alternatively, the contents of this file may be used under the
* terms of the GNU Public License (the "GPL"), in which case the
* provisions of the GPL are applicable instead of those above.
* If you wish to allow use of your version of this file only
* under the terms of the GPL and not to allow others to use your
* version of this file under the NPL, indicate your decision by
* deleting the provisions above and replace them with the notice
* and other provisions required by the GPL. If you do not delete
* the provisions above, a recipient may use your version of this
* file under either the NPL or the GPL.
*/
/* @(#)s_modf.c 1.3 95/01/18 */
/*

View File

@@ -1,36 +1,3 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* The contents of this file are subject to the Netscape Public
* License Version 1.1 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.mozilla.org/NPL/
*
* Software distributed under the License is distributed on an "AS
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express oqr
* implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code is Mozilla Communicator client code, released
* March 31, 1998.
*
* The Initial Developer of the Original Code is Sun Microsystems,
* Inc. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All
* Rights Reserved.
*
* Contributor(s):
*
* Alternatively, the contents of this file may be used under the
* terms of the GNU Public License (the "GPL"), in which case the
* provisions of the GPL are applicable instead of those above.
* If you wish to allow use of your version of this file only
* under the terms of the GPL and not to allow others to use your
* version of this file under the NPL, indicate your decision by
* deleting the provisions above and replace them with the notice
* and other provisions required by the GPL. If you do not delete
* the provisions above, a recipient may use your version of this
* file under either the NPL or the GPL.
*/
/* @(#)s_nextafter.c 1.3 95/01/18 */
/*

View File

@@ -1,36 +1,3 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* The contents of this file are subject to the Netscape Public
* License Version 1.1 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.mozilla.org/NPL/
*
* Software distributed under the License is distributed on an "AS
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express oqr
* implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code is Mozilla Communicator client code, released
* March 31, 1998.
*
* The Initial Developer of the Original Code is Sun Microsystems,
* Inc. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All
* Rights Reserved.
*
* Contributor(s):
*
* Alternatively, the contents of this file may be used under the
* terms of the GNU Public License (the "GPL"), in which case the
* provisions of the GPL are applicable instead of those above.
* If you wish to allow use of your version of this file only
* under the terms of the GPL and not to allow others to use your
* version of this file under the NPL, indicate your decision by
* deleting the provisions above and replace them with the notice
* and other provisions required by the GPL. If you do not delete
* the provisions above, a recipient may use your version of this
* file under either the NPL or the GPL.
*/
/* @(#)s_rint.c 1.3 95/01/18 */
/*

View File

@@ -0,0 +1,63 @@
/* @(#)s_scalbn.c 1.3 95/01/18 */
/*
* ====================================================
* Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
*
* Developed at SunSoft, a Sun Microsystems, Inc. business.
* Permission to use, copy, modify, and distribute this
* software is freely granted, provided that this notice
* is preserved.
* ====================================================
*/
/*
* scalbn (double x, int n)
* scalbn(x,n) returns x* 2**n computed by exponent
* manipulation rather than by actually performing an
* exponentiation or a multiplication.
*/
#include "fdlibm.h"
#ifdef __STDC__
static const double
#else
static double
#endif
two54 = 1.80143985094819840000e+16, /* 0x43500000, 0x00000000 */
twom54 = 5.55111512312578270212e-17, /* 0x3C900000, 0x00000000 */
huge = 1.0e+300,
tiny = 1.0e-300;
#ifdef __STDC__
double fd_scalbn (double x, int n)
#else
double fd_scalbn (x,n)
double x; int n;
#endif
{
int k,hx,lx;
hx = __HI(x);
lx = __LO(x);
k = (hx&0x7ff00000)>>20; /* extract exponent */
if (k==0) { /* 0 or subnormal x */
if ((lx|(hx&0x7fffffff))==0) return x; /* +-0 */
x *= two54;
hx = __HI(x);
k = ((hx&0x7ff00000)>>20) - 54;
if (n< -50000) return tiny*x; /*underflow*/
}
if (k==0x7ff) return x+x; /* NaN or Inf */
k = k+n;
if (k > 0x7fe) return huge*fd_copysign(huge,x); /* overflow */
if (k > 0) /* normal result */
{__HI(x) = (hx&0x800fffff)|(k<<20); return x;}
if (k <= -54)
if (n > 50000) /* in case integer overflow in n+k */
return huge*fd_copysign(huge,x); /*overflow*/
else return tiny*fd_copysign(tiny,x); /*underflow*/
k += 54; /* subnormal result */
__HI(x) = (hx&0x800fffff)|(k<<20);
return x*twom54;
}

View File

@@ -0,0 +1,2 @@
#include "fdlibm.h"
int signgam = 0;

View File

@@ -0,0 +1,30 @@
/* @(#)s_significand.c 1.3 95/01/18 */
/*
* ====================================================
* Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
*
* Developed at SunSoft, a Sun Microsystems, Inc. business.
* Permission to use, copy, modify, and distribute this
* software is freely granted, provided that this notice
* is preserved.
* ====================================================
*/
/*
* significand(x) computes just
* scalb(x, (double) -ilogb(x)),
* for exercising the fraction-part(F) IEEE 754-1985 test vector.
*/
#include "fdlibm.h"
#ifdef __STDC__
double fd_significand(double x)
#else
double fd_significand(x)
double x;
#endif
{
return __ieee754_scalb(x,(double) -fd_ilogb(x));
}

View File

@@ -1,36 +1,3 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* The contents of this file are subject to the Netscape Public
* License Version 1.1 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.mozilla.org/NPL/
*
* Software distributed under the License is distributed on an "AS
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express oqr
* implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code is Mozilla Communicator client code, released
* March 31, 1998.
*
* The Initial Developer of the Original Code is Sun Microsystems,
* Inc. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All
* Rights Reserved.
*
* Contributor(s):
*
* Alternatively, the contents of this file may be used under the
* terms of the GNU Public License (the "GPL"), in which case the
* provisions of the GPL are applicable instead of those above.
* If you wish to allow use of your version of this file only
* under the terms of the GPL and not to allow others to use your
* version of this file under the NPL, indicate your decision by
* deleting the provisions above and replace them with the notice
* and other provisions required by the GPL. If you do not delete
* the provisions above, a recipient may use your version of this
* file under either the NPL or the GPL.
*/
/* @(#)s_sin.c 1.3 95/01/18 */
/*

View File

@@ -1,36 +1,3 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* The contents of this file are subject to the Netscape Public
* License Version 1.1 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.mozilla.org/NPL/
*
* Software distributed under the License is distributed on an "AS
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express oqr
* implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code is Mozilla Communicator client code, released
* March 31, 1998.
*
* The Initial Developer of the Original Code is Sun Microsystems,
* Inc. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All
* Rights Reserved.
*
* Contributor(s):
*
* Alternatively, the contents of this file may be used under the
* terms of the GNU Public License (the "GPL"), in which case the
* provisions of the GPL are applicable instead of those above.
* If you wish to allow use of your version of this file only
* under the terms of the GPL and not to allow others to use your
* version of this file under the NPL, indicate your decision by
* deleting the provisions above and replace them with the notice
* and other provisions required by the GPL. If you do not delete
* the provisions above, a recipient may use your version of this
* file under either the NPL or the GPL.
*/
/* @(#)s_tan.c 1.3 95/01/18 */
/*

View File

@@ -1,36 +1,3 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* The contents of this file are subject to the Netscape Public
* License Version 1.1 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.mozilla.org/NPL/
*
* Software distributed under the License is distributed on an "AS
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express oqr
* implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code is Mozilla Communicator client code, released
* March 31, 1998.
*
* The Initial Developer of the Original Code is Sun Microsystems,
* Inc. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All
* Rights Reserved.
*
* Contributor(s):
*
* Alternatively, the contents of this file may be used under the
* terms of the GNU Public License (the "GPL"), in which case the
* provisions of the GPL are applicable instead of those above.
* If you wish to allow use of your version of this file only
* under the terms of the GPL and not to allow others to use your
* version of this file under the NPL, indicate your decision by
* deleting the provisions above and replace them with the notice
* and other provisions required by the GPL. If you do not delete
* the provisions above, a recipient may use your version of this
* file under either the NPL or the GPL.
*/
/* @(#)s_tanh.c 1.3 95/01/18 */
/*

View File

@@ -0,0 +1,39 @@
/* @(#)w_acos.c 1.3 95/01/18 */
/*
* ====================================================
* Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
*
* Developed at SunSoft, a Sun Microsystems, Inc. business.
* Permission to use, copy, modify, and distribute this
* software is freely granted, provided that this notice
* is preserved.
* ====================================================
*/
/*
* wrap_acos(x)
*/
#include "fdlibm.h"
#ifdef __STDC__
double fd_acos(double x) /* wrapper acos */
#else
double fd_acos(x) /* wrapper acos */
double x;
#endif
{
#ifdef _IEEE_LIBM
return __ieee754_acos(x);
#else
double z;
z = __ieee754_acos(x);
if(_LIB_VERSION == _IEEE_ || fd_isnan(x)) return z;
if(fd_fabs(x)>1.0) {
return __kernel_standard(x,x,1); /* acos(|x|>1) */
} else
return z;
#endif
}

View File

@@ -0,0 +1,39 @@
/* @(#)w_acosh.c 1.3 95/01/18 */
/*
* ====================================================
* Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
*
* Developed at SunSoft, a Sun Microsystems, Inc. business.
* Permission to use, copy, modify, and distribute this
* software is freely granted, provided that this notice
* is preserved.
* ====================================================
*
*/
/*
* wrapper acosh(x)
*/
#include "fdlibm.h"
#ifdef __STDC__
double fd_acosh(double x) /* wrapper acosh */
#else
double fd_acosh(x) /* wrapper acosh */
double x;
#endif
{
#ifdef _IEEE_LIBM
return __ieee754_acosh(x);
#else
double z;
z = __ieee754_acosh(x);
if(_LIB_VERSION == _IEEE_ || fd_isnan(x)) return z;
if(x<1.0) {
return __kernel_standard(x,x,29); /* acosh(x<1) */
} else
return z;
#endif
}

View File

@@ -0,0 +1,41 @@
/* @(#)w_asin.c 1.3 95/01/18 */
/*
* ====================================================
* Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
*
* Developed at SunSoft, a Sun Microsystems, Inc. business.
* Permission to use, copy, modify, and distribute this
* software is freely granted, provided that this notice
* is preserved.
* ====================================================
*
*/
/*
* wrapper asin(x)
*/
#include "fdlibm.h"
#ifdef __STDC__
double fd_asin(double x) /* wrapper asin */
#else
double fd_asin(x) /* wrapper asin */
double x;
#endif
{
#ifdef _IEEE_LIBM
return __ieee754_asin(x);
#else
double z;
z = __ieee754_asin(x);
if(_LIB_VERSION == _IEEE_ || fd_isnan(x)) return z;
if(fd_fabs(x)>1.0) {
return __kernel_standard(x,x,2); /* asin(|x|>1) */
} else
return z;
#endif
}

View File

@@ -0,0 +1,40 @@
/* @(#)w_atan2.c 1.3 95/01/18 */
/*
* ====================================================
* Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
*
* Developed at SunSoft, a Sun Microsystems, Inc. business.
* Permission to use, copy, modify, and distribute this
* software is freely granted, provided that this notice
* is preserved.
* ====================================================
*
*/
/*
* wrapper atan2(y,x)
*/
#include "fdlibm.h"
#ifdef __STDC__
double fd_atan2(double y, double x) /* wrapper atan2 */
#else
double fd_atan2(y,x) /* wrapper atan2 */
double y,x;
#endif
{
#ifdef _IEEE_LIBM
return __ieee754_atan2(y,x);
#else
double z;
z = __ieee754_atan2(y,x);
if(_LIB_VERSION == _IEEE_||fd_isnan(x)||fd_isnan(y)) return z;
if(x==0.0&&y==0.0) {
return __kernel_standard(y,x,3); /* atan2(+-0,+-0) */
} else
return z;
#endif
}

View File

@@ -0,0 +1,42 @@
/* @(#)w_atanh.c 1.3 95/01/18 */
/*
* ====================================================
* Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
*
* Developed at SunSoft, a Sun Microsystems, Inc. business.
* Permission to use, copy, modify, and distribute this
* software is freely granted, provided that this notice
* is preserved.
* ====================================================
*/
/*
* wrapper atanh(x)
*/
#include "fdlibm.h"
#ifdef __STDC__
double fd_atanh(double x) /* wrapper atanh */
#else
double fd_atanh(x) /* wrapper atanh */
double x;
#endif
{
#ifdef _IEEE_LIBM
return __ieee754_atanh(x);
#else
double z,y;
z = __ieee754_atanh(x);
if(_LIB_VERSION == _IEEE_ || fd_isnan(x)) return z;
y = fd_fabs(x);
if(y>=1.0) {
if(y>1.0)
return __kernel_standard(x,x,30); /* atanh(|x|>1) */
else
return __kernel_standard(x,x,31); /* atanh(|x|==1) */
} else
return z;
#endif
}

View File

@@ -0,0 +1,38 @@
/* @(#)w_cosh.c 1.3 95/01/18 */
/*
* ====================================================
* Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
*
* Developed at SunSoft, a Sun Microsystems, Inc. business.
* Permission to use, copy, modify, and distribute this
* software is freely granted, provided that this notice
* is preserved.
* ====================================================
*/
/*
* wrapper cosh(x)
*/
#include "fdlibm.h"
#ifdef __STDC__
double fd_cosh(double x) /* wrapper cosh */
#else
double fd_cosh(x) /* wrapper cosh */
double x;
#endif
{
#ifdef _IEEE_LIBM
return __ieee754_cosh(x);
#else
double z;
z = __ieee754_cosh(x);
if(_LIB_VERSION == _IEEE_ || fd_isnan(x)) return z;
if(fd_fabs(x)>7.10475860073943863426e+02) {
return __kernel_standard(x,x,5); /* cosh overflow */
} else
return z;
#endif
}

View File

@@ -0,0 +1,49 @@
/* @(#)w_exp.c 1.3 95/01/18 */
/*
* ====================================================
* Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
*
* Developed at SunSoft, a Sun Microsystems, Inc. business.
* Permission to use, copy, modify, and distribute this
* software is freely granted, provided that this notice
* is preserved.
* ====================================================
*/
/*
* wrapper exp(x)
*/
#include "fdlibm.h"
#ifdef __STDC__
static const double
#else
static double
#endif
o_threshold= 7.09782712893383973096e+02, /* 0x40862E42, 0xFEFA39EF */
u_threshold= -7.45133219101941108420e+02; /* 0xc0874910, 0xD52D3051 */
#ifdef __STDC__
double fd_exp(double x) /* wrapper exp */
#else
double fd_exp(x) /* wrapper exp */
double x;
#endif
{
#ifdef _IEEE_LIBM
return __ieee754_exp(x);
#else
double z;
z = __ieee754_exp(x);
if(_LIB_VERSION == _IEEE_) return z;
if(fd_finite(x)) {
if(x>o_threshold)
return __kernel_standard(x,x,6); /* exp overflow */
else if(x<u_threshold)
return __kernel_standard(x,x,7); /* exp underflow */
}
return z;
#endif
}

View File

@@ -0,0 +1,39 @@
/* @(#)w_fmod.c 1.3 95/01/18 */
/*
* ====================================================
* Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
*
* Developed at SunSoft, a Sun Microsystems, Inc. business.
* Permission to use, copy, modify, and distribute this
* software is freely granted, provided that this notice
* is preserved.
* ====================================================
*/
/*
* wrapper fmod(x,y)
*/
#include "fdlibm.h"
#ifdef __STDC__
double fd_fmod(double x, double y) /* wrapper fmod */
#else
double fd_fmod(x,y) /* wrapper fmod */
double x,y;
#endif
{
#ifdef _IEEE_LIBM
return __ieee754_fmod(x,y);
#else
double z;
z = __ieee754_fmod(x,y);
if(_LIB_VERSION == _IEEE_ ||fd_isnan(y)||fd_isnan(x)) return z;
if(y==0.0) {
return __kernel_standard(x,y,27); /* fmod(x,0) */
} else
return z;
#endif
}

View File

@@ -0,0 +1,46 @@
/* @(#)w_gamma.c 1.3 95/01/18 */
/*
* ====================================================
* Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
*
* Developed at SunSoft, a Sun Microsystems, Inc. business.
* Permission to use, copy, modify, and distribute this
* software is freely granted, provided that this notice
* is preserved.
* ====================================================
*
*/
/* double gamma(double x)
* Return the logarithm of the Gamma function of x.
*
* Method: call gamma_r
*/
#include "fdlibm.h"
extern int signgam;
#ifdef __STDC__
double fd_gamma(double x)
#else
double fd_gamma(x)
double x;
#endif
{
#ifdef _IEEE_LIBM
return __ieee754_gamma_r(x,&signgam);
#else
double y;
y = __ieee754_gamma_r(x,&signgam);
if(_LIB_VERSION == _IEEE_) return y;
if(!fd_finite(y)&&fd_finite(x)) {
if(fd_floor(x)==x&&x<=0.0)
return __kernel_standard(x,x,41); /* gamma pole */
else
return __kernel_standard(x,x,40); /* gamma overflow */
} else
return y;
#endif
}

View File

@@ -0,0 +1,42 @@
/* @(#)w_gamma_r.c 1.3 95/01/18 */
/*
* ====================================================
* Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
*
* Developed at SunSoft, a Sun Microsystems, Inc. business.
* Permission to use, copy, modify, and distribute this
* software is freely granted, provided that this notice
* is preserved.
* ====================================================
*/
/*
* wrapper double gamma_r(double x, int *signgamp)
*/
#include "fdlibm.h"
#ifdef __STDC__
double fd_gamma_r(double x, int *signgamp) /* wrapper lgamma_r */
#else
double fd_gamma_r(x,signgamp) /* wrapper lgamma_r */
double x; int *signgamp;
#endif
{
#ifdef _IEEE_LIBM
return __ieee754_gamma_r(x,signgamp);
#else
double y;
y = __ieee754_gamma_r(x,signgamp);
if(_LIB_VERSION == _IEEE_) return y;
if(!fd_finite(y)&&fd_finite(x)) {
if(fd_floor(x)==x&&x<=0.0)
return __kernel_standard(x,x,41); /* gamma pole */
else
return __kernel_standard(x,x,40); /* gamma overflow */
} else
return y;
#endif
}

View File

@@ -0,0 +1,39 @@
/* @(#)w_hypot.c 1.3 95/01/18 */
/*
* ====================================================
* Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
*
* Developed at SunSoft, a Sun Microsystems, Inc. business.
* Permission to use, copy, modify, and distribute this
* software is freely granted, provided that this notice
* is preserved.
* ====================================================
*/
/*
* wrapper hypot(x,y)
*/
#include "fdlibm.h"
#ifdef __STDC__
double fd_hypot(double x, double y)/* wrapper hypot */
#else
double fd_hypot(x,y) /* wrapper hypot */
double x,y;
#endif
{
#ifdef _IEEE_LIBM
return __ieee754_hypot(x,y);
#else
double z;
z = __ieee754_hypot(x,y);
if(_LIB_VERSION == _IEEE_) return z;
if((!fd_finite(z))&&fd_finite(x)&&fd_finite(y))
return __kernel_standard(x,y,4); /* hypot overflow */
else
return z;
#endif
}

View File

@@ -0,0 +1,65 @@
/* @(#)w_j0.c 1.3 95/01/18 */
/*
* ====================================================
* Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
*
* Developed at SunSoft, a Sun Microsystems, Inc. business.
* Permission to use, copy, modify, and distribute this
* software is freely granted, provided that this notice
* is preserved.
* ====================================================
*/
/*
* wrapper j0(double x), y0(double x)
*/
#include "fdlibm.h"
#ifdef __STDC__
double fd_j0(double x) /* wrapper j0 */
#else
double fd_j0(x) /* wrapper j0 */
double x;
#endif
{
#ifdef _IEEE_LIBM
return __ieee754_j0(x);
#else
double z = __ieee754_j0(x);
if(_LIB_VERSION == _IEEE_ || fd_isnan(x)) return z;
if(fd_fabs(x)>X_TLOSS) {
return __kernel_standard(x,x,34); /* j0(|x|>X_TLOSS) */
} else
return z;
#endif
}
#ifdef __STDC__
double y0(double x) /* wrapper y0 */
#else
double y0(x) /* wrapper y0 */
double x;
#endif
{
#ifdef _IEEE_LIBM
return __ieee754_y0(x);
#else
double z;
z = __ieee754_y0(x);
if(_LIB_VERSION == _IEEE_ || fd_isnan(x) ) return z;
if(x <= 0.0){
if(x==0.0)
/* d= -one/(x-x); */
return __kernel_standard(x,x,8);
else
/* d = zero/(x-x); */
return __kernel_standard(x,x,9);
}
if(x>X_TLOSS) {
return __kernel_standard(x,x,35); /* y0(x>X_TLOSS) */
} else
return z;
#endif
}

View File

@@ -0,0 +1,66 @@
/* @(#)w_j1.c 1.3 95/01/18 */
/*
* ====================================================
* Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
*
* Developed at SunSoft, a Sun Microsystems, Inc. business.
* Permission to use, copy, modify, and distribute this
* software is freely granted, provided that this notice
* is preserved.
* ====================================================
*/
/*
* wrapper of j1,y1
*/
#include "fdlibm.h"
#ifdef __STDC__
double fd_j1(double x) /* wrapper j1 */
#else
double fd_j1(x) /* wrapper j1 */
double x;
#endif
{
#ifdef _IEEE_LIBM
return __ieee754_j1(x);
#else
double z;
z = __ieee754_j1(x);
if(_LIB_VERSION == _IEEE_ || fd_isnan(x) ) return z;
if(fd_fabs(x)>X_TLOSS) {
return __kernel_standard(x,x,36); /* j1(|x|>X_TLOSS) */
} else
return z;
#endif
}
#ifdef __STDC__
double y1(double x) /* wrapper y1 */
#else
double y1(x) /* wrapper y1 */
double x;
#endif
{
#ifdef _IEEE_LIBM
return __ieee754_y1(x);
#else
double z;
z = __ieee754_y1(x);
if(_LIB_VERSION == _IEEE_ || fd_isnan(x) ) return z;
if(x <= 0.0){
if(x==0.0)
/* d= -one/(x-x); */
return __kernel_standard(x,x,10);
else
/* d = zero/(x-x); */
return __kernel_standard(x,x,11);
}
if(x>X_TLOSS) {
return __kernel_standard(x,x,37); /* y1(x>X_TLOSS) */
} else
return z;
#endif
}

View File

@@ -1,36 +1,3 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* The contents of this file are subject to the Netscape Public
* License Version 1.1 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.mozilla.org/NPL/
*
* Software distributed under the License is distributed on an "AS
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express oqr
* implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code is Mozilla Communicator client code, released
* March 31, 1998.
*
* The Initial Developer of the Original Code is Sun Microsystems,
* Inc. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All
* Rights Reserved.
*
* Contributor(s):
*
* Alternatively, the contents of this file may be used under the
* terms of the GNU Public License (the "GPL"), in which case the
* provisions of the GPL are applicable instead of those above.
* If you wish to allow use of your version of this file only
* under the terms of the GPL and not to allow others to use your
* version of this file under the NPL, indicate your decision by
* deleting the provisions above and replace them with the notice
* and other provisions required by the GPL. If you do not delete
* the provisions above, a recipient may use your version of this
* file under either the NPL or the GPL.
*/
/* @(#)w_jn.c 1.3 95/01/18 */
/*

View File

@@ -0,0 +1,46 @@
/* @(#)w_lgamma.c 1.3 95/01/18 */
/*
* ====================================================
* Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
*
* Developed at SunSoft, a Sun Microsystems, Inc. business.
* Permission to use, copy, modify, and distribute this
* software is freely granted, provided that this notice
* is preserved.
* ====================================================
*
*/
/* double lgamma(double x)
* Return the logarithm of the Gamma function of x.
*
* Method: call __ieee754_lgamma_r
*/
#include "fdlibm.h"
extern int signgam;
#ifdef __STDC__
double fd_lgamma(double x)
#else
double fd_lgamma(x)
double x;
#endif
{
#ifdef _IEEE_LIBM
return __ieee754_lgamma_r(x,&signgam);
#else
double y;
y = __ieee754_lgamma_r(x,&signgam);
if(_LIB_VERSION == _IEEE_) return y;
if(!fd_finite(y)&&fd_finite(x)) {
if(fd_floor(x)==x&&x<=0.0)
return __kernel_standard(x,x,15); /* lgamma pole */
else
return __kernel_standard(x,x,14); /* lgamma overflow */
} else
return y;
#endif
}

View File

@@ -0,0 +1,42 @@
/* @(#)w_lgamma_r.c 1.3 95/01/18 */
/*
* ====================================================
* Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
*
* Developed at SunSoft, a Sun Microsystems, Inc. business.
* Permission to use, copy, modify, and distribute this
* software is freely granted, provided that this notice
* is preserved.
* ====================================================
*/
/*
* wrapper double lgamma_r(double x, int *signgamp)
*/
#include "fdlibm.h"
#ifdef __STDC__
double fd_lgamma_r(double x, int *signgamp) /* wrapper lgamma_r */
#else
double fd_lgamma_r(x,signgamp) /* wrapper lgamma_r */
double x; int *signgamp;
#endif
{
#ifdef _IEEE_LIBM
return __ieee754_lgamma_r(x,signgamp);
#else
double y;
y = __ieee754_lgamma_r(x,signgamp);
if(_LIB_VERSION == _IEEE_) return y;
if(!fd_finite(y)&&fd_finite(x)) {
if(fd_floor(x)==x&&x<=0.0)
return __kernel_standard(x,x,15); /* lgamma pole */
else
return __kernel_standard(x,x,14); /* lgamma overflow */
} else
return y;
#endif
}

View File

@@ -0,0 +1,39 @@
/* @(#)w_log.c 1.3 95/01/18 */
/*
* ====================================================
* Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
*
* Developed at SunSoft, a Sun Microsystems, Inc. business.
* Permission to use, copy, modify, and distribute this
* software is freely granted, provided that this notice
* is preserved.
* ====================================================
*/
/*
* wrapper log(x)
*/
#include "fdlibm.h"
#ifdef __STDC__
double fd_log(double x) /* wrapper log */
#else
double fd_log(x) /* wrapper log */
double x;
#endif
{
#ifdef _IEEE_LIBM
return __ieee754_log(x);
#else
double z;
z = __ieee754_log(x);
if(_LIB_VERSION == _IEEE_ || fd_isnan(x) || x > 0.0) return z;
if(x==0.0)
return __kernel_standard(x,x,16); /* log(0) */
else
return __kernel_standard(x,x,17); /* log(x<0) */
#endif
}

View File

@@ -0,0 +1,42 @@
/* @(#)w_log10.c 1.3 95/01/18 */
/*
* ====================================================
* Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
*
* Developed at SunSoft, a Sun Microsystems, Inc. business.
* Permission to use, copy, modify, and distribute this
* software is freely granted, provided that this notice
* is preserved.
* ====================================================
*/
/*
* wrapper log10(X)
*/
#include "fdlibm.h"
#ifdef __STDC__
double fd_log10(double x) /* wrapper log10 */
#else
double fd_log10(x) /* wrapper log10 */
double x;
#endif
{
#ifdef _IEEE_LIBM
return __ieee754_log10(x);
#else
double z;
z = __ieee754_log10(x);
if(_LIB_VERSION == _IEEE_ || fd_isnan(x)) return z;
if(x<=0.0) {
if(x==0.0)
return __kernel_standard(x,x,18); /* log10(0) */
else
return __kernel_standard(x,x,19); /* log10(x<0) */
} else
return z;
#endif
}

View File

@@ -0,0 +1,68 @@
/* @(#)w_pow.c 1.3 95/01/18 */
/*
* ====================================================
* Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
*
* Developed at SunSoft, a Sun Microsystems, Inc. business.
* Permission to use, copy, modify, and distribute this
* software is freely granted, provided that this notice
* is preserved.
* ====================================================
*/
/*
* wrapper pow(x,y) return x**y
*/
#include "fdlibm.h"
#ifdef __STDC__
double fd_pow(double x, double y) /* wrapper pow */
#else
double fd_pow(x,y) /* wrapper pow */
double x,y;
#endif
{
#ifdef _IEEE_LIBM
return __ieee754_pow(x,y);
#else
double z;
z=__ieee754_pow(x,y);
if(_LIB_VERSION == _IEEE_|| fd_isnan(y)) return z;
if(fd_isnan(x)) {
if(y==0.0)
return __kernel_standard(x,y,42); /* pow(NaN,0.0) */
else
return z;
}
if(x==0.0){
#ifdef HPUX
if ((-1==fd_copysign(1, x))&&((y+1)/2==fd_floor((y+1)/2))) {
if (y>0)
return x;
else
return 1/x;
}
#endif
if(y==0.0)
return __kernel_standard(x,y,20); /* pow(0.0,0.0) */
if(fd_finite(y)&&y<0.0)
return __kernel_standard(x,y,23); /* pow(0.0,negative) */
return z;
}
if(!fd_finite(z)) {
if(fd_finite(x)&&fd_finite(y)) {
if(fd_isnan(z))
return __kernel_standard(x,y,24); /* pow neg**non-int */
else
return __kernel_standard(x,y,21); /* pow overflow */
}
}
if(z==0.0&&fd_finite(x)&&fd_finite(y))
return __kernel_standard(x,y,22); /* pow underflow */
return z;
#endif
}

Some files were not shown because too many files have changed in this diff Show More