Wiki source code of Postup převodu dat z Clavia
Version 9.1 by Jan Šimeček on 2024/06/28 10:06
Show last authors
| author | version | line-number | content |
|---|---|---|---|
| 1 | |||
| 2 | |||
| 3 | = Záloha dat Clavia pro převod do Tritia = | ||
| 4 | |||
| 5 | Postup pro malé knihovny k poslání je zde: [[Záloha dat Clavia pro převod do Tritia>>doc:.Zaloha-dat-Clavia-pro-prevod-do-Tritia.WebHome]] | ||
| 6 | |||
| 7 | = Převod = | ||
| 8 | |||
| 9 | == Tipy a Triky == | ||
| 10 | |||
| 11 | |((( | ||
| 12 | |||
| 13 | |||
| 14 | |=Popis | ||
| 15 | |(% colspan="1" %)Revize se nepřevádí, musí být před zahájením převodu do Tritia uzavřena. | ||
| 16 | |(% colspan="1" %)Dispečink Clavia se nepřevádí, pokud data potřebují, tak si je musí před vypnutím Clavia opsat. | ||
| 17 | |(% colspan="1" %)Statistiky LWWW se nepřevádí, knihovna si je musí opsat. | ||
| 18 | |Neměnit klíč v definici poplatků po testovacím převodu, nepovede se pak napojení poplatků při dalším importu - měnit až po posledním importu knihovny. | ||
| 19 | |Neměnit zkratky v odděleních, nebude fungovat vazba výchozího oddělení čtenáře - měnit až po ostrém startu. | ||
| 20 | |||
| 21 | |||
| 22 | ))) | ||
| 23 | |||
| 24 | == Příprava převodu == | ||
| 25 | |||
| 26 | * Zeptat se knihovny před převodem: [[Dotazy na knihovnu před převodem>>doc:.Dotazy-na-knihovnu-pred-prevodem.WebHome]] | ||
| 27 | * Zálohu rozbalovat přes **{{html}}<span style="color: red;">Total Commander </span>{{/html}}**- ne přes Windows průzkumníka!!! | ||
| 28 | |||
| 29 | 1. **{{html}}<span style="color: green;">Aktualizovat Clavius</span>{{/html}}** na současnou verzi (Pomůcky → Update přes internet) | ||
| 30 | 1. **{{html}}<span style="color: green;">Provést synchronizaci polí</span>{{/html}}** (Pomůcky → Editace polí → Sync → Aktualizovat) | ||
| 31 | 1. **{{html}}<span style="color: green;">Provést kontrolu integrit dat </span>{{/html}}**(chyby opravovat !!! hlavně dogenerovat autority a smazat chybná pole) | ||
| 32 | 1*. Katalogizace: | ||
| 33 | 1**. **do integrit with .t.,.t. **( lze využít i příkazu **do tritius** , dělá to samé ) | ||
| 34 | 1***. vyzve ke sloučení slovníků C1 a C3 do C1 - dát ano | ||
| 35 | 1**. **do OKindik with .T.** | ||
| 36 | 1*. Výpůjčák | ||
| 37 | 1**. Clex.exe → Systém → Provést Kontrolu integrity dat) | ||
| 38 | 1. **{{html}}<span style="color: green;">pohled([select !s.scislo, s.pcislo, s.ucislo, #s.ckod from svazky s, (select ckod from svazky group by ckod having count(*)>1) s1 where s.ckod<>'' and s.ckod=s1.ckod order by s.ckod])</span>{{/html}}** | ||
| 39 | 1*. duplicity čárových kódů svazků řešit ve foxíku tak že za čárový kód přídáte písmeno a,b,c ... kromě prvního výskytu čárového kódu | ||
| 40 | 1. **select isxn, count(**`*****`**) as pocet from tituly group by isxn order by pocet desc** | ||
| 41 | 1*. kontrola na duplicitu ISBN | ||
| 42 | |||
| 43 | == Vlastní export dat z Clavia - automaticky (verze Clavia od 28.2.2019) == | ||
| 44 | |||
| 45 | * **Pokud se jedná o reksové centrum, musí export probíhat pod uživatelem Správce Reksu!!** ( Systém - Servis dat - Výběr jiné knihovny - zaškrtnout Správce REKSu - OK ) | ||
| 46 | * Při importu REKS knihovny = přečíst oddíl 2.5 ( možná úprava svazků v Claviu ) | ||
| 47 | * ve foxíku spustit: | ||
| 48 | * **do FULLEXPORT** | ||
| 49 | ** -vyzve ke kontrole OKAcisla - dát ano a lze jít spát, bude následně automaticky pokračovat export tagů | ||
| 50 | * TAG soubory se automaticky vygenerují do složky TXT ve složce Clavius | ||
| 51 | |||
| 52 | == Příprava CLAVIUS SQL == | ||
| 53 | |||
| 54 | Pro převod dat akvizice, výpůjčního protokolu a další částí se používá přímý převod do Tritiia z SQL databáze Clavius. | ||
| 55 | Proto je nutné převést celý Clavius do SQL (lze využít SQL server pro Tritius), tento krok lze vynechat jen pokud se importuje pouze fond. | ||
| 56 | |||
| 57 | * postup vytvoření databáze clavius na SQL serveru a převodu dat Clavia pomocí **NASQL.EXE** viz: [[http:~~/~~/www.vkta.cz/LANius/diskety/sql/mssql.htm>>url:http://www.vkta.cz/LANius/diskety/sql/mssql.htm]] pro MSSQL | ||
| 58 | * není potřeba nic nastavovat pouze je potřeba SQL uživatel který má plná práva pro databázi clavius | ||
| 59 | |||
| 60 | == Importování knihovny pokud v cílovém Tritiu již je část svazků (např. Výměnné soubory) == | ||
| 61 | |||
| 62 | V případě připojování dat je nutná existence čárového kódu v tabulce svazky u výměnných souborů, aby došlo ke správnému napárování: | ||
| 63 | |||
| 64 | | | ||
| 65 | |||
| 66 | {{{Kontrola dat v Claviu, jestli obsahují vygenerovaný správně ckod, kdy 31840 - je prefix nadřízené knihovny: | ||
| 67 | |||
| 68 | browse for betw(val(pcislo),500000,599999) and !empt(ckod) and ckod<>'31840' | ||
| 69 | |||
| 70 | Pokud nic nevrátí, tak netřeba dělat! V opačném případě je potřeba předem dogenerovat do svazky.ckod čárový kód s prefiem nadřízené knihovny: | ||
| 71 | |||
| 72 | browse for betw(val(pcislo),500000,599999) and betw(len(allt(ckod)),0,8) | ||
| 73 | |||
| 74 | repl ckod with '31840'+padl(allt(pcislo),8,'0') for betw(val(pcislo),500000,599999) and betw(len(allt(ckod)),0,8) | ||
| 75 | repl ckod with '31840'+right(ckod,7) for betw(val(pcislo),500000,599999) and !empt(ckod) and ckod<>'31840' }}} | ||
| 76 | |||
| 77 | Je nutné zkontrolovat u VS, aby svazky měli **vyplněný **CKOD (viz výše) a poté **PIDKN **obsahovalo znak **˙ :** | ||
| 78 | |||
| 79 | | | ||
| 80 | |||
| 81 | {{{Kontrola: | ||
| 82 | pohled("SELECT * FROM svazky where ckod <> ' ' AND ckod not like 'prefixImportovaneREKSovky%' AND pidkn != '˙'") | ||
| 83 | |||
| 84 | Oprava: | ||
| 85 | pohled("UPDATE svazky SET pidkn = '˙' where ckod <> ' ' AND ckod not like 'prefixImportovaneREKSovky%' AND pidkn != '˙'")}}} | ||
| 86 | |||
| 87 | //Rozdíly oproti bodu 2.6.2 Import dat~:// | ||
| 88 | |||
| 89 | 1. **Díla:** | ||
| 90 | |||
| 91 | * | ||
| 92 | ** vybrat v roletce pro duplicity: Kontroluje duplicitu čárových kódů - duplicitní čárové kódy neimportuje a nepřidá je failed souboru | ||
| 93 | *** doporučuji použít až na druhý pokus a okem zkontrolovat, že jsou to opravdu duplicity s knihovnou, která už je na serveru | ||
| 94 | |||
| 95 | 1. **Výpůjčky:** | ||
| 96 | |||
| 97 | * | ||
| 98 | ** Vybrat KPUJCKY_REKS a neimportovat KPUJCKY! | ||
| 99 | |||
| 100 | == Import dat v Tritiu, pokud v cílovém Tritiu není část svazků (např. Výměnné soubory) == | ||
| 101 | |||
| 102 | === Založení knihovny v Tritiu === | ||
| 103 | |||
| 104 | Je potřeba zaregistrovat novou knihovnu v Tritiu (Přihlášení do Tritia tlačítko Registrovat) | ||
| 105 | |||
| 106 | Při převádění REKSového Clavia nebo převádění knihovny, která má Carmen (Knihovna s REKSovkami - Clavius neobsahuje pouze jednu knihovnu) nedávat po registraci vytvořit webovou definici - vznikne naimportováním DEFWEB, kdy dojde k založení webové definice pro každou REKSovou knihovnu. | ||
| 107 | |||
| 108 | ~!!!Pokud se jedná o sdílený server, kde již běží knihovny na ostro, tak provést zálohu databáze, kdyby se něco zvrtlo co nedokáže [[Postup Odstranění importovaných dat>>url:https://confluence.tritius.cz/pages/viewpage.action?pageId=102925148]] vyřešit a bylo potřeba provést obnovení!!! | ||
| 109 | |||
| 110 | ~!!!Před zahájením zkontrolovat dostatek místa na disku VM!!!. | ||
| 111 | |||
| 112 | Kontrolu lze provést 2 způsoby: | ||
| 113 | |||
| 114 | 1. přes putty pomocí příkazu df -h | ||
| 115 | 1. v Zabixxu: Sledování → Obrazovky → VM Overview → Hostitel vybrat VM a podívat se na graf Disk space usage | ||
| 116 | |||
| 117 | === Import dat === | ||
| 118 | |||
| 119 | Import REKS: nezapomenout **zamknout** slovníky (především klíčová slova, popřípadě dodavatele) | ||
| 120 | |||
| 121 | **POZOR!!!!**: kontrola na existenci A podpolí v Tritiu, které zbyli od minulého importu, pokud ano tak smazat před importem!: | ||
| 122 | |||
| 123 | | | ||
| 124 | |||
| 125 | {{{select count(*) from authority_data where subfield_definition in ( | ||
| 126 | select id from subfield_definition where name_sub='A') | ||
| 127 | |||
| 128 | select count(*) from work_data where subfield_definition in ( | ||
| 129 | select id from subfield_definition where name_sub='A') | ||
| 130 | |||
| 131 | dále: | ||
| 132 | Po zapnutí Importovacího módu nesmí tabulka import_id_backup obsahovat jediný řádek, který má ve sloupci library ID právě převáděné knihovny, tedy select * from import_id_backup where library = ID_prave_prevadene_knihovny musí vrátit 0 . }}} | ||
| 133 | |||
| 134 | * Pokud importuji do knihovny s defaultně jiným jazykem (slovenské knihovny) musím před importem správně nastavit **SYSTEM_DEFAULT_LANGUAGE **tak i** LOCALE.** | ||
| 135 | * Pokud se nejedná o multiknihovní instanci, nastavit v položkách nastavení **MULTI_LIBRARY_INSTANCE** na false ( -304 ) - musí se provést před importem vzkazů čtenářů. | ||
| 136 | * V záložce **Systém** je volba **Import dat** | ||
| 137 | * Spustí se importní mód - běžní uživatelé se do knihovny v importním módu nemohou přihlásit | ||
| 138 | * //Doporučení - naimportovat dump databáze na VM s Tritiem pod uživatelem root (import je řádově rychlejší)// | ||
| 139 | * URL spojení databázi Clavius SQL kde jsou výpůjčky : | ||
| 140 | ** Pro MySQL: **jdbc:mysql:~/~/server.lanius.cz:3306///<databaseName>//?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Europe/Prague** | ||
| 141 | ** Pro MSSQL: **jdbc:sqlserver:~/~/192.168.0.24:1433;databaseName=//<databaseName>//**;SendStringParametersAsUnicode=False; | ||
| 142 | * Zadáte uživatele a heslo pro připojení do databáze a tlačítkem **Připojit** provedete spojení (po úspěchu se tlačítko změní na **Odpojit**) | ||
| 143 | * **Start import mode** | ||
| 144 | * Postupně procházíme jednotlivé záložky zleva do prava. Vynecháváme ty které nejsou vždy (akvizice, webový katalog Carmen) | ||
| 145 | ** **Záložka Definice** - vybrat postupně po jedné definiční tabulky a dejte **Importuj** vybrané tabulky (v případě opakovaného importu podruhé neprovádět !!!) | ||
| 146 | *** **Definici webů (DEFWEB)** importovat pouze pro REKSové knihovny (při převodu do sdílené knihovny je třeba založit ručně při registraci knihovny) | ||
| 147 | *** Pokud se nepodaří v případě knihovny, která má Carmen převést DEFWEB, tak stačí v Tritius založit ručně webovou definici a do import_id vyplnit ID, které se najde v databázi Clavia: | ||
| 148 | *** SELECT distinct defWebId FROM car_cloud; | ||
| 149 | |||
| 150 | * | ||
| 151 | ** //Doporučení - Pokud se jedná o převod větší knihovny, tak po importu větších dat (autorit, díla, poplatky, čtenáři, výpůjčky, ...) dělat zálohu databáze// | ||
| 152 | ** **Záložka Autority (u REKSovky zvážit neimportování!)**: | ||
| 153 | *** tlačítko Nahrát soubor nalistujeme **AUTORITY.TAG** a po jeho nahrání jej vybereme a dáme Importovat. Po importu jsou chybné, neimportované záznamy v souboru failed | ||
| 154 | ** Pokud je soubor velký desítky MB a nejde nahrát zkuste přímou adresu např. : [[http:~~/~~/192.168.0.250:8080/Tritius/>>url:http://192.168.0.250:8080/Tritius/cz.effectiva.tritius.Application/Application.html#Import_wizard]] takto obejdete Apache web server | ||
| 155 | ** **Záložka Díla a Svazky (u REKSovky zvážit ztitulování a neskládání autorit!):** | ||
| 156 | *** obsah složky **NAWEB** z Clavia (pokud existuje) - v průvodci importu dat je na záložce import děl tlačítko, které nahraje zabalenou složku (NAWEB.zip) do příslušné složky a rozbalí. (dříve - ručně nakopírovat do složky Tritia (\tritius\files\Clavius\WORK\NAWEB) | ||
| 157 | *** Pozor: zkontrolovat názvy souborů pokud obsahují mezery nebo znaky s diakritikou nedojde k propojení !!! | ||
| 158 | *** Typ importu duplicit - kontroluje duplicitu podle typu dokumentu a ISBN, popřípadě podle typu dokumentu, názvu, autora a roku (Zkontrolovat duplicity ISBN v TAGu) | ||
| 159 | *** Přes Nahrát soubor vybereme **DATA.TAG** a po jeho nahrání jej vybereme a dáme Importovat. Po importu jsou chybné, neimportované záznamy v souboru failed | ||
| 160 | *** Problémové záznamy v souboru failed, které se nenaimportovaly, je potřeba hned řešit tzn. **opravit a opakovaně importovat teprve pak se může pokračovat**! | ||
| 161 | ** **Čtenáři:** | ||
| 162 | *** Vybrat CTENARI nebo CTENARI_DO_VSECH_KNIHOVEN - neimportovat obě! | ||
| 163 | ** **MVS** | ||
| 164 | *** Lepší Vytvářet nové záznamy, aby nedocházelo k propojení rezervací na MVS. | ||
| 165 | ** **Záložka Výpůjčky**: | ||
| 166 | *** Vybrat KPUJCKY nebo KPUJCKY_REKS - neimportovat obě! | ||
| 167 | *** postupně po jednotlivých tabulkách importovat a v logu kontrolovat provedení. | ||
| 168 | *** **Poplatky **- způsob uhrazení (poplatek.kartou) | ||
| 169 | **** 0 - platba v hotovosti | ||
| 170 | **** 1, 2, 3, 4 - platba kartou | ||
| 171 | **** 5, 6, 7 - platba na účet | ||
| 172 | **** 8, 9 - platba kreditem | ||
| 173 | * //Odstranit z VM databázi Clavia, pokud byla naimportována do VM.// | ||
| 174 | |||
| 175 | === Odstranění importovaných dat === | ||
| 176 | |||
| 177 | Pokud dojde během importu k problému s některou částí importu (kromě nastavení), tak ji lze smazat pomocí: [[Postup Odstranění importovaných dat>>url:https://confluence.tritius.cz/pages/viewpage.action?pageId=102925148]] | ||
| 178 | |||
| 179 | == Nastavení po importu == | ||
| 180 | |||
| 181 | * **Před ukončením importního módu je třeba vytvořit zálohu databáze.** | ||
| 182 | * **Ukončit import mód - až v momentě, kdy jsou všechna data správně převedená! **(u velkého serveru může zastavení trvat i půl hodiny) | ||
| 183 | * Pokud se převáděla konfigurace výpůjčního protokolu je potřeba projít a opravit podmínky v následujících částek nastavení, jinak by spadla reindexace: | ||
| 184 | ** Kategorie operací | ||
| 185 | ** Pravidla registrací | ||
| 186 | ** Prohledávané oblasti | ||
| 187 | ** Definice webů - nastavit také výp. kategorii **Nezobrazovat na WWW** ((itemBorrowCategoryId IS NULL OR itemBorrowCategoryId <> 3)) - ID se liší podle převodu | ||
| 188 | * Na poslední záložce **Naplánované úlohy** spustit postupně od shora jednotlivé operace | ||
| 189 | ** u malé knihovny nečekat na dokončení a lze pustit od shora najednou | ||
| 190 | ** u velké knihovny pustit 1., 2., 3., počkat na dokončení a poté pustit 4. a po dokončení pustit 5. a po dokončení pustit 6. | ||
| 191 | |||
| 192 | == Závěrečné důležité operace == | ||
| 193 | |||
| 194 | * **Restart Tomcatu pomocí tools** (vyčistí se paměť po importu) !!!((( | ||
| 195 | |||
| 196 | ))) | ||
| 197 | * **Provést nastavení podle checklist!!!!** | ||
| 198 | * **Přečíst 2.1 Tipy a Triky na začátku stránky!** | ||
| 199 | |||
| 200 | = Regulární výrazy pro opravy dat = | ||
| 201 | |||
| 202 | Všechny nové regulární výrazy je třeba nejprve otestovat vývojářem - **ReplaceHelperTest**. | ||
| 203 | |||
| 204 | |((( | ||
| 205 | == Autority == | ||
| 206 | |||
| 207 | |=Popis problému|=Regulární výraz|=Vstup|=Výstup|=(% colspan="1" %)Poznámka | ||
| 208 | | Pole 100 obsahuje podpole 4.| | ||
| 209 | |||
| 210 | {{{100\\ [\\ 0-9]{2}\\ \\$4.*}}}| | ||
| 211 | |||
| 212 | {{{100 1 $4070}}}| |(% colspan="1" %)Celé pole se zahodí. | ||
| 213 | |||
| 214 | | Obsahuje pole 1??| | ||
| 215 | |||
| 216 | {{{(1\?\?\ )(.*,.*)§100 $2}}} | ||
| 217 | |||
| 218 | {{{(1\?\?\ )(.*)§110 $2}}}| | ||
| 219 | |||
| 220 | {{{1?? $aAudoly, Sylvie}}}| | ||
| 221 | |||
| 222 | {{{100 $aAudoly, Sylvie}}}|(% colspan="1" %)Pokusí se rozpoznat zda se jedná o osobní jméno, nebo korporaci (pokud je osobní jméno, obsahuje hodnota čárku) | ||
| 223 | |||
| 224 | |(% colspan="1" %)Pole 1XXa je prázdné|(% colspan="1" %) | ||
| 225 | |||
| 226 | {{{^1??.*\\$a$}}}| | ||
| 227 | |||
| 228 | {{{199 $a}}}|(% colspan="1" %) |Odstraní se celé opakování pole | ||
| 229 | |||
| 230 | |(% colspan="1" %)Obsahuje pole 100 a 110|(% colspan="1" %) | ||
| 231 | |||
| 232 | {{{^110.*}}}| | ||
| 233 | |||
| 234 | {{{100 1 $aRoni, Luigi 110 2 $aRoni, Luigii}}}| | ||
| 235 | |||
| 236 | {{{100 1 $aRoni, Luigi}}}|(% colspan="1" %)Odstraní opakování pole 110 | ||
| 237 | |||
| 238 | == Díla == | ||
| 239 | |||
| 240 | |=Popis problému|=Regulární výraz|=Vstup|=Výstup|=(% colspan="1" %)Poznámka | ||
| 241 | |Odkazy na soubory v NAWEB obsahují před adresářem neplatné znaky.| | ||
| 242 | |||
| 243 | {{{(X00[\ ]{4}.*\$[uo]).*(NAWEB.*)(\$.*)§$1$2$3 (X00[\ ]{4}.*\$[uo]).*(NAWEB.*)§$1$2}}}| | ||
| 244 | |||
| 245 | {{{X00 $uW:\NAWEB\OBSAHY\N38492.pdf$tObsah$oNAWEB\2016_Knihy\N38492.jpg X00 $uW:\NAWEB\OBSAHY\N38492.pdf$tObsah$oW:\NAWEB\2016_Knihy\N38492.jpg X00 $uNAWEB\OBSAHY\N38492.pdf$tObsah$oW:\NAWEB\2016_Knihy\N38492.jpg X00 $oW:\NAWEB\OBSAHY\N38492.pdf$tObsah$uNAWEB\2016_Knihy\N38492.jpg X00 $oW:\NAWEB\OBSAHY\N38492.pdf$tObsah$uW:\NAWEB\2016_Knihy\N38492.jpg X00 $oNAWEB\OBSAHY\N38492.pdf$tObsah$uW:\NAWEB\2016_Knihy\N38492.jpg}}}| | ||
| 246 | |||
| 247 | {{{X00 $uNAWEB\OBSAHY\N38492.pdf$tObsah$oNAWEB\2016_Knihy\N38492.jpg X00 $uNAWEB\OBSAHY\N38492.pdf$tObsah$oNAWEB\2016_Knihy\N38492.jpg X00 $uNAWEB\OBSAHY\N38492.pdf$tObsah$oNAWEB\2016_Knihy\N38492.jpg X00 $oNAWEB\OBSAHY\N38492.pdf$tObsah$uNAWEB\2016_Knihy\N38492.jpg X00 $oNAWEB\OBSAHY\N38492.pdf$tObsah$uNAWEB\2016_Knihy\N38492.jpg X00 $oNAWEB\OBSAHY\N38492.pdf$tObsah$uNAWEB\2016_Knihy\N38492.jpg}}}|(% colspan="1" %)Odstraní znaky co nepatří před NAWEB. | ||
| 248 | |||
| 249 | |(% colspan="1" %)X00 odakzuje na adresář, který neexistuje z důvodu velikosti písmen na linuxu (velikost písmen se musí shodovat).|(% colspan="1" %) | ||
| 250 | |||
| 251 | {{{(X00[\ ]{4}\$[ou]NAWEB[\\/])OBSAHY([\\/].*)§$1Obsahy$2}}}| | ||
| 252 | |||
| 253 | {{{X00 $oNAWEB/OBSAHY/NC3404.pdf}}}| | ||
| 254 | |||
| 255 | {{{X00 $oNAWEB/Obsahy/NC3404.pdf}}}|(% colspan="1" %)Změna velikosti písmen "OBSAHY" → "Obsahy". Regulární příkaz se musí dát až za regulární příkaz opravující validnost cesty. | ||
| 256 | |||
| 257 | |(% colspan="1" %)Obsahuje pole ???.|(% colspan="1" %) | ||
| 258 | |||
| 259 | {{{^\?\?\?.*}}}| | ||
| 260 | |||
| 261 | {{{??? $aCzech Republic$eautomapa}}}|(% colspan="1" %) |Odstraní otazníkové pole. | ||
| 262 | |||
| 263 | |(% colspan="1" %)1XX4 nebo 7XX4 obsahuje neexistující kód role|(% colspan="1" %) | ||
| 264 | |||
| 265 | {{{(^[710]{3}.*)(\$4sut)(.*)§$1$3}}}| | ||
| 266 | |||
| 267 | {{{100 1 $A1000239919$aLiker, Jeffrey K.$7xx0031426$4sut}}}| | ||
| 268 | |||
| 269 | {{{100 1 $A1000239919$aLiker, Jeffrey K.$7xx0031426}}}|(% colspan="1" %)kód role z autority Neznámý kód role odstraní. | ||
| 270 | |||
| 271 | |||
| 272 | ))) | ||
| 273 | |||
| 274 | ~{~{/html}} |