Pdf.js: pdf.js рдХреЗ рд╕рд╛рде рд╡рд┐рджреЗрд╢реА рдпреВрдЖрд░рдПрд▓ рдкрд░ рдкреАрдбреАрдПрдл рд▓реЛрдб рдХрд░рдиреЗ рдореЗрдВ рддреНрд░реБрдЯрд┐

рдХреЛ рдирд┐рд░реНрдорд┐рдд 5 рдЕрдкреНрд░реИрд▓ 2016  ┬╖  22рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: mozilla/pdf.js

рдирдорд╕реНрддреЗ,
рдЬрдм рдореИрдВ рд╡рд┐рджреЗрд╢реА рдпреВрдЖрд░рдПрд▓ рд╕реЗ рдкреАрдбреАрдПрдл рд▓реЛрдб рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рддреЛ рдореБрдЭреЗ рдпрд╣ рддреНрд░реБрдЯрд┐ рд╣реИ

рддреНрд░реБрдЯрд┐: рдлрд╝рд╛рдЗрд▓ рдореВрд▓ рджрд░реНрд╢рдХ рд╕реЗ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддреА
рдирдИ рддреНрд░реБрдЯрд┐ рдлреЗрдВрдХреЗрдВ ('рдлрд╝рд╛рдЗрд▓ рдореВрд▓ рджрд░реНрд╢рдХ рд╕реЗ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддреА');

рдХреГрдкрдпрд╛ рд╕рд╣рд╛рдпрддрд╛ рдХреАрдЬрд┐рдП!

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдореИрдВ рдЗрд╕ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ viewer.js . рдореЗрдВ рдЯрд┐рдкреНрдкрдгреА рдХрд░рдиреЗ рдХрд╛ рд╕рдВрдХрд▓реНрдк рдХрд░рддрд╛ рд╣реВрдВ

рдЕрдЧрд░ (рдлрд╛рдЗрд▓рдСрд░рд┐рдЬрд┐рди!== рд╡реНрдпреВрдЕрд░рдСрд░рд┐рдЬрд┐рди) {
рдирдИ рддреНрд░реБрдЯрд┐ рдлреЗрдВрдХреЗрдВ ('рдлрд╝рд╛рдЗрд▓ рдореВрд▓ рджрд░реНрд╢рдХ рд╕реЗ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддреА');
}

рд╕рднреА 22 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдпрд╣ рдЬрд╛рдирдмреВрдЭрдХрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, #6916 рджреЗрдЦреЗрдВред HOSTED_VIEWER_ORIGINS рд╕реВрдЪреА рдореЗрдВ рдЕрдкрдиреЗ рд╣реЛрд╕реНрдЯ рдореВрд▓ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП viewer.js рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░реЗрдВред рдЙрддреНрддрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдмрдВрдж рдХрд░рдирд╛ред

рдзрдиреНрдпрд╡рд╛рдж @yurydelendik
рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдпрд╣ рдЙрддреНрддрд░ рдореЗрд░реА рдХреИрд╕реЗ рдорджрдж рдХрд░рддрд╛ рд╣реИ

рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдпрд╣ рдЙрддреНрддрд░ рдореЗрд░реА рдХреИрд╕реЗ рдорджрдж рдХрд░рддрд╛ рд╣реИ

HOSTED_VIEWER_ORIGINS рд╕реВрдЪреА рдореЗрдВ рдЕрдкрдиреЗ рд╣реЛрд╕реНрдЯ рдореВрд▓ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП viewer.js рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░реЗрдВред

рдореИрдВрдиреЗ рдпрд╣ рдХрд┐рдпрд╛ рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдореЗрд░реА рд░рд┐рдореЛрдЯ рдкреАрдбреАрдПрдл рдлрд╛рдЗрд▓ рдХреЛ рдХреИрд╕реЗ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рдП

рдореИрдВрдиреЗ рдпрд╣ рдХрд┐рдпрд╛ рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдореЗрд░реА рд░рд┐рдореЛрдЯ рдкреАрдбреАрдПрдл рдлрд╛рдЗрд▓ рдХреЛ рдХреИрд╕реЗ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рдП

рдХреГрдкрдпрд╛ рд╕рдордЭрд╛рдПрдБред рдХреНрдпрд╛ рдЖрдк рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬрд╛рдирдХрд╛рд░реА рднреА рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

  • рдлрд╝рд╛рдЗрд▓ рдкреИрд░рд╛рдореАрдЯрд░ рд╕рд╣рд┐рдд рджрд░реНрд╢рдХ рдХреЗ рд▓рд┐рдП URL рдХреНрдпрд╛ рд╣реИ?
  • viewer.js рдХреЛрдб рдореЗрдВ рдХреНрдпрд╛ рдмрджрд▓рд╛ рдЧрдпрд╛?
  • PDF рдХреЛ рд╣реЛрд╕реНрдЯ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕рд░реНрд╡рд░ рдкрд░ CORS рд╣реЗрдбрд░ рдХреИрд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛?

рдореЗрд░реА рдкреАрдбреАрдПрдл рдлрд╛рдЗрд▓ рдХреНрд▓рд╛рдЙрдбрд┐рдирд░реА рдкрд░ рд╣реИред
рдФрд░ рдЬрдм рдореИрдВрдиреЗ рдПрдХреНрд╕реЗрд╕ рдХреЛ DEFAULT_URL рд╡реЗрд░рд┐рдПрдмрд▓ рдореЗрдВ рдбрд╛рд▓рд╛, рддреЛ рдореБрдЭреЗ рддреНрд░реБрдЯрд┐ рдорд┐рд▓реА
рддреНрд░реБрдЯрд┐: рдлрд╝рд╛рдЗрд▓ рд╡реНрдпреВрдЕрд░ рдХрд╛ рдореВрд▓ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддрд╛
рдирдИ рддреНрд░реБрдЯрд┐ рдлреЗрдВрдХреЗрдВ ('рдлрд╝рд╛рдЗрд▓ рджрд░реНрд╢рдХ рдореВрд▓ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддрд╛ \' s ');

рдореЗрд░реЗ рдпреВрдЖрд░рдПрд▓ рдкреАрдбреАрдПрдл рдХрд╛ рдЙрджрд╛рд╣рд░рдг http://res.cloudinary.com/image/upload/v1459791656/my_file.pdf

рдореИрдВ рдЗрд╕ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ viewer.js . рдореЗрдВ рдЯрд┐рдкреНрдкрдгреА рдХрд░рдиреЗ рдХрд╛ рд╕рдВрдХрд▓реНрдк рдХрд░рддрд╛ рд╣реВрдВ

рдЕрдЧрд░ (рдлрд╛рдЗрд▓рдСрд░рд┐рдЬрд┐рди!== рд╡реНрдпреВрдЕрд░рдСрд░рд┐рдЬрд┐рди) {
рдирдИ рддреНрд░реБрдЯрд┐ рдлреЗрдВрдХреЗрдВ ('рдлрд╝рд╛рдЗрд▓ рдореВрд▓ рджрд░реНрд╢рдХ рд╕реЗ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддреА');
}

рддрд░реНрдХ рдкрд░ рдЯрд┐рдкреНрдкрдгреА рди рдХрд░реЗрдВред рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ () рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдХрд┐ рдЖрдкрдХреА рдлрд╝рд╛рдЗрд▓ рдореВрд▓ рдФрд░ рд╡реНрдпреВрдЕрд░рдСрд░рд┐рдЬрд┐рди рдореЗрд▓ рдЦрд╛рддреА рд╣реИ рдпрд╛ рдирд╣реАрдВред рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЖрдкрдХреЗ HOSTED_VIEWER_ORIGINS рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдХрдо рд╕реЗ рдХрдо рдПрдХ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рд╡реНрдпреВрдЕрд░рдСрд░рд┐рдЬрд┐рди рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИ рдФрд░ "_рдлрд╛рдЗрд▓ рдореВрд▓, рд╡реНрдпреВрдЕрд░_ рд╕реЗ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддрд╛" рддреНрд░реБрдЯрд┐ рдЧрд╛рдпрдм рд╣реЛ рдЬрд╛рдПрдЧреАред

рдЗрд╕реЗ рдЬреЛрдбрд╝реЛ:

console.log('fileOrigin', fileOrigin);
console.log('viewerOrigin', viewerOrigin);

... рдареАрдХ рдКрдкрд░:

if (fileOrigin !== viewerOrigin) {
throw new Error('file origin does not match viewer\'s');
}

рдореИрдВ рд╢рд░реНрдд рд▓рдЧрд╛рддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдкрдХреЗ рдпреВрдЖрд░рдПрд▓ рдХреЗ рдЕрдВрдд рдореЗрдВ рдПрдХ рдирд┐рдХреЗрд▓ рдЧрд╛рдпрдм рд╣реИ (рдпрд╛ рд╣реИ) рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реНрд▓реИрд╢ рдЬреИрд╕рд╛ рдореИрдВрдиреЗ рдХрд┐рдпрд╛ рдерд╛ (рдЦреЛрдЬрд╛ рдЧрдпрд╛ рдЬрдм рдХрдВрд╕реЛрд▓ рдЙрди рджреЛ рд╡рд░реНрд░реЛрдВ рдХреЛ рд▓реЙрдЧрд┐рдВрдЧ рдХрд░ рд░рд╣рд╛ рдерд╛)ред

рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрд┐рд╕реА рдХреА рдорджрдж рдХрд░рддрд╛ рд╣реИред

рд░реЗрдЧреЗрдХреНрд╕/рд╡рд╛рдЗрд▓реНрдбрдЪрд░реНрд╕ рдХреЗ рд╕рд╛рде HOSTED_VIEWER_ORIGINS рд╕рд░рдгреА рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред

рдЧреИрд░-рд╣рд╛рд░реНрдб-рдХреЛрдбреЗрдб рдореЛрдЬрд╝рд┐рд▓рд╛ рдбреЛрдореЗрди рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ 10k рд▓рд╛рдЗрди рдирд┐рд░реНрдорд┐рдд рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЬрд┐рд╕реЗ viewer.js?

@gildassamuel рддреБрдо рдореЗрд░рд╛ рджрд┐рди рдмрдЪрд╛рдУ !!

рдЙрдЪрд┐рдд рд╕рдорд╛рдзрд╛рди рдЦреБрд▓рд╛ viewer.js рд╣реИ рдФрд░ рдЕрдкрдиреА рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╣реЛрд╕реНрдЯ рдХреЛ HOSTED_VIEWER_ORIGINS рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ
var HOSTED_VIEWER_ORIGINS = ['null', '.....'];

рдЪреЗрдХрд┐рдВрдЧ рдХреЛрдб рди рд╣рдЯрд╛рдПрдВ :|

рдореЗрд░реЗ рдкрд╛рд╕ рд╕реНрдерд╛рдиреАрдп рдкреАрдбреАрдПрдл рдлрд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рдпреВрдбрдмреНрд▓реНрдпреВрдкреА рдкрд░ рдПрдХ рд╣реА рдореБрджреНрджрд╛ рд╣реИ (рдлрд╝рд╛рдЗрд▓ рдореВрд▓ рджрд░реНрд╢рдХ рд╕реЗ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддрд╛ рд╣реИ)ред рд╕реНрдерд╛рдиреАрдп рдкрде рдХреЗ рд▓рд┐рдП HOSTED_VIEWER_ORIGINS рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреМрди рд╕реА рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдЬреЛрдбрд╝реА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдП?

рдХрд┐рд╕реА рдРрдк рдХреЗ рднреАрддрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХрд┐рд╕реА рдФрд░ рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рд╕реНрдерд╛рдиреАрдп рдкрдереЛрдВ рдХреЛ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП 'рдлрд╝рд╛рдЗрд▓: //' рдЬреЛрдбрд╝рдирд╛ рдкрдбрд╝рд╛ред

рд╡рд░ HOSTED_VIEWER_ORIGINS = [
'рд╢реВрдиреНрдп',
' http://mozilla.github.io ',
' https://mozilla.github.io ',
'рдлрд╝рд╛рдЗрд▓: //' // рдРрдк рдореЗрдВ рд╕реНрдерд╛рдиреАрдп рджрд░реНрд╢рдХ
];

рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдореИрдВ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдХреЛрдбрд┐рдВрдЧ рдХрд░ рд░рд╣рд╛ рдерд╛ рдФрд░ рдореБрдЭреЗ рднреА рдпрд╣реА рд╕рдорд╕реНрдпрд╛ рдереА рдФрд░ рдореИрдВрдиреЗ рдЕрдкрдирд╛ рд╕реНрдерд╛рдиреАрдп рдкрддрд╛ рдЬреЛрдбрд╝рдХрд░ рд╣рд▓ рдХрд┐рдпрд╛:

var HOSTED_VIEWER_ORIGINS = [
       'null',
       'http://mozilla.github.io',
       'https://mozilla.github.io',
       'http://localhost:5000'
];

рд▓реЗрдХрд┐рди рдЪреЗрдХрд┐рдВрдЧ рдХреЛрдб рди рд╣рдЯрд╛рдПрдВ :

if (fileOrigin !== viewerOrigin) {
       throw new Error('file origin does not match viewer\'s');
}

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрди 2 рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рд╣реЛрдЧрд╛ред рдЖрдкрдХрд╛ рд╕реНрдерд╛рдиреАрдп рдЖрдИрдкреА рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ (рдЬрд╣рд╛рдВ рднреА рдЖрдк рдЕрдкрдирд╛ рдЖрд╡реЗрджрди рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ)

  var LOCAL_AUTO_DETECT_ORIGIN = window.location.origin;

  var HOSTED_VIEWER_ORIGINS = ['null', 'http://mozilla.github.io', 'https://mozilla.github.io'];

  HOSTED_VIEWER_ORIGINS.push(LOCAL_AUTO_DETECT_ORIGIN);

рдпрд╣ рдЬрд╛рдирдмреВрдЭрдХрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, #6916 рджреЗрдЦреЗрдВред HOSTED_VIEWER_ORIGINS рд╕реВрдЪреА рдореЗрдВ рдЕрдкрдиреЗ рд╣реЛрд╕реНрдЯ рдореВрд▓ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП viewer.js рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░реЗрдВред рдЙрддреНрддрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдмрдВрдж рдХрд░рдирд╛ред

рдореЗрд░реА рдорджрдж рдХреА

рдпрд╣ рдПрдХ рдмрд╣реБрдд рд╣реА рдмреБрд░реА рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдЕрднреА рддрдХ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рд╣рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдореВрд▓ ' http://localhost ' рд╕реЗ ' https://dmain/file.pdf ' рдкрд░ рд▓рд╛рдиреЗ рдХреА рдкрд╣реБрдВрдЪ CORS рдиреАрддрд┐ рджреНрд╡рд╛рд░рд╛ рдЕрд╡рд░реБрджреНрдз рдХрд░ рджреА рдЧрдИ рд╣реИ: рдЕрдиреБрд░реЛрдзрд┐рдд рд╕рдВрд╕рд╛рдзрди рдкрд░ рдХреЛрдИ 'рдкрд╣реБрдВрдЪ-рдирд┐рдпрдВрддреНрд░рдг-рдЕрдиреБрдорддрд┐-рдЙрддреНрдкрддреНрддрд┐' рд╢реАрд░реНрд╖рд▓реЗрдЦ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИред рдпрджрд┐ рдПрдХ рдЕрдкрд╛рд░рджрд░реНрд╢реА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЖрдкрдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рддреА рд╣реИ, рддреЛ рд╕рдВрд╕рд╛рдзрди рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рдХреЗ рдореЛрдб рдХреЛ 'рдиреЛ-рдХреЙрд░реНрд╕' рдкрд░ рд╕реЗрдЯ рдХрд░реЗрдВред

рдирдорд╕реНрддреЗ,

рдХреНрдпрд╛ рдЗрд╕рдХрд╛ рдХреЛрдИ рдХрд╛рд░рдг рд╣реИ ?

рдпрд╣ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреА рдЬрд┐рдореНрдореЗрджрд╛рд░реА рд╣реИ рдХрд┐ рд╡рд╣ cors рдиреАрддрд┐ рдХреА рдкрд░рд╡рд╛рд╣ рдХрд░реЗ, pdfjs рдХреА рдирд╣реАрдВ
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдЪреЗрдХ рдХреЛ рд╣рдЯрд╛ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдореИрдВрдиреЗValidFileURL рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ return; рдЬреЛрдбрд╝рд╛ рд╣реИ рдФрд░ рдпрд╣ рдЕрдм рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдореИрдВ amazon s3 рд╕реЗ рдкреАрдбреАрдПрдл рд▓реЛрдб рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред

рдЬреИрд╕рд╛ рдХрд┐ @ IK77 рдиреЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ, рдХреНрдпрд╛ рдЖрдк рдХреГрдкрдпрд╛ рдЗрд╕рдХрд╛ рдХрд╛рд░рдг рдмрддрд╛ рд╕рдХрддреЗ рд╣реИрдВ?

рдареАрдХ рд╣реИ, рдореБрдЭреЗ рдпрд╣ рдорд┐рд▓рд╛: https://github.com/mozilla/pdf.js/pull/6916
@IK77

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

patelsumit5192 picture patelsumit5192  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

dmisdm picture dmisdm  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

BrennanDuffey picture BrennanDuffey  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

jigskpatel picture jigskpatel  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

zerr0s picture zerr0s  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ