рд╢рд╛рдпрдж рдХреЛрдИ рд╕рд╣реА рддрдХрдиреАрдХ рдирд╣реАрдВ рд╣реИрдВред рдЧреНрд░рд╛рдлрдХрд▓ рдХреЛрдИ рдЕрдкрд╡рд╛рдж рдирд╣реАрдВ рд╣реИред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЗрд╕ рддрдХрдиреАрдХ рдХреЗ рд╕рд╛рде рдЕрдиреБрднрд╡ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреНрдпрд╛ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВ рдФрд░ рдЙрдирдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рддреИрдпрд╛рд░реА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЗрд╕рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рдореИрдВ рдЬрд╣рд╛рдВ рд╕рдВрднрд╡ рд╣реЛ, рдЖрд╕рдкрд╛рд╕ рдЧреНрд░рд╛рдлрд╝рд┐рдХрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рд╕рдорд░реНрдердХ рд╣реВрдВред рдФрд░ рдореИрдВ рдЗрд╕ рддрдХрдиреАрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЙрдкрдпреБрдХреНрддрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХрд┐рд╕реА рдХреЛ рднреА рдордирд╛ рдирд╣реАрдВ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВред рдФрд░ рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдореИрдВ рдРрд╕реЗ рдкреНрд░рд╢реНрди рдЙрдард╛рддрд╛ рд╣реВрдВ рдЬреЛ рдЧреНрд░реЗрдлрд┐рдХ рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХреА рдХреЗ рдврд╛рдВрдЪреЗ рдореЗрдВ рдЕрдирд╕реБрд▓рдЭреЗ рдореБрджреНрджреЛрдВ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рдпрд╣ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЧреНрд░рд╛рдлрдХрд▓ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рд╡рд╕реНрддреБ рдХреЛ рдХрдо рд╕реЗ рдХрдо рджреЛ рдмрд╛рд░ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рд╣реЛрдЧрд╛: рдПрдХ рдмрд╛рд░ рд╡рд╕реНрддреБ рдХреЗ рд╡рд╛рдкрд╕реА рдкреНрд░рдХрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ, рдФрд░ рдПрдХ рдмрд╛рд░ рдлрд┐рд░ рд╡рд╕реНрддреБ рдХреЗ рдЗрдирдкреБрдЯ рдкреНрд░рдХрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ (рджреЗрдЦреЗрдВ
рдЧреНрд░рд╛рдлрдХреНрд▓.рдУрдЖрд░ / рдСрдЧреНрд░рд╛рдлрд┐рдХрд▓-рдИрдПрд╕ / рдореНрдпреВрдЯреЗрд╢рди- рдФрд░ рдЗрдирдкреБрдЯ-рдкреНрд░рдХрд╛рд░ )ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореИрдВрдиреЗ рдЗрд╕реЗ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдФрд░ рдЗрд╕реЗ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХрдореА рднреА рдирд╣реАрдВ рдорд╛рдирд╛ред рдЖрдЬ рд╣рдо рдРрд╕реЗ рдореБрджреНрджреЛрдВ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░реЗрдВрдЧреЗ, рдЬрд┐рдиреНрд╣реЗрдВ рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдЧреНрд░рд╛рдлрд┐рдХрд▓ рддрдХрдиреАрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдПрдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╕рдордп рд╣рд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛:
- рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рдореВрд╣реЛрдВ рдХреЗ рд▓рд┐рдП рдкрд╣реБрдВрдЪ рдХрд╛ рдкреГрдердХреНрдХрд░рдгред
- рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдореЗрдВ рддреНрд░реБрдЯрд┐ред
- N + 1 рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рдореВрд╣реЛрдВ рдХреЗ рд▓рд┐рдП рдкрд╣реБрдВрдЪ рдХрд╛ рдкреГрдердХреНрдХрд░рдг
graphql рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдФрд░ рд╕рдореВрд╣реЛрдВ рдХреЗ рдмреАрдЪ рдкрд╣реБрдВрдЪ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╢реЗрдпрд░рд┐рдВрдЧ рдПрдХреНрд╕реЗрд╕ рдХрд╛ рд╕рд╛рд░рд╛ рдХрд╛рдо рдПрдкреНрд▓реАрдХреЗрд╢рди рдбреЗрд╡рд▓рдкрд░ рдХреА рдЬрд┐рдореНрдореЗрджрд╛рд░реА рд╣реИред рддреАрд╕рд░рд╛ рдкреИрд░рд╛рдореАрдЯрд░ рд░рд┐рдЬрд╝реЙрд▓реНрд╡рд░ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рдВрджрд░реНрдн рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд╛рд╕ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ рдЖрдк, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЧреНрд░рд╛рдлрдХрд▓ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ + рдПрдХреНрд╕рдкреНрд░реЗрд╕ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╕рдВрджрд░реНрдн рдкреИрд░рд╛рдореАрдЯрд░ рдореЗрдВ рдЖрдк рдЕрдиреБрд░реЛрдз рдПрдХреНрд╕рдкреНрд░реЗрд╕ рд╕реЗ рд╡рд░реНрддрдорд╛рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЬреЗрдПрд╕ рдСрдмреНрдЬреЗрдХреНрдЯред рд▓реЗрдХрд┐рди рдПрдХреНрд╕реЗрд╕ рдХрдВрдЯреНрд░реЛрд▓ рдкрд░ рдЖрдЧреЗ рдХрд╛рдо рд╕реАрдзреЗ рдкреНрд░рддреНрдпреЗрдХ рд░рд┐рдЬрд╝реЙрд▓реНрд╡рд░ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:
function(root, {id}, ctx) { return DB.Lists.get(id) .then( list => { if(list.owner_id && list.owner_id != ctx.userId){ throw new Error("Not authorized to see this list"); } else { return list; } }); }
рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдкрд╣реБрдБрдЪ рдирд┐рдпрдВрддреНрд░рдг рдХреЛ рдЬрдЯрд┐рд▓ рдмрдирд╛рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдПрдХ рдШреЛрд╖рдгрд╛рддреНрдордХ рддрд░реАрдХреЗ рд╕реЗ рдПрдХреНрд╕реЗрд╕ рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХреЛ рд╕реЗрдЯ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХрд╛ рдирд┐рдпрдВрддреНрд░рдг рджрд░реНрдЬрдиреЛрдВ рд╕реЗ рдЕрдзрд┐рдХ (рдХреБрдЫ рдмрдбрд╝реА рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП, рд╣рдЬрд╛рд░реЛрдВ рд╕реЗ рдЕрдзрд┐рдХ) рд░рд┐рдЬрд╝реЙрд▓реНрд╡рд░ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдореЗрдВ рдлреИрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдХрдИ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИрдВ рдЬреЛ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рддреЗ рд╣реИрдВред рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдХрд╛рдлреА рд▓реЛрдХрдкреНрд░рд┐рдп рд╣реИрдВ (github.com рдкрд░ рд╕рд┐рддрд╛рд░реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП), рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП
github.com/maticzav/graphql-shield ред
рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдореЗрдВ рддреНрд░реБрдЯрд┐
рдпрджрд┐ рдЖрдкрдХреЗ рджреГрд╢реНрдпрдкрдЯрд▓ рдХреЛ рдЗрдирдкреБрдЯ рд╕рддреНрдпрд╛рдкрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдХреНрд╖реЗрддреНрд░ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╕реНрддреГрдд рд╕рдВрджреЗрд╢реЛрдВ рдХреА рдкреАрдврд╝реА рдЬреЛ рд╕рддреНрдпрд╛рдкрди рд╕реЗ рдкрд╛рд░рд┐рдд рдирд╣реАрдВ рд╣реБрдИ рд╣реИ, рддреЛ рдЧреНрд░рд╛рдлрд┐рдХрд▓ рдореЗрдВ рддреНрд░реБрдЯрд┐ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдЖрдкрдХреЛ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд▓рдЪреАрд▓реА рдкреНрд░рддреАрдд рд╣реЛрдЧреАред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЗрдирдкреБрдЯ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдПрдХ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдорд╛рди рдкреНрд░рд╛рдкреНрдд рд╣реБрдЖ рдерд╛, рддреЛ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдЗрд╕рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдХрдо рдЙрдкрдпреЛрдЧ рд╣реЛрдЧрд╛:
{ "errors": [ { "message": "Expected type String, found 1.", "locations": [ { "line": 2, "column": 15 } ] } ] }
рдпрджрд┐ рдЗрдирдкреБрдЯ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рдкреНрд░рдХрд╛рд░ рдореЗрдВ рдХреЛрдИ рд╕рдХрд▓ рддреНрд░реБрдЯрд┐ рд╣реИ, рддреЛ рдПрдХ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЙрддреНрдкрдиреНрди рд╣реЛрдЧрд╛ рдФрд░ рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред рдпрджрд┐ рдЗрдирдкреБрдЯ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рдкреНрд░рдХрд╛рд░ рджреНрд╡рд╛рд░рд╛ рд╕рддреНрдпрд╛рдкрди рд╕рдлрд▓ рд░рд╣рд╛, рддреЛ рдЧреНрд░рд╛рд╣рдХ рдХреЛ рдПрдХ
new Error ('custom message ...')
рд╡рд╕реНрддреБ
new Error ('custom message ...')
рдлреЗрдВрдХрдХрд░ рдХрд╕реНрдЯрдо рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рднреЗрдЬрдирд╛ рд╕рдВрднрд╡ рд╣реИред рдпрд╣ рдХрд╕реНрдЯрдо рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ рдПрд░рд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ (рдЕрдкреЛрд▓реЛ-рд╕рд░реНрд╡рд░-рдПрдХреНрд╕рдкреНрд░реЗрд╕ рдФрд░ рдЕрдкреЛрд▓реЛ-рдПрд░рд░реНрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рддреНрд░реБрдЯрд┐ рдЕрдиреБрдХреВрд▓рди рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ)ред рдмреЗрд╢рдХ, рд╣рдореЗрд╢рд╛ рд╕рд░реНрд╡рд░ рдкрд░ рдПрдХ
message
рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рд╡рд╕реНрддреБ рдХреЛ рдХреНрд░рдордмрджреНрдз рдХрд░рдиреЗ рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рдЗрд╕реЗ рдбреАрд░рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рд╣реЛрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдРрд╕рд╛ рдХрд░рдирд╛ рдЬрд░реВрд░реА рд╣реИ?
N + 1 рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ
рд╕рдВрджреЗрд╢ рдореЗрдВ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдкрд░ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рдереА ред
graphql рдХреЛ рд░рд┐рд╕реЙрд▓реНрд╡рд░ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдкрд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ SELECT N + 1 рдирд╛рдордХ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдХрд╛рд░рдг рдмрди рд╕рдХрддрд╛ рд╣реИред рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд░рд┐рдЬрд╝реЙрд▓реНрд╡рд░ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рд╡рд╕реНрддреБрдУрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХреА рдЧрдИ рдереА рдЬрд┐рд╕рдореЗрдВ рдЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реЗ рдЬреБрдбрд╝реЗ рдбреЗрдЯрд╛ рдХреЛ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛рдУрдВ (рд╡рд┐рджреЗрд╢реА рдХреБрдВрдЬреА) рджреНрд╡рд╛рд░рд╛ рджрд░реНрд╢рд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдРрд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП, рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рдлрд╝рдВрдХреНрд╢рди рд░рд┐рдЬрд╝реЙрд▓реНрд╡рд░ рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛, рдЬрд┐рд╕рдореЗрдВ (рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ) рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдПрдХрд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреНрд╡реЗрд░реА (SQL JOIN рдХреЗ рд╕рд╛рде) рдХреЗ рдмрдЬрд╛рдп, рдХрдИ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдХреНрд╡реЗрд░реА рдХреЗ рд╕рд╛рде рдЕрдзрд┐рднрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИред
рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, facebook рдиреЗ
github.com/graphql/dataloader рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╡рд┐рдХрд╕рд┐рдд рдХреА, рдЬреЛ рдПрдХ рд▓рдВрдмрд┐рдд рдЕрдиреБрд░реЛрдз рд░рдгрдиреАрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдлрд╝рдВрдХреНрд╢рди рд░рд┐рдЬрд╝реЙрд▓реНрд╡рд░ рдореЗрдВ рд╕реАрдзреЗ рдЕрдиреБрд░реЛрдз рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдпрд╣ рд╕рд░рдгреА рдореЗрдВ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛рдУрдВ (рджреНрд╡рд┐рддреАрдпрдХ рдХреБрдВрдЬреА) рдХреЛ рдЬрдорд╛ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рд╣реИ, рдФрд░ рдлрд┐рд░ рдЙрдиреНрд╣реЗрдВ рддреБрд░рдВрдд рдПрдХ рдЕрдиреБрд░реЛрдз рдХреЗ рд╕рд╛рде рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред
apapacy@gmail.com
13 рдордИ, 2019