12 рдИрдПрд╕ 10 рдореЗрдВ 12 рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВ

рдпрд╣рд╛рдБ рдкрд░ рдордзреНрдпрдо рдбреЙрдЯ рдХреЙрдо рдкрд░ рдХрд╛рд░реНрд▓реЛрд╕ рдХреИрдмрд▓реЗрд░реЛ рдХреЗ рдмреНрд▓реЙрдЧ рдХреЗ рдПрдХ рд▓реЗрдЦ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рд╣реИред рд▓реЗрдЦрдХ рд╣рдореЗрдВ рдЙрди рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рдПрдЧрд╛ рдЬреЛ 2019 рдИрдПрд╕ 10 рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреА рдереАрдВред



ES10 2019 рдХреЗ рд▓рд┐рдП ECMAScript рдХрд╛ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рд╣реИред рдЗрд╕рдореЗрдВ 2015 рдореЗрдВ рдЬрд╛рд░реА рдХрд┐рдП рдЧрдП ES6 рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдХрдИ рдирд╡рд╛рдЪрд╛рд░ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рдХрдИ рдЙрдкрдпреЛрдЧреА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред

рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, ES10 рдореЗрдВ рдкреЗрд╢ рдХреА рдЧрдИ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рд╕рд░рд▓ рдХреЛрдб рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЖрдк рдЙрдиреНрд╣реЗрдВ рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╡рд░рдг рдХреЗ рдмрд┐рдирд╛ рдЬрд▓реНрджреА рд╕реЗ рд╕рдордЭ рд╕рдХрддреЗ рд╣реИрдВред рдмреЗрд╢рдХ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдмреБрдирд┐рдпрд╛рджреА рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЬреНрдЮрд╛рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред

ES2019 рдореЗрдВ рдирдИ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реИрдВ:

  • Array#{flat,flatMap}
  • Object.fromEntries
  • String#{trimStart,trimEnd}
  • Symbol#description
  • рд╡реИрдХрд▓реНрдкрд┐рдХ рдмрд╛рдзреНрдпрдХрд╛рд░реА try { } catch {} //
  • JSON тКВ ECMAScript
  • рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЧрдард┐рдд JSON.stringify
  • рд╕реНрдерд┐рд░ Array#sort
  • рдЕрджреНрдпрддрди рдлрд╝рдВрдХреНрд╢рди #String
  • BigInt - рд╕рд░рд▓ рдкреНрд░рдХрд╛рд░ (рдЪрд░рдг 3)
  • рдЧрддрд┐рд╢реАрд▓ рдЖрдпрд╛рдд (рдЪрд░рдг 3)
  • рдорд╛рдирдХреАрдХреГрдд global This рд╡рд╕реНрддреБ (рдЪрд░рдг 3)ред

Array.flat () рдФрд░ Array.flatMap ()


рджреЛ рдирдП Array рддрд░реАрдХреЗ рд╣реИрдВ:

  • Array.flat() рд╡рд┐рдзрд┐ рдПрдХ рдирдИ рд╕рд░рдгреА рджреЗрддреА рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдиреЗрд╕реНрдЯреЗрдб Array.flat() рд╕рднреА рддрддреНрд╡реЛрдВ рдХреЛ рдкреБрди: рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд╣рд░рд╛рдИ рд╕реНрддрд░ рддрдХ рдмрдврд╝рд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
  • Array.flatMap() рд╡рд┐рдзрд┐ рдкрд╣рд▓реЗ рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд▓рд╛рдЧреВ рдХрд░рддреА рд╣реИ, рдФрд░ рдлрд┐рд░ рдкрд░рд┐рдгрд╛рдо рдХреЛ рдПрдХ рдлреНрд▓реИрдЯ рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддреА рд╣реИ рдФрд░ рдЗрд╕реЗ рдПрдХ рдирдП рд╕рд░рдгреА рдореЗрдВ Array.flatMap() ред рдпрд╣ map() рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рдорд╛рди рд╣реИ, рдЗрд╕рдХреЗ рдмрд╛рдж flat() рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ 1 рдХреЗ рдЧрд╣рди рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди flatMap() рдЕрдзрд┐рдХ рдмрд╛рд░ рдЕрдзрд┐рдХ рдХреБрд╢рд▓ рд╣реЛрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рджреЛрдиреЛрдВ рддрд░реАрдХреЛрдВ рдХреЛ рдПрдХ рд╡рд┐рдзрд┐ рдореЗрдВ рдЬреЛрдбрд╝рддрд╛ рд╣реИред



Object.fromEntries ()


рдПрдХ рдХреЛрдб рд╕реВрдЪреА рдФрд░ рдореВрд▓реНрдп рдЬреЛрдбрд╝реЗ рдХреЛ рдПрдХ рд╡рд╕реНрддреБ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддрд╛ рд╣реИред



String.prototype.matchAll


рдЬрдм рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдПрдХ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд╕рд╛рде рдорд┐рд▓рд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдорд┐рд▓рд╛рди рд╕рдореВрд╣ рд╕рд╣рд┐рдд, рд╕рднреА рдкрд░рд┐рдгрд╛рдореЛрдВ рдкрд░ matchAll() рд╡рд┐рдзрд┐ matchAll() рджреЗрддрд╛ рд╣реИред



String.trimStart () рдФрд░ String.trimEnd ()


String рд╕реЗ рд░рд┐рдХреНрддрд┐рдпрд╛рдБ рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рджреЛ рдирдИ String рд╡рд┐рдзрд┐рдпрд╛рдБ рд╣реИрдВ:

  • trimStart() рд╡рд┐рдзрд┐ рдПрдХ рдкрдВрдХреНрддрд┐ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рд╕реНрдерд╛рди рдХреЛ рд╣рдЯрд╛ рджреЗрддреА рд╣реИред
  • trimEnd() рд╡рд┐рдзрд┐ рдПрдХ рдкрдВрдХреНрддрд┐ рдХреЗ рдЕрдВрдд рдореЗрдВ рд╕реНрдерд╛рди рдХреЛ рд╣рдЯрд╛ рджреЗрддреА рд╣реИред



Symbol.Description


Symbol рд╡рд┐рд╡рд░рдг рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рд╡рд┐рдХрд▓реНрдк рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ред рдЕрдм, Symbol рдмрдирд╛рддреЗ рд╕рдордп, рдЖрдк рд╡рд┐рд╡рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдкрдВрдХреНрддрд┐ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ - рдИрдПрд╕ 10 рдореЗрдВ рдЗрд╕ рд╕реВрдЪрдХ рддрдХ рдкрд╣реБрдВрдЪ рд╣реИред



рд╡реИрдХрд▓реНрдкрд┐рдХ try/catch рдмрд╛рдзреНрдпрдХрд╛рд░реА рдмрдВрдзрди


рдкрд╣рд▓реЗ, try/catch рдирд┐рд░реНрдорд╛рдг рд╕реЗ catch рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рдХреЛ рдПрдХ рдЪрд░ рдХреА рдЬрд░реВрд░рдд рдереАред рдЖрдЬ, рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдмрдирд╛рдП рдмрд┐рдирд╛ try/catch рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред



JSON тКВ ECMAScript


Unescaped рд▓рд╛рдЗрди рд╡рд┐рднрд╛рдЬрдХ U+2028 рд▓рд┐рдП рд╡рд░реНрдг рдФрд░ рдкреИрд░рд╛ рд╡рд┐рднрд╛рдЬрдХ U+2029 ECMAScript рдХреЗ рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдореМрдЬреВрдж рдирд╣реАрдВ рдереЗред

  • U + 2028 - рдкреИрд░рд╛ рд╡рд┐рднрд╛рдЬрдХред
  • U + 2029 - рд▓рд╛рдЗрди рд╡рд┐рднрд╛рдЬрдХред



рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЧрдард┐рдд JSON.stringify ()


JSON.stringify() U+DFFF рдФрд░ U+DFFF рдмреАрдЪ рдХреЗ рдкрд╛рддреНрд░реЛрдВ рдХреЛ рдЙрди рдореВрд▓реНрдпреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд╛рдкрд╕ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рдирдХреЗ рд▓рд┐рдП рдХреЛрдИ рдпреВрдЯреАрдПрдл -8 рд╡рд░реНрдг рдмрд░рд╛рдмрд░ рдирд╣реАрдВ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, JSON рдкреНрд░рд╛рд░реВрдк рдореЗрдВ UTF-8 рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдПрдХ рд╕рдорд╛рдзрд╛рди рдХреЛ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╕рд░реЛрдЧреЗрдЯ рдХреЛрдб рдмрд┐рдВрджреБрдУрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ JSON рдиреЗ рдПрдХрд▓ UTF-16 рдХреЛрдб рдЗрдХрд╛рдЗрдпреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдЫреЛрдбрд╝рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдЕрдиреБрдХреНрд░рдореЛрдВ рдХреЛ рдврд╛рд▓ рджрд┐рдпрд╛ рд╣реИред



рд╕реНрдерд┐рд░ Array.prototyp.sort ()


V8 рдЗрдВрдЬрди рдХреЗ рдкрд┐рдЫрд▓реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ, 10 рд╕реЗ рдЕрдзрд┐рдХ рддрддреНрд╡реЛрдВ рд╡рд╛рд▓реЗ рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд╕реНрдерд┐рд░ рддреЗрдЬ рд╕реЙрд░реНрдЯрд┐рдВрдЧ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рд╕реНрдерд┐рд░ рдЫрдБрдЯрд╛рдИ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдПрдХ рдЫрдБрдЯрд╛рдИ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рд╣реА рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рджреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рдЙрд╕реА рдХреНрд░рдо рдореЗрдВ рд░рд╣рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рд╡реЗ рдЫрдБрдЯрд╛рдИ рд╕реЗ рдкрд╣рд▓реЗ рдереЗред



рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдлрд╝рдВрдХреНрд╢рдиред String ()


toString() рд╡рд┐рдзрд┐ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдХрд╛ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рд▓реМрдЯрд╛рддреА рд╣реИред ES6 рдореЗрдВ, рдЬрдм рдХрд┐рд╕реА рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП toString() рдХреЛ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╡рд╣ toString() рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрдВрдЬрди рдХреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рдЕрд▓рдЧ рдкрд░рд┐рдгрд╛рдо рджреЗ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ рд╕рдВрднрд╡ рд╣реЛ, рддреЛ рд╕реНрд░реЛрдд рдХреЛрдб рд╡рд╛рдкрд╕ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЕрдиреНрдпрдерд╛ рдПрдХ рдорд╛рдирдХреАрдХреГрдд рд╕реНрдЯрдмред



BigInt - рдордирдорд╛рдиреА рд▓рдВрдмрд╛рдИ рдХреЗ рдкреВрд░реНрдгрд╛рдВрдХ


BigInt 7 рд╡рд╛рдВ рдЖрджрд┐рдо рдкреНрд░рдХрд╛рд░ рд╣реИ, рдЬреЛ рдордирдорд╛рдиреА рд▓рдВрдмрд╛рдИ рдХрд╛ рдкреВрд░реНрдгрд╛рдВрдХ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЪрд░ рдореЗрдВ 253 рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рд╡рд░реНрдг рд╢рд╛рдорд┐рд▓ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ; рд╡реЗ рдПрдХ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдорд╛рди 9007199254740992 рддрдХ рд╕реАрдорд┐рдд рдирд╣реАрдВ рд╣реИрдВред



рдЧрддрд┐рд╢реАрд▓ рдЖрдпрд╛рдд


рдбрд╛рдпрдирд╛рдорд┐рдХ import() рдорд╛рдВрдЧреЗ рдЧрдП рдореЙрдбреНрдпреВрд▓ рдХреЗ рдиреЗрдорд╕реНрдкреЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд╛рджрд╛ рд▓реМрдЯрд╛рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЖрдпрд╛рдд рдЕрдм async/await рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдПрдХ рдЪрд░ рдХреЛ рд╕реМрдВрдкрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред



рдорд╛рдирдХреАрдХреГрдд GlobalThis рд╡рд╕реНрддреБ


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



рдирд┐рд╖реНрдХрд░реНрд╖


рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдПрдХ рдЬреАрд╡рд┐рдд рднрд╛рд╖рд╛ рд╣реИ, рдЬреЛ рд╡реЗрдм рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдиреБрдХреВрд▓ рд╣реИред рд╣рдо 2015 рдореЗрдВ ES6 рдХреЗ рдЖрдЧрдорди рдХреЗ рдмрд╛рдж рд╕реЗ рдЗрд╕рдХреЗ рдЧрддрд┐рд╢реАрд▓ рд╡рд┐рдХрд╛рд╕ рдХреЛ рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рд╣рдордиреЗ 2019 рдИрдПрд╕ 10 рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рд╡рд╛рд▓реА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдкрд░ рдкреНрд░рдХрд╛рд╢ рдбрд╛рд▓рд╛ред рдХреБрдЫ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рднреА рдкреЗрд╢ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдЬреЛ ES11 (2020) рдореЗрдВ рд╕реНрдерд┐рд░рддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗ, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ 3 рдЪрд░рдгреЛрдВ рдореЗрдВ рд╣реИрдВ рдФрд░ рдЕрдЧрд▓реЗ рд░рд┐рд▓реАрдЬ рдХреЗ рд▓рд┐рдП рдЕрдВрдд рдореЗрдВ рдорд╛рдирдХреАрдХреГрдд рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред
рдЗрдирдореЗрдВ рд╕реЗ рдХрдИ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рдЖрдкрдХреЗ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╡реЗ рд╕рднреА рд╕рд░рд▓ рдЪрд╛рд▓ рдХреЗ рдмрд┐рдирд╛ рдпрд╛ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдХреЛрдб рд▓рд┐рдЦрдирд╛ рд╕рдВрднрд╡ рдмрдирд╛рддреЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рдпрд╣ рдкрд╣рд▓реЗ рдЖрд╡рд╢реНрдпрдХ рдерд╛ред

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


All Articles