Compare commits

...

11 Commits

Author SHA1 Message Date
Maxim Lebedev 171ac40914
Merge branch 'feature/form' into develop
/ docker (push) Successful in 1m3s Details
2023-12-14 01:08:03 +06:00
Maxim Lebedev fb583c10af
💄 Always display name 2023-12-14 01:08:00 +06:00
Maxim Lebedev 774823375a
♻️ Some improvements for form 2023-12-14 01:06:25 +06:00
Maxim Lebedev fbbca6cf3b
🌐 Updated locale strings 2023-12-14 00:02:27 +06:00
Maxim Lebedev c31865788e
🍱 Added script 2023-12-14 00:01:52 +06:00
Maxim Lebedev 2d104d1351
🍱 Updated form styles 2023-12-14 00:01:51 +06:00
Maxim Lebedev 959a0a2936
💄 Improved interactive form in layout 2023-12-14 00:01:06 +06:00
Maxim Lebedev 83402fac50
🌐 Updated locales strings 2023-12-13 18:17:37 +06:00
Maxim Lebedev df954d50fb
💄 Added visually-hidden class 2023-12-13 18:16:42 +06:00
Maxim Lebedev 1960ca5c1a
🍱 Created simple form sentence 2023-12-13 18:16:11 +06:00
Maxim Lebedev 7676efd379
🔥 Removed already reverted button style properties 2023-12-13 16:15:25 +06:00
9 changed files with 956 additions and 429 deletions

View File

@ -25,7 +25,7 @@
"placeholders": [
{
"id": "Amount__100",
"string": "%[1].2f",
"string": "%.2[1]f",
"type": "float64",
"underlyingType": "float64",
"argNum": 1,
@ -41,6 +41,62 @@
}
],
"fuzzy": true
},
{
"id": "Donate",
"message": "Donate",
"translation": "Donate",
"translatorComment": "Copied from source.",
"fuzzy": true
},
{
"id": "dollar amount",
"message": "dollar amount",
"translation": "dollar amount",
"translatorComment": "Copied from source.",
"fuzzy": true
},
{
"id": "contribution frequency",
"message": "contribution frequency",
"translation": "contribution frequency",
"translatorComment": "Copied from source.",
"fuzzy": true
},
{
"id": "one time",
"message": "one time",
"translation": "one time",
"translatorComment": "Copied from source.",
"fuzzy": true
},
{
"id": "weekly",
"message": "weekly",
"translation": "weekly",
"translatorComment": "Copied from source.",
"fuzzy": true
},
{
"id": "monthly",
"message": "monthly",
"translation": "monthly",
"translatorComment": "Copied from source.",
"fuzzy": true
},
{
"id": "annually",
"message": "annually",
"translation": "annually",
"translatorComment": "Copied from source.",
"fuzzy": true
},
{
"id": "from Russia",
"message": "from Russia",
"translation": "from Russia",
"translatorComment": "Copied from source.",
"fuzzy": true
}
]
}
}

View File

@ -26,8 +26,8 @@
{
"id": "Amount__100",
"string": "%.2[1]f",
"type": "float64",
"underlyingType": "float64",
"type": "uint64",
"underlyingType": "uint64",
"argNum": 1,
"expr": "ctx.amount / 100"
},
@ -41,6 +41,62 @@
}
],
"fuzzy": true
},
{
"id": "Donate",
"message": "Donate",
"translation": "Donate",
"translatorComment": "Copied from source.",
"fuzzy": true
},
{
"id": "dollar amount",
"message": "dollar amount",
"translation": "dollar amount",
"translatorComment": "Copied from source.",
"fuzzy": true
},
{
"id": "contribution frequency",
"message": "contribution frequency",
"translation": "contribution frequency",
"translatorComment": "Copied from source.",
"fuzzy": true
},
{
"id": "one time",
"message": "one time",
"translation": "one time",
"translatorComment": "Copied from source.",
"fuzzy": true
},
{
"id": "weekly",
"message": "weekly",
"translation": "weekly",
"translatorComment": "Copied from source.",
"fuzzy": true
},
{
"id": "monthly",
"message": "monthly",
"translation": "monthly",
"translatorComment": "Copied from source.",
"fuzzy": true
},
{
"id": "annually",
"message": "annually",
"translation": "annually",
"translatorComment": "Copied from source.",
"fuzzy": true
},
{
"id": "from Russia",
"message": "from Russia",
"translation": "from Russia",
"translatorComment": "Copied from source.",
"fuzzy": true
}
]
}

View File

@ -24,7 +24,7 @@
"placeholders": [
{
"id": "Amount__100",
"string": "%[1].2f",
"string": "%.2[1]f",
"type": "float64",
"underlyingType": "float64",
"argNum": 1,
@ -39,6 +39,46 @@
"expr": "\"toby3d\""
}
]
},
{
"id": "Donate",
"message": "Donate",
"translation": "Пожертвовать"
},
{
"id": "dollar amount",
"message": "dollar amount",
"translation": "сумма в долларах"
},
{
"id": "contribution frequency",
"message": "contribution frequency",
"translation": "частота взносов"
},
{
"id": "one time",
"message": "one time",
"translation": "единоразово"
},
{
"id": "weekly",
"message": "weekly",
"translation": "еженедельно"
},
{
"id": "monthly",
"message": "monthly",
"translation": "ежемесячно"
},
{
"id": "annually",
"message": "annually",
"translation": "ежегодно"
},
{
"id": "from Russia",
"message": "from Russia",
"translation": "из России"
}
]
}
}

View File

@ -25,8 +25,8 @@
{
"id": "Amount__100",
"string": "%.2[1]f",
"type": "float64",
"underlyingType": "float64",
"type": "uint64",
"underlyingType": "uint64",
"argNum": 1,
"expr": "ctx.amount / 100"
},
@ -39,6 +39,46 @@
"expr": "\"toby3d\""
}
]
},
{
"id": "Donate",
"message": "Donate",
"translation": "Пожертвовать"
},
{
"id": "dollar amount",
"message": "dollar amount",
"translation": "сумма в долларах"
},
{
"id": "contribution frequency",
"message": "contribution frequency",
"translation": "частота взносов"
},
{
"id": "one time",
"message": "one time",
"translation": "единоразово"
},
{
"id": "weekly",
"message": "weekly",
"translation": "еженедельно"
},
{
"id": "monthly",
"message": "monthly",
"translation": "ежемесячно"
},
{
"id": "annually",
"message": "annually",
"translation": "ежегодно"
},
{
"id": "from Russia",
"message": "from Russia",
"translation": "из России"
}
]
}

View File

@ -39,23 +39,39 @@ func init() {
}
var messageKeyToIndex = map[string]int{
"Donate $%.2f to %s": 0,
"Donate": 1,
"Donate $%.2f to %s": 0,
"annually": 7,
"contribution frequency": 3,
"dollar amount": 2,
"from Russia": 8,
"monthly": 6,
"one time": 4,
"weekly": 5,
}
var enIndex = []uint32{ // 2 elements
0x00000000, 0x00000053,
} // Size: 32 bytes
var enIndex = []uint32{ // 10 elements
0x00000000, 0x00000053, 0x0000005a, 0x00000068,
0x0000007f, 0x00000088, 0x0000008f, 0x00000097,
0x000000a0, 0x000000ac,
} // Size: 64 bytes
const enData string = "" + // Size: 83 bytes
const enData string = "" + // Size: 172 bytes
"\x14\x01\x81\x01\x02=\x00\x10\x02Donate to %[2]s=\x01\x1d\x02Donate oned" +
"ollar™ to %[2]s\x00\x19\x02Donate $%.2[1]f to %[2]s"
"ollar™ to %[2]s\x00\x19\x02Donate $%.2[1]f to %[2]s\x02Donate\x02dollar " +
"amount\x02contribution frequency\x02one time\x02weekly\x02monthly\x02ann" +
"ually\x02from Russia"
var ruIndex = []uint32{ // 2 elements
0x00000000, 0x00000081,
} // Size: 32 bytes
var ruIndex = []uint32{ // 10 elements
0x00000000, 0x00000081, 0x0000009a, 0x000000b9,
0x000000d7, 0x000000ee, 0x00000105, 0x0000011a,
0x0000012b, 0x0000013d,
} // Size: 64 bytes
const ruData string = "" + // Size: 129 bytes
const ruData string = "" + // Size: 317 bytes
"\x14\x01\x81\x01\x02=\x00\x1f\x02Пожертвовать %[2]s=\x01-\x02Пожертвоват" +
"ь долор™ %[2]s\x00(\x02Пожертвовать $%.2[1]f %[2]s"
"ь долор™ %[2]s\x00(\x02Пожертвовать $%.2[1]f %[2]s\x02Пожертвовать\x02с" +
"умма в долларах\x02частота взносов\x02единоразово\x02еженедельно\x02еже" +
"месячно\x02ежегодно\x02из России"
// Total table size 276 bytes (0KiB); checksum: 3BFB37FB
// Total table size 617 bytes (0KiB); checksum: 21DFB24C

86
web/static/scripts.js Normal file
View File

@ -0,0 +1,86 @@
const amount = document.querySelector('input[name="amount" i]');
const period = document.querySelector('select[name="period" i]');
const inRussia = document.querySelector('input[name="inRussia" i]');
const buttons = document.querySelectorAll('.js-button');
let form = {
amount: 0.00,
period: 0,
inRussia: false,
};
amount?.addEventListener('input', (el) => {
if (!el.target.checkValidity()) {
return
}
let value = +el.target.value;
if (value < 0) {
value = 0;
}
form.amount = value * 100;
updateButtons();
});
period.addEventListener('change', (el) => {
form.period = +el.target.value;
updateButtons();
});
inRussia.addEventListener('change', (el) => {
form.inRussia = el.target.checked;
updateButtons();
});
async function updateButtons() {
buttons.forEach(el => {
let inAmount = (!el.dataset.amountMin || el.dataset.amountMin <= form.amount) &&
(!el.dataset.amountMax || form.amount <= +el.dataset.amountMax);
let inPeriod = (!el.dataset.periodMin || +el.dataset.periodMin <= form.period) &&
(!el.dataset.periodMax || form.period <= +el.dataset.periodMax);
let inRegion = Boolean(el.dataset.inRussia) == form.inRussia;
if (form.amount == 0.0 || inAmount && inPeriod && inRegion) {
el.href = el.dataset.pattern.
replace('%f', form.amount / 100).
replace('%d', form.amount).
replace('%p', getPeriodString(form.period));
} else if (el.hasAttribute('href')) {
el.removeAttribute('href');
}
});
}
function getPeriodString(period) {
switch (period) {
default:
return 'weekly';
case 7:
return 'weekly';
case 30:
return 'monthly';
case 365:
return 'yearly';
}
}
function setup() {
let value = +amount.value;
if (value < 0) {
value = 0;
}
form = {
amount: value * 100,
period: +period.value,
inRussia: inRussia.checked,
};
updateButtons();
}
setup();

View File

@ -29,6 +29,7 @@
sans-serif;
font-size: calc(1rem + 0.5vw);
line-height: var(--ratio);
color-scheme: light;
}
* {
@ -46,60 +47,66 @@ footer {
max-inline-size: none;
}
svg {
height: 1em;
width: 1em;
}
/* Input */
input,
select {
font-size: inherit;
}
/* Button */
.button,
button {
--_background: var(--background, #ccc);
--_color: var(--color, #000);
--_background: var(--background, hsl(0, 0%, 80%));
--_color: var(--color, hsl(0, 0%, 0%));
/* NOTE(toby3d): reset everything */
all: unset;
/* NOTE(toby3d): start from scratch */
-moz-appearance: none;
-webkit-appearance: none;
align-items: baseline;
appearance: none;
align-items: center;
background: var(--_background);
border-radius: 0.3125em;
border: 0;
color: var(--_color);
cursor: pointer;
display: inline-flex;
font-family: inherit;
font-size: 1rem;
justify-content: center;
list-style: 1.1;
min-width: 6.25em;
padding: 0.625em 1em;
text-align: center;
text-decoration: none;
}
.button[href*='liberapay.com'],
button[href*='liberapay.com'] {
--background: #f6c915;
--color: #1a171b;
--background: hsl(48, 93%, 52%);
--color: hsl(285, 8%, 10%);
}
.button[href*='paypal.me'],
button[href*='paypal.me'] {
--background: #ffd140;
--color: #001435;
--background: hsl(46, 100%, 63%);
--color: hsl(217, 100%, 10%);
}
.button[href*='yoomoney.ru'],
button[href*='yoomoney.ru'] {
--background: #8b3ffd;
--color: #fff;
--background: hsl(264, 98%, 62%);
--color: hsl(0, 0%, 100%);
}
.with-icon .icon,
.button .icon,
.button svg,
button .icon,
button svg {
height: 0.8lh;
margin-inline-end: 0.25rem;
height: 0.75em;
height: 1cap;
width: 0.75em;
width: 1cap;
width: auto;
}
/* Button behavior, see: https://bitsofco.de/when-do-the-hover-focus-and-active-pseudo-classes-apply/ */
@ -132,8 +139,8 @@ button:active {
.button:not([href]),
button[disabled] {
/* TODO(toby3d): better color mathing with good WCAG grading */
--background: #6c7589;
--color: #d2d5db;
--background: hsl(0, 0%, 60%);
--color: hsl(0, 0%, 15%);
cursor: not-allowed;
}
@ -156,6 +163,25 @@ button[disabled] svg {
justify-content: var(--_justify);
}
/* Blocks */
.visually-hidden {
clip-path: inset(100%);
clip: rect(0 0 0 0);
height: 1px;
overflow: hidden;
position: absolute;
white-space: nowrap;
width: 1px;
}
.form {
--space: 1cap;
}
.form__amount {
width: 7ch;
}
/* Utilities */
.list-style-type\:none {
list-style-type: none;
@ -164,3 +190,8 @@ button[disabled] svg {
.padding-inline-start\:unset {
padding-inline-start: unset;
}
.display\:none,
[hidden] {
display: none !important;
}

View File

@ -20,7 +20,7 @@
type Context struct {
language language.Tag
printer *message.Printer
amount float64
amount uint64
processors domain.ConfigProcessors
}
@ -28,7 +28,7 @@ func NewContext(processors domain.ConfigProcessors, lang language.Tag, amount ui
return &Context{
language: lang,
printer: message.NewPrinter(lang),
amount: float64(amount),
amount: amount,
processors: processors,
}
}
@ -52,12 +52,58 @@ func NewContext(processors domain.ConfigProcessors, lang language.Tag, amount ui
{% func (ctx Context) body() %}
<h1>{%= ctx.title() %}</h1>
<noscript>
<h1>{%= ctx.t(`Donate $%.2f to %s`, ctx.amount/100, "toby3d") %}</h1>
</noscript>
<p class="[ cluster ][ form ][ js-enabled ]" hidden>
<span>{%= ctx.t(`Donate`) %}</span>
<label class="with-icon">
<span class="icon"{% space %}
role="img"{% space %}
aria-label="{%= ctx.t(`dollar amount`) %}">
💲
</span>
<input class="form__amount"{% space %}
type="number"{% space %}
name="amount"{% space %}
value="{%dul ctx.amount / 100 %}"{% space %}
min="0"{% space %}
step="1"{% space %}
pattern="[0-9]+"{% space %}
inputmode="decimal"{% space %}
required />
</label>
<label>
<span class="visually-hidden">{%= ctx.t(`contribution frequency`) %}</span>
<select name="period">
<option value="0" selected>{%= ctx.t(`one time`) %}</option>
<option value="7">{%= ctx.t(`weekly`) %}</option>
<option value="30">{%= ctx.t(`monthly`) %}</option>
<option value="365">{%= ctx.t(`annually`) %}</option>
</select>
</label>
<label>
<input type="checkbox"{% space %}
name="inRussia"{% space %}
value="true" />
{%= ctx.t(`from Russia`) %}
</label>
</p>
<ul class="[ cluster ][ list-style-type:none padding-inline-start:unset ]">
{% if ctx.processors.Liberapay != "" %}
<li>
<a class="button"{% space %}
<a class="[ button ][ js-button ]"{% space %}
data-period-min="1"{% space %}
data-period-max="365"{% space %}
data-pattern="https://liberapay.com/{%s ctx.processors.Liberapay %}/donate?amount=%f&currency=USD&period=%p"{% space %}
rel="noopener noreferrer payment"{% space %}
href="https://liberapay.com/{%s ctx.processors.Liberapay %}/donate{% if ctx.amount > 0 %}?amount={%f.2 ctx.amount/100 %}&currency=USD&period=monthly{% endif %}">
href="https://liberapay.com/{%s ctx.processors.Liberapay %}/donate{% if ctx.amount > 0 %}?amount={%f.2 float64(ctx.amount) / 100 %}&currency=USD&period=monthly{% endif %}">
{%= icon("liberapay") %}
Liberapay
@ -66,9 +112,11 @@ func NewContext(processors domain.ConfigProcessors, lang language.Tag, amount ui
{% endif %}
{% if ctx.processors.PayPal != "" %}
<li>
<a class="button"{% space %}
<a class="[ button ][ js-button ]"{% space %}
data-period-max="1"{% space %}
data-pattern="https://www.paypal.me/{%s ctx.processors.PayPal %}/%fUSD"{% space %}
rel="noopener noreferrer payment"{% space %}
href="https://www.paypal.me/{%s ctx.processors.PayPal %}{% if ctx.amount > 0 %}/{%f.2 ctx.amount/100 %}USD{% endif %}">
href="https://www.paypal.me/{%s ctx.processors.PayPal %}{% if ctx.amount > 0 %}/{%f.2 float64(ctx.amount) / 100 %}USD{% endif %}">
{%= icon("paypal") %}
PayPal
@ -77,9 +125,14 @@ func NewContext(processors domain.ConfigProcessors, lang language.Tag, amount ui
{% endif %}
{% if ctx.processors.YooMoney != "" %}
<li>
<a class="button"{% space %}
<a class="[ button ][ js-button ]"{% space %}
data-amount-min="2"{% space %}
data-amount-max="15000"{% space %}
data-period-max="1"{% space %}
data-in-russia="true"{% space %}
data-pattern="https://yoomoney.ru/to/{%s ctx.processors.YooMoney %}/%d"{% space %}
rel="noopener noreferrer payment"{% space %}
href="https://yoomoney.ru/to/{%s ctx.processors.YooMoney %}{% if ctx.amount > 0 %}/{%dul uint64(ctx.amount) %}{% endif %}">
href="https://yoomoney.ru/to/{%s ctx.processors.YooMoney %}{% if ctx.amount > 0 %}/{%dul ctx.amount %}{% endif %}">
{%= icon("yoomoney") %}
ЮMoney
@ -108,20 +161,29 @@ func NewContext(processors domain.ConfigProcessors, lang language.Tag, amount ui
{% endfunc %}
{% func (ctx Context) title() %}
{%= ctx.t(`Donate $%.2f to %s`, ctx.amount/100, "toby3d") %}
NotDotPay
{% endfunc %}
{% func Template(p Page) %}
<!DOCTYPE html>
<html lang="{%= p.lang() %}" dir="{%= p.dir() %}">
<html lang="{%= p.lang() %}"{% space %}
dir="{%= p.dir() %}">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>{%= p.title() %}</title>
<meta name="color-scheme" content="light">
<title>NotDotPay</title>
{%= p.head() %}
</head>
<body>
{%= p.body() %}
<script async>
document.querySelectorAll('.js-enabled').forEach(el => el.hidden = false);
document.querySelectorAll('noscript').forEach(el => el.remove());
</script>
<script src="/scripts.js" async defer></script>
</body>
</html>
{% endfunc %}

View File

@ -70,7 +70,7 @@ type Page interface {
type Context struct {
language language.Tag
printer *message.Printer
amount float64
amount uint64
processors domain.ConfigProcessors
}
@ -78,7 +78,7 @@ func NewContext(processors domain.ConfigProcessors, lang language.Tag, amount ui
return &Context{
language: lang,
printer: message.NewPrinter(lang),
amount: float64(amount),
amount: amount,
processors: processors,
}
}
@ -147,453 +147,593 @@ func (ctx Context) streambody(qw422016 *qt422016.Writer) {
//line web/template/template.qtpl:53
ctx.streamtitle(qw422016)
//line web/template/template.qtpl:53
qw422016.N().S(`</h1><ul class="[ cluster ][ list-style-type:none padding-inline-start:unset ]">`)
qw422016.N().S(`</h1><noscript><h1>`)
//line web/template/template.qtpl:56
ctx.streamt(qw422016, `Donate $%.2f to %s`, ctx.amount/100, "toby3d")
//line web/template/template.qtpl:56
qw422016.N().S(`</h1></noscript><p class="[ cluster ][ form ][ js-enabled ]" hidden><span>`)
//line web/template/template.qtpl:59
ctx.streamt(qw422016, `Donate`)
//line web/template/template.qtpl:59
qw422016.N().S(`</span><label class="with-icon"><span class="icon"`)
//line web/template/template.qtpl:62
qw422016.N().S(` `)
//line web/template/template.qtpl:62
qw422016.N().S(`role="img"`)
//line web/template/template.qtpl:63
qw422016.N().S(` `)
//line web/template/template.qtpl:63
qw422016.N().S(`aria-label="`)
//line web/template/template.qtpl:64
ctx.streamt(qw422016, `dollar amount`)
//line web/template/template.qtpl:64
qw422016.N().S(`">💲</span><input class="form__amount"`)
//line web/template/template.qtpl:68
qw422016.N().S(` `)
//line web/template/template.qtpl:68
qw422016.N().S(`type="number"`)
//line web/template/template.qtpl:69
qw422016.N().S(` `)
//line web/template/template.qtpl:69
qw422016.N().S(`name="amount"`)
//line web/template/template.qtpl:70
qw422016.N().S(` `)
//line web/template/template.qtpl:70
qw422016.N().S(`value="`)
//line web/template/template.qtpl:71
qw422016.N().DUL(ctx.amount / 100)
//line web/template/template.qtpl:71
qw422016.N().S(`"`)
//line web/template/template.qtpl:71
qw422016.N().S(` `)
//line web/template/template.qtpl:71
qw422016.N().S(`min="0"`)
//line web/template/template.qtpl:72
qw422016.N().S(` `)
//line web/template/template.qtpl:72
qw422016.N().S(`step="1"`)
//line web/template/template.qtpl:73
qw422016.N().S(` `)
//line web/template/template.qtpl:73
qw422016.N().S(`pattern="[0-9]+"`)
//line web/template/template.qtpl:74
qw422016.N().S(` `)
//line web/template/template.qtpl:74
qw422016.N().S(`inputmode="decimal"`)
//line web/template/template.qtpl:75
qw422016.N().S(` `)
//line web/template/template.qtpl:75
qw422016.N().S(`required /></label><label><span class="visually-hidden">`)
//line web/template/template.qtpl:80
ctx.streamt(qw422016, `contribution frequency`)
//line web/template/template.qtpl:80
qw422016.N().S(`</span><select name="period"><option value="0" selected>`)
//line web/template/template.qtpl:82
ctx.streamt(qw422016, `one time`)
//line web/template/template.qtpl:82
qw422016.N().S(`</option><option value="7">`)
//line web/template/template.qtpl:83
ctx.streamt(qw422016, `weekly`)
//line web/template/template.qtpl:83
qw422016.N().S(`</option><option value="30">`)
//line web/template/template.qtpl:84
ctx.streamt(qw422016, `monthly`)
//line web/template/template.qtpl:84
qw422016.N().S(`</option><option value="365">`)
//line web/template/template.qtpl:85
ctx.streamt(qw422016, `annually`)
//line web/template/template.qtpl:85
qw422016.N().S(`</option></select></label><label><input type="checkbox"`)
//line web/template/template.qtpl:90
qw422016.N().S(` `)
//line web/template/template.qtpl:90
qw422016.N().S(`name="inRussia"`)
//line web/template/template.qtpl:91
qw422016.N().S(` `)
//line web/template/template.qtpl:91
qw422016.N().S(`value="true" />`)
//line web/template/template.qtpl:94
ctx.streamt(qw422016, `from Russia`)
//line web/template/template.qtpl:94
qw422016.N().S(`</label></p><ul class="[ cluster ][ list-style-type:none padding-inline-start:unset ]">`)
//line web/template/template.qtpl:99
if ctx.processors.Liberapay != "" {
//line web/template/template.qtpl:56
qw422016.N().S(`<li><a class="button"`)
//line web/template/template.qtpl:58
qw422016.N().S(` `)
//line web/template/template.qtpl:58
qw422016.N().S(`rel="noopener noreferrer payment"`)
//line web/template/template.qtpl:59
qw422016.N().S(` `)
//line web/template/template.qtpl:59
qw422016.N().S(`href="https://liberapay.com/`)
//line web/template/template.qtpl:60
qw422016.E().S(ctx.processors.Liberapay)
//line web/template/template.qtpl:60
qw422016.N().S(`/donate`)
//line web/template/template.qtpl:60
if ctx.amount > 0 {
//line web/template/template.qtpl:60
qw422016.N().S(`?amount=`)
//line web/template/template.qtpl:60
qw422016.N().FPrec(ctx.amount/100, 2)
//line web/template/template.qtpl:60
qw422016.N().S(`&currency=USD&period=monthly`)
//line web/template/template.qtpl:60
}
//line web/template/template.qtpl:60
qw422016.N().S(`">`)
//line web/template/template.qtpl:62
streamicon(qw422016, "liberapay")
//line web/template/template.qtpl:62
qw422016.N().S(`Liberapay</a></li>`)
//line web/template/template.qtpl:66
}
//line web/template/template.qtpl:67
if ctx.processors.PayPal != "" {
//line web/template/template.qtpl:67
qw422016.N().S(`<li><a class="button"`)
//line web/template/template.qtpl:69
qw422016.N().S(` `)
//line web/template/template.qtpl:69
qw422016.N().S(`rel="noopener noreferrer payment"`)
//line web/template/template.qtpl:70
qw422016.N().S(` `)
//line web/template/template.qtpl:70
qw422016.N().S(`href="https://www.paypal.me/`)
//line web/template/template.qtpl:71
qw422016.E().S(ctx.processors.PayPal)
//line web/template/template.qtpl:71
if ctx.amount > 0 {
//line web/template/template.qtpl:71
qw422016.N().S(`/`)
//line web/template/template.qtpl:71
qw422016.N().FPrec(ctx.amount/100, 2)
//line web/template/template.qtpl:71
qw422016.N().S(`USD`)
//line web/template/template.qtpl:71
}
//line web/template/template.qtpl:71
qw422016.N().S(`">`)
//line web/template/template.qtpl:73
streamicon(qw422016, "paypal")
//line web/template/template.qtpl:73
qw422016.N().S(`PayPal</a></li>`)
//line web/template/template.qtpl:77
}
//line web/template/template.qtpl:78
if ctx.processors.YooMoney != "" {
//line web/template/template.qtpl:78
qw422016.N().S(`<li><a class="button"`)
//line web/template/template.qtpl:80
qw422016.N().S(` `)
//line web/template/template.qtpl:80
qw422016.N().S(`rel="noopener noreferrer payment"`)
//line web/template/template.qtpl:81
qw422016.N().S(` `)
//line web/template/template.qtpl:81
qw422016.N().S(`href="https://yoomoney.ru/to/`)
//line web/template/template.qtpl:82
qw422016.E().S(ctx.processors.YooMoney)
//line web/template/template.qtpl:82
if ctx.amount > 0 {
//line web/template/template.qtpl:82
qw422016.N().S(`/`)
//line web/template/template.qtpl:82
qw422016.N().DUL(uint64(ctx.amount))
//line web/template/template.qtpl:82
}
//line web/template/template.qtpl:82
qw422016.N().S(`">`)
//line web/template/template.qtpl:84
streamicon(qw422016, "yoomoney")
//line web/template/template.qtpl:84
qw422016.N().S(`ЮMoney</a></li>`)
//line web/template/template.qtpl:88
}
//line web/template/template.qtpl:88
qw422016.N().S(`</ul>`)
//line web/template/template.qtpl:90
}
//line web/template/template.qtpl:90
func (ctx Context) writebody(qq422016 qtio422016.Writer) {
//line web/template/template.qtpl:90
qw422016 := qt422016.AcquireWriter(qq422016)
//line web/template/template.qtpl:90
ctx.streambody(qw422016)
//line web/template/template.qtpl:90
qt422016.ReleaseWriter(qw422016)
//line web/template/template.qtpl:90
}
//line web/template/template.qtpl:90
func (ctx Context) body() string {
//line web/template/template.qtpl:90
qb422016 := qt422016.AcquireByteBuffer()
//line web/template/template.qtpl:90
ctx.writebody(qb422016)
//line web/template/template.qtpl:90
qs422016 := string(qb422016.B)
//line web/template/template.qtpl:90
qt422016.ReleaseByteBuffer(qb422016)
//line web/template/template.qtpl:90
return qs422016
//line web/template/template.qtpl:90
}
//line web/template/template.qtpl:92
func (ctx Context) streamdir(qw422016 *qt422016.Writer) {
//line web/template/template.qtpl:93
switch ctx.language {
//line web/template/template.qtpl:94
default:
//line web/template/template.qtpl:94
qw422016.N().S(`ltr`)
//line web/template/template.qtpl:96
case language.Arabic, language.Persian, language.Hebrew, language.Urdu:
//line web/template/template.qtpl:96
qw422016.N().S(`rtl`)
//line web/template/template.qtpl:98
}
//line web/template/template.qtpl:99
}
//line web/template/template.qtpl:99
func (ctx Context) writedir(qq422016 qtio422016.Writer) {
//line web/template/template.qtpl:99
qw422016 := qt422016.AcquireWriter(qq422016)
//line web/template/template.qtpl:99
ctx.streamdir(qw422016)
//line web/template/template.qtpl:99
qt422016.ReleaseWriter(qw422016)
//line web/template/template.qtpl:99
}
//line web/template/template.qtpl:99
func (ctx Context) dir() string {
//line web/template/template.qtpl:99
qb422016 := qt422016.AcquireByteBuffer()
//line web/template/template.qtpl:99
ctx.writedir(qb422016)
//line web/template/template.qtpl:99
qs422016 := string(qb422016.B)
//line web/template/template.qtpl:99
qt422016.ReleaseByteBuffer(qb422016)
//line web/template/template.qtpl:99
return qs422016
//line web/template/template.qtpl:99
}
qw422016.N().S(`<li><a class="[ button ][ js-button ]"`)
//line web/template/template.qtpl:101
func (ctx Context) streamlang(qw422016 *qt422016.Writer) {
qw422016.N().S(` `)
//line web/template/template.qtpl:101
qw422016.N().S(`data-period-min="1"`)
//line web/template/template.qtpl:102
qw422016.N().S(` `)
//line web/template/template.qtpl:102
qw422016.N().S(`data-period-max="365"`)
//line web/template/template.qtpl:103
qw422016.N().S(` `)
//line web/template/template.qtpl:103
qw422016.N().S(`data-pattern="https://liberapay.com/`)
//line web/template/template.qtpl:104
qw422016.E().S(ctx.processors.Liberapay)
//line web/template/template.qtpl:104
qw422016.N().S(`/donate?amount=%f&currency=USD&period=%p"`)
//line web/template/template.qtpl:104
qw422016.N().S(` `)
//line web/template/template.qtpl:104
qw422016.N().S(`rel="noopener noreferrer payment"`)
//line web/template/template.qtpl:105
qw422016.N().S(` `)
//line web/template/template.qtpl:105
qw422016.N().S(`href="https://liberapay.com/`)
//line web/template/template.qtpl:106
qw422016.E().S(ctx.processors.Liberapay)
//line web/template/template.qtpl:106
qw422016.N().S(`/donate`)
//line web/template/template.qtpl:106
if ctx.amount > 0 {
//line web/template/template.qtpl:106
qw422016.N().S(`?amount=`)
//line web/template/template.qtpl:106
qw422016.N().FPrec(float64(ctx.amount)/100, 2)
//line web/template/template.qtpl:106
qw422016.N().S(`&currency=USD&period=monthly`)
//line web/template/template.qtpl:106
}
//line web/template/template.qtpl:106
qw422016.N().S(`">`)
//line web/template/template.qtpl:108
streamicon(qw422016, "liberapay")
//line web/template/template.qtpl:108
qw422016.N().S(`Liberapay</a></li>`)
//line web/template/template.qtpl:112
}
//line web/template/template.qtpl:113
if ctx.processors.PayPal != "" {
//line web/template/template.qtpl:113
qw422016.N().S(`<li><a class="[ button ][ js-button ]"`)
//line web/template/template.qtpl:115
qw422016.N().S(` `)
//line web/template/template.qtpl:115
qw422016.N().S(`data-period-max="1"`)
//line web/template/template.qtpl:116
qw422016.N().S(` `)
//line web/template/template.qtpl:116
qw422016.N().S(`data-pattern="https://www.paypal.me/`)
//line web/template/template.qtpl:117
qw422016.E().S(ctx.processors.PayPal)
//line web/template/template.qtpl:117
qw422016.N().S(`/%fUSD"`)
//line web/template/template.qtpl:117
qw422016.N().S(` `)
//line web/template/template.qtpl:117
qw422016.N().S(`rel="noopener noreferrer payment"`)
//line web/template/template.qtpl:118
qw422016.N().S(` `)
//line web/template/template.qtpl:118
qw422016.N().S(`href="https://www.paypal.me/`)
//line web/template/template.qtpl:119
qw422016.E().S(ctx.processors.PayPal)
//line web/template/template.qtpl:119
if ctx.amount > 0 {
//line web/template/template.qtpl:119
qw422016.N().S(`/`)
//line web/template/template.qtpl:119
qw422016.N().FPrec(float64(ctx.amount)/100, 2)
//line web/template/template.qtpl:119
qw422016.N().S(`USD`)
//line web/template/template.qtpl:119
}
//line web/template/template.qtpl:119
qw422016.N().S(`">`)
//line web/template/template.qtpl:121
streamicon(qw422016, "paypal")
//line web/template/template.qtpl:121
qw422016.N().S(`PayPal</a></li>`)
//line web/template/template.qtpl:125
}
//line web/template/template.qtpl:126
if ctx.processors.YooMoney != "" {
//line web/template/template.qtpl:126
qw422016.N().S(`<li><a class="[ button ][ js-button ]"`)
//line web/template/template.qtpl:128
qw422016.N().S(` `)
//line web/template/template.qtpl:128
qw422016.N().S(`data-amount-min="2"`)
//line web/template/template.qtpl:129
qw422016.N().S(` `)
//line web/template/template.qtpl:129
qw422016.N().S(`data-amount-max="15000"`)
//line web/template/template.qtpl:130
qw422016.N().S(` `)
//line web/template/template.qtpl:130
qw422016.N().S(`data-period-max="1"`)
//line web/template/template.qtpl:131
qw422016.N().S(` `)
//line web/template/template.qtpl:131
qw422016.N().S(`data-in-russia="true"`)
//line web/template/template.qtpl:132
qw422016.N().S(` `)
//line web/template/template.qtpl:132
qw422016.N().S(`data-pattern="https://yoomoney.ru/to/`)
//line web/template/template.qtpl:133
qw422016.E().S(ctx.processors.YooMoney)
//line web/template/template.qtpl:133
qw422016.N().S(`/%d"`)
//line web/template/template.qtpl:133
qw422016.N().S(` `)
//line web/template/template.qtpl:133
qw422016.N().S(`rel="noopener noreferrer payment"`)
//line web/template/template.qtpl:134
qw422016.N().S(` `)
//line web/template/template.qtpl:134
qw422016.N().S(`href="https://yoomoney.ru/to/`)
//line web/template/template.qtpl:135
qw422016.E().S(ctx.processors.YooMoney)
//line web/template/template.qtpl:135
if ctx.amount > 0 {
//line web/template/template.qtpl:135
qw422016.N().S(`/`)
//line web/template/template.qtpl:135
qw422016.N().DUL(ctx.amount)
//line web/template/template.qtpl:135
}
//line web/template/template.qtpl:135
qw422016.N().S(`">`)
//line web/template/template.qtpl:137
streamicon(qw422016, "yoomoney")
//line web/template/template.qtpl:137
qw422016.N().S(`ЮMoney</a></li>`)
//line web/template/template.qtpl:141
}
//line web/template/template.qtpl:141
qw422016.N().S(`</ul>`)
//line web/template/template.qtpl:143
}
//line web/template/template.qtpl:143
func (ctx Context) writebody(qq422016 qtio422016.Writer) {
//line web/template/template.qtpl:143
qw422016 := qt422016.AcquireWriter(qq422016)
//line web/template/template.qtpl:143
ctx.streambody(qw422016)
//line web/template/template.qtpl:143
qt422016.ReleaseWriter(qw422016)
//line web/template/template.qtpl:143
}
//line web/template/template.qtpl:143
func (ctx Context) body() string {
//line web/template/template.qtpl:143
qb422016 := qt422016.AcquireByteBuffer()
//line web/template/template.qtpl:143
ctx.writebody(qb422016)
//line web/template/template.qtpl:143
qs422016 := string(qb422016.B)
//line web/template/template.qtpl:143
qt422016.ReleaseByteBuffer(qb422016)
//line web/template/template.qtpl:143
return qs422016
//line web/template/template.qtpl:143
}
//line web/template/template.qtpl:145
func (ctx Context) streamdir(qw422016 *qt422016.Writer) {
//line web/template/template.qtpl:146
switch ctx.language {
//line web/template/template.qtpl:147
default:
//line web/template/template.qtpl:147
qw422016.N().S(`ltr`)
//line web/template/template.qtpl:149
case language.Arabic, language.Persian, language.Hebrew, language.Urdu:
//line web/template/template.qtpl:149
qw422016.N().S(`rtl`)
//line web/template/template.qtpl:151
}
//line web/template/template.qtpl:152
}
//line web/template/template.qtpl:152
func (ctx Context) writedir(qq422016 qtio422016.Writer) {
//line web/template/template.qtpl:152
qw422016 := qt422016.AcquireWriter(qq422016)
//line web/template/template.qtpl:152
ctx.streamdir(qw422016)
//line web/template/template.qtpl:152
qt422016.ReleaseWriter(qw422016)
//line web/template/template.qtpl:152
}
//line web/template/template.qtpl:152
func (ctx Context) dir() string {
//line web/template/template.qtpl:152
qb422016 := qt422016.AcquireByteBuffer()
//line web/template/template.qtpl:152
ctx.writedir(qb422016)
//line web/template/template.qtpl:152
qs422016 := string(qb422016.B)
//line web/template/template.qtpl:152
qt422016.ReleaseByteBuffer(qb422016)
//line web/template/template.qtpl:152
return qs422016
//line web/template/template.qtpl:152
}
//line web/template/template.qtpl:154
func (ctx Context) streamlang(qw422016 *qt422016.Writer) {
//line web/template/template.qtpl:155
base, _ := ctx.language.Base()
//line web/template/template.qtpl:103
//line web/template/template.qtpl:156
qw422016.E().S(base.String())
//line web/template/template.qtpl:104
//line web/template/template.qtpl:157
}
//line web/template/template.qtpl:104
//line web/template/template.qtpl:157
func (ctx Context) writelang(qq422016 qtio422016.Writer) {
//line web/template/template.qtpl:104
//line web/template/template.qtpl:157
qw422016 := qt422016.AcquireWriter(qq422016)
//line web/template/template.qtpl:104
//line web/template/template.qtpl:157
ctx.streamlang(qw422016)
//line web/template/template.qtpl:104
//line web/template/template.qtpl:157
qt422016.ReleaseWriter(qw422016)
//line web/template/template.qtpl:104
//line web/template/template.qtpl:157
}
//line web/template/template.qtpl:104
//line web/template/template.qtpl:157
func (ctx Context) lang() string {
//line web/template/template.qtpl:104
//line web/template/template.qtpl:157
qb422016 := qt422016.AcquireByteBuffer()
//line web/template/template.qtpl:104
//line web/template/template.qtpl:157
ctx.writelang(qb422016)
//line web/template/template.qtpl:104
//line web/template/template.qtpl:157
qs422016 := string(qb422016.B)
//line web/template/template.qtpl:104
//line web/template/template.qtpl:157
qt422016.ReleaseByteBuffer(qb422016)
//line web/template/template.qtpl:104
//line web/template/template.qtpl:157
return qs422016
//line web/template/template.qtpl:104
//line web/template/template.qtpl:157
}
//line web/template/template.qtpl:106
//line web/template/template.qtpl:159
func (ctx Context) streamt(qw422016 *qt422016.Writer, format message.Reference, v ...any) {
//line web/template/template.qtpl:107
//line web/template/template.qtpl:160
qw422016.E().S(ctx.printer.Sprintf(format, v...))
//line web/template/template.qtpl:108
//line web/template/template.qtpl:161
}
//line web/template/template.qtpl:108
//line web/template/template.qtpl:161
func (ctx Context) writet(qq422016 qtio422016.Writer, format message.Reference, v ...any) {
//line web/template/template.qtpl:108
//line web/template/template.qtpl:161
qw422016 := qt422016.AcquireWriter(qq422016)
//line web/template/template.qtpl:108
//line web/template/template.qtpl:161
ctx.streamt(qw422016, format, v...)
//line web/template/template.qtpl:108
//line web/template/template.qtpl:161
qt422016.ReleaseWriter(qw422016)
//line web/template/template.qtpl:108
//line web/template/template.qtpl:161
}
//line web/template/template.qtpl:108
//line web/template/template.qtpl:161
func (ctx Context) t(format message.Reference, v ...any) string {
//line web/template/template.qtpl:108
//line web/template/template.qtpl:161
qb422016 := qt422016.AcquireByteBuffer()
//line web/template/template.qtpl:108
//line web/template/template.qtpl:161
ctx.writet(qb422016, format, v...)
//line web/template/template.qtpl:108
//line web/template/template.qtpl:161
qs422016 := string(qb422016.B)
//line web/template/template.qtpl:108
//line web/template/template.qtpl:161
qt422016.ReleaseByteBuffer(qb422016)
//line web/template/template.qtpl:108
//line web/template/template.qtpl:161
return qs422016
//line web/template/template.qtpl:108
//line web/template/template.qtpl:161
}
//line web/template/template.qtpl:110
//line web/template/template.qtpl:163
func (ctx Context) streamtitle(qw422016 *qt422016.Writer) {
//line web/template/template.qtpl:111
ctx.streamt(qw422016, `Donate $%.2f to %s`, ctx.amount/100, "toby3d")
//line web/template/template.qtpl:112
//line web/template/template.qtpl:163
qw422016.N().S(`NotDotPay`)
//line web/template/template.qtpl:165
}
//line web/template/template.qtpl:112
//line web/template/template.qtpl:165
func (ctx Context) writetitle(qq422016 qtio422016.Writer) {
//line web/template/template.qtpl:112
//line web/template/template.qtpl:165
qw422016 := qt422016.AcquireWriter(qq422016)
//line web/template/template.qtpl:112
//line web/template/template.qtpl:165
ctx.streamtitle(qw422016)
//line web/template/template.qtpl:112
//line web/template/template.qtpl:165
qt422016.ReleaseWriter(qw422016)
//line web/template/template.qtpl:112
//line web/template/template.qtpl:165
}
//line web/template/template.qtpl:112
//line web/template/template.qtpl:165
func (ctx Context) title() string {
//line web/template/template.qtpl:112
//line web/template/template.qtpl:165
qb422016 := qt422016.AcquireByteBuffer()
//line web/template/template.qtpl:112
//line web/template/template.qtpl:165
ctx.writetitle(qb422016)
//line web/template/template.qtpl:112
//line web/template/template.qtpl:165
qs422016 := string(qb422016.B)
//line web/template/template.qtpl:112
//line web/template/template.qtpl:165
qt422016.ReleaseByteBuffer(qb422016)
//line web/template/template.qtpl:112
//line web/template/template.qtpl:165
return qs422016
//line web/template/template.qtpl:112
//line web/template/template.qtpl:165
}
//line web/template/template.qtpl:114
//line web/template/template.qtpl:167
func StreamTemplate(qw422016 *qt422016.Writer, p Page) {
//line web/template/template.qtpl:114
//line web/template/template.qtpl:167
qw422016.N().S(`<!DOCTYPE html><html lang="`)
//line web/template/template.qtpl:116
//line web/template/template.qtpl:169
p.streamlang(qw422016)
//line web/template/template.qtpl:116
qw422016.N().S(`" dir="`)
//line web/template/template.qtpl:116
p.streamdir(qw422016)
//line web/template/template.qtpl:116
qw422016.N().S(`"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>`)
//line web/template/template.qtpl:120
p.streamtitle(qw422016)
//line web/template/template.qtpl:120
qw422016.N().S(`</title>`)
//line web/template/template.qtpl:121
p.streamhead(qw422016)
//line web/template/template.qtpl:121
qw422016.N().S(`</head><body>`)
//line web/template/template.qtpl:124
p.streambody(qw422016)
//line web/template/template.qtpl:124
qw422016.N().S(`</body></html>`)
//line web/template/template.qtpl:127
}
//line web/template/template.qtpl:127
func WriteTemplate(qq422016 qtio422016.Writer, p Page) {
//line web/template/template.qtpl:127
qw422016 := qt422016.AcquireWriter(qq422016)
//line web/template/template.qtpl:127
StreamTemplate(qw422016, p)
//line web/template/template.qtpl:127
qt422016.ReleaseWriter(qw422016)
//line web/template/template.qtpl:127
}
//line web/template/template.qtpl:127
func Template(p Page) string {
//line web/template/template.qtpl:127
qb422016 := qt422016.AcquireByteBuffer()
//line web/template/template.qtpl:127
WriteTemplate(qb422016, p)
//line web/template/template.qtpl:127
qs422016 := string(qb422016.B)
//line web/template/template.qtpl:127
qt422016.ReleaseByteBuffer(qb422016)
//line web/template/template.qtpl:127
return qs422016
//line web/template/template.qtpl:127
}
//line web/template/template.qtpl:129
func streamicon(qw422016 *qt422016.Writer, id string) {
//line web/template/template.qtpl:130
switch id {
//line web/template/template.qtpl:131
case "liberapay":
//line web/template/template.qtpl:131
qw422016.N().S(`<svg class="icon"`)
//line web/template/template.qtpl:132
qw422016.N().S(` `)
//line web/template/template.qtpl:132
qw422016.N().S(`width="32"`)
//line web/template/template.qtpl:133
qw422016.N().S(` `)
//line web/template/template.qtpl:133
qw422016.N().S(`height="32"`)
//line web/template/template.qtpl:134
qw422016.N().S(` `)
//line web/template/template.qtpl:134
qw422016.N().S(`viewBox="0 0 80 80"`)
//line web/template/template.qtpl:135
qw422016.N().S(` `)
//line web/template/template.qtpl:135
qw422016.N().S(`aria-hidden="true"`)
//line web/template/template.qtpl:136
qw422016.N().S(` `)
//line web/template/template.qtpl:136
qw422016.N().S(`focusable="false"`)
//line web/template/template.qtpl:137
qw422016.N().S(` `)
//line web/template/template.qtpl:137
qw422016.N().S(`xmlns="http://www.w3.org/2000/svg"><path fill="#1a171b" d="M25.91 63.04c-3.57 0-6.37-.47-8.41-1.4a9.03 9.03 0 0 1-4.38-3.8 11.15 11.15 0 0 1-1.28-5.55c.03-2.08.32-4.31.87-6.67L22.3 5.57l11.69-1.81L23.5 47.2c-.2.9-.32 1.73-.34 2.49-.03.75.11 1.42.41 2 .3.57.82 1.04 1.55 1.39a8.7 8.7 0 0 0 3.05.68l-2.26 9.28m42.24-24.96c0 3.67-.6 7.03-1.81 10.07a23.94 23.94 0 0 1-5.01 7.88 22.43 22.43 0 0 1-7.7 5.17 25.4 25.4 0 0 1-9.76 1.85c-1.71 0-3.42-.16-5.13-.46l-3.4 13.65H24.19L36.7 24.05a67.6 67.6 0 0 1 6.9-1.62c2.6-.48 5.4-.71 8.42-.71 2.81 0 5.24.42 7.27 1.28a13.6 13.6 0 0 1 5.02 3.5 14.32 14.32 0 0 1 2.9 5.21c.63 1.99.95 4.11.95 6.37M40.78 53.54c.85.2 1.91.3 3.17.3 1.96 0 3.74-.36 5.35-1.09a11.8 11.8 0 0 0 4.11-3.05 14.1 14.1 0 0 0 2.64-4.72c.63-1.83.95-3.86.95-6.07 0-2.16-.48-4-1.44-5.5-.95-1.51-2.61-2.27-4.97-2.27-1.61 0-3.12.15-4.53.46l-5.28 21.94" /></svg>`)
//line web/template/template.qtpl:142
case "paypal":
//line web/template/template.qtpl:142
qw422016.N().S(`<svg class="icon"`)
//line web/template/template.qtpl:143
qw422016.N().S(` `)
//line web/template/template.qtpl:143
qw422016.N().S(`width="32"`)
//line web/template/template.qtpl:144
qw422016.N().S(` `)
//line web/template/template.qtpl:144
qw422016.N().S(`height="32"`)
//line web/template/template.qtpl:145
qw422016.N().S(` `)
//line web/template/template.qtpl:145
qw422016.N().S(`viewBox="0 0 154.7 190.5"`)
//line web/template/template.qtpl:146
qw422016.N().S(` `)
//line web/template/template.qtpl:146
qw422016.N().S(`aria-hidden="true"`)
//line web/template/template.qtpl:147
qw422016.N().S(` `)
//line web/template/template.qtpl:147
qw422016.N().S(`focusable="false"`)
//line web/template/template.qtpl:148
qw422016.N().S(` `)
//line web/template/template.qtpl:148
qw422016.N().S(`xmlns="http://www.w3.org/2000/svg">`)
//line web/template/template.qtpl:151
qw422016.N().S(`<path fill="#003087" d="M28 0a5.5 5.5 0 0 0-5.5 4.6L.1 147.2a4.5 4.5 0 0 0 4.4 5.2h33.3l8.3-52.5 9-57.2a5.5 5.5 0 0 1 5.4-4.6h47.8c8.7 0 16.6 2 23.4 5.6C132 19.7 112.4 0 85.3 0z" />`)
//line web/template/template.qtpl:153
qw422016.N().S(`<path fill="#001c64" d="M60.5 38.1a5.5 5.5 0 0 0-5.4 4.6l-9 57.2-8.3 52.5 8.3-52.5a5.5 5.5 0 0 1 5.4-4.6H78a54 54 0 0 0 53.8-51.6 50 50 0 0 0-23.4-5.6z" />`)
//line web/template/template.qtpl:155
qw422016.N().S(`<path fill="#0070e0" d="M131.7 43.7a54 54 0 0 1-53.8 51.6H51.5c-2.7 0-5 2-5.4 4.6l-8.3 52.5-5.2 33a4.5 4.5 0 0 0 4.4 5.1h28.7a5.5 5.5 0 0 0 5.4-4.6l7.6-48a5.5 5.5 0 0 1 5.4-4.5H101a54 54 0 0 0 53.2-45.7c3-18.7-6.5-35.6-22.5-44z" /></svg>`)
//line web/template/template.qtpl:158
case "yoomoney":
//line web/template/template.qtpl:158
qw422016.N().S(`<svg class="icon"`)
//line web/template/template.qtpl:159
qw422016.N().S(` `)
//line web/template/template.qtpl:159
qw422016.N().S(`width="32"`)
//line web/template/template.qtpl:160
qw422016.N().S(` `)
//line web/template/template.qtpl:160
qw422016.N().S(`height="32"`)
//line web/template/template.qtpl:161
qw422016.N().S(` `)
//line web/template/template.qtpl:161
qw422016.N().S(`viewBox="0 0 169 120"`)
//line web/template/template.qtpl:162
qw422016.N().S(` `)
//line web/template/template.qtpl:162
qw422016.N().S(`aria-hidden="true"`)
//line web/template/template.qtpl:163
qw422016.N().S(` `)
//line web/template/template.qtpl:163
qw422016.N().S(`focusable="false"`)
//line web/template/template.qtpl:164
qw422016.N().S(` `)
//line web/template/template.qtpl:164
qw422016.N().S(`xmlns="http://www.w3.org/2000/svg"><path fill="#fff" d="M109 0a59.9 59.9 0 1 0 0 120c33 0 60-27 60-60S142 0 109 0Zm0 82.4A22.7 22.7 0 0 1 86.6 60 22.7 22.7 0 0 1 109 37.6 22.7 22.7 0 0 1 131.4 60 23 23 0 0 1 109 82.4Z"/><path fill="#fff" d="M48.6 17.5v87.3H27.3L0 17.5h48.6Z"/></svg>`)
//line web/template/template.qtpl:169
qw422016.N().S(`"`)
//line web/template/template.qtpl:169
qw422016.N().S(` `)
//line web/template/template.qtpl:169
qw422016.N().S(`dir="`)
//line web/template/template.qtpl:170
}
//line web/template/template.qtpl:171
p.streamdir(qw422016)
//line web/template/template.qtpl:170
qw422016.N().S(`"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="color-scheme" content="light"><title>NotDotPay</title>`)
//line web/template/template.qtpl:177
p.streamhead(qw422016)
//line web/template/template.qtpl:177
qw422016.N().S(`</head><body>`)
//line web/template/template.qtpl:181
p.streambody(qw422016)
//line web/template/template.qtpl:181
qw422016.N().S(`<script async>document.querySelectorAll('.js-enabled').forEach(el => el.hidden = false);document.querySelectorAll('noscript').forEach(el => el.remove());</script><script src="/scripts.js" async defer></script></body></html>`)
//line web/template/template.qtpl:189
}
//line web/template/template.qtpl:171
func writeicon(qq422016 qtio422016.Writer, id string) {
//line web/template/template.qtpl:171
//line web/template/template.qtpl:189
func WriteTemplate(qq422016 qtio422016.Writer, p Page) {
//line web/template/template.qtpl:189
qw422016 := qt422016.AcquireWriter(qq422016)
//line web/template/template.qtpl:171
streamicon(qw422016, id)
//line web/template/template.qtpl:171
//line web/template/template.qtpl:189
StreamTemplate(qw422016, p)
//line web/template/template.qtpl:189
qt422016.ReleaseWriter(qw422016)
//line web/template/template.qtpl:171
//line web/template/template.qtpl:189
}
//line web/template/template.qtpl:171
func icon(id string) string {
//line web/template/template.qtpl:171
//line web/template/template.qtpl:189
func Template(p Page) string {
//line web/template/template.qtpl:189
qb422016 := qt422016.AcquireByteBuffer()
//line web/template/template.qtpl:171
writeicon(qb422016, id)
//line web/template/template.qtpl:171
//line web/template/template.qtpl:189
WriteTemplate(qb422016, p)
//line web/template/template.qtpl:189
qs422016 := string(qb422016.B)
//line web/template/template.qtpl:171
//line web/template/template.qtpl:189
qt422016.ReleaseByteBuffer(qb422016)
//line web/template/template.qtpl:171
//line web/template/template.qtpl:189
return qs422016
//line web/template/template.qtpl:171
//line web/template/template.qtpl:189
}
//line web/template/template.qtpl:191
func streamicon(qw422016 *qt422016.Writer, id string) {
//line web/template/template.qtpl:192
switch id {
//line web/template/template.qtpl:193
case "liberapay":
//line web/template/template.qtpl:193
qw422016.N().S(`<svg class="icon"`)
//line web/template/template.qtpl:194
qw422016.N().S(` `)
//line web/template/template.qtpl:194
qw422016.N().S(`width="32"`)
//line web/template/template.qtpl:195
qw422016.N().S(` `)
//line web/template/template.qtpl:195
qw422016.N().S(`height="32"`)
//line web/template/template.qtpl:196
qw422016.N().S(` `)
//line web/template/template.qtpl:196
qw422016.N().S(`viewBox="0 0 80 80"`)
//line web/template/template.qtpl:197
qw422016.N().S(` `)
//line web/template/template.qtpl:197
qw422016.N().S(`aria-hidden="true"`)
//line web/template/template.qtpl:198
qw422016.N().S(` `)
//line web/template/template.qtpl:198
qw422016.N().S(`focusable="false"`)
//line web/template/template.qtpl:199
qw422016.N().S(` `)
//line web/template/template.qtpl:199
qw422016.N().S(`xmlns="http://www.w3.org/2000/svg"><path fill="#1a171b" d="M25.91 63.04c-3.57 0-6.37-.47-8.41-1.4a9.03 9.03 0 0 1-4.38-3.8 11.15 11.15 0 0 1-1.28-5.55c.03-2.08.32-4.31.87-6.67L22.3 5.57l11.69-1.81L23.5 47.2c-.2.9-.32 1.73-.34 2.49-.03.75.11 1.42.41 2 .3.57.82 1.04 1.55 1.39a8.7 8.7 0 0 0 3.05.68l-2.26 9.28m42.24-24.96c0 3.67-.6 7.03-1.81 10.07a23.94 23.94 0 0 1-5.01 7.88 22.43 22.43 0 0 1-7.7 5.17 25.4 25.4 0 0 1-9.76 1.85c-1.71 0-3.42-.16-5.13-.46l-3.4 13.65H24.19L36.7 24.05a67.6 67.6 0 0 1 6.9-1.62c2.6-.48 5.4-.71 8.42-.71 2.81 0 5.24.42 7.27 1.28a13.6 13.6 0 0 1 5.02 3.5 14.32 14.32 0 0 1 2.9 5.21c.63 1.99.95 4.11.95 6.37M40.78 53.54c.85.2 1.91.3 3.17.3 1.96 0 3.74-.36 5.35-1.09a11.8 11.8 0 0 0 4.11-3.05 14.1 14.1 0 0 0 2.64-4.72c.63-1.83.95-3.86.95-6.07 0-2.16-.48-4-1.44-5.5-.95-1.51-2.61-2.27-4.97-2.27-1.61 0-3.12.15-4.53.46l-5.28 21.94" /></svg>`)
//line web/template/template.qtpl:204
case "paypal":
//line web/template/template.qtpl:204
qw422016.N().S(`<svg class="icon"`)
//line web/template/template.qtpl:205
qw422016.N().S(` `)
//line web/template/template.qtpl:205
qw422016.N().S(`width="32"`)
//line web/template/template.qtpl:206
qw422016.N().S(` `)
//line web/template/template.qtpl:206
qw422016.N().S(`height="32"`)
//line web/template/template.qtpl:207
qw422016.N().S(` `)
//line web/template/template.qtpl:207
qw422016.N().S(`viewBox="0 0 154.7 190.5"`)
//line web/template/template.qtpl:208
qw422016.N().S(` `)
//line web/template/template.qtpl:208
qw422016.N().S(`aria-hidden="true"`)
//line web/template/template.qtpl:209
qw422016.N().S(` `)
//line web/template/template.qtpl:209
qw422016.N().S(`focusable="false"`)
//line web/template/template.qtpl:210
qw422016.N().S(` `)
//line web/template/template.qtpl:210
qw422016.N().S(`xmlns="http://www.w3.org/2000/svg">`)
//line web/template/template.qtpl:213
qw422016.N().S(`<path fill="#003087" d="M28 0a5.5 5.5 0 0 0-5.5 4.6L.1 147.2a4.5 4.5 0 0 0 4.4 5.2h33.3l8.3-52.5 9-57.2a5.5 5.5 0 0 1 5.4-4.6h47.8c8.7 0 16.6 2 23.4 5.6C132 19.7 112.4 0 85.3 0z" />`)
//line web/template/template.qtpl:215
qw422016.N().S(`<path fill="#001c64" d="M60.5 38.1a5.5 5.5 0 0 0-5.4 4.6l-9 57.2-8.3 52.5 8.3-52.5a5.5 5.5 0 0 1 5.4-4.6H78a54 54 0 0 0 53.8-51.6 50 50 0 0 0-23.4-5.6z" />`)
//line web/template/template.qtpl:217
qw422016.N().S(`<path fill="#0070e0" d="M131.7 43.7a54 54 0 0 1-53.8 51.6H51.5c-2.7 0-5 2-5.4 4.6l-8.3 52.5-5.2 33a4.5 4.5 0 0 0 4.4 5.1h28.7a5.5 5.5 0 0 0 5.4-4.6l7.6-48a5.5 5.5 0 0 1 5.4-4.5H101a54 54 0 0 0 53.2-45.7c3-18.7-6.5-35.6-22.5-44z" /></svg>`)
//line web/template/template.qtpl:220
case "yoomoney":
//line web/template/template.qtpl:220
qw422016.N().S(`<svg class="icon"`)
//line web/template/template.qtpl:221
qw422016.N().S(` `)
//line web/template/template.qtpl:221
qw422016.N().S(`width="32"`)
//line web/template/template.qtpl:222
qw422016.N().S(` `)
//line web/template/template.qtpl:222
qw422016.N().S(`height="32"`)
//line web/template/template.qtpl:223
qw422016.N().S(` `)
//line web/template/template.qtpl:223
qw422016.N().S(`viewBox="0 0 169 120"`)
//line web/template/template.qtpl:224
qw422016.N().S(` `)
//line web/template/template.qtpl:224
qw422016.N().S(`aria-hidden="true"`)
//line web/template/template.qtpl:225
qw422016.N().S(` `)
//line web/template/template.qtpl:225
qw422016.N().S(`focusable="false"`)
//line web/template/template.qtpl:226
qw422016.N().S(` `)
//line web/template/template.qtpl:226
qw422016.N().S(`xmlns="http://www.w3.org/2000/svg"><path fill="#fff" d="M109 0a59.9 59.9 0 1 0 0 120c33 0 60-27 60-60S142 0 109 0Zm0 82.4A22.7 22.7 0 0 1 86.6 60 22.7 22.7 0 0 1 109 37.6 22.7 22.7 0 0 1 131.4 60 23 23 0 0 1 109 82.4Z"/><path fill="#fff" d="M48.6 17.5v87.3H27.3L0 17.5h48.6Z"/></svg>`)
//line web/template/template.qtpl:232
}
//line web/template/template.qtpl:233
}
//line web/template/template.qtpl:233
func writeicon(qq422016 qtio422016.Writer, id string) {
//line web/template/template.qtpl:233
qw422016 := qt422016.AcquireWriter(qq422016)
//line web/template/template.qtpl:233
streamicon(qw422016, id)
//line web/template/template.qtpl:233
qt422016.ReleaseWriter(qw422016)
//line web/template/template.qtpl:233
}
//line web/template/template.qtpl:233
func icon(id string) string {
//line web/template/template.qtpl:233
qb422016 := qt422016.AcquireByteBuffer()
//line web/template/template.qtpl:233
writeicon(qb422016, id)
//line web/template/template.qtpl:233
qs422016 := string(qb422016.B)
//line web/template/template.qtpl:233
qt422016.ReleaseByteBuffer(qb422016)
//line web/template/template.qtpl:233
return qs422016
//line web/template/template.qtpl:233
}