mirror of
https://github.com/pissnet/pissircd.git
synced 2024-06-05 07:48:44 +01:00
509 lines
16 KiB
Text
509 lines
16 KiB
Text
/* UnrealIRCd 6 için yapılandırma dosyası
|
||
* Türkçe Çeviri: Diablo - (Serkan Sepetçi)
|
||
* İletişim: irc.trirc.com:6667 - diablo@unrealircd.org
|
||
*
|
||
* Biz buna basit bir 'unrealircd.conf' dosyası diyoruz.
|
||
* Bu dosyası satır satır editleyip conf/ dizinine kopyalayınız. (düzenleyin!)
|
||
*
|
||
* Önemli: Satırların hepsi, açılış başına { satır sonuna ;
|
||
* }; dahil edin. Bu çok önemli, eğer siz ayrıştırıcıyı ;
|
||
* eksik koyarsanız yapılandırma dosyası hata verecek
|
||
* ve dosya doğru işlemde olmayacaktır!
|
||
* Bu sizin UnrealIRCd yapılandırması ile ilk deneyiminiz ise
|
||
* dosyayı okumanız için birkaç dakika ayırmanızı öneniriz,
|
||
* bu size bilgi edinmeniz açısından yardımcı olacaktır:
|
||
* https://www.unrealircd.org/docs/Configuration#Configuration_file_syntax
|
||
*
|
||
* UnrealIRCd 6 belgeleme (çok geniş!):
|
||
* https://www.unrealircd.org/docs/UnrealIRCd_6_documentation
|
||
*
|
||
* Sıkça Sorulan Sorular:
|
||
* https://www.unrealircd.org/docs/FAQ
|
||
*
|
||
*/
|
||
|
||
/* Bu bir açıklamadır, burada tüm metin göz ardı edilir (açıklama tipi #1) */
|
||
// Bu da bir açıklamadır, bu satır göz ardı edilir (açıklama tipi #2)
|
||
# Bu da bir açıklamadır, bu satır yine göz ardı edilir (açıklama tipi #3)
|
||
|
||
/* UnrealIRCd yoğun modul kullanımını kolaylaştırır. UnrealIRCd'de
|
||
* etkinleştirmek istediğiniz özellikleri tamamen moduller ile aktif edebilirsiniz.
|
||
* Görmek için; https://www.unrealircd.org/docs/Modules
|
||
*
|
||
* Biz 'modules.default.conf' dosyasını okumak için IRCd talimatı altında kullanarak
|
||
* UnrealIRCd ile birlikte gelen 150'den fazla modülleri yükleyecektir.
|
||
* Başka bir deyişle: Bu sadece UnrealIRCd'de mevcut tüm özelliklerini yükleyecektir.
|
||
* İlk kez UnrealIRCd kuruyorsanız size bunu kullanmanızı öneririz.
|
||
* UnrealIRCd'yi ilk kez kuruyorsanız bunu kullanmanızı öneririz.
|
||
* Daha sonra her şey hazır olduğunda ve çalışıyorsa (eğer isterseniz)
|
||
* listeyi özelleştirmek için geri dönebilirsiniz.
|
||
*/
|
||
include "modules.default.conf";
|
||
|
||
/* Şimdi de diğer bazı dosyaları dahil edelim:
|
||
* - help/help.conf /HELPOP sistemi
|
||
* - badwords.conf kanal ve kullanıcı modu için +G
|
||
* - spamfilter.conf için örnek olarak spamfilter kullanımı
|
||
* - operclass.default.conf oper bloklarında kullanabileceğiniz
|
||
* oper sınıflarını görüntüler.
|
||
*/
|
||
include "help/help.conf";
|
||
include "badwords.conf";
|
||
//include "spamfilter.conf";
|
||
include "operclass.default.conf";
|
||
|
||
/* Load the default cloaking module (2021 onwards): */
|
||
loadmodule "cloak_sha256";
|
||
/* Or load the old module from UnrealIRCd 3.2/4/5 instead: */
|
||
//loadmodule "cloak_md5";
|
||
|
||
/* me { } bloğu genelde kim olduğumuzu belirtir.
|
||
* Sunucumuz için isim, birkaç satır bazı bilgileri belirler "sid".
|
||
* Sunucu kimliği (sid) iki basamağı veya harf tarafından izlenen bir rakam ile
|
||
* başlamalıdır. Sid IRC ağı için benzersiz olmalıdır (her sunucu için
|
||
* kendi sid olmalıdır).
|
||
*/
|
||
me {
|
||
name "irc.example.org";
|
||
info "ExampleNET Server";
|
||
sid "001";
|
||
}
|
||
|
||
/* admin { } bloğu /ADMIN sorgusunda kullanıcılara görüntülenecek metni belirler.
|
||
* Normalde yöneticiye ulaşma konusunda bilgi içerir.
|
||
*/
|
||
admin {
|
||
"Bob Smith";
|
||
"bob";
|
||
"email@example.org";
|
||
}
|
||
|
||
/* Kullanıcılar ve sunucular için class { } bloğu belirtilir.
|
||
* Class blokları aşağıdaki işlemlerden oluşur:
|
||
* - pingfreq: kullanıcı/sunucu için ping'ler arası zaman belirtir (saniyede)
|
||
* - connfreq: sunucuya bağlanmaya çalıştığınızda tekrar için zaman belirtir (saniyede)
|
||
* - sendq: bir bağlantı için maksimum veri boyutu
|
||
* - recvq: bir bağlantı için maksimum alınan veri boyutu (flood kontrol)
|
||
*/
|
||
|
||
/* Kullanıcılar için varsayılan class ayarları */
|
||
class clients
|
||
{
|
||
pingfreq 90;
|
||
maxclients 1000;
|
||
sendq 200k;
|
||
recvq 8000;
|
||
}
|
||
|
||
/* IRCOp'lar için varsaylan yüksek limitli özel class ayarları */
|
||
class opers
|
||
{
|
||
pingfreq 90;
|
||
maxclients 50;
|
||
sendq 1M;
|
||
recvq 8000;
|
||
}
|
||
|
||
/* Sunucular için varsayılan class ayarları */
|
||
class servers
|
||
{
|
||
pingfreq 60;
|
||
connfreq 15; /* Her 15 saniyede bir bağlanmayı dener */
|
||
maxclients 10; /* maksimum kullanıcı */
|
||
sendq 5M;
|
||
}
|
||
|
||
/* Allow blockları sunucunuza kimlerin bağlanabileceğini belirtir.
|
||
* Bir sunucu şifresi eklenebilir veya belirlitilen bir IP adresi için
|
||
* giriş izini verilebilir. Ayrıca IP başına ne kadar bağlantıya izin
|
||
* verileceğini belirtir.
|
||
* Görmeniz için: https://www.unrealircd.org/docs/Allow_block
|
||
*/
|
||
|
||
/* IP başına sadece 5 bağlantı izini verir */
|
||
allow {
|
||
mask *;
|
||
class clients;
|
||
maxperip 3;
|
||
}
|
||
|
||
/* Örnek olarak özel bir IP bloğu izini:
|
||
* Bu IP bir şifre ile bağlantı yapması olduğunu gerektirir.
|
||
* Şifre doğru ise o zaman bu IP 20 bağlantıya izin verecektir.
|
||
*/
|
||
allow {
|
||
mask 192.0.2.1;
|
||
class clients;
|
||
password "somesecretpasswd";
|
||
maxperip 20;
|
||
}
|
||
|
||
/* Oper bloğu, IRC Operatorleri tanımlar.
|
||
* IRC Operatörler, diğer kullanıcılara göre "ekstra haklara" sahip kullanıcılardır.
|
||
* örneğin diğer kullanıcılara /KILL uygulayabilmesi, sunucu birleştirmesinin başlatılması,
|
||
* /JOIN yaptığı odalardan banlansa bile tekrar giriş yapabilmesi, vs.
|
||
*
|
||
* IRCOp olmak ve nasıl Admin olunacağı hakkında daha fazla bilgi için
|
||
* https://www.unrealircd.org/docs/IRCOp_guide
|
||
*
|
||
* Oper {} bloğunun kendisi ile ilgili ayrıntıları görmeniz için
|
||
* https://www.unrealircd.org/docs/Oper_block
|
||
*/
|
||
|
||
/* Örnek bir oper bloğu için 'bobsmith' ile şifresi 'test'.
|
||
* Bunu değiştirmeniz GEREKİR!!
|
||
*/
|
||
oper bobsmith {
|
||
class opers;
|
||
mask *@*;
|
||
password "test";
|
||
/* Oper izinleri bir "operclass 'bloğunda tanımlanır.
|
||
* Görmeniz için: https://www.unrealircd.org/docs/Operclass_block
|
||
* UnrealIRCd varsayılan bloklar makalesi için,
|
||
* tam listesine bakınız. Buradan 'netadmin' seçiyoruz.
|
||
*/
|
||
operclass netadmin;
|
||
swhois "is a Network Administrator";
|
||
vhost netadmin.example.org;
|
||
}
|
||
|
||
/* Listen blokları sunucu portu için gereken bağlantı noktalarını tanımlar.
|
||
* Diğer bir deyişle: Bu portlar kullanıcılar ve serverlar için
|
||
* sunucuya bağlantı kurmasını sağlar.
|
||
*
|
||
* Kullanımı:
|
||
* listen
|
||
* {
|
||
* ip <ip numarası>;
|
||
* port <port numarası>;
|
||
* options {
|
||
* <seçenekler....>;
|
||
* }
|
||
* }
|
||
*/
|
||
|
||
/* Standard IRC port 6667 */
|
||
listen {
|
||
ip *;
|
||
port 6667;
|
||
}
|
||
|
||
/* Standard IRC SSL/TLS port 6697 */
|
||
listen {
|
||
ip *;
|
||
port 6697;
|
||
options { tls; }
|
||
}
|
||
|
||
/* Özel SSL/TLS sadece sunucuları bağlamak için port */
|
||
listen {
|
||
ip *;
|
||
port 6900;
|
||
options { tls; serversonly; }
|
||
}
|
||
|
||
/* DiKKAT: Eğer bir çok IP barındıran bir IRCd Shell kullanıyorsanız
|
||
* logunuzda olası 'Address already in use' hatasını alacaksınız
|
||
* ve ircd başlamayacaktır.
|
||
* Bunun anlamı '*' yerine belirli bir IP yazmanız GEREKİR anlamına gelir:
|
||
* listen 1.2.3.4:6667;
|
||
* Açıkçası, IP yi önceden koyduğunuz IP ile değiştirin.
|
||
*/
|
||
|
||
/*
|
||
* Link blockları bir ağ oluşturmak için birden fazla sunucu bağlamaya izin verir.
|
||
* Görmek için: https://www.unrealircd.org/docs/Tutorial:_Linking_servers
|
||
*/
|
||
link hub.example.org
|
||
{
|
||
incoming {
|
||
mask *@something;
|
||
}
|
||
|
||
outgoing {
|
||
bind-ip *; /* veya açıkça bir IP */
|
||
hostname hub.example.org;
|
||
port 6900;
|
||
options { tls; }
|
||
}
|
||
|
||
/* Kimlik doğrulaması için diğer sunucunun SPKI parmak izini kullanıyoruz.
|
||
* Kullanmamız için diğer tarafda './unrealircd spkifp' uygulayıp çalıştırıyoruz.
|
||
*/
|
||
password "AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUV=" { spkifp; }
|
||
|
||
class servers;
|
||
}
|
||
|
||
/* Servis'ler için bağlantı bloğu genellikle çok daha basittir.
|
||
* Servis'lerin ne olduğu hakkında daha fazla bilgi için,
|
||
* https://www.unrealircd.org/docs/Services
|
||
*/
|
||
link services.example.org
|
||
{
|
||
incoming {
|
||
mask 127.0.0.1;
|
||
}
|
||
|
||
password "changemeplease";
|
||
|
||
class servers;
|
||
}
|
||
|
||
/* U-lines satırları sunuculara daha güç/komut kazandırır.
|
||
* Eğer hizmetlerini kullanmak istiyorsanız onları buraya eklemeniz gerekir.
|
||
* ASLA buraya (normal) UnrealIRCd sunucunun adını yazmayınız!!!
|
||
*/
|
||
ulines {
|
||
services.example.org;
|
||
}
|
||
|
||
/* Bu blok /DIE ve /RESTART için şifre tanımlamanızı sağlar. Sadece IRCOp'lar içindir.
|
||
* Bu genelde kazara sunucuyu yeniden başlatma ve kapanmasına karşı biraz
|
||
* koruma sağlamak içindir.
|
||
*/
|
||
drpass {
|
||
restart "restart";
|
||
die "die";
|
||
}
|
||
|
||
/* Bu log bloğu hangi dosyaya ve nelerin olması gerektiğini tanımlar.
|
||
* Görmeniz için: https://www.unrealircd.org/docs/Log_block
|
||
*/
|
||
|
||
/* Varsayılan ayarlar, neredeyse her şeyi kaydedecektir */
|
||
log "ircd.log" {
|
||
flags {
|
||
oper;
|
||
connects;
|
||
server-connects;
|
||
kills;
|
||
errors;
|
||
sadmin-commands;
|
||
chg-commands;
|
||
oper-override;
|
||
tkl;
|
||
spamfilter;
|
||
}
|
||
}
|
||
|
||
/* Bazı kullanıcılara veya botlara bir mesaj göndermek için "aliases"
|
||
* takma ad oluşturmanızı sağlar. Genellikle servisler için kullanılır.
|
||
*
|
||
* Biz önceden ayarlanmış bir takma adı dosyaları dizini oluşturduk, alias/ dizini kontrol ediniz.
|
||
* Örnek olarak, burada anope servisler ve kullanılan tüm diğer servisler adları bulunmaktadır.
|
||
*/
|
||
include "aliases/anope.conf";
|
||
|
||
/* Ban nick bloğu bir nickin sunucuda kullanımını yasaklamanıza olanak sağlar */
|
||
ban nick {
|
||
mask "*C*h*a*n*S*e*r*v*";
|
||
reason "Servisler için ayrılmış";
|
||
}
|
||
|
||
/* Ban ip.
|
||
* Normalde bunun için /KLINE, /GLINE ve /ZLINE kullanıldığını unutmayınız.
|
||
*/
|
||
ban ip {
|
||
mask 195.86.232.81;
|
||
reason "Senden nefret ediyorum";
|
||
}
|
||
|
||
/* Ban server - bir sunucunun bağlanmasını devredışı kılar */
|
||
ban server {
|
||
mask eris.berkeley.edu;
|
||
reason "Defol git buradan.";
|
||
}
|
||
|
||
/* Ban user - normalde /KLINE veya /GLINE kullanıldığını unutmayınız */
|
||
ban user {
|
||
mask *tirc@*.saturn.bbn.com;
|
||
reason "Salak";
|
||
}
|
||
|
||
/* Ban realname bloğu bir kullanıcıyı, GECOS kısmı esas alınarak
|
||
* banlamanıza olanak sağlar.
|
||
*/
|
||
ban realname {
|
||
mask "Swat Team";
|
||
reason "mIRKFORCE";
|
||
}
|
||
|
||
ban realname {
|
||
mask "sub7server";
|
||
reason "sub7";
|
||
}
|
||
|
||
/* Ban ve TKL istisnaları. Kullanıcıları / makineleri gözetmeksizin
|
||
* KLINE, GLINE, gibi banlardan muaf tutmanıza olanak sağlar.
|
||
* Eğer statik IP (ve bu IP üzerinde güvenilmeyen kişiler) ile bir IRCOp
|
||
* iseniz o zaman kendinizi burada eklemenizi öneririz. Yanlışlıkla kendinize
|
||
* bir *LINE ban koyarsanız bile yinede muaf tutulacaksınız.
|
||
*/
|
||
|
||
/* except ban bloğu, sizi KLINE ve ZLINE gibi banlardan koruyacaktır */
|
||
except ban {
|
||
mask *@192.0.2.1;
|
||
// burada daha fazla mask girdileri ekleyebilirsiniz..
|
||
}
|
||
|
||
/* except ban bloğu, sizi 'tüm' GLINE, GZLINE, QLINE, SHUN gibi banlardan koruyacaktır */
|
||
except ban {
|
||
mask *@192.0.2.1;
|
||
type all;
|
||
}
|
||
|
||
/* Deny dcc bloğu, sunucu üzerinden DCC yoluyla dosya gönderilmesine izin vermeyecektir */
|
||
deny dcc {
|
||
filename "*sub7*";
|
||
reason "Olası Sub7 Virüsü";
|
||
}
|
||
|
||
/* Deny channel bloğu, kullanıcıların belirtilen kanallara girmesini engeller */
|
||
deny channel {
|
||
channel "*warez*";
|
||
reason "Warez is illegal";
|
||
class "clients";
|
||
}
|
||
|
||
/* VHosts (Virtual Hosts) bloğu, kullanıcının yeni bir host alabilmesine olanak sağlar.
|
||
* Görmeniz için; https://www.unrealircd.org/docs/Vhost_block
|
||
*/
|
||
|
||
/* Kullanabileceğiniz örnek vhost. IRC tipi: /VHOST test test
|
||
* DiKKAT: Güvenlik açısından aşağıdaki vhost::mask yönergesinde
|
||
* maske 'unrealircd.com' olarak belirlenmiştir.
|
||
*/
|
||
vhost {
|
||
vhost i.hate.microsefrs.com;
|
||
mask *@unrealircd.com;
|
||
login "test";
|
||
password "test";
|
||
}
|
||
|
||
/* Blacklist blokları, bir kullanıcı bağlandığında IP adresinin drone saldırılarına
|
||
* neden olduğunu, bilinen bir saldırıya uğramış bir makine olup olmadığını görmek
|
||
* için harici bir DNS Kara Liste hizmetinden sorgulayacaktır.
|
||
* Belgeleme: https://www.unrealircd.org/docs/Blacklist_block
|
||
* veya aşağıdaki bloklar satırına bakınız.
|
||
*/
|
||
|
||
/* DroneBL, muhtemelen IRC Sunucuları tarafından kullanılan en popüler kara liste.
|
||
* Belgeler ve cevap (reply) tiplerin anlamlarını görmek için https://dronebl.org/
|
||
* adresine bakınız. Bu zamanda aşağıdaki cevap (reply) tiplerini kullanıyoruz:
|
||
* 3: IRC Drone, 5: Bottler, 6: Unknown spambot or drone,
|
||
* 7: DDoS Drone, 8: SOCKS Proxy, 9: HTTP Proxy, 10: ProxyChain,
|
||
* 11: Web Page Proxy, 12: Open DNS Resolver, 13: Brute force attackers,
|
||
* 14: Open Wingate Proxy, 15: Compromised router / gateway,
|
||
* 16: Autorooting worms.
|
||
*/
|
||
blacklist dronebl {
|
||
dns {
|
||
name dnsbl.dronebl.org;
|
||
type record;
|
||
reply { 3; 5; 6; 7; 8; 9; 10; 11; 12; 13; 14; 15; 16; }
|
||
}
|
||
action gline;
|
||
ban-time 24h;
|
||
reason "Proxy/Drone belirlendi. Ayrıntılar için https://dronebl.org/lookup?ip=$ip adresine bakınız.";
|
||
}
|
||
|
||
/* EFnetRBL, belgeler ve cevap (reply) tiplerini görmek için https://rbl.efnetrbl.org/
|
||
* adresine bakınız.
|
||
* Yazma sırasında: 1 is open proxy, 4 is TOR, 5 is drones/flooding.
|
||
*
|
||
* NOT: Sunucunuzda TOR proxy'lerine izin vermek istiyorsanız,
|
||
* cevap (reply) tiplerinden '4;' öğesini kaldırmanız gerekiyor.
|
||
*/
|
||
blacklist efnetrbl {
|
||
dns {
|
||
name rbl.efnetrbl.org;
|
||
type record;
|
||
reply { 1; 4; 5; }
|
||
}
|
||
action gline;
|
||
ban-time 24h;
|
||
reason "Proxy/Drone/TOR belirlendi. Ayrıntılar için https://rbl.efnetrbl.org/?i=$ip adresine bakınız.";
|
||
}
|
||
|
||
/* Diğer yapılandırma dosyalarını dahil edebilirsiniz */
|
||
/* include "klines.conf"; */
|
||
|
||
/* Ağ yapılandırması */
|
||
set {
|
||
network-name "ExampleNET";
|
||
default-server "irc.example.org";
|
||
services-server "services.example.org";
|
||
stats-server "stats.example.org";
|
||
help-channel "#Help";
|
||
cloak-prefix "Clk";
|
||
prefix-quit "Quit";
|
||
|
||
/* Gizleme anahtarları ağ üzerindeki bütün sunucularda aynı olmalı.
|
||
* Bu anahtarlar maskeli hostlar yaratmak ve bunları saklamak için kullanılır.
|
||
* Anahtarlar 80 karakterlik 3 rastgele diziden oluşmalı ve küçük harf (a-z),
|
||
* büyük harf (A-Z) ve rakamlardan (0-9) meydana gelmelidirler.. [ilk örneğe bakınız].
|
||
* IPUCU: './unreal gencloak' Unreal sizin için rastgele 3 adet dizin oluşturur.
|
||
* Bunu NIX üzerinde çalıştırabilirsiniz.
|
||
*/
|
||
cloak-keys {
|
||
"Oozahho1raezoh0iMee4ohvegaifahv5xaepeitaich9tahdiquaid0geecipahdauVaij3zieph4ahi";
|
||
"ve diğeri";
|
||
"ve diğeri";
|
||
}
|
||
}
|
||
|
||
/* Sunucunun kendine özgü yapılandırması */
|
||
|
||
set {
|
||
kline-address "set.this.to.email.address"; /* bir kullanıcı banlandığında e-mail yada URL satırı gösterir */
|
||
modes-on-connect "+ixw"; /* kullanıcılar bağlandığında, bu modları alacaktır */
|
||
modes-on-oper "+xws"; /* Birisi IRC Operatör olduğunda bu modları alacaktır */
|
||
oper-auto-join "#opers"; /* IRCoplar bu kanala otomatik olarak giriş yapacaktır */
|
||
options {
|
||
hide-ulines; /* U-lines satırları /MAP ve /LINKS komutunda gözükmez */
|
||
show-connect-info; /* sunucuya bağlanırken "looking up your hostname" mesajı görüntülenecektir */
|
||
}
|
||
|
||
maxchannelsperuser 10; /* bir kullanıcının maksimum girebileceği kanal sayısı */
|
||
|
||
/* QUIT mesajının görüntülenebilmesi için, bir kullanıcının sunucuya bağlı kalması
|
||
* gereken süre. Bu durum umarım spamları durdurmak için yardımcı olacaktır.
|
||
*/
|
||
anti-spam-quit-message-time 10s;
|
||
|
||
/* Kullanıcı sunucudan ayrılırken çıkış sebebini sabitler. /QUIT sebeb gözardı edilecektir. */
|
||
/* static-quit "Client quit"; */
|
||
|
||
/* static-part /PART komutu ile aynı işi görür */
|
||
/* static-part yes; */
|
||
|
||
/* Anti flood Koruması
|
||
* Görmeniz için: https://www.unrealircd.org/docs/Set_block#set::anti-flood
|
||
*/
|
||
anti-flood {
|
||
}
|
||
|
||
/* Spam filter Ayarları */
|
||
spamfilter {
|
||
ban-time 1d; /* varsayılan spamfilter tarafından ban süresini belirtir */
|
||
ban-reason "Spam/Advertising"; /* varsayılan sebep */
|
||
virus-help-channel "#help"; /* 'viruschan' eylemi için kullanılacak kanal */
|
||
/* except "#help"; Spamfilter'den muaf tutulacak kanal */
|
||
}
|
||
}
|
||
/* Son olarak, bir MOTD (Günün Mesajı) oluşturabilirsiniz, bu
|
||
* conf/ dizininde 'ircd.motd' metin dosyası oluşturarak yapabilirsiniz.
|
||
* Bu dosyanın içeriği bağlantı kuran kullanıcılara gösterilecektir.
|
||
* Daha fazla bilgi için https://www.unrealircd.org/docs/MOTD_and_Rules bölümünü inceleyiniz.
|
||
*/
|
||
|
||
/*
|
||
* Sorununuza veya daha fazla yardımamı ihtiyacınız var?
|
||
* 1) https://www.unrealircd.org/docs/UnrealIRCd_4_documentation
|
||
* 2) https://www.unrealircd.org/docs/FAQ <- sorularınızın %80 ini kapsamakta!
|
||
* 3) Eğer probleminiz hala devam ediyorsa:
|
||
* - Forums: https://forums.unrealircd.org/
|
||
* - IRC: irc.unrealircd.org (SSL on port 6697) / #unreal-support
|
||
* İlk önce Dökümantasyon ve FAQ kısmını okumanızı gerektirdiğini unutmayın!
|
||
*/
|