āļāļąāļ§āļāđāļ§āļĒāđāļāļāļēāļĢ āļāđāļēāļ
āđāļĨāļ° āļŠāļĢāđāļēāļ
QR Prompt Pay āļāļēāļĄāļĄāļēāļāļĢāļāļēāļāļāļāļāļāļāļēāļāļēāļĢāđāļŦāđāļāļāļĢāļ°āđāļāļĻāđāļāļĒ BOT (Bank of Thailand) āđāļāļĒāļāđāļēāļāļāļīāļāļāļēāļāđāļāļāļŠāļēāļĢāļŠāļģāļāļąāļ 3 āļāļąāļ§āļāđāļēāļāļĨāđāļēāļāļāļĩāđ
āđāļāļĢāļāļĒāļēāļāđāļāļēāđāļāļāļđāđāļĒāļĩāđāļāļđāđāļĒāļģāļāļ°āđāļĢāļāđāļāļēāļĄāļŠāļāļēāļĒ āļāđāļēāļāļģāđāļĨāđāļ§āļāļĩāļŦāļĢāļ·āļāđāļāļāļāļļāļāļāļīāļāļāđāļāļēāļ
pull-request
āđāļāđāļēāļĄāļēāļāđāļ§āļĒāļāļ°āđāļāđāļāļāļĢāļ°āļāļļāļāļĄāļēāļ
āđāļāđāļāļāļąāļ§āļāļĩāđāđāļāđ .NET Standard 2.0 āļāļąāļāļāļąāđāļāđāļāļĢāđāļāđ .NET āđāļ§āļāļĢāđāļāļąāđāļāđāļŦāļāļāđāļĨāļāļāđāļāđāļāļāļąāļāļāļđāļāļ°āļ§āđāļēāļĢāļāļāļĢāļąāļāļŦāļĢāļ·āļāđāļāļĨāđāļē
Framework | Support version |
---|---|
.NET Core | 2.0 |
.NET Framework | 4.6.1 |
Mono | 5.4 |
Xamarin.iOS | 10.14 |
Xamarin.Mac | 3.8 |
Xamarin.Android | 8.0 |
Universal Windows Platform | 10.0.16299 |
Unity | 2018.1 |
QR āļāļēāļĄāļĄāļēāļāļĢāļāļēāļāļāļāļ EMVCo āđāļāđāđāļāđāļāđāļ§āđ 2 āļĨāļąāļāļĐāļāļ°āļāļēāļĢāđāļāđāļāļēāļāļāļ·āļ
- Static QR - āđāļāđāļ QR āļāļĩāđāđāļāđāļāđāļēāļĒāđāļāļīāļāđāļāđāļŦāļĨāļēāļĒāļāļĢāļąāđāļ
- Dynamic QR -āđāļāđāļ QR āļāļĩāđāđāļāđāļāļĢāļąāđāļāđāļāļĩāļĒāļ§āđāļĨāđāļ§āļāļīāđāļ
āļŠāļģāļŦāļĢāļąāļāđāļāđāļāđāļāļāļēāļĢāļŠāļĢāđāļēāļ QR āđāļāđāļĨāļ°āļĢāļđāļāđāļāļāļāđāļāļēāļĄāļāđāļēāļāļĨāđāļēāļāļāļĩāđāđāļŦāļĨāļ°
// Static QR
QrBuilder builder = PPay.StaticQR;
// Dynamic QR
QrBuilder builder = PPay.DynamicQR;
āļāļąāļ§āđāļāđāļāļāļĩāđāđāļāļĩāļĒāļāđāļ§āđāđāļāđāđāļāļīāđāļĄāļāļ§āļēāļĄāļŠāļēāļĄāļēāļĢāļāđāļāļāļēāļĢ āļāļāļāļāļ§āļēāļĄāļŦāļĄāļēāļĒ āļāļāļ EMVCo
āđāļĨāļ° PromptPay
āđāļāļēāđāļ§āđāļāđāļ§āļĒ āđāļāļĒāļŠāļēāļĄāļēāļĢāļāđāļĢāļĩāļĒāļāđāļāđāļāļēāļāļāļēāļĄāļāđāļēāļāļĨāđāļēāļ
// āļāļąāļ§āļāđāļēāļ QR āļāļēāļĄāļĄāļēāļāļĢāļāļēāļ EMVCo āđāļĨāļ° PromptPay
QrReader reader = PPay.Reader;
1.āļŠāļĢāđāļēāļ QR āđāļāļāđāļāļīāļāļŠāļģāļŦāļĢāļąāļāļāļļāļāļāļĨāļāļąāđāļ§āđāļ (Credit Transfer - Tag 29)
āđāļāđāļāļāļēāļĢāđāļāļāđāļāļīāļāļĢāļ°āļŦāļ§āđāļēāļāļāļĢāļ°āļāļēāļāļāļāļąāđāļ§āđāļāđāļĄāđāđāļāļĩāđāļĒāļ§āļāļąāļāļāļļāļĢāļāļīāļāļŦāļĢāļ·āļāļāļĢāļīāļĐāļąāļāđāļāđ āđāļāļĒāļāļēāļĢāļŠāļĢāđāļēāļ QR āļāļĢāļ°āđāļ āļāļāļĩāđ āļāļ°āļāđāļāļāđāļĢāļĩāļĒāļāđāļāđāļāđāļēāļāđāļĄāļāļāļ GetCreditTransferQR()
āļāļēāļĄāđāļāđāļāļāđāļēāļāļĨāđāļēāļāļāļĩāđ
// āļŠāļĢāđāļēāļ QR āđāļāļāđāļāļīāļāļŠāļģāļŦāļĢāļąāļāļāļļāļāļāļĨāļāļąāđāļ§āđāļ
var qr = PPay.StaticQR.GetCreditTransferQR();
āļāļēāļĄāļĄāļēāļāļĢāļāļēāļāļāļāļāļāļāļēāļāļēāļĢāđāļŦāđāļāļāļĢāļ°āđāļāļĻāđāļāļĒ āđāļĢāļēāļŠāļēāļĄāļēāļĢāļāļĢāļ°āļāļļāļāļđāđāļĢāļąāļāđāļāļīāļāđāļāđ 4 āļ§āļīāļāļĩāļāļ·āļ āđāļāļāļĢāđāļĄāļ·āļāļāļ·āļ
, āđāļĨāļāļāļĢāļ°āļāļģāļāļąāļ§āļāļĢāļ°āļāļēāļāļ
, āđāļĨāļāļāļąāļāļāļĩāļāļāļēāļāļēāļĢ
āđāļĨāļ° e-wallet
āļāļēāļĄāđāļāđāļāļāļąāļ§āļāļĒāđāļēāļāļāđāļēāļāļĨāđāļēāļāļāļĩāđ
- āļĢāļ°āļāļļāļāļđāđāļĢāļąāļāđāļāļīāļāļāđāļ§āļĒ
āđāļāļāļĢāđāļĄāļ·āļāļāļ·āļ
// āđāļāļāđāļāļīāļāļāļĢāđāļāļĄāđāļāļĒāđāđāļāļāļĩāđ āđāļāļāļĢāđāļĄāļ·āļāļāļ·āļ 091-418-5401 (āļāļģāļāļ§āļāđāļāļīāļāļāļĩāđāļāļ°āđāļāļāļāļđāđāđāļāđāļāđāļāļāļāļĢāļāļāđāļāļ)
var qr = PPay.StaticQR.MobileNumber("0914185401").GetCreditTransferQR();
- āļĢāļ°āļāļļāļāļđāđāļĢāļąāļāđāļāļīāļāļāđāļ§āļĒ
āđāļĨāļāļāļĢāļ°āļāļģāļāļąāļ§āļāļĢāļ°āļāļēāļāļ
// āđāļāļāđāļāļīāļāļāļĢāđāļāļĄāđāļāļĒāđāđāļāļāļĩāđ āđāļĨāļāļāļĢāļ°āļāļģāļāļąāļ§āļāļĢāļ°āļāļēāļāļ 0-0000-00000-00-0 (āļāļģāļāļ§āļāđāļāļīāļāļāļĩāđāļāļ°āđāļāļāļāļđāđāđāļāđāļāđāļāļāļāļĢāļāļāđāļāļ)
var qr = PPay.StaticQR.NationalId("0000000000000").GetCreditTransferQR();
- āļĢāļ°āļāļļāļāļđāđāļĢāļąāļāđāļāļīāļāļāđāļ§āļĒ
āđāļĨāļāļāļąāļāļāļĩāļāļāļēāļāļēāļĢ
// āđāļāļāđāļāļīāļāļāļĢāđāļāļĄāđāļāļĒāđāđāļāļāļĩāđ āđāļĨāļāļāļąāļāļāļĩāļāļāļēāļāļēāļĢ 0000000000 (āļāļģāļāļ§āļāđāļāļīāļāļāļĩāđāļāļ°āđāļāļāļāļđāđāđāļāđāļāđāļāļāļāļĢāļāļāđāļāļ)
var qr = PPay.StaticQR.BankAccount("000000000000000").GetCreditTransferQR();
- āļĢāļ°āļāļļāļāļđāđāļĢāļąāļāđāļāļīāļāļāđāļ§āļĒ
e-wallet
// āđāļāļāđāļāļīāļāļāļĢāđāļāļĄāđāļāļĒāđāđāļāļāļĩāđ e-Wallet Id 000000000000000 (āļāļģāļāļ§āļāđāļāļīāļāļāļĩāđāļāļ°āđāļāļāļāļđāđāđāļāđāļāđāļāļāļāļĢāļāļāđāļāļ)
var qr = PPay.StaticQR.EWallet("000000000000000").GetCreditTransferQR();
āđāļĢāļēāļŠāļēāļĄāļēāļĢāļāļŠāļĢāđāļēāļ QR āļāļĩāđāļĄāļĩāļāļēāļĢāļāļģāļŦāļāļāđāļāļīāļāļāļĩāđāļāđāļāļāļāđāļēāļĒāđāļāđāļāļāđāļēāļāļēāļĒāļāļąāļ§āđāļāđāđāļĨāļĒ āđāļāļĒāļāļēāļĢāđāļĢāļĩāļĒāļāđāļāđāđāļĄāļāļāļ Amount()
āļāļēāļĄāđāļāđāļāļāļąāļ§āļāļĒāđāļēāļāļāđāļēāļāļĨāđāļēāļ
// āđāļāļāđāļāļīāļāļāļĢāđāļāļĄāđāļāļĒāđāđāļāļāļĩāđ āđāļāļāļĢāđāļĄāļ·āļāļāļ·āļ 091-418-5401 āļāļģāļāļ§āļ 50 āļāļēāļ
var qr = PPay.StaticQR.MobileNumber("0914185401").Amount(50).GetCreditTransferQR();
// āđāļāļāđāļāļīāļāļāļĢāđāļāļĄāđāļāļĒāđāđāļāļāļĩāđ āđāļĨāļāļāļĢāļ°āļāļģāļāļąāļ§āļāļĢāļ°āļāļēāļāļ 0-0000-00000-00-0 āļāļģāļāļ§āļ 50 āļāļēāļ
var qr = PPay.StaticQR.NationalId("0000000000000").Amount(50).GetCreditTransferQR();
// āđāļāļāđāļāļīāļāļāļĢāđāļāļĄāđāļāļĒāđāđāļāļāļĩāđ āđāļĨāļāļāļąāļāļāļĩāļāļāļēāļāļēāļĢ 0000000000 āļāļģāļāļ§āļ 50 āļāļēāļ
var qr = PPay.StaticQR.BankAccount("000000000000000").Amount(50).GetCreditTransferQR();
// āđāļāļāđāļāļīāļāļāļĢāđāļāļĄāđāļāļĒāđāđāļāļāļĩāđ e-Wallet Id 000000000000000 āļāļģāļāļ§āļ 50 āļāļēāļ
var qr = PPay.StaticQR.EWallet("000000000000000").Amount(50).GetCreditTransferQR();
āļāļĢāļāļĩāļāļĩāđāđāļāđāļ QR āļāļĢāļ°āđāļ āļ Merchant Presented QR āļŠāļēāļĄāļēāļĢāļāļāļģāļŦāļāļāđāļāļĒāđāļĢāļĩāļĒāļāđāļāđāđāļĄāļāļāļ MerchantPresentedQR()
var qr = PPay.StaticQR.MerchantPresentedQR().GetCreditTransferQR();
āļāļĢāļāļĩāļāļĩāđāđāļāđāļ QR āļāļĢāļ°āđāļ āļ Customer Presented QR āļŠāļēāļĄāļēāļĢāļāļāļģāļŦāļāļāđāļāļĒāđāļĢāļĩāļĒāļāđāļāđāđāļĄāļāļāļ CustomerPresentedQR()
var qr = PPay.StaticQR.CustomerPresentedQR().GetCreditTransferQR();
āđāļāđāļāļāļēāļĢāļŠāļĢāđāļēāļ QR āļŠāļģāļŦāļĢāļąāļāđāļĢāļĩāļĒāļāđāļāđāļāđāļāļīāļāļāļēāļ āļĢāđāļēāļāļāđāļē/āļāļĢāļīāļĐāļąāļ āđāļāļĒāļāļēāļĢāļŠāļĢāđāļēāļ QR āļāļĢāļ°āđāļ āļāļāļĩāđ āļāļ°āļāđāļāļāđāļĢāļĩāļĒāļāđāļāđāļāđāļēāļāđāļĄāļāļāļ GetBillPaymentQR()
āļāļēāļĄāđāļāđāļāļāđāļēāļāļĨāđāļēāļāļāļĩāđ
// āļŠāļĢāđāļēāļ QR āļŠāļģāļŦāļĢāļąāļāļāļļāļĢāļāļīāļ
var qr = PPay.StaticQR.GetBillPaymentQR();
āļāļēāļĄāļĄāļēāļāļĢāļāļēāļāļāļāļāļāļāļēāļāļēāļĢāđāļŦāđāļāļāļĢāļ°āđāļāļĻāđāļāļĒ āļāļąāļ§ QR āļāļĢāļ°āđāļ āļāļāļĩāđāļŠāļēāļĄāļēāļĢāļāļāļģāļŦāļāļāļāļđāđāļĢāļąāļāđāļāļīāļāđāļāđ 2 āļ§āļīāļāļĩāļāļ·āļ āļĢāļŦāļąāļŠāļāļĢāļ°āļāļģāļāļąāļ§āļāļĢāļ°āļāļēāļāļ
āļŦāļĢāļ·āļ āđāļĨāļāļāļĢāļ°āļāļģāļāļąāļ§āļāļđāđāđāļŠāļĩāļĒāļ āļēāļĐāļĩ
āļāļēāļĄāļāđāļ§āļĒāļĢāļŦāļąāļŠāļĢāđāļēāļāļŠāļēāļāļē (suffix) āļāđāļāļāđāļēāļĒ 2 āļāļąāļ§ āđāļĨāļ°āļĢāļŦāļąāļŠāļāđāļēāļāļāļīāļāđāļāļ·āđāļāđāļāļēāđāļ§āđāļĒāļ·āļāļĒāļąāļāļāļąāļāļāļāļēāļāļēāļĢāļāļĢāļāļĩāļĄāļĩāļāļąāļāļŦāļē āļāļēāļĄāđāļāđāļāļāļąāļ§āļāļĒāđāļēāļāļāđāļēāļāļĨāđāļēāļāļāļĩāđ
- āļĢāļ°āļāļļāļāļđāđāļĢāļąāļāđāļāļīāļāļāđāļ§āļĒ
āļĢāļŦāļąāļŠāļāļĢāļ°āļāļģāļāļąāļ§āļāļĢāļ°āļāļēāļāļ
// āļāđāļēāļĒāđāļāļīāļāļāļĢāđāļāļĄāđāļāļĒāđāđāļāļāļĩāđ āļĢāļŦāļąāļŠāļāļĢāļ°āļāļēāļāļ 0-0000-00000-00-0 āļĢāļŦāļąāļŠāļĢāđāļēāļāļŠāļēāļāļē 99 (2 āļŦāļĨāļąāļ)
// āļĢāļŦāļąāļŠāļāđāļēāļāļāļīāļ 1: 1234, āļĢāļŦāļąāļŠāļāđāļēāļāļāļīāļ 2: 5678
var qr = PPay.StaticQR
.NationalId("0000000000000")
.BillerSuffix("99")
.BillRef1("1234")
.BillRef2("5678")
.GetBillPaymentQR();
- āļĢāļ°āļāļļāļāļđāđāļĢāļąāļāđāļāļīāļāļāđāļ§āļĒ
āđāļĨāļāļāļĢāļ°āļāļģāļāļąāļ§āļāļđāđāđāļŠāļĩāļĒāļ āļēāļĐāļĩ
// āļāđāļēāļĒāđāļāļīāļāļāļĢāđāļāļĄāđāļāļĒāđāđāļāļāļĩāđ āđāļĨāļāļāļĢāļ°āļāļģāļāļąāļ§āļāļđāđāđāļŠāļĩāļĒāļ āļēāļĐāļĩ 0-0000-00000-00-0 āļĢāļŦāļąāļŠāļĢāđāļēāļāļŠāļēāļāļē 99 (2 āļŦāļĨāļąāļ)
// āļĢāļŦāļąāļŠāļāđāļēāļāļāļīāļ 1: 1234, āļĢāļŦāļąāļŠāļāđāļēāļāļāļīāļ 2: 5678 (āļāļģāļāļ§āļāđāļāļīāļāļāļĩāđāļāļ°āđāļāļāļāļđāđāđāļāđāļāđāļāļāļāļĢāļāļāđāļāļ)
var qr = PPay.StaticQR
.TaxId("000000000000099")
.BillerSuffix("99")
.BillRef1("1234")
.BillRef2("5678")
.GetBillPaymentQR();
āđāļĢāļēāļŠāļēāļĄāļēāļĢāļāļŠāļĢāđāļēāļ QR āļāļĩāđāļĄāļĩāļāļēāļĢāļāļģāļŦāļāļāđāļāļīāļāļāļĩāđāļāđāļāļāļāđāļēāļĒāđāļāđāļāļāđāļēāļāļēāļĒāļāļąāļ§āđāļāđāđāļĨāļĒ āđāļāļĒāļāļēāļĢāđāļĢāļĩāļĒāļāđāļāđāđāļĄāļāļāļ Amount()
āļāļēāļĄāđāļāđāļāļāļąāļ§āļāļĒāđāļēāļāļāđāļēāļāļĨāđāļēāļ
// āļāđāļēāļĒāđāļāļīāļāļāļĢāđāļāļĄāđāļāļĒāđāđāļāļāļĩāđ āđāļĨāļāļāļĢāļ°āļāļģāļāļąāļ§āļāļđāđāđāļŠāļĩāļĒāļ āļēāļĐāļĩ 0-0000-00000-00-0 āļĢāļŦāļąāļŠāļĢāđāļēāļāļŠāļēāļāļē 99 (2 āļŦāļĨāļąāļ)
// āļĢāļŦāļąāļŠāļāđāļēāļāļāļīāļ 1: 1234, āļĢāļŦāļąāļŠāļāđāļēāļāļāļīāļ 2: 5678 āļāļģāļāļ§āļ 50 āļāļēāļ
var qr = PPay.StaticQR
.TaxId("000000000000099")
.BillerSuffix("99")
.BillRef1("1234")
.BillRef2("5678")
.Amount(50)
.GetBillPaymentQR();
āļāļĢāļāļĩāļāļĩāđāđāļāđāļ QR āļāļĢāļ°āđāļ āļāđāļāđ Domestic Merchant āļŠāļēāļĄāļēāļĢāļāļāļģāļŦāļāļāđāļāļĒāđāļĢāļĩāļĒāļāđāļāđāđāļĄāļāļāļ DomesticMerchant()
var qr = PPay.StaticQR.DomesticMerchant().GetBillPaymentQR();
āļāļĢāļāļĩāļāļĩāđāđāļāđāļ QR āļāļĢāļ°āđāļ āļāđāļāđ Cross-Border Merchant āļŠāļēāļĄāļēāļĢāļāļāļģāļŦāļāļāđāļāļĒāđāļĢāļĩāļĒāļāđāļāđāđāļĄāļāļāļ CrossBorderMerchant()
var qr = PPay.StaticQR.CrossBorderMerchant().GetBillPaymentQR();
āđāļāļāļĢāļāļĩāļāļĩāđāđāļĢāļēāđāļāđāļĢāļąāļ QR code āļāļĩāđāđāļāđāļāļāđāļāļāļ§āļēāļĄāļĒāļēāļ§āđāđāļāđāļēāļĄāļē āđāļĨāđāļ§āđāļĢāļēāļāđāļāļāļāļēāļĢāļĢāļđāđāļāļ§āļēāļĄāļŦāļĄāļēāļĒāļāļāļāļĄāļąāļ āđāļĢāļēāļŠāļēāļĄāļēāļĢāļāđāļĢāļĩāļĒāļāđāļāđāļāļēāļāļāļąāļ§ QR Reader āđāļāđāļāđāļ§āļĒāļāļģāļŠāļąāđāļāļāđāļēāļāļĨāđāļēāļāļāļĩāđ (āļāļģāļŠāļąāđāļāļāļĩāđāļĢāļāļāļĢāļąāļāļĄāļēāļāļĢāļāļēāļ EMVCo
āđāļĨāļ° PromptPay
)
// QR āđāļāļāđāļāļīāļāļāļĢāđāļāļĄāđāļāļĒāđāđāļāļĒāļąāļāđāļāļāļĢāđāđāļāļĢ 0914185401 āļāļģāļāļ§āļāđāļāļīāļ 50 āļāļēāļ
var qr = "00020101021229370016A000000677010111011300669141854015303764540550.005802TH630401F8";
var model = PPay.Reader.Read(qr);
āļāļĨāļĨāļąāļāļāđ
{
"Segments":
[
{
"RawValue": "000201",
"Id": "00",
"LengthCode": "02",
"Value": "01"
},
{
"RawValue": "010212",
"Id": "01",
"LengthCode": "02",
"Value": "12"
},
{
"RawValue": "29370016A00000067701011101130066914185401",
"Id": "29",
"LengthCode": "37",
"Value": "0016A00000067701011101130066914185401"
},
{
"RawValue": "5303764",
"Id": "53",
"LengthCode": "03",
"Value": "764"
},
{
"RawValue": "540550.00",
"Id": "54",
"LengthCode": "05",
"Value": "50.00"
},
{
"RawValue": "5802TH",
"Id": "58",
"LengthCode": "02",
"Value": "TH"
},
{
"RawValue": "630401F8",
"Id": "63",
"LengthCode": "04",
"Value": "01F8"
}
],
"PayloadFormatIndicator": "01",
"PointOfInitiationMethod": "12",
"MerchantAccountInformation": "0016A00000067701011101130066914185401",
"MerchantCategoryCode": "undefine",
"TransactionCurrency": "764",
"TransactionAmount": "50.00",
"TipOrConvenienceIndicator": "undefine",
"ValueOfConvenienceFeeFixed": "undefine",
"ValueOfConvenienceFeePercentage": "undefine",
"CountryCode": "TH",
"MerchantName": "undefine",
"MerchantCity": "undefine",
"PostalCode": "undefine",
"AdditionalData": "undefine",
"CRC": "01F8",
"MerchantInformationLanguageTemplate": "undefine",
"RFU": "undefine",
"UnreservedTemplates": "undefine",
"Reusable": true,
"Currency": "THB",
"CreditTransfer": {
"MobileNumber": "66914185401",
"NationalIdOrTaxId": null,
"EWalletId": null,
"BankAccount": null,
"OTA": "",
"MerchantPresentedQR": true
},
"BillPayment": null
}
Feature | āļŠāļāļēāļāļ° | āļŦāļĄāļēāļĒāđāļŦāļāļļ |
---|---|---|
āļŠāļĢāđāļēāļ Bill Payment | āđāļāđāļāļēāļāđāļāđ | āđāļāļŠāđāļāļŠāļĒāļąāļāđāļĄāđāļāļĢāļāļāļāļĨāļļāļĄāļāļ |
āļŠāļĢāđāļēāļ Transfer with PromptPay ID | āđāļāđāļāļēāļāđāļāđ | āđāļāļŠāđāļāļŠāļĒāļąāļāđāļĄāđāļāļĢāļāļāļāļĨāļļāļĄāļāļ + āļāļąāļāđāļāļāļĢāđāđāļāļĢāļāļēāļāđāđāļāļāđāļāļ |
āļāļāļāļāļ§āļēāļĄāļŦāļĄāļēāļĒ QR | āđāļāđāļāļēāļāđāļāđ | āđāļāļŠāđāļāļŠāļĒāļąāļāđāļĄāđāļāļĢāļāļāļāļĨāļļāļĄāļāļ + āļĒāļąāļāļāļāļāđāļĄāđāļāļĢāļāļāļļāļāļāļīāļĨāļāđ |
Validators & Suggestion | āļĒāļąāļāđāļĄāđāđāļāđāļāļģ |