Калькулятор плавления
Рассчитайте количество теплоты, необходимое для плавления вещества, с учётом или без учёта предварительного нагрева до температуры плавления.
—
Общее количество теплоты
кДж
—
Общее количество теплоты
ккал
—
Теплота нагрева до Tпл
кДж
Как пользоваться калькулятором
1
Выберите вещество из списка — калькулятор автоматически подставит его удельную теплоту плавления, температуру плавления и удельную теплоёмкость. Например, для льда это 334 кДж/кг, 0 °C и 2100 Дж/(кг·°C).
2
Введите массу вещества и выберите единицу измерения (килограммы, граммы или тонны). Калькулятор переведёт всё в килограммы автоматически. Например, 500 г = 0,5 кг.
3
Если вещество ещё не нагрето до температуры плавления — поставьте галочку «Учитывать нагрев» и укажите начальную температуру. Калькулятор учтёт энергию на нагрев и на само плавление.
4
Нажмите «Рассчитать». Результат покажет общую теплоту в килоджоулях и килокалориях, а также отдельно — теплоту плавления и теплоту нагрева (если она учитывалась).
Примеры расчёта
Сценарий 1: Плавление льда
Масса льда: 3 кг. Лёд уже при 0 °C (температура плавления). Удельная теплота плавления льда — 334 кДж/кг. Результат: Q = 3 × 334 = 1002 кДж (≈ 239,5 ккал).
Сценарий 2: Плавление алюминия с нагревом
Масса алюминия: 10 кг. Начальная температура: 20 °C. Температура плавления: 660 °C. Удельная теплоёмкость: 920 Дж/(кг·°C). Удельная теплота плавления: 390 кДж/кг. Нагрев: 10 × 920 × (660 − 20) = 5 888 000 Дж = 5888 кДж. Плавление: 10 × 390 = 3900 кДж. Итого: 9788 кДж (≈ 2340 ккал).
Сценарий 3: Плавление свинца в граммах
Масса свинца: 250 г = 0,25 кг. Свинец уже при 327 °C. Удельная теплота плавления свинца — 23 кДж/кг. Результат: Q = 0,25 × 23 = 5,75 кДж (≈ 1,37 ккал). Совсем немного — свинец плавится легко.
Формулы расчёта
Калькулятор использует две основные формулы — для плавления и для нагрева:
Qплав = m × λ
где m — масса вещества (кг), λ — удельная теплота плавления (кДж/кг), а Qплав — количество теплоты, необходимое для плавления (кДж).
Qнагрев = m × c × (Tпл − Tнач) / 1000
где m — масса (кг), c — удельная теплоёмкость (Дж/(кг·°C)), Tпл — температура плавления (°C), Tнач — начальная температура (°C). Деление на 1000 переводит джоули в килоджоули.
Общая теплота:
Qобщ = Qнагрев + Qплав
Для перевода в килокалории: Qккал = Qобщ / 4,184 (1 ккал ≈ 4,184 кДж).
Пошаговое объяснение
Расчёт состоит из двух этапов. Этап 1 — нагрев: если вещество холоднее температуры плавления, сначала нужно нагреть его до Tпл. Количество теплоты зависит от массы, удельной теплоёмкости и разницы температур. Этап 2 — плавление: когда вещество достигло температуры плавления, дополнительная энергия идёт на разрушение кристаллической решётки (или молекулярных связей), а температура при этом не меняется. Теплота плавления рассчитывается через удельную теплоту плавления λ. Если вещество уже при температуре плавления — первый этап пропускается, и считается только Qплав.
Где применяется
- Металлургия и литейное производство: расчёт энергии для плавки алюминия, стали, чугуна в печах — позволяет оценить затраты топлива или электроэнергии.
- Пищевая промышленность: расчёт теплоты для плавления шоколада, масла, жиров — важно для точного контроля температуры при темперировании.
- Климатология и экология: оценка энергии, поглощаемой при таянии ледников и снежных покровов — ключевой параметр в моделях изменения климата.
- Строительство и дорожное хозяйство: расчёт энергии для плавления снега и льда на дорогах и тротуарах с помощью греющих кабелей.
- Энергетика: проектирование систем аккумулирования тепла с использованием фазовых переходов (например, парафиновых теплоаккумуляторов).
- Образование и наука: лабораторные работы по физике — определение удельной теплоты плавления различных веществ экспериментальным путём.
Важные нюансы
- Калькулятор предполагает, что вещество однородное и чистое. Примеси могут заметно изменить температуру плавления и удельную теплоту плавления.
- Удельная теплоёмкость c считается постоянной. В реальности она немного меняется с температурой, но для практических расчётов этим изменением можно пренебречь.
- Результат округляется до двух знаков после запятой — для бытовых и инженерных оценок этой точности достаточно. Для научных расчётов可能需要更多 знаков.
- Если начальная температура равна или выше температуры плавления — нагрева не требуется, и калькулятор покажет ошибку при включённой опции нагрева.
- Калькулятор не учитывает тепловые потери в окружающую среду. В реальной печи или на плите часть тепла уходит в воздух, и фактический расход энергии будет выше.
- Для веществ, которые не плавятся, а сразу разлагаются или горят (например, дерево, бумага), данный калькулятор не применим.
Частые ошибки
- Путаница единиц массы: вводят массу в граммах, а единицу оставляют «килограммы» — результат получается в 1000 раз меньше реального. Всегда проверяйте выбранную единицу.
- Забывают про нагрев: если вещество холодное, а галочка не поставлена — результат будет только по теплоте плавления, без учёта энергии на нагрев. Ошибка может составлять десятки процентов.
- Начальная температура выше температуры плавления: если вещество уже жидкое, плавить его не нужно. Калькулятор выдаст ошибку — это корректное поведение.
- Использование неправильной удельной теплоты плавления: для одного и того же вещества в разных справочниках значения могут немного отличаться (особенно для сплавов). Калькулятор использует усреднённые справочные данные.
- Отрицательная масса: физически бессмысленно. Калькулятор проверяет, что масса больше нуля, иначе выдаёт ошибку.
- Забывают перевести джоули в килоджоули: при ручных расчётах легко запутаться в размерности. Калькулятор выдаёт результат сразу в кДж и ккал.
Ответы на частые вопросы
В: Почему при плавлении температура не растёт?
О: Потому что вся подводимая энергия тратится на разрушение связей между частицами вещества, а не на увеличение их кинетической энергии. Это называется скрытой теплотой плавления.
В: Можно ли использовать калькулятор для сплавов?
О: Можно, но приближённо. Сплавы часто плавятся в интервале температур, а не при одной точке. Выберите наиболее близкий по составу чистый металл или используйте средние значения.
В: Почему результат в ккал отличается от ручного пересчёта?
О: Калькулятор использует коэффициент 4,184 кДж/ккал (международная килокалория). В старых справочниках может использоваться термохимическая калория (4,1840) или калория при 15 °C (4,1855). Разница не превышает 0,04%.
В: Что делать, если нужно растопить лёд с отрицательной температурой?
О: Поставьте галочку «Учитывать нагрев», выберите «Лёд (вода)» и укажите начальную температуру, например, −10 °C. Калькулятор посчитает и нагрев льда до 0 °C, и его плавление.
В: Учитывает ли калькулятор теплоёмкость в жидкой фазе после плавления?
О: Нет, расчёт заканчивается моментом полного расплавления. Дальнейший нагрев жидкости — это уже другая задача.
В: Насколько точны справочные данные в калькуляторе?
О: Данные взяты из стандартных физических справочников и округлены до разумных значений. Для большинства практических применений точность более чем достаточна.
Источники и справочные данные
Расчёт основан на классических законах термодинамики и физики фазовых переходов. Удельные теплоты плавления (λ), температуры плавления и удельные теплоёмкости (c) взяты из стандартных физических справочников: таблицы Менделеева и справочников теплофизических свойств веществ. Для льда используется значение 334 кДж/кг, для алюминия — 390 кДж/кг, для стали — 84 кДж/кг. Значения могут незначительно варьироваться в зависимости от чистоты вещества и условий измерения. Формулы соответствуют программе физики 8–10 классов средней школы и курсу общей физики технических вузов.
Плавление веществ: физика процесса, расчёты и практические применения
Что такое плавление и почему оно требует энергии
Плавление — это переход вещества из твёрдого состояния в жидкое под действием тепла. На молекулярном уровне при нагреве твёрдого тела частицы колеблются всё сильнее, пока связи между ними не начинают рваться. Самое интересное: во время плавления температура не растёт. Вся подводимая энергия уходит на разрыв связей, а не на нагрев. Эта энергия называется скрытой теплотой плавления.
Например, чтобы растопить 1 кг льда при 0 °C, нужно 334 кДж тепла — столько же энергии хватило бы, чтобы нагреть тот же килограмм воды от 0 до 80 °C. Именно поэтому таяние снега весной отнимает столько тепла у окружающей среды.
Удельная теплота плавления: ключевой параметр каждого вещества
Удельная теплота плавления λ показывает, сколько килоджоулей нужно, чтобы расплавить 1 килограмм вещества при его температуре плавления. Это табличная величина — для каждого материала она своя и не зависит от массы. Вот несколько характерных значений:
- Лёд (вода): 334 кДж/кг — одно из самых высоких значений среди обычных веществ, поэтому лёд так эффективно охлаждает напитки.
- Алюминий: 390 кДж/кг — почти как у льда, но при температуре 660 °C.
- Железо: 272 кДж/кг — ниже, чем у алюминия, зато температура плавления 1539 °C требует огромных затрат на предварительный нагрев.
- Медь: 213 кДж/кг — сравнительно немного, медь плавится при 1085 °C и широко используется в электропромышленности.
- Свинец: 23 кДж/кг — очень низкое значение, поэтому свинец легко плавится даже на газовой плите при 327 °C.
- Ртуть: 12 кДж/кг — единственный металл, жидкий при комнатной температуре; его температура плавления −39 °C.
- Парафин: 150 кДж/кг — при 50 °C, широко используется в свечах и теплоаккумуляторах.
Обратите внимание: вещества с высокой температурой плавления (вольфрам — 3422 °C, платина — 1768 °C) требуют огромных суммарных затрат энергии именно из-за необходимости предварительного нагрева, хотя их λ может быть не самой высокой.
Двухэтапный расчёт: нагрев плюс плавление
В реальных задачах вещество редко уже находится при температуре плавления. Чаще его нужно сначала нагреть. Поэтому полный расчёт выглядит так:
Шаг 1 — нагрев до Tпл: Qнагрев = m × c × (Tпл − Tнач). Здесь c — удельная теплоёмкость. Для воды она рекордно высокая — 4200 Дж/(кг·°C), для металлов обычно в диапазоне 130–920 Дж/(кг·°C).
Шаг 2 — плавление: Qплав = m × λ. Температура в этой формуле не фигурирует, потому что при плавлении она постоянна.
Итог: Qобщ = Qнагрев + Qплав. Обе величины нужно привести к одним единицам — мы используем килоджоули (кДж).
Практический пример: плавка 50 кг алюминия
Представим, что у вас есть 50 кг алюминиевых отходов при комнатной температуре 20 °C, и вы хотите переплавить их в слитки. Алюминий плавится при 660 °C, его теплоёмкость 920 Дж/(кг·°C), теплота плавления 390 кДж/кг.
Нагрев: 50 × 920 × (660 − 20) = 29 440 000 Дж = 29 440 кДж.
Плавление: 50 × 390 = 19 500 кДж.
Итого: 48 940 кДж (≈ 11 700 ккал). Для сравнения: столько энергии содержится примерно в 1,2 литрах бензина. Реальная промышленная печь потребит больше из-за тепловых потерь (КПД обычно 40–70%).
Где в жизни пригождаются эти расчёты
Понимание теплоты плавления полезно далеко за пределами школьного кабинета физики:
- Кулинария: плавление шоколада (λ ≈ 40 кДж/кг, Tпл ≈ 34 °C) требует аккуратного нагрева на водяной бане, чтобы не перегреть и не испортить текстуру. Расчёт помогает подобрать мощность и время.
- Зимнее содержание дорог: чтобы растопить 1 кг льда на дороге, нужно 334 кДж. Зная площадь обледенения и толщину льда, коммунальные службы рассчитывают расход реагентов и мощность греющих систем.
- Медицина: криохирургия использует замораживание и оттаивание тканей. Понимание теплоты плавления льда в клетках критически важно для расчёта времени процедуры.
- Косметология: лазерная эпиляция и шлифовка кожи основаны на controlled thermal damage — точный расчёт энергии предотвращает ожоги.
Советы для точных бытовых расчётов
Если вы используете калькулятор для практических нужд — вот несколько рекомендаций. Во-первых, всегда уточняйте, с какой температурой вещество поступает в процесс. Разница в 10 градусов для большой массы может дать ощутимую ошибку. Во-вторых, помните про тепловые потери: в реальной плите или костре до 30–50% тепла уходит мимо. Закладывайте запас 20–30% к расчётному значению. В-третьих, для сплавов (бронза, латунь, дюраль) берите усреднённые значения или консультируйтесь со справочником — калькулятор даёт данные для чистых веществ.
Заключение
Калькулятор плавления — простой, но мощный инструмент для быстрой оценки тепловых затрат. Он опирается на фундаментальные законы физики и проверенные справочные данные. Будь то подготовка к экзамену, расчёт печи для хобби или профессиональная оценка энергозатрат — понимание теплоты плавления помогает принимать обоснованные решения и избегать дорогостоящих ошибок.
CiAgICAgICAgKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAvLyDQodC/0YDQsNCy0L7Rh9C90LjQuiDQstC10YnQtdGB0YLQsgogICAgICAgICAgICB2YXIgc3Vic3RhbmNlcyA9IHsKICAgICAgICAgICAgICAgIGFsdW1pbnVtOiB7IG5hbWU6ICfQkNC70Y7QvNC40L3QuNC5JywgbGFtYmRhOiAzOTAsIG1lbHRUZW1wOiA2NjAsIGhlYXRDYXBhY2l0eTogOTIwIH0sCiAgICAgICAgICAgICAgICBpY2U6IHsgbmFtZTogJ9Cb0ZHQtCAo0LLQvtC00LApJywgbGFtYmRhOiAzMzQsIG1lbHRUZW1wOiAwLCBoZWF0Q2FwYWNpdHk6IDIxMDAgfSwKICAgICAgICAgICAgICAgIGlyb246IHsgbmFtZTogJ9CW0LXQu9C10LfQvicsIGxhbWJkYTogMjcyLCBtZWx0VGVtcDogMTUzOSwgaGVhdENhcGFjaXR5OiA0NjAgfSwKICAgICAgICAgICAgICAgIGNvcHBlcjogeyBuYW1lOiAn0JzQtdC00YwnLCBsYW1iZGE6IDIxMywgbWVsdFRlbXA6IDEwODUsIGhlYXRDYXBhY2l0eTogNDAwIH0sCiAgICAgICAgICAgICAgICBsZWFkOiB7IG5hbWU6ICfQodCy0LjQvdC10YYnLCBsYW1iZGE6IDIzLCBtZWx0VGVtcDogMzI3LCBoZWF0Q2FwYWNpdHk6IDEzMCB9LAogICAgICAgICAgICAgICAgc3RlZWw6IHsgbmFtZTogJ9Ch0YLQsNC70YwnLCBsYW1iZGE6IDg0LCBtZWx0VGVtcDogMTQwMCwgaGVhdENhcGFjaXR5OiA1MDAgfSwKICAgICAgICAgICAgICAgIGdvbGQ6IHsgbmFtZTogJ9CX0L7Qu9C+0YLQvicsIGxhbWJkYTogNjcsIG1lbHRUZW1wOiAxMDY0LCBoZWF0Q2FwYWNpdHk6IDEyOSB9LAogICAgICAgICAgICAgICAgc2lsdmVyOiB7IG5hbWU6ICfQodC10YDQtdCx0YDQvicsIGxhbWJkYTogMTExLCBtZWx0VGVtcDogOTYyLCBoZWF0Q2FwYWNpdHk6IDI1MCB9LAogICAgICAgICAgICAgICAgbWVyY3VyeTogeyBuYW1lOiAn0KDRgtGD0YLRjCcsIGxhbWJkYTogMTIsIG1lbHRUZW1wOiAtMzksIGhlYXRDYXBhY2l0eTogMTQwIH0sCiAgICAgICAgICAgICAgICBwYXJhZmZpbjogeyBuYW1lOiAn0J/QsNGA0LDRhNC40L0nLCBsYW1iZGE6IDE1MCwgbWVsdFRlbXA6IDUwLCBoZWF0Q2FwYWNpdHk6IDIyMDAgfQogICAgICAgICAgICB9OwoKICAgICAgICAgICAgLy8gRE9NLdGN0LvQtdC80LXQvdGC0YsKICAgICAgICAgICAgdmFyIHN1YnN0YW5jZVNlbGVjdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdubi1nZW4tc3Vic3RhbmNlJyk7CiAgICAgICAgICAgIHZhciBtYXNzSW5wdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbm4tZ2VuLW1hc3MnKTsKICAgICAgICAgICAgdmFyIG1hc3NVbml0U2VsZWN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25uLWdlbi1tYXNzLXVuaXQnKTsKICAgICAgICAgICAgdmFyIGNvbnNpZGVySGVhdGluZ0NoZWNrYm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25uLWdlbi1jb25zaWRlci1oZWF0aW5nJyk7CiAgICAgICAgICAgIHZhciB0ZW1wV3JhcHBlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdubi1nZW4tdGVtcC13cmFwcGVyJyk7CiAgICAgICAgICAgIHZhciBpbml0VGVtcElucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25uLWdlbi1pbml0LXRlbXAnKTsKICAgICAgICAgICAgdmFyIGNhbGNCdG4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbm4tZ2VuLWNhbGMtYnRuJyk7CiAgICAgICAgICAgIHZhciByZXNldEJ0biA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdubi1nZW4tcmVzZXQtYnRuJyk7CgogICAgICAgICAgICAvLyDQrdC70LXQvNC10L3RgtGLINC+0YjQuNCx0L7QugogICAgICAgICAgICB2YXIgZXJyU3Vic3RhbmNlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25uLWdlbi1lcnItc3Vic3RhbmNlJyk7CiAgICAgICAgICAgIHZhciBlcnJNYXNzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25uLWdlbi1lcnItbWFzcycpOwogICAgICAgICAgICB2YXIgZXJyVGVtcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdubi1nZW4tZXJyLXRlbXAnKTsKCiAgICAgICAgICAgIC8vINCt0LvQtdC80LXQvdGC0Ysg0YDQtdC30YPQu9GM0YLQsNGC0L7QsgogICAgICAgICAgICB2YXIgcmVzdWx0VG90YWxLaiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdubi1nZW4tcmVzdWx0LXRvdGFsLWtqJyk7CiAgICAgICAgICAgIHZhciByZXN1bHRUb3RhbEtjYWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbm4tZ2VuLXJlc3VsdC10b3RhbC1rY2FsJyk7CiAgICAgICAgICAgIHZhciByZXN1bHRNZWx0S2ogPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbm4tZ2VuLXJlc3VsdC1tZWx0LWtqJyk7CiAgICAgICAgICAgIHZhciByZXN1bHRIZWF0S2ogPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbm4tZ2VuLXJlc3VsdC1oZWF0LWtqJyk7CiAgICAgICAgICAgIHZhciByZXN1bHRIZWF0SXRlbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdubi1nZW4tcmVzdWx0LWhlYXQtaXRlbScpOwogICAgICAgICAgICB2YXIgcmVzdWx0TWVsdEl0ZW0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbm4tZ2VuLXJlc3VsdC1tZWx0LWl0ZW0nKTsKICAgICAgICAgICAgdmFyIHJlc3VsdEluZm8gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbm4tZ2VuLXJlc3VsdC1pbmZvJyk7CgogICAgICAgICAgICAvLyDQodC60YDRi9GC0Ywv0L/QvtC60LDQt9Cw0YLRjCDQv9C+0LvQtSDQvdCw0YfQsNC70YzQvdC+0Lkg0YLQtdC80L/QtdGA0LDRgtGD0YDRiwogICAgICAgICAgICBmdW5jdGlvbiB0b2dnbGVUZW1wRmllbGQoKSB7CiAgICAgICAgICAgICAgICBpZiAoY29uc2lkZXJIZWF0aW5nQ2hlY2tib3guY2hlY2tlZCkgewogICAgICAgICAgICAgICAgICAgIHRlbXBXcmFwcGVyLmNsYXNzTGlzdC5yZW1vdmUoJ25uLWdlbi1jYWwtaGlkZGVuJyk7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIHRlbXBXcmFwcGVyLmNsYXNzTGlzdC5hZGQoJ25uLWdlbi1jYWwtaGlkZGVuJyk7CiAgICAgICAgICAgICAgICAgICAgaW5pdFRlbXBJbnB1dC52YWx1ZSA9ICcnOwogICAgICAgICAgICAgICAgICAgIGhpZGVFcnJvcihlcnJUZW1wKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgY29uc2lkZXJIZWF0aW5nQ2hlY2tib3guYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgdG9nZ2xlVGVtcEZpZWxkKTsKCiAgICAgICAgICAgIC8vINCh0LrRgNGL0YLRjCDRgdC+0L7QsdGJ0LXQvdC40LUg0L7QsSDQvtGI0LjQsdC60LUKICAgICAgICAgICAgZnVuY3Rpb24gaGlkZUVycm9yKGVsKSB7CiAgICAgICAgICAgICAgICBlbC5jbGFzc0xpc3QuYWRkKCdubi1nZW4tY2FsLWhpZGRlbicpOwogICAgICAgICAgICAgICAgZWwudGV4dENvbnRlbnQgPSAnJzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8g0J/QvtC60LDQt9Cw0YLRjCDRgdC+0L7QsdGJ0LXQvdC40LUg0L7QsSDQvtGI0LjQsdC60LUKICAgICAgICAgICAgZnVuY3Rpb24gc2hvd0Vycm9yKGVsLCBtZXNzYWdlKSB7CiAgICAgICAgICAgICAgICBlbC50ZXh0Q29udGVudCA9IG1lc3NhZ2U7CiAgICAgICAgICAgICAgICBlbC5jbGFzc0xpc3QucmVtb3ZlKCdubi1nZW4tY2FsLWhpZGRlbicpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyDQodCx0YDQvtGBINCy0YHQtdGFINC+0YjQuNCx0L7QugogICAgICAgICAgICBmdW5jdGlvbiBjbGVhckFsbEVycm9ycygpIHsKICAgICAgICAgICAgICAgIGhpZGVFcnJvcihlcnJTdWJzdGFuY2UpOwogICAgICAgICAgICAgICAgaGlkZUVycm9yKGVyck1hc3MpOwogICAgICAgICAgICAgICAgaGlkZUVycm9yKGVyclRlbXApOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyDQodCx0YDQvtGBINGA0LXQt9GD0LvRjNGC0LDRgtC+0LIKICAgICAgICAgICAgZnVuY3Rpb24gcmVzZXRSZXN1bHRzKCkgewogICAgICAgICAgICAgICAgcmVzdWx0VG90YWxLai50ZXh0Q29udGVudCA9ICfigJQnOwogICAgICAgICAgICAgICAgcmVzdWx0VG90YWxLY2FsLnRleHRDb250ZW50ID0gJ+KAlCc7CiAgICAgICAgICAgICAgICByZXN1bHRNZWx0S2oudGV4dENvbnRlbnQgPSAn4oCUJzsKICAgICAgICAgICAgICAgIHJlc3VsdEhlYXRLai50ZXh0Q29udGVudCA9ICfigJQnOwogICAgICAgICAgICAgICAgcmVzdWx0SGVhdEl0ZW0uY2xhc3NMaXN0LmFkZCgnbm4tZ2VuLWNhbC1oaWRkZW4nKTsKICAgICAgICAgICAgICAgIHJlc3VsdE1lbHRJdGVtLmNsYXNzTGlzdC5yZW1vdmUoJ25uLWdlbi1jYWwtaGlkZGVuJyk7CiAgICAgICAgICAgICAgICByZXN1bHRJbmZvLnRleHRDb250ZW50ID0gJyc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vINCh0LHRgNC+0YEg0YTQvtGA0LzRiwogICAgICAgICAgICBmdW5jdGlvbiByZXNldEZvcm0oKSB7CiAgICAgICAgICAgICAgICBzdWJzdGFuY2VTZWxlY3QudmFsdWUgPSAnYWx1bWludW0nOwogICAgICAgICAgICAgICAgbWFzc0lucHV0LnZhbHVlID0gJyc7CiAgICAgICAgICAgICAgICBtYXNzVW5pdFNlbGVjdC52YWx1ZSA9ICdrZyc7CiAgICAgICAgICAgICAgICBjb25zaWRlckhlYXRpbmdDaGVja2JveC5jaGVja2VkID0gZmFsc2U7CiAgICAgICAgICAgICAgICBpbml0VGVtcElucHV0LnZhbHVlID0gJyc7CiAgICAgICAgICAgICAgICB0b2dnbGVUZW1wRmllbGQoKTsKICAgICAgICAgICAgICAgIGNsZWFyQWxsRXJyb3JzKCk7CiAgICAgICAgICAgICAgICByZXNldFJlc3VsdHMoKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmVzZXRCdG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCByZXNldEZvcm0pOwoKICAgICAgICAgICAgLy8g0J/QvtC70YPRh9C10L3QuNC1INC80LDRgdGB0Ysg0LIg0LrQuNC70L7Qs9GA0LDQvNC80LDRhQogICAgICAgICAgICBmdW5jdGlvbiBnZXRNYXNzSW5LZygpIHsKICAgICAgICAgICAgICAgIHZhciByYXdNYXNzID0gcGFyc2VGbG9hdChtYXNzSW5wdXQudmFsdWUpOwogICAgICAgICAgICAgICAgaWYgKGlzTmFOKHJhd01hc3MpIHx8IHJhd01hc3MgPD0gMCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdmFyIHVuaXQgPSBtYXNzVW5pdFNlbGVjdC52YWx1ZTsKICAgICAgICAgICAgICAgIGlmICh1bml0ID09PSAnZycpIHJldHVybiByYXdNYXNzIC8gMTAwMDsKICAgICAgICAgICAgICAgIGlmICh1bml0ID09PSAndCcpIHJldHVybiByYXdNYXNzICogMTAwMDsKICAgICAgICAgICAgICAgIHJldHVybiByYXdNYXNzOyAvLyBrZwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyDQntGB0L3QvtCy0L3QvtC5INGA0LDRgdGH0ZHRggogICAgICAgICAgICBmdW5jdGlvbiBjYWxjdWxhdGUoKSB7CiAgICAgICAgICAgICAgICBjbGVhckFsbEVycm9ycygpOwogICAgICAgICAgICAgICAgcmVzZXRSZXN1bHRzKCk7CgogICAgICAgICAgICAgICAgdmFyIHN1YnN0YW5jZUtleSA9IHN1YnN0YW5jZVNlbGVjdC52YWx1ZTsKICAgICAgICAgICAgICAgIHZhciBzdWJzdGFuY2VEYXRhID0gc3Vic3RhbmNlc1tzdWJzdGFuY2VLZXldOwogICAgICAgICAgICAgICAgaWYgKCFzdWJzdGFuY2VEYXRhKSB7CiAgICAgICAgICAgICAgICAgICAgc2hvd0Vycm9yKGVyclN1YnN0YW5jZSwgJ9CS0YvQsdC10YDQuNGC0LUg0LLQtdGJ0LXRgdGC0LLQviDQuNC3INGB0L/QuNGB0LrQsC4nKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgdmFyIG1hc3NLZyA9IGdldE1hc3NJbktnKCk7CiAgICAgICAgICAgICAgICBpZiAobWFzc0tnID09PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgc2hvd0Vycm9yKGVyck1hc3MsICfQktCy0LXQtNC40YLQtSDQv9C+0LvQvtC20LjRgtC10LvRjNC90L7QtSDQt9C90LDRh9C10L3QuNC1INC80LDRgdGB0YsuJyk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKG1hc3NLZyA8PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgc2hvd0Vycm9yKGVyck1hc3MsICfQnNCw0YHRgdCwINC00L7Qu9C20L3QsCDQsdGL0YLRjCDQsdC+0LvRjNGI0LUg0L3Rg9C70Y8uJyk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHZhciBsYW1iZGEgPSBzdWJzdGFuY2VEYXRhLmxhbWJkYTsgLy8g0LrQlNC2L9C60LMKICAgICAgICAgICAgICAgIHZhciBtZWx0VGVtcCA9IHN1YnN0YW5jZURhdGEubWVsdFRlbXA7IC8vIMKwQwogICAgICAgICAgICAgICAgdmFyIGhlYXRDYXBhY2l0eSA9IHN1YnN0YW5jZURhdGEuaGVhdENhcGFjaXR5OyAvLyDQlNC2LyjQutCzwrfCsEMpCgogICAgICAgICAgICAgICAgdmFyIGluY2x1ZGVIZWF0aW5nID0gY29uc2lkZXJIZWF0aW5nQ2hlY2tib3guY2hlY2tlZDsKICAgICAgICAgICAgICAgIHZhciBoZWF0S2ogPSAwOwogICAgICAgICAgICAgICAgdmFyIGluaXRUZW1wID0gbnVsbDsKCiAgICAgICAgICAgICAgICBpZiAoaW5jbHVkZUhlYXRpbmcpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgcmF3VGVtcCA9IGluaXRUZW1wSW5wdXQudmFsdWUudHJpbSgpOwogICAgICAgICAgICAgICAgICAgIGlmIChyYXdUZW1wID09PSAnJykgewogICAgICAgICAgICAgICAgICAgICAgICBzaG93RXJyb3IoZXJyVGVtcCwgJ9CS0LLQtdC00LjRgtC1INC90LDRh9Cw0LvRjNC90YPRjiDRgtC10LzQv9C10YDQsNGC0YPRgNGDLicpOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGluaXRUZW1wID0gcGFyc2VGbG9hdChyYXdUZW1wKTsKICAgICAgICAgICAgICAgICAgICBpZiAoaXNOYU4oaW5pdFRlbXApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dFcnJvcihlcnJUZW1wLCAn0J3QtdC60L7RgNGA0LXQutGC0L3QvtC1INC30L3QsNGH0LXQvdC40LUg0YLQtdC80L/QtdGA0LDRgtGD0YDRiy4nKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoaW5pdFRlbXAgPj0gbWVsdFRlbXApIHsKICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0Vycm9yKGVyclRlbXAsICfQndCw0YfQsNC70YzQvdCw0Y8g0YLQtdC80L/QtdGA0LDRgtGD0YDQsCDQtNC+0LvQttC90LAg0LHRi9GC0Ywg0L3QuNC20LUg0YLQtdC80L/QtdGA0LDRgtGD0YDRiyDQv9C70LDQstC70LXQvdC40Y8gKCcgKyBtZWx0VGVtcCArICcgwrBDKS4g0JLQtdGJ0LXRgdGC0LLQviDRg9C20LUg0YDQsNGB0L/Qu9Cw0LLQu9C10L3QviDQuNC70Lgg0L/RgNC4INGC0LXQvNC/0LXRgNCw0YLRg9GA0LUg0L/Qu9Cw0LLQu9C10L3QuNGPIOKAlCDQvdCw0LPRgNC10LIg0L3QtSDRgtGA0LXQsdGD0LXRgtGB0Y8uJyk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgLy8gUdC90LDQs9GA0LXQsiA9IG0gKiBjICogKFTQv9C7IC0gVNC90LDRhykg4oCUINGA0LXQt9GD0LvRjNGC0LDRgiDQsiDQlNC2LCDQtNC10LvQuNC8INC90LAgMTAwMCDQtNC70Y8g0LrQlNC2CiAgICAgICAgICAgICAgICAgICAgaGVhdEtqID0gbWFzc0tnICogaGVhdENhcGFjaXR5ICogKG1lbHRUZW1wIC0gaW5pdFRlbXApIC8gMTAwMDsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAvLyBR0L/Qu9Cw0LIgPSBtICogbGFtYmRhIOKAlCDRgNC10LfRg9C70YzRgtCw0YIg0LIg0LrQlNC2CiAgICAgICAgICAgICAgICB2YXIgbWVsdEtqID0gbWFzc0tnICogbGFtYmRhOwoKICAgICAgICAgICAgICAgIC8vINCe0LHRidCw0Y8g0YLQtdC/0LvQvtGC0LAKICAgICAgICAgICAgICAgIHZhciB0b3RhbEtqID0gbWVsdEtqICsgaGVhdEtqOwogICAgICAgICAgICAgICAgdmFyIHRvdGFsS2NhbCA9IHRvdGFsS2ogLyA0LjE4NDsKCiAgICAgICAgICAgICAgICAvLyDQntC60YDRg9Cz0LvQtdC90LjQtSDQtNC+IDIg0LfQvdCw0LrQvtCyCiAgICAgICAgICAgICAgICBmdW5jdGlvbiByb3VuZCh2YWwpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gTWF0aC5yb3VuZCh2YWwgKiAxMDApIC8gMTAwOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHRvdGFsS2ogPSByb3VuZCh0b3RhbEtqKTsKICAgICAgICAgICAgICAgIHRvdGFsS2NhbCA9IHJvdW5kKHRvdGFsS2NhbCk7CiAgICAgICAgICAgICAgICBtZWx0S2ogPSByb3VuZChtZWx0S2opOwogICAgICAgICAgICAgICAgaGVhdEtqID0gcm91bmQoaGVhdEtqKTsKCiAgICAgICAgICAgICAgICAvLyDQktGL0LLQvtC0INGA0LXQt9GD0LvRjNGC0LDRgtC+0LIKICAgICAgICAgICAgICAgIHJlc3VsdFRvdGFsS2oudGV4dENvbnRlbnQgPSB0b3RhbEtqLnRvTG9jYWxlU3RyaW5nKCdydS1SVScsIHsgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAyLCBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDIgfSk7CiAgICAgICAgICAgICAgICByZXN1bHRUb3RhbEtjYWwudGV4dENvbnRlbnQgPSB0b3RhbEtjYWwudG9Mb2NhbGVTdHJpbmcoJ3J1LVJVJywgeyBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDIsIG1heGltdW1GcmFjdGlvbkRpZ2l0czogMiB9KTsKICAgICAgICAgICAgICAgIHJlc3VsdE1lbHRLai50ZXh0Q29udGVudCA9IG1lbHRLai50b0xvY2FsZVN0cmluZygncnUtUlUnLCB7IG1pbmltdW1GcmFjdGlvbkRpZ2l0czogMiwgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiAyIH0pOwoKICAgICAgICAgICAgICAgIGlmIChpbmNsdWRlSGVhdGluZykgewogICAgICAgICAgICAgICAgICAgIHJlc3VsdEhlYXRLai50ZXh0Q29udGVudCA9IGhlYXRLai50b0xvY2FsZVN0cmluZygncnUtUlUnLCB7IG1pbmltdW1GcmFjdGlvbkRpZ2l0czogMiwgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiAyIH0pOwogICAgICAgICAgICAgICAgICAgIHJlc3VsdEhlYXRJdGVtLmNsYXNzTGlzdC5yZW1vdmUoJ25uLWdlbi1jYWwtaGlkZGVuJyk7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIHJlc3VsdEhlYXRJdGVtLmNsYXNzTGlzdC5hZGQoJ25uLWdlbi1jYWwtaGlkZGVuJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXN1bHRNZWx0SXRlbS5jbGFzc0xpc3QucmVtb3ZlKCdubi1nZW4tY2FsLWhpZGRlbicpOwoKICAgICAgICAgICAgICAgIC8vINCa0YDQsNGC0LrQsNGPINGA0LDRgdGI0LjRhNGA0L7QstC60LAKICAgICAgICAgICAgICAgIHZhciBpbmZvUGFydHMgPSBbXTsKICAgICAgICAgICAgICAgIGluZm9QYXJ0cy5wdXNoKCfQktC10YnQtdGB0YLQstC+OiAnICsgc3Vic3RhbmNlRGF0YS5uYW1lKTsKICAgICAgICAgICAgICAgIGluZm9QYXJ0cy5wdXNoKCfQnNCw0YHRgdCwOiAnICsgcm91bmQobWFzc0tnKS50b0xvY2FsZVN0cmluZygncnUtUlUnKSArICcg0LrQsycpOwogICAgICAgICAgICAgICAgaW5mb1BhcnRzLnB1c2goJ1Qg0L/Qu9Cw0LLQu9C10L3QuNGPOiAnICsgbWVsdFRlbXAgKyAnIMKwQycpOwogICAgICAgICAgICAgICAgaWYgKGluY2x1ZGVIZWF0aW5nICYmIGluaXRUZW1wICE9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgaW5mb1BhcnRzLnB1c2goJ9Cd0LDQs9GA0LXQsiDRgSAnICsgaW5pdFRlbXAgKyAnIMKwQyDQtNC+ICcgKyBtZWx0VGVtcCArICcgwrBDOiAnICsgaGVhdEtqLnRvTG9jYWxlU3RyaW5nKCdydS1SVScpICsgJyDQutCU0LYnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGluZm9QYXJ0cy5wdXNoKCfQn9C70LDQstC70LXQvdC40LU6ICcgKyBtZWx0S2oudG9Mb2NhbGVTdHJpbmcoJ3J1LVJVJykgKyAnINC60JTQticpOwogICAgICAgICAgICAgICAgaW5mb1BhcnRzLnB1c2goJ9CY0YLQvtCz0L46ICcgKyB0b3RhbEtqLnRvTG9jYWxlU3RyaW5nKCdydS1SVScpICsgJyDQutCU0LYnKTsKICAgICAgICAgICAgICAgIHJlc3VsdEluZm8udGV4dENvbnRlbnQgPSBpbmZvUGFydHMuam9pbignIHwgJyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGNhbGNCdG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBjYWxjdWxhdGUpOwoKICAgICAgICAgICAgLy8g0JjQvdC40YbQuNCw0LvQuNC30LDRhtC40Y8KICAgICAgICAgICAgdG9nZ2xlVGVtcEZpZWxkKCk7CiAgICAgICAgICAgIHJlc2V0UmVzdWx0cygpOwogICAgICAgIH0pKCk7CiAgICA=