Калькулятор порядка реакции
Определите порядок химической реакции по методу времени полупревращения, используя данные двух экспериментов с разными начальными концентрациями.
Результат расчёта
0
Порядок реакции (n)
безразмерная величина
0
Константа скорости (k)
ед. изм.
Калькулятор порядка реакции помогает быстро определить кинетический порядок химической реакции на основе экспериментальных данных. Инструмент использует классический метод сравнения времён полупревращения при разных начальных концентрациях, что является стандартным подходом в физической химии. Результат расчёта позволяет понять механизм реакции и предсказать её поведение в иных условиях.
Как пользоваться
1
Подготовьте данные двух экспериментов. В каждом опыте измерьте начальную концентрацию реагента (C₀) и время, за которое его концентрация уменьшилась вдвое (t₁/₂). Например, опыт 1: C₀₁ = 0.10 моль/л, t₁/₂ = 120 с; опыт 2: C₀₂ = 0.20 моль/л, t₁/₂ = 60 с.
2
Введите значения начальных концентраций и соответствующих времён полупревращения в поля формы. Убедитесь, что единицы измерения концентрации и времени одинаковы в обоих опытах (например, моль/л и секунды).
3
Нажмите кнопку «Рассчитать». Калькулятор вычислит порядок реакции (n) по формуле n = 1 + ln(t₂/t₁) / ln(C₀₁/C₀₂), а затем определит константу скорости k с учётом найденного порядка.
4
Проанализируйте результат. Целочисленные порядки (0, 1, 2) указывают на простые кинетические схемы. Дробные значения могут свидетельствовать о сложном механизме или о параллельных реакциях. При необходимости проверьте данные повторно.
Примеры использования
Реакция первого порядка (n = 1)
Разложение N₂O₅ в газовой фазе. При любой начальной концентрации время полураспада остаётся постоянным. Опыт 1: C₀₁ = 0.10 М, t₁/₂ = 240 с. Опыт 2: C₀₂ = 0.25 М, t₁/₂ = 240 с. Расчёт даст n = 1.00, k ≈ 0.0029 с⁻¹. Это подтверждает мономолекулярный механизм.
Реакция второго порядка (n = 2)
Омыление этилацетата щёлочью: CH₃COOC₂H₅ + OH⁻ → продукты. При увеличении начальной концентрации вдвое время полупревращения сокращается вдвое. Опыт 1: C₀₁ = 0.050 М, t₁/₂ = 180 с. Опыт 2: C₀₂ = 0.100 М, t₁/₂ = 90 с. Расчёт даёт n = 2.00, k ≈ 0.111 л·моль⁻¹·с⁻¹.
Дробный порядок (n ≈ 1.5)
Термическое разложение ацетальдегида CH₃CHO → CH₄ + CO. Экспериментальные данные: C₀₁ = 0.20 М, t₁/₂ = 410 с; C₀₂ = 0.40 М, t₁/₂ = 147 с. Расчёт даёт n ≈ 1.48, что указывает на цепной радикальный механизм с промежуточными стадиями.
Важные нюансы
- Метод работает корректно только для реакций с одним реагентом или для псевдопервого порядка, когда остальные реагенты в большом избытке. Для многокомпонентных систем необходимо фиксировать концентрации всех реагентов, кроме исследуемого.
- Начальные концентрации в двух опытах должны быть различны. Если C₀₁ = C₀₂, формула даст деление на ноль — порядок определить невозможно.
- Времена полупревращения должны быть измерены при одинаковой температуре. Скорость реакции экспоненциально зависит от температуры (правило Вант-Гоффа, уравнение Аррениуса), поэтому даже разница в 5 °C может исказить результат.
- Для реакций нулевого порядка время полупревращения пропорционально начальной концентрации: t₁/₂ = C₀ / (2k). Калькулятор корректно обрабатывает случай n → 0, если введённые данные соответствуют этой закономерности.
- Дробный порядок (например, 1.5 или 0.7) — не ошибка вычислений. Такие значения часто указывают на сложный механизм с участием радикалов, каталитических циклов или адсорбционных стадий. Рекомендуется подтвердить результат независимым методом, например, дифференциальным методом Вант-Гоффа.
Источники данных
- IUPAC Gold Book — рекомендованные определения порядка реакции, константы скорости и времени полупревращения (doi: 10.1351/goldbook).
- NIST Chemical Kinetics Database — эталонные кинетические параметры для тысяч газофазных и растворных реакций.
- Atkins P.W., de Paula J. «Physical Chemistry» (10th ed., Oxford University Press, 2014) — классический учебник с выводом формул для методов определения порядка.
- CRC Handbook of Chemistry and Physics — справочные значения констант скоростей для типовых реакций.
⚠ Предупреждение о технике безопасности: Данный калькулятор предназначен исключительно для образовательных и исследовательских целей. При планировании и проведении химических экспериментов строго соблюдайте стандартные лабораторные протоколы безопасности, работайте под наблюдением квалифицированного специалиста и используйте средства индивидуальной защиты. Калькулятор не даёт рекомендаций по синтезу опасных веществ, взрывчатых соединений или токсичных газов.
CihmdW5jdGlvbigpewogICAgZnVuY3Rpb24gZ2V0RWwoaWQpIHsKICAgICAgICByZXR1cm4gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpOwogICAgfQoKICAgIGZ1bmN0aW9uIHNob3dFcnJvcihpZCwgbXNnKSB7CiAgICAgICAgdmFyIGVsID0gZ2V0RWwoaWQpOwogICAgICAgIGlmIChlbCkgewogICAgICAgICAgICBlbC50ZXh0Q29udGVudCA9IG1zZzsKICAgICAgICAgICAgZWwuY2xhc3NMaXN0LmFkZCgnc2hvdycpOwogICAgICAgIH0KICAgIH0KCiAgICBmdW5jdGlvbiBjbGVhckVycm9yKGlkKSB7CiAgICAgICAgdmFyIGVsID0gZ2V0RWwoaWQpOwogICAgICAgIGlmIChlbCkgewogICAgICAgICAgICBlbC50ZXh0Q29udGVudCA9ICcnOwogICAgICAgICAgICBlbC5jbGFzc0xpc3QucmVtb3ZlKCdzaG93Jyk7CiAgICAgICAgfQogICAgfQoKICAgIGZ1bmN0aW9uIGNsZWFyQWxsRXJyb3JzKCkgewogICAgICAgIFsnZXJyLWNvbmMxJywgJ2Vyci10aW1lMScsICdlcnItY29uYzInLCAnZXJyLXRpbWUyJ10uZm9yRWFjaChjbGVhckVycm9yKTsKICAgIH0KCiAgICBmdW5jdGlvbiB2YWxpZGF0ZUlucHV0cyhjb25jMSwgdGltZTEsIGNvbmMyLCB0aW1lMikgewogICAgICAgIHZhciB2YWxpZCA9IHRydWU7CiAgICAgICAgY2xlYXJBbGxFcnJvcnMoKTsKCiAgICAgICAgaWYgKGlzTmFOKGNvbmMxKSB8fCBjb25jMSA9PT0gbnVsbCB8fCBjb25jMSA9PT0gJycpIHsKICAgICAgICAgICAgc2hvd0Vycm9yKCdlcnItY29uYzEnLCAn0JLQstC10LTQuNGC0LUg0L3QsNGH0LDQu9GM0L3Rg9GOINC60L7QvdGG0LXQvdGC0YDQsNGG0LjRjiBD4oKA4oKBJyk7CiAgICAgICAgICAgIHZhbGlkID0gZmFsc2U7CiAgICAgICAgfSBlbHNlIGlmIChjb25jMSA8PSAwKSB7CiAgICAgICAgICAgIHNob3dFcnJvcignZXJyLWNvbmMxJywgJ9Ca0L7QvdGG0LXQvdGC0YDQsNGG0LjRjyDQtNC+0LvQttC90LAg0LHRi9GC0Ywg0L/QvtC70L7QttC40YLQtdC70YzQvdGL0Lwg0YfQuNGB0LvQvtC8Jyk7CiAgICAgICAgICAgIHZhbGlkID0gZmFsc2U7CiAgICAgICAgfQogICAgICAgIGlmIChpc05hTih0aW1lMSkgfHwgdGltZTEgPT09IG51bGwgfHwgdGltZTEgPT09ICcnKSB7CiAgICAgICAgICAgIHNob3dFcnJvcignZXJyLXRpbWUxJywgJ9CS0LLQtdC00LjRgtC1INCy0YDQtdC80Y8g0L/QvtC70YPQv9GA0LXQstGA0LDRidC10L3QuNGPINC00LvRjyDQvtC/0YvRgtCwIDEnKTsKICAgICAgICAgICAgdmFsaWQgPSBmYWxzZTsKICAgICAgICB9IGVsc2UgaWYgKHRpbWUxIDw9IDApIHsKICAgICAgICAgICAgc2hvd0Vycm9yKCdlcnItdGltZTEnLCAn0JLRgNC10LzRjyDQtNC+0LvQttC90L4g0LHRi9GC0Ywg0L/QvtC70L7QttC40YLQtdC70YzQvdGL0Lwg0YfQuNGB0LvQvtC8Jyk7CiAgICAgICAgICAgIHZhbGlkID0gZmFsc2U7CiAgICAgICAgfQogICAgICAgIGlmIChpc05hTihjb25jMikgfHwgY29uYzIgPT09IG51bGwgfHwgY29uYzIgPT09ICcnKSB7CiAgICAgICAgICAgIHNob3dFcnJvcignZXJyLWNvbmMyJywgJ9CS0LLQtdC00LjRgtC1INC90LDRh9Cw0LvRjNC90YPRjiDQutC+0L3RhtC10L3RgtGA0LDRhtC40Y4gQ+KCgOKCgicpOwogICAgICAgICAgICB2YWxpZCA9IGZhbHNlOwogICAgICAgIH0gZWxzZSBpZiAoY29uYzIgPD0gMCkgewogICAgICAgICAgICBzaG93RXJyb3IoJ2Vyci1jb25jMicsICfQmtC+0L3RhtC10L3RgtGA0LDRhtC40Y8g0LTQvtC70LbQvdCwINCx0YvRgtGMINC/0L7Qu9C+0LbQuNGC0LXQu9GM0L3Ri9C8INGH0LjRgdC70L7QvCcpOwogICAgICAgICAgICB2YWxpZCA9IGZhbHNlOwogICAgICAgIH0KICAgICAgICBpZiAoaXNOYU4odGltZTIpIHx8IHRpbWUyID09PSBudWxsIHx8IHRpbWUyID09PSAnJykgewogICAgICAgICAgICBzaG93RXJyb3IoJ2Vyci10aW1lMicsICfQktCy0LXQtNC40YLQtSDQstGA0LXQvNGPINC/0L7Qu9GD0L/RgNC10LLRgNCw0YnQtdC90LjRjyDQtNC70Y8g0L7Qv9GL0YLQsCAyJyk7CiAgICAgICAgICAgIHZhbGlkID0gZmFsc2U7CiAgICAgICAgfSBlbHNlIGlmICh0aW1lMiA8PSAwKSB7CiAgICAgICAgICAgIHNob3dFcnJvcignZXJyLXRpbWUyJywgJ9CS0YDQtdC80Y8g0LTQvtC70LbQvdC+INCx0YvRgtGMINC/0L7Qu9C+0LbQuNGC0LXQu9GM0L3Ri9C8INGH0LjRgdC70L7QvCcpOwogICAgICAgICAgICB2YWxpZCA9IGZhbHNlOwogICAgICAgIH0KICAgICAgICByZXR1cm4gdmFsaWQ7CiAgICB9CgogICAgZnVuY3Rpb24gY2FsY3VsYXRlKCkgewogICAgICAgIHZhciBjb25jMUlucHV0ID0gZ2V0RWwoJ2NvbmMxJyk7CiAgICAgICAgdmFyIHRpbWUxSW5wdXQgPSBnZXRFbCgndGltZTEnKTsKICAgICAgICB2YXIgY29uYzJJbnB1dCA9IGdldEVsKCdjb25jMicpOwogICAgICAgIHZhciB0aW1lMklucHV0ID0gZ2V0RWwoJ3RpbWUyJyk7CgogICAgICAgIHZhciBjb25jMSA9IHBhcnNlRmxvYXQoY29uYzFJbnB1dC52YWx1ZSk7CiAgICAgICAgdmFyIHRpbWUxID0gcGFyc2VGbG9hdCh0aW1lMUlucHV0LnZhbHVlKTsKICAgICAgICB2YXIgY29uYzIgPSBwYXJzZUZsb2F0KGNvbmMySW5wdXQudmFsdWUpOwogICAgICAgIHZhciB0aW1lMiA9IHBhcnNlRmxvYXQodGltZTJJbnB1dC52YWx1ZSk7CgogICAgICAgIGlmICghdmFsaWRhdGVJbnB1dHMoY29uYzEsIHRpbWUxLCBjb25jMiwgdGltZTIpKSB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIGNsZWFyQWxsRXJyb3JzKCk7CgogICAgICAgIGlmIChNYXRoLmFicyhjb25jMSAtIGNvbmMyKSA8IDFlLTEyKSB7CiAgICAgICAgICAgIHNob3dFcnJvcignZXJyLWNvbmMxJywgJ9Ca0L7QvdGG0LXQvdGC0YDQsNGG0LjQuCDQtNC+0LvQttC90Ysg0LHRi9GC0Ywg0YDQsNC30L3Ri9C80LgnKTsKICAgICAgICAgICAgc2hvd0Vycm9yKCdlcnItY29uYzInLCAn0JrQvtC90YbQtdC90YLRgNCw0YbQuNC4INC00L7Qu9C20L3RiyDQsdGL0YLRjCDRgNCw0LfQvdGL0LzQuCcpOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICB2YXIgcmF0aW9UID0gdGltZTIgLyB0aW1lMTsKICAgICAgICB2YXIgcmF0aW9DID0gY29uYzEgLyBjb25jMjsKCiAgICAgICAgaWYgKHJhdGlvVCA8PSAwIHx8IHJhdGlvQyA8PSAwKSB7CiAgICAgICAgICAgIHNob3dFcnJvcignZXJyLWNvbmMxJywgJ9Ce0YjQuNCx0LrQsCDQstGL0YfQuNGB0LvQtdC90LjQuTog0L/RgNC+0LLQtdGA0YzRgtC1INCy0LLQtdC00ZHQvdC90YvQtSDQt9C90LDRh9C10L3QuNGPJyk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIHZhciBsblQgPSBNYXRoLmxvZyhyYXRpb1QpOwogICAgICAgIHZhciBsbkMgPSBNYXRoLmxvZyhyYXRpb0MpOwoKICAgICAgICBpZiAoTWF0aC5hYnMobG5DKSA8IDFlLTE1KSB7CiAgICAgICAgICAgIHNob3dFcnJvcignZXJyLWNvbmMxJywgJ9Ca0L7QvdGG0LXQvdGC0YDQsNGG0LjQuCDRgdC70LjRiNC60L7QvCDQsdC70LjQt9C60Lgg4oCUINC90LXQstC+0LfQvNC+0LbQvdC+INCy0YvRh9C40YHQu9C40YLRjCDQv9C+0YDRj9C00L7QuicpOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICB2YXIgb3JkZXIgPSAxICsgbG5UIC8gbG5DOwoKICAgICAgICB2YXIgazsKICAgICAgICB2YXIgdW5pdDsKICAgICAgICB2YXIgbm90ZVRleHQgPSAnJzsKCiAgICAgICAgaWYgKE1hdGguYWJzKG9yZGVyIC0gMSkgPCAxZS02KSB7CiAgICAgICAgICAgIGsgPSBNYXRoLkxOMiAvIHRpbWUxOwogICAgICAgICAgICB1bml0ID0gJ9GB4oG7wrkgKNC40LvQuCDQvNC40L3igbvCuSwg0LIg0LfQsNCy0LjRgdC40LzQvtGB0YLQuCDQvtGCINC10LTQuNC90LjRhiDQstGA0LXQvNC10L3QuCknOwogICAgICAgICAgICBub3RlVGV4dCA9ICfQn9C+0YDRj9C00L7QuiDQsdC70LjQt9C+0Log0LogMS4g0JrQvtC90YHRgtCw0L3RgtCwINGB0LrQvtGA0L7RgdGC0Lgg0YDQsNGB0YHRh9C40YLQsNC90LAg0L/QviDRhNC+0YDQvNGD0LvQtSBrID0gbG4oMikgLyB04oKBL+KCgi4nOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHZhciBkZW5vbSA9IHRpbWUxICogKG9yZGVyIC0gMSkgKiBNYXRoLnBvdyhjb25jMSwgb3JkZXIgLSAxKTsKICAgICAgICAgICAgaWYgKE1hdGguYWJzKGRlbm9tKSA8IDFlLTE1IHx8ICFpc0Zpbml0ZShkZW5vbSkpIHsKICAgICAgICAgICAgICAgIHNob3dFcnJvcignZXJyLWNvbmMxJywgJ9Ce0YjQuNCx0LrQsCDQstGL0YfQuNGB0LvQtdC90LjRjyDQutC+0L3RgdGC0LDQvdGC0Ysg0YHQutC+0YDQvtGB0YLQuDog0LTQtdC70LXQvdC40LUg0L3QsCDQvdC+0LvRjCcpOwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGsgPSAoTWF0aC5wb3coMiwgb3JkZXIgLSAxKSAtIDEpIC8gZGVub207CiAgICAgICAgICAgIHVuaXQgPSAnKNC7XihuLTEpKS8o0LzQvtC70YxeKG4tMSnCt9C10LTQuNC90LjRhtCwINCy0YDQtdC80LXQvdC4KSc7CiAgICAgICAgICAgIG5vdGVUZXh0ID0gJ9Ca0L7QvdGB0YLQsNC90YLQsCDRgdC60L7RgNC+0YHRgtC4INGA0LDRgdGB0YfQuNGC0LDQvdCwINC/0L4g0L7QsdGJ0LXQuSDRhNC+0YDQvNGD0LvQtSDQtNC70Y8gbiDiiaAgMS4nOwogICAgICAgIH0KCiAgICAgICAgaWYgKCFpc0Zpbml0ZShvcmRlcikgfHwgaXNOYU4ob3JkZXIpKSB7CiAgICAgICAgICAgIHNob3dFcnJvcignZXJyLWNvbmMxJywgJ9Cg0LXQt9GD0LvRjNGC0LDRgiDQstGL0YfQuNGB0LvQtdC90LjRjyDRgdC+0LTQtdGA0LbQuNGCINC90LXQtNC+0L/Rg9GB0YLQuNC80L7QtSDQt9C90LDRh9C10L3QuNC1LiDQn9GA0L7QstC10YDRjNGC0LUg0LTQsNC90L3Ri9C1LicpOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIGlmICghaXNGaW5pdGUoaykgfHwgaXNOYU4oaykgfHwgayA8PSAwKSB7CiAgICAgICAgICAgIHNob3dFcnJvcignZXJyLXRpbWUxJywgJ9Ca0L7QvdGB0YLQsNC90YLQsCDRgdC60L7RgNC+0YHRgtC4INC/0L7Qu9GD0YfQuNC70LDRgdGMINC90LXQutC+0YDRgNC10LrRgtC90L7QuS4g0J/RgNC+0LLQtdGA0YzRgtC1INGB0L7Qs9C70LDRgdC+0LLQsNC90L3QvtGB0YLRjCDQtNCw0L3QvdGL0YUuJyk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIHZhciBvcmRlckRpc3BsYXkgPSBvcmRlci50b0ZpeGVkKDMpOwogICAgICAgIHZhciBrRGlzcGxheTsKICAgICAgICBpZiAoTWF0aC5hYnMoaykgPCAwLjAwMDEgfHwgTWF0aC5hYnMoaykgPj0gMTAwMDApIHsKICAgICAgICAgICAga0Rpc3BsYXkgPSBrLnRvRXhwb25lbnRpYWwoNCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAga0Rpc3BsYXkgPSBrLnRvRml4ZWQoNCk7CiAgICAgICAgfQoKICAgICAgICBnZXRFbCgnb3JkZXItdmFsdWUnKS50ZXh0Q29udGVudCA9IG9yZGVyRGlzcGxheTsKICAgICAgICBnZXRFbCgnY29uc3QtdmFsdWUnKS50ZXh0Q29udGVudCA9IGtEaXNwbGF5OwogICAgICAgIGdldEVsKCdjb25zdC11bml0JykudGV4dENvbnRlbnQgPSB1bml0OwoKICAgICAgICB2YXIgbm90ZUVsID0gZ2V0RWwoJ3Jlc3VsdC1ub3RlJyk7CiAgICAgICAgbm90ZUVsLnRleHRDb250ZW50ID0gbm90ZVRleHQ7CiAgICAgICAgbm90ZUVsLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snOwoKICAgICAgICBpZiAob3JkZXIgPCAwKSB7CiAgICAgICAgICAgIGdldEVsKCdyZXN1bHQtbm90ZScpLnRleHRDb250ZW50ID0gbm90ZVRleHQgKyAnINCS0L3QuNC80LDQvdC40LU6INC+0YLRgNC40YbQsNGC0LXQu9GM0L3Ri9C5INC/0L7RgNGP0LTQvtC6INCy0L7Qt9C80L7QttC10L0g0LIg0YHQu9GD0YfQsNC1INC40L3Qs9C40LHQuNGA0L7QstCw0L3QuNGPLCDQvdC+INCy0YHRgtGA0LXRh9Cw0LXRgtGB0Y8g0YDQtdC00LrQvi4nOwogICAgICAgIH0KICAgICAgICBpZiAoTWF0aC5hYnMob3JkZXIpIDwgMC4wNSAmJiBvcmRlciA+PSAtMC4wNSkgewogICAgICAgICAgICBnZXRFbCgncmVzdWx0LW5vdGUnKS50ZXh0Q29udGVudCA9IG5vdGVUZXh0ICsgJyDQn9C+0YDRj9C00L7QuiDQsdC70LjQt9C+0Log0Log0L3Rg9C70Y4g4oCUINGB0LrQvtGA0L7RgdGC0Ywg0YDQtdCw0LrRhtC40Lgg0L/RgNCw0LrRgtC40YfQtdGB0LrQuCDQvdC1INC30LDQstC40YHQuNGCINC+0YIg0LrQvtC90YbQtdC90YLRgNCw0YbQuNC4INGA0LXQsNCz0LXQvdGC0LAgKNC60LDRgtCw0LvQuNGC0LjRh9C10YHQutC40LUg0LjQu9C4INGE0L7RgtC+0YXQuNC80LjRh9C10YHQutC40LUg0L/RgNC+0YbQtdGB0YHRiykuJzsKICAgICAgICB9CiAgICB9CgogICAgZnVuY3Rpb24gcmVzZXQoKSB7CiAgICAgICAgZ2V0RWwoJ2NvbmMxJykudmFsdWUgPSAnJzsKICAgICAgICBnZXRFbCgndGltZTEnKS52YWx1ZSA9ICcnOwogICAgICAgIGdldEVsKCdjb25jMicpLnZhbHVlID0gJyc7CiAgICAgICAgZ2V0RWwoJ3RpbWUyJykudmFsdWUgPSAnJzsKICAgICAgICBnZXRFbCgnb3JkZXItdmFsdWUnKS50ZXh0Q29udGVudCA9ICcwJzsKICAgICAgICBnZXRFbCgnY29uc3QtdmFsdWUnKS50ZXh0Q29udGVudCA9ICcwJzsKICAgICAgICBnZXRFbCgnY29uc3QtdW5pdCcpLnRleHRDb250ZW50ID0gJ9C10LQuINC40LfQvC4nOwogICAgICAgIGdldEVsKCdyZXN1bHQtbm90ZScpLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICAgICAgZ2V0RWwoJ3Jlc3VsdC1ub3RlJykudGV4dENvbnRlbnQgPSAnJzsKICAgICAgICBjbGVhckFsbEVycm9ycygpOwogICAgfQoKICAgIGdldEVsKCdjYWxjLWJ0bicpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgY2FsY3VsYXRlKTsKICAgIGdldEVsKCdyZXNldC1idG4nKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHJlc2V0KTsKCiAgICB2YXIgaW5wdXRJZHMgPSBbJ2NvbmMxJywgJ3RpbWUxJywgJ2NvbmMyJywgJ3RpbWUyJ107CiAgICBpbnB1dElkcy5mb3JFYWNoKGZ1bmN0aW9uKGlkKSB7CiAgICAgICAgdmFyIGVsID0gZ2V0RWwoaWQpOwogICAgICAgIGlmIChlbCkgewogICAgICAgICAgICBlbC5hZGRFdmVudExpc3RlbmVyKCdrZXlwcmVzcycsIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIGlmIChlLmtleSA9PT0gJ0VudGVyJykgewogICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgICAgICAgICBjYWxjdWxhdGUoKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgZXJySWQgPSAnZXJyLScgKyBpZDsKICAgICAgICAgICAgICAgIHZhciBlcnJFbCA9IGdldEVsKGVycklkKTsKICAgICAgICAgICAgICAgIGlmIChlcnJFbCAmJiBlcnJFbC5jbGFzc0xpc3QuY29udGFpbnMoJ3Nob3cnKSkgewogICAgICAgICAgICAgICAgICAgIHZhciB2YWwgPSBwYXJzZUZsb2F0KGVsLnZhbHVlKTsKICAgICAgICAgICAgICAgICAgICBpZiAoIWlzTmFOKHZhbCkgJiYgdmFsID4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICBjbGVhckVycm9yKGVycklkKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwogICAgICAgIH0KICAgIH0pOwp9KSgpOwo=