From 6cb255950b41ad8d2e35b9b0e691d31c9c0319ac Mon Sep 17 00:00:00 2001 From: Imre Kristoffer Eilertsen Date: Sat, 31 Aug 2019 11:46:30 +0200 Subject: [PATCH] A pretty experimental test of ":-abp-properties" --- .../AdawayHosts | 4 +++- .../DandelionSproutsNorskeFiltre.tpl | 13 ++++++++----- .../LittleSnitchNorwegianList.lsrules | 2 ++ .../NordicFiltersABP.txt | 18 ++++++++++++------ .../NordicFiltersAdGuard.txt | 17 +++++++++++------ .../NordicFiltersDnsmasq.conf | 2 ++ .../NordicFiltersHostsDeny.deny | 4 +++- .../NordicFiltersPrivacy.txt | 17 +++++++++++------ .../NordicFiltersPrivoxy.action | 9 ++++++--- .../XYZPrepareFilters.py | 14 +++++++++++++- 10 files changed, 71 insertions(+), 29 deletions(-) diff --git a/NorwegianExperimentalList alternate versions/AdawayHosts b/NorwegianExperimentalList alternate versions/AdawayHosts index f9a51326e..536c58b4c 100644 --- a/NorwegianExperimentalList alternate versions/AdawayHosts +++ b/NorwegianExperimentalList alternate versions/AdawayHosts @@ -1,6 +1,6 @@ # Title: Dandelion Sprouts nordiske filtre («hosts»-versjonen) # Translated title: Dandelion Sprout's Nordic Filters (The «hosts» file version) -# Version: 18August2019v1 +# Version: 27August2019v2 # Description: This is a slimmer version of "Dandelion Sprout's Nordic Filters", intended for users of software tools that doesn't support adblocker syntaxes. It chiefly targets scams and malware on Norwegian or Danish sites, as well as some advert and tracking servers. # Platform notes: This list version is intended for tools that deal with so-called «hosts» system files, including Blokada, DNS66, Gas Mask, Diversion, and many others; as well as those who edit their OS' «hosts» system file. # For mere informasjon og detaljer om denne listen og om andre lister jeg har laget, gå til https://github.com/DandelionSprout/adfilt/blob/master/Wiki/General-info.md#norsk @@ -202,4 +202,6 @@ 127.0.0.1 track.adform.net 127.0.0.1 delivered-by-madington.com 127.0.0.1 media.sonymusic.no +127.0.0.1 vevlysingar.fo +127.0.0.1 boligkanalen-maestro-new.azurewebsites.net diff --git a/NorwegianExperimentalList alternate versions/DandelionSproutsNorskeFiltre.tpl b/NorwegianExperimentalList alternate versions/DandelionSproutsNorskeFiltre.tpl index 6f3ab6eef..86c28f430 100644 --- a/NorwegianExperimentalList alternate versions/DandelionSproutsNorskeFiltre.tpl +++ b/NorwegianExperimentalList alternate versions/DandelionSproutsNorskeFiltre.tpl @@ -1,6 +1,6 @@ msFilterList -# Version: 27August2019v1-Beta -# Version: 270820191 (for Adblock Plus' issue report system) +# Version: 31August2019v1-Beta +# Version: 310820191 (for Adblock Plus' issue report system) # Title: 🏔️ Dandelion Sprouts nordiske filtre for ryddigere nettsider # Translated title: Dandelion Sprout's Nordic filters for tidier websites # expires = 1 @@ -17,8 +17,6 @@ msFilterList - oasfile -+d api.instagram.com - @@ -101,6 +99,8 @@ msFilterList -d banner.landbrugsavisen.dk reklame.aspx -d gratisxxx.no -d svonm.com hd-main.js +-d vevlysingar.fo +-d boligkanalen-maestro-new.azurewebsites.net - *-annonse-* - -bazaar- - bazaar * @@ -148,9 +148,12 @@ msFilterList # 🇳🇴: Fikser videoavspillerene på nettstedene til norske fotballklubber når man bruker «uBlock Filters - Unbreak» # 🇬🇧: Fixes video players on Norwegian football club sites when using "uBlock Filters - Unbreak" -# 🇩🇰: Gør det muligt igen at scrolle når "I Don't Care About Cookies" er benyttet +# 🇩🇰: Gør det muligt igen at scrolle når «I Don't Care About Cookies» er benyttet # 🇬🇧: Re-enables scrolling when using "I Don't Care About Cookies" -d scripts.tv2a.dk oil +# 🇬🇧: Unbreaks significant content breakage when using "Fanboy's Social Blocking List", if I recall correctly + ++d api.instagram.com # 🇬🇧: A(n incomplete) category for anti-anti-adblocking, in the event that https: forums.lanik.us viewtopic.php?f=23&t=42273 were to specifically mention such entries as a reason to be denied EasyList affiliation or native ABP inclusion, in which case they'd be moved to the extension file +d bondebladet.screen9.tv diff --git a/NorwegianExperimentalList alternate versions/LittleSnitchNorwegianList.lsrules b/NorwegianExperimentalList alternate versions/LittleSnitchNorwegianList.lsrules index 50f801fc3..2da68f1f2 100644 --- a/NorwegianExperimentalList alternate versions/LittleSnitchNorwegianList.lsrules +++ b/NorwegianExperimentalList alternate versions/LittleSnitchNorwegianList.lsrules @@ -198,4 +198,6 @@ { "action": "deny", "process": "any", "remote-hosts": "track.adform.net" }, { "action": "deny", "process": "any", "remote-hosts": "delivered-by-madington.com" }, { "action": "deny", "process": "any", "remote-hosts": "media.sonymusic.no" }, +{ "action": "deny", "process": "any", "remote-hosts": "vevlysingar.fo +{ "action": "deny", "process": "any", "remote-hosts": "boligkanalen-maestro-new.azurewebsites.net" }, diff --git a/NorwegianExperimentalList alternate versions/NordicFiltersABP.txt b/NorwegianExperimentalList alternate versions/NordicFiltersABP.txt index 3763a6ec0..67e7c1586 100644 --- a/NorwegianExperimentalList alternate versions/NordicFiltersABP.txt +++ b/NorwegianExperimentalList alternate versions/NordicFiltersABP.txt @@ -1,6 +1,6 @@ [Adblock Plus 3.2] -! Version: 27August2019v1 -! Version: 270820191 (for Adblock Plus' issue report system) +! Version: 31August2019v1 +! Version: 310820191 (for Adblock Plus' issue report system) ! Title: 🏔️ Dandelion Sprouts nordiske filtre for ryddigere nettsider (for AdBlock og Adblock Plus) ! Translated title: Dandelion Sprout's Nordic filters for tidier websites (for AdBlock and Adblock Plus) ! Expires: 12 hours @@ -55,9 +55,7 @@ ##div[data-contenttype="ad"] ##optimus-element[id^="art-bazaarAd-"][version="default"] .oasfile -@@/images/*youtube.jpg$domain=realityportalen.dk @@||5e529.v.fwmrm.net/ad/$script,domain=dplay.no|dplay.dk -@@||api.instagram.com^$domain=www.samiteahter.org @@||fagbladetjournalen.no/*/300x250_ @@||seher.no/reise$generichide bt.dk##.hidden-md-down.col-xl-12 @@ -208,6 +206,7 @@ tvkampen.com,tvsporten.dk##a[href*="tradedoubler.com"] /linktag2.js,script,domain=viafree.no|viafree.dk /viewability.,script,domain=gamereactor.no|gamereactor.dk ||avod-fw-config.mtg-api.com^,xmlhttprequest,domain=viafree.no|viafree.dk +dagbladet.no#?#div[class^="css"]:-abp-properties(content: "Annonse") ||acdn.adnxs.com/ast/ast.js$script,domain=vg.no @@||tv2.no/*/config/analytics.json$xmlhttprequest,1p ||ssl.p.jwpcdn.com^*/jwpsrv.js,script,domain=vg.no @@ -280,6 +279,8 @@ trening.no##.cp-slidein-body tvkampen.com,tvsporten.dk##a.p-icon.partner vartoslo.no#?#.vc_column-inner:-abp-has(.vo-annonse):not(:-abp-has(div[class^="td_module_"])):not(:-abp-has(#sb_instagram)) xstra.no##.td-fix-index +jn.fo###the_banners +byggebolig.no##.maestro-resize ##.native-advertisement ##.content-adunit ##.sponset-innlegg @@ -318,6 +319,8 @@ xstra.no##.td-fix-index ||vikari.is/skjol/frjalsi-lif*.png$image ||banner.landbrugsavisen.dk/reklame.aspx$subdocument ||gratisxxx.no$image,domain=nakenprat.com +||vevlysingar.fo$subdocument,third-party +||boligkanalen-maestro-new.azurewebsites.net$image /*-annonse-*$image,domain=resett.no -bazaar-$script,domain=nettavisen.no /bazaar/*$script,domain=nettavisen.no @@ -565,14 +568,17 @@ avvir.no###block-block-1 > p:nth-of-type(4) ! 🇬🇧: Unbreakage nettavisen.no###topover-loader gamer.no#@#iframe[width="300"][height="250"] -krom.is#@#.share-container pensjonistferie.no#@##adsense ! 🇳🇴: Fikser videoavspillerene på nettstedene til norske fotballklubber når man bruker «uBlock Filters - Unbreak» ! 🇬🇧: Fixes video players on Norwegian football club sites when using "uBlock Filters - Unbreak" @@||play2.qbrick.com/framework/modules/analytics/analytics.min.js$script -! 🇩🇰: Gør det muligt igen at scrolle når "I Don't Care About Cookies" er benyttet +! 🇩🇰: Gør det muligt igen at scrolle når «I Don't Care About Cookies» er benyttet ! 🇬🇧: Re-enables scrolling when using "I Don't Care About Cookies" ||scripts.tv2a.dk/oil/ +! 🇬🇧: Unbreaks significant content breakage when using "Fanboy's Social Blocking List", if I recall correctly +krom.is#@#.share-container +@@/images/*youtube.jpg$domain=realityportalen.dk +@@||api.instagram.com^$domain=www.samiteahter.org ! 🇬🇧: A(n incomplete) category for anti-anti-adblocking, in the event that https://forums.lanik.us/viewtopic.php?f=23&t=42273 were to specifically mention such entries as a reason to be denied EasyList affiliation or native ABP inclusion, in which case they'd be moved to the extension file @@||bondebladet.screen9.tv^$generichide diff --git a/NorwegianExperimentalList alternate versions/NordicFiltersAdGuard.txt b/NorwegianExperimentalList alternate versions/NordicFiltersAdGuard.txt index 002513aa6..db6415c04 100644 --- a/NorwegianExperimentalList alternate versions/NordicFiltersAdGuard.txt +++ b/NorwegianExperimentalList alternate versions/NordicFiltersAdGuard.txt @@ -1,5 +1,5 @@ [AdGuard ≥6] -! Version: 27August2019v1 +! Version: 31August2019v1 ! Title: 🏔️ Dandelion Sprouts nordiske filtre for ryddigere nettsider (for AdGuard) ! Translated title: Dandelion Sprout's Nordic filters for tidier websites (for AdGuard) @@ -55,9 +55,7 @@ ##div[data-contenttype="ad"] ##optimus-element[id^="art-bazaarAd-"][version="default"] .oasfile -@@/images/*youtube.jpg$domain=realityportalen.dk @@||5e529.v.fwmrm.net/ad/$script,domain=dplay.no|dplay.dk -@@||api.instagram.com^$domain=www.samiteahter.org @@||fagbladetjournalen.no/*/300x250_ @@||seher.no/reise$generichide bt.dk##.hidden-md-down.col-xl-12 @@ -260,7 +258,7 @@ dagen.no##.paywall-body-description:style(-webkit-text-fill-color: black !import dn.no###googlead-toppbanner:style(min-height: 0 !important) vgtv.no##.page-container:style(margin-top: 0px !important) sol.no##:xpath(//div[starts-with(@id, "ad-topbanner-only0")]/../..) -dagbladet.no##div[class^="css"]:matches-css-before(content: "Annonse") +dagbladet.no#?#div[class^="css"]:matches-css-before(content: "Annonse") ||acdn.adnxs.com/ast/ast.js$script,important,domain=vg.no ||acdn.adnxs.com/ast/ast.js$script,redirect=noopjs,important,domain=vgtv.no @@||tv2.no/*/config/analytics.json$xmlhttprequest,~third-party @@ -339,6 +337,8 @@ tv2.no##+js(golem.de.js) tvkampen.com,tvsporten.dk##a.p-icon.partner vartoslo.no#?#.vc_column-inner:-abp-has(.vo-annonse):not(:-abp-has(div[class^="td_module_"])):not(:-abp-has(#sb_instagram)) xstra.no##.td-fix-index +jn.fo###the_banners +byggebolig.no##.maestro-resize ##.native-advertisement ##.content-adunit ##.sponset-innlegg @@ -378,6 +378,8 @@ xstra.no##.td-fix-index ||banner.landbrugsavisen.dk/reklame.aspx$subdocument ||gratisxxx.no$image,domain=nakenprat.com ||svonm.com/hd-main.js$script,redirect=hd-main.js,domain=tv2.no +||vevlysingar.fo$subdocument,third-party +||boligkanalen-maestro-new.azurewebsites.net$image /*-annonse-*$image,domain=resett.no -bazaar-$script,domain=nettavisen.no /bazaar/*$script,domain=nettavisen.no @@ -627,14 +629,17 @@ avvir.no###block-block-1 > p:nth-of-type(4) nettavisen.no###topover-loader nettavisen.no##body.no-scroll:style(overflow: auto !important) gamer.no#@#iframe[width="300"][height="250"] -krom.is#@#.share-container pensjonistferie.no#@##adsense ! 🇳🇴: Fikser videoavspillerene på nettstedene til norske fotballklubber når man bruker «uBlock Filters - Unbreak» ! 🇬🇧: Fixes video players on Norwegian football club sites when using "uBlock Filters - Unbreak" @@||play2.qbrick.com/framework/modules/analytics/analytics.min.js$script -! 🇩🇰: Gør det muligt igen at scrolle når "I Don't Care About Cookies" er benyttet +! 🇩🇰: Gør det muligt igen at scrolle når «I Don't Care About Cookies» er benyttet ! 🇬🇧: Re-enables scrolling when using "I Don't Care About Cookies" ||scripts.tv2a.dk/oil/ +! 🇬🇧: Unbreaks significant content breakage when using "Fanboy's Social Blocking List", if I recall correctly +krom.is#@#.share-container +@@/images/*youtube.jpg$domain=realityportalen.dk +@@||api.instagram.com^$domain=www.samiteahter.org ! 🇬🇧: A(n incomplete) category for anti-anti-adblocking, in the event that https://forums.lanik.us/viewtopic.php?f=23&t=42273 were to specifically mention such entries as a reason to be denied EasyList affiliation or native ABP inclusion, in which case they'd be moved to the extension file @@||bondebladet.screen9.tv^$generichide diff --git a/NorwegianExperimentalList alternate versions/NordicFiltersDnsmasq.conf b/NorwegianExperimentalList alternate versions/NordicFiltersDnsmasq.conf index 401a032b4..cd023e606 100644 --- a/NorwegianExperimentalList alternate versions/NordicFiltersDnsmasq.conf +++ b/NorwegianExperimentalList alternate versions/NordicFiltersDnsmasq.conf @@ -195,4 +195,6 @@ address=/prisjakt.org/127.0.0.1 address=/track.adform.net/127.0.0.1 address=/delivered-by-madington.com/127.0.0.1 address=/media.sonymusic.no/127.0.0.1 +address=/vevlysingar.fo +address=/boligkanalen-maestro-new.azurewebsites.net/127.0.0.1 diff --git a/NorwegianExperimentalList alternate versions/NordicFiltersHostsDeny.deny b/NorwegianExperimentalList alternate versions/NordicFiltersHostsDeny.deny index a0e14ab7c..9c62f31b0 100644 --- a/NorwegianExperimentalList alternate versions/NordicFiltersHostsDeny.deny +++ b/NorwegianExperimentalList alternate versions/NordicFiltersHostsDeny.deny @@ -1,6 +1,6 @@ # Title: 📔 Dandelion Sprouts nordiske filtre («hosts.deny»-versjonen) # Translated title: Dandelion Sprout's Nordic Filters (The «hosts.deny» version) -# Version: 18August2019v1-Beta +# Version: 27August2019v2-Beta # Description: This is a slimmer version of "Dandelion Sprout's Nordic Filters", intended for users of software tools that doesn't support adblocker syntaxes. It chiefly targets scams and malware on Norwegian or Danish sites, as well as some advert and tracking servers. # Platform notes: This list version is intended for those who still use a Linux system function called «hosts.deny». # For mere informasjon og detaljer om denne listen og om andre lister jeg har laget, gå til https://github.com/DandelionSprout/adfilt/blob/master/Wiki/General-info.md#norsk @@ -202,4 +202,6 @@ ALL: prisjakt.org ALL: track.adform.net ALL: delivered-by-madington.com ALL: media.sonymusic.no +ALL: vevlysingar.fo +ALL: boligkanalen-maestro-new.azurewebsites.net diff --git a/NorwegianExperimentalList alternate versions/NordicFiltersPrivacy.txt b/NorwegianExperimentalList alternate versions/NordicFiltersPrivacy.txt index 664cdd12a..3ccdf5196 100644 --- a/NorwegianExperimentalList alternate versions/NordicFiltersPrivacy.txt +++ b/NorwegianExperimentalList alternate versions/NordicFiltersPrivacy.txt @@ -1,5 +1,5 @@ -! Version: 27August2019v1 +! Version: 31August2019v1 ! Title: 🏔️ Dandelion Sprouts nordiske filtre for ryddigere nettsider (uten sporerhvitelisting) ! Translated title: Dandelion Sprout's Nordic filters for tidier websites (without tracker whitelistings) @@ -55,9 +55,7 @@ ##div[data-contenttype="ad"] ##optimus-element[id^="art-bazaarAd-"][version="default"] .oasfile -@@/images/*youtube.jpg$domain=realityportalen.dk @@||5e529.v.fwmrm.net/ad/$script,domain=dplay.no|dplay.dk -@@||api.instagram.com^$domain=www.samiteahter.org @@||fagbladetjournalen.no/*/300x250_ @@||seher.no/reise$generichide bt.dk##.hidden-md-down.col-xl-12 @@ -260,7 +258,7 @@ dagen.no##.paywall-body-description:style(-webkit-text-fill-color: black !import dn.no###googlead-toppbanner:style(min-height: 0 !important) vgtv.no##.page-container:style(margin-top: 0px !important) sol.no##:xpath(//div[starts-with(@id, "ad-topbanner-only0")]/../..) -dagbladet.no##div[class^="css"]:matches-css-before(content: "Annonse") +dagbladet.no#?#div[class^="css"]:matches-css-before(content: "Annonse") ||acdn.adnxs.com/ast/ast.js$script,important,domain=vg.no ||acdn.adnxs.com/ast/ast.js$script,redirect=noopjs,important,domain=vgtv.no @@ -339,6 +337,8 @@ tv2.no##+js(golem.de.js) tvkampen.com,tvsporten.dk##a.p-icon.partner vartoslo.no#?#.vc_column-inner:-abp-has(.vo-annonse):not(:-abp-has(div[class^="td_module_"])):not(:-abp-has(#sb_instagram)) xstra.no##.td-fix-index +jn.fo###the_banners +byggebolig.no##.maestro-resize ##.native-advertisement ##.content-adunit ##.sponset-innlegg @@ -378,6 +378,8 @@ xstra.no##.td-fix-index ||banner.landbrugsavisen.dk/reklame.aspx$subdocument ||gratisxxx.no$image,domain=nakenprat.com ||svonm.com/hd-main.js$script,redirect=hd-main.js,domain=tv2.no +||vevlysingar.fo$subdocument,3p +||boligkanalen-maestro-new.azurewebsites.net$image /*-annonse-*$image,domain=resett.no -bazaar-$script,domain=nettavisen.no /bazaar/*$script,domain=nettavisen.no @@ -627,14 +629,17 @@ avvir.no###block-block-1 > p:nth-of-type(4) nettavisen.no###topover-loader nettavisen.no##body.no-scroll:style(overflow: auto !important) gamer.no#@#iframe[width="300"][height="250"] -krom.is#@#.share-container pensjonistferie.no#@##adsense ! 🇳🇴: Fikser videoavspillerene på nettstedene til norske fotballklubber når man bruker «uBlock Filters - Unbreak» ! 🇬🇧: Fixes video players on Norwegian football club sites when using "uBlock Filters - Unbreak" -! 🇩🇰: Gør det muligt igen at scrolle når "I Don't Care About Cookies" er benyttet +! 🇩🇰: Gør det muligt igen at scrolle når «I Don't Care About Cookies» er benyttet ! 🇬🇧: Re-enables scrolling when using "I Don't Care About Cookies" ||scripts.tv2a.dk/oil/ +! 🇬🇧: Unbreaks significant content breakage when using "Fanboy's Social Blocking List", if I recall correctly +krom.is#@#.share-container +@@/images/*youtube.jpg$domain=realityportalen.dk +@@||api.instagram.com^$domain=www.samiteahter.org ! 🇬🇧: A(n incomplete) category for anti-anti-adblocking, in the event that https://forums.lanik.us/viewtopic.php?f=23&t=42273 were to specifically mention such entries as a reason to be denied EasyList affiliation or native ABP inclusion, in which case they'd be moved to the extension file @@||bondebladet.screen9.tv^$generichide diff --git a/NorwegianExperimentalList alternate versions/NordicFiltersPrivoxy.action b/NorwegianExperimentalList alternate versions/NordicFiltersPrivoxy.action index e9cdd99f6..192c0ba77 100644 --- a/NorwegianExperimentalList alternate versions/NordicFiltersPrivoxy.action +++ b/NorwegianExperimentalList alternate versions/NordicFiltersPrivoxy.action @@ -1,6 +1,6 @@ {+block} -# Version: 27August2019v1-Alpha -# Version: 270820191 (for Adblock Plus' issue report system) +# Version: 31August2019v1-Alpha +# Version: 310820191 (for Adblock Plus' issue report system) # Title: 🏔️ Dandelion Sprouts nordiske filtre for ryddigere nettsider (for Privoxy) # Translated title: Dandelion Sprout's Nordic filters for tidier websites (for Privoxy) # Expires: 12 hours @@ -90,6 +90,8 @@ .banner.landbrugsavisen.dk/reklame.aspx .gratisxxx.no .svonm.com/hd-main.js +.vevlysingar.fo +.boligkanalen-maestro-new.azurewebsites.net /*-annonse-* -bazaar- /bazaar/* @@ -136,9 +138,10 @@ {+block{Unbreakage}} # 🇳🇴: Fikser videoavspillerene på nettstedene til norske fotballklubber når man bruker «uBlock Filters - Unbreak» {+block{Fixes video players on Norwegian football club sites when using "uBlock Filters - Unbreak"}} -# 🇩🇰: Gør det muligt igen at scrolle når "I Don't Care About Cookies" er benyttet +# 🇩🇰: Gør det muligt igen at scrolle når «I Don't Care About Cookies» er benyttet {+block{Re-enables scrolling when using "I Don't Care About Cookies"}} .scripts.tv2a.dk/oil/ +{+block{Unbreaks significant content breakage when using "Fanboy's Social Blocking List", if I recall correctly}} # {+block{A(n incomplete) category for anti-anti-adblocking, in the event that https://forums.lanik.us/viewtopic.php?f=23&t=42273 were to specifically mention such entries as a reason to be denied EasyList affiliation or native ABP inclusion, in which case they'd be moved to the extension file}} .elderlyscissors.com diff --git a/NorwegianExperimentalList alternate versions/XYZPrepareFilters.py b/NorwegianExperimentalList alternate versions/XYZPrepareFilters.py index f1370e123..28ce0ec1b 100644 --- a/NorwegianExperimentalList alternate versions/XYZPrepareFilters.py +++ b/NorwegianExperimentalList alternate versions/XYZPrepareFilters.py @@ -4,7 +4,7 @@ import re SOURCES = ['https://gitlab.com/DandelionSprout/adfilt/raw/master/NorwegianList.txt'] UNSUPPORTED_ABP = ['$important', ',important' '$redirect=', ',redirect=', - ':style', '##+js', '.*#' , ':xpath', ':matches-css', 'dk,no##'] + ':style', '##+js', '.*#' , ':xpath', 'dk,no##'] UNSUPPORTED_TPL = ['##', '#@#', '#?#', r'\.no\.$'] UNSUPPORTED_PRIVOXY = ['##', '#@#', '#?#', '@@', '!#'] @@ -153,6 +153,18 @@ def prepare_abp(lines) -> str: line ) + line = re.sub( + ":matches-css-before\(", + ":-abp-properties(", + line + ) + + line = re.sub( + ":matches-css\(", + ":-abp-properties(", + line + ) + if is_supported_abp(line): text += line + '\r\n'