рдПрдХ рдлрд╝реНрд▓реИрд╢ рдЦреЗрд▓ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рдкрд╣рд▓рд╛ рдХрджрдоред AMFPHP рдкрд░ рдмреИрдХрдПрдВрдб рдмрдирд╛рдирд╛

рд╕рд╛рдорд╛рдЬрд┐рдХ рдЦреЗрд▓ рдмрд╣реБрдд рдЕрд╕реНрдерд┐рд░ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдмрд╣реБрдд рд╣реА рдорд╛рдВрдЧ рдФрд░ рджрд┐рд▓рдЪрд╕реНрдк рд╡рд┐рдХрд╛рд╕ рдЙрджреНрдпреЛрдЧред



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



рд▓реЗрдХрд┐рди рдпрд╣ рд╕рднреА рдЧреАрдд рд╣реИрдВ, рдФрд░ рд╣рдорд╛рд░реЗ рдЬреАрд╡рди рдореЗрдВ рдкрд░реНрдпрд╛рдкреНрдд рдЧреАрддрдХрд╛рд░рд┐рддрд╛ рдФрд░ рд░реЛрдорд╛рдВрд╕ рд╣реИ, рддреЛ рдЪрд▓реЛ рддрдХрдиреАрдХреА рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП рдиреАрдЪреЗ рдЙрддрд░реЗрдВред









AMF
рдпрд╣ рдПрдХ рджреНрд╡рд┐рдЖрдзрд╛рд░реА рдкреНрд░рд╛рд░реВрдк рд╣реИ рдЬреЛ рдХреНрд░реЙрд╕-рдбреЛрдореЗрди рд╕рдВрдЪрд╛рд░ рдХреЗ рд▓рд┐рдП рдХреНрд░рдордмрджреНрдз рдПрдХреНрд╢рдирд╕реНрдХреНрд░рд┐рдкреНрдЯ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдЬрд╛рдирдХрд╛рд░реА рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рдХрд┐рдпрд╛ рдЬрд╛рдП, рд▓реЗрдХрд┐рди рдЬреЛ рд▓реЛрдЧ рдЕрдзрд┐рдХ рд╕реАрдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЙрдирдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рд╣реИ , рдЬрд┐рд╕реЗ рдореИрдВ рдЙрджреНрдзреГрдд рдХрд░рдиреЗ рдХреА рдмрд╛рдд рдирд╣реАрдВ рджреЗрдЦрддрд╛ред



AMFPHP
AMFPHP рдХрд╛ рдЙрдкрдпреЛрдЧ AMF рдкрд╛рд░реНрд╕рд┐рдВрдЧ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐:

1. рдпрд╣ рдЬрд▓реНрджреА рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ

2. рд╕рд░реНрд╡рд░ рдкрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреА рд╕реНрдерд╛рдкрдирд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ

3. Opensource, рдФрд░ рдпрд╣ PHP рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рдЗрд╕реЗ рдЬрд▓реНрджреА рд╕реЗ рд╕рдордЭрдиреЗ рдФрд░ рдЗрд╕рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдмрджрд▓рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИ рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП (рдпрд╣ рдПрдХ рдЪрд░рдо рдорд╛рдорд▓рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрднреА рднреА рдПрдХ рдЕрд╡рд╕рд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП)

3. рдХрд┐рд╕реА рднреА рдврд╛рдВрдЪреЗ рд╕реЗ рдмрдВрдзрд╛ рд╣реБрдЖ рдирд╣реАрдВ рд╣реИ рдФрд░ рди рд╣реА рдЦреБрдж рдПрдХ рдврд╛рдВрдЪрд╛ рд╣реИ

4. рджреЗрд╢реА JSON рдкрд╛рд░реНрд╕рд┐рдВрдЧ

5. рдПрдХ рдЕрдВрддрд░реНрдирд┐рд░реНрдорд┐рдд рдкреНрд░реЛрдлрд╛рдЗрд▓рд░ рд╣реЛрддрд╛ рд╣реИред



рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реЗрдЯрдЕрдкред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдХреБрдЫ рд╕рдореНрдореЗрд▓рдиреЛрдВ рдХреА рд╢реБрд░реБрдЖрдд рдХрд░рддреЗ рд╣реИрдВред рдкрд░рд┐рдпреЛрдЬрдирд╛ рддрдХ рдкрд╣реБрдВрдЪ http: // game / рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИред рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП DOCUMENT_ROOT www рдлрд╝реЛрд▓реНрдбрд░ рд╣реИ, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдРрдк рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╣реИ, рдФрд░ рд╕рднреА рддреГрддреАрдп-рдкрдХреНрд╖ рд▓рд╛рдЗрдмреНрд░реЗрд░реАрдЬрд╝, lib рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╣реИрдВред рдореЙрдбрд▓ рдРрдк / рдореЙрдбрд▓ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╣реИрдВ, рдФрд░ рд╕рд╛рд░ рдХрдХреНрд╖рд╛рдПрдВ рдРрдк / рдореЙрдбрд▓ / рд╕рд╛рд░ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╣реИрдВ, рдирд┐рдпрдВрддреНрд░рдХ / рдРрдк / рдирд┐рдпрдВрддреНрд░рдХ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╣реИрдВред рдпрджрд┐ рдЖрдк рдореЗрд░реЗ рдЧрд╛рдЗрдб рдХрд╛ рдЖрдБрдЦ рдмрдВрдж рдХрд░рдХреЗ рдЕрдиреБрд╕рд░рдг рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓реЗрддреЗ рд╣реИрдВ, рддреЛ рдореИрдВ рдЖрдкрдХреЛ рдЗрди рдлрд╝реЛрд▓реНрдбрд░реЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВред



рд╕рд░реНрд╡рд░ рдмрдврд╝рд╛рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ред
0. рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рдПрдХ www / рдЧреЗрдЯрд╡реЗ.php рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдБ:
<?php <br/> require_once '../app/config.php' ; <br/> require_once 'amfphp/gateway.php' ;





1. рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ AMFPHP , рдЗрд╕реЗ рдЕрдирдкреИрдХ рдХрд░реЗрдВ, рдореВрд▓ рдлрд╝реЛрд▓реНрдбрд░ рдФрд░ рд╕рднреА рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рд░реВрдЯ / .htaccess рдХреЛ рдЫреЛрдбрд╝рдХрд░ рд▓рд┐рдм / рдПрдореНрдл рдлреЛрд▓реНрдбрд░ рдореЗрдВ рд░рдЦреЗрдВ



2. рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рдлрд╝рд╛рдЗрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди / config.php рдмрдирд╛рдПрдВ:
<?php <br/> // <br/> define ( 'ROOT_DIR' , '/var/www/game/' ) ; // <br/> define ( 'LOG_DIR' , ROOT_DIR . 'log/' ) ; // <br/> define ( 'GAME_PLATFORM' , 'development' ) ; // <br/> $paths = array ( <br/> '.' , <br/> ROOT_DIR . 'lib' , <br/> ROOT_DIR . 'app' <br/> ) ; <br/> set_include_path ( implode ( PATH_SEPARATOR , $paths ) ) ;





3. lib / amfphp / globals.php рдлрд╝рд╛рдЗрд▓ рдореЗрдВ, ROOT_DIR рдореЗрдВ $ ServicesPath рдЪрд░ рд╕реЗрдЯ рдХрд░реЗрдВред "рдРрдк / рдХрдВрдЯреНрд░реЛрд▓рд░ /"



4. рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рдПрдкреНрд▓рд┐рдХреЗрд╢рди / рдореЙрдбрд▓ / Response.php рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдВ:

<?php <?php <br/>abstract class Response<br/> { <br/> protected $error ; <br/> protected $content = array ( ) ; <br/> <br/> public function __construct ( array $content = null ) <br/> { <br/> if ( isset ( $content ) ) { <br/> $this -> content = $content ; <br/> } <br/> } <br/> <br/> public function addContent ( $content ) <br/> { <br/> if ( ! is_array ( $content ) ) { <br/> return false ; <br/> } <br/> foreach ( $content as $name => $data ) { <br/> $this -> content [ $name ] = $data ; <br/> } <br/> } <br/> <br/> public function getData ( ) <br/> { <br/> return array ( <br/> 'error' => $this -> error , <br/> 'response' => $this -> content , <br/> ) ; <br/> } <br/> } <br/> <br/> class ErrorResponse extends Response<br/> { <br/> public function __construct ( array $content = null ) <br/> { <br/> parent :: __construct ( $content ) ; <br/> $this -> error = 1 ; <br/> } <br/> } <br/> <br/> class SuccessResponse extends Response<br/> { <br/> public function __construct ( array $content = null ) <br/> { <br/> parent :: __construct ( $content ) ; <br/> $this -> error = 0 ; <br/> } <br/> }



<?php <?php <br/>abstract class Response<br/> { <br/> protected $error ; <br/> protected $content = array ( ) ; <br/> <br/> public function __construct ( array $content = null ) <br/> { <br/> if ( isset ( $content ) ) { <br/> $this -> content = $content ; <br/> } <br/> } <br/> <br/> public function addContent ( $content ) <br/> { <br/> if ( ! is_array ( $content ) ) { <br/> return false ; <br/> } <br/> foreach ( $content as $name => $data ) { <br/> $this -> content [ $name ] = $data ; <br/> } <br/> } <br/> <br/> public function getData ( ) <br/> { <br/> return array ( <br/> 'error' => $this -> error , <br/> 'response' => $this -> content , <br/> ) ; <br/> } <br/> } <br/> <br/> class ErrorResponse extends Response<br/> { <br/> public function __construct ( array $content = null ) <br/> { <br/> parent :: __construct ( $content ) ; <br/> $this -> error = 1 ; <br/> } <br/> } <br/> <br/> class SuccessResponse extends Response<br/> { <br/> public function __construct ( array $content = null ) <br/> { <br/> parent :: __construct ( $content ) ; <br/> $this -> error = 0 ; <br/> } <br/> }





рдпрд╣ рдлрд╝рд╛рдЗрд▓ рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЙрддреНрддрд░ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреА рд╣реИ: рдПрдХ рддреНрд░реБрдЯрд┐ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ (ErrorResponse) рдФрд░ рдПрдХ "рд╕рдлрд▓" рдЙрддреНрддрд░ (SuccessResponse)



5. рдирд┐рдпрдВрддреНрд░рдХ рдХреЗ рд▓рд┐рдП рдПрдХ рд╢реЗрд▓ рдмрдирд╛рдПрдВ (рдлрд╝рд╛рдЗрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди / рдореЙрдбрд▓ / рд╕рд╛рд░ / AbstractAMFController.php) <?php <?php <br/> require_once 'model/Response.php' ; <br/> <br/> class AbstractAMFController { <br/> <br/> protected $controller ; <br/> <br/> public function __construct ( $controllerName ) <br/> { <br/> $this -> controller = new $controllerName ( ) ; <br/> } <br/> <br/> protected function methodWrapper ( $method , $data ) { <br/> try { <br/> $result = $this -> controller -> $method ( $data ) ; <br/> $response = new SuccessResponse ( ) ; <br/> $response -> addContent ( $result ) ; <br/> } catch ( Exception $e ) { <br/> $response = new ErrorResponse ( $e -> getMessage ( ) . '\n' . $e -> getTraceAsString ( ) ) ; <br/> } <br/> } <br/> return $response -> getData ( ) ; <br/> } <br/> }



<?php <?php <br/> require_once 'model/Response.php' ; <br/> <br/> class AbstractAMFController { <br/> <br/> protected $controller ; <br/> <br/> public function __construct ( $controllerName ) <br/> { <br/> $this -> controller = new $controllerName ( ) ; <br/> } <br/> <br/> protected function methodWrapper ( $method , $data ) { <br/> try { <br/> $result = $this -> controller -> $method ( $data ) ; <br/> $response = new SuccessResponse ( ) ; <br/> $response -> addContent ( $result ) ; <br/> } catch ( Exception $e ) { <br/> $response = new ErrorResponse ( $e -> getMessage ( ) . '\n' . $e -> getTraceAsString ( ) ) ; <br/> } <br/> } <br/> return $response -> getData ( ) ; <br/> } <br/> }





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



6. рдлрд╝рд╛рдЗрд▓ рдРрдк / рдХрдВрдЯреНрд░реЛрд▓рд░ / рд░реИрдкрд░реНрд╕.php рдмрдирд╛рдПрдВ
class Game extends AbstractAMFController { <br/> public function __construct ( ) { <br/> parent :: __construct ( 'GameController' ) ; <br/> } <br/> <br/> public function hello ( $data ) { <br/> return $this -> methodWrapper ( 'hello' , $data ) ; <br/> } <br/> }





рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд░реИрдкрд░реНрд╕ рдХреЛ рдпрд╣рд╛рдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдПрдПрдордПрдлрдкреАрдПрдЪрдкреА рдЬрд╛рджреВ __call рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдереЛрдбрд╝рд╛ рдФрд░ рдХреЛрдб рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ рдЬрд┐рддрдирд╛ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ



7. рдЦреИрд░, рдЕрдВрддрд┐рдо рд░рд╛рдЧред рдлрд╝рд╛рдЗрд▓ рдРрдк / рдХрдВрдЯреНрд░реЛрд▓рд░ / Game.php рдмрдирд╛рдПрдВ
class GameController { <br/> <br/> public function hello ( $data ) { <br/> return 'hello' ; <br/> } <br/> } <br/> include 'wrappers.php' ;





рдЕрдм рдЖрдк рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЦреЛрд▓ рд╕рдХрддреЗ рд╣реИрдВ (рдпрд╣ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдПрдПрдордПрдлрдкреАрдПрдЪрдкреА рдХреЗ рд╕рд╛рде рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рд╣реИред рдкрддрд╛ http: //game/gateway.php рд╣реИ, рд╡рд┐рдзрд┐ рд╣реИрд▓реЛ рд╣реИред рд╡рд╛рдпрд▓рд╛, рдЖрдкрдХреЛ {"рддреНрд░реБрдЯрд┐": 0, "рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛" рдЬреИрд╕рд╛ рдХреБрдЫ рдорд┐рд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред : "рд╣реИрд▓реЛ"}

рдпрд╣ рд╕рдм рд╣реИ, рдЕрдм рд╕рд░реНрд╡рд░ рддреИрдпрд╛рд░ рд╣реИ, рдФрд░ рдЖрдк рдкрд╣рд▓реЗ рдХреЙрд▓ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдм рдмрд╛рдж рдореЗрдВ рд╣реИ, рдФрд░ рдЕрдм рдЪрд╛рдп рдЦрддреНрдо рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдШрд░ рдЬрд╛рддреЗ рд╣реИрдВ, рд▓рдЧрднрдЧ 9, рдФрд░ рдореИрдВ рдЕрднреА рднреА рдХрд╛рдо рдкрд░ рд╣реВрдВ :)ред



All Articles