Parse the Discount Expression with JavaScript

āļŦāļēāļāļāļļāļāđāļāđāļāļāļđāđāļāļĢāļ°āļāļāļāļāļēāļĢ āļāļģāļĨāļąāļāļŦāļēāđāļāļĢāđāļāļĢāļĄāļāļąāļāļāļĩāđāļāđāđāļāļāļīāļāļāļēāļĢāļāļāļāļāļļāļ āļāļĄāļĄāļĩāļāļģāđāļāļ°āļāļģāļāļĩāđāļāļĒāļēāļāļāļ°āļāļāļ āļāđāļēāđāļāđāļāđāļāđāļāđāđāļĨāļ·āļāļāđāļāļĢāđāļāļĢāļĄāļāļĩāđāļāļąāļāļāļēāđāļāļĒāļāļāđāļāļĒāļāļĩāļāļ§āđāļē āļŦāļēāļāļāļļāļĢāļāļīāļāļāļāļāļāļļāļāđāļĄāđāđāļāđāđāļāđāļāļāļēāļĢāļāļēāļĒāļāļĨāļĩāļāļŦāļĢāļ·āļāđāļŦāđāļāļĢāļīāļāļēāļĢāļĨāļđāļāļāđāļēāļĢāļēāļĒāļĒāđāļāļĒ āđāļāđāļāđāļāļāļāļēāļĒāđāļŦāđāļāļąāļāļāļđāđāļāđāļēāļāļĩāđāđāļāļēāļāđāļāļģāļāļļāļĢāļāļīāļāđāļāđāļāļāļąāļ āđāļāļĒāđāļāļāļēāļ°āļāļĒāđāļēāļāļĒāļīāđāļāļŦāļēāļāļāļĒāļđāđāđāļāļāļĨāļļāđāļĄāļāļļāļĢāļāļīāļāļāļĩāđāđāļāđāļāļāļąāļāļŠāļđāļāđāļĨāļ·āļāļāļŠāļēāļ
āđāļāļ·āđāļāļŦāļĢāļ·āļāđāļĄāđāļ§āđāļēāđāļāļĢāđāļāļĢāļĄāļĄāļĩāļāļ·āđāļāđāļŠāļĩāļĒāļāļāļāļāļāđāļēāļāļāļĢāļ°āđāļāļĻ āļĄāļĩāđāļāļ·āđāļāļāđāļāļāļēāļĢāļāļēāļĒāļŦāļĨāļēāļĒāļāļĢāļāļĩāļāļĩāđāđāļāđāđāļĄāđāđāļāđāļŦāļĢāļ·āļāđāļĄāđāļŠāļēāļĄāļēāļĢāļāļĢāļāļāļĢāļąāļ āđāļĄāļ·āđāļāđāļāļāļāļēāļĢāđāļāđāđāļāļ·āđāļāļāđāļāļāļēāļĢāļāđāļēāļĢāļ°āļāļąāļāļāđāļāļāļāļīāđāļāđāļāđāļĄāļ·āļāļāđāļāļĒâ
āļāļĨāļĒāļļāļāļāļāļēāļĒāđāļāļīāļāđāļāļ·āđāļ āđāļāļāļĄāļēāļāļąāļāļĻāļēāļŠāļāļĢāđāļāļēāļĢāļāļąāđāļāļĢāļēāļāļēāļŠāļīāļāļāđāļē āđāļāđāļ§āļąāļāļāļ§āļēāļĄāļāļąāļāļĐāļ°āļāļģāļāļ§āļāļāđāļāļāļļāļāļāļēāļāļāļēāļĢāđāļāļīāļ āļāļĩāļāļāļđāđāđāļāđāļāļāļĩāđāļŠāļēāļĒāļāđāļēāļāļŠāļąāđāļ (āđāļāļīāļāļŦāļĄāļļāļāđāļ§āļĩāļĒāļāļāđāļāļĒ) āđāļĨāļ°āđāļāđāļāļāļąāļāļāļĩāđāļāļĢāļ°āļŠāļīāļāļāļīāļ āļēāļāđāļāļāļēāļĢāļāļīāļāļāļēāļĄāļŦāļāļĩāđ (āļ§āļēāļāļāļīāļĨāđāļāđāļāđāļāļīāļ)
āļŠāđāļ§āļāļĨāļāđāļāđāļāļāļĩāļāļŠāļĄāļĢāļ āļđāļĄāļīāļŦāļāļķāđāļ āļāļĩāđāđāļāđāļŠāļąāļāļāļĢāļ°āļĒāļļāļāļāļāļĢāļ°āļāļąāļāļāļēāļāļāļąāļāļĢāļ°āļĒāļ°āļāļĢāļ°āļāļīāļāđāļāļ·āđāļāļāđāļ§āļāļāļīāļāļāļ§āļēāļĄāđāļāđāđāļāļĢāļĩāļĒāļāđāļĨāļ°āļāļģāļĨāļēāļĒāļāļđāđāđāļāđāļāđāļāļāđāļ§āļāđāļ§āļĨāļēāļŠāļąāđāļ āđ
āļāļēāļāļāļĢāļąāđāļāļŠāđāļ§āļāļĨāļāđāļāđāļāļĢāļ°āđāļĒāļāļāđāđāļāđāļāļāļąāļāļāļĩāļŠāļģāļŦāļĢāļąāļāļŠāļ·āđāļāļŠāļēāļĢāļāļĩāđāđāļĢāļĩāļĒāļāļāđāļēāļĒ āđāļāđāļāļāļđāđāļāļąāļāļāļēāļĢāļāļģāļŦāļāļāļĢāļēāļāļēāļāļēāļĒāļāļĨāļĩāļāļĢāļēāļāļēāđāļāļĩāļĒāļ§ āđāļāļāļēāļĢāđāļāđāļāļĨāļģāļāļąāļāļāļąāđāļāļāļāļāļŦāđāļ§āļāđāļāđāļŠāļīāļāļāđāļē āļāđāļēāļŠāđāļ āļāđāļēāļāļĨāļĩāļ āļĢāļēāļĒāđāļŦāļāđ āļĢāļēāļĒāļĒāđāļāļĒ
āđāļāļ·āđāļāļāđāļāļŠāđāļ§āļāļĨāļāļāļĩāđāđāļāļāļāđāļēāļ
āļāļāļīāļāļēāļĒāļāļąāļ§āļāļĒāđāļēāļāļāļĢāļāļĩāđāļāđāļāļēāļāļāļĢāļīāļ
āļĨāļāđāļāļāļĢāđāđāļāđāļāļāđ
āđāļāđāđāļāđāļāļāđāļēāđāļāļāļĢāđāđāļāļāļāđāļāļēāļĄāļāļāļāļī āđāļāđāļ 15%
āļŦāļĨāļēāļĒāđāļŦāđāļāđāļāđāļĢāļ°āļāļāļāļąāđāļāļĢāļēāļāļēāļāļēāļĄāļāļĨāļļāđāļĄāļŠāļīāļāļāđāļēāđāļĨāļ°āļāļĨāļļāđāļĄāļĨāļđāļāļāđāļē āļŠāļ°āļāļ§āļāļāđāļāļāļēāļĢāļāļģāļŦāļāļāļĢāļēāļāļēāļāļēāļĒāđāļĨāļ°āļŠāļ·āđāļāļŠāļēāļĢāļāļąāļāļāļđāđāļāđāļē
āļĨāļāļŦāļĨāļēāļĒāļāļąāđāļ
āļĨāļāļŦāļĨāļēāļĒāļāļąāđāļāļĄāļąāļāļŦāļĄāļēāļĒāļāļķāļāļāļēāļĢāļĨāļāđāļĨāđāļ§āļĨāļāļāļĩāļāļāđāļāļāļāļąāļ āđāļāđāļ 10%5%
āđāļĢāļēāļĄāļąāļāđāļāđāļāļąāļāđāļāļ·āđāļāļāđāļāļāļīāđāļĻāļĐ āđāļāđāļ āđāļāļĢāđāļĄāļāļąāđāļāđāļĄāļ·āđāļāļāļ·āđāļāļāļēāļĄāđāļāļ·āđāļāļāđāļāļāļģāļŦāļāļ, āļāļĢāļāļĩāđāļĄāļ·āđāļāļāļģāļĢāļ°āđāļāđāļāđāļāļīāļāļŠāļ
āļĨāļāđāļāđāļāļāļēāļ
āđāļāđāļāļĢāļāļĩāļĨāļāļĄāļđāļĨāļāđāļēāļĢāļ§āļĄāļŠāļļāļāļāļī āļŦāļĢāļ·āļ āļĨāļāļĢāļēāļāļēāļāļēāļĒāļāđāļāļŦāļāđāļ§āļĒ āđāļāđāļ
15 āļŠāļģāļŦāļĢāļąāļāļĨāļāļāļĩāđāļĄāļđāļĨāļāđāļēāļĢāļ§āļĄ
5| āļŠāļģāļŦāļĢāļąāļāļĨāļāļāļĩāđāļĢāļēāļāļēāļāđāļāļŦāļāđāļ§āļĒ
āđāļāļĒāļāļąāđāļ§āđāļāđāļĄāđāļāđāļāļĒāļĄāļĩāđāļāļĢāđāļāđāļāļąāđāļāļĢāļēāļāļēāļāļēāļĒ āļĒāļāđāļ§āđāļāđāļāđāļāđāļāļāļāļīāļāļāļēāļĢāļāļĨāļēāļāļāļĩāđāļāļēāļĢāđāļŠāļāļāļāļąāļ§āđāļĨāļāļŠāđāļ§āļāļĨāļāđāļāļāļāļĩāđāļāļķāļāļāļđāļāļāļ§āļēāļĄāļŠāļāđāļāļĄāļēāļāļāļ§āđāļēāļāļąāļ§āđāļĨāļāļāļĩāđāđāļāđāļāđāļāļāļĢāđāđāļāļāļāđ āđāļāđāļ āļŠāļīāļāļāđāļēāļĢāļēāļāļē 1 āļŦāļĄāļ·āđāļāļāļēāļ āļĨāļ 999 āļāļēāļ āļāļķāļāļāļđāļāđāļāļāļ§āđāļē 10%
āļŦāļĨāļēāļĒāļāļĢāļąāđāļāļāļĩāđāđāļāļāļĄāļąāļāđāļāļīāļāđāļāļāļąāđāļāļāļāļāļāđāļāļĢāļāļāļĢāļēāļāļē āđāļāđāļ āļŠāļīāļāļāđāļēāļĢāļēāļāļē 125 āļāļēāļ āļāđāļāļĢāļāļāđāļŦāđāļĨāļ 5 āļāļēāļ āđāļŦāļĨāļ·āļāļāļīāđāļāļĨāļ° 120 āļāļēāļ āļŦāļĢāļ·āļ āļāļ·āđāļāļŠāļīāļāļāđāļē āļĢāļēāļāļē 125 āļāļēāļ 3 āļāļīāđāļ āļāđāļāļĢāļāļāđāļŦāđāļĨāļāļĒāļāļāļĢāļ§āļĄ 5 āļāļēāļ āđāļŦāļĨāļ·āļ 370 āļāļēāļ
āļĨāļāđāļĨāđāļ§āļāļąāļāđāļĻāļĐ
āđāļāđāļāļĢāļāļĩāļāļģāļāļ§āļāļŠāđāļ§āļāļĨāļāđāļĨāđāļ§āļĄāļĩāđāļĻāļĐāļŠāļāļēāļāļāđ āļāđāļāļāļāļēāļĢāđāļŦāđāļāļąāļāđāļĻāļĐāđāļāđāļāļāļģāļāļ§āļāđāļāđāļĄāļŦāļĢāļ·āļāđāļĻāļĐāļŠāļāļēāļāļāđāļāļĩāđāļŠāļēāļĄāļēāļĢāļāļāļāļāđāļāđ āđāļāđāļ 15%1~
1~ āļāļąāļāđāļĻāļĐāđāļŦāđāđāļāđāļĄāļāļēāļ
.25~ āļāļąāļāđāļĻāļĐāļāļĩāļĨāļ°āļŠāļĨāļķāļ (25 āļŠāļāļēāļāļāđ)
.01~ āļāļąāļāđāļŦāđāđāļāđāļāļāļĻāļāļīāļĒāļĄ 2 āļāļģāđāļŦāļāđāļ (1 āļŠāļāļēāļāļāđ) āļāļĢāļāļĩāļāļģāļāļ§āļāđāļĨāđāļ§āđāļāđāļāļĻāļāļīāļĒāļĄāļĄāļēāļāļāļ§āđāļē 2 āļāļģāđāļŦāļāđāļ
āļĨāļāđāļāļīāđāļĄāļāļīāļāļāđāļēāļĒ
āļāļĨāđāļēāļĒāļāļąāļāļĨāļāļŦāļĨāļēāļĒāļāļąāđāļāđāļāđāļāļąāđāļāļŠāļļāļāļāđāļēāļĒāļĨāļāđāļāđāļāđāļāļīāļāļāļēāļ āļāļĢāļāļĩāļāđāļāļĢāļāļāļāļąāļāđāļĻāļĐāļāļāļāļāļ āđāļāđāļ 15%3.75 āļŦāļĨāļąāļāļāļēāļāļĨāļ 15% āđāļĨāđāļ§āđāļāļāļāđāļāļĢāļāļāđāļŦāđāļĨāļāļāļĩāļ 3.75 āļāļēāļ
āļāļĢāļāļĩāļāļ·āđāļ
āļāļģāļŠāļąāđāļāļŠāđāļ§āļāļĨāļ āļŠāļēāļĄāļēāļĢāļāļāļĢāļ°āļĒāļļāļāļāđāđāļāđāđāļāļ·āđāļāļāļģāļāļ§āļāļāļĢāļāļĩāļāļ·āđāļ āđāļāđāļāđāļāđāļāļāļŠāļēāļĢāļĢāļąāļāđāļĨāļ°āļāđāļēāļĒāđāļāđāļāđāļ§āļĒ
āđāļāđāļāļģāļāļ§āļāļĨāļāļĒ (āđāļĄāđāđāļāđāļŦāļąāļāļĨāļāļāļąāļāļĄāļđāļĨāļāđāļēāļŠāļīāļāļāđāļē) āļāļĢāļāļĩāļāļģāļāļ§āļāļŦāļąāļāļ āļēāļĐāļĩ āļâ āļāļĩāđāļāđāļēāļĒ āđāļāđāļ =-3%
āđāļāđāļāļģāļāļ§āļāļĨāļāļĒ āļāļĢāļāļĩāļāļēāļĢāđāļāļāđāļēāļāļąāļāļĢāđāļāļĢāļāļīāļ āđāļāļĒāđāļāđāđāļāļĢāļ·āđāļāļāļŦāļĄāļēāļĒāļāļ§āļ āđāļāđāļ =+5%
āđāļāđāļāļģāļāļ§āļāļāļąāļāļĢāļēāđāļĨāļāđāļāļĨāļĩāđāļĒāļ āđāļāļĒāđāļāđāđāļāļĢāļ·āđāļāļāļŦāļĄāļēāļĒāļāļđāļ āđāļāđāļ =x34.4143

JavaScript code
āđāļāđāļāļāļĩāđāđāļāđāļāđāļāđāļāđāļāđāļē āđāļāļīāđāļāļāļģāļĄāļēāļāļĢāļąāļāļāļĢāļļāļāđāļŦāđāļĢāļāļāļĢāļąāļāļāļĢāļāļĩāļāļĢāļ°āļĒāļļāļāļāđāđāļāđāļāļģāļāļ§āļāļāļąāļāļĢāļēāđāļĨāļāđāļāļĨāļĩāđāļĒāļ āļāļīāļāļ§āđāļēāļāļēāļāđāļāđāļāļāļĢāļ°āđāļĒāļāļāđāļāļķāļāļāļģāļĄāļēāđāļāļĒāđāļāļĢāđ āđāļāļ·āđāļāļ§āđāļēāđāļāļĢāđāļāļĢāļĄāļāļąāļāļāļĩāļāļāļāđāļĄāļ·āļāļāđāļāļĒāļāļ°āđāļāđāļēāđāļāļ āļēāļĐāļēāļŠāđāļ§āļāļĨāļāđāļāđāļāļĄāļēāļāļĢāļāļēāļāđāļāļĩāļĒāļ§āļāļąāļ
āļĄāļĩāļāļąāļāļāđāļāļąāđāļāļŦāļĨāļąāļ parseDscExp āđāļĨāļ°āļāļąāļāļāđāļāļąāđāļāļĒāđāļāļĒ roundStep āļāļĩāđāđāļāđāļāļģāļāļ§āļāļāļąāļāđāļĻāļĐ (āđāļāļēāđāļāđāļāđāđāļāđāļāļāļąāļāļāđāļāļąāđāļāļāļĢāļĢāļāļāļĢāļ°āđāļĒāļāļāđāļāđāļ§āļĒāļāđāđāļāđ) āļāļĨāđāļāļŦāļĨāļąāļāļāļĩāđāļŠāļģāļāļąāļāļāļĒāļđāđāļāļĩāđāļāļēāļĢāđāļāđ RegExp āļāļąāļāļāđāļāļāļ§āļēāļĄāļŠāđāļ§āļāļĨāļāļāļāļāļĄāļēāđāļāđāļāļāļīāđāļ āđ āđāļāļ·āđāļāļāļģāļāļ§āļāļāļĩāļĨāļ°āļāļąāđāļāđāļāđāļĢāļ·āđāļāļĒ āđ āđāļāđ
roundStep
var roundStep = function(stepstr, val) {
var v = +(val || 0)
if (v && stepstr) {
var step = Math.abs(stepstr) || 1
var pmode = 'round'
if (stepstr[0]=='-')
pmode = 'floor'
if (stepstr[0]=='+')
pmode = 'ceil'
v = Math[pmode](v / step) * step
}
return v
}
parseDscExp
var parseDscExp = function (dscstr, val, pmode) {
var _parsing = function(dstr) {
if (!dstr)
return;
pmode = pmode || '-'
var segs = dstr.toUpperCase().split(/([=]?[-+]?(?:[0-9]*[.0-9])?[0-9]+[%'/X~]|[X~]?[-+]?(?:[0-9]*[.0-9])?[0-9]+|[~/])/)
var pmfn = {
'-' : function(v, xv) { return isNaN(xv)? v : v - (+xv) },
'+' : function(v, xv) { return isNaN(xv)? v : v + (+xv) },
'=' : function(v, xv) { return isNaN(xv)? v : +xv },
'X' : function(v, xv) { return isNaN(xv)? v : v * (+xv) },
"'" : function(v, xv) { return (isNaN(xv) || !(+xv))? v : v / (+xv) },
'~' : function(v, xv) { return roundStep((isNaN(xv) || !xv)? '.01' : xv, v ) },
}
var opfn = {
'%' : function(v, n, xfn) { return xfn(v, pmfn['X'](v, n) / 100) },
"'" : function(v, n, xfn) { return xfn(v, pmfn["'"](v, n)) },
'/' : function(v, n, xfn) { return xfn(v, n) },
'X' : function(v, n, xfn) { return pmfn['X'](v, n) },
'~' : function(v, n, xfn) { return pmfn['~'](v, n) },
}
for (var i = 1; i < segs.length; i+=2) {
var dsc = segs[i]
if (i==1 && /[^'X~]$/.test(dsc)) {
if ('-+'.indexOf(dsc[0])!= -1) {
pmode = dsc[0]
dsc = dsc.slice(1)
}
}
var pm = pmode
if (/^[=X~]/.test(dsc)) {
pm = dsc[0]
dsc = dsc.slice(1)
}
var op = '/'
if (/[%'/X~]$/.test(dsc)) {
op = dsc[dsc.length -1]
dsc = dsc.slice(0, -1)
}
var fn = opfn[op]
var pfn = pmfn[pm]
val = fn(val, dsc, pfn)
}
}
val = +(val || 0)
if (dscstr) {
dscstr = dscstr.split('')[0] // stripout comment
dscstr.split(/[s,]+/).forEach(_parsing)
}
return val
}
āđāļāđāļāļāļĩāļāļŠāđāļ§āļāļŦāļāļķāđāļāđāļāđāļāļāļąāļ§āļāļĒāđāļēāļāļāļēāļĢāļāļģāđāļāđāļāđāđāļāļāļāļąāļāļāđāļāļ āļŠāļēāļĄāļēāļĢāļāđāļāđāļāļāđāļāļāļ§āļēāļĄāļŠāđāļ§āļāļĨāļāļāđāļ§āļĒāļŠāļąāļāļāļĨāļąāļāļĐāļāđ | āđāļāđāļ 2 āļŠāđāļ§āļ āļŠāļģāļŦāļĢāļąāļāđāļāđāļāļāļģāļŠāļąāđāļāļĨāļāļĢāļēāļāļēāļāđāļāļŦāļāđāļ§āļĒāđāļĨāļ°āļĨāļāļĄāļđāļĨāļāđāļēāļĢāļ§āļĄ
āļāđāļēāļĄāļĩāļŠāđāļ§āļāļĨāļāļāļĩāđāļāļĒāļđāđāļŦāļāđāļēāļŠāļąāļāļāļĨāļąāļāļĐāļāđāļāļąāļāļāļĨāđāļēāļ§ āļāļ°āđāļāđāļĢāļēāļāļēāļāđāļāļŦāļāđāļ§āļĒāđāļāļāļģāļāļ§āļāļŠāđāļ§āļāļĨāļāđāļāļ·āđāļāļŦāļēāļĢāļēāļāļēāļāđāļāļŦāļāđāļ§āļĒāļŠāļļāļāļāļīāļāđāļāļ āđāļāļĒāđāļāđāļāļąāļāļāđāļāļąāđāļ parseDscExp āļŦāļēāļāļāļĒāļđāđāļāđāļēāļāļŦāļĨāļąāļāđāļāđāļāļģāļāļ§āļāļāļąāļāļĄāļđāļĨāļāđāļēāļĢāļ§āļĄ (āļĢāļēāļāļēāļāļđāļāļāļģāļāļ§āļ) āļāđāļ§āļĒāļāļąāļāļāđāļāļąāđāļāđāļāļĩāļĒāļ§āļāļąāļāļāļĩāļāļāļĢāļąāđāļ
āļāļēāļĄāļāļāļāļīāļāđāļēāđāļĄāđāļĄāļĩāļŠāļąāļāļāļĨāļąāļāļĐāļāđ | āļŦāļĄāļēāļĒāļāļķāļ āļŠāđāļ§āļāļĨāļāļĄāļđāļĨāļāđāļēāļĢāļ§āļĄ
// āļāļąāļ§āļāļĒāđāļēāļ āļŠāļīāļāļāđāļēāļĢāļēāļāļē 125 āļāļēāļ āļāļģāļāļ§āļ 3 āļāļīāđāļ āļŠāđāļ§āļāļĨāļ 5|10%
var price = 125
var qty = 3
var dsc = '5|10%'
// āđāļĒāļāļŠāđāļ§āļāļĨāļ ['5', '10%']
var dsegs = dsc.split('|')
var dsc2 = dsegs.pop()
var dsc1 = dsegs.join('|')
// āļāļģāļāļ§āļāļĢāļēāļāļēāļŠāļļāļāļāļī āļŠāđāļ§āļāļĨāļ '5' āļāļąāļāļĢāļēāļāļēāļāđāļāļŦāļāđāļ§āļĒ => 120
var netprice = parseDscExp(dsc1, price)
// āļāļģāļāļ§āļāļĄāļđāļĨāļāđāļēāļĢāļ§āļĄ 120 * 3 = 360
var amount = netprice * qty
// āļāļģāļāļ§āļāļĄāļđāļĨāļāđāļēāļŠāļļāļāļāļī āļŠāđāļ§āļāļĨāļ '10%' āļāļąāļāļĄāļđāļĨāļāđāļēāļĢāļ§āļĄ 360 => 324
var netamount = parseDscExp(dsc2, amount)
āļŠāļļāļāļāđāļēāļĒāļāļ·āļāļāļ§āļēāļĄāļāļĢāļīāļāļāļĩāđāļĒāđāļāļāđāļĒāđāļ āđāļĄāđāļĄāļĩāđāļāļĢāđāļāđāļŠāđāļ§āļāļĨāļāļāļąāļāđāļāđāļĄāļāļļāļāđāļāļ āđāļāđāļāļāļĩāđāļāļļāļāļŠāđāļēāļŦāđāļāļģāļāļ§āļāđāļāđāļŠāļēāļĢāļāļąāļ āļāļīāļāļāļēāļĢāđāļāđāļĨāļ°āđāļŦāđāļāļāđāļēāļāļāđāđāļĨāļ·āļāļāđāļāđāđāļāđāļŦāļāļķāđāļāļŦāļĢāļ·āļāļŠāļāļāļāļĢāļ°āļāļ§āļāļāđāļēāļāļāļąāļ āļŦāļĢāļ·āļāļāļēāļĄāļāļĩāđāđāļ§āļāļ§āļāļāļļāļĢāļāļīāļāđāļāļāđāļāļĩāļĒāļ§āļāļąāļāđāļāļēāđāļāđ āđāļāļĩāļĒāļāđāļāđāļāļģāļāļāļāļĄāļēāđāļĨāđāļ§āđāļāđāđāļāđāļāļąāđāļ§āđāļ āļāđāļ§āļĒāđāļŦāđāļĢāļāļāļĢāļąāļāļ§āļīāļāļĩāļāļģāļāļ§āļāļāļāļāļāļļāļĢāļāļīāļāđāļāļāļāļļāļāļāļĢāļ°āđāļ āļāđāļāđāļĄāļ·āļāļāđāļāļĒ āđāļāļĒāđāļĄāđāļāđāļāļāļĄāļĩāđāļāđāļāđāļāļāļēāļ°āļŦāļĨāļēāļĒāđāļ§āļāļĢāđāļāļąāđāļ
āļāđāļāļāļĩāļāļāļāļāļēāļĢāļāļāļāđāļāļāļŠāđāļ§āļāļĨāļāđāļŦāđāđāļāđāļ expression āļāļģāđāļŦāđāļāļāļāđāļāļāđāļāļĢāļāļŠāļĢāđāļēāļāļ āļēāļĐāļēāđāļāļīāđāļĄāđāļāļīāļĄāđāļāđāđāļāļāļāļēāļāļ āđāļāđāļ āļāļĢāļ§āļāļāļāļāļģāļ§āđāļē "āđāļāļĄ" āļāđāļāļēāļāļāļģāļāļ§āļāļāļģāļāļ§āļāđāļāļīāļāđāļāđāļ 0
āđāļĢāļ·āđāļāļāļĢāļēāļ§āļāđāļāđāļāļāļķāđāļāļāļĒāļđāđāļāļąāļāļāļļāļ āļāļģāđāļāļāļĢāļ°āļĒāļļāļāļāđāđāļāđ āļāļąāļāđāļāļĨāļāđāļāđāļ āļŦāļĢāļ·āļāļāļĢāļąāļāļāļĢāļļāļāđāļŦāđāļāļĩāļĒāļīāđāļāļāļķāđāļāđāļāđāļāļēāļĄāļāđāļāļāļāļēāļĢ


