Калькулятор температуры равновесия реакции
Определите температуру, при которой химическая реакция достигает термодинамического равновесия, используя значения энтальпии и энтропии реакции.
—
Температура равновесия
Кельвин (K)
—
Температура равновесия
Цельсий (°C)
0
ΔG при равновесии
кДж/моль
Как пользоваться
1
Введите значение энтальпии реакции (ΔH) в кДж/моль или Дж/моль. Например, для реакции синтеза аммиака N₂ + 3H₂ ⇌ 2NH₃ энтальпия ΔH ≈ −92,4 кДж/моль. Отрицательное значение означает экзотермическую реакцию.
2
Введите значение энтропии реакции (ΔS) в Дж/(моль·К). Для той же реакции синтеза аммиака ΔS ≈ −198,8 Дж/(моль·К). Энтропия часто уменьшается, если из нескольких молекул газа образуется меньшее количество.
3
Нажмите кнопку «Рассчитать». Калькулятор вычислит температуру, при которой энергия Гиббса (ΔG) становится равной нулю — это и есть температура равновесия. Результат отобразится в Кельвинах и Цельсиях.
4
Проанализируйте результат. Если температура положительная и достижимая — реакция может быть обратимой в реальных условиях. Если знаки ΔH и ΔS различаются — равновесие недостижимо, калькулятор предупредит об этом.
Примеры использования
Синтез аммиака (процесс Габера)
Реакция: N₂(г) + 3H₂(г) ⇌ 2NH₃(г). ΔH = −92,4 кДж/моль, ΔS = −198,8 Дж/(моль·К). Расчёт: T = (−92,4 × 1000) / (−198,8) ≈ 464,8 K (≈ 191,6 °C). Именно в этом диапазоне температур процесс Габера проводят на практике с катализатором.
Разложение карбоната кальция
Реакция: CaCO₃(тв) → CaO(тв) + CO₂(г). ΔH ≈ +178,3 кДж/моль, ΔS ≈ +160,6 Дж/(моль·К). Расчёт: T = (178,3 × 1000) / 160,6 ≈ 1110,5 K (≈ 837,4 °C). Именно поэтому известняк обжигают при температурах выше 850 °C — ниже этой температуры разложение термодинамически невозможно.
Реакция водяного газа
Реакция: CO(г) + H₂O(г) ⇌ CO₂(г) + H₂(г). ΔH ≈ −41,2 кДж/моль, ΔS ≈ −42,0 Дж/(моль·К). Расчёт: T = (−41,2 × 1000) / (−42,0) ≈ 981,0 K (≈ 707,8 °C). Выше этой температуры равновесие смещается в сторону реагентов, ниже — в сторону продуктов.
Важные нюансы
- Температура равновесия существует только когда ΔH и ΔS имеют одинаковый знак. Если знаки разные — реакция либо всегда самопроизвольна (ΔG всегда отрицательна), либо всегда несамопроизвольна (ΔG всегда положительна), и равновесие недостижимо.
- Расчёт основан на приближении, что ΔH и ΔS не зависят от температуры. В реальности энтальпия и энтропия меняются с температурой (закон Кирхгофа), поэтому для точных расчётов при больших диапазонах температур нужно учитывать теплоёмкости.
- Если рассчитанная температура отрицательна в Кельвинах — это физически невозможно (0 K = абсолютный нуль). Такая ситуация означает, что при всех достижимых температурах знак ΔG не меняется.
- На практике кинетические факторы могут препятствовать достижению равновесия. Даже если термодинамика предсказывает возможность реакции, она может идти крайне медленно без катализатора.
- Всегда проверяйте единицы измерения: энтальпия должна быть переведена в Дж/моль (1 кДж = 1000 Дж) для согласованности с энтропией, выраженной в Дж/(моль·К). Калькулятор делает это автоматически.
Источники данных
📘
IUPAC Gold Book — Международный союз теоретической и прикладной химии. Определения энергии Гиббса, энтальпии, энтропии и стандартных термодинамических величин. DOI: 10.1351/goldbook
📗
NIST Chemistry WebBook — Национальный институт стандартов и технологий США. База термодинамических данных для тысяч соединений, включая ΔH°f, S° и ΔG°f. webbook.nist.gov/chemistry
📙
CRC Handbook of Chemistry and Physics — авторитетный справочник физико-химических величин. Таблицы стандартных энтальпий образования и абсолютных энтропий веществ. CRC Press, 104th Edition, 2023
📓
PubChem (NIH) — открытая химическая база данных Национальных институтов здравоохранения США. Термодинамические свойства соединений с перекрёстными ссылками на литературные источники. pubchem.ncbi.nlm.nih.gov
Расчёт выполнен на основе стандартных химических формул и школьно-вузовских справочных значений. Конкретные числовые данные ΔH и ΔS для примеров взяты из учебных материалов по общей и физической химии.
Калькулятор температуры равновесия реакции позволяет быстро определить температуру, при которой химическая реакция достигает термодинамического равновесия, используя фундаментальное соотношение ΔG = ΔH − T·ΔS. Инструмент полезен студентам, изучающим физическую химию и химическую термодинамику, а также инженерам-химикам для предварительной оценки условий проведения обратимых процессов. Расчёт основан на стандартных термодинамических формулах и справочных данных IUPAC и NIST. Для получения точных результатов при значительных перепадах температур рекомендуется учитывать зависимость энтальпии и энтропии от температуры согласно закону Кирхгофа.
CiAgICAoZnVuY3Rpb24oKSB7CiAgICAgICAgdmFyIGVudGhhbHB5SW5wdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZW50aGFscHktdmFsdWUnKTsKICAgICAgICB2YXIgZW50aGFscHlVbml0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2VudGhhbHB5LXVuaXQnKTsKICAgICAgICB2YXIgZW50cm9weUlucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2VudHJvcHktdmFsdWUnKTsKICAgICAgICB2YXIgY2FsY3VsYXRlQnRuID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NhbGN1bGF0ZS1idG4nKTsKICAgICAgICB2YXIgcmVzZXRCdG4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzZXQtYnRuJyk7CiAgICAgICAgdmFyIGVycm9yRW50aGFscHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXJyb3ItZW50aGFscHknKTsKICAgICAgICB2YXIgZXJyb3JFbnRyb3B5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Vycm9yLWVudHJvcHknKTsKICAgICAgICB2YXIgcmVzdWx0VGVtcEsgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0LXRlbXAtaycpOwogICAgICAgIHZhciByZXN1bHRUZW1wQyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQtdGVtcC1jJyk7CiAgICAgICAgdmFyIHJlc3VsdERlbHRhRyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQtZGVsdGEtZycpOwogICAgICAgIHZhciByZXN1bHROb3RlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdC1ub3RlJyk7CgogICAgICAgIGZ1bmN0aW9uIGhpZGVFcnJvcihlbCkgewogICAgICAgICAgICBpZiAoZWwpIHsKICAgICAgICAgICAgICAgIGVsLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICAgICAgICAgICAgICBlbC50ZXh0Q29udGVudCA9ICcnOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBzaG93RXJyb3IoZWwsIG1zZykgewogICAgICAgICAgICBpZiAoZWwpIHsKICAgICAgICAgICAgICAgIGVsLnRleHRDb250ZW50ID0gbXNnOwogICAgICAgICAgICAgICAgZWwuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIHJlc2V0UmVzdWx0cygpIHsKICAgICAgICAgICAgaWYgKHJlc3VsdFRlbXBLKSByZXN1bHRUZW1wSy50ZXh0Q29udGVudCA9ICfigJQnOwogICAgICAgICAgICBpZiAocmVzdWx0VGVtcEMpIHJlc3VsdFRlbXBDLnRleHRDb250ZW50ID0gJ+KAlCc7CiAgICAgICAgICAgIGlmIChyZXN1bHREZWx0YUcpIHJlc3VsdERlbHRhRy50ZXh0Q29udGVudCA9ICcwJzsKICAgICAgICAgICAgaWYgKHJlc3VsdE5vdGUpIHsKICAgICAgICAgICAgICAgIHJlc3VsdE5vdGUuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKICAgICAgICAgICAgICAgIHJlc3VsdE5vdGUudGV4dENvbnRlbnQgPSAnJzsKICAgICAgICAgICAgICAgIHJlc3VsdE5vdGUuY2xhc3NOYW1lID0gJ25uLWdlbi1jYWwtcmVzdWx0LW5vdGUnOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiB2YWxpZGF0ZUlucHV0cygpIHsKICAgICAgICAgICAgdmFyIHZhbGlkID0gdHJ1ZTsKICAgICAgICAgICAgaGlkZUVycm9yKGVycm9yRW50aGFscHkpOwogICAgICAgICAgICBoaWRlRXJyb3IoZXJyb3JFbnRyb3B5KTsKCiAgICAgICAgICAgIHZhciBlbnRoYWxweVJhdyA9IGVudGhhbHB5SW5wdXQudmFsdWUudHJpbSgpOwogICAgICAgICAgICBpZiAoZW50aGFscHlSYXcgPT09ICcnKSB7CiAgICAgICAgICAgICAgICBzaG93RXJyb3IoZXJyb3JFbnRoYWxweSwgJ9CS0LLQtdC00LjRgtC1INC30L3QsNGH0LXQvdC40LUg0Y3QvdGC0LDQu9GM0L/QuNC4INGA0LXQsNC60YbQuNC4LicpOwogICAgICAgICAgICAgICAgdmFsaWQgPSBmYWxzZTsKICAgICAgICAgICAgfSBlbHNlIGlmIChpc05hTihwYXJzZUZsb2F0KGVudGhhbHB5UmF3KSkpIHsKICAgICAgICAgICAgICAgIHNob3dFcnJvcihlcnJvckVudGhhbHB5LCAn0K3QvdGC0LDQu9GM0L/QuNGPINC00L7Qu9C20L3QsCDQsdGL0YLRjCDRh9C40YHQu9C+0LwuJyk7CiAgICAgICAgICAgICAgICB2YWxpZCA9IGZhbHNlOwogICAgICAgICAgICB9IGVsc2UgaWYgKCFpc0Zpbml0ZShwYXJzZUZsb2F0KGVudGhhbHB5UmF3KSkpIHsKICAgICAgICAgICAgICAgIHNob3dFcnJvcihlcnJvckVudGhhbHB5LCAn0JfQvdCw0YfQtdC90LjQtSDRjdC90YLQsNC70YzQv9C40Lgg0YHQu9C40YjQutC+0Lwg0LLQtdC70LjQutC+INC40LvQuCDQvdC10LrQvtGA0YDQtdC60YLQvdC+LicpOwogICAgICAgICAgICAgICAgdmFsaWQgPSBmYWxzZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgdmFyIGVudHJvcHlSYXcgPSBlbnRyb3B5SW5wdXQudmFsdWUudHJpbSgpOwogICAgICAgICAgICBpZiAoZW50cm9weVJhdyA9PT0gJycpIHsKICAgICAgICAgICAgICAgIHNob3dFcnJvcihlcnJvckVudHJvcHksICfQktCy0LXQtNC40YLQtSDQt9C90LDRh9C10L3QuNC1INGN0L3RgtGA0L7Qv9C40Lgg0YDQtdCw0LrRhtC40LguJyk7CiAgICAgICAgICAgICAgICB2YWxpZCA9IGZhbHNlOwogICAgICAgICAgICB9IGVsc2UgaWYgKGlzTmFOKHBhcnNlRmxvYXQoZW50cm9weVJhdykpKSB7CiAgICAgICAgICAgICAgICBzaG93RXJyb3IoZXJyb3JFbnRyb3B5LCAn0K3QvdGC0YDQvtC/0LjRjyDQtNC+0LvQttC90LAg0LHRi9GC0Ywg0YfQuNGB0LvQvtC8LicpOwogICAgICAgICAgICAgICAgdmFsaWQgPSBmYWxzZTsKICAgICAgICAgICAgfSBlbHNlIGlmICghaXNGaW5pdGUocGFyc2VGbG9hdChlbnRyb3B5UmF3KSkpIHsKICAgICAgICAgICAgICAgIHNob3dFcnJvcihlcnJvckVudHJvcHksICfQl9C90LDRh9C10L3QuNC1INGN0L3RgtGA0L7Qv9C40Lgg0YHQu9C40YjQutC+0Lwg0LLQtdC70LjQutC+INC40LvQuCDQvdC10LrQvtGA0YDQtdC60YLQvdC+LicpOwogICAgICAgICAgICAgICAgdmFsaWQgPSBmYWxzZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuIHZhbGlkOwogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gY2FsY3VsYXRlKCkgewogICAgICAgICAgICByZXNldFJlc3VsdHMoKTsKICAgICAgICAgICAgaWYgKCF2YWxpZGF0ZUlucHV0cygpKSByZXR1cm47CgogICAgICAgICAgICB2YXIgZW50aGFscHlWYWwgPSBwYXJzZUZsb2F0KGVudGhhbHB5SW5wdXQudmFsdWUudHJpbSgpKTsKICAgICAgICAgICAgdmFyIGVudHJvcHlWYWwgPSBwYXJzZUZsb2F0KGVudHJvcHlJbnB1dC52YWx1ZS50cmltKCkpOwoKICAgICAgICAgICAgdmFyIGVudGhhbHB5SiA9IGVudGhhbHB5VmFsOwogICAgICAgICAgICBpZiAoZW50aGFscHlVbml0LnZhbHVlID09PSAna2onKSB7CiAgICAgICAgICAgICAgICBlbnRoYWxweUogPSBlbnRoYWxweVZhbCAqIDEwMDA7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmIChNYXRoLmFicyhlbnRyb3B5VmFsKSA8IDFlLTEyKSB7CiAgICAgICAgICAgICAgICBpZiAocmVzdWx0Tm90ZSkgewogICAgICAgICAgICAgICAgICAgIHJlc3VsdE5vdGUudGV4dENvbnRlbnQgPSAn0K3QvdGC0YDQvtC/0LjRjyDRgNC10LDQutGG0LjQuCDQsdC70LjQt9C60LAg0Log0L3Rg9C70Y4uINCi0LXQvNC/0LXRgNCw0YLRg9GA0LAg0YDQsNCy0L3QvtCy0LXRgdC40Y8g0YHRgtGA0LXQvNC40YLRgdGPINC6INCx0LXRgdC60L7QvdC10YfQvdC+0YHRgtC4IOKAlCDRgNCw0LLQvdC+0LLQtdGB0LjQtSDQvdC10LTQvtGB0YLQuNC20LjQvNC+INC/0YDQuCDQutC+0L3QtdGH0L3QvtC5INGC0LXQvNC/0LXRgNCw0YLRg9GA0LUuJzsKICAgICAgICAgICAgICAgICAgICByZXN1bHROb3RlLmNsYXNzTmFtZSA9ICdubi1nZW4tY2FsLXJlc3VsdC1ub3RlIHdhcm5pbmcnOwogICAgICAgICAgICAgICAgICAgIHJlc3VsdE5vdGUuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAocmVzdWx0VGVtcEspIHJlc3VsdFRlbXBLLnRleHRDb250ZW50ID0gJ+KInic7CiAgICAgICAgICAgICAgICBpZiAocmVzdWx0VGVtcEMpIHJlc3VsdFRlbXBDLnRleHRDb250ZW50ID0gJ+KInic7CiAgICAgICAgICAgICAgICBpZiAocmVzdWx0RGVsdGFHKSByZXN1bHREZWx0YUcudGV4dENvbnRlbnQgPSAnMCc7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHZhciB0RXF1aWxpYnJpdW0gPSBlbnRoYWxweUogLyBlbnRyb3B5VmFsOwoKICAgICAgICAgICAgaWYgKCFpc0Zpbml0ZSh0RXF1aWxpYnJpdW0pKSB7CiAgICAgICAgICAgICAgICBpZiAocmVzdWx0Tm90ZSkgewogICAgICAgICAgICAgICAgICAgIHJlc3VsdE5vdGUudGV4dENvbnRlbnQgPSAn0KDQtdC30YPQu9GM0YLQsNGCINGA0LDRgdGH0ZHRgtCwINC90LUg0L7Qv9GA0LXQtNC10LvRkdC9LiDQn9GA0L7QstC10YDRjNGC0LUg0LLQstC10LTRkdC90L3Ri9C1INC30L3QsNGH0LXQvdC40Y8uINCS0L7Qt9C80L7QttC90L4sINGN0L3RgtGA0L7Qv9C40Y8g0YDQsNCy0L3QsCDQvdGD0LvRjiDQuNC70Lgg0LLRi9GH0LjRgdC70LXQvdC40LUg0L/RgNC40LLQtdC70L4g0Log0LHQtdGB0LrQvtC90LXRh9C90L7RgdGC0LguJzsKICAgICAgICAgICAgICAgICAgICByZXN1bHROb3RlLmNsYXNzTmFtZSA9ICdubi1nZW4tY2FsLXJlc3VsdC1ub3RlIHdhcm5pbmcnOwogICAgICAgICAgICAgICAgICAgIHJlc3VsdE5vdGUuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAocmVzdWx0VGVtcEspIHJlc3VsdFRlbXBLLnRleHRDb250ZW50ID0gJ+KAlCc7CiAgICAgICAgICAgICAgICBpZiAocmVzdWx0VGVtcEMpIHJlc3VsdFRlbXBDLnRleHRDb250ZW50ID0gJ+KAlCc7CiAgICAgICAgICAgICAgICBpZiAocmVzdWx0RGVsdGFHKSByZXN1bHREZWx0YUcudGV4dENvbnRlbnQgPSAnMCc7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICh0RXF1aWxpYnJpdW0gPCAwKSB7CiAgICAgICAgICAgICAgICBpZiAocmVzdWx0Tm90ZSkgewogICAgICAgICAgICAgICAgICAgIHJlc3VsdE5vdGUudGV4dENvbnRlbnQgPSAn0KDQsNGB0YHRh9C40YLQsNC90L3QsNGPINGC0LXQvNC/0LXRgNCw0YLRg9GA0LAg0YDQsNCy0L3QvtCy0LXRgdC40Y8g0L7RgtGA0LjRhtCw0YLQtdC70YzQvdCwINCyINCa0LXQu9GM0LLQuNC90LDRhSAoVCA9ICcgKyB0RXF1aWxpYnJpdW0udG9GaXhlZCgyKSArICcgSykuINCt0YLQviDRhNC40LfQuNGH0LXRgdC60Lgg0L3QtdCy0L7Qt9C80L7QttC90L4g4oCUINC/0YDQuCDQstGB0LXRhSDQtNC+0YHRgtC40LbQuNC80YvRhSDRgtC10LzQv9C10YDQsNGC0YPRgNCw0YUg0LfQvdCw0LogzpRHINC90LUg0LzQtdC90Y/QtdGC0YHRjy4g0KDQsNCy0L3QvtCy0LXRgdC40LUg0L3QtdC00L7RgdGC0LjQttC40LzQvjog0YDQtdCw0LrRhtC40Y8g0LvQuNCx0L4g0LLRgdC10LPQtNCwINGB0LDQvNC+0L/RgNC+0LjQt9Cy0L7Qu9GM0L3QsCwg0LvQuNCx0L4g0LLRgdC10LPQtNCwINC90LXRgdCw0LzQvtC/0YDQvtC40LfQstC+0LvRjNC90LAg0LLQviDQstGB0ZHQvCDQtNC40LDQv9Cw0LfQvtC90LUg0YLQtdC80L/QtdGA0LDRgtGD0YAuJzsKICAgICAgICAgICAgICAgICAgICByZXN1bHROb3RlLmNsYXNzTmFtZSA9ICdubi1nZW4tY2FsLXJlc3VsdC1ub3RlIHdhcm5pbmcnOwogICAgICAgICAgICAgICAgICAgIHJlc3VsdE5vdGUuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAocmVzdWx0VGVtcEspIHJlc3VsdFRlbXBLLnRleHRDb250ZW50ID0gdEVxdWlsaWJyaXVtLnRvRml4ZWQoMikgKyAnICjQvdC10LTQvtGB0YLQuNC20LjQvNC+KSc7CiAgICAgICAgICAgICAgICBpZiAocmVzdWx0VGVtcEMpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdEMgPSB0RXF1aWxpYnJpdW0gLSAyNzMuMTU7CiAgICAgICAgICAgICAgICAgICAgcmVzdWx0VGVtcEMudGV4dENvbnRlbnQgPSB0Qy50b0ZpeGVkKDIpICsgJyAo0L3QtdC00L7RgdGC0LjQttC40LzQviknOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKHJlc3VsdERlbHRhRykgcmVzdWx0RGVsdGFHLnRleHRDb250ZW50ID0gJzAgKNGC0LXQvtGA0LXRgtC40YfQtdGB0LrQuCknOwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAodEVxdWlsaWJyaXVtID4gMWU4KSB7CiAgICAgICAgICAgICAgICBpZiAocmVzdWx0Tm90ZSkgewogICAgICAgICAgICAgICAgICAgIHJlc3VsdE5vdGUudGV4dENvbnRlbnQgPSAn0KLQtdC80L/QtdGA0LDRgtGD0YDQsCDRgNCw0LLQvdC+0LLQtdGB0LjRjyDRh9GA0LXQt9Cy0YvRh9Cw0LnQvdC+INCy0YvRgdC+0LrQsCAo0LHQvtC70LXQtSAxMDAg0LzQu9C9IEspLiDQkiDRgNC10LDQu9GM0L3Ri9GFINC30LXQvNC90YvRhSDRg9GB0LvQvtCy0LjRj9GFINGC0LDQutC+0LUg0YDQsNCy0L3QvtCy0LXRgdC40LUg0L3QtdC00L7RgdGC0LjQttC40LzQvi4g0JLQtdGA0L7Rj9GC0L3Qviwg0Y3QvdGC0YDQvtC/0LjRjyDRgNC10LDQutGG0LjQuCDQvtGH0LXQvdGMINC80LDQu9CwINC/0L4g0LDQsdGB0L7Qu9GO0YLQvdC+0Lkg0LLQtdC70LjRh9C40L3QtS4nOwogICAgICAgICAgICAgICAgICAgIHJlc3VsdE5vdGUuY2xhc3NOYW1lID0gJ25uLWdlbi1jYWwtcmVzdWx0LW5vdGUgaW5mbyc7CiAgICAgICAgICAgICAgICAgICAgcmVzdWx0Tm90ZS5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgdmFyIHRDZWxzaXVzID0gdEVxdWlsaWJyaXVtIC0gMjczLjE1OwoKICAgICAgICAgICAgaWYgKHJlc3VsdFRlbXBLKSByZXN1bHRUZW1wSy50ZXh0Q29udGVudCA9IHRFcXVpbGlicml1bS50b0ZpeGVkKDIpOwogICAgICAgICAgICBpZiAocmVzdWx0VGVtcEMpIHJlc3VsdFRlbXBDLnRleHRDb250ZW50ID0gdENlbHNpdXMudG9GaXhlZCgyKTsKICAgICAgICAgICAgaWYgKHJlc3VsdERlbHRhRykgcmVzdWx0RGVsdGFHLnRleHRDb250ZW50ID0gJzAnOwoKICAgICAgICAgICAgaWYgKHRFcXVpbGlicml1bSA8PSAxZTggJiYgdEVxdWlsaWJyaXVtID49IDAgJiYgcmVzdWx0Tm90ZSAmJiByZXN1bHROb3RlLnN0eWxlLmRpc3BsYXkgPT09ICdub25lJykgewogICAgICAgICAgICAgICAgdmFyIG5vdGVUZXh0ID0gJyc7CiAgICAgICAgICAgICAgICBpZiAoZW50aGFscHlKIDwgMCAmJiBlbnRyb3B5VmFsIDwgMCkgewogICAgICAgICAgICAgICAgICAgIG5vdGVUZXh0ID0gJ86USCA8IDAg0LggzpRTIDwgMDog0YDQtdCw0LrRhtC40Y8g0Y3QutC30L7RgtC10YDQvNC40YfQtdGB0LrQsNGPINGBINGD0LzQtdC90YzRiNC10L3QuNC10Lwg0Y3QvdGC0YDQvtC/0LjQuC4g0J/RgNC4INGC0LXQvNC/0LXRgNCw0YLRg9GA0LDRhSDQvdC40LbQtSAnICsgdEVxdWlsaWJyaXVtLnRvRml4ZWQoMSkgKyAnIEsg0YDQtdCw0LrRhtC40Y8g0YHQsNC80L7Qv9GA0L7QuNC30LLQvtC70YzQvdCwICjOlEcgPCAwKSwg0LLRi9GI0LUg4oCUINC90LXRgdCw0LzQvtC/0YDQvtC40LfQstC+0LvRjNC90LAgKM6URyA+IDApLic7CiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGVudGhhbHB5SiA+IDAgJiYgZW50cm9weVZhbCA+IDApIHsKICAgICAgICAgICAgICAgICAgICBub3RlVGV4dCA9ICfOlEggPiAwINC4IM6UUyA+IDA6INGA0LXQsNC60YbQuNGPINGN0L3QtNC+0YLQtdGA0LzQuNGH0LXRgdC60LDRjyDRgSDRg9Cy0LXQu9C40YfQtdC90LjQtdC8INGN0L3RgtGA0L7Qv9C40LguINCf0YDQuCDRgtC10LzQv9C10YDQsNGC0YPRgNCw0YUg0LLRi9GI0LUgJyArIHRFcXVpbGlicml1bS50b0ZpeGVkKDEpICsgJyBLINGA0LXQsNC60YbQuNGPINGB0LDQvNC+0L/RgNC+0LjQt9Cy0L7Qu9GM0L3QsCAozpRHIDwgMCksINC90LjQttC1IOKAlCDQvdC10YHQsNC80L7Qv9GA0L7QuNC30LLQvtC70YzQvdCwICjOlEcgPiAwKS4nOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKG5vdGVUZXh0ICYmIHJlc3VsdE5vdGUpIHsKICAgICAgICAgICAgICAgICAgICByZXN1bHROb3RlLnRleHRDb250ZW50ID0gbm90ZVRleHQ7CiAgICAgICAgICAgICAgICAgICAgcmVzdWx0Tm90ZS5jbGFzc05hbWUgPSAnbm4tZ2VuLWNhbC1yZXN1bHQtbm90ZSBpbmZvJzsKICAgICAgICAgICAgICAgICAgICByZXN1bHROb3RlLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoIXJlc3VsdE5vdGUgfHwgcmVzdWx0Tm90ZS5zdHlsZS5kaXNwbGF5ID09PSAnbm9uZScpIHsKICAgICAgICAgICAgICAgIGlmIChlbnRoYWxweUogPiAwICYmIGVudHJvcHlWYWwgPCAwKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdE5vdGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0Tm90ZS50ZXh0Q29udGVudCA9ICfOlEggPiAwINC4IM6UUyA8IDA6INGN0L3QtNC+0YLQtdGA0LzQuNGH0LXRgdC60LDRjyDRgNC10LDQutGG0LjRjyDRgSDRg9C80LXQvdGM0YjQtdC90LjQtdC8INGN0L3RgtGA0L7Qv9C40LguIM6URyDQstGB0LXQs9C00LAg0L/QvtC70L7QttC40YLQtdC70YzQvdCwIOKAlCDRgNC10LDQutGG0LjRjyDQvdC10YHQsNC80L7Qv9GA0L7QuNC30LLQvtC70YzQvdCwINC/0YDQuCDQu9GO0LHQvtC5INGC0LXQvNC/0LXRgNCw0YLRg9GA0LUuINCg0LDQstC90L7QstC10YHQuNC1INC90LXQtNC+0YHRgtC40LbQuNC80L4uJzsKICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0Tm90ZS5jbGFzc05hbWUgPSAnbm4tZ2VuLWNhbC1yZXN1bHQtbm90ZSB3YXJuaW5nJzsKICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0Tm90ZS5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGVudGhhbHB5SiA8IDAgJiYgZW50cm9weVZhbCA+IDApIHsKICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0Tm90ZSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXN1bHROb3RlLnRleHRDb250ZW50ID0gJ86USCA8IDAg0LggzpRTID4gMDog0Y3QutC30L7RgtC10YDQvNC40YfQtdGB0LrQsNGPINGA0LXQsNC60YbQuNGPINGBINGD0LLQtdC70LjRh9C10L3QuNC10Lwg0Y3QvdGC0YDQvtC/0LjQuC4gzpRHINCy0YHQtdCz0LTQsCDQvtGC0YDQuNGG0LDRgtC10LvRjNC90LAg4oCUINGA0LXQsNC60YbQuNGPINGB0LDQvNC+0L/RgNC+0LjQt9Cy0L7Qu9GM0L3QsCDQv9GA0Lgg0LvRjtCx0L7QuSDRgtC10LzQv9C10YDQsNGC0YPRgNC1LiDQoNCw0LLQvdC+0LLQtdGB0LjQtSDQvdC10LTQvtGB0YLQuNC20LjQvNC+Lic7CiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdE5vdGUuY2xhc3NOYW1lID0gJ25uLWdlbi1jYWwtcmVzdWx0LW5vdGUgd2FybmluZyc7CiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdE5vdGUuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiByZXNldEZvcm0oKSB7CiAgICAgICAgICAgIGlmIChlbnRoYWxweUlucHV0KSBlbnRoYWxweUlucHV0LnZhbHVlID0gJyc7CiAgICAgICAgICAgIGlmIChlbnRyb3B5SW5wdXQpIGVudHJvcHlJbnB1dC52YWx1ZSA9ICcnOwogICAgICAgICAgICBpZiAoZW50aGFscHlVbml0KSBlbnRoYWxweVVuaXQudmFsdWUgPSAna2onOwogICAgICAgICAgICBoaWRlRXJyb3IoZXJyb3JFbnRoYWxweSk7CiAgICAgICAgICAgIGhpZGVFcnJvcihlcnJvckVudHJvcHkpOwogICAgICAgICAgICByZXNldFJlc3VsdHMoKTsKICAgICAgICB9CgogICAgICAgIGlmIChjYWxjdWxhdGVCdG4pIHsKICAgICAgICAgICAgY2FsY3VsYXRlQnRuLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgY2FsY3VsYXRlKTsKICAgICAgICB9CgogICAgICAgIGlmIChyZXNldEJ0bikgewogICAgICAgICAgICByZXNldEJ0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHJlc2V0Rm9ybSk7CiAgICAgICAgfQoKICAgICAgICBpZiAoZW50aGFscHlJbnB1dCkgewogICAgICAgICAgICBlbnRoYWxweUlucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICBpZiAoZS5rZXkgPT09ICdFbnRlcicpIHsKICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgICAgICAgICAgY2FsY3VsYXRlKCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwogICAgICAgIH0KCiAgICAgICAgaWYgKGVudHJvcHlJbnB1dCkgewogICAgICAgICAgICBlbnRyb3B5SW5wdXQuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIGlmIChlLmtleSA9PT0gJ0VudGVyJykgewogICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgICAgICAgICBjYWxjdWxhdGUoKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgfQogICAgfSkoKTsK