mirror of
https://github.com/python/cpython.git
synced 2025-11-03 03:22:27 +00:00
Added (minimal) documentation on how to build standalone applications
with Python. Updated various things (versions of libraries used, urls).
This commit is contained in:
parent
b92dce38e7
commit
a2139fef94
13 changed files with 241 additions and 172 deletions
|
|
@ -2,10 +2,10 @@
|
||||||
|
|
||||||
:$e"*3e4LFQphFf8ZFR0bB`"bFh*M8P0&4!#3#!'8,V!!N!3"!!!!!6m!!!!r!!!
|
:$e"*3e4LFQphFf8ZFR0bB`"bFh*M8P0&4!#3#!'8,V!!N!3"!!!!!6m!!!!r!!!
|
||||||
!9G'"(r!!q[m!!2Vr!!$kf!!!qYJ!!2VB!!$kf!!!q[qJ$e"*3e4LFQphFf8ZFR0
|
!9G'"(r!!q[m!!2Vr!!$kf!!!qYJ!!2VB!!$kf!!!q[qJ$e"*3e4LFQphFf8ZFR0
|
||||||
bB`)!!!"bFh*M8P0&4!#3"R*cFQ058d9%!*!BVAAL!`#3"J'8r`!!q[m!!2VB!!$
|
bB`)!!!"bFh*M8P0&4!#3"R*cFQ058d9%!*!BVPGG(3#3"J'8r`!!q[m!!2VB!!$
|
||||||
kf!!!qYJ!!2VB!!$krk!!q[mJm!$kr`!!q[m!!2VB&3!!qYJ!!2VB!!!6qYJ!!2V
|
kf!!!qYJ!!2VB!!$krk!!q[mJm!$kr`!!q[m!!2VB&3!!qYJ!!2VB!!!6qYJ!!2V
|
||||||
r)!SJ#b!-!D!!)!Da%"6i!2Vr!!$kf!!!qYJ!!2VB!!$kf!!!qYJ!!2Vr!!$kr`!
|
r)!SJ#b!-!D!!)!Da%"6i!2Vr!!$kf!!!qYJ!!2VB!!$kf!!!qYJ!!2Vr!!$kr`!
|
||||||
!q[ri!2Vr%#B!!2Vr`!$krc$i!2Vr!*!%&3"!!"!"&!$&!!!"!!%!N!8#!*!&)J!
|
!q[ri!2Vr%#B!!2Vr`!$krc$i!2Vr!*!%&3"!!"!"&!$&!!!"!!%!N!8#!*!&)J!
|
||||||
"!*!&"3!+!+-!V!#3"l3!2!$)!(B%"&0SEhF!!!%!!!!"2`!!!$m!!!"9!2!Xj"0
|
"!*!&"3!+!+-!V!#3"l3!2!$)!(B%"&0SEhF!!!%!!!!"2`!!!$m!!!"9!2!Xj"0
|
||||||
i!!!!(!"'!!&%6%p(!!!!%N4*9%`!!!!H!J#3#`)!rrm!!!!C!*!%$N*bEhGcCA)
|
i!!!!(!"'!!&%6%p(!!!!%N4*9%`!!!!H!J#3#`)!rrm!!!!C!*!%$N*bEhGcCA)
|
||||||
JGfPZC'phVc!:
|
JGfPZC'ph%ES:
|
||||||
|
|
|
||||||
|
|
@ -44,10 +44,10 @@ directory <code>Mac/mwerks/projects</code> for the project files and
|
||||||
related stuff.
|
related stuff.
|
||||||
|
|
||||||
<LI> You need MetroWerks CodeWarrior. The current distribution has
|
<LI> You need MetroWerks CodeWarrior. The current distribution has
|
||||||
been built with CodeWarrior Pro 1. Ordering information is
|
been built with CodeWarrior Pro 2. Ordering information is
|
||||||
available on the <A HREF="http://www.metrowerks.com/">MetroWerks
|
available on the <A HREF="http://www.metrowerks.com/">MetroWerks
|
||||||
homepage</A>. You might still be able to build Python with MPW or
|
homepage</A>. Building Python with MPW or Think/Symantec C is
|
||||||
Think/Symantec C but you are basically on your own.
|
probably impossible without major surgery.
|
||||||
|
|
||||||
<LI> You need GUSI, the Grand Unified Socket Interface, by Matthias
|
<LI> You need GUSI, the Grand Unified Socket Interface, by Matthias
|
||||||
Neeracher. The original CWGUSI is
|
Neeracher. The original CWGUSI is
|
||||||
|
|
@ -61,7 +61,7 @@ these modifications are available in folder <code>Python:Mac:GUSI-mods</code>.
|
||||||
|
|
||||||
<A NAME="optional">The MacPython project files are configured to
|
<A NAME="optional">The MacPython project files are configured to
|
||||||
include a plethora of optional modules</A>, and these modules need a
|
include a plethora of optional modules</A>, and these modules need a
|
||||||
number extra packages. To use the project files as-is you have to
|
number of extra packages. To use the project files as-is you have to
|
||||||
download these packages too. PPC and CFM68K Python have all such modules as
|
download these packages too. PPC and CFM68K Python have all such modules as
|
||||||
dynamically loaded modules, so if you don't need a certain package it
|
dynamically loaded modules, so if you don't need a certain package it
|
||||||
suffices to just refrain from builing the extension module. For static 68K
|
suffices to just refrain from builing the extension module. For static 68K
|
||||||
|
|
@ -81,8 +81,8 @@ below. Get the "full source" distribution, which includes MoreFiles.
|
||||||
|
|
||||||
<LI> Waste, a TextEdit replacement written by Marco Piovanelli, <A
|
<LI> Waste, a TextEdit replacement written by Marco Piovanelli, <A
|
||||||
HREF="mailto:piovanel@kagi.com"><piovanel@kagi.com></A>. Python
|
HREF="mailto:piovanel@kagi.com"><piovanel@kagi.com></A>. Python
|
||||||
was built using version 1.2, which you can obtain from <A
|
was built using version 1.3, which you can obtain from <A
|
||||||
HREF="ftp://rhino.harvard.edu/pub/dan/WASTE"><ftp://rhino.harvard.edu/pub/dan/WASTE></A>
|
HREF="http://www.boingo.com/waste"><http://www.boingo.com/waste></A>
|
||||||
and various other places.
|
and various other places.
|
||||||
|
|
||||||
<LI> Gdbm library for the Mac. Available from Jack's Mac software page at
|
<LI> Gdbm library for the Mac. Available from Jack's Mac software page at
|
||||||
|
|
@ -121,12 +121,12 @@ Top-level-folder:
|
||||||
zlib
|
zlib
|
||||||
libpng
|
libpng
|
||||||
gdbm
|
gdbm
|
||||||
MoreFiles 1.4.3 (not needed by Python, only by tcl/tk)
|
|
||||||
Python
|
Python
|
||||||
Tcl/Tk Folder
|
Tcl/Tk Folder
|
||||||
tcl8.0
|
tcl8.0
|
||||||
tk8.0
|
tk8.0
|
||||||
Waste 1.2 distribution (if you want waste)
|
MoreFiles 1.4.3
|
||||||
|
Waste 1.3 distribution (if you want waste)
|
||||||
</PRE>
|
</PRE>
|
||||||
|
|
||||||
First build GUSI. If you didn't get the python-specific GUSI you have to
|
First build GUSI. If you didn't get the python-specific GUSI you have to
|
||||||
|
|
@ -137,7 +137,7 @@ platform (ppc, 68k, cfm68k). <p>
|
||||||
Next, in
|
Next, in
|
||||||
<code>MoreFiles</code>, <code>libjpeg</code>, <code>pbmplus</code>,
|
<code>MoreFiles</code>, <code>libjpeg</code>, <code>pbmplus</code>,
|
||||||
<code>zlib</code>, <code>libpng</code>, <code>gdbm</code>,
|
<code>zlib</code>, <code>libpng</code>, <code>gdbm</code>,
|
||||||
and<code>libtiff</code> you build all projects. Sometimes the projects are in "mac"
|
and<code>libtiff</code> you build all projects. Usually the projects are in "mac"
|
||||||
subfolders, sometimes they are in the main folder. Tcl/tk is a special
|
subfolders, sometimes they are in the main folder. Tcl/tk is a special
|
||||||
case, see below. Of course, if you are only interested in one of
|
case, see below. Of course, if you are only interested in one of
|
||||||
static 68K, CFM68K or PPC you can skip building the other libraries.
|
static 68K, CFM68K or PPC you can skip building the other libraries.
|
||||||
|
|
@ -174,14 +174,7 @@ building Python.
|
||||||
<H2>Building Waste</H2>
|
<H2>Building Waste</H2>
|
||||||
|
|
||||||
You do not need to build the Waste libraries, as Python includes the
|
You do not need to build the Waste libraries, as Python includes the
|
||||||
source modules themselves. You have to make one modification,
|
source modules themselves.
|
||||||
though. In file <code>ICCFMGlue.c</code> in folder <code>Minimal IC
|
|
||||||
APIs</code>, add the following lines:
|
|
||||||
|
|
||||||
<blockquote><pre><code>
|
|
||||||
#include <Gestalt.h>
|
|
||||||
#include <Errors.h>
|
|
||||||
</code></pre></blockquote>
|
|
||||||
|
|
||||||
<H2>The organization of the Python source tree</H2>
|
<H2>The organization of the Python source tree</H2>
|
||||||
|
|
||||||
|
|
@ -190,19 +183,16 @@ the Python source tree. At the top level, we find the following
|
||||||
folders:
|
folders:
|
||||||
|
|
||||||
<DL>
|
<DL>
|
||||||
<DT> build.mac68k.stand
|
<DT> build.macstand
|
||||||
<DD> This is where you build static 68K interpreters.
|
<DD> This is where you build static 68K interpreter, and possibly (if
|
||||||
|
you want them) static PPC and fat interpreters. There is also a project
|
||||||
|
here that builds smaller versions of the static interpreter.
|
||||||
|
|
||||||
<DT> build.mac68k.shared
|
<DT> build.mac
|
||||||
<DD> This is where you build the CFM68K shared library, interpreter
|
<DD> This is where you build the CFM68K, PPC and fat shared library,
|
||||||
and applet framework.
|
interpreter and applet framework. The fat targets are deposited in the
|
||||||
|
main folder (one level up), the others, which are intermediate results
|
||||||
<DT> build.macppc.shared
|
really, are left here.
|
||||||
<DD> This is where you build the PPC shared library, interpreter and
|
|
||||||
applet framework. You can also build the fat applet framework here.
|
|
||||||
|
|
||||||
<DT> build.macppc.stand
|
|
||||||
<DD> This is where you build a nonshared PPC interpreter (optional).
|
|
||||||
|
|
||||||
<DT> Demo
|
<DT> Demo
|
||||||
<DD> Demo programs that are not Mac-specific. Some of these may not
|
<DD> Demo programs that are not Mac-specific. Some of these may not
|
||||||
|
|
@ -211,7 +201,7 @@ work, the file <code>README-Mac</code> has some details.
|
||||||
<DT> Extensions
|
<DT> Extensions
|
||||||
<DD> Extensions to the interpreter that are not Mac-specific. Contains
|
<DD> Extensions to the interpreter that are not Mac-specific. Contains
|
||||||
only the <code>img</code> extension in this distribution. Extensions
|
only the <code>img</code> extension in this distribution. Extensions
|
||||||
are <em>not</em> built here, as they are on Unix, but incorporated in
|
are not always built here, as they are on Unix, but sometimes incorporated in
|
||||||
the core interpreter or built as plugin modules.
|
the core interpreter or built as plugin modules.
|
||||||
|
|
||||||
<DT> Grammar
|
<DT> Grammar
|
||||||
|
|
|
||||||
|
|
@ -79,3 +79,4 @@ http://www.biap.com/datapig/mrwheat/cgi_params.html</a>. <p>
|
||||||
To test the script drop <code>cgitest.cgi.py</code> onto <code>mkapplet</code>,
|
To test the script drop <code>cgitest.cgi.py</code> onto <code>mkapplet</code>,
|
||||||
move the resulting <code>cgitest.cgi</code> to somewhere where it is reachable
|
move the resulting <code>cgitest.cgi</code> to somewhere where it is reachable
|
||||||
by NetPresenz, and point your web browser towards it.
|
by NetPresenz, and point your web browser towards it.
|
||||||
|
</BODY></HTML>
|
||||||
|
|
|
||||||
|
|
@ -1,121 +1,122 @@
|
||||||
(This file must be converted with BinHex 4.0)
|
(This file must be converted with BinHex 4.0)
|
||||||
|
|
||||||
:%'0RDA4PFh3ZBfGT,R*cFQ-!FR0bBe*6483"!*!((`VqD`#3"!%!!!!G33!!(%%
|
:%'0RDA4PFh3ZBfGT,R*cFQ-!FR0bBe*6483!N!JI#T%Z!*!%!3!!!"e"!!!F33!
|
||||||
!!!(*0K3J9#"S!"3J8(d4X'J4!$S"CbB5,`a1ZJ)-$$S!@RN3BfGTG'9cG#jMCfN
|
!!FNf&#"8)'J!&#"3I4'`D"%!1J&R*K)[$%kk!J`-1J"DH4"MCfPdCA0d,Q0RD5j
|
||||||
ZFR0bBfN#!!!!2j!)!*!%2j!)!*!BVRDb4!#3"Km+ra(!U'N"(8!4rr-6F!!3,[r
|
bFh*MD3)!!!"bFh*M8P0&4!#3"(*cFQ058d9%!*!BVUU!+!#3"Km+ra(!U'N"(8!
|
||||||
c[G)4CK"40Vj9D`%"3N5pSEj9D`%"-&%b!@FH4"8-!!!FC4*`!"!Z3a8-!!!IBJC
|
4rr-6F!!3,[rc[G)4CK"40Vj9D`%"3N5pSEj9D`%"-&%b!@FH4"8-!!!FC4*`!"!
|
||||||
`!@!!!3%#,&T8,5j%[3%!'c`"CM!R96iD5S!J8`)S!,m!,L)!l3N#!3"!JbME0"1
|
Z3a8-!!!IBJC`!@!!!3%#,&T8,5j%[3%!'c`"CM!R96iD5S!J8`)S!,m!,L)!l3N
|
||||||
Tebm-6VS"#8TRD`%!TPG$1J!!!3!4!!!!!3IJ!)%'B!!!"q!!N!!"J!#3!!'!!*!
|
#!3"!JbME0"1Tebm-6VS"#8TRD`%!TPG$1J!!!3!4!!!!!3IJ!)%'B!!!"q!!N!!
|
||||||
!rri!N!$rrJ!3rrm!NIr!J*(rJ%#4rc!JJrr)%)2JIiq$rM!(Krm!"iIrJ!H(rq!
|
"J!#3!!'!!*!!rri!N!$rrJ!3rrm!NIr!J*(rJ%#4rc!JJrr)%)2JIiq$rM!(Krm
|
||||||
($rrrj`rrrpm2rrrR(Frri"QqrrJGI'Bi24lDh$eZfY`pEYVFICjQhRrrrrjrrrr
|
!"iIrJ!H(rq!($rrrj`rrrpm2rrrR(Frri"QqrrJGI'Bi24lDh$eZfY`pEYVFICj
|
||||||
q!*!*$r!!!!r`!!!2m!!!$r!!!!r`!!(rri!"rrq!!IrrJ!2rri!$rrr!!rrri!I
|
QhRrrrrjrrrrq!*!*$r!!!!r`!!!2m!!!$r!!!!r`!!(rri!"rrq!!IrrJ!2rri!
|
||||||
rrr!(rrrr"rrrr`rrrrm2rrrr$rrrrarrrrmIrrrr(rrrrcrrrrJrrrrm2rrrr(r
|
$rrr!!rrri!Irrr!(rrrr"rrrr`rrrrm2rrrr$rrrrarrrrmIrrrr(rrrrcrrrrJ
|
||||||
rrrjrrrrqIrrrr[q3&!#3"`T3i!!HK)!!"k%J!!!!3!#3""1!%i!"!#I!*r!R$Ji
|
rrrrm2rrrr(rrrrjrrrrqIrrrr[q3&!#3"`T3i!!HK)!!"k%J!!!!3!#3""1!%i!
|
||||||
'$iB2jKUi'V!Im!#3"2q3)!!!!3!!!3!!%!+!!!3%3!"%##!!9I!3!&%J#!"3`r3
|
"!#I!*r!R$Ji'$iB2jKUi'V!Im!#3"2q3)!!!!3!!!3!!%!+!!!3%3!"%##!!9I!
|
||||||
!8-BD!"2m2`"6r"k!4r`V3%ri)5"Aq!q3!'rm2iK2r$q%cr`IJPrq$i&rrJq#(ri
|
3!&%J#!"3`r3!8-BD!"2m2`"6r"k!4r`V3%ri)5"Aq!q3!'rm2iK2r$q%cr`IJPr
|
||||||
("#hr!`JVI`)3+cd')'PRQ%"T*r#!Irq"!!!J!J!!%!3!!!J)!!!%%!!!!L!!!!&
|
q$i&rrJq#(ri("#hr!`JVI`)3+cd')'PRQ%"T*r#!Irq"!!!J!J!!%!3!!!J)!!!
|
||||||
!!!!!J!!!!3!!%!1!!!3(`!"%$q!!9Ir`!&(rq!"3rr`!82rq!"2rr`"6rrq!4rr
|
%%!!!!L!!!!&!!!!!J!!!!3!!%!1!!!3(`!"%$q!!9Ir`!&(rq!"3rr`!82rq!"2
|
||||||
r`%rrrq"Irrr`Irrrq(rrrrcrrrrqIrrrrhrrrriIrrrm2rrrq$rrrr!rrrrJIrr
|
rr`"6rrq!4rrr`%rrrq"Irrr`Irrrq(rrrrcrrrrqIrrrrhrrrriIrrrm2rrrq$r
|
||||||
r`(rrri"rrrm!!$rq!!!Ir!!!$rJ!!!I`!!!$i!!!!F!!!!#!!!!!!J#3#!m!N!N
|
rrr!rrrrJIrrr`(rrri"rrrm!!$rq!!!Ir!!!$rJ!!!I`!!!$i!!!!F!!!!#!!!!
|
||||||
2!*!&m2!!N!N2!!!!$``2!*!($`!2!!!!m-c!m!#3"Jm2$`99A`c-c!m!N!B2$`!
|
!!J#3#!m!N!N2!*!&m2!!N!N2!!!!$``2!*!($`!2!!!!m-c!m!#3"Jm2$`99A`c
|
||||||
&!&c-c-c!m!#3"3m2!!"9h3$rrr`2!*!&$`m!!&AG$iGhIr$`!*!&$`"999AiGhH
|
-c!m!N!B2$`!&!&c-c-c!m!#3"3m2!!"9h3$rrr`2!*!&$`m!!&AG$iGhIr$`!*!
|
||||||
,r`m!N!32$`"999@)GhGlMr$`!!!!$`!&9999@hGhKlHr$`!!!!m!p99999YhGiG
|
&$`"999AiGhH,r`m!N!32$`"999@)GhGlMr$`!!!!$`!&9999@hGhKlHr$`!!!!m
|
||||||
hIm$`!!!2$`99999AGhGhZi[m$`!!$r"9N!9hGlZ,Lrc!m!!2$&@3"AGhZlZlr-`
|
!p99999YhGiGhIm$`!!!2$`99999AGhGhZi[m$`!!$r"9N!9hGlZ,Lrc!m!!2$&@
|
||||||
2!2r-9C!&GhGlZiMmc-$`$q99N!9hGhH)Lrc-c-m2p9@3"9GhGlZrr-c0m!!&9C!
|
3"AGhZlZlr-`2!2r-9C!&GhGlZiMmc-$`$q99N!9hGhH)Lrc-c-m2p9@3"9GhGlZ
|
||||||
&9hGhHlr-c0m!!&&9&9@3"(GhGrr-cI!!!&&49499999hGhImc0m!!!"48984848
|
rr-c0m!!&9C!&9hGhHlr-c0m!!&&9&9@3"(GhGrr-cI!!!&&49499999hGhImc0m
|
||||||
9GhGrr-h`!!!&89%9&9%9&9GrrmcI!!!!"9&4&4&4&49Irmc0m!!!!!99N!GFc-c
|
!!!"489848489GhGrr-h`!!!&89%9&9%9&9GrrmcI!!!!"9&4&4&4&49Irmc0m!!
|
||||||
I!*!*rGhGhFc0m!#3#3rGhGh-h`#3#rh-c-h`!*!,$pc-h`#3$Ih0m!#3$3rI!*!
|
!!!99N!GFc-cI!*!*rGhGhFc0m!#3#3rGhGh-h`#3#rh-c-h`!*!,$pc-h`#3$Ih
|
||||||
2m!#3#33!N"$r!*!6r`#3#[m!r`#3&2m!N!Ir!#X!r`#3$rm!!!$r!*!'r`!V+bX
|
0m!#3$3rI!*!2m!#3#33!N"$r!*!6r`#3#[m!r`#3&2m!N!Ir!#X!r`#3$rm!!!$
|
||||||
!r`#3$[m!r`$r!,#3"2m!+j!&!2m!N!hr!2m!!!#`!!#`+j!)!2m!N!cr!2m!N!5
|
r!*!'r`!V+bX!r`#3$[m!r`$r!,#3"2m!+j!&!2m!N!hr!2m!!!#`!!#`+j!)!2m
|
||||||
`X2Vk!!$rN!8V!2m!N![r!2m!N!5`X2Vk!2qI5*!%rrm!r`#3$2m!!,#3"[qI5*!
|
!N!cr!2m!N!5`X2Vk!!$rN!8V!2m!N![r!2m!N!5`X2Vk!2qI5*!%rrm!r`#3$2m
|
||||||
%Rjrrr`$r!*!*r`$r!!#`N!BcRdL3"61Irrm!r`#3#2m!!!#`N!Jc5*!%-dJc5$2
|
!!,#3"[qI5*!%Rjrrr`$r!*!*r`$r!!#`N!BcRdL3"61Irrm!r`#3#2m!!!#`N!J
|
||||||
r!2m!N!Ir!!$rX*!)-dL3"*p)N!6r+`$r!*!'r`$r!,#3#%L3"jmc-c2r+`$r!*!
|
c5*!%-dJc5$2r!2m!N!Ir!!$rX*!)-dL3"*p)N!6r+`$r!*!'r`$r!,#3#%L3"jm
|
||||||
&rrm!X*!+5*!%Rc-c-jmcrbXV!2m!N!6r!#Z`N!T)N!3cRc13"2mV+bX!r`!!rrm
|
c-c2r+`$r!*!&rrm!X*!+5*!%Rc-c-jmcrbXV!2m!N!6r!#Z`N!T)N!3cRc13"2m
|
||||||
V+l#3#NL3"6-c-jqIrbZ3"!$r!!$rr,#3#dL3"TqIRc2r+j!'r`$rrl#3$%L3"6-
|
V+bX!r`!!rrmV+l#3#NL3"6-c-jqIrbZ3"!$r!!$rr,#3#dL3"TqIRc2r+j!'r`$
|
||||||
c-rrr+j!%q[m!N!5`N!a)N!DI-rmVN!6kr`#3",!&X,!&X*!*5*!'rrmV+b[kr`#
|
rrl#3$%L3"6-c-rrr+j!%q[m!N!5`N!a)N!DI-rmVN!6kr`#3",!&X,!&X*!*5*!
|
||||||
3"E!&X!@`X!@`N!G)N!Er+bXVq[m!N!D`"E!&X,!&"E!&"E!&X%L3"Irr+b[kr`#
|
'rrmV+b[kr`#3"E!&X!@`X!@`N!G)N!Er+bXVq[m!N!D`"E!&X,!&"E!&"E!&X%L
|
||||||
3"V#`"E!&"E!&X,!&"E!&X,")52rrrbXVq[m!N!H`X!@`"3@`"3@`"3@`"E#`rrr
|
3"Irr+b[kr`#3"V#`"E!&"E!&X,!&"E!&X,")52rrrbXVq[m!N!H`X!@`"3@`"3@
|
||||||
r+bXVq[m!N!L`N"!VN!Akr`#3%[rkN!FV+b[kr`#3&2rkN!BV+rVr!*!@rrSVN!A
|
`"3@`"E#`rrrr+bXVq[m!N!L`N"!VN!Akr`#3%[rkN!FV+b[kr`#3&2rkN!BV+rV
|
||||||
kr`#3'2rk+bXVq[m!N"VrqL[kr`#3(2rkr`#3([m!N"*!#)!T3!)J"0![U$Bd,V*
|
r!*!@rrSVN!Akr`#3'2rk+bXVq[m!N"VrqL[kr`#3(2rkr`#3([m!N"*!#)!T3!)
|
||||||
Z-6mL(m3UL$q3!!)J!8!!J!!!#)!T`!2J"r![q$rm2rjrrcrq(r`rq$r`!q!"`!#
|
J"0![U$Bd,V*Z-6mL(m3UL$q3!!)J!8!!J!!!#)!T`!2J"r![q$rm2rjrrcrq(r`
|
||||||
!!*!&J!!!m!$`!*!%m2!2$`#3"[$!m!#3"!m-r`m!!!$`99phm2!!!2m&KhU[$`!
|
rq$r`!q!"`!#!!*!&J!!!m!$`!*!%m2!2$`#3"[$!m!#3"!m-r`m!!!$`99phm2!
|
||||||
!m&9AL+r!m!rm99GkV-c2!2999AImcI!!"999ImcI!!"489&GcI!!!&9999hI!*!
|
!!2m&KhU[$`!!m&9AL+r!m!rm99GkV-c2!2999AImcI!!"999ImcI!!"489&GcI!
|
||||||
&rGh`!*!&$pm!N!I`!*!0!3#3"Im!!!$r!*!*r`$r!!$r!2m!N!cr!#X!r`#3#[m
|
!!&9999hI!*!&rGh`!*!&$pm!N!I`!*!0!3#3"Im!!!$r!*!*r`$r!!$r!2m!N!c
|
||||||
!+rrr!2m!N!Er!,#`X2p)52m!r`#3"Irr!,$M5%L*LIm!r`#3"2m!X,#`512MLIm
|
r!#X!r`#3#[m!+rrr!2m!N!Er!,#`X2p)52m!r`#3"Irr!,$M5%L*LIm!r`#3"2m
|
||||||
V!2m!!2rr+l#`X%K)LBNVN!6r!!$rX*!&5%Mr+b[jr`#3",#3"8Mr+b[jr`#3",!
|
!X,#`512MLImV!2m!!2rr+l#`X%K)LBNVN!6r!!$rX*!&5%Mr+b[jr`#3",#3"8M
|
||||||
&X!@`"E$j+rRr!*!&X*!(qIRr!*!+rrRjqIm!N!crqIm!N!lr!*!D"d&38%`!!3!
|
r+b[jr`#3",!&X!@`"E$j+rRr!*!&X*!(qIRr!*!+rrRjqIm!N!crqIm!N!lr!*!
|
||||||
!!!%!(rrq!"!!!`!4!)+!%3%#3"-cJL!9@5)3&@%$q"-a+SJ3!!!)%'rl#"!!!!J
|
D"d&38%`!!3!!!!%!(rrq!"!!!`!4!)+!%3%#3"-cJL!9@5)3&@%$q"-a+SJ3!!!
|
||||||
3$lJ)%!!!#"!2hkJ3!!!)%!(Vk"!!!!J3!IF)%1!!#"$KlmJ33!!)%I'qL"(`!!J
|
)%'rl#"!!!!J3$lJ)%!!!#"!2hkJ3!!!)%!(Vk"!!!!J3!IF)%1!!#"$KlmJ33!!
|
||||||
4m$pS%rJ!#"2i2iJ6q!!)&U`hb"DX!!JAr!!)%!!!#"rrrrJIrri!(rrr!"rrri!
|
)%I'qL"(`!!J4m$pS%rJ!#"2i2iJ6q!!)&U`hb"DX!!JAr!!)%!!!#"rrrrJIrri
|
||||||
Irrr!(rrri"rrrr!Irrri(rrrq"rrrrJIrrri(rrrq"rrrrJIrrri(rrrq"rrrrJ
|
!(rrr!"rrri!Irrr!(rrri"rrrr!Irrri(rrrq"rrrrJIrrri(rrrq"rrrrJIrrr
|
||||||
Irrri(rrrq"rrrrJIrrri(rrrq"rrrrJIrrri(rrrq"rrrrJIrrri(rrrq"rrrrJ
|
i(rrrq"rrrrJIrrri(rrrq"rrrrJIrrri(rrrq"rrrrJIrrri(rrrq"rrrrJIrrr
|
||||||
Irrri(rrrq"rrrrJIrrri(rrrq!!!!J!!$rq3#I!!N!82!*!*r`#3"3m!"3#3"&!
|
i(rrrq"rrrrJIrrri(rrrq"rrrrJIrrri(rrrq!!!!J!!$rq3#I!!N!82!*!*r`#
|
||||||
!!2(`!*!%$`!&!!!!"3!!!2%I!*!%$`"9!&8!99!!!2%4m!!!!!m&N!43"3!`!2%
|
3"3m!"3#3"&!!!2(`!*!%$`!&!!!!"3!!!2%I!*!%$`"9!&8!99!!!2%4m!!!!!m
|
||||||
4(`!!!!m&"393!!8!!!$rrrr`!!!2!&8!93!&!$"38&!!m!!!$`#3$2!!!!m!!!9
|
&N!43"3!`!2%4(`!!!!m&"393!!8!!!$rrrr`!!!2!&8!93!&!$"38&!!m!!!$`#
|
||||||
39C!%8&8!!2!!!!m!N!c`!!!2!*!%999399!!!!$`!!!2!*!-m!!!$`#3"&99939
|
3$2!!!!m!!!939C!%8&8!!2!!!!m!N!c`!!!2!*!%999399!!!!$`!!!2!*!-m!!
|
||||||
999"3m!!!$`#3$2!!!!m!N!8&99"39993m!!!$`#3$2!!!!m!N!8&998&93!!m!!
|
!$`#3"&99939999"3m!!!$`#3$2!!!!m!N!8&99"39993m!!!$`#3$2!!!!m!N!8
|
||||||
!$`!!99!!N!M`!!!2!!"98!!&99"9998!m!!!$`!!"3#3#I!!!!m!"999!!93999
|
&998&93!!m!!!$`!!99!!N!M`!!!2!!"98!!&99"9998!m!!!$`!!"3#3#I!!!!m
|
||||||
38!$`!!!2!!9993#3#2!!!!m!"999!!!!9999"9$`!!!2!&9999!!N!I`!!!2!&9
|
!"999!!9399938!$`!!!2!!9993#3#2!!!!m!"999!!!!9999"9$`!!!2!&9999!
|
||||||
999!!!&9999!!m!!!$`"99993!*!(m!!!$`9489&9!!"9"999!2!!!!m&89&493#
|
!N!I`!!!2!&9999!!!&9999!!m!!!$`"99993!*!(m!!!$`9489&9!!"9"999!2!
|
||||||
3"r!!!!m&9C!%!*!(m!!!$`#3$2!!!!rrN!c`!!!!"!#3"2q3&!#3$2m!N",rr`#
|
!!!m&89&493#3"r!!!!m&9C!%!*!(m!!!$`#3$2!!!!rrN!c`!!!!"!#3"2q3&!#
|
||||||
3#rm!!!#`!*!)X!#3"Im&r`#3#[m!!!#`!*!(X!#3"[m&"Im!N!Rr!!#`X!!!X,!
|
3$2m!N",rr`#3#rm!!!#`!*!)X!#3"Im&r`#3#[m!!!#`!*!(X!#3"[m&"Im!N!R
|
||||||
!!,#`X!#3"Im&"3Ar!*!)r`#`!,!!X!#`X!!!X!!!f!!!!2m&N!6r!*!(r`#`!,!
|
r!!#`X!!!X,!!!,#`X!#3"Im&"3Ar!*!)r`#`!,!!X!#`X!!!X!!!f!!!!2m&N!6
|
||||||
!X,!!N!5`!*!'rj!(!*!'r`!!X,!!!,#`!!!!X!!!f!#`!,!!X!!!!2m!N!Er!*!
|
r!*!(r`#`!,!!X,!!N!5`!*!'rj!(!*!'r`!!X,!!!,#`!!!!X!!!f!#`!,!!X!!
|
||||||
Br`#3"[m!N!@`X!#`N!N!X,!!N!6r!*!'r`#3'2m!N!Er!*!)X*!&!,#`X!#3"rm
|
!!2m!N!Er!*!Br`#3"[m!N!@`X!#`N!N!X,!!N!6r!*!'r`#3'2m!N!Er!*!)X*!
|
||||||
!N!Er!*!Br`#3"[m!N!L`N!B!X*!'!,!!r`#3"[m!N"Mr!*!'r`#3#l#3"!#`!,#
|
&!,#`X!#3"rm!N!Er!*!Br`#3"[m!N!L`N!B!X*!'!,!!r`#3"[m!N"Mr!*!'r`#
|
||||||
3"3$r!*!'r`#3'2m!N!Er!*!,X*!&!,#`X!#3"2m!N!Er!*!%X,#`!*!4r`#3"[m
|
3#l#3"!#`!,#3"3$r!*!'r`#3'2m!N!Er!*!,X*!&!,#`X!#3"2m!N!Er!*!%X,#
|
||||||
!N!5`X,!!N!5`N!3!X*!'!!$r!*!'r`#3"E!!N",r!*!'r`!!!,#3"3!!!,#`!,#
|
`!*!4r`#3"[m!N!5`X,!!N!5`N!3!X*!'!!$r!*!'r`#3"E!!N",r!*!'r`!!!,#
|
||||||
3"3#`!!!!r`#3"[m!!!#`N!8!N"$r!*!'r`!!!,#3"3#3"V#3"J#`X!$r!*!'r`!
|
3"3!!!,#`!,#3"3#`!!!!r`#3"[m!!!#`N!8!N"$r!*!'r`!!!,#3"3#3"V#3"J#
|
||||||
!X*!(!*!2r`#3"[m!!,#3"`#3"E#3"`!!!2m!N!Er!!#`N!F!N!rr!*!'r`#`X!@
|
`X!$r!*!'r`!!X*!(!*!2r`#3"[m!!,#3"`#3"E#3"`!!!2m!N!Er!!#`N!F!N!r
|
||||||
`"E!&X,!!N!5`X!#`N!8!!2m!N!Er!,#`"E!&X!@`X!#3$[m!N!Er!,#3#3#3$[m
|
r!*!'r`#`X!@`"E!&X,!!N!5`X!#`N!8!!2m!N!Er!,#`"E!&X!@`X!#3$[m!N!E
|
||||||
!N!Er!*!Br`#3"[q3'J#3"N"rm%!B9949AN!#6rT!!N$b4J*'HNm#6cTIJPqb3!*
|
r!,#3#3#3$[m!N!Er!*!Br`#3"[q3'J#3"N"rm%!B9949AN!#6rT!!N$b4J*'HNm
|
||||||
rr[q3)!!!!)!2rj!&!!!2!*!%$r!!$`8&"3-2(`!2"38&!`rrm!m!N!E`$`"9N!4
|
#6cTIJPqb3!*rr[q3)!!!!)!2rj!&!!!2!*!%$r!!$`8&"3-2(`!2"38&!`rrm!m
|
||||||
3m!m!N!E`$`!!!&99!2!2!!93!!!!m!m!"9!&99$`$`"993!!!2!2!&99!&93m!m
|
!N!E`$`"9N!43m!m!N!E`$`!!!&99!2!2!!93!!!!m!m!"9!&99$`$`"993!!!2!
|
||||||
&9993!!$`$`9999"9!2!2!*!'m!rrN!E`!!!"!!$rN!X!N!Ar!*!*rrm!N!6r!,!
|
2!&99!&93m!m&9993!!$`$`9999"9!2!2!*!'m!rrN!E`!!!"!!$rN!X!N!Ar!*!
|
||||||
!X!#`!0J!r`Ar!!!!r`#`!,!!X!$B!2q3"!!!r`#3$2m!!2m!!,#3#3$r!!$r!*!
|
*rrm!N!6r!,!!X!#`!0J!r`Ar!!!!r`#`!,!!X!$B!2q3"!!!r`#3$2m!!2m!!,#
|
||||||
-r`!!r`#3"V#3"!!!r`!!r`!!!,#`!*!(r`!!r`!!!,#`!!#`N!3!r`!!r`!!X*!
|
3#3$r!!$r!*!-r`!!r`#3"V#3"!!!r`!!r`!!!,#`!*!(r`!!r`!!!,#`!!#`N!3
|
||||||
%!*!'r`!!r`!!X*!%!!#`X,!!r`!!r`#`N!B!N!Ar!!$r!,#3"J#`X!!!r`!!r`#
|
!r`!!r`!!X*!%!*!'r`!!r`!!X*!%!!#`X,!!r`!!r`#`N!B!N!Ar!!$r!,#3"J#
|
||||||
3$2m!!2q3$J#3"!G849K8!*!&!3!!!3!!!!+!!!!%3!!!#+!!!"23!!!L5!!!3B3
|
`X!!!r`!!r`#3$2m!!2q3$J#3"!G849K8!*!&!3!!!3!!!!+!!!!%3!!!#+!!!"2
|
||||||
!!)'#!!%(i3!#"##!"JJa3!S)%5!Arrm3,JJ"#%S%!36+"!%#Im3"!cr#!3BIiJ%
|
3!!!L5!!!3B3!!)'#!!%(i3!#"##!"JJa3!S)%5!Arrm3,JJ"#%S%!36+"!%#Im3
|
||||||
-,rm"'#Yr!6!V*3&JDf@"`'XPJB"rri-!!M!(!!)B$3!#$"N!!JBa!!)$B3!#!F%
|
"!cr#!3BIiJ%-,rm"'#Yr!6!V*3&JDf@"`'XPJB"rri-!!M!(!!)B$3!#$"N!!JB
|
||||||
!!J#"!!!"!!!!!i!!!!I!!!!2i!!!(r!!!$ri!!"rr!!!rri!!Irr!!2rri!(rrr
|
a!!)$B3!#!F%!!J#"!!!"!!!!!i!!!!I!!!!2i!!!(r!!!$ri!!"rr!!!rri!!Ir
|
||||||
!$rrri"rrrr!rrrriIrrrr2rrrrjrrrrr2rrrrKrrrr`rrrri2rrrm$rrrq"rrrr
|
r!!2rri!(rrr!$rrri"rrrr!rrrriIrrrr2rrrrjrrrrr2rrrrKrrrr`rrrri2rr
|
||||||
!IrrrJ(rrr`!#2rm!!Krp!!)2q3!#"r%!!J2K!!)"`3!#!)%!!!!#!*!)$`#3$r$
|
rm$rrrq"rrrr!IrrrJ(rrr`!#2rm!!Krp!!)2q3!#"r%!!J2K!!)"`3!#!)%!!!!
|
||||||
`!*!0$``2!*!0m-c3m!#3#`m-9982!*!,m-a3"F$`!*!*$`c-a9hG$`#3#I$-c-9
|
#!*!)$`#3$r$`!*!0$``2!*!0m-c3m!#3#`m-9982!*!,m-a3"F$`!*!*$`c-a9h
|
||||||
GhF$`!*!($`c-a999A-`2!*!(m-c-a3!!A-c!m!#3"3rph-a3!!"9h-r2!*!&m2h
|
G$`#3#I$-c-9GhF$`!*!($`c-a999A-`2!*!(m-c-a3!!A-c!m!#3"3rph-a3!!"
|
||||||
Fc&!!!!AFcpc`!!!!$`ArN!RG$`!!!2"9r-!!9Gc-c-c2hF$`!!m-82c!!!AFc-c
|
9h-r2!*!&m2hFc&!!!!AFcpc`!!!!$`ArN!RG$`!!!2"9r-!!9Gc-c-c2hF$`!!m
|
||||||
-cph-$`$rc&$m`!!&hFc-c-rGc-$`$q99rZ8!"9h-c-c2hFc-c`$e9IlP!!"Gc-c
|
-82c!!!AFc-c-cph-$`$rc&$m`!!&hFc-c-rGc-$`$q99rZ8!"9h-c-c2hFc-c`$
|
||||||
-cph-cI!!"9Aqj9!!AGc-c-rGc0m!!&&9rZ9999AFc-c2hFh`!!"48Il99999h-c
|
e9IlP!!"Gc-c-cph-cI!!"9Aqj9!!AGc-c-rGc0m!!&&9rZ9999AFc-c2hFh`!!"
|
||||||
-cphI!!!!89(qd9%9&Gh-c-rGm!!!"9&4rY94&49Gc-c2h`!!!!948Il48489AFc
|
48Il99999h-c-cphI!!!!89(qd9%9&Gh-c-rGm!!!"9&4rY94&49Gc-c2h`!!!!9
|
||||||
-cr!!!!!&99Aqj99999hFc0m!N!I`!2hGhGhFcIm!N!I`!!rGhGhFh`m!N!I`!!$
|
48Il48489AFc-cr!!!!!&99Aqj99999hFc0m!N!I`!2hGhGhFcIm!N!I`!!rGhGh
|
||||||
pc-c0m!m!N!I`!!!2h-cI!!m!N!I`!!!!rFh`!!m!N!I`!!!!$pm!!!m!N!I`!*!
|
Fh`m!N!I`!!$pc-c0m!m!N!I`!!!2h-cI!!m!N!I`!!!!rFh`!!m!N!I`!!!!$pm
|
||||||
%m!!!$`#3"J3!N"$r!*!Hr`$r!*!Fr`!V!2m!N"Vr!#XVqJ$r!*!Br`!VX*!%!2m
|
!!!m!N!I`!*!%m!!!$`#3"J3!N"$r!*!Hr`$r!*!Fr`!V!2m!N"Vr!#XVqJ$r!*!
|
||||||
!N"Er!#XVX!!!X#X!r`#3&2m!+j!%X,$kq[S!r`#3%[m!+j!&X,$kq[SV!2m!N"$
|
Br`!VX*!%!2m!N"Er!#XVX!!!X#X!r`#3&2m!+j!%X,$kq[S!r`#3%[m!+j!&X,$
|
||||||
r!#Z3",#3"LXV+`$r!*!1r`!VN!@`!*!%X#Z3"!$r!*!-rrrkqLXV+l!!N!@`X2S
|
kq[SV!2m!N"$r!#Z3",#3"LXV+`$r!*!1r`!VN!@`!*!%X#Z3"!$r!*!-rrrkqLX
|
||||||
V+rmVr`#3#[m!rrVk+bXVX!#3"V$k+b[rqL[r!*!)r`#`rj!5q[S!r`#3"[m!X,$
|
V+l!!N!@`X2SV+rmVr`#3#[m!rrVk+bXVX!#3"V$k+b[rqL[r!*!)r`#`rj!5q[S
|
||||||
r+bX!!!#`X2SVN!Mrq[SV!2m!N!6r!#Z`!2mV+`#3",$k+j!)rrVk+bX!r`!!rrm
|
!r`#3"[m!X,$r+bX!!!#`X2SVN!Mrq[SV!2m!N!6r!#Z`!2mV+`#3",$k+j!)rrV
|
||||||
V+l!!rbXV!*!%X2Vk+j!(rrVk+bXV!2m!!2rmX,#`rkZVX!!!!,#`qLZ3"rrkqLZ
|
k+bX!r`!!rrmV+l!!rbXV!*!%X2Vk+j!(rrVk+bXV!2m!!2rmX,#`rkZVX!!!!,#
|
||||||
3"Im!!2q`X,$rUkZ`!*!%X2SVN!Irq[SV+b[kr`#3",#`X2qVUl#`!!!!X2Vk+j!
|
`qLZ3"rrkqLZ3"Im!!2q`X,$rUkZ`!*!%X2SVN!Irq[SV+b[kr`#3",#`X2qVUl#
|
||||||
'rrVk+b[kr`#3",!&X,$rUkZ`N!Ik+j!'rrVk+rVr!*!&X!@`"IqV-l#3"rSVN!E
|
`!!!!X2Vk+j!'rrVk+b[kr`#3",!&X,$rUkZ`N!Ik+j!'rrVk+rVr!*!&X!@`"Iq
|
||||||
rq[Vkr`#3"V!&X!ArUc-&X!8&X!@`q[SVN!Arq[Vr!*!'X,!&X!ArUc1`X!8&X!@
|
V-l#3"rSVN!Erq[Vkr`#3"V!&X!ArUc-&X!8&X!@`q[SVN!Arq[Vr!*!'X,!&X!A
|
||||||
`X2SVN!Arq[m!N!H`X!@`"IqV-`@`"3@`"E#`qLZ3"Irr!*!)X*!&rkZVX*!)q[S
|
rUc1`X!8&X!@`X2SVN!Arq[m!N!H`X!@`"IqV-`@`"3@`"E#`qLZ3"Irr!*!)X*!
|
||||||
V+b[kr`#3$[m!!!$rqT!)+b[krrm!N!lr!*!%rrU3"b[kr`$r!*!1r`#3"Irk+j!
|
&rkZVX*!)q[SV+b[kr`#3$[m!!!$rqT!)+b[krrm!N!lr!*!%rrU3"b[kr`$r!*!
|
||||||
&q[m!!2m!N!lr!*!'rrSV+b[kr`!!!2m!N!lr!*!(rrSVq[m!N!6r!*!1r`#3#2r
|
1r`#3"Irk+j!&q[m!!2m!N!lr!*!'rrSV+b[kr`!!!2m!N!lr!*!(rrSVq[m!N!6
|
||||||
kr`#3"Im!N!lr!*!*r`#3"[m!N!Y!!)!"3!)J""!)k""%,rTU#6N+'3`UL$qB#LJ
|
r!*!1r`#3#2rkr`#3"Im!N!lr!*!*r`#3"[m!N!Y!!)!"3!)J""!)k""%,rTU#6N
|
||||||
*5!L)#!J!J!(!!q!(m!ri(r`rrRrr2riIr$ri2rJ,k!R)#)J)#!!!!)!!N!6`!*!
|
+'3`UL$qB#LJ*5!L)#!J!J!(!!q!(m!ri(r`rrRrr2riIr$ri2rJ,k!R)#)J)#!!
|
||||||
'$`m!N!E``2!!N!32$-`2!*!%m-a982!!!!m-c-A-$`!!m2q3"2$`$rc`AFc-rFm
|
!!)!!N!6`!*!'$`m!N!E``2!!N!32$-`2!*!%m-a982!!!!m-c-A-$`!!m2q3"2$
|
||||||
!pI!&h-cpm!!&m!AFc2m!!&(a89h0m!!!9I99AGr`!!!!m2hGm2!!!!$`$pm!m!!
|
`$rc`AFc-rFm!pI!&h-cpm!!&m!AFc2m!!&(a89h0m!!!9I99AGr`!!!!m2hGm2!
|
||||||
!!2!!m!$`!!!!m!!!!2!!!!!"!*!*r`#3$[m!r`#3$2m!+`$r!*!+r`!V+bX!r`#
|
!!!$`$pm!m!!!!2!!m!$`!!!!m!!!!2!!!!!"!*!*r`#3$[m!r`#3$2m!+`$r!*!
|
||||||
3#2m!+bZ`X,!!r`#3"[m!+j!%X#XV!2m!N!6r!2q3#3$r!!$rrb[r!,$j+j!%rrN
|
+r`!V+bX!r`#3#2m!+bZ`X,!!r`#3"[m!+j!%X#XV!2m!N!6r!2q3#3$r!!$rrb[
|
||||||
Vr`!!rl$r!!#`q5XV+rrjr`#3",$r!!#`q5XV+rrr!*!%X!Ar"E!&X2NVqIm!N!@
|
r!,$j+j!%rrNVr`!!rl$r!!#`q5XV+rrjr`#3",$r!!#`q5XV+rrr!*!%X!Ar"E!
|
||||||
`X2q`N!6jqIrr!*!(r`$rqIRjr`$r!*!(r`!!rrRr!!$r!*!(r`!!!2m!!!$r!*!
|
&X2NVqIm!N!@`X2q`N!6jqIrr!*!(r`$rqIRjr`$r!*!(r`!!rrRr!!$r!*!(r`!
|
||||||
(r`#3"rm!N!B(3A4YF!!$!*!%,&"jG$J!!!!"4P*&4J!#!!%!J3!!!)!!!`#$580
|
!!2m!!!$r!*!(r`#3"rm!N!B(3A4YF!!$!*!%,&"jG$J!!!!"4P*&4J!#!!%!J3!
|
||||||
1)`!#!!%!J!!!!)%!!`##!!!!!3#3"!N!N!B"!3%!!!%!!!!G33!!(%%!!!(*!21
|
!!)!!!`#$5801)`!#!!%!J!!!!)%!!`##!!!!!3#3"!N!N!B"!3%!!!%!!!!G33!
|
||||||
aT"a)!!!!(!'k!!T#6N4-!!!!@NP$6L-!!`"Q8dPD43!!!*C'8N9'!!)!SQPMFb-
|
!(%%!!!(*!21aT"a)!!!!(!'k!!T#6N4-!!!!@NP$6L-!!`"Q8dPD43!!!*C'8N9
|
||||||
!!`$'D@0X0!!#!2CTBf`i!!)"'QPMFc3!!J%qD@0c1!!#!@*3HA3i!!!"KP"[F(3
|
'!!)!SQPMFb-!!`$'D@0X0!!#!2CTBf`i!!)"'QPMFc3!!J%qD@0c1!!#!@*3HA3
|
||||||
!!!'5!)$rr`!!'rm!N!3",2rr!*!*J2rr!!!"9J#3"B(rr`!!#MN!N!@#rrm!!"-
|
i!!!"KP"[F(3!!!'5!)$rr`!!'rm!N!3",2rr!*!*J2rr!!!"9J#3"B(rr`!!#MN
|
||||||
F!*!%rj!%!!!""!#3"B(rr`!!#Li!N!@!rrm!!"-4!*!&Jrrr!!!Ep!#3"!%Xrrm
|
!N!@#rrm!!"-F!*!%rj!%!!!""!#3"B(rr`!!#Li!N!@!rrm!!"-4!*!&Jrrr!!!
|
||||||
!!!%5!*!&J2rr!!!)BJ#3"B(rr`!!%88!N!@#rrm!!"SS!*!&J2rr!!!#@J#3"B(
|
Ep!#3"!%Xrrm!!!%5!*!&J2rr!!!)BJ#3"B(rr`!!%88!N!@#rrm!!"SS!*!&J2r
|
||||||
rr`!!#cd!N!@#rrm!!"3J!*!&J2rr!!!%AJ#3"B(rr`!!$8%!N!@#rrm!!"BN!*!
|
r!!!#@J#3"B(rr`!!#cd!N!@#rrm!!"3J!*!&J2rr!!!%AJ#3"B(rr`!!$8%!N!@
|
||||||
&J2rr!!!)TJ#3"B(rr`!!%BN!N!@#rrm!!"TX!*!&J2rr!!!*+J#3"B(rr`!!%Jd
|
#rrm!!"BN!*!&J2rr!!!)TJ#3"B(rr`!!%BN!N!@#rrm!!"TX!*!&J2rr!!!*+J#
|
||||||
!N!@#rrm!!"V`!*!+(#m!N!@"rrm!!"`d!*!%$NphEQ9b)(*PFfpeFQ0PAq`:
|
3"B(rr`!!%Jd!N!@#rrm!!"V`!*!+(#m!N!@"rrm!!"`d!*!%$NphEQ9b)(*PFfp
|
||||||
|
eFQ0PY1!:
|
||||||
|
|
|
||||||
|
|
@ -35,7 +35,12 @@ do for applets, by dragging your application to <code>EditPythonPrefs</code>. <p
|
||||||
|
|
||||||
The most logical way to embed Python is to link it against the shared
|
The most logical way to embed Python is to link it against the shared
|
||||||
library <code>PythonCore</code>. An example project and source can be
|
library <code>PythonCore</code>. An example project and source can be
|
||||||
found in the <a href="embed">embed</a> folder.
|
found in the <a href="embed">embed</a> folder. <p>
|
||||||
|
|
||||||
|
<b>Note</b>: you may think that you do not have the project file
|
||||||
|
<code>PythonCore</code> but actually you do: the standard installation
|
||||||
|
process deposits it in the <code>Extensions</code> folder in the system
|
||||||
|
folder under the name <code>PythonCore <i>version</i></code>. Add that file
|
||||||
|
to the project replacing <code>PythonCore</code>. <p>
|
||||||
</BODY>
|
</BODY>
|
||||||
</HTML>
|
</HTML>
|
||||||
|
|
|
||||||
|
|
@ -23,8 +23,8 @@ Python program to control and monitor the behaviour of the low-level
|
||||||
driver, and we will create the user interface around that. If you want
|
driver, and we will create the user interface around that. If you want
|
||||||
to actually run the code, you will obvously need InterSLIP and the
|
to actually run the code, you will obvously need InterSLIP and the
|
||||||
interslip module. The latter is available as a dynamically loadable
|
interslip module. The latter is available as a dynamically loadable
|
||||||
extension for PowerPC macs, and may be compiled in your Python
|
extension for PowerPC/cfm68k Pythons, and may be compiled in your static 68K
|
||||||
interpreter for 68K macs. As of this writing there is still a slight
|
Python. As of this writing there is still a slight
|
||||||
problem with the Python interslip module causing it to say "file not
|
problem with the Python interslip module causing it to say "file not
|
||||||
found" if the driver is not loaded yet. The workaround is to load the
|
found" if the driver is not loaded yet. The workaround is to load the
|
||||||
driver by starting InterSLIP Control and quitting it. <p>
|
driver by starting InterSLIP Control and quitting it. <p>
|
||||||
|
|
@ -50,7 +50,8 @@ NAME="resource-numbering">resource numbering</A>. Because often your
|
||||||
resources will be combined with those that the Python interpreter and
|
resources will be combined with those that the Python interpreter and
|
||||||
various standard modules need you should give your DLOG and DITL
|
various standard modules need you should give your DLOG and DITL
|
||||||
resources numbers above 512. 128 and below are reserved for Apple,
|
resources numbers above 512. 128 and below are reserved for Apple,
|
||||||
128-255 for the Python interpreter and 256-511 for standard
|
128-228 are for extensions like Tk,
|
||||||
|
228-255 for the Python interpreter and 256-511 for standard
|
||||||
modules. If you are writing a module that you will be distributing for
|
modules. If you are writing a module that you will be distributing for
|
||||||
inclusion in other people's programs you may want to register a number
|
inclusion in other people's programs you may want to register a number
|
||||||
in the 256-511 range, contact Guido or myself or whoever you think is
|
in the 256-511 range, contact Guido or myself or whoever you think is
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
:&dPZG'9bFfaTF%0[ER4bEf`Y-5jbFh*M!(*cFQ058d9%!*!)!LIr03#3"!%!!!!
|
:&dPZG'9bFfaTF%0[ER4bEf`Y-5jbFh*M!(*cFQ058d9%!*!)!LIr03#3"!%!!!!
|
||||||
"``!!!--!!!"NCQBd4$9%-%3a4$*%-a*QCM-c0%8e46"&-88b46-5CQBA5@jdCA*
|
"``!!!--!!!"NCQBd4$9%-%3a4$*%-a*QCM-c0%8e46"&-88b46-5CQBA5@jdCA*
|
||||||
cE'P`3fpZG(*[E#da,R*cFQ-#!!!!FR0bB`!!FR0bBe*6483!N"LYGH)0!*!'!LF
|
cE'P`3fpZG(*[E#da,R*cFQ-#!!!!FR0bB`!!FR0bBe*6483!N"LZ9ed#!*!'!LF
|
||||||
cN!3d)!!e)!!`)!!a)!!b)!!c%M-c!!!d)!%e)!%`)!%a)!%b)!%c5b@U5bQU5bU
|
cN!3d)!!e)!!`)!!a)!!b)!!c%M-c!!!d)!%e)!%`)!%a)!%b)!%c5b@U5bQU5bU
|
||||||
U5bZU5bbU5bfU5bkU5bp,0kT,1+T,1DT,1UT,1kT,2+T,2DT,2UT,2kT,3+T,3DT
|
U5bZU5bbU5bfU5bkU5bp,0kT,1+T,1DT,1UT,1kT,2+T,2DT,2UT,2kT,3+T,3DT
|
||||||
,3UT,3kT,4+T,4DT,4UT,4kT,5+T,5DT,5UT,)!#U5b!!!!!9!'!!-J$!!C)!!3%
|
,3UT,3kT,4+T,4DT,4UT,4kT,5+T,5DT,5UT,)!#U5b!!!!!9!'!!-J$!!C)!!3%
|
||||||
|
|
@ -11,4 +11,4 @@ ZEQ9MG!#3"6`!Y!"3!4F%$99`C'&dC5"cG'&dGA-!N!Bm!5)!8!&@"!44G@Pd!*!
|
||||||
&#J"D!"S"9BJ!N!BH!&S!,J&@L!#3"JS!#J!D!&@)"e0dBA4eFcTK!*!&(J!+!#i
|
&#J"D!"S"9BJ!N!BH!&S!,J&@L!#3"JS!#J!D!&@)"e0dBA4eFcTK!*!&(J!+!#i
|
||||||
!9BJ)6@9cFf&RC6S!!!%!!!!"``!!!--!!!"N!2!Xe"2@!!!!(!"'!!&%6%p(!!!
|
!9BJ)6@9cFf&RC6S!!!%!!!!"``!!!--!!!"N!2!Xe"2@!!!!(!"'!!&%6%p(!!!
|
||||||
!%N4*9%`!!!!H!J#3#2!VV!)!!!m!!!!C!2!VE!j$EfjdFQpX)%4TB@a[C`j$Efj
|
!%N4*9%`!!!!H!J#3#2!VV!)!!!m!!!!C!2!VE!j$EfjdFQpX)%4TB@a[C`j$Efj
|
||||||
dFQpX)'4TB@a[Ca4+:
|
dFQpX)'4TB@a[Cd#e:
|
||||||
|
|
|
||||||
|
|
@ -134,16 +134,20 @@ nothing has changed. <p>
|
||||||
|
|
||||||
Now let us try to turn the python script into an applet, a standalone
|
Now let us try to turn the python script into an applet, a standalone
|
||||||
application. This will <em>not</em> work if you have the "classic 68k"
|
application. This will <em>not</em> work if you have the "classic 68k"
|
||||||
Python distribution, only if you have the cfm68k or PPC distribution.
|
Python distribution, only if you have the cfm68k or PPC distribution.
|
||||||
|
|
||||||
|
<blockquote>
|
||||||
Actually, "standalone" is probably not the correct term here, since an
|
Actually, "standalone" is probably not the correct term here, since an
|
||||||
applet does still depend on a lot of the python environment: the
|
applet does still depend on a lot of the python environment: the
|
||||||
PythonCore shared library, the Python Preferences file, the python Lib
|
PythonCore shared library, the Python Preferences file, the python Lib
|
||||||
folder and any other modules that the main module depends on. It is
|
folder and any other modules that the main module depends on. It is
|
||||||
possible to get rid of all these dependencies except for the dependency
|
possible to get rid of all these dependencies and create true standalone
|
||||||
on PythonCore, but at the moment that is still quite difficult so we
|
applications in Python, but this is a bit difficult. See <a href="standalone.html">
|
||||||
will ignore that possibility for now. By standalone we mean here that
|
Standalone Applications in Python</a> for details. For this
|
||||||
|
document, by standalone we mean here that
|
||||||
the script has the look-and-feel of an application, including the
|
the script has the look-and-feel of an application, including the
|
||||||
ability to have its own document types, be droppable, etc. <p>
|
ability to have its own document types, be droppable, etc.
|
||||||
|
</blockquote>
|
||||||
|
|
||||||
The easiest way to create an applet is to take your source file and
|
The easiest way to create an applet is to take your source file and
|
||||||
drop it onto "BuildApplet", located in the Python home
|
drop it onto "BuildApplet", located in the Python home
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
:&dPZG'9bFfaTF%0[ER4bEf`Y-LjbFh*M!(*cFQ058d9%!*!)$2eid3#3"!%!!!!
|
:&dPZG'9bFfaTF%0[ER4bEf`Y-LjbFh*M!(*cFQ058d9%!*!)$2eid3#3"!%!!!!
|
||||||
,T!!!#U3!!!&CCQBd4$9%-%3a4$*%-a*QCM-c0%8e46"&-88b46-5CQBA5@jdCA*
|
,T!!!#U3!!!&CCQBd4$9%-%3a4$*%-a*QCM-c0%8e46"&-88b46-5CQBA5@jdCA*
|
||||||
cE'P`3fpZG(*[E#db,R*cFQ-#!!!!FR0bB`!!FR0bBe*6483!N"LYGH)3!*!'$2d
|
cE'P`3fpZG(*[E#db,R*cFQ-#!!!!FR0bB`!!FR0bBe*6483!N"LZ9ed2!*!'$2d
|
||||||
cN!3d)!!e)!!`)!!a)!!b)!!c%M-c!!!d)!%e)!%`)!%a)!%b)!%c5b@U5bQU5bU
|
cN!3d)!!e)!!`)!!a)!!b)!!c%M-c!!!d)!%e)!%`)!%a)!%b)!%c5b@U5bQU5bU
|
||||||
U5bZU5bbU5bfU5bkU5bp,0kT,1+T,1DT,1UT,1kT,2+T,2DT,2UT,2kT,3+T,3DT
|
U5bZU5bbU5bfU5bkU5bp,0kT,1+T,1DT,1UT,1kT,2+T,2DT,2UT,2kT,3+T,3DT
|
||||||
,3UT,3kT,4+T,4DT,4UT,4kT,5+T,5DT,5UT,)!#U5b!!!!!9!'B!KJ$&!GB!!!%
|
,3UT,3kT,4+T,4DT,4UT,4kT,5+T,5DT,5UT,)!#U5b!!!!!9!'B!KJ$&!GB!!!%
|
||||||
|
|
@ -53,4 +53,4 @@ TBf`i!!!!YQPME$3!!!$#D@0c1!!!!-jTBh-d!!!!fQPMFb-!!!$Q58026J!!!2*
|
||||||
!!!!b!-3$U!#!rrm!!!"5!-3#X!#!rrm!!!"G!-3#Y!#!rrm!!!&K!-3#1!#!rrm
|
!!!!b!-3$U!#!rrm!!!"5!-3#X!#!rrm!!!"G!-3#Y!#!rrm!!!&K!-3#1!#!rrm
|
||||||
!!!9P!-3$D!#!rrm!!!GT!-3#+!#!rrm!!!KY!-3#2!#!rrm!!!Ma!-3#3!)"!"N
|
!!!9P!-3$D!#!rrm!!!GT!-3#+!#!rrm!!!KY!-3#2!#!rrm!!!Ma!-3#3!)"!"N
|
||||||
!!!SE!*!(*!!!#Tm!a!)X$N0[ER4bEf`J4'PKE'pR#8&LEh9d)'*[H!T"BQpeG#"
|
!!!SE!*!(*!!!#Tm!a!)X$N0[ER4bEf`J4'PKE'pR#8&LEh9d)'*[H!T"BQpeG#"
|
||||||
*BfpZ$NphEQ9b)(*PFfpeFQ0P$#`:
|
*BfpZ$NphEQ9b)(*PFfpeFQ0PX8S:
|
||||||
|
|
|
||||||
|
|
@ -85,6 +85,11 @@ how to build a PPC or 68K interpreter from a source distribution.
|
||||||
<A HREF="embed.html">Embedding Python on the Mac</A> is a minimal example of
|
<A HREF="embed.html">Embedding Python on the Mac</A> is a minimal example of
|
||||||
how to embed Python in other Mac applications.
|
how to embed Python in other Mac applications.
|
||||||
|
|
||||||
|
<LI>
|
||||||
|
<a href="standalone.html">Building Standalone applications in Python</a>
|
||||||
|
explains how you can create real standalone applications in Python. You do
|
||||||
|
need source (and a C development environment) for this at the moment.
|
||||||
|
|
||||||
</UL>
|
</UL>
|
||||||
|
|
||||||
The Python distribution contains a few more examples, all unexplained:
|
The Python distribution contains a few more examples, all unexplained:
|
||||||
|
|
@ -105,7 +110,9 @@ img modules on the mac.
|
||||||
|
|
||||||
<LI>
|
<LI>
|
||||||
<I>Resources</I>, <I>Sound</I> and <I>Speech</I> have some examples
|
<I>Resources</I>, <I>Sound</I> and <I>Speech</I> have some examples
|
||||||
on using the respective managers.
|
on using the respective managers. In the <i>Mac:Lib</i> folder you
|
||||||
|
will also find modules that do useful things with the Communications
|
||||||
|
Toolbox, the Finder interface, etc.
|
||||||
</UL>
|
</UL>
|
||||||
|
|
||||||
At some point in the (possibly distant) future, I will add chapters on
|
At some point in the (possibly distant) future, I will add chapters on
|
||||||
|
|
@ -117,12 +124,12 @@ your Python program scriptable, but that will have to wait. <p>
|
||||||
Please let me know if you miss critical information in this
|
Please let me know if you miss critical information in this
|
||||||
document. I am quite sure that I will never find the time to turn it
|
document. I am quite sure that I will never find the time to turn it
|
||||||
into a complete MacPython programmers guide (which would probably be a
|
into a complete MacPython programmers guide (which would probably be a
|
||||||
400-page book instead of 5 lousy html-files), but it should contain
|
400-page book instead of 10 lousy html-files), but it should contain
|
||||||
at least the information that is neither in the standard Python
|
at least the information that is neither in the standard Python
|
||||||
documentation nor in Inside Mac or other Mac programmers
|
documentation nor in Inside Mac or other Mac programmers
|
||||||
documentation. <p>
|
documentation. <p>
|
||||||
|
|
||||||
<HR>
|
<HR>
|
||||||
<A HREF="http://www.cwi.nl/~jack">Jack Jansen</A>,
|
<A HREF="http://www.cwi.nl/~jack">Jack Jansen</A>,
|
||||||
<A HREF="mailto:jack@cwi.nl">jack@cwi.nl</A>, 27-Aug-97.
|
<A HREF="mailto:jack@cwi.nl">jack@cwi.nl</A>, 25-Feb-98.
|
||||||
</BODY></HTML>
|
</BODY></HTML>
|
||||||
|
|
|
||||||
|
|
@ -26,8 +26,7 @@ Next, you need a <A
|
||||||
HREF="http://www.python.org/python/Sources.html">python source
|
HREF="http://www.python.org/python/Sources.html">python source
|
||||||
distribution</A>. For PowerPC and cfm68k development you can actually
|
distribution</A>. For PowerPC and cfm68k development you can actually
|
||||||
get by without a full source distribution, using the Development
|
get by without a full source distribution, using the Development
|
||||||
distribution (if I have gotten around to putting it together by the time
|
distribution. You'll also need a functional python interpreter, and
|
||||||
you read this). You'll also need a functional python interpreter, and
|
|
||||||
the Modulator program (which lives in <CODE>Tools:Modulator</CODE> in
|
the Modulator program (which lives in <CODE>Tools:Modulator</CODE> in
|
||||||
the standard source distribution). You may also find that Guido's <A
|
the standard source distribution). You may also find that Guido's <A
|
||||||
HREF="http://www.python.org/doc/ext/ext.html">Extending and embedding
|
HREF="http://www.python.org/doc/ext/ext.html">Extending and embedding
|
||||||
|
|
@ -190,9 +189,9 @@ language" section of the MW preferences dialog, it will probably be
|
||||||
Make the new interpreter and check that you can import the module, see
|
Make the new interpreter and check that you can import the module, see
|
||||||
the methods (with "dir(interslip)") and call them. <p>
|
the methods (with "dir(interslip)") and call them. <p>
|
||||||
|
|
||||||
<H2>Creating a PowerPC plugin module</H2>
|
<H2>Creating a plugin module</H2>
|
||||||
|
|
||||||
For PowerPC development you could follow the same path, but it is
|
For PowerPC or cfm68k development you could follow the same path, but it is
|
||||||
actually a better idea to use a dynamically loadable module. The
|
actually a better idea to use a dynamically loadable module. The
|
||||||
advantage of dynamically loadable modules is that they are not loaded
|
advantage of dynamically loadable modules is that they are not loaded
|
||||||
until a python program actually uses them (resulting in less memory
|
until a python program actually uses them (resulting in less memory
|
||||||
|
|
@ -211,6 +210,12 @@ of adjustments to the preferences:
|
||||||
<UL>
|
<UL>
|
||||||
<LI> in PPC target, set the output file name to "interslipmodule.pcc.slb",
|
<LI> in PPC target, set the output file name to "interslipmodule.pcc.slb",
|
||||||
<LI> in cfm68k target set the output file name to "interslipmodule.cfm68k.slb".
|
<LI> in cfm68k target set the output file name to "interslipmodule.cfm68k.slb".
|
||||||
|
<LI> if you are working without a source distribution (i.e. with a normal
|
||||||
|
binary distribution plus a development distribution) you will not have
|
||||||
|
a file <code>PythonCore</code>. The installation process has deposited this
|
||||||
|
file in the System <code>Extensions</code> folder under the name
|
||||||
|
<code>PythonCore <i>version</i></code>. Add that file to the project, replacing
|
||||||
|
<code>PythonCore</code>.
|
||||||
</UL>
|
</UL>
|
||||||
Next, compile and link your module, fire up python and do the same
|
Next, compile and link your module, fire up python and do the same
|
||||||
tests as for 68K python. <p>
|
tests as for 68K python. <p>
|
||||||
|
|
|
||||||
55
Mac/Demo/standalone.html
Normal file
55
Mac/Demo/standalone.html
Normal file
|
|
@ -0,0 +1,55 @@
|
||||||
|
<HTML><HEAD><TITLE>Creating true standalone applications in Python</TITLE></HEAD>
|
||||||
|
<BODY>
|
||||||
|
<H1>Creating true standalone applications in Python</H1>
|
||||||
|
<HR>
|
||||||
|
You can use Python to create true standalone macintosh applications: applications
|
||||||
|
that you can distribute to other people as a single file, without dependencies
|
||||||
|
on Python being installed, etc. The process is not easy, however, and at the
|
||||||
|
moment you need a source distribution (and a C development environment, CodeWarrior
|
||||||
|
most preferred). You should first familiarize yourself with the sections
|
||||||
|
<a href="building.html">building Python from source</a> and
|
||||||
|
<a href="example2.html">building applets</a>. <p>
|
||||||
|
|
||||||
|
The application we are going to build will contain a complete interpreter,
|
||||||
|
plus <code>'PYC '</code> resources for all the Python modules the program uses.
|
||||||
|
We start by creating a resource file that contains all the modules we need,
|
||||||
|
in PYC-resource form. There are two ways to do this:
|
||||||
|
<UL>
|
||||||
|
<LI> Modify the standard <code>freeze.py</code> module to print the names of
|
||||||
|
all modules used. Copy these to a single folder, run <code>compileall.py</code>
|
||||||
|
on that folder and then run <code>PackLibDir.py</code> from the scripts folder
|
||||||
|
to create the resourcefile. This has one disadvantage: freeze finds the modules
|
||||||
|
used by parsing your Python code, so modules you don't use (for instance because
|
||||||
|
they are system-dependent and not used on the mac) are also included. You
|
||||||
|
may also have problems with dynamically loaded modules. You will also have to rename
|
||||||
|
your main module to __main__.py.
|
||||||
|
|
||||||
|
<LI> Another way to find the modules used is by option-starting your script
|
||||||
|
and setting the "interactive mode after script" flag. Exercise every corner of
|
||||||
|
your program so all your modules have been imported, and when you exit your
|
||||||
|
program and get back to the interpreter use <code>findmodulefiles.findmodulefiles</code>
|
||||||
|
to get a list of all modules used. You can now use
|
||||||
|
<code>findmodulefiles.mkpycresourcefile</code> to create your resourcefile.
|
||||||
|
</UL>
|
||||||
|
|
||||||
|
Next we create the application project. Copy the <code>PythonStandalone.prj</code>
|
||||||
|
project, replace <code>macapplication.c</code> by <code>macapplet.c</code> and
|
||||||
|
replace <code>bundle.rsrc</code> by <code>appletbundle.rsrc</code>. Also
|
||||||
|
add the PYC resource file you made in the previous step and any other resource
|
||||||
|
files you need. Set the target output file names (for all three of ppc/68k/fat).
|
||||||
|
Build your application. <p>
|
||||||
|
|
||||||
|
Finally we have to give the application the right <code>sys.path</code> initialisation.
|
||||||
|
We do this by dropping the application on <code>EditPythonPrefs</code> and removing
|
||||||
|
all path components replacing them with a single <code>$(APPLICATION)</code>. You
|
||||||
|
may have to use ResEdit after this step to remove an "alis" resource from your application,
|
||||||
|
I am not sure why this is sometimes created. <p>
|
||||||
|
|
||||||
|
If you want to get fancy you may be able to make your application smaller by removing
|
||||||
|
all unused builtin modules. If you used the findmodulefiles method above to find
|
||||||
|
your modules you can start a standalone interpreter and use
|
||||||
|
<code>findmodulefiles.findunusedbuiltins</code> to get the names of all builtin
|
||||||
|
modules your program doesn't use. You can then create a private copy of
|
||||||
|
<code>config.c</code> from which you remove all unused modules.
|
||||||
|
|
||||||
|
</BODY></HTML>
|
||||||
|
|
@ -11,7 +11,7 @@ and is therefore easier integrated in Python. <p>
|
||||||
WASTE is written by Marco Piovanelli, <A HREF="mailto:piovanel@kagi.com"><piovanel@kagi.com></A>,
|
WASTE is written by Marco Piovanelli, <A HREF="mailto:piovanel@kagi.com"><piovanel@kagi.com></A>,
|
||||||
and copyrighted by him. You can always obtain the latest version (for use in C
|
and copyrighted by him. You can always obtain the latest version (for use in C
|
||||||
or Pascal programs) and the documentation from
|
or Pascal programs) and the documentation from
|
||||||
<A HREF="ftp://ftp.dsi.unimi.it/DSI/piovanel/WASTE"><ftp://ftp.dsi.unimi.it/DSI/piovanel/WASTE></A>.
|
<A HREF="http://www.boingo.com/waste/"><http://www.boingo.com/waste/></A>.
|
||||||
|
|
||||||
We explain the useage of waste here by showing how to modify the TextEdit based
|
We explain the useage of waste here by showing how to modify the TextEdit based
|
||||||
<A HREF="textedit/ped.py">ped.py</A> of the
|
<A HREF="textedit/ped.py">ped.py</A> of the
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue