commit 389c0ded4cb93c8d8df050216e0c45650cfabaff
parent bcaeb847d71c41768aa19c05fa8d05ffad5f805e
Author: Mikolai Gütschow <mikolai.guetschow@tu-dresden.de>
Date: Thu, 30 Apr 2026 17:46:48 +0200
protocol: combine payment and deposit
Diffstat:
2 files changed, 412 insertions(+), 457 deletions(-)
diff --git a/draft-guetschow-taler-protocol.md b/draft-guetschow-taler-protocol.md
@@ -694,58 +694,76 @@ Persist ⟨coinᵢ⟩
// todo
-## Payment with E-Cash {#payment}
+## Payment with E-Cash
-### Payment at a Merchant {#payment-merchant}
+### Payment and Deposit {#payment}
The wallet obtains `contract` information for an `order` from the merchant
after claiming it with a `nonce`.
Payment of the order is prepared by signing (partial) deposit authorizations `⟨depositᵢ⟩` with coins `⟨coinᵢ⟩` of certain denominations `⟨denomᵢ⟩`,
where the sum of all contributions (`contributionᵢ <= denomᵢ.value`) must match the `contract.price` plus potential deposit fees.
-The payment is complete as soon as the merchant successfully redeems the deposit authorizations at the exchange (cf. {{deposit}}).
+The payment is complete as soon as the merchant successfully redeems the deposit authorizations at the exchange.
+
+Deposit could also be used directly by a wallet with its own payto and a minimal contract.
~~~
- wallet merchant
-Knows ⟨coinᵢ⟩ Knows merchant.priv
- Knows exchange, payto
- | |
- | +-----------------------+
- | | (M1) order generation |
- | +-----------------------+
- | |
- |<------- (QR-Code / NFC / URI) ---------|
- | (order.{id,token?}) |
- | |
-+-----------------------+ |
-| (W1) nonce generation | |
-+-----------------------+ |
- | |
- |------- /orders/{order.id}/claim ------>|
- | (nonce.pub, order.token?) |
- | |
- | +--------------------------+
- | | (M2) contract generation |
- | +--------------------------+
- | |
- |<---- (contract, merchant.pub, sig) ----|
- | |
-+--------------------------+ |
-| (W2) payment preparation | |
-+--------------------------+ |
- | |
- |------- /orders/{order.id}/pay -------->|
- | (⟨depositᵢ⟩) |
- | |
- | +--------------------+
- | | (M3) deposit check |
- | +--------------------+
- | |
- |<--------------- (sig) -----------------|
- | |
-+---------------------------+ |
-| (W3) payment verification | |
-+---------------------------+ |
- | |
+ wallet merchant exchange
+Knows ⟨coinᵢ⟩ Knows merchant.priv Knows exchange.priv
+ | Knows exchange, payto Knows ⟨denomᵢ⟩
+ | | |
+ | +-----------------------+ |
+ | | (M1) order generation | |
+ | +-----------------------+ |
+ | | |
+ |<--- (QR-Code / NFC / URI) ---| |
+ | (order.{id,token?}) | |
+ | | |
++-----------------------+ | |
+| (W1) nonce generation | | |
++-----------------------+ | |
+ | | |
+ |-- /orders/{order.id}/claim ->| |
+ | (nonce.pub, order.token?) | |
+ | | |
+ | +--------------------------+ |
+ | | (M2) contract generation | |
+ | +--------------------------+ |
+ | | |
+ |<-- (contract, merchant.pub, -| |
+ | sig) | |
+ | | |
++--------------------------+ | |
+| (W2) payment preparation | | |
++--------------------------+ | |
+ | | |
+ |--- /orders/{order.id}/pay -->| |
+ | (⟨depositᵢ⟩) | |
+ | | |
+ | +--------------------------+ |
+ | | (M3) deposit preparation | |
+ | +--------------------------+ |
+ | | |
+ | |-------- /batch-deposit ----->|
+ | | (info, h_contract, ⟨depositᵢ⟩|
+ | | merchant.pub, sig) |
+ | | |
+ | | +--------------------+
+ | | | (E1) deposit check |
+ | | +--------------------+
+ | | |
+ | |<- (timestamp, exchange.pub, -|
+ | | sig) |
+ | | |
+ | +---------------------------+ |
+ | | (M4) deposit verification | |
+ | +---------------------------+ |
+ | | |
+ |<----------- (sig) -----------| |
+ | | |
++---------------------------+ | |
+| (W3) payment verification | | |
++---------------------------+ | |
+ | | |
~~~
where (without age restriction, policy and wallet data hash)
@@ -810,59 +828,9 @@ Persist (contract, ⟨sigᵢ⟩, ⟨depositᵢ⟩)
// TODO: explain CoinSelection
~~~
-(M3) deposit check (merchant)
+(M3) deposit preparation (merchant)
Check Sum ⟨depositᵢ.contribution⟩ == contract.price
-Check Deposit(⟨depositᵢ⟩)
-msg = Gen-Msg(MERCHANT_PAYMENT_OK, h_contract)
-sig = Ed25519-Sign(merchant.priv, msg)
-~~~
-
-~~~
-(W3) payment verification (wallet)
-
-msg = Gen-Msg(MERCHANT_PAYMENT_OK, h_contract)
-Check Ed25519-Verify(merchant.pub, msg, sig)
-~~~
-
-### Deposit performed by merchant {#deposit}
-
-// todo: add introductory text
-
-Deposit could also be used directly by a wallet with its own payto and a minimal contract.
-
-~~~
- merchant exchange
-Knows exchange.pub Knows exchange.priv
-Knows merchant.priv Knows ⟨denomᵢ⟩
-Knows payto, wire_salt |
-Knows contract, ⟨depositᵢ⟩ |
- | |
-+--------------------------+ |
-| (M1) deposit preparation | |
-+--------------------------+ |
- | |
- |----------- /batch-deposit ------------>|
- | (info, h_contract, ⟨depositᵢ⟩ |
- | merchant.pub, sig) |
- | |
- | +-------------------------+
- | | (E1) deposit validation |
- | +-------------------------+
- | |
- |<--- (timestamp, exchange.pub, sig) ----|
- | |
-+---------------------------+ |
-| (M2) deposit verification | |
-+---------------------------+ |
- | |
-~~~
-
-where (without age restriction, policy and wallet data hash)
-
-~~~
-(M1) Deposit preparation (merchant)
-
info.time = contract.{timestamp, wire_deadline, refund_deadline}
info.wire = (payto, wire_salt)
h_contract = SHA-512(canonicalJSON(contract))
@@ -871,7 +839,7 @@ sig = Ed25519-Sign(merchant.priv, msg)
~~~
~~~
-(E1) Deposit validation (exchange)
+(E1) deposit check (exchange)
h_wire = HKDF(info.wire.wire_salt, info.wire.payto, "merchant-wire-signature", 64)
for i in 0..n:
@@ -901,7 +869,7 @@ sig = Ed25519-Sign(exchange.priv, msg)
~~~
~~~
-(M2) Deposit verification (merchant)
+(M2) deposit verification (merchant)
h_wire = HKDF(wire_salt, payto, "merchant-wire-signature", 64)
msg = Gen-Msg(EXCHANGE_CONFIRM_DEPOSIT,
@@ -911,6 +879,15 @@ msg = Gen-Msg(EXCHANGE_CONFIRM_DEPOSIT,
| Sum ⟨depositᵢ.contribution⟩
| SHA-512( ⟨depositᵢ.sig⟩ ) | merchant.pub ))
Check Ed25519-Verify(exchange.pub, msg, sig)
+msg = Gen-Msg(MERCHANT_PAYMENT_OK, h_contract)
+sig = Ed25519-Sign(merchant.priv, msg)
+~~~~
+
+~~~
+(W3) payment verification (wallet)
+
+msg = Gen-Msg(MERCHANT_PAYMENT_OK, h_contract)
+Check Ed25519-Verify(merchant.pub, msg, sig)
~~~
### Refund {#refund}
@@ -919,7 +896,7 @@ A wallet can request a refund for an order from the merchant after it has been c
(cf. {{payment}}) and before the merchant has been paid out by the exchange (i.e., before `contract.wire_deadline`).
The merchant needs to approve the refund via its business logic,
and is free to decide the total amount of the refund
-as well as which coins' deposit operations (cf. {{deposit}}) are (potentially partly) invalidated.
+as well as which coins' deposit operations are (potentially partly) invalidated.
After the exchange has accepted the refund request,
the coins obtain their (partial) value back.
The wallet should proceed to refresh (cf. {{refresh}}) the coins before spending them again
@@ -1063,7 +1040,7 @@ The wallet obtains `n` new coins `⟨coinᵢ⟩` of denominations `⟨denomᵢ
in exchange for one old `coin` of denomination `denom` from the exchange.
There are three reasons why a wallet needs to do this:
-1. Obtaining unlinkable change after using only a part of the coin's value during a payment (cf. {{payment}}) or deposit (cf. {{deposit}}),
+1. Obtaining unlinkable change after using only a part of the coin's value during a payment (cf. {{payment}}),
i.e. where `contribution <= denom.value`
2. Obtaining unlinkable change after a successful refund (cf. {{refund}})
3. Renewing a coin before it deposit-expires
@@ -1408,7 +1385,7 @@ This appendix provides two sets of test vectors for testing Taler Protocol imple
They are generated by going through the protocol operations in the following order:
1. Withdraw two coins `coin₀` and `coin₁` from a single `reserve` (cf. {{withdraw}}).
-2. Pay for one `order` with the full value of `coin₀` and a partial value of `coin₁` (cf. {{payment}} and {{deposit}}).
+2. Pay for one `order` with the full value of `coin₀` and a partial value of `coin₁` (cf. {{payment}}).
3. Refresh the now-dirty `coin₁` to two new coins `coin₂` and `coin₃` (cf. {{refresh}}).
4. Regenerate `coin₂` and `coin₃` with the knowledge of `coin₁` (cf. {{link}}).
5. Obtain a partial refund for `coin₀` used in `order` (cf. {{refund}}).
diff --git a/draft-guetschow-taler-protocol.xml b/draft-guetschow-taler-protocol.xml
@@ -24,7 +24,7 @@
<email>mikolai.guetschow@tu-dresden.de</email>
</address>
</author>
- <date year="2026" month="April" day="29"/>
+ <date year="2026" month="April" day="30"/>
<workgroup>independent</workgroup>
<keyword>taler</keyword>
<keyword>cryptography</keyword>
@@ -658,57 +658,74 @@ Persist ⟨coinᵢ⟩
<t>// todo</t>
</section>
</section>
- <section anchor="payment">
+ <section anchor="payment-with-e-cash">
<name>Payment with E-Cash</name>
- <section anchor="payment-merchant">
- <name>Payment at a Merchant</name>
+ <section anchor="payment">
+ <name>Payment and Deposit</name>
<t>The wallet obtains <tt>contract</tt> information for an <tt>order</tt> from the merchant
after claiming it with a <tt>nonce</tt>.
Payment of the order is prepared by signing (partial) deposit authorizations <tt>⟨depositᵢ⟩</tt> with coins <tt>⟨coinᵢ⟩</tt> of certain denominations <tt>⟨denomᵢ⟩</tt>,
where the sum of all contributions (<tt>contributionᵢ <= denomᵢ.value</tt>) must match the <tt>contract.price</tt> plus potential deposit fees.
-The payment is complete as soon as the merchant successfully redeems the deposit authorizations at the exchange (cf. <xref target="deposit"/>).</t>
+The payment is complete as soon as the merchant successfully redeems the deposit authorizations at the exchange.</t>
+ <t>Deposit could also be used directly by a wallet with its own payto and a minimal contract.</t>
<artwork><![CDATA[
- wallet merchant
-Knows ⟨coinᵢ⟩ Knows merchant.priv
- Knows exchange, payto
- | |
- | +-----------------------+
- | | (M1) order generation |
- | +-----------------------+
- | |
- |<------- (QR-Code / NFC / URI) ---------|
- | (order.{id,token?}) |
- | |
-+-----------------------+ |
-| (W1) nonce generation | |
-+-----------------------+ |
- | |
- |------- /orders/{order.id}/claim ------>|
- | (nonce.pub, order.token?) |
- | |
- | +--------------------------+
- | | (M2) contract generation |
- | +--------------------------+
- | |
- |<---- (contract, merchant.pub, sig) ----|
- | |
-+--------------------------+ |
-| (W2) payment preparation | |
-+--------------------------+ |
- | |
- |------- /orders/{order.id}/pay -------->|
- | (⟨depositᵢ⟩) |
- | |
- | +--------------------+
- | | (M3) deposit check |
- | +--------------------+
- | |
- |<--------------- (sig) -----------------|
- | |
-+---------------------------+ |
-| (W3) payment verification | |
-+---------------------------+ |
- | |
+ wallet merchant exchange
+Knows ⟨coinᵢ⟩ Knows merchant.priv Knows exchange.priv
+ | Knows exchange, payto Knows ⟨denomᵢ⟩
+ | | |
+ | +-----------------------+ |
+ | | (M1) order generation | |
+ | +-----------------------+ |
+ | | |
+ |<--- (QR-Code / NFC / URI) ---| |
+ | (order.{id,token?}) | |
+ | | |
++-----------------------+ | |
+| (W1) nonce generation | | |
++-----------------------+ | |
+ | | |
+ |-- /orders/{order.id}/claim ->| |
+ | (nonce.pub, order.token?) | |
+ | | |
+ | +--------------------------+ |
+ | | (M2) contract generation | |
+ | +--------------------------+ |
+ | | |
+ |<-- (contract, merchant.pub, -| |
+ | sig) | |
+ | | |
++--------------------------+ | |
+| (W2) payment preparation | | |
++--------------------------+ | |
+ | | |
+ |--- /orders/{order.id}/pay -->| |
+ | (⟨depositᵢ⟩) | |
+ | | |
+ | +--------------------------+ |
+ | | (M3) deposit preparation | |
+ | +--------------------------+ |
+ | | |
+ | |-------- /batch-deposit ----->|
+ | | (info, h_contract, ⟨depositᵢ⟩|
+ | | merchant.pub, sig) |
+ | | |
+ | | +--------------------+
+ | | | (E1) deposit check |
+ | | +--------------------+
+ | | |
+ | |<- (timestamp, exchange.pub, -|
+ | | sig) |
+ | | |
+ | +---------------------------+ |
+ | | (M4) deposit verification | |
+ | +---------------------------+ |
+ | | |
+ |<----------- (sig) -----------| |
+ | | |
++---------------------------+ | |
+| (W3) payment verification | | |
++---------------------------+ | |
+ | | |
]]></artwork>
<t>where (without age restriction, policy and wallet data hash)</t>
<artwork><![CDATA[
@@ -765,54 +782,9 @@ Persist (contract, ⟨sigᵢ⟩, ⟨depositᵢ⟩)
]]></artwork>
<t>// TODO: explain CoinSelection</t>
<artwork><![CDATA[
-(M3) deposit check (merchant)
+(M3) deposit preparation (merchant)
Check Sum ⟨depositᵢ.contribution⟩ == contract.price
-Check Deposit(⟨depositᵢ⟩)
-msg = Gen-Msg(MERCHANT_PAYMENT_OK, h_contract)
-sig = Ed25519-Sign(merchant.priv, msg)
-]]></artwork>
- <artwork><![CDATA[
-(W3) payment verification (wallet)
-
-msg = Gen-Msg(MERCHANT_PAYMENT_OK, h_contract)
-Check Ed25519-Verify(merchant.pub, msg, sig)
-]]></artwork>
- </section>
- <section anchor="deposit">
- <name>Deposit performed by merchant</name>
- <t>// todo: add introductory text</t>
- <t>Deposit could also be used directly by a wallet with its own payto and a minimal contract.</t>
- <artwork><![CDATA[
- merchant exchange
-Knows exchange.pub Knows exchange.priv
-Knows merchant.priv Knows ⟨denomᵢ⟩
-Knows payto, wire_salt |
-Knows contract, ⟨depositᵢ⟩ |
- | |
-+--------------------------+ |
-| (M1) deposit preparation | |
-+--------------------------+ |
- | |
- |----------- /batch-deposit ------------>|
- | (info, h_contract, ⟨depositᵢ⟩ |
- | merchant.pub, sig) |
- | |
- | +-------------------------+
- | | (E1) deposit validation |
- | +-------------------------+
- | |
- |<--- (timestamp, exchange.pub, sig) ----|
- | |
-+---------------------------+ |
-| (M2) deposit verification | |
-+---------------------------+ |
- | |
-]]></artwork>
- <t>where (without age restriction, policy and wallet data hash)</t>
- <artwork><![CDATA[
-(M1) Deposit preparation (merchant)
-
info.time = contract.{timestamp, wire_deadline, refund_deadline}
info.wire = (payto, wire_salt)
h_contract = SHA-512(canonicalJSON(contract))
@@ -820,7 +792,7 @@ msg = Gen-Msg(MERCHANT_CONTRACT, h_contract)
sig = Ed25519-Sign(merchant.priv, msg)
]]></artwork>
<artwork><![CDATA[
-(E1) Deposit validation (exchange)
+(E1) deposit check (exchange)
h_wire = HKDF(info.wire.wire_salt, info.wire.payto, "merchant-wire-signature", 64)
for i in 0..n:
@@ -849,7 +821,7 @@ msg = Gen-Msg(EXCHANGE_CONFIRM_DEPOSIT,
sig = Ed25519-Sign(exchange.priv, msg)
]]></artwork>
<artwork><![CDATA[
-(M2) Deposit verification (merchant)
+(M2) deposit verification (merchant)
h_wire = HKDF(wire_salt, payto, "merchant-wire-signature", 64)
msg = Gen-Msg(EXCHANGE_CONFIRM_DEPOSIT,
@@ -859,6 +831,14 @@ msg = Gen-Msg(EXCHANGE_CONFIRM_DEPOSIT,
| Sum ⟨depositᵢ.contribution⟩
| SHA-512( ⟨depositᵢ.sig⟩ ) | merchant.pub ))
Check Ed25519-Verify(exchange.pub, msg, sig)
+msg = Gen-Msg(MERCHANT_PAYMENT_OK, h_contract)
+sig = Ed25519-Sign(merchant.priv, msg)
+]]></artwork>
+ <artwork><![CDATA[
+(W3) payment verification (wallet)
+
+msg = Gen-Msg(MERCHANT_PAYMENT_OK, h_contract)
+Check Ed25519-Verify(merchant.pub, msg, sig)
]]></artwork>
</section>
<section anchor="refund">
@@ -867,7 +847,7 @@ Check Ed25519-Verify(exchange.pub, msg, sig)
(cf. <xref target="payment"/>) and before the merchant has been paid out by the exchange (i.e., before <tt>contract.wire_deadline</tt>).
The merchant needs to approve the refund via its business logic,
and is free to decide the total amount of the refund
-as well as which coins' deposit operations (cf. <xref target="deposit"/>) are (potentially partly) invalidated.
+as well as which coins' deposit operations are (potentially partly) invalidated.
After the exchange has accepted the refund request,
the coins obtain their (partial) value back.
The wallet should proceed to refresh (cf. <xref target="refresh"/>) the coins before spending them again
@@ -978,7 +958,7 @@ refresh ⟨coinᵢ⟩
in exchange for one old <tt>coin</tt> of denomination <tt>denom</tt> from the exchange.
There are three reasons why a wallet needs to do this:</t>
<ol spacing="normal" type="1"><li>
- <t>Obtaining unlinkable change after using only a part of the coin's value during a payment (cf. <xref target="payment"/>) or deposit (cf. <xref target="deposit"/>),
+ <t>Obtaining unlinkable change after using only a part of the coin's value during a payment (cf. <xref target="payment"/>),
i.e. where <tt>contribution <= denom.value</tt></t>
</li>
<li>
@@ -1361,7 +1341,7 @@ if ⟨blind_sigᵢ⟩ returned:
<refcontent>National Institute of Standards and Technology (U.S.)</refcontent>
</reference>
</references>
- <?line 1403?>
+ <?line 1380?>
<section anchor="test-vectors">
<name>Test Vectors</name>
@@ -1371,7 +1351,7 @@ They are generated by going through the protocol operations in the following ord
<t>Withdraw two coins <tt>coin₀</tt> and <tt>coin₁</tt> from a single <tt>reserve</tt> (cf. <xref target="withdraw"/>).</t>
</li>
<li>
- <t>Pay for one <tt>order</tt> with the full value of <tt>coin₀</tt> and a partial value of <tt>coin₁</tt> (cf. <xref target="payment"/> and <xref target="deposit"/>).</t>
+ <t>Pay for one <tt>order</tt> with the full value of <tt>coin₀</tt> and a partial value of <tt>coin₁</tt> (cf. <xref target="payment"/>).</t>
</li>
<li>
<t>Refresh the now-dirty <tt>coin₁</tt> to two new coins <tt>coin₂</tt> and <tt>coin₃</tt> (cf. <xref target="refresh"/>).</t>
@@ -1399,265 +1379,263 @@ Education and Research (BMBF) within the project Concrete Contracts.</t>
</section>
</back>
<!-- ##markdown-source:
-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
-VzdxrRtvxCB4aEoFXayAnB7MC87wGleYBPEE2SQ2B2aDNAOmH3Q9DZe++U6l
-YWKKpE8DdRJmZC1dvYJNAvSks27Blafin53IHb2yC4MsCDjClPrUZXkAsK2s
-bLIOOWSOBToIJxRtpCIZA/tvZI8vdoUrJwYtQbG/CfIE1//QeMU9C/gA1TDD
-c/ySCsckZp0gS9Qxp6IX5Tvooy28Q52hRVY42AdYQywJhFl9eNwdSTnhFgvQ
-p85gTOhSnSao1tXladsNWTfSZ1jCxO4qUizpxq11Z5JsdY9pRd8qng2oK7Nf
-zc2/gXf/BCwO3gh2HPE9zd8A0UJfXvh/d9zBsg6iJ44e7MP/nx8/sjz5ZTD7
-tMLuyzhql9m5TL963bIbvoMg2Spn3ERySTatF8N9+znrD1Z0WNJTE6VHmC16
-LxnDcfS6RxJY0WVBkAx+fFo4G0nclyljCPOrBslusoHIXWXJept76F1sI5Cy
-CtK2JeeQBHzdccU2WjXnsqUs76kixlrhsEJeYz+8zZz1B2su82abAVZkRNTi
-zcA/ft2iaNWb/zpb4iab4W5lL3Eo6L3M3ADLspgwU8s3PO/8vKMNsJQbTTRY
-bwBOVglX74C3mfPN12lHg60gsLCCwGACZUkcXvP5tYrTYkYL3vXQob5G48PX
-kglaXca57Kv7GSq+t7X9WcszVScEqHRB9qyuiMJqxHg7PPyu8Bc0xCi2msMO
-xDSq5srz5FdLYtZKu6EJOVcMSzop+5ghyw4K2dmUwonxWAwI0Ml7kF4zqmsJ
-pl3vYXaJcWMqSxJqt9rORT2bUQocV9oDjzG7hLUU43iqMlAZOXQGy4mlbU+m
-AfqVIxynEwaUkTfDDLBCbMxS7V1tYMhCn93mKtitRsPYtYpcw2Q4Jl4FwRIq
-KoN2armQGd31LtRlOZWUgI7+RRzNqCgKeFNdzS4LVK3NMey12xYFJkgrphj3
-kdg62GsIr8z1ttjQA3XwXZXOqMK7FdeZlFKs53g2Azc8Ancb8CYVP+k/PQPv
-rm2FMiMSHyqD1E6GYTDb68/SMtN0NWca88qwpG4CWLCAMgENIFqKiVp/e/L0
-yJgJrXp47snhMZ4JnPb3nx6dHu/tnyK0pnVTvNPxp+YCnou0frXV3iG0jeE7
-1y6qx+/qeFaIxhDJ6dODpzvqHKTDyo9zWOh2Gz34ql41c4QViGIqWLAPnH4i
-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
-D8LvvKM0QFEt8Rc6vINN+f8B6tCuZDi5AAA=
+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
+oWmAbwXDLGYbZtLtNslBmzvp1pn2vDUB8jZzvvk66w/c2URPSz3hvmhiUvhx
+qalVgEIlFN08tM3tVuJxfTZtHWwpUsZFMcVkEyKkNi7fO0QNMM71/NKiX2v+
+OG+7pHwbcixY1mJxanriJrmjMDtNl+6LG5uz/mBVj6onaZjsHmnhSXx0vNeh
+cxrVcTB1wY7HdGP2TvEZveygavGhDS11gyqBUWdvenUBqYVjFaNVR39Eru9C
+K162mGHnfqGSQQLOdCdlLtBqTiHR/SBt9abSWDpemZ1xuhi7X6rwDLrtr1Bf
+AxuKrqnj8kGbBjM2OKfZ0iotRN18kqDXJspdRpoWzh3jfWp0I6KXCNR3ii8H
+6YztSfKNKp/lOD4bkTqndEl141ZPgjnYOkctmdk6mtoAhIweoomUGLu1dUUZ
+3U6kyh38sP9w7/Dbg/4kK8q+Rk+fDO8emJ9o7PcJ6WAlZVO0mtkhR6hi4vgh
+GnctMD+GYFbPFmAEGcuwzaqjo2KeYVCGoz4h0U2J1axTNfCQa2NcG96SRb8N
+zkGvQCjoxHJlwMWYQG66dsQGV9uoGMTHzn5k7jZtdOiqhnAQzePa0/x0Z3vn
+hZpaa5L1Jjt3tp0mTcm9dn+cddTXyikupGYJw1Nso48ibuQGorU5a02KGHDX
+oixh/Z6mdQdttqCdrm3PHIkYwADZXMEOkrmDirbVEYW1h/65XaF9gN/vPX58
+cNI/Ojg+OPrNQf/7RycP7x/tfd8h4QaWufJxaFBJZKCC/2ruFZhShqm1Pv+q
+Mu0JNhcWY+RjuuDm1aZj88/91W6rIKiTbm30A5N2zfKMeH/5WdvSJgyw/lqo
+g7kNuuc3gMUzlZOpGtP4I0w75YcDiPBWjEadL6/oqvabMsRfMXkZP7UcckcB
+NLnkqq0+7r77cR8dmOW0ENk5WuWIUfatemz97y5e6ycr11pzN2mQhgGuFw5S
+mqI9zxK2omRJCb4n0EQ+JYK0vLWOUHP2XKI7T14FeDh+LQrQGJKIzzCAET0L
+dC8ZQYETJQlmX1v7oUlDqsR/o0hHoHjb1fMH7MWtId2YYLUgd7OktOadH0e/
+VDsLAHP2mH5twwNt6geJjU/QMYIL6TSh2LV1HAZJLoPI8gx/bWjkuMKqqPGR
+DDMQAZVnDVQ6fFI5DMk194xLPfERb3vn9AsUD/clhYfR7chPXS9dRu69glzs
+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
-->