cynic           Wed Jan 24 05:12:35 2001 EDT

  Added files:                 
    /phpdoc/cs/features connection-handling.xml cookies.xml 
                        http-auth.xml images.xml 
                        persistent-connections.xml remote-files.xml 
  Log:
  
  first couple of files
  
  

Index: phpdoc/cs/features/connection-handling.xml
+++ phpdoc/cs/features/connection-handling.xml
 <chapter id="features.connection-handling">
  <title>Obsluha spojení</title>

  <note>
   <para>Následující text platí pro verzi 3.0.7 a vyšší.</para>
  </note>

  <para>
  Stav spojení se v PHP interně sleduje. Jsou tři možné stavy:
   <itemizedlist>
    <listitem><simpara>0 - NORMAL (normální)</simpara></listitem>
    <listitem><simpara>1 - ABORTED (zrušeno)</simpara></listitem>
    <listitem><simpara>2 - TIMEOUT (vypršel časový limit)</simpara></listitem>
   </itemizedlist>
  </para>

  <simpara>
  Při normálním běhu PHP skriptu je aktivní stav NORMAL. Pokud se klient
  odpojí, nastaví se příznak ABORTED. K odpojení vzdáleného klienta typicky
  dochází, když uživatel zmáčkne tlačítko STOP. Pokud se dosáhne časového
  limitu (viz <function>set_time_limit</function>), nastaví se stavový příznak
  TIMEOUT.
  </simpara>

  <simpara>
  Můžete se rozhodnout jestli chcete, aby odpojení klienta způsobilo předčasné
  ukončení vašeho skriptu. Někdy je užitečné nechat skripty doběhnout do konce,
  přestože není vzdáleného browseru, který by přijímal výstup. Výchozí chování
  je nicméně takové, že při odpojení vzdáleného klienta dojde k ukončení běhu
  skriptu. Toto chování se dá změnit skrze konfigurační direktivu
  ignore_user_abort v php3.ini, odpovídající direktivu php3_ignore_user_abort
  v .conf souboru Apache, či funkci <function>ignore_user_abort</function>.
  Pokud nedáte PHP pokyn ignorovat odpojení uživatele a ten se odpojí, váš
  skript se ukončí. Výjimkou je, pokud máte pomocí
  <function>register_shutdown_function</function> zaregistrovanou funkci pro
  provedení při ukončení skriptu. V tom případě, pokud vzdálený uživatel zmáčkne
  tlačítko STOP, při dalším pokusu tohoto skriptu odeslat výstup PHP detekuje,
  že spojení bylo zrušeno, a zavolá se funkce zaregistrovaná pro provedení při
  ukončení skriptu. Tato funkce se zavolá také na konci běhu skriptu končícím
  normálně, takže pokud chcete po zrušeném spojení udělat něco jiného, můžete
  použít <function>connection_aborted</function>. Tato funkce vrátí
  <literal>true</literal>, pokud bylo spojení zrušeno.
  </simpara>

  <simpara>
  Váš skript může také ukončit vestavěný čítač času. Výchozí časový limit je
  30 sekund. To se dá změnit max_execution_time direktivou v phpš.ini nebo
  odpovídající php3_max_execution_time direktivou v .conf souboru Apahe, či
  voláním funkce <function>set_time_limit</function>. Když čítač času doběhne,
  skript se ukončí, a jako ve výše uvedeném případě uživatelského odpojení,
  pokud je zaregistrovaná funkce pro provedení při ukončení skriptu, tato se
  zavolá. Uvnitř této funkce můžte zkontrolovat, jestli její zavolání způsobilo
  doběhnutí čítače času zavoláním funkce <function>connection_timeout</function>.
  Tato funkce vrátí <literal>true</literal>, pokud volání funkce registrované
  pro provedení při ukončení skriptu způsobilo doběhnutí čítače času.
  </simpara>

  <simpara>
  Skutečností hodnou povšimnutí je, že stavy ABORTED a TIMEOUT mohou být
  aktivní současně. Možné je to v případě, že nařídíte PHP ignorovat odpojení
  uživatee. PHP i tak bude vědět, že uživatel přerušil spojení, ale skript
  poběží dál. Pokud potom dosáhne časového limitu, bude ukončen, a zavolá se
  vaše funkce pro provedení při ukončení skriptu, pokud existuje. V tomto
  okamžiku zjistíte, že jak <function>connection_timeout</function>, tak
  <function>connection_aborted</function> vracejí <literal>true</literal>.
  Oba stavy můžete zkontrolovat jediným voláním funkce
  <function>connection_status</function>. Tato funkce vrací bitové pole
  aktivních stavů. Takže například, pokud jsou aktivní oba tyto stavy, vrátí
  3.
  </simpara>

 </chapter>

<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
sgml-parent-document:nil
sgml-default-dtd-file:"../manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
-->

Index: phpdoc/cs/features/cookies.xml
+++ phpdoc/cs/features/cookies.xml
 <chapter id="features.cookies">
  <title>Cookies</title>

  <para>
  PHP transparentně podporuje HTTP cookies. Cookies jsou mechanismem na
  ukládání dat ve vzdáleném browseru a tudíž sledování nebo identifikaci
  vracejících se uživatelů. Cookies můžete nastavovat pomocí funkce
  <function>setcookie</function>. Cookies jsou součástí HTTP hlavičky,
  tudíž <function>setcookie</function> se musí volat před odesláním výstupu
  do browseru. To je stejné omezení, jako má funkce <function>header</function>.
  </para>
  <para>
  Všechny cookies přijaté od klienta se automaticky stávají PHP proměnnou
  stejně jako u GET a POST dat. Pokud chcete přiřadit jednomu cookie více
  hodnot, přidejte <emphasis>[]</emphasis> na konec jména cookie. Více
  detailů viz funkce <function>setcookie</function>.</para>

 </chapter>

<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
sgml-parent-document:nil
sgml-default-dtd-file:"../manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
-->

Index: phpdoc/cs/features/http-auth.xml
+++ phpdoc/cs/features/http-auth.xml
 <chapter id="features.http-auth">
  <title>HTTP autentikace a PHP</title>

  <simpara>
  Prostředky HTTP autentikace jsou v PHP přístupné pouze pokud PHP běží jako
  modul Apache, tudíž nejsou přístupné v CGI verzi. V PHP skriptu běžícím pod
  modulem Apache lze použít funkci <function>Header</function> k odeslání
  zprávy "Authentication Required" klientskému browseru, což vyvolá zobrazení
  dialogového okna pro vložení uživatelského jména a hesla. Jakmile uživatel
  zadá jméno a heslo, URL obsahující tento PHP skript se zavolá znovu s
  proměnnými $PHP_AUTH_USER, $PHP_AUTH_PW and $PHP_AUTH_TYPE obsahujícími
  jméno, heslo a typ autentikace. V současnosti je podporována pouze "Basic"
  autentikace. Více informací viz funkce <function>Header</function>.
  </simpara>

  <para>
  Následující fragment kódu může posloužit jako ukázka vyžádání autentikace
  uživatele na stránce:

   <example>
    <title>Ukázka HTTP Autentikace</title>
    <programlisting role="php">
&lt;?php
  if(!isset($PHP_AUTH_USER)) {
    Header(&quot;WWW-Authenticate: Basic realm=\&quot;My Realm\&quot;&quot;);
    Header(&quot;HTTP/1.0 401 Unauthorized&quot;);
    echo &quot;Text, který se odešle, pokud uživatel zmáčkne tlačítko Cancel\n&quot;;
    exit;
  } else {
    echo &quot;Ahoj $PHP_AUTH_USER.&lt;P&gt;&quot;;
    echo &quot;Jako heslo jsi zadal $PHP_AUTH_PW.&lt;P&gt;&quot;;
  }
?>
    </programlisting>
   </example></para>

  <para>
  Místo protého vytištění $PHP_AUTH_USER a $PHP_AUTH_PW byste asi
  chtěli ověřit platnost zadaného jména a hesla. Například dotazem
  v databázi nebo vyhledáním uživatele v dbm souboru.
  </para>

  <para>
  Pozor na chybové browsery Internet Explorer. Zdá se, že jsou velice
  vybíravé, pokud jde o pořadí hlaviček. Zdá se, že odeslání hlavičky
  <emphasis>WWW-Authenticate</emphasis> před hlavičkou
  <errorcode>HTTP/1.0 401</errorcode> zabírá.
  </para>

  <simpara>
  Aby se zabránilo psaní skriptů odhalujících hesla na stránkách
  autentikovaných některým z tradičních externích mechanismů, PHP_AUTH
  proměnné se nevytvoří, pokud je pro tu kterou stránku zapnuta externí
  autentikace. V takovém případě můžete k identifikaci externě
  autentikovaného uživatele použít proměnnou $REMOTE_USER.
  </simpara>

  <simpara>
  Všimněte si nicméně, že výše uvedené nezabrání krádežím hesel z
  autentikovaných URL osobou, která ovládá neautentikovanou URL na stejném
  serveru.
  </simpara>
  <simpara>
  Jak Netscape, tak Internet Explorer po přijetí response kódu 401 vyprázdní
  autentikační cache současného realmu. Tak můžete uživatele v podstatě
  "odlogovat". Někteří lidé toho využívají k "vypršení" přihlášení nebo
  tvorbě odhlašovacího tlačítka.
  </simpara>
  <simpara></simpara>
   <example>
     <title>Ukázka HTTP autentikace vyžadující nové jméno a heslo</title>
     <programlisting role="php">
&lt;?php
  function  authenticate()  {
      Header( &quot;WWW-authenticate: basic  realm=\&quot;Test  Authentication  
System\&quot;&quot;);
      Header( &quot;HTTP/1.0  401  Unauthorized&quot;);
      echo  &quot;K přístupu na tento zdroj musíte zadat platné ID a heslo\n&quot;;
      exit;
  }

  if(!isset($PHP_AUTH_USER)  ||  ($SeenBefore ==  1  &amp;&amp;  !strcmp($OldAuth,  
$PHP_AUTH_USER))  )  {
    authenticate();
  }
  else  {
    echo  &quot;Welcome:  $PHP_AUTH_USER&lt;BR&gt;&quot;;
    echo  &quot;Old:  $OldAuth&quot;;
    echo  &quot;&lt;FORM  ACTION=\&quot;$PHP_SELF\&quot;  METHOD=POST&gt;\n&quot;;
    echo  &quot;&lt;INPUT  TYPE=HIDDEN  NAME=\&quot;SeenBefore\&quot;  
VALUE=\&quot;1\&quot;&gt;\n&quot;;
    echo  &quot;&lt;INPUT  TYPE=HIDDEN  NAME=\&quot;OldAuth\&quot;  
VALUE=\&quot;$PHP_AUTH_USER\&quot;&gt;\n&quot;;
    echo  &quot;&lt;INPUT  TYPE=Submit  VALUE=\&quot;Re  
Authenticate\&quot;&gt;\n&quot;;
    echo  &quot;&lt;/FORM&gt;\n&quot;;

}
?>
   </programlisting>
  </example>
  <simpara>
  Podle standardu HTTP Basic authentication se toto chování nevyžaduje, takže
  byste na to nikdy neměli spoléhat. Pokusy s Lynxem ukázaly, že Lynx po přijetí
  response kódu 401 nevyprázdní autentikační údaje, takže po stisknutí back a
  forward se znovu ukáže požadovaný zdroj (pokud se nezměnily požadavky na
  údaje).
  </simpara>
  <simpara>
  Dále si všimněte, že tato vlastnost při použití IIS serveru a CGI verze PHP
  díky omezením IIS nefunguje.
  </simpara>

 </chapter>

<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
sgml-parent-document:nil
sgml-default-dtd-file:"../manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
-->

Index: phpdoc/cs/features/images.xml
+++ phpdoc/cs/features/images.xml
 <chapter id="features.images">
  <title>Tvorba a úpravy obrázků</title>

  <simpara>
  PHP není omezeno na tvorbu pouze HTML výstupu. Může také vytvářet a
  upravovat obrázkové soubory různých formátů, včetně gif, png, jpg, wbmp a
  xpm. PHP může dokonce přímo posílat obrazové proudy do browseru. Na to
  budete potřebovat PHP zkompilované s GD knihovnou obrazových funkcí. GD a
  PHP mohou vyžadovat další knihovny v závislosti na obrazových formátech,
  se kterými chcete pracovat. GD přestala podporovat gif obrázky ve verzi 1.6.
  </simpara>

  <para>
   <example>
    <title>Tvorba PNG obrázků v PHP</title>
    <programlisting role="php">
&lt;?php
    Header("Content-type: image/png");
    $string=implode($argv," ");
    $im = imageCreateFromPng("images/button1.png");
    $orange = ImageColorAllocate($im, 220, 210, 60);
    $px = (imagesx($im)-7.5*strlen($string))/2;
    ImageString($im,3,$px,9,$string,$orange);
    ImagePng($im);
    ImageDestroy($im);
?>
    </programlisting>
   </example>

   Tento příklad by se volal ze stránky pomocí tagu podobného tomuto:
   &lt;img src=&quot;button.php?text&quot;&gt; Skript button.php pak vezme
   řetězec &quot;text&quot;,  překryje jím základní obrázek, což je v tomto
   případě &quot;images/button1.png&quot; a zobrazí výsledný obrázek. Toto
   je vhodný způsob jak se vyhnout kreslení nového obrázku tlačítka pokaždé,
   když chcete změnit text tlačítka. Touto metodou se generují automaticky.
  </para>

 </chapter>

<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
sgml-parent-document:nil
sgml-default-dtd-file:"../manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
-->

Index: phpdoc/cs/features/persistent-connections.xml
+++ phpdoc/cs/features/persistent-connections.xml
 <chapter id="features.persistent-connections">
  <title>Persistentní databázová spojení</title>

  <simpara>
  Trvalá spojení jsou SQL spojení, která se nezavírají na konci průběhu skriptu.
  Při požadavku na trvalé spojení PHP nejdříve zkontroluje, jestli už neexistuje
  identické spojení (které zůstalo otevřeno z dřívějška) - a pokud existuje,
  použije ho. Pokud neexistuje, PHP ho otevře. "Identické" spojení je spojení,
  které bylo otevřeno se stejným serverem, uživatelským jménem a heslem (pokud
  je zadáte).
  </simpara>
  <simpara>
  Lidé, kteří nejsou důkladně obeznámeni se způsobem, jakým web servery fungují
  a distribuují zátěž mohou pokládat trvalá spojení za něco čím nejsou. Zvláště
  <emphasis>neumožňují</emphasis> otvírání "uživatelských sessions" na stejném
  SQL spojení, <emphasis>neumožňují</emphasis> efektivní tvorbu transakcí, a
  neumožňují spoustu dalších věcí. Dokonce, aby bylo opravdu a dúkladně jasno,
  vám trvalá spojení nedají <emphasis>žádnou</emphasis> funkcionalitu,
  která by nebyla možná s jejich netrvalými protějšky.
  </simpara>
  <simpara>
   Proč?
  </simpara>
  <simpara>
  To je dáno způsobem, jakým fungují webové servery. Jsou tři způsoby, jakými
  váš web server může využít PHP ke generování webových stránek.
  </simpara>
  <simpara>
  První metodou je použít PHP jako CGI "obal". V tomto režimu se vytváří
  a ničí jedna instance PHP interpretru pro každý požadavek (na PHP strnánku)
  na vašem web serveru. Protože je znična po obsloužení požadavku, všechny
  zdroje, které získá (jako třeba spojení s databázovým serverem) jsou při
  jejím zničení zavřeny. V tomto případě pokusem o použití trvalých spojení nic
  nezískáte - prostě nevydrží.
  </simpara>
  <simpara>
  Druhou, a nejpopulárnější, metodou, je provozovat PHP jako modul v
  multiprocesním web serveru, což je množina, která v současnosti obsahuje
  pouze Apache. Multiprocesní web serveru má typicky jeden proces (rodiče),
  který řídí skupinu procesů (svých dětí), které dělají vlastní práci -
  servírují stránky. Každý požadavek, který přijde od klienta, je obsloužen
  jedním z dětí, které právě neobsluhuje jiného klienta. To znamená, že když
  stejný klient vznese další požadavek na stejný server, tento může být
  obsloužen jiným dětským procesem než ten první. Trvalá spojení zajišťují, aby
  se každý dětský proces musel na váš SQL server přihlásit pouze při prvním
  odeslání stránky, která takové spojení využívá. Když spojení s SQL serverem
  vyžaduje další stránka, může použít spojení, které toto dítě otevřelo už
  dříve.
  </simpara>
  <simpara>
  Poslední metodou je použít PHP jako plugin v multithreadovém web serveru. To
  je v současností pouhá teorie - PHP ještě nefunguje jako plagin v žádném
  multithreadovém web serveru. Pracuje se na podpoře ISAPI, WSAPI a NSAPI (na
  Windows), což umožní používat PHP jako plugin v multithreadových serverech
  jako Netscape FastTrack, Microsoft Internet Information Server (IIS),
  a O'Reilly's WebSite Pro. Až k tomu dojde, chování bude v podstatě stejné
  jako u multiprocesním modelu popsaném dříve.
  </simpara>
  <simpara>
  Pokud trvalá spojení neposkytují žádnou přidanou funkcionalitu, k čemu jsou
  dobrá?
  </simpara>
  <simpara>
  Odpověď na tuto otázku je velmi jednoduchá - efektivita. Trvalá spojení jsou
  dobrá, pokud má tvorba spojení s vaším SQL serverem vysokou režii. Reálná
  výše této režie záleží na mnoha faktorech. Například jaký je to typ databáze,
  jestli sídlí na stejném počítači jako váš webserver, jak zatížený je stroj,
  na kterém váš SQL server běží a tak dále. Pointa je, že pokud je spojovací
  režie vysoká, trvalá spojení vám znatelně pomohou. Umožní dětskému procesu
  připojit se pouze jednou za celý jeho životní cyklus místo každého zpracování
  stránky, která vyžaduje spojení s SQL serverem. To znamená, že každé dítě,
  které otevřelo trvalé spojení, bude mít otevřené vlastní trvalé spojení se
  serverem. Pokud například máte 20 dětských procesů, které spustily skript,
  který otevřel trvalé spojení s vaším SQL serverem, máte 20 nezávislých spojení
  s SQL serverem, po jednom z každého dítěte.
  </simpara>
  <simpara>
  Všimněte si nicméně, že to může mít nevýhody, pokud používate databázi s
  omezeným počtem připojení, který trvalá spojení dětí překročí. Pokud má vaše
  databáze limit 16 současných připojení, a v rušném okamžiku se pokusí připojit
  17 dětských procesů, jednomu se to nepodaří. Pokud máte ve svých skriptech
  chyby, které brání zavírání spojení (např. nekonečné smyčky), databáze s
  pouhými 32 spojeními bude brzy zaplavena. Vyhledejte si v dokumentaci vaší
  databáze informace o obsluze opuštěných nebo nečinných spojení.
  </simpara>
  <simpara>
  Důležitý souhrn. Trvalá spojení byla navržena tak, aby odpovídala jedna k
  jedné normálním spojením. To znamená, že byste <emphasis>vždy</emphasis> měli
  být schopni nahradit trvalá spojení netrvalými beze změny fungování vašeho
  skriptu. <emphasis>Může</emphasis> to (a pravděpodobně bude) mít vliv na
  efektivitu tohoto skriptu, ale ne jeho chování!
  </simpara>

 </chapter>

<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
sgml-parent-document:nil
sgml-default-dtd-file:"../../manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
-->

Index: phpdoc/cs/features/remote-files.xml
+++ phpdoc/cs/features/remote-files.xml
 <chapter id="features.remote-files">
  <title>Použití vzdálených souborů</title>

  <para>
  Pokud při konfiguraci PHP aktivujete podporu &quot;URL fopen wrapper&quot;
  (standardně je zapnutá, ledaže pro configure explicitně zadáte
  <option>--disable-url-fopen-wrapper</option> příznak (verze do 4.0.3),
  nebo (u novějších verzí) nastavíte <parameter>allow_url_fopen</parameter> v
  php.ini na off), můžete ve voláních většiny funkcí, které očekávají
  jako argument název souboru (včetně <function>require</function> a
  <function>include</function>) uvést HTTP nebo FTP URL.
  </para>
  <para>
   <note>
    <para>
    Na Windows nelze používat vzdálené soubory v
    <function>include</function> a <function>require</function> výrazech.
    </para>
   </note>
  </para>
  <para>
  Můžete například otevřít soubor na vzdáleném web serveru, vyseparovat z
  výstupu data, která potřebujete, a tato data potom použít v dotazu na
  databázi, nebo je prostě začlenit do výstupu stylem odpovídajícím zbytku
  vaší web site.
  </para>
  <para>
   <example>
    <title>Získání názvu vzdálené stránky</title>
    <programlisting role="php">
<![CDATA[
<?php
$file = fopen ("http://www.php.net/", "r");
if (!$file) {
    echo "<p>Nelze otevřít vzdálený soubor.\n";
    exit;
}
while (!feof ($file)) {
    $line = fgets ($file, 1024);
    /* Toto bude fungovat pouze pokud jsou tagy a název na jedné řádce */
    if (eregi ("<title>(.*)</title>", $line, $out)) {
        $title = $out[1];
        break;
    }
}
fclose($file);
?>
]]>
    </programlisting>
   </example>
  </para>
  <para>
  Pokud se připojíte jako uživatel s dostatečnými právy, a daný soubor už
  neexistuje, můžete data také ukládat po FTP. Pokud se chcete připojit jako
  jiný uživatel než 'anonymous', musíte v URL udat uživatelské jméno (a
  pravděpodobně i heslo), např.
  'ftp://uzivatel:[EMAIL PROTECTED]/path/to/file'. (Pro přístup k souborům
  přes HTTP, které vyžadují Basic authentication, můžete použít stejnou
  syntaxi.)
  </para>
  <para>
   <example>
    <title>Uložení dat na vzdáleném serveru</title>
    <programlisting role="php">
<![CDATA[
<?php
$file = fopen ("ftp://ftp.php.net/incoming/outputfile", "w");
if (!$file) {
    echo "<p>Nelze otevřít vzdálený soubor pro zápis.\n";
    exit;
}
/* Zapíšeme data. */
fputs ($file, "$HTTP_USER_AGENT\n");
fclose ($file);
?>
]]>
    </programlisting>
   </example>
  </para>
  <para>
   <note>
    <para>
    Z výše uvedeného příkladu by vás mohlo napadnout využít tuto techniku k
    zápisu do vzdáleného logu, ale jak už bylo zmíněno výše, pomocí URL fopen()
    wrapperu můžete zapisovat pouze do nového souboru. Pokud máte zájem o
    distribuované logování, podívejte se na <function>syslog</function>.
    </para>
   </note>
  </para>

 </chapter>

<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
sgml-parent-document:nil
sgml-default-dtd-file:"../../manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
-->

Reply via email to