/system script
add name=l7 owner=admin policy=\
ftp,reboot,read,write,policy,test,password,sniff,sensitive source=":put \"\
These strings are taken from the L7 filter project and are licensed under \
GPL See: http://www.gnu.org/copyleft/gpl.html\"\r\
\n/ip firewall layer7-protocol\r\
\n:if ([:len [find name=edonkey]] > 0) do={ :put \"already have edonkey\" \
} else={ add name=edonkey regexp=\"^[\\C5\\D4\\E3-\\E5].\\\?.\\\?.\\\?.\\\
\?([\\01\\02\\05\\14\\15\\16\\18\\19\\1A\\1B\\1C\\20\\21\\32\\33\\34\\35\\\
36\\38\\40\\41\\42\\43\\46\\47\\48\\49\\4A\\4B\\4C\\4D\\4E\\4F\\50\\51\\52\
\\53\\54\\55\\56\\57\\58[\\60\\81\\82\\90\\91\\93\\96\\97\\98\\99\\9A\\9B\
\\9C\\9E\\A0\\A1\\A2\\A3\\A4]|\\59................\\\?[ -~]|\\96....\\\$)\
\" }\r\
\n:if ([:len [find name=goboogy]] > 0) do={ :put \"already have goboogy\" \
} else={ add name=goboogy regexp=\"<peerplat>|^get /getfilebyhash\\\\.cgi\
\\\\\\\?|^get /queue_register\\\\.cgi\\\\\\\?|^get /getupdowninfo\\\\.cgi\
\\\\\\\?\" }\r\
\n:if ([:len [find name=soribada]] > 0) do={ :put \"already have soribada\
\" } else={ add name=soribada regexp=\"^GETMP3\\0D\\0AFilename|^\\01.\\\?.\
\\\?.\\\?(\\51\\3A\\\\+|\\51\\32\\3A)|^\\10[\\14-\\16]\\10[\\15-\\17].\\\?\
.\\\?.\\\?.\\\?\\\$\" }\r\
\n:if ([:len [find name=rdp]] > 0) do={ :put \"already have rdp\" } else={\
\_add name=rdp regexp=\"rdpdr.*cliprdr.*rdpsnd\" }\r\
\n:if ([:len [find name=gnutella]] > 0) do={ :put \"already have gnutella\
\" } else={ add name=gnutella regexp=\"^(gnd[\\01\\02]\\\?.\\\?.\\\?\\01|g\
nutella connect/[012]\\\\.[0-9]\\0D\\0A|get /uri-res/n2r\\\\\\\?urn:sha1:|\
get /.*user-agent: (gtk-gnutella|bearshare|mactella|gnucleus|gnotella|lime\
wire|imesh)|get /.*content-type: application/x-gnutella-packets|giv [0-9]*\
:[0-9a-f]*/|queue [0-9a-f]* [1-9][0-9]\\\?[0-9]\\\?\\\\.[1-9][0-9]\\\?[0-9\
]\\\?\\\\.[1-9][0-9]\\\?[0-9]\\\?\\\\.[1-9][0-9]\\\?[0-9]\\\?:[1-9][0-9]\\\
\?[0-9]\\\?[0-9]\\\?|gnutella.*content-type: application/x-gnutella|......\
.............\\\?lime)\" }\r\
\n:if ([:len [find name=cvs]] > 0) do={ :put \"already have cvs\" } else={\
\_add name=cvs regexp=\"^BEGIN (AUTH|VERIFICATION|GSSAPI) REQUEST\\0A\" }\
\r\
\n:if ([:len [find name=nbns]] > 0) do={ :put \"already have nbns\" } else\
={ add name=nbns regexp=\"\\01\\10\\01|\\\\)\\10\\01\\01|0\\10\\01\" }\r\
\n:if ([:len [find name=shoutcast]] > 0) do={ :put \"already have shoutcas\
t\" } else={ add name=shoutcast regexp=\"icy [1-5][0-9][0-9] [\\09-\\0D -~\
]*(content-type:audio|icy-)\" }\r\
\n:if ([:len [find name=dns]] > 0) do={ :put \"already have dns\" } else={\
\_add name=dns regexp=\"^.\\\?.\\\?.\\\?.\\\?[\\01\\02].\\\?.\\\?.\\\?.\\\
\?.\\\?.\\\?[\\01-\\\?][a-z0-9][\\01-\\\?a-z]*[\\02-\\06][a-z][a-z][fglmop\
rstuvz]\\\?[aeop]\\\?(um)\\\?[\\01-\\10\\1C][\\01\\03\\04\\FF]\" }\r\
\n:if ([:len [find name=quake-halflife]] > 0) do={ :put \"already have qua\
ke-halflife\" } else={ add name=quake-halflife regexp=\"^\\FF\\FF\\FF\\FFg\
et(info|challenge)\" }\r\
\n:if ([:len [find name=poco]] > 0) do={ :put \"already have poco\" } else\
={ add name=poco regexp=\"^\\80\\94\\0A\\01....\\1F\\9E\" }\r\
\n:if ([:len [find name=ciscovpn]] > 0) do={ :put \"already have ciscovpn\
\" } else={ add name=ciscovpn regexp=\"^\\01\\F4\\01\\F4\" }\r\
\n:if ([:len [find name=x11]] > 0) do={ :put \"already have x11\" } else={\
\_add name=x11 regexp=\"^[lb].\\\?\\0B\" }\r\
\n:if ([:len [find name=xboxlive]] > 0) do={ :put \"already have xboxlive\
\" } else={ add name=xboxlive regexp=\"^\\58\\80........\\F3|^\\06\\58\\4E\
\" }\r\
\n:if ([:len [find name=applejuice]] > 0) do={ :put \"already have appleju\
ice\" } else={ add name=applejuice regexp=\"^ajprot\\0D\\0A\" }\r\
\n:if ([:len [find name=zmaap]] > 0) do={ :put \"already have zmaap\" } el\
se={ add name=zmaap regexp=\"^\\1B\\D7\\3B\\48[\\01\\02]\\01\\\?\\01\" }\r\
\n:if ([:len [find name=live365]] > 0) do={ :put \"already have live365\" \
} else={ add name=live365 regexp=\"membername.*session.*player\" }\r\
\n:if ([:len [find name=rlogin]] > 0) do={ :put \"already have rlogin\" } \
else={ add name=rlogin regexp=\"^[a-z][a-z0-9][a-z0-9]+/[1-9][0-9]\\\?[0-9\
]\\\?[0-9]\\\?00\" }\r\
\n:if ([:len [find name=http]] > 0) do={ :put \"already have http\" } else\
={ add name=http regexp=\"http/(0\\\\.9|1\\\\.0|1\\\\.1) [1-5][0-9][0-9] [\
\\09-\\0D -~]*(connection:|content-type:|content-length:|date:)|post [\\09\
-\\0D -~]* http/[01]\\\\.[019]\" }\r\
\n:if ([:len [find name=sip]] > 0) do={ :put \"already have sip\" } else={\
\_add name=sip regexp=\"^(invite|register|cancel) sip[\\09-\\0D -~]*sip/[0\
-2]\\\\.[0-9]\" }\r\
\n:if ([:len [find name=pop3]] > 0) do={ :put \"already have pop3\" } else\
={ add name=pop3 regexp=\"^(\\\\+ok |-err )\" }\r\
\n:if ([:len [find name=smb]] > 0) do={ :put \"already have smb\" } else={\
\_add name=smb regexp=\"\\FFsmb[\\72\\25]\" }\r\
\n:if ([:len [find name=quake1]] > 0) do={ :put \"already have quake1\" } \
else={ add name=quake1 regexp=\"^\\80\\0C\\01quake\\03\" }\r\
\n:if ([:len [find name=lpd]] > 0) do={ :put \"already have lpd\" } else={\
\_add name=lpd regexp=\"^(\\01[!-~]+|\\02[!-~]+\\0A.[\\01\\02\\03][\\01-\\\
0A -~]*|[\\03\\04][!-~]+[\\09-\\0D]+[a-z][\\09-\\0D -~]*|\\05[!-~]+[\\09-\
\\0D]+([a-z][!-~]*[\\09-\\0D]+[1-9][0-9]\\\?[0-9]\\\?|root[\\09-\\0D]+[!-~\
]+).*)\\0A\\\$\" }\r\
\n:if ([:len [find name=mute]] > 0) do={ :put \"already have mute\" } else\
={ add name=mute regexp=\"^(Public|AES)Key: [0-9a-f]*\\0AEnd(Public|AES)Ke\
y\\0A\\\$\" }\r\
\n:if ([:len [find name=ssh]] > 0) do={ :put \"already have ssh\" } else={\
\_add name=ssh regexp=\"^ssh-[12]\\\\.[0-9]\" }\r\
\n:if ([:len [find name=jabber]] > 0) do={ :put \"already have jabber\" } \
else={ add name=jabber regexp=\"<stream:stream[\\09-\\0D ][ -~]*[\\09-\\0D\
\_]xmlns=['\\\"]jabber\" }\r\
\n:if ([:len [find name=bittorrent]] > 0) do={ :put \"already have bittorr\
ent\" } else={ add name=bittorrent regexp=\"^(\\13bittorrent protocol|azve\
r\\01\\\$|get /scrape\\\\\\\?info_hash=)|d1:ad2:id20:|\\08'7P\\\\)[RP]\" }\
\r\
\n:if ([:len [find name=ncp]] > 0) do={ :put \"already have ncp\" } else={\
\_add name=ncp regexp=\"^(dmdt.*\\01.*(\\\"\\\"|\\11\\11|uu)|tncp.*33)\" }\
\r\
\n:if ([:len [find name=tls]] > 0) do={ :put \"already have tls\" } else={\
\_add name=tls regexp=\"^(.\\\?.\\\?\\16\\03.*\\16\\03|.\\\?.\\\?\\01\\03\
\\01\\\?.*\\0B)\" }\r\
\n:if ([:len [find name=directconnect]] > 0) do={ :put \"already have dire\
ctconnect\" } else={ add name=directconnect regexp=\"^(\\\\\\\$mynick |\\\
\\\\\$lock |\\\\\\\$key )\" }\r\
\n:if ([:len [find name=netbios]] > 0) do={ :put \"already have netbios\" \
} else={ add name=netbios regexp=\"\\81.\\\?.\\\?.[A-P][A-P][A-P][A-P][A-P\
][A-P][A-P][A-P][A-P][A-P][A-P][A-P][A-P][A-P][A-P][A-P][A-P][A-P][A-P][A-\
P][A-P][A-P][A-P][A-P][A-P][A-P][A-P][A-P][A-P][A-P][A-P][A-P][A-P][A-P][A\
-P][A-P][A-P][A-P][A-P][A-P]\" }\r\
\n:if ([:len [find name=tftp]] > 0) do={ :put \"already have tftp\" } else\
={ add name=tftp regexp=\"^(\\01|\\02)[ -~]*(netascii|octet|mail)\" }\r\
\n:if ([:len [find name=subspace]] > 0) do={ :put \"already have subspace\
\" } else={ add name=subspace regexp=\"^\\01....\\11\\10........\\01\\\$\"\
\_}\r\
\n:if ([:len [find name=hotline]] > 0) do={ :put \"already have hotline\" \
} else={ add name=hotline regexp=\"^....................TRTPHOTL\\01\\02\"\
\_}\r\
\n:if ([:len [find name=doom3]] > 0) do={ :put \"already have doom3\" } el\
se={ add name=doom3 regexp=\"^\\FF\\FFchallenge\" }\r\
\n:if ([:len [find name=ftp]] > 0) do={ :put \"already have ftp\" } else={\
\_add name=ftp regexp=\"^220[\\09-\\0D -~]*ftp\" }\r\
\n:if ([:len [find name=kugoo]] > 0) do={ :put \"already have kugoo\" } el\
se={ add name=kugoo regexp=\"^\\31..\\8E\" }\r\
\n:if ([:len [find name=tsp]] > 0) do={ :put \"already have tsp\" } else={\
\_add name=tsp regexp=\"^[\\01-\\13\\16-\\\$]\\01.\\\?.\\\?.\\\?.\\\?.\\\?\
.\\\?.\\\?.\\\?.\\\?.\\\?[ -~]+\" }\r\
\n:if ([:len [find name=battlefield1942]] > 0) do={ :put \"already have ba\
ttlefield1942\" } else={ add name=battlefield1942 regexp=\"^\\01\\11\\10\\\
\\|\\F8\\02\\10\\40\\06\" }\r\
\n:if ([:len [find name=ssdp]] > 0) do={ :put \"already have ssdp\" } else\
={ add name=ssdp regexp=\"^notify[\\09-\\0D ]\\\\*[\\09-\\0D ]http/1\\\\.1\
[\\09-\\0D -~]*ssdp:(alive|byebye)|^m-search[\\09-\\0D ]\\\\*[\\09-\\0D ]h\
ttp/1\\\\.1[\\09-\\0D -~]*ssdp:discover\" }\r\
\n:if ([:len [find name=imap]] > 0) do={ :put \"already have imap\" } else\
={ add name=imap regexp=\"^(\\\\* ok|a[0-9]+ noop)\" }\r\
\n:if ([:len [find name=ares]] > 0) do={ :put \"already have ares\" } else\
={ add name=ares regexp=\"^\\03[]Z].\\\?.\\\?\\05\\\$\" }\r\
\n:if ([:len [find name=fasttrack]] > 0) do={ :put \"already have fasttrac\
k\" } else={ add name=fasttrack regexp=\"^get (/.download/[ -~]*|/.superno\
de[ -~]|/.status[ -~]|/.network[ -~]*|/.files|/.hash=[0-9a-f]*/[ -~]*) htt\
p/1.1|user-agent: kazaa|x-kazaa(-username|-network|-ip|-supernodeip|-xferi\
d|-xferuid|tag)|^give [0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]\\\?[0-9]\\\
\?[0-9]\\\?\" }\r\
\n:if ([:len [find name=qq]] > 0) do={ :put \"already have qq\" } else={ a\
dd name=qq regexp=\"^.\\\?\\02.+\\03\\\$\" }\r\
\n:if ([:len [find name=100bao]] > 0) do={ :put \"already have 100bao\" } \
else={ add name=100bao regexp=\"^\\01\\01\\05\\0A\" }\r\
\n:if ([:len [find name=aim]] > 0) do={ :put \"already have aim\" } else={\
\_add name=aim regexp=\"^(\\\\*[\\01\\02].*\\03\\0B|\\\\*\\01.\\\?.\\\?.\\\
\?.\\\?\\01)|flapon|toc_signon.*0x\" }\r\
\n:if ([:len [find name=unknown]] > 0) do={ :put \"already have unknown\" \
} else={ add name=unknown regexp=\".\" }\r\
\n:if ([:len [find name=msn-filetransfer]] > 0) do={ :put \"already have m\
sn-filetransfer\" } else={ add name=msn-filetransfer regexp=\"^(ver [ -~]*\
msnftp\\0D\\0Aver msnftp\\0D\\0Ausr|method msnmsgr:)\" }\r\
\n:if ([:len [find name=yahoo]] > 0) do={ :put \"already have yahoo\" } el\
se={ add name=yahoo regexp=\"^(ymsg|ypns|yhoo).\\\?.\\\?.\\\?.\\\?.\\\?.\\\
\?.\\\?[lwt].*\\C0\\80\" }\r\
\n:if ([:len [find name=validcertssl]] > 0) do={ :put \"already have valid\
certssl\" } else={ add name=validcertssl regexp=\"^(.\\\?.\\\?\\16\\03.*\\\
16\\03|.\\\?.\\\?\\01\\03\\01\\\?.*\\0B).*(thawte|equifax secure|rsa data \
security, inc|verisign, inc|gte cybertrust root|entrust\\\\.net limited)\"\
\_}\r\
\n:if ([:len [find name=ntp]] > 0) do={ :put \"already have ntp\" } else={\
\_add name=ntp regexp=\"^([\\13\\1B\\23\\D3\\DB\\E3]|[\\14\\1C\\\$].......\
\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?[\\C6-\\FF])\" }\r\
\n:if ([:len [find name=gnucleuslan]] > 0) do={ :put \"already have gnucle\
uslan\" } else={ add name=gnucleuslan regexp=\"gnuclear connect/[\\09-\\0D\
\_-~]*user-agent: gnucleus [\\09-\\0D -~]*lan:\" }\r\
\n:if ([:len [find name=vnc]] > 0) do={ :put \"already have vnc\" } else={\
\_add name=vnc regexp=\"^rfb 00[1-9]\\\\.00[0-9]\\0A\\\$\" }\r\
\n:if ([:len [find name=bgp]] > 0) do={ :put \"already have bgp\" } else={\
\_add name=bgp regexp=\"^\\FF\\FF\\FF\\FF\\FF\\FF\\FF\\FF\\FF\\FF\\FF\\FF\
\\FF\\FF\\FF\\FF..\\\?\\01[\\03\\04]\" }\r\
\n:if ([:len [find name=tesla]] > 0) do={ :put \"already have tesla\" } el\
se={ add name=tesla regexp=\"\\03\\9A\\89\\22\\31\\31\\31\\\\.\\30\\30\\20\
\\42\\65\\74\\61\\20|\\E2\\3C\\69\\1E\\1C\\E9\" }\r\
\n:if ([:len [find name=openft]] > 0) do={ :put \"already have openft\" } \
else={ add name=openft regexp=\"x-openftalias: [-)(0-9a-z ~.]\" }\r\
\n:if ([:len [find name=h323]] > 0) do={ :put \"already have h323\" } else\
={ add name=h323 regexp=\"^\\03..\\\?\\08...\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\
\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\05\" }\r\
\n:if ([:len [find name=finger]] > 0) do={ :put \"already have finger\" } \
else={ add name=finger regexp=\"^[a-z][a-z0-9\\\\-_]+|login: [\\09-\\0D -~\
]* name: [\\09-\\0D -~]* Directory:\" }\r\
\n:if ([:len [find name=ident]] > 0) do={ :put \"already have ident\" } el\
se={ add name=ident regexp=\"^[1-9][0-9]\\\?[0-9]\\\?[0-9]\\\?[0-9]\\\?[\\\
09-\\0D]*,[\\09-\\0D]*[1-9][0-9]\\\?[0-9]\\\?[0-9]\\\?[0-9]\\\?(\\0D\\0A|[\
\\0D\\0A])\\\?\\\$\" }\r\
\n:if ([:len [find name=gkrellm]] > 0) do={ :put \"already have gkrellm\" \
} else={ add name=gkrellm regexp=\"^gkrellm [23].[0-9].[0-9]\\0A\\\$\" }\r\
\n:if ([:len [find name=hddtemp]] > 0) do={ :put \"already have hddtemp\" \
} else={ add name=hddtemp regexp=\"^\\\\|/dev/[a-z][a-z][a-z]\\\\|[0-9a-z]\
*\\\\|[0-9][0-9]\\\\|[cfk]\\\\|\" }\r\
\n:if ([:len [find name=socks]] > 0) do={ :put \"already have socks\" } el\
se={ add name=socks regexp=\"\\05[\\01-\\08]*\\05[\\01-\\08]\\\?.*\\05[\\0\
1-\\03][\\01\\03].*\\05[\\01-\\08]\\\?[\\01\\03]\" }\r\
\n:if ([:len [find name=biff]] > 0) do={ :put \"already have biff\" } else\
={ add name=biff regexp=\"^[a-z][a-z0-9]+@[1-9][0-9]+\\\$\" }\r\
\n:if ([:len [find name=dhcp]] > 0) do={ :put \"already have dhcp\" } else\
={ add name=dhcp regexp=\"^[\\01\\02][\\01- ]\\06.*c\\82sc\" }\r\
\n:if ([:len [find name=smtp]] > 0) do={ :put \"already have smtp\" } else\
={ add name=smtp regexp=\"^220[\\09-\\0D -~]* (e\\\?smtp|simple mail)\" }\
\r\
\n:if ([:len [find name=ipp]] > 0) do={ :put \"already have ipp\" } else={\
\_add name=ipp regexp=\"ipp://\" }\r\
\n:if ([:len [find name=msnmessenger]] > 0) do={ :put \"already have msnme\
ssenger\" } else={ add name=msnmessenger regexp=\"ver [0-9]+ msnp[1-9][0-9\
]\\\? [\\09-\\0D -~]*cvr0\\0D\\0A\\\$|usr 1 [!-~]+ [0-9. ]+\\0D\\0A\\\$|an\
s 1 [!-~]+ [0-9. ]+\\0D\\0A\\\$\" }\r\
\n:if ([:len [find name=irc]] > 0) do={ :put \"already have irc\" } else={\
\_add name=irc regexp=\"^(nick[\\09-\\0D -~]*user[\\09-\\0D -~]*:|user[\\0\
9-\\0D -~]*:[\\02-\\0D -~]*nick[\\09-\\0D -~]*\\0D\\0A)\" }\r\
\n:if ([:len [find name=gopher]] > 0) do={ :put \"already have gopher\" } \
else={ add name=gopher regexp=\"^[\\09-\\0D]*[1-9,+tgi][\\09-\\0D -~]*\\09\
[\\09-\\0D -~]*\\09[a-z0-9.]*\\\\.[a-z][a-z].\\\?.\\\?\\09[1-9]\" }\r\
\n:if ([:len [find name=telnet]] > 0) do={ :put \"already have telnet\" } \
else={ add name=telnet regexp=\"^\\FF[\\FB-\\FE].\\FF[\\FB-\\FE].\\FF[\\FB\
-\\FE]\" }\r\
\n:if ([:len [find name=snmp]] > 0) do={ :put \"already have snmp\" } else\
={ add name=snmp regexp=\"^\\02\\01\\04.+([\\A0-\\A3]\\02[\\01-\\04].\\\?.\
\\\?.\\\?.\\\?\\02\\01.\\\?\\02\\01.\\\?\\30|\\A4\\06.+\\40\\04.\\\?.\\\?.\
\\\?.\\\?\\02\\01.\\\?\\02\\01.\\\?\\43)\" }\r\
\n:if ([:len [find name=nntp]] > 0) do={ :put \"already have nntp\" } else\
={ add name=nntp regexp=\"^(20[01][\\09-\\0D -~]*AUTHINFO USER|20[01][\\09\
-\\0D -~]*news)\" }\r\
\n:if ([:len [find name=aimwebcontent]] > 0) do={ :put \"already have aimw\
ebcontent\" } else={ add name=aimwebcontent regexp=\"user-agent:aim/\" }\r\
\n:if ([:len [find name=rtsp]] > 0) do={ :put \"already have rtsp\" } else\
={ add name=rtsp regexp=\"rtsp/1.0 200 ok\" }\r\
\n:if ([:len [find name=skypeout]] > 0) do={ :put \"already have skypeout\
\" } else={ add name=skypeout regexp=\"^(\\01.\\\?.\\\?.\\\?.\\\?.\\\?.\\\
\?.\\\?.\\\?\\01|\\02.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\02|\\03.\\\
\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\03|\\04.\\\?.\\\?.\\\?.\\\?.\\\?.\\\
\?.\\\?.\\\?\\04|\\05.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\05|\\06.\\\
\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\06|\\07.\\\?.\\\?.\\\?.\\\?.\\\?.\\\
\?.\\\?.\\\?\\07|\\08.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\08|\\09.\\\
\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\09|\\0A.\\\?.\\\?.\\\?.\\\?.\\\?.\\\
\?.\\\?.\\\?\\0A|\\0B.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\0B|\\0C.\\\
\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\0C|\\0D.\\\?.\\\?.\\\?.\\\?.\\\?.\\\
\?.\\\?.\\\?\\0D|\\0E.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\0E|\\0F.\\\
\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\0F|\\10.\\\?.\\\?.\\\?.\\\?.\\\?.\\\
\?.\\\?.\\\?\\10|\\11.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\11|\\12.\\\
\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\12|\\13.\\\?.\\\?.\\\?.\\\?.\\\?.\\\
\?.\\\?.\\\?\\13|\\14.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\14|\\15.\\\
\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\15|\\16.\\\?.\\\?.\\\?.\\\?.\\\?.\\\
\?.\\\?.\\\?\\16|\\17.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\17|\\18.\\\
\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\18|\\19.\\\?.\\\?.\\\?.\\\?.\\\?.\\\
\?.\\\?.\\\?\\19|\\1A.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\1A|\\1B.\\\
\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\1B|\\1C.\\\?.\\\?.\\\?.\\\?.\\\?.\\\
\?.\\\?.\\\?\\1C|\\1D.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\1D|\\1E.\\\
\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\1E|\\1F.\\\?.\\\?.\\\?.\\\?.\\\?.\\\
\?.\\\?.\\\?\\1F|\\20.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\20|\\21.\\\
\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\21|\\22.\\\?.\\\?.\\\?.\\\?.\\\?.\\\
\?.\\\?.\\\?\\22|\\23.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\23|\\\\\\\$\
.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\\\\\\$|\\25.\\\?.\\\?.\\\?.\\\?.\
\\\?.\\\?.\\\?.\\\?\\25|\\26.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\26|\
\\27.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\27|\\\\(.\\\?.\\\?.\\\?.\\\?\
.\\\?.\\\?.\\\?.\\\?\\\\(|\\\\).\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\\
\\)|\\\\*.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\\\*|\\\\+.\\\?.\\\?.\\\
\?.\\\?.\\\?.\\\?.\\\?.\\\?\\\\+|\\2C.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\
\\\?\\2C|\\2D.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\2D|\\\\..\\\?.\\\?.\
\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\\\.|\\2F.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\
.\\\?\\2F|\\30.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\30|\\31.\\\?.\\\?.\
\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\31|\\32.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\
\\\?\\32|\\33.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\33|\\34.\\\?.\\\?.\
\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\34|\\35.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\
\\\?\\35|\\36.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\36|\\37.\\\?.\\\?.\
\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\37|\\38.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\
\\\?\\38|\\39.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\39|\\3A.\\\?.\\\?.\
\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\3A|\\3B.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\
\\\?\\3B|\\3C.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\3C|\\3D.\\\?.\\\?.\
\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\3D|\\3E.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\
\\\?\\3E|\\\\\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\\\\\\?|\\40.\\\
\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\40|\\41.\\\?.\\\?.\\\?.\\\?.\\\?.\\\
\?.\\\?.\\\?\\41|\\42.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\42|\\43.\\\
\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\43|\\44.\\\?.\\\?.\\\?.\\\?.\\\?.\\\
\?.\\\?.\\\?\\44|\\45.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\45|\\46.\\\
\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\46|\\47.\\\?.\\\?.\\\?.\\\?.\\\?.\\\
\?.\\\?.\\\?\\47|\\48.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\48|\\49.\\\
\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\49|\\4A.\\\?.\\\?.\\\?.\\\?.\\\?.\\\
\?.\\\?.\\\?\\4A|\\4B.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\4B|\\4C.\\\
\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\4C|\\4D.\\\?.\\\?.\\\?.\\\?.\\\?.\\\
\?.\\\?.\\\?\\4D|\\4E.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\4E|\\4F.\\\
\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\4F|\\50.\\\?.\\\?.\\\?.\\\?.\\\?.\\\
\?.\\\?.\\\?\\50|\\51.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\51|\\52.\\\
\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\52|\\53.\\\?.\\\?.\\\?.\\\?.\\\?.\\\
\?.\\\?.\\\?\\53|\\54.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\54|\\55.\\\
\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\55|\\56.\\\?.\\\?.\\\?.\\\?.\\\?.\\\
\?.\\\?.\\\?\\56|\\57.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\57|\\58.\\\
\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\58|\\59.\\\?.\\\?.\\\?.\\\?.\\\?.\\\
\?.\\\?.\\\?\\59|\\5A.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\5A|\\\\[.\\\
\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\\\[|\\\\].\\\?.\\\?.\\\?.\\\?.\\\?.\
\\\?.\\\?.\\\?\\\\]|\\\\].\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\\\]|\\\
\\^.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\\\^|\\5F.\\\?.\\\?.\\\?.\\\?.\
\\\?.\\\?.\\\?.\\\?\\5F|\\60.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\60|\
\\61.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\61|\\62.\\\?.\\\?.\\\?.\\\?.\
\\\?.\\\?.\\\?.\\\?\\62|\\63.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\63|\
\\64.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\64|\\65.\\\?.\\\?.\\\?.\\\?.\
\\\?.\\\?.\\\?.\\\?\\65|\\66.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\66|\
\\67.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\67|\\68.\\\?.\\\?.\\\?.\\\?.\
\\\?.\\\?.\\\?.\\\?\\68|\\69.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\69|\
\\6A.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\6A|\\6B.\\\?.\\\?.\\\?.\\\?.\
\\\?.\\\?.\\\?.\\\?\\6B|\\6C.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\6C|\
\\6D.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\6D|\\6E.\\\?.\\\?.\\\?.\\\?.\
\\\?.\\\?.\\\?.\\\?\\6E|\\6F.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\6F|\
\\70.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\70|\\71.\\\?.\\\?.\\\?.\\\?.\
\\\?.\\\?.\\\?.\\\?\\71|\\72.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\72|\
\\73.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\73|\\74.\\\?.\\\?.\\\?.\\\?.\
\\\?.\\\?.\\\?.\\\?\\74|\\75.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\75|\
\\76.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\76|\\77.\\\?.\\\?.\\\?.\\\?.\
\\\?.\\\?.\\\?.\\\?\\77|\\78.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\78|\
\\79.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\79|\\7A.\\\?.\\\?.\\\?.\\\?.\
\\\?.\\\?.\\\?.\\\?\\7A|\\\\{.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\\\{\
|\\\\|.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\\\||\\\\}.\\\?.\\\?.\\\?.\
\\\?.\\\?.\\\?.\\\?.\\\?\\\\}|\\7E.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\
\\7E|\\7F.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\7F|\\80.\\\?.\\\?.\\\?.\
\\\?.\\\?.\\\?.\\\?.\\\?\\80|\\81.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\
\\81|\\82.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\82|\\83.\\\?.\\\?.\\\?.\
\\\?.\\\?.\\\?.\\\?.\\\?\\83|\\84.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\
\\84|\\85.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\85|\\86.\\\?.\\\?.\\\?.\
\\\?.\\\?.\\\?.\\\?.\\\?\\86|\\87.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\
\\87|\\88.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\88|\\89.\\\?.\\\?.\\\?.\
\\\?.\\\?.\\\?.\\\?.\\\?\\89|\\8A.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\
\\8A|\\8B.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\8B|\\8C.\\\?.\\\?.\\\?.\
\\\?.\\\?.\\\?.\\\?.\\\?\\8C|\\8D.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\
\\8D|\\8E.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\8E|\\8F.\\\?.\\\?.\\\?.\
\\\?.\\\?.\\\?.\\\?.\\\?\\8F|\\90.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\
\\90|\\91.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\91|\\92.\\\?.\\\?.\\\?.\
\\\?.\\\?.\\\?.\\\?.\\\?\\92|\\93.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\
\\93|\\94.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\94|\\95.\\\?.\\\?.\\\?.\
\\\?.\\\?.\\\?.\\\?.\\\?\\95|\\96.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\
\\96|\\97.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\97|\\98.\\\?.\\\?.\\\?.\
\\\?.\\\?.\\\?.\\\?.\\\?\\98|\\99.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\
\\99|\\9A.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\9A|\\9B.\\\?.\\\?.\\\?.\
\\\?.\\\?.\\\?.\\\?.\\\?\\9B|\\9C.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\
\\9C|\\9D.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\9D|\\9E.\\\?.\\\?.\\\?.\
\\\?.\\\?.\\\?.\\\?.\\\?\\9E|\\9F.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\
\\9F|\\A0.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\A0|\\A1.\\\?.\\\?.\\\?.\
\\\?.\\\?.\\\?.\\\?.\\\?\\A1|\\A2.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\
\\A2|\\A3.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\A3|\\A4.\\\?.\\\?.\\\?.\
\\\?.\\\?.\\\?.\\\?.\\\?\\A4|\\A5.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\
\\A5|\\A6.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\A6|\\A7.\\\?.\\\?.\\\?.\
\\\?.\\\?.\\\?.\\\?.\\\?\\A7|\\A8.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\
\\A8|\\A9.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\A9|\\AA.\\\?.\\\?.\\\?.\
\\\?.\\\?.\\\?.\\\?.\\\?\\AA|\\AB.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\
\\AB|\\AC.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\AC|\\AD.\\\?.\\\?.\\\?.\
\\\?.\\\?.\\\?.\\\?.\\\?\\AD|\\AE.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\
\\AE|\\AF.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\AF|\\B0.\\\?.\\\?.\\\?.\
\\\?.\\\?.\\\?.\\\?.\\\?\\B0|\\B1.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\
\\B1|\\B2.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\B2|\\B3.\\\?.\\\?.\\\?.\
\\\?.\\\?.\\\?.\\\?.\\\?\\B3|\\B4.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\
\\B4|\\B5.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\B5|\\B6.\\\?.\\\?.\\\?.\
\\\?.\\\?.\\\?.\\\?.\\\?\\B6|\\B7.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\
\\B7|\\B8.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\B8|\\B9.\\\?.\\\?.\\\?.\
\\\?.\\\?.\\\?.\\\?.\\\?\\B9|\\BA.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\
\\BA|\\BB.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\BB|\\BC.\\\?.\\\?.\\\?.\
\\\?.\\\?.\\\?.\\\?.\\\?\\BC|\\BD.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\
\\BD|\\BE.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\BE|\\BF.\\\?.\\\?.\\\?.\
\\\?.\\\?.\\\?.\\\?.\\\?\\BF|\\C0.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\
\\C0|\\C1.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\C1|\\C2.\\\?.\\\?.\\\?.\
\\\?.\\\?.\\\?.\\\?.\\\?\\C2|\\C3.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\
\\C3|\\C4.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\C4|\\C5.\\\?.\\\?.\\\?.\
\\\?.\\\?.\\\?.\\\?.\\\?\\C5|\\C6.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\
\\C6|\\C7.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\C7|\\C8.\\\?.\\\?.\\\?.\
\\\?.\\\?.\\\?.\\\?.\\\?\\C8|\\C9.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\
\\C9|\\CA.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\CA|\\CB.\\\?.\\\?.\\\?.\
\\\?.\\\?.\\\?.\\\?.\\\?\\CB|\\CC.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\
\\CC|\\CD.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\CD|\\CE.\\\?.\\\?.\\\?.\
\\\?.\\\?.\\\?.\\\?.\\\?\\CE|\\CF.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\
\\CF|\\D0.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\D0|\\D1.\\\?.\\\?.\\\?.\
\\\?.\\\?.\\\?.\\\?.\\\?\\D1|\\D2.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\
\\D2|\\D3.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\D3|\\D4.\\\?.\\\?.\\\?.\
\\\?.\\\?.\\\?.\\\?.\\\?\\D4|\\D5.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\
\\D5|\\D6.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\D6|\\D7.\\\?.\\\?.\\\?.\
\\\?.\\\?.\\\?.\\\?.\\\?\\D7|\\D8.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\
\\D8|\\D9.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\D9|\\DA.\\\?.\\\?.\\\?.\
\\\?.\\\?.\\\?.\\\?.\\\?\\DA|\\DB.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\
\\DB|\\DC.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\DC|\\DD.\\\?.\\\?.\\\?.\
\\\?.\\\?.\\\?.\\\?.\\\?\\DD|\\DE.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\
\\DE|\\DF.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\DF|\\E0.\\\?.\\\?.\\\?.\
\\\?.\\\?.\\\?.\\\?.\\\?\\E0|\\E1.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\
\\E1|\\E2.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\E2|\\E3.\\\?.\\\?.\\\?.\
\\\?.\\\?.\\\?.\\\?.\\\?\\E3|\\E4.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\
\\E4|\\E5.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\E5|\\E6.\\\?.\\\?.\\\?.\
\\\?.\\\?.\\\?.\\\?.\\\?\\E6|\\E7.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\
\\E7|\\E8.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\E8|\\E9.\\\?.\\\?.\\\?.\
\\\?.\\\?.\\\?.\\\?.\\\?\\E9|\\EA.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\
\\EA|\\EB.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\EB|\\EC.\\\?.\\\?.\\\?.\
\\\?.\\\?.\\\?.\\\?.\\\?\\EC|\\ED.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\
\\ED|\\EE.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\EE|\\EF.\\\?.\\\?.\\\?.\
\\\?.\\\?.\\\?.\\\?.\\\?\\EF|\\F0.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\
\\F0|\\F1.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\F1|\\F2.\\\?.\\\?.\\\?.\
\\\?.\\\?.\\\?.\\\?.\\\?\\F2|\\F3.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\
\\F3|\\F4.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\F4|\\F5.\\\?.\\\?.\\\?.\
\\\?.\\\?.\\\?.\\\?.\\\?\\F5|\\F6.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\
\\F6|\\F7.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\F7|\\F8.\\\?.\\\?.\\\?.\
\\\?.\\\?.\\\?.\\\?.\\\?\\F8|\\F9.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\
\\F9|\\FA.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\FA|\\FB.\\\?.\\\?.\\\?.\
\\\?.\\\?.\\\?.\\\?.\\\?\\FB|\\FC.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\
\\FC|\\FD.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\\FD|\\FE.\\\?.\\\?.\\\?.\
\\\?.\\\?.\\\?.\\\?.\\\?\\FE|\\FF.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\
\\FF)\" }\r\
\n:if ([:len [find name=skypetoskype]] > 0) do={ :put \"already have skype\
toskype\" } else={ add name=skypetoskype regexp=\"^..\\02.............\" }\
\r\
\n:if ([:len [find name=counterstrike-source]] > 0) do={ :put \"already ha\
ve counterstrike-source\" } else={ add name=counterstrike-source regexp=\"\
^\\FF\\FF\\FF\\FF.*cstrikeCounter-Strike\" }\r\
\n:if ([:len [find name=halflife2-deathmatch]] > 0) do={ :put \"already ha\
ve halflife2-deathmatch\" } else={ add name=halflife2-deathmatch regexp=\"\
^\\FF\\FF\\FF\\FF.*hl2mpDeathmatch\" }\r\
\n:if ([:len [find name=freenet]] > 0) do={ :put \"already have freenet\" \
} else={ add name=freenet regexp=\"^\\01[\\08\\09][\\03\\04]\" }\r\
\n:if ([:len [find name=battlefield2]] > 0) do={ :put \"already have battl\
efield2\" } else={ add name=battlefield2 regexp=\"^(\\11\\20\\01...\\\?\\1\
1|\\FE\\FD.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?(\\14\\01\\06|\\FF\\FF\\FF))|[]\\0\
1].\\\?battlefield2\" }\r\
\n:if ([:len [find name=napster]] > 0) do={ :put \"already have napster\" \
} else={ add name=napster regexp=\"^(.[\\02\\06][!-~]+ [!-~]+ [0-9][0-9]\\\
\?[0-9]\\\?[0-9]\\\?[0-9]\\\? \\\"[\\09-\\0D -~]+\\\" ([0-9]|10)|1(send|ge\
t)[!-~]+ \\\"[\\09-\\0D -~]+\\\")\" }\r\
\n:if ([:len [find name=soulseek]] > 0) do={ :put \"already have soulseek\
\" } else={ add name=soulseek regexp=\"^(\\05..\\\?|.\\01.[ -~]+\\01F..\\\
\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?)\\\$\" }\r\
\n:if ([:len [find name=xunlei]] > 0) do={ :put \"already have xunlei\" } \
else={ add name=xunlei regexp=\"^[()]...\\\?.\\\?.\\\?(reg|get|query)\" }\
\r\
\n:if ([:len [find name=ssl]] > 0) do={ :put \"already have ssl\" } else={\
\_add name=ssl regexp=\"^(.\\\?.\\\?\\16\\03.*\\16\\03|.\\\?.\\\?\\01\\03\
\\01\\\?.*\\0B)\" }\r\
\n:if ([:len [find name=citrix]] > 0) do={ :put \"already have citrix\" } \
else={ add name=citrix regexp=\"\\32\\26\\85\\92\\58\" }\r\
\n:if ([:len [find name=whois]] > 0) do={ :put \"already have whois\" } el\
se={ add name=whois regexp=\"^[ !-~]+\\0D\\0A\\\$\" }\r\
\n:if ([:len [find name=dayofdefeat-source]] > 0) do={ :put \"already have\
\_dayofdefeat-source\" } else={ add name=dayofdefeat-source regexp=\"^\\FF\
\\FF\\FF\\FF.*dodDay of Defeat\" }\r\
\n:if ([:len [find name=teamspeak]] > 0) do={ :put \"already have teamspea\
k\" } else={ add name=teamspeak regexp=\"^\\F4\\BE\\03.*teamspeak\" }\r\
\n:if ([:len [find name=worldofwarcraft]] > 0) do={ :put \"already have wo\
rldofwarcraft\" } else={ add name=worldofwarcraft regexp=\"^\\06\\EC\\01\"\
\_}\r\
\n:if ([:len [find name=ventrilo]] > 0) do={ :put \"already have ventrilo\
\" } else={ add name=ventrilo regexp=\"^..\\\?v\\\\\\\$\\CF\" }\r\
\n:if ([:len [find name=http-rtsp]] > 0) do={ :put \"already have http-rts\
p\" } else={ add name=http-rtsp regexp=\"^(get[\\09-\\0D -~]* Accept: appl\
ication/x-rtsp-tunnelled|http/(0\\\\.9|1\\\\.0|1\\\\.1) [1-5][0-9][0-9] [\
\\09-\\0D -~]*a=control:rtsp://)\" }\r\
\n:if ([:len [find name=thecircle]] > 0) do={ :put \"already have thecircl\
e\" } else={ add name=thecircle regexp=\"^t\\03ni.\\\?[\\01-\\06]\\\?t[\\0\
1-\\05]s[\\0A\\0B](glob|who are you\\\$|query data)\" }\r\
\n:if ([:len [find name=uucp]] > 0) do={ :put \"already have uucp\" } else\
={ add name=uucp regexp=\"^\\10here=\" }\r\
\n:if ([:len [find name=pcanywhere]] > 0) do={ :put \"already have pcanywh\
ere\" } else={ add name=pcanywhere regexp=\"^(nq|st)\\\$\" }\r\
\n:if ([:len [find name=subversion]] > 0) do={ :put \"already have subvers\
ion\" } else={ add name=subversion regexp=\"^\\\\( success \\\\( 1 2 \\\\(\
\" }\r\
\n:if ([:len [find name=imesh]] > 0) do={ :put \"already have imesh\" } el\
se={ add name=imesh regexp=\"^(post[\\09-\\0D -~]*<PasswordHash>..........\
......................</PasswordHash><ClientVer>|\\34\\80\\\?\\0D\\\?\\FC\
\\FF\\04|get[\\09-\\0D -~]*Host: imsh\\\\.download-prod\\\\.musicnet\\\\.c\
om|\\02(\\01|\\02)\\83.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\
\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?.\\\?\
.\\\?.\\\?.\\\?\\02(\\01|\\02)\\83)\" }\r\
\n:if ([:len [find name=cimd]] > 0) do={ :put \"already have cimd\" } else\
={ add name=cimd regexp=\"\\02[0-4][0-9]:[0-9]+.*\\03\\\$\" }\r\
\n:if ([:len [find name=mohaa]] > 0) do={ :put \"already have mohaa\" } el\
se={ add name=mohaa regexp=\"^\\FF\\FF\\FF\\FFgetstatus\\0A\" }\r\
\n:if ([:len [find name=stun]] > 0) do={ :put \"already have stun\" } else\
={ add name=stun regexp=\"^[\\01\\02]................\\\?\\\$\" }\r\
\n:if ([:len [find name=tor]] > 0) do={ :put \"already have tor\" } else={\
\_add name=tor regexp=\"TOR1.*<identity>\" }\r\
\n:if ([:len [find name=radmin]] > 0) do={ :put \"already have radmin\" } \
else={ add name=radmin regexp=\"^\\01\\01(\\08\\08|\\1B\\1B)\\\$\" }\r\
\n:if ([:len [find name=unset]] > 0) do={ :put \"already have unset\" } el\
se={ add name=unset regexp=\".\" }\r\
\n:if ([:len [find name=chikka]] > 0) do={ :put \"already have chikka\" } \
else={ add name=chikka regexp=\"^CTPv1.[123] Kamusta.*\\0D\\0A\\\$\" }\r\
\n:if ([:len [find name=replaytv-ivs]] > 0) do={ :put \"already have repla\
ytv-ivs\" } else={ add name=replaytv-ivs regexp=\"^(get /ivs-IVSGetFileChu\
nk|http/(0\\\\.9|1\\\\.0|1\\\\.1) [1-5][0-9][0-9] [\\09-\\0D -~]*\\23\\23\
\\23\\23\\23REPLAY_CHUNK_START\\23\\23\\23\\23\\23)\" }\r\
\n:if ([:len [find name=armagetron]] > 0) do={ :put \"already have armaget\
ron\" } else={ add name=armagetron regexp=\"YCLC_E|CYEL\" }"
routeros L7 脚本
最新推荐文章于 2025-03-13 15:15:26 发布