{"id":370,"date":"2026-09-12T11:08:14","date_gmt":"2026-09-12T11:08:14","guid":{"rendered":"https:\/\/www.mathros.net.ua\/ru\/?page_id=370"},"modified":"2026-09-12T12:08:54","modified_gmt":"2026-09-12T12:08:54","slug":"metod-kramera-onlajn","status":"publish","type":"page","link":"https:\/\/www.mathros.net.ua\/ru\/metod-kramera-onlajn","title":{"rendered":"<center>\u041c\u0435\u0442\u043e\u0434 \u041a\u0440\u0430\u043c\u0435\u0440\u0430 \u041e\u043d\u043b\u0430\u0439\u043d \u041a\u0430\u043b\u044c\u043a\u0443\u043b\u044f\u0442\u043e\u0440<\/center>"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"370\" class=\"elementor elementor-370\">\n\t\t\t\t<div class=\"elementor-element elementor-element-17dfa7d e-flex e-con-boxed e-con e-parent\" data-id=\"17dfa7d\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-5d1d418 elementor-widget elementor-widget-html\" data-id=\"5d1d418\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2\r\n  id=\"determinant-calculator-title\"\r\n  class=\"determinant-calculator-title\"\r\n>\r\n  \u041e\u0442\u0440\u0438\u043c\u0430\u0439\u0442\u0435 \u0440\u043e\u0437\u0432\u2019\u044f\u0437\u043e\u043a \u0441\u0438\u0441\u0442\u0435\u043c\u0438 \u043b\u0456\u043d\u0456\u0439\u043d\u0438\u0445 \u0440\u0456\u0432\u043d\u044f\u043d\u044c \u0456\u0437 \u0434\u0432\u043e\u043c\u0430, \u0442\u0440\u044c\u043e\u043c\u0430 \u0430\u0431\u043e \u0447\u043e\u0442\u0438\u0440\u043c\u0430 \u043d\u0435\u0432\u0456\u0434\u043e\u043c\u0438\u043c\u0438 \u0437\u0430 \u043a\u0456\u043b\u044c\u043a\u0430 \u0441\u0435\u043a\u0443\u043d\u0434 \u0437\u0430 \u0434\u043e\u043f\u043e\u043c\u043e\u0433\u043e\u044e \u043d\u0430\u0448\u043e\u0433\u043e \u043e\u043d\u043b\u0430\u0439\u043d-\u0456\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430.\r\n<\/h2>\r\n\r\n\r\n<style>\r\n.determinant-calculator-title {\r\n\r\n  width:\r\n    min(\r\n      860px,\r\n      calc(100% - 32px)\r\n    );\r\n\r\n  max-width:\r\n    860px;\r\n\r\n  margin:\r\n    10px auto 16px;\r\n\r\n  padding:\r\n    0;\r\n\r\n  font-family:\r\n    system-ui,\r\n    -apple-system,\r\n    \"Segoe UI\",\r\n    Roboto,\r\n    \"Helvetica Neue\",\r\n    Arial,\r\n    \"Noto Sans\",\r\n    \"Liberation Sans\",\r\n    sans-serif;\r\n\r\n  font-size:\r\n    clamp(\r\n      1.15rem,\r\n      1rem + .8vw,\r\n      1.5rem\r\n    );\r\n\r\n  font-weight:\r\n    650;\r\n\r\n  line-height:\r\n    1.35;\r\n\r\n  letter-spacing:\r\n    .002em;\r\n\r\n  color:\r\n    #334155;\r\n\r\n  text-align:\r\n    center;\r\n\r\n  text-wrap:\r\n    balance;\r\n\r\n  hyphens:\r\n    auto;\r\n\r\n  word-break:\r\n    normal;\r\n\r\n  overflow-wrap:\r\n    anywhere;\r\n\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   Dark mode\r\n========================================================= *\/\r\n\r\n@media (prefers-color-scheme: dark) {\r\n\r\n  .determinant-calculator-title {\r\n\r\n    color:\r\n      #cbd5e1;\r\n\r\n  }\r\n\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   Tablet\r\n========================================================= *\/\r\n\r\n@media (max-width: 768px) {\r\n\r\n  .determinant-calculator-title {\r\n\r\n    width:\r\n      calc(100% - 32px);\r\n\r\n    margin:\r\n      8px auto 14px;\r\n\r\n  }\r\n\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   Mobile\r\n========================================================= *\/\r\n\r\n@media (max-width: 480px) {\r\n\r\n  .determinant-calculator-title {\r\n\r\n    width:\r\n      calc(100% - 24px);\r\n\r\n    font-size:\r\n      clamp(\r\n        1.05rem,\r\n        .95rem + 1.5vw,\r\n        1.25rem\r\n      );\r\n\r\n    line-height:\r\n      1.4;\r\n\r\n    margin:\r\n      6px auto 12px;\r\n\r\n  }\r\n\r\n}\r\n<\/style>\r\n\r\n\r\n<script>\r\n(function () {\r\n\r\n  'use strict';\r\n\r\n\r\n  \/* =======================================================\r\n     Translations\r\n  ======================================================= *\/\r\n\r\n  const translations = {\r\n\r\n    uk:\r\n      '\u041e\u0442\u0440\u0438\u043c\u0430\u0439\u0442\u0435 \u0440\u043e\u0437\u0432\u2019\u044f\u0437\u043e\u043a \u0441\u0438\u0441\u0442\u0435\u043c\u0438 \u043b\u0456\u043d\u0456\u0439\u043d\u0438\u0445 \u0440\u0456\u0432\u043d\u044f\u043d\u044c \u0456\u0437 \u0434\u0432\u043e\u043c\u0430, \u0442\u0440\u044c\u043e\u043c\u0430 \u0430\u0431\u043e \u0447\u043e\u0442\u0438\u0440\u043c\u0430 \u043d\u0435\u0432\u0456\u0434\u043e\u043c\u0438\u043c\u0438 \u0437\u0430 \u043a\u0456\u043b\u044c\u043a\u0430 \u0441\u0435\u043a\u0443\u043d\u0434 \u0437\u0430 \u0434\u043e\u043f\u043e\u043c\u043e\u0433\u043e\u044e \u043d\u0430\u0448\u043e\u0433\u043e \u043e\u043d\u043b\u0430\u0439\u043d-\u0456\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430.',\r\n\r\n    en:\r\n      'Solve systems of linear equations with two, three, or four unknowns in seconds using our online Cramer\\'s rule calculator.',\r\n\r\n    ru:\r\n      '\u0420\u0435\u0448\u0438\u0442\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u043b\u0438\u043d\u0435\u0439\u043d\u044b\u0445 \u0443\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0439 \u0441 \u0434\u0432\u0443\u043c\u044f, \u0442\u0440\u0435\u043c\u044f \u0438\u043b\u0438 \u0447\u0435\u0442\u044b\u0440\u044c\u043c\u044f \u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u043c\u0438 \u0437\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0435\u043a\u0443\u043d\u0434 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043d\u0430\u0448\u0435\u0433\u043e \u043e\u043d\u043b\u0430\u0439\u043d-\u043a\u0430\u043b\u044c\u043a\u0443\u043b\u044f\u0442\u043e\u0440\u0430.'\r\n\r\n  };\r\n\r\n\r\n  \/* =======================================================\r\n     Language normalization\r\n  ======================================================= *\/\r\n\r\n  function normalizeLanguage(value) {\r\n\r\n    const language =\r\n      String(\r\n        value || ''\r\n      )\r\n        .trim()\r\n        .toLowerCase()\r\n        .replace(\r\n          '_',\r\n          '-'\r\n        );\r\n\r\n\r\n    if (\r\n      language === 'uk'\r\n      ||\r\n      language === 'ua'\r\n      ||\r\n      language.startsWith('uk-')\r\n      ||\r\n      language.startsWith('ua-')\r\n    ) {\r\n\r\n      return 'uk';\r\n\r\n    }\r\n\r\n\r\n    if (\r\n      language === 'en'\r\n      ||\r\n      language.startsWith('en-')\r\n    ) {\r\n\r\n      return 'en';\r\n\r\n    }\r\n\r\n\r\n    if (\r\n      language === 'ru'\r\n      ||\r\n      language.startsWith('ru-')\r\n    ) {\r\n\r\n      return 'ru';\r\n\r\n    }\r\n\r\n\r\n    return '';\r\n\r\n  }\r\n\r\n\r\n  \/* =======================================================\r\n     Language detection\r\n  ======================================================= *\/\r\n\r\n  function detectLanguage() {\r\n\r\n    \/*\r\n     * 1. \u042f\u0432\u043d\u043e \u0437\u0430\u0434\u0430\u043d\u0430 \u043c\u043e\u0432\u0430 \u0447\u0435\u0440\u0435\u0437 JavaScript.\r\n     *\r\n     * \u041f\u0440\u0438\u043a\u043b\u0430\u0434:\r\n     *\r\n     * window.MathrosDetLang = 'en';\r\n     *\/\r\n    const windowLanguage =\r\n      normalizeLanguage(\r\n        window.MathrosDetLang\r\n      );\r\n\r\n\r\n    if (\r\n      windowLanguage\r\n    ) {\r\n\r\n      return windowLanguage;\r\n\r\n    }\r\n\r\n\r\n    \/*\r\n     * 2. \u0410\u0442\u0440\u0438\u0431\u0443\u0442 lang \u0443 <html>.\r\n     *\/\r\n    const htmlLanguage =\r\n      normalizeLanguage(\r\n        document.documentElement.lang\r\n      );\r\n\r\n\r\n    if (\r\n      htmlLanguage\r\n    ) {\r\n\r\n      return htmlLanguage;\r\n\r\n    }\r\n\r\n\r\n    \/*\r\n     * 3. \u041f\u0435\u0440\u0448\u0438\u0439 \u0441\u0435\u0433\u043c\u0435\u043d\u0442 URL.\r\n     *\r\n     * \/uk\/...\r\n     * \/en\/...\r\n     * \/ru\/...\r\n     *\/\r\n    const pathSegment =\r\n      String(\r\n        window.location.pathname\r\n        ||\r\n        ''\r\n      )\r\n        .split('\/')\r\n        .filter(Boolean)[0]\r\n        ||\r\n        '';\r\n\r\n\r\n    const pathLanguage =\r\n      normalizeLanguage(\r\n        pathSegment\r\n      );\r\n\r\n\r\n    if (\r\n      pathLanguage\r\n    ) {\r\n\r\n      return pathLanguage;\r\n\r\n    }\r\n\r\n\r\n    \/*\r\n     * 4. \u0423\u043a\u0440\u0430\u0457\u043d\u0441\u044c\u043a\u0430 \u043c\u043e\u0432\u0430 \u0437\u0430 \u0437\u0430\u043c\u043e\u0432\u0447\u0443\u0432\u0430\u043d\u043d\u044f\u043c.\r\n     *\/\r\n    return 'uk';\r\n\r\n  }\r\n\r\n\r\n  \/* =======================================================\r\n     Set title\r\n  ======================================================= *\/\r\n\r\n  function setCalculatorTitle() {\r\n\r\n    const title =\r\n      document.getElementById(\r\n        'determinant-calculator-title'\r\n      );\r\n\r\n\r\n    if (\r\n      !title\r\n    ) {\r\n\r\n      return;\r\n\r\n    }\r\n\r\n\r\n    const language =\r\n      detectLanguage();\r\n\r\n\r\n    title.textContent =\r\n      translations[language]\r\n      ||\r\n      translations.uk;\r\n\r\n  }\r\n\r\n\r\n  \/* =======================================================\r\n     Init\r\n  ======================================================= *\/\r\n\r\n  if (\r\n    document.readyState ===\r\n    'loading'\r\n  ) {\r\n\r\n    document.addEventListener(\r\n      'DOMContentLoaded',\r\n      setCalculatorTitle\r\n    );\r\n\r\n  }\r\n\r\n  else {\r\n\r\n    setCalculatorTitle();\r\n\r\n  }\r\n\r\n})();\r\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-900f469 elementor-widget elementor-widget-html\" data-id=\"900f469\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!-- =========================================================\r\n     CRAMER'S RULE CALCULATOR UI\r\n     Languages: uk \/ en \/ ru\r\n     AJAX action: cramers_rule\r\n\r\n     Supported clipboard input:\r\n     1) Plain text\r\n        2 3 | 5\r\n        1 -4 | 7\r\n\r\n     2) Without |\r\n        2 3 5\r\n        1 -4 7\r\n\r\n     3) Excel \/ Google Sheets\r\n        2    3    5\r\n        1   -4    7\r\n\r\n     4) JSON\r\n        [[2,3,5],[1,-4,7]]\r\n\r\n     5) LaTeX\r\n        \\begin{bmatrix}\r\n        2 & 3 & 5\\\\\r\n        1 & -4 & 7\r\n        \\end{bmatrix}\r\n\r\n        \\left(\r\n        \\begin{array}{cc|c}\r\n        2 & 3 & 5\\\\\r\n        1 & -4 & 7\r\n        \\end{array}\r\n        \\right)\r\n\r\n     Language detection priority:\r\n     1) window.MathrosCramerLang\r\n     2) data-lang\r\n     3) <html lang>\r\n     4) \/uk\/, \/en\/, \/ru\/\r\n     5) uk\r\n========================================================= -->\r\n\r\n\r\n<!-- =========================================================\r\n     MathJax\r\n========================================================= -->\r\n\r\n<script>\r\n(function () {\r\n\r\n    if (\r\n        !window.MathJax\r\n        &&\r\n        !document.getElementById(\r\n            'mathjax-v2-cramer-loader'\r\n        )\r\n    ) {\r\n\r\n        const script =\r\n            document.createElement(\r\n                'script'\r\n            );\r\n\r\n        script.id =\r\n            'mathjax-v2-cramer-loader';\r\n\r\n        script.type =\r\n            'text\/javascript';\r\n\r\n        script.async =\r\n            true;\r\n\r\n        script.src =\r\n            'https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/mathjax\/2.7.7\/MathJax.js?config=TeX-MML-AM_CHTML';\r\n\r\n        document.head.appendChild(\r\n            script\r\n        );\r\n\r\n    }\r\n\r\n})();\r\n<\/script>\r\n\r\n\r\n<!-- =========================================================\r\n     HTML\r\n========================================================= -->\r\n\r\n<div\r\n    id=\"cramer-calculator-app\"\r\n    class=\"cramer-app\"\r\n    data-lang=\"auto\"\r\n>\r\n\r\n    <section\r\n        class=\"cramer-calculator\"\r\n        aria-labelledby=\"cramer-size-label\"\r\n    >\r\n\r\n        <!-- =================================================\r\n             System size\r\n        ================================================== -->\r\n\r\n        <div class=\"cramer-field\">\r\n\r\n            <label\r\n                id=\"cramer-size-label\"\r\n                for=\"cramerSystemSize\"\r\n                data-i18n=\"systemSizeLabel\"\r\n            >\r\n                \u041a\u0456\u043b\u044c\u043a\u0456\u0441\u0442\u044c \u043d\u0435\u0432\u0456\u0434\u043e\u043c\u0438\u0445\r\n            <\/label>\r\n\r\n            <select\r\n                id=\"cramerSystemSize\"\r\n                data-i18n-aria=\"systemSizeAria\"\r\n                aria-label=\"\u041a\u0456\u043b\u044c\u043a\u0456\u0441\u0442\u044c \u043d\u0435\u0432\u0456\u0434\u043e\u043c\u0438\u0445 \u0443 \u0441\u0438\u0441\u0442\u0435\u043c\u0456\"\r\n            >\r\n\r\n                <option value=\"2\">\r\n                    2\r\n                <\/option>\r\n\r\n                <option\r\n                    value=\"3\"\r\n                    selected\r\n                >\r\n                    3\r\n                <\/option>\r\n\r\n                <option value=\"4\">\r\n                    4\r\n                <\/option>\r\n\r\n            <\/select>\r\n\r\n        <\/div>\r\n\r\n\r\n        <!-- =================================================\r\n             Augmented matrix\r\n        ================================================== -->\r\n\r\n        <section\r\n            class=\"cramer-matrix-section\"\r\n            aria-labelledby=\"cramer-matrix-title\"\r\n        >\r\n\r\n            <!-- =============================================\r\n                 Header\r\n            ============================================== -->\r\n\r\n            <div class=\"cramer-matrix-header\">\r\n\r\n                <div\r\n                    id=\"cramer-matrix-title\"\r\n                    class=\"cramer-section-label\"\r\n                    data-i18n=\"matrixTitle\"\r\n                >\r\n                    \u0420\u043e\u0437\u0448\u0438\u0440\u0435\u043d\u0430 \u043c\u0430\u0442\u0440\u0438\u0446\u044f (A|b)\r\n                <\/div>\r\n\r\n\r\n                <!-- =========================================\r\n                     Clipboard buttons\r\n                ========================================== -->\r\n\r\n                <div class=\"cramer-matrix-actions\">\r\n\r\n                    <!-- Copy -->\r\n\r\n                    <button\r\n                        id=\"cramer-copy-system-button\"\r\n                        type=\"button\"\r\n                        class=\"cramer-icon-button\"\r\n                        data-i18n-aria=\"copySystem\"\r\n                        data-i18n-title=\"copySystem\"\r\n                        aria-label=\"\u041a\u043e\u043f\u0456\u044e\u0432\u0430\u0442\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u0443\"\r\n                        title=\"\u041a\u043e\u043f\u0456\u044e\u0432\u0430\u0442\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u0443\"\r\n                    >\r\n\r\n                        <svg\r\n                            viewBox=\"0 0 24 24\"\r\n                            aria-hidden=\"true\"\r\n                            focusable=\"false\"\r\n                        >\r\n\r\n                            <rect\r\n                                x=\"8\"\r\n                                y=\"8\"\r\n                                width=\"11\"\r\n                                height=\"11\"\r\n                                rx=\"2\"\r\n                            ><\/rect>\r\n\r\n                            <path\r\n                                d=\"M16 8V6a2 2 0 0 0-2-2H6a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h2\"\r\n                            ><\/path>\r\n\r\n                        <\/svg>\r\n\r\n                    <\/button>\r\n\r\n\r\n                    <!-- Paste -->\r\n\r\n                    <button\r\n                        id=\"cramer-paste-system-button\"\r\n                        type=\"button\"\r\n                        class=\"cramer-icon-button\"\r\n                        data-i18n-aria=\"pasteSystem\"\r\n                        data-i18n-title=\"pasteSystem\"\r\n                        aria-label=\"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u0443\"\r\n                        title=\"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u0443\"\r\n                    >\r\n\r\n                        <svg\r\n                            viewBox=\"0 0 24 24\"\r\n                            aria-hidden=\"true\"\r\n                            focusable=\"false\"\r\n                        >\r\n\r\n                            <path\r\n                                d=\"M9 5h6\"\r\n                            ><\/path>\r\n\r\n                            <path\r\n                                d=\"M9 3h6a2 2 0 0 1 2 2v1H7V5a2 2 0 0 1 2-2Z\"\r\n                            ><\/path>\r\n\r\n                            <rect\r\n                                x=\"5\"\r\n                                y=\"6\"\r\n                                width=\"14\"\r\n                                height=\"15\"\r\n                                rx=\"2\"\r\n                            ><\/rect>\r\n\r\n                        <\/svg>\r\n\r\n                    <\/button>\r\n\r\n                <\/div>\r\n\r\n            <\/div>\r\n\r\n\r\n            <!-- =============================================\r\n                 Matrix\r\n            ============================================== -->\r\n\r\n            <div class=\"cramer-matrix-scroll\">\r\n\r\n                <div class=\"cramer-matrix-frame\">\r\n\r\n                    <table\r\n                        id=\"cramerMatrixTable\"\r\n                        class=\"cramer-matrix\"\r\n                        data-i18n-aria=\"matrixTableAria\"\r\n                        aria-label=\"\u041f\u043e\u043b\u0435 \u0432\u0432\u0435\u0434\u0435\u043d\u043d\u044f \u0440\u043e\u0437\u0448\u0438\u0440\u0435\u043d\u043e\u0457 \u043c\u0430\u0442\u0440\u0438\u0446\u0456 \u0441\u0438\u0441\u0442\u0435\u043c\u0438\"\r\n                    ><\/table>\r\n\r\n                <\/div>\r\n\r\n            <\/div>\r\n\r\n        <\/section>\r\n\r\n\r\n        <!-- =================================================\r\n             Random settings\r\n        ================================================== -->\r\n\r\n        <details class=\"cramer-random-settings\">\r\n\r\n            <summary data-i18n=\"randomSettingsTitle\">\r\n                \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0438 \u0432\u0438\u043f\u0430\u0434\u043a\u043e\u0432\u043e\u0433\u043e \u043f\u0440\u0438\u043a\u043b\u0430\u0434\u0443\r\n            <\/summary>\r\n\r\n\r\n            <div class=\"cramer-random-settings__content\">\r\n\r\n                <div class=\"cramer-random-grid\">\r\n\r\n\r\n                    <!-- =====================================\r\n                         Range\r\n                    ====================================== -->\r\n\r\n                    <div class=\"cramer-random-group\">\r\n\r\n                        <div\r\n                            class=\"cramer-random-label\"\r\n                            data-i18n=\"valuesLabel\"\r\n                        >\r\n                            \u0417\u043d\u0430\u0447\u0435\u043d\u043d\u044f \u0435\u043b\u0435\u043c\u0435\u043d\u0442\u0456\u0432\r\n                        <\/div>\r\n\r\n\r\n                        <div class=\"cramer-range\">\r\n\r\n                            <div>\r\n\r\n                                <label\r\n                                    for=\"cramerRandomMin\"\r\n                                    data-i18n=\"fromLabel\"\r\n                                >\r\n                                    \u0412\u0456\u0434\r\n                                <\/label>\r\n\r\n                                <input\r\n                                    id=\"cramerRandomMin\"\r\n                                    type=\"number\"\r\n                                    value=\"-5\"\r\n                                    step=\"0.1\"\r\n                                    data-i18n-aria=\"randomMinAria\"\r\n                                    aria-label=\"\u041c\u0456\u043d\u0456\u043c\u0430\u043b\u044c\u043d\u0435 \u0432\u0438\u043f\u0430\u0434\u043a\u043e\u0432\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044f\"\r\n                                >\r\n\r\n                            <\/div>\r\n\r\n\r\n                            <div>\r\n\r\n                                <label\r\n                                    for=\"cramerRandomMax\"\r\n                                    data-i18n=\"toLabel\"\r\n                                >\r\n                                    \u0414\u043e\r\n                                <\/label>\r\n\r\n                                <input\r\n                                    id=\"cramerRandomMax\"\r\n                                    type=\"number\"\r\n                                    value=\"5\"\r\n                                    step=\"0.1\"\r\n                                    data-i18n-aria=\"randomMaxAria\"\r\n                                    aria-label=\"\u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0435 \u0432\u0438\u043f\u0430\u0434\u043a\u043e\u0432\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044f\"\r\n                                >\r\n\r\n                            <\/div>\r\n\r\n                        <\/div>\r\n\r\n                    <\/div>\r\n\r\n\r\n                    <!-- =====================================\r\n                         Number type\r\n                    ====================================== -->\r\n\r\n                    <div class=\"cramer-random-group\">\r\n\r\n                        <label\r\n                            class=\"cramer-random-label\"\r\n                            for=\"cramerRandomNumberType\"\r\n                            data-i18n=\"numberTypeLabel\"\r\n                        >\r\n                            \u0422\u0438\u043f \u0447\u0438\u0441\u0435\u043b\r\n                        <\/label>\r\n\r\n                        <select id=\"cramerRandomNumberType\">\r\n\r\n                            <option\r\n                                value=\"integer\"\r\n                                selected\r\n                                data-i18n=\"integersOption\"\r\n                            >\r\n                                \u0426\u0456\u043b\u0456\r\n                            <\/option>\r\n\r\n                            <option\r\n                                value=\"decimal\"\r\n                                data-i18n=\"decimalsOption\"\r\n                            >\r\n                                \u0414\u0435\u0441\u044f\u0442\u043a\u043e\u0432\u0456\r\n                            <\/option>\r\n\r\n                        <\/select>\r\n\r\n                    <\/div>\r\n\r\n\r\n                    <!-- =====================================\r\n                         System type\r\n                    ====================================== -->\r\n\r\n                    <div class=\"cramer-random-group\">\r\n\r\n                        <label\r\n                            class=\"cramer-random-label\"\r\n                            for=\"cramerRandomSystemType\"\r\n                            data-i18n=\"systemTypeLabel\"\r\n                        >\r\n                            \u0422\u0438\u043f \u0441\u0438\u0441\u0442\u0435\u043c\u0438\r\n                        <\/label>\r\n\r\n                        <select id=\"cramerRandomSystemType\">\r\n\r\n                            <option\r\n                                value=\"any\"\r\n                                selected\r\n                                data-i18n=\"anySystemOption\"\r\n                            >\r\n                                \u0411\u0443\u0434\u044c-\u044f\u043a\u0430\r\n                            <\/option>\r\n\r\n                            <option\r\n                                value=\"unique\"\r\n                                data-i18n=\"uniqueSystemOption\"\r\n                            >\r\n                                \u0404\u0434\u0438\u043d\u0438\u0439 \u0440\u043e\u0437\u0432\u2019\u044f\u0437\u043e\u043a\r\n                            <\/option>\r\n\r\n                            <option\r\n                                value=\"none\"\r\n                                data-i18n=\"noSolutionOption\"\r\n                            >\r\n                                \u041d\u0435\u043c\u0430\u0454 \u0440\u043e\u0437\u0432\u2019\u044f\u0437\u043a\u0456\u0432\r\n                            <\/option>\r\n\r\n                            <option\r\n                                value=\"infinite\"\r\n                                data-i18n=\"infiniteSolutionsOption\"\r\n                            >\r\n                                \u041d\u0435\u0441\u043a\u0456\u043d\u0447\u0435\u043d\u043d\u043e \u0431\u0430\u0433\u0430\u0442\u043e \u0440\u043e\u0437\u0432\u2019\u044f\u0437\u043a\u0456\u0432\r\n                            <\/option>\r\n\r\n                        <\/select>\r\n\r\n                    <\/div>\r\n\r\n                <\/div>\r\n\r\n            <\/div>\r\n\r\n        <\/details>\r\n\r\n\r\n        <!-- =================================================\r\n             Utility buttons\r\n        ================================================== -->\r\n\r\n        <div class=\"cramer-utility-row\">\r\n\r\n            <button\r\n                id=\"cramer-random-button\"\r\n                type=\"button\"\r\n                class=\"cramer-secondary-button\"\r\n                data-i18n=\"randomButton\"\r\n            >\r\n                \u0412\u0438\u043f\u0430\u0434\u043a\u043e\u0432\u0438\u0439 \u043f\u0440\u0438\u043a\u043b\u0430\u0434\r\n            <\/button>\r\n\r\n\r\n            <button\r\n                id=\"cramer-clear-button\"\r\n                type=\"button\"\r\n                class=\"cramer-text-button\"\r\n                data-i18n=\"clearButton\"\r\n            >\r\n                \u041e\u0447\u0438\u0441\u0442\u0438\u0442\u0438\r\n            <\/button>\r\n\r\n        <\/div>\r\n\r\n\r\n        <!-- =================================================\r\n             Calculate\r\n        ================================================== -->\r\n\r\n        <button\r\n            id=\"cramer-generate-button\"\r\n            type=\"button\"\r\n            class=\"cramer-primary-button\"\r\n            data-i18n=\"calculateButton\"\r\n        >\r\n            \u0420\u043e\u0437\u0432\u2019\u044f\u0437\u0430\u0442\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u0443\r\n        <\/button>\r\n\r\n\r\n        <!-- =================================================\r\n             Shortcut\r\n        ================================================== -->\r\n\r\n        <div class=\"cramer-shortcut\">\r\n\r\n            <span data-i18n=\"shortcutLabel\">\r\n                \u0428\u0432\u0438\u0434\u043a\u0438\u0439 \u0437\u0430\u043f\u0443\u0441\u043a:\r\n            <\/span>\r\n\r\n            <kbd>Ctrl<\/kbd>\/<kbd>\u2318<\/kbd>\r\n            +\r\n            <kbd>Enter<\/kbd>\r\n\r\n        <\/div>\r\n\r\n    <\/section>\r\n\r\n\r\n    <!-- =====================================================\r\n         Error\r\n    ====================================================== -->\r\n\r\n    <div\r\n        id=\"cramer-error\"\r\n        class=\"cramer-error\"\r\n        role=\"alert\"\r\n        aria-live=\"polite\"\r\n    ><\/div>\r\n\r\n\r\n    <!-- =====================================================\r\n         Status message\r\n    ====================================================== -->\r\n\r\n    <div\r\n        id=\"cramer-status\"\r\n        class=\"cramer-status\"\r\n        role=\"status\"\r\n        aria-live=\"polite\"\r\n    ><\/div>\r\n\r\n\r\n    <!-- =====================================================\r\n         Loading\r\n    ====================================================== -->\r\n\r\n    <div\r\n        id=\"cramer-loading\"\r\n        class=\"cramer-loading\"\r\n        hidden\r\n        aria-live=\"polite\"\r\n    >\r\n\r\n        <div\r\n            class=\"cramer-loader-circle\"\r\n            aria-hidden=\"true\"\r\n        ><\/div>\r\n\r\n\r\n        <div>\r\n\r\n            <strong data-i18n=\"loadingTitle\">\r\n                \u0420\u043e\u0437\u0432\u2019\u044f\u0437\u0443\u0454\u043c\u043e \u0441\u0438\u0441\u0442\u0435\u043c\u0443\r\n            <\/strong>\r\n\r\n            <span data-i18n=\"loadingText\">\r\n                \u041e\u0431\u0447\u0438\u0441\u043b\u044e\u0454\u043c\u043e \u0432\u0438\u0437\u043d\u0430\u0447\u043d\u0438\u043a\u0438 \u0442\u0430 \u0437\u0430\u0441\u0442\u043e\u0441\u043e\u0432\u0443\u0454\u043c\u043e \u043c\u0435\u0442\u043e\u0434 \u041a\u0440\u0430\u043c\u0435\u0440\u0430.\r\n            <\/span>\r\n\r\n        <\/div>\r\n\r\n    <\/div>\r\n\r\n\r\n    <!-- =====================================================\r\n         Solution\r\n    ====================================================== -->\r\n\r\n    <section\r\n        id=\"cramer-solution-container\"\r\n        class=\"cramer-solution-container\"\r\n        hidden\r\n        aria-live=\"polite\"\r\n    ><\/section>\r\n\r\n<\/div>\r\n\r\n\r\n<!-- =========================================================\r\n     CSS\r\n========================================================= -->\r\n\r\n<style>\r\n\r\n\/* =========================================================\r\n   Root\r\n========================================================= *\/\r\n\r\n#cramer-calculator-app {\r\n\r\n    --cramer-bg:\r\n        #ffffff;\r\n\r\n    --cramer-soft:\r\n        #f8fbfd;\r\n\r\n    --cramer-soft-2:\r\n        #eef5f8;\r\n\r\n    --cramer-border:\r\n        #dbe6ed;\r\n\r\n    --cramer-border-strong:\r\n        #bfd0da;\r\n\r\n    --cramer-text:\r\n        #0f1728;\r\n\r\n    --cramer-muted:\r\n        #607487;\r\n\r\n    --cramer-accent:\r\n        #0B638B;\r\n\r\n    --cramer-accent-hover:\r\n        #095676;\r\n\r\n    --cramer-accent-soft:\r\n        rgba(11, 99, 139, .10);\r\n\r\n    --cramer-danger:\r\n        #b9382f;\r\n\r\n    --cramer-danger-soft:\r\n        rgba(185, 56, 47, .10);\r\n\r\n    --cramer-success:\r\n        #176b4d;\r\n\r\n    --cramer-success-soft:\r\n        rgba(23, 107, 77, .10);\r\n\r\n    --cramer-radius:\r\n        16px;\r\n\r\n    --cramer-font:\r\n        system-ui,\r\n        -apple-system,\r\n        \"Segoe UI\",\r\n        Roboto,\r\n        \"Helvetica Neue\",\r\n        Arial,\r\n        \"Noto Sans\",\r\n        sans-serif;\r\n\r\n    width:\r\n        min(100%, 860px);\r\n\r\n    margin:\r\n        20px auto;\r\n\r\n    color:\r\n        var(--cramer-text);\r\n\r\n    font-family:\r\n        var(--cramer-font);\r\n\r\n}\r\n\r\n\r\n#cramer-calculator-app *,\r\n#cramer-calculator-app *::before,\r\n#cramer-calculator-app *::after {\r\n\r\n    box-sizing:\r\n        border-box;\r\n\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   Calculator\r\n========================================================= *\/\r\n\r\n#cramer-calculator-app\r\n.cramer-calculator {\r\n\r\n    padding:\r\n        22px;\r\n\r\n    border:\r\n        1px solid\r\n        var(--cramer-border);\r\n\r\n    border-radius:\r\n        var(--cramer-radius);\r\n\r\n    background:\r\n        var(--cramer-bg);\r\n\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   Field\r\n========================================================= *\/\r\n\r\n#cramer-calculator-app\r\n.cramer-field {\r\n\r\n    margin-bottom:\r\n        18px;\r\n\r\n}\r\n\r\n\r\n#cramer-calculator-app\r\n.cramer-field label {\r\n\r\n    display:\r\n        block;\r\n\r\n    margin:\r\n        0 0 7px;\r\n\r\n    color:\r\n        var(--cramer-text);\r\n\r\n    font-size:\r\n        .95rem;\r\n\r\n    font-weight:\r\n        760;\r\n\r\n    line-height:\r\n        1.35;\r\n\r\n}\r\n\r\n\r\n#cramer-calculator-app\r\n.cramer-field select {\r\n\r\n    width:\r\n        190px;\r\n\r\n    height:\r\n        43px;\r\n\r\n    padding:\r\n        0 11px;\r\n\r\n    border:\r\n        1px solid\r\n        var(--cramer-border);\r\n\r\n    border-radius:\r\n        11px;\r\n\r\n    outline:\r\n        none;\r\n\r\n    background:\r\n        var(--cramer-soft);\r\n\r\n    color:\r\n        var(--cramer-text);\r\n\r\n    font:\r\n        650 .9rem\/1\r\n        var(--cramer-font);\r\n\r\n    cursor:\r\n        pointer;\r\n\r\n}\r\n\r\n\r\n#cramer-calculator-app\r\n.cramer-field select:hover {\r\n\r\n    border-color:\r\n        var(--cramer-border-strong);\r\n\r\n}\r\n\r\n\r\n#cramer-calculator-app\r\n.cramer-field select:focus-visible {\r\n\r\n    border-color:\r\n        var(--cramer-accent);\r\n\r\n    box-shadow:\r\n        0 0 0 3px\r\n        rgba(11, 99, 139, .08);\r\n\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   Matrix section\r\n========================================================= *\/\r\n\r\n#cramer-calculator-app\r\n.cramer-matrix-section {\r\n\r\n    padding-top:\r\n        15px;\r\n\r\n    border-top:\r\n        1px solid\r\n        var(--cramer-border);\r\n\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   Matrix header\r\n========================================================= *\/\r\n\r\n#cramer-calculator-app\r\n.cramer-matrix-header {\r\n\r\n    display:\r\n        flex;\r\n\r\n    align-items:\r\n        center;\r\n\r\n    justify-content:\r\n        space-between;\r\n\r\n    gap:\r\n        12px;\r\n\r\n    margin-bottom:\r\n        10px;\r\n\r\n}\r\n\r\n\r\n#cramer-calculator-app\r\n.cramer-section-label {\r\n\r\n    min-width:\r\n        0;\r\n\r\n    color:\r\n        var(--cramer-muted);\r\n\r\n    font-size:\r\n        .78rem;\r\n\r\n    font-weight:\r\n        800;\r\n\r\n    line-height:\r\n        1.35;\r\n\r\n    letter-spacing:\r\n        .035em;\r\n\r\n    text-transform:\r\n        uppercase;\r\n\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   Clipboard buttons\r\n========================================================= *\/\r\n\r\n#cramer-calculator-app\r\n.cramer-matrix-actions {\r\n\r\n    display:\r\n        flex;\r\n\r\n    flex:\r\n        0 0 auto;\r\n\r\n    align-items:\r\n        center;\r\n\r\n    gap:\r\n        3px;\r\n\r\n}\r\n\r\n\r\n#cramer-calculator-app\r\n.cramer-icon-button {\r\n\r\n    display:\r\n        inline-flex;\r\n\r\n    align-items:\r\n        center;\r\n\r\n    justify-content:\r\n        center;\r\n\r\n    width:\r\n        34px;\r\n\r\n    height:\r\n        34px;\r\n\r\n    padding:\r\n        0;\r\n\r\n    border:\r\n        1px solid transparent;\r\n\r\n    border-radius:\r\n        8px;\r\n\r\n    outline:\r\n        none;\r\n\r\n    background:\r\n        transparent;\r\n\r\n    color:\r\n        var(--cramer-accent);\r\n\r\n    cursor:\r\n        pointer;\r\n\r\n    transition:\r\n        background-color .16s ease,\r\n        border-color .16s ease,\r\n        transform .12s ease;\r\n\r\n}\r\n\r\n\r\n#cramer-calculator-app\r\n.cramer-icon-button:hover {\r\n\r\n    background:\r\n        var(--cramer-accent-soft);\r\n\r\n}\r\n\r\n\r\n#cramer-calculator-app\r\n.cramer-icon-button:active {\r\n\r\n    transform:\r\n        scale(.94);\r\n\r\n}\r\n\r\n\r\n#cramer-calculator-app\r\n.cramer-icon-button:focus-visible {\r\n\r\n    border-color:\r\n        var(--cramer-accent);\r\n\r\n    box-shadow:\r\n        0 0 0 3px\r\n        rgba(11, 99, 139, .08);\r\n\r\n}\r\n\r\n\r\n#cramer-calculator-app\r\n.cramer-icon-button.is-success {\r\n\r\n    background:\r\n        var(--cramer-success-soft);\r\n\r\n    color:\r\n        var(--cramer-success);\r\n\r\n}\r\n\r\n\r\n#cramer-calculator-app\r\n.cramer-icon-button svg {\r\n\r\n    width:\r\n        19px;\r\n\r\n    height:\r\n        19px;\r\n\r\n    fill:\r\n        none;\r\n\r\n    stroke:\r\n        currentColor;\r\n\r\n    stroke-width:\r\n        1.8;\r\n\r\n    stroke-linecap:\r\n        round;\r\n\r\n    stroke-linejoin:\r\n        round;\r\n\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   Matrix scroll\r\n========================================================= *\/\r\n\r\n#cramer-calculator-app\r\n.cramer-matrix-scroll {\r\n\r\n    width:\r\n        100%;\r\n\r\n    max-width:\r\n        100%;\r\n\r\n    overflow-x:\r\n        auto;\r\n\r\n    overflow-y:\r\n        hidden;\r\n\r\n    padding:\r\n        4px 0 8px;\r\n\r\n    -webkit-overflow-scrolling:\r\n        touch;\r\n\r\n    scrollbar-width:\r\n        thin;\r\n\r\n    scrollbar-color:\r\n        var(--cramer-border-strong)\r\n        transparent;\r\n\r\n}\r\n\r\n\r\n#cramer-calculator-app\r\n.cramer-matrix-scroll::-webkit-scrollbar {\r\n\r\n    height:\r\n        6px;\r\n\r\n}\r\n\r\n\r\n#cramer-calculator-app\r\n.cramer-matrix-scroll::-webkit-scrollbar-thumb {\r\n\r\n    background:\r\n        var(--cramer-border-strong);\r\n\r\n    border-radius:\r\n        999px;\r\n\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   Matrix frame\r\n========================================================= *\/\r\n\r\n#cramer-calculator-app\r\n.cramer-matrix-frame {\r\n\r\n    position:\r\n        relative;\r\n\r\n    display:\r\n        table;\r\n\r\n    min-width:\r\n        min-content;\r\n\r\n    margin:\r\n        0 auto;\r\n\r\n    padding:\r\n        10px 18px;\r\n\r\n}\r\n\r\n\r\n#cramer-calculator-app\r\n.cramer-matrix-frame::before {\r\n\r\n    content:\r\n        \"\";\r\n\r\n    position:\r\n        absolute;\r\n\r\n    top:\r\n        3px;\r\n\r\n    bottom:\r\n        3px;\r\n\r\n    left:\r\n        2px;\r\n\r\n    width:\r\n        9px;\r\n\r\n    border-top:\r\n        2px solid\r\n        var(--cramer-text);\r\n\r\n    border-bottom:\r\n        2px solid\r\n        var(--cramer-text);\r\n\r\n    border-left:\r\n        2px solid\r\n        var(--cramer-text);\r\n\r\n}\r\n\r\n\r\n#cramer-calculator-app\r\n.cramer-matrix-frame::after {\r\n\r\n    content:\r\n        \"\";\r\n\r\n    position:\r\n        absolute;\r\n\r\n    top:\r\n        3px;\r\n\r\n    bottom:\r\n        3px;\r\n\r\n    right:\r\n        2px;\r\n\r\n    width:\r\n        9px;\r\n\r\n    border-top:\r\n        2px solid\r\n        var(--cramer-text);\r\n\r\n    border-bottom:\r\n        2px solid\r\n        var(--cramer-text);\r\n\r\n    border-right:\r\n        2px solid\r\n        var(--cramer-text);\r\n\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   Matrix table\r\n========================================================= *\/\r\n\r\n#cramer-calculator-app\r\n.cramer-matrix {\r\n\r\n    width:\r\n        auto !important;\r\n\r\n    margin:\r\n        0 !important;\r\n\r\n    padding:\r\n        0 !important;\r\n\r\n    border:\r\n        0 !important;\r\n\r\n    border-collapse:\r\n        separate !important;\r\n\r\n    border-spacing:\r\n        6px !important;\r\n\r\n    background:\r\n        transparent !important;\r\n\r\n}\r\n\r\n\r\n#cramer-calculator-app\r\n.cramer-matrix tr,\r\n\r\n#cramer-calculator-app\r\n.cramer-matrix td {\r\n\r\n    margin:\r\n        0 !important;\r\n\r\n    padding:\r\n        0 !important;\r\n\r\n    border:\r\n        0 !important;\r\n\r\n    background:\r\n        transparent !important;\r\n\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   Separator A | b\r\n========================================================= *\/\r\n\r\n#cramer-calculator-app\r\n.cramer-matrix td.cramer-rhs-cell {\r\n\r\n    position:\r\n        relative;\r\n\r\n    padding-left:\r\n        13px !important;\r\n\r\n}\r\n\r\n\r\n#cramer-calculator-app\r\n.cramer-matrix td.cramer-rhs-cell::before {\r\n\r\n    content:\r\n        \"\";\r\n\r\n    position:\r\n        absolute;\r\n\r\n    top:\r\n        2px;\r\n\r\n    bottom:\r\n        2px;\r\n\r\n    left:\r\n        3px;\r\n\r\n    width:\r\n        1.5px;\r\n\r\n    background:\r\n        var(--cramer-border-strong);\r\n\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   Inputs\r\n========================================================= *\/\r\n\r\n#cramer-calculator-app\r\n.cramer-matrix input {\r\n\r\n    display:\r\n        block;\r\n\r\n    width:\r\n        70px;\r\n\r\n    height:\r\n        43px;\r\n\r\n    margin:\r\n        0;\r\n\r\n    padding:\r\n        0 7px;\r\n\r\n    border:\r\n        1px solid\r\n        var(--cramer-border);\r\n\r\n    border-radius:\r\n        9px;\r\n\r\n    outline:\r\n        none;\r\n\r\n    background:\r\n        var(--cramer-soft);\r\n\r\n    color:\r\n        var(--cramer-text);\r\n\r\n    font:\r\n        650 15px\/1\r\n        var(--cramer-font);\r\n\r\n    text-align:\r\n        center;\r\n\r\n}\r\n\r\n\r\n#cramer-calculator-app\r\n.cramer-matrix input:hover {\r\n\r\n    border-color:\r\n        var(--cramer-border-strong);\r\n\r\n}\r\n\r\n\r\n#cramer-calculator-app\r\n.cramer-matrix input:focus-visible {\r\n\r\n    border-color:\r\n        var(--cramer-accent);\r\n\r\n    background:\r\n        #ffffff;\r\n\r\n    box-shadow:\r\n        0 0 0 3px\r\n        rgba(11, 99, 139, .08);\r\n\r\n}\r\n\r\n\r\n#cramer-calculator-app\r\n.cramer-matrix input::placeholder {\r\n\r\n    color:\r\n        var(--cramer-muted);\r\n\r\n    opacity:\r\n        .52;\r\n\r\n}\r\n\r\n\r\n#cramer-calculator-app\r\n.cramer-matrix input.cramer-input-error {\r\n\r\n    border-color:\r\n        var(--cramer-danger);\r\n\r\n    background:\r\n        var(--cramer-danger-soft);\r\n\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   Random settings\r\n========================================================= *\/\r\n\r\n#cramer-calculator-app\r\n.cramer-random-settings {\r\n\r\n    margin-top:\r\n        17px;\r\n\r\n    padding-top:\r\n        13px;\r\n\r\n    border-top:\r\n        1px solid\r\n        var(--cramer-border);\r\n\r\n}\r\n\r\n\r\n#cramer-calculator-app\r\n.cramer-random-settings > summary {\r\n\r\n    cursor:\r\n        pointer;\r\n\r\n    list-style:\r\n        none;\r\n\r\n    color:\r\n        var(--cramer-accent);\r\n\r\n    font-size:\r\n        .87rem;\r\n\r\n    font-weight:\r\n        760;\r\n\r\n    line-height:\r\n        1.4;\r\n\r\n}\r\n\r\n\r\n#cramer-calculator-app\r\n.cramer-random-settings > summary::-webkit-details-marker {\r\n\r\n    display:\r\n        none;\r\n\r\n}\r\n\r\n\r\n#cramer-calculator-app\r\n.cramer-random-settings > summary::after {\r\n\r\n    content:\r\n        \" +\";\r\n\r\n}\r\n\r\n\r\n#cramer-calculator-app\r\n.cramer-random-settings[open] > summary::after {\r\n\r\n    content:\r\n        \" \u2212\";\r\n\r\n}\r\n\r\n\r\n#cramer-calculator-app\r\n.cramer-random-settings__content {\r\n\r\n    margin-top:\r\n        13px;\r\n\r\n}\r\n\r\n\r\n#cramer-calculator-app\r\n.cramer-random-grid {\r\n\r\n    display:\r\n        grid;\r\n\r\n    grid-template-columns:\r\n        1.25fr 1fr 1fr;\r\n\r\n    gap:\r\n        8px;\r\n\r\n}\r\n\r\n\r\n#cramer-calculator-app\r\n.cramer-random-group {\r\n\r\n    min-width:\r\n        0;\r\n\r\n    padding:\r\n        10px 11px;\r\n\r\n    border:\r\n        1px solid\r\n        var(--cramer-border);\r\n\r\n    border-radius:\r\n        9px;\r\n\r\n    background:\r\n        var(--cramer-soft);\r\n\r\n}\r\n\r\n\r\n#cramer-calculator-app\r\n.cramer-random-label {\r\n\r\n    display:\r\n        block;\r\n\r\n    margin:\r\n        0 0 7px;\r\n\r\n    font-size:\r\n        .84rem;\r\n\r\n    font-weight:\r\n        760;\r\n\r\n}\r\n\r\n\r\n#cramer-calculator-app\r\n.cramer-range {\r\n\r\n    display:\r\n        grid;\r\n\r\n    grid-template-columns:\r\n        repeat(\r\n            2,\r\n            minmax(0, 1fr)\r\n        );\r\n\r\n    gap:\r\n        7px;\r\n\r\n}\r\n\r\n\r\n#cramer-calculator-app\r\n.cramer-range label {\r\n\r\n    display:\r\n        block;\r\n\r\n    margin-bottom:\r\n        4px;\r\n\r\n    color:\r\n        var(--cramer-muted);\r\n\r\n    font-size:\r\n        .75rem;\r\n\r\n    font-weight:\r\n        650;\r\n\r\n}\r\n\r\n\r\n#cramer-calculator-app\r\n.cramer-range input,\r\n\r\n#cramer-calculator-app\r\n.cramer-random-group select {\r\n\r\n    width:\r\n        100%;\r\n\r\n    height:\r\n        39px;\r\n\r\n    padding:\r\n        0 9px;\r\n\r\n    border:\r\n        1px solid\r\n        var(--cramer-border);\r\n\r\n    border-radius:\r\n        8px;\r\n\r\n    outline:\r\n        none;\r\n\r\n    background:\r\n        #ffffff;\r\n\r\n    color:\r\n        var(--cramer-text);\r\n\r\n    font:\r\n        650 .84rem\/1\r\n        var(--cramer-font);\r\n\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   Utility buttons\r\n========================================================= *\/\r\n\r\n#cramer-calculator-app\r\n.cramer-utility-row {\r\n\r\n    display:\r\n        grid;\r\n\r\n    grid-template-columns:\r\n        minmax(0, 1fr)\r\n        auto;\r\n\r\n    gap:\r\n        12px;\r\n\r\n    align-items:\r\n        center;\r\n\r\n    margin-top:\r\n        15px;\r\n\r\n}\r\n\r\n\r\n#cramer-calculator-app\r\n.cramer-secondary-button {\r\n\r\n    min-height:\r\n        43px;\r\n\r\n    padding:\r\n        0 14px;\r\n\r\n    border:\r\n        1px solid\r\n        var(--cramer-border);\r\n\r\n    border-radius:\r\n        10px;\r\n\r\n    background:\r\n        var(--cramer-soft);\r\n\r\n    color:\r\n        var(--cramer-accent);\r\n\r\n    font:\r\n        760 .88rem\/1.2\r\n        var(--cramer-font);\r\n\r\n    cursor:\r\n        pointer;\r\n\r\n}\r\n\r\n\r\n#cramer-calculator-app\r\n.cramer-secondary-button:hover {\r\n\r\n    background:\r\n        var(--cramer-accent-soft);\r\n\r\n}\r\n\r\n\r\n#cramer-calculator-app\r\n.cramer-text-button {\r\n\r\n    min-height:\r\n        43px;\r\n\r\n    padding:\r\n        0 8px;\r\n\r\n    border:\r\n        0;\r\n\r\n    border-radius:\r\n        8px;\r\n\r\n    background:\r\n        transparent;\r\n\r\n    color:\r\n        var(--cramer-accent);\r\n\r\n    font:\r\n        750 .88rem\/1.2\r\n        var(--cramer-font);\r\n\r\n    cursor:\r\n        pointer;\r\n\r\n}\r\n\r\n\r\n#cramer-calculator-app\r\n.cramer-text-button:hover {\r\n\r\n    background:\r\n        var(--cramer-accent-soft);\r\n\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   Primary button\r\n========================================================= *\/\r\n\r\n#cramer-calculator-app\r\n.cramer-primary-button {\r\n\r\n    width:\r\n        100%;\r\n\r\n    min-height:\r\n        48px;\r\n\r\n    margin-top:\r\n        13px;\r\n\r\n    padding:\r\n        0 18px;\r\n\r\n    border:\r\n        0;\r\n\r\n    border-radius:\r\n        11px;\r\n\r\n    background:\r\n        var(--cramer-accent);\r\n\r\n    color:\r\n        #ffffff;\r\n\r\n    font:\r\n        800 .96rem\/1.2\r\n        var(--cramer-font);\r\n\r\n    cursor:\r\n        pointer;\r\n\r\n}\r\n\r\n\r\n#cramer-calculator-app\r\n.cramer-primary-button:hover {\r\n\r\n    background:\r\n        var(--cramer-accent-hover);\r\n\r\n}\r\n\r\n\r\n#cramer-calculator-app\r\n.cramer-primary-button:disabled {\r\n\r\n    opacity:\r\n        .62;\r\n\r\n    cursor:\r\n        not-allowed;\r\n\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   Shortcut\r\n========================================================= *\/\r\n\r\n#cramer-calculator-app\r\n.cramer-shortcut {\r\n\r\n    margin-top:\r\n        8px;\r\n\r\n    text-align:\r\n        center;\r\n\r\n    color:\r\n        var(--cramer-muted);\r\n\r\n    font-size:\r\n        .76rem;\r\n\r\n}\r\n\r\n\r\n#cramer-calculator-app\r\n.cramer-shortcut kbd {\r\n\r\n    padding:\r\n        2px 5px;\r\n\r\n    border:\r\n        1px solid\r\n        var(--cramer-border);\r\n\r\n    border-bottom-width:\r\n        2px;\r\n\r\n    border-radius:\r\n        5px;\r\n\r\n    background:\r\n        var(--cramer-soft);\r\n\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   Error\r\n========================================================= *\/\r\n\r\n#cramer-calculator-app\r\n.cramer-error {\r\n\r\n    display:\r\n        none;\r\n\r\n    margin-top:\r\n        13px;\r\n\r\n    padding:\r\n        12px 14px;\r\n\r\n    border-left:\r\n        3px solid\r\n        var(--cramer-danger);\r\n\r\n    border-radius:\r\n        8px;\r\n\r\n    background:\r\n        var(--cramer-danger-soft);\r\n\r\n    color:\r\n        var(--cramer-danger);\r\n\r\n    font-size:\r\n        .9rem;\r\n\r\n    font-weight:\r\n        650;\r\n\r\n}\r\n\r\n\r\n#cramer-calculator-app\r\n.cramer-error.is-visible {\r\n\r\n    display:\r\n        block;\r\n\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   Success status\r\n========================================================= *\/\r\n\r\n#cramer-calculator-app\r\n.cramer-status {\r\n\r\n    display:\r\n        none;\r\n\r\n    margin-top:\r\n        10px;\r\n\r\n    color:\r\n        var(--cramer-success);\r\n\r\n    font-size:\r\n        .84rem;\r\n\r\n    font-weight:\r\n        650;\r\n\r\n    text-align:\r\n        right;\r\n\r\n}\r\n\r\n\r\n#cramer-calculator-app\r\n.cramer-status.is-visible {\r\n\r\n    display:\r\n        block;\r\n\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   Loading\r\n========================================================= *\/\r\n\r\n#cramer-calculator-app\r\n.cramer-loading {\r\n\r\n    display:\r\n        flex;\r\n\r\n    align-items:\r\n        center;\r\n\r\n    gap:\r\n        12px;\r\n\r\n    margin:\r\n        17px 0;\r\n\r\n    padding:\r\n        13px 2px;\r\n\r\n}\r\n\r\n\r\n#cramer-calculator-app\r\n.cramer-loading[hidden] {\r\n\r\n    display:\r\n        none !important;\r\n\r\n}\r\n\r\n\r\n#cramer-calculator-app\r\n.cramer-loading > div:last-child {\r\n\r\n    display:\r\n        grid;\r\n\r\n    gap:\r\n        2px;\r\n\r\n}\r\n\r\n\r\n#cramer-calculator-app\r\n.cramer-loading span {\r\n\r\n    color:\r\n        var(--cramer-muted);\r\n\r\n    font-size:\r\n        .84rem;\r\n\r\n}\r\n\r\n\r\n#cramer-calculator-app\r\n.cramer-loader-circle {\r\n\r\n    flex:\r\n        0 0 28px;\r\n\r\n    width:\r\n        28px;\r\n\r\n    height:\r\n        28px;\r\n\r\n    border:\r\n        3px solid\r\n        var(--cramer-border);\r\n\r\n    border-top-color:\r\n        var(--cramer-accent);\r\n\r\n    border-radius:\r\n        50%;\r\n\r\n    animation:\r\n        cramer-loading-spin\r\n        .8s linear infinite;\r\n\r\n}\r\n\r\n\r\n@keyframes cramer-loading-spin {\r\n\r\n    to {\r\n\r\n        transform:\r\n            rotate(360deg);\r\n\r\n    }\r\n\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   Solution\r\n========================================================= *\/\r\n\r\n#cramer-calculator-app\r\n.cramer-solution-container {\r\n\r\n    width:\r\n        100%;\r\n\r\n    min-width:\r\n        0;\r\n\r\n    margin-top:\r\n        22px;\r\n\r\n}\r\n\r\n\r\n#cramer-calculator-app\r\n.cramer-solution-container[hidden] {\r\n\r\n    display:\r\n        none !important;\r\n\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   Answer card\r\n========================================================= *\/\r\n\r\n#cramer-calculator-app\r\n.cramer-answer-card {\r\n\r\n    padding:\r\n        18px 19px;\r\n\r\n    border:\r\n        1px solid\r\n        var(--cramer-border);\r\n\r\n    border-radius:\r\n        13px;\r\n\r\n    background:\r\n        #ffffff;\r\n\r\n}\r\n\r\n\r\n#cramer-calculator-app\r\n.cramer-answer-card__top {\r\n\r\n    display:\r\n        flex;\r\n\r\n    align-items:\r\n        center;\r\n\r\n    justify-content:\r\n        space-between;\r\n\r\n    gap:\r\n        12px;\r\n\r\n}\r\n\r\n\r\n#cramer-calculator-app\r\n.cramer-answer-card__title {\r\n\r\n    margin:\r\n        0;\r\n\r\n    font-size:\r\n        1.05rem;\r\n\r\n    font-weight:\r\n        820;\r\n\r\n}\r\n\r\n\r\n#cramer-calculator-app\r\n.cramer-copy-button {\r\n\r\n    padding:\r\n        7px 9px;\r\n\r\n    border:\r\n        0;\r\n\r\n    border-radius:\r\n        8px;\r\n\r\n    background:\r\n        transparent;\r\n\r\n    color:\r\n        var(--cramer-accent);\r\n\r\n    font:\r\n        720 .78rem\/1.1\r\n        var(--cramer-font);\r\n\r\n    cursor:\r\n        pointer;\r\n\r\n}\r\n\r\n\r\n#cramer-calculator-app\r\n.cramer-copy-button:hover {\r\n\r\n    background:\r\n        var(--cramer-accent-soft);\r\n\r\n}\r\n\r\n\r\n#cramer-calculator-app\r\n.cramer-answer-card__formula {\r\n\r\n    width:\r\n        100%;\r\n\r\n    margin-top:\r\n        9px;\r\n\r\n    padding:\r\n        10px 0;\r\n\r\n    overflow-x:\r\n        auto;\r\n\r\n    overflow-y:\r\n        hidden;\r\n\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   Toolbar\r\n========================================================= *\/\r\n\r\n#cramer-calculator-app\r\n.cramer-solution-toolbar {\r\n\r\n    display:\r\n        flex;\r\n\r\n    align-items:\r\n        center;\r\n\r\n    justify-content:\r\n        space-between;\r\n\r\n    gap:\r\n        12px;\r\n\r\n    margin:\r\n        26px 0 4px;\r\n\r\n    padding-bottom:\r\n        10px;\r\n\r\n    border-bottom:\r\n        1px solid\r\n        var(--cramer-border-strong);\r\n\r\n}\r\n\r\n\r\n#cramer-calculator-app\r\n.cramer-solution-toolbar h2 {\r\n\r\n    margin:\r\n        0;\r\n\r\n    font-size:\r\n        1.18rem;\r\n\r\n    font-weight:\r\n        840;\r\n\r\n}\r\n\r\n\r\n#cramer-calculator-app\r\n.cramer-solution-toolbar__actions {\r\n\r\n    display:\r\n        flex;\r\n\r\n    gap:\r\n        6px;\r\n\r\n}\r\n\r\n\r\n#cramer-calculator-app\r\n.cramer-solution-toolbar button {\r\n\r\n    padding:\r\n        5px 7px;\r\n\r\n    border:\r\n        0;\r\n\r\n    border-radius:\r\n        7px;\r\n\r\n    background:\r\n        transparent;\r\n\r\n    color:\r\n        var(--cramer-accent);\r\n\r\n    font:\r\n        700 .76rem\/1.1\r\n        var(--cramer-font);\r\n\r\n    cursor:\r\n        pointer;\r\n\r\n}\r\n\r\n\r\n#cramer-calculator-app\r\n.cramer-solution-toolbar button:hover {\r\n\r\n    background:\r\n        var(--cramer-accent-soft);\r\n\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   Steps\r\n========================================================= *\/\r\n\r\n#cramer-calculator-app\r\n.cramer-step {\r\n\r\n    border-bottom:\r\n        1px solid\r\n        var(--cramer-border);\r\n\r\n}\r\n\r\n\r\n#cramer-calculator-app\r\n.cramer-step__summary {\r\n\r\n    display:\r\n        grid;\r\n\r\n    grid-template-columns:\r\n        auto\r\n        minmax(0, 1fr)\r\n        22px;\r\n\r\n    gap:\r\n        5px;\r\n\r\n    align-items:\r\n        center;\r\n\r\n    padding:\r\n        15px 2px;\r\n\r\n    cursor:\r\n        pointer;\r\n\r\n    list-style:\r\n        none;\r\n\r\n}\r\n\r\n\r\n#cramer-calculator-app\r\n.cramer-step__summary::-webkit-details-marker {\r\n\r\n    display:\r\n        none;\r\n\r\n}\r\n\r\n\r\n#cramer-calculator-app\r\n.cramer-step__number,\r\n\r\n#cramer-calculator-app\r\n.cramer-step__title {\r\n\r\n    font-size:\r\n        .96rem;\r\n\r\n    font-weight:\r\n        790;\r\n\r\n}\r\n\r\n\r\n#cramer-calculator-app\r\n.cramer-step__chevron {\r\n\r\n    position:\r\n        relative;\r\n\r\n    width:\r\n        22px;\r\n\r\n    height:\r\n        22px;\r\n\r\n}\r\n\r\n\r\n#cramer-calculator-app\r\n.cramer-step__chevron::before {\r\n\r\n    content:\r\n        \"\";\r\n\r\n    position:\r\n        absolute;\r\n\r\n    top:\r\n        6px;\r\n\r\n    left:\r\n        7px;\r\n\r\n    width:\r\n        7px;\r\n\r\n    height:\r\n        7px;\r\n\r\n    border-right:\r\n        1.5px solid\r\n        var(--cramer-muted);\r\n\r\n    border-bottom:\r\n        1.5px solid\r\n        var(--cramer-muted);\r\n\r\n    transform:\r\n        rotate(45deg);\r\n\r\n}\r\n\r\n\r\n#cramer-calculator-app\r\n.cramer-step[open]\r\n.cramer-step__chevron::before {\r\n\r\n    top:\r\n        8px;\r\n\r\n    transform:\r\n        rotate(225deg);\r\n\r\n}\r\n\r\n\r\n#cramer-calculator-app\r\n.cramer-step__content {\r\n\r\n    padding:\r\n        0 0 18px;\r\n\r\n}\r\n\r\n\r\n#cramer-calculator-app\r\n.cramer-step__formula {\r\n\r\n    width:\r\n        100%;\r\n\r\n    padding:\r\n        12px 0;\r\n\r\n    overflow-x:\r\n        auto;\r\n\r\n    overflow-y:\r\n        hidden;\r\n\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   MathJax\r\n========================================================= *\/\r\n\r\n#cramer-calculator-app\r\n.cramer-answer-card__formula\r\n.MathJax_Display,\r\n\r\n#cramer-calculator-app\r\n.cramer-step__formula\r\n.MathJax_Display {\r\n\r\n    display:\r\n        block !important;\r\n\r\n    width:\r\n        max-content !important;\r\n\r\n    min-width:\r\n        100% !important;\r\n\r\n    max-width:\r\n        none !important;\r\n\r\n    margin:\r\n        .3em 0 !important;\r\n\r\n    text-align:\r\n        center !important;\r\n\r\n    white-space:\r\n        nowrap !important;\r\n\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   Responsive\r\n========================================================= *\/\r\n\r\n@media (max-width: 900px) {\r\n\r\n    #cramer-calculator-app {\r\n\r\n        width:\r\n            calc(100% - 28px);\r\n\r\n    }\r\n\r\n}\r\n\r\n\r\n@media (max-width: 700px) {\r\n\r\n    #cramer-calculator-app\r\n    .cramer-random-grid {\r\n\r\n        grid-template-columns:\r\n            repeat(\r\n                2,\r\n                minmax(0, 1fr)\r\n            );\r\n\r\n    }\r\n\r\n\r\n    #cramer-calculator-app\r\n    .cramer-random-group:first-child {\r\n\r\n        grid-column:\r\n            1 \/ -1;\r\n\r\n    }\r\n\r\n}\r\n\r\n\r\n@media (max-width: 520px) {\r\n\r\n    #cramer-calculator-app {\r\n\r\n        width:\r\n            calc(100% - 20px);\r\n\r\n        margin:\r\n            12px auto;\r\n\r\n    }\r\n\r\n\r\n    #cramer-calculator-app\r\n    .cramer-calculator {\r\n\r\n        padding:\r\n            14px;\r\n\r\n    }\r\n\r\n\r\n    #cramer-calculator-app\r\n    .cramer-field select {\r\n\r\n        width:\r\n            100%;\r\n\r\n    }\r\n\r\n\r\n    #cramer-calculator-app\r\n    .cramer-matrix input {\r\n\r\n        width:\r\n            57px;\r\n\r\n        height:\r\n            40px;\r\n\r\n        font-size:\r\n            14px;\r\n\r\n    }\r\n\r\n\r\n    #cramer-calculator-app\r\n    .cramer-matrix {\r\n\r\n        border-spacing:\r\n            4px !important;\r\n\r\n    }\r\n\r\n\r\n    #cramer-calculator-app\r\n    .cramer-random-grid {\r\n\r\n        grid-template-columns:\r\n            1fr;\r\n\r\n    }\r\n\r\n\r\n    #cramer-calculator-app\r\n    .cramer-random-group:first-child {\r\n\r\n        grid-column:\r\n            auto;\r\n\r\n    }\r\n\r\n\r\n    #cramer-calculator-app\r\n    .cramer-utility-row {\r\n\r\n        grid-template-columns:\r\n            1fr;\r\n\r\n    }\r\n\r\n\r\n    #cramer-calculator-app\r\n    .cramer-solution-toolbar {\r\n\r\n        align-items:\r\n            flex-start;\r\n\r\n        flex-direction:\r\n            column;\r\n\r\n    }\r\n\r\n}\r\n\r\n\r\n@media (prefers-reduced-motion: reduce) {\r\n\r\n    #cramer-calculator-app *,\r\n    #cramer-calculator-app *::before,\r\n    #cramer-calculator-app *::after {\r\n\r\n        animation-duration:\r\n            .01ms !important;\r\n\r\n        transition-duration:\r\n            .01ms !important;\r\n\r\n    }\r\n\r\n}\r\n\r\n<\/style>\r\n\r\n\r\n<!-- =========================================================\r\n     JAVASCRIPT\r\n========================================================= -->\r\n\r\n<script>\r\n\r\n(function () {\r\n\r\n    'use strict';\r\n\r\n\r\n    \/* =====================================================\r\n       App\r\n    ===================================================== *\/\r\n\r\n    const APP =\r\n        document.getElementById(\r\n            'cramer-calculator-app'\r\n        );\r\n\r\n\r\n    if (!APP) {\r\n\r\n        return;\r\n\r\n    }\r\n\r\n\r\n    const AJAX_URL =\r\n        window.ajaxurl\r\n        ||\r\n        '\/wp-admin\/admin-ajax.php';\r\n\r\n\r\n    const AJAX_ACTION =\r\n        'cramers_rule';\r\n\r\n\r\n    let activeController =\r\n        null;\r\n\r\n\r\n    let lastResultLatex =\r\n        '';\r\n\r\n\r\n    let statusTimer =\r\n        null;\r\n\r\n\r\n    \/* =====================================================\r\n       i18n\r\n    ===================================================== *\/\r\n\r\n    const I18N = {\r\n\r\n        uk: {\r\n\r\n            systemSizeLabel:\r\n                '\u041a\u0456\u043b\u044c\u043a\u0456\u0441\u0442\u044c \u043d\u0435\u0432\u0456\u0434\u043e\u043c\u0438\u0445',\r\n\r\n            systemSizeAria:\r\n                '\u041a\u0456\u043b\u044c\u043a\u0456\u0441\u0442\u044c \u043d\u0435\u0432\u0456\u0434\u043e\u043c\u0438\u0445 \u0443 \u0441\u0438\u0441\u0442\u0435\u043c\u0456',\r\n\r\n            matrixTitle:\r\n                '\u0420\u043e\u0437\u0448\u0438\u0440\u0435\u043d\u0430 \u043c\u0430\u0442\u0440\u0438\u0446\u044f (A|b)',\r\n\r\n            matrixTableAria:\r\n                '\u041f\u043e\u043b\u0435 \u0432\u0432\u0435\u0434\u0435\u043d\u043d\u044f \u0440\u043e\u0437\u0448\u0438\u0440\u0435\u043d\u043e\u0457 \u043c\u0430\u0442\u0440\u0438\u0446\u0456 \u0441\u0438\u0441\u0442\u0435\u043c\u0438',\r\n\r\n            matrixCellAria:\r\n                '\u041a\u043e\u0435\u0444\u0456\u0446\u0456\u0454\u043d\u0442 \u043f\u0440\u0438 x{column}, \u0440\u0456\u0432\u043d\u044f\u043d\u043d\u044f {row}',\r\n\r\n            rhsCellAria:\r\n                '\u0412\u0456\u043b\u044c\u043d\u0438\u0439 \u0447\u043b\u0435\u043d \u0440\u0456\u0432\u043d\u044f\u043d\u043d\u044f {row}',\r\n\r\n            copySystem:\r\n                '\u041a\u043e\u043f\u0456\u044e\u0432\u0430\u0442\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u0443',\r\n\r\n            pasteSystem:\r\n                '\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u0443',\r\n\r\n            copiedSystem:\r\n                '\u0421\u0438\u0441\u0442\u0435\u043c\u0443 \u0441\u043a\u043e\u043f\u0456\u0439\u043e\u0432\u0430\u043d\u043e.',\r\n\r\n            pastedSystem:\r\n                '\u0421\u0438\u0441\u0442\u0435\u043c\u0443 \u0432\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043e.',\r\n\r\n            randomSettingsTitle:\r\n                '\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0438 \u0432\u0438\u043f\u0430\u0434\u043a\u043e\u0432\u043e\u0433\u043e \u043f\u0440\u0438\u043a\u043b\u0430\u0434\u0443',\r\n\r\n            valuesLabel:\r\n                '\u0417\u043d\u0430\u0447\u0435\u043d\u043d\u044f \u0435\u043b\u0435\u043c\u0435\u043d\u0442\u0456\u0432',\r\n\r\n            fromLabel:\r\n                '\u0412\u0456\u0434',\r\n\r\n            toLabel:\r\n                '\u0414\u043e',\r\n\r\n            randomMinAria:\r\n                '\u041c\u0456\u043d\u0456\u043c\u0430\u043b\u044c\u043d\u0435 \u0432\u0438\u043f\u0430\u0434\u043a\u043e\u0432\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044f',\r\n\r\n            randomMaxAria:\r\n                '\u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0435 \u0432\u0438\u043f\u0430\u0434\u043a\u043e\u0432\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044f',\r\n\r\n            numberTypeLabel:\r\n                '\u0422\u0438\u043f \u0447\u0438\u0441\u0435\u043b',\r\n\r\n            integersOption:\r\n                '\u0426\u0456\u043b\u0456',\r\n\r\n            decimalsOption:\r\n                '\u0414\u0435\u0441\u044f\u0442\u043a\u043e\u0432\u0456',\r\n\r\n            systemTypeLabel:\r\n                '\u0422\u0438\u043f \u0441\u0438\u0441\u0442\u0435\u043c\u0438',\r\n\r\n            anySystemOption:\r\n                '\u0411\u0443\u0434\u044c-\u044f\u043a\u0430',\r\n\r\n            uniqueSystemOption:\r\n                '\u0404\u0434\u0438\u043d\u0438\u0439 \u0440\u043e\u0437\u0432\u2019\u044f\u0437\u043e\u043a',\r\n\r\n            noSolutionOption:\r\n                '\u041d\u0435\u043c\u0430\u0454 \u0440\u043e\u0437\u0432\u2019\u044f\u0437\u043a\u0456\u0432',\r\n\r\n            infiniteSolutionsOption:\r\n                '\u041d\u0435\u0441\u043a\u0456\u043d\u0447\u0435\u043d\u043d\u043e \u0431\u0430\u0433\u0430\u0442\u043e \u0440\u043e\u0437\u0432\u2019\u044f\u0437\u043a\u0456\u0432',\r\n\r\n            randomButton:\r\n                '\u0412\u0438\u043f\u0430\u0434\u043a\u043e\u0432\u0438\u0439 \u043f\u0440\u0438\u043a\u043b\u0430\u0434',\r\n\r\n            clearButton:\r\n                '\u041e\u0447\u0438\u0441\u0442\u0438\u0442\u0438',\r\n\r\n            calculateButton:\r\n                '\u0420\u043e\u0437\u0432\u2019\u044f\u0437\u0430\u0442\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u0443',\r\n\r\n            calculatingButton:\r\n                '\u0420\u043e\u0437\u0432\u2019\u044f\u0437\u0443\u0454\u043c\u043e \u0441\u0438\u0441\u0442\u0435\u043c\u0443\u2026',\r\n\r\n            shortcutLabel:\r\n                '\u0428\u0432\u0438\u0434\u043a\u0438\u0439 \u0437\u0430\u043f\u0443\u0441\u043a:',\r\n\r\n            loadingTitle:\r\n                '\u0420\u043e\u0437\u0432\u2019\u044f\u0437\u0443\u0454\u043c\u043e \u0441\u0438\u0441\u0442\u0435\u043c\u0443',\r\n\r\n            loadingText:\r\n                '\u041e\u0431\u0447\u0438\u0441\u043b\u044e\u0454\u043c\u043e \u0432\u0438\u0437\u043d\u0430\u0447\u043d\u0438\u043a\u0438 \u0442\u0430 \u0437\u0430\u0441\u0442\u043e\u0441\u043e\u0432\u0443\u0454\u043c\u043e \u043c\u0435\u0442\u043e\u0434 \u041a\u0440\u0430\u043c\u0435\u0440\u0430.',\r\n\r\n            answerTitle:\r\n                '\u0412\u0456\u0434\u043f\u043e\u0432\u0456\u0434\u044c',\r\n\r\n            copyLatex:\r\n                '\u041a\u043e\u043f\u0456\u044e\u0432\u0430\u0442\u0438 LaTeX',\r\n\r\n            copied:\r\n                '\u0421\u043a\u043e\u043f\u0456\u0439\u043e\u0432\u0430\u043d\u043e',\r\n\r\n            solutionTitle:\r\n                '\u0420\u043e\u0437\u0432\u2019\u044f\u0437\u0430\u043d\u043d\u044f',\r\n\r\n            expandAll:\r\n                '\u0420\u043e\u0437\u0433\u043e\u0440\u043d\u0443\u0442\u0438 \u0432\u0441\u0456',\r\n\r\n            collapseAll:\r\n                '\u0417\u0433\u043e\u0440\u043d\u0443\u0442\u0438 \u0432\u0441\u0456',\r\n\r\n            step:\r\n                '\u041a\u0440\u043e\u043a',\r\n\r\n            noSolutionAnswer:\r\n                '\u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u043d\u0435\u0441\u0443\u043c\u0456\u0441\u043d\u0430 \u0456 \u043d\u0435 \u043c\u0430\u0454 \u0440\u043e\u0437\u0432\u2019\u044f\u0437\u043a\u0456\u0432.',\r\n\r\n            infiniteAnswer:\r\n                '\u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u043c\u0430\u0454 \u043d\u0435\u0441\u043a\u0456\u043d\u0447\u0435\u043d\u043d\u043e \u0431\u0430\u0433\u0430\u0442\u043e \u0440\u043e\u0437\u0432\u2019\u044f\u0437\u043a\u0456\u0432.',\r\n\r\n            errorGeneric:\r\n                '\u0421\u0442\u0430\u043b\u0430\u0441\u044f \u043f\u043e\u043c\u0438\u043b\u043a\u0430.',\r\n\r\n            errorMatrix:\r\n                '\u0411\u0443\u0434\u044c \u043b\u0430\u0441\u043a\u0430, \u0432\u0432\u0435\u0434\u0456\u0442\u044c \u0435\u043b\u0435\u043c\u0435\u043d\u0442\u0438 \u0440\u043e\u0437\u0448\u0438\u0440\u0435\u043d\u043e\u0457 \u043c\u0430\u0442\u0440\u0438\u0446\u0456.',\r\n\r\n            errorInvalidFields:\r\n                '\u041f\u0435\u0440\u0435\u0432\u0456\u0440\u0442\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044f \u0443 \u0432\u0438\u0434\u0456\u043b\u0435\u043d\u0438\u0445 \u043f\u043e\u043b\u044f\u0445.',\r\n\r\n            errorCopy:\r\n                '\u041d\u0435 \u0432\u0434\u0430\u043b\u043e\u0441\u044f \u0441\u043a\u043e\u043f\u0456\u044e\u0432\u0430\u0442\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u0443.',\r\n\r\n            errorClipboard:\r\n                '\u041d\u0435 \u0432\u0434\u0430\u043b\u043e\u0441\u044f \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u0438 \u0434\u0430\u043d\u0456 \u0437 \u0431\u0443\u0444\u0435\u0440\u0430 \u043e\u0431\u043c\u0456\u043d\u0443.',\r\n\r\n            errorPasteEmpty:\r\n                '\u0411\u0443\u0444\u0435\u0440 \u043e\u0431\u043c\u0456\u043d\u0443 \u043d\u0435 \u043c\u0456\u0441\u0442\u0438\u0442\u044c \u0434\u0430\u043d\u0438\u0445 \u0434\u043b\u044f \u0432\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044f.',\r\n\r\n            errorPasteFormat:\r\n                '\u041d\u0435 \u0432\u0434\u0430\u043b\u043e\u0441\u044f \u0440\u043e\u0437\u043f\u0456\u0437\u043d\u0430\u0442\u0438 \u0444\u043e\u0440\u043c\u0430\u0442 \u0441\u0438\u0441\u0442\u0435\u043c\u0438.',\r\n\r\n            errorPasteSize:\r\n                '\u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u043f\u043e\u0432\u0438\u043d\u043d\u0430 \u043c\u0456\u0441\u0442\u0438\u0442\u0438 \u0432\u0456\u0434 2 \u0434\u043e 8 \u0440\u0456\u0432\u043d\u044f\u043d\u044c \u0456 \u043d\u0430 \u043e\u0434\u0438\u043d \u0441\u0442\u043e\u0432\u043f\u0435\u0446\u044c \u0431\u0456\u043b\u044c\u0448\u0435, \u043d\u0456\u0436 \u0440\u044f\u0434\u043a\u0456\u0432.',\r\n\r\n            pastePrompt:\r\n                '\u0412\u0441\u0442\u0430\u0432\u0442\u0435 \u043c\u0430\u0442\u0440\u0438\u0446\u044e \u0430\u0431\u043e LaTeX-\u043a\u043e\u0434 \u0441\u0438\u0441\u0442\u0435\u043c\u0438:',\r\n\r\n            errorRange:\r\n                '\u0412\u043a\u0430\u0436\u0456\u0442\u044c \u043a\u043e\u0440\u0435\u043a\u0442\u043d\u0438\u0439 \u0434\u0456\u0430\u043f\u0430\u0437\u043e\u043d \u0437\u043d\u0430\u0447\u0435\u043d\u044c.',\r\n\r\n            errorRangeOrder:\r\n                '\u041c\u0456\u043d\u0456\u043c\u0430\u043b\u044c\u043d\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044f \u043d\u0435 \u043c\u043e\u0436\u0435 \u0431\u0443\u0442\u0438 \u0431\u0456\u043b\u044c\u0448\u0438\u043c \u0437\u0430 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0435.',\r\n\r\n            errorNoIntegers:\r\n                '\u0423 \u0437\u0430\u0434\u0430\u043d\u043e\u043c\u0443 \u0434\u0456\u0430\u043f\u0430\u0437\u043e\u043d\u0456 \u043d\u0435\u043c\u0430\u0454 \u0446\u0456\u043b\u0438\u0445 \u0447\u0438\u0441\u0435\u043b.',\r\n\r\n            errorNoDecimals:\r\n                '\u0423 \u0437\u0430\u0434\u0430\u043d\u043e\u043c\u0443 \u0434\u0456\u0430\u043f\u0430\u0437\u043e\u043d\u0456 \u043d\u0435\u043c\u0430\u0454 \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u0438\u0445 \u0434\u0435\u0441\u044f\u0442\u043a\u043e\u0432\u0438\u0445 \u0447\u0438\u0441\u0435\u043b.',\r\n\r\n            errorUnique:\r\n                '\u041d\u0435 \u0432\u0434\u0430\u043b\u043e\u0441\u044f \u0441\u0442\u0432\u043e\u0440\u0438\u0442\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0437 \u0454\u0434\u0438\u043d\u0438\u043c \u0440\u043e\u0437\u0432\u2019\u044f\u0437\u043a\u043e\u043c \u0434\u043b\u044f \u0437\u0430\u0434\u0430\u043d\u0438\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0456\u0432.',\r\n\r\n            errorDifferentRhs:\r\n                '\u0414\u043b\u044f \u0441\u0442\u0432\u043e\u0440\u0435\u043d\u043d\u044f \u043d\u0435\u0441\u0443\u043c\u0456\u0441\u043d\u043e\u0457 \u0441\u0438\u0441\u0442\u0435\u043c\u0438 \u0434\u0456\u0430\u043f\u0430\u0437\u043e\u043d \u043f\u043e\u0432\u0438\u043d\u0435\u043d \u043c\u0456\u0441\u0442\u0438\u0442\u0438 \u0449\u043e\u043d\u0430\u0439\u043c\u0435\u043d\u0448\u0435 \u0434\u0432\u0430 \u0440\u0456\u0437\u043d\u0456 \u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044f.',\r\n\r\n            errorServerResponse:\r\n                '\u041d\u0435 \u0432\u0434\u0430\u043b\u043e\u0441\u044f \u043e\u0442\u0440\u0438\u043c\u0430\u0442\u0438 \u0432\u0456\u0434\u043f\u043e\u0432\u0456\u0434\u044c \u0441\u0435\u0440\u0432\u0435\u0440\u0430.',\r\n\r\n            errorCalculate:\r\n                '\u041d\u0435 \u0432\u0434\u0430\u043b\u043e\u0441\u044f \u0440\u043e\u0437\u0432\u2019\u044f\u0437\u0430\u0442\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u043c\u0435\u0442\u043e\u0434\u043e\u043c \u041a\u0440\u0430\u043c\u0435\u0440\u0430.',\r\n\r\n            errorNoPayload:\r\n                '\u0421\u0435\u0440\u0432\u0435\u0440 \u043d\u0435 \u043f\u043e\u0432\u0435\u0440\u043d\u0443\u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043e\u0431\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044f.',\r\n\r\n            errorNetwork:\r\n                '\u0421\u0442\u0430\u043b\u0430\u0441\u044f \u043f\u043e\u043c\u0438\u043b\u043a\u0430 \u043f\u0456\u0434 \u0447\u0430\u0441 \u043e\u0431\u043c\u0456\u043d\u0443 \u0434\u0430\u043d\u0438\u043c\u0438 \u0456\u0437 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c.'\r\n\r\n        },\r\n\r\n\r\n        en: {\r\n\r\n            systemSizeLabel:\r\n                'Number of Unknowns',\r\n\r\n            systemSizeAria:\r\n                'Number of unknowns in the system',\r\n\r\n            matrixTitle:\r\n                'Augmented Matrix (A|b)',\r\n\r\n            matrixTableAria:\r\n                'Augmented matrix input grid',\r\n\r\n            matrixCellAria:\r\n                'Coefficient of x{column}, equation {row}',\r\n\r\n            rhsCellAria:\r\n                'Right-hand side of equation {row}',\r\n\r\n            copySystem:\r\n                'Copy system',\r\n\r\n            pasteSystem:\r\n                'Paste system',\r\n\r\n            copiedSystem:\r\n                'System copied.',\r\n\r\n            pastedSystem:\r\n                'System pasted.',\r\n\r\n            randomSettingsTitle:\r\n                'Random Example Settings',\r\n\r\n            valuesLabel:\r\n                'Element Values',\r\n\r\n            fromLabel:\r\n                'From',\r\n\r\n            toLabel:\r\n                'To',\r\n\r\n            randomMinAria:\r\n                'Minimum random value',\r\n\r\n            randomMaxAria:\r\n                'Maximum random value',\r\n\r\n            numberTypeLabel:\r\n                'Number Type',\r\n\r\n            integersOption:\r\n                'Integers',\r\n\r\n            decimalsOption:\r\n                'Decimals',\r\n\r\n            systemTypeLabel:\r\n                'System Type',\r\n\r\n            anySystemOption:\r\n                'Any',\r\n\r\n            uniqueSystemOption:\r\n                'Unique Solution',\r\n\r\n            noSolutionOption:\r\n                'No Solution',\r\n\r\n            infiniteSolutionsOption:\r\n                'Infinitely Many Solutions',\r\n\r\n            randomButton:\r\n                'Random Example',\r\n\r\n            clearButton:\r\n                'Clear',\r\n\r\n            calculateButton:\r\n                'Solve System',\r\n\r\n            calculatingButton:\r\n                'Solving System\u2026',\r\n\r\n            shortcutLabel:\r\n                'Keyboard shortcut:',\r\n\r\n            loadingTitle:\r\n                'Solving the System',\r\n\r\n            loadingText:\r\n                'Calculating determinants and applying Cramer\u2019s rule.',\r\n\r\n            answerTitle:\r\n                'Answer',\r\n\r\n            copyLatex:\r\n                'Copy LaTeX',\r\n\r\n            copied:\r\n                'Copied',\r\n\r\n            solutionTitle:\r\n                'Solution',\r\n\r\n            expandAll:\r\n                'Expand All',\r\n\r\n            collapseAll:\r\n                'Collapse All',\r\n\r\n            step:\r\n                'Step',\r\n\r\n            noSolutionAnswer:\r\n                'The system is inconsistent and has no solution.',\r\n\r\n            infiniteAnswer:\r\n                'The system has infinitely many solutions.',\r\n\r\n            errorGeneric:\r\n                'An error occurred.',\r\n\r\n            errorMatrix:\r\n                'Please enter the augmented matrix elements.',\r\n\r\n            errorInvalidFields:\r\n                'Check the highlighted fields.',\r\n\r\n            errorCopy:\r\n                'Unable to copy the system.',\r\n\r\n            errorClipboard:\r\n                'Unable to read the clipboard.',\r\n\r\n            errorPasteEmpty:\r\n                'The clipboard contains no data to paste.',\r\n\r\n            errorPasteFormat:\r\n                'Unable to recognize the system format.',\r\n\r\n            errorPasteSize:\r\n                'The system must contain 2 to 8 equations and one more column than rows.',\r\n\r\n            pastePrompt:\r\n                'Paste the matrix or LaTeX code:',\r\n\r\n            errorRange:\r\n                'Enter a valid range of values.',\r\n\r\n            errorRangeOrder:\r\n                'The minimum value cannot be greater than the maximum value.',\r\n\r\n            errorNoIntegers:\r\n                'The specified range contains no integers.',\r\n\r\n            errorNoDecimals:\r\n                'The specified range contains no valid decimal values.',\r\n\r\n            errorUnique:\r\n                'Unable to generate a system with a unique solution using the selected settings.',\r\n\r\n            errorDifferentRhs:\r\n                'The range must contain at least two different values.',\r\n\r\n            errorServerResponse:\r\n                'Unable to get a response from the server.',\r\n\r\n            errorCalculate:\r\n                'Unable to solve the system using Cramer\u2019s rule.',\r\n\r\n            errorNoPayload:\r\n                'The server did not return a calculation result.',\r\n\r\n            errorNetwork:\r\n                'A network error occurred.'\r\n\r\n        },\r\n\r\n\r\n        ru: {\r\n\r\n            systemSizeLabel:\r\n                '\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0445',\r\n\r\n            systemSizeAria:\r\n                '\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0445 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435',\r\n\r\n            matrixTitle:\r\n                '\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u0430\u044f \u043c\u0430\u0442\u0440\u0438\u0446\u0430 (A|b)',\r\n\r\n            matrixTableAria:\r\n                '\u041f\u043e\u043b\u0435 \u0432\u0432\u043e\u0434\u0430 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u043e\u0439 \u043c\u0430\u0442\u0440\u0438\u0446\u044b \u0441\u0438\u0441\u0442\u0435\u043c\u044b',\r\n\r\n            matrixCellAria:\r\n                '\u041a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442 \u043f\u0440\u0438 x{column}, \u0443\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 {row}',\r\n\r\n            rhsCellAria:\r\n                '\u0421\u0432\u043e\u0431\u043e\u0434\u043d\u044b\u0439 \u0447\u043b\u0435\u043d \u0443\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f {row}',\r\n\r\n            copySystem:\r\n                '\u041a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u0443',\r\n\r\n            pasteSystem:\r\n                '\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u0443',\r\n\r\n            copiedSystem:\r\n                '\u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0430.',\r\n\r\n            pastedSystem:\r\n                '\u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u0432\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0430.',\r\n\r\n            randomSettingsTitle:\r\n                '\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u0430',\r\n\r\n            valuesLabel:\r\n                '\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432',\r\n\r\n            fromLabel:\r\n                '\u041e\u0442',\r\n\r\n            toLabel:\r\n                '\u0414\u043e',\r\n\r\n            randomMinAria:\r\n                '\u041c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435',\r\n\r\n            randomMaxAria:\r\n                '\u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435',\r\n\r\n            numberTypeLabel:\r\n                '\u0422\u0438\u043f \u0447\u0438\u0441\u0435\u043b',\r\n\r\n            integersOption:\r\n                '\u0426\u0435\u043b\u044b\u0435',\r\n\r\n            decimalsOption:\r\n                '\u0414\u0435\u0441\u044f\u0442\u0438\u0447\u043d\u044b\u0435',\r\n\r\n            systemTypeLabel:\r\n                '\u0422\u0438\u043f \u0441\u0438\u0441\u0442\u0435\u043c\u044b',\r\n\r\n            anySystemOption:\r\n                '\u041b\u044e\u0431\u0430\u044f',\r\n\r\n            uniqueSystemOption:\r\n                '\u0415\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435',\r\n\r\n            noSolutionOption:\r\n                '\u041d\u0435\u0442 \u0440\u0435\u0448\u0435\u043d\u0438\u0439',\r\n\r\n            infiniteSolutionsOption:\r\n                '\u0411\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u043e \u043c\u043d\u043e\u0433\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u0439',\r\n\r\n            randomButton:\r\n                '\u0421\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 \u043f\u0440\u0438\u043c\u0435\u0440',\r\n\r\n            clearButton:\r\n                '\u041e\u0447\u0438\u0441\u0442\u0438\u0442\u044c',\r\n\r\n            calculateButton:\r\n                '\u0420\u0435\u0448\u0438\u0442\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u0443',\r\n\r\n            calculatingButton:\r\n                '\u0420\u0435\u0448\u0430\u0435\u043c \u0441\u0438\u0441\u0442\u0435\u043c\u0443\u2026',\r\n\r\n            shortcutLabel:\r\n                '\u0411\u044b\u0441\u0442\u0440\u044b\u0439 \u0437\u0430\u043f\u0443\u0441\u043a:',\r\n\r\n            loadingTitle:\r\n                '\u0420\u0435\u0448\u0430\u0435\u043c \u0441\u0438\u0441\u0442\u0435\u043c\u0443',\r\n\r\n            loadingText:\r\n                '\u0412\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u043c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u0438 \u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u043c \u043c\u0435\u0442\u043e\u0434 \u041a\u0440\u0430\u043c\u0435\u0440\u0430.',\r\n\r\n            answerTitle:\r\n                '\u041e\u0442\u0432\u0435\u0442',\r\n\r\n            copyLatex:\r\n                '\u041a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c LaTeX',\r\n\r\n            copied:\r\n                '\u0421\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u043e',\r\n\r\n            solutionTitle:\r\n                '\u0420\u0435\u0448\u0435\u043d\u0438\u0435',\r\n\r\n            expandAll:\r\n                '\u0420\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0432\u0441\u0435',\r\n\r\n            collapseAll:\r\n                '\u0421\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0432\u0441\u0435',\r\n\r\n            step:\r\n                '\u0428\u0430\u0433',\r\n\r\n            noSolutionAnswer:\r\n                '\u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u043d\u0435\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u043d\u0430 \u0438 \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u0440\u0435\u0448\u0435\u043d\u0438\u0439.',\r\n\r\n            infiniteAnswer:\r\n                '\u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u0438\u043c\u0435\u0435\u0442 \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u043e \u043c\u043d\u043e\u0433\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u0439.',\r\n\r\n            errorGeneric:\r\n                '\u041f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0430 \u043e\u0448\u0438\u0431\u043a\u0430.',\r\n\r\n            errorMatrix:\r\n                '\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u043e\u0439 \u043c\u0430\u0442\u0440\u0438\u0446\u044b.',\r\n\r\n            errorInvalidFields:\r\n                '\u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0445 \u043f\u043e\u043b\u044f\u0445.',\r\n\r\n            errorCopy:\r\n                '\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u0443.',\r\n\r\n            errorClipboard:\r\n                '\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0431\u0443\u0444\u0435\u0440 \u043e\u0431\u043c\u0435\u043d\u0430.',\r\n\r\n            errorPasteEmpty:\r\n                '\u0411\u0443\u0444\u0435\u0440 \u043e\u0431\u043c\u0435\u043d\u0430 \u043d\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f \u0432\u0441\u0442\u0430\u0432\u043a\u0438.',\r\n\r\n            errorPasteFormat:\r\n                '\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0442\u044c \u0444\u043e\u0440\u043c\u0430\u0442 \u0441\u0438\u0441\u0442\u0435\u043c\u044b.',\r\n\r\n            errorPasteSize:\r\n                '\u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043e\u0442 2 \u0434\u043e 8 \u0443\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0439 \u0438 \u043d\u0430 \u043e\u0434\u0438\u043d \u0441\u0442\u043e\u043b\u0431\u0435\u0446 \u0431\u043e\u043b\u044c\u0448\u0435, \u0447\u0435\u043c \u0441\u0442\u0440\u043e\u043a.',\r\n\r\n            pastePrompt:\r\n                '\u0412\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u043c\u0430\u0442\u0440\u0438\u0446\u0443 \u0438\u043b\u0438 LaTeX-\u043a\u043e\u0434:',\r\n\r\n            errorRange:\r\n                '\u0423\u043a\u0430\u0436\u0438\u0442\u0435 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0439 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439.',\r\n\r\n            errorRangeOrder:\r\n                '\u041c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e.',\r\n\r\n            errorNoIntegers:\r\n                '\u0412 \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u043c \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0435 \u043d\u0435\u0442 \u0446\u0435\u043b\u044b\u0445 \u0447\u0438\u0441\u0435\u043b.',\r\n\r\n            errorNoDecimals:\r\n                '\u0412 \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u043c \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0435 \u043d\u0435\u0442 \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0445 \u0434\u0435\u0441\u044f\u0442\u0438\u0447\u043d\u044b\u0445 \u0447\u0438\u0441\u0435\u043b.',\r\n\r\n            errorUnique:\r\n                '\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0441 \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c \u0440\u0435\u0448\u0435\u043d\u0438\u0435\u043c.',\r\n\r\n            errorDifferentRhs:\r\n                '\u0414\u0438\u0430\u043f\u0430\u0437\u043e\u043d \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c \u0434\u0432\u0430 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f.',\r\n\r\n            errorServerResponse:\r\n                '\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043e\u0442\u0432\u0435\u0442 \u043e\u0442 \u0441\u0435\u0440\u0432\u0435\u0440\u0430.',\r\n\r\n            errorCalculate:\r\n                '\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0440\u0435\u0448\u0438\u0442\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u043c\u0435\u0442\u043e\u0434\u043e\u043c \u041a\u0440\u0430\u043c\u0435\u0440\u0430.',\r\n\r\n            errorNoPayload:\r\n                '\u0421\u0435\u0440\u0432\u0435\u0440 \u043d\u0435 \u0432\u0435\u0440\u043d\u0443\u043b \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f.',\r\n\r\n            errorNetwork:\r\n                '\u041f\u0440\u0438 \u043e\u0431\u043c\u0435\u043d\u0435 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0441 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0430 \u043e\u0448\u0438\u0431\u043a\u0430.'\r\n\r\n        }\r\n\r\n    };\r\n\r\n\r\n    \/* =====================================================\r\n       Language\r\n    ===================================================== *\/\r\n\r\n    function normalizeLanguage(value) {\r\n\r\n        const raw =\r\n            String(value || '')\r\n                .trim()\r\n                .toLowerCase()\r\n                .replace('_', '-');\r\n\r\n\r\n        if (\r\n            raw === 'ua'\r\n            ||\r\n            raw.startsWith('uk')\r\n        ) {\r\n\r\n            return 'uk';\r\n\r\n        }\r\n\r\n\r\n        if (raw.startsWith('en')) {\r\n\r\n            return 'en';\r\n\r\n        }\r\n\r\n\r\n        if (raw.startsWith('ru')) {\r\n\r\n            return 'ru';\r\n\r\n        }\r\n\r\n\r\n        return '';\r\n\r\n    }\r\n\r\n\r\n    function detectLanguage() {\r\n\r\n        const fromWindow =\r\n            normalizeLanguage(\r\n                window.MathrosCramerLang\r\n            );\r\n\r\n\r\n        if (fromWindow) {\r\n\r\n            return fromWindow;\r\n\r\n        }\r\n\r\n\r\n        const fromData =\r\n            normalizeLanguage(\r\n                APP.getAttribute(\r\n                    'data-lang'\r\n                )\r\n            );\r\n\r\n\r\n        if (fromData) {\r\n\r\n            return fromData;\r\n\r\n        }\r\n\r\n\r\n        const fromHtml =\r\n            normalizeLanguage(\r\n                document.documentElement\r\n                    .getAttribute('lang')\r\n            );\r\n\r\n\r\n        if (fromHtml) {\r\n\r\n            return fromHtml;\r\n\r\n        }\r\n\r\n\r\n        const segment =\r\n            String(\r\n                window.location.pathname || ''\r\n            )\r\n            .split('\/')\r\n            .filter(Boolean)[0]\r\n            ||\r\n            '';\r\n\r\n\r\n        return (\r\n            normalizeLanguage(segment)\r\n            ||\r\n            'uk'\r\n        );\r\n\r\n    }\r\n\r\n\r\n    const LANG =\r\n        detectLanguage();\r\n\r\n\r\n    const T =\r\n        I18N[LANG]\r\n        ||\r\n        I18N.uk;\r\n\r\n\r\n    \/* =====================================================\r\n       Translation\r\n    ===================================================== *\/\r\n\r\n    function applyTranslations() {\r\n\r\n        APP\r\n            .querySelectorAll(\r\n                '[data-i18n]'\r\n            )\r\n            .forEach(\r\n                function (element) {\r\n\r\n                    const key =\r\n                        element.getAttribute(\r\n                            'data-i18n'\r\n                        );\r\n\r\n\r\n                    if (T[key]) {\r\n\r\n                        element.textContent =\r\n                            T[key];\r\n\r\n                    }\r\n\r\n                }\r\n            );\r\n\r\n\r\n        APP\r\n            .querySelectorAll(\r\n                '[data-i18n-aria]'\r\n            )\r\n            .forEach(\r\n                function (element) {\r\n\r\n                    const key =\r\n                        element.getAttribute(\r\n                            'data-i18n-aria'\r\n                        );\r\n\r\n\r\n                    if (T[key]) {\r\n\r\n                        element.setAttribute(\r\n                            'aria-label',\r\n                            T[key]\r\n                        );\r\n\r\n                    }\r\n\r\n                }\r\n            );\r\n\r\n\r\n        APP\r\n            .querySelectorAll(\r\n                '[data-i18n-title]'\r\n            )\r\n            .forEach(\r\n                function (element) {\r\n\r\n                    const key =\r\n                        element.getAttribute(\r\n                            'data-i18n-title'\r\n                        );\r\n\r\n\r\n                    if (T[key]) {\r\n\r\n                        element.setAttribute(\r\n                            'title',\r\n                            T[key]\r\n                        );\r\n\r\n                    }\r\n\r\n                }\r\n            );\r\n\r\n    }\r\n\r\n\r\n    \/* =====================================================\r\n       Helpers\r\n    ===================================================== *\/\r\n\r\n    function byId(id) {\r\n\r\n        return document.getElementById(id);\r\n\r\n    }\r\n\r\n\r\n    function escapeHtml(value) {\r\n\r\n        return String(value ?? '')\r\n            .replace(\r\n                \/[&<>\"']\/g,\r\n                function (character) {\r\n\r\n                    return {\r\n\r\n                        '&': '&amp;',\r\n                        '<': '&lt;',\r\n                        '>': '&gt;',\r\n                        '\"': '&quot;',\r\n                        \"'\": '&#39;'\r\n\r\n                    }[character];\r\n\r\n                }\r\n            );\r\n\r\n    }\r\n\r\n\r\n    function template(\r\n        string,\r\n        values\r\n    ) {\r\n\r\n        let result =\r\n            String(string || '');\r\n\r\n\r\n        Object.keys(values || {})\r\n            .forEach(\r\n                function (key) {\r\n\r\n                    result =\r\n                        result.replace(\r\n                            new RegExp(\r\n                                '\\\\{' + key + '\\\\}',\r\n                                'g'\r\n                            ),\r\n                            String(values[key])\r\n                        );\r\n\r\n                }\r\n            );\r\n\r\n\r\n        return result;\r\n\r\n    }\r\n\r\n\r\n    \/* =====================================================\r\n       Messages\r\n    ===================================================== *\/\r\n\r\n    function showError(message) {\r\n\r\n        const element =\r\n            byId('cramer-error');\r\n\r\n\r\n        if (!element) {\r\n\r\n            return;\r\n\r\n        }\r\n\r\n\r\n        element.textContent =\r\n            message\r\n            ||\r\n            T.errorGeneric;\r\n\r\n\r\n        element.classList.add(\r\n            'is-visible'\r\n        );\r\n\r\n    }\r\n\r\n\r\n    function clearError() {\r\n\r\n        const element =\r\n            byId('cramer-error');\r\n\r\n\r\n        if (!element) {\r\n\r\n            return;\r\n\r\n        }\r\n\r\n\r\n        element.textContent =\r\n            '';\r\n\r\n\r\n        element.classList.remove(\r\n            'is-visible'\r\n        );\r\n\r\n    }\r\n\r\n\r\n    function showStatus(message) {\r\n\r\n        const element =\r\n            byId('cramer-status');\r\n\r\n\r\n        if (!element) {\r\n\r\n            return;\r\n\r\n        }\r\n\r\n\r\n        clearTimeout(\r\n            statusTimer\r\n        );\r\n\r\n\r\n        element.textContent =\r\n            message;\r\n\r\n\r\n        element.classList.add(\r\n            'is-visible'\r\n        );\r\n\r\n\r\n        statusTimer =\r\n            setTimeout(\r\n                function () {\r\n\r\n                    element.classList.remove(\r\n                        'is-visible'\r\n                    );\r\n\r\n\r\n                    element.textContent =\r\n                        '';\r\n\r\n                },\r\n                1800\r\n            );\r\n\r\n    }\r\n\r\n\r\n    \/* =====================================================\r\n       Loading\r\n    ===================================================== *\/\r\n\r\n    function setLoading(value) {\r\n\r\n        const loader =\r\n            byId('cramer-loading');\r\n\r\n\r\n        const button =\r\n            byId(\r\n                'cramer-generate-button'\r\n            );\r\n\r\n\r\n        if (loader) {\r\n\r\n            loader.hidden =\r\n                !value;\r\n\r\n        }\r\n\r\n\r\n        if (button) {\r\n\r\n            button.disabled =\r\n                Boolean(value);\r\n\r\n\r\n            button.textContent =\r\n                value\r\n                    ? T.calculatingButton\r\n                    : T.calculateButton;\r\n\r\n        }\r\n\r\n    }\r\n\r\n\r\n    \/* =====================================================\r\n       Input normalization\r\n    ===================================================== *\/\r\n\r\n    function normalizeInput(value) {\r\n\r\n        let result =\r\n            String(value ?? '')\r\n                .trim()\r\n                .replace(\/[\u2212\u2013\u2014]\/g, '-')\r\n                .replace(',', '.')\r\n                .replace(\/\\s+\/g, '');\r\n\r\n\r\n        result =\r\n            result.replace(\r\n                \/[^0-9eE+\\-\\.]\/g,\r\n                ''\r\n            );\r\n\r\n\r\n        return result;\r\n\r\n    }\r\n\r\n\r\n    function parseInputNumber(value) {\r\n\r\n        const normalized =\r\n            normalizeInput(value);\r\n\r\n\r\n        if (\r\n            normalized === ''\r\n        ) {\r\n\r\n            return 0;\r\n\r\n        }\r\n\r\n\r\n        const number =\r\n            Number(normalized);\r\n\r\n\r\n        return Number.isFinite(number)\r\n            ? number\r\n            : null;\r\n\r\n    }\r\n\r\n\r\n    \/* =====================================================\r\n       Build matrix\r\n    ===================================================== *\/\r\n\r\n    function changeSystemSize() {\r\n\r\n        const size =\r\n            Number(\r\n                byId('cramerSystemSize')\r\n                    ?.value\r\n            )\r\n            ||\r\n            3;\r\n\r\n\r\n        const table =\r\n            byId('cramerMatrixTable');\r\n\r\n\r\n        if (!table) {\r\n\r\n            return;\r\n\r\n        }\r\n\r\n\r\n        table.innerHTML =\r\n            '';\r\n\r\n\r\n        clearError();\r\n\r\n        clearResult();\r\n\r\n\r\n        for (\r\n            let rowIndex = 0;\r\n            rowIndex < size;\r\n            rowIndex++\r\n        ) {\r\n\r\n            const row =\r\n                document.createElement(\r\n                    'tr'\r\n                );\r\n\r\n\r\n            for (\r\n                let columnIndex = 0;\r\n                columnIndex <= size;\r\n                columnIndex++\r\n            ) {\r\n\r\n                const cell =\r\n                    document.createElement(\r\n                        'td'\r\n                    );\r\n\r\n\r\n                if (\r\n                    columnIndex === size\r\n                ) {\r\n\r\n                    cell.classList.add(\r\n                        'cramer-rhs-cell'\r\n                    );\r\n\r\n                }\r\n\r\n\r\n                const input =\r\n                    document.createElement(\r\n                        'input'\r\n                    );\r\n\r\n\r\n                input.type =\r\n                    'text';\r\n\r\n\r\n                input.inputMode =\r\n                    'decimal';\r\n\r\n\r\n                input.autocomplete =\r\n                    'off';\r\n\r\n\r\n                input.spellcheck =\r\n                    false;\r\n\r\n\r\n                input.placeholder =\r\n                    '0';\r\n\r\n\r\n                if (\r\n                    columnIndex === size\r\n                ) {\r\n\r\n                    input.setAttribute(\r\n                        'aria-label',\r\n                        template(\r\n                            T.rhsCellAria,\r\n                            {\r\n                                row:\r\n                                    rowIndex + 1\r\n                            }\r\n                        )\r\n                    );\r\n\r\n                }\r\n\r\n                else {\r\n\r\n                    input.setAttribute(\r\n                        'aria-label',\r\n                        template(\r\n                            T.matrixCellAria,\r\n                            {\r\n                                row:\r\n                                    rowIndex + 1,\r\n\r\n                                column:\r\n                                    columnIndex + 1\r\n                            }\r\n                        )\r\n                    );\r\n\r\n                }\r\n\r\n\r\n                input.addEventListener(\r\n                    'input',\r\n                    function () {\r\n\r\n                        input.classList.remove(\r\n                            'cramer-input-error'\r\n                        );\r\n\r\n\r\n                        clearError();\r\n\r\n                        clearResult();\r\n\r\n                    }\r\n                );\r\n\r\n\r\n                cell.appendChild(\r\n                    input\r\n                );\r\n\r\n\r\n                row.appendChild(\r\n                    cell\r\n                );\r\n\r\n            }\r\n\r\n\r\n            table.appendChild(\r\n                row\r\n            );\r\n\r\n        }\r\n\r\n    }\r\n\r\n\r\n    \/* =====================================================\r\n       Collect\r\n    ===================================================== *\/\r\n\r\n    function collectMatrix() {\r\n\r\n        const table =\r\n            byId('cramerMatrixTable');\r\n\r\n\r\n        const matrix =\r\n            [];\r\n\r\n\r\n        let invalidCount =\r\n            0;\r\n\r\n\r\n        if (!table) {\r\n\r\n            return {\r\n\r\n                matrix,\r\n\r\n                invalidCount\r\n\r\n            };\r\n\r\n        }\r\n\r\n\r\n        Array.from(\r\n            table.rows\r\n        )\r\n        .forEach(\r\n            function (row) {\r\n\r\n                const values =\r\n                    [];\r\n\r\n\r\n                Array.from(\r\n                    row.cells\r\n                )\r\n                .forEach(\r\n                    function (cell) {\r\n\r\n                        const input =\r\n                            cell.querySelector(\r\n                                'input'\r\n                            );\r\n\r\n\r\n                        const value =\r\n                            parseInputNumber(\r\n                                input?.value\r\n                            );\r\n\r\n\r\n                        if (\r\n                            value === null\r\n                        ) {\r\n\r\n                            invalidCount++;\r\n\r\n\r\n                            input?.classList.add(\r\n                                'cramer-input-error'\r\n                            );\r\n\r\n\r\n                            values.push(0);\r\n\r\n                        }\r\n\r\n                        else {\r\n\r\n                            values.push(value);\r\n\r\n                        }\r\n\r\n                    }\r\n                );\r\n\r\n\r\n                matrix.push(values);\r\n\r\n            }\r\n        );\r\n\r\n\r\n        return {\r\n\r\n            matrix,\r\n\r\n            invalidCount\r\n\r\n        };\r\n\r\n    }\r\n\r\n\r\n    \/* =====================================================\r\n       Fill\r\n    ===================================================== *\/\r\n\r\n    function fillMatrix(matrix) {\r\n\r\n        const size =\r\n            matrix.length;\r\n\r\n\r\n        const select =\r\n            byId('cramerSystemSize');\r\n\r\n\r\n        if (select) {\r\n\r\n            select.value =\r\n                String(size);\r\n\r\n        }\r\n\r\n\r\n        changeSystemSize();\r\n\r\n\r\n        const table =\r\n            byId('cramerMatrixTable');\r\n\r\n\r\n        matrix.forEach(\r\n            function (\r\n                row,\r\n                rowIndex\r\n            ) {\r\n\r\n                row.forEach(\r\n                    function (\r\n                        value,\r\n                        columnIndex\r\n                    ) {\r\n\r\n                        const input =\r\n                            table\r\n                                ?.rows[rowIndex]\r\n                                ?.cells[columnIndex]\r\n                                ?.querySelector('input');\r\n\r\n\r\n                        if (input) {\r\n\r\n                            input.value =\r\n                                String(value);\r\n\r\n                        }\r\n\r\n                    }\r\n                );\r\n\r\n            }\r\n        );\r\n\r\n\r\n        clearResult();\r\n\r\n    }\r\n\r\n\r\n    \/* =====================================================\r\n       Clear\r\n    ===================================================== *\/\r\n\r\n    function clearMatrix() {\r\n\r\n        const table =\r\n            byId('cramerMatrixTable');\r\n\r\n\r\n        table\r\n            ?.querySelectorAll('input')\r\n            .forEach(\r\n                function (input) {\r\n\r\n                    input.value =\r\n                        '';\r\n\r\n\r\n                    input.classList.remove(\r\n                        'cramer-input-error'\r\n                    );\r\n\r\n                }\r\n            );\r\n\r\n\r\n        clearError();\r\n\r\n        clearResult();\r\n\r\n\r\n        table\r\n            ?.querySelector('input')\r\n            ?.focus();\r\n\r\n    }\r\n\r\n\r\n    \/* =====================================================\r\n       Clipboard output\r\n    ===================================================== *\/\r\n\r\n    function matrixToPlainText(matrix) {\r\n\r\n        return matrix\r\n            .map(\r\n                function (row) {\r\n\r\n                    return (\r\n                        row\r\n                            .slice(0, -1)\r\n                            .join(' ')\r\n                        +\r\n                        ' | '\r\n                        +\r\n                        row[\r\n                            row.length - 1\r\n                        ]\r\n                    );\r\n\r\n                }\r\n            )\r\n            .join('\\n');\r\n\r\n    }\r\n\r\n\r\n    \/* =====================================================\r\n       Copy system\r\n    ===================================================== *\/\r\n\r\n    async function copySystem() {\r\n\r\n        clearError();\r\n\r\n\r\n        const result =\r\n            collectMatrix();\r\n\r\n\r\n        if (\r\n            result.invalidCount > 0\r\n        ) {\r\n\r\n            showError(\r\n                T.errorInvalidFields\r\n            );\r\n\r\n\r\n            return;\r\n\r\n        }\r\n\r\n\r\n        const text =\r\n            matrixToPlainText(\r\n                result.matrix\r\n            );\r\n\r\n\r\n        try {\r\n\r\n            if (\r\n                navigator.clipboard\r\n                &&\r\n                navigator.clipboard.writeText\r\n            ) {\r\n\r\n                await navigator.clipboard\r\n                    .writeText(text);\r\n\r\n            }\r\n\r\n            else {\r\n\r\n                const textarea =\r\n                    document.createElement(\r\n                        'textarea'\r\n                    );\r\n\r\n\r\n                textarea.value =\r\n                    text;\r\n\r\n\r\n                textarea.style.position =\r\n                    'fixed';\r\n\r\n\r\n                textarea.style.opacity =\r\n                    '0';\r\n\r\n\r\n                document.body.appendChild(\r\n                    textarea\r\n                );\r\n\r\n\r\n                textarea.select();\r\n\r\n\r\n                document.execCommand(\r\n                    'copy'\r\n                );\r\n\r\n\r\n                textarea.remove();\r\n\r\n            }\r\n\r\n\r\n            showStatus(\r\n                T.copiedSystem\r\n            );\r\n\r\n\r\n            flashIcon(\r\n                byId(\r\n                    'cramer-copy-system-button'\r\n                )\r\n            );\r\n\r\n        }\r\n\r\n        catch (error) {\r\n\r\n            showError(\r\n                T.errorCopy\r\n            );\r\n\r\n        }\r\n\r\n    }\r\n\r\n\r\n    \/* =====================================================\r\n       Clipboard parser\r\n    ===================================================== *\/\r\n\r\n    function parseClipboardText(text) {\r\n\r\n        const source =\r\n            String(text || '')\r\n                .trim();\r\n\r\n\r\n        if (!source) {\r\n\r\n            return null;\r\n\r\n        }\r\n\r\n\r\n        \/*\r\n         * 1. JSON\r\n         *\/\r\n        const fromJson =\r\n            tryParseJsonMatrix(\r\n                source\r\n            );\r\n\r\n\r\n        if (fromJson) {\r\n\r\n            return fromJson;\r\n\r\n        }\r\n\r\n\r\n        \/*\r\n         * 2. LaTeX\r\n         *\/\r\n        if (\r\n            \/\\\\begin\\s*\\{\/.test(source)\r\n            ||\r\n            \/\\\\frac\\s*\\{\/.test(source)\r\n        ) {\r\n\r\n            const fromLatex =\r\n                tryParseLatexMatrix(\r\n                    source\r\n                );\r\n\r\n\r\n            if (fromLatex) {\r\n\r\n                return fromLatex;\r\n\r\n            }\r\n\r\n        }\r\n\r\n\r\n        \/*\r\n         * 3. Plain \/ Excel \/ TSV\r\n         *\/\r\n        return tryParsePlainMatrix(\r\n            source\r\n        );\r\n\r\n    }\r\n\r\n\r\n    \/* =====================================================\r\n       JSON parser\r\n    ===================================================== *\/\r\n\r\n    function tryParseJsonMatrix(source) {\r\n\r\n        if (\r\n            !source.startsWith('[')\r\n        ) {\r\n\r\n            return null;\r\n\r\n        }\r\n\r\n\r\n        try {\r\n\r\n            const data =\r\n                JSON.parse(source);\r\n\r\n\r\n            if (\r\n                !Array.isArray(data)\r\n            ) {\r\n\r\n                return null;\r\n\r\n            }\r\n\r\n\r\n            const matrix =\r\n                data.map(\r\n                    function (row) {\r\n\r\n                        if (\r\n                            !Array.isArray(row)\r\n                        ) {\r\n\r\n                            return null;\r\n\r\n                        }\r\n\r\n\r\n                        return row.map(\r\n                            function (value) {\r\n\r\n                                const number =\r\n                                    Number(value);\r\n\r\n\r\n                                return Number.isFinite(number)\r\n                                    ? number\r\n                                    : null;\r\n\r\n                            }\r\n                        );\r\n\r\n                    }\r\n                );\r\n\r\n\r\n            if (\r\n                matrix.some(\r\n                    function (row) {\r\n\r\n                        return (\r\n                            !row\r\n                            ||\r\n                            row.some(\r\n                                function (value) {\r\n\r\n                                    return value === null;\r\n\r\n                                }\r\n                            )\r\n                        );\r\n\r\n                    }\r\n                )\r\n            ) {\r\n\r\n                return null;\r\n\r\n            }\r\n\r\n\r\n            return matrix;\r\n\r\n        }\r\n\r\n        catch (error) {\r\n\r\n            return null;\r\n\r\n        }\r\n\r\n    }\r\n\r\n\r\n    \/* =====================================================\r\n       LaTeX number parser\r\n    ===================================================== *\/\r\n\r\n    function parseLatexNumber(value) {\r\n\r\n        let token =\r\n            String(value || '')\r\n                .trim();\r\n\r\n\r\n        token =\r\n            token\r\n                .replace(\/[\u2212\u2013\u2014]\/g, '-')\r\n                .replace(\/\\$\/g, '')\r\n                .replace(\/\\\\,\/g, '')\r\n                .replace(\/\\\\!\/g, '')\r\n                .replace(\/\\\\;\/g, '')\r\n                .replace(\/\\\\:\/g, '')\r\n                .replace(\/\\\\quad\/g, '')\r\n                .replace(\/\\\\qquad\/g, '')\r\n                .replace(\/\\s+\/g, '');\r\n\r\n\r\n        \/*\r\n         * Remove surrounding braces.\r\n         *\/\r\n        while (\r\n            token.startsWith('{')\r\n            &&\r\n            token.endsWith('}')\r\n        ) {\r\n\r\n            token =\r\n                token.slice(1, -1);\r\n\r\n        }\r\n\r\n\r\n        \/*\r\n         * Normal number.\r\n         *\/\r\n        if (\r\n            \/^[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?$\/\r\n                .test(token)\r\n        ) {\r\n\r\n            const number =\r\n                Number(token);\r\n\r\n\r\n            return Number.isFinite(number)\r\n                ? number\r\n                : null;\r\n\r\n        }\r\n\r\n\r\n        \/*\r\n         * Decimal comma.\r\n         *\/\r\n        if (\r\n            \/^[+-]?\\d+,\\d+$\/.test(token)\r\n        ) {\r\n\r\n            const number =\r\n                Number(\r\n                    token.replace(',', '.')\r\n                );\r\n\r\n\r\n            return Number.isFinite(number)\r\n                ? number\r\n                : null;\r\n\r\n        }\r\n\r\n\r\n        \/*\r\n         * Plain fraction:\r\n         *\r\n         * 3\/4\r\n         * -5\/7\r\n         *\/\r\n        let match =\r\n            token.match(\r\n                \/^([+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+))\\\/([+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+))$\/\r\n            );\r\n\r\n\r\n        if (match) {\r\n\r\n            const numerator =\r\n                Number(match[1]);\r\n\r\n\r\n            const denominator =\r\n                Number(match[2]);\r\n\r\n\r\n            if (\r\n                denominator === 0\r\n            ) {\r\n\r\n                return null;\r\n\r\n            }\r\n\r\n\r\n            return (\r\n                numerator\r\n                \/\r\n                denominator\r\n            );\r\n\r\n        }\r\n\r\n\r\n        \/*\r\n         * \\frac{3}{4}\r\n         * -\\frac{3}{4}\r\n         *\/\r\n        match =\r\n            token.match(\r\n                \/^([+-]?)\\\\(?:d?frac)\\{([+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+))\\}\\{([+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+))\\}$\/\r\n            );\r\n\r\n\r\n        if (match) {\r\n\r\n            const sign =\r\n                match[1] === '-'\r\n                    ? -1\r\n                    : 1;\r\n\r\n\r\n            const numerator =\r\n                Number(match[2]);\r\n\r\n\r\n            const denominator =\r\n                Number(match[3]);\r\n\r\n\r\n            if (\r\n                denominator === 0\r\n            ) {\r\n\r\n                return null;\r\n\r\n            }\r\n\r\n\r\n            return (\r\n                sign\r\n                *\r\n                numerator\r\n                \/\r\n                denominator\r\n            );\r\n\r\n        }\r\n\r\n\r\n        \/*\r\n         * 3\\cdot10^{5}\r\n         * 1.2\\times10^{-4}\r\n         *\/\r\n        match =\r\n            token.match(\r\n                \/^([+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+))\\\\(?:cdot|times)10\\^\\{([+-]?\\d+)\\}$\/\r\n            );\r\n\r\n\r\n        if (match) {\r\n\r\n            const mantissa =\r\n                Number(match[1]);\r\n\r\n\r\n            const exponent =\r\n                Number(match[2]);\r\n\r\n\r\n            return (\r\n                mantissa\r\n                *\r\n                Math.pow(\r\n                    10,\r\n                    exponent\r\n                )\r\n            );\r\n\r\n        }\r\n\r\n\r\n        return null;\r\n\r\n    }\r\n\r\n\r\n    \/* =====================================================\r\n       LaTeX matrix parser\r\n    ===================================================== *\/\r\n\r\n    function tryParseLatexMatrix(source) {\r\n\r\n        let latex =\r\n            String(source);\r\n\r\n\r\n        \/*\r\n         * Normalize line endings.\r\n         *\/\r\n        latex =\r\n            latex.replace(\r\n                \/\\r\/g,\r\n                ''\r\n            );\r\n\r\n\r\n        \/*\r\n         * Remove display delimiters.\r\n         *\/\r\n        latex =\r\n            latex\r\n                .replace(\/\\\\\\[\/g, '')\r\n                .replace(\/\\\\\\]\/g, '')\r\n                .replace(\/\\$\\$\/g, '')\r\n                .replace(\/\\$\/g, '');\r\n\r\n\r\n        \/*\r\n         * Remove \\left and \\right wrappers.\r\n         *\/\r\n        latex =\r\n            latex\r\n                .replace(\r\n                    \/\\\\left\\s*[\\(\\[\\{]?\/g,\r\n                    ''\r\n                )\r\n                .replace(\r\n                    \/\\\\right\\s*[\\)\\]\\}]?\/g,\r\n                    ''\r\n                );\r\n\r\n\r\n        \/*\r\n         * Locate supported environment.\r\n         *\/\r\n        const environmentMatch =\r\n            latex.match(\r\n                \/\\\\begin\\s*\\{(bmatrix|pmatrix|vmatrix|Vmatrix|matrix|array)\\}([\\s\\S]*?)\\\\end\\s*\\{\\1\\}\/\r\n            );\r\n\r\n\r\n        if (!environmentMatch) {\r\n\r\n            return null;\r\n\r\n        }\r\n\r\n\r\n        const environment =\r\n            environmentMatch[1];\r\n\r\n\r\n        let body =\r\n            environmentMatch[2];\r\n\r\n\r\n        \/*\r\n         * array has a column declaration:\r\n         *\r\n         * \\begin{array}{cc|c}\r\n         *\/\r\n        if (\r\n            environment ===\r\n            'array'\r\n        ) {\r\n\r\n            body =\r\n                body.replace(\r\n                    \/^\\s*\\{[^}]*\\}\/,\r\n                    ''\r\n                );\r\n\r\n        }\r\n\r\n\r\n        \/*\r\n         * Remove hline-type commands.\r\n         *\/\r\n        body =\r\n            body\r\n                .replace(\/\\\\hline\/g, '')\r\n                .replace(\/\\\\cline\\{[^}]*\\}\/g, '');\r\n\r\n\r\n        \/*\r\n         * Convert \\mid into an & separator\r\n         * if somebody explicitly placed it in data.\r\n         *\/\r\n        body =\r\n            body.replace(\r\n                \/\\\\mid\/g,\r\n                '&'\r\n            );\r\n\r\n\r\n        \/*\r\n         * Split rows by \\\\.\r\n         *\/\r\n        const rows =\r\n            body\r\n                .split(\r\n                    \/\\\\\\\\(?:\\[[^\\]]*\\])?\/\r\n                )\r\n                .map(\r\n                    function (row) {\r\n\r\n                        return row.trim();\r\n\r\n                    }\r\n                )\r\n                .filter(Boolean);\r\n\r\n\r\n        if (!rows.length) {\r\n\r\n            return null;\r\n\r\n        }\r\n\r\n\r\n        const matrix =\r\n            [];\r\n\r\n\r\n        for (\r\n            const row of rows\r\n        ) {\r\n\r\n            const cells =\r\n                row\r\n                    .split('&')\r\n                    .map(\r\n                        function (cell) {\r\n\r\n                            return cell.trim();\r\n\r\n                        }\r\n                    )\r\n                    .filter(\r\n                        function (cell) {\r\n\r\n                            return cell !== '';\r\n\r\n                        }\r\n                    );\r\n\r\n\r\n            if (!cells.length) {\r\n\r\n                return null;\r\n\r\n            }\r\n\r\n\r\n            const parsedRow =\r\n                [];\r\n\r\n\r\n            for (\r\n                const cell of cells\r\n            ) {\r\n\r\n                const number =\r\n                    parseLatexNumber(\r\n                        cell\r\n                    );\r\n\r\n\r\n                if (\r\n                    number === null\r\n                ) {\r\n\r\n                    return null;\r\n\r\n                }\r\n\r\n\r\n                parsedRow.push(\r\n                    number\r\n                );\r\n\r\n            }\r\n\r\n\r\n            matrix.push(\r\n                parsedRow\r\n            );\r\n\r\n        }\r\n\r\n\r\n        return matrix;\r\n\r\n    }\r\n\r\n\r\n    \/* =====================================================\r\n       Plain text parser\r\n    ===================================================== *\/\r\n\r\n    function tryParsePlainMatrix(source) {\r\n\r\n        let text =\r\n            String(source)\r\n                .replace(\/\\r\/g, '')\r\n                .replace(\/[\u2212\u2013\u2014]\/g, '-');\r\n\r\n\r\n        \/*\r\n         * Decimal comma:\r\n         *\r\n         * 1,5 -> 1.5\r\n         *\/\r\n        text =\r\n            text.replace(\r\n                \/(\\d),(\\d)\/g,\r\n                '$1.$2'\r\n            );\r\n\r\n\r\n        const lines =\r\n            text\r\n                .split('\\n')\r\n                .map(\r\n                    function (line) {\r\n\r\n                        return line.trim();\r\n\r\n                    }\r\n                )\r\n                .filter(Boolean);\r\n\r\n\r\n        if (!lines.length) {\r\n\r\n            return null;\r\n\r\n        }\r\n\r\n\r\n        const matrix =\r\n            [];\r\n\r\n\r\n        for (\r\n            let line of lines\r\n        ) {\r\n\r\n            \/*\r\n             * Remove common brackets.\r\n             *\/\r\n            line =\r\n                line\r\n                    .replace(\r\n                        \/^[\\[\\(\\{]\\s*\/,\r\n                        ''\r\n                    )\r\n                    .replace(\r\n                        \/\\s*[\\]\\)\\}]$\/,\r\n                        ''\r\n                    );\r\n\r\n\r\n            \/*\r\n             * | separates A and b,\r\n             * but mathematically it is still\r\n             * just another column.\r\n             *\/\r\n            line =\r\n                line.replace(\r\n                    \/\\|\/g,\r\n                    ' '\r\n                );\r\n\r\n\r\n            \/*\r\n             * Semicolon may be used\r\n             * as a separator.\r\n             *\/\r\n            line =\r\n                line.replace(\r\n                    \/;\/g,\r\n                    ' '\r\n                );\r\n\r\n\r\n            const cells =\r\n                line\r\n                    .split(\r\n                        \/\\t+|\\s+\/\r\n                    )\r\n                    .filter(Boolean);\r\n\r\n\r\n            if (!cells.length) {\r\n\r\n                continue;\r\n\r\n            }\r\n\r\n\r\n            const parsedRow =\r\n                [];\r\n\r\n\r\n            for (\r\n                const cell of cells\r\n            ) {\r\n\r\n                const number =\r\n                    parseLatexNumber(\r\n                        cell\r\n                    );\r\n\r\n\r\n                if (\r\n                    number === null\r\n                ) {\r\n\r\n                    return null;\r\n\r\n                }\r\n\r\n\r\n                parsedRow.push(\r\n                    number\r\n                );\r\n\r\n            }\r\n\r\n\r\n            matrix.push(\r\n                parsedRow\r\n            );\r\n\r\n        }\r\n\r\n\r\n        return matrix.length\r\n            ? matrix\r\n            : null;\r\n\r\n    }\r\n\r\n\r\n    \/* =====================================================\r\n       Validate pasted augmented matrix\r\n    ===================================================== *\/\r\n\r\n    function validatePastedMatrix(matrix) {\r\n\r\n        if (\r\n            !Array.isArray(matrix)\r\n            ||\r\n            matrix.length < 2\r\n            ||\r\n            matrix.length > 8\r\n        ) {\r\n\r\n            return false;\r\n\r\n        }\r\n\r\n\r\n        const size =\r\n            matrix.length;\r\n\r\n\r\n        const expectedColumns =\r\n            size + 1;\r\n\r\n\r\n        return matrix.every(\r\n            function (row) {\r\n\r\n                return (\r\n                    Array.isArray(row)\r\n                    &&\r\n                    row.length ===\r\n                    expectedColumns\r\n                    &&\r\n                    row.every(\r\n                        function (value) {\r\n\r\n                            return Number.isFinite(\r\n                                Number(value)\r\n                            );\r\n\r\n                        }\r\n                    )\r\n                );\r\n\r\n            }\r\n        );\r\n\r\n    }\r\n\r\n\r\n    \/* =====================================================\r\n       Apply clipboard\r\n    ===================================================== *\/\r\n\r\n    function applyClipboardText(text) {\r\n\r\n        const matrix =\r\n            parseClipboardText(text);\r\n\r\n\r\n        if (!matrix) {\r\n\r\n            showError(\r\n                T.errorPasteFormat\r\n            );\r\n\r\n\r\n            return;\r\n\r\n        }\r\n\r\n\r\n        if (\r\n            !validatePastedMatrix(\r\n                matrix\r\n            )\r\n        ) {\r\n\r\n            showError(\r\n                T.errorPasteSize\r\n            );\r\n\r\n\r\n            return;\r\n\r\n        }\r\n\r\n\r\n        fillMatrix(matrix);\r\n\r\n\r\n        flashIcon(\r\n            byId(\r\n                'cramer-paste-system-button'\r\n            )\r\n        );\r\n\r\n\r\n        showStatus(\r\n            T.pastedSystem\r\n        );\r\n\r\n    }\r\n\r\n\r\n    \/* =====================================================\r\n       Paste\r\n    ===================================================== *\/\r\n\r\n    async function pasteSystem() {\r\n\r\n        clearError();\r\n\r\n\r\n        if (\r\n            navigator.clipboard\r\n            &&\r\n            navigator.clipboard.readText\r\n        ) {\r\n\r\n            try {\r\n\r\n                const text =\r\n                    await navigator.clipboard\r\n                        .readText();\r\n\r\n\r\n                if (\r\n                    !String(text).trim()\r\n                ) {\r\n\r\n                    showError(\r\n                        T.errorPasteEmpty\r\n                    );\r\n\r\n\r\n                    return;\r\n\r\n                }\r\n\r\n\r\n                applyClipboardText(\r\n                    text\r\n                );\r\n\r\n\r\n                return;\r\n\r\n            }\r\n\r\n            catch (error) {\r\n\r\n                \/*\r\n                 * Clipboard read may be blocked.\r\n                 * Continue to prompt fallback.\r\n                 *\/\r\n\r\n            }\r\n\r\n        }\r\n\r\n\r\n        const text =\r\n            window.prompt(\r\n                T.pastePrompt,\r\n                ''\r\n            );\r\n\r\n\r\n        if (\r\n            text === null\r\n        ) {\r\n\r\n            return;\r\n\r\n        }\r\n\r\n\r\n        if (\r\n            !text.trim()\r\n        ) {\r\n\r\n            showError(\r\n                T.errorPasteEmpty\r\n            );\r\n\r\n\r\n            return;\r\n\r\n        }\r\n\r\n\r\n        applyClipboardText(\r\n            text\r\n        );\r\n\r\n    }\r\n\r\n\r\n    \/* =====================================================\r\n       Icon feedback\r\n    ===================================================== *\/\r\n\r\n    function flashIcon(button) {\r\n\r\n        if (!button) {\r\n\r\n            return;\r\n\r\n        }\r\n\r\n\r\n        button.classList.add(\r\n            'is-success'\r\n        );\r\n\r\n\r\n        setTimeout(\r\n            function () {\r\n\r\n                button.classList.remove(\r\n                    'is-success'\r\n                );\r\n\r\n            },\r\n            900\r\n        );\r\n\r\n    }\r\n\r\n\r\n    \/* =====================================================\r\n       Random values\r\n    ===================================================== *\/\r\n\r\n    function randomInteger(\r\n        min,\r\n        max\r\n    ) {\r\n\r\n        return (\r\n            Math.floor(\r\n                Math.random()\r\n                *\r\n                (max - min + 1)\r\n            )\r\n            +\r\n            min\r\n        );\r\n\r\n    }\r\n\r\n\r\n    function randomDecimal(\r\n        min,\r\n        max\r\n    ) {\r\n\r\n        return (\r\n            randomInteger(\r\n                Math.ceil(min * 10),\r\n                Math.floor(max * 10)\r\n            )\r\n            \/\r\n            10\r\n        );\r\n\r\n    }\r\n\r\n\r\n    function randomValue(\r\n        min,\r\n        max,\r\n        type\r\n    ) {\r\n\r\n        return (\r\n            type === 'decimal'\r\n                ? randomDecimal(\r\n                    min,\r\n                    max\r\n                )\r\n                : randomInteger(\r\n                    Math.ceil(min),\r\n                    Math.floor(max)\r\n                )\r\n        );\r\n\r\n    }\r\n\r\n\r\n    function randomMatrix(\r\n        size,\r\n        min,\r\n        max,\r\n        type\r\n    ) {\r\n\r\n        return Array.from(\r\n            {\r\n                length:\r\n                    size\r\n            },\r\n            function () {\r\n\r\n                return Array.from(\r\n                    {\r\n                        length:\r\n                            size\r\n                    },\r\n                    function () {\r\n\r\n                        return randomValue(\r\n                            min,\r\n                            max,\r\n                            type\r\n                        );\r\n\r\n                    }\r\n                );\r\n\r\n            }\r\n        );\r\n\r\n    }\r\n\r\n\r\n    function randomRhs(\r\n        size,\r\n        min,\r\n        max,\r\n        type\r\n    ) {\r\n\r\n        return Array.from(\r\n            {\r\n                length:\r\n                    size\r\n            },\r\n            function () {\r\n\r\n                return randomValue(\r\n                    min,\r\n                    max,\r\n                    type\r\n                );\r\n\r\n            }\r\n        );\r\n\r\n    }\r\n\r\n\r\n    \/* =====================================================\r\n       Local determinant\r\n    ===================================================== *\/\r\n\r\n    function determinantCheck(matrix) {\r\n\r\n        const n =\r\n            matrix.length;\r\n\r\n\r\n        const a =\r\n            matrix.map(\r\n                function (row) {\r\n\r\n                    return row.slice();\r\n\r\n                }\r\n            );\r\n\r\n\r\n        let determinant =\r\n            1;\r\n\r\n\r\n        let swaps =\r\n            0;\r\n\r\n\r\n        for (\r\n            let column = 0;\r\n            column < n;\r\n            column++\r\n        ) {\r\n\r\n            let pivot =\r\n                column;\r\n\r\n\r\n            for (\r\n                let row = column + 1;\r\n                row < n;\r\n                row++\r\n            ) {\r\n\r\n                if (\r\n                    Math.abs(\r\n                        a[row][column]\r\n                    )\r\n                    >\r\n                    Math.abs(\r\n                        a[pivot][column]\r\n                    )\r\n                ) {\r\n\r\n                    pivot =\r\n                        row;\r\n\r\n                }\r\n\r\n            }\r\n\r\n\r\n            if (\r\n                Math.abs(\r\n                    a[pivot][column]\r\n                )\r\n                <\r\n                1e-12\r\n            ) {\r\n\r\n                return 0;\r\n\r\n            }\r\n\r\n\r\n            if (\r\n                pivot !== column\r\n            ) {\r\n\r\n                [\r\n                    a[pivot],\r\n                    a[column]\r\n                ] =\r\n                [\r\n                    a[column],\r\n                    a[pivot]\r\n                ];\r\n\r\n\r\n                swaps++;\r\n\r\n            }\r\n\r\n\r\n            const pivotValue =\r\n                a[column][column];\r\n\r\n\r\n            determinant *=\r\n                pivotValue;\r\n\r\n\r\n            for (\r\n                let row = column + 1;\r\n                row < n;\r\n                row++\r\n            ) {\r\n\r\n                const factor =\r\n                    a[row][column]\r\n                    \/\r\n                    pivotValue;\r\n\r\n\r\n                for (\r\n                    let c = column + 1;\r\n                    c < n;\r\n                    c++\r\n                ) {\r\n\r\n                    a[row][c] -=\r\n                        factor\r\n                        *\r\n                        a[column][c];\r\n\r\n                }\r\n\r\n            }\r\n\r\n        }\r\n\r\n\r\n        if (\r\n            swaps % 2\r\n        ) {\r\n\r\n            determinant =\r\n                -determinant;\r\n\r\n        }\r\n\r\n\r\n        return determinant;\r\n\r\n    }\r\n\r\n\r\n    \/* =====================================================\r\n       Random example\r\n    ===================================================== *\/\r\n\r\n    function generateRandomExample() {\r\n\r\n        clearError();\r\n\r\n        clearResult();\r\n\r\n\r\n        const size =\r\n            Number(\r\n                byId('cramerSystemSize')\r\n                    ?.value\r\n            )\r\n            ||\r\n            3;\r\n\r\n\r\n        const min =\r\n            Number(\r\n                byId('cramerRandomMin')\r\n                    ?.value\r\n            );\r\n\r\n\r\n        const max =\r\n            Number(\r\n                byId('cramerRandomMax')\r\n                    ?.value\r\n            );\r\n\r\n\r\n        const numberType =\r\n            byId('cramerRandomNumberType')\r\n                ?.value\r\n            ||\r\n            'integer';\r\n\r\n\r\n        const systemType =\r\n            byId('cramerRandomSystemType')\r\n                ?.value\r\n            ||\r\n            'any';\r\n\r\n\r\n        if (\r\n            !Number.isFinite(min)\r\n            ||\r\n            !Number.isFinite(max)\r\n        ) {\r\n\r\n            showError(\r\n                T.errorRange\r\n            );\r\n\r\n\r\n            return;\r\n\r\n        }\r\n\r\n\r\n        if (\r\n            min > max\r\n        ) {\r\n\r\n            showError(\r\n                T.errorRangeOrder\r\n            );\r\n\r\n\r\n            return;\r\n\r\n        }\r\n\r\n\r\n        let A =\r\n            null;\r\n\r\n\r\n        let b =\r\n            null;\r\n\r\n\r\n        if (\r\n            systemType === 'unique'\r\n        ) {\r\n\r\n            for (\r\n                let attempt = 0;\r\n                attempt < 300;\r\n                attempt++\r\n            ) {\r\n\r\n                const candidate =\r\n                    randomMatrix(\r\n                        size,\r\n                        min,\r\n                        max,\r\n                        numberType\r\n                    );\r\n\r\n\r\n                if (\r\n                    Math.abs(\r\n                        determinantCheck(\r\n                            candidate\r\n                        )\r\n                    )\r\n                    >\r\n                    1e-10\r\n                ) {\r\n\r\n                    A =\r\n                        candidate;\r\n\r\n\r\n                    break;\r\n\r\n                }\r\n\r\n            }\r\n\r\n\r\n            if (!A) {\r\n\r\n                showError(\r\n                    T.errorUnique\r\n                );\r\n\r\n\r\n                return;\r\n\r\n            }\r\n\r\n\r\n            b =\r\n                randomRhs(\r\n                    size,\r\n                    min,\r\n                    max,\r\n                    numberType\r\n                );\r\n\r\n        }\r\n\r\n        else {\r\n\r\n            A =\r\n                randomMatrix(\r\n                    size,\r\n                    min,\r\n                    max,\r\n                    numberType\r\n                );\r\n\r\n\r\n            b =\r\n                randomRhs(\r\n                    size,\r\n                    min,\r\n                    max,\r\n                    numberType\r\n                );\r\n\r\n\r\n            if (\r\n                systemType ===\r\n                'infinite'\r\n            ) {\r\n\r\n                A[size - 1] =\r\n                    A[0].slice();\r\n\r\n\r\n                b[size - 1] =\r\n                    b[0];\r\n\r\n            }\r\n\r\n\r\n            if (\r\n                systemType ===\r\n                'none'\r\n            ) {\r\n\r\n                A[size - 1] =\r\n                    A[0].slice();\r\n\r\n\r\n                let different =\r\n                    null;\r\n\r\n\r\n                for (\r\n                    let attempt = 0;\r\n                    attempt < 100;\r\n                    attempt++\r\n                ) {\r\n\r\n                    const candidate =\r\n                        randomValue(\r\n                            min,\r\n                            max,\r\n                            numberType\r\n                        );\r\n\r\n\r\n                    if (\r\n                        candidate !==\r\n                        b[0]\r\n                    ) {\r\n\r\n                        different =\r\n                            candidate;\r\n\r\n\r\n                        break;\r\n\r\n                    }\r\n\r\n                }\r\n\r\n\r\n                if (\r\n                    different === null\r\n                ) {\r\n\r\n                    showError(\r\n                        T.errorDifferentRhs\r\n                    );\r\n\r\n\r\n                    return;\r\n\r\n                }\r\n\r\n\r\n                b[size - 1] =\r\n                    different;\r\n\r\n            }\r\n\r\n        }\r\n\r\n\r\n        const augmented =\r\n            A.map(\r\n                function (\r\n                    row,\r\n                    index\r\n                ) {\r\n\r\n                    return row.concat(\r\n                        b[index]\r\n                    );\r\n\r\n                }\r\n            );\r\n\r\n\r\n        fillMatrix(\r\n            augmented\r\n        );\r\n\r\n    }\r\n\r\n\r\n    \/* =====================================================\r\n       MathJax\r\n    ===================================================== *\/\r\n\r\n    function renderMathJax(element) {\r\n\r\n        if (!element) {\r\n\r\n            return;\r\n\r\n        }\r\n\r\n\r\n        if (\r\n            window.MathJax\r\n            &&\r\n            typeof window.MathJax.typesetPromise ===\r\n                'function'\r\n        ) {\r\n\r\n            window.MathJax\r\n                .typesetPromise(\r\n                    [element]\r\n                )\r\n                .catch(\r\n                    function () {}\r\n                );\r\n\r\n\r\n            return;\r\n\r\n        }\r\n\r\n\r\n        if (\r\n            window.MathJax\r\n            &&\r\n            window.MathJax.Hub\r\n            &&\r\n            window.MathJax.Hub.Queue\r\n        ) {\r\n\r\n            window.MathJax.Hub.Queue(\r\n                [\r\n                    'Typeset',\r\n                    window.MathJax.Hub,\r\n                    element\r\n                ]\r\n            );\r\n\r\n        }\r\n\r\n    }\r\n\r\n\r\n    \/* =====================================================\r\n       Number \u2192 LaTeX\r\n    ===================================================== *\/\r\n\r\n    function numberToLatex(value) {\r\n\r\n        const number =\r\n            Number(value);\r\n\r\n\r\n        if (\r\n            !Number.isFinite(number)\r\n        ) {\r\n\r\n            return '0';\r\n\r\n        }\r\n\r\n\r\n        if (\r\n            number === 0\r\n        ) {\r\n\r\n            return '0';\r\n\r\n        }\r\n\r\n\r\n        const rounded =\r\n            Math.round(\r\n                number\r\n                *\r\n                100000000\r\n            )\r\n            \/\r\n            100000000;\r\n\r\n\r\n        return String(\r\n            rounded\r\n        );\r\n\r\n    }\r\n\r\n\r\n    function vectorToLatex(values) {\r\n\r\n        return (\r\n            '\\\\begin{bmatrix}'\r\n            +\r\n            values\r\n                .map(\r\n                    numberToLatex\r\n                )\r\n                .join(\r\n                    ' \\\\\\\\ '\r\n                )\r\n            +\r\n            '\\\\end{bmatrix}'\r\n        );\r\n\r\n    }\r\n\r\n\r\n    \/* =====================================================\r\n       Step title\r\n    ===================================================== *\/\r\n\r\n    function parseStepTitle(\r\n        html,\r\n        index\r\n    ) {\r\n\r\n        const holder =\r\n            document.createElement(\r\n                'div'\r\n            );\r\n\r\n\r\n        holder.innerHTML =\r\n            String(\r\n                html || ''\r\n            );\r\n\r\n\r\n        const heading =\r\n            holder.querySelector(\r\n                'h1,h2,h3,h4,.cramer-step__title'\r\n            );\r\n\r\n\r\n        return (\r\n            heading\r\n                ?.textContent\r\n                ?.trim()\r\n            ||\r\n            (\r\n                T.step\r\n                +\r\n                ' '\r\n                +\r\n                (index + 1)\r\n            )\r\n        );\r\n\r\n    }\r\n\r\n\r\n    function isInputStep(title) {\r\n\r\n        const normalized =\r\n            String(title || '')\r\n                .toLowerCase();\r\n\r\n\r\n        return (\r\n            normalized.startsWith(\r\n                '\u0432\u0445\u0456\u0434\u043d\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u0430'\r\n            )\r\n            ||\r\n            normalized.startsWith(\r\n                'input system'\r\n            )\r\n            ||\r\n            normalized.startsWith(\r\n                '\u0438\u0441\u0445\u043e\u0434\u043d\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430'\r\n            )\r\n        );\r\n\r\n    }\r\n\r\n\r\n    \/* =====================================================\r\n       Result type\r\n    ===================================================== *\/\r\n\r\n    function getResultType(\r\n        solutions,\r\n        titles\r\n    ) {\r\n\r\n        if (\r\n            Array.isArray(solutions)\r\n            &&\r\n            solutions.length\r\n            &&\r\n            solutions.every(\r\n                function (value) {\r\n\r\n                    return (\r\n                        value !== null\r\n                        &&\r\n                        Number.isFinite(\r\n                            Number(value)\r\n                        )\r\n                    );\r\n\r\n                }\r\n            )\r\n        ) {\r\n\r\n            return 'unique';\r\n\r\n        }\r\n\r\n\r\n        const combined =\r\n            titles\r\n                .map(\r\n                    function (\r\n                        title,\r\n                        index\r\n                    ) {\r\n\r\n                        return parseStepTitle(\r\n                            title,\r\n                            index\r\n                        );\r\n\r\n                    }\r\n                )\r\n                .join(' ')\r\n                .toLowerCase();\r\n\r\n\r\n        if (\r\n            combined.includes(\r\n                '\u043d\u0435\u0441\u0443\u043c\u0456\u0441\u043d\u0430'\r\n            )\r\n            ||\r\n            combined.includes(\r\n                'no solution'\r\n            )\r\n            ||\r\n            combined.includes(\r\n                '\u043d\u0435\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u043d\u0430'\r\n            )\r\n        ) {\r\n\r\n            return 'none';\r\n\r\n        }\r\n\r\n\r\n        return 'infinite';\r\n\r\n    }\r\n\r\n\r\n    \/* =====================================================\r\n       Render result\r\n    ===================================================== *\/\r\n\r\n    function renderSolution(\r\n        container,\r\n        payload\r\n    ) {\r\n\r\n        const solutions =\r\n            Array.isArray(payload[0])\r\n                ? payload[0]\r\n                : [];\r\n\r\n\r\n        const formulas =\r\n            Array.isArray(payload[1])\r\n                ? payload[1]\r\n                : [];\r\n\r\n\r\n        const titles =\r\n            Array.isArray(payload[2])\r\n                ? payload[2]\r\n                : [];\r\n\r\n\r\n        const resultType =\r\n            getResultType(\r\n                solutions,\r\n                titles\r\n            );\r\n\r\n\r\n        const steps =\r\n            [];\r\n\r\n\r\n        const count =\r\n            Math.max(\r\n                formulas.length,\r\n                titles.length\r\n            );\r\n\r\n\r\n        for (\r\n            let index = 0;\r\n            index < count;\r\n            index++\r\n        ) {\r\n\r\n            const title =\r\n                parseStepTitle(\r\n                    titles[index],\r\n                    index\r\n                );\r\n\r\n\r\n            if (\r\n                isInputStep(title)\r\n            ) {\r\n\r\n                continue;\r\n\r\n            }\r\n\r\n\r\n            if (\r\n                !formulas[index]\r\n            ) {\r\n\r\n                continue;\r\n\r\n            }\r\n\r\n\r\n            steps.push({\r\n\r\n                title,\r\n\r\n                formula:\r\n                    formulas[index]\r\n\r\n            });\r\n\r\n        }\r\n\r\n\r\n        let html =\r\n            '';\r\n\r\n\r\n        if (\r\n            resultType ===\r\n            'unique'\r\n        ) {\r\n\r\n            const vector =\r\n                vectorToLatex(\r\n                    solutions\r\n                );\r\n\r\n\r\n            lastResultLatex =\r\n                'x='\r\n                +\r\n                vector;\r\n\r\n\r\n            html +=\r\n                '<section class=\"cramer-answer-card\">'\r\n\r\n                +\r\n                '<div class=\"cramer-answer-card__top\">'\r\n\r\n                +\r\n                '<h2 class=\"cramer-answer-card__title\">'\r\n                +\r\n                escapeHtml(\r\n                    T.answerTitle\r\n                )\r\n                +\r\n                '<\/h2>'\r\n\r\n                +\r\n                '<button type=\"button\" class=\"cramer-copy-button\" data-cramer-action=\"copy-result\">'\r\n                +\r\n                escapeHtml(\r\n                    T.copyLatex\r\n                )\r\n                +\r\n                '<\/button>'\r\n\r\n                +\r\n                '<\/div>'\r\n\r\n                +\r\n                '<div class=\"cramer-answer-card__formula\">'\r\n\r\n                +\r\n                '\\\\['\r\n                +\r\n                'x='\r\n                +\r\n                vector\r\n                +\r\n                '\\\\]'\r\n\r\n                +\r\n                '<\/div>'\r\n\r\n                +\r\n                '<\/section>';\r\n\r\n        }\r\n\r\n        else {\r\n\r\n            const message =\r\n                resultType === 'none'\r\n                    ? T.noSolutionAnswer\r\n                    : T.infiniteAnswer;\r\n\r\n\r\n            lastResultLatex =\r\n                formulas[\r\n                    formulas.length - 1\r\n                ]\r\n                ||\r\n                '';\r\n\r\n\r\n            html +=\r\n                '<section class=\"cramer-answer-card\">'\r\n\r\n                +\r\n                '<div class=\"cramer-answer-card__top\">'\r\n\r\n                +\r\n                '<h2 class=\"cramer-answer-card__title\">'\r\n                +\r\n                escapeHtml(\r\n                    T.answerTitle\r\n                )\r\n                +\r\n                '<\/h2>'\r\n\r\n                +\r\n                '<\/div>'\r\n\r\n                +\r\n                '<p>'\r\n                +\r\n                escapeHtml(message)\r\n                +\r\n                '<\/p>'\r\n\r\n                +\r\n                '<\/section>';\r\n\r\n        }\r\n\r\n\r\n        if (\r\n            steps.length\r\n        ) {\r\n\r\n            html +=\r\n\r\n                '<div class=\"cramer-solution-toolbar\">'\r\n\r\n                +\r\n                '<h2>'\r\n                +\r\n                escapeHtml(\r\n                    T.solutionTitle\r\n                )\r\n                +\r\n                '<\/h2>'\r\n\r\n                +\r\n                '<div class=\"cramer-solution-toolbar__actions\">'\r\n\r\n                +\r\n                '<button type=\"button\" data-cramer-action=\"expand-all\">'\r\n                +\r\n                escapeHtml(\r\n                    T.expandAll\r\n                )\r\n                +\r\n                '<\/button>'\r\n\r\n                +\r\n                '<button type=\"button\" data-cramer-action=\"collapse-all\">'\r\n                +\r\n                escapeHtml(\r\n                    T.collapseAll\r\n                )\r\n                +\r\n                '<\/button>'\r\n\r\n                +\r\n                '<\/div>'\r\n\r\n                +\r\n                '<\/div>'\r\n\r\n                +\r\n                '<div class=\"cramer-steps\">';\r\n\r\n\r\n            steps.forEach(\r\n                function (\r\n                    step,\r\n                    index\r\n                ) {\r\n\r\n                    html +=\r\n\r\n                        '<details class=\"cramer-step\" open>'\r\n\r\n                        +\r\n                        '<summary class=\"cramer-step__summary\">'\r\n\r\n                        +\r\n                        '<span class=\"cramer-step__number\">'\r\n                        +\r\n                        (index + 1)\r\n                        +\r\n                        '.'\r\n                        +\r\n                        '<\/span>'\r\n\r\n                        +\r\n                        '<span class=\"cramer-step__title\">'\r\n                        +\r\n                        escapeHtml(\r\n                            step.title\r\n                        )\r\n                        +\r\n                        '<\/span>'\r\n\r\n                        +\r\n                        '<span class=\"cramer-step__chevron\" aria-hidden=\"true\"><\/span>'\r\n\r\n                        +\r\n                        '<\/summary>'\r\n\r\n                        +\r\n                        '<div class=\"cramer-step__content\">'\r\n\r\n                        +\r\n                        '<div class=\"cramer-step__formula\">'\r\n                        +\r\n                        step.formula\r\n                        +\r\n                        '<\/div>'\r\n\r\n                        +\r\n                        '<\/div>'\r\n\r\n                        +\r\n                        '<\/details>';\r\n\r\n                }\r\n            );\r\n\r\n\r\n            html +=\r\n                '<\/div>';\r\n\r\n        }\r\n\r\n\r\n        container.innerHTML =\r\n            html;\r\n\r\n\r\n        container.hidden =\r\n            false;\r\n\r\n\r\n        renderMathJax(\r\n            container\r\n        );\r\n\r\n    }\r\n\r\n\r\n    \/* =====================================================\r\n       Result copy\r\n    ===================================================== *\/\r\n\r\n    function copyResult(button) {\r\n\r\n        if (\r\n            !lastResultLatex\r\n        ) {\r\n\r\n            return;\r\n\r\n        }\r\n\r\n\r\n        navigator.clipboard\r\n            ?.writeText(\r\n                lastResultLatex\r\n            )\r\n            .then(\r\n                function () {\r\n\r\n                    const previous =\r\n                        button.textContent;\r\n\r\n\r\n                    button.textContent =\r\n                        T.copied;\r\n\r\n\r\n                    setTimeout(\r\n                        function () {\r\n\r\n                            button.textContent =\r\n                                previous;\r\n\r\n                        },\r\n                        1500\r\n                    );\r\n\r\n                }\r\n            );\r\n\r\n    }\r\n\r\n\r\n    \/* =====================================================\r\n       Clear result\r\n    ===================================================== *\/\r\n\r\n    function clearResult() {\r\n\r\n        const container =\r\n            byId(\r\n                'cramer-solution-container'\r\n            );\r\n\r\n\r\n        if (!container) {\r\n\r\n            return;\r\n\r\n        }\r\n\r\n\r\n        container.innerHTML =\r\n            '';\r\n\r\n\r\n        container.hidden =\r\n            true;\r\n\r\n\r\n        lastResultLatex =\r\n            '';\r\n\r\n    }\r\n\r\n\r\n    \/* =====================================================\r\n       AJAX\r\n    ===================================================== *\/\r\n\r\n    function calculateCramer() {\r\n\r\n        clearError();\r\n\r\n\r\n        const result =\r\n            collectMatrix();\r\n\r\n\r\n        if (\r\n            result.invalidCount > 0\r\n        ) {\r\n\r\n            showError(\r\n                T.errorInvalidFields\r\n            );\r\n\r\n\r\n            return;\r\n\r\n        }\r\n\r\n\r\n        if (\r\n            activeController\r\n        ) {\r\n\r\n            activeController.abort();\r\n\r\n        }\r\n\r\n\r\n        activeController =\r\n            typeof AbortController !==\r\n            'undefined'\r\n                ? new AbortController()\r\n                : null;\r\n\r\n\r\n        clearResult();\r\n\r\n        setLoading(true);\r\n\r\n\r\n        const formData =\r\n            new FormData();\r\n\r\n\r\n        formData.append(\r\n            'action',\r\n            AJAX_ACTION\r\n        );\r\n\r\n\r\n        formData.append(\r\n            'matrix',\r\n            JSON.stringify(\r\n                result.matrix\r\n            )\r\n        );\r\n\r\n\r\n        formData.append(\r\n            'lang',\r\n            LANG\r\n        );\r\n\r\n\r\n        const options = {\r\n\r\n            method:\r\n                'POST',\r\n\r\n            body:\r\n                formData\r\n\r\n        };\r\n\r\n\r\n        if (\r\n            activeController\r\n        ) {\r\n\r\n            options.signal =\r\n                activeController.signal;\r\n\r\n        }\r\n\r\n\r\n        fetch(\r\n            AJAX_URL,\r\n            options\r\n        )\r\n        .then(\r\n            function (response) {\r\n\r\n                if (\r\n                    !response.ok\r\n                ) {\r\n\r\n                    throw new Error(\r\n                        T.errorServerResponse\r\n                    );\r\n\r\n                }\r\n\r\n\r\n                return response.json();\r\n\r\n            }\r\n        )\r\n        .then(\r\n            function (data) {\r\n\r\n                setLoading(false);\r\n\r\n\r\n                if (\r\n                    !data\r\n                    ||\r\n                    data.success !== true\r\n                ) {\r\n\r\n                    showError(\r\n                        data?.error\r\n                        ||\r\n                        T.errorCalculate\r\n                    );\r\n\r\n\r\n                    return;\r\n\r\n                }\r\n\r\n\r\n                if (\r\n                    !Array.isArray(\r\n                        data.solution\r\n                    )\r\n                ) {\r\n\r\n                    showError(\r\n                        T.errorNoPayload\r\n                    );\r\n\r\n\r\n                    return;\r\n\r\n                }\r\n\r\n\r\n                const container =\r\n                    byId(\r\n                        'cramer-solution-container'\r\n                    );\r\n\r\n\r\n                renderSolution(\r\n                    container,\r\n                    data.solution\r\n                );\r\n\r\n\r\n                setTimeout(\r\n                    function () {\r\n\r\n                        container\r\n                            ?.scrollIntoView(\r\n                                {\r\n\r\n                                    behavior:\r\n                                        'smooth',\r\n\r\n                                    block:\r\n                                        'start'\r\n\r\n                                }\r\n                            );\r\n\r\n                    },\r\n                    80\r\n                );\r\n\r\n            }\r\n        )\r\n        .catch(\r\n            function (error) {\r\n\r\n                if (\r\n                    error?.name ===\r\n                    'AbortError'\r\n                ) {\r\n\r\n                    return;\r\n\r\n                }\r\n\r\n\r\n                setLoading(false);\r\n\r\n\r\n                showError(\r\n                    error?.message\r\n                    ||\r\n                    T.errorNetwork\r\n                );\r\n\r\n            }\r\n        );\r\n\r\n    }\r\n\r\n\r\n    \/* =====================================================\r\n       Solution controls\r\n    ===================================================== *\/\r\n\r\n    function handleSolutionClick(event) {\r\n\r\n        const button =\r\n            event.target.closest(\r\n                '[data-cramer-action]'\r\n            );\r\n\r\n\r\n        if (!button) {\r\n\r\n            return;\r\n\r\n        }\r\n\r\n\r\n        const action =\r\n            button.getAttribute(\r\n                'data-cramer-action'\r\n            );\r\n\r\n\r\n        const container =\r\n            byId(\r\n                'cramer-solution-container'\r\n            );\r\n\r\n\r\n        if (\r\n            action ===\r\n            'expand-all'\r\n        ) {\r\n\r\n            container\r\n                ?.querySelectorAll(\r\n                    '.cramer-step'\r\n                )\r\n                .forEach(\r\n                    function (step) {\r\n\r\n                        step.open =\r\n                            true;\r\n\r\n                    }\r\n                );\r\n\r\n        }\r\n\r\n\r\n        if (\r\n            action ===\r\n            'collapse-all'\r\n        ) {\r\n\r\n            container\r\n                ?.querySelectorAll(\r\n                    '.cramer-step'\r\n                )\r\n                .forEach(\r\n                    function (step) {\r\n\r\n                        step.open =\r\n                            false;\r\n\r\n                    }\r\n                );\r\n\r\n        }\r\n\r\n\r\n        if (\r\n            action ===\r\n            'copy-result'\r\n        ) {\r\n\r\n            copyResult(\r\n                button\r\n            );\r\n\r\n        }\r\n\r\n    }\r\n\r\n\r\n    \/* =====================================================\r\n       Events\r\n    ===================================================== *\/\r\n\r\n    function bindEvents() {\r\n\r\n        byId(\r\n            'cramerSystemSize'\r\n        )\r\n        ?.addEventListener(\r\n            'change',\r\n            changeSystemSize\r\n        );\r\n\r\n\r\n        byId(\r\n            'cramer-copy-system-button'\r\n        )\r\n        ?.addEventListener(\r\n            'click',\r\n            copySystem\r\n        );\r\n\r\n\r\n        byId(\r\n            'cramer-paste-system-button'\r\n        )\r\n        ?.addEventListener(\r\n            'click',\r\n            pasteSystem\r\n        );\r\n\r\n\r\n        byId(\r\n            'cramer-random-button'\r\n        )\r\n        ?.addEventListener(\r\n            'click',\r\n            generateRandomExample\r\n        );\r\n\r\n\r\n        byId(\r\n            'cramer-clear-button'\r\n        )\r\n        ?.addEventListener(\r\n            'click',\r\n            clearMatrix\r\n        );\r\n\r\n\r\n        byId(\r\n            'cramer-generate-button'\r\n        )\r\n        ?.addEventListener(\r\n            'click',\r\n            calculateCramer\r\n        );\r\n\r\n\r\n        byId(\r\n            'cramerMatrixTable'\r\n        )\r\n        ?.addEventListener(\r\n            'keydown',\r\n            function (event) {\r\n\r\n                if (\r\n                    (\r\n                        event.ctrlKey\r\n                        ||\r\n                        event.metaKey\r\n                    )\r\n                    &&\r\n                    event.key ===\r\n                    'Enter'\r\n                ) {\r\n\r\n                    event.preventDefault();\r\n\r\n\r\n                    calculateCramer();\r\n\r\n                }\r\n\r\n            }\r\n        );\r\n\r\n\r\n        byId(\r\n            'cramer-solution-container'\r\n        )\r\n        ?.addEventListener(\r\n            'click',\r\n            handleSolutionClick\r\n        );\r\n\r\n    }\r\n\r\n\r\n    \/* =====================================================\r\n       Init\r\n    ===================================================== *\/\r\n\r\n    function init() {\r\n\r\n        applyTranslations();\r\n\r\n        changeSystemSize();\r\n\r\n        bindEvents();\r\n\r\n        renderMathJax(APP);\r\n\r\n    }\r\n\r\n\r\n    if (\r\n        document.readyState ===\r\n        'loading'\r\n    ) {\r\n\r\n        document.addEventListener(\r\n            'DOMContentLoaded',\r\n            init\r\n        );\r\n\r\n    }\r\n\r\n    else {\r\n\r\n        init();\r\n\r\n    }\r\n\r\n})();\r\n\r\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-90e3474 elementor-widget elementor-widget-html\" data-id=\"90e3474\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<section\r\n  id=\"determinant-info-block\"\r\n  class=\"determinant-info-block\"\r\n  data-lang=\"auto\"\r\n>\r\n\r\n  <h2\r\n    id=\"determinant-info-title\"\r\n    class=\"determinant-info-title\"\r\n  >\r\n    \u041c\u0435\u0442\u043e\u0434 \u041a\u0440\u0430\u043c\u0435\u0440\u0430 \u043e\u043d\u043b\u0430\u0439\u043d: \u044f\u043a \u0446\u0435 \u043f\u0440\u0430\u0446\u044e\u0454?\r\n  <\/h2>\r\n\r\n\r\n  <img loading=\"lazy\"\r\n    id=\"determinant-info-image\"\r\n    class=\"determinant-info-image aligncenter wp-image-10020256 size-full\"\r\n    src=\"https:\/\/www.mathros.net.ua\/ru\/wp-content\/uploads\/2026\/09\/cramers-rule-calculator2.jpg\"\r\n    alt=\"\u041c\u0435\u0442\u043e\u0434 \u041a\u0440\u0430\u043c\u0435\u0440\u0430 \u043e\u043d\u043b\u0430\u0439\u043d\"\r\n    width=\"150\"\r\n    height=\"150\"\r\n    loading=\"lazy\"\r\n    decoding=\"async\"\r\n  >\r\n\r\n\r\n  <p\r\n    id=\"determinant-info-text-1\"\r\n    class=\"determinant-info-text\"\r\n  >\r\n    \u041b\u0430\u0441\u043a\u0430\u0432\u043e \u043f\u0440\u043e\u0441\u0438\u043c\u043e \u043d\u0430 \u0441\u0442\u043e\u0440\u0456\u043d\u043a\u0443 \u00ab\u041c\u0435\u0442\u043e\u0434 \u041a\u0440\u0430\u043c\u0435\u0440\u0430 \u043e\u043d\u043b\u0430\u0439\u043d\u00bb! \u0422\u0443\u0442 \u0432\u0438 \u043c\u043e\u0436\u0435\u0442\u0435 \u0448\u0432\u0438\u0434\u043a\u043e \u0442\u0430 \u0437\u0440\u0443\u0447\u043d\u043e \u0440\u043e\u0437\u0432\u2019\u044f\u0437\u0443\u0432\u0430\u0442\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u0438 \u043b\u0456\u043d\u0456\u0439\u043d\u0438\u0445 \u0430\u043b\u0433\u0435\u0431\u0440\u0430\u0457\u0447\u043d\u0438\u0445 \u0440\u0456\u0432\u043d\u044f\u043d\u044c. \u041d\u0430\u0448 \u0456\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u0438\u0439 \u043a\u0430\u043b\u044c\u043a\u0443\u043b\u044f\u0442\u043e\u0440, \u043f\u043e\u0431\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0439 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0456 <a title=\"\u041c\u0435\u0442\u043e\u0434 \u041a\u0440\u0430\u043c\u0435\u0440\u0430 \u0434\u043b\u044f \u0441\u0438\u0441\u0442\u0435\u043c \u043b\u0456\u043d\u0456\u0439\u043d\u0438\u0445 \u0440\u0456\u0432\u043d\u044f\u043d\u044c\" href=\"https:\/\/www.mathros.net.ua\/rozvjazok-systemy-linijnyh-algebraichnyh-rivnjan-metodom-kramera.html\">\u043c\u0435\u0442\u043e\u0434\u0443 \u041a\u0440\u0430\u043c\u0435\u0440\u0430<\/a>, \u0434\u0430\u0454 \u0437\u043c\u043e\u0433\u0443 \u043e\u0442\u0440\u0438\u043c\u0430\u0442\u0438 \u0442\u043e\u0447\u043d\u0438\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0434\u043b\u044f \u0437\u0430\u0434\u0430\u043d\u043e\u0457 \u0441\u0438\u0441\u0442\u0435\u043c\u0438.\r\n  <\/p>\r\n\r\n\r\n  <p\r\n    id=\"determinant-info-text-2\"\r\n    class=\"determinant-info-text\"\r\n  >\r\n    \u041f\u0440\u043e\u0441\u0442\u043e \u0432\u0432\u0435\u0434\u0456\u0442\u044c \u043a\u043e\u0435\u0444\u0456\u0446\u0456\u0454\u043d\u0442\u0438 \u0443 \u0432\u0456\u0434\u043f\u043e\u0432\u0456\u0434\u043d\u0456 \u043f\u043e\u043b\u044f <a title=\"\u0429\u043e \u0442\u0430\u043a\u0435 \u0440\u043e\u0437\u0448\u0438\u0440\u0435\u043d\u0430 \u043c\u0430\u0442\u0440\u0438\u0446\u044f\" href=\"https:\/\/uk.wikipedia.org\/wiki\/%D0%A0%D0%BE%D0%B7%D1%88%D0%B8%D1%80%D0%B5%D0%BD%D0%B0_%D0%BC%D0%B0%D1%82%D1%80%D0%B8%D1%86%D1%8F\" target=\"_blank\" rel=\"nofollow noopener\">\u0440\u043e\u0437\u0448\u0438\u0440\u0435\u043d\u043e\u0457 \u043c\u0430\u0442\u0440\u0438\u0446\u0456<\/a>, \u043d\u0430\u0442\u0438\u0441\u043d\u0456\u0442\u044c \u00ab\u0420\u043e\u0437\u0432\u2019\u044f\u0437\u0430\u0442\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u0443\u00bb \u0442\u0430 \u043e\u0442\u0440\u0438\u043c\u0430\u0439\u0442\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0437\u0430 \u043a\u0456\u043b\u044c\u043a\u0430 \u0441\u0435\u043a\u0443\u043d\u0434. \u0417\u0440\u0443\u0447\u043d\u0438\u0439 \u0456\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441, \u043d\u0430\u0434\u0456\u0439\u043d\u0456 \u043e\u0431\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044f \u0442\u0430 \u0434\u0435\u0442\u0430\u043b\u044c\u043d\u0435 \u043f\u043e\u044f\u0441\u043d\u0435\u043d\u043d\u044f \u043a\u043e\u0436\u043d\u043e\u0433\u043e \u043a\u0440\u043e\u043a\u0443 \u0434\u043e\u043f\u043e\u043c\u043e\u0436\u0443\u0442\u044c \u043b\u0435\u0433\u043a\u043e \u043f\u0440\u043e\u0441\u0442\u0435\u0436\u0438\u0442\u0438 \u0432\u0435\u0441\u044c \u043f\u0440\u043e\u0446\u0435\u0441 \u0440\u043e\u0437\u0432\u2019\u044f\u0437\u0430\u043d\u043d\u044f.\r\n  <\/p>\r\n\r\n\r\n  <p\r\n    id=\"determinant-info-text-3\"\r\n    class=\"determinant-info-text\"\r\n  >\r\n    \u0412\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u043e\u0432\u0443\u0439\u0442\u0435 \u043e\u043d\u043b\u0430\u0439\u043d-\u043a\u0430\u043b\u044c\u043a\u0443\u043b\u044f\u0442\u043e\u0440 \u043c\u0435\u0442\u043e\u0434\u0443 \u041a\u0440\u0430\u043c\u0435\u0440\u0430 \u0434\u043b\u044f \u0435\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u0440\u043e\u0437\u0432\u2019\u044f\u0437\u0443\u0432\u0430\u043d\u043d\u044f \u0437\u0430\u0434\u0430\u0447 \u0437 \u0430\u043b\u0433\u0435\u0431\u0440\u0438. \u041d\u0435 \u0432\u0438\u0442\u0440\u0430\u0447\u0430\u0439\u0442\u0435 \u0447\u0430\u0441 \u043d\u0430 \u0441\u043a\u043b\u0430\u0434\u043d\u0456 \u043e\u0431\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044f \u0432\u0440\u0443\u0447\u043d\u0443 \u2014 \u043a\u0430\u043b\u044c\u043a\u0443\u043b\u044f\u0442\u043e\u0440 \u0432\u0438\u043a\u043e\u043d\u0430\u0454 \u0457\u0445 \u0437\u0430 \u0432\u0430\u0441 \u0456 \u0434\u043e\u043f\u043e\u043c\u043e\u0436\u0435 \u0448\u0432\u0438\u0434\u043a\u043e \u043e\u0442\u0440\u0438\u043c\u0430\u0442\u0438 \u043d\u0430\u0434\u0456\u0439\u043d\u0438\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442.\r\n  <\/p>\r\n\r\n<\/section>\r\n\r\n\r\n<style>\r\n\r\n\/* =========================================================\r\n   \u041e\u0441\u043d\u043e\u0432\u043d\u0438\u0439 \u0431\u043b\u043e\u043a\r\n========================================================= *\/\r\n\r\n.determinant-info-block {\r\n\r\n  width:\r\n    100%;\r\n\r\n  max-width:\r\n    100%;\r\n\r\n  margin:\r\n    0;\r\n\r\n  padding:\r\n    0;\r\n\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   \u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a\r\n========================================================= *\/\r\n\r\n.determinant-info-title {\r\n\r\n  width:\r\n    min(\r\n      860px,\r\n      calc(100% - 32px)\r\n    );\r\n\r\n  max-width:\r\n    860px;\r\n\r\n  margin:\r\n    22px auto 12px;\r\n\r\n  padding:\r\n    0;\r\n\r\n  font-family:\r\n    system-ui,\r\n    -apple-system,\r\n    \"Segoe UI\",\r\n    Roboto,\r\n    \"Helvetica Neue\",\r\n    Arial,\r\n    \"Noto Sans\",\r\n    \"Liberation Sans\",\r\n    sans-serif;\r\n\r\n  font-weight:\r\n    650;\r\n\r\n  font-size:\r\n    clamp(\r\n      1.2rem,\r\n      1.05rem + .8vw,\r\n      1.55rem\r\n    );\r\n\r\n  line-height:\r\n    1.35;\r\n\r\n  letter-spacing:\r\n    .002em;\r\n\r\n  color:\r\n    #334155;\r\n\r\n  text-align:\r\n    center;\r\n\r\n  text-wrap:\r\n    balance;\r\n\r\n  -webkit-hyphens:\r\n    none;\r\n\r\n  -ms-hyphens:\r\n    none;\r\n\r\n  hyphens:\r\n    none;\r\n\r\n  word-break:\r\n    normal;\r\n\r\n  overflow-wrap:\r\n    normal;\r\n\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   \u0410\u0431\u0437\u0430\u0446\u0438\r\n========================================================= *\/\r\n\r\n.determinant-info-text {\r\n\r\n  width:\r\n    min(\r\n      800px,\r\n      calc(100% - 32px)\r\n    );\r\n\r\n  max-width:\r\n    800px;\r\n\r\n  margin:\r\n    10px auto;\r\n\r\n  padding:\r\n    0;\r\n\r\n  font-family:\r\n    system-ui,\r\n    -apple-system,\r\n    \"Segoe UI\",\r\n    Roboto,\r\n    \"Helvetica Neue\",\r\n    Arial,\r\n    \"Noto Sans\",\r\n    \"Liberation Sans\",\r\n    sans-serif;\r\n\r\n  font-weight:\r\n    400;\r\n\r\n  font-size:\r\n    clamp(\r\n      .95rem,\r\n      .92rem + .2vw,\r\n      1rem\r\n    );\r\n\r\n  line-height:\r\n    1.7;\r\n\r\n  color:\r\n    #475569;\r\n\r\n  text-align:\r\n    left;\r\n\r\n  text-wrap:\r\n    pretty;\r\n\r\n  -webkit-hyphens:\r\n    none;\r\n\r\n  -ms-hyphens:\r\n    none;\r\n\r\n  hyphens:\r\n    none;\r\n\r\n  word-break:\r\n    normal;\r\n\r\n  overflow-wrap:\r\n    normal;\r\n\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   \u041f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f\r\n========================================================= *\/\r\n\r\n.determinant-info-text a {\r\n\r\n  color:\r\n    #0B638B;\r\n\r\n  text-decoration:\r\n    underline;\r\n\r\n  text-underline-offset:\r\n    3px;\r\n\r\n  text-decoration-thickness:\r\n    1px;\r\n\r\n  -webkit-hyphens:\r\n    none;\r\n\r\n  -ms-hyphens:\r\n    none;\r\n\r\n  hyphens:\r\n    none;\r\n\r\n  word-break:\r\n    normal;\r\n\r\n  overflow-wrap:\r\n    normal;\r\n\r\n}\r\n\r\n\r\n.determinant-info-text a:hover,\r\n.determinant-info-text a:focus-visible {\r\n\r\n  color:\r\n    #095676;\r\n\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   \u0417\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f\r\n========================================================= *\/\r\n\r\n.determinant-info-image {\r\n\r\n  display:\r\n    block;\r\n\r\n  width:\r\n    150px;\r\n\r\n  max-width:\r\n    100%;\r\n\r\n  height:\r\n    auto;\r\n\r\n  margin:\r\n    16px auto;\r\n\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   \u0422\u0435\u043c\u043d\u0430 \u0442\u0435\u043c\u0430\r\n========================================================= *\/\r\n\r\n@media (prefers-color-scheme: dark) {\r\n\r\n  .determinant-info-title {\r\n\r\n    color:\r\n      #cbd5e1;\r\n\r\n  }\r\n\r\n\r\n  .determinant-info-text {\r\n\r\n    color:\r\n      #9cb0c0;\r\n\r\n  }\r\n\r\n\r\n  .determinant-info-text a {\r\n\r\n    color:\r\n      #58b6e4;\r\n\r\n  }\r\n\r\n\r\n  .determinant-info-text a:hover,\r\n  .determinant-info-text a:focus-visible {\r\n\r\n    color:\r\n      #45a7d9;\r\n\r\n  }\r\n\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   \u041f\u043b\u0430\u043d\u0448\u0435\u0442\u0438\r\n========================================================= *\/\r\n\r\n@media (max-width: 768px) {\r\n\r\n  .determinant-info-title {\r\n\r\n    margin:\r\n      18px auto 10px;\r\n\r\n  }\r\n\r\n\r\n  .determinant-info-text {\r\n\r\n    margin:\r\n      8px auto;\r\n\r\n  }\r\n\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   \u0422\u0435\u043b\u0435\u0444\u043e\u043d\u0438\r\n========================================================= *\/\r\n\r\n@media (max-width: 480px) {\r\n\r\n  .determinant-info-title {\r\n\r\n    width:\r\n      calc(100% - 24px);\r\n\r\n    font-size:\r\n      1.15rem;\r\n\r\n    line-height:\r\n      1.4;\r\n\r\n  }\r\n\r\n\r\n  .determinant-info-text {\r\n\r\n    width:\r\n      calc(100% - 24px);\r\n\r\n    font-size:\r\n      .95rem;\r\n\r\n    line-height:\r\n      1.65;\r\n\r\n  }\r\n\r\n\r\n  .determinant-info-image {\r\n\r\n    width:\r\n      140px;\r\n\r\n  }\r\n\r\n}\r\n\r\n<\/style>\r\n\r\n\r\n<script>\r\n(function () {\r\n\r\n  'use strict';\r\n\r\n\r\n  \/* =======================================================\r\n     \u041f\u0435\u0440\u0435\u043a\u043b\u0430\u0434\u0438\r\n  ======================================================= *\/\r\n\r\n  const translations = {\r\n\r\n    \/* =====================================================\r\n       \u0423\u043a\u0440\u0430\u0457\u043d\u0441\u044c\u043a\u0430\r\n    ===================================================== *\/\r\n\r\n    uk: {\r\n\r\n      title:\r\n        '\u041c\u0435\u0442\u043e\u0434 \u041a\u0440\u0430\u043c\u0435\u0440\u0430 \u043e\u043d\u043b\u0430\u0439\u043d: \u044f\u043a \u0446\u0435 \u043f\u0440\u0430\u0446\u044e\u0454?',\r\n\r\n      imageAlt:\r\n        '\u041c\u0435\u0442\u043e\u0434 \u041a\u0440\u0430\u043c\u0435\u0440\u0430 \u043e\u043d\u043b\u0430\u0439\u043d',\r\n\r\n      text1:\r\n        '\u041b\u0430\u0441\u043a\u0430\u0432\u043e \u043f\u0440\u043e\u0441\u0438\u043c\u043e \u043d\u0430 \u0441\u0442\u043e\u0440\u0456\u043d\u043a\u0443 \u00ab\u041c\u0435\u0442\u043e\u0434 \u041a\u0440\u0430\u043c\u0435\u0440\u0430 \u043e\u043d\u043b\u0430\u0439\u043d\u00bb! \u0422\u0443\u0442 \u0432\u0438 \u043c\u043e\u0436\u0435\u0442\u0435 \u0448\u0432\u0438\u0434\u043a\u043e \u0442\u0430 \u0437\u0440\u0443\u0447\u043d\u043e \u0440\u043e\u0437\u0432\u2019\u044f\u0437\u0443\u0432\u0430\u0442\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u0438 \u043b\u0456\u043d\u0456\u0439\u043d\u0438\u0445 \u0430\u043b\u0433\u0435\u0431\u0440\u0430\u0457\u0447\u043d\u0438\u0445 \u0440\u0456\u0432\u043d\u044f\u043d\u044c. \u041d\u0430\u0448 \u0456\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u0438\u0439 \u043a\u0430\u043b\u044c\u043a\u0443\u043b\u044f\u0442\u043e\u0440, \u043f\u043e\u0431\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0439 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0456 <a title=\"\u041c\u0435\u0442\u043e\u0434 \u041a\u0440\u0430\u043c\u0435\u0440\u0430 \u0434\u043b\u044f \u0441\u0438\u0441\u0442\u0435\u043c \u043b\u0456\u043d\u0456\u0439\u043d\u0438\u0445 \u0440\u0456\u0432\u043d\u044f\u043d\u044c\" href=\"https:\/\/www.mathros.net.ua\/rozvjazok-systemy-linijnyh-algebraichnyh-rivnjan-metodom-kramera.html\">\u043c\u0435\u0442\u043e\u0434\u0443 \u041a\u0440\u0430\u043c\u0435\u0440\u0430<\/a>, \u0434\u0430\u0454 \u0437\u043c\u043e\u0433\u0443 \u043e\u0442\u0440\u0438\u043c\u0430\u0442\u0438 \u0442\u043e\u0447\u043d\u0438\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0434\u043b\u044f \u0437\u0430\u0434\u0430\u043d\u043e\u0457 \u0441\u0438\u0441\u0442\u0435\u043c\u0438.',\r\n\r\n      text2:\r\n        '\u041f\u0440\u043e\u0441\u0442\u043e \u0432\u0432\u0435\u0434\u0456\u0442\u044c \u043a\u043e\u0435\u0444\u0456\u0446\u0456\u0454\u043d\u0442\u0438 \u0443 \u0432\u0456\u0434\u043f\u043e\u0432\u0456\u0434\u043d\u0456 \u043f\u043e\u043b\u044f <a title=\"\u0429\u043e \u0442\u0430\u043a\u0435 \u0440\u043e\u0437\u0448\u0438\u0440\u0435\u043d\u0430 \u043c\u0430\u0442\u0440\u0438\u0446\u044f\" href=\"https:\/\/uk.wikipedia.org\/wiki\/%D0%A0%D0%BE%D0%B7%D1%88%D0%B8%D1%80%D0%B5%D0%BD%D0%B0_%D0%BC%D0%B0%D1%82%D1%80%D0%B8%D1%86%D1%8F\" target=\"_blank\" rel=\"nofollow noopener\">\u0440\u043e\u0437\u0448\u0438\u0440\u0435\u043d\u043e\u0457 \u043c\u0430\u0442\u0440\u0438\u0446\u0456<\/a>, \u043d\u0430\u0442\u0438\u0441\u043d\u0456\u0442\u044c \u00ab\u0420\u043e\u0437\u0432\u2019\u044f\u0437\u0430\u0442\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u0443\u00bb \u0442\u0430 \u043e\u0442\u0440\u0438\u043c\u0430\u0439\u0442\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0437\u0430 \u043a\u0456\u043b\u044c\u043a\u0430 \u0441\u0435\u043a\u0443\u043d\u0434. \u0417\u0440\u0443\u0447\u043d\u0438\u0439 \u0456\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441, \u043d\u0430\u0434\u0456\u0439\u043d\u0456 \u043e\u0431\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044f \u0442\u0430 \u0434\u0435\u0442\u0430\u043b\u044c\u043d\u0435 \u043f\u043e\u044f\u0441\u043d\u0435\u043d\u043d\u044f \u043a\u043e\u0436\u043d\u043e\u0433\u043e \u043a\u0440\u043e\u043a\u0443 \u0434\u043e\u043f\u043e\u043c\u043e\u0436\u0443\u0442\u044c \u043b\u0435\u0433\u043a\u043e \u043f\u0440\u043e\u0441\u0442\u0435\u0436\u0438\u0442\u0438 \u0432\u0435\u0441\u044c \u043f\u0440\u043e\u0446\u0435\u0441 \u0440\u043e\u0437\u0432\u2019\u044f\u0437\u0430\u043d\u043d\u044f.',\r\n\r\n      text3:\r\n        '\u0412\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u043e\u0432\u0443\u0439\u0442\u0435 \u043e\u043d\u043b\u0430\u0439\u043d-\u043a\u0430\u043b\u044c\u043a\u0443\u043b\u044f\u0442\u043e\u0440 \u043c\u0435\u0442\u043e\u0434\u0443 \u041a\u0440\u0430\u043c\u0435\u0440\u0430 \u0434\u043b\u044f \u0435\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u0440\u043e\u0437\u0432\u2019\u044f\u0437\u0443\u0432\u0430\u043d\u043d\u044f \u0437\u0430\u0434\u0430\u0447 \u0437 \u0430\u043b\u0433\u0435\u0431\u0440\u0438. \u041d\u0435 \u0432\u0438\u0442\u0440\u0430\u0447\u0430\u0439\u0442\u0435 \u0447\u0430\u0441 \u043d\u0430 \u0441\u043a\u043b\u0430\u0434\u043d\u0456 \u043e\u0431\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044f \u0432\u0440\u0443\u0447\u043d\u0443 \u2014 \u043a\u0430\u043b\u044c\u043a\u0443\u043b\u044f\u0442\u043e\u0440 \u0432\u0438\u043a\u043e\u043d\u0430\u0454 \u0457\u0445 \u0437\u0430 \u0432\u0430\u0441 \u0456 \u0434\u043e\u043f\u043e\u043c\u043e\u0436\u0435 \u0448\u0432\u0438\u0434\u043a\u043e \u043e\u0442\u0440\u0438\u043c\u0430\u0442\u0438 \u043d\u0430\u0434\u0456\u0439\u043d\u0438\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442.'\r\n\r\n    },\r\n\r\n\r\n    \/* =====================================================\r\n       English\r\n    ===================================================== *\/\r\n\r\n    en: {\r\n\r\n      title:\r\n        'How to Use the Cramer\u2019s Rule Calculator: Fast and Simple Solutions',\r\n\r\n      imageAlt:\r\n        'Cramer\u2019s rule calculator',\r\n\r\n      text1:\r\n        'Looking for an easy way to solve systems of linear equations? Our <a title=\"How to use Cramer\u2019s rule\" href=\"https:\/\/www.mathros.net.ua\/en\/cramers-rule.html\">Cramer\u2019s rule calculator<\/a> can help you get accurate results in seconds. This tool makes solving systems of linear equations fast, convenient, and straightforward.',\r\n\r\n      text2:\r\n        'Enter the coefficients and constants in the corresponding <a title=\"Augmented matrix\" href=\"https:\/\/en.wikipedia.org\/wiki\/Augmented_matrix\" target=\"_blank\" rel=\"nofollow noopener\">augmented matrix<\/a> fields, click the <em>\u201cSolve System\u201d<\/em> button, and get the result in seconds. The easy-to-use interface, reliable calculations, and detailed step-by-step explanations make the entire solution process clear and convenient.',\r\n\r\n      text3:\r\n        'Use our online Cramer\u2019s rule calculator to get fast and reliable results without lengthy manual calculations. Let the calculator handle the computations so you can focus on understanding the solution.'\r\n\r\n    },\r\n\r\n\r\n    \/* =====================================================\r\n       \u0420\u0443\u0441\u0441\u043a\u0438\u0439\r\n    ===================================================== *\/\r\n\r\n    ru: {\r\n\r\n      title:\r\n        '\u041a\u0430\u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043c\u0435\u0442\u043e\u0434 \u041a\u0440\u0430\u043c\u0435\u0440\u0430 \u043e\u043d\u043b\u0430\u0439\u043d: \u0431\u044b\u0441\u0442\u0440\u043e \u0438 \u043f\u0440\u043e\u0441\u0442\u043e',\r\n\r\n      imageAlt:\r\n        '\u041c\u0435\u0442\u043e\u0434 \u041a\u0440\u0430\u043c\u0435\u0440\u0430 \u043e\u043d\u043b\u0430\u0439\u043d',\r\n\r\n      text1:\r\n        '\u0418\u0449\u0435\u0442\u0435 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0440\u0435\u0448\u0438\u0442\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u043b\u0438\u043d\u0435\u0439\u043d\u044b\u0445 \u0443\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0439? \u041d\u0430\u0448 <a title=\"\u041c\u0435\u0442\u043e\u0434 \u041a\u0440\u0430\u043c\u0435\u0440\u0430 \u0434\u043b\u044f \u0441\u0438\u0441\u0442\u0435\u043c \u043b\u0438\u043d\u0435\u0439\u043d\u044b\u0445 \u0443\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0439\" href=\"https:\/\/www.mathros.net.ua\/ru\/metod-kramera.html\">\u043e\u043d\u043b\u0430\u0439\u043d-\u043a\u0430\u043b\u044c\u043a\u0443\u043b\u044f\u0442\u043e\u0440 \u043c\u0435\u0442\u043e\u0434\u0430 \u041a\u0440\u0430\u043c\u0435\u0440\u0430<\/a> \u043f\u043e\u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0441\u0442\u0440\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442. \u0417\u0430\u0447\u0435\u043c \u0442\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u0440\u0435\u043c\u044f \u043d\u0430 \u0440\u0443\u0447\u043d\u044b\u0435 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f, \u0435\u0441\u043b\u0438 \u0442\u043e\u0447\u043d\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0437\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0435\u043a\u0443\u043d\u0434? \u042d\u0442\u043e\u0442 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u0435\u043b\u0430\u0435\u0442 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0441\u0438\u0441\u0442\u0435\u043c \u043b\u0438\u043d\u0435\u0439\u043d\u044b\u0445 \u0443\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0439 \u0431\u044b\u0441\u0442\u0440\u044b\u043c, \u0443\u0434\u043e\u0431\u043d\u044b\u043c \u0438 \u043f\u043e\u043d\u044f\u0442\u043d\u044b\u043c.',\r\n\r\n      text2:\r\n        '\u041f\u0440\u043e\u0441\u0442\u043e \u0432\u0432\u0435\u0434\u0438\u0442\u0435 \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442\u044b \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0438 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u044b\u0435 \u0447\u043b\u0435\u043d\u044b \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u043f\u043e\u043b\u044f <a title=\"\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u0430\u044f \u043c\u0430\u0442\u0440\u0438\u0446\u0430\" href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%A0%D0%B0%D1%81%D1%88%D0%B8%D1%80%D0%B5%D0%BD%D0%BD%D0%B0%D1%8F_%D0%BC%D0%B0%D1%82%D1%80%D0%B8%D1%86%D0%B0\" target=\"_blank\" rel=\"nofollow noopener\">\u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u043e\u0439 \u043c\u0430\u0442\u0440\u0438\u0446\u044b<\/a>, \u043d\u0430\u0436\u043c\u0438\u0442\u0435 \u043a\u043d\u043e\u043f\u043a\u0443 <em>\u00ab\u0420\u0435\u0448\u0438\u0442\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u0443\u00bb<\/em> \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0437\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0435\u043a\u0443\u043d\u0434. \u0423\u0434\u043e\u0431\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441, \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0435 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u0438 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0435 \u043f\u043e\u0448\u0430\u0433\u043e\u0432\u043e\u0435 \u043e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u0435 \u0434\u0435\u043b\u0430\u044e\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043f\u0440\u043e\u0441\u0442\u044b\u043c \u0438 \u043f\u043e\u043d\u044f\u0442\u043d\u044b\u043c.',\r\n\r\n      text3:\r\n        '\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u043e\u043d\u043b\u0430\u0439\u043d-\u043a\u0430\u043b\u044c\u043a\u0443\u043b\u044f\u0442\u043e\u0440 \u043c\u0435\u0442\u043e\u0434\u0430 \u041a\u0440\u0430\u043c\u0435\u0440\u0430 \u0434\u043b\u044f \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u0438 \u043d\u0430\u0434\u0435\u0436\u043d\u043e\u0433\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0441\u0438\u0441\u0442\u0435\u043c \u043b\u0438\u043d\u0435\u0439\u043d\u044b\u0445 \u0443\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0439. \u041d\u0435 \u0442\u0440\u0430\u0442\u044c\u0442\u0435 \u0432\u0440\u0435\u043c\u044f \u043d\u0430 \u0441\u043b\u043e\u0436\u043d\u044b\u0435 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u2014 \u043a\u0430\u043b\u044c\u043a\u0443\u043b\u044f\u0442\u043e\u0440 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442 \u0438\u0445 \u0437\u0430 \u0432\u0430\u0441 \u0438 \u043f\u043e\u043a\u0430\u0436\u0435\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442.'\r\n\r\n    }\r\n\r\n  };\r\n\r\n\r\n  \/* =======================================================\r\n     \u041d\u043e\u0440\u043c\u0430\u043b\u0456\u0437\u0430\u0446\u0456\u044f \u043c\u043e\u0432\u0438\r\n  ======================================================= *\/\r\n\r\n  function normalizeLanguage(value) {\r\n\r\n    const language =\r\n      String(\r\n        value || ''\r\n      )\r\n        .trim()\r\n        .toLowerCase()\r\n        .replace(\r\n          '_',\r\n          '-'\r\n        );\r\n\r\n\r\n    if (\r\n      language === 'uk'\r\n      ||\r\n      language === 'ua'\r\n      ||\r\n      language.startsWith('uk-')\r\n      ||\r\n      language.startsWith('ua-')\r\n    ) {\r\n\r\n      return 'uk';\r\n\r\n    }\r\n\r\n\r\n    if (\r\n      language === 'en'\r\n      ||\r\n      language.startsWith('en-')\r\n    ) {\r\n\r\n      return 'en';\r\n\r\n    }\r\n\r\n\r\n    if (\r\n      language === 'ru'\r\n      ||\r\n      language.startsWith('ru-')\r\n    ) {\r\n\r\n      return 'ru';\r\n\r\n    }\r\n\r\n\r\n    return '';\r\n\r\n  }\r\n\r\n\r\n  \/* =======================================================\r\n     \u0412\u0438\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044f \u043c\u043e\u0432\u0438\r\n  ======================================================= *\/\r\n\r\n  function detectLanguage() {\r\n\r\n    \/*\r\n     * 1. \u042f\u0432\u043d\u043e \u0437\u0430\u0434\u0430\u043d\u0430 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u0430 \u043c\u043e\u0432\u0430 \u043a\u0430\u043b\u044c\u043a\u0443\u043b\u044f\u0442\u043e\u0440\u0430.\r\n     *\r\n     * \u041d\u0430\u043f\u0440\u0438\u043a\u043b\u0430\u0434:\r\n     *\r\n     * window.MathrosDetLang = 'en';\r\n     *\/\r\n    if (\r\n      typeof window !== 'undefined'\r\n      &&\r\n      window.MathrosDetLang\r\n    ) {\r\n\r\n      const globalLanguage =\r\n        normalizeLanguage(\r\n          window.MathrosDetLang\r\n        );\r\n\r\n\r\n      if (\r\n        globalLanguage\r\n      ) {\r\n\r\n        return globalLanguage;\r\n\r\n      }\r\n\r\n    }\r\n\r\n\r\n    \/*\r\n     * 2. data-lang \u0431\u043b\u043e\u043a\u0430.\r\n     *\/\r\n    const block =\r\n      document.getElementById(\r\n        'determinant-info-block'\r\n      );\r\n\r\n\r\n    if (\r\n      block\r\n    ) {\r\n\r\n      const dataLanguage =\r\n        block.getAttribute(\r\n          'data-lang'\r\n        );\r\n\r\n\r\n      if (\r\n        dataLanguage\r\n        &&\r\n        dataLanguage !== 'auto'\r\n      ) {\r\n\r\n        const blockLanguage =\r\n          normalizeLanguage(\r\n            dataLanguage\r\n          );\r\n\r\n\r\n        if (\r\n          blockLanguage\r\n        ) {\r\n\r\n          return blockLanguage;\r\n\r\n        }\r\n\r\n      }\r\n\r\n    }\r\n\r\n\r\n    \/*\r\n     * 3. \u0410\u0442\u0440\u0438\u0431\u0443\u0442 <html lang>.\r\n     *\/\r\n    const htmlLanguage =\r\n      normalizeLanguage(\r\n        document.documentElement.lang\r\n      );\r\n\r\n\r\n    if (\r\n      htmlLanguage\r\n    ) {\r\n\r\n      return htmlLanguage;\r\n\r\n    }\r\n\r\n\r\n    \/*\r\n     * 4. \u041f\u0435\u0440\u0448\u0438\u0439 \u0441\u0435\u0433\u043c\u0435\u043d\u0442 URL.\r\n     *\r\n     * \/uk\/...\r\n     * \/en\/...\r\n     * \/ru\/...\r\n     *\/\r\n    const firstPathSegment =\r\n      String(\r\n        window.location.pathname\r\n        ||\r\n        ''\r\n      )\r\n        .split('\/')\r\n        .filter(Boolean)[0]\r\n        ||\r\n        '';\r\n\r\n\r\n    const pathLanguage =\r\n      normalizeLanguage(\r\n        firstPathSegment\r\n      );\r\n\r\n\r\n    if (\r\n      pathLanguage\r\n    ) {\r\n\r\n      return pathLanguage;\r\n\r\n    }\r\n\r\n\r\n    \/*\r\n     * 5. \u0423\u043a\u0440\u0430\u0457\u043d\u0441\u044c\u043a\u0430 \u0437\u0430 \u0437\u0430\u043c\u043e\u0432\u0447\u0443\u0432\u0430\u043d\u043d\u044f\u043c.\r\n     *\/\r\n    return 'uk';\r\n\r\n  }\r\n\r\n\r\n  \/* =======================================================\r\n     \u0417\u0430\u0441\u0442\u043e\u0441\u0443\u0432\u0430\u043d\u043d\u044f \u043f\u0435\u0440\u0435\u043a\u043b\u0430\u0434\u0443\r\n  ======================================================= *\/\r\n\r\n  function applyTranslation() {\r\n\r\n    const language =\r\n      detectLanguage();\r\n\r\n\r\n    const dictionary =\r\n      translations[language]\r\n      ||\r\n      translations.uk;\r\n\r\n\r\n    const title =\r\n      document.getElementById(\r\n        'determinant-info-title'\r\n      );\r\n\r\n\r\n    const image =\r\n      document.getElementById(\r\n        'determinant-info-image'\r\n      );\r\n\r\n\r\n    const text1 =\r\n      document.getElementById(\r\n        'determinant-info-text-1'\r\n      );\r\n\r\n\r\n    const text2 =\r\n      document.getElementById(\r\n        'determinant-info-text-2'\r\n      );\r\n\r\n\r\n    const text3 =\r\n      document.getElementById(\r\n        'determinant-info-text-3'\r\n      );\r\n\r\n\r\n    if (\r\n      title\r\n    ) {\r\n\r\n      title.textContent =\r\n        dictionary.title;\r\n\r\n    }\r\n\r\n\r\n    if (\r\n      image\r\n    ) {\r\n\r\n      image.alt =\r\n        dictionary.imageAlt;\r\n\r\n    }\r\n\r\n\r\n    \/*\r\n     * \u041f\u0435\u0440\u0448\u0438\u0439 \u0430\u0431\u0437\u0430\u0446 \u043c\u0456\u0441\u0442\u0438\u0442\u044c \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f.\r\n     *\/\r\n    if (\r\n      text1\r\n    ) {\r\n\r\n      text1.innerHTML =\r\n        dictionary.text1;\r\n\r\n    }\r\n\r\n\r\n    \/*\r\n     * \u0414\u0440\u0443\u0433\u0438\u0439 \u0430\u0431\u0437\u0430\u0446 \u0442\u0430\u043a\u043e\u0436 \u043c\u0456\u0441\u0442\u0438\u0442\u044c HTML:\r\n     * \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f \u0442\u0430, \u0434\u043b\u044f \u0434\u0435\u044f\u043a\u0438\u0445 \u043c\u043e\u0432, <em>.\r\n     *\/\r\n    if (\r\n      text2\r\n    ) {\r\n\r\n      text2.innerHTML =\r\n        dictionary.text2;\r\n\r\n    }\r\n\r\n\r\n    \/*\r\n     * \u0422\u0440\u0435\u0442\u0456\u0439 \u0430\u0431\u0437\u0430\u0446 \u043c\u0456\u0441\u0442\u0438\u0442\u044c \u043b\u0438\u0448\u0435 \u0442\u0435\u043a\u0441\u0442.\r\n     *\/\r\n    if (\r\n      text3\r\n    ) {\r\n\r\n      text3.textContent =\r\n        dictionary.text3;\r\n\r\n    }\r\n\r\n  }\r\n\r\n\r\n  \/* =======================================================\r\n     Init\r\n  ======================================================= *\/\r\n\r\n  if (\r\n    document.readyState ===\r\n    'loading'\r\n  ) {\r\n\r\n    document.addEventListener(\r\n      'DOMContentLoaded',\r\n      applyTranslation\r\n    );\r\n\r\n  }\r\n\r\n  else {\r\n\r\n    applyTranslation();\r\n\r\n  }\r\n\r\n})();\r\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>\u041e\u0442\u0440\u0438\u043c\u0430\u0439\u0442\u0435 \u0440\u043e\u0437\u0432\u2019\u044f\u0437\u043e\u043a \u0441\u0438\u0441\u0442\u0435\u043c\u0438 \u043b\u0456\u043d\u0456\u0439\u043d\u0438\u0445 \u0440\u0456\u0432\u043d\u044f\u043d\u044c \u0456\u0437 \u0434\u0432\u043e\u043c\u0430, \u0442\u0440\u044c\u043e\u043c\u0430 \u0430\u0431\u043e \u0447\u043e\u0442\u0438\u0440\u043c\u0430 \u043d\u0435\u0432\u0456\u0434\u043e\u043c\u0438\u043c\u0438 \u0437\u0430 \u043a\u0456\u043b\u044c\u043a\u0430 \u0441\u0435\u043a\u0443\u043d\u0434 \u0437\u0430 \u0434\u043e\u043f\u043e\u043c\u043e\u0433\u043e\u044e \u043d\u0430\u0448\u043e\u0433\u043e \u043e\u043d\u043b\u0430\u0439\u043d-\u0456\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430. \u041a\u0456\u043b\u044c\u043a\u0456\u0441\u0442\u044c \u043d\u0435\u0432\u0456\u0434\u043e\u043c\u0438\u0445<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"template-centered.php","meta":{"footnotes":""},"class_list":["post-370","page","type-page","status-publish","hentry"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.mathros.net.ua\/ru\/wp-json\/wp\/v2\/pages\/370"}],"collection":[{"href":"https:\/\/www.mathros.net.ua\/ru\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.mathros.net.ua\/ru\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.mathros.net.ua\/ru\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.mathros.net.ua\/ru\/wp-json\/wp\/v2\/comments?post=370"}],"version-history":[{"count":72,"href":"https:\/\/www.mathros.net.ua\/ru\/wp-json\/wp\/v2\/pages\/370\/revisions"}],"predecessor-version":[{"id":4047,"href":"https:\/\/www.mathros.net.ua\/ru\/wp-json\/wp\/v2\/pages\/370\/revisions\/4047"}],"wp:attachment":[{"href":"https:\/\/www.mathros.net.ua\/ru\/wp-json\/wp\/v2\/media?parent=370"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}