{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/@hotwired/stimulus/dist/stimulus.js","webpack:///./node_modules/moment/moment.js","webpack:///./node_modules/chrono-node/dist/common/parsers/AbstractParserWithWordBoundary.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/dayjs/dayjs.min.js","webpack:///./node_modules/chrono-node/dist/utils/pattern.js","webpack:///./node_modules/chrono-node/dist/results.js","webpack:///./node_modules/chrono-node/dist/index.js","webpack:///./node_modules/chrono-node/dist/locales/en/constants.js","webpack:///./node_modules/chrono-node/dist/calculation/years.js","webpack:///./node_modules/chrono-node/dist/locales/ru/constants.js","webpack:///./node_modules/chrono-node/dist/utils/dayjs.js","webpack:///./node_modules/chrono-node/dist/utils/timeunits.js","webpack:///./node_modules/chrono-node/dist/locales/nl/constants.js","webpack:///./app/javascript/models/global_registration.js","webpack:///./app/javascript/models/sheets/node_manager.js","webpack:///./app/javascript/models/stack_manager.js","webpack:///./node_modules/chrono-node/dist/chrono.js","webpack:///./node_modules/chrono-node/dist/common/refiners/AbstractMergeDateRangeRefiner.js","webpack:///./node_modules/chrono-node/dist/common/refiners/AbstractMergeDateTimeRefiner.js","webpack:///./node_modules/chrono-node/dist/configurations.js","webpack:///./node_modules/chrono-node/dist/common/casualReferences.js","webpack:///./node_modules/chrono-node/dist/locales/fr/constants.js","webpack:///./node_modules/chrono-node/dist/common/parsers/AbstractTimeExpressionParser.js","webpack:///./node_modules/chrono-node/dist/common/calculation/weekdays.js","webpack:///./node_modules/chrono-node/dist/common/parsers/SlashDateFormatParser.js","webpack:///./app/javascript/models/schedule/event.js","webpack:///./node_modules/chrono-node/dist/common/abstractRefiners.js","webpack:///./node_modules/chrono-node/dist/locales/zh/hant/constants.js","webpack:///./node_modules/chrono-node/dist/locales/zh/hans/constants.js","webpack:///./app/javascript/shared/action_cable.js","webpack:///./app/javascript/shared/announcement_queue.js","webpack:///./app/javascript/models/calendar_data_source.js","webpack:///./app/javascript/shared/breakpoint_change.js","webpack:///./app/javascript/shared/ios_message_handler.js","webpack:///./node_modules/chrono-node/dist/locales/de/constants.js","webpack:///./app/javascript/models/schedule/event_arrangement.js","webpack:///./app/javascript/models/schedule/data_source.js","webpack:///./app/javascript/models/schedule/index.js","webpack:///./node_modules/@hotwired/stimulus-webpack-helpers/dist/stimulus-webpack-helpers.js","webpack:///./node_modules/moment/locale/cs.js","webpack:///./node_modules/moment/locale/de.js","webpack:///./node_modules/moment/locale/el.js","webpack:///./node_modules/moment/locale/en-gb.js","webpack:///./node_modules/moment/locale/es.js","webpack:///./node_modules/moment/locale/fr.js","webpack:///./node_modules/moment/locale/it.js","webpack:///./node_modules/moment/locale/nl.js","webpack:///./node_modules/moment/locale/pl.js","webpack:///./node_modules/moment/locale/pt.js","webpack:///./node_modules/moment/locale/tr.js","webpack:///./node_modules/chrono-node/dist/common/refiners/ExtractTimezoneOffsetRefiner.js","webpack:///./node_modules/chrono-node/dist/locales/pt/constants.js","webpack:///./app/javascript/models/schedule/renderer.js","webpack:///./node_modules/animejs/lib/anime.es.js","webpack:///./app/javascript/shared/act_as_stackable.js","webpack:///./app/javascript/shared/web_socket.js","webpack:///./app/javascript/helpers/tag_replacements_helper.js","webpack:///./app/javascript/helpers/loader_helper.js","webpack:///./node_modules/@rails/actioncable/app/assets/javascripts/action_cable.js","webpack:///./app/javascript/shared/index.js","webpack:///./node_modules/moment/locale/af.js","webpack:///./node_modules/moment/locale/ar.js","webpack:///./node_modules/moment/locale/ar-dz.js","webpack:///./node_modules/moment/locale/ar-kw.js","webpack:///./node_modules/moment/locale/ar-ly.js","webpack:///./node_modules/moment/locale/ar-ma.js","webpack:///./node_modules/moment/locale/ar-sa.js","webpack:///./node_modules/moment/locale/ar-tn.js","webpack:///./node_modules/moment/locale/az.js","webpack:///./node_modules/moment/locale/be.js","webpack:///./node_modules/moment/locale/bg.js","webpack:///./node_modules/moment/locale/bm.js","webpack:///./node_modules/moment/locale/bn.js","webpack:///./node_modules/moment/locale/bn-bd.js","webpack:///./node_modules/moment/locale/bo.js","webpack:///./node_modules/moment/locale/br.js","webpack:///./node_modules/moment/locale/bs.js","webpack:///./node_modules/moment/locale/ca.js","webpack:///./node_modules/moment/locale/cv.js","webpack:///./node_modules/moment/locale/cy.js","webpack:///./node_modules/moment/locale/da.js","webpack:///./node_modules/moment/locale/de-at.js","webpack:///./node_modules/moment/locale/de-ch.js","webpack:///./node_modules/moment/locale/dv.js","webpack:///./node_modules/moment/locale/en-au.js","webpack:///./node_modules/moment/locale/en-ca.js","webpack:///./node_modules/moment/locale/en-ie.js","webpack:///./node_modules/moment/locale/en-il.js","webpack:///./node_modules/moment/locale/en-in.js","webpack:///./node_modules/moment/locale/en-nz.js","webpack:///./node_modules/moment/locale/en-sg.js","webpack:///./node_modules/moment/locale/eo.js","webpack:///./node_modules/moment/locale/es-do.js","webpack:///./node_modules/moment/locale/es-mx.js","webpack:///./node_modules/moment/locale/es-us.js","webpack:///./node_modules/moment/locale/et.js","webpack:///./node_modules/moment/locale/eu.js","webpack:///./node_modules/moment/locale/fa.js","webpack:///./node_modules/moment/locale/fi.js","webpack:///./node_modules/moment/locale/fil.js","webpack:///./node_modules/moment/locale/fo.js","webpack:///./node_modules/moment/locale/fr-ca.js","webpack:///./node_modules/moment/locale/fr-ch.js","webpack:///./node_modules/moment/locale/fy.js","webpack:///./node_modules/moment/locale/ga.js","webpack:///./node_modules/moment/locale/gd.js","webpack:///./node_modules/moment/locale/gl.js","webpack:///./node_modules/moment/locale/gom-deva.js","webpack:///./node_modules/moment/locale/gom-latn.js","webpack:///./node_modules/moment/locale/gu.js","webpack:///./node_modules/moment/locale/he.js","webpack:///./node_modules/moment/locale/hi.js","webpack:///./node_modules/moment/locale/hr.js","webpack:///./node_modules/moment/locale/hu.js","webpack:///./node_modules/moment/locale/hy-am.js","webpack:///./node_modules/moment/locale/id.js","webpack:///./node_modules/moment/locale/is.js","webpack:///./node_modules/moment/locale/it-ch.js","webpack:///./node_modules/moment/locale/ja.js","webpack:///./node_modules/moment/locale/jv.js","webpack:///./node_modules/moment/locale/ka.js","webpack:///./node_modules/moment/locale/kk.js","webpack:///./node_modules/moment/locale/km.js","webpack:///./node_modules/moment/locale/kn.js","webpack:///./node_modules/moment/locale/ko.js","webpack:///./node_modules/moment/locale/ku.js","webpack:///./node_modules/moment/locale/ky.js","webpack:///./node_modules/moment/locale/lb.js","webpack:///./node_modules/moment/locale/lo.js","webpack:///./node_modules/moment/locale/lt.js","webpack:///./node_modules/moment/locale/lv.js","webpack:///./node_modules/moment/locale/me.js","webpack:///./node_modules/moment/locale/mi.js","webpack:///./node_modules/moment/locale/mk.js","webpack:///./node_modules/moment/locale/ml.js","webpack:///./node_modules/moment/locale/mn.js","webpack:///./node_modules/moment/locale/mr.js","webpack:///./node_modules/moment/locale/ms.js","webpack:///./node_modules/moment/locale/ms-my.js","webpack:///./node_modules/moment/locale/mt.js","webpack:///./node_modules/moment/locale/my.js","webpack:///./node_modules/moment/locale/nb.js","webpack:///./node_modules/moment/locale/ne.js","webpack:///./node_modules/moment/locale/nl-be.js","webpack:///./node_modules/moment/locale/nn.js","webpack:///./node_modules/moment/locale/oc-lnc.js","webpack:///./node_modules/moment/locale/pa-in.js","webpack:///./node_modules/moment/locale/pt-br.js","webpack:///./node_modules/moment/locale/ro.js","webpack:///./node_modules/moment/locale/ru.js","webpack:///./node_modules/moment/locale/sd.js","webpack:///./node_modules/moment/locale/se.js","webpack:///./node_modules/moment/locale/si.js","webpack:///./node_modules/moment/locale/sk.js","webpack:///./node_modules/moment/locale/sl.js","webpack:///./node_modules/moment/locale/sq.js","webpack:///./node_modules/moment/locale/sr.js","webpack:///./node_modules/moment/locale/sr-cyrl.js","webpack:///./node_modules/moment/locale/ss.js","webpack:///./node_modules/moment/locale/sv.js","webpack:///./node_modules/moment/locale/sw.js","webpack:///./node_modules/moment/locale/ta.js","webpack:///./node_modules/moment/locale/te.js","webpack:///./node_modules/moment/locale/tet.js","webpack:///./node_modules/moment/locale/tg.js","webpack:///./node_modules/moment/locale/th.js","webpack:///./node_modules/moment/locale/tk.js","webpack:///./node_modules/moment/locale/tl-ph.js","webpack:///./node_modules/moment/locale/tlh.js","webpack:///./node_modules/moment/locale/tzl.js","webpack:///./node_modules/moment/locale/tzm.js","webpack:///./node_modules/moment/locale/tzm-latn.js","webpack:///./node_modules/moment/locale/ug-cn.js","webpack:///./node_modules/moment/locale/uk.js","webpack:///./node_modules/moment/locale/ur.js","webpack:///./node_modules/moment/locale/uz.js","webpack:///./node_modules/moment/locale/uz-latn.js","webpack:///./node_modules/moment/locale/vi.js","webpack:///./node_modules/moment/locale/x-pseudo.js","webpack:///./node_modules/moment/locale/yo.js","webpack:///./node_modules/moment/locale/zh-cn.js","webpack:///./node_modules/moment/locale/zh-hk.js","webpack:///./node_modules/moment/locale/zh-mo.js","webpack:///./node_modules/moment/locale/zh-tw.js","webpack:///./node_modules/chrono-node/dist/locales/en/index.js","webpack:///./node_modules/chrono-node/dist/common/parsers/ISOFormatParser.js","webpack:///./node_modules/chrono-node/dist/locales/de/parsers/DECasualTimeParser.js","webpack:///./node_modules/moment-timezone/index.js","webpack:///./node_modules/moment-range/dist/moment-range.js","webpack:///./app/javascript/shared sync \\.js$","webpack:///./app/javascript/shared/ajax_listeners.js","webpack:///./app/javascript/helpers/index.js","webpack:///./app/javascript/helpers sync _helper\\.js$","webpack:///./app/javascript/helpers/breakpoints_helper.js","webpack:///./app/javascript/helpers/cashing_up_progress_helper.js","webpack:///./app/javascript/helpers/clear_stack_helper.js","webpack:///./app/javascript/helpers/close_dialogs_helper.js","webpack:///./app/javascript/helpers/comparable_string_helper.js","webpack:///./app/javascript/helpers/create_element_helper.js","webpack:///./app/javascript/helpers/dedupe_helper.js","webpack:///./app/javascript/helpers/format_currency_helper.js","webpack:///./app/javascript/helpers/highlight_helper.js","webpack:///./app/javascript/helpers/is_firefox_helper.js","webpack:///./app/javascript/helpers/is_ios_app_helper.js","webpack:///./app/javascript/helpers/is_ios_browser_helper.js","webpack:///./app/javascript/helpers/is_ios_safari_helper.js","webpack:///./app/javascript/helpers/is_macos_safari_helper.js","webpack:///./app/javascript/helpers/is_samsung_internet_helper.js","webpack:///./app/javascript/helpers/key_codes_helper.js","webpack:///./app/javascript/helpers/log_helper.js","webpack:///./app/javascript/helpers/notify_helper.js","webpack:///./app/javascript/helpers/pwa_installable_helper.js","webpack:///./app/javascript/helpers/pwa_installed_helper.js","webpack:///./app/javascript/helpers/reload_timetable_helper.js","webpack:///./app/javascript/helpers/scroll_to_option_helper.js","webpack:///./app/javascript/helpers/slide_helper.js","webpack:///./app/javascript/helpers/stack_manager_helper.js","webpack:///./app/javascript/helpers/unaccent_helper.js","webpack:///./app/javascript/helpers/unicode_hash_helper.js","webpack:///./app/javascript/helpers/url_base64_to_uint8_array_helper.js","webpack:///./app/javascript/controllers/shared sync _controller\\.js$","webpack:///./app/javascript/controllers/shared/action_sheet_controller.js","webpack:///./app/javascript/controllers/shared/action_sheet_presentation_controller.js","webpack:///./app/javascript/controllers/shared/announcement_controller.js","webpack:///./app/javascript/controllers/shared/application_controller.js","webpack:///./node_modules/moment-timezone/moment-timezone.js","webpack:///(webpack)/buildin/module.js","webpack:///./node_modules/moment/locale sync ^\\.\\/.*$","webpack:///./app/javascript/controllers/shared/autocomplete_field_controller.js","webpack:///./node_modules/lodash.debounce/index.js","webpack:///./app/javascript/controllers/shared/autofill_address_controller.js","webpack:///./app/javascript/controllers/shared/badge_indicator_controller.js","webpack:///./app/javascript/controllers/shared/business_day_controller.js","webpack:///./app/javascript/controllers/shared/business_week_controller.js","webpack:///./app/javascript/controllers/shared/calendar_controller.js","webpack:///./node_modules/chrono-node/dist/locales/en/parsers/ENTimeUnitWithinFormatParser.js","webpack:///./node_modules/dayjs/plugin/quarterOfYear.js","webpack:///./node_modules/chrono-node/dist/timezone.js","webpack:///./node_modules/chrono-node/dist/locales/en/parsers/ENMonthNameLittleEndianParser.js","webpack:///./node_modules/chrono-node/dist/locales/en/parsers/ENMonthNameMiddleEndianParser.js","webpack:///./node_modules/chrono-node/dist/locales/en/parsers/ENMonthNameParser.js","webpack:///./node_modules/chrono-node/dist/locales/en/parsers/ENCasualYearMonthDayParser.js","webpack:///./node_modules/chrono-node/dist/locales/en/parsers/ENSlashMonthFormatParser.js","webpack:///./node_modules/chrono-node/dist/locales/en/parsers/ENTimeExpressionParser.js","webpack:///./node_modules/chrono-node/dist/locales/en/parsers/ENTimeUnitAgoFormatParser.js","webpack:///./node_modules/chrono-node/dist/locales/en/parsers/ENTimeUnitLaterFormatParser.js","webpack:///./node_modules/chrono-node/dist/locales/en/refiners/ENMergeDateRangeRefiner.js","webpack:///./node_modules/chrono-node/dist/locales/en/refiners/ENMergeDateTimeRefiner.js","webpack:///./node_modules/chrono-node/dist/calculation/mergingCalculation.js","webpack:///./node_modules/chrono-node/dist/common/refiners/ExtractTimezoneAbbrRefiner.js","webpack:///./node_modules/chrono-node/dist/common/refiners/OverlapRemovalRefiner.js","webpack:///./node_modules/chrono-node/dist/common/refiners/ForwardDateRefiner.js","webpack:///./node_modules/chrono-node/dist/common/refiners/UnlikelyFormatFilter.js","webpack:///./node_modules/chrono-node/dist/common/refiners/MergeWeekdayComponentRefiner.js","webpack:///./node_modules/chrono-node/dist/locales/en/parsers/ENCasualDateParser.js","webpack:///./node_modules/chrono-node/dist/locales/en/parsers/ENCasualTimeParser.js","webpack:///./node_modules/chrono-node/dist/locales/en/parsers/ENWeekdayParser.js","webpack:///./node_modules/chrono-node/dist/locales/en/parsers/ENRelativeDateFormatParser.js","webpack:///./node_modules/chrono-node/dist/locales/en/parsers/ENTimeUnitCasualRelativeFormatParser.js","webpack:///./node_modules/chrono-node/dist/locales/en/refiners/ENMergeRelativeDateRefiner.js","webpack:///./node_modules/chrono-node/dist/locales/de/index.js","webpack:///./node_modules/chrono-node/dist/locales/de/parsers/DETimeExpressionParser.js","webpack:///./node_modules/chrono-node/dist/locales/de/parsers/DEWeekdayParser.js","webpack:///./node_modules/chrono-node/dist/locales/de/parsers/DESpecificTimeExpressionParser.js","webpack:///./node_modules/chrono-node/dist/locales/de/refiners/DEMergeDateRangeRefiner.js","webpack:///./node_modules/chrono-node/dist/locales/de/refiners/DEMergeDateTimeRefiner.js","webpack:///./node_modules/chrono-node/dist/locales/de/parsers/DECasualDateParser.js","webpack:///./node_modules/chrono-node/dist/locales/de/parsers/DEMonthNameLittleEndianParser.js","webpack:///./node_modules/chrono-node/dist/locales/de/parsers/DETimeUnitRelativeFormatParser.js","webpack:///./node_modules/chrono-node/dist/locales/fr/index.js","webpack:///./node_modules/chrono-node/dist/locales/fr/parsers/FRCasualDateParser.js","webpack:///./node_modules/chrono-node/dist/locales/fr/parsers/FRCasualTimeParser.js","webpack:///./node_modules/chrono-node/dist/locales/fr/parsers/FRTimeExpressionParser.js","webpack:///./node_modules/chrono-node/dist/locales/fr/refiners/FRMergeDateTimeRefiner.js","webpack:///./node_modules/chrono-node/dist/locales/fr/refiners/FRMergeDateRangeRefiner.js","webpack:///./node_modules/chrono-node/dist/locales/fr/parsers/FRWeekdayParser.js","webpack:///./node_modules/chrono-node/dist/locales/fr/parsers/FRSpecificTimeExpressionParser.js","webpack:///./node_modules/chrono-node/dist/locales/fr/parsers/FRMonthNameLittleEndianParser.js","webpack:///./node_modules/chrono-node/dist/locales/fr/parsers/FRTimeUnitAgoFormatParser.js","webpack:///./node_modules/chrono-node/dist/locales/fr/parsers/FRTimeUnitWithinFormatParser.js","webpack:///./node_modules/chrono-node/dist/locales/fr/parsers/FRTimeUnitRelativeFormatParser.js","webpack:///./node_modules/chrono-node/dist/locales/ja/index.js","webpack:///./node_modules/chrono-node/dist/locales/ja/parsers/JPStandardParser.js","webpack:///./node_modules/chrono-node/dist/locales/ja/constants.js","webpack:///./node_modules/chrono-node/dist/locales/ja/refiners/JPMergeDateRangeRefiner.js","webpack:///./node_modules/chrono-node/dist/locales/ja/parsers/JPCasualDateParser.js","webpack:///./node_modules/chrono-node/dist/locales/pt/index.js","webpack:///./node_modules/chrono-node/dist/locales/pt/parsers/PTWeekdayParser.js","webpack:///./node_modules/chrono-node/dist/locales/pt/parsers/PTTimeExpressionParser.js","webpack:///./node_modules/chrono-node/dist/locales/pt/refiners/PTMergeDateTimeRefiner.js","webpack:///./node_modules/chrono-node/dist/locales/pt/refiners/PTMergeDateRangeRefiner.js","webpack:///./node_modules/chrono-node/dist/locales/pt/parsers/PTMonthNameLittleEndianParser.js","webpack:///./node_modules/chrono-node/dist/locales/pt/parsers/PTCasualDateParser.js","webpack:///./node_modules/chrono-node/dist/locales/pt/parsers/PTCasualTimeParser.js","webpack:///./node_modules/chrono-node/dist/locales/nl/index.js","webpack:///./node_modules/chrono-node/dist/locales/nl/refiners/NLMergeDateRangeRefiner.js","webpack:///./node_modules/chrono-node/dist/locales/nl/refiners/NLMergeDateTimeRefiner.js","webpack:///./node_modules/chrono-node/dist/locales/nl/parsers/NLCasualDateParser.js","webpack:///./node_modules/chrono-node/dist/locales/nl/parsers/NLCasualTimeParser.js","webpack:///./node_modules/chrono-node/dist/locales/nl/parsers/NLTimeUnitWithinFormatParser.js","webpack:///./node_modules/chrono-node/dist/locales/nl/parsers/NLWeekdayParser.js","webpack:///./node_modules/chrono-node/dist/locales/nl/parsers/NLMonthNameMiddleEndianParser.js","webpack:///./node_modules/chrono-node/dist/locales/nl/parsers/NLMonthNameParser.js","webpack:///./node_modules/chrono-node/dist/locales/nl/parsers/NLSlashMonthFormatParser.js","webpack:///./node_modules/chrono-node/dist/locales/nl/parsers/NLTimeExpressionParser.js","webpack:///./node_modules/chrono-node/dist/locales/nl/parsers/NLCasualYearMonthDayParser.js","webpack:///./node_modules/chrono-node/dist/locales/nl/parsers/NLCasualDateTimeParser.js","webpack:///./node_modules/chrono-node/dist/locales/nl/parsers/NLTimeUnitCasualRelativeFormatParser.js","webpack:///./node_modules/chrono-node/dist/locales/nl/parsers/NLRelativeDateFormatParser.js","webpack:///./node_modules/chrono-node/dist/locales/nl/parsers/NLTimeUnitAgoFormatParser.js","webpack:///./node_modules/chrono-node/dist/locales/nl/parsers/NLTimeUnitLaterFormatParser.js","webpack:///./node_modules/chrono-node/dist/locales/zh/index.js","webpack:///./node_modules/chrono-node/dist/locales/zh/hant/index.js","webpack:///./node_modules/chrono-node/dist/locales/zh/hant/parsers/ZHHantCasualDateParser.js","webpack:///./node_modules/chrono-node/dist/locales/zh/hant/parsers/ZHHantDateParser.js","webpack:///./node_modules/chrono-node/dist/locales/zh/hant/parsers/ZHHantDeadlineFormatParser.js","webpack:///./node_modules/chrono-node/dist/locales/zh/hant/parsers/ZHHantRelationWeekdayParser.js","webpack:///./node_modules/chrono-node/dist/locales/zh/hant/parsers/ZHHantTimeExpressionParser.js","webpack:///./node_modules/chrono-node/dist/locales/zh/hant/parsers/ZHHantWeekdayParser.js","webpack:///./node_modules/chrono-node/dist/locales/zh/hant/refiners/ZHHantMergeDateRangeRefiner.js","webpack:///./node_modules/chrono-node/dist/locales/zh/hant/refiners/ZHHantMergeDateTimeRefiner.js","webpack:///./node_modules/chrono-node/dist/locales/zh/hans/index.js","webpack:///./node_modules/chrono-node/dist/locales/zh/hans/parsers/ZHHansCasualDateParser.js","webpack:///./node_modules/chrono-node/dist/locales/zh/hans/parsers/ZHHansDateParser.js","webpack:///./node_modules/chrono-node/dist/locales/zh/hans/parsers/ZHHansDeadlineFormatParser.js","webpack:///./node_modules/chrono-node/dist/locales/zh/hans/parsers/ZHHansRelationWeekdayParser.js","webpack:///./node_modules/chrono-node/dist/locales/zh/hans/parsers/ZHHansTimeExpressionParser.js","webpack:///./node_modules/chrono-node/dist/locales/zh/hans/parsers/ZHHansWeekdayParser.js","webpack:///./node_modules/chrono-node/dist/locales/zh/hans/refiners/ZHHansMergeDateRangeRefiner.js","webpack:///./node_modules/chrono-node/dist/locales/zh/hans/refiners/ZHHansMergeDateTimeRefiner.js","webpack:///./node_modules/chrono-node/dist/locales/ru/index.js","webpack:///./node_modules/chrono-node/dist/locales/ru/parsers/RUTimeUnitWithinFormatParser.js","webpack:///./node_modules/chrono-node/dist/locales/ru/parsers/RUMonthNameLittleEndianParser.js","webpack:///./node_modules/chrono-node/dist/locales/ru/parsers/RUMonthNameParser.js","webpack:///./node_modules/chrono-node/dist/locales/ru/parsers/RUTimeExpressionParser.js","webpack:///./node_modules/chrono-node/dist/locales/ru/parsers/RUTimeUnitAgoFormatParser.js","webpack:///./node_modules/chrono-node/dist/locales/ru/refiners/RUMergeDateRangeRefiner.js","webpack:///./node_modules/chrono-node/dist/locales/ru/refiners/RUMergeDateTimeRefiner.js","webpack:///./node_modules/chrono-node/dist/locales/ru/parsers/RUCasualDateParser.js","webpack:///./node_modules/chrono-node/dist/locales/ru/parsers/RUCasualTimeParser.js","webpack:///./node_modules/chrono-node/dist/locales/ru/parsers/RUWeekdayParser.js","webpack:///./node_modules/chrono-node/dist/locales/ru/parsers/RURelativeDateFormatParser.js","webpack:///./node_modules/chrono-node/dist/locales/ru/parsers/RUTimeUnitCasualRelativeFormatParser.js","webpack:///./app/javascript/controllers/shared/characters_count_controller.js","webpack:///./app/javascript/controllers/shared/click_document_through_ajax_controller.js","webpack:///./app/javascript/controllers/shared/click_through_controller.js","webpack:///./app/javascript/controllers/shared/clipboard_controller.js","webpack:///./app/javascript/controllers/shared/component_preview_calendar_column_controller.js","webpack:///./app/javascript/controllers/shared/component_preview_date_picker_controller.js","webpack:///./app/javascript/controllers/shared/component_preview_dropdown_controller.js","webpack:///./app/javascript/controllers/shared/date_picker_controller.js","webpack:///./app/javascript/controllers/shared/depended_checkbox_toggle_controller.js","webpack:///./app/javascript/controllers/shared/dialog_presentation_controller.js","webpack:///./app/javascript/controllers/shared/dropdown_controller.js","webpack:///./app/javascript/controllers/shared/feedback_redirect_controller.js","webpack:///./app/javascript/controllers/shared/file_upload_controller.js","webpack:///./app/javascript/controllers/shared/flash_messages_controller.js","webpack:///./app/javascript/controllers/shared/focus_controller.js","webpack:///./app/javascript/controllers/shared/gtag_manager_controller.js","webpack:///./app/javascript/controllers/shared/hello_controller.js","webpack:///./app/javascript/controllers/shared/hide_show_toggle_controller.js","webpack:///./app/javascript/controllers/shared/highlight_controller.js","webpack:///./app/javascript/controllers/shared/horizontal_scroller_controller.js","webpack:///./app/javascript/controllers/shared/load_remote_when_visible_controller.js","webpack:///./app/javascript/controllers/shared/map_controller.js","webpack:///./app/javascript/controllers/shared/notification_banner_controller.js","webpack:///./app/javascript/controllers/shared/number_field_controller.js","webpack:///./app/javascript/controllers/shared/outline_controller.js","webpack:///./app/javascript/controllers/shared/posthog_controller.js","webpack:///./app/javascript/controllers/shared/push_button_controller.js","webpack:///./app/javascript/controllers/shared/record_editor_controller.js","webpack:///./app/javascript/controllers/shared/remove_controller.js","webpack:///./app/javascript/controllers/shared/reveal_controller.js","webpack:///./app/javascript/controllers/shared/scroll_into_view_controller.js","webpack:///./app/javascript/controllers/shared/select_field_controller.js","webpack:///./app/javascript/controllers/shared/service_worker_registration_controller.js","webpack:///./app/javascript/controllers/shared/setup_wizard_controller.js","webpack:///./app/javascript/controllers/shared/sheet_controller.js","webpack:///./app/javascript/controllers/shared/sheet_stack_controller.js","webpack:///./app/javascript/controllers/shared/spam_honeypot_controller.js","webpack:///./app/javascript/controllers/shared/stepper_controller.js","webpack:///./app/javascript/controllers/shared/sticky_cta_controller.js","webpack:///./app/javascript/controllers/shared/sticky_form_footer_controller.js","webpack:///./app/javascript/controllers/shared/tabbed_sections_controller.js","webpack:///./app/javascript/controllers/shared/template_logo_controller.js","webpack:///./app/javascript/controllers/shared/text_fit_controller.js","webpack:///./app/javascript/controllers/shared/toggle_controller.js","webpack:///./app/javascript/controllers/shared/toggle_radio_controller.js","webpack:///./app/javascript/controllers/shared/tooltip_position_controller.js","webpack:///./app/javascript/controllers/shared/trustpilot_widget_controller.js","webpack:///./app/javascript/controllers/shared/turbolinks_visit_controller.js","webpack:///./app/javascript/controllers/shared/usetiful_tour_controller.js","webpack:///./app/javascript/controllers/shared/validate_form_controller.js","webpack:///./node_modules/dialog-polyfill/dist/dialog-polyfill.esm.js","webpack:///./app/javascript/controllers/shared/dialog_controller.js","webpack:///./node_modules/@rails/ujs/lib/assets/compiled/rails-ujs.js","webpack:///./node_modules/turbolinks/dist/turbolinks.js","webpack:///./app/javascript/packs/landing_page.js","webpack:///./app/javascript/controllers/landing_page sync _controller\\.js$","webpack:///./app/javascript/controllers/landing_page/call_special_instructions_controller.js","webpack:///./app/javascript/controllers/landing_page/email_decoder_controller.js","webpack:///./app/javascript/controllers/landing_page/mega_menu_controller.js","webpack:///./app/javascript/controllers/landing_page/new_onboarding/loading_page_controller.js","webpack:///./app/javascript/controllers/landing_page/pricing_calculator_controller.js","webpack:///./app/javascript/controllers/landing_page/signup_controller.js","webpack:///./app/javascript/controllers/landing_page/top_banner_controller.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","_slicedToArray","arr","Array","isArray","_arrayWithHoles","_i","iterator","_s","_e","_arr","_n","_d","next","done","push","length","err","_iterableToArrayLimit","minLen","_arrayLikeToArray","toString","slice","constructor","from","test","_unsupportedIterableToArray","TypeError","_nonIterableRest","len","arr2","EventListener","eventTarget","eventName","eventOptions","this","unorderedBindings","Set","connect","addEventListener","disconnect","removeEventListener","bindingConnected","binding","add","bindingDisconnected","delete","handleEvent","event","extendedEvent","stopImmediatePropagation","assign","immediatePropagationStopped","extendEvent","bindings","hasBindings","size","sort","left","right","leftIndex","index","rightIndex","Dispatcher","application","eventListenerMaps","Map","started","start","eventListeners","forEach","eventListener","stop","values","reduce","listeners","map","concat","fetchEventListenerForBinding","clearEventListeners","clearEventListenersForBinding","handleError","error","message","detail","removeMappedEventListenerFor","eventListenerMap","fetchEventListenerMapForEventTarget","cacheKey","fetchEventListener","createEventListener","set","parts","keys","join","defaultActionDescriptorFilters","stopPropagation","prevent","preventDefault","self","element","target","descriptorPattern","parseEventTarget","eventTargetName","window","document","camelize","replace","_","char","toUpperCase","namespaceCamelize","capitalize","charAt","dasherize","toLowerCase","isSomething","undefined","hasProperty","allModifiers","defaultEventNames","a","button","form","details","input","e","getAttribute","select","textarea","Error","typecast","JSON","parse","o_O","Binding","context","action","identifier","actionEvent","prepareActionEvent","willBeInvokedByEvent","applyEventModifiers","invokeWithEvent","method","controller","methodName","actionDescriptorFilters","passes","_ref2","entries","_ref3","filter","params","currentTarget","logDebugActivity","KeyboardEvent","shouldIgnoreKeyboardEvent","MouseEvent","shouldIgnoreMouseEvent","Element","contains","scope","containsElement","ElementObserver","delegate","mutationObserverInit","attributes","childList","subtree","elements","mutationObserver","MutationObserver","mutations","processMutations","observe","refresh","pause","callback","takeRecords","matches","matchElementsInTree","has","removeElement","addElement","mutation","processMutation","type","processAttributeChange","attributeName","processRemovedNodes","removedNodes","processAddedNodes","addedNodes","elementAttributeChanged","matchElement","nodes","node","elementFromNode","processTree","elementIsActive","tree","processor","nodeType","Node","ELEMENT_NODE","isConnected","elementMatched","elementUnmatched","AttributeObserver","elementObserver","hasAttribute","match","querySelectorAll","selector","elementMatchedAttribute","elementUnmatchedAttribute","elementAttributeValueChanged","fetch","del","prune","Multimap","valuesByKey","hasKey","hasValue","some","getValuesForKey","getKeysForValue","_key","_values","SelectorObserver","_selector","matchesByElement","selectorMatchElement","selectorMatched","selectors","selectorUnmatched","_attributeName","matchedBefore","StringMapObserver","stringMap","attributeOldValue","knownAttributeNames","refreshAttribute","oldValue","getStringMapKeyForAttribute","stringMapKeyAdded","stringMapValueChanged","stringMapKeyRemoved","currentAttributeNames","recordedAttributeNames","attribute","TokenListObserver","attributeObserver","tokensByElement","tokensMatched","readTokensForElement","_this$refreshTokensFo2","refreshTokensForElement","unmatchedTokens","matchedTokens","tokensUnmatched","tokens","token","tokenMatched","tokenUnmatched","previousTokens","currentTokens","firstDifferingIndex","Math","max","zip","findIndex","previousToken","currentToken","content","tokenString","trim","split","parseTokenString","ValueListObserver","tokenListObserver","parseResultsByToken","WeakMap","valuesByTokenByElement","fetchParseResultForToken","fetchValuesByTokenForElement","elementMatchedValue","elementUnmatchedValue","parseResult","parseToken","valuesByToken","parseValueForToken","BindingObserver","bindingsByAction","valueListObserver","actionAttribute","disconnectAllActions","schema","connectAction","disconnectAction","clear","descriptor","tagName","getDefaultEventNameForElement","keyFilter","descriptorString","includes","options","parseActionDescriptorString","eventFilter","filters","keyFilterDissatisfied","standardFilter","keyMappings","pattern","RegExp","_ref","_allModifiers$map2","modifier","meta","ctrl","alt","shift","metaKey","ctrlKey","altKey","shiftKey","forToken","ValueObserver","receiver","stringMapObserver","valueDescriptorMap","invokeChangedCallbacksForDefaultValues","invokeChangedCallback","writer","defaultValue","valueDescriptorNameMap","_ref4","valueDescriptors","data","rawValue","rawOldValue","changedMethodName","changedMethod","reader","descriptors","hasMethodName","TargetObserver","targetsByName","disconnectAllTargets","connectTarget","disconnectTarget","_a","targetConnected","targetDisconnected","readInheritableStaticArrayValues","propertyName","ancestors","getAncestorsForConstructor","definition","getOwnStaticArrayValues","readInheritableStaticObjectPairs","pairs","getOwnStaticObjectPairs","getPrototypeOf","reverse","OutletObserver","outletsByName","outletElementsByName","selectorObserverMap","attributeObserverMap","outletDefinitions","outletName","setupSelectorObserverForOutlet","setupAttributeObserverForOutlet","dependentContexts","observer","disconnectAllOutlets","stopSelectorObservers","stopAttributeObservers","outlet","getOutlet","connectOutlet","getOutletFromMap","disconnectOutlet","hasOutlet","hasOutletController","controllerAttribute","_element","getOutletNameFromOutletAttributeName","updateSelectorObserverForOutlet","outletConnected","outletDisconnected","selectorObserver","body","attributeNameForOutletName","outlets","getSelectorForOutletName","outletAttributeForScope","find","dependencies","router","controllerConstructor","outletDependencies","identifiers","dependentControllerIdentifiers","contexts","getControllerForElementAndIdentifier","Context","functionName","bindingObserver","dispatcher","valueObserver","targetObserver","outletObserver","initialize","parentElement","invokeControllerMethod","args","bless","properties","shadowConstructor","extend","shadowProperties","getOwnKeys","shadowingDescriptor","getOwnPropertyDescriptor","getShadowedDescriptor","getShadowProperties","defineProperties","shadow","blessedProperties","blessing","getBlessedProperties","getOwnPropertySymbols","getOwnPropertyNames","extendWithReflect","extended","Reflect","construct","arguments","setPrototypeOf","b","testReflectExtension","Module","blessDefinition","contextsByScope","connectedContexts","connectContextForScope","fetchContextForScope","disconnectContextForScope","ClassMap","getDataKey","getAll","getAttributeName","getAttributeNameForKey","DataMap","setAttribute","removeAttribute","Guide","logger","warnedKeysByObject","warn","warnedKeys","attributeValueContainsToken","TargetSet","targetName","targetNames","findTarget","findLegacyTarget","findAll","targets","findAllTargets","findAllLegacyTargets","getSelectorForTargetName","findElement","findAllElements","targetAttributeForScope","getLegacySelectorForTargetName","deprecate","targetDescriptor","targetAttribute","revisedAttributeName","guide","OutletSet","controllerElement","outletNames","findOutlet","findAllOutlets","queryElements","matchesElement","Scope","classes","closest","controllerSelector","documentScope","documentElement","isDocumentScope","ScopeObserver","scopesByIdentifierByElement","scopeReferenceCounts","parseValueForElementAndIdentifier","scopesByIdentifier","fetchScopesByIdentifierForElement","createScopeForElementAndIdentifier","referenceCount","scopeConnected","scopeDisconnected","Router","scopeObserver","modulesByIdentifier","loadDefinition","unloadIdentifier","connectModule","afterLoad","disconnectModule","getContextForElementAndIdentifier","proposeToConnectScopeForElementAndIdentifier","console","defaultSchema","enter","tab","esc","space","up","down","home","end","page_up","page_down","objectFromEntries","array","memo","k","v","Application","debug","logFormattedMessage","Promise","resolve","readyState","register","load","registerActionOption","head","rest","shouldLoad","unload","onerror","groupCollapsed","log","groupEnd","getOutletController","getControllerAndEnsureConnectedScope","outletController","parseValueDefinitionPair","typeDefinition","payload","typeFromObject","typeObject","hasType","hasDefault","default","fullObject","onlyType","onlyDefault","parseValueTypeConstant","typeFromDefaultValue","parseValueTypeDefault","parseValueTypeObject","typeFromConstant","parseValueTypeDefinition","constant","defaultValuesByType","constantFromType","defaultValueForDefinition","readers","writers","valueDescriptorForTokenAndTypeDefinition","Boolean","Number","String","boolean","number","string","writeJSON","stringify","Controller","_identifier","_application","dispatch","prefix","bubbles","cancelable","CustomEvent","dispatchEvent","blessings","classDefinition","targetDefinition","valueDefinitionPairs","propertyDescriptorMap","result","valueDefinitionPair","valueDescriptor","read","write","hasCustomDefaultValue","propertiesForValueDefinitionPair","outletDefinition","camelizedName","outletElement","propertiesForOutletDefinition","hookCallback","hooks","apply","setHookCallback","isObject","hasOwnProp","isObjectEmpty","obj","isUndefined","isNumber","isDate","Date","fn","res","arrLen","valueOf","createUTC","format","locale","strict","createLocalOrUTC","utc","defaultParsingFlags","empty","unusedTokens","unusedInput","overflow","charsLeftOver","nullInput","invalidEra","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","era","meridiem","rfc2822","weekdayMismatch","getParsingFlags","_pf","isValid","_isValid","flags","parsedParts","isNowValid","isNaN","getTime","invalidWeekday","_strict","bigHour","isFrozen","createInvalid","NaN","fun","momentProperties","updateInProgress","copyConfig","to","prop","val","momentPropertiesLen","_isAMomentObject","_f","_l","_tzm","_isUTC","_offset","_locale","Moment","config","updateOffset","isMoment","msg","suppressDeprecationWarnings","firstTime","deprecationHandler","arg","argLen","stack","deprecations","deprecateSimple","isFunction","Function","_config","_dayOfMonthOrdinalParseLenient","_dayOfMonthOrdinalParse","source","_ordinalParse","mergeConfigs","parentConfig","childConfig","Locale","defaultCalendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","calendar","mom","now","output","_calendar","zeroFill","targetLength","forceSign","absNumber","abs","zerosToFill","pow","substr","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","padded","ordinal","func","localeData","removeFormattingTokens","makeFormatFunction","formatMoment","expandFormat","invalidDate","replaceLongDateFormatTokens","longDateFormat","lastIndex","defaultLongDateFormat","LTS","LT","L","LL","LLL","LLLL","_longDateFormat","formatUpper","tok","defaultInvalidDate","_invalidDate","defaultOrdinal","defaultDayOfMonthOrdinalParse","_ordinal","defaultRelativeTime","future","past","ss","mm","h","hh","dd","w","ww","M","MM","y","yy","relativeTime","withoutSuffix","isFuture","_relativeTime","pastFuture","diff","aliases","addUnitAlias","unit","shorthand","lowerCase","normalizeUnits","units","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","priorities","addUnitPriority","priority","getPrioritizedUnits","unitsObj","u","isLeapYear","year","absFloor","ceil","floor","toInt","argumentForCoercion","coercedNumber","isFinite","makeGetSet","keepTime","set$1","month","date","daysInMonth","stringGet","stringSet","prioritized","prioritizedLen","regexes","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchTimestamp","matchWord","addRegexToken","regex","strictRegex","isStrict","getParseRegexForToken","unescapeFormat","regexEscape","matched","p1","p2","p3","p4","addParseToken","tokenLen","addWeekParseToken","_w","addTimeToArrayFromToken","indexOf","YEAR","MONTH","DATE","HOUR","MINUTE","SECOND","MILLISECOND","WEEK","WEEKDAY","mod","x","modMonth","monthsShort","months","monthsShortRegex","monthsRegex","monthsParse","defaultLocaleMonths","defaultLocaleMonthsShort","MONTHS_IN_FORMAT","defaultMonthsShortRegex","defaultMonthsRegex","localeMonths","_months","isFormat","localeMonthsShort","_monthsShort","handleStrictParse","monthName","ii","llc","toLocaleLowerCase","_monthsParse","_longMonthsParse","_shortMonthsParse","localeMonthsParse","_monthsParseExact","setMonth","dayOfMonth","min","getSetMonth","getDaysInMonth","computeMonthsParse","_monthsShortStrictRegex","_monthsShortRegex","_monthsStrictRegex","_monthsRegex","cmpLenRev","shortPieces","longPieces","mixedPieces","daysInYear","parseTwoDigitYear","parseInt","getSetYear","getIsLeapYear","createDate","ms","getFullYear","setFullYear","createUTCDate","UTC","getUTCFullYear","setUTCFullYear","firstWeekOffset","dow","doy","fwd","getUTCDay","dayOfYearFromWeeks","week","weekday","resYear","resDayOfYear","dayOfYear","weekOfYear","resWeek","weekOffset","weeksInYear","weekOffsetNext","localeWeek","_week","defaultLocaleWeek","localeFirstDayOfWeek","localeFirstDayOfYear","getSetWeek","getSetISOWeek","parseWeekday","weekdaysParse","parseIsoWeekday","shiftWeekdays","ws","weekdaysMin","weekdaysShort","weekdays","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","localeWeekdays","_weekdays","day","localeWeekdaysShort","_weekdaysShort","localeWeekdaysMin","_weekdaysMin","handleStrictParse$1","weekdayName","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","localeWeekdaysParse","_weekdaysParseExact","_fullWeekdaysParse","getSetDayOfWeek","getDay","getSetLocaleDayOfWeek","getSetISODayOfWeek","computeWeekdaysParse","_weekdaysStrictRegex","_weekdaysRegex","_weekdaysShortStrictRegex","_weekdaysShortRegex","_weekdaysMinStrictRegex","_weekdaysMinRegex","minp","shortp","longp","minPieces","hFormat","hours","kFormat","lowercase","minutes","matchMeridiem","_meridiemParse","localeIsPM","seconds","kInput","_isPm","isPM","_meridiem","pos","pos1","pos2","defaultLocaleMeridiemParse","getSetHour","localeMeridiem","isLower","globalLocale","baseConfig","dayOfMonthOrdinalParse","meridiemParse","locales","localeFamilies","commonPrefix","arr1","minl","normalizeLocale","chooseLocale","names","j","loadLocale","isLocaleNameSane","oldLocale","_abbr","getSetGlobalLocale","getLocale","defineLocale","abbr","parentLocale","updateLocale","tmpLocale","listLocales","checkOverflow","_overflowDayOfYear","_overflowWeeks","_overflowWeekday","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","obsOffsets","UT","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","configFromISO","allowTime","dateFormat","timeFormat","tzFormat","exec","isoDatesLen","isoTimesLen","configFromStringAndFormat","extractFromRFC2822Strings","yearStr","monthStr","dayStr","hourStr","minuteStr","secondStr","untruncateYear","preprocessRFC2822","checkWeekday","weekdayStr","parsedInput","calculateOffset","obsOffset","militaryOffset","numOffset","hm","configFromRFC2822","parsedArray","setUTCMinutes","getUTCMinutes","configFromString","createFromInputFallback","defaults","currentDateArray","nowValue","_useUTC","getUTCMonth","getUTCDate","getMonth","getDate","configFromArray","currentDate","expectedWeekday","yearToUse","dayOfYearFromWeekInfo","_dayOfYear","_nextDay","weekYear","temp","weekdayOverflow","curWeek","GG","W","E","createLocal","gg","ISO_8601","RFC_2822","skipped","stringLength","totalParsedInputLength","meridiemFixWrap","erasConvertYear","hour","isPm","meridiemHour","configFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","validFormatFound","bestFormatIsValid","configfLen","score","configFromObject","dayOrDate","minute","second","millisecond","createFromConfig","prepareConfig","preparse","configFromInput","isUTC","prototypeMin","other","prototypeMax","pickBy","moments","ordering","isDurationValid","unitHasDecimal","orderLen","parseFloat","isValid$1","createInvalid$1","createDuration","Duration","duration","years","quarters","quarter","weeks","isoWeek","days","milliseconds","_milliseconds","_days","_data","_bubble","isDuration","absRound","round","compareArrays","array1","array2","dontConvert","lengthDiff","diffs","offset","separator","utcOffset","sign","offsetFromString","chunkOffset","matcher","cloneWithOffset","model","clone","setTime","local","getDateOffset","getTimezoneOffset","getSetOffset","keepLocalTime","keepMinutes","localAdjust","_changeInProgress","addSubtract","getSetZone","setOffsetToUTC","setOffsetToLocal","subtract","setOffsetToParsedOffset","tZone","hasAlignedHourOffset","isDaylightSavingTime","isDaylightSavingTimeShifted","_isDSTShifted","toArray","isLocal","isUtcOffset","isUtc","aspNetRegex","isoRegex","ret","diffRes","parseIso","momentsDifference","inp","positiveMomentsDifference","base","isAfter","isBefore","createAdder","direction","period","tmp","isAdding","invalid","isString","isMomentInput","isNumberOrStringArray","isMomentInputObject","objectTest","propertyTest","propertyLen","arrayTest","dataTypeTest","item","isCalendarSpec","getCalendarFormat","myMoment","calendar$1","time","formats","sod","startOf","calendarFormat","localInput","endOf","isBetween","inclusivity","localFrom","localTo","isSame","inputMs","isSameOrAfter","isSameOrBefore","asFloat","that","zoneDelta","monthDiff","wholeMonthDiff","anchor","toISOString","keepOffset","toDate","inspect","datetime","suffix","zone","inputString","defaultFormatUtc","defaultFormat","postformat","humanize","fromNow","toNow","newLocaleData","lang","MS_PER_SECOND","MS_PER_MINUTE","MS_PER_HOUR","MS_PER_400_YEARS","mod$1","dividend","divisor","localStartOfDate","utcStartOfDate","startOfDate","isoWeekday","unix","toObject","toJSON","isValid$2","parsingFlags","invalidAt","creationData","localeEras","eras","_eras","since","until","localeErasParse","eraName","narrow","localeErasConvertYear","dir","getEraName","getEraNarrow","getEraAbbr","getEraYear","erasNameRegex","computeErasParse","_erasNameRegex","_erasRegex","erasAbbrRegex","_erasAbbrRegex","erasNarrowRegex","_erasNarrowRegex","matchEraAbbr","matchEraName","matchEraNarrow","matchEraYearOrdinal","_eraYearOrdinalRegex","abbrPieces","namePieces","narrowPieces","addWeekYearFormatToken","getSetWeekYear","getSetWeekYearHelper","getSetISOWeekYear","getISOWeeksInYear","getISOWeeksInISOWeekYear","isoWeekYear","getWeeksInYear","weekInfo","getWeeksInWeekYear","weeksTarget","setWeekAll","dayOfYearData","getSetQuarter","erasParse","eraYearOrdinalParse","getSetDayOfMonth","getSetDayOfYear","getSetMinute","getSetMillisecond","getSetSecond","parseMs","getZoneAbbr","getZoneName","proto","createUnix","createInZone","parseZone","preParsePostFormat","for","eraNarrow","eraAbbr","eraYear","isoWeeks","weeksInWeekYear","isoWeeksInYear","isoWeeksInISOWeekYear","isDST","zoneAbbr","zoneName","dates","isDSTShifted","proto$1","get$1","field","setter","listMonthsImpl","out","listWeekdaysImpl","localeSorted","listMonths","listMonthsShort","listWeekdays","listWeekdaysShort","listWeekdaysMin","firstDayOfYear","firstDayOfWeek","langData","mathAbs","addSubtract$1","add$1","subtract$1","absCeil","bubble","monthsFromDays","monthsToDays","daysToMonths","as","valueOf$1","makeAs","alias","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","clone$1","get$2","makeGetter","thresholds","substituteTimeAgo","relativeTime$1","posNegDuration","getSetRelativeTimeRounding","roundingFunction","getSetRelativeTimeThreshold","threshold","limit","argWithSuffix","argThresholds","withSuffix","th","abs$1","toISOString$1","totalSign","ymSign","daysSign","hmsSign","total","toFixed","proto$2","toIsoString","version","relativeTimeRounding","relativeTimeThreshold","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","TIME","TIME_SECONDS","TIME_MS","factory","AbstractParserWithWordBoundaryChecking","cachedInnerPattern","cachedPattern","patternLeftBoundary","innerPattern","extract","header","substring","innerExtract","g","f","$","z","D","Q","S","O","$L","$u","$x","$offset","$d","init","$y","$M","$D","$W","$H","getHours","$m","getMinutes","$s","getSeconds","$ms","getMilliseconds","$utils","$g","$locale","weekStart","$set","YY","YYYY","MMM","MMMM","DD","ddd","dddd","H","HH","A","SSS","Z","toUTCString","T","$i","isDayjs","en","Ls","extractTerms","dictionary","matchAnyPattern","repeatedTimeunitPattern","singleTimeunitPattern","singleTimeunitPatternNoCapture","__importDefault","ParsingResult","ParsingComponents","ReferenceWithTimezone","quarterOfYear_1","dayjs_1","dayjs_2","timezone_1","instant","timezoneOffset","toTimezoneOffset","timezone","getDateWithAdjustedTimezone","getSystemTimezoneAdjustmentMinute","overrideTimezoneOffset","currentTimezoneOffset","reference","knownComponents","knownValues","impliedValues","refDayJs","imply","component","isCertain","getCertainComponents","isOnlyDate","isOnlyTime","isOnlyWeekdayComponent","isOnlyDayMonthComponent","isValidDate","dateWithoutTimezoneAdjustment","dayjs","timezoneAdjustment","fragments","components","assignSimilarTime","assignSimilarDate","implySimilarTime","text","refDate","__createBinding","k2","__setModuleDefault","__importStar","parseDate","casual","ru","zh","nl","pt","ja","fr","de","Weekday","Meridiem","Chrono","chrono_1","ref","option","parseTimeUnits","TIME_UNITS_PATTERN","parseYear","YEAR_PATTERN","parseOrdinalNumberPattern","ORDINAL_NUMBER_PATTERN","parseNumberPattern","NUMBER_PATTERN","TIME_UNIT_DICTIONARY","ORDINAL_WORD_DICTIONARY","INTEGER_WORD_DICTIONARY","MONTH_DICTIONARY","FULL_MONTH_NAME_DICTIONARY","WEEKDAY_DICTIONARY","pattern_1","years_1","num","sunday","sun","monday","mon","tuesday","tue","wednesday","wed","thursday","thurs","thur","thu","friday","fri","saturday","sat","january","february","march","april","may","june","july","august","september","october","november","december","jan","feb","mar","apr","jun","jul","aug","sep","sept","oct","nov","dec","one","two","three","four","five","six","seven","eight","nine","ten","eleven","twelve","first","third","fourth","fifth","sixth","seventh","eighth","ninth","tenth","eleventh","twelfth","thirteenth","fourteenth","fifteenth","sixteenth","seventeenth","eighteenth","nineteenth","twentieth","sec","mins","hr","hrs","qtr","yr","rawYearNumber","findMostLikelyADYear","SINGLE_TIME_UNIT_PATTERN","SINGLE_TIME_UNIT_REGEX","collectDateTimeFragment","timeunitText","remainingText","findYearClosestToRef","yearNumber","refMoment","dateMoment","nextYear","lastYear","REGEX_PARTS","leftBoundary","rightBoundary","implySimilarDate","implyTheNextDay","assignTheNextDay","index_1","targetDayJs","AM","PM","addImpliedTimeUnits","reverseTimeUnits","timeUnits","reversed","zondag","zon","zo","maandag","ma","dinsdag","din","di","woensdag","woe","wo","donderdag","dond","do","vrijdag","vrij","vr","zaterdag","zat","januari","februari","maart","mei","juni","juli","augustus","oktober","okt","een","twee","drie","vier","vijf","zes","zeven","acht","negen","tien","elf","twaalf","eerste","tweede","derde","vierde","vijfde","zesde","zevende","achtste","negende","tiende","elfde","twaalfde","dertiende","veertiende","vijftiende","zestiende","zeventiende","achttiende","negentiende","twintigste","seconden","minuut","minuten","minuutje","uur","uren","dag","dagen","weken","maand","maanden","jaar","jr","jaren","GlobalRegistration","registryName","registry","_registryName","NodeManager","root","currentNode","parent","_updateCurrentNode","notify","_cleanUp","_notify","_emitChildRemoval","poppedNode","pop","dataset","sheetStackTarget","count","_emitEvent","nodeElement","customEvent","HTMLElement","parentNode","childRemovalEvent","StackManager","sheetsTree","sheets","SheetsTree","stackRegistration","_stackManager","_persistStack","_emitGenericEvent","reloadPrimary","notifyCallbacks","keepPrimary","_reloading","lastRemovedNode","_removeNodes","_emitElementEvent","closestOriginNode","clearUpTo","_eventNameFor","ParsingContext","results_1","en_1","configuration","createCasualConfiguration","parsers","refiners","referenceDate","results","parser","parsedResults","executeParser","refiner","refine","originalText","parsedResult","createParsingResult","createParsingComponents","textOrEndIndex","startComponents","endComponents","block","abstractRefiners_1","AbstractMergeDateRangeRefiner","MergingRefiner","shouldMergeResults","textBetween","currentResult","nextResult","patternBetween","mergeResults","fromResult","toResult","fromMoment","toMoment","mergingCalculation_1","AbstractMergeDateTimeRefiner","mergeDateTimeResult","includeCommonConfiguration","ExtractTimezoneAbbrRefiner_1","ExtractTimezoneOffsetRefiner_1","OverlapRemovalRefiner_1","ForwardDateRefiner_1","UnlikelyFormatFilter_1","ISOFormatParser_1","MergeWeekdayComponentRefiner_1","strictMode","unshift","noon","morning","midnight","yesterdayEvening","evening","lastNight","tonight","theDayAfter","tomorrow","theDayBefore","yesterday","today","numDay","nDays","targetDate","implyHour","AbstractTimeExpressionParser","cachedPrimaryPrefix","cachedPrimarySuffix","cachedPrimaryTimePattern","cachedFollowingPhase","cachedFollowingSuffix","cachedFollowingTimePatten","patternFlags","primaryPatternLeftBoundary","primarySuffix","followingSuffix","getPrimaryTimePatternThroughCache","extractPrimaryTimeComponents","followingMatch","getFollowingTimePatternThroughCache","checkAndReturnWithoutFollowingPattern","extractFollowingTimeComponents","checkAndReturnWithFollowingPattern","ampm","endingWithNumbers","endingNumbers","startingNumbers","endingNumberVal","startingNumberVal","primaryPrefix","primaryTimePattern","followingPhase","followingTimePatten","getBackwardDaysToWeekday","getDaysForwardToWeekday","getDaysToWeekdayClosest","getDaysToWeekday","createParsingComponentsAtWeekday","timeunits_1","refWeekday","SUNDAY","SATURDAY","backward","forward","forwardCount","backwardCount","daysToWeekday","PATTERN","littleEndian","groupNumberMonth","groupNumberDay","previousChar","Event","startTime","endTime","referenceId","paymentToken","title","description","url","style","barberToken","maxOverlaps","width","global","moment","startTimeMoment","endTimeMoment","minutesSinceMidnight","minutesSinceMidnightToPercentage","durationToPercentage","Filter","mergedResults","curResult","mergedResult","zhStringToYear","zhStringToNumber","WEEKDAY_OFFSET","NUMBER","cable","createConsumer","AnnouncementQueue","_started","_announcementCallbacks","_instance","_announce","wait","showCallback","show","hideCallback","hide","eventCallbacks","status","_waitOnAnnounceCallbacks","onAnnounceCallbacks","_updateLastAnnounceCallback","_runCurrentAnnounceCallback","lastAnnounceCallback","currentAnnounceCallback","attempts","waitTime","setTimeout","getInstance","AnnouncementQueueConstructor","CalendarDataSource","page","range","rangeStart","rangeEnd","section","by","isCurrent","within","currentRange","startDate","endDate","BreakpointChange","breakpoints","_triggerOnAddition","triggerOnAddition","breakpoint","matchMedia","query","_handleBreakpointChange","queryMatchFor","helpers","tiny","small","medium","large","huge","_registerListener","_initialTrigger","incomingBreakingNames","breakpointNames","breakpointName","currentBreakpoint","IosMessageHandler","pendingRequests","requestId","generateRequestId","reject","pushNotificationsHandler","postMessage","webkit","messageHandlers","pushNotifications","random","sek","sekunde","sekunden","std","stunde","stunden","tag","tage","tagen","woche","wochen","monat","monate","monaten","monats","quartal","quartals","quartale","quartalen","jahr","jahre","jahren","jahres","EventArrangement","events","eventGroups","calculateEventGroups","updateEventsPosition","groups","mergeEventIntoGroups","updateEventsOverlaps","fillEventsInGaps","maximiseEventWidth","EventGroup","startTimeToInteger","endTimeToInteger","newGroups","group","newEventGroups","eventGroup","groupPrev","eventGroupPrev","overlapStartTime","overlapEndTime","overlapGroup","groupNext","eventGroupNext","gaps","gapsForEvents","gap","desiredWidth","sortGaps","eventRight","nextGroup","nextEvent","nextLeft","minRight","Infinity","nextGroupIndex","eventIndex","prev","Gap","DataSource","prepareEvents","initializeEvents","arrangedEvents","definitionsFromContext","logicalName","identifierForContextKey","definitionForModuleAndIdentifier","definitionForModuleWithContextAndKey","standalone","plural","translate","monthsStrictRegex","monthsShortStrictRegex","longMonthsParse","shortMonthsParse","processRelativeTime","monthsParseExact","weekdaysParseExact","monthsNominativeEl","monthsGenitiveEl","momentToFormat","_monthsGenitiveEl","_monthsNominativeEl","calendarEl","_calendarEl","monthsShortDot","monthsShortWithDots","monthsShortWithoutDots","monthsNominative","monthsSubjective","suffixes","TIMEZONE_OFFSET_PATTERN","Renderer","eventClass","dataSource","renderEvent","createElement","classList","variant","height","top","titleElement","innerHTML","appendChild","descriptionElement","innerText","defaultInstanceSettings","update","begin","loopBegin","changeBegin","change","changeComplete","loopComplete","complete","loop","autoplay","timelineOffset","defaultTweenSettings","delay","endDelay","easing","validTransforms","cache","CSS","springs","minMax","stringContains","str","applyArguments","is","pth","svg","SVGElement","HTMLInputElement","dom","fnc","und","nil","hex","rgb","hsl","col","parseEasingParameters","spring","mass","stiffness","damping","velocity","w0","sqrt","zeta","wd","solver","progress","exp","cos","sin","cached","frame","elapsed","steps","eases","functionEasings","bezier","kSampleStepSize","aA1","aA2","B","C","calcBezier","aT","getSlope","mX1","mY1","mX2","mY2","sampleValues","Float32Array","getTForX","aX","intervalStart","currentSample","kSplineTableSize","guessForT","initialSlope","aGuessT","currentSlope","newtonRaphsonIterate","aA","aB","currentX","currentT","binarySubdivide","penner","linear","Sine","PI","Circ","Back","Bounce","pow2","Elastic","amplitude","asin","easeIn","parseEasings","ease","selectString","filterArray","thisArg","flattenArray","NodeList","HTMLCollection","arrayContains","cloneObject","replaceObjectProps","o1","o2","mergeObjects","colorToRgb","rgbValue","hexValue","hexToRgba","hslValue","hue2rgb","q","hslToRgba","getUnit","getFunctionValue","animatable","id","el","convertPxToUnit","tempEl","parentEl","position","factor","offsetWidth","removeChild","convertedUnit","getCSSValue","uppercasePropName","getComputedStyle","getPropertyValue","getAnimationType","getElementTransforms","transform","reg","transforms","getTransformValue","propName","defaultVal","getTransformUnit","list","getOriginalTargetValue","getRelativeValue","operator","validateValue","originalUnit","unitLess","getDistance","getPolylineLength","previousPos","points","totalLength","numberOfItems","currentPos","getItem","getTotalLength","getCircleLength","getRectLength","getLineLength","getPolygonLength","getParentSvg","pathEl","svgData","parentSvgEl","getParentSvgEl","rect","getBoundingClientRect","viewBoxAttr","viewBox","vW","vH","getPathProgress","path","isPathTargetInsideSVG","point","getPointAtLength","p0","scaleX","scaleY","atan2","decomposeValue","rgx","original","numbers","strings","parseTargets","getAnimatables","parsed","normalizePropertyTweens","tweenSettings","settings","propArray","getProperties","keyframes","propertyNames","newKey","flattenKeyframes","tweens","normalizeTweens","previousTween","tween","normalizeTweenValues","tweenValue","toUnit","originalValue","previousValue","fromUnit","isPath","isColor","setProgressValue","css","manual","last","setTargetsValue","valueUnit","animType","getAnimations","animatables","lastTween","createAnimation","getInstanceTimings","animations","animLength","getTlOffset","anim","timings","instanceID","activeInstances","engine","raf","step","activeInstancesLength","activeInstance","paused","splice","tick","requestAnimationFrame","anime","suspendWhenDocumentHidden","isDocumentHidden","cancelAnimationFrame","instance","_onDocumentVisibility","hidden","children","lastTime","childrenLength","makePromise","promise","_resolve","finished","instanceSettings","createNewInstance","toggleInstanceDirection","child","adjustTime","resetTime","currentTime","speed","seekChild","seek","setAnimationsProgress","insTime","animationsLength","tweenLength","eased","toNumbersLength","toNumber","fromNumber","stringsLength","n$1","currentValue","setCallback","cb","passThrough","setInstanceProgress","engineTime","insDuration","insDelay","insEndDelay","reversePlayback","i$1","syncInstanceChildren","began","loopBegan","changeBegan","changeCompleted","remaining","completed","reset","play","restart","remove","removeTargetsFromInstance","removeTargetsFromAnimations","targetsArray","childAnimations","running","convertPx","percent","setDashoffset","pathLength","stagger","grid","axis","fromIndex","fromFirst","fromCenter","fromLast","isRange","val1","val2","maxValue","fromX","fromY","distanceX","distanceY","timeline","tl","instanceParams","tlIndex","ins","insParams","tlDuration","Stackable","stackName","_onSheetRemovalBind","_onSheetRemoval","_onSheetReloadBind","_onSheetReload","_defineProxyGetters","onSheetReload","stackManager","finishReloading","onSheetRemoval","proxyProperties","loadFor","useAsStackable","attach","unregister","detach","loadSubscriptionIdentifier","storageIdentifier","localStorage","removeSubscriptionIdentifier","currentStorage","setItem","loadSubscription","subscriptionIdentifier","subscriptions","createSubscription","subscriptionChannel","subscriptionCallbacks","subscription","persistSubscription","useActionCable","subscribe","channel","channelArgs","connected","onCableConnected","disconnected","removeItem","onCableDisconnected","received","onCableReceived","currentSubscription","unsubscribe","unsubscribeAll","perform","tagReplacements","template","replacements","mustacheRegex","clearUnknownTags","sanitizedTemplate","loaderHelper","loadingIndicator","querySelector","display","adapters","WebSocket","enabled","_adapters$logger","_len","messages","_typeof","classCallCheck","Constructor","createClass","props","configurable","writable","protoProps","staticProps","secondsSince","clamp","ConnectionMonitor","connection","visibilityDidChange","reconnectAttempts","isRunning","startedAt","stoppedAt","startPolling","getPollInterval","stopPolling","recordPing","pingedAt","recordConnect","disconnectedAt","recordDisconnect","poll","clearTimeout","pollTimeout","_this","reconnectIfStale","_constructor$pollInte","pollInterval","interval","multiplier","connectionIsStale","staleThreshold","disconnectedRecently","reopen","_this2","visibilityState","isOpen","INTERNAL","message_types","welcome","ping","confirmation","rejection","disconnect_reasons","unauthorized","invalid_request","server_restart","default_mount_path","protocols","supportedProtocols","Connection","consumer","open","monitor","send","webSocket","isActive","getState","uninstallEventHandlers","installEventHandlers","close","allowReconnect","reopenDelay","getProtocol","protocol","isState","isProtocolSupported","states","state","handler","_JSON$parse","reason","reconnect","reload","notifyAll","willAttemptReconnect","Subscription","mixin","command","Subscriptions","channelName","ensureActiveConnection","sendCommand","forget","callbackName","_this3","_len2","_key2","Consumer","_url","createWebSocketURL","href","getConfig","require","symbolMap","numberMap","pluralForm","plurals","pluralize","word","forms","relativeTimeWithPlural","lastDigit","last2Digits","relativeTimeWithMutation","specialMutationForYears","lastNumber","softMutation","mutationTable","fullWeekdaysParse","shortWeekdaysParse","minWeekdaysParse","ll","lll","llll","numbersPast","numbersFuture","verbalNumber","weekEndings","eraYearOrdinalRegex","$0","$1","$2","isUpper","processFutureTime","eifelerRegelAppliesToNumber","processPastTime","translateSeconds","translateSingular","special","relativeTimeWithSingular","relativeSeconds","translator","words","correctGrammaticalCase","wordKey","relativeTimeMr","numbersNouns","translateFuture","translatePast","numberNoun","numberAsNoun","hundred","weekdaysCaseReplace","nominative","accusative","genitive","processHoursFunction","createConfiguration","GB","ENTimeUnitWithinFormatParser_1","ENMonthNameLittleEndianParser_1","ENMonthNameMiddleEndianParser_1","ENMonthNameParser_1","ENCasualYearMonthDayParser_1","ENSlashMonthFormatParser_1","ENTimeExpressionParser_1","ENTimeUnitAgoFormatParser_1","ENTimeUnitLaterFormatParser_1","ENMergeDateRangeRefiner_1","ENMergeDateTimeRefiner_1","configurations_1","ENCasualDateParser_1","ENCasualTimeParser_1","ENWeekdayParser_1","ENRelativeDateFormatParser_1","SlashDateFormatParser_1","ENTimeUnitCasualRelativeFormatParser_1","ENMergeRelativeDateRefiner_1","AbstractParserWithWordBoundary_1","ISOFormatParser","hourOffset","minuteOffset","DECasualTimeParser","timeKeywordPattern","extractTimeComponents","tz","rangeFromInterval","rangeFromISOString","parseZoneRange","DateRange","return","extendMoment","adjacent","overlaps","excludeEnd","exclusive","excludeStart","isEqual","intersect","gs","foo","bar","trzy","symbol","toPrimitive","__description__","__name__","keyFor","hasInstance","isConcatSpreadable","search","species","unscopables","webpackContext","req","webpackContextResolve","code","showSpinner","clearSpinner","triggerTurbolinksLoadEvent","xhr","disableLink","startsWith","alert","getBreakpoint","rangeType","allPaid","adjustment","maxAdjusted","dialog","unaccent","firstElementChild","currency","formatCurrency","Intl","NumberFormat","currencyDisplay","formatToParts","part","navigator","userAgent","iOSMessageHandler","isPushChannelAvailable","isMacOS","isSafari","upKey","downKey","enterKey","flashEvent","isIosSafari","timetableController","hideNonWorkingBarbers","setState","advance","optionElement","optionsElement","optionsHeight","optionHeight","marginTop","marginBottom","optionsScrollTop","scrollTop","topDistance","offsetTop","bottomDistance","transitionProperty","transitionDuration","transitionTimingFunction","boxSizing","offsetHeight","opacity","paddingTop","paddingBottom","removeProperty","toggle","slide","normalize","unicodeHash","hash","charCodeAt","base64String","base64","repeat","rawData","atob","outputArray","Uint8Array","renderer","presenting","present","dismiss","removeParentDialogOverflow","showClass","_emitStackEvent","addParentDialogOverflow","removeOnCloseValue","once","removedDialogOverflow","Proxy","displayAutomaticallyValue","targetHref","stackNameValue","stackEventName","stackEvent","targetDialog","displayAutomatically","removeOnClose","hasSelectorValue","actionSheetElement","selectorValue","startAnnouncing","announceName","announceNameParamValue","eventPayload","onSuccess","onMarkAsSeenCallback","visitedEvent","announceNext","prepareJavascriptTestCookie","prepareDialogSupport","prepareMomentObject","prepareIntercom","fetchUrlOnLoadValue","loadFetchUrl","removeHoverStyles","sidebarTarget","visible","isSidebarVisible","sidebarTogglerTarget","toggleSidebar","calendarController","switchToToday","si","styleSheets","styleSheet","rules","cssRules","ex","ri","rule","selectorText","selectorWithoutHover","deleteRule","fetchUrlOnLoadMethodValue","Rails","ajax","dataType","expires","cookie","HTMLDialogElement","momentLocale","momentFormats","momentLocaleSettings","clockType","setDefault","Intercom","unreadCount","intercomBadgeEvent","targetId","timezoneValue","localeValue","clockTypeValue","momentLocaleSettingsValue","fetchUrlOnLoad","fetchUrlOnLoadMethod","cachedGuess","zones","links","countries","guesses","logError","momentVersion","major","minor","charCodeToInt","charCode","unpackBase60","whole","fractional","arrayToInt","mapIndices","indices","unpack","offsets","untils","intToUntil","abbrs","population","Zone","packedString","_set","Country","country_name","zone_names","OffsetAt","at","timeString","toTimeString","ZoneScore","offsetScore","abbrScore","findChange","low","high","mid","sortZoneScores","localeCompare","addToGuesses","guessesForUserOffsets","guessesOffset","offsetsLength","filteredGuesses","rebuildGuess","intlName","DateTimeFormat","resolvedOptions","timeZone","normalizeName","zoneScore","startYear","userOffsets","zoneScores","getZone","scoreOffsetAt","addZone","packed","normalized","caller","link","addLink","normal0","normal1","needsOffset","isUnixTimestamp","unpacked","_index","timestamp","zone_name","country_code","offsetNext","offsetPrev","moveAmbiguousForward","moveInvalidForward","offsetAt","dataVersion","_zones","_links","_names","_countries","country_zones","addCountries","zoneExists","didShowError","guess","ignoreCache","zonesForCountry","country","with_offset","old","abbrWrap","_z","resetZoneWrap","defaultZone","webpackPolyfill","paths","debounce","filterAndShowOptions","maxVisibleOptionsValue","optionsData","hasUrlValue","urlValue","then","response","ok","json","optionsDataNormalised","comparableString","optionNode","optionTemplateTarget","cloneNode","optionsTarget","activeElement","inputTarget","showOptionsFetchError","hasActionTarget","visibleOptions","optionHighlightedClass","optionHiddenClass","dropdownTarget","dropdownVisibleClass","hasOptions","matchFound","optionTargets","showOptions","hasMinInputLengthToShowOptionsValue","minInputLengthToShowOptionsValue","optionIndex","optionsHiddenClass","shiftOptionsPosition","keyCodes","keyCode","currentOptionIndex","nextOptionIndex","click","highlightNewOption","submitForm","dismissOptions","recordEditorController","submit","optionsFetchErrorData","scrollToOption","inputTop","inputBottom","bottom","clientHeight","notEnoughSpaceAbove","noCutoffBelow","innerHeight","formFieldHeight","formFieldElement","submitButton","requestSubmit","errors","attributeValue","optionsFetchErrorValue","maxVisibleOptions","minInputLengthToShowOptions","optionsFetchError","reTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","freeGlobal","freeSelf","objectToString","nativeMax","nativeMin","isObjectLike","isSymbol","isBinary","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","invokeFunc","leadingEdge","timerExpired","shouldInvoke","timeSinceLastCall","trailingEdge","remainingWait","debounced","isInvoking","cancel","flush","handleInitMap","addressFieldTarget","blur","focus","insertBefore","nextSibling","componentRestrictions","countryCodeValue","autocomplete","google","maps","places","Autocomplete","setTypes","addListener","placeChanged","place","getPlace","line1Target","line2Target","address_components","types","long_name","cityTarget","stateTarget","zipTarget","isManualAddressHidden","manualAddressTarget","googleAddressTarget","googleAddressButtonTarget","manualAddressButtonTarget","countryCode","counter","counterValue","idValue","counterTarget","formattedCounter","_counter","render","openValue","enableDay","hasBreakValue","showBrakePanel","disableDay","hiddenClassValue","itemTarget","openClassValue","timepickerWrapperTargets","allowBreaksValue","togglePanelTarget","hasBreakPanelTarget","breakPanelTarget","hasTogglePanelTarget","hasBreak","allowBreaks","openClass","hiddenClass","extractSummary","summary","dayTargets","dayPanel","dayName","checked","businessDayHasBreakValue","summaryInputTarget","adaptTimescaleLabelsToClockType","updateViewTypeClass","layoutSectionHeaders","layoutSectionBodies","layoutDayticker","layoutDatePicker","formatDatePickerToggleText","toggleCurrentTimeIndicator","adaptToScrollbarWidth","layoutTimescale","adjustSectionBodiesHeight","toggleDayticker","toggleScrollability","scrollIntoViewHorizontally","scrollIntoViewVertically","scrollToCurrentTime","layoutCurrentTimeIndicator","scrollableClassName","scrollable","scrollIntoViewFromTheLeft","isScrollingHorizontally","isScrollingReachedTheRLeftSide","isScrollingReachedTheRightSide","scrollIntoViewFromTheRight","currentScrollTop","currentSectionBodyTarget","previousSectionBodyTarget","nextSectionBodyTarget","contentTarget","scrollLeft","scrollToTime","animated","scrolledToTime","scrollToTimeLabel","canScrollToCurrentTime","calculateTimeLabelOffsetTopAdjustment","scrollTo","behavior","totalMinutes","percentage","sectionHeight","verticalScale","offsetTopAdjustment","adjustedScrollTop","scrollToTimeOffset","needsDayticker","hasDayColumnBodyContentTarget","calculateColumnHeight","dayColumnBodyContentTargets","layoutDayLabel","fullDayName","dayNumber","columnElement","daytickerColumnTemplateTarget","titleLabelElement","dayNameElement","shortName","fullName","dayNumberElement","textContent","isToday","isOneDayBeforeToday","isOneDayAfterToday","prepareSectionHeaders","calculateColumnWidth","sectionHeader","prepareSectionBodies","dayColumnBodyTemplateTarget","columnContentElement","calendarTarget","sectionBody","prepareDayTicker","daytickerRange","isOneDayBeforeCurrent","isOneDayAfterCurrent","daytickerTarget","intervalsPerDay","timeScale","percentagePerInterval","timescale","timescaleTicks","timescaleLabels","timescaleIndicators","isFirstInterval","isLastInterval","timescaleTick","timescaleTickTemplateTarget","timescaleLabel","minutesFromMidnight","formattedTime","padStart","timescaleLabelTime","currentTimeIndicatorTick","currentTimeIndicatorTickTemplateTarget","currentTimeIndicatorLabel","currentTimeIndicatorLabelTemplateTarget","hasCurrentTimeIndicatorTickTarget","currentTimeIndicatorTickTargets","hasCurrentTimeIndicatorLabelTarget","currentTimeIndicatorLabelTargets","sectionIncludesToday","currentTimeIndicator","datePickerControllers","highlight","hasToggleDatePickerDropdownTarget","toggleDatePickerDropdownTargets","needsLongFormat","dayAndMonth","formattedDate","dayColumnBodyTargets","column","marginRight","scrollbarWidth","paginationTarget","sectionScrollersTarget","timeScaleValue","verticalScaleValue","scrollToTimeValue","daysValue","parseStartDate","dateValue","pageValue","isScrollable","scrollToTimeOffsetValue","isSmallViewport","setCurrentTime","startRefreshingCurrentTimeIndicator","emitChange","resizeObserver","ResizeObserver","_entries","datePickerActive","showAppropriateDatePickers","stopRefreshingCurrentTimeIndicator","currentPage","parsedDate","switchToPage","selection","dismissDatePicker","horizontalScrollDelay","horizontalScrollFactor","scrollWidth","goToPreviousPage","goToNextPage","verticalScrollDelay","isScrollingVertically","scrollEvent","scale","previousWeek","refreshCurrentTimeIndicatorInterval","setInterval","clearInterval","pickedDateEvent","chrono","parsedMoment","isDismissButton","datePickerDropdownDismissButtonTarget","isEqualNode","datePickerDropdownsVisible","hideAllDatePickers","active","hideDatePickerDropdowns","hideDatePickerSheet","showDatePickerSheet","showDatePickerDropdowns","toggleDatePickerDropdownControllers","datePickerSheetController","viewportWidth","datePickerSheetTarget","clientWidth","forcedScrollingValue","isTouchable","maxTouchPoints","msMaxTouchPoints","hasDatePickerTarget","datePickerTargets","forcedScrolling","constants_1","PATTERN_WITH_PREFIX","PATTERN_WITHOUT_PREFIX","ENTimeUnitWithinFormatParser","forwardDate","createRelativeFromReference","TIMEZONE_ABBR_MAP","ACDT","ACST","ADT","AEDT","AEST","AFT","AKDT","AKST","ALMT","AMST","AMT","ANAST","ANAT","AQTT","ART","AST","AWDT","AWST","AZOST","AZOT","AZST","AZT","BNT","BOT","BRST","BRT","BST","BTT","CAST","CAT","CCT","CEST","CET","CHADT","CHAST","CKT","CLST","CLT","COT","CVT","CXT","ChST","DAVT","EASST","EAST","EAT","ECT","EEST","EET","EGST","EGT","ET","FJST","FJT","FKST","FKT","FNT","GALT","GAMT","GET","GFT","GILT","GST","GYT","HAA","HAC","HADT","HAE","HAP","HAR","HAST","HAT","HAY","HKT","HLV","HNA","HNC","HNE","HNP","HNR","HNT","HNY","HOVT","ICT","IDT","IOT","IRDT","IRKST","IRKT","IRST","IST","JST","KGT","KRAST","KRAT","KST","KUYT","LHDT","LHST","LINT","MAGST","MAGT","MART","MAWT","MESZ","MEZ","MHT","MMT","MSD","MSK","MUT","MVT","MYT","NCT","NDT","NFT","NOVST","NOVT","NPT","NST","NUT","NZDT","NZST","OMSST","OMST","PET","PETST","PETT","PGT","PHOT","PHT","PKT","PMDT","PMST","PONT","PT","PWT","PYST","PYT","RET","SAMT","SAST","SBT","SCT","SGT","SRT","SST","TAHT","TFT","TJT","TKT","TLT","TMT","TVT","ULAT","UYST","UYT","UZT","VET","VLAST","VLAT","VUT","WAST","WAT","WEST","WESZ","WET","WEZ","WFT","WGST","WGT","WIB","WIT","WITA","WST","WT","YAKST","YAKT","YAPT","YEKST","YEKT","timezoneInput","constants_2","constants_3","ENMonthNameLittleEndianParser","ENMonthNameMiddleEndianParser","ENMonthNameParser","ENCasualYearMonthDayParser","ENSlashMonthFormatParser","AbstractTimeExpressionParser_1","ENTimeExpressionParser","super","endsWith","STRICT_PATTERN","ENTimeUnitAgoFormatParser","outputTimeUnits","ENTimeUnitLaterFormatParser","AbstractMergeDateRangeRefiner_1","ENMergeDateRangeRefiner","AbstractMergeDateTimeRefiner_1","ENMergeDateTimeRefiner","mergeDateTimeComponent","dateComponent","timeComponent","dateTimeComponent","dateResult","timeResult","beginDate","beginTime","endDateTime","TIMEZONE_NAME_PATTERN","DEFAULT_TIMEZONE_ABBR_MAP","timezoneOverrides","timezones","_b","timezoneAbbr","extractedTimezoneOffset","filteredResults","prevResult","UnlikelyFormatFilter","isStrictModeValid","MergeWeekdayComponentRefiner","newResult","references","ENCasualDateParser","lowerText","ENCasualTimeParser","weekdays_1","ENWeekdayParser","dayOfWeek","postfix","modifierWord","ENRelativeDateFormatParser","unitWord","timeunit","ENTimeUnitCasualRelativeFormatParser","hasImpliedEarlierReferenceDate","ENMergeRelativeDateRefiner","DETimeExpressionParser_1","DEWeekdayParser_1","DESpecificTimeExpressionParser_1","DEMergeDateRangeRefiner_1","DEMergeDateTimeRefiner_1","DECasualDateParser_1","DECasualTimeParser_1","DEMonthNameLittleEndianParser_1","DETimeUnitRelativeFormatParser_1","DETimeExpressionParser","DEWeekdayParser","FIRST_REG_PATTERN","SECOND_REG_PATTERN","DESpecificTimeExpressionParser","extractTimeComponent","secondMatch","extractingComponents","DEMergeDateRangeRefiner","DEMergeDateTimeRefiner","DECasualDateParser","dateKeyword","timeKeyword","DEMonthNameLittleEndianParser","DETimeUnitAgoFormatParser","FRCasualDateParser_1","FRCasualTimeParser_1","FRTimeExpressionParser_1","FRMergeDateTimeRefiner_1","FRMergeDateRangeRefiner_1","FRWeekdayParser_1","FRSpecificTimeExpressionParser_1","FRMonthNameLittleEndianParser_1","FRTimeUnitAgoFormatParser_1","FRTimeUnitWithinFormatParser_1","FRTimeUnitRelativeFormatParser_1","FRCasualDateParser","FRCasualTimeParser","suffixLower","FRTimeExpressionParser","FRMergeDateTimeRefiner","FRMergeDateRangeRefiner","FRWeekdayParser","FRSpecificTimeExpressionParser","FRMonthNameLittleEndianParser","FRTimeUnitAgoFormatParser","FRTimeUnitWithinFormatParser","JPStandardParser_1","JPMergeDateRangeRefiner_1","JPCasualDateParser_1","toHankaku","yearNumText","alphaNum","fromCharCode","JPMergeDateRangeRefiner","PTWeekdayParser_1","PTTimeExpressionParser_1","PTMergeDateTimeRefiner_1","PTMergeDateRangeRefiner_1","PTMonthNameLittleEndianParser_1","PTCasualDateParser_1","PTCasualTimeParser_1","PTWeekdayParser","norm","PTTimeExpressionParser","PTMergeDateTimeRefiner","PTMergeDateRangeRefiner","PTMonthNameLittleEndianParser","PTCasualDateParser","PTCasualTimeParser","NLMergeDateRangeRefiner_1","NLMergeDateTimeRefiner_1","NLCasualDateParser_1","NLCasualTimeParser_1","NLTimeUnitWithinFormatParser_1","NLWeekdayParser_1","NLMonthNameMiddleEndianParser_1","NLMonthNameParser_1","NLSlashMonthFormatParser_1","NLTimeExpressionParser_1","NLCasualYearMonthDayParser_1","NLCasualDateTimeParser_1","NLTimeUnitCasualRelativeFormatParser_1","NLRelativeDateFormatParser_1","NLTimeUnitAgoFormatParser_1","NLTimeUnitLaterFormatParser_1","NLMergeDateRangeRefiner","NLMergeDateTimeRefiner","NLCasualDateParser","NLCasualTimeParser","NLTimeUnitWithinFormatParser","NLWeekdayParser","NLMonthNameMiddleEndianParser","NLMonthNameParser","NLSlashMonthFormatParser","NLTimeExpressionParser","NLCasualYearMonthDayParser","NLCasualDateTimeParser","dateText","timeText","NLTimeUnitCasualRelativeFormatParser","NLRelativeDateFormatParser","NLTimeUnitAgoFormatParser","NLTimeUnitLaterFormatParser","__exportStar","hans","hant","ZHHantCasualDateParser_1","ZHHantDateParser_1","ZHHantDeadlineFormatParser_1","ZHHantRelationWeekdayParser_1","ZHHantTimeExpressionParser_1","ZHHantWeekdayParser_1","ZHHantMergeDateRangeRefiner_1","ZHHantMergeDateTimeRefiner_1","ZHHantCasualDateParser","startMoment","day1","time1","time2","day3","timeString3","time3","ZHHantDateParser","ZHHantDeadlineFormatParser","unitAbbr","ZHHantRelationWeekdayParser","startMomentFixed","refOffset","ZHHantTimeExpressionParser","zhAMPM1","zhAMPM2","zhAMPM3","endMoment","ZHHantWeekdayParser","ZHHantMergeDateRangeRefiner","ZHHantMergeDateTimeRefiner","ZHHansCasualDateParser_1","ZHHansDateParser_1","ZHHansDeadlineFormatParser_1","ZHHansRelationWeekdayParser_1","ZHHansTimeExpressionParser_1","ZHHansWeekdayParser_1","ZHHansMergeDateRangeRefiner_1","ZHHansMergeDateTimeRefiner_1","ZHHansCasualDateParser","ZHHansDateParser","ZHHansDeadlineFormatParser","ZHHansRelationWeekdayParser","ZHHansTimeExpressionParser","ZHHansWeekdayParser","ZHHansMergeDateRangeRefiner","ZHHansMergeDateTimeRefiner","RUTimeUnitWithinFormatParser_1","RUMonthNameLittleEndianParser_1","RUMonthNameParser_1","RUTimeExpressionParser_1","RUTimeUnitAgoFormatParser_1","RUMergeDateRangeRefiner_1","RUMergeDateTimeRefiner_1","RUCasualDateParser_1","RUCasualTimeParser_1","RUWeekdayParser_1","RURelativeDateFormatParser_1","RUTimeUnitCasualRelativeFormatParser_1","RUTimeUnitWithinFormatParser","RUMonthNameLittleEndianParser","RUMonthNameParser","RUTimeExpressionParser","RUTimeUnitAgoFormatParser","RUMergeDateRangeRefiner","RUMergeDateTimeRefiner","RUCasualDateParser","RUCasualTimeParser","daysToAdd","RUWeekdayParser","RURelativeDateFormatParser","RUTimeUnitCasualRelativeFormatParser","initValues","calculateCharacters","possibleWarnings","currentWarnings","messagesCount","frenchMessage","finalText","thresholdIfMultipleSMS","anyNonGsmChars","processWarnings","warning","getElementById","displayMessageCount","messagesCountSelector","mask","warningText","displaySmsPrice","hasPriceTarget","smsPrice","priceTarget","price","textareaTarget","hasExtraCharactersCheckboxTarget","hasLinkSampleValue","hasOptOutStringValue","extraCharactersCheckboxTarget","linkSampleValue","optOutStringValue","frenchMarketingValue","nonGsmThreshold","gsmThreshold","nonGsmThresholdIfMultipleSMS","gsmThresholdIfMultipleSMS","linkSample","optOutString","frenchMarketing","documentClick","_event","composed","targetTarget","clipboard","writeText","sourceTarget","animateButton","secondaryClass","secondaryClassValue","primaryClass","primaryClassValue","linkInputButtonTarget","copiedStrValue","countdownTimer","copyStrValue","copyStr","copiedStr","DATA","color","eventClassName","printText","dateTextTarget","renderCalendar","startDayOfWeek","weekStartDay","firstGridDate","monthType","renderDay","yearStart","extendYearDropdownByValue","yearEnd","yearRange","yearPickerTarget","monthPickerTarget","isVisible","findDayColumn","datasetDate","datePickerElement","outerHTML","coordinates","getCoordinates","row","selectionStart","emitEvent","isRangeSelection","selectRange","selectSingle","daysOffset","eventType","rangeSelectionValue","rangeSelection","extendYearDropdownBy","checkboxTarget","detailsTarget","dialogController","setDialogController","dialogElement","alignmentClasses","optionElements","currentElement","scrollToOptionIndex","currentSelection","hasDescriptionTarget","descriptionTarget","swapIconValue","currentSelectionIconHTML","iconElement","maxHeightToSet","autoPositioningValue","windowHeight","middleOfWindow","openFromTop","headerTarget","visibility","optionsTop","optionsBottom","scrolledPastTopBy","scrolledPastBottomBy","isScrolledPastBottom","currentMaxHeight","edgeBufferValue","contentElement","maxHeightToSetWithoutPadding","maxHeight","overflowY","stateValue","alignment","initialAlignment","initialSelection","indexOptions","resetCurrentOption","highlightedIndex","initialIndex","proposedSelection","isProposedSelectionDisabled","isProposedSelectionInvalid","isDisabled","dismissOthers","clickedInside","needsCustomDismissHandler","isWithOptions","currentOption","maxIndex","minIndex","alignmentValue","swapIcon","autoPositioning","edgeBuffer","fiveValue","secondsTotal","redirect","secondsTarget","location","showMaxFilesNotification","showInvalidFilesNotification","updateSelectedView","files","maxFilesSelectedNoticeValue","invalidFileTypeNoticeValue","selectedViewValue","updateSelectedViewSimple","selectedViewSimpleSingleTarget","selectedViewSimpleMultipleTarget","selectedViewSimpleMultipleText","containerTarget","fieldTarget","filesValue","disabledValue","eventFiles","dataTransfer","attachedFiles","DataTransfer","invalidFiles","file","validType","items","mimeTypesValue","mimeTypes","getElementsByClassName","selectedView","multiple","maxFilesSelectedNotice","invalidFileTypeNotice","disabled","handleFlashNotify","clearExisting","messageId","flashMessages","queueMessages","hasMessageTarget","messageTargets","messageElement","messageBody","messageType","presentMessages","listContainer","messageHolder","presentAfter","timeoutMessagePeriod","presentMessage","notificationElement","buildMessage","notificationExists","removeMessage","messageIndex","notificationNode","notificationTemplateTarget","actionInfo","replacementMap","actionBody","defaultActionTextValue","actionUrl","prepareDataAttributes","prepareTitle","prepareAction","prepareIcon","icon","prepareVariant","actionTemplate","variants","bannerVariants","standardVariants","hasIconsTemplateTarget","iconsElement","iconsTemplateTarget","iconClassName","targetIconElement","replaceWith","notice","success","modalDialogs","dialogFlashContainerClassValue","listTarget","defaultActionText","dialogFlashContainerClass","focusOnConnectValue","targetElement","focusTarget","textInputType","setSelectionRange","targetIsChildValue","focusOnConnect","targetIsChild","gtag","signUpEvent","email","emailTarget","phoneTarget","dataLayer","resultTarget","hideTargets","showTargets","togglerTarget","highlightTarget","supportedClass","overflows","leftButtonTarget","rightButtonTarget","bindedHandleVisibilityChange","handleVisibilityChange","visibilityObserver","IntersectionObserver","displayScrollbars","layout","entry","isIntersecting","isOverflowing","scrollAmount","scrollHeight","scrollBy","scrollByUnit","scrollByValue","displayScrollbarsValue","scrollByUnits","hasContentToReplaceTarget","contentToReplaceTarget","ele","vHeight","zoom","lat","lng","latInputTarget","longInputTarget","mapboxgl","container","center","LngLat","nav","NavigationControl","showCompass","addControl","on","evt","addMarker","marker","Marker","setLngLat","addTo","lngLat","long","closed","animation","scheduleClose","hasCloseAfterValue","closeAfterValue","hasCloseProgressTarget","progressAnimationDuration","closeProgressTarget","animationDuration","closeAfter","collapsedValue","slideToggle","isTogglingWith","listItem","scrollItemToTopOfSection","scrollContainer","menuTop","itemTop","scrollContainerSelectorValue","collapsed","scrollContainerSelector","sendEventOnConnectValue","captureEvent","posthog","capture","eventNameValue","propertiesValue","sendEventOnConnect","connectEvent","disabledClassNameValue","statement","disable","enable","hasLabelTarget","labelTarget","iconOnlyValue","disabledClassName","iconOnly","removeExistingValidationMessages","validationMessages","renderValidationBannerMessages","renderFormFieldValidationMessages","validationBannersTarget","validationMessagesNode","formFieldNode","validationMessageTemplateNode","validationMessage","validationMessageNode","validationBannerNode","validationBannerTemplateTarget","clearErrors","idTriggerValue","toggleClassValue","toggleClass","idTrigger","scrollIntoView","updateSelectedOption","checkboxFor","labelFor","hasEmptySearchTarget","emptySearchTarget","checkbox","selectFieldId","newCount","selectedCountTarget","selectedCountMessageZero","selectedCountMessageOne","selectedCountMessageOther","selectedCountContainerTarget","elementFor","selectedTagTemplateTarget","tagsRowThree","selectedTagsTargets","outer","arrangeSelectedTags","selectTarget","selected","hasSelectedCountTarget","updateSelectedCount","hasSelectedTagsTarget","updateSelectedTag","tagsRowOne","tagsRowTwo","tags","acc","numRows","isMobile","hasThirdRow","rowTwoStart","halfwayBetweenRemainingTags","rowThreeStart","selectFieldLabel","handleRegistrationEvent","registrationDetails","onError","startRegistration","registrationHandlerBound","registration","handleRegistration","serviceWorker","requestNotificationPermissionValue","all","handleNotificationSubscription","registerBackgroundSync","Notification","requestPermission","permission","ready","pushManager","getSubscription","subscribedInServer","subscribeToPushNotifications","userVisibleOnly","applicationServerKey","urlBase64ToUint8Array","vapidPublicKeyValue","sendSubscriptionToServer","csrfToken","headers","sync","getTags","registerSync","vapidPublicKey","requestNotificationPermission","setParamAfterHours","formTarget","extraSubmitParamsValue","formUrl","URL","origin","newParams","searchParams","append","extraSubmitParams","Sheet","onPop","_stackManagerFor","_buildCloseButtons","_attachBreakpointListeners","_afterServerRequestIfAny","eventParams","_closeStack","_closeDialog","reloadStackFn","_hookSuccessAjaxEvent","remote","dialogCtrl","_loadControllerFor","dialogCloseClassName","targetStackName","dialogStackNameValue","actionSheetStackNameValue","hasCloseButtonHolderTarget","_desktopCloseButton","desktopCloseButtonTarget","_mobileCloseButton","mobileCloseButtonTarget","closeButtonHolderTarget","breakpointChange","buildFromGlobal","mediaQueryMatches","_showMobileCloseButton","_showDesktopCloseButton","_hideCloseButtons","SheetStack","_dialogOpenedBind","openedDialog","currentDialog","_appendSheetController","dataControllers","sheetStackIndexValue","hasMichHereinlassenTarget","michHereinlassenTarget","enableButtons","isReachedMin","disableDecreaseButton","isReachedMax","disableIncreaseButton","propose","commit","proposedValue","proposeDecrease","proposeIncrease","parsedInputValue","increase","decrease","decreaseTarget","increaseTarget","nextDecreasedValue","nextIncreasedValue","onScroll","mainCta","isScrolledIntoView","hideOnDesktop","hideCTA","showCTA","ctaTarget","mainCtaSelectorValue","elemTop","elemBottom","desktopViewPort","showOnDesktopValue","innerWidth","mainCtaSelector","showOnDesktop","visibleValue","submitDisabledValue","disableSubmit","submitTarget","hideClass","submitDisabled","toggleCurrentSection","sectionTargets","sectionToggleSelector","tabTargets","tabToggleSelector","currentSectionElement","currentTabElement","hashChangeBind","loadTabFromAnchor","hasInitialSectionValue","currentSectionSelector","initialSectionValue","hashPortion","isTabAvailable","switchTab","tabElement","hasSectionToggleClass","sectionToggleClass","hasTabToggleClass","tabToggleClass","initialSection","hasUploadTarget","hasPickerTarget","pickerTarget","hidePickerClass","uploadTarget","hideUploadClass","hasObserveResizeValue","observeResizeValue","fitText","unobserve","alignVert","alignVertValue","alignHoriz","alignHorizValue","multiLine","multiLineValue","detectMultiLine","hasDetectMultilineValue","detectMultiLineValue","minFontSize","minFontSizeValue","maxFontSize","maxFontSizeValue","reProcess","hasReProcessValue","reProcessValue","widthOnly","widthOnlyValue","alignVertWithFlexbox","alignVertWithFlexboxValue","textFit","dispatchTextFitEvent","els","defaultSettings","elType","processItem","isElement","innerSpan","originalHeight","originalHTML","originalWidth","className","hasClass","fontSize","innerSpanBoundingClientRect","addStyleSheet","nodeName","cls","observeResize","inputTargets","toggleTargets","toggleTargetsFor","tgt","closestEdge","positionWhenCloseToTop","positionWhenCloseToBottom","arrowPosition","alignToLeft","alignToCenter","alignToRight","togglerElement","arrowSize","elementHeight","offsetLeft","leftPosition","elementWidth","togglerWidth","togglerLeft","setup","isAutomatic","distanceToTop","elementHeightWithBuffer","distanceToBottom","elementID","automaticValue","automatic","prepare","destroyWidget","loadWidget","scriptUrl","initWidget","script","src","async","onload","Trustpilot","loadFromElement","Turbolinks","visit","markAsVisitedBind","markAsVisited","tourName","URLSearchParams","checkValidity","supportCustomEvent","safeDispatchEvent","check","findNearestDialog","localName","host","safeBlur","shadowRoot","inNodeList","nodeList","isFormMethodDialog","findFocusableElementWithin","hostElement","elems","findFormSubmitter","submitter","HTMLFormElement","dialogPolyfill","formSubmitter","getRootNode","maybeHandleSubmit","defaultPrevented","imagemapUseValue","dialogPolyfillInfo","dialog_","replacedStyleTop_","openAsModal_","showModal","returnValue","maybeHideModal","attributeFilter","timeout","removed","downgradeModal","delayModel","ev","cand","setOpen","backdrop_","backdropMouseEvent_","createEvent","initCustomEvent","zIndex","dm","removeDialog","fake","firstChild","tabIndex","redirectedEvent","initMouseEvent","screenX","screenY","clientX","clientY","relatedTarget","focus_","updateZIndex","dialogZ","backdropZ","pushDialog","webkitOverflowScrolling","createsStackingContext","needsCentering","reposition","opt_returnValue","closeEvent","topValue","selectedNodes","cssTop","cssBottom","isInlinePositionSetByStylesheet","forceRegisterDialog","pendingDialogStack","checkDOM","checkDOM_","overlay","forwardTab_","handleKey_","handleFocus_","zIndexLow_","zIndexHigh_","mo_","records","rec","DialogManager","blockDocument","unblockDocument","updateStacking","dpi","containedByTopDialog_","candidate","composedPath","compareDocumentPosition","DOCUMENT_POSITION_PRECEDING","cancelEvent","allowed","testForm","methodDescriptor","realGet","realSet","offsetX","offsetY","nativeFormSubmit","resize","showAsModal","_dialogCloseClassName","dataClosing","setProperty","heightScale","registerDialog","_handleBackdropClick","_buildEvent","eventDetail","isAlertDialog","openedAsModal","alertValue","linkClickSelector","buttonClickSelector","exclude","inputChangeSelector","formSubmitSelector","formInputClickSelector","formDisableSelector","formEnableSelector","fileInputSelector","linkDisableSelector","buttonDisableSelector","nonce","loadCSPNonce","cspNonce","matchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector","webkitMatchesSelector","getData","setData","csrfParam","CSRFProtection","setRequestHeader","refreshCSRFTokens","param","fire","stopEverything","AcceptHeaders","createXHR","prepareOptions","processResponse","html","xml","responseText","getResponseHeader","statusText","beforeSend","XMLHttpRequest","OPENED","accept","crossDomain","withCredentials","onreadystatechange","DONE","DOMParser","parseFromString","isCrossDomain","originAnchor","urlAnchor","serializeElement","additionalParam","inputs","encodeURIComponent","formElements","allowAction","handleConfirm","confirm","answer","disableFormElement","disableFormElements","disableLinkElement","enableFormElement","enableFormElements","enableLinkElement","isXhrRedirect","handleDisabledElement","enableElement","disableElement","replacement","handleMethod","formContent","isRemote","handleRemote","enctype","FormData","formSubmitButtonClick","formNoValidate","preventInsignificantClick","insignificantMetaClick","jQuery","rails","ajaxPrefilter","originalOptions","_rails_loaded","supported","history","pushState","clearCache","setProgressBarDelay","copyObject","defer","throttle","initEvent","uuid","Location","absoluteURL","requestURL","wrap","getOrigin","getPath","getPathComponents","getLastPathComponent","getExtension","isHTML","isPrefixedBy","isEqualTo","toCacheKey","HttpRequest","requestCanceled","requestTimedOut","requestFailed","requestLoaded","requestProgressed","referrer","NETWORK_FAILURE","TIMEOUT_FAILURE","sent","notifyApplicationBeforeRequestStart","setProgress","requestStarted","abort","lengthComputable","loaded","endRequest","requestCompletedWithResponse","failed","requestFailedWithStatusCode","notifyApplicationAfterRequestEnd","onprogress","ontimeout","onabort","destroy","requestFinished","ProgressBar","trickle","stylesheetElement","createStylesheetElement","progressElement","createProgressElement","defaultCSS","installStylesheetElement","installProgressElement","startTrickling","hiding","fadeProgressElement","uninstallProgressElement","stopTrickling","setValue","trickleInterval","BrowserAdapter","showProgressBar","progressBar","visitProposedToLocationWithAction","startVisitToLocationWithAction","visitStarted","issueRequest","changeHistory","loadCachedSnapshot","visitRequestStarted","hasCachedSnapshot","showProgressBarAfterDelay","visitRequestProgressed","visitRequestCompleted","loadResponse","visitRequestFailedWithStatusCode","visitRequestFinished","hideProgressBar","visitCompleted","followRedirect","pageInvalidated","progressBarTimeout","progressBarDelay","History","onPageLoad","onPopState","shouldHandlePopState","turbolinks","restorationIdentifier","historyPoppedToLocationWithRestorationIdentifier","pageLoaded","pageIsLoaded","HeadDetails","tracked","fromHeadElement","childNodes","hasElementWithKey","getTrackedElementSignature","getScriptElementsNotInDetails","getElementsMatchingTypeNotInDetails","getStylesheetElementsNotInDetails","getProvisionalElements","getMetaValue","findMetaElementByName","Snapshot","headDetails","bodyElement","fromHTMLString","fromHTMLElement","getRootLocation","getSetting","getCacheControlValue","getElementForAnchor","getPermanentElements","getPermanentElementById","getPermanentElementsPresentInSnapshot","findFirstAutofocusableElement","hasAnchor","isPreviewable","isCacheable","isVisitable","renderView","viewWillRender","newBody","viewRendered","invalidateView","viewInvalidated","createScriptElement","__super__","SnapshotRenderer","currentSnapshot","newSnapshot","isPreview","currentHeadDetails","newHeadDetails","currentBody","shouldRender","mergeHead","replaceBody","focusFirstAutofocusableElement","copyNewHeadStylesheetElements","copyNewHeadScriptElements","removeCurrentHeadProvisionalElements","copyNewHeadProvisionalElements","relocateCurrentBodyPermanentElements","activateNewBodyScriptElements","assignNewBody","replacePlaceholderElementsWithClonedPermanentElements","trackedElementsAreIdentical","getNewHeadStylesheetElements","getNewHeadScriptElements","getCurrentHeadProvisionalElements","getNewHeadProvisionalElements","getCurrentBodyPermanentElements","permanentElement","getNewBodyScriptElements","replaceChild","ErrorRenderer","newHead","replaceHeadAndBody","activateBodyScriptElements","getScriptElements","View","htmlElement","getSnapshot","snapshot","markAsPreview","renderSnapshot","renderError","ScrollManager","scrollToElement","scrollToPosition","updatePosition","pageXOffset","pageYOffset","scrollPositionChanged","SnapshotCache","snapshots","touch","put","Visit","performScroll","adapter","timingMetrics","recordTimingMetric","request","cancelRender","fail","visitFailed","historyChanged","shouldIssueRequest","getCachedSnapshot","getCachedSnapshotForLocation","cacheSnapshot","visitRendered","redirectedToLocation","followedRedirect","replaceHistoryWithLocationAndRestorationIdentifier","scrolled","scrollToRestoredPosition","scrollToTop","scrollToAnchor","restorationData","scrollPosition","getTimingMetrics","snapshotCached","clickBubbled","clickCaptured","view","scrollManager","startHistory","stopHistory","applicationAllowsVisitingLocation","locationIsVisitable","getRestorationDataForIdentifier","startVisit","pushHistoryWithLocationAndRestorationIdentifier","shouldCacheSnapshot","notifyApplicationBeforeCachingSnapshot","lastRenderedLocation","getCurrentRestorationData","notifyApplicationBeforeRender","currentVisit","notifyApplicationAfterRender","notifyApplicationAfterPageLoad","clickEventIsSignificant","getVisitableLinkForNode","getVisitableLocationForLink","applicationAllowsFollowingLinkToLocation","getActionForLink","notifyApplicationAfterClickingLinkToLocation","notifyApplicationBeforeVisitingLocation","notifyApplicationAfterVisitingLocation","timing","createVisit","isContentEditable","which","nodeIsVisitable","currentScript","sharedContext","landingPageContext","canCallTarget","optionsTargets","checkedOption","decodeEmail","decodedEmailLinkTarget","hasDecodedEmailTextTarget","decodedEmailTextTarget","hasSubjectValue","subjectValue","plainEmail","scrambledEmail","encodedEmailValue","encodedEmail","subject","navbarLinkTarget","showLoadingIndicatorValue","startLoadingIndicator","clickOnTimeoutValue","clickOnTimeout","showLoadingIndicator","processPricing","locations","locationTarget","therapists","therapistTarget","shopValue","includedShopsValue","userValue","includedUsersValue","showQuote","planCost","baseValue","appValue","weeklyPricingValue","chargesTarget","currencyValue","showPrice","quoteTarget","monthTarget","shop","includedShops","user","includedUsers","app","weeklyPricing","timezoneTarget","emailLoginTarget","winHeight","hero","menuMobile"],"mappings":";aACE,IAAIA,EAAmB,GAGvB,SAASC,EAAoBC,GAG5B,GAAGF,EAAiBE,GACnB,OAAOF,EAAiBE,GAAUC,QAGnC,IAAIC,EAASJ,EAAiBE,GAAY,CACzCG,EAAGH,EACHI,GAAG,EACHH,QAAS,IAUV,OANAI,EAAQL,GAAUM,KAAKJ,EAAOD,QAASC,EAAQA,EAAOD,QAASF,GAG/DG,EAAOE,GAAI,EAGJF,EAAOD,QAKfF,EAAoBQ,EAAIF,EAGxBN,EAAoBS,EAAIV,EAGxBC,EAAoBU,EAAI,SAASR,EAASS,EAAMC,GAC3CZ,EAAoBa,EAAEX,EAASS,IAClCG,OAAOC,eAAeb,EAASS,EAAM,CAAEK,YAAY,EAAMC,IAAKL,KAKhEZ,EAAoBkB,EAAI,SAAShB,GACX,qBAAXiB,QAA0BA,OAAOC,aAC1CN,OAAOC,eAAeb,EAASiB,OAAOC,YAAa,CAAEC,MAAO,WAE7DP,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,KAQvDrB,EAAoBsB,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQrB,EAAoBqB,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,kBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAKX,OAAOY,OAAO,MAGvB,GAFA1B,EAAoBkB,EAAEO,GACtBX,OAAOC,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAOrB,EAAoBU,EAAEe,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,IAAQC,KAAK,KAAMD,IAC9I,OAAOF,GAIRzB,EAAoB6B,EAAI,SAAS1B,GAChC,IAAIS,EAAST,GAAUA,EAAOqB,WAC7B,WAAwB,OAAOrB,EAAgB,SAC/C,WAA8B,OAAOA,GAEtC,OADAH,EAAoBU,EAAEE,EAAQ,IAAKA,GAC5BA,GAIRZ,EAAoBa,EAAI,SAASiB,EAAQC,GAAY,OAAOjB,OAAOkB,UAAUC,eAAe1B,KAAKuB,EAAQC,IAGzG/B,EAAoBkC,EAAI,UAIjBlC,EAAoBA,EAAoBmC,EAAI,K,+BClFrD,SAASC,EAAeC,EAAKjC,GAAK,OAUlC,SAAyBiC,GAAO,GAAIC,MAAMC,QAAQF,GAAM,OAAOA,EAVtBG,CAAgBH,IAQzD,SAA+BA,EAAKjC,GAAK,IAAIqC,EAAY,MAAPJ,EAAc,KAAyB,qBAAXlB,QAA0BkB,EAAIlB,OAAOuB,WAAaL,EAAI,cAAe,GAAU,MAANI,EAAY,OAAQ,IAAkDE,EAAIC,EAAlDC,EAAO,GAAQC,GAAK,EAAUC,GAAK,EAAmB,IAAM,IAAKN,EAAKA,EAAGlC,KAAK8B,KAAQS,GAAMH,EAAKF,EAAGO,QAAQC,QAAoBJ,EAAKK,KAAKP,EAAGtB,QAAYjB,GAAKyC,EAAKM,SAAW/C,GAA3D0C,GAAK,IAAoE,MAAOM,GAAOL,GAAK,EAAMH,EAAKQ,EAAO,QAAU,IAAWN,GAAsB,MAAhBL,EAAW,QAAWA,EAAW,SAAO,QAAU,GAAIM,EAAI,MAAMH,GAAQ,OAAOC,EARzbQ,CAAsBhB,EAAKjC,IAI5F,SAAqCS,EAAGyC,GAAU,IAAKzC,EAAG,OAAQ,GAAiB,kBAANA,EAAgB,OAAO0C,EAAkB1C,EAAGyC,GAAS,IAAIzB,EAAIf,OAAOkB,UAAUwB,SAASjD,KAAKM,GAAG4C,MAAM,GAAI,GAAc,WAAN5B,GAAkBhB,EAAE6C,cAAa7B,EAAIhB,EAAE6C,YAAY/C,MAAM,GAAU,QAANkB,GAAqB,QAANA,EAAa,OAAOS,MAAMqB,KAAK9C,GAAI,GAAU,cAANgB,GAAqB,2CAA2C+B,KAAK/B,GAAI,OAAO0B,EAAkB1C,EAAGyC,GAJpTO,CAA4BxB,EAAKjC,IAEnI,WAA8B,MAAM,IAAI0D,UAAU,6IAFuFC,GAMzI,SAASR,EAAkBlB,EAAK2B,IAAkB,MAAPA,GAAeA,EAAM3B,EAAIc,UAAQa,EAAM3B,EAAIc,QAAQ,IAAK,IAAI/C,EAAI,EAAG6D,EAAO,IAAI3B,MAAM0B,GAAM5D,EAAI4D,EAAK5D,IAAK6D,EAAK7D,GAAKiC,EAAIjC,GAAI,OAAO6D,EAN5K,sEAgBA,MAAMC,EACJR,YAAYS,EAAaC,EAAWC,GAClCC,KAAKH,YAAcA,EACnBG,KAAKF,UAAYA,EACjBE,KAAKD,aAAeA,EACpBC,KAAKC,kBAAoB,IAAIC,IAG/BC,UACEH,KAAKH,YAAYO,iBAAiBJ,KAAKF,UAAWE,KAAMA,KAAKD,cAG/DM,aACEL,KAAKH,YAAYS,oBAAoBN,KAAKF,UAAWE,KAAMA,KAAKD,cAGlEQ,iBAAiBC,GACfR,KAAKC,kBAAkBQ,IAAID,GAG7BE,oBAAoBF,GAClBR,KAAKC,kBAAkBU,OAAOH,GAGhCI,YAAYC,GACV,MAAMC,EAyBV,SAAqBD,GACnB,GAAI,gCAAiCA,EACnC,OAAOA,EACF,CACL,MAAME,EAA2BF,EAAME,yBACvC,OAAOvE,OAAOwE,OAAOH,EAAO,CAC1BI,6BAA6B,EAE7BF,2BACEf,KAAKiB,6BAA8B,EACnCF,EAAyB9E,KAAK+D,UAnCZkB,CAAYL,GAElC,IAAK,MAAML,KAAWR,KAAKmB,SAAU,CACnC,GAAIL,EAAcG,4BAChB,MAEAT,EAAQI,YAAYE,IAK1BM,cACE,OAAOpB,KAAKC,kBAAkBoB,KAAO,EAGvC,eACE,OAAOrD,MAAMqB,KAAKW,KAAKC,mBAAmBqB,MAAK,CAACC,EAAMC,KACpD,MAAMC,EAAYF,EAAKG,MACjBC,EAAaH,EAAME,MACzB,OAAOD,EAAYE,GAAc,EAAIF,EAAYE,EAAa,EAAI,MAuBxE,MAAMC,EACJxC,YAAYyC,GACV7B,KAAK6B,YAAcA,EACnB7B,KAAK8B,kBAAoB,IAAIC,IAC7B/B,KAAKgC,SAAU,EAGjBC,QACOjC,KAAKgC,UACRhC,KAAKgC,SAAU,EACfhC,KAAKkC,eAAeC,SAAQC,GAAiBA,EAAcjC,aAI/DkC,OACMrC,KAAKgC,UACPhC,KAAKgC,SAAU,EACfhC,KAAKkC,eAAeC,SAAQC,GAAiBA,EAAc/B,gBAI/D,qBACE,OAAOrC,MAAMqB,KAAKW,KAAK8B,kBAAkBQ,UAAUC,QAAO,CAACC,EAAWC,IAAQD,EAAUE,OAAO1E,MAAMqB,KAAKoD,EAAIH,YAAY,IAG5H/B,iBAAiBC,GACfR,KAAK2C,6BAA6BnC,GAASD,iBAAiBC,GAG9DE,oBAAoBF,EAASoC,GAAsB,GACjD5C,KAAK2C,6BAA6BnC,GAASE,oBAAoBF,GAC3DoC,GAAqB5C,KAAK6C,8BAA8BrC,GAG9DsC,YAAYC,EAAOC,EAASC,EAAS,IACnCjD,KAAK6B,YAAYiB,YAAYC,EAAO,SAASC,IAAWC,GAG1DJ,8BAA8BrC,GAC5B,MAAM4B,EAAgBpC,KAAK2C,6BAA6BnC,GAEnD4B,EAAchB,gBACjBgB,EAAc/B,aACdL,KAAKkD,6BAA6B1C,IAItC0C,6BAA6B1C,GAC3B,MAAMX,EAAcW,EAAQX,YACtBC,EAAYU,EAAQV,UACpBC,EAAeS,EAAQT,aACvBoD,EAAmBnD,KAAKoD,oCAAoCvD,GAC5DwD,EAAWrD,KAAKqD,SAASvD,EAAWC,GAC1CoD,EAAiBxC,OAAO0C,GACK,GAAzBF,EAAiB9B,MAAWrB,KAAK8B,kBAAkBnB,OAAOd,GAGhE8C,6BAA6BnC,GAC3B,MAAMX,EAAcW,EAAQX,YACtBC,EAAYU,EAAQV,UACpBC,EAAeS,EAAQT,aAC7B,OAAOC,KAAKsD,mBAAmBzD,EAAaC,EAAWC,GAGzDuD,mBAAmBzD,EAAaC,EAAWC,GACzC,MAAMoD,EAAmBnD,KAAKoD,oCAAoCvD,GAC5DwD,EAAWrD,KAAKqD,SAASvD,EAAWC,GAC1C,IAAIqC,EAAgBe,EAAiBxG,IAAI0G,GAOzC,OALKjB,IACHA,EAAgBpC,KAAKuD,oBAAoB1D,EAAaC,EAAWC,GACjEoD,EAAiBK,IAAIH,EAAUjB,IAG1BA,EAGTmB,oBAAoB1D,EAAaC,EAAWC,GAC1C,MAAMqC,EAAgB,IAAIxC,EAAcC,EAAaC,EAAWC,GAMhE,OAJIC,KAAKgC,SACPI,EAAcjC,UAGTiC,EAGTgB,oCAAoCvD,GAClC,IAAIsD,EAAmBnD,KAAK8B,kBAAkBnF,IAAIkD,GAOlD,OALKsD,IACHA,EAAmB,IAAIpB,IACvB/B,KAAK8B,kBAAkB0B,IAAI3D,EAAasD,IAGnCA,EAGTE,SAASvD,EAAWC,GAClB,MAAM0D,EAAQ,CAAC3D,GAIf,OAHAtD,OAAOkH,KAAK3D,GAAcuB,OAAOa,SAAQ9E,IACvCoG,EAAM7E,KAAK,GAAGmB,EAAa1C,GAAO,GAAK,MAAMA,QAExCoG,EAAME,KAAK,MAKtB,MAAMC,EAAiC,CACrCvB,KAAI,EAAC,MACHxB,EAAK,MACL9D,MAEIA,GAAO8D,EAAMgD,mBACV,GAGTC,QAAO,EAAC,MACNjD,EAAK,MACL9D,MAEIA,GAAO8D,EAAMkD,kBACV,GAGTC,KAAI,EAAC,MACHnD,EAAK,MACL9D,EAAK,QACLkH,MAEIlH,GACKkH,IAAYpD,EAAMqD,QAOzBC,EAAoB,+FAuB1B,SAASC,EAAiBC,GACxB,MAAuB,UAAnBA,EACKC,OACqB,YAAnBD,EACFE,cADF,EAmBT,SAASC,EAASzH,GAChB,OAAOA,EAAM0H,QAAQ,uBAAuB,CAACC,EAAGC,IAASA,EAAKC,gBAGhE,SAASC,EAAkB9H,GACzB,OAAOyH,EAASzH,EAAM0H,QAAQ,MAAO,KAAKA,QAAQ,MAAO,MAG3D,SAASK,EAAW/H,GAClB,OAAOA,EAAMgI,OAAO,GAAGH,cAAgB7H,EAAMoC,MAAM,GAGrD,SAAS6F,EAAUjI,GACjB,OAAOA,EAAM0H,QAAQ,YAAY,CAACC,EAAGC,IAAS,IAAIA,EAAKM,kBAOzD,SAASC,EAAY1H,GACnB,OAAkB,OAAXA,QAA8B2H,IAAX3H,EAG5B,SAAS4H,EAAY5H,EAAQC,GAC3B,OAAOjB,OAAOkB,UAAUC,eAAe1B,KAAKuB,EAAQC,GAGtD,MAAM4H,EAAe,CAAC,OAAQ,OAAQ,MAAO,SAsG7C,MAAMC,EAAoB,CACxBC,EAAG,IAAM,QACTC,OAAQ,IAAM,QACdC,KAAM,IAAM,SACZC,QAAS,IAAM,SACfC,MAAOC,GAA+B,UAA1BA,EAAEC,aAAa,QAAsB,QAAU,QAC3DC,OAAQ,IAAM,SACdC,SAAU,IAAM,SAWlB,SAAShD,EAAMC,GACb,MAAM,IAAIgD,MAAMhD,GAGlB,SAASiD,EAASlJ,GAChB,IACE,OAAOmJ,KAAKC,MAAMpJ,GAClB,MAAOqJ,GACP,OAAOrJ,GAIX,MAAMsJ,EACJjH,YAAYkH,EAASC,GACnBvG,KAAKsG,QAAUA,EACftG,KAAKuG,OAASA,EAGhB,YACE,OAAOvG,KAAKuG,OAAO7E,MAGrB,kBACE,OAAO1B,KAAKuG,OAAO1G,YAGrB,mBACE,OAAOG,KAAKuG,OAAOxG,aAGrB,iBACE,OAAOC,KAAKsG,QAAQE,WAGtB5F,YAAYC,GACV,MAAM4F,EAAczG,KAAK0G,mBAAmB7F,GAExCb,KAAK2G,qBAAqB9F,IAAUb,KAAK4G,oBAAoBH,IAC/DzG,KAAK6G,gBAAgBJ,GAIzB,gBACE,OAAOzG,KAAKuG,OAAOzG,UAGrB,aACE,MAAMgH,EAAS9G,KAAK+G,WAAW/G,KAAKgH,YAEpC,GAAqB,mBAAVF,EACT,OAAOA,EAGT,MAAM,IAAId,MAAM,WAAWhG,KAAKuG,wCAAwCvG,KAAKgH,eAG/EJ,oBAAoB/F,GAClB,MAAMoD,EAAUjE,KAAKuG,OAAOtC,QACtBgD,EAA0BjH,KAAKsG,QAAQzE,YAAYoF,wBACnDF,EAAa/G,KAAKsG,QAAQS,WAChC,IAAIG,GAAS,EAEb,IAAK,MAAMC,KAAS3K,OAAO4K,QAAQpH,KAAKD,cAAe,CACrD,IAAIsH,EAAQvJ,EAAeqJ,EAAO,GAElC,MAAM9K,EAAOgL,EAAM,GACbtK,EAAQsK,EAAM,GAEpB,GAAIhL,KAAQ4K,EAAyB,CACnC,MAAMK,EAASL,EAAwB5K,GACvC6K,EAASA,GAAUI,EAAO,CACxBjL,OACAU,QACA8D,QACAoD,UACA8C,gBAON,OAAOG,EAGTR,mBAAmB7F,GACjB,OAAOrE,OAAOwE,OAAOH,EAAO,CAC1B0G,OAAQvH,KAAKuG,OAAOgB,SAIxBV,gBAAgBhG,GACd,MAAMqD,EAASrD,EAAMqD,OACfsD,EAAgB3G,EAAM2G,cAE5B,IACExH,KAAK8G,OAAO7K,KAAK+D,KAAK+G,WAAYlG,GAClCb,KAAKsG,QAAQmB,iBAAiBzH,KAAKgH,WAAY,CAC7CnG,QACAqD,SACAsD,gBACAjB,OAAQvG,KAAKgH,aAEf,MAAOjE,GACP,MAIME,EAAS,CACbuD,WALiBxG,KAAKwG,WAMtBO,WALiB/G,KAAK+G,WAMtB9C,QALcjE,KAAKiE,QAMnBvC,MALY1B,KAAK0B,MAMjBb,SAEFb,KAAKsG,QAAQxD,YAAYC,EAAO,oBAAoB/C,KAAKuG,UAAWtD,IAIxE0D,qBAAqB9F,GACnB,MAAMhB,EAAcgB,EAAMqD,OAE1B,QAAIrD,aAAiB6G,eAAiB1H,KAAKuG,OAAOoB,0BAA0B9G,QAIxEA,aAAiB+G,YAAc5H,KAAKuG,OAAOsB,uBAAuBhH,MAIlEb,KAAKiE,UAAYpE,IAEVA,aAAuBiI,SAAW9H,KAAKiE,QAAQ8D,SAASlI,GAC1DG,KAAKgI,MAAMC,gBAAgBpI,GAE3BG,KAAKgI,MAAMC,gBAAgBjI,KAAKuG,OAAOtC,YAIlD,iBACE,OAAOjE,KAAKsG,QAAQS,WAGtB,iBACE,OAAO/G,KAAKuG,OAAOS,WAGrB,cACE,OAAOhH,KAAKgI,MAAM/D,QAGpB,YACE,OAAOjE,KAAKsG,QAAQ0B,OAKxB,MAAME,EACJ9I,YAAY6E,EAASkE,GACnBnI,KAAKoI,qBAAuB,CAC1BC,YAAY,EACZC,WAAW,EACXC,SAAS,GAEXvI,KAAKiE,QAAUA,EACfjE,KAAKgC,SAAU,EACfhC,KAAKmI,SAAWA,EAChBnI,KAAKwI,SAAW,IAAItI,IACpBF,KAAKyI,iBAAmB,IAAIC,kBAAiBC,GAAa3I,KAAK4I,iBAAiBD,KAGlF1G,QACOjC,KAAKgC,UACRhC,KAAKgC,SAAU,EACfhC,KAAKyI,iBAAiBI,QAAQ7I,KAAKiE,QAASjE,KAAKoI,sBACjDpI,KAAK8I,WAITC,MAAMC,GACAhJ,KAAKgC,UACPhC,KAAKyI,iBAAiBpI,aACtBL,KAAKgC,SAAU,GAGjBgH,IAEKhJ,KAAKgC,UACRhC,KAAKyI,iBAAiBI,QAAQ7I,KAAKiE,QAASjE,KAAKoI,sBACjDpI,KAAKgC,SAAU,GAInBK,OACMrC,KAAKgC,UACPhC,KAAKyI,iBAAiBQ,cACtBjJ,KAAKyI,iBAAiBpI,aACtBL,KAAKgC,SAAU,GAInB8G,UACE,GAAI9I,KAAKgC,QAAS,CAChB,MAAMkH,EAAU,IAAIhJ,IAAIF,KAAKmJ,uBAE7B,IAAK,MAAMlF,KAAWjG,MAAMqB,KAAKW,KAAKwI,UAC/BU,EAAQE,IAAInF,IACfjE,KAAKqJ,cAAcpF,GAIvB,IAAK,MAAMA,KAAWjG,MAAMqB,KAAK6J,GAC/BlJ,KAAKsJ,WAAWrF,IAKtB2E,iBAAiBD,GACf,GAAI3I,KAAKgC,QACP,IAAK,MAAMuH,KAAYZ,EACrB3I,KAAKwJ,gBAAgBD,GAK3BC,gBAAgBD,GACO,cAAjBA,EAASE,KACXzJ,KAAK0J,uBAAuBH,EAASrF,OAAQqF,EAASI,eAC5B,aAAjBJ,EAASE,OAClBzJ,KAAK4J,oBAAoBL,EAASM,cAClC7J,KAAK8J,kBAAkBP,EAASQ,aAIpCL,uBAAuBzF,EAAS0F,GAC1B3J,KAAKwI,SAASY,IAAInF,GAChBjE,KAAKmI,SAAS6B,yBAA2BhK,KAAKiK,aAAahG,GAC7DjE,KAAKmI,SAAS6B,wBAAwB/F,EAAS0F,GAE/C3J,KAAKqJ,cAAcpF,GAEZjE,KAAKiK,aAAahG,IAC3BjE,KAAKsJ,WAAWrF,GAIpB2F,oBAAoBM,GAClB,IAAK,MAAMC,KAAQnM,MAAMqB,KAAK6K,GAAQ,CACpC,MAAMjG,EAAUjE,KAAKoK,gBAAgBD,GAEjClG,GACFjE,KAAKqK,YAAYpG,EAASjE,KAAKqJ,gBAKrCS,kBAAkBI,GAChB,IAAK,MAAMC,KAAQnM,MAAMqB,KAAK6K,GAAQ,CACpC,MAAMjG,EAAUjE,KAAKoK,gBAAgBD,GAEjClG,GAAWjE,KAAKsK,gBAAgBrG,IAClCjE,KAAKqK,YAAYpG,EAASjE,KAAKsJ,aAKrCW,aAAahG,GACX,OAAOjE,KAAKmI,SAAS8B,aAAahG,GAGpCkF,oBAAoBoB,EAAOvK,KAAKiE,SAC9B,OAAOjE,KAAKmI,SAASgB,oBAAoBoB,GAG3CF,YAAYE,EAAMC,GAChB,IAAK,MAAMvG,KAAWjE,KAAKmJ,oBAAoBoB,GAC7CC,EAAUvO,KAAK+D,KAAMiE,GAIzBmG,gBAAgBD,GACd,GAAIA,EAAKM,UAAYC,KAAKC,aACxB,OAAOR,EAIXG,gBAAgBrG,GACd,OAAIA,EAAQ2G,aAAe5K,KAAKiE,QAAQ2G,aAG/B5K,KAAKiE,QAAQ8D,SAAS9D,GAIjCqF,WAAWrF,GACJjE,KAAKwI,SAASY,IAAInF,IACjBjE,KAAKsK,gBAAgBrG,KACvBjE,KAAKwI,SAAS/H,IAAIwD,GAEdjE,KAAKmI,SAAS0C,gBAChB7K,KAAKmI,SAAS0C,eAAe5G,IAMrCoF,cAAcpF,GACRjE,KAAKwI,SAASY,IAAInF,KACpBjE,KAAKwI,SAAS7H,OAAOsD,GAEjBjE,KAAKmI,SAAS2C,kBAChB9K,KAAKmI,SAAS2C,iBAAiB7G,KAOvC,MAAM8G,EACJ3L,YAAY6E,EAAS0F,EAAexB,GAClCnI,KAAK2J,cAAgBA,EACrB3J,KAAKmI,SAAWA,EAChBnI,KAAKgL,gBAAkB,IAAI9C,EAAgBjE,EAASjE,MAGtD,cACE,OAAOA,KAAKgL,gBAAgB/G,QAG9B,eACE,MAAO,IAAIjE,KAAK2J,iBAGlB1H,QACEjC,KAAKgL,gBAAgB/I,QAGvB8G,MAAMC,GACJhJ,KAAKgL,gBAAgBjC,MAAMC,GAG7B3G,OACErC,KAAKgL,gBAAgB3I,OAGvByG,UACE9I,KAAKgL,gBAAgBlC,UAGvB,cACE,OAAO9I,KAAKgL,gBAAgBhJ,QAG9BiI,aAAahG,GACX,OAAOA,EAAQgH,aAAajL,KAAK2J,eAGnCR,oBAAoBoB,GAClB,MAAMW,EAAQlL,KAAKiK,aAAaM,GAAQ,CAACA,GAAQ,GAC3CrB,EAAUlL,MAAMqB,KAAKkL,EAAKY,iBAAiBnL,KAAKoL,WACtD,OAAOF,EAAMxI,OAAOwG,GAGtB2B,eAAe5G,GACTjE,KAAKmI,SAASkD,yBAChBrL,KAAKmI,SAASkD,wBAAwBpH,EAASjE,KAAK2J,eAIxDmB,iBAAiB7G,GACXjE,KAAKmI,SAASmD,2BAChBtL,KAAKmI,SAASmD,0BAA0BrH,EAASjE,KAAK2J,eAI1DK,wBAAwB/F,EAAS0F,GAC3B3J,KAAKmI,SAASoD,8BAAgCvL,KAAK2J,eAAiBA,GACtE3J,KAAKmI,SAASoD,6BAA6BtH,EAAS0F,IAM1D,SAASlJ,EAAIgC,EAAKpF,EAAKN,GACrByO,EAAM/I,EAAKpF,GAAKoD,IAAI1D,GAGtB,SAAS0O,EAAIhJ,EAAKpF,EAAKN,GACrByO,EAAM/I,EAAKpF,GAAKsD,OAAO5D,GAezB,SAAe0F,EAAKpF,GAClB,MAAMiF,EAASG,EAAI9F,IAAIU,GAET,MAAViF,GAAiC,GAAfA,EAAOjB,MAC3BoB,EAAI9B,OAAOtD,GAlBbqO,CAAMjJ,EAAKpF,GAGb,SAASmO,EAAM/I,EAAKpF,GAClB,IAAIiF,EAASG,EAAI9F,IAAIU,GAOrB,OALKiF,IACHA,EAAS,IAAIpC,IACbuC,EAAIe,IAAInG,EAAKiF,IAGRA,EAWT,MAAMqJ,EACJvM,cACEY,KAAK4L,YAAc,IAAI7J,IAGzB,WACE,OAAO/D,MAAMqB,KAAKW,KAAK4L,YAAYlI,QAGrC,aAEE,OADa1F,MAAMqB,KAAKW,KAAK4L,YAAYtJ,UAC7BC,QAAO,CAACD,EAAQkB,IAAQlB,EAAOI,OAAO1E,MAAMqB,KAAKmE,KAAO,IAGtE,WAEE,OADaxF,MAAMqB,KAAKW,KAAK4L,YAAYtJ,UAC7BC,QAAO,CAAClB,EAAMmC,IAAQnC,EAAOmC,EAAInC,MAAM,GAGrDZ,IAAIpD,EAAKN,GACP0D,EAAIT,KAAK4L,YAAavO,EAAKN,GAG7B4D,OAAOtD,EAAKN,GACV0O,EAAIzL,KAAK4L,YAAavO,EAAKN,GAG7BqM,IAAI/L,EAAKN,GACP,MAAMuF,EAAStC,KAAK4L,YAAYjP,IAAIU,GACpC,OAAiB,MAAViF,GAAkBA,EAAO8G,IAAIrM,GAGtC8O,OAAOxO,GACL,OAAO2C,KAAK4L,YAAYxC,IAAI/L,GAG9ByO,SAAS/O,GAEP,OADaiB,MAAMqB,KAAKW,KAAK4L,YAAYtJ,UAC7ByJ,MAAKvI,GAAOA,EAAI4F,IAAIrM,KAGlCiP,gBAAgB3O,GACd,MAAMiF,EAAStC,KAAK4L,YAAYjP,IAAIU,GACpC,OAAOiF,EAAStE,MAAMqB,KAAKiD,GAAU,GAGvC2J,gBAAgBlP,GACd,OAAOiB,MAAMqB,KAAKW,KAAK4L,aAAatE,QAAO,EAAE4E,EAAM5J,KAAYA,EAAO8G,IAAIrM,KAAQ0F,KAAI,EAAEpF,EAAK8O,KAAa9O,KAoC9G,MAAM+O,EACJhN,YAAY6E,EAASmH,EAAUjD,EAAUzC,GACvC1F,KAAKqM,UAAYjB,EACjBpL,KAAK0F,QAAUA,EACf1F,KAAKgL,gBAAkB,IAAI9C,EAAgBjE,EAASjE,MACpDA,KAAKmI,SAAWA,EAChBnI,KAAKsM,iBAAmB,IAAIX,EAG9B,cACE,OAAO3L,KAAKgL,gBAAgBhJ,QAG9B,eACE,OAAOhC,KAAKqM,UAGd,aAAajB,GACXpL,KAAKqM,UAAYjB,EACjBpL,KAAK8I,UAGP7G,QACEjC,KAAKgL,gBAAgB/I,QAGvB8G,MAAMC,GACJhJ,KAAKgL,gBAAgBjC,MAAMC,GAG7B3G,OACErC,KAAKgL,gBAAgB3I,OAGvByG,UACE9I,KAAKgL,gBAAgBlC,UAGvB,cACE,OAAO9I,KAAKgL,gBAAgB/G,QAG9BgG,aAAahG,GACX,MAAMmH,EAAWpL,KAAKoL,SAEtB,GAAIA,EAAU,CACZ,MAAMlC,EAAUjF,EAAQiF,QAAQkC,GAEhC,OAAIpL,KAAKmI,SAASoE,qBACTrD,GAAWlJ,KAAKmI,SAASoE,qBAAqBtI,EAASjE,KAAK0F,SAG9DwD,EAEP,OAAO,EAIXC,oBAAoBoB,GAClB,MAAMa,EAAWpL,KAAKoL,SAEtB,GAAIA,EAAU,CACZ,MAAMF,EAAQlL,KAAKiK,aAAaM,GAAQ,CAACA,GAAQ,GAC3CrB,EAAUlL,MAAMqB,KAAKkL,EAAKY,iBAAiBC,IAAW9D,QAAO4D,GAASlL,KAAKiK,aAAaiB,KAC9F,OAAOA,EAAMxI,OAAOwG,GAEpB,MAAO,GAIX2B,eAAe5G,GACb,MAAMmH,EAAWpL,KAAKoL,SAElBA,GACFpL,KAAKwM,gBAAgBvI,EAASmH,GAIlCN,iBAAiB7G,GACf,MAAMwI,EAAYzM,KAAKsM,iBAAiBL,gBAAgBhI,GAExD,IAAK,MAAMmH,KAAYqB,EACrBzM,KAAK0M,kBAAkBzI,EAASmH,GAIpCpB,wBAAwB/F,EAAS0I,GAC/B,MAAMvB,EAAWpL,KAAKoL,SAEtB,GAAIA,EAAU,CACZ,MAAMlC,EAAUlJ,KAAKiK,aAAahG,GAC5B2I,EAAgB5M,KAAKsM,iBAAiBlD,IAAIgC,EAAUnH,GAEtDiF,IAAY0D,EACd5M,KAAKwM,gBAAgBvI,EAASmH,IACpBlC,GAAW0D,GACrB5M,KAAK0M,kBAAkBzI,EAASmH,IAKtCoB,gBAAgBvI,EAASmH,GACvBpL,KAAKmI,SAASqE,gBAAgBvI,EAASmH,EAAUpL,KAAK0F,SACtD1F,KAAKsM,iBAAiB7L,IAAI2K,EAAUnH,GAGtCyI,kBAAkBzI,EAASmH,GACzBpL,KAAKmI,SAASuE,kBAAkBzI,EAASmH,EAAUpL,KAAK0F,SACxD1F,KAAKsM,iBAAiB3L,OAAOyK,EAAUnH,IAK3C,MAAM4I,EACJzN,YAAY6E,EAASkE,GACnBnI,KAAKiE,QAAUA,EACfjE,KAAKmI,SAAWA,EAChBnI,KAAKgC,SAAU,EACfhC,KAAK8M,UAAY,IAAI/K,IACrB/B,KAAKyI,iBAAmB,IAAIC,kBAAiBC,GAAa3I,KAAK4I,iBAAiBD,KAGlF1G,QACOjC,KAAKgC,UACRhC,KAAKgC,SAAU,EACfhC,KAAKyI,iBAAiBI,QAAQ7I,KAAKiE,QAAS,CAC1CoE,YAAY,EACZ0E,mBAAmB,IAErB/M,KAAK8I,WAITzG,OACMrC,KAAKgC,UACPhC,KAAKyI,iBAAiBQ,cACtBjJ,KAAKyI,iBAAiBpI,aACtBL,KAAKgC,SAAU,GAInB8G,UACE,GAAI9I,KAAKgC,QACP,IAAK,MAAM2H,KAAiB3J,KAAKgN,oBAC/BhN,KAAKiN,iBAAiBtD,EAAe,MAK3Cf,iBAAiBD,GACf,GAAI3I,KAAKgC,QACP,IAAK,MAAMuH,KAAYZ,EACrB3I,KAAKwJ,gBAAgBD,GAK3BC,gBAAgBD,GACd,MAAMI,EAAgBJ,EAASI,cAE3BA,GACF3J,KAAKiN,iBAAiBtD,EAAeJ,EAAS2D,UAIlDD,iBAAiBtD,EAAeuD,GAC9B,MAAM7P,EAAM2C,KAAKmI,SAASgF,4BAA4BxD,GAEtD,GAAW,MAAPtM,EAAa,CACV2C,KAAK8M,UAAU1D,IAAIO,IACtB3J,KAAKoN,kBAAkB/P,EAAKsM,GAG9B,MAAM5M,EAAQiD,KAAKiE,QAAQ4B,aAAa8D,GAMxC,GAJI3J,KAAK8M,UAAUnQ,IAAIgN,IAAkB5M,GACvCiD,KAAKqN,sBAAsBtQ,EAAOM,EAAK6P,GAG5B,MAATnQ,EAAe,CACjB,MAAMmQ,EAAWlN,KAAK8M,UAAUnQ,IAAIgN,GACpC3J,KAAK8M,UAAUnM,OAAOgJ,GAClBuD,GAAUlN,KAAKsN,oBAAoBjQ,EAAKsM,EAAeuD,QAE3DlN,KAAK8M,UAAUtJ,IAAImG,EAAe5M,IAKxCqQ,kBAAkB/P,EAAKsM,GACjB3J,KAAKmI,SAASiF,mBAChBpN,KAAKmI,SAASiF,kBAAkB/P,EAAKsM,GAIzC0D,sBAAsBtQ,EAAOM,EAAK6P,GAC5BlN,KAAKmI,SAASkF,uBAChBrN,KAAKmI,SAASkF,sBAAsBtQ,EAAOM,EAAK6P,GAIpDI,oBAAoBjQ,EAAKsM,EAAeuD,GAClClN,KAAKmI,SAASmF,qBAChBtN,KAAKmI,SAASmF,oBAAoBjQ,EAAKsM,EAAeuD,GAI1D,0BACE,OAAOlP,MAAMqB,KAAK,IAAIa,IAAIF,KAAKuN,sBAAsB7K,OAAO1C,KAAKwN,0BAGnE,4BACE,OAAOxP,MAAMqB,KAAKW,KAAKiE,QAAQoE,YAAY5F,KAAIgL,GAAaA,EAAUpR,OAGxE,6BACE,OAAO2B,MAAMqB,KAAKW,KAAK8M,UAAUpJ,SAKrC,MAAMgK,EACJtO,YAAY6E,EAAS0F,EAAexB,GAClCnI,KAAK2N,kBAAoB,IAAI5C,EAAkB9G,EAAS0F,EAAe3J,MACvEA,KAAKmI,SAAWA,EAChBnI,KAAK4N,gBAAkB,IAAIjC,EAG7B,cACE,OAAO3L,KAAK2N,kBAAkB3L,QAGhCC,QACEjC,KAAK2N,kBAAkB1L,QAGzB8G,MAAMC,GACJhJ,KAAK2N,kBAAkB5E,MAAMC,GAG/B3G,OACErC,KAAK2N,kBAAkBtL,OAGzByG,UACE9I,KAAK2N,kBAAkB7E,UAGzB,cACE,OAAO9I,KAAK2N,kBAAkB1J,QAGhC,oBACE,OAAOjE,KAAK2N,kBAAkBhE,cAGhC0B,wBAAwBpH,GACtBjE,KAAK6N,cAAc7N,KAAK8N,qBAAqB7J,IAG/CsH,6BAA6BtH,GAC3B,MACM8J,EAAyBjQ,EADDkC,KAAKgO,wBAAwB/J,GACU,GAC/DgK,EAAkBF,EAAuB,GACzCG,EAAgBH,EAAuB,GAE7C/N,KAAKmO,gBAAgBF,GACrBjO,KAAK6N,cAAcK,GAGrB5C,0BAA0BrH,GACxBjE,KAAKmO,gBAAgBnO,KAAK4N,gBAAgB5B,gBAAgB/H,IAG5D4J,cAAcO,GACZA,EAAOjM,SAAQkM,GAASrO,KAAKsO,aAAaD,KAG5CF,gBAAgBC,GACdA,EAAOjM,SAAQkM,GAASrO,KAAKuO,eAAeF,KAG9CC,aAAaD,GACXrO,KAAKmI,SAASmG,aAAaD,GAC3BrO,KAAK4N,gBAAgBnN,IAAI4N,EAAMpK,QAASoK,GAG1CE,eAAeF,GACbrO,KAAKmI,SAASoG,eAAeF,GAC7BrO,KAAK4N,gBAAgBjN,OAAO0N,EAAMpK,QAASoK,GAG7CL,wBAAwB/J,GACtB,MAAMuK,EAAiBxO,KAAK4N,gBAAgB5B,gBAAgB/H,GACtDwK,EAAgBzO,KAAK8N,qBAAqB7J,GAC1CyK,EA0BV,SAAanN,EAAMC,GACjB,MAAM3C,EAAS8P,KAAKC,IAAIrN,EAAK1C,OAAQ2C,EAAM3C,QAC3C,OAAOb,MAAMqB,KAAK,CAChBR,WACC,CAAC6F,EAAGhD,IAAU,CAACH,EAAKG,GAAQF,EAAME,MA9BPmN,CAAIL,EAAgBC,GAAeK,WAAU,EAAEC,EAAeC,MAAkB,OAiClFxN,EAjCiHwN,KAiCvHzN,EAjCwGwN,IAkC/GvN,GAASD,EAAKG,OAASF,EAAME,OAASH,EAAK0N,SAAWzN,EAAMyN,SAD7E,IAAwB1N,EAAMC,KA/B1B,OAA4B,GAAxBkN,EACK,CAAC,GAAI,IAEL,CAACF,EAAerP,MAAMuP,GAAsBD,EAActP,MAAMuP,IAI3EZ,qBAAqB7J,GACnB,MAAM0F,EAAgB3J,KAAK2J,cAE3B,OAKJ,SAA0BuF,EAAajL,EAAS0F,GAC9C,OAAOuF,EAAYC,OAAOC,MAAM,OAAO9H,QAAO2H,GAAWA,EAAQpQ,SAAQ4D,KAAI,CAACwM,EAASvN,KAAU,CAC/FuC,UACA0F,gBACAsF,UACAvN,YAVO2N,CADapL,EAAQ4B,aAAa8D,IAAkB,GACtB1F,EAAS0F,IAyBlD,MAAM2F,EACJlQ,YAAY6E,EAAS0F,EAAexB,GAClCnI,KAAKuP,kBAAoB,IAAI7B,EAAkBzJ,EAAS0F,EAAe3J,MACvEA,KAAKmI,SAAWA,EAChBnI,KAAKwP,oBAAsB,IAAIC,QAC/BzP,KAAK0P,uBAAyB,IAAID,QAGpC,cACE,OAAOzP,KAAKuP,kBAAkBvN,QAGhCC,QACEjC,KAAKuP,kBAAkBtN,QAGzBI,OACErC,KAAKuP,kBAAkBlN,OAGzByG,UACE9I,KAAKuP,kBAAkBzG,UAGzB,cACE,OAAO9I,KAAKuP,kBAAkBtL,QAGhC,oBACE,OAAOjE,KAAKuP,kBAAkB5F,cAGhC2E,aAAaD,GACX,MAAMpK,EAAUoK,EAAMpK,QAGhBlH,EADwBiD,KAAK2P,yBAAyBtB,GACxBtR,MAEhCA,IACFiD,KAAK4P,6BAA6B3L,GAAST,IAAI6K,EAAOtR,GACtDiD,KAAKmI,SAAS0H,oBAAoB5L,EAASlH,IAI/CwR,eAAeF,GACb,MAAMpK,EAAUoK,EAAMpK,QAGhBlH,EADyBiD,KAAK2P,yBAAyBtB,GACxBtR,MAEjCA,IACFiD,KAAK4P,6BAA6B3L,GAAStD,OAAO0N,GAClDrO,KAAKmI,SAAS2H,sBAAsB7L,EAASlH,IAIjD4S,yBAAyBtB,GACvB,IAAI0B,EAAc/P,KAAKwP,oBAAoB7S,IAAI0R,GAO/C,OALK0B,IACHA,EAAc/P,KAAKgQ,WAAW3B,GAC9BrO,KAAKwP,oBAAoBhM,IAAI6K,EAAO0B,IAG/BA,EAGTH,6BAA6B3L,GAC3B,IAAIgM,EAAgBjQ,KAAK0P,uBAAuB/S,IAAIsH,GAOpD,OALKgM,IACHA,EAAgB,IAAIlO,IACpB/B,KAAK0P,uBAAuBlM,IAAIS,EAASgM,IAGpCA,EAGTD,WAAW3B,GACT,IAEE,MAAO,CACLtR,MAFYiD,KAAKmI,SAAS+H,mBAAmB7B,IAI/C,MAAOtL,GACP,MAAO,CACLA,WAOR,MAAMoN,EACJ/Q,YAAYkH,EAAS6B,GACnBnI,KAAKsG,QAAUA,EACftG,KAAKmI,SAAWA,EAChBnI,KAAKoQ,iBAAmB,IAAIrO,IAG9BE,QACOjC,KAAKqQ,oBACRrQ,KAAKqQ,kBAAoB,IAAIf,EAAkBtP,KAAKiE,QAASjE,KAAKsQ,gBAAiBtQ,MACnFA,KAAKqQ,kBAAkBpO,SAI3BI,OACMrC,KAAKqQ,oBACPrQ,KAAKqQ,kBAAkBhO,cAChBrC,KAAKqQ,kBACZrQ,KAAKuQ,wBAIT,cACE,OAAOvQ,KAAKsG,QAAQrC,QAGtB,iBACE,OAAOjE,KAAKsG,QAAQE,WAGtB,sBACE,OAAOxG,KAAKwQ,OAAOF,gBAGrB,aACE,OAAOtQ,KAAKsG,QAAQkK,OAGtB,eACE,OAAOxS,MAAMqB,KAAKW,KAAKoQ,iBAAiB9N,UAG1CmO,cAAclK,GACZ,MAAM/F,EAAU,IAAI6F,EAAQrG,KAAKsG,QAASC,GAC1CvG,KAAKoQ,iBAAiB5M,IAAI+C,EAAQ/F,GAClCR,KAAKmI,SAAS5H,iBAAiBC,GAGjCkQ,iBAAiBnK,GACf,MAAM/F,EAAUR,KAAKoQ,iBAAiBzT,IAAI4J,GAEtC/F,IACFR,KAAKoQ,iBAAiBzP,OAAO4F,GAC7BvG,KAAKmI,SAASzH,oBAAoBF,IAItC+P,uBACEvQ,KAAKmB,SAASgB,SAAQ3B,GAAWR,KAAKmI,SAASzH,oBAAoBF,GAAS,KAC5ER,KAAKoQ,iBAAiBO,QAGxBT,mBAAmB7B,GACjB,MAAM9H,EA5kCV,MACEnH,YAAY6E,EAASvC,EAAOkP,EAAYJ,GACtCxQ,KAAKiE,QAAUA,EACfjE,KAAK0B,MAAQA,EACb1B,KAAKH,YAAc+Q,EAAW/Q,aAAeoE,EAC7CjE,KAAKF,UAAY8Q,EAAW9Q,WAyGhC,SAAuCmE,GACrC,MAAM4M,EAAU5M,EAAQ4M,QAAQ5L,cAEhC,GAAI4L,KAAWvL,EACb,OAAOA,EAAkBuL,GAAS5M,GA7GO6M,CAA8B7M,IAAYlB,EAAM,sBACzF/C,KAAKD,aAAe6Q,EAAW7Q,cAAgB,GAC/CC,KAAKwG,WAAaoK,EAAWpK,YAAczD,EAAM,sBACjD/C,KAAKgH,WAAa4J,EAAW5J,YAAcjE,EAAM,uBACjD/C,KAAK+Q,UAAYH,EAAWG,WAAa,GACzC/Q,KAAKwQ,OAASA,EAGhB,gBAAgBnC,EAAOmC,GACrB,OAAO,IAAIxQ,KAAKqO,EAAMpK,QAASoK,EAAM3M,MAvFzC,SAAqCsP,GACnC,MACM9H,EADS8H,EAAiB7B,OACTjE,MAAM/G,IAAsB,GACnD,IAAIrE,EAAYoJ,EAAQ,GACpB6H,EAAY7H,EAAQ,GAOxB,OALI6H,IAAc,CAAC,UAAW,QAAS,YAAYE,SAASnR,KAC1DA,GAAa,IAAIiR,IACjBA,EAAY,IAGP,CACLlR,YAAauE,EAAiB8E,EAAQ,IACtCpJ,YACAC,aAAcmJ,EAAQ,IAeCnJ,EAfsBmJ,EAAQ,GAgBhDnJ,EAAaqP,MAAM,KAAK7M,QAAO,CAAC2O,EAAS7C,IAAU7R,OAAOwE,OAAOkQ,EAAS,CAC/E,CAAC7C,EAAM5J,QAAQ,KAAM,MAAO,KAAKnF,KAAK+O,MACpC,KAlByD,GAC3D7H,WAAY0C,EAAQ,GACpBlC,WAAYkC,EAAQ,GACpB6H,UAAW7H,EAAQ,IAAM6H,GAY7B,IAA2BhR,EA0DqBoR,CAA4B9C,EAAMY,SAAUuB,GAG1FtR,WACE,MAAMkS,EAAcpR,KAAK+Q,UAAY,IAAI/Q,KAAK+Q,YAAc,GACtDlR,EAAcG,KAAKqE,gBAAkB,IAAIrE,KAAKqE,kBAAoB,GACxE,MAAO,GAAGrE,KAAKF,YAAYsR,IAAcvR,MAAgBG,KAAKwG,cAAcxG,KAAKgH,aAGnFW,0BAA0B9G,GACxB,IAAKb,KAAK+Q,UACR,OAAO,EAGT,MAAMM,EAAUrR,KAAK+Q,UAAU3B,MAAM,KAErC,GAAIpP,KAAKsR,sBAAsBzQ,EAAOwQ,GACpC,OAAO,EAGT,MAAME,EAAiBF,EAAQ/J,QAAOjK,IAAQgI,EAAa4L,SAAS5T,KAAM,GAE1E,QAAKkU,IAIAnM,EAAYpF,KAAKwR,YAAaD,IACjCxO,EAAM,gCAAgC/C,KAAK+Q,aAGtC/Q,KAAKwR,YAAYD,GAAgBtM,gBAAkBpE,EAAMxD,IAAI4H,eAGtE4C,uBAAuBhH,GACrB,IAAKb,KAAK+Q,UACR,OAAO,EAGT,MAAMM,EAAU,CAACrR,KAAK+Q,WAEtB,QAAI/Q,KAAKsR,sBAAsBzQ,EAAOwQ,GAOxC,aACE,MAAM9J,EAAS,GACTkK,EAAU,IAAIC,OAAO,SAAS1R,KAAKwG,yBAA0B,KAEnE,IAAK,MAAMmL,KAAQ3T,MAAMqB,KAAKW,KAAKiE,QAAQoE,YAAa,CACtD,MAAMhM,EAAOsV,EAAKtV,KACZU,EAAQ4U,EAAK5U,MACbmO,EAAQ7O,EAAK6O,MAAMuG,GACnBpU,EAAM6N,GAASA,EAAM,GAEvB7N,IACFkK,EAAO/C,EAASnH,IAAQ4I,EAASlJ,IAIrC,OAAOwK,EAGT,sBACE,OAtH0B1H,EAsHEG,KAAKH,cArHhByE,OACV,SACEzE,GAAe0E,SACjB,gBADF,EAHT,IAA8B1E,EAyH5B,kBACE,OAAOG,KAAKwQ,OAAOgB,YAGrBF,sBAAsBzQ,EAAOwQ,GAC3B,MACMO,EAAqB9T,EADDuH,EAAa5C,KAAIoP,GAAYR,EAAQJ,SAASY,KACX,GACvDC,EAAOF,EAAmB,GAC1BG,EAAOH,EAAmB,GAC1BI,EAAMJ,EAAmB,GACzBK,EAAQL,EAAmB,GAEjC,OAAO/Q,EAAMqR,UAAYJ,GAAQjR,EAAMsR,UAAYJ,GAAQlR,EAAMuR,SAAWJ,GAAOnR,EAAMwR,WAAaJ,IA6+BhFK,SAASjE,EAAOrO,KAAKwQ,QAE3C,GAAIjK,EAAOC,YAAcxG,KAAKwG,WAC5B,OAAOD,EAIXsJ,oBAAoB5L,EAASsC,GAC3BvG,KAAKyQ,cAAclK,GAGrBuJ,sBAAsB7L,EAASsC,GAC7BvG,KAAK0Q,iBAAiBnK,IAK1B,MAAMgM,EACJnT,YAAYkH,EAASkM,GACnBxS,KAAKsG,QAAUA,EACftG,KAAKwS,SAAWA,EAChBxS,KAAKyS,kBAAoB,IAAI5F,EAAkB7M,KAAKiE,QAASjE,MAC7DA,KAAK0S,mBAAqB1S,KAAK+G,WAAW2L,mBAG5CzQ,QACEjC,KAAKyS,kBAAkBxQ,QACvBjC,KAAK2S,yCAGPtQ,OACErC,KAAKyS,kBAAkBpQ,OAGzB,cACE,OAAOrC,KAAKsG,QAAQrC,QAGtB,iBACE,OAAOjE,KAAKsG,QAAQS,WAGtBoG,4BAA4BxD,GAC1B,GAAIA,KAAiB3J,KAAK0S,mBACxB,OAAO1S,KAAK0S,mBAAmB/I,GAAetN,KAIlD+Q,kBAAkB/P,EAAKsM,GACrB,MAAMiH,EAAa5Q,KAAK0S,mBAAmB/I,GAEtC3J,KAAK8L,SAASzO,IACjB2C,KAAK4S,sBAAsBvV,EAAKuT,EAAWiC,OAAO7S,KAAKwS,SAASnV,IAAOuT,EAAWiC,OAAOjC,EAAWkC,eAIxGzF,sBAAsBtQ,EAAOV,EAAM6Q,GACjC,MAAM0D,EAAa5Q,KAAK+S,uBAAuB1W,GACjC,OAAVU,IAEa,OAAbmQ,IACFA,EAAW0D,EAAWiC,OAAOjC,EAAWkC,eAG1C9S,KAAK4S,sBAAsBvW,EAAMU,EAAOmQ,IAG1CI,oBAAoBjQ,EAAKsM,EAAeuD,GACtC,MAAM0D,EAAa5Q,KAAK+S,uBAAuB1V,GAE3C2C,KAAK8L,SAASzO,GAChB2C,KAAK4S,sBAAsBvV,EAAKuT,EAAWiC,OAAO7S,KAAKwS,SAASnV,IAAO6P,GAEvElN,KAAK4S,sBAAsBvV,EAAKuT,EAAWiC,OAAOjC,EAAWkC,cAAe5F,GAIhFyF,yCACE,IAAK,MAAMK,KAAShT,KAAKiT,iBAAkB,CACzC,MAAM5V,EAAM2V,EAAM3V,IACZhB,EAAO2W,EAAM3W,KACbyW,EAAeE,EAAMF,aACrBD,EAASG,EAAMH,YAED1N,GAAhB2N,GAA8B9S,KAAK+G,WAAWmM,KAAK9J,IAAI/L,IACzD2C,KAAK4S,sBAAsBvW,EAAMwW,EAAOC,QAAe3N,IAK7DyN,sBAAsBvW,EAAM8W,EAAUC,GACpC,MAAMC,EAAoB,GAAGhX,WACvBiX,EAAgBtT,KAAKwS,SAASa,GAEpC,GAA4B,mBAAjBC,EAA6B,CACtC,MAAM1C,EAAa5Q,KAAK+S,uBAAuB1W,GAE/C,IACE,MAAMU,EAAQ6T,EAAW2C,OAAOJ,GAChC,IAAIjG,EAAWkG,EAEXA,IACFlG,EAAW0D,EAAW2C,OAAOH,IAG/BE,EAAcrX,KAAK+D,KAAKwS,SAAUzV,EAAOmQ,GACzC,MAAOnK,GAKP,MAJIA,aAAiBvD,YACnBuD,EAAMC,QAAU,mBAAmBhD,KAAKsG,QAAQE,cAAcoK,EAAWvU,WAAW0G,EAAMC,WAGtFD,IAKZ,uBACE,MAAM2P,EAAqB1S,KAAK0S,mBAChC,OAAOlW,OAAOkH,KAAKgP,GAAoBjQ,KAAIpF,GAAOqV,EAAmBrV,KAGvE,6BACE,MAAMmW,EAAc,GAKpB,OAJAhX,OAAOkH,KAAK1D,KAAK0S,oBAAoBvQ,SAAQ9E,IAC3C,MAAMuT,EAAa5Q,KAAK0S,mBAAmBrV,GAC3CmW,EAAY5C,EAAWvU,MAAQuU,KAE1B4C,EAGT1H,SAASnC,GACP,MACM8J,EAAgB,MAAM3O,EADT9E,KAAK+S,uBAAuBpJ,GACGtN,QAClD,OAAO2D,KAAKwS,SAASiB,IAKzB,MAAMC,EACJtU,YAAYkH,EAAS6B,GACnBnI,KAAKsG,QAAUA,EACftG,KAAKmI,SAAWA,EAChBnI,KAAK2T,cAAgB,IAAIhI,EAG3B1J,QACOjC,KAAKuP,oBACRvP,KAAKuP,kBAAoB,IAAI7B,EAAkB1N,KAAKiE,QAASjE,KAAK2J,cAAe3J,MACjFA,KAAKuP,kBAAkBtN,SAI3BI,OACMrC,KAAKuP,oBACPvP,KAAK4T,uBACL5T,KAAKuP,kBAAkBlN,cAChBrC,KAAKuP,mBAIhBjB,cAAa,QACXrK,EACAgL,QAAS5S,IAEL2D,KAAKgI,MAAMC,gBAAgBhE,IAC7BjE,KAAK6T,cAAc5P,EAAS5H,GAIhCkS,gBAAe,QACbtK,EACAgL,QAAS5S,IAET2D,KAAK8T,iBAAiB7P,EAAS5H,GAGjCwX,cAAc5P,EAAS5H,GACrB,IAAI0X,EAEC/T,KAAK2T,cAAcvK,IAAI/M,EAAM4H,KAChCjE,KAAK2T,cAAclT,IAAIpE,EAAM4H,GACK,QAAjC8P,EAAK/T,KAAKuP,yBAAsC,IAAPwE,GAAyBA,EAAGhL,OAAM,IAAM/I,KAAKmI,SAAS6L,gBAAgB/P,EAAS5H,MAI7HyX,iBAAiB7P,EAAS5H,GACxB,IAAI0X,EAEA/T,KAAK2T,cAAcvK,IAAI/M,EAAM4H,KAC/BjE,KAAK2T,cAAchT,OAAOtE,EAAM4H,GACE,QAAjC8P,EAAK/T,KAAKuP,yBAAsC,IAAPwE,GAAyBA,EAAGhL,OAAM,IAAM/I,KAAKmI,SAAS8L,mBAAmBhQ,EAAS5H,MAIhIuX,uBACE,IAAK,MAAMvX,KAAQ2D,KAAK2T,cAAcjQ,KACpC,IAAK,MAAMO,KAAWjE,KAAK2T,cAAc3H,gBAAgB3P,GACvD2D,KAAK8T,iBAAiB7P,EAAS5H,GAKrC,oBACE,MAAO,QAAQ2D,KAAKsG,QAAQE,oBAG9B,cACE,OAAOxG,KAAKsG,QAAQrC,QAGtB,YACE,OAAOjE,KAAKsG,QAAQ0B,OAKxB,SAASkM,EAAiC9U,EAAa+U,GACrD,MAAMC,EAAYC,EAA2BjV,GAC7C,OAAOpB,MAAMqB,KAAK+U,EAAU7R,QAAO,CAACD,EAAQlD,KAyB9C,SAAiCA,EAAa+U,GAC5C,MAAMG,EAAalV,EAAY+U,GAC/B,OAAOnW,MAAMC,QAAQqW,GAAcA,EAAa,GA1B9CC,CAAwBnV,EAAa+U,GAAchS,SAAQ9F,GAAQiG,EAAO7B,IAAIpE,KACvEiG,IACN,IAAIpC,MAGT,SAASsU,EAAiCpV,EAAa+U,GAErD,OADkBE,EAA2BjV,GAC5BmD,QAAO,CAACkS,EAAOrV,KAC9BqV,EAAM7V,QAqBV,SAAiCQ,EAAa+U,GAC5C,MAAMG,EAAalV,EAAY+U,GAC/B,OAAOG,EAAa9X,OAAOkH,KAAK4Q,GAAY7R,KAAIpF,GAAO,CAACA,EAAKiX,EAAWjX,MAAS,GAvBjEqX,CAAwBtV,EAAa+U,IAC5CM,IACN,IAGL,SAASJ,EAA2BjV,GAClC,MAAMgV,EAAY,GAElB,KAAOhV,GACLgV,EAAUxV,KAAKQ,GACfA,EAAc5C,OAAOmY,eAAevV,GAGtC,OAAOgV,EAAUQ,UAanB,MAAMC,EACJzV,YAAYkH,EAAS6B,GACnBnI,KAAKgC,SAAU,EACfhC,KAAKsG,QAAUA,EACftG,KAAKmI,SAAWA,EAChBnI,KAAK8U,cAAgB,IAAInJ,EACzB3L,KAAK+U,qBAAuB,IAAIpJ,EAChC3L,KAAKgV,oBAAsB,IAAIjT,IAC/B/B,KAAKiV,qBAAuB,IAAIlT,IAGlCE,QACOjC,KAAKgC,UACRhC,KAAKkV,kBAAkB/S,SAAQgT,IAC7BnV,KAAKoV,+BAA+BD,GACpCnV,KAAKqV,gCAAgCF,MAEvCnV,KAAKgC,SAAU,EACfhC,KAAKsV,kBAAkBnT,SAAQmE,GAAWA,EAAQwC,aAItDA,UACE9I,KAAKgV,oBAAoB7S,SAAQoT,GAAYA,EAASzM,YACtD9I,KAAKiV,qBAAqB9S,SAAQoT,GAAYA,EAASzM,YAGzDzG,OACMrC,KAAKgC,UACPhC,KAAKgC,SAAU,EACfhC,KAAKwV,uBACLxV,KAAKyV,wBACLzV,KAAK0V,0BAITD,wBACMzV,KAAKgV,oBAAoB3T,KAAO,IAClCrB,KAAKgV,oBAAoB7S,SAAQoT,GAAYA,EAASlT,SACtDrC,KAAKgV,oBAAoBrE,SAI7B+E,yBACM1V,KAAKiV,qBAAqB5T,KAAO,IACnCrB,KAAKiV,qBAAqB9S,SAAQoT,GAAYA,EAASlT,SACvDrC,KAAKiV,qBAAqBtE,SAI9BnE,gBAAgBvI,EAASoI,GAAW,WAClC8I,IAEA,MAAMQ,EAAS3V,KAAK4V,UAAU3R,EAASkR,GAEnCQ,GACF3V,KAAK6V,cAAcF,EAAQ1R,EAASkR,GAIxCzI,kBAAkBzI,EAASoI,GAAW,WACpC8I,IAEA,MAAMQ,EAAS3V,KAAK8V,iBAAiB7R,EAASkR,GAE1CQ,GACF3V,KAAK+V,iBAAiBJ,EAAQ1R,EAASkR,GAI3C5I,qBAAqBtI,GAAS,WAC5BkR,IAEA,MAAM/J,EAAWpL,KAAKoL,SAAS+J,GACzBa,EAAYhW,KAAKgW,UAAU/R,EAASkR,GACpCc,EAAsBhS,EAAQiF,QAAQ,IAAIlJ,KAAKwQ,OAAO0F,wBAAwBf,MAEpF,QAAI/J,IACK4K,GAAaC,GAAuBhS,EAAQiF,QAAQkC,IAM/DC,wBAAwB8K,EAAUxM,GAChC,MAAMwL,EAAanV,KAAKoW,qCAAqCzM,GAEzDwL,GACFnV,KAAKqW,gCAAgClB,GAIzC5J,6BAA6B4K,EAAUxM,GACrC,MAAMwL,EAAanV,KAAKoW,qCAAqCzM,GAEzDwL,GACFnV,KAAKqW,gCAAgClB,GAIzC7J,0BAA0B6K,EAAUxM,GAClC,MAAMwL,EAAanV,KAAKoW,qCAAqCzM,GAEzDwL,GACFnV,KAAKqW,gCAAgClB,GAIzCU,cAAcF,EAAQ1R,EAASkR,GAC7B,IAAIpB,EAEC/T,KAAK+U,qBAAqB3L,IAAI+L,EAAYlR,KAC7CjE,KAAK8U,cAAcrU,IAAI0U,EAAYQ,GACnC3V,KAAK+U,qBAAqBtU,IAAI0U,EAAYlR,GACU,QAAnD8P,EAAK/T,KAAKgV,oBAAoBrY,IAAIwY,UAAgC,IAAPpB,GAAyBA,EAAGhL,OAAM,IAAM/I,KAAKmI,SAASmO,gBAAgBX,EAAQ1R,EAASkR,MAIvJY,iBAAiBJ,EAAQ1R,EAASkR,GAChC,IAAIpB,EAEA/T,KAAK+U,qBAAqB3L,IAAI+L,EAAYlR,KAC5CjE,KAAK8U,cAAcnU,OAAOwU,EAAYQ,GACtC3V,KAAK+U,qBAAqBpU,OAAOwU,EAAYlR,GACO,QAAnD8P,EAAK/T,KAAKgV,oBAAoBrY,IAAIwY,UAAgC,IAAPpB,GAAyBA,EAAGhL,OAAM,IAAM/I,KAAKmI,SAASoO,mBAAmBZ,EAAQ1R,EAASkR,MAI1JK,uBACE,IAAK,MAAML,KAAcnV,KAAK+U,qBAAqBrR,KACjD,IAAK,MAAMO,KAAWjE,KAAK+U,qBAAqB/I,gBAAgBmJ,GAC9D,IAAK,MAAMQ,KAAU3V,KAAK8U,cAAc9I,gBAAgBmJ,GACtDnV,KAAK+V,iBAAiBJ,EAAQ1R,EAASkR,GAM/CkB,gCAAgClB,GAC9B,MAAMI,EAAWvV,KAAKgV,oBAAoBrY,IAAIwY,GAE1CI,IACFA,EAASnK,SAAWpL,KAAKoL,SAAS+J,IAItCC,+BAA+BD,GAC7B,MAAM/J,EAAWpL,KAAKoL,SAAS+J,GACzBqB,EAAmB,IAAIpK,EAAiB7H,SAASkS,KAAMrL,EAAUpL,KAAM,CAC3EmV,eAEFnV,KAAKgV,oBAAoBxR,IAAI2R,EAAYqB,GACzCA,EAAiBvU,QAGnBoT,gCAAgCF,GAC9B,MAAMxL,EAAgB3J,KAAK0W,2BAA2BvB,GAChDxH,EAAoB,IAAI5C,EAAkB/K,KAAKgI,MAAM/D,QAAS0F,EAAe3J,MACnFA,KAAKiV,qBAAqBzR,IAAI2R,EAAYxH,GAC1CA,EAAkB1L,QAGpBmJ,SAAS+J,GACP,OAAOnV,KAAKgI,MAAM2O,QAAQC,yBAAyBzB,GAGrDuB,2BAA2BvB,GACzB,OAAOnV,KAAKgI,MAAMwI,OAAOqG,wBAAwB7W,KAAKwG,WAAY2O,GAGpEiB,qCAAqCzM,GACnC,OAAO3J,KAAKkV,kBAAkB4B,MAAK3B,GAAcnV,KAAK0W,2BAA2BvB,KAAgBxL,IAGnG,yBACE,MAAMoN,EAAe,IAAIpL,EAMzB,OALA3L,KAAKgX,OAAOhb,QAAQmG,SAAQtG,IAEVqY,EADIrY,EAAOyY,WAAW2C,sBACwB,WACtD9U,SAAQwT,GAAUoB,EAAatW,IAAIkV,EAAQ9Z,EAAO2K,iBAErDuQ,EAGT,wBACE,OAAO/W,KAAKkX,mBAAmBjL,gBAAgBjM,KAAKwG,YAGtD,qCACE,OAAOxG,KAAKkX,mBAAmBlL,gBAAgBhM,KAAKwG,YAGtD,wBACE,MAAM2Q,EAAcnX,KAAKoX,+BACzB,OAAOpX,KAAKgX,OAAOK,SAAS/P,QAAOhB,GAAW6Q,EAAYlG,SAAS3K,EAAQE,cAG7EwP,UAAU/R,EAASkR,GACjB,QAASnV,KAAK4V,UAAU3R,EAASkR,MAAiBnV,KAAK8V,iBAAiB7R,EAASkR,GAGnFS,UAAU3R,EAASkR,GACjB,OAAOnV,KAAK6B,YAAYyV,qCAAqCrT,EAASkR,GAGxEW,iBAAiB7R,EAASkR,GACxB,OAAOnV,KAAK8U,cAAc9I,gBAAgBmJ,GAAY2B,MAAKnB,GAAUA,EAAO1R,UAAYA,IAG1F,YACE,OAAOjE,KAAKsG,QAAQ0B,MAGtB,aACE,OAAOhI,KAAKsG,QAAQkK,OAGtB,iBACE,OAAOxQ,KAAKsG,QAAQE,WAGtB,kBACE,OAAOxG,KAAKsG,QAAQzE,YAGtB,aACE,OAAO7B,KAAK6B,YAAYmV,QAK5B,MAAMO,EACJnY,YAAYvD,EAAQmM,GAClBhI,KAAKyH,iBAAmB,CAAC+P,EAAcvU,EAAS,MAC9C,MAAMuD,EAAaxG,KAAKwG,WAClBO,EAAa/G,KAAK+G,WAClB9C,EAAUjE,KAAKiE,QACrBhB,EAASzG,OAAOwE,OAAO,CACrBwF,aACAO,aACA9C,WACChB,GACHjD,KAAK6B,YAAY4F,iBAAiBzH,KAAKwG,WAAYgR,EAAcvU,IAGnEjD,KAAKnE,OAASA,EACdmE,KAAKgI,MAAQA,EACbhI,KAAK+G,WAAa,IAAIlL,EAAOob,sBAAsBjX,MACnDA,KAAKyX,gBAAkB,IAAItH,EAAgBnQ,KAAMA,KAAK0X,YACtD1X,KAAK2X,cAAgB,IAAIpF,EAAcvS,KAAMA,KAAK+G,YAClD/G,KAAK4X,eAAiB,IAAIlE,EAAe1T,KAAMA,MAC/CA,KAAK6X,eAAiB,IAAIhD,EAAe7U,KAAMA,MAE/C,IACEA,KAAK+G,WAAW+Q,aAChB9X,KAAKyH,iBAAiB,cACtB,MAAO1E,GACP/C,KAAK8C,YAAYC,EAAO,4BAI5B5C,UACEH,KAAKyX,gBAAgBxV,QACrBjC,KAAK2X,cAAc1V,QACnBjC,KAAK4X,eAAe3V,QACpBjC,KAAK6X,eAAe5V,QAEpB,IACEjC,KAAK+G,WAAW5G,UAChBH,KAAKyH,iBAAiB,WACtB,MAAO1E,GACP/C,KAAK8C,YAAYC,EAAO,0BAI5B+F,UACE9I,KAAK6X,eAAe/O,UAGtBzI,aACE,IACEL,KAAK+G,WAAW1G,aAChBL,KAAKyH,iBAAiB,cACtB,MAAO1E,GACP/C,KAAK8C,YAAYC,EAAO,4BAG1B/C,KAAK6X,eAAexV,OACpBrC,KAAK4X,eAAevV,OACpBrC,KAAK2X,cAActV,OACnBrC,KAAKyX,gBAAgBpV,OAGvB,kBACE,OAAOrC,KAAKnE,OAAOgG,YAGrB,iBACE,OAAO7B,KAAKnE,OAAO2K,WAGrB,aACE,OAAOxG,KAAK6B,YAAY2O,OAG1B,iBACE,OAAOxQ,KAAK6B,YAAY6V,WAG1B,cACE,OAAO1X,KAAKgI,MAAM/D,QAGpB,oBACE,OAAOjE,KAAKiE,QAAQ8T,cAGtBjV,YAAYC,EAAOC,EAASC,EAAS,IACnC,MAAMuD,EAAaxG,KAAKwG,WAClBO,EAAa/G,KAAK+G,WAClB9C,EAAUjE,KAAKiE,QACrBhB,EAASzG,OAAOwE,OAAO,CACrBwF,aACAO,aACA9C,WACChB,GACHjD,KAAK6B,YAAYiB,YAAYC,EAAO,SAASC,IAAWC,GAG1D+Q,gBAAgB/P,EAAS5H,GACvB2D,KAAKgY,uBAAuB,GAAG3b,mBAAuB4H,GAGxDgQ,mBAAmBhQ,EAAS5H,GAC1B2D,KAAKgY,uBAAuB,GAAG3b,sBAA0B4H,GAG3DqS,gBAAgBX,EAAQ1R,EAAS5H,GAC/B2D,KAAKgY,uBAAuB,GAAGnT,EAAkBxI,oBAAwBsZ,EAAQ1R,GAGnFsS,mBAAmBZ,EAAQ1R,EAAS5H,GAClC2D,KAAKgY,uBAAuB,GAAGnT,EAAkBxI,uBAA2BsZ,EAAQ1R,GAGtF+T,uBAAuBhR,KAAeiR,GACpC,MAAMlR,EAAa/G,KAAK+G,WAEa,mBAA1BA,EAAWC,IACpBD,EAAWC,MAAeiR,IAMhC,SAASC,EAAM9Y,GACb,OAGF,SAAgBA,EAAa+Y,GAC3B,MAAMC,EAAoBC,EAAOjZ,GAC3BkZ,EAmBR,SAA6B5a,EAAWya,GACtC,OAAOI,EAAWJ,GAAY5V,QAAO,CAAC+V,EAAkBjb,KACtD,MAAMuT,EAYV,SAA+BlT,EAAWya,EAAY9a,GACpD,MAAMmb,EAAsBhc,OAAOic,yBAAyB/a,EAAWL,GAGvE,IAFwBmb,KAAuB,UAAWA,GAEpC,CACpB,MAAM5H,EAAapU,OAAOic,yBAAyBN,EAAY9a,GAAKN,MAOpE,OALIyb,IACF5H,EAAWjU,IAAM6b,EAAoB7b,KAAOiU,EAAWjU,IACvDiU,EAAWpN,IAAMgV,EAAoBhV,KAAOoN,EAAWpN,KAGlDoN,GAxBY8H,CAAsBhb,EAAWya,EAAY9a,GAQhE,OANIuT,GACFpU,OAAOwE,OAAOsX,EAAkB,CAC9B,CAACjb,GAAMuT,IAIJ0H,IACN,IA9BsBK,CAAoBvZ,EAAY1B,UAAWya,GAEpE,OADA3b,OAAOoc,iBAAiBR,EAAkB1a,UAAW4a,GAC9CF,EAPAS,CAAOzZ,EAUhB,SAA8BA,GAE5B,OADkB8U,EAAiC9U,EAAa,aAC/CmD,QAAO,CAACuW,EAAmBC,KAC1C,MAAMZ,EAAaY,EAAS3Z,GAE5B,IAAK,MAAM/B,KAAO8a,EAAY,CAC5B,MAAMvH,EAAakI,EAAkBzb,IAAQ,GAC7Cyb,EAAkBzb,GAAOb,OAAOwE,OAAO4P,EAAYuH,EAAW9a,IAGhE,OAAOyb,IACN,IArBwBE,CAAqB5Z,IAsDlD,MAAMmZ,EACuC,mBAAhC/b,OAAOyc,sBACTzb,GAAU,IAAIhB,OAAO0c,oBAAoB1b,MAAYhB,OAAOyc,sBAAsBzb,IAElFhB,OAAO0c,oBAIZb,EAAS,MACb,SAASc,EAAkB/Z,GACzB,SAASga,IACP,OAAOC,QAAQC,UAAUla,EAAama,sBASxC,OANAH,EAAS1b,UAAYlB,OAAOY,OAAOgC,EAAY1B,UAAW,CACxD0B,YAAa,CACXrC,MAAOqc,KAGXC,QAAQG,eAAeJ,EAAUha,GAC1Bga,EAeT,IAEE,OAdF,WACE,MAIMK,EAAIN,GAJA,WACRnZ,KAAKuF,EAAEtJ,KAAK+D,SAKdyZ,EAAE/b,UAAU6H,EAAI,aAET,IAAIkU,EAIXC,GACOP,EACP,MAAOpW,GACP,OAAO3D,GAAe,cAAuBA,MA/BlC,GA0Cf,MAAMua,EACJva,YAAYyC,EAAayS,GACvBtU,KAAK6B,YAAcA,EACnB7B,KAAKsU,WAVT,SAAyBA,GACvB,MAAO,CACL9N,WAAY8N,EAAW9N,WACvByQ,sBAAuBiB,EAAM5D,EAAW2C,wBAOtB2C,CAAgBtF,GAClCtU,KAAK6Z,gBAAkB,IAAIpK,QAC3BzP,KAAK8Z,kBAAoB,IAAI5Z,IAG/B,iBACE,OAAOF,KAAKsU,WAAW9N,WAGzB,4BACE,OAAOxG,KAAKsU,WAAW2C,sBAGzB,eACE,OAAOjZ,MAAMqB,KAAKW,KAAK8Z,mBAGzBC,uBAAuB/R,GACrB,MAAM1B,EAAUtG,KAAKga,qBAAqBhS,GAC1ChI,KAAK8Z,kBAAkBrZ,IAAI6F,GAC3BA,EAAQnG,UAGV8Z,0BAA0BjS,GACxB,MAAM1B,EAAUtG,KAAK6Z,gBAAgBld,IAAIqL,GAErC1B,IACFtG,KAAK8Z,kBAAkBnZ,OAAO2F,GAC9BA,EAAQjG,cAIZ2Z,qBAAqBhS,GACnB,IAAI1B,EAAUtG,KAAK6Z,gBAAgBld,IAAIqL,GAOvC,OALK1B,IACHA,EAAU,IAAIiR,EAAQvX,KAAMgI,GAC5BhI,KAAK6Z,gBAAgBrW,IAAIwE,EAAO1B,IAG3BA,GAKX,MAAM4T,EACJ9a,YAAY4I,GACVhI,KAAKgI,MAAQA,EAGfoB,IAAI/M,GACF,OAAO2D,KAAKkT,KAAK9J,IAAIpJ,KAAKma,WAAW9d,IAGvCM,IAAIN,GACF,OAAO2D,KAAKoa,OAAO/d,GAAM,GAG3B+d,OAAO/d,GACL,MAAM6S,EAAclP,KAAKkT,KAAKvW,IAAIqD,KAAKma,WAAW9d,KAAU,GAC5D,OAAgB6S,EAj2DLhE,MAAM,YAAc,GAo2DjCmP,iBAAiBhe,GACf,OAAO2D,KAAKkT,KAAKoH,uBAAuBta,KAAKma,WAAW9d,IAG1D8d,WAAW9d,GACT,MAAO,GAAGA,UAGZ,WACE,OAAO2D,KAAKgI,MAAMkL,MAKtB,MAAMqH,EACJnb,YAAY4I,GACVhI,KAAKgI,MAAQA,EAGf,cACE,OAAOhI,KAAKgI,MAAM/D,QAGpB,iBACE,OAAOjE,KAAKgI,MAAMxB,WAGpB7J,IAAIU,GACF,MAAMhB,EAAO2D,KAAKsa,uBAAuBjd,GACzC,OAAO2C,KAAKiE,QAAQ4B,aAAaxJ,GAGnCmH,IAAInG,EAAKN,GACP,MAAMV,EAAO2D,KAAKsa,uBAAuBjd,GAEzC,OADA2C,KAAKiE,QAAQuW,aAAane,EAAMU,GACzBiD,KAAKrD,IAAIU,GAGlB+L,IAAI/L,GACF,MAAMhB,EAAO2D,KAAKsa,uBAAuBjd,GACzC,OAAO2C,KAAKiE,QAAQgH,aAAa5O,GAGnCsE,OAAOtD,GACL,GAAI2C,KAAKoJ,IAAI/L,GAAM,CACjB,MAAMhB,EAAO2D,KAAKsa,uBAAuBjd,GAEzC,OADA2C,KAAKiE,QAAQwW,gBAAgBpe,IACtB,EAEP,OAAO,EAIXie,uBAAuBjd,GACrB,MAAO,QAAQ2C,KAAKwG,cAAcxB,EAAU3H,MAKhD,MAAMqd,EACJtb,YAAYub,GACV3a,KAAK4a,mBAAqB,IAAInL,QAC9BzP,KAAK2a,OAASA,EAGhBE,KAAKrd,EAAQH,EAAK2F,GAChB,IAAI8X,EAAa9a,KAAK4a,mBAAmBje,IAAIa,GAExCsd,IACHA,EAAa,IAAI5a,IACjBF,KAAK4a,mBAAmBpX,IAAIhG,EAAQsd,IAGjCA,EAAW1R,IAAI/L,KAClByd,EAAWra,IAAIpD,GACf2C,KAAK2a,OAAOE,KAAK7X,EAASxF,KAMhC,SAASud,EAA4BpR,EAAe0E,GAClD,MAAO,IAAI1E,OAAmB0E,MAGhC,MAAM2M,EACJ5b,YAAY4I,GACVhI,KAAKgI,MAAQA,EAGf,cACE,OAAOhI,KAAKgI,MAAM/D,QAGpB,iBACE,OAAOjE,KAAKgI,MAAMxB,WAGpB,aACE,OAAOxG,KAAKgI,MAAMwI,OAGpBpH,IAAI6R,GACF,OAAgC,MAAzBjb,KAAK8W,KAAKmE,GAGnBnE,QAAQoE,GACN,OAAOA,EAAY3Y,QAAO,CAAC2B,EAAQ+W,IAAe/W,GAAUlE,KAAKmb,WAAWF,IAAejb,KAAKob,iBAAiBH,SAAa9V,GAGhIkW,WAAWH,GACT,OAAOA,EAAY3Y,QAAO,CAAC+Y,EAASL,IAAe,IAAIK,KAAYtb,KAAKub,eAAeN,MAAgBjb,KAAKwb,qBAAqBP,KAAc,IAGjJE,WAAWF,GACT,MAAM7P,EAAWpL,KAAKyb,yBAAyBR,GAC/C,OAAOjb,KAAKgI,MAAM0T,YAAYtQ,GAGhCmQ,eAAeN,GACb,MAAM7P,EAAWpL,KAAKyb,yBAAyBR,GAC/C,OAAOjb,KAAKgI,MAAM2T,gBAAgBvQ,GAGpCqQ,yBAAyBR,GAEvB,OAAOF,EADe/a,KAAKwQ,OAAOoL,wBAAwB5b,KAAKwG,YACbyU,GAGpDG,iBAAiBH,GACf,MAAM7P,EAAWpL,KAAK6b,+BAA+BZ,GACrD,OAAOjb,KAAK8b,UAAU9b,KAAKgI,MAAM0T,YAAYtQ,GAAW6P,GAG1DO,qBAAqBP,GACnB,MAAM7P,EAAWpL,KAAK6b,+BAA+BZ,GACrD,OAAOjb,KAAKgI,MAAM2T,gBAAgBvQ,GAAU3I,KAAIwB,GAAWjE,KAAK8b,UAAU7X,EAASgX,KAGrFY,+BAA+BZ,GAC7B,MAAMc,EAAmB,GAAG/b,KAAKwG,cAAcyU,IAC/C,OAAOF,EAA4B/a,KAAKwQ,OAAOwL,gBAAiBD,GAGlED,UAAU7X,EAASgX,GACjB,GAAIhX,EAAS,CACX,MAAMuC,EAAaxG,KAAKwG,WAClBmD,EAAgB3J,KAAKwQ,OAAOwL,gBAC5BC,EAAuBjc,KAAKwQ,OAAOoL,wBAAwBpV,GACjExG,KAAKkc,MAAMrB,KAAK5W,EAAS,UAAUgX,IAAc,kBAAkBtR,MAAkBnD,KAAcyU,WAAoBgB,MAAyBhB,WAAyBtR,kFAG3K,OAAO1F,EAGT,YACE,OAAOjE,KAAKgI,MAAMkU,OAKtB,MAAMC,EACJ/c,YAAY4I,EAAOoU,GACjBpc,KAAKgI,MAAQA,EACbhI,KAAKoc,kBAAoBA,EAG3B,cACE,OAAOpc,KAAKgI,MAAM/D,QAGpB,iBACE,OAAOjE,KAAKgI,MAAMxB,WAGpB,aACE,OAAOxG,KAAKgI,MAAMwI,OAGpBpH,IAAI+L,GACF,OAAgC,MAAzBnV,KAAK8W,KAAK3B,GAGnB2B,QAAQuF,GACN,OAAOA,EAAY9Z,QAAO,CAACoT,EAAQR,IAAeQ,GAAU3V,KAAKsc,WAAWnH,SAAahQ,GAG3FkW,WAAWgB,GACT,OAAOA,EAAY9Z,QAAO,CAACoU,EAASxB,IAAe,IAAIwB,KAAY3W,KAAKuc,eAAepH,KAAc,IAGvGyB,yBAAyBzB,GACvB,MAAMxL,EAAgB3J,KAAKwQ,OAAOqG,wBAAwB7W,KAAKwG,WAAY2O,GAC3E,OAAOnV,KAAKoc,kBAAkBvW,aAAa8D,GAG7C2S,WAAWnH,GACT,MAAM/J,EAAWpL,KAAK4W,yBAAyBzB,GAC/C,GAAI/J,EAAU,OAAOpL,KAAK0b,YAAYtQ,EAAU+J,GAGlDoH,eAAepH,GACb,MAAM/J,EAAWpL,KAAK4W,yBAAyBzB,GAC/C,OAAO/J,EAAWpL,KAAK2b,gBAAgBvQ,EAAU+J,GAAc,GAGjEuG,YAAYtQ,EAAU+J,GAEpB,OADiBnV,KAAKgI,MAAMwU,cAAcpR,GAC1B9D,QAAOrD,GAAWjE,KAAKyc,eAAexY,EAASmH,EAAU+J,KAAa,GAGxFwG,gBAAgBvQ,EAAU+J,GAExB,OADiBnV,KAAKgI,MAAMwU,cAAcpR,GAC1B9D,QAAOrD,GAAWjE,KAAKyc,eAAexY,EAASmH,EAAU+J,KAG3EsH,eAAexY,EAASmH,EAAU+J,GAChC,MAAMe,EAAsBjS,EAAQ4B,aAAa7F,KAAKgI,MAAMwI,OAAO0F,sBAAwB,GAC3F,OAAOjS,EAAQiF,QAAQkC,IAAa8K,EAAoB9G,MAAM,KAAK6B,SAASkE,IAKhF,MAAMuH,EACJtd,YAAYoR,EAAQvM,EAASuC,EAAYmU,GACvC3a,KAAKsb,QAAU,IAAIN,EAAUhb,MAC7BA,KAAK2c,QAAU,IAAIzC,EAASla,MAC5BA,KAAKkT,KAAO,IAAIqH,EAAQva,MAExBA,KAAKiI,gBAAkBhE,GACdA,EAAQ2Y,QAAQ5c,KAAK6c,sBAAwB7c,KAAKiE,QAG3DjE,KAAKwQ,OAASA,EACdxQ,KAAKiE,QAAUA,EACfjE,KAAKwG,WAAaA,EAClBxG,KAAKkc,MAAQ,IAAIxB,EAAMC,GACvB3a,KAAK2W,QAAU,IAAIwF,EAAUnc,KAAK8c,cAAe7Y,GAGnDyX,YAAYtQ,GACV,OAAOpL,KAAKiE,QAAQiF,QAAQkC,GAAYpL,KAAKiE,QAAUjE,KAAKwc,cAAcpR,GAAU0L,KAAK9W,KAAKiI,iBAGhG0T,gBAAgBvQ,GACd,MAAO,IAAKpL,KAAKiE,QAAQiF,QAAQkC,GAAY,CAACpL,KAAKiE,SAAW,MAAQjE,KAAKwc,cAAcpR,GAAU9D,OAAOtH,KAAKiI,kBAGjHuU,cAAcpR,GACZ,OAAOpN,MAAMqB,KAAKW,KAAKiE,QAAQkH,iBAAiBC,IAGlD,yBACE,OAAO2P,EAA4B/a,KAAKwQ,OAAO0F,oBAAqBlW,KAAKwG,YAG3E,sBACE,OAAOxG,KAAKiE,UAAYM,SAASwY,gBAGnC,oBACE,OAAO/c,KAAKgd,gBAAkBhd,KAAO,IAAI0c,EAAM1c,KAAKwQ,OAAQjM,SAASwY,gBAAiB/c,KAAKwG,WAAYxG,KAAKkc,MAAMvB,SAKtH,MAAMsC,EACJ7d,YAAY6E,EAASuM,EAAQrI,GAC3BnI,KAAKiE,QAAUA,EACfjE,KAAKwQ,OAASA,EACdxQ,KAAKmI,SAAWA,EAChBnI,KAAKqQ,kBAAoB,IAAIf,EAAkBtP,KAAKiE,QAASjE,KAAKkW,oBAAqBlW,MACvFA,KAAKkd,4BAA8B,IAAIzN,QACvCzP,KAAKmd,qBAAuB,IAAI1N,QAGlCxN,QACEjC,KAAKqQ,kBAAkBpO,QAGzBI,OACErC,KAAKqQ,kBAAkBhO,OAGzB,0BACE,OAAOrC,KAAKwQ,OAAO0F,oBAGrBhG,mBAAmB7B,GACjB,MAAMpK,EAAUoK,EAAMpK,QAChBuC,EAAa6H,EAAMY,QACzB,OAAOjP,KAAKod,kCAAkCnZ,EAASuC,GAGzD4W,kCAAkCnZ,EAASuC,GACzC,MAAM6W,EAAqBrd,KAAKsd,kCAAkCrZ,GAClE,IAAI+D,EAAQqV,EAAmB1gB,IAAI6J,GAOnC,OALKwB,IACHA,EAAQhI,KAAKmI,SAASoV,mCAAmCtZ,EAASuC,GAClE6W,EAAmB7Z,IAAIgD,EAAYwB,IAG9BA,EAGT6H,oBAAoB5L,EAASlH,GAC3B,MAAMygB,GAAkBxd,KAAKmd,qBAAqBxgB,IAAII,IAAU,GAAK,EACrEiD,KAAKmd,qBAAqB3Z,IAAIzG,EAAOygB,GAEf,GAAlBA,GACFxd,KAAKmI,SAASsV,eAAe1gB,GAIjC+S,sBAAsB7L,EAASlH,GAC7B,MAAMygB,EAAiBxd,KAAKmd,qBAAqBxgB,IAAII,GAEjDygB,IACFxd,KAAKmd,qBAAqB3Z,IAAIzG,EAAOygB,EAAiB,GAEhC,GAAlBA,GACFxd,KAAKmI,SAASuV,kBAAkB3gB,IAKtCugB,kCAAkCrZ,GAChC,IAAIoZ,EAAqBrd,KAAKkd,4BAA4BvgB,IAAIsH,GAO9D,OALKoZ,IACHA,EAAqB,IAAItb,IACzB/B,KAAKkd,4BAA4B1Z,IAAIS,EAASoZ,IAGzCA,GAKX,MAAMM,EACJve,YAAYyC,GACV7B,KAAK6B,YAAcA,EACnB7B,KAAK4d,cAAgB,IAAIX,EAAcjd,KAAKiE,QAASjE,KAAKwQ,OAAQxQ,MAClEA,KAAKqd,mBAAqB,IAAI1R,EAC9B3L,KAAK6d,oBAAsB,IAAI9b,IAGjC,cACE,OAAO/B,KAAK6B,YAAYoC,QAG1B,aACE,OAAOjE,KAAK6B,YAAY2O,OAG1B,aACE,OAAOxQ,KAAK6B,YAAY8Y,OAG1B,0BACE,OAAO3a,KAAKwQ,OAAO0F,oBAGrB,cACE,OAAOlY,MAAMqB,KAAKW,KAAK6d,oBAAoBvb,UAG7C,eACE,OAAOtC,KAAKhE,QAAQuG,QAAO,CAAC8U,EAAUxb,IAAWwb,EAAS3U,OAAO7G,EAAOwb,WAAW,IAGrFpV,QACEjC,KAAK4d,cAAc3b,QAGrBI,OACErC,KAAK4d,cAAcvb,OAGrByb,eAAexJ,GACbtU,KAAK+d,iBAAiBzJ,EAAW9N,YACjC,MAAM3K,EAAS,IAAI8d,EAAO3Z,KAAK6B,YAAayS,GAC5CtU,KAAKge,cAAcniB,GACnB,MAAMoiB,EAAY3J,EAAW2C,sBAAsBgH,UAE/CA,GACFA,EAAUhiB,KAAKqY,EAAW2C,sBAAuB3C,EAAW9N,WAAYxG,KAAK6B,aAIjFkc,iBAAiBvX,GACf,MAAM3K,EAASmE,KAAK6d,oBAAoBlhB,IAAI6J,GAExC3K,GACFmE,KAAKke,iBAAiBriB,GAI1BsiB,kCAAkCla,EAASuC,GACzC,MAAM3K,EAASmE,KAAK6d,oBAAoBlhB,IAAI6J,GAE5C,GAAI3K,EACF,OAAOA,EAAOwb,SAASP,MAAKxQ,GAAWA,EAAQrC,SAAWA,IAI9Dma,6CAA6Cna,EAASuC,GACpD,MAAMwB,EAAQhI,KAAK4d,cAAcR,kCAAkCnZ,EAASuC,GAExEwB,EACFhI,KAAK4d,cAAc/N,oBAAoB7H,EAAM/D,QAAS+D,GAEtDqW,QAAQtb,MAAM,kDAAkDyD,kBAA4BvC,GAIhGnB,YAAYC,EAAOC,EAASC,GAC1BjD,KAAK6B,YAAYiB,YAAYC,EAAOC,EAASC,GAG/Csa,mCAAmCtZ,EAASuC,GAC1C,OAAO,IAAIkW,EAAM1c,KAAKwQ,OAAQvM,EAASuC,EAAYxG,KAAK2a,QAG1D8C,eAAezV,GACbhI,KAAKqd,mBAAmB5c,IAAIuH,EAAMxB,WAAYwB,GAC9C,MAAMnM,EAASmE,KAAK6d,oBAAoBlhB,IAAIqL,EAAMxB,YAE9C3K,GACFA,EAAOke,uBAAuB/R,GAIlC0V,kBAAkB1V,GAChBhI,KAAKqd,mBAAmB1c,OAAOqH,EAAMxB,WAAYwB,GACjD,MAAMnM,EAASmE,KAAK6d,oBAAoBlhB,IAAIqL,EAAMxB,YAE9C3K,GACFA,EAAOoe,0BAA0BjS,GAIrCgW,cAAcniB,GACZmE,KAAK6d,oBAAoBra,IAAI3H,EAAO2K,WAAY3K,GACjCmE,KAAKqd,mBAAmBrR,gBAAgBnQ,EAAO2K,YACvDrE,SAAQ6F,GAASnM,EAAOke,uBAAuB/R,KAGxDkW,iBAAiBriB,GACfmE,KAAK6d,oBAAoBld,OAAO9E,EAAO2K,YACxBxG,KAAKqd,mBAAmBrR,gBAAgBnQ,EAAO2K,YACvDrE,SAAQ6F,GAASnM,EAAOoe,0BAA0BjS,MAK7D,MAAMsW,EAAgB,CACpBpI,oBAAqB,kBACrB5F,gBAAiB,cACjB0L,gBAAiB,cACjBJ,wBAAyBpV,GAAc,QAAQA,WAC/CqQ,wBAAyB,CAACrQ,EAAYmP,IAAW,QAAQnP,KAAcmP,WACvEnE,YAAahV,OAAOwE,OAAOxE,OAAOwE,OAAO,CACvCud,MAAO,QACPC,IAAK,MACLC,IAAK,SACLC,MAAO,IACPC,GAAI,UACJC,KAAM,YACNrd,KAAM,YACNC,MAAO,aACPqd,KAAM,OACNC,IAAK,MACLC,QAAS,SACTC,UAAW,YACVC,EAAkB,6BAA6B7P,MAAM,IAAI3M,KAAItG,GAAK,CAACA,EAAGA,OAAO8iB,EAAkB,aAAa7P,MAAM,IAAI3M,KAAIlF,GAAK,CAACA,EAAGA,QAGxI,SAAS0hB,EAAkBC,GACzB,OAAOA,EAAM3c,QAAO,CAAC4c,GAAOC,EAAGC,KAAO7iB,OAAOwE,OAAOxE,OAAOwE,OAAO,GAAIme,GAAO,CAC3E,CAACC,GAAIC,KACH,IAGN,MAAMC,GACJlgB,YAAY6E,EAAUM,SAASwY,gBAAiBvM,EAAS8N,GACvDte,KAAK2a,OAAS0D,QACdre,KAAKuf,OAAQ,EAEbvf,KAAKyH,iBAAmB,CAACjB,EAAYgR,EAAcvU,EAAS,MACtDjD,KAAKuf,OACPvf,KAAKwf,oBAAoBhZ,EAAYgR,EAAcvU,IAIvDjD,KAAKiE,QAAUA,EACfjE,KAAKwQ,OAASA,EACdxQ,KAAK0X,WAAa,IAAI9V,EAAW5B,MACjCA,KAAKgX,OAAS,IAAI2G,EAAO3d,MACzBA,KAAKiH,wBAA0BzK,OAAOwE,OAAO,GAAI4C,GAGnD,aAAaK,EAASuM,GACpB,MAAM3O,EAAc,IAAI7B,KAAKiE,EAASuM,GAEtC,OADA3O,EAAYI,QACLJ,EAGT,oBAoEO,IAAI4d,SAAQC,IACU,WAAvBnb,SAASob,WACXpb,SAASnE,iBAAiB,oBAAoB,IAAMsf,MAEpDA,OAtEF1f,KAAKyH,iBAAiB,cAAe,YACrCzH,KAAK0X,WAAWzV,QAChBjC,KAAKgX,OAAO/U,QACZjC,KAAKyH,iBAAiB,cAAe,SAGvCpF,OACErC,KAAKyH,iBAAiB,cAAe,YACrCzH,KAAK0X,WAAWrV,OAChBrC,KAAKgX,OAAO3U,OACZrC,KAAKyH,iBAAiB,cAAe,QAGvCmY,SAASpZ,EAAYyQ,GACnBjX,KAAK6f,KAAK,CACRrZ,aACAyQ,0BAIJ6I,qBAAqBzjB,EAAMiL,GACzBtH,KAAKiH,wBAAwB5K,GAAQiL,EAGvCuY,KAAKE,KAASC,IACQhiB,MAAMC,QAAQ8hB,GAAQA,EAAO,CAACA,KAASC,IAC/C7d,SAAQmS,IACdA,EAAW2C,sBAAsBgJ,YACnCjgB,KAAKgX,OAAO8G,eAAexJ,MAKjC4L,OAAOH,KAASC,IACMhiB,MAAMC,QAAQ8hB,GAAQA,EAAO,CAACA,KAASC,IAC/C7d,SAAQqE,GAAcxG,KAAKgX,OAAO+G,iBAAiBvX,KAGjE,kBACE,OAAOxG,KAAKgX,OAAOK,SAAS5U,KAAI6D,GAAWA,EAAQS,aAGrDuQ,qCAAqCrT,EAASuC,GAC5C,MAAMF,EAAUtG,KAAKgX,OAAOmH,kCAAkCla,EAASuC,GACvE,OAAOF,EAAUA,EAAQS,WAAa,KAGxCjE,YAAYC,EAAOC,EAASC,GAC1B,IAAI8Q,EAEJ/T,KAAK2a,OAAO5X,MAAM,iBAAkBC,EAASD,EAAOE,GAC1B,QAAzB8Q,EAAKzP,OAAO6b,eAA4B,IAAPpM,GAAyBA,EAAG9X,KAAKqI,OAAQtB,EAAS,GAAI,EAAG,EAAGD,GAGhGyc,oBAAoBhZ,EAAYgR,EAAcvU,EAAS,IACrDA,EAASzG,OAAOwE,OAAO,CACrBa,YAAa7B,MACZiD,GACHjD,KAAK2a,OAAOyF,eAAe,GAAG5Z,MAAegR,KAC7CxX,KAAK2a,OAAO0F,IAAI,WAAY7jB,OAAOwE,OAAO,GAAIiC,IAC9CjD,KAAK2a,OAAO2F,YA2DhB,SAASC,GAAoBxZ,EAAY9C,EAASuC,GAChD,OAAOO,EAAWlF,YAAYyV,qCAAqCrT,EAASuC,GAG9E,SAASga,GAAqCzZ,EAAY9C,EAASkR,GACjE,IAAIsL,EAAmBF,GAAoBxZ,EAAY9C,EAASkR,GAChE,OAAIsL,IACJ1Z,EAAWlF,YAAYmV,OAAOoH,6CAA6Cna,EAASkR,GACpFsL,EAAmBF,GAAoBxZ,EAAY9C,EAASkR,GACxDsL,QAAJ,GA8JF,SAASC,IAA0BrS,EAAOsS,GAAiB5Z,GACzD,OAmGF,SAAkD6Z,GAChD,MAAMvS,EAAQuS,EAAQvS,MAChBsS,EAAiBC,EAAQD,eACzBtjB,EAAM,GAAG2H,EAAUqJ,WACnB5E,EAvCR,SAAkCmX,GAChC,MAAM7Z,EAAa6Z,EAAQ7Z,WACrBsH,EAAQuS,EAAQvS,MAChBsS,EAAiBC,EAAQD,eAMzBE,EA/BR,SAA8BD,GAC5B,MAAM7Z,EAAa6Z,EAAQ7Z,WACrBsH,EAAQuS,EAAQvS,MAChByS,EAAaF,EAAQE,WACrBC,EAAU7b,EAAY4b,EAAWrX,MACjCuX,EAAa9b,EAAY4b,EAAWG,SACpCC,EAAaH,GAAWC,EACxBG,EAAWJ,IAAYC,EACvBI,GAAeL,GAAWC,EAC1BH,EAAiBQ,GAAuBP,EAAWrX,MACnD6X,EAAuBC,GAAsBX,EAAQE,WAAWG,SACtE,GAAIE,EAAU,OAAON,EACrB,GAAIO,EAAa,OAAOE,EAExB,GAAIT,IAAmBS,EAAsB,CAE3C,MAAM,IAAItb,MAAM,uDADKe,EAAa,GAAGA,KAAcsH,IAAUA,mCACwDwS,sCAAmDC,EAAWG,wBAAwBK,OAG7M,GAAIJ,EAAY,OAAOL,EAYAW,CALJ,CACjBza,aACAsH,QACAyS,WAAYH,IAGRW,EAAuBC,GAAsBZ,GAC7Cc,EAAmBJ,GAAuBV,GAC1ClX,EAAOoX,GAAkBS,GAAwBG,EACvD,GAAIhY,EAAM,OAAOA,EAEjB,MAAM,IAAIzD,MAAM,uBADKe,EAAa,GAAGA,KAAc4Z,IAAmBtS,WACTA,YAwBhDqT,CAAyBd,GACtC,MAAO,CACLnX,OACApM,MACAhB,KAAMmI,EAASnH,GAEf,mBACE,OA5BN,SAAmCsjB,GACjC,MAAMgB,EAAWN,GAAuBV,GACxC,GAAIgB,EAAU,OAAOC,GAAoBD,GACzC,MAAMX,EAAa5b,EAAYub,EAAgB,WACzCI,EAAU3b,EAAYub,EAAgB,QACtCG,EAAaH,EACnB,GAAIK,EAAY,OAAOF,EAAWG,QAElC,GAAIF,EAAS,CACX,MACMc,EAAmBR,GADZP,EAAWrX,MAExB,GAAIoY,EAAkB,OAAOD,GAAoBC,GAGnD,OAAOlB,EAcImB,CAA0BnB,IAGnC,4BACE,YAAiDxb,IAA1Coc,GAAsBZ,IAG/BpN,OAAQwO,GAAQtY,GAChBoJ,OAAQmP,GAAQvY,IAASuY,GAAQf,SAtH5BgB,CAAyC,CAC9Clb,aACAsH,QACAsS,mBAIJ,SAASU,GAAuBM,GAC9B,OAAQA,GACN,KAAK3jB,MACH,MAAO,QAET,KAAKkkB,QACH,MAAO,UAET,KAAKC,OACH,MAAO,SAET,KAAK3lB,OACH,MAAO,SAET,KAAK4lB,OACH,MAAO,UAIb,SAASb,GAAsBzO,GAC7B,cAAeA,GACb,IAAK,UACH,MAAO,UAET,IAAK,SACH,MAAO,SAET,IAAK,SACH,MAAO,SAGX,OAAI9U,MAAMC,QAAQ6U,GAAsB,QACa,oBAAjDtW,OAAOkB,UAAUwB,SAASjD,KAAK6W,GAA4C,cAA/E,EAmFF,MAAM8O,GAAsB,CAC1B,YACE,MAAO,IAGTS,SAAS,EACTC,OAAQ,EAER,aACE,MAAO,IAGTC,OAAQ,IAEJR,GAAU,CACd7C,MAAMniB,GACJ,MAAMmiB,EAAQhZ,KAAKC,MAAMpJ,GAEzB,IAAKiB,MAAMC,QAAQihB,GACjB,MAAM,IAAI1f,UAAU,yDAAyDzC,eAAmBwkB,GAAsBrC,OAGxH,OAAOA,GAGTmD,QAAQtlB,KACY,KAATA,GAA+C,SAA/BqlB,OAAOrlB,GAAOkI,eAGzCqd,OAAOvlB,GACEolB,OAAOplB,EAAM0H,QAAQ,KAAM,KAGpCjH,OAAOT,GACL,MAAMS,EAAS0I,KAAKC,MAAMpJ,GAE1B,GAAe,OAAXS,GAAoC,iBAAVA,GAAsBQ,MAAMC,QAAQT,GAChE,MAAM,IAAIgC,UAAU,0DAA0DzC,eAAmBwkB,GAAsB/jB,OAGzH,OAAOA,GAGT+kB,OAAOxlB,GACEA,GAILilB,GAAU,CACdf,QASF,SAAqBlkB,GACnB,MAAO,GAAGA,KATVmiB,MAAOsD,GACPhlB,OAAQglB,IAGV,SAASA,GAAUzlB,GACjB,OAAOmJ,KAAKuc,UAAU1lB,GAOxB,MAAM2lB,GACJtjB,YAAYkH,GACVtG,KAAKsG,QAAUA,EAGjB,wBACE,OAAO,EAGT,iBAAiBqc,EAAaC,IAI9B,kBACE,OAAO5iB,KAAKsG,QAAQzE,YAGtB,YACE,OAAO7B,KAAKsG,QAAQ0B,MAGtB,cACE,OAAOhI,KAAKgI,MAAM/D,QAGpB,iBACE,OAAOjE,KAAKgI,MAAMxB,WAGpB,cACE,OAAOxG,KAAKgI,MAAMsT,QAGpB,cACE,OAAOtb,KAAKgI,MAAM2O,QAGpB,cACE,OAAO3W,KAAKgI,MAAM2U,QAGpB,WACE,OAAO3c,KAAKgI,MAAMkL,KAGpB4E,cAEA3X,WAEAE,cAEAwiB,SAAS/iB,GAAW,OAClBoE,EAASlE,KAAKiE,QAAO,OACrBhB,EAAS,GAAE,OACX6f,EAAS9iB,KAAKwG,WAAU,QACxBuc,GAAU,EAAI,WACdC,GAAa,GACX,IACF,MACMniB,EAAQ,IAAIoiB,YADLH,EAAS,GAAGA,KAAUhjB,IAAcA,EACb,CAClCmD,SACA8f,UACAC,eAGF,OADA9e,EAAOgf,cAAcriB,GACdA,GAKX6hB,GAAWS,UAAY,CAldvB,SAAiC/jB,GAE/B,OADgB8U,EAAiC9U,EAAa,WAC/CmD,QAAO,CAAC4V,EAAYiL,KACjC,OAAO5mB,OAAOwE,OAAOmX,EAKhB,CACL,CAAC,GAFiC9a,EAJ4B+lB,UAM7C,CACfzmB,MACE,MAAMggB,EAAU3c,KAAK2c,QAErB,GAAIA,EAAQvT,IAAI/L,GACd,OAAOsf,EAAQhgB,IAAIU,GACd,CACL,MAAMoQ,EAAYkP,EAAQtC,iBAAiBhd,GAC3C,MAAM,IAAI2I,MAAM,sBAAsByH,SAK5C,CAAC,GAAGpQ,YAAe,CACjBV,MACE,OAAOqD,KAAK2c,QAAQvC,OAAO/c,KAI/B,CAAC,MAAMyH,EAAWzH,WAAc,CAC9BV,MACE,OAAOqD,KAAK2c,QAAQvT,IAAI/L,OAvBhC,IAAsCA,IAHjC,KAkHL,SAAkC+B,GAEhC,OADgB8U,EAAiC9U,EAAa,WAC/CmD,QAAO,CAAC4V,EAAYkL,KACjC,OAAO7mB,OAAOwE,OAAOmX,EAKhB,CACL,CAAC,GAFkC9b,EAJ4BgnB,WAM5C,CACjB1mB,MACE,MAAMuH,EAASlE,KAAKsb,QAAQxE,KAAKza,GAEjC,GAAI6H,EACF,OAAOA,EAEP,MAAM,IAAI8B,MAAM,2BAA2B3J,WAAc2D,KAAKwG,4BAKpE,CAAC,GAAGnK,YAAgB,CAClBM,MACE,OAAOqD,KAAKsb,QAAQD,QAAQhf,KAIhC,CAAC,MAAMyI,EAAWzI,YAAgB,CAChCM,MACE,OAAOqD,KAAKsb,QAAQlS,IAAI/M,OAtBhC,IAAuCA,IAHlC,KAgCL,SAAiC+C,GAC/B,MAAMkkB,EAAuB9O,EAAiCpV,EAAa,UACrEmkB,EAAwB,CAC5B7Q,mBAAoB,CAClB/V,MACE,OAAO2mB,EAAqB/gB,QAAO,CAACihB,EAAQC,KAC1C,MAAMC,EAAkBhD,GAAyB+C,EAAqBzjB,KAAKwG,YACrEmD,EAAgB3J,KAAKkT,KAAKoH,uBAAuBoJ,EAAgBrmB,KACvE,OAAOb,OAAOwE,OAAOwiB,EAAQ,CAC3B,CAAC7Z,GAAgB+Z,MAElB,OAKT,OAAOJ,EAAqB/gB,QAAO,CAAC4V,EAAYsL,IACvCjnB,OAAOwE,OAAOmX,EAIzB,SAA0CsL,EAAqB1c,GAC7D,MAAMuN,EAAaoM,GAAyB+C,EAAqB1c,GAC3D1J,EAAMiX,EAAWjX,IACjBhB,EAAOiY,EAAWjY,KAClBsnB,EAAOrP,EAAWf,OAClBqQ,EAAQtP,EAAWzB,OACzB,MAAO,CACL,CAACxW,GAAO,CACNM,MACE,MAAMI,EAAQiD,KAAKkT,KAAKvW,IAAIU,GAE5B,OAAc,OAAVN,EACK4mB,EAAK5mB,GAELuX,EAAWxB,cAItBtP,IAAIzG,QACYoI,IAAVpI,EACFiD,KAAKkT,KAAKvS,OAAOtD,GAEjB2C,KAAKkT,KAAK1P,IAAInG,EAAKumB,EAAM7mB,MAK/B,CAAC,MAAM+H,EAAWzI,MAAU,CAC1BM,MACE,OAAOqD,KAAKkT,KAAK9J,IAAI/L,IAAQiX,EAAWuP,yBAjCXC,CAAiCL,KACjEF,IAvIL,SAAkCnkB,GAEhC,OADgB8U,EAAiC9U,EAAa,WAC/CmD,QAAO,CAAC4V,EAAY4L,IAC1BvnB,OAAOwE,OAAOmX,EAgBzB,SAAuC9b,GACrC,MAAM2nB,EAAgBnf,EAAkBxI,GACxC,MAAO,CACL,CAAC,GAAG2nB,WAAwB,CAC1BrnB,MACE,MAAMsnB,EAAgBjkB,KAAK2W,QAAQG,KAAKza,GAClC+O,EAAWpL,KAAK2W,QAAQC,yBAAyBva,GAEvD,GAAI4nB,EAAe,CACjB,MAAMxD,EAAmBD,GAAqCxgB,KAAMikB,EAAe5nB,GACnF,GAAIokB,EAAkB,OAAOA,EAC7B,MAAM,IAAIza,MAAM,gEAAgE3J,oCAAuC2D,KAAKwG,eAG9H,MAAM,IAAIR,MAAM,2BAA2B3J,2BAA8B2D,KAAKwG,iFAAiF4E,SAInK,CAAC,GAAG4Y,YAAyB,CAC3BrnB,MACE,MAAMga,EAAU3W,KAAK2W,QAAQ0E,QAAQhf,GAErC,OAAIsa,EAAQ9X,OAAS,EACZ8X,EAAQlU,KAAIwhB,IACjB,MAAMxD,EAAmBD,GAAqCxgB,KAAMikB,EAAe5nB,GACnF,GAAIokB,EAAkB,OAAOA,EAC7BpC,QAAQxD,KAAK,gEAAgExe,oCAAuC2D,KAAKwG,cAAeyd,MACvI3c,QAAOP,GAAcA,IAGnB,KAIX,CAAC,GAAGid,kBAA+B,CACjCrnB,MACE,MAAMsnB,EAAgBjkB,KAAK2W,QAAQG,KAAKza,GAClC+O,EAAWpL,KAAK2W,QAAQC,yBAAyBva,GAEvD,GAAI4nB,EACF,OAAOA,EAEP,MAAM,IAAIje,MAAM,2BAA2B3J,2BAA8B2D,KAAKwG,iFAAiF4E,SAKrK,CAAC,GAAG4Y,mBAAgC,CAClCrnB,MACE,OAAOqD,KAAK2W,QAAQ0E,QAAQhf,KAIhC,CAAC,MAAMyI,EAAWkf,YAAyB,CACzCrnB,MACE,OAAOqD,KAAK2W,QAAQvN,IAAI/M,MAvEK6nB,CAA8BH,KAC9D,MA0aLrB,GAAWpH,QAAU,GACrBoH,GAAW/L,QAAU,GACrB+L,GAAWpgB,OAAS,I,iBC9pGpB,YAQiEzG,EAAOD,QAC/D,WACP,aAEA,IAAIuoB,EAsHApY,EApHJ,SAASqY,IACP,OAAOD,EAAaE,MAAM,KAAM9K,WAKlC,SAAS+K,EAAgBtb,GACvBmb,EAAenb,EAGjB,SAAS/K,EAAQ0H,GACf,OAAOA,aAAiB3H,OAAmD,mBAA1CxB,OAAOkB,UAAUwB,SAASjD,KAAK0J,GAGlE,SAAS4e,EAAS5e,GAGhB,OAAgB,MAATA,GAA2D,oBAA1CnJ,OAAOkB,UAAUwB,SAASjD,KAAK0J,GAGzD,SAAS6e,EAAWjf,EAAGkU,GACrB,OAAOjd,OAAOkB,UAAUC,eAAe1B,KAAKsJ,EAAGkU,GAGjD,SAASgL,EAAcC,GACrB,GAAIloB,OAAO0c,oBACT,OAAkD,IAA3C1c,OAAO0c,oBAAoBwL,GAAK7lB,OAEvC,IAAIugB,EAEJ,IAAKA,KAAKsF,EACR,GAAIF,EAAWE,EAAKtF,GAClB,OAAO,EAIX,OAAO,EAIX,SAASuF,EAAYhf,GACnB,YAAiB,IAAVA,EAGT,SAASif,EAASjf,GAChB,MAAwB,kBAAVA,GAAgE,oBAA1CnJ,OAAOkB,UAAUwB,SAASjD,KAAK0J,GAGrE,SAASkf,EAAOlf,GACd,OAAOA,aAAiBmf,MAAkD,kBAA1CtoB,OAAOkB,UAAUwB,SAASjD,KAAK0J,GAGjE,SAASlD,EAAI1E,EAAKgnB,GAChB,IACIjpB,EADAkpB,EAAM,GAENC,EAASlnB,EAAIc,OAEjB,IAAK/C,EAAI,EAAGA,EAAImpB,IAAUnpB,EACxBkpB,EAAIpmB,KAAKmmB,EAAGhnB,EAAIjC,GAAIA,IAGtB,OAAOkpB,EAGT,SAAS3M,EAAO9S,EAAGkU,GACjB,IAAK,IAAI3d,KAAK2d,EACR+K,EAAW/K,EAAG3d,KAChByJ,EAAEzJ,GAAK2d,EAAE3d,IAYb,OARI0oB,EAAW/K,EAAG,cAChBlU,EAAErG,SAAWua,EAAEva,UAGbslB,EAAW/K,EAAG,aAChBlU,EAAE2f,QAAUzL,EAAEyL,SAGT3f,EAGT,SAAS4f,EAAUxf,EAAOyf,EAAQC,EAAQC,GACxC,OAAOC,GAAiB5f,EAAOyf,EAAQC,EAAQC,GAAQ,GAAME,MAG/D,SAASC,IAEP,MAAO,CACLC,OAAO,EACPC,aAAc,GACdC,YAAa,GACbC,UAAW,EACXC,cAAe,EACfC,WAAW,EACXC,WAAY,KACZC,aAAc,KACdC,eAAe,EACfC,iBAAiB,EACjBC,KAAK,EACLC,gBAAiB,GACjBC,IAAK,KACLC,SAAU,KACVC,SAAS,EACTC,iBAAiB,GAIrB,SAASC,EAAgBxqB,GAKvB,OAJa,MAATA,EAAEyqB,MACJzqB,EAAEyqB,IAAMlB,KAGHvpB,EAAEyqB,IAuBX,SAASC,EAAQ1qB,GACf,GAAkB,MAAdA,EAAE2qB,SAAkB,CACtB,IAAIC,EAAQJ,EAAgBxqB,GACxB6qB,EAAchb,EAAK9P,KAAK6qB,EAAMT,iBAAiB,SAAUvqB,GAC3D,OAAY,MAALA,KAELkrB,GAAcC,MAAM/qB,EAAEuC,GAAGyoB,YAAcJ,EAAMjB,SAAW,IAAMiB,EAAMpB,QAAUoB,EAAMd,aAAec,EAAMb,eAAiBa,EAAMK,iBAAmBL,EAAML,kBAAoBK,EAAMf,YAAce,EAAMZ,gBAAkBY,EAAMX,mBAAqBW,EAAMP,UAAYO,EAAMP,UAAYQ,GAM5R,GAJI7qB,EAAEkrB,UACJJ,EAAaA,GAAsC,IAAxBF,EAAMhB,eAAqD,IAA9BgB,EAAMnB,aAAa9mB,aAAkCsG,IAAlB2hB,EAAMO,SAG5E,MAAnB7qB,OAAO8qB,UAAqB9qB,OAAO8qB,SAASprB,GAG9C,OAAO8qB,EAFP9qB,EAAE2qB,SAAWG,EAMjB,OAAO9qB,EAAE2qB,SAGX,SAASU,EAAcT,GACrB,IAAI5qB,EAAIipB,EAAUqC,KAQlB,OANa,MAATV,EACFzO,EAAOqO,EAAgBxqB,GAAI4qB,GAE3BJ,EAAgBxqB,GAAGiqB,iBAAkB,EAGhCjqB,EAhDP6P,EADE/N,MAAMN,UAAUqO,KACX/N,MAAMN,UAAUqO,KAEhB,SAAU0b,GACf,IAEI3rB,EAFAkB,EAAIR,OAAOwD,MACXN,EAAM1C,EAAE6B,SAAW,EAGvB,IAAK/C,EAAI,EAAGA,EAAI4D,EAAK5D,IACnB,GAAIA,KAAKkB,GAAKyqB,EAAIxrB,KAAK+D,KAAMhD,EAAElB,GAAIA,EAAGkB,GACpC,OAAO,EAIX,OAAO,GAwCX,IAAI0qB,EAAmBtD,EAAMsD,iBAAmB,GAC5CC,GAAmB,EAEvB,SAASC,EAAWC,EAAIxoB,GACtB,IAAIvD,EACAgsB,EACAC,EACAC,EAAsBN,EAAiB7oB,OA0C3C,GAxCK8lB,EAAYtlB,EAAK4oB,oBACpBJ,EAAGI,iBAAmB5oB,EAAK4oB,kBAGxBtD,EAAYtlB,EAAKlB,MACpB0pB,EAAG1pB,GAAKkB,EAAKlB,IAGVwmB,EAAYtlB,EAAK6oB,MACpBL,EAAGK,GAAK7oB,EAAK6oB,IAGVvD,EAAYtlB,EAAK8oB,MACpBN,EAAGM,GAAK9oB,EAAK8oB,IAGVxD,EAAYtlB,EAAK+nB,WACpBS,EAAGT,QAAU/nB,EAAK+nB,SAGfzC,EAAYtlB,EAAK+oB,QACpBP,EAAGO,KAAO/oB,EAAK+oB,MAGZzD,EAAYtlB,EAAKgpB,UACpBR,EAAGQ,OAAShpB,EAAKgpB,QAGd1D,EAAYtlB,EAAKipB,WACpBT,EAAGS,QAAUjpB,EAAKipB,SAGf3D,EAAYtlB,EAAKsnB,OACpBkB,EAAGlB,IAAMD,EAAgBrnB,IAGtBslB,EAAYtlB,EAAKkpB,WACpBV,EAAGU,QAAUlpB,EAAKkpB,SAGhBP,EAAsB,EACxB,IAAKlsB,EAAI,EAAGA,EAAIksB,EAAqBlsB,IAI9B6oB,EAFLoD,EAAM1oB,EADNyoB,EAAOJ,EAAiB5rB,OAItB+rB,EAAGC,GAAQC,GAKjB,OAAOF,EAIT,SAASW,EAAOC,GACdb,EAAW5nB,KAAMyoB,GACjBzoB,KAAKvB,GAAK,IAAIqmB,KAAkB,MAAb2D,EAAOhqB,GAAagqB,EAAOhqB,GAAGyoB,UAAYM,KAExDxnB,KAAK4mB,YACR5mB,KAAKvB,GAAK,IAAIqmB,KAAK0C,OAKI,IAArBG,IACFA,GAAmB,EACnBvD,EAAMsE,aAAa1oB,MACnB2nB,GAAmB,GAIvB,SAASgB,EAASjE,GAChB,OAAOA,aAAe8D,GAAiB,MAAP9D,GAAuC,MAAxBA,EAAIuD,iBAGrD,SAASpN,EAAK+N,IAC8B,IAAtCxE,EAAMyE,6BAA4D,qBAAZxK,SAA2BA,QAAQxD,MAC3FwD,QAAQxD,KAAK,wBAA0B+N,GAI3C,SAAS9M,EAAU8M,EAAK7D,GACtB,IAAI+D,GAAY,EAChB,OAAOzQ,GAAO,WAKZ,GAJgC,MAA5B+L,EAAM2E,oBACR3E,EAAM2E,mBAAmB,KAAMH,GAG7BE,EAAW,CACb,IACIE,EACAltB,EACAuB,EAHA4a,EAAO,GAIPgR,EAAS1P,UAAU1a,OAEvB,IAAK/C,EAAI,EAAGA,EAAImtB,EAAQntB,IAAK,CAG3B,GAFAktB,EAAM,GAEsB,kBAAjBzP,UAAUzd,GAAiB,CAGpC,IAAKuB,KAFL2rB,GAAO,MAAQltB,EAAI,KAEPyd,UAAU,GAChBiL,EAAWjL,UAAU,GAAIlc,KAC3B2rB,GAAO3rB,EAAM,KAAOkc,UAAU,GAAGlc,GAAO,MAI5C2rB,EAAMA,EAAI7pB,MAAM,GAAI,QAEpB6pB,EAAMzP,UAAUzd,GAGlBmc,EAAKrZ,KAAKoqB,GAGZnO,EAAK+N,EAAM,gBAAkB5qB,MAAMN,UAAUyB,MAAMlD,KAAKgc,GAAMtU,KAAK,IAAM,MAAO,IAAIqC,OAAQkjB,OAC5FJ,GAAY,EAGd,OAAO/D,EAAGV,MAAMrkB,KAAMuZ,aACrBwL,GAGL,IA4EIrhB,EA5EAylB,EAAe,GAEnB,SAASC,EAAgB/sB,EAAMusB,GACG,MAA5BxE,EAAM2E,oBACR3E,EAAM2E,mBAAmB1sB,EAAMusB,GAG5BO,EAAa9sB,KAChBwe,EAAK+N,GACLO,EAAa9sB,IAAQ,GAOzB,SAASgtB,EAAW1jB,GAClB,MAA2B,qBAAb2jB,UAA4B3jB,aAAiB2jB,UAAsD,sBAA1C9sB,OAAOkB,UAAUwB,SAASjD,KAAK0J,GAGxG,SAASnC,EAAIilB,GACX,IAAIX,EAAMhsB,EAEV,IAAKA,KAAK2sB,EACJjE,EAAWiE,EAAQ3sB,KAGjButB,EAFJvB,EAAOW,EAAO3sB,IAGZkE,KAAKlE,GAAKgsB,EAEV9nB,KAAK,IAAMlE,GAAKgsB,GAKtB9nB,KAAKupB,QAAUd,EAIfzoB,KAAKwpB,+BAAiC,IAAI9X,QAAQ1R,KAAKypB,wBAAwBC,QAAU1pB,KAAK2pB,cAAcD,QAAU,IAAM,UAAUA,QAGxI,SAASE,EAAaC,EAAcC,GAClC,IACIhC,EADA9C,EAAM3M,EAAO,GAAIwR,GAGrB,IAAK/B,KAAQgC,EACPtF,EAAWsF,EAAahC,KACtBvD,EAASsF,EAAa/B,KAAUvD,EAASuF,EAAYhC,KACvD9C,EAAI8C,GAAQ,GACZzP,EAAO2M,EAAI8C,GAAO+B,EAAa/B,IAC/BzP,EAAO2M,EAAI8C,GAAOgC,EAAYhC,KACA,MAArBgC,EAAYhC,GACrB9C,EAAI8C,GAAQgC,EAAYhC,UAEjB9C,EAAI8C,IAKjB,IAAKA,KAAQ+B,EACPrF,EAAWqF,EAAc/B,KAAUtD,EAAWsF,EAAahC,IAASvD,EAASsF,EAAa/B,MAE5F9C,EAAI8C,GAAQzP,EAAO,GAAI2M,EAAI8C,KAI/B,OAAO9C,EAGT,SAAS+E,EAAOtB,GACA,MAAVA,GACFzoB,KAAKwD,IAAIilB,GA3DbrE,EAAMyE,6BAA8B,EACpCzE,EAAM2E,mBAAqB,KAiEzBrlB,EADElH,OAAOkH,KACFlH,OAAOkH,KAEP,SAAUghB,GACf,IAAI5oB,EACAkpB,EAAM,GAEV,IAAKlpB,KAAK4oB,EACJF,EAAWE,EAAK5oB,IAClBkpB,EAAIpmB,KAAK9C,GAIb,OAAOkpB,GAIX,IAAIgF,EAAkB,CACpBC,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAGZ,SAASC,EAASltB,EAAKmtB,EAAKC,GAC1B,IAAIC,EAAS1qB,KAAK2qB,UAAUttB,IAAQ2C,KAAK2qB,UAAoB,SAC7D,OAAOtB,EAAWqB,GAAUA,EAAOzuB,KAAKuuB,EAAKC,GAAOC,EAGtD,SAASE,EAAStI,EAAQuI,EAAcC,GACtC,IAAIC,EAAY,GAAKpc,KAAKqc,IAAI1I,GAC1B2I,EAAcJ,EAAeE,EAAUlsB,OAE3C,OADWyjB,GAAU,EACNwI,EAAY,IAAM,GAAK,KAAOnc,KAAKuc,IAAI,GAAIvc,KAAKC,IAAI,EAAGqc,IAAc/rB,WAAWisB,OAAO,GAAKJ,EAG7G,IAAIK,EAAmB,yMACnBC,EAAwB,6CACxBC,EAAkB,GAClBC,EAAuB,GAK3B,SAASC,EAAend,EAAOod,EAAQC,EAAS1iB,GAC9C,IAAI2iB,EAAO3iB,EAEa,kBAAbA,IACT2iB,EAAO,WACL,OAAO3rB,KAAKgJ,OAIZqF,IACFkd,EAAqBld,GAASsd,GAG5BF,IACFF,EAAqBE,EAAO,IAAM,WAChC,OAAOb,EAASe,EAAKtH,MAAMrkB,KAAMuZ,WAAYkS,EAAO,GAAIA,EAAO,MAI/DC,IACFH,EAAqBG,GAAW,WAC9B,OAAO1rB,KAAK4rB,aAAaF,QAAQC,EAAKtH,MAAMrkB,KAAMuZ,WAAYlL,KAKpE,SAASwd,EAAuBlmB,GAC9B,OAAIA,EAAMuF,MAAM,YACPvF,EAAMlB,QAAQ,WAAY,IAG5BkB,EAAMlB,QAAQ,MAAO,IAG9B,SAASqnB,EAAmB1G,GAC1B,IACItpB,EACA+C,EAFAqgB,EAAQkG,EAAOla,MAAMkgB,GAIzB,IAAKtvB,EAAI,EAAG+C,EAASqgB,EAAMrgB,OAAQ/C,EAAI+C,EAAQ/C,IACzCyvB,EAAqBrM,EAAMpjB,IAC7BojB,EAAMpjB,GAAKyvB,EAAqBrM,EAAMpjB,IAEtCojB,EAAMpjB,GAAK+vB,EAAuB3M,EAAMpjB,IAI5C,OAAO,SAAU0uB,GACf,IACI1uB,EADA4uB,EAAS,GAGb,IAAK5uB,EAAI,EAAGA,EAAI+C,EAAQ/C,IACtB4uB,GAAUrB,EAAWnK,EAAMpjB,IAAMojB,EAAMpjB,GAAGG,KAAKuuB,EAAKpF,GAAUlG,EAAMpjB,GAGtE,OAAO4uB,GAKX,SAASqB,EAAa7vB,EAAGkpB,GACvB,OAAKlpB,EAAE0qB,WAIPxB,EAAS4G,EAAa5G,EAAQlpB,EAAE0vB,cAChCN,EAAgBlG,GAAUkG,EAAgBlG,IAAW0G,EAAmB1G,GACjEkG,EAAgBlG,GAAQlpB,IALtBA,EAAE0vB,aAAaK,cAQ1B,SAASD,EAAa5G,EAAQC,GAC5B,IAAIvpB,EAAI,EAER,SAASowB,EAA4BvmB,GACnC,OAAO0f,EAAO8G,eAAexmB,IAAUA,EAKzC,IAFA0lB,EAAsBe,UAAY,EAE3BtwB,GAAK,GAAKuvB,EAAsB/rB,KAAK8lB,IAC1CA,EAASA,EAAO3gB,QAAQ4mB,EAAuBa,GAC/Cb,EAAsBe,UAAY,EAClCtwB,GAAK,EAGP,OAAOspB,EAGT,IAAIiH,EAAwB,CAC1BC,IAAK,YACLC,GAAI,SACJC,EAAG,aACHC,GAAI,eACJC,IAAK,sBACLC,KAAM,6BAGR,SAASR,EAAe9uB,GACtB,IAAI+nB,EAASplB,KAAK4sB,gBAAgBvvB,GAC9BwvB,EAAc7sB,KAAK4sB,gBAAgBvvB,EAAIuH,eAE3C,OAAIwgB,IAAWyH,EACNzH,GAGTplB,KAAK4sB,gBAAgBvvB,GAAOwvB,EAAY3hB,MAAMkgB,GAAkB3oB,KAAI,SAAUqqB,GAC5E,MAAY,SAARA,GAA0B,OAARA,GAAwB,OAARA,GAAwB,SAARA,EAC7CA,EAAI3tB,MAAM,GAGZ2tB,KACNnpB,KAAK,IACD3D,KAAK4sB,gBAAgBvvB,IAG9B,IAAI0vB,EAAqB,eAEzB,SAASd,IACP,OAAOjsB,KAAKgtB,aAGd,IAAIC,EAAiB,KACjBC,EAAgC,UAEpC,SAASxB,EAAQpJ,GACf,OAAOtiB,KAAKmtB,SAAS1oB,QAAQ,KAAM6d,GAGrC,IAAI8K,EAAsB,CACxBC,OAAQ,QACRC,KAAM,SACNzvB,EAAG,gBACH0vB,GAAI,aACJrxB,EAAG,WACHsxB,GAAI,aACJC,EAAG,UACHC,GAAI,WACJtxB,EAAG,QACHuxB,GAAI,UACJC,EAAG,SACHC,GAAI,WACJC,EAAG,UACHC,GAAI,YACJC,EAAG,SACHC,GAAI,YAGN,SAASC,GAAa5L,EAAQ6L,EAAe5L,EAAQ6L,GACnD,IAAI1D,EAAS1qB,KAAKquB,cAAc9L,GAChC,OAAO8G,EAAWqB,GAAUA,EAAOpI,EAAQ6L,EAAe5L,EAAQ6L,GAAY1D,EAAOjmB,QAAQ,MAAO6d,GAGtG,SAASgM,GAAWC,EAAM7D,GACxB,IAAItF,EAASplB,KAAKquB,cAAcE,EAAO,EAAI,SAAW,QACtD,OAAOlF,EAAWjE,GAAUA,EAAOsF,GAAUtF,EAAO3gB,QAAQ,MAAOimB,GAGrE,IAAI8D,GAAU,GAEd,SAASC,GAAaC,EAAMC,GAC1B,IAAIC,EAAYF,EAAKzpB,cACrBupB,GAAQI,GAAaJ,GAAQI,EAAY,KAAOJ,GAAQG,GAAaD,EAGvE,SAASG,GAAeC,GACtB,MAAwB,kBAAVA,EAAqBN,GAAQM,IAAUN,GAAQM,EAAM7pB,oBAAiBE,EAGtF,SAAS4pB,GAAqBC,GAC5B,IACIC,EACAnH,EAFAoH,EAAkB,GAItB,IAAKpH,KAAQkH,EACPxK,EAAWwK,EAAalH,KAC1BmH,EAAiBJ,GAAe/G,MAG9BoH,EAAgBD,GAAkBD,EAAYlH,IAKpD,OAAOoH,EAGT,IAAIC,GAAa,GAEjB,SAASC,GAAgBV,EAAMW,GAC7BF,GAAWT,GAAQW,EAGrB,SAASC,GAAoBC,GAC3B,IACIC,EADAV,EAAQ,GAGZ,IAAKU,KAAKD,EACJ/K,EAAW+K,EAAUC,IACvBV,EAAMlwB,KAAK,CACT8vB,KAAMc,EACNH,SAAUF,GAAWK,KAQ3B,OAHAV,EAAMxtB,MAAK,SAAUiE,EAAGkU,GACtB,OAAOlU,EAAE8pB,SAAW5V,EAAE4V,YAEjBP,EAGT,SAASW,GAAWC,GAClB,OAAOA,EAAO,IAAM,GAAKA,EAAO,MAAQ,GAAKA,EAAO,MAAQ,EAG9D,SAASC,GAASrN,GAChB,OAAIA,EAAS,EAEJ3T,KAAKihB,KAAKtN,IAAW,EAErB3T,KAAKkhB,MAAMvN,GAItB,SAASwN,GAAMC,GACb,IAAIC,GAAiBD,EACjBhzB,EAAQ,EAMZ,OAJsB,IAAlBizB,GAAuBC,SAASD,KAClCjzB,EAAQ4yB,GAASK,IAGZjzB,EAGT,SAASmzB,GAAWxB,EAAMyB,GACxB,OAAO,SAAUpzB,GACf,OAAa,MAATA,GACFqzB,GAAMpwB,KAAM0uB,EAAM3xB,GAClBqnB,EAAMsE,aAAa1oB,KAAMmwB,GAClBnwB,MAEArD,GAAIqD,KAAM0uB,IAKvB,SAAS/xB,GAAI6tB,EAAKkE,GAChB,OAAOlE,EAAI5D,UAAY4D,EAAI/rB,GAAG,OAAS+rB,EAAInC,OAAS,MAAQ,IAAMqG,KAAUlH,IAG9E,SAAS4I,GAAM5F,EAAKkE,EAAM3xB,GACpBytB,EAAI5D,YAAcK,MAAMlqB,KACb,aAAT2xB,GAAuBe,GAAWjF,EAAIkF,SAA2B,IAAhBlF,EAAI6F,SAAgC,KAAf7F,EAAI8F,QAC5EvzB,EAAQ+yB,GAAM/yB,GAEdytB,EAAI/rB,GAAG,OAAS+rB,EAAInC,OAAS,MAAQ,IAAMqG,GAAM3xB,EAAOytB,EAAI6F,QAASE,GAAYxzB,EAAOytB,EAAI6F,WAE5F7F,EAAI/rB,GAAG,OAAS+rB,EAAInC,OAAS,MAAQ,IAAMqG,GAAM3xB,IAMvD,SAASyzB,GAAU1B,GAGjB,OAAIzF,EAAWrpB,KAFf8uB,EAAQD,GAAeC,KAGd9uB,KAAK8uB,KAGP9uB,KAGT,SAASywB,GAAU3B,EAAO/xB,GACxB,GAAqB,kBAAV+xB,EAAoB,CAE7B,IACIhzB,EADA40B,EAAcpB,GADlBR,EAAQC,GAAqBD,IAGzB6B,EAAiBD,EAAY7xB,OAEjC,IAAK/C,EAAI,EAAGA,EAAI60B,EAAgB70B,IAC9BkE,KAAK0wB,EAAY50B,GAAG4yB,MAAMI,EAAM4B,EAAY50B,GAAG4yB,YAKjD,GAAIrF,EAAWrpB,KAFf8uB,EAAQD,GAAeC,KAGrB,OAAO9uB,KAAK8uB,GAAO/xB,GAIvB,OAAOiD,KAGT,IAmCI4wB,GAnCAC,GAAS,KAEbC,GAAS,OAETC,GAAS,QAETC,GAAS,QAETC,GAAS,aAETC,GAAY,QAEZC,GAAY,YAEZC,GAAY,gBAEZC,GAAY,UAEZC,GAAY,UAEZC,GAAY,eAEZC,GAAgB,MAEhBC,GAAc,WAEdC,GAAc,qBAEdC,GAAmB,0BAEnBC,GAAiB,uBAIjBC,GAAY,wJAIZ,SAASC,GAAczjB,EAAO0jB,EAAOC,GACnCpB,GAAQviB,GAASgb,EAAW0I,GAASA,EAAQ,SAAUE,EAAUrG,GAC/D,OAAOqG,GAAYD,EAAcA,EAAcD,GAInD,SAASG,GAAsB7jB,EAAOoa,GACpC,OAAKjE,EAAWoM,GAASviB,GAIlBuiB,GAAQviB,GAAOoa,EAAOrB,QAASqB,EAAOF,SAHpC,IAAI7W,OAAOygB,GAAe9jB,IAOrC,SAAS8jB,GAAet0B,GACtB,OAAOu0B,GAAYv0B,EAAE4G,QAAQ,KAAM,IAAIA,QAAQ,uCAAuC,SAAU4tB,EAASC,EAAIC,EAAIC,EAAIC,GACnH,OAAOH,GAAMC,GAAMC,GAAMC,MAI7B,SAASL,GAAYv0B,GACnB,OAAOA,EAAE4G,QAAQ,yBAA0B,QAxB7CmsB,GAAU,GA2BV,IAAIxiB,GAAS,GAEb,SAASskB,GAAcrkB,EAAOrF,GAC5B,IAAIlN,EAEA62B,EADAhH,EAAO3iB,EAeX,IAZqB,kBAAVqF,IACTA,EAAQ,CAACA,IAGPuW,EAAS5b,KACX2iB,EAAO,SAAUhmB,EAAOuZ,GACtBA,EAAMlW,GAAY8mB,GAAMnqB,KAI5BgtB,EAAWtkB,EAAMxP,OAEZ/C,EAAI,EAAGA,EAAI62B,EAAU72B,IACxBsS,GAAOC,EAAMvS,IAAM6vB,EAIvB,SAASiH,GAAkBvkB,EAAOrF,GAChC0pB,GAAcrkB,GAAO,SAAU1I,EAAOuZ,EAAOuJ,EAAQpa,GACnDoa,EAAOoK,GAAKpK,EAAOoK,IAAM,GACzB7pB,EAASrD,EAAO8iB,EAAOoK,GAAIpK,EAAQpa,MAIvC,SAASykB,GAAwBzkB,EAAO1I,EAAO8iB,GAChC,MAAT9iB,GAAiB6e,EAAWpW,GAAQC,IACtCD,GAAOC,GAAO1I,EAAO8iB,EAAO1U,GAAI0U,EAAQpa,GAI5C,IAcI0kB,GAdAC,GAAO,EACPC,GAAQ,EACRC,GAAO,EACPC,GAAO,EACPC,GAAS,EACTC,GAAS,EACTC,GAAc,EACdC,GAAO,EACPC,GAAU,EAEd,SAASC,GAAIl2B,EAAGm2B,GACd,OAAQn2B,EAAIm2B,EAAIA,GAAKA,EAsBvB,SAASnD,GAAYb,EAAMW,GACzB,GAAIpJ,MAAMyI,IAASzI,MAAMoJ,GACvB,OAAO7I,IAGT,IAAImM,EAAWF,GAAIpD,EAAO,IAE1B,OADAX,IAASW,EAAQsD,GAAY,GACT,IAAbA,EAAiBlE,GAAWC,GAAQ,GAAK,GAAK,GAAKiE,EAAW,EAAI,EAvBzEZ,GADE/0B,MAAMN,UAAUq1B,QACR/0B,MAAMN,UAAUq1B,QAEhB,SAAUx2B,GAElB,IAAIT,EAEJ,IAAKA,EAAI,EAAGA,EAAIkE,KAAKnB,SAAU/C,EAC7B,GAAIkE,KAAKlE,KAAOS,EACd,OAAOT,EAIX,OAAQ,GAeZ0vB,EAAe,IAAK,CAAC,KAAM,GAAI,MAAM,WACnC,OAAOxrB,KAAKqwB,QAAU,KAExB7E,EAAe,MAAO,EAAG,GAAG,SAAUpG,GACpC,OAAOplB,KAAK4rB,aAAagI,YAAY5zB,KAAMolB,MAE7CoG,EAAe,OAAQ,EAAG,GAAG,SAAUpG,GACrC,OAAOplB,KAAK4rB,aAAaiI,OAAO7zB,KAAMolB,MAGxCqJ,GAAa,QAAS,KAEtBW,GAAgB,QAAS,GAEzB0C,GAAc,IAAKZ,IACnBY,GAAc,KAAMZ,GAAWJ,IAC/BgB,GAAc,OAAO,SAAUG,EAAU5M,GACvC,OAAOA,EAAOyO,iBAAiB7B,MAEjCH,GAAc,QAAQ,SAAUG,EAAU5M,GACxC,OAAOA,EAAO0O,YAAY9B,MAE5BS,GAAc,CAAC,IAAK,OAAO,SAAU/sB,EAAOuZ,GAC1CA,EAAM+T,IAASnD,GAAMnqB,GAAS,KAEhC+sB,GAAc,CAAC,MAAO,SAAS,SAAU/sB,EAAOuZ,EAAOuJ,EAAQpa,GAC7D,IAAIgiB,EAAQ5H,EAAOF,QAAQyL,YAAYruB,EAAO0I,EAAOoa,EAAOrB,SAG/C,MAATiJ,EACFnR,EAAM+T,IAAS5C,EAEf3J,EAAgB+B,GAAQxC,aAAetgB,KAI3C,IAAIsuB,GAAsB,wFAAwF7kB,MAAM,KACpH8kB,GAA2B,kDAAkD9kB,MAAM,KACnF+kB,GAAmB,gCACnBC,GAA0BvC,GAC1BwC,GAAqBxC,GAEzB,SAASyC,GAAap4B,EAAGkpB,GACvB,OAAKlpB,EAIE+B,EAAQ+B,KAAKu0B,SAAWv0B,KAAKu0B,QAAQr4B,EAAEm0B,SAAWrwB,KAAKu0B,SAASv0B,KAAKu0B,QAAQC,UAAYL,IAAkB70B,KAAK8lB,GAAU,SAAW,cAAclpB,EAAEm0B,SAHnJpyB,EAAQ+B,KAAKu0B,SAAWv0B,KAAKu0B,QAAUv0B,KAAKu0B,QAAoB,WAM3E,SAASE,GAAkBv4B,EAAGkpB,GAC5B,OAAKlpB,EAIE+B,EAAQ+B,KAAK00B,cAAgB10B,KAAK00B,aAAax4B,EAAEm0B,SAAWrwB,KAAK00B,aAAaP,GAAiB70B,KAAK8lB,GAAU,SAAW,cAAclpB,EAAEm0B,SAHvIpyB,EAAQ+B,KAAK00B,cAAgB10B,KAAK00B,aAAe10B,KAAK00B,aAAyB,WAM1F,SAASC,GAAkBC,EAAWxP,EAAQE,GAC5C,IAAIxpB,EACA+4B,EACArK,EACAsK,EAAMF,EAAUG,oBAEpB,IAAK/0B,KAAKg1B,aAMR,IAJAh1B,KAAKg1B,aAAe,GACpBh1B,KAAKi1B,iBAAmB,GACxBj1B,KAAKk1B,kBAAoB,GAEpBp5B,EAAI,EAAGA,EAAI,KAAMA,EACpB0uB,EAAMrF,EAAU,CAAC,IAAMrpB,IACvBkE,KAAKk1B,kBAAkBp5B,GAAKkE,KAAK4zB,YAAYpJ,EAAK,IAAIuK,oBACtD/0B,KAAKi1B,iBAAiBn5B,GAAKkE,KAAK6zB,OAAOrJ,EAAK,IAAIuK,oBAIpD,OAAIzP,EACa,QAAXF,GAEa,KADfyP,EAAK9B,GAAQ92B,KAAK+D,KAAKk1B,kBAAmBJ,IACvBD,EAAK,MAGT,KADfA,EAAK9B,GAAQ92B,KAAK+D,KAAKi1B,iBAAkBH,IACtBD,EAAK,KAGX,QAAXzP,GAGU,KAFZyP,EAAK9B,GAAQ92B,KAAK+D,KAAKk1B,kBAAmBJ,MAO3B,KADfD,EAAK9B,GAAQ92B,KAAK+D,KAAKi1B,iBAAkBH,IAHhCD,EAIe,MAIZ,KAFZA,EAAK9B,GAAQ92B,KAAK+D,KAAKi1B,iBAAkBH,MAO1B,KADfD,EAAK9B,GAAQ92B,KAAK+D,KAAKk1B,kBAAmBJ,IAHjCD,EAIe,KAK9B,SAASM,GAAkBP,EAAWxP,EAAQE,GAC5C,IAAIxpB,EAAG0uB,EAAKuH,EAEZ,GAAI/xB,KAAKo1B,kBACP,OAAOT,GAAkB14B,KAAK+D,KAAM40B,EAAWxP,EAAQE,GAYzD,IATKtlB,KAAKg1B,eACRh1B,KAAKg1B,aAAe,GACpBh1B,KAAKi1B,iBAAmB,GACxBj1B,KAAKk1B,kBAAoB,IAMtBp5B,EAAI,EAAGA,EAAI,GAAIA,IAAK,CAevB,GAbA0uB,EAAMrF,EAAU,CAAC,IAAMrpB,IAEnBwpB,IAAWtlB,KAAKi1B,iBAAiBn5B,KACnCkE,KAAKi1B,iBAAiBn5B,GAAK,IAAI4V,OAAO,IAAM1R,KAAK6zB,OAAOrJ,EAAK,IAAI/lB,QAAQ,IAAK,IAAM,IAAK,KACzFzE,KAAKk1B,kBAAkBp5B,GAAK,IAAI4V,OAAO,IAAM1R,KAAK4zB,YAAYpJ,EAAK,IAAI/lB,QAAQ,IAAK,IAAM,IAAK,MAG5F6gB,GAAWtlB,KAAKg1B,aAAal5B,KAChCi2B,EAAQ,IAAM/xB,KAAK6zB,OAAOrJ,EAAK,IAAM,KAAOxqB,KAAK4zB,YAAYpJ,EAAK,IAClExqB,KAAKg1B,aAAal5B,GAAK,IAAI4V,OAAOqgB,EAAMttB,QAAQ,IAAK,IAAK,MAIxD6gB,GAAqB,SAAXF,GAAqBplB,KAAKi1B,iBAAiBn5B,GAAGwD,KAAKs1B,GAC/D,OAAO94B,EACF,GAAIwpB,GAAqB,QAAXF,GAAoBplB,KAAKk1B,kBAAkBp5B,GAAGwD,KAAKs1B,GACtE,OAAO94B,EACF,IAAKwpB,GAAUtlB,KAAKg1B,aAAal5B,GAAGwD,KAAKs1B,GAC9C,OAAO94B,GAMb,SAASu5B,GAAS7K,EAAKztB,GACrB,IAAIu4B,EAEJ,IAAK9K,EAAI5D,UAEP,OAAO4D,EAGT,GAAqB,kBAAVztB,EACT,GAAI,QAAQuC,KAAKvC,GACfA,EAAQ+yB,GAAM/yB,QAId,IAAK6nB,EAFL7nB,EAAQytB,EAAIoB,aAAaoI,YAAYj3B,IAGnC,OAAOytB,EASb,OAJA8K,EAAa3mB,KAAK4mB,IAAI/K,EAAI8F,OAAQC,GAAY/F,EAAIkF,OAAQ3yB,IAE1DytB,EAAI/rB,GAAG,OAAS+rB,EAAInC,OAAS,MAAQ,IAAM,SAAStrB,EAAOu4B,GAEpD9K,EAGT,SAASgL,GAAYz4B,GACnB,OAAa,MAATA,GACFs4B,GAASr1B,KAAMjD,GACfqnB,EAAMsE,aAAa1oB,MAAM,GAClBA,MAEArD,GAAIqD,KAAM,SAIrB,SAASy1B,KACP,OAAOlF,GAAYvwB,KAAK0vB,OAAQ1vB,KAAKqwB,SAGvC,SAASyD,GAAiB7B,GACxB,OAAIjyB,KAAKo1B,mBACF5Q,EAAWxkB,KAAM,iBACpB01B,GAAmBz5B,KAAK+D,MAGtBiyB,EACKjyB,KAAK21B,wBAEL31B,KAAK41B,oBAGTpR,EAAWxkB,KAAM,uBACpBA,KAAK41B,kBAAoBxB,IAGpBp0B,KAAK21B,yBAA2B1D,EAAWjyB,KAAK21B,wBAA0B31B,KAAK41B,mBAI1F,SAAS7B,GAAY9B,GACnB,OAAIjyB,KAAKo1B,mBACF5Q,EAAWxkB,KAAM,iBACpB01B,GAAmBz5B,KAAK+D,MAGtBiyB,EACKjyB,KAAK61B,mBAEL71B,KAAK81B,eAGTtR,EAAWxkB,KAAM,kBACpBA,KAAK81B,aAAezB,IAGfr0B,KAAK61B,oBAAsB5D,EAAWjyB,KAAK61B,mBAAqB71B,KAAK81B,cAIhF,SAASJ,KACP,SAASK,EAAUxwB,EAAGkU,GACpB,OAAOA,EAAE5a,OAAS0G,EAAE1G,OAGtB,IAGI/C,EACA0uB,EAJAwL,EAAc,GACdC,EAAa,GACbC,EAAc,GAIlB,IAAKp6B,EAAI,EAAGA,EAAI,GAAIA,IAElB0uB,EAAMrF,EAAU,CAAC,IAAMrpB,IACvBk6B,EAAYp3B,KAAKoB,KAAK4zB,YAAYpJ,EAAK,KACvCyL,EAAWr3B,KAAKoB,KAAK6zB,OAAOrJ,EAAK,KACjC0L,EAAYt3B,KAAKoB,KAAK6zB,OAAOrJ,EAAK,KAClC0L,EAAYt3B,KAAKoB,KAAK4zB,YAAYpJ,EAAK,KASzC,IAJAwL,EAAY10B,KAAKy0B,GACjBE,EAAW30B,KAAKy0B,GAChBG,EAAY50B,KAAKy0B,GAEZj6B,EAAI,EAAGA,EAAI,GAAIA,IAClBk6B,EAAYl6B,GAAKs2B,GAAY4D,EAAYl6B,IACzCm6B,EAAWn6B,GAAKs2B,GAAY6D,EAAWn6B,IAGzC,IAAKA,EAAI,EAAGA,EAAI,GAAIA,IAClBo6B,EAAYp6B,GAAKs2B,GAAY8D,EAAYp6B,IAG3CkE,KAAK81B,aAAe,IAAIpkB,OAAO,KAAOwkB,EAAYvyB,KAAK,KAAO,IAAK,KACnE3D,KAAK41B,kBAAoB51B,KAAK81B,aAC9B91B,KAAK61B,mBAAqB,IAAInkB,OAAO,KAAOukB,EAAWtyB,KAAK,KAAO,IAAK,KACxE3D,KAAK21B,wBAA0B,IAAIjkB,OAAO,KAAOskB,EAAYryB,KAAK,KAAO,IAAK,KAmChF,SAASwyB,GAAWzG,GAClB,OAAOD,GAAWC,GAAQ,IAAM,IAhClClE,EAAe,IAAK,EAAG,GAAG,WACxB,IAAIwC,EAAIhuB,KAAK0vB,OACb,OAAO1B,GAAK,KAAOpD,EAASoD,EAAG,GAAK,IAAMA,KAE5CxC,EAAe,EAAG,CAAC,KAAM,GAAI,GAAG,WAC9B,OAAOxrB,KAAK0vB,OAAS,OAEvBlE,EAAe,EAAG,CAAC,OAAQ,GAAI,EAAG,QAClCA,EAAe,EAAG,CAAC,QAAS,GAAI,EAAG,QACnCA,EAAe,EAAG,CAAC,SAAU,GAAG,GAAO,EAAG,QAE1CiD,GAAa,OAAQ,KAErBW,GAAgB,OAAQ,GAExB0C,GAAc,IAAKL,IACnBK,GAAc,KAAMZ,GAAWJ,IAC/BgB,GAAc,OAAQR,GAAWN,IACjCc,GAAc,QAASP,GAAWN,IAClCa,GAAc,SAAUP,GAAWN,IACnCyB,GAAc,CAAC,QAAS,UAAWM,IACnCN,GAAc,QAAQ,SAAU/sB,EAAOuZ,GACrCA,EAAM8T,IAAyB,IAAjBrtB,EAAM9G,OAAeulB,EAAMgS,kBAAkBzwB,GAASmqB,GAAMnqB,MAE5E+sB,GAAc,MAAM,SAAU/sB,EAAOuZ,GACnCA,EAAM8T,IAAQ5O,EAAMgS,kBAAkBzwB,MAExC+sB,GAAc,KAAK,SAAU/sB,EAAOuZ,GAClCA,EAAM8T,IAAQqD,SAAS1wB,EAAO,OAQhCye,EAAMgS,kBAAoB,SAAUzwB,GAClC,OAAOmqB,GAAMnqB,IAAUmqB,GAAMnqB,GAAS,GAAK,KAAO,MAIpD,IAAI2wB,GAAapG,GAAW,YAAY,GAExC,SAASqG,KACP,OAAO9G,GAAWzvB,KAAK0vB,QAGzB,SAAS8G,GAAWxI,EAAG9xB,EAAGE,EAAGqxB,EAAGK,EAAGjwB,EAAG44B,GAGpC,IAAInG,EAaJ,OAXItC,EAAI,KAAOA,GAAK,GAElBsC,EAAO,IAAIxL,KAAKkJ,EAAI,IAAK9xB,EAAGE,EAAGqxB,EAAGK,EAAGjwB,EAAG44B,GAEpCxG,SAASK,EAAKoG,gBAChBpG,EAAKqG,YAAY3I,IAGnBsC,EAAO,IAAIxL,KAAKkJ,EAAG9xB,EAAGE,EAAGqxB,EAAGK,EAAGjwB,EAAG44B,GAG7BnG,EAGT,SAASsG,GAAc5I,GACrB,IAAIsC,EAAMrY,EAeV,OAbI+V,EAAI,KAAOA,GAAK,IAClB/V,EAAOja,MAAMN,UAAUyB,MAAMlD,KAAKsd,YAE7B,GAAKyU,EAAI,IACdsC,EAAO,IAAIxL,KAAKA,KAAK+R,IAAIxS,MAAM,KAAMpM,IAEjCgY,SAASK,EAAKwG,mBAChBxG,EAAKyG,eAAe/I,IAGtBsC,EAAO,IAAIxL,KAAKA,KAAK+R,IAAIxS,MAAM,KAAM9K,YAGhC+W,EAIT,SAAS0G,GAAgBtH,EAAMuH,EAAKC,GAClC,IACAC,EAAM,EAAIF,EAAMC,EAGhB,QADS,EAAIN,GAAclH,EAAM,EAAGyH,GAAKC,YAAcH,GAAO,EAC9CE,EAAM,EAIxB,SAASE,GAAmB3H,EAAM4H,EAAMC,EAASN,EAAKC,GACpD,IAGIM,EACAC,EAFAC,EAAY,EAAI,GAAKJ,EAAO,IAFZ,EAAIC,EAAUN,GAAO,EACxBD,GAAgBtH,EAAMuH,EAAKC,GAgB5C,OAXIQ,GAAa,EAEfD,EAAetB,GADfqB,EAAU9H,EAAO,GACoBgI,EAC5BA,EAAYvB,GAAWzG,IAChC8H,EAAU9H,EAAO,EACjB+H,EAAeC,EAAYvB,GAAWzG,KAEtC8H,EAAU9H,EACV+H,EAAeC,GAGV,CACLhI,KAAM8H,EACNE,UAAWD,GAIf,SAASE,GAAWnN,EAAKyM,EAAKC,GAC5B,IAEIU,EACAJ,EAHAK,EAAab,GAAgBxM,EAAIkF,OAAQuH,EAAKC,GAC9CI,EAAO3oB,KAAKkhB,OAAOrF,EAAIkN,YAAcG,EAAa,GAAK,GAAK,EAehE,OAXIP,EAAO,EAETM,EAAUN,EAAOQ,GADjBN,EAAUhN,EAAIkF,OAAS,EACeuH,EAAKC,GAClCI,EAAOQ,GAAYtN,EAAIkF,OAAQuH,EAAKC,IAC7CU,EAAUN,EAAOQ,GAAYtN,EAAIkF,OAAQuH,EAAKC,GAC9CM,EAAUhN,EAAIkF,OAAS,IAEvB8H,EAAUhN,EAAIkF,OACdkI,EAAUN,GAGL,CACLA,KAAMM,EACNlI,KAAM8H,GAIV,SAASM,GAAYpI,EAAMuH,EAAKC,GAC9B,IAAIW,EAAab,GAAgBtH,EAAMuH,EAAKC,GACxCa,EAAiBf,GAAgBtH,EAAO,EAAGuH,EAAKC,GACpD,OAAQf,GAAWzG,GAAQmI,EAAaE,GAAkB,EAsB5D,SAASC,GAAWxN,GAClB,OAAOmN,GAAWnN,EAAKxqB,KAAKi4B,MAAMhB,IAAKj3B,KAAKi4B,MAAMf,KAAKI,KAnBzD9L,EAAe,IAAK,CAAC,KAAM,GAAI,KAAM,QACrCA,EAAe,IAAK,CAAC,KAAM,GAAI,KAAM,WAErCiD,GAAa,OAAQ,KACrBA,GAAa,UAAW,KAExBW,GAAgB,OAAQ,GACxBA,GAAgB,UAAW,GAE3B0C,GAAc,IAAKZ,IACnBY,GAAc,KAAMZ,GAAWJ,IAC/BgB,GAAc,IAAKZ,IACnBY,GAAc,KAAMZ,GAAWJ,IAC/B8B,GAAkB,CAAC,IAAK,KAAM,IAAK,OAAO,SAAUjtB,EAAO2xB,EAAM7O,EAAQpa,GACvEipB,EAAKjpB,EAAM8c,OAAO,EAAG,IAAM2E,GAAMnqB,MAQnC,IAAIuyB,GAAoB,CACtBjB,IAAK,EAELC,IAAK,GAIP,SAASiB,KACP,OAAOn4B,KAAKi4B,MAAMhB,IAGpB,SAASmB,KACP,OAAOp4B,KAAKi4B,MAAMf,IAIpB,SAASmB,GAAW1yB,GAClB,IAAI2xB,EAAOt3B,KAAK4rB,aAAa0L,KAAKt3B,MAClC,OAAgB,MAAT2F,EAAgB2xB,EAAOt3B,KAAKS,IAAqB,GAAhBkF,EAAQ2xB,GAAW,KAG7D,SAASgB,GAAc3yB,GACrB,IAAI2xB,EAAOK,GAAW33B,KAAM,EAAG,GAAGs3B,KAClC,OAAgB,MAAT3xB,EAAgB2xB,EAAOt3B,KAAKS,IAAqB,GAAhBkF,EAAQ2xB,GAAW,KAmD7D,SAASiB,GAAa5yB,EAAO0f,GAC3B,MAAqB,kBAAV1f,EACFA,EAGJshB,MAAMthB,GAMU,kBAFrBA,EAAQ0f,EAAOmT,cAAc7yB,IAGpBA,EAGF,KATE0wB,SAAS1wB,EAAO,IAY3B,SAAS8yB,GAAgB9yB,EAAO0f,GAC9B,MAAqB,kBAAV1f,EACF0f,EAAOmT,cAAc7yB,GAAS,GAAK,EAGrCshB,MAAMthB,GAAS,KAAOA,EAI/B,SAAS+yB,GAAcC,EAAIp7B,GACzB,OAAOo7B,EAAGx5B,MAAM5B,EAAG,GAAGmF,OAAOi2B,EAAGx5B,MAAM,EAAG5B,IA3E3CiuB,EAAe,IAAK,EAAG,KAAM,OAC7BA,EAAe,KAAM,EAAG,GAAG,SAAUpG,GACnC,OAAOplB,KAAK4rB,aAAagN,YAAY54B,KAAMolB,MAE7CoG,EAAe,MAAO,EAAG,GAAG,SAAUpG,GACpC,OAAOplB,KAAK4rB,aAAaiN,cAAc74B,KAAMolB,MAE/CoG,EAAe,OAAQ,EAAG,GAAG,SAAUpG,GACrC,OAAOplB,KAAK4rB,aAAakN,SAAS94B,KAAMolB,MAE1CoG,EAAe,IAAK,EAAG,EAAG,WAC1BA,EAAe,IAAK,EAAG,EAAG,cAE1BiD,GAAa,MAAO,KACpBA,GAAa,UAAW,KACxBA,GAAa,aAAc,KAE3BW,GAAgB,MAAO,IACvBA,GAAgB,UAAW,IAC3BA,GAAgB,aAAc,IAE9B0C,GAAc,IAAKZ,IACnBY,GAAc,IAAKZ,IACnBY,GAAc,IAAKZ,IACnBY,GAAc,MAAM,SAAUG,EAAU5M,GACtC,OAAOA,EAAO0T,iBAAiB9G,MAEjCH,GAAc,OAAO,SAAUG,EAAU5M,GACvC,OAAOA,EAAO2T,mBAAmB/G,MAEnCH,GAAc,QAAQ,SAAUG,EAAU5M,GACxC,OAAOA,EAAO4T,cAAchH,MAE9BW,GAAkB,CAAC,KAAM,MAAO,SAAS,SAAUjtB,EAAO2xB,EAAM7O,EAAQpa,GACtE,IAAIkpB,EAAU9O,EAAOF,QAAQiQ,cAAc7yB,EAAO0I,EAAOoa,EAAOrB,SAGjD,MAAXmQ,EACFD,EAAKl7B,EAAIm7B,EAET7Q,EAAgB+B,GAAQtB,eAAiBxhB,KAG7CitB,GAAkB,CAAC,IAAK,IAAK,MAAM,SAAUjtB,EAAO2xB,EAAM7O,EAAQpa,GAChEipB,EAAKjpB,GAASyhB,GAAMnqB,MAkCtB,IAAIuzB,GAAwB,2DAA2D9pB,MAAM,KACzF+pB,GAA6B,8BAA8B/pB,MAAM,KACjEgqB,GAA2B,uBAAuBhqB,MAAM,KACxDiqB,GAAuBxH,GACvByH,GAA4BzH,GAC5B0H,GAA0B1H,GAE9B,SAAS2H,GAAet9B,EAAGkpB,GACzB,IAAI0T,EAAW76B,EAAQ+B,KAAKy5B,WAAaz5B,KAAKy5B,UAAYz5B,KAAKy5B,UAAUv9B,IAAW,IAANA,GAAc8D,KAAKy5B,UAAUjF,SAASl1B,KAAK8lB,GAAU,SAAW,cAC9I,OAAa,IAANlpB,EAAaw8B,GAAcI,EAAU94B,KAAKi4B,MAAMhB,KAAO/6B,EAAI48B,EAAS58B,EAAEw9B,OAASZ,EAGxF,SAASa,GAAoBz9B,GAC3B,OAAa,IAANA,EAAaw8B,GAAc14B,KAAK45B,eAAgB55B,KAAKi4B,MAAMhB,KAAO/6B,EAAI8D,KAAK45B,eAAe19B,EAAEw9B,OAAS15B,KAAK45B,eAGnH,SAASC,GAAkB39B,GACzB,OAAa,IAANA,EAAaw8B,GAAc14B,KAAK85B,aAAc95B,KAAKi4B,MAAMhB,KAAO/6B,EAAI8D,KAAK85B,aAAa59B,EAAEw9B,OAAS15B,KAAK85B,aAG/G,SAASC,GAAoBC,EAAa5U,EAAQE,GAChD,IAAIxpB,EACA+4B,EACArK,EACAsK,EAAMkF,EAAYjF,oBAEtB,IAAK/0B,KAAKi6B,eAKR,IAJAj6B,KAAKi6B,eAAiB,GACtBj6B,KAAKk6B,oBAAsB,GAC3Bl6B,KAAKm6B,kBAAoB,GAEpBr+B,EAAI,EAAGA,EAAI,IAAKA,EACnB0uB,EAAMrF,EAAU,CAAC,IAAM,IAAIuU,IAAI59B,GAC/BkE,KAAKm6B,kBAAkBr+B,GAAKkE,KAAK44B,YAAYpO,EAAK,IAAIuK,oBACtD/0B,KAAKk6B,oBAAoBp+B,GAAKkE,KAAK64B,cAAcrO,EAAK,IAAIuK,oBAC1D/0B,KAAKi6B,eAAen+B,GAAKkE,KAAK84B,SAAStO,EAAK,IAAIuK,oBAIpD,OAAIzP,EACa,SAAXF,GAEa,KADfyP,EAAK9B,GAAQ92B,KAAK+D,KAAKi6B,eAAgBnF,IACpBD,EAAK,KACJ,QAAXzP,GAEM,KADfyP,EAAK9B,GAAQ92B,KAAK+D,KAAKk6B,oBAAqBpF,IACzBD,EAAK,MAGT,KADfA,EAAK9B,GAAQ92B,KAAK+D,KAAKm6B,kBAAmBrF,IACvBD,EAAK,KAGX,SAAXzP,GAGU,KAFZyP,EAAK9B,GAAQ92B,KAAK+D,KAAKi6B,eAAgBnF,MAQ3B,KAFZD,EAAK9B,GAAQ92B,KAAK+D,KAAKk6B,oBAAqBpF,MAO7B,KADfD,EAAK9B,GAAQ92B,KAAK+D,KAAKm6B,kBAAmBrF,IATjCD,EAUe,KACJ,QAAXzP,GAGG,KAFZyP,EAAK9B,GAAQ92B,KAAK+D,KAAKk6B,oBAAqBpF,MAQhC,KAFZD,EAAK9B,GAAQ92B,KAAK+D,KAAKi6B,eAAgBnF,MAOxB,KADfD,EAAK9B,GAAQ92B,KAAK+D,KAAKm6B,kBAAmBrF,IATjCD,EAUe,MAIZ,KAFZA,EAAK9B,GAAQ92B,KAAK+D,KAAKm6B,kBAAmBrF,MAQ9B,KAFZD,EAAK9B,GAAQ92B,KAAK+D,KAAKi6B,eAAgBnF,MAOxB,KADfD,EAAK9B,GAAQ92B,KAAK+D,KAAKk6B,oBAAqBpF,IATnCD,EAUe,KAK9B,SAASuF,GAAoBJ,EAAa5U,EAAQE,GAChD,IAAIxpB,EAAG0uB,EAAKuH,EAEZ,GAAI/xB,KAAKq6B,oBACP,OAAON,GAAoB99B,KAAK+D,KAAMg6B,EAAa5U,EAAQE,GAU7D,IAPKtlB,KAAKi6B,iBACRj6B,KAAKi6B,eAAiB,GACtBj6B,KAAKm6B,kBAAoB,GACzBn6B,KAAKk6B,oBAAsB,GAC3Bl6B,KAAKs6B,mBAAqB,IAGvBx+B,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAgBtB,GAdA0uB,EAAMrF,EAAU,CAAC,IAAM,IAAIuU,IAAI59B,GAE3BwpB,IAAWtlB,KAAKs6B,mBAAmBx+B,KACrCkE,KAAKs6B,mBAAmBx+B,GAAK,IAAI4V,OAAO,IAAM1R,KAAK84B,SAAStO,EAAK,IAAI/lB,QAAQ,IAAK,QAAU,IAAK,KACjGzE,KAAKk6B,oBAAoBp+B,GAAK,IAAI4V,OAAO,IAAM1R,KAAK64B,cAAcrO,EAAK,IAAI/lB,QAAQ,IAAK,QAAU,IAAK,KACvGzE,KAAKm6B,kBAAkBr+B,GAAK,IAAI4V,OAAO,IAAM1R,KAAK44B,YAAYpO,EAAK,IAAI/lB,QAAQ,IAAK,QAAU,IAAK,MAGhGzE,KAAKi6B,eAAen+B,KACvBi2B,EAAQ,IAAM/xB,KAAK84B,SAAStO,EAAK,IAAM,KAAOxqB,KAAK64B,cAAcrO,EAAK,IAAM,KAAOxqB,KAAK44B,YAAYpO,EAAK,IACzGxqB,KAAKi6B,eAAen+B,GAAK,IAAI4V,OAAOqgB,EAAMttB,QAAQ,IAAK,IAAK,MAI1D6gB,GAAqB,SAAXF,GAAqBplB,KAAKs6B,mBAAmBx+B,GAAGwD,KAAK06B,GACjE,OAAOl+B,EACF,GAAIwpB,GAAqB,QAAXF,GAAoBplB,KAAKk6B,oBAAoBp+B,GAAGwD,KAAK06B,GACxE,OAAOl+B,EACF,GAAIwpB,GAAqB,OAAXF,GAAmBplB,KAAKm6B,kBAAkBr+B,GAAGwD,KAAK06B,GACrE,OAAOl+B,EACF,IAAKwpB,GAAUtlB,KAAKi6B,eAAen+B,GAAGwD,KAAK06B,GAChD,OAAOl+B,GAMb,SAASy+B,GAAgB50B,GACvB,IAAK3F,KAAK4mB,UACR,OAAgB,MAATjhB,EAAgB3F,KAAOwnB,IAGhC,IAAIkS,EAAM15B,KAAKqoB,OAASroB,KAAKvB,GAAG24B,YAAcp3B,KAAKvB,GAAG+7B,SAEtD,OAAa,MAAT70B,GACFA,EAAQ4yB,GAAa5yB,EAAO3F,KAAK4rB,cAC1B5rB,KAAKS,IAAIkF,EAAQ+zB,EAAK,MAEtBA,EAIX,SAASe,GAAsB90B,GAC7B,IAAK3F,KAAK4mB,UACR,OAAgB,MAATjhB,EAAgB3F,KAAOwnB,IAGhC,IAAI+P,GAAWv3B,KAAK05B,MAAQ,EAAI15B,KAAK4rB,aAAaqM,MAAMhB,KAAO,EAC/D,OAAgB,MAATtxB,EAAgB4xB,EAAUv3B,KAAKS,IAAIkF,EAAQ4xB,EAAS,KAG7D,SAASmD,GAAmB/0B,GAC1B,IAAK3F,KAAK4mB,UACR,OAAgB,MAATjhB,EAAgB3F,KAAOwnB,IAMhC,GAAa,MAAT7hB,EAAe,CACjB,IAAI4xB,EAAUkB,GAAgB9yB,EAAO3F,KAAK4rB,cAC1C,OAAO5rB,KAAK05B,IAAI15B,KAAK05B,MAAQ,EAAInC,EAAUA,EAAU,GAErD,OAAOv3B,KAAK05B,OAAS,EAIzB,SAAST,GAAchH,GACrB,OAAIjyB,KAAKq6B,qBACF7V,EAAWxkB,KAAM,mBACpB26B,GAAqB1+B,KAAK+D,MAGxBiyB,EACKjyB,KAAK46B,qBAEL56B,KAAK66B,iBAGTrW,EAAWxkB,KAAM,oBACpBA,KAAK66B,eAAiBxB,IAGjBr5B,KAAK46B,sBAAwB3I,EAAWjyB,KAAK46B,qBAAuB56B,KAAK66B,gBAIpF,SAAS7B,GAAmB/G,GAC1B,OAAIjyB,KAAKq6B,qBACF7V,EAAWxkB,KAAM,mBACpB26B,GAAqB1+B,KAAK+D,MAGxBiyB,EACKjyB,KAAK86B,0BAEL96B,KAAK+6B,sBAGTvW,EAAWxkB,KAAM,yBACpBA,KAAK+6B,oBAAsBzB,IAGtBt5B,KAAK86B,2BAA6B7I,EAAWjyB,KAAK86B,0BAA4B96B,KAAK+6B,qBAI9F,SAAShC,GAAiB9G,GACxB,OAAIjyB,KAAKq6B,qBACF7V,EAAWxkB,KAAM,mBACpB26B,GAAqB1+B,KAAK+D,MAGxBiyB,EACKjyB,KAAKg7B,wBAELh7B,KAAKi7B,oBAGTzW,EAAWxkB,KAAM,uBACpBA,KAAKi7B,kBAAoB1B,IAGpBv5B,KAAKg7B,yBAA2B/I,EAAWjyB,KAAKg7B,wBAA0Bh7B,KAAKi7B,mBAI1F,SAASN,KACP,SAAS5E,EAAUxwB,EAAGkU,GACpB,OAAOA,EAAE5a,OAAS0G,EAAE1G,OAGtB,IAII/C,EACA0uB,EACA0Q,EACAC,EACAC,EARAC,EAAY,GACZrF,EAAc,GACdC,EAAa,GACbC,EAAc,GAOlB,IAAKp6B,EAAI,EAAGA,EAAI,EAAGA,IAEjB0uB,EAAMrF,EAAU,CAAC,IAAM,IAAIuU,IAAI59B,GAC/Bo/B,EAAO9I,GAAYpyB,KAAK44B,YAAYpO,EAAK,KACzC2Q,EAAS/I,GAAYpyB,KAAK64B,cAAcrO,EAAK,KAC7C4Q,EAAQhJ,GAAYpyB,KAAK84B,SAAStO,EAAK,KACvC6Q,EAAUz8B,KAAKs8B,GACflF,EAAYp3B,KAAKu8B,GACjBlF,EAAWr3B,KAAKw8B,GAChBlF,EAAYt3B,KAAKs8B,GACjBhF,EAAYt3B,KAAKu8B,GACjBjF,EAAYt3B,KAAKw8B,GAKnBC,EAAU/5B,KAAKy0B,GACfC,EAAY10B,KAAKy0B,GACjBE,EAAW30B,KAAKy0B,GAChBG,EAAY50B,KAAKy0B,GACjB/1B,KAAK66B,eAAiB,IAAInpB,OAAO,KAAOwkB,EAAYvyB,KAAK,KAAO,IAAK,KACrE3D,KAAK+6B,oBAAsB/6B,KAAK66B,eAChC76B,KAAKi7B,kBAAoBj7B,KAAK66B,eAC9B76B,KAAK46B,qBAAuB,IAAIlpB,OAAO,KAAOukB,EAAWtyB,KAAK,KAAO,IAAK,KAC1E3D,KAAK86B,0BAA4B,IAAIppB,OAAO,KAAOskB,EAAYryB,KAAK,KAAO,IAAK,KAChF3D,KAAKg7B,wBAA0B,IAAItpB,OAAO,KAAO2pB,EAAU13B,KAAK,KAAO,IAAK,KAI9E,SAAS23B,KACP,OAAOt7B,KAAKu7B,QAAU,IAAM,GAG9B,SAASC,KACP,OAAOx7B,KAAKu7B,SAAW,GAmBzB,SAAShV,GAASlY,EAAOotB,GACvBjQ,EAAend,EAAO,EAAG,GAAG,WAC1B,OAAOrO,KAAK4rB,aAAarF,SAASvmB,KAAKu7B,QAASv7B,KAAK07B,UAAWD,MAWpE,SAASE,GAAc1J,EAAU5M,GAC/B,OAAOA,EAAOuW,eAuDhB,SAASC,GAAWl2B,GAGlB,MAAgD,OAAxCA,EAAQ,IAAIV,cAAcF,OAAO,GAxF3CymB,EAAe,IAAK,CAAC,KAAM,GAAI,EAAG,QAClCA,EAAe,IAAK,CAAC,KAAM,GAAI,EAAG8P,IAClC9P,EAAe,IAAK,CAAC,KAAM,GAAI,EAAGgQ,IAClChQ,EAAe,MAAO,EAAG,GAAG,WAC1B,MAAO,GAAK8P,GAAQjX,MAAMrkB,MAAQ4qB,EAAS5qB,KAAK07B,UAAW,MAE7DlQ,EAAe,QAAS,EAAG,GAAG,WAC5B,MAAO,GAAK8P,GAAQjX,MAAMrkB,MAAQ4qB,EAAS5qB,KAAK07B,UAAW,GAAK9Q,EAAS5qB,KAAK87B,UAAW,MAE3FtQ,EAAe,MAAO,EAAG,GAAG,WAC1B,MAAO,GAAKxrB,KAAKu7B,QAAU3Q,EAAS5qB,KAAK07B,UAAW,MAEtDlQ,EAAe,QAAS,EAAG,GAAG,WAC5B,MAAO,GAAKxrB,KAAKu7B,QAAU3Q,EAAS5qB,KAAK07B,UAAW,GAAK9Q,EAAS5qB,KAAK87B,UAAW,MASpFvV,GAAS,KAAK,GACdA,GAAS,KAAK,GAEdkI,GAAa,OAAQ,KAErBW,GAAgB,OAAQ,IAMxB0C,GAAc,IAAK6J,IACnB7J,GAAc,IAAK6J,IACnB7J,GAAc,IAAKZ,IACnBY,GAAc,IAAKZ,IACnBY,GAAc,IAAKZ,IACnBY,GAAc,KAAMZ,GAAWJ,IAC/BgB,GAAc,KAAMZ,GAAWJ,IAC/BgB,GAAc,KAAMZ,GAAWJ,IAC/BgB,GAAc,MAAOX,IACrBW,GAAc,QAASV,IACvBU,GAAc,MAAOX,IACrBW,GAAc,QAASV,IACvBsB,GAAc,CAAC,IAAK,MAAOS,IAC3BT,GAAc,CAAC,IAAK,OAAO,SAAU/sB,EAAOuZ,EAAOuJ,GACjD,IAAIsT,EAASjM,GAAMnqB,GACnBuZ,EAAMiU,IAAmB,KAAX4I,EAAgB,EAAIA,KAEpCrJ,GAAc,CAAC,IAAK,MAAM,SAAU/sB,EAAOuZ,EAAOuJ,GAChDA,EAAOuT,MAAQvT,EAAOF,QAAQ0T,KAAKt2B,GACnC8iB,EAAOyT,UAAYv2B,KAErB+sB,GAAc,CAAC,IAAK,OAAO,SAAU/sB,EAAOuZ,EAAOuJ,GACjDvJ,EAAMiU,IAAQrD,GAAMnqB,GACpB+gB,EAAgB+B,GAAQpB,SAAU,KAEpCqL,GAAc,OAAO,SAAU/sB,EAAOuZ,EAAOuJ,GAC3C,IAAI0T,EAAMx2B,EAAM9G,OAAS,EACzBqgB,EAAMiU,IAAQrD,GAAMnqB,EAAMwlB,OAAO,EAAGgR,IACpCjd,EAAMkU,IAAUtD,GAAMnqB,EAAMwlB,OAAOgR,IACnCzV,EAAgB+B,GAAQpB,SAAU,KAEpCqL,GAAc,SAAS,SAAU/sB,EAAOuZ,EAAOuJ,GAC7C,IAAI2T,EAAOz2B,EAAM9G,OAAS,EACtBw9B,EAAO12B,EAAM9G,OAAS,EAC1BqgB,EAAMiU,IAAQrD,GAAMnqB,EAAMwlB,OAAO,EAAGiR,IACpCld,EAAMkU,IAAUtD,GAAMnqB,EAAMwlB,OAAOiR,EAAM,IACzCld,EAAMmU,IAAUvD,GAAMnqB,EAAMwlB,OAAOkR,IACnC3V,EAAgB+B,GAAQpB,SAAU,KAEpCqL,GAAc,OAAO,SAAU/sB,EAAOuZ,EAAOuJ,GAC3C,IAAI0T,EAAMx2B,EAAM9G,OAAS,EACzBqgB,EAAMiU,IAAQrD,GAAMnqB,EAAMwlB,OAAO,EAAGgR,IACpCjd,EAAMkU,IAAUtD,GAAMnqB,EAAMwlB,OAAOgR,OAErCzJ,GAAc,SAAS,SAAU/sB,EAAOuZ,EAAOuJ,GAC7C,IAAI2T,EAAOz2B,EAAM9G,OAAS,EACtBw9B,EAAO12B,EAAM9G,OAAS,EAC1BqgB,EAAMiU,IAAQrD,GAAMnqB,EAAMwlB,OAAO,EAAGiR,IACpCld,EAAMkU,IAAUtD,GAAMnqB,EAAMwlB,OAAOiR,EAAM,IACzCld,EAAMmU,IAAUvD,GAAMnqB,EAAMwlB,OAAOkR,OASrC,IAAIC,GAA6B,gBAKjCC,GAAarM,GAAW,SAAS,GAEjC,SAASsM,GAAejB,EAAOG,EAASe,GACtC,OAAIlB,EAAQ,GACHkB,EAAU,KAAO,KAEjBA,EAAU,KAAO,KAI5B,IAkBIC,GAlBAC,GAAa,CACfpS,SAAUP,EACVmC,eAAgBE,EAChBJ,YAAac,EACbrB,QAASuB,EACT2P,uBAAwB1P,EACxBgB,aAAcd,EACdyG,OAAQI,GACRL,YAAaM,GACboD,KAAMY,GACNY,SAAUI,GACVN,YAAaQ,GACbP,cAAeM,GACf0D,cAAeP,IAGbQ,GAAU,GACVC,GAAiB,GAGrB,SAASC,GAAaC,EAAMt9B,GAC1B,IAAI7D,EACAohC,EAAOvuB,KAAK4mB,IAAI0H,EAAKp+B,OAAQc,EAAKd,QAEtC,IAAK/C,EAAI,EAAGA,EAAIohC,EAAMphC,GAAK,EACzB,GAAImhC,EAAKnhC,KAAO6D,EAAK7D,GACnB,OAAOA,EAIX,OAAOohC,EAGT,SAASC,GAAgB9/B,GACvB,OAAOA,EAAMA,EAAI4H,cAAcR,QAAQ,IAAK,KAAOpH,EAMrD,SAAS+/B,GAAaC,GAOpB,IANA,IACIC,EACA5+B,EACA2mB,EACAjW,EAJAtT,EAAI,EAMDA,EAAIuhC,EAAMx+B,QAAQ,CAMvB,IAJAy+B,GADAluB,EAAQ+tB,GAAgBE,EAAMvhC,IAAIsT,MAAM,MAC9BvQ,OAEVH,GADAA,EAAOy+B,GAAgBE,EAAMvhC,EAAI,KACnB4C,EAAK0Q,MAAM,KAAO,KAEzBkuB,EAAI,GAAG,CAGZ,GAFAjY,EAASkY,GAAWnuB,EAAMjQ,MAAM,EAAGm+B,GAAG35B,KAAK,MAGzC,OAAO0hB,EAGT,GAAI3mB,GAAQA,EAAKG,QAAUy+B,GAAKN,GAAa5tB,EAAO1Q,IAAS4+B,EAAI,EAE/D,MAGFA,IAGFxhC,IAGF,OAAO4gC,GAGT,SAASc,GAAiBnhC,GAExB,OAAoC,MAA7BA,EAAK6O,MAAM,eAGpB,SAASqyB,GAAWlhC,GAClB,IAAIohC,EAAY,KAGhB,QAAsBt4B,IAAlB23B,GAAQzgC,IAAyC,qBAAXR,GAA0BA,GAAUA,EAAOD,SAAW4hC,GAAiBnhC,GAC/G,IACEohC,EAAYf,GAAagB,MAEzB,OAAe,KAAcrhC,GAC7BshC,GAAmBF,GACnB,MAAO73B,GAGPk3B,GAAQzgC,GAAQ,KAIpB,OAAOygC,GAAQzgC,GAMjB,SAASshC,GAAmBtgC,EAAKiF,GAC/B,IAAI4Q,EAoBJ,OAlBI7V,KAEA6V,EADEyR,EAAYriB,GACPs7B,GAAUvgC,GAEVwgC,GAAaxgC,EAAKiF,IAKzBo6B,GAAexpB,EAEQ,qBAAZmL,SAA2BA,QAAQxD,MAE5CwD,QAAQxD,KAAK,UAAYxd,EAAM,2CAK9Bq/B,GAAagB,MAGtB,SAASG,GAAaxhC,EAAMosB,GAC1B,GAAe,OAAXA,EAAiB,CACnB,IAAIpD,EACAwE,EAAe8S,GAGnB,GAFAlU,EAAOqV,KAAOzhC,EAEO,MAAjBygC,GAAQzgC,GACV+sB,EAAgB,uBAAwB,2OACxCS,EAAeiT,GAAQzgC,GAAMktB,aACxB,GAA2B,MAAvBd,EAAOsV,aAChB,GAAoC,MAAhCjB,GAAQrU,EAAOsV,cACjBlU,EAAeiT,GAAQrU,EAAOsV,cAAcxU,YACvC,CAGL,GAAc,OAFdlE,EAASkY,GAAW9U,EAAOsV,eAazB,OARKhB,GAAetU,EAAOsV,gBACzBhB,GAAetU,EAAOsV,cAAgB,IAGxChB,GAAetU,EAAOsV,cAAcn/B,KAAK,CACvCvC,KAAMA,EACNosB,OAAQA,IAEH,KAVPoB,EAAexE,EAAOkE,QA2B5B,OAZAuT,GAAQzgC,GAAQ,IAAI0tB,EAAOH,EAAaC,EAAcpB,IAElDsU,GAAe1gC,IACjB0gC,GAAe1gC,GAAM8F,SAAQ,SAAUuxB,GACrCmK,GAAanK,EAAEr3B,KAAMq3B,EAAEjL,WAO3BkV,GAAmBthC,GACZygC,GAAQzgC,GAIf,cADOygC,GAAQzgC,GACR,KAIX,SAAS2hC,GAAa3hC,EAAMosB,GAC1B,GAAc,MAAVA,EAAgB,CAClB,IAAIpD,EACA4Y,EACApU,EAAe8S,GAEE,MAAjBG,GAAQzgC,IAA+C,MAA9BygC,GAAQzgC,GAAM0hC,aAEzCjB,GAAQzgC,GAAMmH,IAAIomB,EAAakT,GAAQzgC,GAAMktB,QAASd,KAKrC,OAFjBwV,EAAYV,GAAWlhC,MAGrBwtB,EAAeoU,EAAU1U,SAG3Bd,EAASmB,EAAaC,EAAcpB,GAEnB,MAAbwV,IAIFxV,EAAOqV,KAAOzhC,IAGhBgpB,EAAS,IAAI0E,EAAOtB,IACbsV,aAAejB,GAAQzgC,GAC9BygC,GAAQzgC,GAAQgpB,GAIlBsY,GAAmBthC,QAGE,MAAjBygC,GAAQzgC,KACwB,MAA9BygC,GAAQzgC,GAAM0hC,cAChBjB,GAAQzgC,GAAQygC,GAAQzgC,GAAM0hC,aAE1B1hC,IAASshC,MACXA,GAAmBthC,IAEK,MAAjBygC,GAAQzgC,WACVygC,GAAQzgC,IAKrB,OAAOygC,GAAQzgC,GAIjB,SAASuhC,GAAUvgC,GACjB,IAAIgoB,EAMJ,GAJIhoB,GAAOA,EAAIkrB,SAAWlrB,EAAIkrB,QAAQmV,QACpCrgC,EAAMA,EAAIkrB,QAAQmV,QAGfrgC,EACH,OAAOq/B,GAGT,IAAKz+B,EAAQZ,GAAM,CAIjB,GAFAgoB,EAASkY,GAAWlgC,GAGlB,OAAOgoB,EAGThoB,EAAM,CAACA,GAGT,OAAO+/B,GAAa//B,GAGtB,SAAS6gC,KACP,OAAOx6B,EAAKo5B,IAGd,SAASqB,GAAcjiC,GACrB,IAAI2pB,EACAtgB,EAAIrJ,EAAE6X,GAoBV,OAlBIxO,IAAsC,IAAjCmhB,EAAgBxqB,GAAG2pB,WAC1BA,EAAWtgB,EAAE0tB,IAAS,GAAK1tB,EAAE0tB,IAAS,GAAKA,GAAQ1tB,EAAE2tB,IAAQ,GAAK3tB,EAAE2tB,IAAQ3C,GAAYhrB,EAAEytB,IAAOztB,EAAE0tB,KAAUC,GAAO3tB,EAAE4tB,IAAQ,GAAK5tB,EAAE4tB,IAAQ,IAAkB,KAAZ5tB,EAAE4tB,MAA+B,IAAd5tB,EAAE6tB,KAA+B,IAAd7tB,EAAE8tB,KAAoC,IAAnB9tB,EAAE+tB,KAAsBH,GAAO5tB,EAAE6tB,IAAU,GAAK7tB,EAAE6tB,IAAU,GAAKA,GAAS7tB,EAAE8tB,IAAU,GAAK9tB,EAAE8tB,IAAU,GAAKA,GAAS9tB,EAAE+tB,IAAe,GAAK/tB,EAAE+tB,IAAe,IAAMA,IAAe,EAEzX5M,EAAgBxqB,GAAGkiC,qBAAuBvY,EAAWmN,IAAQnN,EAAWqN,MAC1ErN,EAAWqN,IAGTxM,EAAgBxqB,GAAGmiC,iBAAgC,IAAdxY,IACvCA,EAAW0N,IAGT7M,EAAgBxqB,GAAGoiC,mBAAkC,IAAdzY,IACzCA,EAAW2N,IAGb9M,EAAgBxqB,GAAG2pB,SAAWA,GAGzB3pB,EAKT,IAAIqiC,GAAmB,iJACnBC,GAAgB,6IAChBC,GAAU,wBACVC,GAAW,CAAC,CAAC,eAAgB,uBAAwB,CAAC,aAAc,mBAAoB,CAAC,eAAgB,kBAAmB,CAAC,aAAc,eAAe,GAAQ,CAAC,WAAY,eAAgB,CAAC,UAAW,cAAc,GAAQ,CAAC,aAAc,cAAe,CAAC,WAAY,SAAU,CAAC,aAAc,eAAgB,CAAC,YAAa,eAAe,GAAQ,CAAC,UAAW,SAAU,CAAC,SAAU,SAAS,GAAQ,CAAC,OAAQ,SAAS,IAElaC,GAAW,CAAC,CAAC,gBAAiB,uBAAwB,CAAC,gBAAiB,sBAAuB,CAAC,WAAY,kBAAmB,CAAC,QAAS,aAAc,CAAC,cAAe,qBAAsB,CAAC,cAAe,oBAAqB,CAAC,SAAU,gBAAiB,CAAC,OAAQ,YAAa,CAAC,KAAM,SACvRC,GAAkB,qBAEtBpY,GAAU,0LACNqY,GAAa,CACfC,GAAI,EACJC,IAAK,EACLC,KAAK,IACLC,KAAK,IACLC,KAAK,IACLC,KAAK,IACLC,KAAK,IACLC,KAAK,IACLC,KAAK,IACLC,KAAK,KAGP,SAASC,GAAc/W,GACrB,IAAI3sB,EACAC,EAGA0jC,EACAC,EACAC,EACAC,EALArd,EAASkG,EAAOtqB,GAChB+M,EAAQqzB,GAAiBsB,KAAKtd,IAAWic,GAAcqB,KAAKtd,GAK5Dud,EAAcpB,GAAS7/B,OACvBkhC,EAAcpB,GAAS9/B,OAE3B,GAAIqM,EAAO,CAGT,IAFAwb,EAAgB+B,GAAQrC,KAAM,EAEzBtqB,EAAI,EAAGC,EAAI+jC,EAAahkC,EAAIC,EAAGD,IAClC,GAAI4iC,GAAS5iC,GAAG,GAAG+jC,KAAK30B,EAAM,IAAK,CACjCw0B,EAAahB,GAAS5iC,GAAG,GACzB2jC,GAA+B,IAAnBf,GAAS5iC,GAAG,GACxB,MAIJ,GAAkB,MAAd4jC,EAEF,YADAjX,EAAO5B,UAAW,GAIpB,GAAI3b,EAAM,GAAI,CACZ,IAAKpP,EAAI,EAAGC,EAAIgkC,EAAajkC,EAAIC,EAAGD,IAClC,GAAI6iC,GAAS7iC,GAAG,GAAG+jC,KAAK30B,EAAM,IAAK,CAEjCy0B,GAAcz0B,EAAM,IAAM,KAAOyzB,GAAS7iC,GAAG,GAC7C,MAIJ,GAAkB,MAAd6jC,EAEF,YADAlX,EAAO5B,UAAW,GAKtB,IAAK4Y,GAA2B,MAAdE,EAEhB,YADAlX,EAAO5B,UAAW,GAIpB,GAAI3b,EAAM,GAAI,CACZ,IAAIuzB,GAAQoB,KAAK30B,EAAM,IAIrB,YADAud,EAAO5B,UAAW,GAFlB+Y,EAAW,IAOfnX,EAAOP,GAAKwX,GAAcC,GAAc,KAAOC,GAAY,IAC3DI,GAA0BvX,QAE1BA,EAAO5B,UAAW,EAItB,SAASoZ,GAA0BC,EAASC,EAAUC,EAAQC,EAASC,EAAWC,GAChF,IAAI/c,EAAS,CAACgd,GAAeN,GAAUhM,GAAyBnB,QAAQoN,GAAW9J,SAAS+J,EAAQ,IAAK/J,SAASgK,EAAS,IAAKhK,SAASiK,EAAW,KAMpJ,OAJIC,GACF/c,EAAO5kB,KAAKy3B,SAASkK,EAAW,KAG3B/c,EAGT,SAASgd,GAAeN,GACtB,IAAIxQ,EAAO2G,SAAS6J,EAAS,IAE7B,OAAIxQ,GAAQ,GACH,IAAOA,EACLA,GAAQ,IACV,KAAOA,EAGTA,EAGT,SAAS+Q,GAAkB5iC,GAEzB,OAAOA,EAAE4G,QAAQ,qBAAsB,KAAKA,QAAQ,WAAY,KAAKA,QAAQ,SAAU,IAAIA,QAAQ,SAAU,IAG/G,SAASi8B,GAAaC,EAAYC,EAAanY,GAC7C,OAAIkY,GAEoBxH,GAA2BpG,QAAQ4N,KACrC,IAAI7b,KAAK8b,EAAY,GAAIA,EAAY,GAAIA,EAAY,IAAIpG,WAG3E9T,EAAgB+B,GAAQhC,iBAAkB,EAC1CgC,EAAO5B,UAAW,GACX,GAOb,SAASga,GAAgBC,EAAWC,EAAgBC,GAClD,GAAIF,EACF,OAAOjC,GAAWiC,GACb,GAAIC,EAET,OAAO,EAEP,IAAIE,EAAK5K,SAAS2K,EAAW,IACzB9kC,EAAI+kC,EAAK,IAEb,OADSA,EAAK/kC,GAAK,IACR,GAAKA,EAKpB,SAASglC,GAAkBzY,GACzB,IACI0Y,EADAj2B,EAAQsb,GAAQqZ,KAAKY,GAAkBhY,EAAOtqB,KAGlD,GAAI+M,EAAO,CAGT,GAFAi2B,EAAclB,GAA0B/0B,EAAM,GAAIA,EAAM,GAAIA,EAAM,GAAIA,EAAM,GAAIA,EAAM,GAAIA,EAAM,KAE3Fw1B,GAAax1B,EAAM,GAAIi2B,EAAa1Y,GACvC,OAGFA,EAAO1U,GAAKotB,EACZ1Y,EAAOL,KAAOyY,GAAgB31B,EAAM,GAAIA,EAAM,GAAIA,EAAM,KACxDud,EAAOhqB,GAAKm4B,GAAcvS,MAAM,KAAMoE,EAAO1U,IAE7C0U,EAAOhqB,GAAG2iC,cAAc3Y,EAAOhqB,GAAG4iC,gBAAkB5Y,EAAOL,MAE3D1B,EAAgB+B,GAAQjC,SAAU,OAElCiC,EAAO5B,UAAW,EAKtB,SAASya,GAAiB7Y,GACxB,IAAI4J,EAAUuM,GAAgBiB,KAAKpX,EAAOtqB,IAE1B,OAAZk0B,GAKJmN,GAAc/W,IAEU,IAApBA,EAAO5B,kBACF4B,EAAO5B,SAKhBqa,GAAkBzY,IAEM,IAApBA,EAAO5B,kBACF4B,EAAO5B,SAKZ4B,EAAOrB,QACTqB,EAAO5B,UAAW,EAGlBzC,EAAMmd,wBAAwB9Y,MAxB9BA,EAAOhqB,GAAK,IAAIqmB,MAAMuN,EAAQ,IAgClC,SAASmP,GAASj8B,EAAGkU,EAAGtd,GACtB,OAAS,MAALoJ,EACKA,EAGA,MAALkU,EACKA,EAGFtd,EAGT,SAASslC,GAAiBhZ,GAExB,IAAIiZ,EAAW,IAAI5c,KAAKV,EAAMqG,OAE9B,OAAIhC,EAAOkZ,QACF,CAACD,EAAS5K,iBAAkB4K,EAASE,cAAeF,EAASG,cAG/D,CAACH,EAAShL,cAAegL,EAASI,WAAYJ,EAASK,WAOhE,SAASC,GAAgBvZ,GACvB,IAAI3sB,EACAw0B,EAEA2R,EACAC,EACAC,EAHAx8B,EAAQ,GAKZ,IAAI8iB,EAAOhqB,GAAX,CA4BA,IAxBAwjC,EAAcR,GAAiBhZ,GAE3BA,EAAOoK,IAAyB,MAAnBpK,EAAO1U,GAAGmf,KAAqC,MAApBzK,EAAO1U,GAAGkf,KACpDmP,GAAsB3Z,GAIC,MAArBA,EAAO4Z,aACTF,EAAYX,GAAS/Y,EAAO1U,GAAGif,IAAOiP,EAAYjP,MAE9CvK,EAAO4Z,WAAalM,GAAWgM,IAAoC,IAAtB1Z,EAAO4Z,cACtD3b,EAAgB+B,GAAQ2V,oBAAqB,GAG/C9N,EAAOsG,GAAcuL,EAAW,EAAG1Z,EAAO4Z,YAC1C5Z,EAAO1U,GAAGkf,IAAS3C,EAAKsR,cACxBnZ,EAAO1U,GAAGmf,IAAQ5C,EAAKuR,cAQpB/lC,EAAI,EAAGA,EAAI,GAAqB,MAAhB2sB,EAAO1U,GAAGjY,KAAcA,EAC3C2sB,EAAO1U,GAAGjY,GAAK6J,EAAM7J,GAAKmmC,EAAYnmC,GAIxC,KAAOA,EAAI,EAAGA,IACZ2sB,EAAO1U,GAAGjY,GAAK6J,EAAM7J,GAAqB,MAAhB2sB,EAAO1U,GAAGjY,GAAmB,IAANA,EAAU,EAAI,EAAI2sB,EAAO1U,GAAGjY,GAIvD,KAApB2sB,EAAO1U,GAAGof,KAAsC,IAAtB1K,EAAO1U,GAAGqf,KAAuC,IAAtB3K,EAAO1U,GAAGsf,KAA4C,IAA3B5K,EAAO1U,GAAGuf,MAC5F7K,EAAO6Z,UAAW,EAClB7Z,EAAO1U,GAAGof,IAAQ,GAGpB1K,EAAOhqB,IAAMgqB,EAAOkZ,QAAU/K,GAAgBJ,IAAYnS,MAAM,KAAM1e,GACtEu8B,EAAkBzZ,EAAOkZ,QAAUlZ,EAAOhqB,GAAG24B,YAAc3O,EAAOhqB,GAAG+7B,SAGlD,MAAf/R,EAAOL,MACTK,EAAOhqB,GAAG2iC,cAAc3Y,EAAOhqB,GAAG4iC,gBAAkB5Y,EAAOL,MAGzDK,EAAO6Z,WACT7Z,EAAO1U,GAAGof,IAAQ,IAIhB1K,EAAOoK,IAA6B,qBAAhBpK,EAAOoK,GAAGz2B,GAAqBqsB,EAAOoK,GAAGz2B,IAAM8lC,IACrExb,EAAgB+B,GAAQhC,iBAAkB,IAI9C,SAAS2b,GAAsB3Z,GAC7B,IAAImF,EAAG2U,EAAUjL,EAAMC,EAASN,EAAKC,EAAKsL,EAAMC,EAAiBC,EAGrD,OAFZ9U,EAAInF,EAAOoK,IAEL8P,IAAqB,MAAP/U,EAAEgV,GAAoB,MAAPhV,EAAEiV,GACnC5L,EAAM,EACNC,EAAM,EAKNqL,EAAWf,GAAS5T,EAAE+U,GAAIla,EAAO1U,GAAGif,IAAO2E,GAAWmL,KAAe,EAAG,GAAGpT,MAC3E4H,EAAOkK,GAAS5T,EAAEgV,EAAG,KACrBrL,EAAUiK,GAAS5T,EAAEiV,EAAG,IAEV,GAAKtL,EAAU,KAC3BkL,GAAkB,KAGpBxL,EAAMxO,EAAOF,QAAQ0P,MAAMhB,IAC3BC,EAAMzO,EAAOF,QAAQ0P,MAAMf,IAC3BwL,EAAU/K,GAAWmL,KAAe7L,EAAKC,GACzCqL,EAAWf,GAAS5T,EAAEmV,GAAIta,EAAO1U,GAAGif,IAAO0P,EAAQhT,MAEnD4H,EAAOkK,GAAS5T,EAAEA,EAAG8U,EAAQpL,MAElB,MAAP1J,EAAExxB,IAEJm7B,EAAU3J,EAAExxB,GAEE,GAAKm7B,EAAU,KAC3BkL,GAAkB,GAEJ,MAAP7U,EAAEhoB,GAEX2xB,EAAU3J,EAAEhoB,EAAIqxB,GAEZrJ,EAAEhoB,EAAI,GAAKgoB,EAAEhoB,EAAI,KACnB68B,GAAkB,IAIpBlL,EAAUN,GAIVK,EAAO,GAAKA,EAAOQ,GAAYyK,EAAUtL,EAAKC,GAChDxQ,EAAgB+B,GAAQ4V,gBAAiB,EACb,MAAnBoE,EACT/b,EAAgB+B,GAAQ6V,kBAAmB,GAE3CkE,EAAOnL,GAAmBkL,EAAUjL,EAAMC,EAASN,EAAKC,GACxDzO,EAAO1U,GAAGif,IAAQwP,EAAK9S,KACvBjH,EAAO4Z,WAAaG,EAAK9K,WAW7B,SAASsI,GAA0BvX,GAEjC,GAAIA,EAAOP,KAAO9D,EAAM4e,SAKxB,GAAIva,EAAOP,KAAO9D,EAAM6e,SAAxB,CAKAxa,EAAO1U,GAAK,GACZ2S,EAAgB+B,GAAQ/C,OAAQ,EAEhC,IACI5pB,EACA8kC,EACAxyB,EACAC,EACA60B,EAGA5c,EACAqM,EATApQ,EAAS,GAAKkG,EAAOtqB,GAMrBglC,EAAe5gB,EAAO1jB,OACtBukC,EAAyB,EAM7B,IAFAzQ,GADAvkB,EAAS4d,EAAavD,EAAOP,GAAIO,EAAOF,SAASrd,MAAMkgB,IAAqB,IAC1DvsB,OAEb/C,EAAI,EAAGA,EAAI62B,EAAU72B,IACxBuS,EAAQD,EAAOtS,IACf8kC,GAAere,EAAOrX,MAAMgnB,GAAsB7jB,EAAOoa,KAAY,IAAI,OAGvEya,EAAU3gB,EAAO4I,OAAO,EAAG5I,EAAOwQ,QAAQ6N,KAE9B/hC,OAAS,GACnB6nB,EAAgB+B,GAAQ7C,YAAYhnB,KAAKskC,GAG3C3gB,EAASA,EAAOpjB,MAAMojB,EAAOwQ,QAAQ6N,GAAeA,EAAY/hC,QAChEukC,GAA0BxC,EAAY/hC,QAIpC0sB,EAAqBld,IACnBuyB,EACFla,EAAgB+B,GAAQ/C,OAAQ,EAEhCgB,EAAgB+B,GAAQ9C,aAAa/mB,KAAKyP,GAG5CykB,GAAwBzkB,EAAOuyB,EAAanY,IACnCA,EAAOrB,UAAYwZ,GAC5Bla,EAAgB+B,GAAQ9C,aAAa/mB,KAAKyP,GAK9CqY,EAAgB+B,GAAQ3C,cAAgBqd,EAAeC,EAEnD7gB,EAAO1jB,OAAS,GAClB6nB,EAAgB+B,GAAQ7C,YAAYhnB,KAAK2jB,GAIvCkG,EAAO1U,GAAGof,KAAS,KAA0C,IAApCzM,EAAgB+B,GAAQpB,SAAoBoB,EAAO1U,GAAGof,IAAQ,IACzFzM,EAAgB+B,GAAQpB,aAAUliB,GAGpCuhB,EAAgB+B,GAAQpC,gBAAkBoC,EAAO1U,GAAG5U,MAAM,GAC1DunB,EAAgB+B,GAAQlC,SAAWkC,EAAOyT,UAE1CzT,EAAO1U,GAAGof,IAAQkQ,GAAgB5a,EAAOF,QAASE,EAAO1U,GAAGof,IAAO1K,EAAOyT,WAI9D,QAFZ5V,EAAMI,EAAgB+B,GAAQnC,OAG5BmC,EAAO1U,GAAGif,IAAQvK,EAAOF,QAAQ+a,gBAAgBhd,EAAKmC,EAAO1U,GAAGif,MAGlEgP,GAAgBvZ,GAChB0V,GAAc1V,QAzEZyY,GAAkBzY,QALlB+W,GAAc/W,GAiFlB,SAAS4a,GAAgBhe,EAAQke,EAAMhd,GACrC,IAAIid,EAEJ,OAAgB,MAAZjd,EAEKgd,EAGkB,MAAvBle,EAAOoe,aACFpe,EAAOoe,aAAaF,EAAMhd,GACT,MAAflB,EAAO4W,OAEhBuH,EAAOne,EAAO4W,KAAK1V,KAEPgd,EAAO,KACjBA,GAAQ,IAGLC,GAAiB,KAATD,IACXA,EAAO,GAGFA,GAGAA,EAKX,SAASG,GAAyBjb,GAChC,IAAIkb,EACAC,EACAC,EACA/nC,EACAgoC,EACAC,EACAC,GAAoB,EACpBC,EAAaxb,EAAOP,GAAGrpB,OAE3B,GAAmB,IAAfolC,EAGF,OAFAvd,EAAgB+B,GAAQvC,eAAgB,OACxCuC,EAAOhqB,GAAK,IAAIqmB,KAAK0C,MAIvB,IAAK1rB,EAAI,EAAGA,EAAImoC,EAAYnoC,IAC1BgoC,EAAe,EACfC,GAAmB,EACnBJ,EAAa/b,EAAW,GAAIa,GAEN,MAAlBA,EAAOkZ,UACTgC,EAAWhC,QAAUlZ,EAAOkZ,SAG9BgC,EAAWzb,GAAKO,EAAOP,GAAGpsB,GAC1BkkC,GAA0B2D,GAEtB/c,EAAQ+c,KACVI,GAAmB,GAIrBD,GAAgBpd,EAAgBid,GAAY7d,cAE5Cge,GAAkE,GAAlDpd,EAAgBid,GAAYhe,aAAa9mB,OACzD6nB,EAAgBid,GAAYO,MAAQJ,EAE/BE,EAUCF,EAAeD,IACjBA,EAAcC,EACdF,EAAaD,IAXI,MAAfE,GAAuBC,EAAeD,GAAeE,KACvDF,EAAcC,EACdF,EAAaD,EAETI,IACFC,GAAoB,IAW5B3rB,EAAOoQ,EAAQmb,GAAcD,GAG/B,SAASQ,GAAiB1b,GACxB,IAAIA,EAAOhqB,GAAX,CAIA,IAAI3C,EAAIizB,GAAqBtG,EAAOtqB,IAChCimC,OAAsBj/B,IAAVrJ,EAAE49B,IAAoB59B,EAAEw0B,KAAOx0B,EAAE49B,IACjDjR,EAAO1U,GAAKtR,EAAI,CAAC3G,EAAE4zB,KAAM5zB,EAAEu0B,MAAO+T,EAAWtoC,EAAEynC,KAAMznC,EAAEuoC,OAAQvoC,EAAEwoC,OAAQxoC,EAAEyoC,cAAc,SAAU7f,GACjG,OAAOA,GAAO2R,SAAS3R,EAAK,OAE9Bsd,GAAgBvZ,IAGlB,SAAS+b,GAAiB/b,GACxB,IAAIzD,EAAM,IAAIwD,EAAO2V,GAAcsG,GAAchc,KAQjD,OANIzD,EAAIsd,WAENtd,EAAIvkB,IAAI,EAAG,KACXukB,EAAIsd,cAAWn9B,GAGV6f,EAGT,SAASyf,GAAchc,GACrB,IAAI9iB,EAAQ8iB,EAAOtqB,GACfinB,EAASqD,EAAOP,GAGpB,OAFAO,EAAOF,QAAUE,EAAOF,SAAWqV,GAAUnV,EAAON,IAEtC,OAAVxiB,QAA6BR,IAAXigB,GAAkC,KAAVzf,EACrC4hB,EAAc,CACnBxB,WAAW,KAIM,kBAAVpgB,IACT8iB,EAAOtqB,GAAKwH,EAAQ8iB,EAAOF,QAAQmc,SAAS/+B,IAG1CgjB,EAAShjB,GACJ,IAAI6iB,EAAO2V,GAAcx4B,KACvBkf,EAAOlf,GAChB8iB,EAAOhqB,GAAKkH,EACH1H,EAAQmnB,GACjBse,GAAyBjb,GAChBrD,EACT4a,GAA0BvX,GAE1Bkc,GAAgBlc,GAGb7B,EAAQ6B,KACXA,EAAOhqB,GAAK,MAGPgqB,IAGT,SAASkc,GAAgBlc,GACvB,IAAI9iB,EAAQ8iB,EAAOtqB,GAEfwmB,EAAYhf,GACd8iB,EAAOhqB,GAAK,IAAIqmB,KAAKV,EAAMqG,OAClB5F,EAAOlf,GAChB8iB,EAAOhqB,GAAK,IAAIqmB,KAAKnf,EAAMuf,WACD,kBAAVvf,EAChB27B,GAAiB7Y,GACRxqB,EAAQ0H,IACjB8iB,EAAO1U,GAAKtR,EAAIkD,EAAMxG,MAAM,IAAI,SAAUulB,GACxC,OAAO2R,SAAS3R,EAAK,OAEvBsd,GAAgBvZ,IACPlE,EAAS5e,GAClBw+B,GAAiB1b,GACR7D,EAASjf,GAElB8iB,EAAOhqB,GAAK,IAAIqmB,KAAKnf,GAErBye,EAAMmd,wBAAwB9Y,GAIlC,SAASlD,GAAiB5f,EAAOyf,EAAQC,EAAQC,EAAQsf,GACvD,IAAIzoC,EAAI,GAwBR,OAtBe,IAAXipB,IAA8B,IAAXA,IACrBE,EAASF,EACTA,OAASjgB,IAGI,IAAXkgB,IAA8B,IAAXA,IACrBC,EAASD,EACTA,OAASlgB,IAGPof,EAAS5e,IAAU8e,EAAc9e,IAAU1H,EAAQ0H,IAA2B,IAAjBA,EAAM9G,UACrE8G,OAAQR,GAKVhJ,EAAE8rB,kBAAmB,EACrB9rB,EAAEwlC,QAAUxlC,EAAEksB,OAASuc,EACvBzoC,EAAEgsB,GAAK9C,EACPlpB,EAAEgC,GAAKwH,EACPxJ,EAAE+rB,GAAK9C,EACPjpB,EAAEirB,QAAU9B,EACLkf,GAAiBroC,GAG1B,SAAS2mC,GAAYn9B,EAAOyf,EAAQC,EAAQC,GAC1C,OAAOC,GAAiB5f,EAAOyf,EAAQC,EAAQC,GAAQ,GAhczDlB,EAAMmd,wBAA0BzlB,EAAU,iSAA2S,SAAU2M,GAC7VA,EAAOhqB,GAAK,IAAIqmB,KAAK2D,EAAOtqB,IAAMsqB,EAAOkZ,QAAU,OAAS,QA6J9Dvd,EAAM4e,SAAW,aAGjB5e,EAAM6e,SAAW,aAkSjB,IAAI4B,GAAe/oB,EAAU,sGAAsG,WACjI,IAAIgpB,EAAQhC,GAAYze,MAAM,KAAM9K,WAEpC,OAAIvZ,KAAK4mB,WAAake,EAAMle,UACnBke,EAAQ9kC,KAAOA,KAAO8kC,EAEtBvd,OAGPwd,GAAejpB,EAAU,sGAAsG,WACjI,IAAIgpB,EAAQhC,GAAYze,MAAM,KAAM9K,WAEpC,OAAIvZ,KAAK4mB,WAAake,EAAMle,UACnBke,EAAQ9kC,KAAOA,KAAO8kC,EAEtBvd,OAQX,SAASyd,GAAOjgB,EAAIkgB,GAClB,IAAIjgB,EAAKlpB,EAMT,GAJuB,IAAnBmpC,EAAQpmC,QAAgBZ,EAAQgnC,EAAQ,MAC1CA,EAAUA,EAAQ,KAGfA,EAAQpmC,OACX,OAAOikC,KAKT,IAFA9d,EAAMigB,EAAQ,GAETnpC,EAAI,EAAGA,EAAImpC,EAAQpmC,SAAU/C,EAC3BmpC,EAAQnpC,GAAG8qB,YAAaqe,EAAQnpC,GAAGipB,GAAIC,KAC1CA,EAAMigB,EAAQnpC,IAIlB,OAAOkpB,EAIT,SAASuQ,KAEP,OAAOyP,GAAO,WADH,GAAG7lC,MAAMlD,KAAKsd,UAAW,IAItC,SAAS3K,KAEP,OAAOo2B,GAAO,UADH,GAAG7lC,MAAMlD,KAAKsd,UAAW,IAItC,IAAIkR,GAAM,WACR,OAAO3F,KAAK2F,IAAM3F,KAAK2F,OAAS,IAAI3F,MAGlCogB,GAAW,CAAC,OAAQ,UAAW,QAAS,OAAQ,MAAO,OAAQ,SAAU,SAAU,eAEvF,SAASC,GAAgBjpC,GACvB,IAAImB,EAEAvB,EADAspC,GAAiB,EAEjBC,EAAWH,GAASrmC,OAExB,IAAKxB,KAAOnB,EACV,GAAIsoB,EAAWtoB,EAAGmB,MAA2C,IAAjC01B,GAAQ92B,KAAKipC,GAAU7nC,IAA0B,MAAVnB,EAAEmB,IAAiB4pB,MAAM/qB,EAAEmB,KAC5F,OAAO,EAIX,IAAKvB,EAAI,EAAGA,EAAIupC,IAAYvpC,EAC1B,GAAII,EAAEgpC,GAASppC,IAAK,CAClB,GAAIspC,EACF,OAAO,EAGLE,WAAWppC,EAAEgpC,GAASppC,OAASg0B,GAAM5zB,EAAEgpC,GAASppC,OAClDspC,GAAiB,GAKvB,OAAO,EAGT,SAASG,KACP,OAAOvlC,KAAK6mB,SAGd,SAAS2e,KACP,OAAOC,GAAeje,KAGxB,SAASke,GAASC,GAChB,IAAIzW,EAAkBH,GAAqB4W,GACvCC,EAAQ1W,EAAgBQ,MAAQ,EAChCmW,EAAW3W,EAAgB4W,SAAW,EACtCjS,EAAS3E,EAAgBmB,OAAS,EAClC0V,EAAQ7W,EAAgBoI,MAAQpI,EAAgB8W,SAAW,EAC3DC,EAAO/W,EAAgBwK,KAAO,EAC9B6B,EAAQrM,EAAgBqU,MAAQ,EAChC7H,EAAUxM,EAAgBmV,QAAU,EACpCvI,EAAU5M,EAAgBoV,QAAU,EACpC4B,EAAehX,EAAgBqV,aAAe,EAClDvkC,KAAK6mB,SAAWse,GAAgBjW,GAEhClvB,KAAKmmC,eAAiBD,EAAyB,IAAVpK,EAC3B,IAAVJ,EACQ,IAARH,EAAe,GAAK,GAIpBv7B,KAAKomC,OAASH,EAAe,EAARF,EAIrB/lC,KAAKu0B,SAAWV,EAAoB,EAAXgS,EAAuB,GAARD,EACxC5lC,KAAKqmC,MAAQ,GACbrmC,KAAKuoB,QAAUqV,KAEf59B,KAAKsmC,UAGP,SAASC,GAAW7hB,GAClB,OAAOA,aAAeghB,GAGxB,SAASc,GAASlkB,GAChB,OAAIA,EAAS,GACuB,EAA3B3T,KAAK83B,OAAO,EAAInkB,GAEhB3T,KAAK83B,MAAMnkB,GAKtB,SAASokB,GAAcC,EAAQC,EAAQC,GACrC,IAGI/qC,EAHA4D,EAAMiP,KAAK4mB,IAAIoR,EAAO9nC,OAAQ+nC,EAAO/nC,QACrCioC,EAAan4B,KAAKqc,IAAI2b,EAAO9nC,OAAS+nC,EAAO/nC,QAC7CkoC,EAAQ,EAGZ,IAAKjrC,EAAI,EAAGA,EAAI4D,EAAK5D,KACf+qC,GAAeF,EAAO7qC,KAAO8qC,EAAO9qC,KAAO+qC,GAAe/W,GAAM6W,EAAO7qC,MAAQg0B,GAAM8W,EAAO9qC,MAC9FirC,IAIJ,OAAOA,EAAQD,EAIjB,SAASE,GAAO34B,EAAO44B,GACrBzb,EAAend,EAAO,EAAG,GAAG,WAC1B,IAAI24B,EAAShnC,KAAKknC,YACdC,EAAO,IAOX,OALIH,EAAS,IACXA,GAAUA,EACVG,EAAO,KAGFA,EAAOvc,KAAYoc,EAAS,IAAK,GAAKC,EAAYrc,IAAWoc,EAAS,GAAI,MAIrFA,GAAO,IAAK,KACZA,GAAO,KAAM,IAEblV,GAAc,IAAKH,IACnBG,GAAc,KAAMH,IACpBe,GAAc,CAAC,IAAK,OAAO,SAAU/sB,EAAOuZ,EAAOuJ,GACjDA,EAAOkZ,SAAU,EACjBlZ,EAAOL,KAAOgf,GAAiBzV,GAAkBhsB,MAMnD,IAAI0hC,GAAc,kBAElB,SAASD,GAAiBE,EAAS/kB,GACjC,IAEI9e,EACAi4B,EAHAxyB,GAAWqZ,GAAU,IAAIrX,MAAMo8B,GAKnC,OAAgB,OAAZp+B,EACK,KAMU,KADnBwyB,EAAuB,IADvBj4B,IADQyF,EAAQA,EAAQrK,OAAS,IAAM,IACtB,IAAIqM,MAAMm8B,KAAgB,CAAC,IAAK,EAAG,IAClC,GAAWvX,GAAMrsB,EAAM,KAClB,EAAiB,MAAbA,EAAM,GAAai4B,GAAWA,EAI3D,SAAS6L,GAAgB5hC,EAAO6hC,GAC9B,IAAIxiB,EAAKuJ,EAET,OAAIiZ,EAAMnf,QACRrD,EAAMwiB,EAAMC,QACZlZ,GAAQ5F,EAAShjB,IAAUkf,EAAOlf,GAASA,EAAMuf,UAAY4d,GAAYn9B,GAAOuf,WAAaF,EAAIE,UAEjGF,EAAIvmB,GAAGipC,QAAQ1iB,EAAIvmB,GAAGymB,UAAYqJ,GAElCnK,EAAMsE,aAAa1D,GAAK,GACjBA,GAEA8d,GAAYn9B,GAAOgiC,QAI9B,SAASC,GAAc1rC,GAGrB,OAAQyS,KAAK83B,MAAMvqC,EAAEuC,GAAGopC,qBAmB1B,SAASC,GAAaniC,EAAOoiC,EAAeC,GAC1C,IACIC,EADAjB,EAAShnC,KAAKsoB,SAAW,EAG7B,IAAKtoB,KAAK4mB,UACR,OAAgB,MAATjhB,EAAgB3F,KAAOwnB,IAGhC,GAAa,MAAT7hB,EAAe,CACjB,GAAqB,kBAAVA,GAGT,GAAc,QAFdA,EAAQyhC,GAAiBzV,GAAkBhsB,IAGzC,OAAO3F,UAEA2O,KAAKqc,IAAIrlB,GAAS,KAAOqiC,IAClCriC,GAAgB,IAwBlB,OArBK3F,KAAKqoB,QAAU0f,IAClBE,EAAcL,GAAc5nC,OAG9BA,KAAKsoB,QAAU3iB,EACf3F,KAAKqoB,QAAS,EAEK,MAAf4f,GACFjoC,KAAKS,IAAIwnC,EAAa,KAGpBjB,IAAWrhC,KACRoiC,GAAiB/nC,KAAKkoC,kBACzBC,GAAYnoC,KAAMylC,GAAe9/B,EAAQqhC,EAAQ,KAAM,GAAG,GAChDhnC,KAAKkoC,oBACfloC,KAAKkoC,mBAAoB,EACzB9jB,EAAMsE,aAAa1oB,MAAM,GACzBA,KAAKkoC,kBAAoB,OAItBloC,KAEP,OAAOA,KAAKqoB,OAAS2e,EAASY,GAAc5nC,MAIhD,SAASooC,GAAWziC,EAAOoiC,GACzB,OAAa,MAATpiC,GACmB,kBAAVA,IACTA,GAASA,GAGX3F,KAAKknC,UAAUvhC,EAAOoiC,GACf/nC,OAECA,KAAKknC,YAIjB,SAASmB,GAAeN,GACtB,OAAO/nC,KAAKknC,UAAU,EAAGa,GAG3B,SAASO,GAAiBP,GAUxB,OATI/nC,KAAKqoB,SACProB,KAAKknC,UAAU,EAAGa,GAClB/nC,KAAKqoB,QAAS,EAEV0f,GACF/nC,KAAKuoC,SAASX,GAAc5nC,MAAO,MAIhCA,KAGT,SAASwoC,KACP,GAAiB,MAAbxoC,KAAKooB,KACPpoB,KAAKknC,UAAUlnC,KAAKooB,MAAM,GAAO,QAC5B,GAAuB,kBAAZpoB,KAAK7B,GAAiB,CACtC,IAAIsqC,EAAQrB,GAAiB1V,GAAa1xB,KAAK7B,IAElC,MAATsqC,EACFzoC,KAAKknC,UAAUuB,GAEfzoC,KAAKknC,UAAU,GAAG,GAItB,OAAOlnC,KAGT,SAAS0oC,GAAqB/iC,GAC5B,QAAK3F,KAAK4mB,YAIVjhB,EAAQA,EAAQm9B,GAAYn9B,GAAOuhC,YAAc,GACzClnC,KAAKknC,YAAcvhC,GAAS,KAAO,GAG7C,SAASgjC,KACP,OAAO3oC,KAAKknC,YAAclnC,KAAKynC,QAAQpX,MAAM,GAAG6W,aAAelnC,KAAKknC,YAAclnC,KAAKynC,QAAQpX,MAAM,GAAG6W,YAG1G,SAAS0B,KACP,IAAKjkB,EAAY3kB,KAAK6oC,eACpB,OAAO7oC,KAAK6oC,cAGd,IACI/D,EADA3oC,EAAI,GAYR,OAVAyrB,EAAWzrB,EAAG6D,OACd7D,EAAIsoC,GAActoC,IAEZ4X,IACJ+wB,EAAQ3oC,EAAEksB,OAASlD,EAAUhpB,EAAE4X,IAAM+uB,GAAY3mC,EAAE4X,IACnD/T,KAAK6oC,cAAgB7oC,KAAK4mB,WAAa8f,GAAcvqC,EAAE4X,GAAI+wB,EAAMgE,WAAa,GAE9E9oC,KAAK6oC,eAAgB,EAGhB7oC,KAAK6oC,cAGd,SAASE,KACP,QAAO/oC,KAAK4mB,YAAa5mB,KAAKqoB,OAGhC,SAAS2gB,KACP,QAAOhpC,KAAK4mB,WAAY5mB,KAAKqoB,OAG/B,SAAS4gB,KACP,QAAOjpC,KAAK4mB,WAAY5mB,KAAKqoB,QAA2B,IAAjBroB,KAAKsoB,QAnJ9ClE,EAAMsE,aAAe,aAuJrB,IAAIwgB,GAAc,wDAIlBC,GAAW,sKAEX,SAAS1D,GAAe9/B,EAAOtI,GAC7B,IAGI8pC,EACAiC,EACAC,EALA1D,EAAWhgC,EAEfuF,EAAQ,KA6DR,OAxDIq7B,GAAW5gC,GACbggC,EAAW,CACTlP,GAAI9wB,EAAMwgC,cACV/pC,EAAGuJ,EAAMygC,MACTtY,EAAGnoB,EAAM4uB,SAEF3P,EAASjf,KAAWshB,OAAOthB,IACpCggC,EAAW,GAEPtoC,EACFsoC,EAAStoC,IAAQsI,EAEjBggC,EAASO,cAAgBvgC,IAElBuF,EAAQg+B,GAAYrJ,KAAKl6B,KAClCwhC,EAAoB,MAAbj8B,EAAM,IAAc,EAAI,EAC/By6B,EAAW,CACT3X,EAAG,EACH5xB,EAAG0zB,GAAM5kB,EAAMgoB,KAASiU,EACxB1Z,EAAGqC,GAAM5kB,EAAMioB,KAASgU,EACxBjrC,EAAG4zB,GAAM5kB,EAAMkoB,KAAW+T,EAC1BtpC,EAAGiyB,GAAM5kB,EAAMmoB,KAAW8T,EAC1B1Q,GAAI3G,GAAM0W,GAA8B,IAArBt7B,EAAMooB,MAAwB6T,KAG1Cj8B,EAAQi+B,GAAStJ,KAAKl6B,KAC/BwhC,EAAoB,MAAbj8B,EAAM,IAAc,EAAI,EAC/By6B,EAAW,CACT3X,EAAGsb,GAASp+B,EAAM,GAAIi8B,GACtBrZ,EAAGwb,GAASp+B,EAAM,GAAIi8B,GACtBvZ,EAAG0b,GAASp+B,EAAM,GAAIi8B,GACtB/qC,EAAGktC,GAASp+B,EAAM,GAAIi8B,GACtB1Z,EAAG6b,GAASp+B,EAAM,GAAIi8B,GACtBjrC,EAAGotC,GAASp+B,EAAM,GAAIi8B,GACtBtpC,EAAGyrC,GAASp+B,EAAM,GAAIi8B,KAEH,MAAZxB,EAETA,EAAW,GACkB,kBAAbA,IAA0B,SAAUA,GAAY,OAAQA,KACxE0D,EAAUE,GAAkBzG,GAAY6C,EAAStmC,MAAOyjC,GAAY6C,EAAS9d,MAC7E8d,EAAW,IACFlP,GAAK4S,EAAQnD,aACtBP,EAAS7X,EAAIub,EAAQxV,QAGvBuV,EAAM,IAAI1D,GAASC,GAEfY,GAAW5gC,IAAU6e,EAAW7e,EAAO,aACzCyjC,EAAI7gB,QAAU5iB,EAAM4iB,SAGlBge,GAAW5gC,IAAU6e,EAAW7e,EAAO,cACzCyjC,EAAIviB,SAAWlhB,EAAMkhB,UAGhBuiB,EAMT,SAASE,GAASE,EAAKrC,GAIrB,IAAIniB,EAAMwkB,GAAOlE,WAAWkE,EAAI/kC,QAAQ,IAAK,MAE7C,OAAQwiB,MAAMjC,GAAO,EAAIA,GAAOmiB,EAGlC,SAASsC,GAA0BC,EAAM5E,GACvC,IAAI9f,EAAM,GAQV,OAPAA,EAAI6O,OAASiR,EAAMzU,QAAUqZ,EAAKrZ,QAAyC,IAA9ByU,EAAMpV,OAASga,EAAKha,QAE7Dga,EAAKjC,QAAQhnC,IAAIukB,EAAI6O,OAAQ,KAAK8V,QAAQ7E,MAC1C9f,EAAI6O,OAGR7O,EAAIkhB,cAAgBpB,GAAS4E,EAAKjC,QAAQhnC,IAAIukB,EAAI6O,OAAQ,KACnD7O,EAGT,SAASukB,GAAkBG,EAAM5E,GAC/B,IAAI9f,EAEJ,OAAM0kB,EAAK9iB,WAAake,EAAMle,WAO9Bke,EAAQyC,GAAgBzC,EAAO4E,GAE3BA,EAAKE,SAAS9E,GAChB9f,EAAMykB,GAA0BC,EAAM5E,KAEtC9f,EAAMykB,GAA0B3E,EAAO4E,IACnCxD,cAAgBlhB,EAAIkhB,aACxBlhB,EAAI6O,QAAU7O,EAAI6O,QAGb7O,GAhBE,CACLkhB,aAAc,EACdrS,OAAQ,GAkBd,SAASgW,GAAYC,EAAWztC,GAC9B,OAAO,SAAU0rB,EAAKgiB,GACpB,IAASC,EAWT,OATe,OAAXD,GAAoB9iB,OAAO8iB,KAC7B3gB,EAAgB/sB,EAAM,YAAcA,EAAO,uDAAyDA,EAA9E,kGACtB2tC,EAAMjiB,EACNA,EAAMgiB,EACNA,EAASC,GAIX7B,GAAYnoC,KADNylC,GAAe1d,EAAKgiB,GACHD,GAChB9pC,MAIX,SAASmoC,GAAY3d,EAAKmb,EAAUsE,EAAUvhB,GAC5C,IAAIwd,EAAeP,EAASQ,cACxBF,EAAOO,GAASb,EAASS,OACzBvS,EAAS2S,GAASb,EAASpR,SAE1B/J,EAAI5D,YAKT8B,EAA+B,MAAhBA,GAA8BA,EAEzCmL,GACFwB,GAAS7K,EAAK7tB,GAAI6tB,EAAK,SAAWqJ,EAASoW,GAGzChE,GACF7V,GAAM5F,EAAK,OAAQ7tB,GAAI6tB,EAAK,QAAUyb,EAAOgE,GAG3C/D,GACF1b,EAAI/rB,GAAGipC,QAAQld,EAAI/rB,GAAGymB,UAAYghB,EAAe+D,GAG/CvhB,GACFtE,EAAMsE,aAAa8B,EAAKyb,GAAQpS,IA1FpC4R,GAAe1gB,GAAK2gB,GAAShoC,UAC7B+nC,GAAeyE,QAAU1E,GA6FzB,IAAI/kC,GAAMopC,GAAY,EAAG,OACrBtB,GAAWsB,IAAa,EAAG,YAE/B,SAASM,GAASxkC,GAChB,MAAwB,kBAAVA,GAAsBA,aAAiByc,OAIvD,SAASgoB,GAAczkC,GACrB,OAAOgjB,EAAShjB,IAAUkf,EAAOlf,IAAUwkC,GAASxkC,IAAUif,EAASjf,IAAU0kC,GAAsB1kC,IAAU2kC,GAAoB3kC,IAAoB,OAAVA,QAA4BR,IAAVQ,EAGnK,SAAS2kC,GAAoB3kC,GAC3B,IAGI7J,EACA2B,EAJA8sC,EAAahmB,EAAS5e,KAAW8e,EAAc9e,GAC/C6kC,GAAe,EACfryB,EAAa,CAAC,QAAS,OAAQ,IAAK,SAAU,QAAS,IAAK,OAAQ,MAAO,IAAK,QAAS,OAAQ,IAAK,QAAS,OAAQ,IAAK,UAAW,SAAU,IAAK,UAAW,SAAU,IAAK,eAAgB,cAAe,MAG/MsyB,EAActyB,EAAWtZ,OAE7B,IAAK/C,EAAI,EAAGA,EAAI2uC,EAAa3uC,GAAK,EAChC2B,EAAW0a,EAAWrc,GACtB0uC,EAAeA,GAAgBhmB,EAAW7e,EAAOlI,GAGnD,OAAO8sC,GAAcC,EAGvB,SAASH,GAAsB1kC,GAC7B,IAAI+kC,EAAYzsC,EAAQ0H,GACpBglC,GAAe,EAQnB,OANID,IACFC,EAEc,IAFChlC,EAAM2B,QAAO,SAAUsjC,GACpC,OAAQhmB,EAASgmB,IAAST,GAASxkC,MAClC9G,QAGE6rC,GAAaC,EAGtB,SAASE,GAAellC,GACtB,IAGI7J,EACA2B,EAJA8sC,EAAahmB,EAAS5e,KAAW8e,EAAc9e,GAC/C6kC,GAAe,EACfryB,EAAa,CAAC,UAAW,UAAW,UAAW,WAAY,WAAY,YAI3E,IAAKrc,EAAI,EAAGA,EAAIqc,EAAWtZ,OAAQ/C,GAAK,EACtC2B,EAAW0a,EAAWrc,GACtB0uC,EAAeA,GAAgBhmB,EAAW7e,EAAOlI,GAGnD,OAAO8sC,GAAcC,EAGvB,SAASM,GAAkBC,EAAUtgB,GACnC,IAAI8D,EAAOwc,EAASxc,KAAK9D,EAAK,QAAQ,GACtC,OAAO8D,GAAQ,EAAI,WAAaA,GAAQ,EAAI,WAAaA,EAAO,EAAI,UAAYA,EAAO,EAAI,UAAYA,EAAO,EAAI,UAAYA,EAAO,EAAI,WAAa,WAGxJ,SAASyc,GAAWC,EAAMC,GAEC,IAArB3xB,UAAU1a,SACP0a,UAAU,GAGJ6wB,GAAc7wB,UAAU,KACjC0xB,EAAO1xB,UAAU,GACjB2xB,OAAU/lC,GACD0lC,GAAetxB,UAAU,MAClC2xB,EAAU3xB,UAAU,GACpB0xB,OAAO9lC,IAPP8lC,OAAO9lC,EACP+lC,OAAU/lC,IAYd,IAAIslB,EAAMwgB,GAAQnI,KACdqI,EAAM5D,GAAgB9c,EAAKzqB,MAAMorC,QAAQ,OACzChmB,EAAShB,EAAMinB,eAAerrC,KAAMmrC,IAAQ,WAC5CzgB,EAASwgB,IAAY7hB,EAAW6hB,EAAQ9lB,IAAW8lB,EAAQ9lB,GAAQnpB,KAAK+D,KAAMyqB,GAAOygB,EAAQ9lB,IACjG,OAAOplB,KAAKolB,OAAOsF,GAAU1qB,KAAK4rB,aAAarB,SAASnF,EAAQplB,KAAM8iC,GAAYrY,KAGpF,SAASgd,KACP,OAAO,IAAIjf,EAAOxoB,MAGpB,SAAS2pC,GAAQhkC,EAAOmpB,GACtB,IAAIwc,EAAa3iB,EAAShjB,GAASA,EAAQm9B,GAAYn9B,GAEvD,SAAM3F,KAAK4mB,YAAa0kB,EAAW1kB,aAMrB,iBAFdkI,EAAQD,GAAeC,IAAU,eAGxB9uB,KAAKklB,UAAYomB,EAAWpmB,UAE5BomB,EAAWpmB,UAAYllB,KAAKynC,QAAQ2D,QAAQtc,GAAO5J,WAI9D,SAAS0kB,GAASjkC,EAAOmpB,GACvB,IAAIwc,EAAa3iB,EAAShjB,GAASA,EAAQm9B,GAAYn9B,GAEvD,SAAM3F,KAAK4mB,YAAa0kB,EAAW1kB,aAMrB,iBAFdkI,EAAQD,GAAeC,IAAU,eAGxB9uB,KAAKklB,UAAYomB,EAAWpmB,UAE5BllB,KAAKynC,QAAQ8D,MAAMzc,GAAO5J,UAAYomB,EAAWpmB,WAI5D,SAASsmB,GAAUnsC,EAAMwoB,EAAIiH,EAAO2c,GAClC,IAAIC,EAAY/iB,EAAStpB,GAAQA,EAAOyjC,GAAYzjC,GAChDssC,EAAUhjB,EAASd,GAAMA,EAAKib,GAAYjb,GAE9C,SAAM7nB,KAAK4mB,WAAa8kB,EAAU9kB,WAAa+kB,EAAQ/kB,aAK5B,OAD3B6kB,EAAcA,GAAe,MACT,GAAazrC,KAAK2pC,QAAQ+B,EAAW5c,IAAU9uB,KAAK4pC,SAAS8B,EAAW5c,MAA+B,MAAnB2c,EAAY,GAAazrC,KAAK4pC,SAAS+B,EAAS7c,IAAU9uB,KAAK2pC,QAAQgC,EAAS7c,IAG1L,SAAS8c,GAAOjmC,EAAOmpB,GACrB,IACI+c,EADAP,EAAa3iB,EAAShjB,GAASA,EAAQm9B,GAAYn9B,GAGvD,SAAM3F,KAAK4mB,YAAa0kB,EAAW1kB,aAMrB,iBAFdkI,EAAQD,GAAeC,IAAU,eAGxB9uB,KAAKklB,YAAcomB,EAAWpmB,WAErC2mB,EAAUP,EAAWpmB,UACdllB,KAAKynC,QAAQ2D,QAAQtc,GAAO5J,WAAa2mB,GAAWA,GAAW7rC,KAAKynC,QAAQ8D,MAAMzc,GAAO5J,YAIpG,SAAS4mB,GAAcnmC,EAAOmpB,GAC5B,OAAO9uB,KAAK4rC,OAAOjmC,EAAOmpB,IAAU9uB,KAAK2pC,QAAQhkC,EAAOmpB,GAG1D,SAASid,GAAepmC,EAAOmpB,GAC7B,OAAO9uB,KAAK4rC,OAAOjmC,EAAOmpB,IAAU9uB,KAAK4pC,SAASjkC,EAAOmpB,GAG3D,SAASP,GAAK5oB,EAAOmpB,EAAOkd,GAC1B,IAAIC,EAAMC,EAAWxhB,EAErB,IAAK1qB,KAAK4mB,UACR,OAAOY,IAKT,KAFAykB,EAAO1E,GAAgB5hC,EAAO3F,OAEpB4mB,UACR,OAAOY,IAMT,OAHA0kB,EAAoD,KAAvCD,EAAK/E,YAAclnC,KAAKknC,aACrCpY,EAAQD,GAAeC,IAGrB,IAAK,OACHpE,EAASyhB,GAAUnsC,KAAMisC,GAAQ,GACjC,MAEF,IAAK,QACHvhB,EAASyhB,GAAUnsC,KAAMisC,GACzB,MAEF,IAAK,UACHvhB,EAASyhB,GAAUnsC,KAAMisC,GAAQ,EACjC,MAEF,IAAK,SACHvhB,GAAU1qB,KAAOisC,GAAQ,IACzB,MAGF,IAAK,SACHvhB,GAAU1qB,KAAOisC,GAAQ,IACzB,MAGF,IAAK,OACHvhB,GAAU1qB,KAAOisC,GAAQ,KACzB,MAGF,IAAK,MACHvhB,GAAU1qB,KAAOisC,EAAOC,GAAa,MACrC,MAGF,IAAK,OACHxhB,GAAU1qB,KAAOisC,EAAOC,GAAa,OACrC,MAGF,QACExhB,EAAS1qB,KAAOisC,EAGpB,OAAOD,EAAUthB,EAASiF,GAASjF,GAGrC,SAASyhB,GAAU5mC,EAAGkU,GACpB,GAAIlU,EAAE+qB,OAAS7W,EAAE6W,OAGf,OAAQ6b,GAAU1yB,EAAGlU,GAIvB,IAAI6mC,EAAyC,IAAvB3yB,EAAEiW,OAASnqB,EAAEmqB,SAAgBjW,EAAE4W,QAAU9qB,EAAE8qB,SAEjEgc,EAAS9mC,EAAEkiC,QAAQhnC,IAAI2rC,EAAgB,UAevC,QAASA,GAXL3yB,EAAI4yB,EAAS,GAGL5yB,EAAI4yB,IAAWA,EAFf9mC,EAAEkiC,QAAQhnC,IAAI2rC,EAAiB,EAAG,YAMlC3yB,EAAI4yB,IAFJ9mC,EAAEkiC,QAAQhnC,IAAI2rC,EAAiB,EAAG,UAETC,MAIA,EAMvC,SAASntC,KACP,OAAOc,KAAKynC,QAAQpiB,OAAO,MAAMD,OAAO,oCAG1C,SAASknB,GAAYC,GACnB,IAAKvsC,KAAK4mB,UACR,OAAO,KAGT,IAAIpB,GAAqB,IAAf+mB,EACNrwC,EAAIspB,EAAMxlB,KAAKynC,QAAQjiB,MAAQxlB,KAEnC,OAAI9D,EAAEwzB,OAAS,GAAKxzB,EAAEwzB,OAAS,KACtB3D,EAAa7vB,EAAGspB,EAAM,iCAAmC,gCAG9D6D,EAAWvE,KAAKpnB,UAAU4uC,aAExB9mB,EACKxlB,KAAKwsC,SAASF,cAEd,IAAIxnB,KAAK9kB,KAAKklB,UAA+B,GAAnBllB,KAAKknC,YAAmB,KAAMoF,cAAc7nC,QAAQ,IAAKsnB,EAAa7vB,EAAG,MAIvG6vB,EAAa7vB,EAAGspB,EAAM,+BAAiC,8BAUhE,SAASinB,KACP,IAAKzsC,KAAK4mB,UACR,MAAO,qBAAuB5mB,KAAK7B,GAAK,OAG1C,IAEI2kB,EACA4M,EACAgd,EACAC,EALAhhB,EAAO,SACPihB,EAAO,GAeX,OATK5sC,KAAK+oC,YACRpd,EAA4B,IAArB3rB,KAAKknC,YAAoB,aAAe,mBAC/C0F,EAAO,KAGT9pB,EAAS,IAAM6I,EAAO,MACtB+D,EAAO,GAAK1vB,KAAK0vB,QAAU1vB,KAAK0vB,QAAU,KAAO,OAAS,SAC1Dgd,EAAW,wBACXC,EAASC,EAAO,OACT5sC,KAAKolB,OAAOtC,EAAS4M,EAAOgd,EAAWC,GAGhD,SAASvnB,GAAOynB,GACTA,IACHA,EAAc7sC,KAAKipC,QAAU7kB,EAAM0oB,iBAAmB1oB,EAAM2oB,eAG9D,IAAIriB,EAASqB,EAAa/rB,KAAM6sC,GAChC,OAAO7sC,KAAK4rB,aAAaohB,WAAWtiB,GAGtC,SAASrrB,GAAK4rC,EAAM9c,GAClB,OAAInuB,KAAK4mB,YAAc+B,EAASsiB,IAASA,EAAKrkB,WAAakc,GAAYmI,GAAMrkB,WACpE6e,GAAe,CACpB5d,GAAI7nB,KACJX,KAAM4rC,IACL5lB,OAAOrlB,KAAKqlB,UAAU4nB,UAAU9e,GAE5BnuB,KAAK4rB,aAAaK,cAI7B,SAASihB,GAAQ/e,GACf,OAAOnuB,KAAKX,KAAKyjC,KAAe3U,GAGlC,SAAStG,GAAGojB,EAAM9c,GAChB,OAAInuB,KAAK4mB,YAAc+B,EAASsiB,IAASA,EAAKrkB,WAAakc,GAAYmI,GAAMrkB,WACpE6e,GAAe,CACpBpmC,KAAMW,KACN6nB,GAAIojB,IACH5lB,OAAOrlB,KAAKqlB,UAAU4nB,UAAU9e,GAE5BnuB,KAAK4rB,aAAaK,cAI7B,SAASkhB,GAAMhf,GACb,OAAOnuB,KAAK6nB,GAAGib,KAAe3U,GAMhC,SAAS9I,GAAOhoB,GACd,IAAI+vC,EAEJ,YAAYjoC,IAAR9H,EACK2C,KAAKuoB,QAAQmV,OAIC,OAFrB0P,EAAgBxP,GAAUvgC,MAGxB2C,KAAKuoB,QAAU6kB,GAGVptC,MApHXokB,EAAM2oB,cAAgB,uBACtB3oB,EAAM0oB,iBAAmB,yBAuHzB,IAAIO,GAAOvxB,EAAU,mJAAmJ,SAAUze,GAChL,YAAY8H,IAAR9H,EACK2C,KAAK4rB,aAEL5rB,KAAKqlB,OAAOhoB,MAIvB,SAASuuB,KACP,OAAO5rB,KAAKuoB,QAGd,IAAI+kB,GAAgB,IAChBC,GAAgB,GAAKD,GACrBE,GAAc,GAAKD,GACnBE,GAAmB,QAAwBD,GAE/C,SAASE,GAAMC,EAAUC,GACvB,OAAQD,EAAWC,EAAUA,GAAWA,EAG1C,SAASC,GAAiB7f,EAAG9xB,EAAGE,GAE9B,OAAI4xB,EAAI,KAAOA,GAAK,EAEX,IAAIlJ,KAAKkJ,EAAI,IAAK9xB,EAAGE,GAAKqxC,GAE1B,IAAI3oB,KAAKkJ,EAAG9xB,EAAGE,GAAG8oB,UAI7B,SAAS4oB,GAAe9f,EAAG9xB,EAAGE,GAE5B,OAAI4xB,EAAI,KAAOA,GAAK,EAEXlJ,KAAK+R,IAAI7I,EAAI,IAAK9xB,EAAGE,GAAKqxC,GAE1B3oB,KAAK+R,IAAI7I,EAAG9xB,EAAGE,GAI1B,SAASgvC,GAAQtc,GACf,IAAImc,EAAM8C,EAGV,QAAc5oC,KAFd2pB,EAAQD,GAAeC,KAEc,gBAAVA,IAA4B9uB,KAAK4mB,UAC1D,OAAO5mB,KAKT,OAFA+tC,EAAc/tC,KAAKqoB,OAASylB,GAAiBD,GAErC/e,GACN,IAAK,OACHmc,EAAO8C,EAAY/tC,KAAK0vB,OAAQ,EAAG,GACnC,MAEF,IAAK,UACHub,EAAO8C,EAAY/tC,KAAK0vB,OAAQ1vB,KAAKqwB,QAAUrwB,KAAKqwB,QAAU,EAAG,GACjE,MAEF,IAAK,QACH4a,EAAO8C,EAAY/tC,KAAK0vB,OAAQ1vB,KAAKqwB,QAAS,GAC9C,MAEF,IAAK,OACH4a,EAAO8C,EAAY/tC,KAAK0vB,OAAQ1vB,KAAKqwB,QAASrwB,KAAKswB,OAAStwB,KAAKu3B,WACjE,MAEF,IAAK,UACH0T,EAAO8C,EAAY/tC,KAAK0vB,OAAQ1vB,KAAKqwB,QAASrwB,KAAKswB,QAAUtwB,KAAKguC,aAAe,IACjF,MAEF,IAAK,MACL,IAAK,OACH/C,EAAO8C,EAAY/tC,KAAK0vB,OAAQ1vB,KAAKqwB,QAASrwB,KAAKswB,QACnD,MAEF,IAAK,OACH2a,EAAOjrC,KAAKvB,GAAGymB,UACf+lB,GAAQyC,GAAMzC,GAAQjrC,KAAKqoB,OAAS,EAAIroB,KAAKknC,YAAcqG,IAAgBC,IAC3E,MAEF,IAAK,SACHvC,EAAOjrC,KAAKvB,GAAGymB,UACf+lB,GAAQyC,GAAMzC,EAAMsC,IACpB,MAEF,IAAK,SACHtC,EAAOjrC,KAAKvB,GAAGymB,UACf+lB,GAAQyC,GAAMzC,EAAMqC,IAOxB,OAHAttC,KAAKvB,GAAGipC,QAAQuD,GAEhB7mB,EAAMsE,aAAa1oB,MAAM,GAClBA,KAGT,SAASurC,GAAMzc,GACb,IAAImc,EAAM8C,EAGV,QAAc5oC,KAFd2pB,EAAQD,GAAeC,KAEc,gBAAVA,IAA4B9uB,KAAK4mB,UAC1D,OAAO5mB,KAKT,OAFA+tC,EAAc/tC,KAAKqoB,OAASylB,GAAiBD,GAErC/e,GACN,IAAK,OACHmc,EAAO8C,EAAY/tC,KAAK0vB,OAAS,EAAG,EAAG,GAAK,EAC5C,MAEF,IAAK,UACHub,EAAO8C,EAAY/tC,KAAK0vB,OAAQ1vB,KAAKqwB,QAAUrwB,KAAKqwB,QAAU,EAAI,EAAG,GAAK,EAC1E,MAEF,IAAK,QACH4a,EAAO8C,EAAY/tC,KAAK0vB,OAAQ1vB,KAAKqwB,QAAU,EAAG,GAAK,EACvD,MAEF,IAAK,OACH4a,EAAO8C,EAAY/tC,KAAK0vB,OAAQ1vB,KAAKqwB,QAASrwB,KAAKswB,OAAStwB,KAAKu3B,UAAY,GAAK,EAClF,MAEF,IAAK,UACH0T,EAAO8C,EAAY/tC,KAAK0vB,OAAQ1vB,KAAKqwB,QAASrwB,KAAKswB,QAAUtwB,KAAKguC,aAAe,GAAK,GAAK,EAC3F,MAEF,IAAK,MACL,IAAK,OACH/C,EAAO8C,EAAY/tC,KAAK0vB,OAAQ1vB,KAAKqwB,QAASrwB,KAAKswB,OAAS,GAAK,EACjE,MAEF,IAAK,OACH2a,EAAOjrC,KAAKvB,GAAGymB,UACf+lB,GAAQuC,GAAcE,GAAMzC,GAAQjrC,KAAKqoB,OAAS,EAAIroB,KAAKknC,YAAcqG,IAAgBC,IAAe,EACxG,MAEF,IAAK,SACHvC,EAAOjrC,KAAKvB,GAAGymB,UACf+lB,GAAQsC,GAAgBG,GAAMzC,EAAMsC,IAAiB,EACrD,MAEF,IAAK,SACHtC,EAAOjrC,KAAKvB,GAAGymB,UACf+lB,GAAQqC,GAAgBI,GAAMzC,EAAMqC,IAAiB,EAOzD,OAHAttC,KAAKvB,GAAGipC,QAAQuD,GAEhB7mB,EAAMsE,aAAa1oB,MAAM,GAClBA,KAGT,SAASklB,KACP,OAAOllB,KAAKvB,GAAGymB,UAAkC,KAArBllB,KAAKsoB,SAAW,GAG9C,SAAS2lB,KACP,OAAOt/B,KAAKkhB,MAAM7vB,KAAKklB,UAAY,KAGrC,SAASsnB,KACP,OAAO,IAAI1nB,KAAK9kB,KAAKklB,WAGvB,SAAS4jB,KACP,IAAI5sC,EAAI8D,KACR,MAAO,CAAC9D,EAAEwzB,OAAQxzB,EAAEm0B,QAASn0B,EAAEo0B,OAAQp0B,EAAEqnC,OAAQrnC,EAAEmoC,SAAUnoC,EAAEooC,SAAUpoC,EAAEqoC,eAG7E,SAAS2J,KACP,IAAIhyC,EAAI8D,KACR,MAAO,CACL4lC,MAAO1pC,EAAEwzB,OACTmE,OAAQ33B,EAAEm0B,QACVC,KAAMp0B,EAAEo0B,OACRiL,MAAOr/B,EAAEq/B,QACTG,QAASx/B,EAAEw/B,UACXI,QAAS5/B,EAAE4/B,UACXoK,aAAchqC,EAAEgqC,gBAIpB,SAASiI,KAEP,OAAOnuC,KAAK4mB,UAAY5mB,KAAKssC,cAAgB,KAG/C,SAAS8B,KACP,OAAOxnB,EAAQ5mB,MAGjB,SAASquC,KACP,OAAOh2B,EAAO,GAAIqO,EAAgB1mB,OAGpC,SAASsuC,KACP,OAAO5nB,EAAgB1mB,MAAM6lB,SAG/B,SAAS0oB,KACP,MAAO,CACL5oC,MAAO3F,KAAK7B,GACZinB,OAAQplB,KAAKkoB,GACb7C,OAAQrlB,KAAKuoB,QACbqc,MAAO5kC,KAAKqoB,OACZ/C,OAAQtlB,KAAKonB,SA+CjB,SAASonB,GAAWtyC,EAAGkpB,GACrB,IAAItpB,EACAC,EACAu0B,EACAme,EAAOzuC,KAAK0uC,OAAS9Q,GAAU,MAAM8Q,MAEzC,IAAK5yC,EAAI,EAAGC,EAAI0yC,EAAK5vC,OAAQ/C,EAAIC,IAAKD,EAAG,CACvC,cAAe2yC,EAAK3yC,GAAG6yC,OACrB,IAAK,SAEHre,EAAOlM,EAAMqqB,EAAK3yC,GAAG6yC,OAAOvD,QAAQ,OACpCqD,EAAK3yC,GAAG6yC,MAAQre,EAAKpL,UAIzB,cAAeupB,EAAK3yC,GAAG8yC,OACrB,IAAK,YACHH,EAAK3yC,GAAG8yC,MAAQ,IAChB,MAEF,IAAK,SAEHte,EAAOlM,EAAMqqB,EAAK3yC,GAAG8yC,OAAOxD,QAAQ,OAAOlmB,UAC3CupB,EAAK3yC,GAAG8yC,MAAQte,EAAKpL,WAK3B,OAAOupB,EAGT,SAASI,GAAgBC,EAAS1pB,EAAQE,GACxC,IAAIxpB,EACAC,EAEAM,EACAyhC,EACAiR,EAHAN,EAAOzuC,KAAKyuC,OAMhB,IAFAK,EAAUA,EAAQlqC,cAEb9I,EAAI,EAAGC,EAAI0yC,EAAK5vC,OAAQ/C,EAAIC,IAAKD,EAKpC,GAJAO,EAAOoyC,EAAK3yC,GAAGO,KAAKuI,cACpBk5B,EAAO2Q,EAAK3yC,GAAGgiC,KAAKl5B,cACpBmqC,EAASN,EAAK3yC,GAAGizC,OAAOnqC,cAEpB0gB,EACF,OAAQF,GACN,IAAK,IACL,IAAK,KACL,IAAK,MACH,GAAI0Y,IAASgR,EACX,OAAOL,EAAK3yC,GAGd,MAEF,IAAK,OACH,GAAIO,IAASyyC,EACX,OAAOL,EAAK3yC,GAGd,MAEF,IAAK,QACH,GAAIizC,IAAWD,EACb,OAAOL,EAAK3yC,QAKb,GAAI,CAACO,EAAMyhC,EAAMiR,GAAQhc,QAAQ+b,IAAY,EAClD,OAAOL,EAAK3yC,GAKlB,SAASkzC,GAAsB1oB,EAAKoJ,GAClC,IAAIuf,EAAM3oB,EAAIqoB,OAASroB,EAAIsoB,MAAQ,GAAM,EAEzC,YAAazpC,IAATuqB,EACKtL,EAAMkC,EAAIqoB,OAAOjf,OAEjBtL,EAAMkC,EAAIqoB,OAAOjf,QAAUA,EAAOpJ,EAAI0gB,QAAUiI,EAI3D,SAASC,KACP,IAAIpzC,EACAC,EACAgsB,EACA0mB,EAAOzuC,KAAK4rB,aAAa6iB,OAE7B,IAAK3yC,EAAI,EAAGC,EAAI0yC,EAAK5vC,OAAQ/C,EAAIC,IAAKD,EAAG,CAIvC,GAFAisB,EAAM/nB,KAAKynC,QAAQ2D,QAAQ,OAAOlmB,UAE9BupB,EAAK3yC,GAAG6yC,OAAS5mB,GAAOA,GAAO0mB,EAAK3yC,GAAG8yC,MACzC,OAAOH,EAAK3yC,GAAGO,KAGjB,GAAIoyC,EAAK3yC,GAAG8yC,OAAS7mB,GAAOA,GAAO0mB,EAAK3yC,GAAG6yC,MACzC,OAAOF,EAAK3yC,GAAGO,KAInB,MAAO,GAGT,SAAS8yC,KACP,IAAIrzC,EACAC,EACAgsB,EACA0mB,EAAOzuC,KAAK4rB,aAAa6iB,OAE7B,IAAK3yC,EAAI,EAAGC,EAAI0yC,EAAK5vC,OAAQ/C,EAAIC,IAAKD,EAAG,CAIvC,GAFAisB,EAAM/nB,KAAKynC,QAAQ2D,QAAQ,OAAOlmB,UAE9BupB,EAAK3yC,GAAG6yC,OAAS5mB,GAAOA,GAAO0mB,EAAK3yC,GAAG8yC,MACzC,OAAOH,EAAK3yC,GAAGizC,OAGjB,GAAIN,EAAK3yC,GAAG8yC,OAAS7mB,GAAOA,GAAO0mB,EAAK3yC,GAAG6yC,MACzC,OAAOF,EAAK3yC,GAAGizC,OAInB,MAAO,GAGT,SAASK,KACP,IAAItzC,EACAC,EACAgsB,EACA0mB,EAAOzuC,KAAK4rB,aAAa6iB,OAE7B,IAAK3yC,EAAI,EAAGC,EAAI0yC,EAAK5vC,OAAQ/C,EAAIC,IAAKD,EAAG,CAIvC,GAFAisB,EAAM/nB,KAAKynC,QAAQ2D,QAAQ,OAAOlmB,UAE9BupB,EAAK3yC,GAAG6yC,OAAS5mB,GAAOA,GAAO0mB,EAAK3yC,GAAG8yC,MACzC,OAAOH,EAAK3yC,GAAGgiC,KAGjB,GAAI2Q,EAAK3yC,GAAG8yC,OAAS7mB,GAAOA,GAAO0mB,EAAK3yC,GAAG6yC,MACzC,OAAOF,EAAK3yC,GAAGgiC,KAInB,MAAO,GAGT,SAASuR,KACP,IAAIvzC,EACAC,EACAkzC,EACAlnB,EACA0mB,EAAOzuC,KAAK4rB,aAAa6iB,OAE7B,IAAK3yC,EAAI,EAAGC,EAAI0yC,EAAK5vC,OAAQ/C,EAAIC,IAAKD,EAKpC,GAJAmzC,EAAMR,EAAK3yC,GAAG6yC,OAASF,EAAK3yC,GAAG8yC,MAAQ,GAAM,EAE7C7mB,EAAM/nB,KAAKynC,QAAQ2D,QAAQ,OAAOlmB,UAE9BupB,EAAK3yC,GAAG6yC,OAAS5mB,GAAOA,GAAO0mB,EAAK3yC,GAAG8yC,OAASH,EAAK3yC,GAAG8yC,OAAS7mB,GAAOA,GAAO0mB,EAAK3yC,GAAG6yC,MACzF,OAAQ3uC,KAAK0vB,OAAStL,EAAMqqB,EAAK3yC,GAAG6yC,OAAOjf,QAAUuf,EAAMR,EAAK3yC,GAAGkrC,OAIvE,OAAOhnC,KAAK0vB,OAGd,SAAS4f,GAAcrd,GAKrB,OAJKzN,EAAWxkB,KAAM,mBACpBuvC,GAAiBtzC,KAAK+D,MAGjBiyB,EAAWjyB,KAAKwvC,eAAiBxvC,KAAKyvC,WAG/C,SAASC,GAAczd,GAKrB,OAJKzN,EAAWxkB,KAAM,mBACpBuvC,GAAiBtzC,KAAK+D,MAGjBiyB,EAAWjyB,KAAK2vC,eAAiB3vC,KAAKyvC,WAG/C,SAASG,GAAgB3d,GAKvB,OAJKzN,EAAWxkB,KAAM,qBACpBuvC,GAAiBtzC,KAAK+D,MAGjBiyB,EAAWjyB,KAAK6vC,iBAAmB7vC,KAAKyvC,WAGjD,SAASK,GAAa7d,EAAU5M,GAC9B,OAAOA,EAAOqqB,cAAczd,GAG9B,SAAS8d,GAAa9d,EAAU5M,GAC9B,OAAOA,EAAOiqB,cAAcrd,GAG9B,SAAS+d,GAAe/d,EAAU5M,GAChC,OAAOA,EAAOuqB,gBAAgB3d,GAGhC,SAASge,GAAoBhe,EAAU5M,GACrC,OAAOA,EAAO6qB,sBAAwB1e,GAGxC,SAAS+d,KACP,IAIIzzC,EACAC,EALAo0C,EAAa,GACbC,EAAa,GACbC,EAAe,GACfna,EAAc,GAGduY,EAAOzuC,KAAKyuC,OAEhB,IAAK3yC,EAAI,EAAGC,EAAI0yC,EAAK5vC,OAAQ/C,EAAIC,IAAKD,EACpCs0C,EAAWxxC,KAAKwzB,GAAYqc,EAAK3yC,GAAGO,OACpC8zC,EAAWvxC,KAAKwzB,GAAYqc,EAAK3yC,GAAGgiC,OACpCuS,EAAazxC,KAAKwzB,GAAYqc,EAAK3yC,GAAGizC,SACtC7Y,EAAYt3B,KAAKwzB,GAAYqc,EAAK3yC,GAAGO,OACrC65B,EAAYt3B,KAAKwzB,GAAYqc,EAAK3yC,GAAGgiC,OACrC5H,EAAYt3B,KAAKwzB,GAAYqc,EAAK3yC,GAAGizC,SAGvC/uC,KAAKyvC,WAAa,IAAI/9B,OAAO,KAAOwkB,EAAYvyB,KAAK,KAAO,IAAK,KACjE3D,KAAKwvC,eAAiB,IAAI99B,OAAO,KAAO0+B,EAAWzsC,KAAK,KAAO,IAAK,KACpE3D,KAAK2vC,eAAiB,IAAIj+B,OAAO,KAAOy+B,EAAWxsC,KAAK,KAAO,IAAK,KACpE3D,KAAK6vC,iBAAmB,IAAIn+B,OAAO,KAAO2+B,EAAa1sC,KAAK,KAAO,IAAK,KAW1E,SAAS2sC,GAAuBjiC,EAAO/R,GACrCkvB,EAAe,EAAG,CAACnd,EAAOA,EAAMxP,QAAS,EAAGvC,GA6B9C,SAASi0C,GAAe5qC,GACtB,OAAO6qC,GAAqBv0C,KAAK+D,KAAM2F,EAAO3F,KAAKs3B,OAAQt3B,KAAKu3B,UAAWv3B,KAAK4rB,aAAaqM,MAAMhB,IAAKj3B,KAAK4rB,aAAaqM,MAAMf,KAGlI,SAASuZ,GAAkB9qC,GACzB,OAAO6qC,GAAqBv0C,KAAK+D,KAAM2F,EAAO3F,KAAKgmC,UAAWhmC,KAAKguC,aAAc,EAAG,GAGtF,SAAS0C,KACP,OAAO5Y,GAAY93B,KAAK0vB,OAAQ,EAAG,GAGrC,SAASihB,KACP,OAAO7Y,GAAY93B,KAAK4wC,cAAe,EAAG,GAG5C,SAASC,KACP,IAAIC,EAAW9wC,KAAK4rB,aAAaqM,MAEjC,OAAOH,GAAY93B,KAAK0vB,OAAQohB,EAAS7Z,IAAK6Z,EAAS5Z,KAGzD,SAAS6Z,KACP,IAAID,EAAW9wC,KAAK4rB,aAAaqM,MAEjC,OAAOH,GAAY93B,KAAKuiC,WAAYuO,EAAS7Z,IAAK6Z,EAAS5Z,KAG7D,SAASsZ,GAAqB7qC,EAAO2xB,EAAMC,EAASN,EAAKC,GACvD,IAAI8Z,EAEJ,OAAa,MAATrrC,EACKgyB,GAAW33B,KAAMi3B,EAAKC,GAAKxH,MAI9B4H,GAFJ0Z,EAAclZ,GAAYnyB,EAAOsxB,EAAKC,MAGpCI,EAAO0Z,GAGFC,GAAWh1C,KAAK+D,KAAM2F,EAAO2xB,EAAMC,EAASN,EAAKC,IAI5D,SAAS+Z,GAAW1O,EAAUjL,EAAMC,EAASN,EAAKC,GAChD,IAAIga,EAAgB7Z,GAAmBkL,EAAUjL,EAAMC,EAASN,EAAKC,GACjE5G,EAAOsG,GAAcsa,EAAcxhB,KAAM,EAAGwhB,EAAcxZ,WAI9D,OAHA13B,KAAK0vB,KAAKY,EAAKwG,kBACf92B,KAAKqwB,MAAMC,EAAKsR,eAChB5hC,KAAKswB,KAAKA,EAAKuR,cACR7hC,KAeT,SAASmxC,GAAcxrC,GACrB,OAAgB,MAATA,EAAgBgJ,KAAKihB,MAAM5vB,KAAKqwB,QAAU,GAAK,GAAKrwB,KAAKqwB,MAAoB,GAAb1qB,EAAQ,GAAS3F,KAAKqwB,QAAU,GA/XzG7E,EAAe,IAAK,EAAG,EAAG,WAC1BA,EAAe,KAAM,EAAG,EAAG,WAC3BA,EAAe,MAAO,EAAG,EAAG,WAC5BA,EAAe,OAAQ,EAAG,EAAG,WAC7BA,EAAe,QAAS,EAAG,EAAG,aAC9BA,EAAe,IAAK,CAAC,IAAK,GAAI,KAAM,WACpCA,EAAe,IAAK,CAAC,KAAM,GAAI,EAAG,WAClCA,EAAe,IAAK,CAAC,MAAO,GAAI,EAAG,WACnCA,EAAe,IAAK,CAAC,OAAQ,GAAI,EAAG,WACpCsG,GAAc,IAAKge,IACnBhe,GAAc,KAAMge,IACpBhe,GAAc,MAAOge,IACrBhe,GAAc,OAAQie,IACtBje,GAAc,QAASke,IACvBtd,GAAc,CAAC,IAAK,KAAM,MAAO,OAAQ,UAAU,SAAU/sB,EAAOuZ,EAAOuJ,EAAQpa,GACjF,IAAIiY,EAAMmC,EAAOF,QAAQ6oB,UAAUzrC,EAAO0I,EAAOoa,EAAOrB,SAEpDd,EACFI,EAAgB+B,GAAQnC,IAAMA,EAE9BI,EAAgB+B,GAAQzC,WAAargB,KAGzCmsB,GAAc,IAAKN,IACnBM,GAAc,KAAMN,IACpBM,GAAc,MAAON,IACrBM,GAAc,OAAQN,IACtBM,GAAc,KAAMme,IACpBvd,GAAc,CAAC,IAAK,KAAM,MAAO,QAASM,IAC1CN,GAAc,CAAC,OAAO,SAAU/sB,EAAOuZ,EAAOuJ,EAAQpa,GACpD,IAAInD,EAEAud,EAAOF,QAAQ2nB,uBACjBhlC,EAAQvF,EAAMuF,MAAMud,EAAOF,QAAQ2nB,uBAGjCznB,EAAOF,QAAQ8oB,oBACjBnyB,EAAM8T,IAAQvK,EAAOF,QAAQ8oB,oBAAoB1rC,EAAOuF,GAExDgU,EAAM8T,IAAQqD,SAAS1wB,EAAO,OAiPlC6lB,EAAe,EAAG,CAAC,KAAM,GAAI,GAAG,WAC9B,OAAOxrB,KAAKuiC,WAAa,OAE3B/W,EAAe,EAAG,CAAC,KAAM,GAAI,GAAG,WAC9B,OAAOxrB,KAAK4wC,cAAgB,OAO9BN,GAAuB,OAAQ,YAC/BA,GAAuB,QAAS,YAChCA,GAAuB,OAAQ,eAC/BA,GAAuB,QAAS,eAEhC7hB,GAAa,WAAY,MACzBA,GAAa,cAAe,MAE5BW,GAAgB,WAAY,GAC5BA,GAAgB,cAAe,GAE/B0C,GAAc,IAAKL,IACnBK,GAAc,IAAKL,IACnBK,GAAc,KAAMZ,GAAWJ,IAC/BgB,GAAc,KAAMZ,GAAWJ,IAC/BgB,GAAc,OAAQR,GAAWN,IACjCc,GAAc,OAAQR,GAAWN,IACjCc,GAAc,QAASP,GAAWN,IAClCa,GAAc,QAASP,GAAWN,IAClC2B,GAAkB,CAAC,OAAQ,QAAS,OAAQ,UAAU,SAAUjtB,EAAO2xB,EAAM7O,EAAQpa,GACnFipB,EAAKjpB,EAAM8c,OAAO,EAAG,IAAM2E,GAAMnqB,MAEnCitB,GAAkB,CAAC,KAAM,OAAO,SAAUjtB,EAAO2xB,EAAM7O,EAAQpa,GAC7DipB,EAAKjpB,GAAS+V,EAAMgS,kBAAkBzwB,MAyDxC6lB,EAAe,IAAK,EAAG,KAAM,WAE7BiD,GAAa,UAAW,KAExBW,GAAgB,UAAW,GAE3B0C,GAAc,IAAKjB,IACnB6B,GAAc,KAAK,SAAU/sB,EAAOuZ,GAClCA,EAAM+T,IAA8B,GAApBnD,GAAMnqB,GAAS,MAQjC6lB,EAAe,IAAK,CAAC,KAAM,GAAI,KAAM,QAErCiD,GAAa,OAAQ,KAErBW,GAAgB,OAAQ,GAExB0C,GAAc,IAAKZ,IACnBY,GAAc,KAAMZ,GAAWJ,IAC/BgB,GAAc,MAAM,SAAUG,EAAU5M,GAEtC,OAAO4M,EAAW5M,EAAOoE,yBAA2BpE,EAAOsE,cAAgBtE,EAAOmE,kCAEpFkJ,GAAc,CAAC,IAAK,MAAOQ,IAC3BR,GAAc,MAAM,SAAU/sB,EAAOuZ,GACnCA,EAAMgU,IAAQpD,GAAMnqB,EAAMuF,MAAMgmB,IAAW,OAG7C,IAAIogB,GAAmBphB,GAAW,QAAQ,GAe1C,SAASqhB,GAAgB5rC,GACvB,IAAI+xB,EAAY/oB,KAAK83B,OAAOzmC,KAAKynC,QAAQ2D,QAAQ,OAASprC,KAAKynC,QAAQ2D,QAAQ,SAAW,OAAS,EACnG,OAAgB,MAATzlC,EAAgB+xB,EAAY13B,KAAKS,IAAIkF,EAAQ+xB,EAAW,KAfjElM,EAAe,MAAO,CAAC,OAAQ,GAAI,OAAQ,aAE3CiD,GAAa,YAAa,OAE1BW,GAAgB,YAAa,GAE7B0C,GAAc,MAAOT,IACrBS,GAAc,OAAQf,IACtB2B,GAAc,CAAC,MAAO,SAAS,SAAU/sB,EAAOuZ,EAAOuJ,GACrDA,EAAO4Z,WAAavS,GAAMnqB,MAU5B6lB,EAAe,IAAK,CAAC,KAAM,GAAI,EAAG,UAElCiD,GAAa,SAAU,KAEvBW,GAAgB,SAAU,IAE1B0C,GAAc,IAAKZ,IACnBY,GAAc,KAAMZ,GAAWJ,IAC/B4B,GAAc,CAAC,IAAK,MAAOU,IAE3B,IAAIoe,GAAethB,GAAW,WAAW,GAEzC1E,EAAe,IAAK,CAAC,KAAM,GAAI,EAAG,UAElCiD,GAAa,SAAU,KAEvBW,GAAgB,SAAU,IAE1B0C,GAAc,IAAKZ,IACnBY,GAAc,KAAMZ,GAAWJ,IAC/B4B,GAAc,CAAC,IAAK,MAAOW,IAE3B,IAmCIhlB,GAAOojC,GAnCPC,GAAexhB,GAAW,WAAW,GAqCzC,IAnCA1E,EAAe,IAAK,EAAG,GAAG,WACxB,SAAUxrB,KAAKukC,cAAgB,QAEjC/Y,EAAe,EAAG,CAAC,KAAM,GAAI,GAAG,WAC9B,SAAUxrB,KAAKukC,cAAgB,OAEjC/Y,EAAe,EAAG,CAAC,MAAO,GAAI,EAAG,eACjCA,EAAe,EAAG,CAAC,OAAQ,GAAI,GAAG,WAChC,OAA4B,GAArBxrB,KAAKukC,iBAEd/Y,EAAe,EAAG,CAAC,QAAS,GAAI,GAAG,WACjC,OAA4B,IAArBxrB,KAAKukC,iBAEd/Y,EAAe,EAAG,CAAC,SAAU,GAAI,GAAG,WAClC,OAA4B,IAArBxrB,KAAKukC,iBAEd/Y,EAAe,EAAG,CAAC,UAAW,GAAI,GAAG,WACnC,OAA4B,IAArBxrB,KAAKukC,iBAEd/Y,EAAe,EAAG,CAAC,WAAY,GAAI,GAAG,WACpC,OAA4B,IAArBxrB,KAAKukC,iBAEd/Y,EAAe,EAAG,CAAC,YAAa,GAAI,GAAG,WACrC,OAA4B,IAArBxrB,KAAKukC,iBAGd9V,GAAa,cAAe,MAE5BW,GAAgB,cAAe,IAE/B0C,GAAc,IAAKT,GAAWR,IAC9BiB,GAAc,KAAMT,GAAWP,IAC/BgB,GAAc,MAAOT,GAAWN,IAG3B1iB,GAAQ,OAAQA,GAAMxP,QAAU,EAAGwP,IAAS,IAC/CyjB,GAAczjB,GAAOmjB,IAGvB,SAASmgB,GAAQhsC,EAAOuZ,GACtBA,EAAMoU,IAAexD,GAAuB,KAAhB,KAAOnqB,IAGrC,IAAK0I,GAAQ,IAAKA,GAAMxP,QAAU,EAAGwP,IAAS,IAC5CqkB,GAAcrkB,GAAOsjC,IAQvB,SAASC,KACP,OAAO5xC,KAAKqoB,OAAS,MAAQ,GAG/B,SAASwpB,KACP,OAAO7xC,KAAKqoB,OAAS,6BAA+B,GAVtDopB,GAAoBvhB,GAAW,gBAAgB,GAE/C1E,EAAe,IAAK,EAAG,EAAG,YAC1BA,EAAe,KAAM,EAAG,EAAG,YAU3B,IAAIsmB,GAAQtpB,EAAO9qB,UA0FnB,SAASq0C,GAAWpsC,GAClB,OAAOm9B,GAAoB,IAARn9B,GAGrB,SAASqsC,KACP,OAAOlP,GAAYze,MAAM,KAAM9K,WAAW04B,YAG5C,SAASC,GAAmB3vB,GAC1B,OAAOA,EAlGTuvB,GAAMrxC,IAAMA,GACZqxC,GAAMvnB,SAAWygB,GACjB8G,GAAMrK,MAAQA,GACdqK,GAAMvjB,KAAOA,GACbujB,GAAMvG,MAAQA,GACduG,GAAM1sB,OAASA,GACf0sB,GAAMzyC,KAAOA,GACbyyC,GAAM5E,QAAUA,GAChB4E,GAAMjqB,GAAKA,GACXiqB,GAAM3E,MAAQA,GACd2E,GAAMn1C,IAAM6zB,GACZshB,GAAMxD,UAAYA,GAClBwD,GAAMnI,QAAUA,GAChBmI,GAAMlI,SAAWA,GACjBkI,GAAMtG,UAAYA,GAClBsG,GAAMlG,OAASA,GACfkG,GAAMhG,cAAgBA,GACtBgG,GAAM/F,eAAiBA,GACvB+F,GAAMlrB,QAAUwnB,GAChB0D,GAAMzE,KAAOA,GACbyE,GAAMzsB,OAASA,GACfysB,GAAMlmB,WAAaA,GACnBkmB,GAAMljC,IAAMm2B,GACZ+M,GAAMvc,IAAMsP,GACZiN,GAAMzD,aAAeA,GACrByD,GAAMtuC,IAAMitB,GACZqhB,GAAM1G,QAAUA,GAChB0G,GAAMvJ,SAAWA,GACjBuJ,GAAMhJ,QAAUA,GAChBgJ,GAAM5D,SAAWA,GACjB4D,GAAMtF,OAASA,GACfsF,GAAMxF,YAAcA,GACpBwF,GAAMrF,QAAUA,GAEM,qBAAX5vC,QAAwC,MAAdA,OAAOs1C,MAC1CL,GAAMj1C,OAAOs1C,IAAI,+BAAiC,WAChD,MAAO,UAAYnyC,KAAKolB,SAAW,MAIvC0sB,GAAM3D,OAASA,GACf2D,GAAM5yC,SAAWA,GACjB4yC,GAAM7D,KAAOA,GACb6D,GAAM5sB,QAAUA,GAChB4sB,GAAMvD,aAAeA,GACrBuD,GAAMhD,QAAUI,GAChB4C,GAAMM,UAAYjD,GAClB2C,GAAMO,QAAUjD,GAChB0C,GAAMQ,QAAUjD,GAChByC,GAAMpiB,KAAO4G,GACbwb,GAAMriB,WAAa8G,GACnBub,GAAMvP,SAAWgO,GACjBuB,GAAMlB,YAAcH,GACpBqB,GAAMhM,QAAUgM,GAAMjM,SAAWsL,GACjCW,GAAMzhB,MAAQmF,GACdsc,GAAMvhB,YAAckF,GACpBqc,GAAMxa,KAAOwa,GAAM/L,MAAQ1N,GAC3ByZ,GAAM9L,QAAU8L,GAAMS,SAAWja,GACjCwZ,GAAMha,YAAc+Y,GACpBiB,GAAMU,gBAAkBzB,GACxBe,GAAMW,eAAiB/B,GACvBoB,GAAMY,sBAAwB/B,GAC9BmB,GAAMxhB,KAAOghB,GACbQ,GAAMpY,IAAMoY,GAAM7L,KAAO1L,GACzBuX,GAAMva,QAAUkD,GAChBqX,GAAM9D,WAAatT,GACnBoX,GAAMpa,UAAY6Z,GAClBO,GAAMvO,KAAOuO,GAAMvW,MAAQgB,GAC3BuV,GAAMzN,OAASyN,GAAMpW,QAAU8V,GAC/BM,GAAMxN,OAASwN,GAAMhW,QAAU4V,GAC/BI,GAAMvN,YAAcuN,GAAM5L,aAAeuL,GACzCK,GAAM5K,UAAYY,GAClBgK,GAAMtsB,IAAM6iB,GACZyJ,GAAMnK,MAAQW,GACdwJ,GAAMG,UAAYzJ,GAClBsJ,GAAMpJ,qBAAuBA,GAC7BoJ,GAAMa,MAAQhK,GACdmJ,GAAM/I,QAAUA,GAChB+I,GAAM9I,YAAcA,GACpB8I,GAAM7I,MAAQA,GACd6I,GAAMlN,MAAQqE,GACd6I,GAAMc,SAAWhB,GACjBE,GAAMe,SAAWhB,GACjBC,GAAMgB,MAAQh3B,EAAU,kDAAmDw1B,IAC3EQ,GAAMje,OAAS/X,EAAU,mDAAoD0Z,IAC7Esc,GAAMlM,MAAQ9pB,EAAU,iDAAkDwa,IAC1Ewb,GAAMlF,KAAO9wB,EAAU,2GAA4GssB,IACnI0J,GAAMiB,aAAej3B,EAAU,0GAA2G8sB,IAc1I,IAAIoK,GAAUjpB,EAAOrsB,UAkCrB,SAASu1C,GAAM7tB,EAAQ1jB,EAAOwxC,EAAOC,GACnC,IAAI9tB,EAASuY,KACTpY,EAAML,IAAY3hB,IAAI2vC,EAAQzxC,GAClC,OAAO2jB,EAAO6tB,GAAO1tB,EAAKJ,GAG5B,SAASguB,GAAehuB,EAAQ1jB,EAAOwxC,GAQrC,GAPItuB,EAASQ,KACX1jB,EAAQ0jB,EACRA,OAASjgB,GAGXigB,EAASA,GAAU,GAEN,MAAT1jB,EACF,OAAOuxC,GAAM7tB,EAAQ1jB,EAAOwxC,EAAO,SAGrC,IAAIp3C,EACAu3C,EAAM,GAEV,IAAKv3C,EAAI,EAAGA,EAAI,GAAIA,IAClBu3C,EAAIv3C,GAAKm3C,GAAM7tB,EAAQtpB,EAAGo3C,EAAO,SAGnC,OAAOG,EAWT,SAASC,GAAiBC,EAAcnuB,EAAQ1jB,EAAOwxC,GACzB,mBAAjBK,GACL3uB,EAASQ,KACX1jB,EAAQ0jB,EACRA,OAASjgB,GAGXigB,EAASA,GAAU,KAGnB1jB,EADA0jB,EAASmuB,EAETA,GAAe,EAEX3uB,EAASQ,KACX1jB,EAAQ0jB,EACRA,OAASjgB,GAGXigB,EAASA,GAAU,IAGrB,IAEItpB,EAFAupB,EAASuY,KACT3rB,EAAQshC,EAAeluB,EAAO4S,MAAMhB,IAAM,EAE1Coc,EAAM,GAEV,GAAa,MAAT3xC,EACF,OAAOuxC,GAAM7tB,GAAS1jB,EAAQuQ,GAAS,EAAGihC,EAAO,OAGnD,IAAKp3C,EAAI,EAAGA,EAAI,EAAGA,IACjBu3C,EAAIv3C,GAAKm3C,GAAM7tB,GAAStpB,EAAImW,GAAS,EAAGihC,EAAO,OAGjD,OAAOG,EAGT,SAASG,GAAWpuB,EAAQ1jB,GAC1B,OAAO0xC,GAAehuB,EAAQ1jB,EAAO,UAGvC,SAAS+xC,GAAgBruB,EAAQ1jB,GAC/B,OAAO0xC,GAAehuB,EAAQ1jB,EAAO,eAGvC,SAASgyC,GAAaH,EAAcnuB,EAAQ1jB,GAC1C,OAAO4xC,GAAiBC,EAAcnuB,EAAQ1jB,EAAO,YAGvD,SAASiyC,GAAkBJ,EAAcnuB,EAAQ1jB,GAC/C,OAAO4xC,GAAiBC,EAAcnuB,EAAQ1jB,EAAO,iBAGvD,SAASkyC,GAAgBL,EAAcnuB,EAAQ1jB,GAC7C,OAAO4xC,GAAiBC,EAAcnuB,EAAQ1jB,EAAO,eA3HvDsxC,GAAQzoB,SAAWA,EACnByoB,GAAQ7mB,eAAiBA,EACzB6mB,GAAQ/mB,YAAcA,EACtB+mB,GAAQtnB,QAAUA,EAClBsnB,GAAQtO,SAAWwN,GACnBc,GAAQhG,WAAakF,GACrBc,GAAQ9kB,aAAeA,GACvB8kB,GAAQ1kB,WAAaA,GACrB0kB,GAAQxvC,IAAMA,EACdwvC,GAAQvE,KAAOD,GACfwE,GAAQ5B,UAAYvC,GACpBmE,GAAQ1P,gBAAkB0L,GAC1BgE,GAAQtD,cAAgBA,GACxBsD,GAAQ1D,cAAgBA,GACxB0D,GAAQpD,gBAAkBA,GAC1BoD,GAAQnf,OAASS,GACjB0e,GAAQpf,YAAca,GACtBue,GAAQhf,YAAcmB,GACtB6d,GAAQjf,YAAcA,GACtBif,GAAQlf,iBAAmBA,GAC3Bkf,GAAQ1b,KAAOU,GACfgb,GAAQa,eAAiBzb,GACzB4a,GAAQc,eAAiB3b,GACzB6a,GAAQla,SAAWU,GACnBwZ,GAAQpa,YAAciB,GACtBmZ,GAAQna,cAAgBc,GACxBqZ,GAAQxa,cAAgB4B,GACxB4Y,GAAQ/Z,cAAgBA,GACxB+Z,GAAQha,mBAAqBA,GAC7Bga,GAAQja,iBAAmBA,GAC3Bia,GAAQ/W,KAAOJ,GACfmX,GAAQzsB,SAAWiW,GA+FnBmB,GAAmB,KAAM,CACvB8Q,KAAM,CAAC,CACLE,MAAO,aACPC,MAAO,IACP5H,OAAQ,EACR3qC,KAAM,cACN0yC,OAAQ,KACRjR,KAAM,MACL,CACD6Q,MAAO,aACPC,OAAO,IACP5H,OAAQ,EACR3qC,KAAM,gBACN0yC,OAAQ,KACRjR,KAAM,OAERlB,uBAAwB,uBACxBlR,QAAS,SAAUpJ,GACjB,IAAI7I,EAAI6I,EAAS,GAEjB,OAAOA,GADmC,IAA7BwN,GAAMxN,EAAS,IAAM,IAAY,KAAa,IAAN7I,EAAU,KAAa,IAANA,EAAU,KAAa,IAANA,EAAU,KAAO,SAK5G2K,EAAMipB,KAAOvxB,EAAU,wDAAyD6hB,IAChFvZ,EAAM2vB,SAAWj4B,EAAU,gEAAiE8hB,IAC5F,IAAIoW,GAAUrlC,KAAKqc,IAEnB,SAASA,KACP,IAAI9X,EAAOlT,KAAKqmC,MAUhB,OATArmC,KAAKmmC,cAAgB6N,GAAQh0C,KAAKmmC,eAClCnmC,KAAKomC,MAAQ4N,GAAQh0C,KAAKomC,OAC1BpmC,KAAKu0B,QAAUyf,GAAQh0C,KAAKu0B,SAC5BrhB,EAAKgzB,aAAe8N,GAAQ9gC,EAAKgzB,cACjChzB,EAAK4oB,QAAUkY,GAAQ9gC,EAAK4oB,SAC5B5oB,EAAKwoB,QAAUsY,GAAQ9gC,EAAKwoB,SAC5BxoB,EAAKqoB,MAAQyY,GAAQ9gC,EAAKqoB,OAC1BroB,EAAK2gB,OAASmgB,GAAQ9gC,EAAK2gB,QAC3B3gB,EAAK0yB,MAAQoO,GAAQ9gC,EAAK0yB,OACnB5lC,KAGT,SAASi0C,GAActO,EAAUhgC,EAAO5I,EAAO+sC,GAC7C,IAAIhF,EAAQW,GAAe9/B,EAAO5I,GAIlC,OAHA4oC,EAASQ,eAAiB2D,EAAYhF,EAAMqB,cAC5CR,EAASS,OAAS0D,EAAYhF,EAAMsB,MACpCT,EAASpR,SAAWuV,EAAYhF,EAAMvQ,QAC/BoR,EAASW,UAIlB,SAAS4N,GAAMvuC,EAAO5I,GACpB,OAAOk3C,GAAcj0C,KAAM2F,EAAO5I,EAAO,GAI3C,SAASo3C,GAAWxuC,EAAO5I,GACzB,OAAOk3C,GAAcj0C,KAAM2F,EAAO5I,GAAQ,GAG5C,SAASq3C,GAAQ9xB,GACf,OAAIA,EAAS,EACJ3T,KAAKkhB,MAAMvN,GAEX3T,KAAKihB,KAAKtN,GAIrB,SAAS+xB,KACP,IAIIvY,EACAJ,EACAH,EACAqK,EACA0O,EARApO,EAAelmC,KAAKmmC,cACpBF,EAAOjmC,KAAKomC,MACZvS,EAAS7zB,KAAKu0B,QACdrhB,EAAOlT,KAAKqmC,MAkChB,OA1BMH,GAAgB,GAAKD,GAAQ,GAAKpS,GAAU,GAAKqS,GAAgB,GAAKD,GAAQ,GAAKpS,GAAU,IACjGqS,GAAuD,MAAvCkO,GAAQG,GAAa1gB,GAAUoS,GAC/CA,EAAO,EACPpS,EAAS,GAKX3gB,EAAKgzB,aAAeA,EAAe,IACnCpK,EAAUnM,GAASuW,EAAe,KAClChzB,EAAK4oB,QAAUA,EAAU,GACzBJ,EAAU/L,GAASmM,EAAU,IAC7B5oB,EAAKwoB,QAAUA,EAAU,GACzBH,EAAQ5L,GAAS+L,EAAU,IAC3BxoB,EAAKqoB,MAAQA,EAAQ,GACrB0K,GAAQtW,GAAS4L,EAAQ,IAGzB1H,GADAygB,EAAiB3kB,GAAS6kB,GAAavO,IAEvCA,GAAQmO,GAAQG,GAAaD,IAE7B1O,EAAQjW,GAASkE,EAAS,IAC1BA,GAAU,GACV3gB,EAAK+yB,KAAOA,EACZ/yB,EAAK2gB,OAASA,EACd3gB,EAAK0yB,MAAQA,EACN5lC,KAGT,SAASw0C,GAAavO,GAGpB,OAAc,KAAPA,EAAc,OAGvB,SAASsO,GAAa1gB,GAEpB,OAAgB,OAATA,EAAkB,KAG3B,SAAS4gB,GAAG3lB,GACV,IAAK9uB,KAAK4mB,UACR,OAAOY,IAGT,IAAIye,EACApS,EACAqS,EAAelmC,KAAKmmC,cAGxB,GAAc,WAFdrX,EAAQD,GAAeC,KAEY,YAAVA,GAAiC,SAAVA,EAI9C,OAHAmX,EAAOjmC,KAAKomC,MAAQF,EAAe,MACnCrS,EAAS7zB,KAAKu0B,QAAUigB,GAAavO,GAE7BnX,GACN,IAAK,QACH,OAAO+E,EAET,IAAK,UACH,OAAOA,EAAS,EAElB,IAAK,OACH,OAAOA,EAAS,QAMpB,OAFAoS,EAAOjmC,KAAKomC,MAAQz3B,KAAK83B,MAAM8N,GAAav0C,KAAKu0B,UAEzCzF,GACN,IAAK,OACH,OAAOmX,EAAO,EAAIC,EAAe,OAEnC,IAAK,MACH,OAAOD,EAAOC,EAAe,MAE/B,IAAK,OACH,OAAc,GAAPD,EAAYC,EAAe,KAEpC,IAAK,SACH,OAAc,KAAPD,EAAcC,EAAe,IAEtC,IAAK,SACH,OAAc,MAAPD,EAAeC,EAAe,IAGvC,IAAK,cACH,OAAOv3B,KAAKkhB,MAAa,MAAPoW,GAAgBC,EAEpC,QACE,MAAM,IAAIlgC,MAAM,gBAAkB8oB,IAM1C,SAAS4lB,KACP,OAAK10C,KAAK4mB,UAIH5mB,KAAKmmC,cAA6B,MAAbnmC,KAAKomC,MAAgBpmC,KAAKu0B,QAAU,GAAK,OAAoC,QAA3BzE,GAAM9vB,KAAKu0B,QAAU,IAH1F/M,IAMX,SAASmtB,GAAOC,GACd,OAAO,WACL,OAAO50C,KAAKy0C,GAAGG,IAInB,IAAIC,GAAiBF,GAAO,MACxBG,GAAYH,GAAO,KACnBI,GAAYJ,GAAO,KACnBK,GAAUL,GAAO,KACjBM,GAASN,GAAO,KAChBO,GAAUP,GAAO,KACjBQ,GAAWR,GAAO,KAClBS,GAAaT,GAAO,KACpBU,GAAUV,GAAO,KAErB,SAASW,KACP,OAAO7P,GAAezlC,MAGxB,SAASu1C,GAAMzmB,GAEb,OADAA,EAAQD,GAAeC,GAChB9uB,KAAK4mB,UAAY5mB,KAAK8uB,EAAQ,OAAStH,IAGhD,SAASguB,GAAWn5C,GAClB,OAAO,WACL,OAAO2D,KAAK4mB,UAAY5mB,KAAKqmC,MAAMhqC,GAAQmrB,KAI/C,IAAI0e,GAAesP,GAAW,gBAC1B1Z,GAAU0Z,GAAW,WACrB9Z,GAAU8Z,GAAW,WACrBja,GAAQia,GAAW,SACnBvP,GAAOuP,GAAW,QAClB3hB,GAAS2hB,GAAW,UACpB5P,GAAQ4P,GAAW,SAEvB,SAASzP,KACP,OAAOpW,GAAS3vB,KAAKimC,OAAS,GAGhC,IAAIQ,GAAQ93B,KAAK83B,MACbgP,GAAa,CACfloB,GAAI,GAEJ1vB,EAAG,GAEH3B,EAAG,GAEHuxB,EAAG,GAEHrxB,EAAG,GAEHwxB,EAAG,KAEHE,EAAG,IAIL,SAAS4nB,GAAkBnzB,EAAQD,EAAQ6L,EAAeC,EAAU/I,GAClE,OAAOA,EAAO6I,aAAa5L,GAAU,IAAK6L,EAAe5L,EAAQ6L,GAGnE,SAASunB,GAAeC,EAAgBznB,EAAesnB,EAAYpwB,GACjE,IAAIsgB,EAAWF,GAAemQ,GAAgB5qB,MAC1C8Q,EAAU2K,GAAMd,EAAS8O,GAAG,MAC5B/Y,EAAU+K,GAAMd,EAAS8O,GAAG,MAC5BlZ,EAAQkL,GAAMd,EAAS8O,GAAG,MAC1BxO,EAAOQ,GAAMd,EAAS8O,GAAG,MACzB5gB,EAAS4S,GAAMd,EAAS8O,GAAG,MAC3B1O,EAAQU,GAAMd,EAAS8O,GAAG,MAC1B7O,EAAQa,GAAMd,EAAS8O,GAAG,MAC1BlvC,EAAIu2B,GAAW2Z,EAAWloB,IAAM,CAAC,IAAKuO,IAAYA,EAAU2Z,EAAW53C,GAAK,CAAC,KAAMi+B,IAAYJ,GAAW,GAAK,CAAC,MAAQA,EAAU+Z,EAAWv5C,GAAK,CAAC,KAAMw/B,IAAYH,GAAS,GAAK,CAAC,MAAQA,EAAQka,EAAWhoB,GAAK,CAAC,KAAM8N,IAAU0K,GAAQ,GAAK,CAAC,MAAQA,EAAOwP,EAAWr5C,GAAK,CAAC,KAAM6pC,GAU7R,OARoB,MAAhBwP,EAAW7nB,IACbroB,EAAIA,GAAKwgC,GAAS,GAAK,CAAC,MAAQA,EAAQ0P,EAAW7nB,GAAK,CAAC,KAAMmY,KAGjExgC,EAAIA,GAAKsuB,GAAU,GAAK,CAAC,MAAQA,EAAS4hB,EAAW3nB,GAAK,CAAC,KAAM+F,IAAW+R,GAAS,GAAK,CAAC,MAAQ,CAAC,KAAMA,IACxG,GAAKzX,EACP5oB,EAAE,IAAMqwC,EAAiB,EACzBrwC,EAAE,GAAK8f,EACAqwB,GAAkBrxB,MAAM,KAAM9e,GAIvC,SAASswC,GAA2BC,GAClC,YAAyB3wC,IAArB2wC,EACKrP,GAGuB,oBAArBqP,IACTrP,GAAQqP,GACD,GAOX,SAASC,GAA4BC,EAAWC,GAC9C,YAA8B9wC,IAA1BswC,GAAWO,UAID7wC,IAAV8wC,EACKR,GAAWO,IAGpBP,GAAWO,GAAaC,EAEN,MAAdD,IACFP,GAAWloB,GAAK0oB,EAAQ,IAGnB,IAGT,SAAShJ,GAASiJ,EAAeC,GAC/B,IAAKn2C,KAAK4mB,UACR,OAAO5mB,KAAK4rB,aAAaK,cAG3B,IAEI5G,EACAqF,EAHA0rB,GAAa,EACbC,EAAKZ,GA4BT,MAxB6B,kBAAlBS,IACTC,EAAgBD,EAChBA,GAAgB,GAGW,mBAAlBA,IACTE,EAAaF,GAGc,kBAAlBC,IACTE,EAAK75C,OAAOwE,OAAO,GAAIy0C,GAAYU,GAEZ,MAAnBA,EAAct4C,GAAiC,MAApBs4C,EAAc5oB,KAC3C8oB,EAAG9oB,GAAK4oB,EAAct4C,EAAI,IAK9B6sB,EAASirB,GAAe31C,MAAOo2C,EAAYC,EAD3ChxB,EAASrlB,KAAK4rB,cAGVwqB,IACF1rB,EAASrF,EAAOiJ,YAAYtuB,KAAM0qB,IAG7BrF,EAAO2nB,WAAWtiB,GAG3B,IAAI4rB,GAAQ3nC,KAAKqc,IAEjB,SAASmc,GAAKzT,GACZ,OAAQA,EAAI,IAAMA,EAAI,KAAOA,EAG/B,SAAS6iB,KAQP,IAAKv2C,KAAK4mB,UACR,OAAO5mB,KAAK4rB,aAAaK,cAG3B,IAGIyP,EACAH,EACAqK,EACA/nC,EAEA24C,EACAC,EACAC,EACAC,EAXA7a,EAAUwa,GAAMt2C,KAAKmmC,eAAiB,IACtCF,EAAOqQ,GAAMt2C,KAAKomC,OAClBvS,EAASyiB,GAAMt2C,KAAKu0B,SAKpBqiB,EAAQ52C,KAAK80C,YAMjB,OAAK8B,GAOLlb,EAAU/L,GAASmM,EAAU,IAC7BP,EAAQ5L,GAAS+L,EAAU,IAC3BI,GAAW,GACXJ,GAAW,GAEXkK,EAAQjW,GAASkE,EAAS,IAC1BA,GAAU,GAEVh2B,EAAIi+B,EAAUA,EAAQ+a,QAAQ,GAAGpyC,QAAQ,SAAU,IAAM,GACzD+xC,EAAYI,EAAQ,EAAI,IAAM,GAC9BH,EAAStP,GAAKnnC,KAAKu0B,WAAa4S,GAAKyP,GAAS,IAAM,GACpDF,EAAWvP,GAAKnnC,KAAKomC,SAAWe,GAAKyP,GAAS,IAAM,GACpDD,EAAUxP,GAAKnnC,KAAKmmC,iBAAmBgB,GAAKyP,GAAS,IAAM,GACpDJ,EAAY,KAAO5Q,EAAQ6Q,EAAS7Q,EAAQ,IAAM,KAAO/R,EAAS4iB,EAAS5iB,EAAS,IAAM,KAAOoS,EAAOyQ,EAAWzQ,EAAO,IAAM,KAAO1K,GAASG,GAAWI,EAAU,IAAM,KAAOP,EAAQob,EAAUpb,EAAQ,IAAM,KAAOG,EAAUib,EAAUjb,EAAU,IAAM,KAAOI,EAAU6a,EAAU94C,EAAI,IAAM,KAjBhS,MAoBX,IAAIi5C,GAAUpR,GAAShoC,UAkGvB,OAjGAo5C,GAAQlwB,QAAU2e,GAClBuR,GAAQ9rB,IAAMA,GACd8rB,GAAQr2C,IAAMyzC,GACd4C,GAAQvO,SAAW4L,GACnB2C,GAAQrC,GAAKA,GACbqC,GAAQjC,eAAiBA,GACzBiC,GAAQhC,UAAYA,GACpBgC,GAAQ/B,UAAYA,GACpB+B,GAAQ9B,QAAUA,GAClB8B,GAAQ7B,OAASA,GACjB6B,GAAQ5B,QAAUA,GAClB4B,GAAQ3B,SAAWA,GACnB2B,GAAQ1B,WAAaA,GACrB0B,GAAQzB,QAAUA,GAClByB,GAAQ5xB,QAAUwvB,GAClBoC,GAAQxQ,QAAU+N,GAClByC,GAAQrP,MAAQ6N,GAChBwB,GAAQn6C,IAAM44C,GACduB,GAAQ5Q,aAAeA,GACvB4Q,GAAQhb,QAAUA,GAClBgb,GAAQpb,QAAUA,GAClBob,GAAQvb,MAAQA,GAChBub,GAAQ7Q,KAAOA,GACf6Q,GAAQ/Q,MAAQA,GAChB+Q,GAAQjjB,OAASA,GACjBijB,GAAQlR,MAAQA,GAChBkR,GAAQ7J,SAAWA,GACnB6J,GAAQxK,YAAciK,GACtBO,GAAQ53C,SAAWq3C,GACnBO,GAAQ3I,OAASoI,GACjBO,GAAQzxB,OAASA,GACjByxB,GAAQlrB,WAAaA,GACrBkrB,GAAQC,YAAcj7B,EAAU,sFAAuFy6B,IACvHO,GAAQzJ,KAAOA,GAEf7hB,EAAe,IAAK,EAAG,EAAG,QAC1BA,EAAe,IAAK,EAAG,EAAG,WAE1BsG,GAAc,IAAKL,IACnBK,GAAc,IAAKF,IACnBc,GAAc,KAAK,SAAU/sB,EAAOuZ,EAAOuJ,GACzCA,EAAOhqB,GAAK,IAAIqmB,KAAyB,IAApBwgB,WAAW3/B,OAElC+sB,GAAc,KAAK,SAAU/sB,EAAOuZ,EAAOuJ,GACzCA,EAAOhqB,GAAK,IAAIqmB,KAAKgL,GAAMnqB,OAG7Bye,EAAM4yB,QAAU,SAChB1yB,EAAgBwe,IAChB1e,EAAMW,GAAK+sB,GACX1tB,EAAMmR,IAAMA,GACZnR,EAAMxV,IAAMA,GACZwV,EAAMqG,IAAMA,GACZrG,EAAMoB,IAAML,EACZf,EAAM6pB,KAAO8D,GACb3tB,EAAMyP,OAAS2f,GACfpvB,EAAMS,OAASA,EACfT,EAAMiB,OAASsY,GACfvZ,EAAM8lB,QAAU3iB,EAChBnD,EAAMuhB,SAAWF,GACjBrhB,EAAMuE,SAAWA,EACjBvE,EAAM0U,SAAW4a,GACjBtvB,EAAM6tB,UAAYD,GAClB5tB,EAAMwH,WAAagS,GACnBxZ,EAAMmiB,WAAaA,GACnBniB,EAAMwP,YAAc6f,GACpBrvB,EAAMwU,YAAcgb,GACpBxvB,EAAMyZ,aAAeA,GACrBzZ,EAAM4Z,aAAeA,GACrB5Z,EAAM0Y,QAAUoB,GAChB9Z,EAAMyU,cAAgB8a,GACtBvvB,EAAMyK,eAAiBA,GACvBzK,EAAM6yB,qBAAuBpB,GAC7BzxB,EAAM8yB,sBAAwBnB,GAC9B3xB,EAAMinB,eAAiBP,GACvB1mB,EAAM1mB,UAAYo0C,GAElB1tB,EAAM+yB,UAAY,CAChBC,eAAgB,mBAEhBC,uBAAwB,sBAExBC,kBAAmB,0BAEnBpkB,KAAM,aAENqkB,KAAM,QAENC,aAAc,WAEdC,QAAS,eAETlkB,KAAM,aAENN,MAAO,WAGF7O,EA7/JyEszB,K,mDCNlFl7C,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAETnB,EAAQ+7C,4CAAyC,EAwCjD/7C,EAAQ+7C,uCAtCR,MACEv4C,cACEY,KAAK43C,mBAAqB,KAC1B53C,KAAK63C,cAAgB,KAGvBC,sBACE,MAAO,UAGTrmC,QAAQnL,GACN,MAAMyxC,EAAe/3C,KAAK+3C,aAAazxC,GAEvC,OAAIyxC,GAAgB/3C,KAAK43C,qBAIzB53C,KAAK63C,cAAgB,IAAInmC,OAAO,GAAG1R,KAAK83C,wBAAwBC,EAAaruB,SAAUquB,EAAajxB,OACpG9mB,KAAK43C,mBAAqBG,GAJjB/3C,KAAK63C,cAQhBG,QAAQ1xC,EAAS4E,GACf,IAAI6I,EAEJ,MAAMkkC,EAA6B,QAAnBlkC,EAAK7I,EAAM,UAAuB,IAAP6I,EAAgBA,EAAK,GAChE7I,EAAMxJ,MAAQwJ,EAAMxJ,MAAQu2C,EAAOp5C,OACnCqM,EAAM,GAAKA,EAAM,GAAGgtC,UAAUD,EAAOp5C,QAErC,IAAK,IAAI/C,EAAI,EAAGA,EAAIoP,EAAMrM,OAAQ/C,IAChCoP,EAAMpP,EAAI,GAAKoP,EAAMpP,GAGvB,OAAOkE,KAAKm4C,aAAa7xC,EAAS4E,M,cCxCtC,IAAIktC,EAEJA,EAAI,WACF,OAAOp4C,KADL,GAIJ,IAEEo4C,EAAIA,GAAK,IAAI9uB,SAAS,cAAb,GACT,MAAO1jB,GAEe,kBAAXtB,SAAqB8zC,EAAI9zC,QAMtCzI,EAAOD,QAAUw8C,G,gBChB8Cv8C,EAAOD,QAC9D,WACN,aAEA,IAAIoB,EAAI,IACJ4I,EAAI,IACJrI,EAAI,KACJX,EAAI,cACJd,EAAI,SACJ+B,EAAI,SACJ2xB,EAAI,OACJjqB,EAAI,MACJhJ,EAAI,OACJ87C,EAAI,QACJ5qB,EAAI,UACJtxB,EAAI,OACJC,EAAI,OACJL,EAAI,eACJu8C,EAAI,6FACJtqB,EAAI,sFACJF,EAAI,CACNzxB,KAAM,KACNy8B,SAAU,2DAA2D1pB,MAAM,KAC3EykB,OAAQ,wFAAwFzkB,MAAM,KACtGsc,QAAS,SAAU1uB,GACjB,IAAI4I,EAAI,CAAC,KAAM,KAAM,KAAM,MACvBrI,EAAIP,EAAI,IACZ,MAAO,IAAMA,GAAK4I,GAAGrI,EAAI,IAAM,KAAOqI,EAAErI,IAAMqI,EAAE,IAAM,MAGtD1J,EAAI,SAAUc,EAAG4I,EAAGrI,GACtB,IAAIX,EAAIwlB,OAAOplB,GACf,OAAQJ,GAAKA,EAAEiC,QAAU+G,EAAI5I,EAAI,GAAKgB,MAAM4H,EAAI,EAAIhJ,EAAEiC,QAAQ8E,KAAKpG,GAAKP,GAEtEqiB,EAAI,CACNxhB,EAAG3B,EACHq8C,EAAG,SAAUv7C,GACX,IAAI4I,GAAK5I,EAAEkqC,YACP3pC,EAAIoR,KAAKqc,IAAIplB,GACbhJ,EAAI+R,KAAKkhB,MAAMtyB,EAAI,IACnBzB,EAAIyB,EAAI,GACZ,OAAQqI,GAAK,EAAI,IAAM,KAAO1J,EAAEU,EAAG,EAAG,KAAO,IAAMV,EAAEJ,EAAG,EAAG,MAE7DI,EAAG,SAASc,EAAE4I,EAAGrI,GACf,GAAIqI,EAAE0qB,OAAS/yB,EAAE+yB,OAAQ,OAAQtzB,EAAEO,EAAGqI,GACtC,IAAIhJ,EAAI,IAAMW,EAAEmyB,OAAS9pB,EAAE8pB,SAAWnyB,EAAE8yB,QAAUzqB,EAAEyqB,SAChDv0B,EAAI8J,EAAE6hC,QAAQhnC,IAAI7D,EAAGy7C,GACrBx6C,EAAIN,EAAIzB,EAAI,EACZ0zB,EAAI5pB,EAAE6hC,QAAQhnC,IAAI7D,GAAKiB,GAAK,EAAI,GAAIw6C,GACxC,UAAWz7C,GAAKW,EAAIzB,IAAM+B,EAAI/B,EAAI0zB,EAAIA,EAAI1zB,KAAO,IAEnDyJ,EAAG,SAAUvI,GACX,OAAOA,EAAI,EAAI2R,KAAKihB,KAAK5yB,IAAM,EAAI2R,KAAKkhB,MAAM7yB,IAEhDY,EAAG,SAAUZ,GACX,MAAO,CACL8wB,EAAGuqB,EACHrqB,EAAG7xB,EACHyxB,EAAGrxB,EACHH,EAAGmJ,EACHizC,EAAGp8C,EACHqxB,EAAG+B,EACHtzB,EAAG2B,EACHA,EAAG/B,EACH26B,GAAI75B,EACJ67C,EAAGhrB,GACHzwB,IAAMolB,OAAOplB,GAAK,IAAIiI,cAAcR,QAAQ,KAAM,KAEtD+qB,EAAG,SAAUxyB,GACX,YAAO,IAAWA,IAGlBo7C,EAAI,KACJI,EAAI,GAERA,EAAEJ,GAAKtqB,EAEP,IAAIlwB,EAAI,SAAUZ,GAChB,OAAOA,aAAa0H,GAElBg0C,EAAI,SAAS17C,EAAE4I,EAAGrI,EAAGX,GACvB,IAAId,EACJ,IAAK8J,EAAG,OAAOwyC,EAEf,GAAI,iBAAmBxyC,EAAG,CACxB,IAAI/H,EAAI+H,EAAEX,cACVuzC,EAAE36C,KAAO/B,EAAI+B,GAAIN,IAAMi7C,EAAE36C,GAAKN,EAAGzB,EAAI+B,GACrC,IAAI2xB,EAAI5pB,EAAEwJ,MAAM,KAChB,IAAKtT,GAAK0zB,EAAE3wB,OAAS,EAAG,OAAO7B,EAAEwyB,EAAE,QAC9B,CACL,IAAIjqB,EAAIK,EAAEvJ,KACVm8C,EAAEjzC,GAAKK,EAAG9J,EAAIyJ,EAGhB,OAAQ3I,GAAKd,IAAMs8C,EAAIt8C,GAAIA,IAAMc,GAAKw7C,GAEpCxqB,EAAI,SAAU5wB,EAAG4I,GACnB,GAAIhI,EAAEZ,GAAI,OAAOA,EAAEyqC,QACnB,IAAIlqC,EAAI,iBAAmBqI,EAAIA,EAAI,GACnC,OAAOrI,EAAE+yB,KAAOtzB,EAAGO,EAAE0a,KAAOsB,UAAW,IAAI7U,EAAEnH,IAE3Co7C,EAAIt5B,EAERs5B,EAAE58C,EAAI28C,EAAGC,EAAE78C,EAAI8B,EAAG+6C,EAAE/qB,EAAI,SAAU5wB,EAAG4I,GACnC,OAAOgoB,EAAE5wB,EAAG,CACVqoB,OAAQzf,EAAEgzC,GACVpzB,IAAK5f,EAAEizC,GACPnlB,EAAG9tB,EAAEkzC,GACLC,QAASnzC,EAAEmzC,WAIf,IAAIr0C,EAAI,WACN,SAASopB,EAAE9wB,GACTgD,KAAK44C,GAAKF,EAAE17C,EAAEqoB,OAAQ,MAAM,GAAKrlB,KAAKmG,MAAMnJ,GAG9C,IAAId,EAAI4xB,EAAEpwB,UACV,OAAOxB,EAAEiK,MAAQ,SAAUnJ,GACzBgD,KAAKg5C,GAAK,SAAUh8C,GAClB,IAAI4I,EAAI5I,EAAEszB,KACN/yB,EAAIP,EAAEwoB,IACV,GAAI,OAAS5f,EAAG,OAAO,IAAIkf,KAAK0C,KAChC,GAAImxB,EAAEnpB,EAAE5pB,GAAI,OAAO,IAAIkf,KACvB,GAAIlf,aAAakf,KAAM,OAAO,IAAIA,KAAKlf,GAEvC,GAAI,iBAAmBA,IAAM,MAAMtG,KAAKsG,GAAI,CAC1C,IAAIhJ,EAAIgJ,EAAEsF,MAAMotC,GAEhB,GAAI17C,EAAG,CACL,IAAId,EAAIc,EAAE,GAAK,GAAK,EAChBiB,GAAKjB,EAAE,IAAM,KAAKs7C,UAAU,EAAG,GACnC,OAAO36C,EAAI,IAAIunB,KAAKA,KAAK+R,IAAIj6B,EAAE,GAAId,EAAGc,EAAE,IAAM,EAAGA,EAAE,IAAM,EAAGA,EAAE,IAAM,EAAGA,EAAE,IAAM,EAAGiB,IAAM,IAAIinB,KAAKloB,EAAE,GAAId,EAAGc,EAAE,IAAM,EAAGA,EAAE,IAAM,EAAGA,EAAE,IAAM,EAAGA,EAAE,IAAM,EAAGiB,IAI1J,OAAO,IAAIinB,KAAKlf,GAjBR,CAkBR5I,GAAIgD,KAAK84C,GAAK97C,EAAE02B,GAAK,GAAI1zB,KAAKi5C,QAC/B/8C,EAAE+8C,KAAO,WACV,IAAIj8C,EAAIgD,KAAKg5C,GACbh5C,KAAKk5C,GAAKl8C,EAAE05B,cAAe12B,KAAKm5C,GAAKn8C,EAAE8kC,WAAY9hC,KAAKo5C,GAAKp8C,EAAE+kC,UAAW/hC,KAAKq5C,GAAKr8C,EAAEw9B,SAAUx6B,KAAKs5C,GAAKt8C,EAAEu8C,WAAYv5C,KAAKw5C,GAAKx8C,EAAEy8C,aAAcz5C,KAAK05C,GAAK18C,EAAE28C,aAAc35C,KAAK45C,IAAM58C,EAAE68C,mBACxL39C,EAAE49C,OAAS,WACZ,OAAOnB,GACNz8C,EAAE0qB,QAAU,WACb,QAAS5mB,KAAKg5C,GAAG95C,aAAenD,IAC/BG,EAAE0vC,OAAS,SAAU5uC,EAAG4I,GACzB,IAAIrI,EAAIqwB,EAAE5wB,GACV,OAAOgD,KAAKorC,QAAQxlC,IAAMrI,GAAKA,GAAKyC,KAAKurC,MAAM3lC,IAC9C1J,EAAEytC,QAAU,SAAU3sC,EAAG4I,GAC1B,OAAOgoB,EAAE5wB,GAAKgD,KAAKorC,QAAQxlC,IAC1B1J,EAAE0tC,SAAW,SAAU5sC,EAAG4I,GAC3B,OAAO5F,KAAKurC,MAAM3lC,GAAKgoB,EAAE5wB,IACxBd,EAAE69C,GAAK,SAAU/8C,EAAG4I,EAAGrI,GACxB,OAAOo7C,EAAEnpB,EAAExyB,GAAKgD,KAAK4F,GAAK5F,KAAKwD,IAAIjG,EAAGP,IACrCd,EAAE+xC,KAAO,WACV,OAAOt/B,KAAKkhB,MAAM7vB,KAAKklB,UAAY,MAClChpB,EAAEgpB,QAAU,WACb,OAAOllB,KAAKg5C,GAAG9xB,WACdhrB,EAAEkvC,QAAU,SAAUpuC,EAAG4I,GAC1B,IAAIrI,EAAIyC,KACJpD,IAAM+7C,EAAEnpB,EAAE5pB,IAAMA,EAChB6nB,EAAIkrB,EAAE/6C,EAAEZ,GACRjB,EAAI,SAAUiB,EAAG4I,GACnB,IAAI9J,EAAI68C,EAAE/qB,EAAErwB,EAAEs7C,GAAK/zB,KAAK+R,IAAIt5B,EAAE27C,GAAItzC,EAAG5I,GAAK,IAAI8nB,KAAKvnB,EAAE27C,GAAItzC,EAAG5I,GAAIO,GAChE,OAAOX,EAAId,EAAIA,EAAEyvC,MAAMhmC,IAErB+yC,EAAI,SAAUt7C,EAAG4I,GACnB,OAAO+yC,EAAE/qB,EAAErwB,EAAEivC,SAASxvC,GAAGqnB,MAAM9mB,EAAEivC,OAAO,MAAO5vC,EAAI,CAAC,EAAG,EAAG,EAAG,GAAK,CAAC,GAAI,GAAI,GAAI,MAAMuC,MAAMyG,IAAKrI,IAE9FywB,EAAIhuB,KAAKq5C,GACTvrB,EAAI9tB,KAAKm5C,GACTj9C,EAAI8D,KAAKo5C,GACT/5B,EAAI,OAASrf,KAAK64C,GAAK,MAAQ,IAEnC,OAAQprB,GACN,KAAKtxB,EACH,OAAOS,EAAIb,EAAE,EAAG,GAAKA,EAAE,GAAI,IAE7B,KAAKs8C,EACH,OAAOz7C,EAAIb,EAAE,EAAG+xB,GAAK/xB,EAAE,EAAG+xB,EAAI,GAEhC,KAAKvxB,EACH,IAAI67C,EAAIp4C,KAAKg6C,UAAUC,WAAa,EAChCzB,GAAKxqB,EAAIoqB,EAAIpqB,EAAI,EAAIA,GAAKoqB,EAC9B,OAAOr8C,EAAEa,EAAIV,EAAIs8C,EAAIt8C,GAAK,EAAIs8C,GAAI1qB,GAEpC,KAAKvoB,EACL,KAAKnJ,EACH,OAAOk8C,EAAEj5B,EAAI,QAAS,GAExB,KAAKmQ,EACH,OAAO8oB,EAAEj5B,EAAI,UAAW,GAE1B,KAAKxhB,EACH,OAAOy6C,EAAEj5B,EAAI,UAAW,GAE1B,KAAKvjB,EACH,OAAOw8C,EAAEj5B,EAAI,eAAgB,GAE/B,QACE,OAAOrf,KAAKynC,UAEfvrC,EAAEqvC,MAAQ,SAAUvuC,GACrB,OAAOgD,KAAKorC,QAAQpuC,GAAG,IACtBd,EAAEg+C,KAAO,SAAUl9C,EAAG4I,GACvB,IAAIrI,EACAhB,EAAIo8C,EAAE/6C,EAAEZ,GACRywB,EAAI,OAASztB,KAAK64C,GAAK,MAAQ,IAC/B98C,GAAKwB,EAAI,GAAIA,EAAEgI,GAAKkoB,EAAI,OAAQlwB,EAAEnB,GAAKqxB,EAAI,OAAQlwB,EAAE86C,GAAK5qB,EAAI,QAASlwB,EAAEpB,GAAKsxB,EAAI,WAAYlwB,EAAEiyB,GAAK/B,EAAI,QAASlwB,EAAEM,GAAK4vB,EAAI,UAAWlwB,EAAEzB,GAAK2xB,EAAI,UAAWlwB,EAAEX,GAAK6wB,EAAI,eAAgBlwB,GAAGhB,GAC5L+7C,EAAI/7C,IAAMgJ,EAAIvF,KAAKo5C,IAAMxzC,EAAI5F,KAAKq5C,IAAMzzC,EAE5C,GAAIrJ,IAAM87C,GAAK97C,IAAMJ,EAAG,CACtB,IAAI6xB,EAAIhuB,KAAKynC,QAAQjkC,IAAIpH,EAAG,GAC5B4xB,EAAEgrB,GAAGj9C,GAAGu8C,GAAItqB,EAAEirB,OAAQj5C,KAAKg5C,GAAKhrB,EAAExqB,IAAIpH,EAAGuS,KAAK4mB,IAAIv1B,KAAKo5C,GAAIprB,EAAEuC,gBAAgByoB,QACxEj9C,GAAKiE,KAAKg5C,GAAGj9C,GAAGu8C,GAEvB,OAAOt4C,KAAKi5C,OAAQj5C,MACnB9D,EAAEsH,IAAM,SAAUxG,EAAG4I,GACtB,OAAO5F,KAAKynC,QAAQyS,KAAKl9C,EAAG4I,IAC3B1J,EAAES,IAAM,SAAUK,GACnB,OAAOgD,KAAK24C,EAAE/6C,EAAEZ,OACfd,EAAEuE,IAAM,SAAU7D,EAAG6wB,GACtB,IAAIrxB,EACAL,EAAIiE,KACRpD,EAAIulB,OAAOvlB,GAEX,IAAI07C,EAAIK,EAAE/6C,EAAE6vB,GACRO,EAAI,SAAUhxB,GAChB,IAAI4I,EAAIgoB,EAAE7xB,GACV,OAAO48C,EAAE/qB,EAAEhoB,EAAE0qB,KAAK1qB,EAAE0qB,OAAS3hB,KAAK83B,MAAMzpC,EAAIJ,IAAKb,IAGnD,GAAIu8C,IAAMD,EAAG,OAAOr4C,KAAKwD,IAAI60C,EAAGr4C,KAAKm5C,GAAKv8C,GAC1C,GAAI07C,IAAMn8C,EAAG,OAAO6D,KAAKwD,IAAIrH,EAAG6D,KAAKk5C,GAAKt8C,GAC1C,GAAI07C,IAAM/yC,EAAG,OAAOyoB,EAAE,GACtB,GAAIsqB,IAAM/7C,EAAG,OAAOyxB,EAAE,GACtB,IAAIF,GAAK1xB,EAAI,GAAIA,EAAEyB,GAAK+H,EAAGxJ,EAAEozB,GAAKjyB,EAAGnB,EAAEN,GAAKkB,EAAGZ,GAAGk8C,IAAM,EACpDp8C,EAAI8D,KAAKg5C,GAAG9xB,UAAYtqB,EAAIkxB,EAChC,OAAO6qB,EAAE/qB,EAAE1xB,EAAG8D,OACb9D,EAAEqsC,SAAW,SAAUvrC,EAAG4I,GAC3B,OAAO5F,KAAKS,KAAK,EAAIzD,EAAG4I,IACvB1J,EAAEkpB,OAAS,SAAUpoB,GACtB,IAAI4I,EAAI5F,KACJzC,EAAIyC,KAAKg6C,UACb,IAAKh6C,KAAK4mB,UAAW,OAAOrpB,EAAE0uB,aAAelwB,EAE7C,IAAIa,EAAII,GAAK,uBACTlB,EAAI68C,EAAEJ,EAAEv4C,MACRnC,EAAImC,KAAKs5C,GACT9pB,EAAIxvB,KAAKw5C,GACTj0C,EAAIvF,KAAKm5C,GACT58C,EAAIgB,EAAEu7B,SACNuf,EAAI96C,EAAEs2B,OACNpG,EAAI,SAAUzwB,EAAGO,EAAGzB,EAAG+B,GACzB,OAAOb,IAAMA,EAAEO,IAAMP,EAAE4I,EAAGhJ,KAAOd,EAAEyB,GAAG4B,MAAM,EAAGtB,IAE7C1B,EAAI,SAAUa,GAChB,OAAO27C,EAAE96C,EAAEA,EAAI,IAAM,GAAIb,EAAG,MAE1BZ,EAAImB,EAAEgpB,UAAY,SAAUvpB,EAAG4I,EAAGrI,GACpC,IAAIX,EAAII,EAAI,GAAK,KAAO,KACxB,OAAOO,EAAIX,EAAEqI,cAAgBrI,GAE3B07C,EAAI,CACN6B,GAAI/3B,OAAOpiB,KAAKk5C,IAAI/5C,OAAO,GAC3Bi7C,KAAMp6C,KAAKk5C,GACXprB,EAAGvoB,EAAI,EACPwoB,GAAI4qB,EAAE96C,EAAE0H,EAAI,EAAG,EAAG,KAClB80C,IAAK5sB,EAAElwB,EAAEq2B,YAAaruB,EAAG8yC,EAAG,GAC5BiC,KAAM7sB,EAAE4qB,EAAG9yC,GACXizC,EAAGx4C,KAAKo5C,GACRmB,GAAI5B,EAAE96C,EAAEmC,KAAKo5C,GAAI,EAAG,KACpBh9C,EAAGgmB,OAAOpiB,KAAKq5C,IACf1rB,GAAIF,EAAElwB,EAAEq7B,YAAa54B,KAAKq5C,GAAI98C,EAAG,GACjCi+C,IAAK/sB,EAAElwB,EAAEs7B,cAAe74B,KAAKq5C,GAAI98C,EAAG,GACpCk+C,KAAMl+C,EAAEyD,KAAKq5C,IACbqB,EAAGt4B,OAAOvkB,GACV88C,GAAIhC,EAAE96C,EAAEA,EAAG,EAAG,KACd4vB,EAAGtxB,EAAE,GACLuxB,GAAIvxB,EAAE,GACNoJ,EAAGnJ,EAAEyB,EAAG2xB,GAAG,GACXorB,EAAGx+C,EAAEyB,EAAG2xB,GAAG,GACXtzB,EAAGkmB,OAAOoN,GACVhC,GAAImrB,EAAE96C,EAAE2xB,EAAG,EAAG,KACd3xB,EAAGukB,OAAOpiB,KAAK05C,IACfnsB,GAAIorB,EAAE96C,EAAEmC,KAAK05C,GAAI,EAAG,KACpBmB,IAAKlC,EAAE96C,EAAEmC,KAAK45C,IAAK,EAAG,KACtBkB,EAAGh/C,GAGL,OAAOc,EAAE6H,QAAQupB,GAAG,SAAUhxB,EAAG4I,GAC/B,OAAOA,GAAK0yC,EAAEt7C,IAAMlB,EAAE2I,QAAQ,IAAK,QAEpCvI,EAAEgrC,UAAY,WACf,OAAO,IAAMv4B,KAAK83B,MAAMzmC,KAAKg5C,GAAGnR,oBAAsB,KACrD3rC,EAAEqyB,KAAO,SAAU3xB,EAAGR,EAAGL,GAC1B,IAAIu8C,EACAtqB,EAAI2qB,EAAE/6C,EAAExB,GACR0xB,EAAIF,EAAEhxB,GACNV,GAAK4xB,EAAEoZ,YAAclnC,KAAKknC,aAAethC,EACzCyZ,EAAIrf,KAAO8tB,EACXsqB,EAAIO,EAAEz8C,EAAE8D,KAAM8tB,GAClB,OAAOsqB,GAAKE,EAAI,GAAIA,EAAEn8C,GAAKi8C,EAAI,GAAIE,EAAED,GAAKD,EAAGE,EAAE7qB,GAAK2qB,EAAI,EAAGE,EAAE/7C,IAAM8iB,EAAInjB,GAAK,OAAQo8C,EAAE/yC,IAAM8Z,EAAInjB,GAAK,MAAOo8C,EAAE9oB,GAAKnQ,EAAI9hB,EAAG+6C,EAAEz6C,GAAKwhB,EAAIzZ,EAAG0yC,EAAEx8C,GAAKujB,EAAIriB,EAAGs7C,GAAGtqB,IAAM3O,EAAGtjB,EAAIq8C,EAAIO,EAAEpzC,EAAE6yC,IAC7Kl8C,EAAEq0B,YAAc,WACjB,OAAOvwB,KAAKurC,MAAM8M,GAAGe,IACpBl9C,EAAE89C,QAAU,WACb,OAAOxB,EAAEx4C,KAAK44C,KACb18C,EAAEmpB,OAAS,SAAUroB,EAAG4I,GACzB,IAAK5I,EAAG,OAAOgD,KAAK44C,GACpB,IAAIr7C,EAAIyC,KAAKynC,QACT7qC,EAAI87C,EAAE17C,EAAG4I,GAAG,GAChB,OAAOhJ,IAAMW,EAAEq7C,GAAKh8C,GAAIW,GACvBrB,EAAEurC,MAAQ,WACX,OAAOkR,EAAE/qB,EAAE5tB,KAAKg5C,GAAIh5C,OACnB9D,EAAEswC,OAAS,WACZ,OAAO,IAAI1nB,KAAK9kB,KAAKklB,YACpBhpB,EAAEiyC,OAAS,WACZ,OAAOnuC,KAAK4mB,UAAY5mB,KAAKssC,cAAgB,MAC5CpwC,EAAEowC,YAAc,WACjB,OAAOtsC,KAAKg5C,GAAG1M,eACdpwC,EAAEgD,SAAW,WACd,OAAOc,KAAKg5C,GAAG+B,eACdjtB,EAlNG,GAoNJktB,EAAIt2C,EAAEhH,UAEV,OAAOkwB,EAAElwB,UAAYs9C,EAAG,CAAC,CAAC,MAAOp+C,GAAI,CAAC,KAAMd,GAAI,CAAC,KAAM+B,GAAI,CAAC,KAAM2xB,GAAI,CAAC,KAAMjqB,GAAI,CAAC,KAAM8yC,GAAI,CAAC,KAAMl8C,GAAI,CAAC,KAAMC,IAAI+F,SAAQ,SAAUnF,GAClIg+C,EAAEh+C,EAAE,IAAM,SAAU4I,GAClB,OAAO5F,KAAK+5C,GAAGn0C,EAAG5I,EAAE,GAAIA,EAAE,QAE1B4wB,EAAEvV,OAAS,SAAUrb,EAAG4I,GAC1B,OAAO5I,EAAEi+C,KAAOj+C,EAAE4I,EAAGlB,EAAGkpB,GAAI5wB,EAAEi+C,IAAK,GAAKrtB,GACvCA,EAAEvI,OAASqzB,EAAG9qB,EAAEstB,QAAUt9C,EAAGgwB,EAAEqgB,KAAO,SAAUjxC,GACjD,OAAO4wB,EAAE,IAAM5wB,IACd4wB,EAAEutB,GAAK3C,EAAEJ,GAAIxqB,EAAEwtB,GAAK5C,EAAG5qB,EAAEhwB,EAAI,GAAIgwB,EA9U0ChoB,I,6BCahF,SAASy1C,EAAaC,GACpB,IAAI53C,EAUJ,OAPEA,EADE43C,aAAsBt9C,MACjB,IAAIs9C,GACFA,aAAsBv5C,IACxB/D,MAAMqB,KAAKi8C,EAAW53C,QAEtBlH,OAAOkH,KAAK43C,GAGd53C,EAvBTlH,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAETnB,EAAQ2/C,gBAAkB3/C,EAAQy/C,aAAez/C,EAAQ4/C,6BAA0B,EAOnF5/C,EAAQ4/C,wBALR,SAAiC14B,EAAQ24B,GACvC,MAAMC,EAAiCD,EAAsBh3C,QAAQ,YAAa,OAClF,MAAO,GAAGqe,IAAS44B,yBAAsDA,YAmB3E9/C,EAAQy/C,aAAeA,EAOvBz/C,EAAQ2/C,gBALR,SAAyBD,GAEvB,MAAO,MADaD,EAAaC,GAAYh6C,MAAK,CAACiE,EAAGkU,IAAMA,EAAE5a,OAAS0G,EAAE1G,SAAQ8E,KAAK,KAAKc,QAAQ,MAAO,Y,6BC7B5G,IAAIk3C,EAAkB37C,MAAQA,KAAK27C,iBAAmB,SAAUloB,GAC9D,OAAOA,GAAOA,EAAIv2B,WAAau2B,EAAM,CACnC,QAAWA,IAIfj3B,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAETnB,EAAQggD,cAAgBhgD,EAAQigD,kBAAoBjgD,EAAQkgD,2BAAwB,EAEpF,MAAMC,EAAkBJ,EAAgB,EAAQ,MAE1CK,EAAUL,EAAgB,EAAQ,IAElCM,EAAU,EAAQ,IAElBC,EAAa,EAAQ,KAE3BF,EAAQ/6B,QAAQ5I,OAAO0jC,EAAgB96B,SAkCvCrlB,EAAQkgD,sBAhCR,MACE18C,YAAYuG,GACV,IAAIoO,GAEJpO,EAAkB,OAAVA,QAA4B,IAAVA,EAAmBA,EAAQ,IAAImf,gBAEpCA,KACnB9kB,KAAKm8C,QAAUx2C,GAEf3F,KAAKm8C,QAAmC,QAAxBpoC,EAAKpO,EAAMw2C,eAA4B,IAAPpoC,EAAgBA,EAAK,IAAI+Q,KACzE9kB,KAAKo8C,eAAiBF,EAAWG,iBAAiB12C,EAAM22C,WAI5DC,8BACE,OAAO,IAAIz3B,KAAK9kB,KAAKm8C,QAAQj1B,UAAmE,IAAvDlnB,KAAKw8C,kCAAkCx8C,KAAKm8C,UAGvFK,kCAAkClsB,EAAMmsB,GACtC,IAAI1oC,IAECuc,GAAQA,EAAKpJ,UAAY,KAC5BoJ,EAAO,IAAIxL,MAGb,MAAM43B,GAAyBpsB,EAAKuX,oBAEpC,OAAO6U,GADqJ,QAA9H3oC,EAAgC,OAA3B0oC,QAA8D,IAA3BA,EAAoCA,EAAyBz8C,KAAKo8C,sBAAmC,IAAProC,EAAgBA,EAAK2oC,KAQ7L,MAAMb,EACJz8C,YAAYu9C,EAAWC,GAKrB,GAJA58C,KAAK28C,UAAYA,EACjB38C,KAAK68C,YAAc,GACnB78C,KAAK88C,cAAgB,GAEjBF,EACF,IAAK,MAAMv/C,KAAOu/C,EAChB58C,KAAK68C,YAAYx/C,GAAOu/C,EAAgBv/C,GAI5C,MAAM0/C,EAAWf,EAAQ/6B,QAAQ07B,EAAUR,SAC3Cn8C,KAAKg9C,MAAM,MAAOD,EAASzsB,QAC3BtwB,KAAKg9C,MAAM,QAASD,EAAS1sB,QAAU,GACvCrwB,KAAKg9C,MAAM,OAAQD,EAASrtB,QAC5B1vB,KAAKg9C,MAAM,OAAQ,IACnBh9C,KAAKg9C,MAAM,SAAU,GACrBh9C,KAAKg9C,MAAM,SAAU,GACrBh9C,KAAKg9C,MAAM,cAAe,GAG5BrgD,IAAIsgD,GACF,OAAIA,KAAaj9C,KAAK68C,YACb78C,KAAK68C,YAAYI,GAGtBA,KAAaj9C,KAAK88C,cACb98C,KAAK88C,cAAcG,GAGrB,KAGTC,UAAUD,GACR,OAAOA,KAAaj9C,KAAK68C,YAG3BM,uBACE,OAAO3gD,OAAOkH,KAAK1D,KAAK68C,aAG1BG,MAAMC,EAAWlgD,GACf,OAAIkgD,KAAaj9C,KAAK68C,cAItB78C,KAAK88C,cAAcG,GAAalgD,GAHvBiD,KAOXgB,OAAOi8C,EAAWlgD,GAGhB,OAFAiD,KAAK68C,YAAYI,GAAalgD,SACvBiD,KAAK88C,cAAcG,GACnBj9C,KAGTW,OAAOs8C,UACEj9C,KAAK68C,YAAYI,UACjBj9C,KAAK88C,cAAcG,GAG5BxV,QACE,MAAMwV,EAAY,IAAIpB,EAAkB77C,KAAK28C,WAC7CM,EAAUJ,YAAc,GACxBI,EAAUH,cAAgB,GAE1B,IAAK,MAAMz/C,KAAO2C,KAAK68C,YACrBI,EAAUJ,YAAYx/C,GAAO2C,KAAK68C,YAAYx/C,GAGhD,IAAK,MAAMA,KAAO2C,KAAK88C,cACrBG,EAAUH,cAAcz/C,GAAO2C,KAAK88C,cAAcz/C,GAGpD,OAAO4/C,EAGTG,aACE,OAAQp9C,KAAKk9C,UAAU,UAAYl9C,KAAKk9C,UAAU,YAAcl9C,KAAKk9C,UAAU,UAGjFG,aACE,OAAQr9C,KAAKk9C,UAAU,aAAel9C,KAAKk9C,UAAU,SAAWl9C,KAAKk9C,UAAU,SAGjFI,yBACE,OAAOt9C,KAAKk9C,UAAU,aAAel9C,KAAKk9C,UAAU,SAAWl9C,KAAKk9C,UAAU,SAGhFK,0BACE,OAAOv9C,KAAKk9C,UAAU,QAAUl9C,KAAKk9C,UAAU,WAAal9C,KAAKk9C,UAAU,QAG7EM,cACE,MAAMltB,EAAOtwB,KAAKy9C,gCAClB,OAAIntB,EAAKoG,gBAAkB12B,KAAKrD,IAAI,UAChC2zB,EAAKwR,aAAe9hC,KAAKrD,IAAI,SAAW,IACxC2zB,EAAKyR,YAAc/hC,KAAKrD,IAAI,UACR,MAApBqD,KAAKrD,IAAI,SAAmB2zB,EAAKipB,YAAcv5C,KAAKrD,IAAI,WAClC,MAAtBqD,KAAKrD,IAAI,WAAqB2zB,EAAKmpB,cAAgBz5C,KAAKrD,IAAI,cAIlEuC,WACE,MAAO,oCAAoCgH,KAAKuc,UAAUziB,KAAK68C,gCAAgC32C,KAAKuc,UAAUziB,KAAK88C,+BAA+B52C,KAAKuc,UAAUziB,KAAK28C,cAGxKe,QACE,OAAO1B,EAAQ/6B,QAAQjhB,KAAKswB,QAG9BA,OACE,MAAMA,EAAOtwB,KAAKy9C,gCACZE,EAAqB39C,KAAK28C,UAAUH,kCAAkClsB,EAAMtwB,KAAKrD,IAAI,mBAC3F,OAAO,IAAImoB,KAAKwL,EAAKpJ,UAAiC,IAArBy2B,GAGnCF,gCACE,MAAMntB,EAAO,IAAIxL,KAAK9kB,KAAKrD,IAAI,QAASqD,KAAKrD,IAAI,SAAW,EAAGqD,KAAKrD,IAAI,OAAQqD,KAAKrD,IAAI,QAASqD,KAAKrD,IAAI,UAAWqD,KAAKrD,IAAI,UAAWqD,KAAKrD,IAAI,gBAEnJ,OADA2zB,EAAKqG,YAAY32B,KAAKrD,IAAI,SACnB2zB,EAGT,mCAAmCqsB,EAAWiB,GAC5C,IAAIttB,EAAO0rB,EAAQ/6B,QAAQ07B,EAAUR,SAErC,IAAK,MAAM9+C,KAAOugD,EAChBttB,EAAOA,EAAK7vB,IAAIm9C,EAAUvgD,GAAMA,GAGlC,MAAMwgD,EAAa,IAAIhC,EAAkBc,GA0CzC,OAxCIiB,EAAgB,MAAKA,EAAkB,QAAKA,EAAkB,QAChE3B,EAAQ6B,kBAAkBD,EAAYvtB,GACtC2rB,EAAQ8B,kBAAkBF,EAAYvtB,GAEL,OAA7BqsB,EAAUP,gBACZyB,EAAW78C,OAAO,kBAAmB27C,EAAUR,QAAQtU,uBAGzDoU,EAAQ+B,iBAAiBH,EAAYvtB,GAEJ,OAA7BqsB,EAAUP,gBACZyB,EAAWb,MAAM,kBAAmBL,EAAUR,QAAQtU,qBAGpD+V,EAAa,GACfC,EAAW78C,OAAO,MAAOsvB,EAAKA,QAC9ButB,EAAW78C,OAAO,QAASsvB,EAAKD,QAAU,GAC1CwtB,EAAW78C,OAAO,OAAQsvB,EAAKZ,UAE3BkuB,EAAgB,MAClBC,EAAWb,MAAM,UAAW1sB,EAAKoJ,OAGnCmkB,EAAWb,MAAM,MAAO1sB,EAAKA,QAEzBstB,EAAiB,OACnBC,EAAW78C,OAAO,QAASsvB,EAAKD,QAAU,GAC1CwtB,EAAW78C,OAAO,OAAQsvB,EAAKZ,UAE/BmuB,EAAWb,MAAM,QAAS1sB,EAAKD,QAAU,GAErCutB,EAAgB,KAClBC,EAAW78C,OAAO,OAAQsvB,EAAKZ,QAE/BmuB,EAAWb,MAAM,OAAQ1sB,EAAKZ,WAM/BmuB,GAKXjiD,EAAQigD,kBAAoBA,EAE5B,MAAMD,EACJx8C,YAAYu9C,EAAWj7C,EAAOu8C,EAAMh8C,EAAO6c,GACzC9e,KAAK28C,UAAYA,EACjB38C,KAAKk+C,QAAUvB,EAAUR,QACzBn8C,KAAK0B,MAAQA,EACb1B,KAAKi+C,KAAOA,EACZj+C,KAAKiC,MAAQA,GAAS,IAAI45C,EAAkBc,GAC5C38C,KAAK8e,IAAMA,EAGb2oB,QACE,MAAMjkB,EAAS,IAAIo4B,EAAc57C,KAAK28C,UAAW38C,KAAK0B,MAAO1B,KAAKi+C,MAGlE,OAFAz6B,EAAOvhB,MAAQjC,KAAKiC,MAAQjC,KAAKiC,MAAMwlC,QAAU,KACjDjkB,EAAO1E,IAAM9e,KAAK8e,IAAM9e,KAAK8e,IAAI2oB,QAAU,KACpCjkB,EAGT8M,OACE,OAAOtwB,KAAKiC,MAAMquB,OAGpBpxB,WACE,MAAO,0BAA0Bc,KAAK0B,iBAAiB1B,KAAKi+C,gBAKhEriD,EAAQggD,cAAgBA,G,6BCtQxB,IAAIuC,EAAkBn+C,MAAQA,KAAKm+C,kBAAoB3hD,OAAOY,OAAS,SAAUb,EAAGL,EAAGkjB,EAAGg/B,QAC7Ej5C,IAAPi5C,IAAkBA,EAAKh/B,GAC3B5iB,OAAOC,eAAeF,EAAG6hD,EAAI,CAC3B1hD,YAAY,EACZC,IAAK,WACH,OAAOT,EAAEkjB,OAGX,SAAU7iB,EAAGL,EAAGkjB,EAAGg/B,QACVj5C,IAAPi5C,IAAkBA,EAAKh/B,GAC3B7iB,EAAE6hD,GAAMliD,EAAEkjB,KAGRi/B,EAAqBr+C,MAAQA,KAAKq+C,qBAAuB7hD,OAAOY,OAAS,SAAUb,EAAG8iB,GACxF7iB,OAAOC,eAAeF,EAAG,UAAW,CAClCG,YAAY,EACZK,MAAOsiB,KAEP,SAAU9iB,EAAG8iB,GACf9iB,EAAW,QAAI8iB,IAGbi/B,EAAet+C,MAAQA,KAAKs+C,cAAgB,SAAU7qB,GACxD,GAAIA,GAAOA,EAAIv2B,WAAY,OAAOu2B,EAClC,IAAIjQ,EAAS,GACb,GAAW,MAAPiQ,EAAa,IAAK,IAAIrU,KAAKqU,EAAe,YAANrU,GAAmB5iB,OAAOkB,UAAUC,eAAe1B,KAAKw3B,EAAKrU,IAAI++B,EAAgB36B,EAAQiQ,EAAKrU,GAItI,OAFAi/B,EAAmB76B,EAAQiQ,GAEpBjQ,GAGThnB,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAETnB,EAAQ2iD,UAAY3iD,EAAQuK,MAAQvK,EAAQ4iD,OAAS5iD,EAAQ0pB,OAAS1pB,EAAQ6iD,GAAK7iD,EAAQ8iD,GAAK9iD,EAAQ+iD,GAAK/iD,EAAQgjD,GAAKhjD,EAAQijD,GAAKjjD,EAAQkjD,GAAKljD,EAAQmjD,GAAKnjD,EAAQojD,QAAUpjD,EAAQqjD,SAAWrjD,EAAQsjD,OAAStjD,EAAQu/C,QAAK,EAEpO,MAAMA,EAAKmD,EAAa,EAAQ,MAEhC1iD,EAAQu/C,GAAKA,EAEb,MAAMgE,EAAW,EAAQ,IAEzB3iD,OAAOC,eAAeb,EAAS,SAAU,CACvCc,YAAY,EACZC,IAAK,WACH,OAAOwiD,EAASD,UAKpB,SAAWD,GACTA,EAASA,EAAa,GAAI,GAAK,KAC/BA,EAASA,EAAa,GAAI,GAAK,KAFjC,CAGcrjD,EAAQqjD,WAAarjD,EAAQqjD,SAAW,KAItD,SAAWD,GACTA,EAAQA,EAAgB,OAAI,GAAK,SACjCA,EAAQA,EAAgB,OAAI,GAAK,SACjCA,EAAQA,EAAiB,QAAI,GAAK,UAClCA,EAAQA,EAAmB,UAAI,GAAK,YACpCA,EAAQA,EAAkB,SAAI,GAAK,WACnCA,EAAQA,EAAgB,OAAI,GAAK,SACjCA,EAAQA,EAAkB,SAAI,GAAK,WAPrC,CAQapjD,EAAQojD,UAAYpjD,EAAQojD,QAAU,KAEnD,MAAMD,EAAKT,EAAa,EAAQ,MAEhC1iD,EAAQmjD,GAAKA,EAEb,MAAMD,EAAKR,EAAa,EAAQ,MAEhC1iD,EAAQkjD,GAAKA,EAEb,MAAMD,EAAKP,EAAa,EAAQ,MAEhC1iD,EAAQijD,GAAKA,EAEb,MAAMD,EAAKN,EAAa,EAAQ,MAEhC1iD,EAAQgjD,GAAKA,EAEb,MAAMD,EAAKL,EAAa,EAAQ,MAEhC1iD,EAAQ+iD,GAAKA,EAEb,MAAMD,EAAKJ,EAAa,EAAQ,MAEhC1iD,EAAQ8iD,GAAKA,EAEb,MAAMD,EAAKH,EAAa,EAAQ,MAEhC1iD,EAAQ6iD,GAAKA,EACb7iD,EAAQ0pB,OAAS61B,EAAG71B,OACpB1pB,EAAQ4iD,OAASrD,EAAGqD,OAMpB5iD,EAAQuK,MAJR,SAAe83C,EAAMmB,EAAKC,GACxB,OAAOzjD,EAAQ4iD,OAAOr4C,MAAM83C,EAAMmB,EAAKC,IASzCzjD,EAAQ2iD,UAJR,SAAmBN,EAAMmB,EAAKC,GAC5B,OAAOzjD,EAAQ4iD,OAAOD,UAAUN,EAAMmB,EAAKC,K,6BCzG7C7iD,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAETnB,EAAQ0jD,eAAiB1jD,EAAQ2jD,mBAAqB3jD,EAAQ4jD,UAAY5jD,EAAQ6jD,aAAe7jD,EAAQ8jD,0BAA4B9jD,EAAQ+jD,uBAAyB/jD,EAAQgkD,mBAAqBhkD,EAAQikD,eAAiBjkD,EAAQkkD,qBAAuBlkD,EAAQmkD,wBAA0BnkD,EAAQokD,wBAA0BpkD,EAAQqkD,iBAAmBrkD,EAAQskD,2BAA6BtkD,EAAQukD,wBAAqB,EAE5Z,MAAMC,EAAY,EAAQ,GAEpBC,EAAU,EAAQ,GA2JxB,SAAST,EAAmB10C,GAC1B,MAAMo1C,EAAMp1C,EAAMjG,cAElB,YAA6CE,IAAzCvJ,EAAQokD,wBAAwBM,GAC3B1kD,EAAQokD,wBAAwBM,GACtB,MAARA,GAAuB,OAARA,EACjB,EACEA,EAAIp1C,MAAM,OACZ,EACEo1C,EAAIp1C,MAAM,QACZ,GACEo1C,EAAIp1C,MAAM,UACZ,EACEo1C,EAAIp1C,MAAM,WACZ,EAGFo6B,WAAWgb,GA1KpB1kD,EAAQukD,mBAAqB,CAC3BI,OAAQ,EACRC,IAAK,EACL,OAAQ,EACRC,OAAQ,EACRC,IAAK,EACL,OAAQ,EACRC,QAAS,EACTC,IAAK,EACL,OAAQ,EACRC,UAAW,EACXC,IAAK,EACL,OAAQ,EACRC,SAAU,EACVC,MAAO,EACP,SAAU,EACVC,KAAM,EACN,QAAS,EACTC,IAAK,EACL,OAAQ,EACRC,OAAQ,EACRC,IAAK,EACL,OAAQ,EACRC,SAAU,EACVC,IAAK,EACL,OAAQ,GAEV1lD,EAAQskD,2BAA6B,CACnCqB,QAAS,EACTC,SAAU,EACVC,MAAO,EACPC,MAAO,EACPC,IAAK,EACLC,KAAM,EACNC,KAAM,EACNC,OAAQ,EACRC,UAAW,EACXC,QAAS,GACTC,SAAU,GACVC,SAAU,IAEZtmD,EAAQqkD,iBAAmBzjD,OAAOwE,OAAOxE,OAAOwE,OAAO,GAAIpF,EAAQskD,4BAA6B,CAC9FiC,IAAK,EACL,OAAQ,EACRC,IAAK,EACL,OAAQ,EACRC,IAAK,EACL,OAAQ,EACRC,IAAK,EACL,OAAQ,EACRC,IAAK,EACL,OAAQ,EACRC,IAAK,EACL,OAAQ,EACRC,IAAK,EACL,OAAQ,EACRC,IAAK,EACL,OAAQ,EACRC,KAAM,EACN,QAAS,EACTC,IAAK,GACL,OAAQ,GACRC,IAAK,GACL,OAAQ,GACRC,IAAK,GACL,OAAQ,KAEVlnD,EAAQokD,wBAA0B,CAChC+C,IAAK,EACLC,IAAK,EACLC,MAAO,EACPC,KAAM,EACNC,KAAM,EACNC,IAAK,EACLC,MAAO,EACPC,MAAO,EACPC,KAAM,EACNC,IAAK,GACLC,OAAQ,GACRC,OAAQ,IAEV9nD,EAAQmkD,wBAA0B,CAChC4D,MAAO,EACPrf,OAAQ,EACRsf,MAAO,EACPC,OAAQ,EACRC,MAAO,EACPC,MAAO,EACPC,QAAS,EACTC,OAAQ,EACRC,MAAO,EACPC,MAAO,GACPC,SAAU,GACVC,QAAS,GACTC,WAAY,GACZC,WAAY,GACZC,UAAW,GACXC,UAAW,GACXC,YAAa,GACbC,WAAY,GACZC,WAAY,GACZC,UAAW,GACX,eAAgB,GAChB,eAAgB,GAChB,gBAAiB,GACjB,gBAAiB,GACjB,eAAgB,GAChB,eAAgB,GAChB,gBAAiB,GACjB,gBAAiB,GACjB,eAAgB,GAChB,eAAgB,GAChB,eAAgB,GAChB,eAAgB,GAChB,iBAAkB,GAClB,iBAAkB,GAClB,gBAAiB,GACjB,gBAAiB,GACjB,eAAgB,GAChB,eAAgB,GAChB,UAAa,GACb,eAAgB,GAChB,eAAgB,IAElBjpD,EAAQkkD,qBAAuB,CAC7BgF,IAAK,SACLxgB,OAAQ,SACRxI,QAAS,SACTvG,IAAK,SACLwvB,KAAM,SACN1gB,OAAQ,SACR3I,QAAS,SACTjO,EAAG,OACHu3B,GAAI,OACJC,IAAK,OACL1hB,KAAM,OACNhI,MAAO,OACP7B,IAAK,IACLuM,KAAM,IACN3O,KAAM,OACNyO,MAAO,OACP1V,MAAO,QACPwD,OAAQ,QACRqxB,IAAK,UACLpf,QAAS,UACTD,SAAU,UACV7X,EAAG,OACHm3B,GAAI,OACJz1B,KAAM,OACNkW,MAAO,QAEThqC,EAAQikD,eAAiB,MAAMO,EAAU7E,gBAAgB3/C,EAAQokD,2IAsBjEpkD,EAAQgkD,mBAAqBA,EAC7BhkD,EAAQ+jD,uBAAyB,MAAMS,EAAU7E,gBAAgB3/C,EAAQmkD,uDAazEnkD,EAAQ8jD,0BAXR,SAAmCx0C,GACjC,IAAIo1C,EAAMp1C,EAAMjG,cAEhB,YAA6CE,IAAzCvJ,EAAQmkD,wBAAwBO,GAC3B1kD,EAAQmkD,wBAAwBO,IAGzCA,EAAMA,EAAI77C,QAAQ,oBAAqB,IAChC4xB,SAASiqB,KAIlB1kD,EAAQ6jD,aAAe,0EAsBvB7jD,EAAQ4jD,UApBR,SAAmBt0C,GACjB,GAAI,MAAM5L,KAAK4L,GAEb,OADAA,EAAQA,EAAMzG,QAAQ,MAAO,IACtB4xB,SAASnrB,GAAS,IAG3B,GAAI,QAAQ5L,KAAK4L,GAEf,OADAA,EAAQA,EAAMzG,QAAQ,QAAS,KACvB4xB,SAASnrB,GAGnB,GAAI,WAAW5L,KAAK4L,GAElB,OADAA,EAAQA,EAAMzG,QAAQ,WAAY,IAC3B4xB,SAASnrB,GAGlB,MAAMk6C,EAAgB/uB,SAASnrB,GAC/B,OAAOm1C,EAAQgF,qBAAqBD,IAItC,MAAME,EAA2B,IAAI1pD,EAAQikD,2BAA2BO,EAAU7E,gBAAgB3/C,EAAQkkD,yBACpGyF,EAAyB,IAAI7zC,OAAO4zC,EAA0B,KAmBpE,SAASE,EAAwB5H,EAAW1yC,GAC1C,MAAMo1C,EAAMV,EAAmB10C,EAAM,IAErC0yC,EADahiD,EAAQkkD,qBAAqB50C,EAAM,GAAGjG,gBACjCq7C,EArBpB1kD,EAAQ2jD,mBAAqBa,EAAU5E,wBAAwB,gCAAiC8J,GAgBhG1pD,EAAQ0jD,eAdR,SAAwBmG,GACtB,MAAM7H,EAAY,GAClB,IAAI8H,EAAgBD,EAChBv6C,EAAQq6C,EAAuB1lB,KAAK6lB,GAExC,KAAOx6C,GACLs6C,EAAwB5H,EAAW1yC,GACnCw6C,EAAgBA,EAAcxN,UAAUhtC,EAAM,GAAGrM,QAAQsQ,OACzDjE,EAAQq6C,EAAuB1lB,KAAK6lB,GAGtC,OAAO9H,I,6BC3OT,IAAIjC,EAAkB37C,MAAQA,KAAK27C,iBAAmB,SAAUloB,GAC9D,OAAOA,GAAOA,EAAIv2B,WAAau2B,EAAM,CACnC,QAAWA,IAIfj3B,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAETnB,EAAQ+pD,qBAAuB/pD,EAAQypD,0BAAuB,EAE9D,MAAMrJ,EAAUL,EAAgB,EAAQ,IAcxC//C,EAAQypD,qBAZR,SAA8BO,GAS5B,OARIA,EAAa,MAEbA,GADEA,EAAa,GACW,KAEA,KAIvBA,GAuBThqD,EAAQ+pD,qBAlBR,SAA8BzH,EAASxkB,EAAKrJ,GAC1C,MAAMw1B,EAAY7J,EAAQ/6B,QAAQi9B,GAClC,IAAI4H,EAAaD,EACjBC,EAAaA,EAAWz1B,MAAMA,EAAQ,GACtCy1B,EAAaA,EAAWx1B,KAAKoJ,GAC7BosB,EAAaA,EAAWp2B,KAAKm2B,EAAUn2B,QACvC,MAAMq2B,EAAWD,EAAWrlD,IAAI,EAAG,KAC7BulD,EAAWF,EAAWrlD,KAAK,EAAG,KAQpC,OANIkO,KAAKqc,IAAI+6B,EAASx3B,KAAKs3B,IAAcl3C,KAAKqc,IAAI86B,EAAWv3B,KAAKs3B,IAChEC,EAAaC,EACJp3C,KAAKqc,IAAIg7B,EAASz3B,KAAKs3B,IAAcl3C,KAAKqc,IAAI86B,EAAWv3B,KAAKs3B,MACvEC,EAAaE,GAGRF,EAAWp2B,S,6BC1CpBlzB,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAETnB,EAAQ0jD,eAAiB1jD,EAAQ2jD,mBAAqB3jD,EAAQ4jD,UAAY5jD,EAAQ6jD,aAAe7jD,EAAQ8jD,0BAA4B9jD,EAAQ+jD,uBAAyB/jD,EAAQgkD,mBAAqBhkD,EAAQikD,eAAiBjkD,EAAQkkD,qBAAuBlkD,EAAQmkD,wBAA0BnkD,EAAQokD,wBAA0BpkD,EAAQqkD,iBAAmBrkD,EAAQskD,2BAA6BtkD,EAAQukD,mBAAqBvkD,EAAQqqD,iBAAc,EAElb,MAAM7F,EAAY,EAAQ,GAEpBC,EAAU,EAAQ,GA0PxB,SAAST,EAAmB10C,GAC1B,MAAMo1C,EAAMp1C,EAAMjG,cAElB,YAA6CE,IAAzCvJ,EAAQokD,wBAAwBM,GAC3B1kD,EAAQokD,wBAAwBM,GAGrCA,EAAIp1C,MAAM,0DACL,EACEo1C,EAAIp1C,MAAM,sBACZ,GACEo1C,EAAIp1C,MAAM,sBACZ,EACU,KAARo1C,EACF,EAGFhb,WAAWgb,GAzQpB1kD,EAAQqqD,YAAc,CACpBC,aAAc,uBACdC,cAAe,yBACfr/B,MAAO,MAETlrB,EAAQukD,mBAAqB,CAC3B,qEAAa,EACb,qEAAa,EACb,qBAAK,EACL,sBAAQ,EACR,qEAAa,EACb,2EAAc,EACd,eAAI,EACJ,gBAAO,EACP,6CAAS,EACT,mDAAU,EACV,eAAI,EACJ,gBAAO,EACP,iCAAO,EACP,iCAAO,EACP,iCAAO,EACP,eAAI,EACJ,gBAAO,EACP,6CAAS,EACT,mDAAU,EACV,eAAI,EACJ,gBAAO,EACP,6CAAS,EACT,6CAAS,EACT,6CAAS,EACT,eAAI,EACJ,gBAAO,EACP,6CAAS,EACT,6CAAS,EACT,6CAAS,EACT,eAAI,EACJ,gBAAO,GAETvkD,EAAQskD,2BAA6B,CACnC,uCAAQ,EACR,uCAAQ,EACR,uCAAQ,EACR,6CAAS,EACT,6CAAS,EACT,6CAAS,EACT,2BAAM,EACN,iCAAO,EACP,iCAAO,EACP,uCAAQ,EACR,uCAAQ,EACR,uCAAQ,EACR,qBAAK,EACL,qBAAK,EACL,qBAAK,EACL,2BAAM,EACN,2BAAM,EACN,2BAAM,EACN,2BAAM,EACN,2BAAM,EACN,2BAAM,EACN,uCAAQ,EACR,6CAAS,EACT,6CAAS,EACT,mDAAU,EACV,mDAAU,EACV,mDAAU,EACV,6CAAS,GACT,6CAAS,GACT,6CAAS,GACT,uCAAQ,GACR,uCAAQ,GACR,uCAAQ,GACR,6CAAS,GACT,6CAAS,GACT,6CAAS,IAEXtkD,EAAQqkD,iBAAmBzjD,OAAOwE,OAAOxE,OAAOwE,OAAO,GAAIpF,EAAQskD,4BAA6B,CAC9F,qBAAK,EACL,sBAAQ,EACR,qBAAK,EACL,sBAAQ,EACR,qBAAK,EACL,sBAAQ,EACR,qBAAK,EACL,sBAAQ,EACR,qBAAK,EACL,sBAAQ,EACR,qBAAK,EACL,sBAAQ,EACR,qBAAK,GACL,sBAAQ,GACR,qBAAK,GACL,sBAAQ,GACR,qBAAK,GACL,sBAAQ,KAEVtkD,EAAQokD,wBAA0B,CAChC,2BAAM,EACN,2BAAM,EACN,iCAAO,EACP,2BAAM,EACN,qBAAK,EACL,qBAAK,EACL,2BAAM,EACN,qBAAK,EACL,2BAAM,EACN,2BAAM,EACN,uCAAQ,EACR,6CAAS,EACT,6CAAS,EACT,2BAAM,EACN,2BAAM,EACN,iCAAO,EACP,iCAAO,EACP,2BAAM,EACN,2BAAM,EACN,uCAAQ,EACR,uCAAQ,EACR,uCAAQ,EACR,uCAAQ,EACR,uCAAQ,GACR,uCAAQ,GACR,qEAAa,GACb,qEAAa,GACb,+DAAY,GACZ,+DAAY,IAEdpkD,EAAQmkD,wBAA0B,CAChC,uCAAQ,EACR,6CAAS,EACT,uCAAQ,EACR,6CAAS,EACT,uCAAQ,EACR,mDAAU,EACV,yDAAW,EACX,+DAAY,EACZ,iCAAO,EACP,uCAAQ,EACR,uCAAQ,EACR,6CAAS,EACT,6CAAS,EACT,mDAAU,EACV,6CAAS,EACT,mDAAU,EACV,6CAAS,EACT,mDAAU,EACV,6CAAS,GACT,mDAAU,GACV,2EAAc,GACd,iFAAe,GACf,qEAAa,GACb,2EAAc,GACd,qEAAa,GACb,2EAAc,GACd,iFAAe,GACf,uFAAgB,GAChB,qEAAa,GACb,2EAAc,GACd,2EAAc,GACd,iFAAe,GACf,qEAAa,GACb,2EAAc,GACd,iFAAe,GACf,uFAAgB,GAChB,iFAAe,GACf,uFAAgB,GAChB,yDAAW,GACX,+DAAY,GACZ,wFAAmB,GACnB,8FAAoB,GACpB,wFAAmB,GACnB,8FAAoB,GACpB,wFAAmB,GACnB,oGAAqB,GACrB,0GAAsB,GACtB,gHAAuB,GACvB,kFAAkB,GAClB,wFAAmB,GACnB,wFAAmB,GACnB,8FAAoB,GACpB,8FAAoB,GACpB,oGAAqB,GACrB,8FAAoB,GACpB,oGAAqB,GACrB,8FAAoB,GACpB,oGAAqB,GACrB,yDAAa,GACb,+DAAc,GACd,wFAAmB,GACnB,8FAAoB,IAEtBnkD,EAAQkkD,qBAAuB,CAC7B,qBAAK,SACL,6CAAS,SACT,uCAAQ,SACR,6CAAS,SACT,6CAAS,SACT,+DAAY,SACZ,+DAAY,SACZ,+DAAY,SACZ,+DAAY,SACZ,qBAAK,SACL,uCAAQ,SACR,iCAAO,SACP,uCAAQ,SACR,uCAAQ,SACR,6CAAS,SACT,6CAAS,SACT,6CAAS,SACT,qBAAK,OACL,iCAAO,OACP,2BAAM,OACN,2BAAM,OACN,6CAAS,OACT,uCAAQ,OACR,uCAAQ,OACR,iCAAO,OACP,2BAAM,IACN,qBAAK,IACL,2BAAM,IACN,iCAAO,IACP,iCAAO,IACP,uCAAQ,OACR,uCAAQ,OACR,uCAAQ,OACR,uCAAQ,OACR,uCAAQ,OACR,mDAAU,OACV,mDAAU,OACV,6CAAS,OACT,iCAAO,QACP,uCAAQ,QACR,6CAAS,QACT,uCAAQ,QACR,6CAAS,UACT,mDAAU,UACV,yDAAW,UACX,qBAAK,OACL,2BAAM,OACN,2BAAM,OACN,iCAAO,OACP,qBAAK,OACL,iCAAO,OACP,uCAAQ,OACR,6CAAS,QAEXlkD,EAAQikD,eAAiB,MAAMO,EAAU7E,gBAAgB3/C,EAAQokD,0KAsBjEpkD,EAAQgkD,mBAAqBA,EAC7BhkD,EAAQ+jD,uBAAyB,MAAMS,EAAU7E,gBAAgB3/C,EAAQmkD,+FAYzEnkD,EAAQ8jD,0BAVR,SAAmCx0C,GACjC,IAAIo1C,EAAMp1C,EAAMjG,cAEhB,YAA6CE,IAAzCvJ,EAAQmkD,wBAAwBO,GAC3B1kD,EAAQmkD,wBAAwBO,GAGlCjqB,SAASiqB,IAIlB,MAAM5wB,EAAO,mGACb9zB,EAAQ6jD,aAAe,qBAAqB/vB,iHAAwDA,eAAkBA,KAqBtH9zB,EAAQ4jD,UAnBR,SAAmBt0C,GAKjB,GAJI,gEAAmB5L,KAAK4L,KAC1BA,EAAQA,EAAMzG,QAAQ,gEAAoB,KAGxC,8DAAsBnF,KAAK4L,GAE7B,OADAA,EAAQA,EAAMzG,QAAQ,8DAAuB,KACrC4xB,SAASnrB,GAGnB,GAAI,oCAAgB5L,KAAK4L,GAEvB,OADAA,EAAQA,EAAMzG,QAAQ,oCAAiB,IAChC4xB,SAASnrB,GAGlB,MAAMk6C,EAAgB/uB,SAASnrB,GAC/B,OAAOm1C,EAAQgF,qBAAqBD,IAItC,MAAME,EAA2B,IAAI1pD,EAAQikD,2BAA2BO,EAAU7E,gBAAgB3/C,EAAQkkD,yBACpGyF,EAAyB,IAAI7zC,OAAO4zC,EAA0B,KAmBpE,SAASE,EAAwB5H,EAAW1yC,GAC1C,MAAMo1C,EAAMV,EAAmB10C,EAAM,IAErC0yC,EADahiD,EAAQkkD,qBAAqB50C,EAAM,GAAGjG,gBACjCq7C,EArBpB1kD,EAAQ2jD,mBAAqBa,EAAU5E,wBAAwB,mGAAmC8J,GAgBlG1pD,EAAQ0jD,eAdR,SAAwBmG,GACtB,MAAM7H,EAAY,GAClB,IAAI8H,EAAgBD,EAChBv6C,EAAQq6C,EAAuB1lB,KAAK6lB,GAExC,KAAOx6C,GACLs6C,EAAwB5H,EAAW1yC,GACnCw6C,EAAgBA,EAAcxN,UAAUhtC,EAAM,GAAGrM,QAAQsQ,OACzDjE,EAAQq6C,EAAuB1lB,KAAK6lB,GAGtC,OAAO9H,I,6BCzUTphD,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAETnB,EAAQoiD,iBAAmBpiD,EAAQwqD,iBAAmBxqD,EAAQkiD,kBAAoBliD,EAAQmiD,kBAAoBniD,EAAQyqD,gBAAkBzqD,EAAQ0qD,sBAAmB,EAEnK,MAAMC,EAAU,EAAQ,GAkBxB,SAASxI,EAAkBd,EAAWuJ,GACpCvJ,EAAUj8C,OAAO,MAAOwlD,EAAYl2B,QACpC2sB,EAAUj8C,OAAO,QAASwlD,EAAYn2B,QAAU,GAChD4sB,EAAUj8C,OAAO,OAAQwlD,EAAY92B,QAoBvC,SAAS02B,EAAiBnJ,EAAWuJ,GACnCvJ,EAAUD,MAAM,MAAOwJ,EAAYl2B,QACnC2sB,EAAUD,MAAM,QAASwJ,EAAYn2B,QAAU,GAC/C4sB,EAAUD,MAAM,OAAQwJ,EAAY92B,QAKtC,SAASsuB,EAAiBf,EAAWuJ,GACnCvJ,EAAUD,MAAM,OAAQwJ,EAAYjjB,QACpC0Z,EAAUD,MAAM,SAAUwJ,EAAYniB,UACtC4Y,EAAUD,MAAM,SAAUwJ,EAAYliB,UACtC2Y,EAAUD,MAAM,cAAewJ,EAAYjiB,eA7C7C3oC,EAAQ0qD,iBANR,SAA0BrJ,EAAWuJ,GAEnCzI,EAAkBd,EADlBuJ,EAAcA,EAAY/lD,IAAI,EAAG,QAEjCu9C,EAAiBf,EAAWuJ,IAW9B5qD,EAAQyqD,gBANR,SAAyBpJ,EAAWuJ,GAElCJ,EAAiBnJ,EADjBuJ,EAAcA,EAAY/lD,IAAI,EAAG,QAEjCu9C,EAAiBf,EAAWuJ,IAW9B5qD,EAAQmiD,kBAAoBA,EAe5BniD,EAAQkiD,kBAbR,SAA2Bb,EAAWuJ,GACpCvJ,EAAUj8C,OAAO,OAAQwlD,EAAYjjB,QACrC0Z,EAAUj8C,OAAO,SAAUwlD,EAAYniB,UACvC4Y,EAAUj8C,OAAO,SAAUwlD,EAAYliB,UACvC2Y,EAAUj8C,OAAO,cAAewlD,EAAYjiB,eAExC0Y,EAAUtgD,IAAI,QAAU,GAC1BsgD,EAAUj8C,OAAO,WAAYulD,EAAQtH,SAASwH,IAE9CxJ,EAAUj8C,OAAO,WAAYulD,EAAQtH,SAASyH,KAYlD9qD,EAAQwqD,iBAAmBA,EAS3BxqD,EAAQoiD,iBAAmBA,G,6BC7D3BxhD,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAETnB,EAAQ+qD,oBAAsB/qD,EAAQgrD,sBAAmB,EAYzDhrD,EAAQgrD,iBAVR,SAA0BC,GACxB,MAAMC,EAAW,GAEjB,IAAK,MAAMzpD,KAAOwpD,EAChBC,EAASzpD,IAAQwpD,EAAUxpD,GAG7B,OAAOypD,GA4BTlrD,EAAQ+qD,oBAvBR,SAA6B9I,EAAYgJ,GACvC,MAAMn8B,EAASmzB,EAAWpW,QAC1B,IAAInX,EAAOutB,EAAWH,QAEtB,IAAK,MAAMrgD,KAAOwpD,EAChBv2B,EAAOA,EAAK7vB,IAAIomD,EAAUxpD,GAAMA,GAelC,OAZI,QAASwpD,GAAa,MAAOA,GAAa,SAAUA,GAAa,UAAWA,GAAa,SAAUA,KACrGn8B,EAAOsyB,MAAM,MAAO1sB,EAAKA,QACzB5F,EAAOsyB,MAAM,QAAS1sB,EAAKD,QAAU,GACrC3F,EAAOsyB,MAAM,OAAQ1sB,EAAKZ,UAGxB,WAAYm3B,GAAa,WAAYA,GAAa,SAAUA,KAC9Dn8B,EAAOsyB,MAAM,SAAU1sB,EAAKgU,UAC5B5Z,EAAOsyB,MAAM,SAAU1sB,EAAK+T,UAC5B3Z,EAAOsyB,MAAM,OAAQ1sB,EAAKiT,SAGrB7Y,I,6BCrCTluB,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAETnB,EAAQ0jD,eAAiB1jD,EAAQ2jD,mBAAqB3jD,EAAQ4jD,UAAY5jD,EAAQ6jD,aAAe7jD,EAAQ8jD,0BAA4B9jD,EAAQ+jD,uBAAyB/jD,EAAQgkD,mBAAqBhkD,EAAQikD,eAAiBjkD,EAAQkkD,qBAAuBlkD,EAAQmkD,wBAA0BnkD,EAAQokD,wBAA0BpkD,EAAQqkD,iBAAmBrkD,EAAQukD,wBAAqB,EAEvX,MAAMC,EAAY,EAAQ,GAEpBC,EAAU,EAAQ,GAsJxB,SAAST,EAAmB10C,GAC1B,MAAMo1C,EAAMp1C,EAAMjG,cAElB,YAA6CE,IAAzCvJ,EAAQokD,wBAAwBM,GAC3B1kD,EAAQokD,wBAAwBM,GACtB,SAARA,EACF,EACU,SAARA,GAAkBA,EAAIp1C,MAAM,UAC9B,GAGFo6B,WAAWgb,EAAI77C,QAAQ,IAAK,MA/JrC7I,EAAQukD,mBAAqB,CAC3B4G,OAAQ,EACRC,IAAK,EACL,OAAQ,EACRC,GAAI,EACJ,MAAO,EACPC,QAAS,EACTC,GAAI,EACJ,MAAO,EACPC,QAAS,EACTC,IAAK,EACL,OAAQ,EACRC,GAAI,EACJ,MAAO,EACPC,SAAU,EACVC,IAAK,EACL,OAAQ,EACRC,GAAI,EACJ,MAAO,EACPC,UAAW,EACXC,KAAM,EACN,QAAS,EACTC,GAAI,EACJ,MAAO,EACPC,QAAS,EACTC,KAAM,EACN,QAAS,EACTC,GAAI,EACJ,MAAO,EACPC,SAAU,EACVC,IAAK,EACL,OAAQ,EACR,GAAM,EACN,MAAO,GAETrsD,EAAQqkD,iBAAmB,CACzBiI,QAAS,EACT/F,IAAK,EACL,OAAQ,EACRgG,SAAU,EACV/F,IAAK,EACL,OAAQ,EACRgG,MAAO,EACP/F,IAAK,EACL,OAAQ,EACRX,MAAO,EACPY,IAAK,EACL,OAAQ,EACR+F,IAAK,EACLC,KAAM,EACN/F,IAAK,EACL,OAAQ,EACRgG,KAAM,EACN/F,IAAK,EACL,OAAQ,EACRgG,SAAU,EACV/F,IAAK,EACL,OAAQ,EACRV,UAAW,EACXW,IAAK,EACL,OAAQ,EACRC,KAAM,EACN,QAAS,EACT8F,QAAS,GACTC,IAAK,GACL,OAAQ,GACRzG,SAAU,GACVY,IAAK,GACL,OAAQ,GACRX,SAAU,GACVY,IAAK,GACL,OAAQ,IAEVlnD,EAAQokD,wBAA0B,CAChC2I,IAAK,EACLC,KAAM,EACNC,KAAM,EACNC,KAAM,EACNC,KAAM,EACNC,IAAK,EACLC,MAAO,EACPC,KAAM,EACNC,MAAO,EACPC,KAAM,GACNC,IAAK,GACLC,OAAQ,IAEV1tD,EAAQmkD,wBAA0B,CAChCwJ,OAAQ,EACRC,OAAQ,EACRC,MAAO,EACPC,OAAQ,EACRC,OAAQ,EACRC,MAAO,EACPC,QAAS,EACTC,QAAS,EACTC,QAAS,EACTC,OAAQ,GACRC,MAAO,GACPC,SAAU,GACVC,UAAW,GACXC,WAAY,GACZC,WAAY,GACZC,UAAW,GACXC,YAAa,GACbC,WAAY,GACZC,YAAa,GACbC,WAAY,GACZ,gBAAmB,GACnB,sBAAoB,GACpB,iBAAoB,GACpB,iBAAoB,GACpB,iBAAoB,GACpB,gBAAmB,GACnB,kBAAqB,GACrB,cAAiB,GACjB,eAAkB,GAClB,UAAa,GACb,eAAkB,IAEpB9uD,EAAQkkD,qBAAuB,CAC7BgF,IAAK,SACLxgB,OAAQ,SACRqmB,SAAU,SACVp1B,IAAK,SACLwvB,KAAM,SACN1gB,OAAQ,SACRumB,OAAQ,SACRC,QAAS,SACTC,SAAU,SACVr9B,EAAG,OACHu3B,GAAI,OACJC,IAAK,OACL8F,IAAK,OACLv7B,EAAG,OACHw7B,KAAM,OACNC,IAAK,IACLC,MAAO,IACP5zB,KAAM,OACN6zB,MAAO,OACPC,MAAO,QACPC,QAAS,QACTC,KAAM,OACNC,GAAI,OACJC,MAAO,QAET5vD,EAAQikD,eAAiB,MAAMO,EAAU7E,gBAAgB3/C,EAAQokD,uEAgBjEpkD,EAAQgkD,mBAAqBA,EAC7BhkD,EAAQ+jD,uBAAyB,MAAMS,EAAU7E,gBAAgB3/C,EAAQmkD,kDAazEnkD,EAAQ8jD,0BAXR,SAAmCx0C,GACjC,IAAIo1C,EAAMp1C,EAAMjG,cAEhB,YAA6CE,IAAzCvJ,EAAQmkD,wBAAwBO,GAC3B1kD,EAAQmkD,wBAAwBO,IAGzCA,EAAMA,EAAI77C,QAAQ,eAAgB,IAC3B4xB,SAASiqB,KAIlB1kD,EAAQ6jD,aAAe,gFAiBvB7jD,EAAQ4jD,UAfR,SAAmBt0C,GACjB,GAAI,iBAAiB5L,KAAK4L,GAExB,OADAA,EAAQA,EAAMzG,QAAQ,iBAAkB,KAChC4xB,SAASnrB,GAGnB,GAAI,eAAe5L,KAAK4L,GAEtB,OADAA,EAAQA,EAAMzG,QAAQ,eAAgB,IAC/B4xB,SAASnrB,GAGlB,MAAMk6C,EAAgB/uB,SAASnrB,GAC/B,OAAOm1C,EAAQgF,qBAAqBD,IAItC,MAAME,EAA2B,IAAI1pD,EAAQikD,2BAA2BO,EAAU7E,gBAAgB3/C,EAAQkkD,iCACpGyF,EAAyB,IAAI7zC,OAAO4zC,EAA0B,KAmBpE,SAASE,EAAwB5H,EAAW1yC,GAC1C,MAAMo1C,EAAMV,EAAmB10C,EAAM,IAErC0yC,EADahiD,EAAQkkD,qBAAqB50C,EAAM,GAAGjG,gBACjCq7C,EArBpB1kD,EAAQ2jD,mBAAqBa,EAAU5E,wBAAwB,yBAA0B8J,GAgBzF1pD,EAAQ0jD,eAdR,SAAwBmG,GACtB,MAAM7H,EAAY,GAClB,IAAI8H,EAAgBD,EAChBv6C,EAAQq6C,EAAuB1lB,KAAK6lB,GAExC,KAAOx6C,GACLs6C,EAAwB5H,EAAW1yC,GACnCw6C,EAAgBA,EAAcxN,UAAUhtC,EAAM,GAAGrM,QACjDqM,EAAQq6C,EAAuB1lB,KAAK6lB,GAGtC,OAAO9H,I,uMC1MM6N,E,WAlBb,WAAYC,I,4FAAe,CAAD,QACxBpnD,OAAOqnD,SAAWrnD,OAAOqnD,UAAY,GACrC3rD,KAAK4rD,cAAgBF,E,0CAGvB,WACE,OAAOpnD,OAAOqnD,SAAS3rD,KAAK4rD,iB,iBAG9B,SAAI7uD,GACFuH,OAAOqnD,SAAS3rD,KAAK4rD,eAAiB7uD,I,mBAGxC,WACEuH,OAAOqnD,SAAS3rD,KAAK4rD,eAAiB,U,0MCqH3BC,E,WAjIb,WAAYxvD,I,4FAAO,SACjB2D,KAAK3D,KAAOA,EACZ2D,KAAK8rD,KAAO,KACZ9rD,KAAK+rD,YAAc,K,2CAGrB,SAAKnhB,GAAuB,IACpBzgC,EAAO,CACXygC,OACAohB,OAAQhsD,KAAK+rD,aAGf/rD,KAAKisD,mBAAmB9hD,K,iBAG1B,WAAoB,IAAhB+hD,IAAe,yDACjB,IAAKlsD,KAAK+rD,YAAa,OAAO,KAE9B,IAAM5hD,EAAOnK,KAAK+rD,YAclB,OAbA/rD,KAAK+rD,YAAc5hD,EAAK6hD,OAEnB7hD,EAAK6hD,SAGRhsD,KAAK8rD,KAAO,MAGd9rD,KAAKmsD,WACDD,IACFlsD,KAAKosD,QAAQ,MAAOjiD,GACpBnK,KAAKqsD,kBAAkBliD,EAAMA,EAAK6hD,SAE7B7hD,I,mBAGT,WAEE,IADA,IAAImiD,EAAa,KACVtsD,KAAK+rD,aACVO,EAAatsD,KAAKusD,MAGpB,OAAOD,I,uBAGT,SAAUniD,GACR,GAAKA,EAAL,CAGA,IADA,IAAImiD,EAAa,KACVtsD,KAAK+rD,aAAe/rD,KAAK+rD,cAAgB5hD,GAC9CmiD,EAAatsD,KAAKusD,MAGpB,OAAOD,K,+BAGT,WAGE,IAFA,IAAIP,EAAc/rD,KAAK+rD,YAE8B,WAA9CA,EAAYnhB,KAAK4hB,QAAQC,kBAAiCV,EAAYC,QAC3ED,EAAcA,EAAYC,OAG5B,OAAOD,I,oBAGT,WAGE,IAFA,IAAIA,EAAc/rD,KAAK+rD,YACnBW,EAAQ,EACLX,GACLW,IACAX,EAAcA,EAAYC,OAG5B,OAAOU,I,qBAGT,SAAQnmD,GAAkC,IAA1B4D,EAAyB,uDAAlBnK,KAAK+rD,YACtB5hD,GACFnK,KAAK2sD,WAAWpmD,EAAQ4D,K,gCAI5B,SAAmBA,GACZnK,KAAK+rD,cACR/rD,KAAK8rD,KAAO3hD,GAGdnK,KAAK+rD,YAAc5hD,I,wBAGrB,SAAW5D,EAAQ4D,GACjB,IAAMrK,EAAS,uBAAmByG,GAC5BqmD,EAAcziD,EAAKygC,KACnBiiB,EAAc,IAAI5pC,YAAYnjB,EAAW,CAC7CijB,SAAS,EACT9f,OAAQ,CAAE2nC,KAAMgiB,KAGdA,aAAuBE,aACzBF,EAAY1pC,cAAc2pC,K,+BAI9B,SAAkBd,EAAagB,GAC7B,GAAKA,EAAL,CAEA,IAAMh1C,EAAgBg1C,EAAWniB,KAE3BoiB,EAAoB,IAAI/pC,YAAY,6BAA8B,CACtEF,SAAS,EACT9f,OAAQ,CAAEkH,KAAM4hD,KAGlBh0C,EAAcmL,cAAc8pC,GAGxBhtD,KAAK8rD,MAAQ9rD,KAAK8rD,OAASiB,GAC7B/sD,KAAKqsD,kBAAkBN,EAAa/rD,KAAK8rD,S,sBAI7C,WACO9rD,KAAK8rD,MACmB,IAAIL,EAAmBzrD,KAAK3D,MACpCsU,a,gtBC5HnBs8C,E,WACJ,WAAY5wD,GAA0B,IAApB6wD,EAAmB,uDAAN,KAAM,UACnCltD,KAAK3D,KAAOA,EACZ2D,KAAKmtD,OAASD,GAAc,IAAIE,EAAW/wD,G,6CAI7C,SAAeA,GACb,IAAMgxD,EAAoB,IAAI5B,EAAmBpvD,GAC7CixD,EAAgBD,EAAkB1wD,MAMtC,OALK2wD,IACHA,EAAgB,IAAIL,EAAa5wD,GACjCgxD,EAAkB7pD,IAAI8pD,IAGjBA,M,qBAGT,SAAK1iB,GAAe,IAAC,IAAD,qBAAN3yB,EAAM,iCAANA,EAAM,mBAClB,EAAAjY,KAAKmtD,QAAOvuD,KAAZ,SAAiBgsC,GAAjB,OAA0B3yB,IAC1BjY,KAAKutD,kB,iBAGP,WAA6B,IAAD,yDAAJ,GAAI,IAAtBrB,cAAsB,SACpBI,EAAatsD,KAAKmtD,OAAOZ,IAAIL,GAInC,OAFAlsD,KAAKwtD,kBAAkB,MAAOlB,GAC9BtsD,KAAKutD,gBACEjB,EAAaA,EAAW1hB,KAAO,O,mBAOxC,WAA6F,IAAD,yDAAJ,GAAI,IAApF6iB,qBAAoF,aAA7DC,uBAA6D,aAArCC,mBAAqC,SAAbz6C,EAAa,OAC1FlT,KAAK4tD,WAAaH,IAAkBE,EACpC,IAAME,EAAkB7tD,KAAK8tD,aAAaH,GAC1C,OAAKE,GAEDJ,IAAkBE,EACpB3tD,KAAK+tD,kBAAkB,SAAUF,EAAiB36C,GAElDlT,KAAKwtD,kBAAkB,MAAOK,GAI5BH,GACF1tD,KAAK+tD,kBAAkB,UAAWF,GAGpC7tD,KAAKutD,gBACEM,EAAkBA,EAAgBjjB,KAAO,MAdnB,O,2BAiB/B,WACE,OAAO5qC,KAAKmtD,OAAOa,oBAAoBpjB,O,sBAGzC,WACE,OAA4B,OAArB5qC,KAAKmtD,OAAOrB,O,6BAIrB,WACE9rD,KAAK4tD,YAAa,I,0BAGpB,WAAmC,IAAtBD,EAAqB,wDAChC,OAAIA,EACK3tD,KAAKmtD,OAAOc,UAAUjuD,KAAKmtD,OAAOrB,MAElC9rD,KAAKmtD,OAAOx8C,U,+BAIvB,SAAkBpK,EAAQ4D,EAAM+I,GAC9B,GAAK/I,GAASA,EAAKygC,KAAnB,CACAzgC,EAAK+I,KAAOA,EAEZ,IAAM25C,EAAc,IAAI5pC,YAAYjjB,KAAKkuD,cAAc3nD,GAAS,CAC9Dwc,SAAS,EACT9f,OAAQ,CAAEkH,UAGZA,EAAKygC,KAAK1nB,cAAc2pC,M,+BAI1B,SAAkBtmD,EAAQ4D,GACxB,GAAKA,EAAL,CAEA,IAAM0iD,EAAc,IAAI5pC,YAAYjjB,KAAKkuD,cAAc3nD,GAAS,CAC9Dwc,SAAS,EACT9f,OAAQ,CAAEkH,UAGZ7F,OAAO4e,cAAc2pC,M,2BAGvB,WAC4B,IAAIpB,EAAmBzrD,KAAK3D,MACpCmH,IAAIxD,Q,2BAGxB,SAAcuG,GACZ,MAAM,SAAN,OAAgBvG,KAAK3D,KAArB,YAA6BkK,K,wBAG/B,WACE,MAAM,SAAN,OAAgBvG,KAAK3D,KAArB,U,2BAGF,WACE,MAAM,SAAN,OAAgB2D,KAAK3D,KAArB,a,kBAGF,WACE,OAAO2D,KAAKmtD,OAAOtuD,W,uBAGrB,WACE,OAAOmB,KAAK4tD,gB,gCAIDX,O,6BC/HfzwD,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAETnB,EAAQuyD,eAAiBvyD,EAAQsjD,YAAS,EAE1C,MAAMkP,EAAY,EAAQ,GAEpBC,EAAO,EAAQ,KAErB,MAAMnP,EACJ9/C,YAAYkvD,GACVA,EAAgBA,GAAiBD,EAAKE,4BACtCvuD,KAAKwuD,QAAU,IAAIF,EAAcE,SACjCxuD,KAAKyuD,SAAW,IAAIH,EAAcG,UAGpChnB,QACE,OAAO,IAAIyX,EAAO,CAChBsP,QAAS,IAAIxuD,KAAKwuD,SAClBC,SAAU,IAAIzuD,KAAKyuD,YAIvBlQ,UAAUN,EAAMyQ,EAAerP,GAC7B,MAAMsP,EAAU3uD,KAAKmG,MAAM83C,EAAMyQ,EAAerP,GAChD,OAAOsP,EAAQ9vD,OAAS,EAAI8vD,EAAQ,GAAG1sD,MAAMquB,OAAS,KAGxDnqB,MAAM83C,EAAMyQ,EAAerP,GACzB,MAAM/4C,EAAU,IAAI6nD,EAAelQ,EAAMyQ,EAAerP,GACxD,IAAIsP,EAAU,GAWd,OAVA3uD,KAAKwuD,QAAQrsD,SAAQysD,IACnB,MAAMC,EAAgB3P,EAAO4P,cAAcxoD,EAASsoD,GACpDD,EAAUA,EAAQjsD,OAAOmsD,MAE3BF,EAAQrtD,MAAK,CAACiE,EAAGkU,IACRlU,EAAE7D,MAAQ+X,EAAE/X,QAErB1B,KAAKyuD,SAAStsD,SAAQ,SAAU4sD,GAC9BJ,EAAUI,EAAQC,OAAO1oD,EAASqoD,MAE7BA,EAGT,qBAAqBroD,EAASsoD,GAC5B,MAAMD,EAAU,GACVl9C,EAAUm9C,EAAOn9C,QAAQnL,GACzB2oD,EAAe3oD,EAAQ23C,KAC7B,IAAIyH,EAAgBp/C,EAAQ23C,KACxB/yC,EAAQuG,EAAQouB,KAAK6lB,GAEzB,KAAOx6C,GAAO,CACZ,MAAMxJ,EAAQwJ,EAAMxJ,MAAQutD,EAAapwD,OAAS6mD,EAAc7mD,OAChEqM,EAAMxJ,MAAQA,EACd,MAAM8hB,EAASorC,EAAO5W,QAAQ1xC,EAAS4E,GAEvC,IAAKsY,EAAQ,CACXkiC,EAAgBuJ,EAAa/W,UAAUhtC,EAAMxJ,MAAQ,GACrDwJ,EAAQuG,EAAQouB,KAAK6lB,GACrB,SAGF,IAAIwJ,EAAe,KAEf1rC,aAAkB4qC,EAAUxS,cAC9BsT,EAAe1rC,EACNA,aAAkB4qC,EAAUvS,mBACrCqT,EAAe5oD,EAAQ6oD,oBAAoBjkD,EAAMxJ,MAAOwJ,EAAM,IAC9DgkD,EAAajtD,MAAQuhB,GAErB0rC,EAAe5oD,EAAQ6oD,oBAAoBjkD,EAAMxJ,MAAOwJ,EAAM,GAAIsY,GAGpEld,EAAQiZ,OAAM,IAAMlB,QAAQgC,IAAI,GAAGuuC,EAAOxvD,YAAY/C,yBAAyB6yD,OAC/EP,EAAQ/vD,KAAKswD,GACbxJ,EAAgBuJ,EAAa/W,UAAUx2C,EAAQwtD,EAAajR,KAAKp/C,QACjEqM,EAAQuG,EAAQouB,KAAK6lB,GAGvB,OAAOiJ,GAKX/yD,EAAQsjD,OAASA,EAEjB,MAAMiP,EACJ/uD,YAAY6+C,EAAMC,EAASmB,GACzBr/C,KAAKi+C,KAAOA,EACZj+C,KAAK28C,UAAY,IAAIyR,EAAUtS,sBAAsBoC,GACrDl+C,KAAKq/C,OAAoB,OAAXA,QAA8B,IAAXA,EAAoBA,EAAS,GAC9Dr/C,KAAKk+C,QAAUl+C,KAAK28C,UAAUR,QAGhCiT,wBAAwBvR,GACtB,OAAIA,aAAsBuQ,EAAUvS,kBAC3BgC,EAGF,IAAIuQ,EAAUvS,kBAAkB77C,KAAK28C,UAAWkB,GAGzDsR,oBAAoBztD,EAAO2tD,EAAgBC,EAAiBC,GAC1D,MAAMtR,EAAiC,kBAAnBoR,EAA8BA,EAAiBrvD,KAAKi+C,KAAK/F,UAAUx2C,EAAO2tD,GACxFptD,EAAQqtD,EAAkBtvD,KAAKovD,wBAAwBE,GAAmB,KAC1ExwC,EAAMywC,EAAgBvvD,KAAKovD,wBAAwBG,GAAiB,KAC1E,OAAO,IAAInB,EAAUxS,cAAc57C,KAAK28C,UAAWj7C,EAAOu8C,EAAMh8C,EAAO6c,GAGzES,MAAMiwC,GACJ,GAAIxvD,KAAKq/C,OAAO9/B,MACd,GAAIvf,KAAKq/C,OAAO9/B,iBAAiB+J,SAC/BtpB,KAAKq/C,OAAO9/B,MAAMiwC,OACb,CACWxvD,KAAKq/C,OAAO9/B,MACpBA,MAAMiwC,KAOtB5zD,EAAQuyD,eAAiBA,G,6BC1HzB3xD,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAGT,MAAM0yD,EAAqB,EAAQ,IAEnC,MAAMC,UAAsCD,EAAmBE,eAC7DC,mBAAmBC,EAAaC,EAAeC,GAC7C,OAAQD,EAAchxC,MAAQixC,EAAWjxC,KAAmD,MAA5C+wC,EAAY3kD,MAAMlL,KAAKgwD,kBAGzEC,aAAaJ,EAAaK,EAAYC,GAcpC,GAbKD,EAAWjuD,MAAMq7C,0BAA6B6S,EAASluD,MAAMq7C,2BAChE6S,EAASluD,MAAMk7C,uBAAuBh7C,SAAQ9E,IACvC6yD,EAAWjuD,MAAMi7C,UAAU7/C,IAC9B6yD,EAAWjuD,MAAMjB,OAAO3D,EAAK8yD,EAASluD,MAAMtF,IAAIU,OAGpD6yD,EAAWjuD,MAAMk7C,uBAAuBh7C,SAAQ9E,IACzC8yD,EAASluD,MAAMi7C,UAAU7/C,IAC5B8yD,EAASluD,MAAMjB,OAAO3D,EAAK6yD,EAAWjuD,MAAMtF,IAAIU,QAKlD6yD,EAAWjuD,MAAMquB,OAAOpJ,UAAYipC,EAASluD,MAAMquB,OAAOpJ,UAAW,CACvE,IAAIkpC,EAAaF,EAAWjuD,MAAMy7C,QAC9B2S,EAAWF,EAASluD,MAAMy7C,QAE9B,GAAIwS,EAAWjuD,MAAMq7C,0BAA4B8S,EAAW3vD,KAAK,EAAG,QAAQmpC,SAASymB,GACnFD,EAAaA,EAAW3vD,KAAK,EAAG,QAChCyvD,EAAWjuD,MAAM+6C,MAAM,MAAOoT,EAAW9/B,QACzC4/B,EAAWjuD,MAAM+6C,MAAM,QAASoT,EAAW//B,QAAU,GACrD6/B,EAAWjuD,MAAM+6C,MAAM,OAAQoT,EAAW1gC,aACrC,GAAIygC,EAASluD,MAAMq7C,0BAA4B+S,EAAS5vD,IAAI,EAAG,QAAQkpC,QAAQymB,GACpFC,EAAWA,EAAS5vD,IAAI,EAAG,QAC3B0vD,EAASluD,MAAM+6C,MAAM,MAAOqT,EAAS//B,QACrC6/B,EAASluD,MAAM+6C,MAAM,QAASqT,EAAShgC,QAAU,GACjD8/B,EAASluD,MAAM+6C,MAAM,OAAQqT,EAAS3gC,YACjC,CACL,IAAI/d,EAAO,CAACu+C,EAAYC,GACxBA,EAAWx+C,EAAK,GAChBu+C,EAAav+C,EAAK,IAItB,MAAM6R,EAAS0sC,EAAWzoB,QAW1B,OAVAjkB,EAAOvhB,MAAQiuD,EAAWjuD,MAC1BuhB,EAAO1E,IAAMqxC,EAASluD,MACtBuhB,EAAO9hB,MAAQiN,KAAK4mB,IAAI26B,EAAWxuD,MAAOyuD,EAASzuD,OAE/CwuD,EAAWxuD,MAAQyuD,EAASzuD,MAC9B8hB,EAAOy6B,KAAOiS,EAAWjS,KAAO4R,EAAcM,EAASlS,KAEvDz6B,EAAOy6B,KAAOkS,EAASlS,KAAO4R,EAAcK,EAAWjS,KAGlDz6B,GAKX5nB,EAAQqlB,QAAUyuC,G,6BC9DlBlzD,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAGT,MAAM0yD,EAAqB,EAAQ,IAE7Ba,EAAuB,EAAQ,KAErC,MAAMC,UAAqCd,EAAmBE,eAC5DC,mBAAmBC,EAAaC,EAAeC,GAC7C,OAAQD,EAAc7tD,MAAMm7C,cAAgB2S,EAAW9tD,MAAMo7C,cAAgB0S,EAAW9tD,MAAMm7C,cAAgB0S,EAAc7tD,MAAMo7C,eAA6D,MAA5CwS,EAAY3kD,MAAMlL,KAAKgwD,kBAG5KC,aAAaJ,EAAaC,EAAeC,GACvC,MAAMvsC,EAASssC,EAAc7tD,MAAMm7C,aAAekT,EAAqBE,oBAAoBV,EAAeC,GAAcO,EAAqBE,oBAAoBT,EAAYD,GAG7K,OAFAtsC,EAAO9hB,MAAQouD,EAAcpuD,MAC7B8hB,EAAOy6B,KAAO6R,EAAc7R,KAAO4R,EAAcE,EAAW9R,KACrDz6B,GAKX5nB,EAAQqlB,QAAUsvC,G,6BCtBlB,IAAI5U,EAAkB37C,MAAQA,KAAK27C,iBAAmB,SAAUloB,GAC9D,OAAOA,GAAOA,EAAIv2B,WAAau2B,EAAM,CACnC,QAAWA,IAIfj3B,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAETnB,EAAQ60D,gCAA6B,EAErC,MAAMC,EAA+B/U,EAAgB,EAAQ,MAEvDgV,EAAiChV,EAAgB,EAAQ,KAEzDiV,EAA0BjV,EAAgB,EAAQ,MAElDkV,EAAuBlV,EAAgB,EAAQ,MAE/CmV,EAAyBnV,EAAgB,EAAQ,MAEjDoV,EAAoBpV,EAAgB,EAAQ,MAE5CqV,EAAiCrV,EAAgB,EAAQ,MAc/D//C,EAAQ60D,2BAZR,SAAoCnC,EAAe2C,GAAa,GAS9D,OARA3C,EAAcE,QAAQ0C,QAAQ,IAAIH,EAAkB9vC,SACpDqtC,EAAcG,SAASyC,QAAQ,IAAIF,EAA+B/vC,SAClEqtC,EAAcG,SAASyC,QAAQ,IAAIR,EAA6BzvC,SAChEqtC,EAAcG,SAASyC,QAAQ,IAAIP,EAA+B1vC,SAClEqtC,EAAcG,SAASyC,QAAQ,IAAIN,EAAwB3vC,SAC3DqtC,EAAcG,SAAS7vD,KAAK,IAAIgyD,EAAwB3vC,SACxDqtC,EAAcG,SAAS7vD,KAAK,IAAIiyD,EAAqB5vC,SACrDqtC,EAAcG,SAAS7vD,KAAK,IAAIkyD,EAAuB7vC,QAAQgwC,IACxD3C,I,6BClCT,IAAI3S,EAAkB37C,MAAQA,KAAK27C,iBAAmB,SAAUloB,GAC9D,OAAOA,GAAOA,EAAIv2B,WAAau2B,EAAM,CACnC,QAAWA,IAIfj3B,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAETnB,EAAQu1D,KAAOv1D,EAAQw1D,QAAUx1D,EAAQy1D,SAAWz1D,EAAQ01D,iBAAmB11D,EAAQ21D,QAAU31D,EAAQ41D,UAAY51D,EAAQ61D,QAAU71D,EAAQ81D,YAAc91D,EAAQ+1D,SAAW/1D,EAAQg2D,aAAeh2D,EAAQi2D,UAAYj2D,EAAQk2D,MAAQl2D,EAAQ6uB,SAAM,EAEzP,MAAM2jC,EAAY,EAAQ,GAEpBpS,EAAUL,EAAgB,EAAQ,IAElCM,EAAU,EAAQ,IAElBsK,EAAU,EAAQ,GAiCxB,SAASqL,EAAajV,EAAWoV,GAC/B,OAAOL,EAAY/U,GAAYoV,GAWjC,SAASL,EAAY/U,EAAWqV,GAC9B,IAAIC,EAAajW,EAAQ/6B,QAAQ07B,EAAUR,SAC3C,MAAMc,EAAY,IAAImR,EAAUvS,kBAAkBc,EAAW,IAI7D,OAHAsV,EAAaA,EAAWxxD,IAAIuxD,EAAO,OACnC/V,EAAQ8B,kBAAkBd,EAAWgV,GACrChW,EAAQ+B,iBAAiBf,EAAWgV,GAC7BhV,EApCTrhD,EAAQ6uB,IAbR,SAAakyB,GACX,MAAMsV,EAAajW,EAAQ/6B,QAAQ07B,EAAUR,SACvCc,EAAY,IAAImR,EAAUvS,kBAAkBc,EAAW,IAQ7D,OAPAV,EAAQ8B,kBAAkBd,EAAWgV,GACrChW,EAAQ6B,kBAAkBb,EAAWgV,GAEJ,OAA7BtV,EAAUP,gBACZa,EAAUj8C,OAAO,iBAAkBixD,EAAW/qB,aAGzC+V,GAaTrhD,EAAQk2D,MARR,SAAenV,GACb,MAAMsV,EAAajW,EAAQ/6B,QAAQ07B,EAAUR,SACvCc,EAAY,IAAImR,EAAUvS,kBAAkBc,EAAW,IAG7D,OAFAV,EAAQ8B,kBAAkBd,EAAWgV,GACrChW,EAAQ+B,iBAAiBf,EAAWgV,GAC7BhV,GASTrhD,EAAQi2D,UAJR,SAAmBlV,GACjB,OAAOiV,EAAajV,EAAW,IASjC/gD,EAAQg2D,aAAeA,EAMvBh2D,EAAQ+1D,SAJR,SAAkBhV,GAChB,OAAO+U,EAAY/U,EAAW,IAchC/gD,EAAQ81D,YAAcA,EAWtB91D,EAAQ61D,QATR,SAAiB9U,EAAWuV,EAAY,IACtC,MAAMD,EAAajW,EAAQ/6B,QAAQ07B,EAAUR,SACvCc,EAAY,IAAImR,EAAUvS,kBAAkBc,EAAW,IAI7D,OAHAM,EAAUD,MAAM,OAAQkV,GACxBjV,EAAUD,MAAM,WAAYuJ,EAAQtH,SAASyH,IAC7CzK,EAAQ8B,kBAAkBd,EAAWgV,GAC9BhV,GAkBTrhD,EAAQ41D,UAbR,SAAmB7U,EAAWuV,EAAY,GACxC,IAAID,EAAajW,EAAQ/6B,QAAQ07B,EAAUR,SAC3C,MAAMc,EAAY,IAAImR,EAAUvS,kBAAkBc,EAAW,IAQ7D,OANIsV,EAAW1uB,OAAS,IACtB0uB,EAAaA,EAAWxxD,KAAK,EAAG,QAGlCw7C,EAAQ8B,kBAAkBd,EAAWgV,GACrChV,EAAUD,MAAM,OAAQkV,GACjBjV,GAYTrhD,EAAQ21D,QAPR,SAAiB5U,EAAWuV,EAAY,IACtC,MAAMjV,EAAY,IAAImR,EAAUvS,kBAAkBc,EAAW,IAG7D,OAFAM,EAAUD,MAAM,WAAYuJ,EAAQtH,SAASyH,IAC7CzJ,EAAUD,MAAM,OAAQkV,GACjBjV,GAeTrhD,EAAQ01D,iBAVR,SAA0B3U,EAAWuV,EAAY,IAC/C,IAAID,EAAajW,EAAQ/6B,QAAQ07B,EAAUR,SAC3C,MAAMc,EAAY,IAAImR,EAAUvS,kBAAkBc,EAAW,IAK7D,OAJAsV,EAAaA,EAAWxxD,KAAK,EAAG,OAChCw7C,EAAQ8B,kBAAkBd,EAAWgV,GACrChV,EAAUD,MAAM,OAAQkV,GACxBjV,EAAUD,MAAM,WAAYuJ,EAAQtH,SAASyH,IACtCzJ,GAaTrhD,EAAQy1D,SARR,SAAkB1U,GAChB,MAAMM,EAAY,IAAImR,EAAUvS,kBAAkBc,EAAW,IAI7D,OAHAM,EAAUD,MAAM,OAAQ,GACxBC,EAAUD,MAAM,SAAU,GAC1BC,EAAUD,MAAM,SAAU,GACnBC,GAYTrhD,EAAQw1D,QAPR,SAAiBzU,EAAWuV,EAAY,GACtC,MAAMjV,EAAY,IAAImR,EAAUvS,kBAAkBc,EAAW,IAG7D,OAFAM,EAAUD,MAAM,WAAYuJ,EAAQtH,SAASwH,IAC7CxJ,EAAUD,MAAM,OAAQkV,GACjBjV,GAYTrhD,EAAQu1D,KAPR,SAAcxU,GACZ,MAAMM,EAAY,IAAImR,EAAUvS,kBAAkBc,EAAW,IAG7D,OAFAM,EAAUD,MAAM,WAAYuJ,EAAQtH,SAASwH,IAC7CxJ,EAAUD,MAAM,OAAQ,IACjBC,I,6BC/ITzgD,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAETnB,EAAQ0jD,eAAiB1jD,EAAQ2jD,mBAAqB3jD,EAAQ4jD,UAAY5jD,EAAQ6jD,aAAe7jD,EAAQ8jD,0BAA4B9jD,EAAQ+jD,uBAAyB/jD,EAAQgkD,mBAAqBhkD,EAAQikD,eAAiBjkD,EAAQkkD,qBAAuBlkD,EAAQokD,wBAA0BpkD,EAAQqkD,iBAAmBrkD,EAAQukD,wBAAqB,EAErV,MAAMC,EAAY,EAAQ,GAoG1B,SAASR,EAAmB10C,GAC1B,MAAMo1C,EAAMp1C,EAAMjG,cAElB,YAA6CE,IAAzCvJ,EAAQokD,wBAAwBM,GAC3B1kD,EAAQokD,wBAAwBM,GACtB,QAARA,GAAyB,OAARA,EACnB,EACEA,EAAIp1C,MAAM,aACZ,EACEo1C,EAAIp1C,MAAM,UACZ,GAGFo6B,WAAWgb,GA/GpB1kD,EAAQukD,mBAAqB,CAC3B,SAAY,EACZ,IAAO,EACP,MAAS,EACT,IAAO,EACP,MAAS,EACT,IAAO,EACP,SAAY,EACZ,IAAO,EACP,MAAS,EACT,IAAO,EACP,SAAY,EACZ,IAAO,EACP,OAAU,EACV,IAAO,GAETvkD,EAAQqkD,iBAAmB,CACzB,QAAW,EACX,IAAO,EACP,OAAQ,EACR,aAAW,EACX,SAAO,EACP,UAAQ,EACR,QAAW,EACX,IAAO,EACP,OAAQ,EACR,KAAQ,EACR,IAAO,EACP,OAAQ,EACR,MAAS,EACT,IAAO,EACP,OAAQ,EACR,IAAO,EACP,KAAQ,EACR,IAAO,EACP,QAAW,EACX,KAAQ,EACR,IAAO,EACP,OAAQ,EACR,UAAQ,EACR,KAAQ,EACR,UAAa,EACb,IAAO,EACP,OAAQ,EACR,KAAQ,EACR,QAAS,EACT,QAAW,GACX,IAAO,GACP,OAAQ,GACR,SAAY,GACZ,IAAO,GACP,OAAQ,GACR,cAAY,GACZ,SAAY,GACZ,IAAO,GACP,OAAQ,IAEVrkD,EAAQokD,wBAA0B,CAChC,GAAM,EACN,KAAQ,EACR,MAAS,EACT,OAAU,EACV,KAAQ,EACR,IAAO,EACP,KAAQ,EACR,KAAQ,EACR,KAAQ,EACR,IAAO,GACP,KAAQ,GACR,MAAS,GACT,OAAU,IAEZpkD,EAAQkkD,qBAAuB,CAC7B,IAAO,SACP,QAAW,SACX,SAAY,SACZ,IAAO,SACP,KAAQ,SACR,OAAU,SACV,QAAW,SACX,EAAK,OACL,GAAM,OACN,IAAO,OACP,MAAS,OACT,OAAU,OACV,KAAQ,IACR,MAAS,IACT,QAAW,OACX,SAAY,OACZ,KAAQ,QACR,UAAa,UACb,WAAc,UACd,IAAO,OACP,WAAS,OACT,YAAU,QAEZlkD,EAAQikD,eAAiB,MAAMO,EAAU7E,gBAAgB3/C,EAAQokD,4EAkBjEpkD,EAAQgkD,mBAAqBA,EAC7BhkD,EAAQ+jD,uBAAyB,wBAQjC/jD,EAAQ8jD,0BANR,SAAmCx0C,GACjC,IAAIo1C,EAAMp1C,EAAMjG,cAEhB,OADAq7C,EAAMA,EAAI77C,QAAQ,WAAY,IACvB4xB,SAASiqB,IAIlB1kD,EAAQ6jD,aAAe,yFA0BvB7jD,EAAQ4jD,UAxBR,SAAmBt0C,GACjB,GAAI,MAAM5L,KAAK4L,GAEb,OADAA,EAAQA,EAAMzG,QAAQ,MAAO,KACrB4xB,SAASnrB,GAGnB,GAAI,MAAM5L,KAAK4L,IAAU,KAAK5L,KAAK4L,GAEjC,OADAA,EAAQA,EAAMzG,QAAQ,UAAW,IAC1B4xB,SAASnrB,GAGlB,IAAI06C,EAAavvB,SAASnrB,GAU1B,OARI06C,EAAa,MAEbA,GADEA,EAAa,GACW,KAEA,KAIvBA,GAIT,MAAMN,EAA2B,IAAI1pD,EAAQikD,2BAA2BO,EAAU7E,gBAAgB3/C,EAAQkkD,iCACpGyF,EAAyB,IAAI7zC,OAAO4zC,EAA0B,KAmBpE,SAASE,EAAwB5H,EAAW1yC,GAC1C,MAAMo1C,EAAMV,EAAmB10C,EAAM,IAErC0yC,EADahiD,EAAQkkD,qBAAqB50C,EAAM,GAAGjG,gBACjCq7C,EArBpB1kD,EAAQ2jD,mBAAqBa,EAAU5E,wBAAwB,GAAI8J,GAgBnE1pD,EAAQ0jD,eAdR,SAAwBmG,GACtB,MAAM7H,EAAY,GAClB,IAAI8H,EAAgBD,EAChBv6C,EAAQq6C,EAAuB1lB,KAAK6lB,GAExC,KAAOx6C,GACLs6C,EAAwB5H,EAAW1yC,GACnCw6C,EAAgBA,EAAcxN,UAAUhtC,EAAM,GAAGrM,QACjDqM,EAAQq6C,EAAuB1lB,KAAK6lB,GAGtC,OAAO9H,I,6BC7KTphD,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAETnB,EAAQu2D,kCAA+B,EAEvC,MAAM5L,EAAU,EAAQ,GA4WxB3qD,EAAQu2D,6BA5VR,MACE/yD,YAAY6xD,GAAa,GACvBjxD,KAAKoyD,oBAAsB,KAC3BpyD,KAAKqyD,oBAAsB,KAC3BryD,KAAKsyD,yBAA2B,KAChCtyD,KAAKuyD,qBAAuB,KAC5BvyD,KAAKwyD,sBAAwB,KAC7BxyD,KAAKyyD,0BAA4B,KACjCzyD,KAAKixD,WAAaA,EAGpByB,eACE,MAAO,IAGTC,6BACE,MAAO,gBAGTC,gBACE,MAAO,YAGTC,kBACE,MAAO,YAGTphD,QAAQnL,GACN,OAAOtG,KAAK8yD,oCAGd9a,QAAQ1xC,EAAS4E,GACf,MAAMokD,EAAkBtvD,KAAK+yD,6BAA6BzsD,EAAS4E,GAEnE,IAAKokD,EAEH,OADApkD,EAAMxJ,OAASwJ,EAAM,GAAGrM,OACjB,KAGT,MAAM6C,EAAQwJ,EAAMxJ,MAAQwJ,EAAM,GAAGrM,OAC/Bo/C,EAAO/yC,EAAM,GAAGgtC,UAAUhtC,EAAM,GAAGrM,QACnC2kB,EAASld,EAAQ6oD,oBAAoBztD,EAAOu8C,EAAMqR,GACxDpkD,EAAMxJ,OAASwJ,EAAM,GAAGrM,OACxB,MAAM6mD,EAAgBp/C,EAAQ23C,KAAK/F,UAAUhtC,EAAMxJ,OAE7CsxD,EADmBhzD,KAAKizD,sCACUpzB,KAAK6lB,GAE7C,OAAIzH,EAAK/yC,MAAM,aAAe8nD,GAAkBA,EAAe,GAAG9nD,MAAM,yBAC/D,MAGJ8nD,GAAkBA,EAAe,GAAG9nD,MAAM,yBACtClL,KAAKkzD,sCAAsC1vC,IAGpDA,EAAO1E,IAAM9e,KAAKmzD,+BAA+B7sD,EAAS0sD,EAAgBxvC,GAEtEA,EAAO1E,MACT0E,EAAOy6B,MAAQ+U,EAAe,IAGzBhzD,KAAKozD,mCAAmC5vC,IAGjDuvC,6BAA6BzsD,EAAS4E,EAAOoa,GAAS,GACpD,MAAMu4B,EAAav3C,EAAQ8oD,0BAC3B,IAAI/qB,EAAS,EACT9d,EAAW,KACXgd,EAAOlN,SAASnrB,EA1EL,IA4Ef,GAAIq4B,EAAO,IAAK,CACd,GAAIvjC,KAAKixD,YAAqC,MAAvB/lD,EA5ER,GA6Eb,OAAO,KAGTm5B,EAASd,EAAO,IAChBA,EAAO50B,KAAKkhB,MAAM0T,EAAO,KAG3B,GAAIA,EAAO,GACT,OAAO,KAGT,GAA2B,MAAvBr4B,EAxFa,GAwFgB,CAC/B,GAAkC,GAA9BA,EAzFW,GAyFSrM,SAAgBqM,EAtFrB,GAuFjB,OAAO,KAGTm5B,EAAShO,SAASnrB,EA7FH,IAgGjB,GAAIm5B,GAAU,GACZ,OAAO,KAOT,GAJId,EAAO,KACThd,EAAWggC,EAAQtH,SAASyH,IAGC,MAA3Bx7C,EArGiB,GAqGgB,CACnC,GAAIq4B,EAAO,GAAI,OAAO,KACtB,MAAM8vB,EAAOnoD,EAvGM,GAuGkB,GAAGjG,cAE5B,KAARouD,IACF9sC,EAAWggC,EAAQtH,SAASwH,GAEhB,IAARljB,IACFA,EAAO,IAIC,KAAR8vB,IACF9sC,EAAWggC,EAAQtH,SAASyH,GAEhB,IAARnjB,IACFA,GAAQ,KAkBd,GAbAsa,EAAW78C,OAAO,OAAQuiC,GAC1Bsa,EAAW78C,OAAO,SAAUqjC,GAEX,OAAb9d,EACFs3B,EAAW78C,OAAO,WAAYulB,GAE1Bgd,EAAO,GACTsa,EAAWb,MAAM,WAAYuJ,EAAQtH,SAASwH,IAE9C5I,EAAWb,MAAM,WAAYuJ,EAAQtH,SAASyH,IAIjB,MAA7Bx7C,EAxImB,GAwIgB,CACrC,MAAMq5B,EAAclO,SAASnrB,EAzIR,GAyIkCgtC,UAAU,EAAG,IACpE,GAAI3T,GAAe,IAAM,OAAO,KAChCsZ,EAAW78C,OAAO,cAAeujC,GAGnC,GAA2B,MAAvBr5B,EA/Ia,GA+IgB,CAC/B,MAAMo5B,EAASjO,SAASnrB,EAhJT,IAiJf,GAAIo5B,GAAU,GAAI,OAAO,KACzBuZ,EAAW78C,OAAO,SAAUsjC,GAG9B,OAAOuZ,EAGTsV,+BAA+B7sD,EAAS4E,EAAOsY,GAC7C,MAAMq6B,EAAav3C,EAAQ8oD,0BAE3B,GAAiC,MAA7BlkD,EA1JmB,GA0JgB,CACrC,MAAMq5B,EAAclO,SAASnrB,EA3JR,GA2JkCgtC,UAAU,EAAG,IACpE,GAAI3T,GAAe,IAAM,OAAO,KAChCsZ,EAAW78C,OAAO,cAAeujC,GAGnC,GAA2B,MAAvBr5B,EAjKa,GAiKgB,CAC/B,MAAMo5B,EAASjO,SAASnrB,EAlKT,IAmKf,GAAIo5B,GAAU,GAAI,OAAO,KACzBuZ,EAAW78C,OAAO,SAAUsjC,GAG9B,IAAIf,EAAOlN,SAASnrB,EAzKL,IA0KXm5B,EAAS,EACT9d,GAAY,EAShB,GAP2B,MAAvBrb,EA5Ka,GA6Kfm5B,EAAShO,SAASnrB,EA7KH,IA8KNq4B,EAAO,MAChBc,EAASd,EAAO,IAChBA,EAAO50B,KAAKkhB,MAAM0T,EAAO,MAGvBc,GAAU,IAAMd,EAAO,GACzB,OAAO,KAOT,GAJIA,GAAQ,KACVhd,EAAWggC,EAAQtH,SAASyH,IAGC,MAA3Bx7C,EAxLiB,GAwLgB,CACnC,GAAIq4B,EAAO,GACT,OAAO,KAGT,MAAM8vB,EAAOnoD,EA7LM,GA6LkB,GAAGjG,cAE5B,KAARouD,IACF9sC,EAAWggC,EAAQtH,SAASwH,GAEhB,IAARljB,IACFA,EAAO,EAEFsa,EAAWX,UAAU,QACxBW,EAAWb,MAAM,MAAOa,EAAWlhD,IAAI,OAAS,KAK1C,KAAR02D,IACF9sC,EAAWggC,EAAQtH,SAASyH,GAChB,IAARnjB,IAAYA,GAAQ,KAGrB/f,EAAOvhB,MAAMi7C,UAAU,cACtB32B,GAAYggC,EAAQtH,SAASwH,IAC/BjjC,EAAOvhB,MAAM+6C,MAAM,WAAYuJ,EAAQtH,SAASwH,IAEhB,IAA5BjjC,EAAOvhB,MAAMtF,IAAI,SACnB6mB,EAAOvhB,MAAMjB,OAAO,OAAQ,KAG9BwiB,EAAOvhB,MAAM+6C,MAAM,WAAYuJ,EAAQtH,SAASyH,IAEhB,IAA5BljC,EAAOvhB,MAAMtF,IAAI,SACnB6mB,EAAOvhB,MAAMjB,OAAO,OAAQwiB,EAAOvhB,MAAMtF,IAAI,QAAU,MAS/D,GAHAkhD,EAAW78C,OAAO,OAAQuiC,GAC1Bsa,EAAW78C,OAAO,SAAUqjC,GAExB9d,GAAY,EACds3B,EAAW78C,OAAO,WAAYulB,OACzB,CACa/C,EAAOvhB,MAAMi7C,UAAU,aAAe15B,EAAOvhB,MAAMtF,IAAI,QAAU,GAG7E6mB,EAAOvhB,MAAMtF,IAAI,QAAU,GAAK4mC,EAClCsa,EAAWb,MAAM,WAAYuJ,EAAQtH,SAASwH,IACrCljB,GAAQ,KACjBsa,EAAW78C,OAAO,OAAQuiC,EAAO,IACjCsa,EAAW78C,OAAO,WAAYulD,EAAQtH,SAASyH,KAExCnjB,EAAO,GAChBsa,EAAWb,MAAM,WAAYuJ,EAAQtH,SAASyH,IACrCnjB,GAAQ,IACjBsa,EAAWb,MAAM,WAAYuJ,EAAQtH,SAASwH,IAQlD,OAJI5I,EAAWvtB,OAAOpJ,UAAY1D,EAAOvhB,MAAMquB,OAAOpJ,WACpD22B,EAAWb,MAAM,MAAOa,EAAWlhD,IAAI,OAAS,GAG3CkhD,EAGTqV,sCAAsC1vC,GACpC,GAAIA,EAAOy6B,KAAK/yC,MAAM,QACpB,OAAO,KAGT,GAAIsY,EAAOy6B,KAAK/yC,MAAM,aACpB,OAAO,KAGT,GAAIsY,EAAOy6B,KAAK/yC,MAAM,aACpB,OAAO,KAGT,MAAMooD,EAAoB9vC,EAAOy6B,KAAK/yC,MAAM,sBAE5C,GAAIooD,EAAmB,CACrB,MAAMC,EAAgBD,EAAkB,GAExC,GAAItzD,KAAKixD,WACP,OAAO,KAGT,GAAIsC,EAActiD,SAAS,OAASsiD,EAAcroD,MAAM,iBACtD,OAAO,KAKT,GAFwBmrB,SAASk9B,GAEX,GACpB,OAAO,KAIX,OAAO/vC,EAGT4vC,mCAAmC5vC,GACjC,GAAIA,EAAOy6B,KAAK/yC,MAAM,aACpB,OAAO,KAGT,MAAMooD,EAAoB9vC,EAAOy6B,KAAK/yC,MAAM,uCAE5C,GAAIooD,EAAmB,CACrB,GAAItzD,KAAKixD,WACP,OAAO,KAGT,MAAMuC,EAAkBF,EAAkB,GACpCC,EAAgBD,EAAkB,GAExC,GAAIC,EAActiD,SAAS,OAASsiD,EAAcroD,MAAM,iBACtD,OAAO,KAGT,MAAMuoD,EAAkBp9B,SAASk9B,GAC3BG,EAAoBr9B,SAASm9B,GAEnC,GAAIC,EAAkB,IAAMC,EAAoB,GAC9C,OAAO,KAIX,OAAOlwC,EAGTsvC,oCACE,MAAMa,EAAgB3zD,KAAK2zD,gBACrBf,EAAgB5yD,KAAK4yD,gBAE3B,OAAI5yD,KAAKoyD,sBAAwBuB,GAAiB3zD,KAAKqyD,sBAAwBO,IAI/E5yD,KAAKsyD,yBApVT,SAA4BpM,EAAcyN,EAAef,EAAe9rC,GACtE,OAAO,IAAIpV,OAAO,GAAGw0C,IAAoByN,4HAA0Lf,IAAiB9rC,GAmVlN8sC,CAAmB5zD,KAAK2yD,6BAA8BgB,EAAef,EAAe5yD,KAAK0yD,gBACzH1yD,KAAKoyD,oBAAsBuB,EAC3B3zD,KAAKqyD,oBAAsBO,GALlB5yD,KAAKsyD,yBAShBW,sCACE,MAAMY,EAAiB7zD,KAAK6zD,iBACtBhB,EAAkB7yD,KAAK6yD,kBAE7B,OAAI7yD,KAAKuyD,uBAAyBsB,GAAkB7zD,KAAKwyD,wBAA0BK,IAInF7yD,KAAKyyD,0BA9VT,SAA6BoB,EAAgBhB,GAC3C,OAAO,IAAInhD,OAAO,KAAKmiD,2IAAqMhB,IAAmB,KA6V5MiB,CAAoBD,EAAgBhB,GACrE7yD,KAAKuyD,qBAAuBsB,EAC5B7zD,KAAKwyD,sBAAwBK,GALpB7yD,KAAKyyD,6B,6BCtWlBj2D,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAETnB,EAAQm4D,yBAA2Bn4D,EAAQo4D,wBAA0Bp4D,EAAQq4D,wBAA0Br4D,EAAQs4D,iBAAmBt4D,EAAQu4D,sCAAmC,EAE7K,MAAM5N,EAAU,EAAQ,GAElB6H,EAAY,EAAQ,GAEpBgG,EAAc,EAAQ,IAe5B,SAASF,EAAiBhW,EAAS3mB,EAAS1lB,GAC1C,MAAMwiD,EAAanW,EAAQ1jB,SAE3B,OAAQ3oB,GACN,IAAK,OACH,OAAOmiD,EAAwB9V,EAAS3mB,GAE1C,IAAK,OACH,OAAOw8B,EAAyB7V,EAAS3mB,GAE3C,IAAK,OACH,OAAI88B,GAAc9N,EAAQvH,QAAQsV,OACzB/8B,GAAWgvB,EAAQvH,QAAQsV,OAAS,EAAI/8B,EAG7C88B,GAAc9N,EAAQvH,QAAQuV,SAC5Bh9B,GAAWgvB,EAAQvH,QAAQuV,SAAiB,EAC5Ch9B,GAAWgvB,EAAQvH,QAAQsV,OAAe,EACvC,EAAI/8B,EAGTA,EAAU88B,GAAc98B,GAAWgvB,EAAQvH,QAAQsV,OAC9CN,EAAwB9V,EAAS3mB,GAEjCy8B,EAAwB9V,EAAS3mB,GAAW,EAKzD,OAAO08B,EAAwB/V,EAAS3mB,GAK1C,SAAS08B,EAAwB/V,EAAS3mB,GACxC,MAAMi9B,EAAWT,EAAyB7V,EAAS3mB,GAC7Ck9B,EAAUT,EAAwB9V,EAAS3mB,GACjD,OAAOk9B,GAAWD,EAAWC,EAAUD,EAKzC,SAASR,EAAwB9V,EAAS3mB,GAExC,IAAIm9B,EAAen9B,EADA2mB,EAAQ1jB,SAO3B,OAJIk6B,EAAe,IACjBA,GAAgB,GAGXA,EAKT,SAASX,EAAyB7V,EAAS3mB,GAEzC,IAAIo9B,EAAgBp9B,EADD2mB,EAAQ1jB,SAO3B,OAJIm6B,GAAiB,IACnBA,GAAiB,GAGZA,EAjET/4D,EAAQu4D,iCAXR,SAA0CxX,EAAWplB,EAAS1lB,GAC5D,MACM+iD,EAAgBV,EADNvX,EAAUJ,8BACsBhlB,EAAS1lB,GACzD,IAAIgsC,EAAa,IAAIuQ,EAAUvS,kBAAkBc,GAKjD,OAJAkB,EAAauW,EAAYzN,oBAAoB9I,EAAY,CACvD,IAAO+W,IAET/W,EAAW78C,OAAO,UAAWu2B,GACtBsmB,GAqCTjiD,EAAQs4D,iBAAmBA,EAQ3Bt4D,EAAQq4D,wBAA0BA,EAalCr4D,EAAQo4D,wBAA0BA,EAalCp4D,EAAQm4D,yBAA2BA,G,6BC1FnCv3D,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAGT,MAAMsjD,EAAU,EAAQ,GAElBwU,EAAU,IAAInjD,OAAO,0GAA0H,KA0ErJ9V,EAAQqlB,QAnER,MACE7hB,YAAY01D,GACV90D,KAAK+0D,iBAAmBD,EALC,EADD,EAOxB90D,KAAKg1D,eAAiBF,EAPE,EACC,EAS3BrjD,UACE,OAAOojD,EAGT7c,QAAQ1xC,EAAS4E,GACf,GAAmC,GAA/BA,EAjBc,GAiBOrM,QAAeqM,EAAMxJ,MAAQ,GAAKwJ,EAAMxJ,MAAQ4E,EAAQ23C,KAAKp/C,OAAQ,CAC5F,MAAMo2D,EAAe3uD,EAAQ23C,KAAK/yC,EAAMxJ,MAAQ,GAEhD,GAAIuzD,GAAgB,KAAOA,GAAgB,IACzC,OAIJ,MAAMvzD,EAAQwJ,EAAMxJ,MAAQwJ,EAzBV,GAyB+BrM,OAC3Co/C,EAAO/yC,EAAM,GAAGigB,OAAOjgB,EA1BX,GA0BgCrM,OAAQqM,EAAM,GAAGrM,OAASqM,EA1B1D,GA0B+ErM,OAASqM,EAzBzF,GAyB6GrM,QAE9H,GAAIo/C,EAAK/yC,MAAM,aAAe+yC,EAAK/yC,MAAM,6BACvC,OAGF,IAAKA,EA5BU,IA4BWA,EAAM,GAAG6nB,QAAQ,KAAO,EAChD,OAGF,MAAMvP,EAASld,EAAQ6oD,oBAAoBztD,EAAOu8C,GAClD,IAAI5tB,EAAQgG,SAASnrB,EAAMlL,KAAK+0D,mBAC5Br7B,EAAMrD,SAASnrB,EAAMlL,KAAKg1D,iBAE9B,IAAI3kC,EAAQ,GAAKA,EAAQ,KACnBA,EAAQ,GAAI,CACd,KAAIqJ,GAAO,GAAKA,GAAO,IAAMrJ,GAAS,IAKpC,OAAO,KAJP,IAAI1e,EAAO,CAAC0e,EAAOqJ,GACnBA,EAAM/nB,EAAK,GACX0e,EAAQ1e,EAAK,GAOnB,GAAI+nB,EAAM,GAAKA,EAAM,GACnB,OAAO,KAMT,GAHAlW,EAAOvhB,MAAMjB,OAAO,MAAO04B,GAC3BlW,EAAOvhB,MAAMjB,OAAO,QAASqvB,GAEzBnlB,EAvDW,GAuDQ,CACrB,MAAMk6C,EAAgB/uB,SAASnrB,EAxDlB,IAyDPwkB,EAAO2wB,EAAQgF,qBAAqBD,GAC1C5hC,EAAOvhB,MAAMjB,OAAO,OAAQ0uB,OACvB,CACL,MAAMA,EAAO2wB,EAAQsF,qBAAqBr/C,EAAQ43C,QAASxkB,EAAKrJ,GAChE7M,EAAOvhB,MAAM+6C,MAAM,OAAQttB,GAG7B,OAAOlM,K,6vCC7EL0xC,E,WAGJ,cAAqI,IAAvHC,EAAsH,EAAtHA,UAAWC,EAA2G,EAA3GA,QAASC,EAAkG,EAAlGA,YAAaC,EAAqF,EAArFA,aAAcC,EAAuE,EAAvEA,MAAOC,EAAgE,EAAhEA,YAAaC,EAAmD,EAAnDA,IAAKjJ,EAA8C,EAA9CA,QAASkJ,EAAqC,EAArCA,MAAOC,EAA8B,EAA9BA,YAAgBttD,EAAc,Q,4FAAA,yDAFhG,IAAQ,OAG1CrI,KAAKm1D,UAAYA,EACjBn1D,KAAKo1D,QAAUA,EACfp1D,KAAKq1D,YAAcA,EACnBr1D,KAAKs1D,aAAeA,EACpBt1D,KAAKu1D,MAAQA,EACbv1D,KAAKw1D,YAAcA,EACnBx1D,KAAK41D,YAAc,EACnB51D,KAAKy1D,IAAMA,EACXz1D,KAAK21D,YAAcA,EACnB31D,KAAKwsD,Q,+VAAL,EAAiBiJ,MAAKJ,cAAaC,eAAcC,QAAOC,cAAaL,YAAWC,UAASO,eAAgBnJ,GACzGxsD,KAAK01D,MAAQA,EACb11D,KAAK61D,WAAQ1wD,EACbnF,KAAKuB,UAAO4D,EAEZ3I,OAAOwE,OAAOhB,KAAMqI,G,oDAGtB,WACE,OAAOytD,EAAOC,OAAO/1D,KAAKm1D,a,yBAG5B,WACE,OAAOW,EAAOC,OAAO/1D,KAAKo1D,W,8BAG5B,WACE,OAAOp1D,KAAKg2D,gBAAgB9wC,Y,4BAG9B,WACE,OAAOllB,KAAKi2D,cAAc/wC,Y,oBAG5B,WACE,OAAQllB,KAAKi2D,cAAgBj2D,KAAKg2D,iBAAmB,IAAO,K,gCAG9D,WACE,OAAOh2D,KAAK2lC,SAAL,EAAgB3lC,KAAhB,Q,gCAGT,WACE,OAAsC,GAA9BA,KAAKg2D,gBAAgBzyB,OAAevjC,KAAKg2D,gBAAgB3xB,W,4CAGnE,WACE,OAAOrkC,KAAKk2D,qBAAL,EAA4Bl2D,KAA5B,Q,eAGT,WACE,OAAOA,KAAKm2D,mC,kBAGd,WACE,OAAOn2D,KAAKo2D,0B,gCAIDlB,Q,+CC5Df14D,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAETnB,EAAQ+zD,eAAiB/zD,EAAQy6D,YAAS,EAS1Cz6D,EAAQy6D,OAPR,MACErH,OAAO1oD,EAASqoD,GACd,OAAOA,EAAQrnD,QAAO1K,GAAKoD,KAAK4mB,QAAQtgB,EAAS1J,OA4CrDhB,EAAQ+zD,eArCR,MACEX,OAAO1oD,EAASqoD,GACd,GAAIA,EAAQ9vD,OAAS,EACnB,OAAO8vD,EAGT,MAAM2H,EAAgB,GACtB,IAAIC,EAAY5H,EAAQ,GACpBoB,EAAa,KAEjB,IAAK,IAAIj0D,EAAI,EAAGA,EAAI6yD,EAAQ9vD,OAAQ/C,IAAK,CACvCi0D,EAAapB,EAAQ7yD,GACrB,MAAM+zD,EAAcvpD,EAAQ23C,KAAK/F,UAAUqe,EAAU70D,MAAQ60D,EAAUtY,KAAKp/C,OAAQkxD,EAAWruD,OAE/F,GAAK1B,KAAK4vD,mBAAmBC,EAAa0G,EAAWxG,EAAYzpD,GAG1D,CACL,MAAM/E,EAAOg1D,EACP/0D,EAAQuuD,EACRyG,EAAex2D,KAAKiwD,aAAaJ,EAAatuD,EAAMC,EAAO8E,GACjEA,EAAQiZ,OAAM,KACZlB,QAAQgC,IAAI,GAAGrgB,KAAKZ,YAAY/C,eAAekF,SAAYC,UAAcg1D,QAE3ED,EAAYC,OATZF,EAAc13D,KAAK23D,GACnBA,EAAYxG,EAgBhB,OAJiB,MAAbwG,GACFD,EAAc13D,KAAK23D,GAGdD,K,6BC9CX95D,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAETnB,EAAQ66D,eAAiB76D,EAAQ86D,iBAAmB96D,EAAQ+6D,eAAiB/6D,EAAQg7D,YAAS,EAC9Fh7D,EAAQg7D,OAAS,CACf,SAAK,EACL,SAAK,EACL,SAAK,EACL,SAAK,EACL,SAAK,EACL,SAAK,EACL,SAAK,EACL,SAAK,EACL,SAAK,EACL,SAAK,EACL,SAAK,EACL,SAAK,GACL,SAAK,GACL,SAAK,IAEPh7D,EAAQ+6D,eAAiB,CACvB,SAAK,EACL,SAAK,EACL,SAAK,EACL,SAAK,EACL,SAAK,EACL,SAAK,EACL,SAAK,EACL,SAAK,GAmBP/6D,EAAQ86D,iBAhBR,SAA0BzY,GACxB,IAAI37B,EAAS,EAEb,IAAK,IAAIxmB,EAAI,EAAGA,EAAImiD,EAAKp/C,OAAQ/C,IAAK,CACpC,MAAM6I,EAAOs5C,EAAKniD,GAEL,WAAT6I,EACF2d,EAAoB,IAAXA,EAAe1mB,EAAQg7D,OAAOjyD,GAAQ2d,EAAS1mB,EAAQg7D,OAAOjyD,GAEvE2d,GAAU1mB,EAAQg7D,OAAOjyD,GAI7B,OAAO2d,GAgBT1mB,EAAQ66D,eAXR,SAAwBxY,GACtB,IAAI17B,EAAS,GAEb,IAAK,IAAIzmB,EAAI,EAAGA,EAAImiD,EAAKp/C,OAAQ/C,IAAK,CACpC,MAAM6I,EAAOs5C,EAAKniD,GAClBymB,GAAkB3mB,EAAQg7D,OAAOjyD,GAGnC,OAAO0xB,SAAS9T,K,6BCzDlB/lB,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAETnB,EAAQ66D,eAAiB76D,EAAQ86D,iBAAmB96D,EAAQ+6D,eAAiB/6D,EAAQg7D,YAAS,EAC9Fh7D,EAAQg7D,OAAS,CACf,SAAK,EACL,SAAK,EACL,SAAK,EACL,SAAK,EACL,SAAK,EACL,SAAK,EACL,SAAK,EACL,SAAK,EACL,SAAK,EACL,SAAK,EACL,SAAK,EACL,SAAK,EACL,SAAK,IAEPh7D,EAAQ+6D,eAAiB,CACvB,SAAK,EACL,SAAK,EACL,SAAK,EACL,SAAK,EACL,SAAK,EACL,SAAK,EACL,SAAK,EACL,SAAK,GAmBP/6D,EAAQ86D,iBAhBR,SAA0BzY,GACxB,IAAI37B,EAAS,EAEb,IAAK,IAAIxmB,EAAI,EAAGA,EAAImiD,EAAKp/C,OAAQ/C,IAAK,CACpC,MAAM6I,EAAOs5C,EAAKniD,GAEL,WAAT6I,EACF2d,EAAoB,IAAXA,EAAe1mB,EAAQg7D,OAAOjyD,GAAQ2d,EAAS1mB,EAAQg7D,OAAOjyD,GAEvE2d,GAAU1mB,EAAQg7D,OAAOjyD,GAI7B,OAAO2d,GAgBT1mB,EAAQ66D,eAXR,SAAwBxY,GACtB,IAAI17B,EAAS,GAEb,IAAK,IAAIzmB,EAAI,EAAGA,EAAImiD,EAAKp/C,OAAQ/C,IAAK,CACpC,MAAM6I,EAAOs5C,EAAKniD,GAClBymB,GAAkB3mB,EAAQg7D,OAAOjyD,GAGnC,OAAO0xB,SAAS9T,K,6BC1DlB,mBAEMs0C,EAAQC,2BAECD,a,2QCJTE,E,WACJ,c,4FAAe,CAAD,QACZ/2D,KAAKg3D,UAAW,EAChBh3D,KAAKi3D,uBAAyB,IAAIl1D,I,iDAGpC,WAKE,OAJK/B,KAAKk3D,YACRl3D,KAAKk3D,UAAY,IAAIH,GAGhB/2D,KAAKk3D,c,6BAGd,WACEl3D,KAAKm3D,UAAU,CAAEC,MAAM,M,6BAGzB,WAGMp3D,KAAKg3D,WAETh3D,KAAKg3D,UAAW,EAChBh3D,KAAKm3D,UAAU,CAAEC,MAAM,O,gBAGzB,SAAGt3D,EAAH,GAA2D,IAArCu3D,EAAoC,EAA1CC,KAA0BC,EAAgB,EAAtBC,KAC5BC,EAAiBz3D,KAAKi3D,uBAAuBt6D,IAAImD,IAAc,GAErE23D,EAAe74D,KAAK,CAClB84D,OAAQ,UACRJ,KAAMD,EACNG,KAAMD,IAERv3D,KAAKi3D,uBAAuBzzD,IAAI1D,EAAW23D,K,uBAG7C,WAAqC,IAA3BvmD,EAA0B,uDAAhB,CAAEkmD,MAAM,GACtBlmD,EAAQkmD,MACVp3D,KAAK23D,yBAAyB,GAGhC,IAAMC,EAAsB53D,KAAKi3D,uBAAuBt6D,IAAI,aAAe,GAC3EqD,KAAK63D,4BAA4BD,GACjC53D,KAAK83D,4BAA4BF,K,yCAGnC,SAA4BA,GAC1B,IAAMG,EAAuBH,EAAoB9gD,MAAK,SAAC9N,GACrD,MAA2B,YAApBA,EAAS0uD,UAGdK,IACFA,EAAqBL,OAAS,OAC9BK,EAAqBP,U,yCAIzB,SAA4BI,GAC1B,IAAMI,EAA0BJ,EAAoB9gD,MAAK,SAAC9N,GACxD,MAA2B,YAApBA,EAAS0uD,UAGdM,IACFA,EAAwBN,OAAS,UACjCM,EAAwBV,U,sCAK5B,SAAyBW,GAAW,IAAD,OAC3BC,EAAsB,IAAXD,EAIjB,IAH4Bj4D,KAAKi3D,uBAAuBt6D,IAAI,aAAe,IAGnDkC,OAAS,EAC/B,OAAOmB,KAAKm3D,UAAU,CAAEC,MAAM,IAI5Bc,GAAY,GAKhBC,YAAW,WACT,EAAKR,yBAAyBO,EAAW,OACxCA,Q,gCAIQnB,YAAkBqB,cAC1B,IAAMC,EAA+BtB,G,oNC7FtCuB,E,WACJ,cAAuC,IAAzBhoC,EAAwB,EAAxBA,KAAM2V,EAAkB,EAAlBA,KAAkB,IAAZsyB,YAAY,MAAL,EAAK,G,4FAAA,SACpCv4D,KAAKswB,KAAOA,EACZtwB,KAAKimC,KAAOA,EACZjmC,KAAKu4D,KAAOA,E,4CAGd,WAAS,IAAD,OACAC,EAAQ1C,EAAOC,SAASyC,MAAMx4D,KAAKy4D,aAAcz4D,KAAK04D,YACxDC,EAAU,WAEd,OAAO36D,MAAMqB,KAAKm5D,EAAMI,GAAG,SAASn2D,KAAI,SAAAi3B,GACtC,IAAMm/B,EAAYn/B,EAAIo/B,OAAO,EAAKC,gBAKlC,OAHIF,IAAWF,EAAU,WACT,YAAZA,GAA0BE,IAAWF,EAAU,QAE5C,CAAE5C,OAAQr8B,EAAKi/B,QAASA,Q,sBAInC,WACE,OAAO34D,KAAKg5D,YAAYv4D,IAAI,EAAG,S,0BAGjC,WACE,OAAOT,KAAKg5D,YAAYzwB,SAAS,EAAG,S,uBAGtC,WACE,OAAOutB,EAAOC,OAAO/1D,KAAKswB,MAAM7vB,IAAIT,KAAKimC,KAAOjmC,KAAKu4D,KAAM,S,qBAG7D,WACE,OAAOzC,EAAOC,OAAO/1D,KAAKg5D,aAAav4D,IAAIkO,KAAKC,IAAI5O,KAAKimC,KAAO,EAAG,GAAI,S,wBAGzE,WACE,OAAOjmC,KAAKg5D,YAAYzwB,SAASvoC,KAAKimC,KAAM,S,sBAG9C,WACE,OAAOjmC,KAAKi5D,UAAUx4D,IAAIT,KAAKimC,KAAM,S,0BAGvC,WACE,OAAO6vB,EAAOC,OAAOyC,MAAMx4D,KAAKg5D,YAAah5D,KAAKi5D,a,sBAGpD,WACE,MAAO,kB,gCAIIX,Q,yUCrDTY,E,WAcJ,WAAYC,GAA4B,IAAD,OAAdjoD,EAAc,uDAAJ,GAAI,UACrClR,KAAKm5D,YAAcA,EACnBn5D,KAAKwC,UAAY,GACjBxC,KAAKo5D,mBAAqBloD,EAAQmoD,oBAAqB,EAEvDr5D,KAAKm5D,YAAYh3D,SAAQ,SAAAm3D,GACAh1D,OAAOi1D,WAAWD,EAAWE,OACrCp5D,iBAAiB,UAAU,SAACS,GACzC,EAAK44D,wBAAwBH,EAAWj9D,KAAMwE,S,qDAlBpD,WACE,OAAO,IAAIq4D,EAAiB,CAC1B,CAAE78D,KAAM,OAAQm9D,MAAON,EAAiBQ,cAAc5D,EAAO6D,QAAQR,YAAYS,OACjF,CAAEv9D,KAAM,QAASm9D,MAAON,EAAiBQ,cAAc5D,EAAO6D,QAAQR,YAAYU,QAClF,CAAEx9D,KAAM,SAAUm9D,MAAON,EAAiBQ,cAAc5D,EAAO6D,QAAQR,YAAYW,SACnF,CAAEz9D,KAAM,QAASm9D,MAAON,EAAiBQ,cAAc5D,EAAO6D,QAAQR,YAAYY,QAClF,CAAE19D,KAAM,OAAQm9D,MAAON,EAAiBQ,cAAc5D,EAAO6D,QAAQR,YAAYa,W,2BAgErF,SAAqBV,GACnB,IAAM/jC,EAAG,sBAAkB+jC,EAAWr3D,MAA7B,OACH2M,EAAG,sBAAkB0qD,EAAWx6C,IAA7B,OAET,MAAM,GAAN,OAAUyW,EAAV,gBAAqB3mB,O,sBAnDvB,SAAM5F,GAAyB,IAAD,OAAdkI,EAAc,uDAAJ,GACxBlR,KAAKm5D,YAAYh3D,SAAQ,SAAAm3D,GACvB,EAAKW,kBAAkBX,EAAWj9D,KAAM2M,MAG1ChJ,KAAKk6D,gBAAgBhpD,K,gBAGvB,SAAGipD,EAAuBnxD,GAAyB,IAAD,OAAdkI,EAAc,uDAAJ,GACtCkpD,EAAkBp8D,MAAMC,QAAQk8D,GAAyBA,EAAwB,CAACA,GACxFC,EAAgBj4D,SAAQ,SAAAk4D,GACtB,EAAKJ,kBAAkBI,EAAgBrxD,MAGzChJ,KAAKk6D,gBAAgBhpD,K,6BAGvB,SAAsBnU,GACpBiD,KAAKo5D,mBAAqBr8D,I,6BAG5B,SAAgBmU,GACd,GAAIA,EAAQmoD,mBAAqBr5D,KAAKo5D,mBAAoB,CACxD,IAAMkB,EAAoBt6D,KAAKm5D,YAAYriD,MAAK,SAAAwiD,GAAU,OAAIh1D,OAAOi1D,WAAWD,EAAWE,OAAOtwD,WAC9FoxD,GACFt6D,KAAKy5D,wBAAwBa,EAAkBj+D,KAAM,CAAE6M,SAAS,O,qCAKtE,SAAwBmxD,EAAgBx5D,GAClCb,KAAKwC,UAAU63D,IACjBr6D,KAAKwC,UAAU63D,GAAgBl4D,SAAQ,SAAA6G,GACrCA,EAASnI,EAAMqI,c,+BAMrB,SAAkBmxD,EAAgBrxD,GAC3BhJ,KAAKwC,UAAU63D,KAClBr6D,KAAKwC,UAAU63D,GAAkB,IAEnCr6D,KAAKwC,UAAU63D,GAAgBz7D,KAAKoK,Q,gCAYzBkwD,a,uQCnFMqB,E,WACnB,c,4FAAe,CAAD,QACZv6D,KAAKw6D,gBAAkB,G,8CAOzB,SAAQx3D,GAAU,IAAD,OACTy3D,EAAYz6D,KAAK06D,oBACvB,OAAO,IAAIj7C,SAAQ,SAACC,EAASi7C,GAAY,IAAD,EACtC,EAAKH,gBAAgBC,GAAa,CAAE/6C,UAASi7C,UAC7Ct8C,QAAQgC,IAAI,6BAA8Brd,GAC1C,YAAK43D,gCAAL,SAA+BC,YAAY,CACzCt0D,OAAQvD,EACRy3D,UAAWA,OALR,SAOI,kBACF,EAAKD,gBAAgBC,Q,kBAIhC,SAAKz3D,EAASkQ,GAAO,IAAD,EAClBmL,QAAQgC,IAAI,qCAAsCrd,EAASkQ,GAE3D,UAAAlT,KAAK46D,gCAAL,SAA+BC,YAAY,CACzCt0D,OAAQvD,EACRkQ,KAAMA,M,4BAOV,SAAeunD,EAAWj3C,EAAQzgB,GAChC,IAAMiG,EAAWhJ,KAAKw6D,gBAAgBC,GACjCzxD,GAKDjG,EACFiG,EAAS2xD,OAAO53D,GAEhBiG,EAAS0W,QAAQ8D,UAGZxjB,KAAKw6D,gBAAgBC,IAV1Bp8C,QAAQtb,MAAM,uB,oCAalB,WACE,QAAS/C,KAAK46D,2B,oCAKhB,WAAgC,IAAD,MAC7B,iBAAOt2D,cAAP,iBAAO,EAAQw2D,cAAf,iBAAO,EAAgBC,uBAAvB,aAAO,EAAiCC,oB,+BAI1C,WACE,OAAOrsD,KAAKssD,SAAS/7D,SAAS,IAAIg5C,UAAU,Q,8DC7DhD17C,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAETnB,EAAQ0jD,eAAiB1jD,EAAQ2jD,mBAAqB3jD,EAAQ4jD,UAAY5jD,EAAQ6jD,aAAe7jD,EAAQgkD,mBAAqBhkD,EAAQikD,eAAiBjkD,EAAQkkD,qBAAuBlkD,EAAQokD,wBAA0BpkD,EAAQqkD,iBAAmBrkD,EAAQukD,wBAAqB,EAEhR,MAAMC,EAAY,EAAQ,GAEpBC,EAAU,EAAQ,GAoHxB,SAAST,EAAmB10C,GAC1B,MAAMo1C,EAAMp1C,EAAMjG,cAElB,YAA6CE,IAAzCvJ,EAAQokD,wBAAwBM,GAC3B1kD,EAAQokD,wBAAwBM,GACtB,MAARA,GAAuB,OAARA,EACjB,EACEA,EAAIp1C,MAAM,OACZ,EACEo1C,EAAIp1C,MAAM,QACZ,GACEo1C,EAAIp1C,MAAM,UACZ,EACEo1C,EAAIp1C,MAAM,WACZ,EAGFo6B,WAAWgb,GAnIpB1kD,EAAQukD,mBAAqB,CAC3B,QAAW,EACX,GAAM,EACN,OAAU,EACV,GAAM,EACN,SAAY,EACZ,GAAM,EACN,SAAY,EACZ,GAAM,EACN,WAAc,EACd,GAAM,EACN,QAAW,EACX,GAAM,EACN,QAAW,EACX,GAAM,GAERvkD,EAAQqkD,iBAAmB,CACzB,OAAU,EACV,YAAU,EACV,OAAU,EACV,IAAO,EACP,OAAQ,EACR,QAAW,EACX,MAAS,EACT,IAAO,EACP,OAAQ,EACR,UAAQ,EACR,MAAS,EACT,SAAO,EACP,UAAQ,EACR,IAAO,EACP,OAAQ,EACR,MAAS,EACT,IAAO,EACP,OAAQ,EACR,IAAO,EACP,KAAQ,EACR,IAAO,EACP,OAAQ,EACR,KAAQ,EACR,IAAO,EACP,OAAQ,EACR,OAAU,EACV,IAAO,EACP,OAAQ,EACR,UAAa,EACb,IAAO,EACP,OAAQ,EACR,KAAQ,EACR,QAAS,EACT,QAAW,GACX,IAAO,GACP,OAAQ,GACR,SAAY,GACZ,IAAO,GACP,OAAQ,GACR,SAAY,GACZ,IAAO,GACP,OAAQ,IAEVrkD,EAAQokD,wBAA0B,CAChC,KAAQ,EACR,KAAQ,EACR,MAAS,EACT,MAAS,EACT,MAAS,EACT,KAAQ,EACR,KAAQ,EACR,KAAQ,EACR,UAAQ,EACR,MAAS,EACT,MAAS,EACT,OAAU,EACV,KAAQ,EACR,KAAQ,EACR,KAAQ,GACR,IAAO,GACP,WAAS,GACT,OAAU,IAEZpkD,EAAQkkD,qBAAuB,CAC7Bob,IAAK,SACLC,QAAS,SACTC,SAAU,SACV7lC,IAAK,SACL8O,OAAQ,SACRwmB,QAAS,SACTp9B,EAAG,OACH4tC,IAAK,OACLC,OAAQ,OACRC,QAAS,OACTC,IAAK,IACLC,KAAM,IACNC,MAAO,IACPC,MAAO,OACPC,OAAQ,OACRC,MAAO,QACPC,OAAQ,QACRC,QAAS,QACTC,OAAQ,QACRC,QAAS,UACTC,SAAU,UACVC,SAAU,UACVC,UAAW,UACX72D,EAAG,OACH+3B,EAAG,OACHiuB,GAAI,OACJ8Q,KAAM,OACNC,MAAO,OACPC,OAAQ,OACRC,OAAQ,QAEV5gE,EAAQikD,eAAiB,MAAMO,EAAU7E,gBAAgB3/C,EAAQokD,2HAsBjEpkD,EAAQgkD,mBAAqBA,EAC7BhkD,EAAQ6jD,aAAe,oIAmBvB7jD,EAAQ4jD,UAjBR,SAAmBt0C,GACjB,GAAI,KAAK5L,KAAK4L,GACZ,OAAQmrB,SAASnrB,EAAMzG,QAAQ,YAAa,KAG9C,GAAI,KAAKnF,KAAK4L,GACZ,OAAOmrB,SAASnrB,EAAMzG,QAAQ,YAAa,KAG7C,GAAI,KAAKnF,KAAK4L,GACZ,OAAOmrB,SAASnrB,EAAMzG,QAAQ,YAAa,KAG7C,MAAM2gD,EAAgB/uB,SAASnrB,GAC/B,OAAOm1C,EAAQgF,qBAAqBD,IAItC,MAAME,EAA2B,IAAI1pD,EAAQikD,2BAA2BO,EAAU7E,gBAAgB3/C,EAAQkkD,iCACpGyF,EAAyB,IAAI7zC,OAAO4zC,EAA0B,KAmBpE,SAASE,EAAwB5H,EAAW1yC,GAC1C,MAAMo1C,EAAMV,EAAmB10C,EAAM,IAErC0yC,EADahiD,EAAQkkD,qBAAqB50C,EAAM,GAAGjG,gBACjCq7C,EArBpB1kD,EAAQ2jD,mBAAqBa,EAAU5E,wBAAwB,GAAI8J,GAgBnE1pD,EAAQ0jD,eAdR,SAAwBmG,GACtB,MAAM7H,EAAY,GAClB,IAAI8H,EAAgBD,EAChBv6C,EAAQq6C,EAAuB1lB,KAAK6lB,GAExC,KAAOx6C,GACLs6C,EAAwB5H,EAAW1yC,GACnCw6C,EAAgBA,EAAcxN,UAAUhtC,EAAM,GAAGrM,QACjDqM,EAAQq6C,EAAuB1lB,KAAK6lB,GAGtC,OAAO9H,I,muDChLH6e,E,WAMJ,cAAyB,IAAXC,EAAU,EAAVA,OAAU,UAGtB18D,KAAK08D,OAASA,EAAOj6D,KAAI,SAAA5B,GAAK,OAAI,IAAIq0D,IAAMr0D,M,wCAO9C,WACE,IAAM87D,EAAc38D,KAAK48D,uBAIzB,OAFA58D,KAAK68D,qBAAqBF,GAEnB38D,KAAK08D,S,kCAMd,WAAwB,IAAD,OAajBI,EAAS,GAIb,OAFA98D,KAAK08D,OAAOv6D,SAAQ,SAAAtB,GAAK,OAAIi8D,EAAS,EAAKC,qBAAqBl8D,EAAOi8D,MAEhEA,I,kCAOT,SAAqBA,GAcnB98D,KAAKg9D,qBAAqBF,GAE1B98D,KAAKi9D,iBAAiBH,GAEtB98D,KAAKk9D,mBAAmBJ,K,kCAS1B,SAAqBj8D,EAAOi8D,GAM1B,IANkC,EAM9BH,EAAc,CAAC,IAAIQ,EAAW,CAAEhI,UAAWt0D,EAAMu8D,mBAAoBhI,QAASv0D,EAAMw8D,iBAAkBX,OAAQ,CAAC77D,MAE7Gy8D,EAAY,GARgB,IASdR,GATc,IASlC,2BAA4B,CAAC,IAAlBS,EAAiB,QAE1B,GAAI18D,EAAMu8D,oBAAsBG,EAAMnI,SAAWv0D,EAAMw8D,kBAAoBE,EAAMpI,UAC/EmI,EAAU1+D,KAAK2+D,OADjB,CAOA,IAT0B,EASpBC,EAAiB,GATG,IAUDb,GAVC,IAU1B,2BAAsC,CAAC,IAA5Bc,EAA2B,QAGpC,GAAIA,EAAWtI,WAAaoI,EAAMnI,SAAWqI,EAAWrI,SAAWmI,EAAMpI,UACvEqI,EAAe5+D,KAAK6+D,OADtB,CAOA,GAAIF,EAAMpI,UAAYsI,EAAWtI,UAAW,CAC1C,IAAMuI,EAAY,IAAIP,EAAW,CAAEhI,UAAWoI,EAAMpI,UAAWC,QAASqI,EAAWtI,UAAWuH,OAAO,EAAKa,EAAMb,UAChHY,EAAU1+D,KAAK8+D,GAEjB,GAAID,EAAWtI,UAAYoI,EAAMpI,UAAW,CAC1C,IAAMwI,EAAiB,IAAIR,EAAW,CAAEhI,UAAWsI,EAAWtI,UAAWC,QAASmI,EAAMpI,UAAWuH,OAAQ,CAAC77D,KAC5G28D,EAAe5+D,KAAK++D,GAItB,IAAMC,EAAmBjvD,KAAKC,IAAI6uD,EAAWtI,UAAWoI,EAAMpI,WACxD0I,EAAiBlvD,KAAK4mB,IAAIkoC,EAAWrI,QAASmI,EAAMnI,SACpD0I,EAAe,IAAIX,EAAW,CAAEhI,UAAWyI,EAAkBxI,QAASyI,EAAgBnB,OAAO,GAAD,SAAMa,EAAMb,QAAZ,CAAoB77D,MAKtH,GAJAy8D,EAAU1+D,KAAKk/D,GAIXL,EAAWrI,QAAUmI,EAAMnI,QAAS,CACtC,IAAM2I,EAAY,IAAIZ,EAAW,CAAEhI,UAAWsI,EAAWrI,QAASA,QAASmI,EAAMnI,QAASsH,OAAO,EAAKa,EAAMb,UAC5GY,EAAU1+D,KAAKm/D,GAEjB,GAAIR,EAAMnI,QAAUqI,EAAWrI,QAAS,CACtC,IAAM4I,EAAiB,IAAIb,EAAW,CAAEhI,UAAWoI,EAAMnI,QAASA,QAASqI,EAAWrI,QAASsH,OAAQ,CAAC77D,KACxG28D,EAAe5+D,KAAKo/D,MA3CE,8BA8C1BrB,EAAca,IAvDkB,8BA6DlC,OAHAF,EAAU1+D,KAAV,MAAA0+D,EAAS,EAASX,IAGXW,I,kCAQT,SAAqBR,GAAS,IAAD,MACPA,GADO,IAC3B,2BAA4B,CAAC,IAAD,EAAjBS,EAAiB,YACNA,EAAMb,QADA,IAC1B,2BAAkC,CAAC,IAAxB77D,EAAuB,QAChCA,EAAM+0D,YAAcjnD,KAAKC,IAAI/N,EAAM+0D,YAAa2H,EAAMb,OAAO79D,SAFrC,gCADD,iC,8BAY7B,SAAiBi+D,GAAQ,UAUHA,GAVG,IAUvB,2BAA4B,CAAC,IAAD,EAAjBS,EAAiB,QACpBU,EAAOj+D,KAAKk+D,cAAcX,GADN,IAENA,EAAMb,QAFA,IAE1B,2BAAkC,CAAC,IAAxB77D,EAAuB,QAGhC,QAAmBsE,IAAftE,EAAMU,KAAV,CAIA,IAAM48D,EAAMF,EAAK1R,MACX6R,EAAgB,IAAMv9D,EAAM+0D,YAElC/0D,EAAMU,KAAO48D,EAAIl8D,MACbk8D,EAAItI,OAASuI,EACfv9D,EAAMg1D,MAAQsI,EAAItI,OAElBh1D,EAAMg1D,MAAQuI,EACdD,EAAIl8D,OAASm8D,EACbH,EAAKr/D,KAAKu/D,GAIVn+D,KAAKq+D,SAASJ,MAtBQ,gCAVL,iC,gCA4CzB,SAAmBnB,GAAQ,UAGLA,GAHK,IAGzB,2BAA4B,SACpBJ,OAAOp7D,MAAK,SAACiE,EAAGkU,GAAJ,OAAUlU,EAAEhE,KAAOkY,EAAElY,SAJhB,8BAYzB,IAAK,IAAIzF,EAAI,EAAGA,EAAIghE,EAAOj+D,OAAQ/C,IAGjC,IAFA,IAAMyhE,EAAQT,EAAOhhE,GAEZwhC,EAAI,EAAGA,EAAIigC,EAAMb,OAAO79D,OAAQy+B,IAAK,CAC5C,IAAMz8B,EAAQ08D,EAAMb,OAAOp/B,GAE3B,KAAIz8B,EAAMu8D,mBAAqBG,EAAMpI,WAArC,CASA,IALA,IAAMmJ,EAAaz9D,EAAMU,KAAOV,EAAMg1D,MAElC0I,OAAS,EAAEC,OAAS,EAAEC,OAAQ,EAC9BC,EAAWC,IACXC,EAAiB9iE,EACd4iE,EAAWJ,GAAcM,EAAiB9B,EAAOj+D,QAAQ,CAE9D,IAAMggE,GADNN,EAAYzB,EAAO8B,IACUlC,OAAO3pC,QAAQlyB,GAC5C,IAAoB,IAAhBg+D,EAEF,MAIFJ,GADAD,EAAYD,EAAU7B,OAAOmC,EAAa,IACnBL,EAAUj9D,KAAO,IACxCm9D,EAAW/vD,KAAK4mB,IAAImpC,EAAUD,GAE9BG,GAAkB,EAGhBF,IAAaC,KAAYD,EAAWJ,IACtCz9D,EAAMg1D,MAAQ6I,EAAW79D,EAAMU,U,2BAWvC,SAAcg8D,GACZ,IAAMU,EAAO,GAKbV,EAAMb,OAAOp7D,MAAK,SAACiE,EAAGkU,GACpB,YAAetU,IAAXI,EAAEhE,WAAiC4D,IAAXsU,EAAElY,KACrBkY,EAAE4jD,iBAAmB93D,EAAE83D,uBAGXl4D,IAAXI,EAAEhE,KAAqB,IAAMgE,EAAEhE,YAAoB4D,IAAXsU,EAAElY,KAAqB,IAAMkY,EAAElY,SAInF,IAfmB,EAefu9D,EAAO,EAfQ,IAgBCvB,EAAMb,QAhBP,IAgBnB,2BAAkC,CAAC,IAAxB77D,EAAuB,QAChC,QAAmBsE,IAAftE,EAAMU,KACR,MAGEu9D,EAAOj+D,EAAMU,MACf08D,EAAKr/D,KAAK,IAAImgE,EAAI,CAAE98D,MAAO68D,EAAMhgD,IAAKje,EAAMU,QAG9Cu9D,EAAOj+D,EAAMU,KAAOV,EAAMg1D,OAzBT,8BAgCnB,OAJIiJ,EAAO,KACTb,EAAKr/D,KAAK,IAAImgE,EAAI,CAAE98D,MAAO68D,EAAMhgD,IAAK,OAGjC9e,KAAKq+D,SAASJ,K,sBAQvB,SAASA,GACP,OAAOA,EAAK38D,MAAK,SAACiE,EAAGkU,GAAJ,OAAUlU,EAAEswD,MAAQp8C,EAAEo8C,a,KAKrCsH,EAOJ,cAA6C,IAA/BhI,EAA8B,EAA9BA,UAAWC,EAAmB,EAAnBA,QAASsH,EAAU,EAAVA,OAAU,UAC1C18D,KAAKm1D,UAAYA,EACjBn1D,KAAKo1D,QAAUA,EACfp1D,KAAK08D,OAASA,GAIZqC,E,WACJ,cAA6B,IAAf98D,EAAc,EAAdA,MAAO6c,EAAO,EAAPA,IAAO,UAC1B9e,KAAKiC,MAAQA,EACbjC,KAAK8e,IAAMA,E,6BAGb,WACE,OAAO9e,KAAK8e,IAAM9e,KAAKiC,U,KAKZw6D,O,2NC3UTuC,E,WACJ,WAAY9rD,I,4FAAO,CAAD,QAChBlT,KAAK08D,OAAS18D,KAAKi/D,cAAc/rD,G,oDAGnC,SAAcA,GACZ,IAAIwpD,EAAS,GAKb,OAHAA,EAAS18D,KAAKk/D,iBAAiBhsD,GAC/BwpD,EAAS,IAAID,IAAiB,CAAEC,WAAUyC,mB,8BAK5C,SAAiBjsD,GAGf,OAAOA,EAAKzQ,KAAI,SAAAmoC,GAAI,OAAI,IAAIsqB,IAAMtqB,MAAOtpC,MAAK,SAACiE,EAAGkU,GAChD,IAAI+J,EAASje,EAAE63D,mBAAqB3jD,EAAE2jD,mBAMtC,OAJe,IAAX55C,IACFA,EAAS/J,EAAE4jD,iBAAmB93D,EAAE83D,kBAG3B75C,U,gCAKEw7C,O,6BChCf,mE,6BCIA,SAASI,EAAuB94D,GAC9B,OAAOA,EAAQ5C,OAAOjB,KAAIpF,GAG5B,SAA8CiJ,EAASjJ,GACrD,MAAMmJ,EAkBR,SAAiCnJ,GAC/B,MAAMgiE,GAAehiE,EAAI6N,MAAM,2CAA6C,IAAI,GAEhF,GAAIm0D,EACF,OAAOA,EAAY56D,QAAQ,KAAM,KAAKA,QAAQ,MAAO,MAtBpC66D,CAAwBjiE,GAE3C,GAAImJ,EACF,OAIJ,SAA0C3K,EAAQ2K,GAChD,MAAMyQ,EAAwBpb,EAAOolB,QAErC,GAAoC,mBAAzBhK,EACT,MAAO,CACLzQ,aACAyQ,yBAVKsoD,CAAiCj5D,EAAQjJ,GAAMmJ,GAPvBg5D,CAAqCl5D,EAASjJ,KAAMiK,QAAOvK,GAASA,IALvG,mC,iBCOS,SAAUg5D,GACjB,aAEA,IAAIliC,EAAS,CACXzO,OAAQ,8HAAoFhW,MAAM,KAClGqwD,WAAY,gIAAsFrwD,MAAM,MAEtGwkB,EAAc,yFAAkDxkB,MAAM,KACtE4kB,EAAc,CAAC,QAAS,WAAS,aAAS,QAAS,aAAS,wCAA0B,2CAA6B,QAAS,gBAAS,gBAAS,QAAS,SAG3JD,EAAc,mPAEd,SAAS2rC,EAAOniE,GACd,OAAOA,EAAI,GAAKA,EAAI,GAAoB,OAAZA,EAAI,IAGlC,SAASoiE,EAAUr9C,EAAQ6L,EAAe9wB,EAAK+wB,GAC7C,IAAI5K,EAASlB,EAAS,IAEtB,OAAQjlB,GACN,IAAK,IAEH,OAAO8wB,GAAiBC,EAAW,gBAAe,mBAEpD,IAAK,KAEH,OAAID,GAAiBC,EACZ5K,GAAUk8C,EAAOp9C,GAAU,UAAY,UAEvCkB,EAAS,YAGpB,IAAK,IAEH,OAAO2K,EAAgB,SAAWC,EAAW,SAAW,UAE1D,IAAK,KAEH,OAAID,GAAiBC,EACZ5K,GAAUk8C,EAAOp9C,GAAU,SAAW,SAEtCkB,EAAS,WAGpB,IAAK,IAEH,OAAO2K,EAAgB,SAAWC,EAAW,SAAW,UAE1D,IAAK,KAEH,OAAID,GAAiBC,EACZ5K,GAAUk8C,EAAOp9C,GAAU,SAAW,SAEtCkB,EAAS,WAGpB,IAAK,IAEH,OAAO2K,GAAiBC,EAAW,MAAQ,OAE7C,IAAK,KAEH,OAAID,GAAiBC,EACZ5K,GAAUk8C,EAAOp9C,GAAU,MAAQ,UAEnCkB,EAAS,MAGpB,IAAK,IAEH,OAAO2K,GAAiBC,EAAW,gBAAU,kBAE/C,IAAK,KAEH,OAAID,GAAiBC,EACZ5K,GAAUk8C,EAAOp9C,GAAU,iBAAW,uBAEtCkB,EAAS,iBAGpB,IAAK,IAEH,OAAO2K,GAAiBC,EAAW,MAAQ,QAE7C,IAAK,KAEH,OAAID,GAAiBC,EACZ5K,GAAUk8C,EAAOp9C,GAAU,OAAS,OAEpCkB,EAAS,QAMfuyC,EAAOl4B,aAAa,KAAM,CACjChK,OAAQA,EACRD,YAAaA,EACbG,YAAaA,EACbD,iBAAkBC,EAGlB6rC,kBAAmB,gPACnBC,uBAAwB,6FACxB7rC,YAAaA,EACb8rC,gBAAiB9rC,EACjB+rC,iBAAkB/rC,EAClB8E,SAAU,mFAAmD1pB,MAAM,KACnEypB,cAAe,kCAAuBzpB,MAAM,KAC5CwpB,YAAa,kCAAuBxpB,MAAM,KAC1C+c,eAAgB,CACdI,GAAI,OACJD,IAAK,UACLE,EAAG,aACHC,GAAI,eACJC,IAAK,oBACLC,KAAM,yBACN5wB,EAAG,cAELwuB,SAAU,CACRN,QAAS,cACTC,QAAS,kBACTC,SAAU,WACR,OAAQnqB,KAAK05B,OACX,KAAK,EACH,MAAO,uBAET,KAAK,EACL,KAAK,EACH,MAAO,kBAET,KAAK,EACH,MAAO,wBAET,KAAK,EACH,MAAO,yBAET,KAAK,EACH,MAAO,oBAET,KAAK,EACH,MAAO,oBAGbtP,QAAS,oBACTC,SAAU,WACR,OAAQrqB,KAAK05B,OACX,KAAK,EACH,MAAO,6BAET,KAAK,EACL,KAAK,EACH,MAAO,0BAET,KAAK,EACH,MAAO,6BAET,KAAK,EACL,KAAK,EACH,MAAO,0BAET,KAAK,EACH,MAAO,0BAGbpP,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,QACRC,KAAM,eACNzvB,EAAG8hE,EACHpyC,GAAIoyC,EACJzjE,EAAGyjE,EACHnyC,GAAImyC,EACJlyC,EAAGkyC,EACHjyC,GAAIiyC,EACJvjE,EAAGujE,EACHhyC,GAAIgyC,EACJ7xC,EAAG6xC,EACH5xC,GAAI4xC,EACJ3xC,EAAG2xC,EACH1xC,GAAI0xC,GAEN/iC,uBAAwB,YACxBlR,QAAS,MACT4L,KAAM,CACJL,IAAK,EAELC,IAAK,KA9LuFwgB,CAAQ,EAAQ,K,iBCGzG,SAAUqe,GACjB,aAEA,SAASiK,EAAoB19C,EAAQ6L,EAAe9wB,EAAK+wB,GACvD,IAAIhJ,EAAS,CACXlpB,EAAG,CAAC,cAAe,gBACnBuxB,EAAG,CAAC,cAAe,gBACnBrxB,EAAG,CAAC,UAAW,aACfuxB,GAAI,CAACrL,EAAS,QAASA,EAAS,UAChCsL,EAAG,CAAC,aAAc,eAClBE,EAAG,CAAC,YAAa,eACjBC,GAAI,CAACzL,EAAS,UAAWA,EAAS,YAClC0L,EAAG,CAAC,WAAY,cAChBC,GAAI,CAAC3L,EAAS,SAAUA,EAAS,YAEnC,OAAO6L,EAAgB/I,EAAO/nB,GAAK,GAAK+nB,EAAO/nB,GAAK,GAG7C04D,EAAOl4B,aAAa,KAAM,CACjChK,OAAQ,wFAAqFzkB,MAAM,KACnGwkB,YAAa,gEAA6DxkB,MAAM,KAChF6wD,kBAAkB,EAClBnnC,SAAU,8DAA8D1pB,MAAM,KAC9EypB,cAAe,8BAA8BzpB,MAAM,KACnDwpB,YAAa,uBAAuBxpB,MAAM,KAC1C8wD,oBAAoB,EACpB/zC,eAAgB,CACdI,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,eACJC,IAAK,qBACLC,KAAM,4BAERpC,SAAU,CACRN,QAAS,sBACTK,SAAU,IACVJ,QAAS,uBACTC,SAAU,qBACVC,QAAS,wBACTC,SAAU,gCAEZ6D,aAAc,CACZb,OAAQ,QACRC,KAAM,SACNzvB,EAAG,oBACH0vB,GAAI,cACJrxB,EAAG8jE,EACHxyC,GAAI,aACJC,EAAGuyC,EACHtyC,GAAI,aACJtxB,EAAG4jE,EACHryC,GAAIqyC,EACJpyC,EAAGoyC,EACHnyC,GAAI,YACJC,EAAGkyC,EACHjyC,GAAIiyC,EACJhyC,EAAGgyC,EACH/xC,GAAI+xC,GAENpjC,uBAAwB,YACxBlR,QAAS,MACT4L,KAAM,CACJL,IAAK,EAELC,IAAK,KAlEuFwgB,CAAQ,EAAQ,K,iBCDzG,SAAUqe,GACjB,aAEA,SAAS1sC,EAAW1jB,GAClB,MAA2B,qBAAb2jB,UAA4B3jB,aAAiB2jB,UAAsD,sBAA1C9sB,OAAOkB,UAAUwB,SAASjD,KAAK0J,GAG/FowD,EAAOl4B,aAAa,KAAM,CACjCsiC,mBAAoB,wnBAAqH/wD,MAAM,KAC/IgxD,iBAAkB,wnBAAqHhxD,MAAM,KAC7IykB,OAAQ,SAAUwsC,EAAgBj7C,GAChC,OAAKi7C,EAEwB,kBAAXj7C,GAAuB,IAAI9lB,KAAK8lB,EAAO8yB,UAAU,EAAG9yB,EAAO2N,QAAQ,UAE5E/yB,KAAKsgE,kBAAkBD,EAAehwC,SAEtCrwB,KAAKugE,oBAAoBF,EAAehwC,SALxCrwB,KAAKugE,qBAQhB3sC,YAAa,kPAAoDxkB,MAAM,KACvE0pB,SAAU,ySAAyD1pB,MAAM,KACzEypB,cAAe,uIAA8BzpB,MAAM,KACnDwpB,YAAa,6FAAuBxpB,MAAM,KAC1CmX,SAAU,SAAUgV,EAAOG,EAASe,GAClC,OAAIlB,EAAQ,GACHkB,EAAU,eAAO,eAEjBA,EAAU,eAAO,gBAG5BR,KAAM,SAAUt2B,GACd,MAAyC,YAAjCA,EAAQ,IAAIV,cAAc,IAEpC43B,cAAe,+BACf1Q,eAAgB,CACdI,GAAI,SACJD,IAAK,YACLE,EAAG,aACHC,GAAI,cACJC,IAAK,qBACLC,KAAM,4BAER6zC,WAAY,CACVv2C,QAAS,+CACTC,QAAS,yCACTC,SAAU,eACVC,QAAS,mCACTC,SAAU,WACR,OAAQrqB,KAAK05B,OACX,KAAK,EACH,MAAO,iGAET,QACE,MAAO,yGAGbpP,SAAU,KAEZC,SAAU,SAAUltB,EAAKmtB,GACvB,IAAIE,EAAS1qB,KAAKygE,YAAYpjE,GAC1Bk+B,EAAQ/Q,GAAOA,EAAI+Q,QAMvB,OAJIlS,EAAWqB,KACbA,EAASA,EAAOrG,MAAMmG,IAGjBE,EAAOjmB,QAAQ,KAAM82B,EAAQ,KAAO,EAAI,qBAAQ,6BAEzDrN,aAAc,CACZb,OAAQ,kBACRC,KAAM,8BACNzvB,EAAG,oGACH0vB,GAAI,8EACJrxB,EAAG,oDACHsxB,GAAI,oCACJC,EAAG,wCACHC,GAAI,8BACJtxB,EAAG,8CACHuxB,GAAI,oCACJG,EAAG,0DACHC,GAAI,oCACJC,EAAG,gEACHC,GAAI,2CAEN2O,uBAAwB,gBACxBlR,QAAS,WACT4L,KAAM,CACJL,IAAK,EAELC,IAAK,KA3FuFwgB,CAAQ,EAAQ,K,iBCCzG,SAAUqe,GACjB,aAEWA,EAAOl4B,aAAa,QAAS,CACtChK,OAAQ,wFAAwFzkB,MAAM,KACtGwkB,YAAa,kDAAkDxkB,MAAM,KACrE0pB,SAAU,2DAA2D1pB,MAAM,KAC3EypB,cAAe,8BAA8BzpB,MAAM,KACnDwpB,YAAa,uBAAuBxpB,MAAM,KAC1C+c,eAAgB,CACdI,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAERpC,SAAU,CACRN,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,QACRC,KAAM,SACNzvB,EAAG,gBACH0vB,GAAI,aACJrxB,EAAG,WACHsxB,GAAI,aACJC,EAAG,UACHC,GAAI,WACJtxB,EAAG,QACHuxB,GAAI,UACJG,EAAG,UACHC,GAAI,YACJC,EAAG,SACHC,GAAI,YAEN2O,uBAAwB,uBACxBlR,QAAS,SAAUpJ,GACjB,IAAI7I,EAAI6I,EAAS,GAEjB,OAAOA,GADgC,OAAvBA,EAAS,IAAM,IAAY,KAAa,IAAN7I,EAAU,KAAa,IAANA,EAAU,KAAa,IAANA,EAAU,KAAO,OAGvG6d,KAAM,CACJL,IAAK,EAELC,IAAK,KAnDuFwgB,CAAQ,EAAQ,K,iBCCzG,SAAUqe,GACjB,aAEA,IAAI2K,EAAiB,8DAA8DtxD,MAAM,KACrFwkB,EAAc,kDAAkDxkB,MAAM,KACtE4kB,EAAc,CAAC,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,SAClHD,EAAc,mLACTgiC,EAAOl4B,aAAa,KAAM,CACjChK,OAAQ,2FAA2FzkB,MAAM,KACzGwkB,YAAa,SAAU13B,EAAGkpB,GACxB,OAAKlpB,EAEM,QAAQoD,KAAK8lB,GACfwO,EAAY13B,EAAEm0B,SAEdqwC,EAAexkE,EAAEm0B,SAJjBqwC,GAOX3sC,YAAaA,EACbD,iBAAkBC,EAClB6rC,kBAAmB,+FACnBC,uBAAwB,0FACxB7rC,YAAaA,EACb8rC,gBAAiB9rC,EACjB+rC,iBAAkB/rC,EAClB8E,SAAU,6DAAuD1pB,MAAM,KACvEypB,cAAe,2CAAqCzpB,MAAM,KAC1DwpB,YAAa,0BAAuBxpB,MAAM,KAC1C8wD,oBAAoB,EACpB/zC,eAAgB,CACdI,GAAI,OACJD,IAAK,UACLE,EAAG,aACHC,GAAI,wBACJC,IAAK,6BACLC,KAAM,oCAERpC,SAAU,CACRN,QAAS,WACP,MAAO,aAAgC,IAAjBjqB,KAAKu7B,QAAgB,IAAM,IAAM,QAEzDrR,QAAS,WACP,MAAO,mBAAmC,IAAjBlqB,KAAKu7B,QAAgB,IAAM,IAAM,QAE5DpR,SAAU,WACR,MAAO,cAAiC,IAAjBnqB,KAAKu7B,QAAgB,IAAM,IAAM,QAE1DnR,QAAS,WACP,MAAO,cAAiC,IAAjBpqB,KAAKu7B,QAAgB,IAAM,IAAM,QAE1DlR,SAAU,WACR,MAAO,0BAA6C,IAAjBrqB,KAAKu7B,QAAgB,IAAM,IAAM,QAEtEjR,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,QACRC,KAAM,UACNzvB,EAAG,gBACH0vB,GAAI,cACJrxB,EAAG,YACHsxB,GAAI,aACJC,EAAG,WACHC,GAAI,WACJtxB,EAAG,YACHuxB,GAAI,aACJC,EAAG,aACHC,GAAI,aACJC,EAAG,SACHC,GAAI,WACJC,EAAG,YACHC,GAAI,cAEN2O,uBAAwB,cACxBlR,QAAS,SACT4L,KAAM,CACJL,IAAK,EAELC,IAAK,GAGPjL,YAAa,sBAlFiFyrB,CAAQ,EAAQ,K,iBCCzG,SAAUqe,GACjB,aAEA,IAAI6J,EAAoB,oGACpBC,EAAyB,6FACzB9rC,EAAc,2LACdC,EAAc,CAAC,SAAU,YAAU,SAAU,QAAS,QAAS,SAAU,SAAU,YAAU,SAAU,QAAS,QAAS,YACpH+hC,EAAOl4B,aAAa,KAAM,CACjChK,OAAQ,gGAAuFzkB,MAAM,KACrGwkB,YAAa,0EAAiExkB,MAAM,KACpF2kB,YAAaA,EACbD,iBAAkBC,EAClB6rC,kBAAmBA,EACnBC,uBAAwBA,EACxB7rC,YAAaA,EACb8rC,gBAAiB9rC,EACjB+rC,iBAAkB/rC,EAClB8E,SAAU,sDAAsD1pB,MAAM,KACtEypB,cAAe,qCAAqCzpB,MAAM,KAC1DwpB,YAAa,uBAAuBxpB,MAAM,KAC1C8wD,oBAAoB,EACpB/zC,eAAgB,CACdI,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAERpC,SAAU,CACRN,QAAS,6BACTC,QAAS,mBACTC,SAAU,iBACVC,QAAS,iBACTC,SAAU,yBACVC,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,UACRC,KAAM,YACNzvB,EAAG,oBACH0vB,GAAI,cACJrxB,EAAG,aACHsxB,GAAI,aACJC,EAAG,YACHC,GAAI,YACJtxB,EAAG,UACHuxB,GAAI,WACJC,EAAG,cACHC,GAAI,cACJC,EAAG,UACHC,GAAI,UACJC,EAAG,QACHC,GAAI,UAEN2O,uBAAwB,eACxBlR,QAAS,SAAUpJ,EAAQynB,GACzB,OAAQA,GAIN,IAAK,IACH,OAAOznB,GAAqB,IAAXA,EAAe,KAAO,IAGzC,QACA,IAAK,IACL,IAAK,IACL,IAAK,MACL,IAAK,IACH,OAAOA,GAAqB,IAAXA,EAAe,KAAO,KAGzC,IAAK,IACL,IAAK,IACH,OAAOA,GAAqB,IAAXA,EAAe,KAAO,OAG7CgV,KAAM,CACJL,IAAK,EAELC,IAAK,KAlFuFwgB,CAAQ,EAAQ,K,iBCGzG,SAAUqe,GACjB,aAESA,EAAOl4B,aAAa,KAAM,CACjChK,OAAQ,gGAAgGzkB,MAAM,KAC9GwkB,YAAa,kDAAkDxkB,MAAM,KACrE0pB,SAAU,0EAA2D1pB,MAAM,KAC3EypB,cAAe,8BAA8BzpB,MAAM,KACnDwpB,YAAa,uBAAuBxpB,MAAM,KAC1C+c,eAAgB,CACdI,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAERpC,SAAU,CACRN,QAAS,WACP,MAAO,WAAajqB,KAAKu7B,QAAU,EAAI,OAA0B,IAAjBv7B,KAAKu7B,QAAgB,IAAM,OAAS,OAEtFrR,QAAS,WACP,MAAO,aAAelqB,KAAKu7B,QAAU,EAAI,OAA0B,IAAjBv7B,KAAKu7B,QAAgB,IAAM,OAAS,OAExFpR,SAAU,WACR,MAAO,WAAanqB,KAAKu7B,QAAU,EAAI,OAA0B,IAAjBv7B,KAAKu7B,QAAgB,IAAM,OAAS,OAEtFnR,QAAS,WACP,MAAO,WAAapqB,KAAKu7B,QAAU,EAAI,OAA0B,IAAjBv7B,KAAKu7B,QAAgB,IAAM,OAAS,OAEtFlR,SAAU,WACR,OAAQrqB,KAAK05B,OACX,KAAK,EACH,MAAO,uBAAyB15B,KAAKu7B,QAAU,EAAI,OAA0B,IAAjBv7B,KAAKu7B,QAAgB,IAAM,OAAS,MAElG,QACE,MAAO,uBAAyBv7B,KAAKu7B,QAAU,EAAI,OAA0B,IAAjBv7B,KAAKu7B,QAAgB,IAAM,OAAS,QAGtGjR,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,SACRC,KAAM,QACNzvB,EAAG,iBACH0vB,GAAI,aACJrxB,EAAG,YACHsxB,GAAI,YACJC,EAAG,SACHC,GAAI,SACJtxB,EAAG,YACHuxB,GAAI,YACJC,EAAG,gBACHC,GAAI,eACJC,EAAG,UACHC,GAAI,UACJC,EAAG,UACHC,GAAI,WAEN2O,uBAAwB,cACxBlR,QAAS,SACT4L,KAAM,CACJL,IAAK,EAELC,IAAK,KAjEuFwgB,CAAQ,EAAQ,K,iBCAzG,SAAUqe,GACjB,aAEA,IAAI4K,EAAsB,6DAA6DvxD,MAAM,KACzFwxD,EAAyB,kDAAkDxxD,MAAM,KACjF4kB,EAAc,CAAC,QAAS,QAAS,iBAAkB,QAAS,SAAU,cAAe,cAAe,QAAS,QAAS,QAAS,QAAS,SACxID,EAAc,qKACTgiC,EAAOl4B,aAAa,KAAM,CACjChK,OAAQ,0FAA0FzkB,MAAM,KACxGwkB,YAAa,SAAU13B,EAAGkpB,GACxB,OAAKlpB,EAEM,QAAQoD,KAAK8lB,GACfw7C,EAAuB1kE,EAAEm0B,SAEzBswC,EAAoBzkE,EAAEm0B,SAJtBswC,GAOX5sC,YAAaA,EACbD,iBAAkBC,EAClB6rC,kBAAmB,4FACnBC,uBAAwB,mFACxB7rC,YAAaA,EACb8rC,gBAAiB9rC,EACjB+rC,iBAAkB/rC,EAClB8E,SAAU,6DAA6D1pB,MAAM,KAC7EypB,cAAe,8BAA8BzpB,MAAM,KACnDwpB,YAAa,uBAAuBxpB,MAAM,KAC1C8wD,oBAAoB,EACpB/zC,eAAgB,CACdI,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAERpC,SAAU,CACRN,QAAS,kBACTC,QAAS,iBACTC,SAAU,eACVC,QAAS,mBACTC,SAAU,2BACVC,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,UACRC,KAAM,aACNzvB,EAAG,oBACH0vB,GAAI,cACJrxB,EAAG,mBACHsxB,GAAI,aACJC,EAAG,gBACHC,GAAI,SACJtxB,EAAG,gBACHuxB,GAAI,WACJC,EAAG,iBACHC,GAAI,WACJC,EAAG,kBACHC,GAAI,aACJC,EAAG,iBACHC,GAAI,WAEN2O,uBAAwB,kBACxBlR,QAAS,SAAUpJ,GACjB,OAAOA,GAAqB,IAAXA,GAA2B,IAAXA,GAAgBA,GAAU,GAAK,MAAQ,OAE1EgV,KAAM,CACJL,IAAK,EAELC,IAAK,KAvEuFwgB,CAAQ,EAAQ,K,iBCAzG,SAAUqe,GACjB,aAEA,IAAI8K,EAAmB,iIAAmGzxD,MAAM,KAC5H0xD,EAAmB,+GAAqG1xD,MAAM,KAC9H4kB,EAAc,CAAC,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,aAAS,QAAS,SAEtH,SAAS0rC,EAAOniE,GACd,OAAOA,EAAI,GAAK,GAAKA,EAAI,GAAK,MAAQA,EAAI,IAAM,KAAO,EAGzD,SAASoiE,EAAUr9C,EAAQ6L,EAAe9wB,GACxC,IAAImmB,EAASlB,EAAS,IAEtB,OAAQjlB,GACN,IAAK,KACH,OAAOmmB,GAAUk8C,EAAOp9C,GAAU,UAAY,UAEhD,IAAK,IACH,OAAO6L,EAAgB,SAAW,cAEpC,IAAK,KACH,OAAO3K,GAAUk8C,EAAOp9C,GAAU,SAAW,SAE/C,IAAK,IACH,OAAO6L,EAAgB,UAAY,eAErC,IAAK,KACH,OAAO3K,GAAUk8C,EAAOp9C,GAAU,UAAY,UAEhD,IAAK,KACH,OAAOkB,GAAUk8C,EAAOp9C,GAAU,WAAa,WAEjD,IAAK,KACH,OAAOkB,GAAUk8C,EAAOp9C,GAAU,gBAAa,iBAEjD,IAAK,KACH,OAAOkB,GAAUk8C,EAAOp9C,GAAU,OAAS,QAIxCyzC,EAAOl4B,aAAa,KAAM,CACjChK,OAAQ,SAAUwsC,EAAgBj7C,GAChC,OAAKi7C,EAEM,SAAS/gE,KAAK8lB,GAChB07C,EAAiBT,EAAehwC,SAEhCwwC,EAAiBR,EAAehwC,SAJhCwwC,GAOXjtC,YAAa,uDAAkDxkB,MAAM,KACrE4kB,YAAaA,EACb8rC,gBAAiB9rC,EACjB+rC,iBAAkB/rC,EAClB8E,SAAU,4EAA6D1pB,MAAM,KAC7EypB,cAAe,gCAA2BzpB,MAAM,KAChDwpB,YAAa,4BAAuBxpB,MAAM,KAC1C+c,eAAgB,CACdI,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAERpC,SAAU,CACRN,QAAS,mBACTC,QAAS,eACTC,SAAU,WACR,OAAQnqB,KAAK05B,OACX,KAAK,EACH,MAAO,0BAET,KAAK,EACH,MAAO,mBAET,KAAK,EACH,MAAO,2BAET,KAAK,EACH,MAAO,uBAET,QACE,MAAO,oBAGbtP,QAAS,iBACTC,SAAU,WACR,OAAQrqB,KAAK05B,OACX,KAAK,EACH,MAAO,2CAET,KAAK,EACH,MAAO,4CAET,KAAK,EACH,MAAO,wCAET,QACE,MAAO,gCAGbpP,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,QACRC,KAAM,UACNzvB,EAAG,eACH0vB,GAAIoyC,EACJzjE,EAAGyjE,EACHnyC,GAAImyC,EACJlyC,EAAGkyC,EACHjyC,GAAIiyC,EACJvjE,EAAG,eACHuxB,GAAI,SACJC,EAAG,eACHC,GAAI8xC,EACJ7xC,EAAG,eACHC,GAAI4xC,EACJ3xC,EAAG,MACHC,GAAI0xC,GAEN/iC,uBAAwB,YACxBlR,QAAS,MACT4L,KAAM,CACJL,IAAK,EAELC,IAAK,KAjIuFwgB,CAAQ,EAAQ,K,iBCCzG,SAAUqe,GACjB,aAESA,EAAOl4B,aAAa,KAAM,CACjChK,OAAQ,8FAA2FzkB,MAAM,KACzGwkB,YAAa,kDAAkDxkB,MAAM,KACrE0pB,SAAU,uFAAiF1pB,MAAM,KACjGypB,cAAe,iCAA8BzpB,MAAM,KACnDwpB,YAAa,yCAAuBxpB,MAAM,KAC1C8wD,oBAAoB,EACpB/zC,eAAgB,CACdI,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,wBACJC,IAAK,8BACLC,KAAM,qCAERpC,SAAU,CACRN,QAAS,kBACTC,QAAS,uBACTC,SAAU,kBACVC,QAAS,mBACTC,SAAU,WACR,OAAsB,IAAfrqB,KAAK05B,OAA8B,IAAf15B,KAAK05B,MAAc,8BAC5C,+BAEJpP,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,QACRC,KAAM,WACNzvB,EAAG,WACH0vB,GAAI,cACJrxB,EAAG,YACHsxB,GAAI,aACJC,EAAG,WACHC,GAAI,WACJtxB,EAAG,SACHuxB,GAAI,UACJC,EAAG,aACHC,GAAI,aACJC,EAAG,YACHC,GAAI,WACJC,EAAG,SACHC,GAAI,WAEN2O,uBAAwB,cACxBlR,QAAS,SACT4L,KAAM,CACJL,IAAK,EAELC,IAAK,KArDuFwgB,CAAQ,EAAQ,K,iBCEzG,SAAUqe,GACjB,aAEA,IAAIgL,EAAW,CACb,EAAG,QACH,EAAG,QACH,EAAG,QACH,GAAI,QACJ,GAAI,QACJ,EAAG,OACH,EAAG,OACH,GAAI,OACJ,GAAI,OACJ,EAAG,cACH,EAAG,cACH,IAAK,cACL,EAAG,YACH,EAAG,QACH,GAAI,QACJ,GAAI,QACJ,GAAI,kBACJ,GAAI,mBAEGhL,EAAOl4B,aAAa,KAAM,CACjChK,OAAQ,yGAA6EzkB,MAAM,KAC3FwkB,YAAa,4DAAkDxkB,MAAM,KACrE0pB,SAAU,0EAAwD1pB,MAAM,KACxEypB,cAAe,iCAA8BzpB,MAAM,KACnDwpB,YAAa,0BAAuBxpB,MAAM,KAC1CmX,SAAU,SAAUgV,EAAOG,EAASe,GAClC,OAAIlB,EAAQ,GACHkB,EAAU,WAAO,WAEjBA,EAAU,QAAO,SAG5BI,cAAe,gCACfZ,KAAM,SAAUt2B,GACd,MAAiB,UAAVA,GAA4B,UAAVA,GAE3BwmB,eAAgB,CACdI,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAERpC,SAAU,CACRN,QAAS,qBACTC,QAAS,uBACTC,SAAU,2BACVC,QAAS,cACTC,SAAU,4BACVC,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,WACRC,KAAM,aACNzvB,EAAG,mBACH0vB,GAAI,YACJrxB,EAAG,aACHsxB,GAAI,YACJC,EAAG,WACHC,GAAI,UACJtxB,EAAG,aACHuxB,GAAI,YACJC,EAAG,YACHC,GAAI,WACJC,EAAG,SACHC,GAAI,QACJC,EAAG,eACHC,GAAI,eAENvC,QAAS,SAAUpJ,EAAQynB,GACzB,OAAQA,GACN,IAAK,IACL,IAAK,IACL,IAAK,KACL,IAAK,KACH,OAAOznB,EAET,QACE,GAAe,IAAXA,EAEF,OAAOA,EAAS,kBAGlB,IAAI/c,EAAI+c,EAAS,GACb7I,EAAI6I,EAAS,IAAM/c,EACnBpJ,EAAImmB,GAAU,IAAM,IAAM,KAC9B,OAAOA,GAAUy+C,EAASx7D,IAAMw7D,EAAStnD,IAAMsnD,EAAS5kE,MAG9Dm7B,KAAM,CACJL,IAAK,EAELC,IAAK,KAlGuFwgB,CAAQ,EAAQ,K,6BCLlHl7C,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAET,MAAMikE,EAA0B,IAAItvD,OAAO,mEAAoE,KA8C/G9V,EAAQqlB,QAzCR,MACE+tC,OAAO1oD,EAASqoD,GAmCd,OAlCAA,EAAQxsD,SAAQ,SAAUqhB,GACxB,GAAIA,EAAOvhB,MAAMi7C,UAAU,kBACzB,OAGF,MAAMvQ,EAASrmC,EAAQ23C,KAAK/F,UAAU10B,EAAO9hB,MAAQ8hB,EAAOy6B,KAAKp/C,QAC3DqM,EAAQ81D,EAAwBnhC,KAAK8M,GAE3C,IAAKzhC,EACH,OAGF5E,EAAQiZ,OAAM,KACZlB,QAAQgC,IAAI,yBAAyBnV,EAAM,cAAcsY,QAI3D,IAAI44B,EAA8B,GAFf/lB,SAASnrB,EApBQ,IAqBfmrB,SAASnrB,EApBQ,IAoBsC,KAGxEkxC,EAAiB,MAIqB,MAAtClxC,EA7ByB,KA8B3BkxC,GAAkBA,GAGF,MAAd54B,EAAO1E,KACT0E,EAAO1E,IAAI9d,OAAO,iBAAkBo7C,GAGtC54B,EAAOvhB,MAAMjB,OAAO,iBAAkBo7C,GACtC54B,EAAOy6B,MAAQ/yC,EAAM,OAEhByjD,K,6BC5CXnyD,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAETnB,EAAQ4jD,UAAY5jD,EAAQ6jD,aAAe7jD,EAAQqkD,iBAAmBrkD,EAAQukD,wBAAqB,EACnGvkD,EAAQukD,mBAAqB,CAC3B,QAAW,EACX,IAAO,EACP,QAAW,EACX,gBAAiB,EACjB,IAAO,EACP,WAAS,EACT,iBAAe,EACf,IAAO,EACP,OAAU,EACV,eAAgB,EAChB,IAAO,EACP,OAAU,EACV,eAAgB,EAChB,IAAO,EACP,MAAS,EACT,cAAe,EACf,IAAO,EACP,YAAU,EACV,OAAU,EACV,IAAO,GAETvkD,EAAQqkD,iBAAmB,CACzB,QAAW,EACX,IAAO,EACP,OAAQ,EACR,UAAa,EACb,IAAO,EACP,OAAQ,EACR,WAAS,EACT,IAAO,EACP,OAAQ,EACR,MAAS,EACT,IAAO,EACP,OAAQ,EACR,KAAQ,EACR,IAAO,EACP,OAAQ,EACR,MAAS,EACT,IAAO,EACP,OAAQ,EACR,MAAS,EACT,IAAO,EACP,OAAQ,EACR,OAAU,EACV,IAAO,EACP,OAAQ,EACR,SAAY,EACZ,IAAO,EACP,OAAQ,EACR,QAAW,GACX,IAAO,GACP,OAAQ,GACR,SAAY,GACZ,IAAO,GACP,OAAQ,GACR,SAAY,GACZ,IAAO,GACP,OAAQ,IAEVrkD,EAAQ6jD,aAAe,wEAyBvB7jD,EAAQ4jD,UAvBR,SAAmBt0C,GACjB,GAAIA,EAAMA,MAAM,gBAAiB,CAC/B,IAAI06C,EAAavvB,SAASnrB,GAU1B,OARI06C,EAAa,MAEbA,GADEA,EAAa,GACW,KAEA,KAIvBA,EAGT,OAAI16C,EAAMA,MAAM,iBACdA,EAAQA,EAAMzG,QAAQ,eAAgB,KAC9B4xB,SAASnrB,IAGZmrB,SAASnrB,K,iTCtFZ+1D,E,WACJ,WAAY/tD,GAAqB,IAAfhC,EAAc,uDAAJ,GAAI,UAC9BlR,KAAKkhE,WAAahwD,EAAQgwD,YAAc,QACxClhE,KAAKmhE,WAAa,IAAInC,IAAW9rD,G,6CAGnC,SAAOlK,GAAW,IAAD,OACf,OAAOhJ,KAAKmhE,WAAWzE,OAAOj6D,KAAI,SAAA5B,GAChC,IAAMoD,EAAU,EAAKm9D,YAAYvgE,GAEjC,OAAOmI,EAAWA,EAAS/E,EAASpD,GAASoD,O,yBAIjD,SAAYpD,GAAQ,IAAD,IACXoD,EAAUM,SAAS88D,cAAc,KAevC,GAbAp9D,EAAQq9D,UAAU7gE,IAAIT,KAAKkhE,YACtB,OAALrgE,QAAK,IAALA,GAAA,UAAAA,EAAO60D,aAAP,mBAAc/4C,eAAd,SAAuBxa,SAAQ,SAAAo/D,GAAO,OAAIt9D,EAAQq9D,UAAU7gE,IAAI8gE,MAEhEt9D,EAAQuW,aAAa,OAAQ3Z,EAAM40D,KAGnCj5D,OAAOkH,KAAK7C,EAAM2rD,SAASrqD,SAAQ,SAAA9E,GAAG,OAAI4G,EAAQuoD,QAAQnvD,GAAOwD,EAAM2rD,QAAQnvD,MAE/E4G,EAAQyxD,MAAMG,MAAd,UAAyBh1D,EAAMg1D,MAA/B,KACA5xD,EAAQyxD,MAAM8L,OAAd,UAA0B3gE,EAAM2gE,OAAhC,KACAv9D,EAAQyxD,MAAM+L,IAAd,UAAuB5gE,EAAM4gE,IAA7B,KACAx9D,EAAQyxD,MAAMn0D,KAAd,UAAwBV,EAAMU,KAA9B,KAEIV,EAAM00D,MAAO,CACf,IAAMmM,EAAen9D,SAAS88D,cAAc,QAC5CK,EAAaJ,UAAU7gE,IAAvB,UAA8BT,KAAKkhE,WAAnC,WACAQ,EAAaC,UAAY9gE,EAAM00D,MAE/BtxD,EAAQ29D,YAAYF,GAGtB,GAAI7gE,EAAM20D,YAAa,CACrB,IAAMqM,EAAqBt9D,SAAS88D,cAAc,QAClDQ,EAAmBP,UAAU7gE,IAA7B,UAAoCT,KAAKkhE,WAAzC,iBACAW,EAAmBC,UAAYjhE,EAAM20D,YAErCvxD,EAAQ29D,YAAYC,GAGtB,OAAO59D,O,gCAIIg9D,O,6BC7Cf,IAAIc,EAA0B,CAC5BC,OAAQ,KACRC,MAAO,KACPC,UAAW,KACXC,YAAa,KACbC,OAAQ,KACRC,eAAgB,KAChBC,aAAc,KACdC,SAAU,KACVC,KAAM,EACN14B,UAAW,SACX24B,UAAU,EACVC,eAAgB,GAEdC,EAAuB,CACzBh9B,SAAU,IACVi9B,MAAO,EACPC,SAAU,EACVC,OAAQ,wBACRr8B,MAAO,GAELs8B,EAAkB,CAAC,aAAc,aAAc,aAAc,SAAU,UAAW,UAAW,UAAW,QAAS,SAAU,SAAU,SAAU,OAAQ,QAAS,QAAS,cAAe,SAAU,YAElMC,EAAQ,CACVC,IAAK,GACLC,QAAS,IAGX,SAASC,EAAOp7C,EAAKwN,EAAK3mB,GACxB,OAAOD,KAAK4mB,IAAI5mB,KAAKC,IAAImZ,EAAKwN,GAAM3mB,GAGtC,SAASw0D,EAAeC,EAAKplB,GAC3B,OAAOolB,EAAItwC,QAAQkrB,IAAS,EAG9B,SAASqlB,EAAe33C,EAAM1T,GAC5B,OAAO0T,EAAKtH,MAAM,KAAMpM,GAG1B,IAAIsrD,EAAK,CACPxlE,IAAK,SAAUwH,GACb,OAAOvH,MAAMC,QAAQsH,IAEvBmf,IAAK,SAAUnf,GACb,OAAO69D,EAAe5mE,OAAOkB,UAAUwB,SAASjD,KAAKsJ,GAAI,WAE3Di+D,IAAK,SAAUj+D,GACb,OAAOg+D,EAAG7+C,IAAInf,IAAMA,EAAE5H,eAAe,gBAEvC8lE,IAAK,SAAUl+D,GACb,OAAOA,aAAam+D,YAEtBl6B,IAAK,SAAUjkC,GACb,OAAOA,aAAao+D,kBAEtBC,IAAK,SAAUr+D,GACb,OAAOA,EAAEkF,UAAY84D,EAAGE,IAAIl+D,IAE9B89D,IAAK,SAAU99D,GACb,MAAoB,kBAANA,GAEhBs+D,IAAK,SAAUt+D,GACb,MAAoB,oBAANA,GAEhBu+D,IAAK,SAAUv+D,GACb,MAAoB,qBAANA,GAEhBw+D,IAAK,SAAUx+D,GACb,OAAOg+D,EAAGO,IAAIv+D,IAAY,OAANA,GAEtBy+D,IAAK,SAAUz+D,GACb,MAAO,qCAAqCjG,KAAKiG,IAEnD0+D,IAAK,SAAU1+D,GACb,MAAO,OAAOjG,KAAKiG,IAErB2+D,IAAK,SAAU3+D,GACb,MAAO,OAAOjG,KAAKiG,IAErB4+D,IAAK,SAAU5+D,GACb,OAAOg+D,EAAGS,IAAIz+D,IAAMg+D,EAAGU,IAAI1+D,IAAMg+D,EAAGW,IAAI3+D,IAE1ClI,IAAK,SAAUkI,GACb,OAAQw8D,EAAwBpkE,eAAe4H,KAAOo9D,EAAqBhlE,eAAe4H,IAAY,YAANA,GAAyB,cAANA,IAIvH,SAAS6+D,EAAsB7hD,GAC7B,IAAIrX,EAAQ,cAAc20B,KAAKtd,GAC/B,OAAOrX,EAAQA,EAAM,GAAGkE,MAAM,KAAK3M,KAAI,SAAU7E,GAC/C,OAAO0nC,WAAW1nC,MACf,GAIP,SAASymE,EAAO9hD,EAAQojB,GACtB,IAAIp+B,EAAS68D,EAAsB7hD,GAC/B+hD,EAAOnB,EAAOI,EAAGO,IAAIv8D,EAAO,IAAM,EAAIA,EAAO,GAAI,GAAI,KACrDg9D,EAAYpB,EAAOI,EAAGO,IAAIv8D,EAAO,IAAM,IAAMA,EAAO,GAAI,GAAI,KAC5Di9D,EAAUrB,EAAOI,EAAGO,IAAIv8D,EAAO,IAAM,GAAKA,EAAO,GAAI,GAAI,KACzDk9D,EAAWtB,EAAOI,EAAGO,IAAIv8D,EAAO,IAAM,EAAIA,EAAO,GAAI,GAAI,KACzDm9D,EAAK/1D,KAAKg2D,KAAKJ,EAAYD,GAC3BM,EAAOJ,GAAW,EAAI71D,KAAKg2D,KAAKJ,EAAYD,IAC5CO,EAAKD,EAAO,EAAIF,EAAK/1D,KAAKg2D,KAAK,EAAIC,EAAOA,GAAQ,EAElDnrD,EAAImrD,EAAO,GAAKA,EAAOF,EAAMD,GAAYI,GAAMJ,EAAWC,EAE9D,SAASI,EAAO9nE,GACd,IAAI+nE,EAAWp/B,EAAWA,EAAW3oC,EAAI,IAAOA,EAQhD,OALE+nE,EADEH,EAAO,EACEj2D,KAAKq2D,KAAKD,EAAWH,EAAOF,IAPnC,EAO8C/1D,KAAKs2D,IAAIJ,EAAKE,GAAYtrD,EAAI9K,KAAKu2D,IAAIL,EAAKE,KAP1F,EASYtrD,EAAIsrD,GAAYp2D,KAAKq2D,KAAKD,EAAWL,GAG7C,IAAN1nE,GAAiB,IAANA,EACNA,EAGF,EAAI+nE,EAiCb,OAAOp/B,EAAWm/B,EA9BlB,WACE,IAAIK,EAASnC,EAAME,QAAQ3gD,GAE3B,GAAI4iD,EACF,OAAOA,EAOT,IAJA,IAAIC,EAAQ,EAAI,EACZC,EAAU,EACVrlD,EAAO,IAKT,GAAwB,IAApB8kD,EAFJO,GAAWD,IAKT,KAFAplD,GAEY,GACV,WAGFA,EAAO,EAIX,IAAI2lB,EAAW0/B,EAAUD,EAAQ,IAEjC,OADApC,EAAME,QAAQ3gD,GAAUojB,EACjBA,GAOX,SAAS2/B,EAAMA,GAEb,YADc,IAAVA,IAAkBA,EAAQ,IACvB,SAAUtoE,GACf,OAAO2R,KAAKihB,KAAKuzC,EAAOnmE,EAAG,KAAU,GAAKsoE,IAAU,EAAIA,IAK5D,IAgHMC,EAOAC,EAvHFC,EAAS,WACX,IACIC,EAAkB,GAEtB,SAAS9qB,EAAE+qB,EAAKC,GACd,OAAO,EAAM,EAAMA,EAAM,EAAMD,EAGjC,SAASE,EAAEF,EAAKC,GACd,OAAO,EAAMA,EAAM,EAAMD,EAG3B,SAASG,EAAEH,GACT,OAAO,EAAMA,EAGf,SAASI,EAAWC,EAAIL,EAAKC,GAC3B,QAAShrB,EAAE+qB,EAAKC,GAAOI,EAAKH,EAAEF,EAAKC,IAAQI,EAAKF,EAAEH,IAAQK,EAG5D,SAASC,EAASD,EAAIL,EAAKC,GACzB,OAAO,EAAMhrB,EAAE+qB,EAAKC,GAAOI,EAAKA,EAAK,EAAMH,EAAEF,EAAKC,GAAOI,EAAKF,EAAEH,GAsFlE,OAjDA,SAAgBO,EAAKC,EAAKC,EAAKC,GAC7B,GAAM,GAAKH,GAAOA,GAAO,GAAK,GAAKE,GAAOA,GAAO,EAAjD,CAIA,IAAIE,EAAe,IAAIC,aA9DF,IAgErB,GAAIL,IAAQC,GAAOC,IAAQC,EACzB,IAAK,IAAIvqE,EAAI,EAAGA,EAjEG,KAiEqBA,EACtCwqE,EAAaxqE,GAAKiqE,EAAWjqE,EAAI4pE,EAAiBQ,EAAKE,GA2B3D,OAAO,SAAU1yC,GACf,OAAIwyC,IAAQC,GAAOC,IAAQC,GAIjB,IAAN3yC,GAAiB,IAANA,EAHNA,EAOFqyC,EAAWS,EAAS9yC,GAAIyyC,EAAKE,IAhCtC,SAASG,EAASC,GAKhB,IAJA,IAAIC,EAAgB,EAChBC,EAAgB,EACHC,KAEVD,GAAgCL,EAAaK,IAAkBF,IAAME,EAC1ED,GAAiBhB,IAGjBiB,EACF,IACIE,EAAYH,GADJD,EAAKH,EAAaK,KAAmBL,EAAaK,EAAgB,GAAKL,EAAaK,IACzDjB,EACnCoB,EAAeb,EAASY,EAAWX,EAAKE,GAE5C,OAAIU,GAAgB,KA1CxB,SAA8BL,EAAIM,EAASb,EAAKE,GAC9C,IAAK,IAAItqE,EAAI,EAAGA,EAAI,IAAKA,EAAG,CAC1B,IAAIkrE,EAAef,EAASc,EAASb,EAAKE,GAE1C,GAAqB,IAAjBY,EACF,OAAOD,EAITA,IADehB,EAAWgB,EAASb,EAAKE,GAAOK,GACzBO,EAGxB,OAAOD,EA+BIE,CAAqBR,EAAII,EAAWX,EAAKE,GACtB,IAAjBU,EACFD,EAhEb,SAAyBJ,EAAIS,EAAIC,EAAIjB,EAAKE,GACxC,IAAIgB,EACAC,EACAvrE,EAAI,EAER,IAEEsrE,EAAWrB,EADXsB,EAAWH,GAAMC,EAAKD,GAAM,EACIhB,EAAKE,GAAOK,GAE7B,EACbU,EAAKE,EAELH,EAAKG,QAEA14D,KAAKqc,IAAIo8C,GAAY,QAAetrE,EAAI,IAEjD,OAAOurE,EAkDIC,CAAgBb,EAAIC,EAAeA,EAAgBhB,EAAiBQ,EAAKE,KA1F3E,GA8GTmB,GAEEhC,EAAQ,CACViC,OAAQ,WACN,OAAO,SAAUxqE,GACf,OAAOA,KAITwoE,EAAkB,CACpBiC,KAAM,WACJ,OAAO,SAAUzqE,GACf,OAAO,EAAI2R,KAAKs2D,IAAIjoE,EAAI2R,KAAK+4D,GAAK,KAGtCC,KAAM,WACJ,OAAO,SAAU3qE,GACf,OAAO,EAAI2R,KAAKg2D,KAAK,EAAI3nE,EAAIA,KAGjC4qE,KAAM,WACJ,OAAO,SAAU5qE,GACf,OAAOA,EAAIA,GAAK,EAAIA,EAAI,KAG5B6qE,OAAQ,WACN,OAAO,SAAU7qE,GAIf,IAHA,IAAI8qE,EACAruD,EAAI,EAEDzc,IAAM8qE,EAAOn5D,KAAKuc,IAAI,IAAKzR,IAAM,GAAK,KAE7C,OAAO,EAAI9K,KAAKuc,IAAI,EAAG,EAAIzR,GAAK,OAAS9K,KAAKuc,KAAY,EAAP48C,EAAW,GAAK,GAAK9qE,EAAG,KAG/E+qE,QAAS,SAAUC,EAAWj+B,QACV,IAAdi+B,IAAsBA,EAAY,QACvB,IAAXj+B,IAAmBA,EAAS,IAChC,IAAIxkC,EAAI49D,EAAO6E,EAAW,EAAG,IACzBpqE,EAAIulE,EAAOp5B,EAAQ,GAAI,GAC3B,OAAO,SAAU/sC,GACf,OAAa,IAANA,GAAiB,IAANA,EAAUA,GAAKuI,EAAIoJ,KAAKuc,IAAI,EAAG,IAAMluB,EAAI,IAAM2R,KAAKu2D,KAAKloE,EAAI,EAAIY,GAAe,EAAV+Q,KAAK+4D,IAAU/4D,KAAKs5D,KAAK,EAAI1iE,KAAiB,EAAVoJ,KAAK+4D,IAAU9pE,MAI/H,CAAC,OAAQ,QAAS,QAAS,QAAS,QAC1CuE,SAAQ,SAAU9F,EAAMP,GAClC0pE,EAAgBnpE,GAAQ,WACtB,OAAO,SAAUW,GACf,OAAO2R,KAAKuc,IAAIluB,EAAGlB,EAAI,QAI7BU,OAAOkH,KAAK8hE,GAAiBrjE,SAAQ,SAAU9F,GAC7C,IAAI6rE,EAAS1C,EAAgBnpE,GAC7BkpE,EAAM,SAAWlpE,GAAQ6rE,EAEzB3C,EAAM,UAAYlpE,GAAQ,SAAUkJ,EAAGkU,GACrC,OAAO,SAAUzc,GACf,OAAO,EAAIkrE,EAAO3iE,EAAGkU,EAAVyuD,CAAa,EAAIlrE,KAIhCuoE,EAAM,YAAclpE,GAAQ,SAAUkJ,EAAGkU,GACvC,OAAO,SAAUzc,GACf,OAAOA,EAAI,GAAMkrE,EAAO3iE,EAAGkU,EAAVyuD,CAAiB,EAAJlrE,GAAS,EAAI,EAAIkrE,EAAO3iE,EAAGkU,EAAVyuD,EAAkB,EAALlrE,EAAS,GAAK,IAI9EuoE,EAAM,YAAclpE,GAAQ,SAAUkJ,EAAGkU,GACvC,OAAO,SAAUzc,GACf,OAAOA,EAAI,IAAO,EAAIkrE,EAAO3iE,EAAGkU,EAAVyuD,CAAa,EAAQ,EAAJlrE,IAAU,GAAKkrE,EAAO3iE,EAAGkU,EAAVyuD,CAAiB,EAAJlrE,EAAQ,GAAK,GAAK,OAIpFuoE,GAGT,SAAS4C,EAAarF,EAAQn9B,GAC5B,GAAI49B,EAAGM,IAAIf,GACT,OAAOA,EAGT,IAAIzmE,EAAOymE,EAAO1zD,MAAM,KAAK,GACzBg5D,EAAOb,EAAOlrE,GACd4b,EAAOmsD,EAAsBtB,GAEjC,OAAQzmE,GACN,IAAK,SACH,OAAOgoE,EAAOvB,EAAQn9B,GAExB,IAAK,cACH,OAAO29B,EAAemC,EAAQxtD,GAEhC,IAAK,QACH,OAAOqrD,EAAegC,EAAOrtD,GAE/B,QACE,OAAOqrD,EAAe8E,EAAMnwD,IAKlC,SAASowD,EAAahF,GACpB,IAEE,OADY9+D,SAAS4G,iBAAiBk4D,GAEtC,MAAOz9D,GACP,QAKJ,SAAS0iE,EAAYvqE,EAAKiL,GAKxB,IAJA,IAAItJ,EAAM3B,EAAIc,OACV0pE,EAAUhvD,UAAU1a,QAAU,EAAI0a,UAAU,QAAK,EACjDiK,EAAS,GAEJ1nB,EAAI,EAAGA,EAAI4D,EAAK5D,IACvB,GAAIA,KAAKiC,EAAK,CACZ,IAAIgqB,EAAMhqB,EAAIjC,GAEVkN,EAAS/M,KAAKssE,EAASxgD,EAAKjsB,EAAGiC,IACjCylB,EAAO5kB,KAAKmpB,GAKlB,OAAOvE,EAGT,SAASglD,EAAazqE,GACpB,OAAOA,EAAIwE,QAAO,SAAUgD,EAAGkU,GAC7B,OAAOlU,EAAE7C,OAAO6gE,EAAGxlE,IAAI0b,GAAK+uD,EAAa/uD,GAAKA,KAC7C,IAGL,SAASqvB,EAAQvsC,GACf,OAAIgnE,EAAGxlE,IAAIxB,GACFA,GAGLgnE,EAAGF,IAAI9mE,KACTA,EAAI8rE,EAAa9rE,IAAMA,GAGrBA,aAAaksE,UAAYlsE,aAAamsE,eACjC,GAAGvpE,MAAMlD,KAAKM,GAGhB,CAACA,IAGV,SAASosE,EAAc5qE,EAAKgqB,GAC1B,OAAOhqB,EAAIgO,MAAK,SAAUxG,GACxB,OAAOA,IAAMwiB,KAKjB,SAAS6gD,EAAYrsE,GACnB,IAAIkrC,EAAQ,GAEZ,IAAK,IAAI7pC,KAAKrB,EACZkrC,EAAM7pC,GAAKrB,EAAEqB,GAGf,OAAO6pC,EAGT,SAASohC,EAAmBC,EAAIC,GAC9B,IAAIxsE,EAAIqsE,EAAYE,GAEpB,IAAK,IAAIlrE,KAAKkrE,EACZvsE,EAAEqB,GAAKmrE,EAAGprE,eAAeC,GAAKmrE,EAAGnrE,GAAKkrE,EAAGlrE,GAG3C,OAAOrB,EAGT,SAASysE,EAAaF,EAAIC,GACxB,IAAIxsE,EAAIqsE,EAAYE,GAEpB,IAAK,IAAIlrE,KAAKmrE,EACZxsE,EAAEqB,GAAK2lE,EAAGO,IAAIgF,EAAGlrE,IAAMmrE,EAAGnrE,GAAKkrE,EAAGlrE,GAGpC,OAAOrB,EAmET,SAAS0sE,EAAWlhD,GAClB,OAAIw7C,EAAGU,IAAIl8C,IA/DPk8C,EAAM,kCAAkCpkC,KAD3BqpC,EAiEEnhD,IA/DN,QAAUk8C,EAAI,GAAK,MAAQiF,EAkEpC3F,EAAGS,IAAIj8C,GA/Db,SAAmBohD,GACjB,IACInF,EAAMmF,EAAS1kE,QADT,oCACsB,SAAUvI,EAAGU,EAAGw7C,EAAG3+B,GACjD,OAAO7c,EAAIA,EAAIw7C,EAAIA,EAAI3+B,EAAIA,KAEzBwqD,EAAM,4CAA4CpkC,KAAKmkC,GAI3D,MAAO,QAHC3tC,SAAS4tC,EAAI,GAAI,IAGJ,IAFb5tC,SAAS4tC,EAAI,GAAI,IAEM,IADvB5tC,SAAS4tC,EAAI,GAAI,IACgB,MAuDhCmF,CAAUrhD,GAGfw7C,EAAGW,IAAIn8C,GAvDb,SAAmBshD,GACjB,IA8BIzsE,EAAGw7C,EAAG3+B,EA9BNyqD,EAAM,0CAA0CrkC,KAAKwpC,IAAa,uDAAuDxpC,KAAKwpC,GAC9H57C,EAAI4I,SAAS6tC,EAAI,GAAI,IAAM,IAC3BrmE,EAAIw4B,SAAS6tC,EAAI,GAAI,IAAM,IAC3BnoE,EAAIs6B,SAAS6tC,EAAI,GAAI,IAAM,IAC3B3+D,EAAI2+D,EAAI,IAAM,EAElB,SAASoF,EAAQ1rE,EAAG2rE,EAAGvsE,GASrB,OARIA,EAAI,IACNA,GAAK,GAGHA,EAAI,IACNA,GAAK,GAGHA,EAAI,EAAI,EACHY,EAAc,GAAT2rE,EAAI3rE,GAASZ,EAGvBA,EAAI,GACCusE,EAGLvsE,EAAI,EAAI,EACHY,GAAK2rE,EAAI3rE,IAAM,EAAI,EAAIZ,GAAK,EAG9BY,EAKT,GAAS,GAALC,EACFjB,EAAIw7C,EAAI3+B,EAAI1d,MACP,CACL,IAAIwtE,EAAIxtE,EAAI,GAAMA,GAAK,EAAI8B,GAAK9B,EAAI8B,EAAI9B,EAAI8B,EACxCD,EAAI,EAAI7B,EAAIwtE,EAChB3sE,EAAI0sE,EAAQ1rE,EAAG2rE,EAAG97C,EAAI,EAAI,GAC1B2qB,EAAIkxB,EAAQ1rE,EAAG2rE,EAAG97C,GAClBhU,EAAI6vD,EAAQ1rE,EAAG2rE,EAAG97C,EAAI,EAAI,GAG5B,MAAO,QAAc,IAAJ7wB,EAAU,IAAU,IAAJw7C,EAAU,IAAU,IAAJ3+B,EAAU,IAAMlU,EAAI,IAa5DikE,CAAUzhD,QADnB,EAxEF,IAAmBmhD,EACbjF,EA6EN,SAASwF,EAAQ1hD,GACf,IAAI3Y,EAAQ,6GAA6GywB,KAAK9X,GAE9H,GAAI3Y,EACF,OAAOA,EAAM,GAejB,SAASs6D,EAAiB3hD,EAAK4hD,GAC7B,OAAKpG,EAAGM,IAAI97C,GAILA,EAAI4hD,EAAWzlE,OAAQylE,EAAWC,GAAID,EAAW/yB,OAH/C7uB,EAMX,SAASliB,EAAagkE,EAAI/hD,GACxB,OAAO+hD,EAAGhkE,aAAaiiB,GAGzB,SAASgiD,EAAgBD,EAAI9sE,EAAO2xB,GAGlC,GAAIi6C,EAAc,CAACj6C,EAAM,MAAO,MAAO,QAFvB+6C,EAAQ1sE,IAGtB,OAAOA,EAGT,IAAIooE,EAASnC,EAAMC,IAAIlmE,EAAQ2xB,GAE/B,IAAK60C,EAAGO,IAAIqB,GACV,OAAOA,EAGT,IACI4E,EAASxlE,SAAS88D,cAAcwI,EAAGh5D,SACnCm5D,EAAWH,EAAG9c,YAAc8c,EAAG9c,aAAexoD,SAAWslE,EAAG9c,WAAaxoD,SAASkS,KACtFuzD,EAASpI,YAAYmI,GACrBA,EAAOrU,MAAMuU,SAAW,WACxBF,EAAOrU,MAAMG,MALE,IAKiBnnC,EAChC,IAAIw7C,EANW,IAMSH,EAAOI,YAC/BH,EAASI,YAAYL,GACrB,IAAIM,EAAgBH,EAAS5kC,WAAWvoC,GAExC,OADAimE,EAAMC,IAAIlmE,EAAQ2xB,GAAQ27C,EACnBA,EAGT,SAASC,EAAYT,EAAI/hD,EAAM4G,GAC7B,GAAI5G,KAAQ+hD,EAAGnU,MAAO,CACpB,IAAI6U,EAAoBziD,EAAKrjB,QAAQ,kBAAmB,SAASQ,cAC7DlI,EAAQ8sE,EAAGnU,MAAM5tC,IAAS0iD,iBAAiBX,GAAIY,iBAAiBF,IAAsB,IAC1F,OAAO77C,EAAOo7C,EAAgBD,EAAI9sE,EAAO2xB,GAAQ3xB,GAIrD,SAAS2tE,EAAiBb,EAAI/hD,GAC5B,OAAIy7C,EAAGK,IAAIiG,KAAQtG,EAAG/5B,IAAIqgC,MAAStG,EAAGQ,IAAIl+D,EAAagkE,EAAI/hD,KAAUy7C,EAAGE,IAAIoG,IAAOA,EAAG/hD,IAC7E,YAGLy7C,EAAGK,IAAIiG,IAAOlB,EAAc5F,EAAiBj7C,GACxC,YAGLy7C,EAAGK,IAAIiG,IAAgB,cAAT/hD,GAAwBwiD,EAAYT,EAAI/hD,GACjD,MAGO,MAAZ+hD,EAAG/hD,GACE,cADT,EAKF,SAAS6iD,EAAqBd,GAC5B,GAAKtG,EAAGK,IAAIiG,GAAZ,CASA,IALA,IAGI3tE,EAHAmnE,EAAMwG,EAAGnU,MAAMkV,WAAa,GAC5BC,EAAM,oBACNC,EAAa,IAAI/oE,IAGd7F,EAAI2uE,EAAIhrC,KAAKwjC,IAClByH,EAAWtnE,IAAItH,EAAE,GAAIA,EAAE,IAGzB,OAAO4uE,GAGT,SAASC,EAAkBlB,EAAImB,EAAUrB,EAAYj7C,GACnD,IAAIu8C,EAAa7H,EAAe4H,EAAU,SAAW,EAAI,EA7F3D,SAA0BA,GACxB,OAAI5H,EAAe4H,EAAU,cAA6B,gBAAbA,EACpC,KAGL5H,EAAe4H,EAAU,WAAa5H,EAAe4H,EAAU,QAC1D,WADT,EAwF6DE,CAAiBF,GAC1EjuE,EAAQ4tE,EAAqBd,GAAIltE,IAAIquE,IAAaC,EAOtD,OALItB,IACFA,EAAWmB,WAAWK,KAAK3nE,IAAIwnE,EAAUjuE,GACzC4sE,EAAWmB,WAAiB,KAAIE,GAG3Bt8C,EAAOo7C,EAAgBD,EAAI9sE,EAAO2xB,GAAQ3xB,EAGnD,SAASquE,EAAuBlnE,EAAQ8mE,EAAUt8C,EAAMi7C,GACtD,OAAQe,EAAiBxmE,EAAQ8mE,IAC/B,IAAK,YACH,OAAOD,EAAkB7mE,EAAQ8mE,EAAUrB,EAAYj7C,GAEzD,IAAK,MACH,OAAO47C,EAAYpmE,EAAQ8mE,EAAUt8C,GAEvC,IAAK,YACH,OAAO7oB,EAAa3B,EAAQ8mE,GAE9B,QACE,OAAO9mE,EAAO8mE,IAAa,GAIjC,SAASK,EAAiBxjD,EAAIxoB,GAC5B,IAAIisE,EAAW,gBAAgBzrC,KAAKhY,GAEpC,IAAKyjD,EACH,OAAOzjD,EAGT,IAAI2H,EAAIi6C,EAAQ5hD,IAAO,EACnB6L,EAAI4R,WAAWjmC,GACf2uB,EAAIsX,WAAWzd,EAAGpjB,QAAQ6mE,EAAS,GAAI,KAE3C,OAAQA,EAAS,GAAG,IAClB,IAAK,IACH,OAAO53C,EAAI1F,EAAIwB,EAEjB,IAAK,IACH,OAAOkE,EAAI1F,EAAIwB,EAEjB,IAAK,IACH,OAAOkE,EAAI1F,EAAIwB,GAIrB,SAAS+7C,EAAcxjD,EAAK2G,GAC1B,GAAI60C,EAAGY,IAAIp8C,GACT,OAAOkhD,EAAWlhD,GAGpB,GAAI,MAAMzoB,KAAKyoB,GACb,OAAOA,EAGT,IAAIyjD,EAAe/B,EAAQ1hD,GACvB0jD,EAAWD,EAAezjD,EAAIoD,OAAO,EAAGpD,EAAIlpB,OAAS2sE,EAAa3sE,QAAUkpB,EAEhF,OAAI2G,EACK+8C,EAAW/8C,EAGb+8C,EAKT,SAASC,EAAYp5C,EAAIC,GACvB,OAAO5jB,KAAKg2D,KAAKh2D,KAAKuc,IAAIqH,EAAGmB,EAAIpB,EAAGoB,EAAG,GAAK/kB,KAAKuc,IAAIqH,EAAGvE,EAAIsE,EAAGtE,EAAG,IAqBpE,SAAS29C,EAAkB9B,GAKzB,IAJA,IAEI+B,EAFAC,EAAShC,EAAGgC,OACZC,EAAc,EAGThwE,EAAI,EAAGA,EAAI+vE,EAAOE,cAAejwE,IAAK,CAC7C,IAAIkwE,EAAaH,EAAOI,QAAQnwE,GAE5BA,EAAI,IACNgwE,GAAeJ,EAAYE,EAAaI,IAG1CJ,EAAcI,EAGhB,OAAOF,EAST,SAASI,EAAerC,GACtB,GAAIA,EAAGqC,eACL,OAAOrC,EAAGqC,iBAGZ,OAAQrC,EAAGh5D,QAAQ5L,eACjB,IAAK,SACH,OAjDN,SAAyB4kE,GACvB,OAAiB,EAAVl7D,KAAK+4D,GAAS7hE,EAAagkE,EAAI,KAgD3BsC,CAAgBtC,GAEzB,IAAK,OACH,OAhDN,SAAuBA,GACrB,OAAmC,EAA5BhkE,EAAagkE,EAAI,SAA4C,EAA7BhkE,EAAagkE,EAAI,UA+C7CuC,CAAcvC,GAEvB,IAAK,OACH,OA/CN,SAAuBA,GACrB,OAAO6B,EAAY,CACjBh4C,EAAG7tB,EAAagkE,EAAI,MACpB77C,EAAGnoB,EAAagkE,EAAI,OACnB,CACDn2C,EAAG7tB,EAAagkE,EAAI,MACpB77C,EAAGnoB,EAAagkE,EAAI,QAyCXwC,CAAcxC,GAEvB,IAAK,WACH,OAAO8B,EAAkB9B,GAE3B,IAAK,UACH,OAzBN,SAA0BA,GACxB,IAAIgC,EAAShC,EAAGgC,OAChB,OAAOF,EAAkB9B,GAAM6B,EAAYG,EAAOI,QAAQJ,EAAOE,cAAgB,GAAIF,EAAOI,QAAQ,IAuBzFK,CAAiBzC,IAyB9B,SAAS0C,EAAaC,EAAQC,GAC5B,IAAIhJ,EAAMgJ,GAAW,GACjBC,EAAcjJ,EAAIoG,IAhBxB,SAAwBA,GAGtB,IAFA,IAAIG,EAAWH,EAAG9c,WAEXwW,EAAGE,IAAIuG,IACPzG,EAAGE,IAAIuG,EAASjd,aAIrBid,EAAWA,EAASjd,WAGtB,OAAOid,EAKqB2C,CAAeH,GACvCI,EAAOF,EAAYG,wBACnBC,EAAcjnE,EAAa6mE,EAAa,WACxC7W,EAAQ+W,EAAK/W,MACb2L,EAASoL,EAAKpL,OACduL,EAAUtJ,EAAIsJ,UAAYD,EAAcA,EAAY19D,MAAM,KAAO,CAAC,EAAG,EAAGymD,EAAO2L,IACnF,MAAO,CACLqI,GAAI6C,EACJK,QAASA,EACTr5C,EAAGq5C,EAAQ,GAAK,EAChB/+C,EAAG++C,EAAQ,GAAK,EAChBn/C,EAAGioC,EACHpoC,EAAG+zC,EACHwL,GAAID,EAAQ,GACZE,GAAIF,EAAQ,IAiBhB,SAASG,EAAgBC,EAAMpI,EAAUqI,GACvC,SAASC,EAAMrmC,QACE,IAAXA,IAAmBA,EAAS,GAChC,IAAIjrC,EAAIgpE,EAAW/9B,GAAU,EAAI+9B,EAAW/9B,EAAS,EACrD,OAAOmmC,EAAKtD,GAAGyD,iBAAiBvxE,GAGlC,IAAI0nE,EAAM8I,EAAaY,EAAKtD,GAAIsD,EAAK1J,KACjC7lE,EAAIyvE,IACJE,EAAKF,GAAO,GACZ/6C,EAAK+6C,EAAM,GACXG,EAASJ,EAAwB,EAAI3J,EAAI71C,EAAI61C,EAAIuJ,GACjDS,EAASL,EAAwB,EAAI3J,EAAIh2C,EAAIg2C,EAAIwJ,GAErD,OAAQE,EAAK1vE,UACX,IAAK,IACH,OAAQG,EAAE81B,EAAI+vC,EAAI/vC,GAAK85C,EAEzB,IAAK,IACH,OAAQ5vE,EAAEowB,EAAIy1C,EAAIz1C,GAAKy/C,EAEzB,IAAK,QACH,OAA8C,IAAvC9+D,KAAK++D,MAAMp7C,EAAGtE,EAAIu/C,EAAGv/C,EAAGsE,EAAGoB,EAAI65C,EAAG75C,GAAW/kB,KAAK+4D,IAK/D,SAASiG,EAAe5lD,EAAK2G,GAG3B,IAAIk/C,EAAM,6CAEN7wE,EAAQwuE,EAAchI,EAAGC,IAAIz7C,GAAOA,EAAI+jD,YAAc/jD,EAAK2G,GAAQ,GACvE,MAAO,CACLm/C,SAAU9wE,EACV+wE,QAAS/wE,EAAMmO,MAAM0iE,GAAO7wE,EAAMmO,MAAM0iE,GAAKnrE,IAAI0f,QAAU,CAAC,GAC5D4rD,QAASxK,EAAGF,IAAIt7C,IAAQ2G,EAAO3xB,EAAMqS,MAAMw+D,GAAO,IAKtD,SAASI,EAAa1yD,GAEpB,OAAOgtD,EADYhtD,EAAUktD,EAAajF,EAAGxlE,IAAIud,GAAWA,EAAQ7Y,IAAIqmC,GAAWA,EAAQxtB,IAAY,IACtE,SAAUsvB,EAAMzO,EAAKn4B,GACpD,OAAOA,EAAK+uB,QAAQ6X,KAAUzO,KAIlC,SAAS8xC,EAAe3yD,GACtB,IAAI4yD,EAASF,EAAa1yD,GAC1B,OAAO4yD,EAAOzrE,KAAI,SAAUzF,EAAGlB,GAC7B,MAAO,CACLoI,OAAQlH,EACR4sE,GAAI9tE,EACJ86C,MAAOs3B,EAAOrvE,OACdisE,WAAY,CACVK,KAAMR,EAAqB3tE,QAOnC,SAASmxE,EAAwBrmD,EAAMsmD,GACrC,IAAIC,EAAWzF,EAAYwF,GAM3B,GAJI,UAAU9uE,KAAK+uE,EAASvL,UAC1BuL,EAAS1oC,SAAW0+B,EAAOgK,EAASvL,SAGlCS,EAAGxlE,IAAI+pB,GAAO,CAChB,IAAI/rB,EAAI+rB,EAAKjpB,OACQ,IAAN9C,IAAYwnE,EAAG7+C,IAAIoD,EAAK,IASrCA,EAAO,CACL/qB,MAAO+qB,GANJy7C,EAAGM,IAAIuK,EAAczoC,YACxB0oC,EAAS1oC,SAAWyoC,EAAczoC,SAAW5pC,GAUnD,IAAIuyE,EAAY/K,EAAGxlE,IAAI+pB,GAAQA,EAAO,CAACA,GACvC,OAAOwmD,EAAU7rE,KAAI,SAAU4c,EAAGvjB,GAChC,IAAI4oB,EAAM6+C,EAAG7+C,IAAIrF,KAAOkkD,EAAGC,IAAInkD,GAAKA,EAAI,CACtCtiB,MAAOsiB,GAYT,OATIkkD,EAAGO,IAAIp/C,EAAIk+C,SACbl+C,EAAIk+C,MAAS9mE,EAA0B,EAAtBsyE,EAAcxL,OAI7BW,EAAGO,IAAIp/C,EAAIm+C,YACbn+C,EAAIm+C,SAAW/mE,IAAMwyE,EAAUzvE,OAAS,EAAIuvE,EAAcvL,SAAW,GAGhEn+C,KACNjiB,KAAI,SAAU2c,GACf,OAAO4pD,EAAa5pD,EAAGivD,MA0C3B,SAASE,EAAcH,EAAe7mE,GACpC,IAAI4Q,EAAa,GACbq2D,EAAYjnE,EAAOinE,UAMvB,IAAK,IAAI5wE,KAJL4wE,IACFjnE,EAASyhE,EA3Cb,SAA0BwF,GAiCxB,IAhCA,IAAIC,EAAgBnG,EAAYE,EAAagG,EAAU/rE,KAAI,SAAUpF,GACnE,OAAOb,OAAOkH,KAAKrG,QAChB,SAAUO,GACb,OAAO2lE,EAAGlmE,IAAIO,MACb2E,QAAO,SAAUgD,EAAGkU,GAKrB,OAJIlU,EAAEwtB,QAAQtZ,GAAK,GACjBlU,EAAE3G,KAAK6a,GAGFlU,IACN,IACC4S,EAAa,GAEbqqD,EAAO,SAAU1mE,GACnB,IAAIkvE,EAAWyD,EAAc3yE,GAC7Bqc,EAAW6yD,GAAYwD,EAAU/rE,KAAI,SAAUpF,GAC7C,IAAIqxE,EAAS,GAEb,IAAK,IAAI9wE,KAAKP,EACRkmE,EAAGlmE,IAAIO,GACLA,GAAKotE,IACP0D,EAAO3xE,MAAQM,EAAIO,IAGrB8wE,EAAO9wE,GAAKP,EAAIO,GAIpB,OAAO8wE,MAIF5yE,EAAI,EAAGA,EAAI2yE,EAAc5vE,OAAQ/C,IAAK0mE,EAAK1mE,GAEpD,OAAOqc,EAQiBw2D,CAAiBH,GAAYjnE,IAGvCA,EACRg8D,EAAGlmE,IAAIO,IACTua,EAAWvZ,KAAK,CACdvC,KAAMuB,EACNgxE,OAAQT,EAAwB5mE,EAAO3J,GAAIwwE,KAKjD,OAAOj2D,EA4BT,SAAS02D,EAAgB/mD,EAAM6hD,GAC7B,IAAImF,EACJ,OAAOhnD,EAAK8mD,OAAOnsE,KAAI,SAAUzF,GAC/B,IAAI+xE,EA3BR,SAA8BA,EAAOpF,GACnC,IAAI3sE,EAAI,GAER,IAAK,IAAIY,KAAKmxE,EAAO,CACnB,IAAIhyE,EAAQ2sE,EAAiBqF,EAAMnxE,GAAI+rE,GAEnCpG,EAAGxlE,IAAIhB,IAKY,KAJrBA,EAAQA,EAAM0F,KAAI,SAAU4c,GAC1B,OAAOqqD,EAAiBrqD,EAAGsqD,OAGnB9qE,SACR9B,EAAQA,EAAM,IAIlBC,EAAEY,GAAKb,EAKT,OAFAC,EAAE2oC,SAAWL,WAAWtoC,EAAE2oC,UAC1B3oC,EAAE4lE,MAAQt9B,WAAWtoC,EAAE4lE,OAChB5lE,EAMOgyE,CAAqBhyE,EAAG2sE,GAChCsF,EAAaF,EAAMhyE,MACnB8qB,EAAK07C,EAAGxlE,IAAIkxE,GAAcA,EAAW,GAAKA,EAC1CC,EAASzF,EAAQ5hD,GACjBsnD,EAAgB/D,EAAuBzB,EAAWzlE,OAAQ4jB,EAAKzrB,KAAM6yE,EAAQvF,GAC7EyF,EAAgBN,EAAgBA,EAAcjnD,GAAGgmD,SAAWsB,EAC5D9vE,EAAOkkE,EAAGxlE,IAAIkxE,GAAcA,EAAW,GAAKG,EAC5CC,EAAW5F,EAAQpqE,IAASoqE,EAAQ0F,GACpCzgD,EAAOwgD,GAAUG,EAoBrB,OAlBI9L,EAAGO,IAAIj8C,KACTA,EAAKunD,GAGPL,EAAM1vE,KAAOsuE,EAAetuE,EAAMqvB,GAClCqgD,EAAMlnD,GAAK8lD,EAAetC,EAAiBxjD,EAAIxoB,GAAOqvB,GACtDqgD,EAAM9sE,MAAQ6sE,EAAgBA,EAAchwD,IAAM,EAClDiwD,EAAMjwD,IAAMiwD,EAAM9sE,MAAQ8sE,EAAMnM,MAAQmM,EAAMppC,SAAWopC,EAAMlM,SAC/DkM,EAAMjM,OAASqF,EAAa4G,EAAMjM,OAAQiM,EAAMppC,UAChDopC,EAAMO,OAAS/L,EAAGC,IAAIyL,GACtBF,EAAM3B,sBAAwB2B,EAAMO,QAAU/L,EAAGE,IAAIkG,EAAWzlE,QAChE6qE,EAAMQ,QAAUhM,EAAGY,IAAI4K,EAAM1vE,KAAKwuE,UAE9BkB,EAAMQ,UACRR,EAAMtoC,MAAQ,GAGhBqoC,EAAgBC,EACTA,KAKX,IAAIS,EAAmB,CACrBC,IAAK,SAAUzyE,EAAGY,EAAGyhB,GACnB,OAAOriB,EAAE04D,MAAM93D,GAAKyhB,GAEtB5R,UAAW,SAAUzQ,EAAGY,EAAGyhB,GACzB,OAAOriB,EAAEwd,aAAa5c,EAAGyhB,IAE3B7hB,OAAQ,SAAUR,EAAGY,EAAGyhB,GACtB,OAAOriB,EAAEY,GAAKyhB,GAEhBurD,UAAW,SAAU5tE,EAAGY,EAAGyhB,EAAGyrD,EAAY4E,GAGxC,GAFA5E,EAAWK,KAAK3nE,IAAI5F,EAAGyhB,GAEnBzhB,IAAMktE,EAAW6E,MAAQD,EAAQ,CACnC,IAAIrM,EAAM,GACVyH,EAAWK,KAAKhpE,SAAQ,SAAUpF,EAAO+qB,GACvCu7C,GAAOv7C,EAAO,IAAM/qB,EAAQ,QAE9BC,EAAE04D,MAAMkV,UAAYvH,KAK1B,SAASuM,EAAgBt0D,EAASnD,GACd81D,EAAe3yD,GACrBnZ,SAAQ,SAAUwnE,GAC5B,IAAK,IAAIlsE,KAAY0a,EAAY,CAC/B,IAAIpb,EAAQ2sE,EAAiBvxD,EAAW1a,GAAWksE,GAC/CzlE,EAASylE,EAAWzlE,OACpB2rE,EAAYpG,EAAQ1sE,GACpBoyE,EAAgB/D,EAAuBlnE,EAAQzG,EAAUoyE,EAAWlG,GAEpE9hD,EAAKwjD,EAAiBE,EAAcxuE,EAD7B8yE,GAAapG,EAAQ0F,IACsBA,GAClDW,EAAWpF,EAAiBxmE,EAAQzG,GACxC+xE,EAAiBM,GAAU5rE,EAAQzG,EAAUoqB,EAAI8hD,EAAWmB,YAAY,OAwB9E,SAASiF,EAAcC,EAAa73D,GAClC,OAAOmwD,EAAYE,EAAawH,EAAYvtE,KAAI,SAAUknE,GACxD,OAAOxxD,EAAW1V,KAAI,SAAUqlB,GAC9B,OArBN,SAAyB6hD,EAAY7hD,GACnC,IAAIgoD,EAAWpF,EAAiBf,EAAWzlE,OAAQ4jB,EAAKzrB,MAExD,GAAIyzE,EAAU,CACZ,IAAIlB,EAASC,EAAgB/mD,EAAM6hD,GAC/BsG,EAAYrB,EAAOA,EAAO/vE,OAAS,GACvC,MAAO,CACL4K,KAAMqmE,EACNryE,SAAUqqB,EAAKzrB,KACfstE,WAAYA,EACZiF,OAAQA,EACRjpC,SAAUsqC,EAAUnxD,IACpB8jD,MAAOgM,EAAO,GAAGhM,MACjBC,SAAUoN,EAAUpN,WAQbqN,CAAgBvG,EAAY7hD,WAElC,SAAUviB,GACb,OAAQg+D,EAAGO,IAAIv+D,MAKnB,SAAS4qE,EAAmBC,EAAYhC,GACtC,IAAIiC,EAAaD,EAAWvxE,OAExByxE,EAAc,SAAUC,GAC1B,OAAOA,EAAK7N,eAAiB6N,EAAK7N,eAAiB,GAGjD8N,EAAU,GAUd,OATAA,EAAQ7qC,SAAW0qC,EAAa1hE,KAAKC,IAAIyV,MAAM1V,KAAMyhE,EAAW3tE,KAAI,SAAU8tE,GAC5E,OAAOD,EAAYC,GAAQA,EAAK5qC,aAC5ByoC,EAAczoC,SACpB6qC,EAAQ5N,MAAQyN,EAAa1hE,KAAK4mB,IAAIlR,MAAM1V,KAAMyhE,EAAW3tE,KAAI,SAAU8tE,GACzE,OAAOD,EAAYC,GAAQA,EAAK3N,UAC5BwL,EAAcxL,MACpB4N,EAAQ3N,SAAWwN,EAAaG,EAAQ7qC,SAAWh3B,KAAKC,IAAIyV,MAAM1V,KAAMyhE,EAAW3tE,KAAI,SAAU8tE,GAC/F,OAAOD,EAAYC,GAAQA,EAAK5qC,SAAW4qC,EAAK1N,aAC5CuL,EAAcvL,SACb2N,EAGT,IAAIC,GAAa,EAuBjB,IAAIC,GAAkB,GAElBC,GAAS,WACX,IAAIC,EAQJ,SAASC,EAAK7zE,GAOZ,IAHA,IAAI8zE,EAAwBJ,GAAgB7xE,OACxC/C,EAAI,EAEDA,EAAIg1E,GAAuB,CAChC,IAAIC,EAAiBL,GAAgB50E,GAEhCi1E,EAAeC,QAIlBN,GAAgBO,OAAOn1E,EAAG,GAC1Bg1E,MAJAC,EAAeG,KAAKl0E,GACpBlB,KAOJ80E,EAAM90E,EAAI,EAAIq1E,sBAAsBN,QAAQ1rE,EAyB9C,MAJwB,qBAAbZ,UACTA,SAASnE,iBAAiB,oBAnB5B,WACOgxE,GAAMC,4BAIPC,KAEFV,EAAMW,qBAAqBX,IAI3BF,GAAgBvuE,SAAQ,SAAUqvE,GAChC,OAAOA,EAASC,2BAElBd,UA1CJ,WACOC,GAASU,MAAuBF,GAAMC,6BAA8BX,GAAgB7xE,OAAS,KAChG+xE,EAAMO,sBAAsBN,KALrB,GAwDb,SAASS,KACP,QAAS/sE,UAAYA,SAASmtE,OAIhC,SAASN,GAAM7pE,QACE,IAAXA,IAAmBA,EAAS,IAChC,IAGIoqE,EAHAxc,EAAY,EACZyc,EAAW,EACXnnD,EAAM,EAENonD,EAAiB,EACjBnyD,EAAU,KAEd,SAASoyD,EAAYN,GACnB,IAAIO,EAAUztE,OAAOmb,SAAW,IAAIA,SAAQ,SAAUuyD,GACpD,OAAOtyD,EAAUsyD,KAGnB,OADAR,EAASS,SAAWF,EACbA,EAGT,IAAIP,EArGN,SAA2BjqE,GACzB,IAAI2qE,EAAmBrJ,EAAmB9G,EAAyBx6D,GAC/D6mE,EAAgBvF,EAAmBlG,EAAsBp7D,GACzD4Q,EAAao2D,EAAcH,EAAe7mE,GAC1CyoE,EAAc/B,EAAe1mE,EAAO+T,SACpC80D,EAAaL,EAAcC,EAAa73D,GACxCq4D,EAAUL,EAAmBC,EAAYhC,GACzCxE,EAAK6G,GAET,OADAA,KACOzH,EAAakJ,EAAkB,CACpCtI,GAAIA,EACJ+H,SAAU,GACV3B,YAAaA,EACbI,WAAYA,EACZzqC,SAAU6qC,EAAQ7qC,SAClBi9B,MAAO4N,EAAQ5N,MACfC,SAAU2N,EAAQ3N,WAqFLsP,CAAkB5qE,GACnBuqE,EAAYN,GAE1B,SAASY,IACP,IAAItoC,EAAY0nC,EAAS1nC,UAEP,cAAdA,IACF0nC,EAAS1nC,UAA0B,WAAdA,EAAyB,SAAW,WAG3D0nC,EAAS1qB,UAAY0qB,EAAS1qB,SAC9B6qB,EAASxvE,SAAQ,SAAUkwE,GACzB,OAAOA,EAAMvrB,SAAW0qB,EAAS1qB,YAIrC,SAASwrB,EAAWrnC,GAClB,OAAOumC,EAAS1qB,SAAW0qB,EAAS7rC,SAAWsF,EAAOA,EAGxD,SAASsnC,IACPpd,EAAY,EACZyc,EAAWU,EAAWd,EAASgB,cAAgB,EAAIpB,GAAMqB,OAG3D,SAASC,EAAUznC,EAAMonC,GACnBA,GACFA,EAAMM,KAAK1nC,EAAOonC,EAAM3P,gBAgB5B,SAASkQ,EAAsBC,GAK7B,IAJA,IAAI/2E,EAAI,EACJs0E,EAAaoB,EAASpB,WACtB0C,EAAmB1C,EAAWvxE,OAE3B/C,EAAIg3E,GAAkB,CAC3B,IAAIvC,EAAOH,EAAWt0E,GAClB6tE,EAAa4G,EAAK5G,WAClBiF,EAAS2B,EAAK3B,OACdmE,EAAcnE,EAAO/vE,OAAS,EAC9BkwE,EAAQH,EAAOmE,GAEfA,IACFhE,EAAQzG,EAAYsG,GAAQ,SAAU5xE,GACpC,OAAO61E,EAAU71E,EAAE8hB,OAClB,IAAMiwD,GAWX,IARA,IAAI1J,EAAUlC,EAAO0P,EAAU9D,EAAM9sE,MAAQ8sE,EAAMnM,MAAO,EAAGmM,EAAMppC,UAAYopC,EAAMppC,SACjFqtC,EAAQ/rD,MAAMo+C,GAAW,EAAI0J,EAAMjM,OAAOuC,GAC1C0I,EAAUgB,EAAMlnD,GAAGkmD,QACnBtnC,EAAQsoC,EAAMtoC,MACdqnC,EAAU,GACVmF,EAAkBlE,EAAMlnD,GAAGimD,QAAQjvE,OACnCkmE,OAAW,EAENxnE,EAAI,EAAGA,EAAI01E,EAAiB11E,IAAK,CACxC,IAAIR,OAAQ,EACRm2E,EAAWnE,EAAMlnD,GAAGimD,QAAQvwE,GAC5B41E,EAAapE,EAAM1vE,KAAKyuE,QAAQvwE,IAAM,EAKxCR,EAHGgyE,EAAMO,OAGDpC,EAAgB6B,EAAMhyE,MAAOi2E,EAAQE,EAAUnE,EAAM3B,uBAFrD+F,EAAaH,GAASE,EAAWC,GAKvC1sC,IACIsoC,EAAMQ,SAAWhyE,EAAI,IACzBR,EAAQ4R,KAAK83B,MAAM1pC,EAAQ0pC,GAASA,IAIxCqnC,EAAQlvE,KAAK7B,GAIf,IAAIq2E,EAAgBrF,EAAQlvE,OAE5B,GAAKu0E,EAEE,CACLrO,EAAWgJ,EAAQ,GAEnB,IAAK,IAAIlwE,EAAI,EAAGA,EAAIu1E,EAAev1E,IAAK,CAC9BkwE,EAAQlwE,GAAhB,IACI4b,EAAIs0D,EAAQlwE,EAAI,GAChBw1E,EAAMvF,EAAQjwE,GAEbopB,MAAMosD,KAIPtO,GAHGtrD,EAGS45D,EAAM55D,EAFN45D,EAAM,WAXxBtO,EAAW+I,EAAQ,GAmBrB0B,EAAiBe,EAAK9mE,MAAMkgE,EAAWzlE,OAAQqsE,EAAK9yE,SAAUsnE,EAAU4E,EAAWmB,YACnFyF,EAAK+C,aAAevO,EACpBjpE,KAIJ,SAASy3E,EAAYC,GACfhC,EAASgC,KAAQhC,EAASiC,aAC5BjC,EAASgC,GAAIhC,GAUjB,SAASkC,EAAoBC,GAC3B,IAAIC,EAAcpC,EAAS7rC,SACvBkuC,EAAWrC,EAAS5O,MACpBkR,EAAcF,EAAcpC,EAAS3O,SACrCgQ,EAAUP,EAAWqB,GACzBnC,EAASzM,SAAW5B,EAAO0P,EAAUe,EAAc,IAAK,EAAG,KAC3DpC,EAASuC,gBAAkBlB,EAAUrB,EAASgB,YAE1Cb,GA3GN,SAA8B1mC,GAC5B,GAAKumC,EAASuC,gBAKZ,IAAK,IAAIC,EAAMnC,EAAgBmC,KAC7BtB,EAAUznC,EAAM0mC,EAASqC,SAL3B,IAAK,IAAIl4E,EAAI,EAAGA,EAAI+1E,EAAgB/1E,IAClC42E,EAAUznC,EAAM0mC,EAAS71E,IAyG3Bm4E,CAAqBpB,IAGlBrB,EAAS0C,OAAS1C,EAASgB,YAAc,IAC5ChB,EAAS0C,OAAQ,EACjBX,EAAY,WAGT/B,EAAS2C,WAAa3C,EAASgB,YAAc,IAChDhB,EAAS2C,WAAY,EACrBZ,EAAY,cAGVV,GAAWgB,GAAqC,IAAzBrC,EAASgB,aAClCI,EAAsB,IAGpBC,GAAWiB,GAAetC,EAASgB,cAAgBoB,IAAgBA,IACrEhB,EAAsBgB,GAGpBf,EAAUgB,GAAYhB,EAAUiB,GAC7BtC,EAAS4C,cACZ5C,EAAS4C,aAAc,EACvB5C,EAAS6C,iBAAkB,EAC3Bd,EAAY,gBAGdA,EAAY,UACZX,EAAsBC,IAElBrB,EAAS4C,cACX5C,EAAS6C,iBAAkB,EAC3B7C,EAAS4C,aAAc,EACvBb,EAAY,mBAIhB/B,EAASgB,YAAcrP,EAAO0P,EAAS,EAAGe,GAEtCpC,EAAS0C,OACXX,EAAY,UAGVI,GAAcC,IAChBhC,EAAW,EA3DTJ,EAAS8C,YAAoC,IAAvB9C,EAAS8C,WACjC9C,EAAS8C,YA6DJ9C,EAAS8C,WAcZnf,EAAY1qC,EACZ8oD,EAAY,gBACZ/B,EAAS2C,WAAY,EAEM,cAAvB3C,EAAS1nC,WACXsoC,MAlBFZ,EAASR,QAAS,EAEbQ,EAAS+C,YACZ/C,EAAS+C,WAAY,EACrBhB,EAAY,gBACZA,EAAY,aAEP/B,EAASiC,aAAe,YAAanvE,SACxCob,IACUoyD,EAAYN,OA2GhC,OA5FAA,EAASgD,MAAQ,WACf,IAAI1qC,EAAY0nC,EAAS1nC,UACzB0nC,EAASiC,aAAc,EACvBjC,EAASgB,YAAc,EACvBhB,EAASzM,SAAW,EACpByM,EAASR,QAAS,EAClBQ,EAAS0C,OAAQ,EACjB1C,EAAS2C,WAAY,EACrB3C,EAAS4C,aAAc,EACvB5C,EAAS+C,WAAY,EACrB/C,EAAS6C,iBAAkB,EAC3B7C,EAASuC,iBAAkB,EAC3BvC,EAAS1qB,SAAyB,YAAdhd,EACpB0nC,EAAS8C,UAAY9C,EAAShP,KAC9BmP,EAAWH,EAASG,SAGpB,IAAK,IAAI71E,EAFT+1E,EAAiBF,EAAS9yE,OAEG/C,KAC3B01E,EAASG,SAAS71E,GAAG04E,SAGnBhD,EAAS1qB,WAA8B,IAAlB0qB,EAAShP,MAA+B,cAAd14B,GAA+C,IAAlB0nC,EAAShP,OACvFgP,EAAS8C,YAGX1B,EAAsBpB,EAAS1qB,SAAW0qB,EAAS7rC,SAAW,IAIhE6rC,EAASC,sBAAwBc,EAEjCf,EAAShuE,IAAM,SAAU8X,EAASnD,GAEhC,OADAy3D,EAAgBt0D,EAASnD,GAClBq5D,GAGTA,EAASN,KAAO,SAAUl0E,GACxBytB,EAAMztB,EAEDm4D,IACHA,EAAY1qC,GAGdipD,GAAqBjpD,GAAOmnD,EAAWzc,IAAcic,GAAMqB,QAG7DjB,EAASmB,KAAO,SAAU1nC,GACxByoC,EAAoBpB,EAAWrnC,KAGjCumC,EAASzoE,MAAQ,WACfyoE,EAASR,QAAS,EAClBuB,KAGFf,EAASiD,KAAO,WACTjD,EAASR,SAIVQ,EAAS+C,WACX/C,EAASgD,QAGXhD,EAASR,QAAS,EAClBN,GAAgB9xE,KAAK4yE,GACrBe,IACA5B,OAGFa,EAAS58D,QAAU,WACjBw9D,IACAZ,EAAS+C,WAAY/C,EAAS1qB,SAC9ByrB,KAGFf,EAASkD,QAAU,WACjBlD,EAASgD,QACThD,EAASiD,QAGXjD,EAASmD,OAAS,SAAUr5D,GAE1Bs5D,GADmB5G,EAAa1yD,GACQk2D,IAG1CA,EAASgD,QAELhD,EAAS/O,UACX+O,EAASiD,OAGJjD,EAIT,SAASqD,GAA4BC,EAAc1E,GACjD,IAAK,IAAI7qE,EAAI6qE,EAAWvxE,OAAQ0G,KAC1BojE,EAAcmM,EAAc1E,EAAW7qE,GAAGokE,WAAWzlE,SACvDksE,EAAWa,OAAO1rE,EAAG,GAK3B,SAASqvE,GAA0BE,EAActD,GAC/C,IAAIpB,EAAaoB,EAASpB,WACtBuB,EAAWH,EAASG,SACxBkD,GAA4BC,EAAc1E,GAE1C,IAAK,IAAIj0E,EAAIw1E,EAAS9yE,OAAQ1C,KAAM,CAClC,IAAIk2E,EAAQV,EAASx1E,GACjB44E,EAAkB1C,EAAMjC,WAC5ByE,GAA4BC,EAAcC,GAErCA,EAAgBl2E,QAAWwzE,EAAMV,SAAS9yE,QAC7C8yE,EAASV,OAAO90E,EAAG,GAIlBi0E,EAAWvxE,QAAW8yE,EAAS9yE,QAClC2yE,EAASzoE,QA2IbqoE,GAAMp6B,QAAU,QAChBo6B,GAAMqB,MAAQ,EAEdrB,GAAMC,2BAA4B,EAClCD,GAAM4D,QAAUtE,GAChBU,GAAMuD,OA5IN,SAA0Cr5D,GAGxC,IAFA,IAAIw5D,EAAe9G,EAAa1yD,GAEvBxf,EAAI40E,GAAgB7xE,OAAQ/C,KAAM,CAEzC84E,GAA0BE,EADXpE,GAAgB50E,MAyInCs1E,GAAMz0E,IAAMyuE,EACZgG,GAAM5tE,IAAMosE,EACZwB,GAAM6D,UAAYnL,EAClBsH,GAAMjE,KAh5BN,SAAiBA,EAAM+H,GACrB,IAAI1I,EAASjJ,EAAGF,IAAI8J,GAAQ9E,EAAa8E,GAAM,GAAKA,EAChDvvE,EAAIs3E,GAAW,IACnB,OAAO,SAAUz3E,GACf,MAAO,CACLA,SAAUA,EACVosE,GAAI2C,EACJ/I,IAAK8I,EAAaC,GAClBV,YAAaI,EAAeM,IAAW5uE,EAAI,QAy4BjDwzE,GAAM+D,cA17BN,SAAuBtL,GACrB,IAAIuL,EAAalJ,EAAerC,GAEhC,OADAA,EAAGrvD,aAAa,mBAAoB46D,GAC7BA,GAw7BThE,GAAMiE,QAxIN,SAAiBttD,EAAKxgB,QACL,IAAXA,IAAmBA,EAAS,IAChC,IAAIuiC,EAAYviC,EAAOuiC,WAAa,SAChCg5B,EAASv7D,EAAOu7D,OAASqF,EAAa5gE,EAAOu7D,QAAU,KACvDwS,EAAO/tE,EAAO+tE,KACdC,EAAOhuE,EAAOguE,KACdC,EAAYjuE,EAAOlI,MAAQ,EAC3Bo2E,EAA0B,UAAdD,EACZE,EAA2B,WAAdF,EACbG,EAAyB,SAAdH,EACXI,EAAUrS,EAAGxlE,IAAIgqB,GACjB8tD,EAAOD,EAAUtwC,WAAWvd,EAAI,IAAMud,WAAWvd,GACjD+tD,EAAOF,EAAUtwC,WAAWvd,EAAI,IAAM,EACtC2G,EAAO+6C,EAAQmM,EAAU7tD,EAAI,GAAKA,IAAQ,EAC1C9lB,EAAQsF,EAAOtF,OAAS,GAAK2zE,EAAUC,EAAO,GAC9CvzE,EAAS,GACTyzE,EAAW,EACf,OAAO,SAAUlM,EAAI/tE,EAAGkB,GAatB,GAZIy4E,IACFD,EAAY,GAGVE,IACFF,GAAax4E,EAAI,GAAK,GAGpB24E,IACFH,EAAYx4E,EAAI,IAGbsF,EAAOzD,OAAQ,CAClB,IAAK,IAAI6C,EAAQ,EAAGA,EAAQ1E,EAAG0E,IAAS,CACtC,GAAK4zE,EAEE,CACL,IAAIU,EAASN,GAAoCJ,EAAK,GAAK,GAAK,EAAtCE,EAAYF,EAAK,GACvCW,EAASP,GAAgDJ,EAAK,GAAK,GAAK,EAAlD3mE,KAAKkhB,MAAM2lD,EAAYF,EAAK,IAGlDY,EAAYF,EAFNt0E,EAAQ4zE,EAAK,GAGnBa,EAAYF,EAFNtnE,KAAKkhB,MAAMnuB,EAAQ4zE,EAAK,IAG9Bv4E,EAAQ4R,KAAKg2D,KAAKuR,EAAYA,EAAYC,EAAYA,GAE7C,MAATZ,IACFx4E,GAASm5E,GAGE,MAATX,IACFx4E,GAASo5E,GAGX7zE,EAAO1D,KAAK7B,QAlBZuF,EAAO1D,KAAK+P,KAAKqc,IAAIwqD,EAAY9zE,IAqBnCq0E,EAAWpnE,KAAKC,IAAIyV,MAAM1V,KAAMrM,GAG9BwgE,IACFxgE,EAASA,EAAOG,KAAI,SAAUslB,GAC5B,OAAO+6C,EAAO/6C,EAAMguD,GAAYA,MAIlB,YAAdjsC,IACFxnC,EAASA,EAAOG,KAAI,SAAUslB,GAC5B,OAAOwtD,EAAOxtD,EAAM,GAAW,EAAPA,GAAYA,EAAMpZ,KAAKqc,IAAI+qD,EAAWhuD,OAMpE,OAAO9lB,GADO2zE,GAAWE,EAAOD,GAAQE,EAAWF,IACzBlnE,KAAK83B,MAAkB,IAAZnkC,EAAOxG,IAAY,KAAO4yB,IAkEnE0iD,GAAMgF,SA7DN,SAAkB7uE,QACD,IAAXA,IAAmBA,EAAS,IAChC,IAAI8uE,EAAKjF,GAAM7pE,GA4Cf,OA3CA8uE,EAAG1wC,SAAW,EAEd0wC,EAAG51E,IAAM,SAAU61E,EAAgB5T,GACjC,IAAI6T,EAAU7F,GAAgB39C,QAAQsjD,GAClC1E,EAAW0E,EAAG1E,SAMlB,SAAS8B,EAAY+C,GACnBA,EAAI/C,aAAc,EALhB8C,GAAW,GACb7F,GAAgBO,OAAOsF,EAAS,GAOlC,IAAK,IAAIz6E,EAAI,EAAGA,EAAI61E,EAAS9yE,OAAQ/C,IACnC23E,EAAY9B,EAAS71E,IAGvB,IAAI26E,EAAYzN,EAAasN,EAAgBzN,EAAmBlG,EAAsBp7D,IACtFkvE,EAAUn7D,QAAUm7D,EAAUn7D,SAAW/T,EAAO+T,QAChD,IAAIo7D,EAAaL,EAAG1wC,SACpB8wC,EAAUhU,UAAW,EACrBgU,EAAU3sC,UAAYusC,EAAGvsC,UACzB2sC,EAAU/T,eAAiBa,EAAGO,IAAIpB,GAAkBgU,EAAarL,EAAiB3I,EAAgBgU,GAClGjD,EAAY4C,GACZA,EAAG1D,KAAK8D,EAAU/T,gBAClB,IAAI8T,EAAMpF,GAAMqF,GAChBhD,EAAY+C,GACZ7E,EAAS/yE,KAAK43E,GACd,IAAIhG,EAAUL,EAAmBwB,EAAUpqE,GAW3C,OAVA8uE,EAAGzT,MAAQ4N,EAAQ5N,MACnByT,EAAGxT,SAAW2N,EAAQ3N,SACtBwT,EAAG1wC,SAAW6qC,EAAQ7qC,SACtB0wC,EAAG1D,KAAK,GACR0D,EAAG7B,QAEC6B,EAAG5T,UACL4T,EAAG5B,OAGE4B,GAGFA,GAgBTjF,GAAMtO,OAASqF,EACfiJ,GAAM7J,OAASA,EAEf6J,GAAMnW,OAAS,SAAU1lC,EAAK3mB,GAC5B,OAAOD,KAAKkhB,MAAMlhB,KAAKssD,UAAYrsD,EAAM2mB,EAAM,IAAMA,GAGxC,Q,yQC3tDTohD,E,WACJ,WAAY5vE,EAAYmK,I,4FAAU,CAAD,QAC/BlR,KAAK+G,WAAaA,EAClB/G,KAAK42E,UAAY1lE,EAAQ0lE,U,6CAG3B,WACE52E,KAAK62E,oBAAsB72E,KAAK82E,gBAAgBx5E,KAAK0C,MACrDA,KAAK+2E,mBAAqB/2E,KAAKg3E,eAAe15E,KAAK0C,MACnDA,KAAK+G,WAAW9C,QAAQ7D,iBAAxB,gBAAkDJ,KAAK42E,UAAvD,WAA2E52E,KAAK+2E,oBAChF/2E,KAAK+G,WAAW9C,QAAQ7D,iBAAiB,6BAA8BJ,KAAK62E,qBAC5E72E,KAAKi3E,oBAAoBj3E,KAAK+G,WAAY,CAAC,mB,oBAG7C,WACE/G,KAAK+G,WAAW9C,QAAQ3D,oBAAoB,6BAA8BN,KAAK62E,qBAC/E72E,KAAK+G,WAAW9C,QAAQ3D,oBAAxB,gBAAqDN,KAAK42E,UAA1D,WAA8E52E,KAAK+2E,sB,4BAGrF,SAAel2E,GACTb,KAAK+G,WAAWmwE,eAClBl3E,KAAK+G,WAAWmwE,cAAcr2E,EAAMoC,OAAOkH,MAE7CnK,KAAKm3E,aAAaC,oB,6BAGpB,SAAgBlkE,GACd,GAAIlT,KAAK+G,WAAWswE,eAClB,OAAOr3E,KAAK+G,WAAWswE,eAAenkE,K,iCAI1C,SAAoBhP,EAAQozE,GAAkB,IAAD,OAC3CA,EAAgBn1E,SAAQ,SAAA9E,GACtBb,OAAOC,eAAeyH,EAAQ7G,EAAK,CACjCV,IAAK,kBAAM,EAAKU,W,wBAKtB,WACE,OAAI2C,KAAKstD,gBAETttD,KAAKstD,cAAgBL,IAAasqB,QAAQv3E,KAAK42E,YAFhB52E,KAAKstD,mB,gCAOjC,SAASkqB,EAAezwE,GAA2B,IAAfmK,EAAc,uDAAJ,GACnD,SAAS0O,IACW,IAAI+2D,EAAU5vE,EAAYmK,GAClCumE,SAGZ,SAASC,IACW,IAAIf,EAAU5vE,EAAYmK,GAClCymE,SAGZ,IAAKzmE,EAAQ0lE,UACX,MAAM,IAAI5wE,MAAM,0BAKlB,OAFA4Z,IAEO,CACLA,WACA83D,gB,qbCvCJ,SAASE,EAA2B7wE,EAAY8wE,GAE9C,OADuB3xE,KAAKC,MAAM2xE,aAAa7L,QAAQ,8BAAgC,IACjE,GAAD,OAAIllE,EAAWP,WAAf,YAA6BqxE,IAGpD,SAASE,EAA6BhxE,EAAY8wE,GAChD,IAAMG,EAAiB9xE,KAAKC,MAAM2xE,aAAa7L,QAAQ,8BAAgC,UAChF+L,EAAe,GAAD,OAAIjxE,EAAWP,WAAf,YAA6BqxE,IAClDC,aAAaG,QAAQ,2BAA4B/xE,KAAKuc,UAAUu1D,IAGlE,SAASE,EAAiBnxE,EAAY8wE,GACpC,IAAMM,EAAyBP,EAA2B7wE,EAAY8wE,GACtE,OAAOhhB,UAAMuhB,cAAc/8D,QAAQ88D,GAAwB,GAG7D,SAASE,EAAmBtxE,EAAY8wE,EAAmBS,EAAqBC,GAC9E,IAAIC,EAAeN,EAAiBnxE,EAAY8wE,GAChD,OAAGW,IAxBL,SAA6BzxE,EAAY8wE,EAAmBW,GAC1D,IAAMR,EAAiB9xE,KAAKC,MAAM2xE,aAAa7L,QAAQ,8BAAgC,GACvF+L,EAAe,GAAD,OAAIjxE,EAAWP,WAAf,YAA6BqxE,IAAuBW,EAAahyE,WAC/EsxE,aAAaG,QAAQ,2BAA4B/xE,KAAKuc,UAAUu1D,IAwBhES,CAAoB1xE,EAAY8wE,EADhCW,EAAe3hB,UAAMuhB,cAAch7E,OAAOk7E,EAAqBC,IAExDC,GAGF,SAASE,EAAe3xE,EAAYmK,GACzC,SAASynE,IACP,IAAML,E,+VAAmB,EAAKM,QAAS1nE,EAAQ0nE,SAAY1nE,EAAQ2nE,aAE7DhB,EAAoB3mE,EAAQ2mE,mBAAqB3mE,EAAQ0nE,QAC/DP,EAAmBtxE,EAAY8wE,EAAmBS,EAAqB,CACrEQ,UAAW,YA3DjB,SAA0B/xE,GACrBA,EAAWgyE,kBACZhyE,EAAWgyE,mBA0DPA,CAAiBhyE,IAEnBiyE,aAAc,YAxDpB,SAA6BjyE,EAAY8wE,GACXD,EAA2B7wE,EAAY8wE,IAEjEC,aAAamB,WAAW,4BAEvBlyE,EAAWmyE,qBACZnyE,EAAWmyE,sBAmDPA,CAAoBnyE,EAAYmK,EAAQ2mE,oBAE1CsB,SAAU,SAACjmE,IAjDjB,SAAyBnM,EAAYmM,GAChCnM,EAAWqyE,iBACZryE,EAAWqyE,gBAAgBlmE,GAgDvBkmE,CAAgBryE,EAAYmM,MAKlC,SAASmmE,IACP,OAAKnoE,GAAYA,EAAQ0nE,QAElBV,EAAiBnxE,EAAYmK,EAAQ2mE,mBAFH,KAoC3C,OAJI3mE,GAAWA,EAAQ0nE,SACrBD,IAGK,CACLA,YACAW,YAjCF,WACE,IAAMd,EAAea,IAEjBb,IACFA,EAAac,cACbvB,EAA6BhxE,EAAYmK,EAAQ2mE,qBA6BnD0B,eAzBF,WACE,IAAM1B,EAAoB3mE,EAAQ2mE,mBAAqB3mE,EAAQ0nE,QACzC/hB,UAAMuhB,cAAcA,cACE9wE,QAAO,SAAAkxE,GAAY,OAAIA,EAAahyE,WAAWyK,SAASlK,EAAWP,eACzFrE,SAAQ,SAAAq2E,GAC5BT,EAA6BhxE,EAAY8wE,GACzCW,EAAac,kBAoBfE,QAhBF,SAAiBjzE,EAAQ2M,GACvB,IAAMslE,EAAea,IAEjBb,GACFA,EAAagB,QAAQjzE,EAAQ2M,IAa/BslE,aAAca,O,6BCnHH,SAASI,EAAgBC,EAAUC,GAA6B,IAAfzoE,EAAc,uDAAJ,GAClE0oE,EAAgB,mBAChBC,EAAmB3oE,EAAQ2oE,mBAAoB,EAC/CC,EAAoBJ,EAASj1E,QAAQm1E,GAAe,SAAS1uE,EAAO7N,GACxE,OAAOs8E,EAAat8E,IAAb,YAA0BA,EAA1B,SAGT,OAAIw8E,EACKC,EAAkBr1E,QAAQm1E,EAAe,IAG3CE,EAXT,gD,6BCAA,WAAMC,EAAe,CACnBziB,KAAM,WACJ,IAAM0iB,EAAmBz1E,SAAS01E,cAAc,sBAC5CD,IAAkBA,EAAiBtkB,MAAMwkB,QAAU,UAGzD1iB,KAAM,WACJ,IAAMwiB,EAAmBz1E,SAAS01E,cAAc,sBAC5CD,IAAkBA,EAAiBtkB,MAAMwkB,QAAU,UAI5CH,a,iBCVN,SAAUn+E,GACjB,aAEA,IAAIu+E,EAAW,CACbx/D,OAAQ3W,KAAKqa,QACb+7D,UAAWp2E,KAAKo2E,WAEdz/D,EAAS,CACX0F,IAAK,WACH,GAAIrgB,KAAKq6E,QAAS,CAGhB,IAFA,IAAIC,EAEKC,EAAOhhE,UAAU1a,OAAQ27E,EAAWx8E,MAAMu8E,GAAOruE,EAAO,EAAGA,EAAOquE,EAAMruE,IAC/EsuE,EAAStuE,GAAQqN,UAAUrN,GAG7BsuE,EAAS57E,KAAKkmB,KAAK2F,QAElB6vD,EAAmBH,EAASx/D,QAAQ0F,IAAIgE,MAAMi2D,EAAkB,CAAC,iBAAiB53E,OAAO83E,OAK5FC,EAA4B,oBAAX59E,QAAoD,kBAApBA,OAAOuB,SAAwB,SAAUsmB,GAC5F,cAAcA,GACZ,SAAUA,GACZ,OAAOA,GAAyB,oBAAX7nB,QAAyB6nB,EAAItlB,cAAgBvC,QAAU6nB,IAAQ7nB,OAAOa,UAAY,gBAAkBgnB,GAGvHg2D,EAAiB,SAAUlJ,EAAUmJ,GACvC,KAAMnJ,aAAoBmJ,GACxB,MAAM,IAAIn7E,UAAU,sCAIpBo7E,EAAc,WAChB,SAAShiE,EAAiB1U,EAAQ22E,GAChC,IAAK,IAAI/+E,EAAI,EAAGA,EAAI++E,EAAMh8E,OAAQ/C,IAAK,CACrC,IAAI8U,EAAaiqE,EAAM/+E,GACvB8U,EAAWlU,WAAakU,EAAWlU,aAAc,EACjDkU,EAAWkqE,cAAe,EACtB,UAAWlqE,IAAYA,EAAWmqE,UAAW,GACjDv+E,OAAOC,eAAeyH,EAAQ0M,EAAWvT,IAAKuT,IAIlD,OAAO,SAAU+pE,EAAaK,EAAYC,GAGxC,OAFID,GAAYpiE,EAAiB+hE,EAAYj9E,UAAWs9E,GACpDC,GAAariE,EAAiB+hE,EAAaM,GACxCN,GAdO,GAkBdlwD,EAAM,WACR,OAAO,IAAI3F,MAAOoC,WAGhBg0D,EAAe,SAAsBjwC,GACvC,OAAQxgB,IAAQwgB,GAAQ,KAGtBkwC,EAAQ,SAAe74D,EAAQiT,EAAK3mB,GACtC,OAAOD,KAAKC,IAAI2mB,EAAK5mB,KAAK4mB,IAAI3mB,EAAK0T,KAGjC84D,EAAoB,WACtB,SAASA,EAAkBC,GACzBX,EAAe16E,KAAMo7E,GACrBp7E,KAAKs7E,oBAAsBt7E,KAAKs7E,oBAAoBh+E,KAAK0C,MACzDA,KAAKq7E,WAAaA,EAClBr7E,KAAKu7E,kBAAoB,EA0G3B,OAvGAH,EAAkB19E,UAAUuE,MAAQ,WAC7BjC,KAAKw7E,cACRx7E,KAAKy7E,UAAYhxD,WACVzqB,KAAK07E,UACZ17E,KAAK27E,eACLv7E,iBAAiB,mBAAoBJ,KAAKs7E,qBAC1C3gE,EAAO0F,IAAI,6CAA+CrgB,KAAK47E,kBAAoB,SAIvFR,EAAkB19E,UAAU2E,KAAO,WAC7BrC,KAAKw7E,cACPx7E,KAAK07E,UAAYjxD,IACjBzqB,KAAK67E,cACLv7E,oBAAoB,mBAAoBN,KAAKs7E,qBAC7C3gE,EAAO0F,IAAI,+BAIf+6D,EAAkB19E,UAAU89E,UAAY,WACtC,OAAOx7E,KAAKy7E,YAAcz7E,KAAK07E,WAGjCN,EAAkB19E,UAAUo+E,WAAa,WACvC97E,KAAK+7E,SAAWtxD,KAGlB2wD,EAAkB19E,UAAUs+E,cAAgB,WAC1Ch8E,KAAKu7E,kBAAoB,EACzBv7E,KAAK87E,oBACE97E,KAAKi8E,eACZthE,EAAO0F,IAAI,uCAGb+6D,EAAkB19E,UAAUw+E,iBAAmB,WAC7Cl8E,KAAKi8E,eAAiBxxD,IACtB9P,EAAO0F,IAAI,0CAGb+6D,EAAkB19E,UAAUi+E,aAAe,WACzC37E,KAAK67E,cACL77E,KAAKm8E,QAGPf,EAAkB19E,UAAUm+E,YAAc,WACxCO,aAAap8E,KAAKq8E,cAGpBjB,EAAkB19E,UAAUy+E,KAAO,WACjC,IAAIG,EAAQt8E,KAEZA,KAAKq8E,YAAclkB,YAAW,WAC5BmkB,EAAMC,mBAEND,EAAMH,SACLn8E,KAAK47E,oBAGVR,EAAkB19E,UAAUk+E,gBAAkB,WAC5C,IAAIY,EAAwBx8E,KAAKZ,YAAYq9E,aACzClnD,EAAMinD,EAAsBjnD,IAC5B3mB,EAAM4tE,EAAsB5tE,IAE5B8tE,EADaF,EAAsBG,WACXhuE,KAAK0R,IAAIrgB,KAAKu7E,kBAAoB,GAC9D,OAAO5sE,KAAK83B,MAAkC,IAA5B00C,EAAMuB,EAAUnnD,EAAK3mB,KAGzCwsE,EAAkB19E,UAAU6+E,iBAAmB,WACzCv8E,KAAK48E,sBACPjiE,EAAO0F,IAAI,oEAAsErgB,KAAKu7E,kBAAoB,oBAAsBv7E,KAAK47E,kBAAoB,4BAA8BV,EAAal7E,KAAKi8E,gBAAkB,yBAA2Bj8E,KAAKZ,YAAYy9E,eAAiB,MACxR78E,KAAKu7E,oBAEDv7E,KAAK88E,uBACPniE,EAAO0F,IAAI,2DAEX1F,EAAO0F,IAAI,+BACXrgB,KAAKq7E,WAAW0B,YAKtB3B,EAAkB19E,UAAUk/E,kBAAoB,WAC9C,OAAO1B,EAAal7E,KAAK+7E,SAAW/7E,KAAK+7E,SAAW/7E,KAAKy7E,WAAaz7E,KAAKZ,YAAYy9E,gBAGzFzB,EAAkB19E,UAAUo/E,qBAAuB,WACjD,OAAO98E,KAAKi8E,gBAAkBf,EAAal7E,KAAKi8E,gBAAkBj8E,KAAKZ,YAAYy9E,gBAGrFzB,EAAkB19E,UAAU49E,oBAAsB,WAChD,IAAI0B,EAASh9E,KAEoB,YAA7BuE,SAAS04E,iBACX9kB,YAAW,YACL6kB,EAAOJ,qBAAwBI,EAAO3B,WAAW6B,WACnDviE,EAAO0F,IAAI,sFAAwF9b,SAAS04E,iBAE5GD,EAAO3B,WAAW0B,YAEnB,MAIA3B,EA/Ge,GAkHxBA,EAAkBqB,aAAe,CAC/BlnD,IAAK,EACL3mB,IAAK,GACL+tE,WAAY,GAEdvB,EAAkByB,eAAiB,EACnC,IAAIM,EAAW,CACbC,cAAe,CACbC,QAAS,UACTh9E,WAAY,aACZi9E,KAAM,OACNC,aAAc,uBACdC,UAAW,uBAEbC,mBAAoB,CAClBC,aAAc,eACdC,gBAAiB,kBACjBC,eAAgB,kBAElBC,mBAAoB,SACpBC,UAAW,CAAC,sBAAuB,4BAEjCV,EAAgBD,EAASC,cACzBU,EAAYX,EAASW,UACrBC,EAAqBD,EAAU3+E,MAAM,EAAG2+E,EAAUj/E,OAAS,GAC3Dk0B,EAAU,GAAGA,QAEbirD,EAAa,WACf,SAASA,EAAWC,GAClBvD,EAAe16E,KAAMg+E,GACrBh+E,KAAKk+E,KAAOl+E,KAAKk+E,KAAK5gF,KAAK0C,MAC3BA,KAAKi+E,SAAWA,EAChBj+E,KAAKo4E,cAAgBp4E,KAAKi+E,SAAS7F,cACnCp4E,KAAKm+E,QAAU,IAAI/C,EAAkBp7E,MACrCA,KAAKg5E,cAAe,EAiHtB,OA9GAgF,EAAWtgF,UAAU0gF,KAAO,SAAclrE,GACxC,QAAIlT,KAAKk9E,WACPl9E,KAAKq+E,UAAUD,KAAKl4E,KAAKuc,UAAUvP,KAC5B,IAMX8qE,EAAWtgF,UAAUwgF,KAAO,WAC1B,OAAIl+E,KAAKs+E,YACP3jE,EAAO0F,IAAI,uDAAyDrgB,KAAKu+E,aAClE,IAEP5jE,EAAO0F,IAAI,uCAAyCrgB,KAAKu+E,WAAa,mBAAqBT,GAEvF99E,KAAKq+E,WACPr+E,KAAKw+E,yBAGPx+E,KAAKq+E,UAAY,IAAIlE,EAASC,UAAUp6E,KAAKi+E,SAASxoB,IAAKqoB,GAC3D99E,KAAKy+E,uBACLz+E,KAAKm+E,QAAQl8E,SACN,IAIX+7E,EAAWtgF,UAAUghF,MAAQ,WAU3B,IATWnlE,UAAU1a,OAAS,QAAsBsG,IAAjBoU,UAAU,GAAmBA,UAAU,GAAK,CAC7EolE,gBAAgB,IAEQA,gBAGxB3+E,KAAKm+E,QAAQ97E,OAGXrC,KAAKs+E,WACP,OAAOt+E,KAAKq+E,UAAUK,SAI1BV,EAAWtgF,UAAUq/E,OAAS,WAG5B,GAFApiE,EAAO0F,IAAI,yCAA2CrgB,KAAKu+E,aAEvDv+E,KAAKs+E,WAUP,OAAOt+E,KAAKk+E,OATZ,IACE,OAAOl+E,KAAK0+E,QACZ,MAAO37E,GACP4X,EAAO0F,IAAI,6BAA8Btd,GACzC,QACA4X,EAAO0F,IAAI,0BAA4BrgB,KAAKZ,YAAYw/E,YAAc,MACtEzmB,WAAWn4D,KAAKk+E,KAAMl+E,KAAKZ,YAAYw/E,eAO7CZ,EAAWtgF,UAAUmhF,YAAc,WACjC,GAAI7+E,KAAKq+E,UACP,OAAOr+E,KAAKq+E,UAAUS,UAI1Bd,EAAWtgF,UAAUw/E,OAAS,WAC5B,OAAOl9E,KAAK++E,QAAQ,SAGtBf,EAAWtgF,UAAU4gF,SAAW,WAC9B,OAAOt+E,KAAK++E,QAAQ,OAAQ,eAG9Bf,EAAWtgF,UAAUshF,oBAAsB,WACzC,OAAOjsD,EAAQ92B,KAAK8hF,EAAoB/9E,KAAK6+E,gBAAkB,GAGjEb,EAAWtgF,UAAUqhF,QAAU,WAC7B,IAAK,IAAIxE,EAAOhhE,UAAU1a,OAAQogF,EAASjhF,MAAMu8E,GAAOruE,EAAO,EAAGA,EAAOquE,EAAMruE,IAC7E+yE,EAAO/yE,GAAQqN,UAAUrN,GAG3B,OAAO6mB,EAAQ92B,KAAKgjF,EAAQj/E,KAAKu+E,aAAe,GAGlDP,EAAWtgF,UAAU6gF,SAAW,WAC9B,GAAIv+E,KAAKq+E,UACP,IAAK,IAAIa,KAAS/E,EAASC,UACzB,GAAID,EAASC,UAAU8E,KAAWl/E,KAAKq+E,UAAU1+D,WAC/C,OAAOu/D,EAAMj6E,cAKnB,OAAO,MAGT+4E,EAAWtgF,UAAU+gF,qBAAuB,WAC1C,IAAK,IAAI3+E,KAAaE,KAAK08D,OAAQ,CACjC,IAAIyiB,EAAUn/E,KAAK08D,OAAO58D,GAAWxC,KAAK0C,MAC1CA,KAAKq+E,UAAU,KAAOv+E,GAAaq/E,IAIvCnB,EAAWtgF,UAAU8gF,uBAAyB,WAC5C,IAAK,IAAI1+E,KAAaE,KAAK08D,OACzB18D,KAAKq+E,UAAU,KAAOv+E,GAAa,cAIhCk+E,EAxHQ,GA2HjBA,EAAWY,YAAc,IACzBZ,EAAWtgF,UAAUg/D,OAAS,CAC5B15D,QAAS,SAAiBnC,GACxB,GAAKb,KAAKg/E,sBAAV,CAIA,IAAII,EAAcl5E,KAAKC,MAAMtF,EAAMqS,MAC/B1M,EAAa44E,EAAY54E,WACzBxD,EAAUo8E,EAAYp8E,QACtBq8E,EAASD,EAAYC,OACrBC,EAAYF,EAAYE,UAG5B,OAFWF,EAAY31E,MAGrB,KAAK2zE,EAAcC,QAEjB,OADAr9E,KAAKm+E,QAAQnC,gBACNh8E,KAAKo4E,cAAcmH,SAE5B,KAAKnC,EAAc/8E,WAEjB,OADAsa,EAAO0F,IAAI,0BAA4Bg/D,GAChCr/E,KAAK0+E,MAAM,CAChBC,eAAgBW,IAGpB,KAAKlC,EAAcE,KACjB,OAAOt9E,KAAKm+E,QAAQrC,aAEtB,KAAKsB,EAAcG,aACjB,OAAOv9E,KAAKo4E,cAAclsB,OAAO1lD,EAAY,aAE/C,KAAK42E,EAAcI,UACjB,OAAOx9E,KAAKo4E,cAAczd,OAAOn0D,GAEnC,QACE,OAAOxG,KAAKo4E,cAAclsB,OAAO1lD,EAAY,WAAYxD,MAG/Dk7E,KAAM,WAIJ,GAHAvjE,EAAO0F,IAAI,kCAAoCrgB,KAAK6+E,cAAgB,iBACpE7+E,KAAKg5E,cAAe,GAEfh5E,KAAKg/E,sBAER,OADArkE,EAAO0F,IAAI,gEACJrgB,KAAK0+E,MAAM,CAChBC,gBAAgB,KAItBD,MAAO,SAAe79E,GAGpB,GAFA8Z,EAAO0F,IAAI,4BAEPrgB,KAAKg5E,aAMT,OAFAh5E,KAAKg5E,cAAe,EACpBh5E,KAAKm+E,QAAQjC,mBACNl8E,KAAKo4E,cAAcoH,UAAU,eAAgB,CAClDC,qBAAsBz/E,KAAKm+E,QAAQ3C,eAGvCz4E,MAAO,WACL4X,EAAO0F,IAAI,6BAIf,IAAIhI,EAAS,SAAgB7a,EAAQ2a,GACnC,GAAkB,MAAdA,EACF,IAAK,IAAI9a,KAAO8a,EAAY,CAC1B,IAAIpb,EAAQob,EAAW9a,GACvBG,EAAOH,GAAON,EAIlB,OAAOS,GAGLkiF,EAAe,WACjB,SAASA,EAAazB,GACpB,IAAI12E,EAASgS,UAAU1a,OAAS,QAAsBsG,IAAjBoU,UAAU,GAAmBA,UAAU,GAAK,GAC7EomE,EAAQpmE,UAAU,GACtBmhE,EAAe16E,KAAM0/E,GACrB1/E,KAAKi+E,SAAWA,EAChBj+E,KAAKwG,WAAaN,KAAKuc,UAAUlb,GACjC8Q,EAAOrY,KAAM2/E,GAqBf,OAlBAD,EAAahiF,UAAU87E,QAAU,SAAiBjzE,GAChD,IAAI2M,EAAOqG,UAAU1a,OAAS,QAAsBsG,IAAjBoU,UAAU,GAAmBA,UAAU,GAAK,GAE/E,OADArG,EAAK3M,OAASA,EACPvG,KAAKo+E,KAAKlrE,IAGnBwsE,EAAahiF,UAAU0gF,KAAO,SAAclrE,GAC1C,OAAOlT,KAAKi+E,SAASG,KAAK,CACxBwB,QAAS,UACTp5E,WAAYxG,KAAKwG,WACjB0M,KAAMhN,KAAKuc,UAAUvP,MAIzBwsE,EAAahiF,UAAU47E,YAAc,WACnC,OAAOt5E,KAAKi+E,SAAS7F,cAAczD,OAAO30E,OAGrC0/E,EA5BU,GA+BfG,EAAgB,WAClB,SAASA,EAAc5B,GACrBvD,EAAe16E,KAAM6/E,GACrB7/E,KAAKi+E,SAAWA,EAChBj+E,KAAKo4E,cAAgB,GAqGvB,OAlGAyH,EAAcniF,UAAUN,OAAS,SAAgB0iF,EAAaH,GAC5D,IAAI/G,EAAUkH,EACVv4E,EAA+E,YAAlD,qBAAZqxE,EAA0B,YAAc6B,EAAQ7B,IAAyBA,EAAU,CACtGA,QAASA,GAEPJ,EAAe,IAAIkH,EAAa1/E,KAAKi+E,SAAU12E,EAAQo4E,GAC3D,OAAO3/E,KAAKS,IAAI+3E,IAGlBqH,EAAcniF,UAAU+C,IAAM,SAAa+3E,GAKzC,OAJAx4E,KAAKo4E,cAAcx5E,KAAK45E,GACxBx4E,KAAKi+E,SAAS8B,yBACd//E,KAAKksD,OAAOssB,EAAc,eAC1Bx4E,KAAKggF,YAAYxH,EAAc,aACxBA,GAGTqH,EAAcniF,UAAUi3E,OAAS,SAAgB6D,GAO/C,OANAx4E,KAAKigF,OAAOzH,GAEPx4E,KAAKqb,QAAQm9D,EAAahyE,YAAY3H,QACzCmB,KAAKggF,YAAYxH,EAAc,eAG1BA,GAGTqH,EAAcniF,UAAUi9D,OAAS,SAAgBn0D,GAC/C,IAAI81E,EAAQt8E,KAEZ,OAAOA,KAAKqb,QAAQ7U,GAAY/D,KAAI,SAAU+1E,GAK5C,OAJA8D,EAAM2D,OAAOzH,GAEb8D,EAAMpwB,OAAOssB,EAAc,YAEpBA,MAIXqH,EAAcniF,UAAUuiF,OAAS,SAAgBzH,GAI/C,OAHAx4E,KAAKo4E,cAAgBp4E,KAAKo4E,cAAc9wE,QAAO,SAAUzJ,GACvD,OAAOA,IAAM26E,KAERA,GAGTqH,EAAcniF,UAAU2d,QAAU,SAAiB7U,GACjD,OAAOxG,KAAKo4E,cAAc9wE,QAAO,SAAUzJ,GACzC,OAAOA,EAAE2I,aAAeA,MAI5Bq5E,EAAcniF,UAAU6hF,OAAS,WAC/B,IAAIvC,EAASh9E,KAEb,OAAOA,KAAKo4E,cAAc31E,KAAI,SAAU+1E,GACtC,OAAOwE,EAAOgD,YAAYxH,EAAc,iBAI5CqH,EAAcniF,UAAU8hF,UAAY,SAAmBU,GAGrD,IAFA,IAAIC,EAASngF,KAEJu6E,EAAOhhE,UAAU1a,OAAQoZ,EAAOja,MAAMu8E,EAAO,EAAIA,EAAO,EAAI,GAAIruE,EAAO,EAAGA,EAAOquE,EAAMruE,IAC9F+L,EAAK/L,EAAO,GAAKqN,UAAUrN,GAG7B,OAAOlM,KAAKo4E,cAAc31E,KAAI,SAAU+1E,GACtC,OAAO2H,EAAOj0B,OAAO7nC,MAAM87D,EAAQ,CAAC3H,EAAc0H,GAAcx9E,OAAOuV,QAI3E4nE,EAAcniF,UAAUwuD,OAAS,SAAgBssB,EAAc0H,GAC7D,IAAK,IAAIE,EAAQ7mE,UAAU1a,OAAQoZ,EAAOja,MAAMoiF,EAAQ,EAAIA,EAAQ,EAAI,GAAIC,EAAQ,EAAGA,EAAQD,EAAOC,IACpGpoE,EAAKooE,EAAQ,GAAK9mE,UAAU8mE,GAW9B,OAN4B,kBAAjB7H,EACOx4E,KAAKqb,QAAQm9D,GAEb,CAACA,IAGE/1E,KAAI,SAAU+1E,GACjC,MAA6C,oBAA/BA,EAAa0H,GAA+B1H,EAAa0H,GAAc77D,MAAMm0D,EAAcvgE,QAAQ9S,MAIrH06E,EAAcniF,UAAUsiF,YAAc,SAAqBxH,EAAcoH,GACvE,IAAIp5E,EAAagyE,EAAahyE,WAC9B,OAAOxG,KAAKi+E,SAASG,KAAK,CACxBwB,QAASA,EACTp5E,WAAYA,KAITq5E,EAzGW,GA4GhBS,EAAW,WACb,SAASA,EAAS7qB,GAChBilB,EAAe16E,KAAMsgF,GACrBtgF,KAAKugF,KAAO9qB,EACZz1D,KAAKo4E,cAAgB,IAAIyH,EAAc7/E,MACvCA,KAAKq7E,WAAa,IAAI2C,EAAWh+E,MA6BnC,OA1BAsgF,EAAS5iF,UAAU0gF,KAAO,SAAclrE,GACtC,OAAOlT,KAAKq7E,WAAW+C,KAAKlrE,IAG9BotE,EAAS5iF,UAAUyC,QAAU,WAC3B,OAAOH,KAAKq7E,WAAW6C,QAGzBoC,EAAS5iF,UAAU2C,WAAa,WAC9B,OAAOL,KAAKq7E,WAAWqD,MAAM,CAC3BC,gBAAgB,KAIpB2B,EAAS5iF,UAAUqiF,uBAAyB,WAC1C,IAAK//E,KAAKq7E,WAAWiD,WACnB,OAAOt+E,KAAKq7E,WAAW6C,QAI3BtD,EAAY0F,EAAU,CAAC,CACrBjjF,IAAK,MACLV,IAAK,WACH,OAAO6jF,EAAmBxgF,KAAKugF,UAG5BD,EAlCM,GAqCf,SAASE,EAAmB/qB,GAK1B,GAJmB,oBAARA,IACTA,EAAMA,KAGJA,IAAQ,UAAUn2D,KAAKm2D,GAAM,CAC/B,IAAIlwD,EAAIhB,SAAS88D,cAAc,KAI/B,OAHA97D,EAAEk7E,KAAOhrB,EACTlwD,EAAEk7E,KAAOl7E,EAAEk7E,KACXl7E,EAAEu5E,SAAWv5E,EAAEu5E,SAASr6E,QAAQ,OAAQ,MACjCc,EAAEk7E,KAET,OAAOhrB,EAIX,SAASqB,IACP,IAAIrB,EAAMl8C,UAAU1a,OAAS,QAAsBsG,IAAjBoU,UAAU,GAAmBA,UAAU,GAAKmnE,EAAU,QAAUvD,EAASU,mBAC3G,OAAO,IAAIyC,EAAS7qB,GAGtB,SAASirB,EAAUrkF,GACjB,IAAI4H,EAAUM,SAASwb,KAAKk6D,cAAc,2BAA6B59E,EAAO,MAE9E,GAAI4H,EACF,OAAOA,EAAQ4B,aAAa,WAIhCjK,EAAQoiF,WAAaA,EACrBpiF,EAAQw/E,kBAAoBA,EAC5Bx/E,EAAQ0kF,SAAWA,EACnB1kF,EAAQuhF,SAAWA,EACnBvhF,EAAQ8jF,aAAeA,EACvB9jF,EAAQikF,cAAgBA,EACxBjkF,EAAQu+E,SAAWA,EACnBv+E,EAAQ4kF,mBAAqBA,EAC7B5kF,EAAQ+e,OAASA,EACjB/e,EAAQk7D,eAAiBA,EACzBl7D,EAAQ8kF,UAAYA,EACpBlkF,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAjnBsD26C,CAAQ97C,I,gBCDzE,IAAmBgB,KAIT+jF,QAHNj9E,OAAOvB,QAAQvF,I,iBCMV,SAAUm5D,GACjB,aAESA,EAAOl4B,aAAa,KAAM,CACjChK,OAAQ,8FAA8FzkB,MAAM,KAC5GwkB,YAAa,kDAAkDxkB,MAAM,KACrE0pB,SAAU,4DAA4D1pB,MAAM,KAC5EypB,cAAe,8BAA8BzpB,MAAM,KACnDwpB,YAAa,uBAAuBxpB,MAAM,KAC1CytB,cAAe,SACfZ,KAAM,SAAUt2B,GACd,MAAO,QAAQrG,KAAKqG,IAEtB4gB,SAAU,SAAUgV,EAAOG,EAASe,GAClC,OAAIlB,EAAQ,GACHkB,EAAU,KAAO,KAEjBA,EAAU,KAAO,MAG5BtQ,eAAgB,CACdI,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAERpC,SAAU,CACRN,QAAS,iBACTC,QAAS,kBACTC,SAAU,eACVC,QAAS,iBACTC,SAAU,sBACVC,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,SACRC,KAAM,YACNzvB,EAAG,mBACH0vB,GAAI,cACJrxB,EAAG,YACHsxB,GAAI,YACJC,EAAG,SACHC,GAAI,SACJtxB,EAAG,SACHuxB,GAAI,SACJG,EAAG,WACHC,GAAI,YACJC,EAAG,UACHC,GAAI,WAEN2O,uBAAwB,kBACxBlR,QAAS,SAAUpJ,GACjB,OAAOA,GAAqB,IAAXA,GAA2B,IAAXA,GAAgBA,GAAU,GAAK,MAAQ,OAE1EgV,KAAM,CACJL,IAAK,EAELC,IAAK,KA5DuFwgB,CAAQ,EAAQ,K,iBCGzG,SAAUqe,GACjB,aAEA,IAAI6qB,EAAY,CACd,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,UAEDC,EAAY,CACd,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,KAEHC,EAAa,SAAUvjF,GACzB,OAAa,IAANA,EAAU,EAAU,IAANA,EAAU,EAAU,IAANA,EAAU,EAAIA,EAAI,KAAO,GAAKA,EAAI,KAAO,GAAK,EAAIA,EAAI,KAAO,GAAK,EAAI,GAEvGwjF,EAAU,CACZljF,EAAG,CAAC,iEAAgB,gEAAe,CAAC,6CAAW,8CAAY,8BAAW,oCAAY,qCAClF3B,EAAG,CAAC,iEAAgB,gEAAe,CAAC,6CAAW,8CAAY,oCAAY,oCAAY,qCACnFuxB,EAAG,CAAC,2DAAe,0DAAc,CAAC,uCAAU,wCAAW,oCAAY,8BAAW,+BAC9ErxB,EAAG,CAAC,qDAAc,8CAAY,CAAC,iCAAS,kCAAU,8BAAW,oCAAY,yBACzE0xB,EAAG,CAAC,qDAAc,8CAAY,CAAC,iCAAS,kCAAU,8BAAW,8BAAW,yBACxEE,EAAG,CAAC,qDAAc,8CAAY,CAAC,iCAAS,kCAAU,oCAAY,oCAAY,0BAExEgzD,EAAY,SAAUxxD,GACxB,OAAO,SAAUlN,EAAQ6L,EAAe5L,EAAQ6L,GAC9C,IAAIiqB,EAAIyoC,EAAWx+D,GACf+gD,EAAM0d,EAAQvxD,GAAGsxD,EAAWx+D,IAMhC,OAJU,IAAN+1B,IACFgrB,EAAMA,EAAIl1C,EAAgB,EAAI,IAGzBk1C,EAAI5+D,QAAQ,MAAO6d,KAG1BuR,EAAS,CAAC,iCAAS,uCAAU,2BAAQ,iCAAS,2BAAQ,iCAAS,iCAAS,iCAAS,uCAAU,uCAAU,uCAAU,wCAE1GkiC,EAAOl4B,aAAa,KAAM,CACjChK,OAAQA,EACRD,YAAaC,EACbiF,SAAU,uRAAsD1pB,MAAM,KACtEypB,cAAe,mMAAwCzpB,MAAM,KAC7DwpB,YAAa,mDAAgBxpB,MAAM,KACnC8wD,oBAAoB,EACpB/zC,eAAgB,CACdI,GAAI,QACJD,IAAK,WACLE,EAAG,uBACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAERkQ,cAAe,gBACfZ,KAAM,SAAUt2B,GACd,MAAO,WAAQA,GAEjB4gB,SAAU,SAAUgd,EAAMc,EAAQ5H,GAChC,OAAI8G,EAAO,GACF,SAEA,UAGXhZ,SAAU,CACRN,QAAS,8FACTC,QAAS,wFACTC,SAAU,oEACVC,QAAS,kFACTC,SAAU,oEACVC,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,wBACRC,KAAM,wBACNzvB,EAAGmjF,EAAU,KACbzzD,GAAIyzD,EAAU,KACd9kF,EAAG8kF,EAAU,KACbxzD,GAAIwzD,EAAU,KACdvzD,EAAGuzD,EAAU,KACbtzD,GAAIszD,EAAU,KACd5kF,EAAG4kF,EAAU,KACbrzD,GAAIqzD,EAAU,KACdlzD,EAAGkzD,EAAU,KACbjzD,GAAIizD,EAAU,KACdhzD,EAAGgzD,EAAU,KACb/yD,GAAI+yD,EAAU,MAEhBt8C,SAAU,SAAUniB,GAClB,OAAOA,EAAO9d,QAAQ,mEAAiB,SAAUyG,GAC/C,OAAO21E,EAAU31E,MAChBzG,QAAQ,UAAM,MAEnBuoC,WAAY,SAAUzqB,GACpB,OAAOA,EAAO9d,QAAQ,OAAO,SAAUyG,GACrC,OAAO01E,EAAU11E,MAChBzG,QAAQ,KAAM,WAEnB6yB,KAAM,CACJL,IAAK,EAELC,IAAK,MApHuFwgB,CAAQ,EAAQ,K,iBCGzG,SAAUqe,GACjB,aAEA,IAAI+qB,EAAa,SAAUvjF,GACzB,OAAa,IAANA,EAAU,EAAU,IAANA,EAAU,EAAU,IAANA,EAAU,EAAIA,EAAI,KAAO,GAAKA,EAAI,KAAO,GAAK,EAAIA,EAAI,KAAO,GAAK,EAAI,GAEvGwjF,EAAU,CACZljF,EAAG,CAAC,iEAAgB,gEAAe,CAAC,6CAAW,8CAAY,8BAAW,oCAAY,qCAClF3B,EAAG,CAAC,iEAAgB,gEAAe,CAAC,6CAAW,8CAAY,oCAAY,oCAAY,qCACnFuxB,EAAG,CAAC,2DAAe,0DAAc,CAAC,uCAAU,wCAAW,oCAAY,8BAAW,+BAC9ErxB,EAAG,CAAC,qDAAc,8CAAY,CAAC,iCAAS,kCAAU,8BAAW,oCAAY,yBACzE0xB,EAAG,CAAC,qDAAc,8CAAY,CAAC,iCAAS,kCAAU,8BAAW,8BAAW,yBACxEE,EAAG,CAAC,qDAAc,8CAAY,CAAC,iCAAS,kCAAU,oCAAY,oCAAY,0BAExEgzD,EAAY,SAAUxxD,GACxB,OAAO,SAAUlN,EAAQ6L,EAAe5L,EAAQ6L,GAC9C,IAAIiqB,EAAIyoC,EAAWx+D,GACf+gD,EAAM0d,EAAQvxD,GAAGsxD,EAAWx+D,IAMhC,OAJU,IAAN+1B,IACFgrB,EAAMA,EAAIl1C,EAAgB,EAAI,IAGzBk1C,EAAI5+D,QAAQ,MAAO6d,KAG1BuR,EAAS,CAAC,iCAAS,iCAAS,2BAAQ,iCAAS,qBAAO,2BAAQ,uCAAU,qBAAO,uCAAU,uCAAU,uCAAU,wCAEpGkiC,EAAOl4B,aAAa,QAAS,CACtChK,OAAQA,EACRD,YAAaC,EACbiF,SAAU,uRAAsD1pB,MAAM,KACtEypB,cAAe,mMAAwCzpB,MAAM,KAC7DwpB,YAAa,mDAAgBxpB,MAAM,KACnC8wD,oBAAoB,EACpB/zC,eAAgB,CACdI,GAAI,QACJD,IAAK,WACLE,EAAG,uBACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAERkQ,cAAe,gBACfZ,KAAM,SAAUt2B,GACd,MAAO,WAAQA,GAEjB4gB,SAAU,SAAUgd,EAAMc,EAAQ5H,GAChC,OAAI8G,EAAO,GACF,SAEA,UAGXhZ,SAAU,CACRN,QAAS,8FACTC,QAAS,wFACTC,SAAU,oEACVC,QAAS,kFACTC,SAAU,oEACVC,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,wBACRC,KAAM,wBACNzvB,EAAGmjF,EAAU,KACbzzD,GAAIyzD,EAAU,KACd9kF,EAAG8kF,EAAU,KACbxzD,GAAIwzD,EAAU,KACdvzD,EAAGuzD,EAAU,KACbtzD,GAAIszD,EAAU,KACd5kF,EAAG4kF,EAAU,KACbrzD,GAAIqzD,EAAU,KACdlzD,EAAGkzD,EAAU,KACbjzD,GAAIizD,EAAU,KACdhzD,EAAGgzD,EAAU,KACb/yD,GAAI+yD,EAAU,MAEhBh0C,WAAY,SAAUzqB,GACpB,OAAOA,EAAO9d,QAAQ,KAAM,WAE9B6yB,KAAM,CACJL,IAAK,EAELC,IAAK,KArFuFwgB,CAAQ,EAAQ,K,iBCHzG,SAAUqe,GACjB,aAEWA,EAAOl4B,aAAa,QAAS,CACtChK,OAAQ,0WAAwEzkB,MAAM,KACtFwkB,YAAa,0WAAwExkB,MAAM,KAC3F0pB,SAAU,uRAAsD1pB,MAAM,KACtEypB,cAAe,mMAAwCzpB,MAAM,KAC7DwpB,YAAa,mDAAgBxpB,MAAM,KACnC8wD,oBAAoB,EACpB/zC,eAAgB,CACdI,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAERpC,SAAU,CACRN,QAAS,8FACTC,QAAS,kFACTC,SAAU,oEACVC,QAAS,kFACTC,SAAU,oEACVC,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,kBACRC,KAAM,wBACNzvB,EAAG,2BACH0vB,GAAI,oCACJrxB,EAAG,iCACHsxB,GAAI,oCACJC,EAAG,2BACHC,GAAI,oCACJtxB,EAAG,qBACHuxB,GAAI,8BACJG,EAAG,qBACHC,GAAI,8BACJC,EAAG,qBACHC,GAAI,qCAENqJ,KAAM,CACJL,IAAK,EAELC,IAAK,MA9CuFwgB,CAAQ,EAAQ,K,iBCCzG,SAAUqe,GACjB,aAEA,IAAI6qB,EAAY,CACd,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEDE,EAAa,SAAUvjF,GACzB,OAAa,IAANA,EAAU,EAAU,IAANA,EAAU,EAAU,IAANA,EAAU,EAAIA,EAAI,KAAO,GAAKA,EAAI,KAAO,GAAK,EAAIA,EAAI,KAAO,GAAK,EAAI,GAEvGwjF,EAAU,CACZljF,EAAG,CAAC,iEAAgB,gEAAe,CAAC,6CAAW,8CAAY,8BAAW,oCAAY,qCAClF3B,EAAG,CAAC,iEAAgB,gEAAe,CAAC,6CAAW,8CAAY,oCAAY,oCAAY,qCACnFuxB,EAAG,CAAC,2DAAe,0DAAc,CAAC,uCAAU,wCAAW,oCAAY,8BAAW,+BAC9ErxB,EAAG,CAAC,qDAAc,8CAAY,CAAC,iCAAS,kCAAU,8BAAW,oCAAY,yBACzE0xB,EAAG,CAAC,qDAAc,8CAAY,CAAC,iCAAS,kCAAU,8BAAW,8BAAW,yBACxEE,EAAG,CAAC,qDAAc,8CAAY,CAAC,iCAAS,kCAAU,oCAAY,oCAAY,0BAExEgzD,EAAY,SAAUxxD,GACxB,OAAO,SAAUlN,EAAQ6L,EAAe5L,EAAQ6L,GAC9C,IAAIiqB,EAAIyoC,EAAWx+D,GACf+gD,EAAM0d,EAAQvxD,GAAGsxD,EAAWx+D,IAMhC,OAJU,IAAN+1B,IACFgrB,EAAMA,EAAIl1C,EAAgB,EAAI,IAGzBk1C,EAAI5+D,QAAQ,MAAO6d,KAG1BuR,EAAS,CAAC,iCAAS,uCAAU,2BAAQ,iCAAS,2BAAQ,iCAAS,iCAAS,iCAAS,uCAAU,uCAAU,uCAAU,wCAExGkiC,EAAOl4B,aAAa,QAAS,CACtChK,OAAQA,EACRD,YAAaC,EACbiF,SAAU,uRAAsD1pB,MAAM,KACtEypB,cAAe,mMAAwCzpB,MAAM,KAC7DwpB,YAAa,mDAAgBxpB,MAAM,KACnC8wD,oBAAoB,EACpB/zC,eAAgB,CACdI,GAAI,QACJD,IAAK,WACLE,EAAG,uBACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAERkQ,cAAe,gBACfZ,KAAM,SAAUt2B,GACd,MAAO,WAAQA,GAEjB4gB,SAAU,SAAUgd,EAAMc,EAAQ5H,GAChC,OAAI8G,EAAO,GACF,SAEA,UAGXhZ,SAAU,CACRN,QAAS,8FACTC,QAAS,wFACTC,SAAU,oEACVC,QAAS,kFACTC,SAAU,oEACVC,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,wBACRC,KAAM,wBACNzvB,EAAGmjF,EAAU,KACbzzD,GAAIyzD,EAAU,KACd9kF,EAAG8kF,EAAU,KACbxzD,GAAIwzD,EAAU,KACdvzD,EAAGuzD,EAAU,KACbtzD,GAAIszD,EAAU,KACd5kF,EAAG4kF,EAAU,KACbrzD,GAAIqzD,EAAU,KACdlzD,EAAGkzD,EAAU,KACbjzD,GAAIizD,EAAU,KACdhzD,EAAGgzD,EAAU,KACb/yD,GAAI+yD,EAAU,MAEhBt8C,SAAU,SAAUniB,GAClB,OAAOA,EAAO9d,QAAQ,UAAM,MAE9BuoC,WAAY,SAAUzqB,GACpB,OAAOA,EAAO9d,QAAQ,OAAO,SAAUyG,GACrC,OAAO01E,EAAU11E,MAChBzG,QAAQ,KAAM,WAEnB6yB,KAAM,CACJL,IAAK,EAELC,IAAK,MAtGuFwgB,CAAQ,EAAQ,K,iBCEzG,SAAUqe,GACjB,aAEWA,EAAOl4B,aAAa,QAAS,CACtChK,OAAQ,0WAAwEzkB,MAAM,KACtFwkB,YAAa,0WAAwExkB,MAAM,KAC3F0pB,SAAU,uRAAsD1pB,MAAM,KACtEypB,cAAe,mMAAwCzpB,MAAM,KAC7DwpB,YAAa,mDAAgBxpB,MAAM,KACnC8wD,oBAAoB,EACpB/zC,eAAgB,CACdI,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAERpC,SAAU,CACRN,QAAS,8FACTC,QAAS,kFACTC,SAAU,oEACVC,QAAS,kFACTC,SAAU,oEACVC,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,kBACRC,KAAM,wBACNzvB,EAAG,2BACH0vB,GAAI,oCACJrxB,EAAG,iCACHsxB,GAAI,oCACJC,EAAG,2BACHC,GAAI,oCACJtxB,EAAG,qBACHuxB,GAAI,8BACJG,EAAG,qBACHC,GAAI,8BACJC,EAAG,qBACHC,GAAI,qCAENqJ,KAAM,CACJL,IAAK,EAELC,IAAK,KA9CuFwgB,CAAQ,EAAQ,K,iBCAzG,SAAUqe,GACjB,aAEA,IAAI6qB,EAAY,CACd,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,UAEDC,EAAY,CACd,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,KAEI9qB,EAAOl4B,aAAa,QAAS,CACtChK,OAAQ,wYAA6EzkB,MAAM,KAC3FwkB,YAAa,wYAA6ExkB,MAAM,KAChG0pB,SAAU,uRAAsD1pB,MAAM,KACtEypB,cAAe,mMAAwCzpB,MAAM,KAC7DwpB,YAAa,mDAAgBxpB,MAAM,KACnC8wD,oBAAoB,EACpB/zC,eAAgB,CACdI,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAERkQ,cAAe,gBACfZ,KAAM,SAAUt2B,GACd,MAAO,WAAQA,GAEjB4gB,SAAU,SAAUgd,EAAMc,EAAQ5H,GAChC,OAAI8G,EAAO,GACF,SAEA,UAGXhZ,SAAU,CACRN,QAAS,8FACTC,QAAS,kFACTC,SAAU,oEACVC,QAAS,kFACTC,SAAU,oEACVC,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,kBACRC,KAAM,wBACNzvB,EAAG,2BACH0vB,GAAI,oCACJrxB,EAAG,iCACHsxB,GAAI,oCACJC,EAAG,2BACHC,GAAI,oCACJtxB,EAAG,qBACHuxB,GAAI,8BACJG,EAAG,qBACHC,GAAI,8BACJC,EAAG,qBACHC,GAAI,qCAENyW,SAAU,SAAUniB,GAClB,OAAOA,EAAO9d,QAAQ,mEAAiB,SAAUyG,GAC/C,OAAO21E,EAAU31E,MAChBzG,QAAQ,UAAM,MAEnBuoC,WAAY,SAAUzqB,GACpB,OAAOA,EAAO9d,QAAQ,OAAO,SAAUyG,GACrC,OAAO01E,EAAU11E,MAChBzG,QAAQ,KAAM,WAEnB6yB,KAAM,CACJL,IAAK,EAELC,IAAK,KA3FuFwgB,CAAQ,EAAQ,K,iBCCzG,SAAUqe,GACjB,aAEWA,EAAOl4B,aAAa,QAAS,CACtChK,OAAQ,gXAAyEzkB,MAAM,KACvFwkB,YAAa,gXAAyExkB,MAAM,KAC5F0pB,SAAU,uRAAsD1pB,MAAM,KACtEypB,cAAe,mMAAwCzpB,MAAM,KAC7DwpB,YAAa,mDAAgBxpB,MAAM,KACnC8wD,oBAAoB,EACpB/zC,eAAgB,CACdI,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAERpC,SAAU,CACRN,QAAS,8FACTC,QAAS,kFACTC,SAAU,oEACVC,QAAS,kFACTC,SAAU,oEACVC,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,kBACRC,KAAM,wBACNzvB,EAAG,2BACH0vB,GAAI,oCACJrxB,EAAG,iCACHsxB,GAAI,oCACJC,EAAG,2BACHC,GAAI,oCACJtxB,EAAG,qBACHuxB,GAAI,8BACJG,EAAG,qBACHC,GAAI,8BACJC,EAAG,qBACHC,GAAI,qCAENqJ,KAAM,CACJL,IAAK,EAELC,IAAK,KA9CuFwgB,CAAQ,EAAQ,K,iBCCzG,SAAUqe,GACjB,aAEA,IAAIgL,EAAW,CACb,EAAG,QACH,EAAG,QACH,EAAG,QACH,GAAI,QACJ,GAAI,QACJ,EAAG,OACH,EAAG,OACH,GAAI,OACJ,GAAI,OACJ,EAAG,cACH,EAAG,cACH,IAAK,cACL,EAAG,YACH,EAAG,QACH,GAAI,QACJ,GAAI,QACJ,GAAI,kBACJ,GAAI,mBAEGhL,EAAOl4B,aAAa,KAAM,CACjChK,OAAQ,+EAA+EzkB,MAAM,KAC7FwkB,YAAa,kDAAkDxkB,MAAM,KACrE0pB,SAAU,2KAAqE1pB,MAAM,KACrFypB,cAAe,sDAA8BzpB,MAAM,KACnDwpB,YAAa,+CAAuBxpB,MAAM,KAC1C8wD,oBAAoB,EACpB/zC,eAAgB,CACdI,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAERpC,SAAU,CACRN,QAAS,qBACTC,QAAS,kBACTC,SAAU,mDACVC,QAAS,qBACTC,SAAU,iDACVC,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,WACRC,KAAM,qBACNzvB,EAAG,+BACH0vB,GAAI,iBACJrxB,EAAG,uBACHsxB,GAAI,sBACJC,EAAG,WACHC,GAAI,UACJtxB,EAAG,aACHuxB,GAAI,YACJG,EAAG,SACHC,GAAI,QACJC,EAAG,SACHC,GAAI,SAEN4O,cAAe,oDACfZ,KAAM,SAAUt2B,GACd,MAAO,8BAAmBrG,KAAKqG,IAEjC4gB,SAAU,SAAUgd,EAAMc,EAAQ5H,GAChC,OAAI8G,EAAO,EACF,YACEA,EAAO,GACT,kBACEA,EAAO,GACT,eAEA,cAGX3G,uBAAwB,6DACxBlR,QAAS,SAAUpJ,GACjB,GAAe,IAAXA,EAEF,OAAOA,EAAS,kBAGlB,IAAI/c,EAAI+c,EAAS,GACb7I,EAAI6I,EAAS,IAAM/c,EACnBpJ,EAAImmB,GAAU,IAAM,IAAM,KAC9B,OAAOA,GAAUy+C,EAASx7D,IAAMw7D,EAAStnD,IAAMsnD,EAAS5kE,KAE1Dm7B,KAAM,CACJL,IAAK,EAELC,IAAK,KA7FuFwgB,CAAQ,EAAQ,K,iBCGzG,SAAUqe,GACjB,aAEA,SAAS2J,EAAOuhB,EAAM3gC,GACpB,IAAI4gC,EAAQD,EAAK7xE,MAAM,KACvB,OAAOkxC,EAAM,KAAO,GAAKA,EAAM,MAAQ,GAAK4gC,EAAM,GAAK5gC,EAAM,IAAM,GAAKA,EAAM,IAAM,IAAMA,EAAM,IAAM,IAAMA,EAAM,KAAO,IAAM4gC,EAAM,GAAKA,EAAM,GAGlJ,SAASC,EAAuB7+D,EAAQ6L,EAAe9wB,GAUrD,MAAY,MAARA,EACK8wB,EAAgB,6CAAY,6CAClB,MAAR9wB,EACF8wB,EAAgB,6CAAY,6CAE5B7L,EAAS,IAAMo9C,EAdX,CACXnyC,GAAIY,EAAgB,6HAA2B,6HAC/CX,GAAIW,EAAgB,6HAA2B,6HAC/CT,GAAIS,EAAgB,6HAA2B,6HAC/CR,GAAI,6EACJI,GAAI,iHACJE,GAAI,8EAQgC5wB,IAAOilB,GAItCyzC,EAAOl4B,aAAa,KAAM,CACjChK,OAAQ,CACNzO,OAAQ,oiBAAuGhW,MAAM,KACrHqwD,WAAY,whBAAqGrwD,MAAM,MAEzHwkB,YAAa,sRAA0DxkB,MAAM,KAC7E0pB,SAAU,CACR1T,OAAQ,+SAA0DhW,MAAM,KACxEqwD,WAAY,+SAA0DrwD,MAAM,KAC5EolB,SAAU,8IAEZqE,cAAe,6FAAuBzpB,MAAM,KAC5CwpB,YAAa,6FAAuBxpB,MAAM,KAC1C+c,eAAgB,CACdI,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,sBACJC,IAAK,6BACLC,KAAM,oCAERpC,SAAU,CACRN,QAAS,6CACTC,QAAS,mDACTE,QAAS,6CACTD,SAAU,WACR,MAAO,6BAETE,SAAU,WACR,OAAQrqB,KAAK05B,OACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACH,MAAO,uEAET,KAAK,EACL,KAAK,EACL,KAAK,EACH,MAAO,mEAGbpP,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,8BACRC,KAAM,8BACNzvB,EAAG,wFACH3B,EAAGilF,EACH3zD,GAAI2zD,EACJ1zD,EAAG0zD,EACHzzD,GAAIyzD,EACJ/kF,EAAG,iCACHuxB,GAAIwzD,EACJrzD,EAAG,iCACHC,GAAIozD,EACJnzD,EAAG,qBACHC,GAAIkzD,GAENtkD,cAAe,wHACfZ,KAAM,SAAUt2B,GACd,MAAO,8DAAiBrG,KAAKqG,IAE/B4gB,SAAU,SAAUgd,EAAMc,EAAQ5H,GAChC,OAAI8G,EAAO,EACF,2BACEA,EAAO,GACT,uCACEA,EAAO,GACT,qBAEA,wCAGX3G,uBAAwB,uCACxBlR,QAAS,SAAUpJ,EAAQynB,GACzB,OAAQA,GACN,IAAK,IACL,IAAK,IACL,IAAK,MACL,IAAK,IACL,IAAK,IACH,OAAQznB,EAAS,KAAO,GAAKA,EAAS,KAAO,GAAMA,EAAS,MAAQ,IAAMA,EAAS,MAAQ,GAAqBA,EAAS,UAAzBA,EAAS,UAE3G,IAAK,IACH,OAAOA,EAAS,gBAElB,QACE,OAAOA,IAGbgV,KAAM,CACJL,IAAK,EAELC,IAAK,KA1HuFwgB,CAAQ,EAAQ,K,iBCDzG,SAAUqe,GACjB,aAESA,EAAOl4B,aAAa,KAAM,CACjChK,OAAQ,kbAAoFzkB,MAAM,KAClGwkB,YAAa,sOAAkDxkB,MAAM,KACrE0pB,SAAU,ySAAyD1pB,MAAM,KACzEypB,cAAe,uIAA8BzpB,MAAM,KACnDwpB,YAAa,6FAAuBxpB,MAAM,KAC1C+c,eAAgB,CACdI,GAAI,OACJD,IAAK,UACLE,EAAG,YACHC,GAAI,cACJC,IAAK,mBACLC,KAAM,0BAERpC,SAAU,CACRN,QAAS,uCACTC,QAAS,uCACTC,SAAU,mBACVC,QAAS,6CACTC,SAAU,WACR,OAAQrqB,KAAK05B,OACX,KAAK,EACL,KAAK,EACL,KAAK,EACH,MAAO,sEAET,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACH,MAAO,kEAGbpP,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,8BACRC,KAAM,oCACNzvB,EAAG,wFACH0vB,GAAI,gDACJrxB,EAAG,uCACHsxB,GAAI,0CACJC,EAAG,qBACHC,GAAI,8BACJtxB,EAAG,qBACHuxB,GAAI,8BACJC,EAAG,6CACHC,GAAI,gDACJC,EAAG,iCACHC,GAAI,0CACJC,EAAG,uCACHC,GAAI,2CAEN2O,uBAAwB,0FACxBlR,QAAS,SAAUpJ,GACjB,IAAI8+D,EAAY9+D,EAAS,GACrB++D,EAAc/+D,EAAS,IAE3B,OAAe,IAAXA,EACKA,EAAS,gBACS,IAAhB++D,EACF/+D,EAAS,gBACP++D,EAAc,IAAMA,EAAc,GACpC/+D,EAAS,gBACO,IAAd8+D,EACF9+D,EAAS,gBACO,IAAd8+D,EACF9+D,EAAS,gBACO,IAAd8+D,GAAiC,IAAdA,EACrB9+D,EAAS,gBAETA,EAAS,iBAGpBgV,KAAM,CACJL,IAAK,EAELC,IAAK,KAjFuFwgB,CAAQ,EAAQ,K,iBCCzG,SAAUqe,GACjB,aAESA,EAAOl4B,aAAa,KAAM,CACjChK,OAAQ,uKAA8IzkB,MAAM,KAC5JwkB,YAAa,gEAAiDxkB,MAAM,KACpE0pB,SAAU,yDAA+C1pB,MAAM,KAC/DypB,cAAe,mCAA8BzpB,MAAM,KACnDwpB,YAAa,uBAAuBxpB,MAAM,KAC1C+c,eAAgB,CACdI,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,2BACJC,IAAK,kDACLC,KAAM,wDAERpC,SAAU,CACRN,QAAS,yBACTC,QAAS,2BACTC,SAAU,+BACVC,QAAS,2BACTC,SAAU,6CACVC,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,oBACRC,KAAM,uBACNzvB,EAAG,kBACH0vB,GAAI,aACJrxB,EAAG,eACHsxB,GAAI,YACJC,EAAG,uBACHC,GAAI,oBACJtxB,EAAG,aACHuxB,GAAI,UACJG,EAAG,aACHC,GAAI,UACJC,EAAG,YACHC,GAAI,UAENqJ,KAAM,CACJL,IAAK,EAELC,IAAK,KA7CuFwgB,CAAQ,EAAQ,K,iBCCzG,SAAUqe,GACjB,aAEA,IAAI6qB,EAAY,CACd,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,UAEDC,EAAY,CACd,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,KAEE9qB,EAAOl4B,aAAa,KAAM,CACjChK,OAAQ,sdAA0FzkB,MAAM,KACxGwkB,YAAa,4UAAmExkB,MAAM,KACtF0pB,SAAU,2TAA4D1pB,MAAM,KAC5EypB,cAAe,6LAAuCzpB,MAAM,KAC5DwpB,YAAa,+JAAkCxpB,MAAM,KACrD+c,eAAgB,CACdI,GAAI,4BACJD,IAAK,+BACLE,EAAG,aACHC,GAAI,cACJC,IAAK,yCACLC,KAAM,gDAERpC,SAAU,CACRN,QAAS,oBACTC,QAAS,wDACTC,SAAU,WACVC,QAAS,sCACTC,SAAU,0BACVC,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,wBACRC,KAAM,wBACNzvB,EAAG,sEACH0vB,GAAI,gDACJrxB,EAAG,8CACHsxB,GAAI,oCACJC,EAAG,8CACHC,GAAI,oCACJtxB,EAAG,kCACHuxB,GAAI,wBACJG,EAAG,kCACHC,GAAI,wBACJC,EAAG,kCACHC,GAAI,yBAENyW,SAAU,SAAUniB,GAClB,OAAOA,EAAO9d,QAAQ,mEAAiB,SAAUyG,GAC/C,OAAO21E,EAAU31E,OAGrB8hC,WAAY,SAAUzqB,GACpB,OAAOA,EAAO9d,QAAQ,OAAO,SAAUyG,GACrC,OAAO01E,EAAU11E,OAGrB2xB,cAAe,+HACf4G,aAAc,SAAUF,EAAMhd,GAK5B,OAJa,KAATgd,IACFA,EAAO,GAGQ,uBAAbhd,GAAsBgd,GAAQ,GAAkB,mCAAbhd,GAAwBgd,EAAO,GAAkB,mCAAbhd,EAClEgd,EAAO,GAEPA,GAGXhd,SAAU,SAAUgd,EAAMc,EAAQ5H,GAChC,OAAI8G,EAAO,EACF,qBACEA,EAAO,GACT,2BACEA,EAAO,GACT,iCACEA,EAAO,GACT,iCAEA,sBAGXjM,KAAM,CACJL,IAAK,EAELC,IAAK,KAxGuFwgB,CAAQ,EAAQ,K,iBCCzG,SAAUqe,GACjB,aAEA,IAAI6qB,EAAY,CACd,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,UAEDC,EAAY,CACd,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,KAEI9qB,EAAOl4B,aAAa,QAAS,CACtChK,OAAQ,sdAA0FzkB,MAAM,KACxGwkB,YAAa,4UAAmExkB,MAAM,KACtF0pB,SAAU,2TAA4D1pB,MAAM,KAC5EypB,cAAe,6LAAuCzpB,MAAM,KAC5DwpB,YAAa,+JAAkCxpB,MAAM,KACrD+c,eAAgB,CACdI,GAAI,4BACJD,IAAK,+BACLE,EAAG,aACHC,GAAI,cACJC,IAAK,yCACLC,KAAM,gDAERpC,SAAU,CACRN,QAAS,oBACTC,QAAS,wDACTC,SAAU,WACVC,QAAS,sCACTC,SAAU,0BACVC,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,wBACRC,KAAM,wBACNzvB,EAAG,sEACH0vB,GAAI,gDACJrxB,EAAG,8CACHsxB,GAAI,oCACJC,EAAG,8CACHC,GAAI,oCACJtxB,EAAG,kCACHuxB,GAAI,wBACJG,EAAG,kCACHC,GAAI,wBACJC,EAAG,kCACHC,GAAI,yBAENyW,SAAU,SAAUniB,GAClB,OAAOA,EAAO9d,QAAQ,mEAAiB,SAAUyG,GAC/C,OAAO21E,EAAU31E,OAGrB8hC,WAAY,SAAUzqB,GACpB,OAAOA,EAAO9d,QAAQ,OAAO,SAAUyG,GACrC,OAAO01E,EAAU11E,OAGrB2xB,cAAe,6LACf4G,aAAc,SAAUF,EAAMhd,GAK5B,OAJa,KAATgd,IACFA,EAAO,GAGQ,uBAAbhd,EACKgd,EAAO,EAAIA,EAAOA,EAAO,GACV,uBAAbhd,GAEa,6BAAbA,EADFgd,EAGe,mCAAbhd,EACFgd,GAAQ,EAAIA,EAAOA,EAAO,GACX,mCAAbhd,GAEa,+CAAbA,EADFgd,EAAO,QACT,GAIThd,SAAU,SAAUgd,EAAMc,EAAQ5H,GAChC,OAAI8G,EAAO,EACF,qBACEA,EAAO,EACT,qBACEA,EAAO,GACT,2BACEA,EAAO,GACT,iCACEA,EAAO,GACT,iCACEA,EAAO,GACT,6CAEA,sBAGXjM,KAAM,CACJL,IAAK,EAELC,IAAK,KApHuFwgB,CAAQ,EAAQ,K,iBCCzG,SAAUqe,GACjB,aAEA,IAAI6qB,EAAY,CACd,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,UAEDC,EAAY,CACd,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,KAEE9qB,EAAOl4B,aAAa,KAAM,CACjChK,OAAQ,wzBAAqJzkB,MAAM,KACnKwkB,YAAa,qPAAiExkB,MAAM,KACpF0kB,iBAAkB,+BAClBmsC,kBAAkB,EAClBnnC,SAAU,mbAAgF1pB,MAAM,KAChGypB,cAAe,2QAAoDzpB,MAAM,KACzEwpB,YAAa,iIAA6BxpB,MAAM,KAChD+c,eAAgB,CACdI,GAAI,SACJD,IAAK,YACLE,EAAG,aACHC,GAAI,cACJC,IAAK,sBACLC,KAAM,6BAERpC,SAAU,CACRN,QAAS,4CACTC,QAAS,4CACTC,SAAU,mGACVC,QAAS,gCACTC,SAAU,kGACVC,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,kBACRC,KAAM,oCACNzvB,EAAG,iCACH0vB,GAAI,0CACJrxB,EAAG,+DACHsxB,GAAI,oCACJC,EAAG,qEACHC,GAAI,0CACJtxB,EAAG,mDACHuxB,GAAI,8BACJG,EAAG,yDACHC,GAAI,8BACJC,EAAG,6CACHC,GAAI,mBAENyW,SAAU,SAAUniB,GAClB,OAAOA,EAAO9d,QAAQ,mEAAiB,SAAUyG,GAC/C,OAAO21E,EAAU31E,OAGrB8hC,WAAY,SAAUzqB,GACpB,OAAOA,EAAO9d,QAAQ,OAAO,SAAUyG,GACrC,OAAO01E,EAAU11E,OAGrB2xB,cAAe,6MACf4G,aAAc,SAAUF,EAAMhd,GAK5B,OAJa,KAATgd,IACFA,EAAO,GAGQ,yCAAbhd,GAAyBgd,GAAQ,GAAkB,+CAAbhd,GAA0Bgd,EAAO,GAAkB,+CAAbhd,EACvEgd,EAAO,GAEPA,GAGXhd,SAAU,SAAUgd,EAAMc,EAAQ5H,GAChC,OAAI8G,EAAO,EACF,uCACEA,EAAO,GACT,6CACEA,EAAO,GACT,6CACEA,EAAO,GACT,6CAEA,wCAGXjM,KAAM,CACJL,IAAK,EAELC,IAAK,KA1GuFwgB,CAAQ,EAAQ,K,iBCCzG,SAAUqe,GACjB,aAEA,SAASurB,EAAyBh/D,EAAQ6L,EAAe9wB,GAMvD,OAAOilB,EAAS,IAAM/Y,EALT,CACXikB,GAAI,WACJO,GAAI,MACJJ,GAAI,UAEgCtwB,GAAMilB,GAG9C,SAASi/D,EAAwBj/D,GAC/B,OAAQk/D,EAAWl/D,IACjB,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACH,OAAOA,EAAS,SAElB,QACE,OAAOA,EAAS,UAItB,SAASk/D,EAAWl/D,GAClB,OAAIA,EAAS,EACJk/D,EAAWl/D,EAAS,IAGtBA,EAGT,SAAS/Y,EAAS00C,EAAM37B,GACtB,OAAe,IAAXA,EACKm/D,EAAaxjC,GAGfA,EAGT,SAASwjC,EAAaxjC,GACpB,IAAIyjC,EAAgB,CAClBxlF,EAAG,IACHud,EAAG,IACHrd,EAAG,KAGL,YAAsC+I,IAAlCu8E,EAAczjC,EAAKl5C,OAAO,IACrBk5C,EAGFyjC,EAAczjC,EAAKl5C,OAAO,IAAMk5C,EAAK/F,UAAU,GAGxD,IAAIlkB,EAAc,CAAC,QAAS,mBAAe,QAAS,QAAS,QAAS,cAAe,QAAS,QAAS,QAAS,QAAS,OAAQ,SAC7HD,EAAc,uJACd6rC,EAAoB,6FACpBC,EAAyB,gEACzB8hB,EAAoB,CAAC,QAAS,QAAS,WAAY,sBAAkB,SAAU,WAAY,YAC3FC,EAAqB,CAAC,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,SAC5EC,EAAmB,CAAC,OAAQ,OAAQ,eAAgB,QAAS,OAAQ,OAAQ,QACxE9rB,EAAOl4B,aAAa,KAAM,CACjChK,OAAQ,qFAAgFzkB,MAAM,KAC9FwkB,YAAa,wDAAmDxkB,MAAM,KACtE0pB,SAAU,kDAA6C1pB,MAAM,KAC7DypB,cAAe,8BAA8BzpB,MAAM,KACnDwpB,YAAa,wBAAwBxpB,MAAM,KAC3CopB,cAAeqpD,EACfF,kBAAmBA,EACnBC,mBAAoBA,EACpBC,iBAAkBA,EAClB9tD,YAAaA,EACbD,iBAAkBC,EAClB6rC,kBAAmBA,EACnBC,uBAAwBA,EACxB7rC,YAAaA,EACb8rC,gBAAiB9rC,EACjB+rC,iBAAkB/rC,EAClB7H,eAAgB,CACdI,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,sBACJC,IAAK,4BACLC,KAAM,mCAERpC,SAAU,CACRN,QAAS,gBACTC,QAAS,0BACTC,SAAU,eACVC,QAAS,qBACTC,SAAU,qBACVC,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,YACRC,KAAM,cACNzvB,EAAG,2BACH0vB,GAAI,YACJrxB,EAAG,cACHsxB,GAAI8zD,EACJ7zD,EAAG,SACHC,GAAI,SACJtxB,EAAG,YACHuxB,GAAI2zD,EACJxzD,EAAG,SACHC,GAAIuzD,EACJtzD,EAAG,WACHC,GAAIszD,GAEN3kD,uBAAwB,qBACxBlR,QAAS,SAAUpJ,GAEjB,OAAOA,GADiB,IAAXA,EAAe,QAAO,QAGrCgV,KAAM,CACJL,IAAK,EAELC,IAAK,GAGP2F,cAAe,YAEfZ,KAAM,SAAU5tB,GACd,MAAiB,SAAVA,GAETkY,SAAU,SAAUgd,EAAMc,EAAQ5H,GAChC,OAAO8G,EAAO,GAAK,OAAS,UAlIgEmU,CAAQ,EAAQ,K,iBCEzG,SAAUqe,GACjB,aAEA,SAAS4J,EAAUr9C,EAAQ6L,EAAe9wB,GACxC,IAAImmB,EAASlB,EAAS,IAEtB,OAAQjlB,GACN,IAAK,KASH,OAPEmmB,GADa,IAAXlB,EACQ,UACU,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC/B,UAEA,UAKd,IAAK,IACH,OAAO6L,EAAgB,eAAiB,eAE1C,IAAK,KASH,OAPE3K,GADa,IAAXlB,EACQ,SACU,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC/B,SAEA,SAKd,IAAK,IACH,OAAO6L,EAAgB,YAAc,cAEvC,IAAK,KASH,OAPE3K,GADa,IAAXlB,EACQ,MACU,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC/B,OAEA,OAKd,IAAK,KAOH,OALEkB,GADa,IAAXlB,EACQ,MAEA,OAKd,IAAK,KASH,OAPEkB,GADa,IAAXlB,EACQ,SACU,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC/B,UAEA,UAKd,IAAK,KASH,OAPEkB,GADa,IAAXlB,EACQ,SACU,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC/B,SAEA,UAOTyzC,EAAOl4B,aAAa,KAAM,CACjChK,OAAQ,qFAAqFzkB,MAAM,KACnGwkB,YAAa,8DAA8DxkB,MAAM,KACjF6wD,kBAAkB,EAClBnnC,SAAU,iEAA4D1pB,MAAM,KAC5EypB,cAAe,0CAAqCzpB,MAAM,KAC1DwpB,YAAa,4BAAuBxpB,MAAM,KAC1C8wD,oBAAoB,EACpB/zC,eAAgB,CACdI,GAAI,OACJD,IAAK,UACLE,EAAG,aACHC,GAAI,eACJC,IAAK,oBACLC,KAAM,2BAERpC,SAAU,CACRN,QAAS,eACTC,QAAS,eACTC,SAAU,WACR,OAAQnqB,KAAK05B,OACX,KAAK,EACH,MAAO,wBAET,KAAK,EACH,MAAO,uBAET,KAAK,EACH,MAAO,sBAET,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACH,MAAO,oBAGbtP,QAAS,oBACTC,SAAU,WACR,OAAQrqB,KAAK05B,OACX,KAAK,EACL,KAAK,EACH,MAAO,4BAET,KAAK,EACH,MAAO,gCAET,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACH,MAAO,8BAGbpP,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,QACRC,KAAM,WACNzvB,EAAG,cACH0vB,GAAIoyC,EACJzjE,EAAGyjE,EACHnyC,GAAImyC,EACJlyC,EAAGkyC,EACHjyC,GAAIiyC,EACJvjE,EAAG,MACHuxB,GAAIgyC,EACJ7xC,EAAG,SACHC,GAAI4xC,EACJ3xC,EAAG,SACHC,GAAI0xC,GAEN/iC,uBAAwB,YACxBlR,QAAS,MACT4L,KAAM,CACJL,IAAK,EAELC,IAAK,KA7JuFwgB,CAAQ,EAAQ,K,iBCAzG,SAAUqe,GACjB,aAESA,EAAOl4B,aAAa,KAAM,CACjChK,OAAQ,CACN4rC,WAAY,uFAAoFrwD,MAAM,KACtGgW,OAAQ,wHAAqHhW,MAAM,KACnIolB,SAAU,mBAEZZ,YAAa,iEAA8DxkB,MAAM,KACjF6wD,kBAAkB,EAClBnnC,SAAU,8DAA8D1pB,MAAM,KAC9EypB,cAAe,8BAA8BzpB,MAAM,KACnDwpB,YAAa,uBAAuBxpB,MAAM,KAC1C8wD,oBAAoB,EACpB/zC,eAAgB,CACdI,GAAI,OACJD,IAAK,UACLE,EAAG,aACHC,GAAI,mBACJq1D,GAAI,aACJp1D,IAAK,gCACLq1D,IAAK,mBACLp1D,KAAM,qCACNq1D,KAAM,wBAERz3D,SAAU,CACRN,QAAS,WACP,MAAO,YAA+B,IAAjBjqB,KAAKu7B,QAAgB,MAAQ,MAAQ,QAE5DrR,QAAS,WACP,MAAO,eAA+B,IAAjBlqB,KAAKu7B,QAAgB,MAAQ,MAAQ,QAE5DpR,SAAU,WACR,MAAO,YAA+B,IAAjBnqB,KAAKu7B,QAAgB,MAAQ,MAAQ,QAE5DnR,QAAS,WACP,MAAO,YAA+B,IAAjBpqB,KAAKu7B,QAAgB,MAAQ,MAAQ,QAE5DlR,SAAU,WACR,MAAO,wBAA2C,IAAjBrqB,KAAKu7B,QAAgB,MAAQ,MAAQ,QAExEjR,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,eACRC,KAAM,QACNzvB,EAAG,aACH0vB,GAAI,YACJrxB,EAAG,WACHsxB,GAAI,YACJC,EAAG,WACHC,GAAI,WACJtxB,EAAG,SACHuxB,GAAI,UACJG,EAAG,SACHC,GAAI,WACJC,EAAG,SACHC,GAAI,WAEN2O,uBAAwB,wBACxBlR,QAAS,SAAUpJ,EAAQynB,GACzB,IAAIrf,EAAoB,IAAXpI,EAAe,IAAiB,IAAXA,EAAe,IAAiB,IAAXA,EAAe,IAAiB,IAAXA,EAAe,IAAM,OAMjG,MAJe,MAAXynB,GAA6B,MAAXA,IACpBrf,EAAS,KAGJpI,EAASoI,GAElB4M,KAAM,CACJL,IAAK,EAELC,IAAK,KA1EuFwgB,CAAQ,EAAQ,K,iBCCzG,SAAUqe,GACjB,aAESA,EAAOl4B,aAAa,KAAM,CACjChK,OAAQ,0TAAgEzkB,MAAM,KAC9EwkB,YAAa,sOAAkDxkB,MAAM,KACrE0pB,SAAU,2WAAoE1pB,MAAM,KACpFypB,cAAe,iIAA6BzpB,MAAM,KAClDwpB,YAAa,6FAAuBxpB,MAAM,KAC1C+c,eAAgB,CACdI,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,iHACJC,IAAK,wHACLC,KAAM,+HAERpC,SAAU,CACRN,QAAS,6EACTC,QAAS,6EACTE,QAAS,6EACTD,SAAU,wFACVE,SAAU,wFACVC,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,SAAU3C,GAEhB,OAAOA,GADK,mCAAUmV,KAAKnV,GAAU,qBAAQ,uBAAQmV,KAAKnV,GAAU,qBAAQ,uBAG9E4C,KAAM,0CACNzvB,EAAG,6EACH0vB,GAAI,gDACJrxB,EAAG,oDACHsxB,GAAI,oCACJC,EAAG,oDACHC,GAAI,oCACJtxB,EAAG,wCACHuxB,GAAI,wBACJG,EAAG,8CACHC,GAAI,8BACJC,EAAG,wCACHC,GAAI,yBAEN2O,uBAAwB,6BACxBlR,QAAS,wBACT4L,KAAM,CACJL,IAAK,EAELC,IAAK,KAlDuFwgB,CAAQ,EAAQ,K,iBCEzG,SAAUqe,GACjB,aAESA,EAAOl4B,aAAa,KAAM,CACjChK,OAAQ,yFAAyFzkB,MAAM,KACvGwkB,YAAa,qDAAqDxkB,MAAM,KACxE0pB,SAAU,+EAA+E1pB,MAAM,KAC/FypB,cAAe,+BAA+BzpB,MAAM,KACpDwpB,YAAa,uBAAuBxpB,MAAM,KAC1C8wD,oBAAoB,EAEpB/zC,eAAgB,CACdI,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAERpC,SAAU,CACRN,QAAS,iBACTC,QAAS,gBACTC,SAAU,eACVC,QAAS,eACTC,SAAU,wBACVC,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,UACRC,KAAM,cACNzvB,EAAG,mBACH0vB,GAAI,YACJrxB,EAAG,QACHsxB,GAAI,WACJC,EAAG,MACHC,GAAI,SACJtxB,EAAG,UACHuxB,GAAI,aACJG,EAAG,MACHC,GAAI,SACJC,EAAG,WACHC,GAAI,cAEN2O,uBAAwB,mCAExBlR,QAAS,SAAUpJ,GACjB,IACIoI,EAAS,GAeb,OAhBQpI,EAMA,GAEJoI,EADQ,KAPJpI,GAOgB,KAPhBA,GAO4B,KAP5BA,GAOwC,KAPxCA,GAOoD,MAPpDA,EAQK,MAEA,MAVLA,EAYO,IACboI,EAXW,CAAC,GAAI,KAAM,KAAM,MAAO,MAAO,KAAM,KAAM,KAAM,MAAO,MAAO,MAC5E,KAAM,MAAO,KAAM,KAAM,MAAO,KAAM,KAAM,MAAO,KAAM,OAHjDpI,IAgBDA,EAASoI,GAElB4M,KAAM,CACJL,IAAK,EAELC,IAAK,KApEuFwgB,CAAQ,EAAQ,K,iBCAzG,SAAUqe,GACjB,aAESA,EAAOl4B,aAAa,KAAM,CACjChK,OAAQ,sFAAsFzkB,MAAM,KACpGwkB,YAAa,kDAAkDxkB,MAAM,KACrE0pB,SAAU,2DAAqD1pB,MAAM,KACrEypB,cAAe,oCAA8BzpB,MAAM,KACnDwpB,YAAa,6BAAuBxpB,MAAM,KAC1C+c,eAAgB,CACdI,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,eACJC,IAAK,qBACLC,KAAM,sCAERpC,SAAU,CACRN,QAAS,iBACTC,QAAS,oBACTC,SAAU,sBACVC,QAAS,oBACTC,SAAU,qBACVC,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,QACRC,KAAM,WACNzvB,EAAG,iBACH0vB,GAAI,cACJrxB,EAAG,WACHsxB,GAAI,cACJC,EAAG,UACHC,GAAI,WACJtxB,EAAG,SACHuxB,GAAI,UACJG,EAAG,cACHC,GAAI,gBACJC,EAAG,WACHC,GAAI,YAEN2O,uBAAwB,YACxBlR,QAAS,MACT4L,KAAM,CACJL,IAAK,EAELC,IAAK,KA/CuFwgB,CAAQ,EAAQ,K,iBCIzG,SAAUqe,GACjB,aAEA,SAASiK,EAAoB19C,EAAQ6L,EAAe9wB,EAAK+wB,GACvD,IAAIhJ,EAAS,CACXlpB,EAAG,CAAC,cAAe,gBACnBuxB,EAAG,CAAC,cAAe,gBACnBrxB,EAAG,CAAC,UAAW,aACfuxB,GAAI,CAACrL,EAAS,QAASA,EAAS,UAChCsL,EAAG,CAAC,aAAc,eAClBE,EAAG,CAAC,YAAa,eACjBC,GAAI,CAACzL,EAAS,UAAWA,EAAS,YAClC0L,EAAG,CAAC,WAAY,cAChBC,GAAI,CAAC3L,EAAS,SAAUA,EAAS,YAEnC,OAAO6L,EAAgB/I,EAAO/nB,GAAK,GAAK+nB,EAAO/nB,GAAK,GAG3C04D,EAAOl4B,aAAa,QAAS,CACtChK,OAAQ,2FAAqFzkB,MAAM,KACnGwkB,YAAa,mEAA6DxkB,MAAM,KAChF6wD,kBAAkB,EAClBnnC,SAAU,8DAA8D1pB,MAAM,KAC9EypB,cAAe,8BAA8BzpB,MAAM,KACnDwpB,YAAa,uBAAuBxpB,MAAM,KAC1C8wD,oBAAoB,EACpB/zC,eAAgB,CACdI,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,eACJC,IAAK,qBACLC,KAAM,4BAERpC,SAAU,CACRN,QAAS,sBACTK,SAAU,IACVJ,QAAS,uBACTC,SAAU,qBACVC,QAAS,wBACTC,SAAU,gCAEZ6D,aAAc,CACZb,OAAQ,QACRC,KAAM,SACNzvB,EAAG,oBACH0vB,GAAI,cACJrxB,EAAG8jE,EACHxyC,GAAI,aACJC,EAAGuyC,EACHtyC,GAAI,aACJtxB,EAAG4jE,EACHryC,GAAIqyC,EACJpyC,EAAGoyC,EACHnyC,GAAI,YACJC,EAAGkyC,EACHjyC,GAAIiyC,EACJhyC,EAAGgyC,EACH/xC,GAAI+xC,GAENpjC,uBAAwB,YACxBlR,QAAS,MACT4L,KAAM,CACJL,IAAK,EAELC,IAAK,KAlEuFwgB,CAAQ,EAAQ,K,iBCFzG,SAAUqe,GACjB,aAEA,SAASiK,EAAoB19C,EAAQ6L,EAAe9wB,EAAK+wB,GACvD,IAAIhJ,EAAS,CACXlpB,EAAG,CAAC,cAAe,gBACnBuxB,EAAG,CAAC,cAAe,gBACnBrxB,EAAG,CAAC,UAAW,aACfuxB,GAAI,CAACrL,EAAS,QAASA,EAAS,UAChCsL,EAAG,CAAC,aAAc,eAClBE,EAAG,CAAC,YAAa,eACjBC,GAAI,CAACzL,EAAS,UAAWA,EAAS,YAClC0L,EAAG,CAAC,WAAY,cAChBC,GAAI,CAAC3L,EAAS,SAAUA,EAAS,YAEnC,OAAO6L,EAAgB/I,EAAO/nB,GAAK,GAAK+nB,EAAO/nB,GAAK,GAG3C04D,EAAOl4B,aAAa,QAAS,CACtChK,OAAQ,wFAAqFzkB,MAAM,KACnGwkB,YAAa,gEAA6DxkB,MAAM,KAChF6wD,kBAAkB,EAClBnnC,SAAU,8DAA8D1pB,MAAM,KAC9EypB,cAAe,uBAAuBzpB,MAAM,KAC5CwpB,YAAa,uBAAuBxpB,MAAM,KAC1C8wD,oBAAoB,EACpB/zC,eAAgB,CACdI,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,eACJC,IAAK,qBACLC,KAAM,4BAERpC,SAAU,CACRN,QAAS,sBACTK,SAAU,IACVJ,QAAS,uBACTC,SAAU,qBACVC,QAAS,wBACTC,SAAU,gCAEZ6D,aAAc,CACZb,OAAQ,QACRC,KAAM,SACNzvB,EAAG,oBACH0vB,GAAI,cACJrxB,EAAG8jE,EACHxyC,GAAI,aACJC,EAAGuyC,EACHtyC,GAAI,aACJtxB,EAAG4jE,EACHryC,GAAIqyC,EACJpyC,EAAGoyC,EACHnyC,GAAI,YACJC,EAAGkyC,EACHjyC,GAAIiyC,EACJhyC,EAAGgyC,EACH/xC,GAAI+xC,GAENpjC,uBAAwB,YACxBlR,QAAS,MACT4L,KAAM,CACJL,IAAK,EAELC,IAAK,KAlEuFwgB,CAAQ,EAAQ,K,iBCCzG,SAAUqe,GACjB,aAEA,IAAIliC,EAAS,CAAC,mDAAY,+DAAc,uCAAU,mDAAY,eAAM,2BAAQ,uCAAU,mDAAY,2EAAgB,+DAAc,+DAAc,gEAC1IiF,EAAW,CAAC,mDAAY,2BAAQ,mDAAY,2BAAQ,+DAAc,uCAAU,oDACvEi9B,EAAOl4B,aAAa,KAAM,CACjChK,OAAQA,EACRD,YAAaC,EACbiF,SAAUA,EACVD,cAAeC,EACfF,YAAa,iLAAqCxpB,MAAM,KACxD+c,eAAgB,CACdI,GAAI,QACJD,IAAK,WACLE,EAAG,WACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAERkQ,cAAe,4BACfZ,KAAM,SAAUt2B,GACd,MAAO,iBAASA,GAElB4gB,SAAU,SAAUgd,EAAMc,EAAQ5H,GAChC,OAAI8G,EAAO,GACF,eAEA,gBAGXhZ,SAAU,CACRN,QAAS,4CACTC,QAAS,4CACTC,SAAU,UACVC,QAAS,4CACTC,SAAU,6DACVC,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,sDACRC,KAAM,0CACNzvB,EAAG,uFACH0vB,GAAI,sDACJrxB,EAAG,mDACHsxB,GAAI,0CACJC,EAAG,+DACHC,GAAI,sDACJtxB,EAAG,mDACHuxB,GAAI,0CACJG,EAAG,uCACHC,GAAI,8BACJC,EAAG,mDACHC,GAAI,2CAENyW,SAAU,SAAUniB,GAClB,OAAOA,EAAO9d,QAAQ,UAAM,MAE9BuoC,WAAY,SAAUzqB,GACpB,OAAOA,EAAO9d,QAAQ,KAAM,WAE9B6yB,KAAM,CACJL,IAAK,EAELC,IAAK,MAhEuFwgB,CAAQ,EAAQ,K,iBCCzG,SAAUqe,GACjB,aAEWA,EAAOl4B,aAAa,QAAS,CACtChK,OAAQ,wFAAwFzkB,MAAM,KACtGwkB,YAAa,kDAAkDxkB,MAAM,KACrE0pB,SAAU,2DAA2D1pB,MAAM,KAC3EypB,cAAe,8BAA8BzpB,MAAM,KACnDwpB,YAAa,uBAAuBxpB,MAAM,KAC1C+c,eAAgB,CACdI,GAAI,SACJD,IAAK,YACLE,EAAG,aACHC,GAAI,cACJC,IAAK,qBACLC,KAAM,4BAERpC,SAAU,CACRN,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,QACRC,KAAM,SACNzvB,EAAG,gBACH0vB,GAAI,aACJrxB,EAAG,WACHsxB,GAAI,aACJC,EAAG,UACHC,GAAI,WACJtxB,EAAG,QACHuxB,GAAI,UACJG,EAAG,UACHC,GAAI,YACJC,EAAG,SACHC,GAAI,YAEN2O,uBAAwB,uBACxBlR,QAAS,SAAUpJ,GACjB,IAAI7I,EAAI6I,EAAS,GAEjB,OAAOA,GADgC,OAAvBA,EAAS,IAAM,IAAY,KAAa,IAAN7I,EAAU,KAAa,IAANA,EAAU,KAAa,IAANA,EAAU,KAAO,OAGvG6d,KAAM,CACJL,IAAK,EAELC,IAAK,KAnDuFwgB,CAAQ,EAAQ,K,iBCCzG,SAAUqe,GACjB,aAEWA,EAAOl4B,aAAa,QAAS,CACtChK,OAAQ,wFAAwFzkB,MAAM,KACtGwkB,YAAa,kDAAkDxkB,MAAM,KACrE0pB,SAAU,2DAA2D1pB,MAAM,KAC3EypB,cAAe,8BAA8BzpB,MAAM,KACnDwpB,YAAa,uBAAuBxpB,MAAM,KAC1C+c,eAAgB,CACdI,GAAI,SACJD,IAAK,YACLE,EAAG,aACHC,GAAI,eACJC,IAAK,sBACLC,KAAM,6BAERpC,SAAU,CACRN,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,QACRC,KAAM,SACNzvB,EAAG,gBACH0vB,GAAI,aACJrxB,EAAG,WACHsxB,GAAI,aACJC,EAAG,UACHC,GAAI,WACJtxB,EAAG,QACHuxB,GAAI,UACJG,EAAG,UACHC,GAAI,YACJC,EAAG,SACHC,GAAI,YAEN2O,uBAAwB,uBACxBlR,QAAS,SAAUpJ,GACjB,IAAI7I,EAAI6I,EAAS,GAEjB,OAAOA,GADgC,OAAvBA,EAAS,IAAM,IAAY,KAAa,IAAN7I,EAAU,KAAa,IAANA,EAAU,KAAa,IAANA,EAAU,KAAO,SA7CTi+B,CAAQ,EAAQ,K,iBCCzG,SAAUqe,GACjB,aAEWA,EAAOl4B,aAAa,QAAS,CACtChK,OAAQ,wFAAwFzkB,MAAM,KACtGwkB,YAAa,kDAAkDxkB,MAAM,KACrE0pB,SAAU,2DAA2D1pB,MAAM,KAC3EypB,cAAe,8BAA8BzpB,MAAM,KACnDwpB,YAAa,uBAAuBxpB,MAAM,KAC1C+c,eAAgB,CACdI,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAERpC,SAAU,CACRN,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,QACRC,KAAM,SACNzvB,EAAG,gBACH0vB,GAAI,aACJrxB,EAAG,WACHsxB,GAAI,aACJC,EAAG,UACHC,GAAI,WACJtxB,EAAG,QACHuxB,GAAI,UACJG,EAAG,UACHC,GAAI,YACJC,EAAG,SACHC,GAAI,YAEN2O,uBAAwB,uBACxBlR,QAAS,SAAUpJ,GACjB,IAAI7I,EAAI6I,EAAS,GAEjB,OAAOA,GADgC,OAAvBA,EAAS,IAAM,IAAY,KAAa,IAAN7I,EAAU,KAAa,IAANA,EAAU,KAAa,IAANA,EAAU,KAAO,OAGvG6d,KAAM,CACJL,IAAK,EAELC,IAAK,KAnDuFwgB,CAAQ,EAAQ,K,iBCCzG,SAAUqe,GACjB,aAEWA,EAAOl4B,aAAa,QAAS,CACtChK,OAAQ,wFAAwFzkB,MAAM,KACtGwkB,YAAa,kDAAkDxkB,MAAM,KACrE0pB,SAAU,2DAA2D1pB,MAAM,KAC3EypB,cAAe,8BAA8BzpB,MAAM,KACnDwpB,YAAa,uBAAuBxpB,MAAM,KAC1C+c,eAAgB,CACdI,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAERpC,SAAU,CACRN,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,QACRC,KAAM,SACNzvB,EAAG,gBACH0vB,GAAI,aACJrxB,EAAG,WACHsxB,GAAI,aACJC,EAAG,UACHC,GAAI,WACJtxB,EAAG,QACHuxB,GAAI,UACJG,EAAG,UACHC,GAAI,YACJC,EAAG,SACHC,GAAI,YAEN2O,uBAAwB,uBACxBlR,QAAS,SAAUpJ,GACjB,IAAI7I,EAAI6I,EAAS,GAEjB,OAAOA,GADgC,OAAvBA,EAAS,IAAM,IAAY,KAAa,IAAN7I,EAAU,KAAa,IAANA,EAAU,KAAa,IAANA,EAAU,KAAO,SA7CTi+B,CAAQ,EAAQ,K,iBCCzG,SAAUqe,GACjB,aAEWA,EAAOl4B,aAAa,QAAS,CACtChK,OAAQ,wFAAwFzkB,MAAM,KACtGwkB,YAAa,kDAAkDxkB,MAAM,KACrE0pB,SAAU,2DAA2D1pB,MAAM,KAC3EypB,cAAe,8BAA8BzpB,MAAM,KACnDwpB,YAAa,uBAAuBxpB,MAAM,KAC1C+c,eAAgB,CACdI,GAAI,SACJD,IAAK,YACLE,EAAG,aACHC,GAAI,cACJC,IAAK,qBACLC,KAAM,4BAERpC,SAAU,CACRN,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,QACRC,KAAM,SACNzvB,EAAG,gBACH0vB,GAAI,aACJrxB,EAAG,WACHsxB,GAAI,aACJC,EAAG,UACHC,GAAI,WACJtxB,EAAG,QACHuxB,GAAI,UACJG,EAAG,UACHC,GAAI,YACJC,EAAG,SACHC,GAAI,YAEN2O,uBAAwB,uBACxBlR,QAAS,SAAUpJ,GACjB,IAAI7I,EAAI6I,EAAS,GAEjB,OAAOA,GADgC,OAAvBA,EAAS,IAAM,IAAY,KAAa,IAAN7I,EAAU,KAAa,IAANA,EAAU,KAAa,IAANA,EAAU,KAAO,OAGvG6d,KAAM,CACJL,IAAK,EAELC,IAAK,KAnDuFwgB,CAAQ,EAAQ,K,iBCCzG,SAAUqe,GACjB,aAEWA,EAAOl4B,aAAa,QAAS,CACtChK,OAAQ,wFAAwFzkB,MAAM,KACtGwkB,YAAa,kDAAkDxkB,MAAM,KACrE0pB,SAAU,2DAA2D1pB,MAAM,KAC3EypB,cAAe,8BAA8BzpB,MAAM,KACnDwpB,YAAa,uBAAuBxpB,MAAM,KAC1C+c,eAAgB,CACdI,GAAI,SACJD,IAAK,YACLE,EAAG,aACHC,GAAI,cACJC,IAAK,qBACLC,KAAM,4BAERpC,SAAU,CACRN,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,QACRC,KAAM,SACNzvB,EAAG,gBACH0vB,GAAI,aACJrxB,EAAG,WACHsxB,GAAI,aACJC,EAAG,UACHC,GAAI,WACJtxB,EAAG,QACHuxB,GAAI,UACJG,EAAG,UACHC,GAAI,YACJC,EAAG,SACHC,GAAI,YAEN2O,uBAAwB,uBACxBlR,QAAS,SAAUpJ,GACjB,IAAI7I,EAAI6I,EAAS,GAEjB,OAAOA,GADgC,OAAvBA,EAAS,IAAM,IAAY,KAAa,IAAN7I,EAAU,KAAa,IAANA,EAAU,KAAa,IAANA,EAAU,KAAO,OAGvG6d,KAAM,CACJL,IAAK,EAELC,IAAK,KAnDuFwgB,CAAQ,EAAQ,K,iBCCzG,SAAUqe,GACjB,aAEWA,EAAOl4B,aAAa,QAAS,CACtChK,OAAQ,wFAAwFzkB,MAAM,KACtGwkB,YAAa,kDAAkDxkB,MAAM,KACrE0pB,SAAU,2DAA2D1pB,MAAM,KAC3EypB,cAAe,8BAA8BzpB,MAAM,KACnDwpB,YAAa,uBAAuBxpB,MAAM,KAC1C+c,eAAgB,CACdI,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAERpC,SAAU,CACRN,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,QACRC,KAAM,SACNzvB,EAAG,gBACH0vB,GAAI,aACJrxB,EAAG,WACHsxB,GAAI,aACJC,EAAG,UACHC,GAAI,WACJtxB,EAAG,QACHuxB,GAAI,UACJG,EAAG,UACHC,GAAI,YACJC,EAAG,SACHC,GAAI,YAEN2O,uBAAwB,uBACxBlR,QAAS,SAAUpJ,GACjB,IAAI7I,EAAI6I,EAAS,GAEjB,OAAOA,GADgC,OAAvBA,EAAS,IAAM,IAAY,KAAa,IAAN7I,EAAU,KAAa,IAANA,EAAU,KAAa,IAANA,EAAU,KAAO,OAGvG6d,KAAM,CACJL,IAAK,EAELC,IAAK,KAnDuFwgB,CAAQ,EAAQ,K,iBCIzG,SAAUqe,GACjB,aAESA,EAAOl4B,aAAa,KAAM,CACjChK,OAAQ,kGAA6FzkB,MAAM,KAC3GwkB,YAAa,yDAAoDxkB,MAAM,KACvE0pB,SAAU,oEAAqD1pB,MAAM,KACrEypB,cAAe,0CAAgCzpB,MAAM,KACrDwpB,YAAa,4BAAuBxpB,MAAM,KAC1C+c,eAAgB,CACdI,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,4BACJC,IAAK,kCACLC,KAAM,2CACNq1D,KAAM,uCAERnlD,cAAe,cACfZ,KAAM,SAAUt2B,GACd,MAAyC,MAAlCA,EAAMZ,OAAO,GAAGE,eAEzBshB,SAAU,SAAUgV,EAAOG,EAASe,GAClC,OAAIlB,EAAQ,GACHkB,EAAU,SAAW,SAErBA,EAAU,SAAW,UAGhClS,SAAU,CACRN,QAAS,sBACTC,QAAS,sBACTC,SAAU,gBACVC,QAAS,sBACTC,SAAU,2BACVC,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,UACRC,KAAM,gBACNzvB,EAAG,kBACH0vB,GAAI,cACJrxB,EAAG,aACHsxB,GAAI,aACJC,EAAG,WACHC,GAAI,WACJtxB,EAAG,WAEHuxB,GAAI,WACJG,EAAG,aACHC,GAAI,aACJC,EAAG,WACHC,GAAI,YAEN2O,uBAAwB,WACxBlR,QAAS,MACT4L,KAAM,CACJL,IAAK,EAELC,IAAK,KA5DuFwgB,CAAQ,EAAQ,K,iBCHzG,SAAUqe,GACjB,aAEA,IAAI2K,EAAiB,8DAA8DtxD,MAAM,KACrFwkB,EAAc,kDAAkDxkB,MAAM,KACtE4kB,EAAc,CAAC,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,SAClHD,EAAc,mLACPgiC,EAAOl4B,aAAa,QAAS,CACtChK,OAAQ,2FAA2FzkB,MAAM,KACzGwkB,YAAa,SAAU13B,EAAGkpB,GACxB,OAAKlpB,EAEM,QAAQoD,KAAK8lB,GACfwO,EAAY13B,EAAEm0B,SAEdqwC,EAAexkE,EAAEm0B,SAJjBqwC,GAOX3sC,YAAaA,EACbD,iBAAkBC,EAClB6rC,kBAAmB,+FACnBC,uBAAwB,0FACxB7rC,YAAaA,EACb8rC,gBAAiB9rC,EACjB+rC,iBAAkB/rC,EAClB8E,SAAU,6DAAuD1pB,MAAM,KACvEypB,cAAe,2CAAqCzpB,MAAM,KAC1DwpB,YAAa,0BAAuBxpB,MAAM,KAC1C8wD,oBAAoB,EACpB/zC,eAAgB,CACdI,GAAI,SACJD,IAAK,YACLE,EAAG,aACHC,GAAI,wBACJC,IAAK,+BACLC,KAAM,sCAERpC,SAAU,CACRN,QAAS,WACP,MAAO,aAAgC,IAAjBjqB,KAAKu7B,QAAgB,IAAM,IAAM,QAEzDrR,QAAS,WACP,MAAO,mBAAmC,IAAjBlqB,KAAKu7B,QAAgB,IAAM,IAAM,QAE5DpR,SAAU,WACR,MAAO,cAAiC,IAAjBnqB,KAAKu7B,QAAgB,IAAM,IAAM,QAE1DnR,QAAS,WACP,MAAO,cAAiC,IAAjBpqB,KAAKu7B,QAAgB,IAAM,IAAM,QAE1DlR,SAAU,WACR,MAAO,0BAA6C,IAAjBrqB,KAAKu7B,QAAgB,IAAM,IAAM,QAEtEjR,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,QACRC,KAAM,UACNzvB,EAAG,gBACH0vB,GAAI,cACJrxB,EAAG,YACHsxB,GAAI,aACJC,EAAG,WACHC,GAAI,WACJtxB,EAAG,YACHuxB,GAAI,aACJC,EAAG,aACHC,GAAI,aACJC,EAAG,SACHC,GAAI,WACJC,EAAG,YACHC,GAAI,cAEN2O,uBAAwB,cACxBlR,QAAS,SACT4L,KAAM,CACJL,IAAK,EAELC,IAAK,KA/EuFwgB,CAAQ,EAAQ,K,iBCEzG,SAAUqe,GACjB,aAEA,IAAI2K,EAAiB,8DAA8DtxD,MAAM,KACrFwkB,EAAc,kDAAkDxkB,MAAM,KACtE4kB,EAAc,CAAC,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,SAClHD,EAAc,mLACPgiC,EAAOl4B,aAAa,QAAS,CACtChK,OAAQ,2FAA2FzkB,MAAM,KACzGwkB,YAAa,SAAU13B,EAAGkpB,GACxB,OAAKlpB,EAEM,QAAQoD,KAAK8lB,GACfwO,EAAY13B,EAAEm0B,SAEdqwC,EAAexkE,EAAEm0B,SAJjBqwC,GAOX3sC,YAAaA,EACbD,iBAAkBC,EAClB6rC,kBAAmB,+FACnBC,uBAAwB,0FACxB7rC,YAAaA,EACb8rC,gBAAiB9rC,EACjB+rC,iBAAkB/rC,EAClB8E,SAAU,6DAAuD1pB,MAAM,KACvEypB,cAAe,2CAAqCzpB,MAAM,KAC1DwpB,YAAa,0BAAuBxpB,MAAM,KAC1C8wD,oBAAoB,EACpB/zC,eAAgB,CACdI,GAAI,OACJD,IAAK,UACLE,EAAG,aACHC,GAAI,wBACJC,IAAK,6BACLC,KAAM,oCAERpC,SAAU,CACRN,QAAS,WACP,MAAO,aAAgC,IAAjBjqB,KAAKu7B,QAAgB,IAAM,IAAM,QAEzDrR,QAAS,WACP,MAAO,mBAAmC,IAAjBlqB,KAAKu7B,QAAgB,IAAM,IAAM,QAE5DpR,SAAU,WACR,MAAO,cAAiC,IAAjBnqB,KAAKu7B,QAAgB,IAAM,IAAM,QAE1DnR,QAAS,WACP,MAAO,cAAiC,IAAjBpqB,KAAKu7B,QAAgB,IAAM,IAAM,QAE1DlR,SAAU,WACR,MAAO,0BAA6C,IAAjBrqB,KAAKu7B,QAAgB,IAAM,IAAM,QAEtEjR,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,QACRC,KAAM,UACNzvB,EAAG,gBACH0vB,GAAI,cACJrxB,EAAG,YACHsxB,GAAI,aACJC,EAAG,WACHC,GAAI,WACJtxB,EAAG,YACHuxB,GAAI,aACJC,EAAG,aACHC,GAAI,aACJC,EAAG,SACHC,GAAI,WACJC,EAAG,YACHC,GAAI,cAEN2O,uBAAwB,cACxBlR,QAAS,SACT4L,KAAM,CACJL,IAAK,EAELC,IAAK,GAGPjL,YAAa,sBAlFiFyrB,CAAQ,EAAQ,K,iBCEzG,SAAUqe,GACjB,aAEA,IAAI2K,EAAiB,8DAA8DtxD,MAAM,KACrFwkB,EAAc,kDAAkDxkB,MAAM,KACtE4kB,EAAc,CAAC,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,SAClHD,EAAc,mLACPgiC,EAAOl4B,aAAa,QAAS,CACtChK,OAAQ,2FAA2FzkB,MAAM,KACzGwkB,YAAa,SAAU13B,EAAGkpB,GACxB,OAAKlpB,EAEM,QAAQoD,KAAK8lB,GACfwO,EAAY13B,EAAEm0B,SAEdqwC,EAAexkE,EAAEm0B,SAJjBqwC,GAOX3sC,YAAaA,EACbD,iBAAkBC,EAClB6rC,kBAAmB,+FACnBC,uBAAwB,0FACxB7rC,YAAaA,EACb8rC,gBAAiB9rC,EACjB+rC,iBAAkB/rC,EAClB8E,SAAU,6DAAuD1pB,MAAM,KACvEypB,cAAe,2CAAqCzpB,MAAM,KAC1DwpB,YAAa,0BAAuBxpB,MAAM,KAC1C8wD,oBAAoB,EACpB/zC,eAAgB,CACdI,GAAI,SACJD,IAAK,YACLE,EAAG,aACHC,GAAI,wBACJC,IAAK,+BACLC,KAAM,sCAERpC,SAAU,CACRN,QAAS,WACP,MAAO,aAAgC,IAAjBjqB,KAAKu7B,QAAgB,IAAM,IAAM,QAEzDrR,QAAS,WACP,MAAO,mBAAmC,IAAjBlqB,KAAKu7B,QAAgB,IAAM,IAAM,QAE5DpR,SAAU,WACR,MAAO,cAAiC,IAAjBnqB,KAAKu7B,QAAgB,IAAM,IAAM,QAE1DnR,QAAS,WACP,MAAO,cAAiC,IAAjBpqB,KAAKu7B,QAAgB,IAAM,IAAM,QAE1DlR,SAAU,WACR,MAAO,0BAA6C,IAAjBrqB,KAAKu7B,QAAgB,IAAM,IAAM,QAEtEjR,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,QACRC,KAAM,UACNzvB,EAAG,gBACH0vB,GAAI,cACJrxB,EAAG,YACHsxB,GAAI,aACJC,EAAG,WACHC,GAAI,WACJtxB,EAAG,YACHuxB,GAAI,aACJC,EAAG,aACHC,GAAI,aACJC,EAAG,SACHC,GAAI,WACJC,EAAG,YACHC,GAAI,cAEN2O,uBAAwB,cACxBlR,QAAS,SACT4L,KAAM,CACJL,IAAK,EAELC,IAAK,KA/EuFwgB,CAAQ,EAAQ,K,iBCCzG,SAAUqe,GACjB,aAEA,SAASiK,EAAoB19C,EAAQ6L,EAAe9wB,EAAK+wB,GACvD,IAAIhJ,EAAS,CACXvnB,EAAG,CAAC,kBAAgB,iBAAe,iBACnC0vB,GAAI,CAACjL,EAAS,UAAWA,EAAS,YAClCpmB,EAAG,CAAC,gBAAc,gBAClBsxB,GAAI,CAAClL,EAAS,UAAWA,EAAS,YAClCmL,EAAG,CAAC,eAAa,YAAa,eAC9BC,GAAI,CAACpL,EAAS,SAAUA,EAAS,UACjClmB,EAAG,CAAC,kBAAa,kBACjB0xB,EAAG,CAAC,UAAW,WAAY,cAC3BC,GAAI,CAACzL,EAAS,OAAQA,EAAS,SAC/B0L,EAAG,CAAC,eAAa,QAAS,gBAC1BC,GAAI,CAAC3L,EAAS,SAAUA,EAAS,YAGnC,OAAI6L,EACK/I,EAAO/nB,GAAK,GAAK+nB,EAAO/nB,GAAK,GAAK+nB,EAAO/nB,GAAK,GAGhD+wB,EAAWhJ,EAAO/nB,GAAK,GAAK+nB,EAAO/nB,GAAK,GAGxC04D,EAAOl4B,aAAa,KAAM,CACjChK,OAAQ,gGAA6FzkB,MAAM,KAC3GwkB,YAAa,gEAA6DxkB,MAAM,KAChF0pB,SAAU,sFAAiE1pB,MAAM,KACjFypB,cAAe,gBAAgBzpB,MAAM,KACrCwpB,YAAa,gBAAgBxpB,MAAM,KACnC+c,eAAgB,CACdI,GAAI,OACJD,IAAK,UACLE,EAAG,aACHC,GAAI,eACJC,IAAK,oBACLC,KAAM,2BAERpC,SAAU,CACRN,QAAS,gBACTC,QAAS,cACTC,SAAU,wBACVC,QAAS,aACTC,SAAU,oBACVC,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,eACRC,KAAM,YACNzvB,EAAGmiE,EACHzyC,GAAIyyC,EACJ9jE,EAAG8jE,EACHxyC,GAAIwyC,EACJvyC,EAAGuyC,EACHtyC,GAAIsyC,EACJ5jE,EAAG4jE,EACHryC,GAAI,cACJG,EAAGkyC,EACHjyC,GAAIiyC,EACJhyC,EAAGgyC,EACH/xC,GAAI+xC,GAENpjC,uBAAwB,YACxBlR,QAAS,MACT4L,KAAM,CACJL,IAAK,EAELC,IAAK,KArEuFwgB,CAAQ,EAAQ,K,iBCAzG,SAAUqe,GACjB,aAESA,EAAOl4B,aAAa,KAAM,CACjChK,OAAQ,+FAA+FzkB,MAAM,KAC7GwkB,YAAa,8DAA8DxkB,MAAM,KACjF6wD,kBAAkB,EAClBnnC,SAAU,sEAAsE1pB,MAAM,KACtFypB,cAAe,8BAA8BzpB,MAAM,KACnDwpB,YAAa,uBAAuBxpB,MAAM,KAC1C8wD,oBAAoB,EACpB/zC,eAAgB,CACdI,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,0BACJC,IAAK,gCACLC,KAAM,sCACN5wB,EAAG,WACH+lF,GAAI,oBACJC,IAAK,0BACLC,KAAM,gCAERz3D,SAAU,CACRN,QAAS,kBACTC,QAAS,mBACTC,SAAU,gBACVC,QAAS,kBACTC,SAAU,0BACVC,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,WACRC,KAAM,WACNzvB,EAAG,iBACH0vB,GAAI,aACJrxB,EAAG,aACHsxB,GAAI,YACJC,EAAG,WACHC,GAAI,UACJtxB,EAAG,WACHuxB,GAAI,UACJG,EAAG,eACHC,GAAI,cACJC,EAAG,WACHC,GAAI,WAEN2O,uBAAwB,YACxBlR,QAAS,MACT4L,KAAM,CACJL,IAAK,EAELC,IAAK,KArDuFwgB,CAAQ,EAAQ,K,iBCCzG,SAAUqe,GACjB,aAEA,IAAI6qB,EAAY,CACd,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,UAEDC,EAAY,CACd,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,KAEE9qB,EAAOl4B,aAAa,KAAM,CACjChK,OAAQ,0WAAwEzkB,MAAM,KACtFwkB,YAAa,0WAAwExkB,MAAM,KAC3F0pB,SAAU,iRAAoE1pB,MAAM,KACpFypB,cAAe,iRAAoEzpB,MAAM,KACzFwpB,YAAa,mDAAgBxpB,MAAM,KACnC8wD,oBAAoB,EACpB/zC,eAAgB,CACdI,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAERkQ,cAAe,wGACfZ,KAAM,SAAUt2B,GACd,MAAO,qDAAarG,KAAKqG,IAE3B4gB,SAAU,SAAUgd,EAAMc,EAAQ5H,GAChC,OAAI8G,EAAO,GACF,qDAEA,sDAGXhZ,SAAU,CACRN,QAAS,+DACTC,QAAS,yDACTC,SAAU,qCACVC,QAAS,+DACTC,SAAU,0DACVC,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,kBACRC,KAAM,wBACNzvB,EAAG,oDACH0vB,GAAI,oCACJrxB,EAAG,8CACHsxB,GAAI,oCACJC,EAAG,wCACHC,GAAI,8BACJtxB,EAAG,kCACHuxB,GAAI,wBACJG,EAAG,kCACHC,GAAI,wBACJC,EAAG,kCACHC,GAAI,yBAENyW,SAAU,SAAUniB,GAClB,OAAOA,EAAO9d,QAAQ,oBAAU,SAAUyG,GACxC,OAAO21E,EAAU31E,MAChBzG,QAAQ,UAAM,MAEnBuoC,WAAY,SAAUzqB,GACpB,OAAOA,EAAO9d,QAAQ,OAAO,SAAUyG,GACrC,OAAO01E,EAAU11E,MAChBzG,QAAQ,KAAM,WAEnBm4B,uBAAwB,gBACxBlR,QAAS,WACT4L,KAAM,CACJL,IAAK,EAELC,IAAK,MA7FuFwgB,CAAQ,EAAQ,K,iBCCzG,SAAUqe,GACjB,aAEA,IAAIksB,EAAc,iFAAwE7yE,MAAM,KAC5F8yE,EAAgB,CAAC,QAAS,QAAS,SAAU,SAAU,YAAU,SAAU,SAAUD,EAAY,GAAIA,EAAY,GAAIA,EAAY,IAErI,SAAStiB,EAAUr9C,EAAQ6L,EAAe9wB,EAAK+wB,GAC7C,IAAI5K,EAAS,GAEb,OAAQnmB,GACN,IAAK,IACH,OAAO+wB,EAAW,oBAAsB,kBAE1C,IAAK,KACH5K,EAAS4K,EAAW,WAAa,WACjC,MAEF,IAAK,IACH,OAAOA,EAAW,WAAa,WAEjC,IAAK,KACH5K,EAAS4K,EAAW,WAAa,YACjC,MAEF,IAAK,IACH,OAAOA,EAAW,SAAW,QAE/B,IAAK,KACH5K,EAAS4K,EAAW,SAAW,SAC/B,MAEF,IAAK,IACH,OAAOA,EAAW,eAAW,cAE/B,IAAK,KACH5K,EAAS4K,EAAW,eAAW,kBAC/B,MAEF,IAAK,IACH,OAAOA,EAAW,YAAc,WAElC,IAAK,KACH5K,EAAS4K,EAAW,YAAc,YAClC,MAEF,IAAK,IACH,OAAOA,EAAW,SAAW,QAE/B,IAAK,KACH5K,EAAS4K,EAAW,SAAW,SAKnC,OADA5K,EAAS2+D,EAAa7/D,EAAQ8L,GAAY,IAAM5K,EAIlD,SAAS2+D,EAAa7/D,EAAQ8L,GAC5B,OAAO9L,EAAS,GAAK8L,EAAW8zD,EAAc5/D,GAAU2/D,EAAY3/D,GAAUA,EAGvEyzC,EAAOl4B,aAAa,KAAM,CACjChK,OAAQ,iHAA2GzkB,MAAM,KACzHwkB,YAAa,6EAAuExkB,MAAM,KAC1F0pB,SAAU,qEAAqE1pB,MAAM,KACrFypB,cAAe,uBAAuBzpB,MAAM,KAC5CwpB,YAAa,uBAAuBxpB,MAAM,KAC1C+c,eAAgB,CACdI,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,mBACJC,IAAK,gCACLC,KAAM,sCACN5wB,EAAG,WACH+lF,GAAI,cACJC,IAAK,2BACLC,KAAM,iCAERz3D,SAAU,CACRN,QAAS,6BACTC,QAAS,sBACTC,SAAU,gBACVC,QAAS,mBACTC,SAAU,4BACVC,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,qBACRC,KAAM,YACNzvB,EAAG8hE,EACHpyC,GAAIoyC,EACJzjE,EAAGyjE,EACHnyC,GAAImyC,EACJlyC,EAAGkyC,EACHjyC,GAAIiyC,EACJvjE,EAAGujE,EACHhyC,GAAIgyC,EACJ7xC,EAAG6xC,EACH5xC,GAAI4xC,EACJ3xC,EAAG2xC,EACH1xC,GAAI0xC,GAEN/iC,uBAAwB,YACxBlR,QAAS,MACT4L,KAAM,CACJL,IAAK,EAELC,IAAK,KA7GuFwgB,CAAQ,EAAQ,K,iBCEzG,SAAUqe,GACjB,aAEUA,EAAOl4B,aAAa,MAAO,CACnChK,OAAQ,0FAA0FzkB,MAAM,KACxGwkB,YAAa,kDAAkDxkB,MAAM,KACrE0pB,SAAU,yDAAyD1pB,MAAM,KACzEypB,cAAe,8BAA8BzpB,MAAM,KACnDwpB,YAAa,wBAAwBxpB,MAAM,KAC3C+c,eAAgB,CACdI,GAAI,QACJD,IAAK,WACLE,EAAG,YACHC,GAAI,eACJC,IAAK,qBACLC,KAAM,6BAERpC,SAAU,CACRN,QAAS,oBACTC,QAAS,gBACTC,SAAU,0BACVC,QAAS,eACTC,SAAU,4BACVC,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,gBACRC,KAAM,mBACNzvB,EAAG,gBACH0vB,GAAI,aACJrxB,EAAG,eACHsxB,GAAI,YACJC,EAAG,aACHC,GAAI,UACJtxB,EAAG,aACHuxB,GAAI,UACJG,EAAG,cACHC,GAAI,WACJC,EAAG,aACHC,GAAI,WAEN2O,uBAAwB,UACxBlR,QAAS,SAAUpJ,GACjB,OAAOA,GAETgV,KAAM,CACJL,IAAK,EAELC,IAAK,KAjDuFwgB,CAAQ,EAAQ,K,iBCCzG,SAAUqe,GACjB,aAESA,EAAOl4B,aAAa,KAAM,CACjChK,OAAQ,wFAAqFzkB,MAAM,KACnGwkB,YAAa,kDAAkDxkB,MAAM,KACrE0pB,SAAU,wFAA4E1pB,MAAM,KAC5FypB,cAAe,0CAA8BzpB,MAAM,KACnDwpB,YAAa,gCAAuBxpB,MAAM,KAC1C+c,eAAgB,CACdI,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,4BAERpC,SAAU,CACRN,QAAS,oBACTC,QAAS,uBACTC,SAAU,gBACVC,QAAS,wBACTC,SAAU,8BACVC,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,QACRC,KAAM,kBACNzvB,EAAG,eACH0vB,GAAI,cACJrxB,EAAG,eACHsxB,GAAI,cACJC,EAAG,cACHC,GAAI,cACJtxB,EAAG,YACHuxB,GAAI,WACJG,EAAG,oBACHC,GAAI,mBACJC,EAAG,aACHC,GAAI,YAEN2O,uBAAwB,YACxBlR,QAAS,MACT4L,KAAM,CACJL,IAAK,EAELC,IAAK,KA/CuFwgB,CAAQ,EAAQ,K,iBCAzG,SAAUqe,GACjB,aAEWA,EAAOl4B,aAAa,QAAS,CACtChK,OAAQ,gGAAuFzkB,MAAM,KACrGwkB,YAAa,0EAAiExkB,MAAM,KACpF6wD,kBAAkB,EAClBnnC,SAAU,sDAAsD1pB,MAAM,KACtEypB,cAAe,qCAAqCzpB,MAAM,KAC1DwpB,YAAa,uBAAuBxpB,MAAM,KAC1C8wD,oBAAoB,EACpB/zC,eAAgB,CACdI,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAERpC,SAAU,CACRN,QAAS,6BACTC,QAAS,mBACTC,SAAU,iBACVC,QAAS,iBACTC,SAAU,yBACVC,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,UACRC,KAAM,YACNzvB,EAAG,oBACH0vB,GAAI,cACJrxB,EAAG,aACHsxB,GAAI,aACJC,EAAG,YACHC,GAAI,YACJtxB,EAAG,UACHuxB,GAAI,WACJG,EAAG,UACHC,GAAI,UACJC,EAAG,QACHC,GAAI,UAEN2O,uBAAwB,gBACxBlR,QAAS,SAAUpJ,EAAQynB,GACzB,OAAQA,GAEN,QACA,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,MACL,IAAK,IACH,OAAOznB,GAAqB,IAAXA,EAAe,KAAO,KAGzC,IAAK,IACL,IAAK,IACH,OAAOA,GAAqB,IAAXA,EAAe,KAAO,SA3DiDo1B,CAAQ,EAAQ,K,iBCCzG,SAAUqe,GACjB,aAEWA,EAAOl4B,aAAa,QAAS,CACtChK,OAAQ,gGAAuFzkB,MAAM,KACrGwkB,YAAa,0EAAiExkB,MAAM,KACpF6wD,kBAAkB,EAClBnnC,SAAU,sDAAsD1pB,MAAM,KACtEypB,cAAe,qCAAqCzpB,MAAM,KAC1DwpB,YAAa,uBAAuBxpB,MAAM,KAC1C8wD,oBAAoB,EACpB/zC,eAAgB,CACdI,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAERpC,SAAU,CACRN,QAAS,6BACTC,QAAS,mBACTC,SAAU,iBACVC,QAAS,iBACTC,SAAU,yBACVC,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,UACRC,KAAM,YACNzvB,EAAG,oBACH0vB,GAAI,cACJrxB,EAAG,aACHsxB,GAAI,aACJC,EAAG,YACHC,GAAI,YACJtxB,EAAG,UACHuxB,GAAI,WACJG,EAAG,UACHC,GAAI,UACJC,EAAG,QACHC,GAAI,UAEN2O,uBAAwB,gBACxBlR,QAAS,SAAUpJ,EAAQynB,GACzB,OAAQA,GAEN,QACA,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,MACL,IAAK,IACH,OAAOznB,GAAqB,IAAXA,EAAe,KAAO,KAGzC,IAAK,IACL,IAAK,IACH,OAAOA,GAAqB,IAAXA,EAAe,KAAO,OAG7CgV,KAAM,CACJL,IAAK,EAELC,IAAK,KAjEuFwgB,CAAQ,EAAQ,K,iBCCzG,SAAUqe,GACjB,aAEA,IAAI4K,EAAsB,6DAA6DvxD,MAAM,KACzFwxD,EAAyB,kDAAkDxxD,MAAM,KAC5E2mD,EAAOl4B,aAAa,KAAM,CACjChK,OAAQ,iGAAiGzkB,MAAM,KAC/GwkB,YAAa,SAAU13B,EAAGkpB,GACxB,OAAKlpB,EAEM,QAAQoD,KAAK8lB,GACfw7C,EAAuB1kE,EAAEm0B,SAEzBswC,EAAoBzkE,EAAEm0B,SAJtBswC,GAOXV,kBAAkB,EAClBnnC,SAAU,wDAAwD1pB,MAAM,KACxEypB,cAAe,8BAA8BzpB,MAAM,KACnDwpB,YAAa,uBAAuBxpB,MAAM,KAC1C8wD,oBAAoB,EACpB/zC,eAAgB,CACdI,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAERpC,SAAU,CACRN,QAAS,gBACTC,QAAS,gBACTC,SAAU,eACVC,QAAS,iBACTC,SAAU,8BACVC,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,SACRC,KAAM,SACNzvB,EAAG,mBACH0vB,GAAI,cACJrxB,EAAG,eACHsxB,GAAI,aACJC,EAAG,WACHC,GAAI,WACJtxB,EAAG,UACHuxB,GAAI,WACJG,EAAG,aACHC,GAAI,aACJC,EAAG,WACHC,GAAI,cAEN2O,uBAAwB,kBACxBlR,QAAS,SAAUpJ,GACjB,OAAOA,GAAqB,IAAXA,GAA2B,IAAXA,GAAgBA,GAAU,GAAK,MAAQ,OAE1EgV,KAAM,CACJL,IAAK,EAELC,IAAK,KA7DuFwgB,CAAQ,EAAQ,K,iBCCzG,SAAUqe,GACjB,aAEA,IAAIliC,EAAS,CAAC,YAAU,UAAW,WAAS,aAAW,YAAa,YAAa,UAAQ,YAAU,qBAAgB,sBAAoB,UAAW,WAC9ID,EAAc,CAAC,MAAO,QAAS,UAAQ,MAAO,OAAQ,QAAS,UAAQ,SAAO,OAAQ,OAAQ,OAAQ,QACtGkF,EAAW,CAAC,kBAAgB,cAAY,iBAAY,oBAAe,eAAa,eAAa,kBAC7FD,EAAgB,CAAC,OAAQ,OAAQ,WAAS,UAAQ,UAAQ,QAAS,QACnED,EAAc,CAAC,KAAM,KAAM,QAAM,QAAM,QAAM,IAAK,MAC7Cm9B,EAAOl4B,aAAa,KAAM,CACjChK,OAAQA,EACRD,YAAaA,EACbqsC,kBAAkB,EAClBnnC,SAAUA,EACVD,cAAeA,EACfD,YAAaA,EACbzM,eAAgB,CACdI,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAERpC,SAAU,CACRN,QAAS,gBACTC,QAAS,qBACTC,SAAU,eACVC,QAAS,kBACTC,SAAU,2BACVC,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,OACRC,KAAM,eACNzvB,EAAG,mBACH0vB,GAAI,aACJrxB,EAAG,gBACHsxB,GAAI,mBACJC,EAAG,iBACHC,GAAI,oBACJtxB,EAAG,QACHuxB,GAAI,WACJG,EAAG,QACHC,GAAI,eACJC,EAAG,SACHC,GAAI,aAEN2O,uBAAwB,mBACxBlR,QAAS,SAAUpJ,GAEjB,OAAOA,GADiB,IAAXA,EAAe,IAAMA,EAAS,KAAO,EAAI,KAAO,OAG/DgV,KAAM,CACJL,IAAK,EAELC,IAAK,KAxDuFwgB,CAAQ,EAAQ,K,iBCCzG,SAAUqe,GACjB,aAEA,IAAIliC,EAAS,CAAC,gBAAiB,aAAc,aAAW,aAAc,gBAAc,kBAAgB,cAAe,iBAAe,eAAgB,gBAAc,eAAgB,mBAC5KD,EAAc,CAAC,OAAQ,OAAQ,UAAQ,OAAQ,UAAQ,UAAQ,OAAQ,SAAO,OAAQ,UAAQ,OAAQ,WACtGkF,EAAW,CAAC,iBAAe,UAAW,aAAW,YAAa,YAAa,WAAY,eACvFD,EAAgB,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAC3DD,EAAc,CAAC,QAAM,KAAM,QAAM,KAAM,KAAM,KAAM,MAC9Cm9B,EAAOl4B,aAAa,KAAM,CACjChK,OAAQA,EACRD,YAAaA,EACbqsC,kBAAkB,EAClBnnC,SAAUA,EACVD,cAAeA,EACfD,YAAaA,EACbzM,eAAgB,CACdI,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAERpC,SAAU,CACRN,QAAS,oBACTC,QAAS,yBACTC,SAAU,gBACVC,QAAS,oBACTC,SAAU,6BACVC,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,YACRC,KAAM,gBACNzvB,EAAG,gBACH0vB,GAAI,YACJrxB,EAAG,UACHsxB,GAAI,gBACJC,EAAG,OACHC,GAAI,aACJtxB,EAAG,QACHuxB,GAAI,WACJG,EAAG,UACHC,GAAI,eACJC,EAAG,WACHC,GAAI,eAEN2O,uBAAwB,mBACxBlR,QAAS,SAAUpJ,GAEjB,OAAOA,GADiB,IAAXA,EAAe,IAAMA,EAAS,KAAO,EAAI,KAAO,OAG/DgV,KAAM,CACJL,IAAK,EAELC,IAAK,KAxDuFwgB,CAAQ,EAAQ,K,iBCCzG,SAAUqe,GACjB,aAESA,EAAOl4B,aAAa,KAAM,CACjChK,OAAQ,4FAAyFzkB,MAAM,KACvGwkB,YAAa,iEAA8DxkB,MAAM,KACjF6wD,kBAAkB,EAClBnnC,SAAU,yDAAmD1pB,MAAM,KACnEypB,cAAe,2CAAqCzpB,MAAM,KAC1DwpB,YAAa,6BAAuBxpB,MAAM,KAC1C8wD,oBAAoB,EACpB/zC,eAAgB,CACdI,GAAI,OACJD,IAAK,UACLE,EAAG,aACHC,GAAI,wBACJC,IAAK,6BACLC,KAAM,oCAERpC,SAAU,CACRN,QAAS,WACP,MAAO,UAA6B,IAAjBjqB,KAAKu7B,QAAgB,QAAO,QAAO,QAExDrR,QAAS,WACP,MAAO,gBAA6B,IAAjBlqB,KAAKu7B,QAAgB,QAAO,QAAO,QAExDpR,SAAU,WACR,MAAO,UAA6B,IAAjBnqB,KAAKu7B,QAAgB,QAAO,KAAO,QAExDnR,QAAS,WACP,MAAO,UAA6B,IAAjBpqB,KAAKu7B,QAAgB,OAAM,KAAO,QAEvDlR,SAAU,WACR,MAAO,qBAAwC,IAAjBrqB,KAAKu7B,QAAgB,QAAO,KAAO,QAEnEjR,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,SAAUg2C,GAChB,OAA0B,IAAtBA,EAAItwC,QAAQ,MACP,IAAMswC,EAGR,MAAQA,GAEjB/1C,KAAM,SACNzvB,EAAG,eACH0vB,GAAI,cACJrxB,EAAG,YACHsxB,GAAI,aACJC,EAAG,YACHC,GAAI,WACJtxB,EAAG,YACHuxB,GAAI,aACJG,EAAG,SACHC,GAAI,WACJC,EAAG,SACHC,GAAI,WAEN2O,uBAAwB,cACxBlR,QAAS,SACT4L,KAAM,CACJL,IAAK,EAELC,IAAK,KAjEuFwgB,CAAQ,EAAQ,K,iBCCzG,SAAUqe,GACjB,aAEA,SAASiK,EAAoB19C,EAAQ6L,EAAe9wB,EAAK+wB,GACvD,IAAIhJ,EAAS,CACXvnB,EAAG,CAAC,wFAAmB,2DACvB0vB,GAAI,CAACjL,EAAS,0DAAcA,EAAS,mCACrCpmB,EAAG,CAAC,0DAAc,+CAClBsxB,GAAI,CAAClL,EAAS,oDAAaA,EAAS,yCACpCmL,EAAG,CAAC,8CAAY,6BAChBC,GAAI,CAACpL,EAAS,wCAAWA,EAAS,6BAClClmB,EAAG,CAAC,oDAAa,mCACjBuxB,GAAI,CAACrL,EAAS,8CAAYA,EAAS,uBACnCwL,EAAG,CAAC,4EAAiB,qDACrBC,GAAI,CAACzL,EAAS,gEAAeA,EAAS,yCACtC0L,EAAG,CAAC,0DAAc,yCAClBC,GAAI,CAAC3L,EAAS,oDAAaA,EAAS,0CAEtC,OAAO8L,EAAWhJ,EAAO/nB,GAAK,GAAK+nB,EAAO/nB,GAAK,GAGnC04D,EAAOl4B,aAAa,WAAY,CAC5ChK,OAAQ,CACN4rC,WAAY,0cAAwFrwD,MAAM,KAC1GgW,OAAQ,4yBAAmJhW,MAAM,KACjKolB,SAAU,mBAEZZ,YAAa,qVAA4ExkB,MAAM,KAC/F6wD,kBAAkB,EAClBnnC,SAAU,iRAAqD1pB,MAAM,KACrEypB,cAAe,wLAA4CzpB,MAAM,KACjEwpB,YAAa,mGAAwBxpB,MAAM,KAC3C8wD,oBAAoB,EACpB/zC,eAAgB,CACdI,GAAI,gDACJD,IAAK,mDACLE,EAAG,aACHC,GAAI,cACJC,IAAK,4DACLC,KAAM,qEACNq1D,KAAM,kEAERz3D,SAAU,CACRN,QAAS,0BACTC,QAAS,kDACTC,SAAU,8CACVC,QAAS,0BACTC,SAAU,8CACVC,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,KACRC,KAAM,8BACNzvB,EAAGmiE,EACHzyC,GAAIyyC,EACJ9jE,EAAG8jE,EACHxyC,GAAIwyC,EACJvyC,EAAGuyC,EACHtyC,GAAIsyC,EACJ5jE,EAAG4jE,EACHryC,GAAIqyC,EACJlyC,EAAGkyC,EACHjyC,GAAIiyC,EACJhyC,EAAGgyC,EACH/xC,GAAI+xC,GAENpjC,uBAAwB,8BACxBlR,QAAS,SAAUpJ,EAAQynB,GACzB,OAAQA,GAEN,IAAK,IACH,OAAOznB,EAAS,qBAElB,QACA,IAAK,IACL,IAAK,IACL,IAAK,MACL,IAAK,IACL,IAAK,IACL,IAAK,IACH,OAAOA,IAGbgV,KAAM,CACJL,IAAK,EAELC,IAAK,GAGP2F,cAAe,0IACf4G,aAAc,SAAUF,EAAMhd,GAK5B,OAJa,KAATgd,IACFA,EAAO,GAGQ,6BAAbhd,EACKgd,EAAO,EAAIA,EAAOA,EAAO,GACV,yCAAbhd,EACFgd,EACe,+CAAbhd,EACFgd,EAAO,GAAKA,EAAOA,EAAO,GACX,mCAAbhd,EACFgd,EAAO,QADT,GAIThd,SAAU,SAAUgd,EAAMc,EAAQ5H,GAChC,OAAI8G,EAAO,EACF,2BACEA,EAAO,GACT,uCACEA,EAAO,GACT,6CACEA,EAAO,GACT,iCAEA,8BApHmFmU,CAAQ,EAAQ,K,iBCCzG,SAAUqe,GACjB,aAEA,SAASiK,EAAoB19C,EAAQ6L,EAAe9wB,EAAK+wB,GACvD,IAAIhJ,EAAS,CACXvnB,EAAG,CAAC,qBAAsB,iBAC1B0vB,GAAI,CAACjL,EAAS,cAAeA,EAAS,WACtCpmB,EAAG,CAAC,aAAc,YAClBsxB,GAAI,CAAClL,EAAS,YAAaA,EAAS,WACpCmL,EAAG,CAAC,YAAa,UACjBC,GAAI,CAACpL,EAAS,WAAYA,EAAS,UACnClmB,EAAG,CAAC,YAAa,UACjBuxB,GAAI,CAACrL,EAAS,WAAYA,EAAS,QACnCwL,EAAG,CAAC,eAAgB,aACpBC,GAAI,CAACzL,EAAS,cAAeA,EAAS,WACtC0L,EAAG,CAAC,aAAc,YAClBC,GAAI,CAAC3L,EAAS,YAAaA,EAAS,YAEtC,OAAO8L,EAAWhJ,EAAO/nB,GAAK,GAAK+nB,EAAO/nB,GAAK,GAGnC04D,EAAOl4B,aAAa,WAAY,CAC5ChK,OAAQ,CACN4rC,WAAY,4EAA4ErwD,MAAM,KAC9FgW,OAAQ,wIAAwIhW,MAAM,KACtJolB,SAAU,mBAEZZ,YAAa,4DAA4DxkB,MAAM,KAC/E6wD,kBAAkB,EAClBnnC,SAAU,uDAAuD1pB,MAAM,KACvEypB,cAAe,qCAAqCzpB,MAAM,KAC1DwpB,YAAa,uBAAuBxpB,MAAM,KAC1C8wD,oBAAoB,EACpB/zC,eAAgB,CACdI,GAAI,iBACJD,IAAK,oBACLE,EAAG,aACHC,GAAI,cACJC,IAAK,6BACLC,KAAM,sCACNq1D,KAAM,mCAERz3D,SAAU,CACRN,QAAS,WACTC,QAAS,cACTC,SAAU,sBACVC,QAAS,WACTC,SAAU,sBACVC,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,KACRC,KAAM,UACNzvB,EAAGmiE,EACHzyC,GAAIyyC,EACJ9jE,EAAG8jE,EACHxyC,GAAIwyC,EACJvyC,EAAGuyC,EACHtyC,GAAIsyC,EACJ5jE,EAAG4jE,EACHryC,GAAIqyC,EACJlyC,EAAGkyC,EACHjyC,GAAIiyC,EACJhyC,EAAGgyC,EACH/xC,GAAI+xC,GAENpjC,uBAAwB,cACxBlR,QAAS,SAAUpJ,EAAQynB,GACzB,OAAQA,GAEN,IAAK,IACH,OAAOznB,EAAS,KAElB,QACA,IAAK,IACL,IAAK,IACL,IAAK,MACL,IAAK,IACL,IAAK,IACL,IAAK,IACH,OAAOA,IAGbgV,KAAM,CACJL,IAAK,EAELC,IAAK,GAGP2F,cAAe,+BACf4G,aAAc,SAAUF,EAAMhd,GAK5B,OAJa,KAATgd,IACFA,EAAO,GAGQ,SAAbhd,EACKgd,EAAO,EAAIA,EAAOA,EAAO,GACV,aAAbhd,EACFgd,EACe,aAAbhd,EACFgd,EAAO,GAAKA,EAAOA,EAAO,GACX,UAAbhd,EACFgd,EAAO,QADT,GAIThd,SAAU,SAAUgd,EAAMc,EAAQ5H,GAChC,OAAI8G,EAAO,EACF,OACEA,EAAO,GACT,WACEA,EAAO,GACT,WACEA,EAAO,GACT,QAEA,UApHmFmU,CAAQ,EAAQ,K,iBCCzG,SAAUqe,GACjB,aAEA,IAAI6qB,EAAY,CACd,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,UAEDC,EAAY,CACd,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,KAEE9qB,EAAOl4B,aAAa,KAAM,CACjChK,OAAQ,gdAAyFzkB,MAAM,KACvGwkB,YAAa,mUAAyExkB,MAAM,KAC5F6wD,kBAAkB,EAClBnnC,SAAU,mSAAwD1pB,MAAM,KACxEypB,cAAe,qKAAmCzpB,MAAM,KACxDwpB,YAAa,iFAAqBxpB,MAAM,KACxC+c,eAAgB,CACdI,GAAI,8CACJD,IAAK,iDACLE,EAAG,aACHC,GAAI,cACJC,IAAK,2DACLC,KAAM,kEAERpC,SAAU,CACRN,QAAS,oBACTC,QAAS,gCACTC,SAAU,WACVC,QAAS,4CACTC,SAAU,4CACVC,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,kBACRC,KAAM,oCACNzvB,EAAG,8CACH0vB,GAAI,oCACJrxB,EAAG,8CACHsxB,GAAI,oCACJC,EAAG,wCACHC,GAAI,8BACJtxB,EAAG,wCACHuxB,GAAI,8BACJG,EAAG,8CACHC,GAAI,oCACJC,EAAG,wCACHC,GAAI,+BAENyW,SAAU,SAAUniB,GAClB,OAAOA,EAAO9d,QAAQ,mEAAiB,SAAUyG,GAC/C,OAAO21E,EAAU31E,OAGrB8hC,WAAY,SAAUzqB,GACpB,OAAOA,EAAO9d,QAAQ,OAAO,SAAUyG,GACrC,OAAO01E,EAAU11E,OAKrB2xB,cAAe,gGACf4G,aAAc,SAAUF,EAAMhd,GAK5B,OAJa,KAATgd,IACFA,EAAO,GAGQ,uBAAbhd,EACKgd,EAAO,EAAIA,EAAOA,EAAO,GACV,6BAAbhd,EACFgd,EACe,6BAAbhd,EACFgd,GAAQ,GAAKA,EAAOA,EAAO,GACZ,6BAAbhd,EACFgd,EAAO,QADT,GAIThd,SAAU,SAAUgd,EAAMc,EAAQ5H,GAChC,OAAI8G,EAAO,EACF,qBACEA,EAAO,GACT,2BACEA,EAAO,GACT,2BACEA,EAAO,GACT,2BAEA,sBAGXjM,KAAM,CACJL,IAAK,EAELC,IAAK,KA/GuFwgB,CAAQ,EAAQ,K,iBCGzG,SAAUqe,GACjB,aAESA,EAAOl4B,aAAa,KAAM,CACjChK,OAAQ,sXAA0EzkB,MAAM,KACxFwkB,YAAa,kSAA4DxkB,MAAM,KAC/E0pB,SAAU,6LAAuC1pB,MAAM,KACvDypB,cAAe,6FAAuBzpB,MAAM,KAC5CwpB,YAAa,mDAAgBxpB,MAAM,KACnC+c,eAAgB,CACdI,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,sBACJC,IAAK,4BACLC,KAAM,kCACN5wB,EAAG,WACH+lF,GAAI,aACJC,IAAK,mBACLC,KAAM,yBAERz3D,SAAU,CACRN,QAAS,4CACTC,QAAS,sCACTC,SAAU,qCACVC,QAAS,kDACTC,SAAU,qGACVC,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,8BACRC,KAAM,8BACNzvB,EAAG,0DACH0vB,GAAI,oCACJrxB,EAAG,qBACHsxB,GAAI,8BACJC,EAAG,qBACHC,GAAI,SAAUpL,GACZ,OAAe,IAAXA,EACK,uCAGFA,EAAS,6BAElBlmB,EAAG,qBACHuxB,GAAI,SAAUrL,GACZ,OAAe,IAAXA,EACK,uCAGFA,EAAS,6BAElBwL,EAAG,2BACHC,GAAI,SAAUzL,GACZ,OAAe,IAAXA,EACK,6CAGFA,EAAS,yCAElB0L,EAAG,qBACHC,GAAI,SAAU3L,GACZ,OAAe,IAAXA,EACK,uCACEA,EAAS,KAAO,GAAgB,KAAXA,EACvBA,EAAS,sBAGXA,EAAS,8BAGpBua,cAAe,qTACfZ,KAAM,SAAUt2B,GACd,MAAO,6HAA8BrG,KAAKqG,IAE5C4gB,SAAU,SAAUgd,EAAMc,EAAQ5H,GAChC,OAAI8G,EAAO,EACF,0DACEA,EAAO,GACT,iCACEA,EAAO,GACT9G,EAAU,kCAAW,sEACnB8G,EAAO,GACT9G,EAAU,4BAAU,sEAEpB,8BAtFmFib,CAAQ,EAAQ,K,iBCDzG,SAAUqe,GACjB,aAEA,IAAI6qB,EAAY,CACd,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,UAEDC,EAAY,CACd,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,KAEH7sD,EAAc,CAAC,iBAAQ,oCAAY,mCAAW,mCAAW,iBAAQ,uBAAS,uBAAS,iBAAQ,gDAAc,mCAAW,oCAAY,iDAChI+rC,EAAmB,CAAC,iBAAQ,uBAAS,mCAAW,mCAAW,iBAAQ,uBAAS,uBAAS,iBAAQ,uBAAS,mCAAW,iBAAQ,wBACpHhK,EAAOl4B,aAAa,KAAM,CACjChK,OAAQ,CACNzO,OAAQ,8YAA8EhW,MAAM,KAC5FqwD,WAAY,sXAA0ErwD,MAAM,MAE9FwkB,YAAa,2PAA6DxkB,MAAM,KAChF0pB,SAAU,6RAAuD1pB,MAAM,KACvEypB,cAAe,+JAAkCzpB,MAAM,KACvDwpB,YAAa,iFAAqBxpB,MAAM,KACxC+c,eAAgB,CACdI,GAAI,4BACJD,IAAK,+BACLE,EAAG,aACHC,GAAI,cACJC,IAAK,yCACLC,KAAM,gDAERqH,YAAaA,EACb8rC,gBAAiB9rC,EACjB+rC,iBAAkBA,EAClBhsC,YAAa,yuBACbD,iBAAkB,yuBAClB8rC,kBAAmB,6lBACnBC,uBAAwB,oRACxBt1C,SAAU,CACRN,QAAS,oBACTC,QAAS,oBACTC,SAAU,WACVC,QAAS,oBACTC,SAAU,4CACVC,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,wBACRC,KAAM,8BACNzvB,EAAG,2DACH0vB,GAAI,oCACJrxB,EAAG,wCACHsxB,GAAI,8BACJC,EAAG,wCACHC,GAAI,8BACJtxB,EAAG,kCACHuxB,GAAI,wBACJG,EAAG,8CACHC,GAAI,oCACJC,EAAG,wCACHC,GAAI,+BAENyW,SAAU,SAAUniB,GAClB,OAAOA,EAAO9d,QAAQ,mEAAiB,SAAUyG,GAC/C,OAAO21E,EAAU31E,OAGrB8hC,WAAY,SAAUzqB,GACpB,OAAOA,EAAO9d,QAAQ,OAAO,SAAUyG,GACrC,OAAO01E,EAAU11E,OAKrB2xB,cAAe,gGACf4G,aAAc,SAAUF,EAAMhd,GAK5B,OAJa,KAATgd,IACFA,EAAO,GAGQ,uBAAbhd,EACKgd,EAAO,EAAIA,EAAOA,EAAO,GACV,6BAAbhd,EACFgd,EACe,mCAAbhd,EACFgd,GAAQ,GAAKA,EAAOA,EAAO,GACZ,uBAAbhd,EACFgd,EAAO,QADT,GAIThd,SAAU,SAAUgd,EAAMc,EAAQ5H,GAChC,OAAI8G,EAAO,EACF,qBACEA,EAAO,GACT,2BACEA,EAAO,GACT,iCACEA,EAAO,GACT,qBAEA,sBAGXjM,KAAM,CACJL,IAAK,EAELC,IAAK,KA1HuFwgB,CAAQ,EAAQ,K,iBCCzG,SAAUqe,GACjB,aAEA,SAAS4J,EAAUr9C,EAAQ6L,EAAe9wB,GACxC,IAAImmB,EAASlB,EAAS,IAEtB,OAAQjlB,GACN,IAAK,KASH,OAPEmmB,GADa,IAAXlB,EACQ,UACU,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC/B,UAEA,UAKd,IAAK,IACH,OAAO6L,EAAgB,eAAiB,eAE1C,IAAK,KASH,OAPE3K,GADa,IAAXlB,EACQ,SACU,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC/B,SAEA,SAKd,IAAK,IACH,OAAO6L,EAAgB,YAAc,cAEvC,IAAK,KASH,OAPE3K,GADa,IAAXlB,EACQ,MACU,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC/B,OAEA,OAKd,IAAK,KAOH,OALEkB,GADa,IAAXlB,EACQ,MAEA,OAKd,IAAK,KASH,OAPEkB,GADa,IAAXlB,EACQ,SACU,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC/B,UAEA,UAKd,IAAK,KASH,OAPEkB,GADa,IAAXlB,EACQ,SACU,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC/B,SAEA,UAOTyzC,EAAOl4B,aAAa,KAAM,CACjChK,OAAQ,CACNzO,OAAQ,mHAAoGhW,MAAM,KAClHqwD,WAAY,+GAAgGrwD,MAAM,MAEpHwkB,YAAa,oEAA+DxkB,MAAM,KAClF6wD,kBAAkB,EAClBnnC,SAAU,iEAA4D1pB,MAAM,KAC5EypB,cAAe,0CAAqCzpB,MAAM,KAC1DwpB,YAAa,4BAAuBxpB,MAAM,KAC1C8wD,oBAAoB,EACpB/zC,eAAgB,CACdI,GAAI,OACJD,IAAK,UACLE,EAAG,aACHC,GAAI,eACJC,IAAK,oBACLC,KAAM,2BAERpC,SAAU,CACRN,QAAS,eACTC,QAAS,eACTC,SAAU,WACR,OAAQnqB,KAAK05B,OACX,KAAK,EACH,MAAO,wBAET,KAAK,EACH,MAAO,uBAET,KAAK,EACH,MAAO,sBAET,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACH,MAAO,oBAGbtP,QAAS,oBACTC,SAAU,WACR,OAAQrqB,KAAK05B,OACX,KAAK,EACH,MAAO,kCAET,KAAK,EACH,MAAO,iCAET,KAAK,EACH,MAAO,gCAET,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACH,MAAO,8BAGbpP,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,QACRC,KAAM,WACNzvB,EAAG,cACH0vB,GAAIoyC,EACJzjE,EAAGyjE,EACHnyC,GAAImyC,EACJlyC,EAAGkyC,EACHjyC,GAAIiyC,EACJvjE,EAAG,MACHuxB,GAAIgyC,EACJ7xC,EAAG,SACHC,GAAI4xC,EACJ3xC,EAAG,SACHC,GAAI0xC,GAEN/iC,uBAAwB,YACxBlR,QAAS,MACT4L,KAAM,CACJL,IAAK,EAELC,IAAK,KAlKuFwgB,CAAQ,EAAQ,K,iBCEzG,SAAUqe,GACjB,aAEA,IAAIqsB,EAAc,6FAAgEhzE,MAAM,KAExF,SAASuwD,EAAUr9C,EAAQ6L,EAAe9wB,EAAK+wB,GAC7C,IAAIkyB,EAAMh+B,EAEV,OAAQjlB,GACN,IAAK,IACH,OAAO+wB,GAAYD,EAAgB,4BAAqB,6BAE1D,IAAK,KACH,OAAOmyB,GAAOlyB,GAAYD,GAAiB,gBAAe,iBAE5D,IAAK,IACH,MAAO,OAASC,GAAYD,EAAgB,QAAU,UAExD,IAAK,KACH,OAAOmyB,GAAOlyB,GAAYD,EAAgB,QAAU,UAEtD,IAAK,IACH,MAAO,OAASC,GAAYD,EAAgB,UAAS,gBAEvD,IAAK,KACH,OAAOmyB,GAAOlyB,GAAYD,EAAgB,UAAS,gBAErD,IAAK,IACH,MAAO,OAASC,GAAYD,EAAgB,OAAS,UAEvD,IAAK,KACH,OAAOmyB,GAAOlyB,GAAYD,EAAgB,OAAS,UAErD,IAAK,IACH,MAAO,OAASC,GAAYD,EAAgB,YAAW,eAEzD,IAAK,KACH,OAAOmyB,GAAOlyB,GAAYD,EAAgB,YAAW,eAEvD,IAAK,IACH,MAAO,OAASC,GAAYD,EAAgB,SAAQ,WAEtD,IAAK,KACH,OAAOmyB,GAAOlyB,GAAYD,EAAgB,SAAQ,WAGtD,MAAO,GAGT,SAASmJ,EAAKlJ,GACZ,OAAQA,EAAW,GAAK,cAAa,IAAMg0D,EAAYpiF,KAAK05B,OAAS,aAG9Dq8B,EAAOl4B,aAAa,KAAM,CACjChK,OAAQ,4HAAoGzkB,MAAM,KAClHwkB,YAAa,gFAAiExkB,MAAM,KACpF6wD,kBAAkB,EAClBnnC,SAAU,6EAAsD1pB,MAAM,KACtEypB,cAAe,yCAAgCzpB,MAAM,KACrDwpB,YAAa,qBAAqBxpB,MAAM,KACxC+c,eAAgB,CACdI,GAAI,OACJD,IAAK,UACLE,EAAG,cACHC,GAAI,gBACJC,IAAK,qBACLC,KAAM,4BAERkQ,cAAe,SACfZ,KAAM,SAAUt2B,GACd,MAAyC,MAAlCA,EAAMZ,OAAO,GAAGE,eAEzBshB,SAAU,SAAUgV,EAAOG,EAASe,GAClC,OAAIlB,EAAQ,IACS,IAAZkB,EAAmB,KAAO,MAEd,IAAZA,EAAmB,KAAO,MAGrClS,SAAU,CACRN,QAAS,gBACTC,QAAS,oBACTC,SAAU,WACR,OAAOmN,EAAKr7B,KAAK+D,MAAM,IAEzBoqB,QAAS,oBACTC,SAAU,WACR,OAAOiN,EAAKr7B,KAAK+D,MAAM,IAEzBsqB,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,cACRC,KAAM,KACNzvB,EAAG8hE,EACHpyC,GAAIoyC,EACJzjE,EAAGyjE,EACHnyC,GAAImyC,EACJlyC,EAAGkyC,EACHjyC,GAAIiyC,EACJvjE,EAAGujE,EACHhyC,GAAIgyC,EACJ7xC,EAAG6xC,EACH5xC,GAAI4xC,EACJ3xC,EAAG2xC,EACH1xC,GAAI0xC,GAEN/iC,uBAAwB,YACxBlR,QAAS,MACT4L,KAAM,CACJL,IAAK,EAELC,IAAK,KAjHuFwgB,CAAQ,EAAQ,K,iBCAzG,SAAUqe,GACjB,aAEWA,EAAOl4B,aAAa,QAAS,CACtChK,OAAQ,CACNzO,OAAQ,kkBAA4GhW,MAAM,KAC1HqwD,WAAY,0fAAgGrwD,MAAM,MAEpHwkB,YAAa,sOAAkDxkB,MAAM,KACrE0pB,SAAU,mVAAgE1pB,MAAM,KAChFypB,cAAe,6IAA+BzpB,MAAM,KACpDwpB,YAAa,6IAA+BxpB,MAAM,KAClD+c,eAAgB,CACdI,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,sBACJC,IAAK,6BACLC,KAAM,oCAERpC,SAAU,CACRN,QAAS,sCACTC,QAAS,gCACTE,QAAS,gCACTD,SAAU,WACR,MAAO,yDAETE,SAAU,WACR,MAAO,0FAETC,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,8BACRC,KAAM,8BACNzvB,EAAG,yFACH0vB,GAAI,sDACJrxB,EAAG,2BACHsxB,GAAI,8BACJC,EAAG,qBACHC,GAAI,wBACJtxB,EAAG,eACHuxB,GAAI,kBACJG,EAAG,2BACHC,GAAI,8BACJC,EAAG,2BACHC,GAAI,+BAEN4O,cAAe,0LACfZ,KAAM,SAAUt2B,GACd,MAAO,kGAAuBrG,KAAKqG,IAErC4gB,SAAU,SAAUgd,GAClB,OAAIA,EAAO,EACF,6CACEA,EAAO,GACT,mDACEA,EAAO,GACT,6CAEA,oDAGX3G,uBAAwB,8CACxBlR,QAAS,SAAUpJ,EAAQynB,GACzB,OAAQA,GACN,IAAK,MACL,IAAK,IACL,IAAK,IACL,IAAK,OACH,OAAe,IAAXznB,EACKA,EAAS,gBAGXA,EAAS,gBAElB,QACE,OAAOA,IAGbgV,KAAM,CACJL,IAAK,EAELC,IAAK,KApFuFwgB,CAAQ,EAAQ,K,iBCEzG,SAAUqe,GACjB,aAESA,EAAOl4B,aAAa,KAAM,CACjChK,OAAQ,yFAAyFzkB,MAAM,KACvGwkB,YAAa,kDAAkDxkB,MAAM,KACrE0pB,SAAU,6CAA6C1pB,MAAM,KAC7DypB,cAAe,8BAA8BzpB,MAAM,KACnDwpB,YAAa,uBAAuBxpB,MAAM,KAC1C+c,eAAgB,CACdI,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,4BACLC,KAAM,mCAERkQ,cAAe,wBACf4G,aAAc,SAAUF,EAAMhd,GAK5B,OAJa,KAATgd,IACFA,EAAO,GAGQ,SAAbhd,EACKgd,EACe,UAAbhd,EACFgd,GAAQ,GAAKA,EAAOA,EAAO,GACZ,SAAbhd,GAAoC,UAAbA,EACzBgd,EAAO,QADT,GAIThd,SAAU,SAAUgV,EAAOG,EAASe,GAClC,OAAIlB,EAAQ,GACH,OACEA,EAAQ,GACV,QACEA,EAAQ,GACV,OAEA,SAGXhR,SAAU,CACRN,QAAS,sBACTC,QAAS,mBACTC,SAAU,kBACVC,QAAS,qBACTC,SAAU,uBACVC,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,WACRC,KAAM,eACNzvB,EAAG,iBACH0vB,GAAI,WACJrxB,EAAG,UACHsxB,GAAI,WACJC,EAAG,QACHC,GAAI,SACJtxB,EAAG,SACHuxB,GAAI,UACJG,EAAG,UACHC,GAAI,WACJC,EAAG,UACHC,GAAI,YAENqJ,KAAM,CACJL,IAAK,EAELC,IAAK,KAtEuFwgB,CAAQ,EAAQ,K,iBCAzG,SAAUqe,GACjB,aAEA,SAAS2J,EAAOniE,GACd,OAAIA,EAAI,MAAQ,IAELA,EAAI,KAAO,EAOxB,SAASoiE,EAAUr9C,EAAQ6L,EAAe9wB,EAAK+wB,GAC7C,IAAI5K,EAASlB,EAAS,IAEtB,OAAQjlB,GACN,IAAK,IACH,OAAO8wB,GAAiBC,EAAW,sBAAqB,sBAE1D,IAAK,KACH,OAAIsxC,EAAOp9C,GACFkB,GAAU2K,GAAiBC,EAAW,cAAa,eAGrD5K,EAAS,aAElB,IAAK,IACH,OAAO2K,EAAgB,eAAW,eAEpC,IAAK,KACH,OAAIuxC,EAAOp9C,GACFkB,GAAU2K,GAAiBC,EAAW,gBAAY,iBAChDD,EACF3K,EAAS,eAGXA,EAAS,eAElB,IAAK,KACH,OAAIk8C,EAAOp9C,GACFkB,GAAU2K,GAAiBC,EAAW,gBAAkB,iBAG1D5K,EAAS,cAElB,IAAK,IACH,OAAI2K,EACK,QAGFC,EAAW,MAAQ,OAE5B,IAAK,KACH,OAAIsxC,EAAOp9C,GACL6L,EACK3K,EAAS,QAGXA,GAAU4K,EAAW,OAAS,YAC5BD,EACF3K,EAAS,QAGXA,GAAU4K,EAAW,MAAQ,QAEtC,IAAK,IACH,OAAID,EACK,gBAGFC,EAAW,cAAU,eAE9B,IAAK,KACH,OAAIsxC,EAAOp9C,GACL6L,EACK3K,EAAS,gBAGXA,GAAU4K,EAAW,eAAW,iBAC9BD,EACF3K,EAAS,gBAGXA,GAAU4K,EAAW,cAAU,gBAExC,IAAK,IACH,OAAOD,GAAiBC,EAAW,QAAO,SAE5C,IAAK,KACH,OAAIsxC,EAAOp9C,GACFkB,GAAU2K,GAAiBC,EAAW,QAAO,WAG/C5K,GAAU2K,GAAiBC,EAAW,QAAO,WAIjD2nC,EAAOl4B,aAAa,KAAM,CACjChK,OAAQ,wHAAoFzkB,MAAM,KAClGwkB,YAAa,oEAAkDxkB,MAAM,KACrE0pB,SAAU,kGAAmF1pB,MAAM,KACnGypB,cAAe,0CAA8BzpB,MAAM,KACnDwpB,YAAa,gCAAuBxpB,MAAM,KAC1C+c,eAAgB,CACdI,GAAI,OACJD,IAAK,UACLE,EAAG,aACHC,GAAI,eACJC,IAAK,0BACLC,KAAM,iCAERpC,SAAU,CACRN,QAAS,oBACTC,QAAS,uBACTC,SAAU,gBACVC,QAAS,uBACTC,SAAU,gCACVC,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,WACRC,KAAM,uBACNzvB,EAAG8hE,EACHpyC,GAAIoyC,EACJzjE,EAAGyjE,EACHnyC,GAAImyC,EACJlyC,EAAG,cACHC,GAAIiyC,EACJvjE,EAAGujE,EACHhyC,GAAIgyC,EACJ7xC,EAAG6xC,EACH5xC,GAAI4xC,EACJ3xC,EAAG2xC,EACH1xC,GAAI0xC,GAEN/iC,uBAAwB,YACxBlR,QAAS,MACT4L,KAAM,CACJL,IAAK,EAELC,IAAK,KA9IuFwgB,CAAQ,EAAQ,K,iBCCzG,SAAUqe,GACjB,aAEWA,EAAOl4B,aAAa,QAAS,CACtChK,OAAQ,gGAAgGzkB,MAAM,KAC9GwkB,YAAa,kDAAkDxkB,MAAM,KACrE0pB,SAAU,0EAA2D1pB,MAAM,KAC3EypB,cAAe,8BAA8BzpB,MAAM,KACnDwpB,YAAa,uBAAuBxpB,MAAM,KAC1C+c,eAAgB,CACdI,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAERpC,SAAU,CACRN,QAAS,iBACTC,QAAS,mBACTC,SAAU,iBACVC,QAAS,iBACTC,SAAU,WACR,OAAQrqB,KAAK05B,OACX,KAAK,EACH,MAAO,6BAET,QACE,MAAO,+BAGbpP,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,SAAUxvB,GAChB,OAAQ,YAAYyB,KAAKzB,GAAK,MAAQ,MAAQ,IAAMA,GAEtDyvB,KAAM,QACNzvB,EAAG,iBACH0vB,GAAI,aACJrxB,EAAG,YACHsxB,GAAI,YACJC,EAAG,SACHC,GAAI,SACJtxB,EAAG,YACHuxB,GAAI,YACJG,EAAG,UACHC,GAAI,UACJC,EAAG,UACHC,GAAI,WAEN2O,uBAAwB,cACxBlR,QAAS,SACT4L,KAAM,CACJL,IAAK,EAELC,IAAK,KAzDuFwgB,CAAQ,EAAQ,K,iBCCzG,SAAUqe,GACjB,aAESA,EAAOl4B,aAAa,KAAM,CACjC4Q,KAAM,CAAC,CACLE,MAAO,aACP3H,OAAQ,EACR3qC,KAAM,eACN0yC,OAAQ,SACRjR,KAAM,KACL,CACD6Q,MAAO,aACPC,MAAO,aACP5H,OAAQ,EACR3qC,KAAM,eACN0yC,OAAQ,SACRjR,KAAM,KACL,CACD6Q,MAAO,aACPC,MAAO,aACP5H,OAAQ,EACR3qC,KAAM,eACN0yC,OAAQ,SACRjR,KAAM,KACL,CACD6Q,MAAO,aACPC,MAAO,aACP5H,OAAQ,EACR3qC,KAAM,eACN0yC,OAAQ,SACRjR,KAAM,KACL,CACD6Q,MAAO,aACPC,MAAO,aACP5H,OAAQ,EACR3qC,KAAM,eACN0yC,OAAQ,SACRjR,KAAM,KACL,CACD6Q,MAAO,aACPC,MAAO,aACP5H,OAAQ,EACR3qC,KAAM,eACN0yC,OAAQ,KACRjR,KAAM,MACL,CACD6Q,MAAO,aACPC,OAAO,IACP5H,OAAQ,EACR3qC,KAAM,qBACN0yC,OAAQ,KACRjR,KAAM,OAERukD,oBAAqB,qBACrBhxC,oBAAqB,SAAU1rC,EAAOuF,GACpC,MAAoB,WAAbA,EAAM,GAAa,EAAImrB,SAASnrB,EAAM,IAAMvF,EAAO,KAE5DkuB,OAAQ,qGAAyCzkB,MAAM,KACvDwkB,YAAa,qGAAyCxkB,MAAM,KAC5D0pB,SAAU,uIAA8B1pB,MAAM,KAC9CypB,cAAe,mDAAgBzpB,MAAM,KACrCwpB,YAAa,mDAAgBxpB,MAAM,KACnC+c,eAAgB,CACdI,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,2BACJC,IAAK,iCACLC,KAAM,sCACN5wB,EAAG,aACH+lF,GAAI,2BACJC,IAAK,iCACLC,KAAM,uCAERnlD,cAAe,6BACfZ,KAAM,SAAUt2B,GACd,MAAiB,iBAAVA,GAET4gB,SAAU,SAAUgd,EAAMc,EAAQ5H,GAChC,OAAI8G,EAAO,GACF,eAEA,gBAGXhZ,SAAU,CACRN,QAAS,oBACTC,QAAS,oBACTC,SAAU,SAAUM,GAClB,OAAIA,EAAI6M,SAAWt3B,KAAKs3B,OACf,wBAEA,WAGXlN,QAAS,oBACTC,SAAU,SAAUI,GAClB,OAAIzqB,KAAKs3B,SAAW7M,EAAI6M,OACf,wBAEA,WAGXhN,SAAU,KAEZsS,uBAAwB,gBACxBlR,QAAS,SAAUpJ,EAAQynB,GACzB,OAAQA,GACN,IAAK,IACH,OAAkB,IAAXznB,EAAe,eAAOA,EAAS,SAExC,IAAK,IACL,IAAK,IACL,IAAK,MACH,OAAOA,EAAS,SAElB,QACE,OAAOA,IAGb4L,aAAc,CACZb,OAAQ,WACRC,KAAM,WACNzvB,EAAG,eACH0vB,GAAI,WACJrxB,EAAG,UACHsxB,GAAI,WACJC,EAAG,gBACHC,GAAI,iBACJtxB,EAAG,UACHuxB,GAAI,WACJG,EAAG,gBACHC,GAAI,iBACJC,EAAG,UACHC,GAAI,cAvIwFypB,CAAQ,EAAQ,K,iBCEzG,SAAUqe,GACjB,aAESA,EAAOl4B,aAAa,KAAM,CACjChK,OAAQ,yFAAyFzkB,MAAM,KACvGwkB,YAAa,kDAAkDxkB,MAAM,KACrE0pB,SAAU,+CAA+C1pB,MAAM,KAC/DypB,cAAe,8BAA8BzpB,MAAM,KACnDwpB,YAAa,uBAAuBxpB,MAAM,KAC1C+c,eAAgB,CACdI,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,4BACLC,KAAM,mCAERkQ,cAAe,6BACf4G,aAAc,SAAUF,EAAMhd,GAK5B,OAJa,KAATgd,IACFA,EAAO,GAGQ,WAAbhd,EACKgd,EACe,WAAbhd,EACFgd,GAAQ,GAAKA,EAAOA,EAAO,GACZ,WAAbhd,GAAsC,UAAbA,EAC3Bgd,EAAO,QADT,GAIThd,SAAU,SAAUgV,EAAOG,EAASe,GAClC,OAAIlB,EAAQ,GACH,SACEA,EAAQ,GACV,SACEA,EAAQ,GACV,SAEA,SAGXhR,SAAU,CACRN,QAAS,2BACTC,QAAS,sBACTC,SAAU,kBACVC,QAAS,wBACTC,SAAU,4BACVC,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,gBACRC,KAAM,uBACNzvB,EAAG,kBACH0vB,GAAI,WACJrxB,EAAG,kBACHsxB,GAAI,WACJC,EAAG,gBACHC,GAAI,SACJtxB,EAAG,WACHuxB,GAAI,YACJG,EAAG,UACHC,GAAI,WACJC,EAAG,SACHC,GAAI,WAENqJ,KAAM,CACJL,IAAK,EAELC,IAAK,KAtEuFwgB,CAAQ,EAAQ,K,iBCAzG,SAAUqe,GACjB,aAESA,EAAOl4B,aAAa,KAAM,CACjChK,OAAQ,whBAAqGzkB,MAAM,KACnHwkB,YAAa,sOAAkDxkB,MAAM,KACrE0pB,SAAU,CACR2mC,WAAY,mVAAgErwD,MAAM,KAClFgW,OAAQ,yVAAiEhW,MAAM,KAC/EolB,SAAU,mEAEZqE,cAAe,uIAA8BzpB,MAAM,KACnDwpB,YAAa,6FAAuBxpB,MAAM,KAC1C+c,eAAgB,CACdI,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAERpC,SAAU,CACRN,QAAS,+CACTC,QAAS,+CACTE,QAAS,qDACTD,SAAU,gEACVE,SAAU,kDACVC,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,SAAUxvB,GAChB,OAAOA,EAAE4G,QAAQ,gIAAiC,SAAU69E,EAAIC,EAAIC,GAClE,MAAc,WAAPA,EAAaD,EAAK,eAAOA,EAAKC,EAAK,mBAG9Cl1D,KAAM,SAAUzvB,GACd,MAAI,2HAA4ByB,KAAKzB,GAC5BA,EAAE4G,QAAQ,mBAAU,mCAGzB,2BAAOnF,KAAKzB,GACPA,EAAE4G,QAAQ,4BAAS,+CAGrB5G,GAETA,EAAG,kFACH0vB,GAAI,8BACJrxB,EAAG,2BACHsxB,GAAI,8BACJC,EAAG,iCACHC,GAAI,oCACJtxB,EAAG,qBACHuxB,GAAI,wBACJG,EAAG,qBACHC,GAAI,wBACJC,EAAG,2BACHC,GAAI,+BAEN2O,uBAAwB,uDACxBlR,QAAS,SAAUpJ,GACjB,OAAe,IAAXA,EACKA,EAGM,IAAXA,EACKA,EAAS,gBAGdA,EAAS,IAAMA,GAAU,KAAOA,EAAS,KAAO,GAAKA,EAAS,MAAQ,EACjE,gBAAQA,EAGVA,EAAS,WAElBgV,KAAM,CACJL,IAAK,EACLC,IAAK,KA9EuFwgB,CAAQ,EAAQ,K,iBCCzG,SAAUqe,GACjB,aAEA,IAAIgL,EAAW,CACb,EAAG,gBACH,EAAG,gBACH,EAAG,gBACH,EAAG,gBACH,EAAG,gBACH,EAAG,gBACH,EAAG,gBACH,EAAG,gBACH,EAAG,gBACH,EAAG,gBACH,GAAI,gBACJ,GAAI,gBACJ,GAAI,gBACJ,GAAI,gBACJ,GAAI,gBACJ,GAAI,gBACJ,GAAI,gBACJ,GAAI,gBACJ,GAAI,gBACJ,IAAK,iBAEEhL,EAAOl4B,aAAa,KAAM,CACjChK,OAAQ,wbAAqFzkB,MAAM,KACnGwkB,YAAa,sOAAkDxkB,MAAM,KACrE0pB,SAAU,+SAA0D1pB,MAAM,KAC1EypB,cAAe,uIAA8BzpB,MAAM,KACnDwpB,YAAa,6FAAuBxpB,MAAM,KAC1C+c,eAAgB,CACdI,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAERpC,SAAU,CACRN,QAAS,qEACTC,QAAS,qEACTC,SAAU,2CACVC,QAAS,+DACTC,SAAU,uHACVC,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,0CACRC,KAAM,oCACNzvB,EAAG,kFACH0vB,GAAI,0CACJrxB,EAAG,oDACHsxB,GAAI,oCACJC,EAAG,oDACHC,GAAI,oCACJtxB,EAAG,wCACHuxB,GAAI,wBACJG,EAAG,kCACHC,GAAI,kBACJC,EAAG,wCACHC,GAAI,yBAEN2O,uBAAwB,sCACxBlR,QAAS,SAAUpJ,GACjB,IAAI/c,EAAI+c,EAAS,GACb7I,EAAI6I,GAAU,IAAM,IAAM,KAC9B,OAAOA,GAAUy+C,EAASz+C,IAAWy+C,EAASx7D,IAAMw7D,EAAStnD,KAE/D6d,KAAM,CACJL,IAAK,EAELC,IAAK,KAzEuFwgB,CAAQ,EAAQ,K,iBCCzG,SAAUqe,GACjB,aAEA,IAAI6qB,EAAY,CACd,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,UAEDC,EAAY,CACd,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,KAEE9qB,EAAOl4B,aAAa,KAAM,CACjChK,OAAQ,gXAAyEzkB,MAAM,KACvFwkB,YAAa,gXAAyExkB,MAAM,KAC5F0pB,SAAU,yPAAiD1pB,MAAM,KACjEypB,cAAe,2EAAoBzpB,MAAM,KACzCwpB,YAAa,2EAAoBxpB,MAAM,KACvC8wD,oBAAoB,EACpB/zC,eAAgB,CACdI,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAERkQ,cAAe,gEACfZ,KAAM,SAAUt2B,GACd,MAAiB,mCAAVA,GAET4gB,SAAU,SAAUgd,EAAMc,EAAQ5H,GAChC,OAAI8G,EAAO,GACF,iCAEA,kCAGXhZ,SAAU,CACRN,QAAS,2EACTC,QAAS,+DACTC,SAAU,qCACVC,QAAS,iFACTC,SAAU,oGACVC,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,uBACRC,KAAM,uBACNzvB,EAAG,uFACH0vB,GAAI,0CACJrxB,EAAG,6CACHsxB,GAAI,8BACJC,EAAG,6CACHC,GAAI,8BACJtxB,EAAG,6CACHuxB,GAAI,8BACJG,EAAG,iCACHC,GAAI,kBACJC,EAAG,mDACHC,GAAI,qCAEN2O,uBAAwB,sBACxBlR,QAAS,iBACTgZ,SAAU,SAAUniB,GAClB,OAAOA,EAAO9d,QAAQ,mEAAiB,SAAUyG,GAC/C,OAAO21E,EAAU31E,OAGrB8hC,WAAY,SAAUzqB,GACpB,OAAOA,EAAO9d,QAAQ,OAAO,SAAUyG,GACrC,OAAO01E,EAAU11E,OAGrBosB,KAAM,CACJL,IAAK,EAELC,IAAK,KA7FuFwgB,CAAQ,EAAQ,K,iBCCzG,SAAUqe,GACjB,aAEA,IAAI6qB,EAAY,CACd,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,UAEDC,EAAY,CACd,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,KAEE9qB,EAAOl4B,aAAa,KAAM,CACjChK,OAAQ,weAA6FzkB,MAAM,KAC3GwkB,YAAa,4XAA2ExkB,MAAM,KAC9F6wD,kBAAkB,EAClBnnC,SAAU,+SAA0D1pB,MAAM,KAC1EypB,cAAe,iLAAqCzpB,MAAM,KAC1DwpB,YAAa,mGAAwBxpB,MAAM,KAC3C+c,eAAgB,CACdI,GAAI,SACJD,IAAK,YACLE,EAAG,aACHC,GAAI,cACJC,IAAK,sBACLC,KAAM,6BAERpC,SAAU,CACRN,QAAS,gCACTC,QAAS,gCACTC,SAAU,WACVC,QAAS,4CACTC,SAAU,kDACVC,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,8BACRC,KAAM,oCACNzvB,EAAG,4EACH0vB,GAAI,kEACJrxB,EAAG,0DACHsxB,GAAI,oCACJC,EAAG,oDACHC,GAAI,8BACJtxB,EAAG,8CACHuxB,GAAI,wBACJG,EAAG,gEACHC,GAAI,0CACJC,EAAG,oDACHC,GAAI,+BAENyW,SAAU,SAAUniB,GAClB,OAAOA,EAAO9d,QAAQ,mEAAiB,SAAUyG,GAC/C,OAAO21E,EAAU31E,OAGrB8hC,WAAY,SAAUzqB,GACpB,OAAOA,EAAO9d,QAAQ,OAAO,SAAUyG,GACrC,OAAO01E,EAAU11E,OAGrB2xB,cAAe,kKACf4G,aAAc,SAAUF,EAAMhd,GAK5B,OAJa,KAATgd,IACFA,EAAO,GAGQ,yCAAbhd,EACKgd,EAAO,EAAIA,EAAOA,EAAO,GACV,qDAAbhd,EACFgd,EACe,qDAAbhd,EACFgd,GAAQ,GAAKA,EAAOA,EAAO,GACZ,6BAAbhd,EACFgd,EAAO,QADT,GAIThd,SAAU,SAAUgd,EAAMc,EAAQ5H,GAChC,OAAI8G,EAAO,EACF,uCACEA,EAAO,GACT,mDACEA,EAAO,GACT,mDACEA,EAAO,GACT,2BAEA,wCAGX3G,uBAAwB,8BACxBlR,QAAS,SAAUpJ,GACjB,OAAOA,EAAS,sBAElBgV,KAAM,CACJL,IAAK,EAELC,IAAK,KAjHuFwgB,CAAQ,EAAQ,K,iBCEzG,SAAUqe,GACjB,aAESA,EAAOl4B,aAAa,KAAM,CACjChK,OAAQ,qGAAyCzkB,MAAM,KACvDwkB,YAAa,qGAAyCxkB,MAAM,KAC5D0pB,SAAU,uIAA8B1pB,MAAM,KAC9CypB,cAAe,mDAAgBzpB,MAAM,KACrCwpB,YAAa,mDAAgBxpB,MAAM,KACnC+c,eAAgB,CACdI,GAAI,SACJD,IAAK,YACLE,EAAG,cACHC,GAAI,0BACJC,IAAK,iCACLC,KAAM,sCACN5wB,EAAG,cACH+lF,GAAI,0BACJC,IAAK,iCACLC,KAAM,uCAERz3D,SAAU,CACRN,QAAS,kBACTC,QAAS,kBACTC,SAAU,UACVC,QAAS,kBACTC,SAAU,6BACVC,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,YACRC,KAAM,YACNzvB,EAAG,gBACH0vB,GAAI,WACJrxB,EAAG,UACHsxB,GAAI,WACJC,EAAG,sBACHC,GAAI,iBACJtxB,EAAG,eACHuxB,GAAI,WACJG,EAAG,gBACHC,GAAI,WACJC,EAAG,gBACHC,GAAI,YAEN2O,uBAAwB,gCACxBlR,QAAS,SAAUpJ,EAAQynB,GACzB,OAAQA,GACN,IAAK,IACL,IAAK,IACL,IAAK,MACH,OAAOznB,EAAS,SAElB,IAAK,IACH,OAAOA,EAAS,SAElB,IAAK,IACL,IAAK,IACH,OAAOA,EAAS,SAElB,QACE,OAAOA,IAGbua,cAAe,4BACfZ,KAAM,SAAU5tB,GACd,MAAiB,iBAAVA,GAETkY,SAAU,SAAUgd,EAAMc,EAAQo+C,GAChC,OAAOl/C,EAAO,GAAK,eAAO,kBAtEkEmU,CAAQ,EAAQ,K,iBCAzG,SAAUqe,GACjB,aAEA,IAAI6qB,EAAY,CACd,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,UAEDC,EAAY,CACd,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,KAEHhtD,EAAS,CAAC,sEAAgB,iCAAS,iCAAS,iCAAS,iCAAS,mDAAY,uCAAU,qBAAO,6CAAW,sEAAgB,sEAAgB,uEACjIkiC,EAAOl4B,aAAa,KAAM,CACjChK,OAAQA,EACRD,YAAaC,EACbiF,SAAU,+YAA0E1pB,MAAM,KAC1FypB,cAAe,qTAA2DzpB,MAAM,KAChFwpB,YAAa,mDAAgBxpB,MAAM,KACnC8wD,oBAAoB,EACpB/zC,eAAgB,CACdI,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAERkQ,cAAe,wFACfZ,KAAM,SAAUt2B,GACd,MAAO,6CAAUrG,KAAKqG,IAExB4gB,SAAU,SAAUgd,EAAMc,EAAQ5H,GAChC,OAAI8G,EAAO,GACF,6CAEA,8CAGXhZ,SAAU,CACRN,QAAS,uFACTC,QAAS,6FACTC,SAAU,uDACVC,QAAS,iFACTC,SAAU,uDACVC,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,wBACRC,KAAM,KACNzvB,EAAG,wFACH0vB,GAAI,oCACJrxB,EAAG,gEACHsxB,GAAI,0CACJC,EAAG,sEACHC,GAAI,gDACJtxB,EAAG,8CACHuxB,GAAI,wBACJG,EAAG,oDACHC,GAAI,8BACJC,EAAG,8CACHC,GAAI,yBAENyW,SAAU,SAAUniB,GAClB,OAAOA,EAAO9d,QAAQ,mEAAiB,SAAUyG,GAC/C,OAAO21E,EAAU31E,MAChBzG,QAAQ,UAAM,MAEnBuoC,WAAY,SAAUzqB,GACpB,OAAOA,EAAO9d,QAAQ,OAAO,SAAUyG,GACrC,OAAO01E,EAAU11E,MAChBzG,QAAQ,KAAM,WAEnB6yB,KAAM,CACJL,IAAK,EAELC,IAAK,MA5FuFwgB,CAAQ,EAAQ,K,iBCCzG,SAAUqe,GACjB,aAEA,IAAIgL,EAAW,CACb,EAAG,gBACH,EAAG,gBACH,EAAG,gBACH,EAAG,gBACH,EAAG,gBACH,EAAG,gBACH,EAAG,gBACH,EAAG,gBACH,EAAG,gBACH,EAAG,gBACH,GAAI,gBACJ,GAAI,gBACJ,GAAI,gBACJ,GAAI,gBACJ,GAAI,gBACJ,GAAI,gBACJ,GAAI,gBACJ,GAAI,gBACJ,GAAI,gBACJ,IAAK,iBAEEhL,EAAOl4B,aAAa,KAAM,CACjChK,OAAQ,saAAkFzkB,MAAM,KAChGwkB,YAAa,wPAAqDxkB,MAAM,KACxE0pB,SAAU,qTAA2D1pB,MAAM,KAC3EypB,cAAe,uIAA8BzpB,MAAM,KACnDwpB,YAAa,6FAAuBxpB,MAAM,KAC1C+c,eAAgB,CACdI,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAERpC,SAAU,CACRN,QAAS,+DACTC,QAAS,+DACTC,SAAU,qCACVC,QAAS,+DACTC,SAAU,4IACVC,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,0CACRC,KAAM,oCACNzvB,EAAG,kFACH0vB,GAAI,0CACJrxB,EAAG,oDACHsxB,GAAI,oCACJC,EAAG,8CACHC,GAAI,8BACJtxB,EAAG,wCACHuxB,GAAI,wBACJG,EAAG,kCACHC,GAAI,kBACJC,EAAG,wCACHC,GAAI,yBAEN2O,uBAAwB,gEACxBlR,QAAS,SAAUpJ,GACjB,IAAI/c,EAAI+c,EAAS,GACb7I,EAAI6I,GAAU,IAAM,IAAM,KAC9B,OAAOA,GAAUy+C,EAASz+C,IAAWy+C,EAASx7D,IAAMw7D,EAAStnD,KAE/D6d,KAAM,CACJL,IAAK,EAELC,IAAK,KAzEuFwgB,CAAQ,EAAQ,K,iBCEzG,SAAUqe,GACjB,aAEA,SAASiK,EAAoB19C,EAAQ6L,EAAe9wB,EAAK+wB,GACvD,IAAIhJ,EAAS,CACXlpB,EAAG,CAAC,aAAc,gBAClBuxB,EAAG,CAAC,YAAa,eACjBrxB,EAAG,CAAC,UAAW,aACf0xB,EAAG,CAAC,WAAY,eAChBE,EAAG,CAAC,UAAW,eAEjB,OAAOG,EAAgB/I,EAAO/nB,GAAK,GAAK+nB,EAAO/nB,GAAK,GAGtD,SAASqlF,EAAkBngE,GAGzB,OAAIogE,EAFSpgE,EAAO4I,OAAO,EAAG5I,EAAOwQ,QAAQ,OAGpC,KAAOxQ,EAGT,MAAQA,EAGjB,SAASqgE,EAAgBrgE,GAGvB,OAAIogE,EAFSpgE,EAAO4I,OAAO,EAAG5I,EAAOwQ,QAAQ,OAGpC,QAAUxQ,EAGZ,SAAWA,EAWpB,SAASogE,EAA4BrgE,GAGnC,GAFAA,EAAS+T,SAAS/T,EAAQ,IAEtB2E,MAAM3E,GACR,OAAO,EAGT,GAAIA,EAAS,EAEX,OAAO,EACF,GAAIA,EAAS,GAElB,OAAI,GAAKA,GAAUA,GAAU,EAKxB,GAAIA,EAAS,IAAK,CAEvB,IAAI8+D,EAAY9+D,EAAS,GAGzB,OACSqgE,EADS,IAAdvB,EAFa9+D,EAAS,GAMS8+D,GAC9B,GAAI9+D,EAAS,IAAO,CAEzB,KAAOA,GAAU,IACfA,GAAkB,GAGpB,OAAOqgE,EAA4BrgE,GAInC,OAAOqgE,EADPrgE,GAAkB,KAKbyzC,EAAOl4B,aAAa,KAAM,CACjChK,OAAQ,6FAAuFzkB,MAAM,KACrGwkB,YAAa,+DAA+DxkB,MAAM,KAClF6wD,kBAAkB,EAClBnnC,SAAU,4EAAmE1pB,MAAM,KACnFypB,cAAe,uCAA8BzpB,MAAM,KACnDwpB,YAAa,gCAAuBxpB,MAAM,KAC1C8wD,oBAAoB,EACpB/zC,eAAgB,CACdI,GAAI,cACJD,IAAK,iBACLE,EAAG,aACHC,GAAI,eACJC,IAAK,2BACLC,KAAM,kCAERpC,SAAU,CACRN,QAAS,eACTK,SAAU,IACVJ,QAAS,eACTC,SAAU,eACVC,QAAS,sBACTC,SAAU,WAER,OAAQrqB,KAAK05B,OACX,KAAK,EACL,KAAK,EACH,MAAO,0BAET,QACE,MAAO,4BAIfxL,aAAc,CACZb,OAAQq1D,EACRp1D,KAAMs1D,EACN/kF,EAAG,kBACH0vB,GAAI,cACJrxB,EAAG8jE,EACHxyC,GAAI,cACJC,EAAGuyC,EACHtyC,GAAI,aACJtxB,EAAG4jE,EACHryC,GAAI,UACJG,EAAGkyC,EACHjyC,GAAI,cACJC,EAAGgyC,EACH/xC,GAAI,WAEN2O,uBAAwB,YACxBlR,QAAS,MACT4L,KAAM,CACJL,IAAK,EAELC,IAAK,KA3IuFwgB,CAAQ,EAAQ,K,iBCAzG,SAAUqe,GACjB,aAESA,EAAOl4B,aAAa,KAAM,CACjChK,OAAQ,wYAA6EzkB,MAAM,KAC3FwkB,YAAa,wYAA6ExkB,MAAM,KAChG0pB,SAAU,uLAAsC1pB,MAAM,KACtDypB,cAAe,2KAAoCzpB,MAAM,KACzDwpB,YAAa,qEAAmBxpB,MAAM,KACtC8wD,oBAAoB,EACpB/zC,eAAgB,CACdI,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,4CAERkQ,cAAe,wFACfZ,KAAM,SAAUt2B,GACd,MAAiB,yCAAVA,GAET4gB,SAAU,SAAUgd,EAAMc,EAAQ5H,GAChC,OAAI8G,EAAO,GACF,mDAEA,wCAGXhZ,SAAU,CACRN,QAAS,oEACTC,QAAS,0EACTC,SAAU,0EACVC,QAAS,sFACTC,SAAU,kGACVC,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,wBACRC,KAAM,yCACNzvB,EAAG,mGACH0vB,GAAI,0CACJrxB,EAAG,6BACHsxB,GAAI,8BACJC,EAAG,+CACHC,GAAI,gDACJtxB,EAAG,uBACHuxB,GAAI,wBACJG,EAAG,mCACHC,GAAI,oCACJC,EAAG,iBACHC,GAAI,mBAEN2O,uBAAwB,8BACxBlR,QAAS,SAAUpJ,GACjB,MAAO,qBAAQA,KAxD6Eo1B,CAAQ,EAAQ,K,iBCCzG,SAAUqe,GACjB,aAEA,IAAIjnC,EAAQ,CACVvB,GAAI,4CACJrxB,EAAG,uCACHsxB,GAAI,yCACJC,EAAG,gCACHC,GAAI,iCACJtxB,EAAG,0BACHuxB,GAAI,2BACJG,EAAG,2CACHC,GAAI,gDACJC,EAAG,wBACHC,GAAI,yBAGN,SAAS40D,EAAiBvgE,EAAQ6L,EAAe9wB,EAAK+wB,GACpD,OAAID,EACK,uBAEAC,EAAW,iCAAoB,kBAI1C,SAAS00D,EAAkBxgE,EAAQ6L,EAAe9wB,EAAK+wB,GACrD,OAAOD,EAAgB+yD,EAAM7jF,GAAK,GAAK+wB,EAAW8yD,EAAM7jF,GAAK,GAAK6jF,EAAM7jF,GAAK,GAG/E,SAAS0lF,EAAQzgE,GACf,OAAOA,EAAS,KAAO,GAAKA,EAAS,IAAMA,EAAS,GAGtD,SAAS4+D,EAAM7jF,GACb,OAAOyxB,EAAMzxB,GAAK+R,MAAM,KAG1B,SAASuwD,EAAUr9C,EAAQ6L,EAAe9wB,EAAK+wB,GAC7C,IAAI5K,EAASlB,EAAS,IAEtB,OAAe,IAAXA,EACKkB,EAASs/D,EAAkBxgE,EAAQ6L,EAAe9wB,EAAI,GAAI+wB,GACxDD,EACF3K,GAAUu/D,EAAQzgE,GAAU4+D,EAAM7jF,GAAK,GAAK6jF,EAAM7jF,GAAK,IAE1D+wB,EACK5K,EAAS09D,EAAM7jF,GAAK,GAEpBmmB,GAAUu/D,EAAQzgE,GAAU4+D,EAAM7jF,GAAK,GAAK6jF,EAAM7jF,GAAK,IAK3D04D,EAAOl4B,aAAa,KAAM,CACjChK,OAAQ,CACNzO,OAAQ,iJAAoGhW,MAAM,KAClHqwD,WAAY,2HAAkGrwD,MAAM,KACpHolB,SAAU,+DAEZZ,YAAa,kDAAkDxkB,MAAM,KACrE0pB,SAAU,CACR1T,OAAQ,sIAAoFhW,MAAM,KAClGqwD,WAAY,0GAA2FrwD,MAAM,KAC7GolB,SAAU,cAEZqE,cAAe,wCAA8BzpB,MAAM,KACnDwpB,YAAa,sBAAiBxpB,MAAM,KACpC8wD,oBAAoB,EACpB/zC,eAAgB,CACdI,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,wBACJC,IAAK,sCACLC,KAAM,4CACN5wB,EAAG,aACH+lF,GAAI,wBACJC,IAAK,sCACLC,KAAM,4CAERz3D,SAAU,CACRN,QAAS,qBACTC,QAAS,aACTC,SAAU,UACVC,QAAS,aACTC,SAAU,+BACVC,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,QACRC,KAAM,gBACNzvB,EAAGglF,EACHt1D,GAAIoyC,EACJzjE,EAAG4mF,EACHt1D,GAAImyC,EACJlyC,EAAGq1D,EACHp1D,GAAIiyC,EACJvjE,EAAG0mF,EACHn1D,GAAIgyC,EACJ7xC,EAAGg1D,EACH/0D,GAAI4xC,EACJ3xC,EAAG80D,EACH70D,GAAI0xC,GAEN/iC,uBAAwB,cACxBlR,QAAS,SAAUpJ,GACjB,OAAOA,EAAS,QAElBgV,KAAM,CACJL,IAAK,EAELC,IAAK,KAhHuFwgB,CAAQ,EAAQ,K,iBCEzG,SAAUqe,GACjB,aAEA,IAAIjnC,EAAQ,CACVvB,GAAI,0CAAqCne,MAAM,KAC/ClT,EAAG,0DAAiCkT,MAAM,KAC1Coe,GAAI,0DAAiCpe,MAAM,KAC3Cqe,EAAG,sCAAiCre,MAAM,KAC1Cse,GAAI,sCAAiCte,MAAM,KAC3ChT,EAAG,kCAA6BgT,MAAM,KACtCue,GAAI,kCAA6Bve,MAAM,KACvC0e,EAAG,oEAAiC1e,MAAM,KAC1C2e,GAAI,oEAAiC3e,MAAM,KAC3C4e,EAAG,wBAAwB5e,MAAM,KACjC6e,GAAI,wBAAwB7e,MAAM,MAMpC,SAASgW,EAAO87D,EAAO5+D,EAAQ6L,GAC7B,OAAIA,EAEK7L,EAAS,KAAO,GAAKA,EAAS,MAAQ,GAAK4+D,EAAM,GAAKA,EAAM,GAI5D5+D,EAAS,KAAO,GAAKA,EAAS,MAAQ,GAAK4+D,EAAM,GAAKA,EAAM,GAIvE,SAASC,EAAuB7+D,EAAQ6L,EAAe9wB,GACrD,OAAOilB,EAAS,IAAM8C,EAAO0J,EAAMzxB,GAAMilB,EAAQ6L,GAGnD,SAAS60D,EAAyB1gE,EAAQ6L,EAAe9wB,GACvD,OAAO+nB,EAAO0J,EAAMzxB,GAAMilB,EAAQ6L,GAGpC,SAAS80D,EAAgB3gE,EAAQ6L,GAC/B,OAAOA,EAAgB,sBAAmB,gCAGnC4nC,EAAOl4B,aAAa,KAAM,CACjChK,OAAQ,gIAAuGzkB,MAAM,KACrHwkB,YAAa,4DAAkDxkB,MAAM,KACrE0pB,SAAU,oFAA0E1pB,MAAM,KAC1FypB,cAAe,kBAAkBzpB,MAAM,KACvCwpB,YAAa,kBAAkBxpB,MAAM,KACrC8wD,oBAAoB,EACpB/zC,eAAgB,CACdI,GAAI,QACJD,IAAK,WACLE,EAAG,cACHC,GAAI,uBACJC,IAAK,8BACLC,KAAM,qCAERpC,SAAU,CACRN,QAAS,4BACTC,QAAS,yBACTC,SAAU,qBACVC,QAAS,sBACTC,SAAU,+CACVC,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,cACRC,KAAM,WACNzvB,EAAGolF,EACH11D,GAAI4zD,EACJjlF,EAAG8mF,EACHx1D,GAAI2zD,EACJ1zD,EAAGu1D,EACHt1D,GAAIyzD,EACJ/kF,EAAG4mF,EACHr1D,GAAIwzD,EACJrzD,EAAGk1D,EACHj1D,GAAIozD,EACJnzD,EAAGg1D,EACH/0D,GAAIkzD,GAENvkD,uBAAwB,YACxBlR,QAAS,MACT4L,KAAM,CACJL,IAAK,EAELC,IAAK,KAxFuFwgB,CAAQ,EAAQ,K,iBCAzG,SAAUqe,GACjB,aAEA,IAAImtB,EAAa,CACfC,MAAO,CAEL51D,GAAI,CAAC,SAAU,UAAW,WAC1BrxB,EAAG,CAAC,cAAe,iBACnBsxB,GAAI,CAAC,QAAS,SAAU,UACxBC,EAAG,CAAC,YAAa,eACjBC,GAAI,CAAC,MAAO,OAAQ,QACpBC,GAAI,CAAC,MAAO,OAAQ,QACpBI,GAAI,CAAC,SAAU,UAAW,WAC1BE,GAAI,CAAC,SAAU,SAAU,WAE3Bm1D,uBAAwB,SAAU9gE,EAAQ+gE,GACxC,OAAkB,IAAX/gE,EAAe+gE,EAAQ,GAAK/gE,GAAU,GAAKA,GAAU,EAAI+gE,EAAQ,GAAKA,EAAQ,IAEvF1jB,UAAW,SAAUr9C,EAAQ6L,EAAe9wB,GAC1C,IAAIgmF,EAAUH,EAAWC,MAAM9lF,GAE/B,OAAmB,IAAfA,EAAIwB,OACCsvB,EAAgBk1D,EAAQ,GAAKA,EAAQ,GAErC/gE,EAAS,IAAM4gE,EAAWE,uBAAuB9gE,EAAQ+gE,KAI7DttB,EAAOl4B,aAAa,KAAM,CACjChK,OAAQ,mFAAmFzkB,MAAM,KACjGwkB,YAAa,2DAA2DxkB,MAAM,KAC9E6wD,kBAAkB,EAClBnnC,SAAU,iEAA4D1pB,MAAM,KAC5EypB,cAAe,0CAAqCzpB,MAAM,KAC1DwpB,YAAa,4BAAuBxpB,MAAM,KAC1C8wD,oBAAoB,EACpB/zC,eAAgB,CACdI,GAAI,OACJD,IAAK,UACLE,EAAG,aACHC,GAAI,eACJC,IAAK,oBACLC,KAAM,2BAERpC,SAAU,CACRN,QAAS,eACTC,QAAS,gBACTC,SAAU,WACR,OAAQnqB,KAAK05B,OACX,KAAK,EACH,MAAO,wBAET,KAAK,EACH,MAAO,uBAET,KAAK,EACH,MAAO,sBAET,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACH,MAAO,oBAGbtP,QAAS,mBACTC,SAAU,WAER,MADmB,CAAC,kCAA8B,sCAAkC,iCAA6B,iCAA6B,wCAA+B,gCAA4B,iCACrLrqB,KAAK05B,QAE3BpP,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,QACRC,KAAM,WACNzvB,EAAG,mBACH0vB,GAAI21D,EAAWvjB,UACfzjE,EAAGgnF,EAAWvjB,UACdnyC,GAAI01D,EAAWvjB,UACflyC,EAAGy1D,EAAWvjB,UACdjyC,GAAIw1D,EAAWvjB,UACfvjE,EAAG,MACHuxB,GAAIu1D,EAAWvjB,UACf7xC,EAAG,SACHC,GAAIm1D,EAAWvjB,UACf3xC,EAAG,SACHC,GAAIi1D,EAAWvjB,WAEjB/iC,uBAAwB,YACxBlR,QAAS,MACT4L,KAAM,CACJL,IAAK,EAELC,IAAK,KA9FuFwgB,CAAQ,EAAQ,K,iBCCzG,SAAUqe,GACjB,aAESA,EAAOl4B,aAAa,KAAM,CACjChK,OAAQ,2LAA8IzkB,MAAM,KAC5JwkB,YAAa,sEAAiExkB,MAAM,KACpF2kB,YAAa,yCACb6rC,kBAAmB,yCACnB9rC,iBAAkB,yCAClB+rC,uBAAwB,yCACxB/mC,SAAU,sEAAkD1pB,MAAM,KAClEypB,cAAe,uCAAwBzpB,MAAM,KAC7CwpB,YAAa,uCAAwBxpB,MAAM,KAC3C+c,eAAgB,CACdI,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,wBACLC,KAAM,+BAERpC,SAAU,CACRN,QAAS,wBACTC,QAAS,eACTC,SAAU,cACVC,QAAS,iBACTC,SAAU,2BACVC,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,cACRC,KAAM,WACNzvB,EAAG,wBACH0vB,GAAI,iBACJrxB,EAAG,YACHsxB,GAAI,YACJC,EAAG,WACHC,GAAI,WACJtxB,EAAG,QACHuxB,GAAI,QACJG,EAAG,YACHC,GAAI,YACJC,EAAG,SACHC,GAAI,UAEN2O,uBAAwB,cACxBlR,QAAS,SACT4L,KAAM,CACJL,IAAK,EAELC,IAAK,KAnDuFwgB,CAAQ,EAAQ,K,iBCEzG,SAAUqe,GACjB,aAESA,EAAOl4B,aAAa,KAAM,CACjChK,OAAQ,ocAAuFzkB,MAAM,KACrGwkB,YAAa,sOAAkDxkB,MAAM,KACrE0pB,SAAU,mSAAwD1pB,MAAM,KACxEypB,cAAe,uIAA8BzpB,MAAM,KACnDwpB,YAAa,8EAAuBxpB,MAAM,KAC1C+c,eAAgB,CACdI,GAAI,OACJD,IAAK,UACLE,EAAG,YACHC,GAAI,cACJC,IAAK,mBACLC,KAAM,0BAERpC,SAAU,CACRN,QAAS,mDACTC,QAAS,6CACTC,SAAU,wCACVC,QAAS,mDACTC,SAAU,WACR,OAAQrqB,KAAK05B,OACX,KAAK,EACL,KAAK,EACL,KAAK,EACH,MAAO,wFAET,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACH,MAAO,0FAGbpP,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,kBACRC,KAAM,8BACNzvB,EAAG,wFACH0vB,GAAI,gDACJrxB,EAAG,gEACHsxB,GAAI,0CACJC,EAAG,8CACHC,GAAI,8BACJtxB,EAAG,8CACHuxB,GAAI,8BACJG,EAAG,0DACHC,GAAI,0CACJC,EAAG,gEACHC,GAAI,2CAEN2O,uBAAwB,0FACxBlR,QAAS,SAAUpJ,GACjB,IAAI8+D,EAAY9+D,EAAS,GACrB++D,EAAc/+D,EAAS,IAE3B,OAAe,IAAXA,EACKA,EAAS,gBACS,IAAhB++D,EACF/+D,EAAS,gBACP++D,EAAc,IAAMA,EAAc,GACpC/+D,EAAS,gBACO,IAAd8+D,EACF9+D,EAAS,gBACO,IAAd8+D,EACF9+D,EAAS,gBACO,IAAd8+D,GAAiC,IAAdA,EACrB9+D,EAAS,gBAETA,EAAS,iBAGpBgV,KAAM,CACJL,IAAK,EAELC,IAAK,KA/EuFwgB,CAAQ,EAAQ,K,iBCAzG,SAAUqe,GACjB,aAESA,EAAOl4B,aAAa,KAAM,CACjChK,OAAQ,gdAAyFzkB,MAAM,KACvGwkB,YAAa,8TAAyExkB,MAAM,KAC5F6wD,kBAAkB,EAClBnnC,SAAU,mYAAwE1pB,MAAM,KACxFypB,cAAe,qNAA2CzpB,MAAM,KAChEwpB,YAAa,mGAAwBxpB,MAAM,KAC3C+c,eAAgB,CACdI,GAAI,uBACJD,IAAK,0BACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oCACLC,KAAM,2CAERpC,SAAU,CACRN,QAAS,sCACTC,QAAS,gCACTC,SAAU,WACVC,QAAS,4CACTC,SAAU,kDACVC,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,gDACRC,KAAM,oCACNzvB,EAAG,4EACH0vB,GAAI,sDACJrxB,EAAG,sEACHsxB,GAAI,sDACJC,EAAG,sEACHC,GAAI,sDACJtxB,EAAG,oDACHuxB,GAAI,oCACJG,EAAG,8CACHC,GAAI,8BACJC,EAAG,8CACHC,GAAI,+BAEN4O,cAAe,mPACf4G,aAAc,SAAUF,EAAMhd,GAK5B,OAJa,KAATgd,IACFA,EAAO,GAGQ,yCAAbhd,GAAyBgd,GAAQ,GAAkB,wEAAbhd,GAA4C,iEAAbA,EAChEgd,EAAO,GAEPA,GAGXhd,SAAU,SAAUgd,EAAMc,EAAQ5H,GAChC,OAAI8G,EAAO,EACF,uCACEA,EAAO,GACT,uCACEA,EAAO,GACT,sEACEA,EAAO,GACT,+DAEA,0CAjEmFmU,CAAQ,EAAQ,K,iBCCzG,SAAUqe,GACjB,aAEA,SAAS4J,EAAUr9C,EAAQ6L,EAAe9wB,EAAK+wB,GAC7C,OAAQ/wB,GACN,IAAK,IACH,OAAO8wB,EAAgB,4EAAkB,wFAE3C,IAAK,KACH,OAAO7L,GAAU6L,EAAgB,wCAAY,qDAE/C,IAAK,IACL,IAAK,KACH,OAAO7L,GAAU6L,EAAgB,kCAAW,+CAE9C,IAAK,IACL,IAAK,KACH,OAAO7L,GAAU6L,EAAgB,sBAAS,yCAE5C,IAAK,IACL,IAAK,KACH,OAAO7L,GAAU6L,EAAgB,4BAAU,yCAE7C,IAAK,IACL,IAAK,KACH,OAAO7L,GAAU6L,EAAgB,sBAAS,mCAE5C,IAAK,IACL,IAAK,KACH,OAAO7L,GAAU6L,EAAgB,sBAAS,yCAE5C,QACE,OAAO7L,GAIJyzC,EAAOl4B,aAAa,KAAM,CACjChK,OAAQ,8+BAA+LzkB,MAAM,KAC7MwkB,YAAa,iQAA6ExkB,MAAM,KAChG6wD,kBAAkB,EAClBnnC,SAAU,iOAA6C1pB,MAAM,KAC7DypB,cAAe,uIAA8BzpB,MAAM,KACnDwpB,YAAa,6FAAuBxpB,MAAM,KAC1C8wD,oBAAoB,EACpB/zC,eAAgB,CACdI,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,6CACJC,IAAK,mDACLC,KAAM,0DAERkQ,cAAe,6BACfZ,KAAM,SAAUt2B,GACd,MAAiB,iBAAVA,GAET4gB,SAAU,SAAUgd,EAAMc,EAAQ5H,GAChC,OAAI8G,EAAO,GACF,eAEA,gBAGXhZ,SAAU,CACRN,QAAS,kDACTC,QAAS,kDACTC,SAAU,qCACVC,QAAS,kDACTC,SAAU,6DACVC,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,oCACRC,KAAM,8BACNzvB,EAAG8hE,EACHpyC,GAAIoyC,EACJzjE,EAAGyjE,EACHnyC,GAAImyC,EACJlyC,EAAGkyC,EACHjyC,GAAIiyC,EACJvjE,EAAGujE,EACHhyC,GAAIgyC,EACJ7xC,EAAG6xC,EACH5xC,GAAI4xC,EACJ3xC,EAAG2xC,EACH1xC,GAAI0xC,GAEN/iC,uBAAwB,mCACxBlR,QAAS,SAAUpJ,EAAQynB,GACzB,OAAQA,GACN,IAAK,IACL,IAAK,IACL,IAAK,MACH,OAAOznB,EAAS,4BAElB,QACE,OAAOA,MAjGiFo1B,CAAQ,EAAQ,K,iBCEzG,SAAUqe,GACjB,aAEA,IAAI6qB,EAAY,CACd,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,UAEDC,EAAY,CACd,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,KAGP,SAASyC,EAAehhE,EAAQ6L,EAAe5L,EAAQ6L,GACrD,IAAI1D,EAAS,GAEb,GAAIyD,EACF,OAAQ5L,GACN,IAAK,IACHmI,EAAS,0DACT,MAEF,IAAK,KACHA,EAAS,oCACT,MAEF,IAAK,IACHA,EAAS,8CACT,MAEF,IAAK,KACHA,EAAS,0CACT,MAEF,IAAK,IACHA,EAAS,kCACT,MAEF,IAAK,KACHA,EAAS,wBACT,MAEF,IAAK,IACHA,EAAS,wCACT,MAEF,IAAK,KACHA,EAAS,8BACT,MAEF,IAAK,IACHA,EAAS,8CACT,MAEF,IAAK,KACHA,EAAS,oCACT,MAEF,IAAK,IACHA,EAAS,wCACT,MAEF,IAAK,KACHA,EAAS,yCAIb,OAAQnI,GACN,IAAK,IACHmI,EAAS,sEACT,MAEF,IAAK,KACHA,EAAS,gDACT,MAEF,IAAK,IACHA,EAAS,0DACT,MAEF,IAAK,KACHA,EAAS,gDACT,MAEF,IAAK,IACHA,EAAS,8CACT,MAEF,IAAK,KACHA,EAAS,oCACT,MAEF,IAAK,IACHA,EAAS,oDACT,MAEF,IAAK,KACHA,EAAS,0CACT,MAEF,IAAK,IACHA,EAAS,gEACT,MAEF,IAAK,KACHA,EAAS,sDACT,MAEF,IAAK,IACHA,EAAS,oDACT,MAEF,IAAK,KACHA,EAAS,0CAKf,OAAOA,EAAOjmB,QAAQ,MAAO6d,GAGtByzC,EAAOl4B,aAAa,KAAM,CACjChK,OAAQ,0cAAwFzkB,MAAM,KACtGwkB,YAAa,8VAAgFxkB,MAAM,KACnG6wD,kBAAkB,EAClBnnC,SAAU,6RAAuD1pB,MAAM,KACvEypB,cAAe,+JAAkCzpB,MAAM,KACvDwpB,YAAa,iFAAqBxpB,MAAM,KACxC+c,eAAgB,CACdI,GAAI,wCACJD,IAAK,2CACLE,EAAG,aACHC,GAAI,cACJC,IAAK,qDACLC,KAAM,4DAERpC,SAAU,CACRN,QAAS,oBACTC,QAAS,sCACTC,SAAU,WACVC,QAAS,0BACTC,SAAU,4CACVC,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,mCACRC,KAAM,yCACNzvB,EAAGylF,EACH/1D,GAAI+1D,EACJpnF,EAAGonF,EACH91D,GAAI81D,EACJ71D,EAAG61D,EACH51D,GAAI41D,EACJlnF,EAAGknF,EACH31D,GAAI21D,EACJx1D,EAAGw1D,EACHv1D,GAAIu1D,EACJt1D,EAAGs1D,EACHr1D,GAAIq1D,GAEN5+C,SAAU,SAAUniB,GAClB,OAAOA,EAAO9d,QAAQ,mEAAiB,SAAUyG,GAC/C,OAAO21E,EAAU31E,OAGrB8hC,WAAY,SAAUzqB,GACpB,OAAOA,EAAO9d,QAAQ,OAAO,SAAUyG,GACrC,OAAO01E,EAAU11E,OAGrB2xB,cAAe,2LACf4G,aAAc,SAAUF,EAAMhd,GAK5B,OAJa,KAATgd,IACFA,EAAO,GAGQ,mCAAbhd,GAAqC,mCAAbA,EACnBgd,EACe,yCAAbhd,GAAsC,qDAAbA,GAAwC,yCAAbA,EACtDgd,GAAQ,GAAKA,EAAOA,EAAO,QAD7B,GAIThd,SAAU,SAAUgd,EAAMc,EAAQ5H,GAChC,OAAI8G,GAAQ,GAAKA,EAAO,EACf,iCACEA,EAAO,GACT,iCACEA,EAAO,GACT,uCACEA,EAAO,GACT,mDAEA,wCAGXjM,KAAM,CACJL,IAAK,EAELC,IAAK,KAtNuFwgB,CAAQ,EAAQ,K,iBCAzG,SAAUqe,GACjB,aAESA,EAAOl4B,aAAa,KAAM,CACjChK,OAAQ,oFAAoFzkB,MAAM,KAClGwkB,YAAa,kDAAkDxkB,MAAM,KACrE0pB,SAAU,6CAA6C1pB,MAAM,KAC7DypB,cAAe,8BAA8BzpB,MAAM,KACnDwpB,YAAa,uBAAuBxpB,MAAM,KAC1C+c,eAAgB,CACdI,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,4BACLC,KAAM,mCAERkQ,cAAe,8BACf4G,aAAc,SAAUF,EAAMhd,GAK5B,OAJa,KAATgd,IACFA,EAAO,GAGQ,SAAbhd,EACKgd,EACe,cAAbhd,EACFgd,GAAQ,GAAKA,EAAOA,EAAO,GACZ,WAAbhd,GAAsC,UAAbA,EAC3Bgd,EAAO,QADT,GAIThd,SAAU,SAAUgV,EAAOG,EAASe,GAClC,OAAIlB,EAAQ,GACH,OACEA,EAAQ,GACV,YACEA,EAAQ,GACV,SAEA,SAGXhR,SAAU,CACRN,QAAS,sBACTC,QAAS,kBACTC,SAAU,kBACVC,QAAS,sBACTC,SAAU,wBACVC,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,WACRC,KAAM,gBACNzvB,EAAG,gBACH0vB,GAAI,UACJrxB,EAAG,UACHsxB,GAAI,WACJC,EAAG,QACHC,GAAI,SACJtxB,EAAG,SACHuxB,GAAI,UACJG,EAAG,UACHC,GAAI,WACJC,EAAG,UACHC,GAAI,YAENqJ,KAAM,CACJL,IAAK,EAELC,IAAK,KAtEuFwgB,CAAQ,EAAQ,K,iBCEzG,SAAUqe,GACjB,aAEWA,EAAOl4B,aAAa,QAAS,CACtChK,OAAQ,oFAAoFzkB,MAAM,KAClGwkB,YAAa,kDAAkDxkB,MAAM,KACrE0pB,SAAU,6CAA6C1pB,MAAM,KAC7DypB,cAAe,8BAA8BzpB,MAAM,KACnDwpB,YAAa,uBAAuBxpB,MAAM,KAC1C+c,eAAgB,CACdI,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,4BACLC,KAAM,mCAERkQ,cAAe,8BACf4G,aAAc,SAAUF,EAAMhd,GAK5B,OAJa,KAATgd,IACFA,EAAO,GAGQ,SAAbhd,EACKgd,EACe,cAAbhd,EACFgd,GAAQ,GAAKA,EAAOA,EAAO,GACZ,WAAbhd,GAAsC,UAAbA,EAC3Bgd,EAAO,QADT,GAIThd,SAAU,SAAUgV,EAAOG,EAASe,GAClC,OAAIlB,EAAQ,GACH,OACEA,EAAQ,GACV,YACEA,EAAQ,GACV,SAEA,SAGXhR,SAAU,CACRN,QAAS,sBACTC,QAAS,kBACTC,SAAU,kBACVC,QAAS,sBACTC,SAAU,wBACVC,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,WACRC,KAAM,gBACNzvB,EAAG,gBACH0vB,GAAI,UACJrxB,EAAG,UACHsxB,GAAI,WACJC,EAAG,QACHC,GAAI,SACJtxB,EAAG,SACHuxB,GAAI,UACJG,EAAG,UACHC,GAAI,WACJC,EAAG,UACHC,GAAI,YAENqJ,KAAM,CACJL,IAAK,EAELC,IAAK,KAtEuFwgB,CAAQ,EAAQ,K,iBCAzG,SAAUqe,GACjB,aAESA,EAAOl4B,aAAa,KAAM,CACjChK,OAAQ,kGAAwFzkB,MAAM,KACtGwkB,YAAa,4DAAkDxkB,MAAM,KACrE0pB,SAAU,0FAAiE1pB,MAAM,KACjFypB,cAAe,6CAA8BzpB,MAAM,KACnDwpB,YAAa,sCAAuBxpB,MAAM,KAC1C+c,eAAgB,CACdI,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAERpC,SAAU,CACRN,QAAS,iBACTC,QAAS,sBACTC,SAAU,gBACVC,QAAS,0BACTC,SAAU,iCACVC,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,aACRC,KAAM,SACNzvB,EAAG,eACH0vB,GAAI,aACJrxB,EAAG,SACHsxB,GAAI,YACJC,EAAG,cACHC,GAAI,kBACJtxB,EAAG,eACHuxB,GAAI,iBACJG,EAAG,QACHC,GAAI,UACJC,EAAG,OACHC,GAAI,UAEN2O,uBAAwB,cACxBlR,QAAS,SACT4L,KAAM,CACJL,IAAK,EAELC,IAAK,KA/CuFwgB,CAAQ,EAAQ,K,iBCGzG,SAAUqe,GACjB,aAEA,IAAI6qB,EAAY,CACd,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,UAEDC,EAAY,CACd,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,KAEE9qB,EAAOl4B,aAAa,KAAM,CACjChK,OAAQ,4dAA2FzkB,MAAM,KACzGwkB,YAAa,4OAAmDxkB,MAAM,KACtE0pB,SAAU,mSAAwD1pB,MAAM,KACxEypB,cAAe,qHAA2BzpB,MAAM,KAChDwpB,YAAa,qHAA2BxpB,MAAM,KAC9C+c,eAAgB,CACdI,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAERpC,SAAU,CACRN,QAAS,gDACTC,QAAS,6EACTC,SAAU,+BACVC,QAAS,sDACTC,SAAU,8FACVC,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,6DACRC,KAAM,yEACNzvB,EAAG,wFACH0vB,GAAI,gDACJrxB,EAAG,mDACHsxB,GAAI,oCACJC,EAAG,6CACHC,GAAI,8BACJtxB,EAAG,uCACHuxB,GAAI,wBACJG,EAAG,2BACHC,GAAI,YACJC,EAAG,6CACHC,GAAI,+BAENyW,SAAU,SAAUniB,GAClB,OAAOA,EAAO9d,QAAQ,mEAAiB,SAAUyG,GAC/C,OAAO21E,EAAU31E,OAGrB8hC,WAAY,SAAUzqB,GACpB,OAAOA,EAAO9d,QAAQ,OAAO,SAAUyG,GACrC,OAAO01E,EAAU11E,OAGrBosB,KAAM,CACJL,IAAK,EAELC,IAAK,KA/EuFwgB,CAAQ,EAAQ,K,iBCCzG,SAAUqe,GACjB,aAESA,EAAOl4B,aAAa,KAAM,CACjChK,OAAQ,qFAAqFzkB,MAAM,KACnGwkB,YAAa,6DAA6DxkB,MAAM,KAChF6wD,kBAAkB,EAClBnnC,SAAU,2DAAqD1pB,MAAM,KACrEypB,cAAe,oCAA8BzpB,MAAM,KACnDwpB,YAAa,6BAAuBxpB,MAAM,KAC1C8wD,oBAAoB,EACpB/zC,eAAgB,CACdI,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,eACJC,IAAK,2BACLC,KAAM,iCAERpC,SAAU,CACRN,QAAS,iBACTC,QAAS,oBACTC,SAAU,gBACVC,QAAS,oBACTC,SAAU,0BACVC,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,QACRC,KAAM,WACNzvB,EAAG,gBACH0vB,GAAI,cACJrxB,EAAG,aACHsxB,GAAI,cACJC,EAAG,UACHC,GAAI,WACJtxB,EAAG,SACHuxB,GAAI,WACJC,EAAG,SACHC,GAAI,UACJC,EAAG,cACHC,GAAI,gBACJC,EAAG,YACHC,GAAI,YAEN2O,uBAAwB,YACxBlR,QAAS,MACT4L,KAAM,CACJL,IAAK,EAELC,IAAK,KAnDuFwgB,CAAQ,EAAQ,K,iBCDzG,SAAUqe,GACjB,aAEA,IAAI6qB,EAAY,CACd,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,UAEDC,EAAY,CACd,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,KAEE9qB,EAAOl4B,aAAa,KAAM,CACjChK,OAAQ,ocAAuFzkB,MAAM,KACrGwkB,YAAa,uTAAuExkB,MAAM,KAC1F6wD,kBAAkB,EAClBnnC,SAAU,mSAAwD1pB,MAAM,KACxEypB,cAAe,4KAA0CzpB,MAAM,KAC/DwpB,YAAa,wFAA4BxpB,MAAM,KAC/C8wD,oBAAoB,EACpB/zC,eAAgB,CACdI,GAAI,wCACJD,IAAK,2CACLE,EAAG,aACHC,GAAI,cACJC,IAAK,qDACLC,KAAM,4DAER+X,SAAU,SAAUniB,GAClB,OAAOA,EAAO9d,QAAQ,mEAAiB,SAAUyG,GAC/C,OAAO21E,EAAU31E,OAGrB8hC,WAAY,SAAUzqB,GACpB,OAAOA,EAAO9d,QAAQ,OAAO,SAAUyG,GACrC,OAAO01E,EAAU11E,OAGrB2xB,cAAe,wHACf4G,aAAc,SAAUF,EAAMhd,GAK5B,OAJa,KAATgd,IACFA,EAAO,GAGQ,6BAAbhd,EACKgd,EAAO,EAAIA,EAAOA,EAAO,GACV,mCAAbhd,EACFgd,EACe,yCAAbhd,EACFgd,GAAQ,GAAKA,EAAOA,EAAO,GACZ,6BAAbhd,EACFgd,EAAO,QADT,GAIThd,SAAU,SAAUgd,EAAMc,EAAQ5H,GAChC,OAAI8G,EAAO,EACF,2BACEA,EAAO,GACT,iCACEA,EAAO,GACT,uCACEA,EAAO,GACT,2BAEA,4BAGXhZ,SAAU,CACRN,QAAS,oBACTC,QAAS,gCACTC,SAAU,8CACVC,QAAS,gCACTC,SAAU,wCACVC,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,iBACRC,KAAM,oCACNzvB,EAAG,oDACH0vB,GAAI,gDACJrxB,EAAG,8CACHsxB,GAAI,oCACJC,EAAG,8CACHC,GAAI,oCACJtxB,EAAG,kCACHuxB,GAAI,wBACJG,EAAG,8CACHC,GAAI,oCACJC,EAAG,wCACHC,GAAI,+BAENqJ,KAAM,CACJL,IAAK,EAELC,IAAK,KA9GuFwgB,CAAQ,EAAQ,K,iBCEzG,SAAUqe,GACjB,aAEA,IAAI4K,EAAsB,6DAA6DvxD,MAAM,KACzFwxD,EAAyB,kDAAkDxxD,MAAM,KACjF4kB,EAAc,CAAC,QAAS,QAAS,iBAAkB,QAAS,SAAU,cAAe,cAAe,QAAS,QAAS,QAAS,QAAS,SACxID,EAAc,qKACPgiC,EAAOl4B,aAAa,QAAS,CACtChK,OAAQ,0FAA0FzkB,MAAM,KACxGwkB,YAAa,SAAU13B,EAAGkpB,GACxB,OAAKlpB,EAEM,QAAQoD,KAAK8lB,GACfw7C,EAAuB1kE,EAAEm0B,SAEzBswC,EAAoBzkE,EAAEm0B,SAJtBswC,GAOX5sC,YAAaA,EACbD,iBAAkBC,EAClB6rC,kBAAmB,4FACnBC,uBAAwB,mFACxB7rC,YAAaA,EACb8rC,gBAAiB9rC,EACjB+rC,iBAAkB/rC,EAClB8E,SAAU,6DAA6D1pB,MAAM,KAC7EypB,cAAe,8BAA8BzpB,MAAM,KACnDwpB,YAAa,uBAAuBxpB,MAAM,KAC1C8wD,oBAAoB,EACpB/zC,eAAgB,CACdI,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAERpC,SAAU,CACRN,QAAS,kBACTC,QAAS,iBACTC,SAAU,eACVC,QAAS,mBACTC,SAAU,2BACVC,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,UACRC,KAAM,aACNzvB,EAAG,oBACH0vB,GAAI,cACJrxB,EAAG,mBACHsxB,GAAI,aACJC,EAAG,gBACHC,GAAI,SACJtxB,EAAG,gBACHuxB,GAAI,WACJG,EAAG,kBACHC,GAAI,aACJC,EAAG,iBACHC,GAAI,WAEN2O,uBAAwB,kBACxBlR,QAAS,SAAUpJ,GACjB,OAAOA,GAAqB,IAAXA,GAA2B,IAAXA,GAAgBA,GAAU,GAAK,MAAQ,OAE1EgV,KAAM,CACJL,IAAK,EAELC,IAAK,KArEuFwgB,CAAQ,EAAQ,K,iBCCzG,SAAUqe,GACjB,aAESA,EAAOl4B,aAAa,KAAM,CACjChK,OAAQ,qFAAqFzkB,MAAM,KACnGwkB,YAAa,6DAA6DxkB,MAAM,KAChF6wD,kBAAkB,EAClBnnC,SAAU,wDAAqD1pB,MAAM,KACrEypB,cAAe,kCAA+BzpB,MAAM,KACpDwpB,YAAa,0BAAuBxpB,MAAM,KAC1C8wD,oBAAoB,EACpB/zC,eAAgB,CACdI,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,eACJC,IAAK,0BACLC,KAAM,iCAERpC,SAAU,CACRN,QAAS,oBACTC,QAAS,uBACTC,SAAU,mBACVC,QAAS,uBACTC,SAAU,sCACVC,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,QACRC,KAAM,WACNzvB,EAAG,eACH0vB,GAAI,YACJrxB,EAAG,aACHsxB,GAAI,YACJC,EAAG,WACHC,GAAI,WACJtxB,EAAG,UACHuxB,GAAI,WACJC,EAAG,UACHC,GAAI,WACJC,EAAG,eACHC,GAAI,gBACJC,EAAG,YACHC,GAAI,YAEN2O,uBAAwB,YACxBlR,QAAS,MACT4L,KAAM,CACJL,IAAK,EAELC,IAAK,KAnDuFwgB,CAAQ,EAAQ,K,iBCAzG,SAAUqe,GACjB,aAEYA,EAAOl4B,aAAa,SAAU,CACxChK,OAAQ,CACN4rC,WAAY,iGAAqFrwD,MAAM,KACvGgW,OAAQ,kIAAsHhW,MAAM,KACpIolB,SAAU,mBAEZZ,YAAa,kEAA+DxkB,MAAM,KAClF6wD,kBAAkB,EAClBnnC,SAAU,iEAA2D1pB,MAAM,KAC3EypB,cAAe,8BAA8BzpB,MAAM,KACnDwpB,YAAa,uBAAuBxpB,MAAM,KAC1C8wD,oBAAoB,EACpB/zC,eAAgB,CACdI,GAAI,OACJD,IAAK,UACLE,EAAG,aACHC,GAAI,mBACJq1D,GAAI,aACJp1D,IAAK,4BACLq1D,IAAK,mBACLp1D,KAAM,iCACNq1D,KAAM,wBAERz3D,SAAU,CACRN,QAAS,gBACTC,QAAS,eACTC,SAAU,cACVC,QAAS,gBACTC,SAAU,qBACVC,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,eACRC,KAAM,QACNzvB,EAAG,gBACH0vB,GAAI,cACJrxB,EAAG,aACHsxB,GAAI,aACJC,EAAG,UACHC,GAAI,UACJtxB,EAAG,UACHuxB,GAAI,WACJG,EAAG,SACHC,GAAI,WACJC,EAAG,QACHC,GAAI,UAEN2O,uBAAwB,wBACxBlR,QAAS,SAAUpJ,EAAQynB,GACzB,IAAIrf,EAAoB,IAAXpI,EAAe,IAAiB,IAAXA,EAAe,IAAiB,IAAXA,EAAe,IAAiB,IAAXA,EAAe,IAAM,OAMjG,MAJe,MAAXynB,GAA6B,MAAXA,IACpBrf,EAAS,KAGJpI,EAASoI,GAElB4M,KAAM,CACJL,IAAK,EAELC,IAAK,KAhEuFwgB,CAAQ,EAAQ,K,iBCCzG,SAAUqe,GACjB,aAEA,IAAI6qB,EAAY,CACd,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,UAEDC,EAAY,CACd,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,KAEI9qB,EAAOl4B,aAAa,QAAS,CAEtChK,OAAQ,8VAAsEzkB,MAAM,KACpFwkB,YAAa,8VAAsExkB,MAAM,KACzF0pB,SAAU,ySAAyD1pB,MAAM,KACzEypB,cAAe,yJAAiCzpB,MAAM,KACtDwpB,YAAa,yJAAiCxpB,MAAM,KACpD+c,eAAgB,CACdI,GAAI,4BACJD,IAAK,+BACLE,EAAG,aACHC,GAAI,cACJC,IAAK,yCACLC,KAAM,gDAERpC,SAAU,CACRN,QAAS,oBACTC,QAAS,oBACTC,SAAU,sCACVC,QAAS,oBACTC,SAAU,4CACVC,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,8BACRC,KAAM,oCACNzvB,EAAG,oDACH0vB,GAAI,oCACJrxB,EAAG,wCACHsxB,GAAI,8BACJC,EAAG,8CACHC,GAAI,8BACJtxB,EAAG,wCACHuxB,GAAI,wBACJG,EAAG,oDACHC,GAAI,oCACJC,EAAG,wCACHC,GAAI,yBAENyW,SAAU,SAAUniB,GAClB,OAAOA,EAAO9d,QAAQ,mEAAiB,SAAUyG,GAC/C,OAAO21E,EAAU31E,OAGrB8hC,WAAY,SAAUzqB,GACpB,OAAOA,EAAO9d,QAAQ,OAAO,SAAUyG,GACrC,OAAO01E,EAAU11E,OAKrB2xB,cAAe,4GACf4G,aAAc,SAAUF,EAAMhd,GAK5B,OAJa,KAATgd,IACFA,EAAO,GAGQ,uBAAbhd,EACKgd,EAAO,EAAIA,EAAOA,EAAO,GACV,6BAAbhd,EACFgd,EACe,yCAAbhd,EACFgd,GAAQ,GAAKA,EAAOA,EAAO,GACZ,6BAAbhd,EACFgd,EAAO,QADT,GAIThd,SAAU,SAAUgd,EAAMc,EAAQ5H,GAChC,OAAI8G,EAAO,EACF,qBACEA,EAAO,GACT,2BACEA,EAAO,GACT,uCACEA,EAAO,GACT,2BAEA,sBAGXjM,KAAM,CACJL,IAAK,EAELC,IAAK,KA/GuFwgB,CAAQ,EAAQ,K,iBCCzG,SAAUqe,GACjB,aAEWA,EAAOl4B,aAAa,QAAS,CACtChK,OAAQ,8FAA2FzkB,MAAM,KACzGwkB,YAAa,kDAAkDxkB,MAAM,KACrE0pB,SAAU,uFAAiF1pB,MAAM,KACjGypB,cAAe,iCAA8BzpB,MAAM,KACnDwpB,YAAa,yCAAuBxpB,MAAM,KAC1C8wD,oBAAoB,EACpB/zC,eAAgB,CACdI,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,wBACJC,IAAK,sCACLC,KAAM,6CAERpC,SAAU,CACRN,QAAS,kBACTC,QAAS,uBACTC,SAAU,kBACVC,QAAS,mBACTC,SAAU,WACR,OAAsB,IAAfrqB,KAAK05B,OAA8B,IAAf15B,KAAK05B,MAAc,8BAC5C,+BAEJpP,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,QACRC,KAAM,WACNzvB,EAAG,kBACH0vB,GAAI,cACJrxB,EAAG,YACHsxB,GAAI,aACJC,EAAG,WACHC,GAAI,WACJtxB,EAAG,SACHuxB,GAAI,UACJG,EAAG,YACHC,GAAI,WACJC,EAAG,SACHC,GAAI,WAEN2O,uBAAwB,cACxBlR,QAAS,SACTO,YAAa,qBAhDiFyrB,CAAQ,EAAQ,K,iBCGzG,SAAUqe,GACjB,aAEA,SAASorB,EAAuB7+D,EAAQ6L,EAAe9wB,GACrD,IASI4pC,EAAY,IAMhB,OAJI3kB,EAAS,KAAO,IAAMA,GAAU,KAAOA,EAAS,MAAQ,KAC1D2kB,EAAY,QAGP3kB,EAAS2kB,EAfH,CACX1Z,GAAI,UACJC,GAAI,SACJE,GAAI,MACJC,GAAI,OACJE,GAAI,yBACJE,GAAI,OACJE,GAAI,OAQ6B5wB,GAG5B04D,EAAOl4B,aAAa,KAAM,CACjChK,OAAQ,oGAAoGzkB,MAAM,KAClHwkB,YAAa,+DAA+DxkB,MAAM,KAClF6wD,kBAAkB,EAClBnnC,SAAU,yEAAkD1pB,MAAM,KAClEypB,cAAe,iCAA8BzpB,MAAM,KACnDwpB,YAAa,0BAAuBxpB,MAAM,KAC1C+c,eAAgB,CACdI,GAAI,OACJD,IAAK,UACLE,EAAG,aACHC,GAAI,cACJC,IAAK,mBACLC,KAAM,0BAERpC,SAAU,CACRN,QAAS,cACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,eACTC,SAAU,uBACVC,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,WACRC,KAAM,qBACNzvB,EAAG,oBACH0vB,GAAI4zD,EACJjlF,EAAG,WACHsxB,GAAI2zD,EACJ1zD,EAAG,aACHC,GAAIyzD,EACJ/kF,EAAG,OACHuxB,GAAIwzD,EACJvzD,EAAG,gCACHC,GAAIszD,EACJrzD,EAAG,cACHC,GAAIozD,EACJnzD,EAAG,QACHC,GAAIkzD,GAEN7pD,KAAM,CACJL,IAAK,EAELC,IAAK,KAnEuFwgB,CAAQ,EAAQ,K,iBCCzG,SAAUqe,GACjB,aAEA,SAAS2J,EAAOuhB,EAAM3gC,GACpB,IAAI4gC,EAAQD,EAAK7xE,MAAM,KACvB,OAAOkxC,EAAM,KAAO,GAAKA,EAAM,MAAQ,GAAK4gC,EAAM,GAAK5gC,EAAM,IAAM,GAAKA,EAAM,IAAM,IAAMA,EAAM,IAAM,IAAMA,EAAM,KAAO,IAAM4gC,EAAM,GAAKA,EAAM,GAGlJ,SAASC,EAAuB7+D,EAAQ6L,EAAe9wB,GAWrD,MAAY,MAARA,EACK8wB,EAAgB,uCAAW,uCAE3B7L,EAAS,IAAMo9C,EAbX,CACXnyC,GAAIY,EAAgB,6HAA2B,6HAC/CX,GAAIW,EAAgB,2GAAwB,2GAC5CT,GAAI,6EACJC,GAAI,uEACJE,GAAI,iHACJE,GAAI,iHACJE,GAAI,kEAMgC5wB,IAAOilB,GAI/C,IAAI0R,EAAc,CAAC,uBAAS,uBAAS,uBAAS,uBAAS,+BAAY,uBAAS,uBAAS,uBAAS,uBAAS,uBAAS,uBAAS,wBAIhH+hC,EAAOl4B,aAAa,KAAM,CACjChK,OAAQ,CACNzO,OAAQ,kbAAoFhW,MAAM,KAClGqwD,WAAY,saAAkFrwD,MAAM,MAEtGwkB,YAAa,CAEXxO,OAAQ,6QAAgEhW,MAAM,KAC9EqwD,WAAY,kRAAgErwD,MAAM,MAEpF0pB,SAAU,CACR2mC,WAAY,mVAAgErwD,MAAM,KAClFgW,OAAQ,mVAAgEhW,MAAM,KAC9EolB,SAAU,0JAEZqE,cAAe,6FAAuBzpB,MAAM,KAC5CwpB,YAAa,6FAAuBxpB,MAAM,KAC1C4kB,YAAaA,EACb8rC,gBAAiB9rC,EACjB+rC,iBAAkB/rC,EAElBD,YAAa,+wBAEbD,iBAAkB,+wBAElB8rC,kBAAmB,wgBAEnBC,uBAAwB,8TACxB1zC,eAAgB,CACdI,GAAI,OACJD,IAAK,UACLE,EAAG,aACHC,GAAI,sBACJC,IAAK,4BACLC,KAAM,mCAERpC,SAAU,CACRN,QAAS,0DACTC,QAAS,oDACTE,QAAS,8CACTD,SAAU,SAAUM,GAClB,GAAIA,EAAI6M,SAAWt3B,KAAKs3B,OAgBtB,OAAmB,IAAft3B,KAAK05B,MACA,mCAEA,6BAlBT,OAAQ15B,KAAK05B,OACX,KAAK,EACH,MAAO,oFAET,KAAK,EACL,KAAK,EACL,KAAK,EACH,MAAO,oFAET,KAAK,EACL,KAAK,EACL,KAAK,EACH,MAAO,sFAUfrP,SAAU,SAAUI,GAClB,GAAIA,EAAI6M,SAAWt3B,KAAKs3B,OAgBtB,OAAmB,IAAft3B,KAAK05B,MACA,mCAEA,6BAlBT,OAAQ15B,KAAK05B,OACX,KAAK,EACH,MAAO,wEAET,KAAK,EACL,KAAK,EACL,KAAK,EACH,MAAO,wEAET,KAAK,EACL,KAAK,EACL,KAAK,EACH,MAAO,0EAUfpP,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,oCACRC,KAAM,oCACNzvB,EAAG,8FACH0vB,GAAI4zD,EACJjlF,EAAGilF,EACH3zD,GAAI2zD,EACJ1zD,EAAG,qBACHC,GAAIyzD,EACJ/kF,EAAG,2BACHuxB,GAAIwzD,EACJvzD,EAAG,uCACHC,GAAIszD,EACJrzD,EAAG,iCACHC,GAAIozD,EACJnzD,EAAG,qBACHC,GAAIkzD,GAENtkD,cAAe,6GACfZ,KAAM,SAAUt2B,GACd,MAAO,8DAAiBrG,KAAKqG,IAE/B4gB,SAAU,SAAUgd,EAAMc,EAAQ5H,GAChC,OAAI8G,EAAO,EACF,2BACEA,EAAO,GACT,2BACEA,EAAO,GACT,qBAEA,wCAGX3G,uBAAwB,uCACxBlR,QAAS,SAAUpJ,EAAQynB,GACzB,OAAQA,GACN,IAAK,IACL,IAAK,IACL,IAAK,MACH,OAAOznB,EAAS,UAElB,IAAK,IACH,OAAOA,EAAS,gBAElB,IAAK,IACL,IAAK,IACH,OAAOA,EAAS,UAElB,QACE,OAAOA,IAGbgV,KAAM,CACJL,IAAK,EAELC,IAAK,KAhLuFwgB,CAAQ,EAAQ,K,iBCDzG,SAAUqe,GACjB,aAEA,IAAIliC,EAAS,CAAC,iCAAS,6CAAW,2BAAQ,iCAAS,qBAAO,qBAAO,uCAAU,2BAAQ,6CAAW,uCAAU,iCAAS,kCAC7GoS,EAAO,CAAC,qBAAO,2BAAQ,iCAAS,2BAAQ,2BAAQ,qBAAO,4BAClD8vB,EAAOl4B,aAAa,KAAM,CACjChK,OAAQA,EACRD,YAAaC,EACbiF,SAAUmN,EACVpN,cAAeoN,EACfrN,YAAaqN,EACb9Z,eAAgB,CACdI,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,gCAERkQ,cAAe,wCACfZ,KAAM,SAAUt2B,GACd,MAAO,uBAAUA,GAEnB4gB,SAAU,SAAUgd,EAAMc,EAAQ5H,GAChC,OAAI8G,EAAO,GACF,qBAGF,sBAEThZ,SAAU,CACRN,QAAS,oBACTC,QAAS,sCACTC,SAAU,2EACVC,QAAS,sCACTC,SAAU,mFACVC,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,wBACRC,KAAM,kBACNzvB,EAAG,oDACH0vB,GAAI,oCACJrxB,EAAG,kCACHsxB,GAAI,wBACJC,EAAG,wCACHC,GAAI,8BACJtxB,EAAG,8CACHuxB,GAAI,oCACJG,EAAG,8CACHC,GAAI,oCACJC,EAAG,kCACHC,GAAI,yBAENyW,SAAU,SAAUniB,GAClB,OAAOA,EAAO9d,QAAQ,UAAM,MAE9BuoC,WAAY,SAAUzqB,GACpB,OAAOA,EAAO9d,QAAQ,KAAM,WAE9B6yB,KAAM,CACJL,IAAK,EAELC,IAAK,KAhEuFwgB,CAAQ,EAAQ,K,iBCCzG,SAAUqe,GACjB,aAESA,EAAOl4B,aAAa,KAAM,CACjChK,OAAQ,wNAAmJzkB,MAAM,KACjKwkB,YAAa,oFAA6DxkB,MAAM,KAChF0pB,SAAU,gGAA6E1pB,MAAM,KAC7FypB,cAAe,2CAAmCzpB,MAAM,KACxDwpB,YAAa,gBAAgBxpB,MAAM,KACnC+c,eAAgB,CACdI,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,oBACJC,IAAK,gCACLC,KAAM,uCAERpC,SAAU,CACRN,QAAS,eACTC,QAAS,iBACTC,SAAU,eACVC,QAAS,eACTC,SAAU,wBACVC,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,iBACRC,KAAM,gBACNzvB,EAAG,mBACH0vB,GAAI,eACJrxB,EAAG,eACHsxB,GAAI,cACJC,EAAG,cACHC,GAAI,aACJtxB,EAAG,cACHuxB,GAAI,cACJG,EAAG,gBACHC,GAAI,cACJC,EAAG,aACHC,GAAI,YAEN2O,uBAAwB,YACxBlR,QAAS,MACT4L,KAAM,CACJL,IAAK,EAELC,IAAK,KA/CuFwgB,CAAQ,EAAQ,K,iBCCzG,SAAUqe,GACjB,aAISA,EAAOl4B,aAAa,KAAM,CACjChK,OAAQ,sgBAAkGzkB,MAAM,KAChHwkB,YAAa,0QAAwDxkB,MAAM,KAC3E0pB,SAAU,mVAAgE1pB,MAAM,KAChFypB,cAAe,mJAAgCzpB,MAAM,KACrDwpB,YAAa,iFAAqBxpB,MAAM,KACxC8wD,oBAAoB,EACpB/zC,eAAgB,CACdI,GAAI,SACJD,IAAK,YACLE,EAAG,aACHC,GAAI,cACJC,IAAK,sBACLC,KAAM,0DAERpC,SAAU,CACRN,QAAS,4BACTC,QAAS,kCACTC,SAAU,kBACVC,QAAS,kCACTC,SAAU,yDACVC,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,6BACRC,KAAM,oCACNzvB,EAAG,sEACH0vB,GAAI,oCACJrxB,EAAG,yDACHsxB,GAAI,sDACJC,EAAG,qBACHC,GAAI,wBACJtxB,EAAG,2BACHuxB,GAAI,wBACJG,EAAG,2BACHC,GAAI,wBACJC,EAAG,qBACHC,GAAI,yBAEN2O,uBAAwB,mCACxBlR,QAAS,SAAUpJ,GACjB,OAAOA,EAAS,6BAElBua,cAAe,iHACfZ,KAAM,SAAUt2B,GACd,MAAiB,mBAAVA,GAA8B,0CAAVA,GAE7B4gB,SAAU,SAAUgV,EAAOG,EAASe,GAClC,OAAIlB,EAAQ,GACHkB,EAAU,iBAAS,wCAEnBA,EAAU,uBAAU,2CAzD+Dib,CAAQ,EAAQ,K,iBCEzG,SAAUqe,GACjB,aAEA,IAAIliC,EAAS,yGAAoFzkB,MAAM,KACnGwkB,EAAc,2DAAkDxkB,MAAM,KAE1E,SAASswD,EAAOniE,GACd,OAAOA,EAAI,GAAKA,EAAI,EAGtB,SAASoiE,EAAUr9C,EAAQ6L,EAAe9wB,EAAK+wB,GAC7C,IAAI5K,EAASlB,EAAS,IAEtB,OAAQjlB,GACN,IAAK,IAEH,OAAO8wB,GAAiBC,EAAW,mBAAe,mBAEpD,IAAK,KAEH,OAAID,GAAiBC,EACZ5K,GAAUk8C,EAAOp9C,GAAU,UAAY,aAEvCkB,EAAS,YAGpB,IAAK,IAEH,OAAO2K,EAAgB,YAAWC,EAAW,YAAW,aAE1D,IAAK,KAEH,OAAID,GAAiBC,EACZ5K,GAAUk8C,EAAOp9C,GAAU,YAAW,YAEtCkB,EAAS,cAGpB,IAAK,IAEH,OAAO2K,EAAgB,SAAWC,EAAW,SAAW,UAE1D,IAAK,KAEH,OAAID,GAAiBC,EACZ5K,GAAUk8C,EAAOp9C,GAAU,SAAW,YAEtCkB,EAAS,WAGpB,IAAK,IAEH,OAAO2K,GAAiBC,EAAW,WAAQ,YAE7C,IAAK,KAEH,OAAID,GAAiBC,EACZ5K,GAAUk8C,EAAOp9C,GAAU,MAAQ,UAEnCkB,EAAS,aAGpB,IAAK,IAEH,OAAO2K,GAAiBC,EAAW,SAAW,WAEhD,IAAK,KAEH,OAAID,GAAiBC,EACZ5K,GAAUk8C,EAAOp9C,GAAU,UAAY,YAEvCkB,EAAS,WAGpB,IAAK,IAEH,OAAO2K,GAAiBC,EAAW,MAAQ,QAE7C,IAAK,KAEH,OAAID,GAAiBC,EACZ5K,GAAUk8C,EAAOp9C,GAAU,OAAS,SAEpCkB,EAAS,SAMfuyC,EAAOl4B,aAAa,KAAM,CACjChK,OAAQA,EACRD,YAAaA,EACbkF,SAAU,gEAAsD1pB,MAAM,KACtEypB,cAAe,4BAAuBzpB,MAAM,KAC5CwpB,YAAa,4BAAuBxpB,MAAM,KAC1C+c,eAAgB,CACdI,GAAI,OACJD,IAAK,UACLE,EAAG,aACHC,GAAI,eACJC,IAAK,oBACLC,KAAM,0BAERpC,SAAU,CACRN,QAAS,cACTC,QAAS,gBACTC,SAAU,WACR,OAAQnqB,KAAK05B,OACX,KAAK,EACH,MAAO,uBAET,KAAK,EACL,KAAK,EACH,MAAO,kBAET,KAAK,EACH,MAAO,kBAET,KAAK,EACH,MAAO,yBAET,KAAK,EACH,MAAO,kBAET,KAAK,EACH,MAAO,oBAGbtP,QAAS,oBACTC,SAAU,WACR,OAAQrqB,KAAK05B,OACX,KAAK,EACH,MAAO,+BAET,KAAK,EACL,KAAK,EACH,MAAO,0BAET,KAAK,EACH,MAAO,0BAET,KAAK,EACL,KAAK,EACH,MAAO,0BAET,KAAK,EACH,MAAO,4BAGbpP,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,QACRC,KAAM,UACNzvB,EAAG8hE,EACHpyC,GAAIoyC,EACJzjE,EAAGyjE,EACHnyC,GAAImyC,EACJlyC,EAAGkyC,EACHjyC,GAAIiyC,EACJvjE,EAAGujE,EACHhyC,GAAIgyC,EACJ7xC,EAAG6xC,EACH5xC,GAAI4xC,EACJ3xC,EAAG2xC,EACH1xC,GAAI0xC,GAEN/iC,uBAAwB,YACxBlR,QAAS,MACT4L,KAAM,CACJL,IAAK,EAELC,IAAK,KA7KuFwgB,CAAQ,EAAQ,K,iBCAzG,SAAUqe,GACjB,aAEA,SAASiK,EAAoB19C,EAAQ6L,EAAe9wB,EAAK+wB,GACvD,IAAI5K,EAASlB,EAAS,IAEtB,OAAQjlB,GACN,IAAK,IACH,OAAO8wB,GAAiBC,EAAW,eAAiB,kBAEtD,IAAK,KAWH,OATE5K,GADa,IAAXlB,EACQ6L,EAAgB,UAAY,UAClB,IAAX7L,EACC6L,GAAiBC,EAAW,UAAY,WACzC9L,EAAS,EACR6L,GAAiBC,EAAW,UAAY,WAExC,SAKd,IAAK,IACH,OAAOD,EAAgB,aAAe,aAExC,IAAK,KAWH,OATE3K,GADa,IAAXlB,EACQ6L,EAAgB,SAAW,SACjB,IAAX7L,EACC6L,GAAiBC,EAAW,SAAW,WACxC9L,EAAS,EACR6L,GAAiBC,EAAW,SAAW,WAEvCD,GAAiBC,EAAW,QAAU,WAKpD,IAAK,IACH,OAAOD,EAAgB,UAAY,UAErC,IAAK,KAWH,OATE3K,GADa,IAAXlB,EACQ6L,EAAgB,MAAQ,MACd,IAAX7L,EACC6L,GAAiBC,EAAW,MAAQ,QACrC9L,EAAS,EACR6L,GAAiBC,EAAW,MAAQ,QAEpCD,GAAiBC,EAAW,KAAO,QAKjD,IAAK,IACH,OAAOD,GAAiBC,EAAW,SAAW,YAEhD,IAAK,KASH,OAPE5K,GADa,IAAXlB,EACQ6L,GAAiBC,EAAW,MAAQ,OAC1B,IAAX9L,EACC6L,GAAiBC,EAAW,MAAQ,UAEpCD,GAAiBC,EAAW,MAAQ,QAKlD,IAAK,IACH,OAAOD,GAAiBC,EAAW,WAAa,eAElD,IAAK,KAWH,OATE5K,GADa,IAAXlB,EACQ6L,GAAiBC,EAAW,QAAU,UAC5B,IAAX9L,EACC6L,GAAiBC,EAAW,SAAW,WACxC9L,EAAS,EACR6L,GAAiBC,EAAW,SAAW,SAEvCD,GAAiBC,EAAW,UAAY,SAKtD,IAAK,IACH,OAAOD,GAAiBC,EAAW,WAAa,aAElD,IAAK,KAWH,OATE5K,GADa,IAAXlB,EACQ6L,GAAiBC,EAAW,OAAS,QAC3B,IAAX9L,EACC6L,GAAiBC,EAAW,OAAS,SACtC9L,EAAS,EACR6L,GAAiBC,EAAW,OAAS,OAErCD,GAAiBC,EAAW,MAAQ,QAO7C2nC,EAAOl4B,aAAa,KAAM,CACjChK,OAAQ,wFAAwFzkB,MAAM,KACtGwkB,YAAa,8DAA8DxkB,MAAM,KACjF6wD,kBAAkB,EAClBnnC,SAAU,2DAAsD1pB,MAAM,KACtEypB,cAAe,0CAAqCzpB,MAAM,KAC1DwpB,YAAa,4BAAuBxpB,MAAM,KAC1C8wD,oBAAoB,EACpB/zC,eAAgB,CACdI,GAAI,OACJD,IAAK,UACLE,EAAG,eACHC,GAAI,eACJC,IAAK,oBACLC,KAAM,2BAERpC,SAAU,CACRN,QAAS,gBACTC,QAAS,gBACTC,SAAU,WACR,OAAQnqB,KAAK05B,OACX,KAAK,EACH,MAAO,wBAET,KAAK,EACH,MAAO,sBAET,KAAK,EACH,MAAO,uBAET,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACH,MAAO,qBAGbtP,QAAS,sBACTC,SAAU,WACR,OAAQrqB,KAAK05B,OACX,KAAK,EACH,MAAO,oCAET,KAAK,EACH,MAAO,kCAET,KAAK,EACH,MAAO,mCAET,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACH,MAAO,iCAGbpP,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,cACRC,KAAM,UACNzvB,EAAGmiE,EACHzyC,GAAIyyC,EACJ9jE,EAAG8jE,EACHxyC,GAAIwyC,EACJvyC,EAAGuyC,EACHtyC,GAAIsyC,EACJ5jE,EAAG4jE,EACHryC,GAAIqyC,EACJlyC,EAAGkyC,EACHjyC,GAAIiyC,EACJhyC,EAAGgyC,EACH/xC,GAAI+xC,GAENpjC,uBAAwB,YACxBlR,QAAS,MACT4L,KAAM,CACJL,IAAK,EAELC,IAAK,KAvLuFwgB,CAAQ,EAAQ,K,iBCGzG,SAAUqe,GACjB,aAESA,EAAOl4B,aAAa,KAAM,CACjChK,OAAQ,mFAAgFzkB,MAAM,KAC9FwkB,YAAa,qDAAkDxkB,MAAM,KACrE0pB,SAAU,8EAA4D1pB,MAAM,KAC5EypB,cAAe,oCAA8BzpB,MAAM,KACnDwpB,YAAa,sBAAmBxpB,MAAM,KACtC8wD,oBAAoB,EACpBrjC,cAAe,QACfZ,KAAM,SAAUt2B,GACd,MAA2B,MAApBA,EAAMZ,OAAO,IAEtBwhB,SAAU,SAAUgV,EAAOG,EAASe,GAClC,OAAOlB,EAAQ,GAAK,KAAO,MAE7BpP,eAAgB,CACdI,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAERpC,SAAU,CACRN,QAAS,iBACTC,QAAS,sBACTC,SAAU,kBACVC,QAAS,iBACTC,SAAU,2BACVC,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,WACRC,KAAM,mBACNzvB,EAAG,eACH0vB,GAAI,aACJrxB,EAAG,mBACHsxB,GAAI,YACJC,EAAG,gBACHC,GAAI,YACJtxB,EAAG,iBACHuxB,GAAI,aACJG,EAAG,cACHC,GAAI,UACJC,EAAG,aACHC,GAAI,WAEN2O,uBAAwB,YACxBlR,QAAS,MACT4L,KAAM,CACJL,IAAK,EAELC,IAAK,KAvDuFwgB,CAAQ,EAAQ,K,iBCAzG,SAAUqe,GACjB,aAEA,IAAImtB,EAAa,CACfC,MAAO,CAEL51D,GAAI,CAAC,UAAW,UAAW,WAC3BrxB,EAAG,CAAC,cAAe,iBACnBsxB,GAAI,CAAC,QAAS,SAAU,UACxBC,EAAG,CAAC,YAAa,eACjBC,GAAI,CAAC,MAAO,OAAQ,QACpBtxB,EAAG,CAAC,YAAa,eACjBuxB,GAAI,CAAC,MAAO,OAAQ,QACpBG,EAAG,CAAC,cAAe,iBACnBC,GAAI,CAAC,QAAS,SAAU,UACxBC,EAAG,CAAC,eAAgB,gBACpBC,GAAI,CAAC,SAAU,SAAU,WAE3Bm1D,uBAAwB,SAAU9gE,EAAQ+gE,GACxC,OAAI/gE,EAAS,IAAM,GAAKA,EAAS,IAAM,IAAMA,EAAS,IAAM,IAAMA,EAAS,KAAO,IACzEA,EAAS,KAAO,EAAI+gE,EAAQ,GAAKA,EAAQ,GAG3CA,EAAQ,IAEjB1jB,UAAW,SAAUr9C,EAAQ6L,EAAe9wB,EAAK+wB,GAC/C,IACI6yD,EADAoC,EAAUH,EAAWC,MAAM9lF,GAG/B,OAAmB,IAAfA,EAAIwB,OAEM,MAARxB,GAAe8wB,EAAsB,eAClCC,GAAYD,EAAgBk1D,EAAQ,GAAKA,EAAQ,IAG1DpC,EAAOiC,EAAWE,uBAAuB9gE,EAAQ+gE,GAErC,OAARhmF,GAAgB8wB,GAA0B,WAAT8yD,EAC5B3+D,EAAS,UAGXA,EAAS,IAAM2+D,KAGjBlrB,EAAOl4B,aAAa,KAAM,CACjChK,OAAQ,mFAAmFzkB,MAAM,KACjGwkB,YAAa,2DAA2DxkB,MAAM,KAC9E6wD,kBAAkB,EAClBnnC,SAAU,6DAAwD1pB,MAAM,KACxEypB,cAAe,0CAAqCzpB,MAAM,KAC1DwpB,YAAa,4BAAuBxpB,MAAM,KAC1C8wD,oBAAoB,EACpB/zC,eAAgB,CACdI,GAAI,OACJD,IAAK,UACLE,EAAG,cACHC,GAAI,gBACJC,IAAK,qBACLC,KAAM,4BAERpC,SAAU,CACRN,QAAS,eACTC,QAAS,eACTC,SAAU,WACR,OAAQnqB,KAAK05B,OACX,KAAK,EACH,MAAO,uBAET,KAAK,EACH,MAAO,qBAET,KAAK,EACH,MAAO,sBAET,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACH,MAAO,oBAGbtP,QAAS,mBACTC,SAAU,WAER,MADmB,CAAC,iCAA6B,qCAAiC,iCAA6B,+BAA2B,wCAA+B,gCAA4B,iCACjLrqB,KAAK05B,QAE3BpP,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,QACRC,KAAM,SACNzvB,EAAG,mBACH0vB,GAAI21D,EAAWvjB,UACfzjE,EAAGgnF,EAAWvjB,UACdnyC,GAAI01D,EAAWvjB,UACflyC,EAAGy1D,EAAWvjB,UACdjyC,GAAIw1D,EAAWvjB,UACfvjE,EAAG8mF,EAAWvjB,UACdhyC,GAAIu1D,EAAWvjB,UACf7xC,EAAGo1D,EAAWvjB,UACd5xC,GAAIm1D,EAAWvjB,UACf3xC,EAAGk1D,EAAWvjB,UACd1xC,GAAIi1D,EAAWvjB,WAEjB/iC,uBAAwB,YACxBlR,QAAS,MACT4L,KAAM,CACJL,IAAK,EAELC,IAAK,KA9GuFwgB,CAAQ,EAAQ,K,iBCCzG,SAAUqe,GACjB,aAEA,IAAImtB,EAAa,CACfC,MAAO,CAEL51D,GAAI,CAAC,6CAAW,6CAAW,8CAC3BrxB,EAAG,CAAC,gEAAe,6EACnBsxB,GAAI,CAAC,iCAAS,uCAAU,wCACxBC,EAAG,CAAC,oDAAa,iEACjBC,GAAI,CAAC,qBAAO,2BAAQ,4BACpBtxB,EAAG,CAAC,oDAAa,iEACjBuxB,GAAI,CAAC,qBAAO,2BAAQ,4BACpBG,EAAG,CAAC,gEAAe,6EACnBC,GAAI,CAAC,iCAAS,uCAAU,wCACxBC,EAAG,CAAC,sEAAgB,uEACpBC,GAAI,CAAC,uCAAU,uCAAU,yCAE3Bm1D,uBAAwB,SAAU9gE,EAAQ+gE,GACxC,OAAI/gE,EAAS,IAAM,GAAKA,EAAS,IAAM,IAAMA,EAAS,IAAM,IAAMA,EAAS,KAAO,IACzEA,EAAS,KAAO,EAAI+gE,EAAQ,GAAKA,EAAQ,GAG3CA,EAAQ,IAEjB1jB,UAAW,SAAUr9C,EAAQ6L,EAAe9wB,EAAK+wB,GAC/C,IACI6yD,EADAoC,EAAUH,EAAWC,MAAM9lF,GAG/B,OAAmB,IAAfA,EAAIwB,OAEM,MAARxB,GAAe8wB,EAAsB,sEAClCC,GAAYD,EAAgBk1D,EAAQ,GAAKA,EAAQ,IAG1DpC,EAAOiC,EAAWE,uBAAuB9gE,EAAQ+gE,GAErC,OAARhmF,GAAgB8wB,GAA0B,yCAAT8yD,EAC5B3+D,EAAS,wCAGXA,EAAS,IAAM2+D,KAGblrB,EAAOl4B,aAAa,UAAW,CAC1ChK,OAAQ,4aAAmFzkB,MAAM,KACjGwkB,YAAa,+OAA2DxkB,MAAM,KAC9E6wD,kBAAkB,EAClBnnC,SAAU,uRAAsD1pB,MAAM,KACtEypB,cAAe,8IAAqCzpB,MAAM,KAC1DwpB,YAAa,6FAAuBxpB,MAAM,KAC1C8wD,oBAAoB,EACpB/zC,eAAgB,CACdI,GAAI,OACJD,IAAK,UACLE,EAAG,cACHC,GAAI,gBACJC,IAAK,qBACLC,KAAM,4BAERpC,SAAU,CACRN,QAAS,6CACTC,QAAS,6CACTC,SAAU,WACR,OAAQnqB,KAAK05B,OACX,KAAK,EACH,MAAO,8DAET,KAAK,EACH,MAAO,wDAET,KAAK,EACH,MAAO,8DAET,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACH,MAAO,8BAGbtP,QAAS,uCACTC,SAAU,WAER,MADmB,CAAC,4FAA4B,oHAAgC,kGAA6B,sFAA2B,8GAA+B,4FAA4B,6FAC/KrqB,KAAK05B,QAE3BpP,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,kBACRC,KAAM,wBACNzvB,EAAG,8FACH0vB,GAAI21D,EAAWvjB,UACfzjE,EAAGgnF,EAAWvjB,UACdnyC,GAAI01D,EAAWvjB,UACflyC,EAAGy1D,EAAWvjB,UACdjyC,GAAIw1D,EAAWvjB,UACfvjE,EAAG8mF,EAAWvjB,UACdhyC,GAAIu1D,EAAWvjB,UACf7xC,EAAGo1D,EAAWvjB,UACd5xC,GAAIm1D,EAAWvjB,UACf3xC,EAAGk1D,EAAWvjB,UACd1xC,GAAIi1D,EAAWvjB,WAEjB/iC,uBAAwB,YACxBlR,QAAS,MACT4L,KAAM,CACJL,IAAK,EAELC,IAAK,KA9GuFwgB,CAAQ,EAAQ,K,iBCAzG,SAAUqe,GACjB,aAESA,EAAOl4B,aAAa,KAAM,CACjChK,OAAQ,mHAAmHzkB,MAAM,KACjIwkB,YAAa,kDAAkDxkB,MAAM,KACrE0pB,SAAU,sEAAsE1pB,MAAM,KACtFypB,cAAe,8BAA8BzpB,MAAM,KACnDwpB,YAAa,uBAAuBxpB,MAAM,KAC1C8wD,oBAAoB,EACpB/zC,eAAgB,CACdI,GAAI,SACJD,IAAK,YACLE,EAAG,aACHC,GAAI,cACJC,IAAK,qBACLC,KAAM,4BAERpC,SAAU,CACRN,QAAS,mBACTC,QAAS,kBACTC,SAAU,gBACVC,QAAS,iBACTC,SAAU,8BACVC,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,SACRC,KAAM,iBACNzvB,EAAG,qBACH0vB,GAAI,cACJrxB,EAAG,SACHsxB,GAAI,aACJC,EAAG,SACHC,GAAI,aACJtxB,EAAG,UACHuxB,GAAI,cACJG,EAAG,UACHC,GAAI,cACJC,EAAG,UACHC,GAAI,eAEN4O,cAAe,mCACftW,SAAU,SAAUgV,EAAOG,EAASe,GAClC,OAAIlB,EAAQ,GACH,UACEA,EAAQ,GACV,QACEA,EAAQ,GACV,aAEA,WAGXkI,aAAc,SAAUF,EAAMhd,GAK5B,OAJa,KAATgd,IACFA,EAAO,GAGQ,YAAbhd,EACKgd,EACe,UAAbhd,EACFgd,GAAQ,GAAKA,EAAOA,EAAO,GACZ,eAAbhd,GAA0C,YAAbA,EACzB,IAATgd,EACK,EAGFA,EAAO,QALT,GAQT3G,uBAAwB,UACxBlR,QAAS,KACT4L,KAAM,CACJL,IAAK,EAELC,IAAK,KA7EuFwgB,CAAQ,EAAQ,K,iBCCzG,SAAUqe,GACjB,aAESA,EAAOl4B,aAAa,KAAM,CACjChK,OAAQ,wFAAwFzkB,MAAM,KACtGwkB,YAAa,kDAAkDxkB,MAAM,KACrE0pB,SAAU,6DAAoD1pB,MAAM,KACpEypB,cAAe,uCAA8BzpB,MAAM,KACnDwpB,YAAa,gCAAuBxpB,MAAM,KAC1C+c,eAAgB,CACdI,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,0BACLC,KAAM,+BACNo1D,IAAK,mBACLC,KAAM,wBAERz3D,SAAU,CACRN,QAAS,YACTC,QAAS,eACTE,QAAS,eACTD,SAAU,kBACVE,SAAU,iBACVC,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,QACRC,KAAM,kBACNzvB,EAAG,oBACH0vB,GAAI,cACJrxB,EAAG,WACHsxB,GAAI,aACJC,EAAG,WACHC,GAAI,YACJtxB,EAAG,SACHuxB,GAAI,WACJG,EAAG,cACHC,GAAI,gBACJC,EAAG,YACHC,GAAI,YAEN2O,uBAAwB,mBACxBlR,QAAS,SAAUpJ,GACjB,IAAI7I,EAAI6I,EAAS,GAEjB,OAAOA,GADgC,OAAvBA,EAAS,IAAM,IAAY,KAAa,IAAN7I,GAAuB,IAANA,EAAP,KAAkC,OAGhG6d,KAAM,CACJL,IAAK,EAELC,IAAK,KArDuFwgB,CAAQ,EAAQ,K,iBCCzG,SAAUqe,GACjB,aAESA,EAAOl4B,aAAa,KAAM,CACjChK,OAAQ,sFAAsFzkB,MAAM,KACpGwkB,YAAa,kDAAkDxkB,MAAM,KACrE0pB,SAAU,8DAA8D1pB,MAAM,KAC9EypB,cAAe,kCAAkCzpB,MAAM,KACvDwpB,YAAa,uBAAuBxpB,MAAM,KAC1C8wD,oBAAoB,EACpB/zC,eAAgB,CACdI,GAAI,UACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAERpC,SAAU,CACRN,QAAS,eACTC,QAAS,iBACTC,SAAU,8BACVC,QAAS,YACTC,SAAU,kCACVC,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,aACRC,KAAM,WACNzvB,EAAG,aACH0vB,GAAI,aACJrxB,EAAG,cACHsxB,GAAI,YACJC,EAAG,aACHC,GAAI,WACJtxB,EAAG,YACHuxB,GAAI,UACJG,EAAG,cACHC,GAAI,WACJC,EAAG,cACHC,GAAI,YAENqJ,KAAM,CACJL,IAAK,EAELC,IAAK,KA9CuFwgB,CAAQ,EAAQ,K,iBCCzG,SAAUqe,GACjB,aAEA,IAAI6qB,EAAY,CACd,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,UAEDC,EAAY,CACd,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,KAEE9qB,EAAOl4B,aAAa,KAAM,CACjChK,OAAQ,sdAA0FzkB,MAAM,KACxGwkB,YAAa,sdAA0FxkB,MAAM,KAC7G0pB,SAAU,ugBAA8F1pB,MAAM,KAC9GypB,cAAe,qQAAmDzpB,MAAM,KACxEwpB,YAAa,uFAAsBxpB,MAAM,KACzC+c,eAAgB,CACdI,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,qBACLC,KAAM,4BAERpC,SAAU,CACRN,QAAS,sCACTC,QAAS,gCACTC,SAAU,WACVC,QAAS,4CACTC,SAAU,2EACVC,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,wBACRC,KAAM,8BACNzvB,EAAG,+FACH0vB,GAAI,4DACJrxB,EAAG,gEACHsxB,GAAI,kEACJC,EAAG,uEACHC,GAAI,uDACJtxB,EAAG,8CACHuxB,GAAI,gDACJG,EAAG,oDACHC,GAAI,sDACJC,EAAG,0DACHC,GAAI,uDAEN2O,uBAAwB,4BACxBlR,QAAS,SAAUpJ,GACjB,OAAOA,EAAS,sBAElBoiB,SAAU,SAAUniB,GAClB,OAAOA,EAAO9d,QAAQ,mEAAiB,SAAUyG,GAC/C,OAAO21E,EAAU31E,OAGrB8hC,WAAY,SAAUzqB,GACpB,OAAOA,EAAO9d,QAAQ,OAAO,SAAUyG,GACrC,OAAO01E,EAAU11E,OAIrB2xB,cAAe,wMACftW,SAAU,SAAUgd,EAAMc,EAAQ5H,GAChC,OAAI8G,EAAO,EACF,kCACEA,EAAO,EACT,kCACEA,EAAO,GACT,4BACEA,EAAO,GACT,8CACEA,EAAO,GACT,8CACEA,EAAO,GACT,4BAEA,mCAGXE,aAAc,SAAUF,EAAMhd,GAK5B,OAJa,KAATgd,IACFA,EAAO,GAGQ,mCAAbhd,EACKgd,EAAO,EAAIA,EAAOA,EAAO,GACV,mCAAbhd,GAAqC,6BAAbA,GAEX,+CAAbA,GACFgd,GAAQ,GAFRA,EAIAA,EAAO,IAGlBjM,KAAM,CACJL,IAAK,EAELC,IAAK,KArHuFwgB,CAAQ,EAAQ,K,iBCCzG,SAAUqe,GACjB,aAESA,EAAOl4B,aAAa,KAAM,CACjChK,OAAQ,0cAAwFzkB,MAAM,KACtGwkB,YAAa,oSAAmExkB,MAAM,KACtF6wD,kBAAkB,EAClBnnC,SAAU,uUAA8D1pB,MAAM,KAC9EypB,cAAe,+JAAkCzpB,MAAM,KACvDwpB,YAAa,iFAAqBxpB,MAAM,KACxC+c,eAAgB,CACdI,GAAI,SACJD,IAAK,YACLE,EAAG,aACHC,GAAI,cACJC,IAAK,sBACLC,KAAM,6BAERpC,SAAU,CACRN,QAAS,gCACTC,QAAS,gCACTC,SAAU,WACVC,QAAS,sCACTC,SAAU,0BACVC,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,kBACRC,KAAM,0CACNzvB,EAAG,kFACH0vB,GAAI,gDACJrxB,EAAG,oDACHsxB,GAAI,sDACJC,EAAG,kCACHC,GAAI,oCACJtxB,EAAG,wCACHuxB,GAAI,0CACJG,EAAG,kCACHC,GAAI,oCACJC,EAAG,gEACHC,GAAI,mEAEN2O,uBAAwB,gBACxBlR,QAAS,WACTmR,cAAe,wKACf4G,aAAc,SAAUF,EAAMhd,GAK5B,OAJa,KAATgd,IACFA,EAAO,GAGQ,yCAAbhd,EACKgd,EAAO,EAAIA,EAAOA,EAAO,GACV,6BAAbhd,EACFgd,EACe,2DAAbhd,EACFgd,GAAQ,GAAKA,EAAOA,EAAO,GACZ,qDAAbhd,EACFgd,EAAO,QADT,GAIThd,SAAU,SAAUgd,EAAMc,EAAQ5H,GAChC,OAAI8G,EAAO,EACF,uCACEA,EAAO,GACT,2BACEA,EAAO,GACT,yDACEA,EAAO,GACT,mDAEA,wCAGXjM,KAAM,CACJL,IAAK,EAELC,IAAK,KA7EuFwgB,CAAQ,EAAQ,K,iBCGzG,SAAUqe,GACjB,aAEUA,EAAOl4B,aAAa,MAAO,CACnChK,OAAQ,6FAA0FzkB,MAAM,KACxGwkB,YAAa,kDAAkDxkB,MAAM,KACrE0pB,SAAU,kDAAkD1pB,MAAM,KAClEypB,cAAe,iCAAiCzpB,MAAM,KACtDwpB,YAAa,yBAAyBxpB,MAAM,KAC5C+c,eAAgB,CACdI,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAERpC,SAAU,CACRN,QAAS,gBACTC,QAAS,gBACTC,SAAU,gBACVC,QAAS,oBACTC,SAAU,+BACVC,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,SACRC,KAAM,WACNzvB,EAAG,gBACH0vB,GAAI,aACJrxB,EAAG,aACHsxB,GAAI,YACJC,EAAG,WACHC,GAAI,UACJtxB,EAAG,YACHuxB,GAAI,WACJG,EAAG,YACHC,GAAI,WACJC,EAAG,YACHC,GAAI,YAEN2O,uBAAwB,uBACxBlR,QAAS,SAAUpJ,GACjB,IAAI7I,EAAI6I,EAAS,GAEjB,OAAOA,GADgC,OAAvBA,EAAS,IAAM,IAAY,KAAa,IAAN7I,EAAU,KAAa,IAANA,EAAU,KAAa,IAANA,EAAU,KAAO,OAGvG6d,KAAM,CACJL,IAAK,EAELC,IAAK,KAnDuFwgB,CAAQ,EAAQ,K,iBCDzG,SAAUqe,GACjB,aAEA,IAAIgL,EAAW,CACb,EAAG,gBACH,EAAG,gBACH,EAAG,gBACH,EAAG,gBACH,EAAG,gBACH,EAAG,gBACH,EAAG,gBACH,EAAG,gBACH,EAAG,gBACH,EAAG,gBACH,GAAI,gBACJ,GAAI,gBACJ,GAAI,gBACJ,GAAI,gBACJ,GAAI,gBACJ,GAAI,gBACJ,GAAI,gBACJ,GAAI,gBACJ,GAAI,gBACJ,GAAI,gBACJ,GAAI,gBACJ,IAAK,iBAEEhL,EAAOl4B,aAAa,KAAM,CACjChK,OAAQ,CACNzO,OAAQ,wbAAqFhW,MAAM,KACnGqwD,WAAY,gXAAyErwD,MAAM,MAE7FwkB,YAAa,sOAAkDxkB,MAAM,KACrE0pB,SAAU,ySAAyD1pB,MAAM,KACzEypB,cAAe,uIAA8BzpB,MAAM,KACnDwpB,YAAa,6FAAuBxpB,MAAM,KAC1C+c,eAAgB,CACdI,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAERpC,SAAU,CACRN,QAAS,qEACTC,QAAS,qEACTE,QAAS,qEACTD,SAAU,uHACVE,SAAU,mIACVC,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,oCACRC,KAAM,wBACNzvB,EAAG,sEACH3B,EAAG,oDACHsxB,GAAI,0CACJC,EAAG,wCACHC,GAAI,8BACJtxB,EAAG,kCACHuxB,GAAI,wBACJG,EAAG,kCACHC,GAAI,wBACJC,EAAG,kCACHC,GAAI,yBAEN4O,cAAe,gGACf4G,aAAc,SAAUF,EAAMhd,GAK5B,OAJa,KAATgd,IACFA,EAAO,GAGQ,uBAAbhd,EACKgd,EAAO,EAAIA,EAAOA,EAAO,GACV,6BAAbhd,EACFgd,EACe,uBAAbhd,EACFgd,GAAQ,GAAKA,EAAOA,EAAO,GACZ,mCAAbhd,EACFgd,EAAO,QADT,GAIThd,SAAU,SAAUgd,EAAMc,EAAQ5H,GAChC,OAAI8G,EAAO,EACF,qBACEA,EAAO,GACT,2BACEA,EAAO,GACT,qBACEA,EAAO,GACT,iCAEA,sBAGX3G,uBAAwB,sCACxBlR,QAAS,SAAUpJ,GACjB,IAAI/c,EAAI+c,EAAS,GACb7I,EAAI6I,GAAU,IAAM,IAAM,KAC9B,OAAOA,GAAUy+C,EAASz+C,IAAWy+C,EAASx7D,IAAMw7D,EAAStnD,KAE/D6d,KAAM,CACJL,IAAK,EAELC,IAAK,KA1GuFwgB,CAAQ,EAAQ,K,iBCCzG,SAAUqe,GACjB,aAESA,EAAOl4B,aAAa,KAAM,CACjChK,OAAQ,khBAAoGzkB,MAAM,KAClHwkB,YAAa,wMAAiExkB,MAAM,KACpF6wD,kBAAkB,EAClBnnC,SAAU,yPAAiD1pB,MAAM,KACjEypB,cAAe,uOAA8CzpB,MAAM,KAEnEwpB,YAAa,sEAAyBxpB,MAAM,KAC5C8wD,oBAAoB,EACpB/zC,eAAgB,CACdI,GAAI,OACJD,IAAK,UACLE,EAAG,aACHC,GAAI,cACJC,IAAK,4CACLC,KAAM,sFAERkQ,cAAe,4HACfZ,KAAM,SAAUt2B,GACd,MAAiB,iEAAVA,GAET4gB,SAAU,SAAUgd,EAAMc,EAAQ5H,GAChC,OAAI8G,EAAO,GACF,+DAEA,gEAGXhZ,SAAU,CACRN,QAAS,qEACTC,QAAS,iFACTC,SAAU,6DACVC,QAAS,mGACTC,SAAU,mGACVC,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,wBACRC,KAAM,+CACNzvB,EAAG,2EACH0vB,GAAI,0CACJrxB,EAAG,6BACHsxB,GAAI,8BACJC,EAAG,+CACHC,GAAI,gDACJtxB,EAAG,uBACHuxB,GAAI,wBACJC,EAAG,+CACHC,GAAI,gDACJC,EAAG,mCACHC,GAAI,oCACJC,EAAG,iBACHC,GAAI,qBAxDwFypB,CAAQ,EAAQ,K,iBCCzG,SAAUqe,GACjB,aAEA,IAAIgL,EAAW,CACb,EAAG,QACH,EAAG,QACH,EAAG,QACH,GAAI,QACJ,GAAI,QACJ,EAAG,OACH,EAAG,OACH,GAAI,OACJ,GAAI,OACJ,EAAG,WACH,EAAG,WACH,IAAK,WACL,EAAG,OACH,EAAG,QACH,GAAI,QACJ,GAAI,QACJ,GAAI,QACJ,GAAI,SAEGhL,EAAOl4B,aAAa,KAAM,CACjChK,OAAQ,oGAA+EzkB,MAAM,KAC7FwkB,YAAa,iEAAkDxkB,MAAM,KACrE0pB,SAAU,4FAAwD1pB,MAAM,KACxEypB,cAAe,mDAA8BzpB,MAAM,KACnDwpB,YAAa,4CAAuBxpB,MAAM,KAC1C+c,eAAgB,CACdI,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAERpC,SAAU,CACRN,QAAS,sBACTC,QAAS,mBACTC,SAAU,2BACVC,QAAS,kBACTC,SAAU,6BACVC,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,cACRC,KAAM,gBACNzvB,EAAG,uBACH3B,EAAG,YACHsxB,GAAI,WACJC,EAAG,YACHC,GAAI,WACJtxB,EAAG,aACHuxB,GAAI,YACJG,EAAG,YACHC,GAAI,WACJC,EAAG,aACHC,GAAI,aAENvC,QAAS,SAAUpJ,EAAQynB,GACzB,OAAQA,GACN,IAAK,IACL,IAAK,IACL,IAAK,KACL,IAAK,KACH,OAAOznB,EAET,QACE,GAAe,IAAXA,EAEF,OAAOA,EAAS,QAGlB,IAAI/c,EAAI+c,EAAS,GACb7I,EAAI6I,EAAS,IAAM/c,EACnBpJ,EAAImmB,GAAU,IAAM,IAAM,KAC9B,OAAOA,GAAUy+C,EAASx7D,IAAMw7D,EAAStnD,IAAMsnD,EAAS5kE,MAG9Dm7B,KAAM,CACJL,IAAK,EAELC,IAAK,KApFuFwgB,CAAQ,EAAQ,K,iBCCzG,SAAUqe,GACjB,aAEWA,EAAOl4B,aAAa,QAAS,CACtChK,OAAQ,0FAA0FzkB,MAAM,KACxGwkB,YAAa,kDAAkDxkB,MAAM,KACrE0pB,SAAU,yDAAyD1pB,MAAM,KACzEypB,cAAe,8BAA8BzpB,MAAM,KACnDwpB,YAAa,wBAAwBxpB,MAAM,KAC3C+c,eAAgB,CACdI,GAAI,QACJD,IAAK,WACLE,EAAG,YACHC,GAAI,eACJC,IAAK,qBACLC,KAAM,6BAERpC,SAAU,CACRN,QAAS,oBACTC,QAAS,gBACTC,SAAU,0BACVC,QAAS,eACTC,SAAU,4BACVC,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,gBACRC,KAAM,mBACNzvB,EAAG,gBACH0vB,GAAI,aACJrxB,EAAG,eACHsxB,GAAI,YACJC,EAAG,aACHC,GAAI,UACJtxB,EAAG,aACHuxB,GAAI,UACJG,EAAG,cACHC,GAAI,WACJC,EAAG,aACHC,GAAI,WAEN2O,uBAAwB,UACxBlR,QAAS,SAAUpJ,GACjB,OAAOA,GAETgV,KAAM,CACJL,IAAK,EAELC,IAAK,KAjDuFwgB,CAAQ,EAAQ,K,iBCCzG,SAAUqe,GACjB,aAEA,IAAIwtB,EAAe,2DAAiDn0E,MAAM,KAE1E,SAASo0E,EAAgB94D,GACvB,IAAIugB,EAAOvgB,EAEX,OADAugB,GAAkC,IAA3BvgB,EAAOqI,QAAQ,OAAgBkY,EAAK9rC,MAAM,GAAI,GAAK,OAAmC,IAA3BurB,EAAOqI,QAAQ,OAAgBkY,EAAK9rC,MAAM,GAAI,GAAK,OAAmC,IAA3BurB,EAAOqI,QAAQ,OAAgBkY,EAAK9rC,MAAM,GAAI,GAAK,MAAQ8rC,EAAO,OAIjM,SAASw4C,EAAc/4D,GACrB,IAAIugB,EAAOvgB,EAEX,OADAugB,GAAkC,IAA3BvgB,EAAOqI,QAAQ,OAAgBkY,EAAK9rC,MAAM,GAAI,GAAK,YAAmC,IAA3BurB,EAAOqI,QAAQ,OAAgBkY,EAAK9rC,MAAM,GAAI,GAAK,OAAmC,IAA3BurB,EAAOqI,QAAQ,OAAgBkY,EAAK9rC,MAAM,GAAI,GAAK,MAAQ8rC,EAAO,OAIjM,SAAS00B,EAAUr9C,EAAQ6L,EAAe5L,EAAQ6L,GAChD,IAAIs1D,EAAaC,EAAarhE,GAE9B,OAAQC,GACN,IAAK,KACH,OAAOmhE,EAAa,OAEtB,IAAK,KACH,OAAOA,EAAa,OAEtB,IAAK,KACH,OAAOA,EAAa,OAEtB,IAAK,KACH,OAAOA,EAAa,OAEtB,IAAK,KACH,OAAOA,EAAa,OAEtB,IAAK,KACH,OAAOA,EAAa,QAI1B,SAASC,EAAarhE,GACpB,IAAIshE,EAAUj1E,KAAKkhB,MAAMvN,EAAS,IAAO,KACrCkhC,EAAM70C,KAAKkhB,MAAMvN,EAAS,IAAM,IAChCygC,EAAMzgC,EAAS,GACf2+D,EAAO,GAcX,OAZI2C,EAAU,IACZ3C,GAAQsC,EAAaK,GAAW,SAG9BpgC,EAAM,IACRy9B,IAAkB,KAATA,EAAc,IAAM,IAAMsC,EAAa//B,GAAO,OAGrDT,EAAM,IACRk+B,IAAkB,KAATA,EAAc,IAAM,IAAMsC,EAAaxgC,IAGlC,KAATk+B,EAAc,OAASA,EAGtBlrB,EAAOl4B,aAAa,MAAO,CACnChK,OAAQ,iSAAkMzkB,MAAM,KAChNwkB,YAAa,6JAA0HxkB,MAAM,KAC7I6wD,kBAAkB,EAClBnnC,SAAU,2DAA2D1pB,MAAM,KAC3EypB,cAAe,2DAA2DzpB,MAAM,KAChFwpB,YAAa,2DAA2DxpB,MAAM,KAC9E+c,eAAgB,CACdI,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAERpC,SAAU,CACRN,QAAS,cACTC,QAAS,mBACTC,SAAU,MACVC,QAAS,wBACTC,SAAU,MACVC,SAAU,KAEZ4D,aAAc,CACZb,OAAQm2D,EACRl2D,KAAMm2D,EACN5lF,EAAG,UACH0vB,GAAIoyC,EACJzjE,EAAG,eACHsxB,GAAImyC,EACJlyC,EAAG,eACHC,GAAIiyC,EACJvjE,EAAG,eACHuxB,GAAIgyC,EACJ7xC,EAAG,eACHC,GAAI4xC,EACJ3xC,EAAG,eACHC,GAAI0xC,GAEN/iC,uBAAwB,YACxBlR,QAAS,MACT4L,KAAM,CACJL,IAAK,EAELC,IAAK,KA3GuFwgB,CAAQ,EAAQ,K,iBCEzG,SAAUqe,GACjB,aA+DA,SAASiK,EAAoB19C,EAAQ6L,EAAe9wB,EAAK+wB,GACvD,IAAIhJ,EAAS,CACXvnB,EAAG,CAAC,kBAAmB,mBACvB0vB,GAAI,CAACjL,EAAS,WAAiBA,EAAS,YACxCpmB,EAAG,CAAC,aAAW,iBACfsxB,GAAI,CAAClL,EAAS,YAAeA,EAAS,aACtCmL,EAAG,CAAC,aAAW,kBACfC,GAAI,CAACpL,EAAS,YAAeA,EAAS,aACtClmB,EAAG,CAAC,UAAW,eACfuxB,GAAI,CAACrL,EAAS,SAAeA,EAAS,UACtCwL,EAAG,CAAC,SAAU,aACdC,GAAI,CAACzL,EAAS,SAAeA,EAAS,UACtC0L,EAAG,CAAC,QAAS,YACbC,GAAI,CAAC3L,EAAS,OAAaA,EAAS,SAEtC,OAAO8L,GAA4BD,EAAjB/I,EAAO/nB,GAAK,GAAsC+nB,EAAO/nB,GAAK,GA1ExE04D,EAAOl4B,aAAa,MAAO,CACnChK,OAAQ,kGAAsFzkB,MAAM,KACpGwkB,YAAa,qDAAkDxkB,MAAM,KACrE0pB,SAAU,8EAAsD1pB,MAAM,KACtEypB,cAAe,gDAA8BzpB,MAAM,KACnDwpB,YAAa,mCAAuBxpB,MAAM,KAC1C+c,eAAgB,CACdI,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,wBACJC,IAAK,8BACLC,KAAM,0CAERkQ,cAAe,aACfZ,KAAM,SAAUt2B,GACd,MAAO,QAAUA,EAAMV,eAEzBshB,SAAU,SAAUgV,EAAOG,EAASe,GAClC,OAAIlB,EAAQ,GACHkB,EAAU,MAAQ,MAElBA,EAAU,MAAQ,OAG7BlS,SAAU,CACRN,QAAS,iBACTC,QAAS,oBACTC,SAAU,iBACVC,QAAS,kBACTC,SAAU,oCACVC,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,YACRC,KAAM,OACNzvB,EAAGmiE,EACHzyC,GAAIyyC,EACJ9jE,EAAG8jE,EACHxyC,GAAIwyC,EACJvyC,EAAGuyC,EACHtyC,GAAIsyC,EACJ5jE,EAAG4jE,EACHryC,GAAIqyC,EACJlyC,EAAGkyC,EACHjyC,GAAIiyC,EACJhyC,EAAGgyC,EACH/xC,GAAI+xC,GAENpjC,uBAAwB,YACxBlR,QAAS,MACT4L,KAAM,CACJL,IAAK,EAELC,IAAK,KA5DuFwgB,CAAQ,EAAQ,K,iBCAzG,SAAUqe,GACjB,aAEUA,EAAOl4B,aAAa,MAAO,CACnChK,OAAQ,saAAkFzkB,MAAM,KAChGwkB,YAAa,saAAkFxkB,MAAM,KACrG0pB,SAAU,+PAAkD1pB,MAAM,KAClEypB,cAAe,+PAAkDzpB,MAAM,KACvEwpB,YAAa,+PAAkDxpB,MAAM,KACrE+c,eAAgB,CACdI,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAERpC,SAAU,CACRN,QAAS,uCACTC,QAAS,uCACTC,SAAU,mBACVC,QAAS,6CACTC,SAAU,mBACVC,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,wDACRC,KAAM,wBACNzvB,EAAG,2BACH0vB,GAAI,8BACJrxB,EAAG,iCACHsxB,GAAI,oCACJC,EAAG,2BACHC,GAAI,sDACJtxB,EAAG,qBACHuxB,GAAI,+BACJG,EAAG,4BACHC,GAAI,0CACJC,EAAG,iCACHC,GAAI,2CAENqJ,KAAM,CACJL,IAAK,EAELC,IAAK,MA7CuFwgB,CAAQ,EAAQ,K,iBCCzG,SAAUqe,GACjB,aAEcA,EAAOl4B,aAAa,WAAY,CAC5ChK,OAAQ,qIAAwFzkB,MAAM,KACtGwkB,YAAa,qIAAwFxkB,MAAM,KAC3G0pB,SAAU,uDAAkD1pB,MAAM,KAClEypB,cAAe,uDAAkDzpB,MAAM,KACvEwpB,YAAa,uDAAkDxpB,MAAM,KACrE+c,eAAgB,CACdI,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAERpC,SAAU,CACRN,QAAS,eACTC,QAAS,cACTC,SAAU,cACVC,QAAS,gBACTC,SAAU,cACVC,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,iBACRC,KAAM,SACNzvB,EAAG,OACH0vB,GAAI,UACJrxB,EAAG,aACHsxB,GAAI,gBACJC,EAAG,YACHC,GAAI,mBACJtxB,EAAG,MACHuxB,GAAI,WACJG,EAAG,QACHC,GAAI,YACJC,EAAG,QACHC,GAAI,aAENqJ,KAAM,CACJL,IAAK,EAELC,IAAK,MA7CuFwgB,CAAQ,EAAQ,K,iBCCzG,SAAUqe,GACjB,aAEWA,EAAOl4B,aAAa,QAAS,CACtChK,OAAQ,8bAAsFzkB,MAAM,KACpGwkB,YAAa,8bAAsFxkB,MAAM,KACzG0pB,SAAU,ySAAyD1pB,MAAM,KACzEypB,cAAe,6FAAuBzpB,MAAM,KAC5CwpB,YAAa,6FAAuBxpB,MAAM,KAC1C+c,eAAgB,CACdI,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,gGACJC,IAAK,4GACLC,KAAM,wHAERkQ,cAAe,uQACf4G,aAAc,SAAUF,EAAMhd,GAK5B,OAJa,KAATgd,IACFA,EAAO,GAGQ,4DAAbhd,GAA0C,mCAAbA,GAAqC,wEAAbA,EAChDgd,EACe,wEAAbhd,GAA4C,uBAAbA,EACjCgd,EAAO,GAEPA,GAAQ,GAAKA,EAAOA,EAAO,IAGtChd,SAAU,SAAUgd,EAAMc,EAAQ5H,GAChC,IAAIwE,EAAY,IAAPsC,EAAac,EAEtB,OAAIpD,EAAK,IACA,0DACEA,EAAK,IACP,iCACEA,EAAK,KACP,sEACEA,EAAK,KACP,qBACEA,EAAK,KACP,sEAEA,sBAGX1W,SAAU,CACRN,QAAS,qEACTC,QAAS,+DACTC,SAAU,wFACVC,QAAS,kDACTC,SAAU,8FACVC,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,oCACRC,KAAM,oCACNzvB,EAAG,sEACH0vB,GAAI,0CACJrxB,EAAG,oDACHsxB,GAAI,oCACJC,EAAG,oDACHC,GAAI,oCACJtxB,EAAG,wCACHuxB,GAAI,wBACJG,EAAG,wCACHC,GAAI,wBACJC,EAAG,wCACHC,GAAI,yBAEN2O,uBAAwB,yFACxBlR,QAAS,SAAUpJ,EAAQynB,GACzB,OAAQA,GACN,IAAK,IACL,IAAK,IACL,IAAK,MACH,OAAOznB,EAAS,4BAElB,IAAK,IACL,IAAK,IACH,OAAOA,EAAS,kCAElB,QACE,OAAOA,IAGboiB,SAAU,SAAUniB,GAClB,OAAOA,EAAO9d,QAAQ,UAAM,MAE9BuoC,WAAY,SAAUzqB,GACpB,OAAOA,EAAO9d,QAAQ,KAAM,WAE9B6yB,KAAM,CAEJL,IAAK,EAELC,IAAK,KAnGuFwgB,CAAQ,EAAQ,K,iBCEzG,SAAUqe,GACjB,aAEA,SAAS2J,EAAOuhB,EAAM3gC,GACpB,IAAI4gC,EAAQD,EAAK7xE,MAAM,KACvB,OAAOkxC,EAAM,KAAO,GAAKA,EAAM,MAAQ,GAAK4gC,EAAM,GAAK5gC,EAAM,IAAM,GAAKA,EAAM,IAAM,IAAMA,EAAM,IAAM,IAAMA,EAAM,KAAO,IAAM4gC,EAAM,GAAKA,EAAM,GAGlJ,SAASC,EAAuB7+D,EAAQ6L,EAAe9wB,GAUrD,MAAY,MAARA,EACK8wB,EAAgB,6CAAY,6CAClB,MAAR9wB,EACF8wB,EAAgB,uCAAW,uCAE3B7L,EAAS,IAAMo9C,EAdX,CACXnyC,GAAIY,EAAgB,6HAA2B,6HAC/CX,GAAIW,EAAgB,6HAA2B,6HAC/CT,GAAIS,EAAgB,2GAAwB,2GAC5CR,GAAI,uEACJI,GAAI,uHACJE,GAAI,8EAQgC5wB,IAAOilB,GAI/C,SAASuhE,EAAoB3nF,EAAGkpB,GAC9B,IAAI0T,EAAW,CACbgrD,WAAY,+SAA0D10E,MAAM,KAC5E20E,WAAY,+SAA0D30E,MAAM,KAC5E40E,SAAU,2TAA4D50E,MAAM,MAI9E,OAAU,IAANlT,EACK48B,EAAqB,WAAE35B,MAAM,EAAG,GAAGuD,OAAOo2B,EAAqB,WAAE35B,MAAM,EAAG,IAG9EjD,EAKE48B,EADI,yCAAqBx5B,KAAK8lB,GAAU,aAAe,sHAAsC9lB,KAAK8lB,GAAU,WAAa,cACtGlpB,EAAEw9B,OAJnBZ,EAAqB,WAOhC,SAASmrD,EAAqB5gB,GAC5B,OAAO,WACL,OAAOA,EAAM,UAAwB,KAAjBrjE,KAAKu7B,QAAiB,SAAM,IAAM,QAIjDw6B,EAAOl4B,aAAa,KAAM,CACjChK,OAAQ,CACNzO,OAAQ,gdAAyFhW,MAAM,KACvGqwD,WAAY,ggBAAiGrwD,MAAM,MAErHwkB,YAAa,gRAAyDxkB,MAAM,KAC5E0pB,SAAU+qD,EACVhrD,cAAe,6FAAuBzpB,MAAM,KAC5CwpB,YAAa,6FAAuBxpB,MAAM,KAC1C+c,eAAgB,CACdI,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,sBACJC,IAAK,6BACLC,KAAM,oCAERpC,SAAU,CACRN,QAASg6D,EAAqB,sDAC9B/5D,QAAS+5D,EAAqB,0CAC9B75D,QAAS65D,EAAqB,oCAC9B95D,SAAU85D,EAAqB,mBAC/B55D,SAAU,WACR,OAAQrqB,KAAK05B,OACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACH,OAAOuqD,EAAqB,uDAAoBhoF,KAAK+D,MAEvD,KAAK,EACL,KAAK,EACL,KAAK,EACH,OAAOikF,EAAqB,6DAAqBhoF,KAAK+D,QAG5DsqB,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,kBACRC,KAAM,8BACNzvB,EAAG,wFACH0vB,GAAI4zD,EACJjlF,EAAGilF,EACH3zD,GAAI2zD,EACJ1zD,EAAG,uCACHC,GAAIyzD,EACJ/kF,EAAG,2BACHuxB,GAAIwzD,EACJrzD,EAAG,uCACHC,GAAIozD,EACJnzD,EAAG,qBACHC,GAAIkzD,GAGNtkD,cAAe,kHACfZ,KAAM,SAAUt2B,GACd,MAAO,8DAAiBrG,KAAKqG,IAE/B4gB,SAAU,SAAUgd,EAAMc,EAAQ5H,GAChC,OAAI8G,EAAO,EACF,2BACEA,EAAO,GACT,iCACEA,EAAO,GACT,qBAEA,wCAGX3G,uBAAwB,gCACxBlR,QAAS,SAAUpJ,EAAQynB,GACzB,OAAQA,GACN,IAAK,IACL,IAAK,IACL,IAAK,MACL,IAAK,IACL,IAAK,IACH,OAAOznB,EAAS,UAElB,IAAK,IACH,OAAOA,EAAS,gBAElB,QACE,OAAOA,IAGbgV,KAAM,CACJL,IAAK,EAELC,IAAK,KAhJuFwgB,CAAQ,EAAQ,K,iBCCzG,SAAUqe,GACjB,aAEA,IAAIliC,EAAS,CAAC,iCAAS,iCAAS,2BAAQ,iCAAS,qBAAO,qBAAO,uCAAU,2BAAQ,iCAAS,uCAAU,iCAAS,kCACzGoS,EAAO,CAAC,iCAAS,qBAAO,2BAAQ,qBAAO,uCAAU,2BAAQ,4BACpD8vB,EAAOl4B,aAAa,KAAM,CACjChK,OAAQA,EACRD,YAAaC,EACbiF,SAAUmN,EACVpN,cAAeoN,EACfrN,YAAaqN,EACb9Z,eAAgB,CACdI,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,gCAERkQ,cAAe,wCACfZ,KAAM,SAAUt2B,GACd,MAAO,uBAAUA,GAEnB4gB,SAAU,SAAUgd,EAAMc,EAAQ5H,GAChC,OAAI8G,EAAO,GACF,qBAGF,sBAEThZ,SAAU,CACRN,QAAS,6CACTC,QAAS,6CACTC,SAAU,qCACVC,QAAS,kFACTC,SAAU,sEACVC,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,wBACRC,KAAM,wBACNzvB,EAAG,oDACH0vB,GAAI,oCACJrxB,EAAG,wCACHsxB,GAAI,wBACJC,EAAG,oDACHC,GAAI,oCACJtxB,EAAG,kCACHuxB,GAAI,kBACJG,EAAG,wCACHC,GAAI,wBACJC,EAAG,wCACHC,GAAI,yBAENyW,SAAU,SAAUniB,GAClB,OAAOA,EAAO9d,QAAQ,UAAM,MAE9BuoC,WAAY,SAAUzqB,GACpB,OAAOA,EAAO9d,QAAQ,KAAM,WAE9B6yB,KAAM,CACJL,IAAK,EAELC,IAAK,KAhEuFwgB,CAAQ,EAAQ,K,iBCAzG,SAAUqe,GACjB,aAESA,EAAOl4B,aAAa,KAAM,CACjChK,OAAQ,gXAAyEzkB,MAAM,KACvFwkB,YAAa,sOAAkDxkB,MAAM,KACrE0pB,SAAU,6RAAuD1pB,MAAM,KACvEypB,cAAe,uIAA8BzpB,MAAM,KACnDwpB,YAAa,6FAAuBxpB,MAAM,KAC1C+c,eAAgB,CACdI,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAERpC,SAAU,CACRN,QAAS,8EACTC,QAAS,2DACTC,SAAU,6EACVC,QAAS,wEACTC,SAAU,8GACVC,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,6DACRC,KAAM,gFACNzvB,EAAG,uCACH0vB,GAAI,0CACJrxB,EAAG,0DACHsxB,GAAI,0CACJC,EAAG,8CACHC,GAAI,8BACJtxB,EAAG,wCACHuxB,GAAI,wBACJG,EAAG,kCACHC,GAAI,kBACJC,EAAG,wCACHC,GAAI,yBAENqJ,KAAM,CACJL,IAAK,EAELC,IAAK,KA7CuFwgB,CAAQ,EAAQ,K,iBCCzG,SAAUqe,GACjB,aAEaA,EAAOl4B,aAAa,UAAW,CAC1ChK,OAAQ,6EAA6EzkB,MAAM,KAC3FwkB,YAAa,oDAAoDxkB,MAAM,KACvE0pB,SAAU,+DAA+D1pB,MAAM,KAC/EypB,cAAe,kCAAkCzpB,MAAM,KACvDwpB,YAAa,yBAAyBxpB,MAAM,KAC5C+c,eAAgB,CACdI,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAERpC,SAAU,CACRN,QAAS,uBACTC,QAAS,mBACTC,SAAU,2BACVC,QAAS,uBACTC,SAAU,oCACVC,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,kBACRC,KAAM,qBACNzvB,EAAG,SACH0vB,GAAI,YACJrxB,EAAG,aACHsxB,GAAI,YACJC,EAAG,WACHC,GAAI,UACJtxB,EAAG,UACHuxB,GAAI,SACJG,EAAG,SACHC,GAAI,QACJC,EAAG,UACHC,GAAI,UAENqJ,KAAM,CACJL,IAAK,EAELC,IAAK,KA7CuFwgB,CAAQ,EAAQ,K,iBCEzG,SAAUqe,GACjB,aAESA,EAAOl4B,aAAa,KAAM,CACjChK,OAAQ,yIAAqGzkB,MAAM,KACnHwkB,YAAa,sFAAsFxkB,MAAM,KACzG6wD,kBAAkB,EAClBnnC,SAAU,mHAAyD1pB,MAAM,KACzEypB,cAAe,uBAAuBzpB,MAAM,KAC5CwpB,YAAa,uBAAuBxpB,MAAM,KAC1C8wD,oBAAoB,EACpBrjC,cAAe,SACfZ,KAAM,SAAUt2B,GACd,MAAO,QAAQrG,KAAKqG,IAEtB4gB,SAAU,SAAUgV,EAAOG,EAASe,GAClC,OAAIlB,EAAQ,GACHkB,EAAU,KAAO,KAEjBA,EAAU,KAAO,MAG5BtQ,eAAgB,CACdI,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,yBACJC,IAAK,+BACLC,KAAM,qCACN5wB,EAAG,YACH+lF,GAAI,aACJC,IAAK,mBACLC,KAAM,yBAERz3D,SAAU,CACRN,QAAS,yBACTC,QAAS,0BACTC,SAAU,sCACVC,QAAS,yBACTC,SAAU,6CACVC,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,cACRC,KAAM,qBACNzvB,EAAG,iBACH0vB,GAAI,aACJrxB,EAAG,mBACHsxB,GAAI,aACJC,EAAG,oBACHC,GAAI,cACJtxB,EAAG,mBACHuxB,GAAI,aACJC,EAAG,qBACHC,GAAI,eACJC,EAAG,oBACHC,GAAI,cACJC,EAAG,oBACHC,GAAI,eAEN2O,uBAAwB,UACxBlR,QAAS,SAAUpJ,GACjB,OAAOA,GAETgV,KAAM,CACJL,IAAK,EAELC,IAAK,KApEuFwgB,CAAQ,EAAQ,K,iBCAzG,SAAUqe,GACjB,aAEcA,EAAOl4B,aAAa,WAAY,CAC5ChK,OAAQ,sNAA6GzkB,MAAM,KAC3HwkB,YAAa,iHAA8DxkB,MAAM,KACjF6wD,kBAAkB,EAClBnnC,SAAU,0JAAyE1pB,MAAM,KACzFypB,cAAe,mEAAqCzpB,MAAM,KAC1DwpB,YAAa,2CAA4BxpB,MAAM,KAC/C8wD,oBAAoB,EACpB/zC,eAAgB,CACdI,GAAI,QACJC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAERpC,SAAU,CACRN,QAAS,8BACTC,QAAS,kCACTC,SAAU,kBACVC,QAAS,yCACTC,SAAU,6BACVC,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,eACRC,KAAM,gBACNzvB,EAAG,kCACH0vB,GAAI,wBACJrxB,EAAG,4BACHsxB,GAAI,2BACJC,EAAG,wBACHC,GAAI,kBACJtxB,EAAG,kBACHuxB,GAAI,iBACJG,EAAG,qBACHC,GAAI,oBACJC,EAAG,sBACHC,GAAI,sBAEN2O,uBAAwB,uBACxBlR,QAAS,SAAUpJ,GACjB,IAAI7I,EAAI6I,EAAS,GAEjB,OAAOA,GADgC,OAAvBA,EAAS,IAAM,IAAY,KAAa,IAAN7I,EAAU,KAAa,IAANA,EAAU,KAAa,IAANA,EAAU,KAAO,OAGvG6d,KAAM,CACJL,IAAK,EAELC,IAAK,KApDuFwgB,CAAQ,EAAQ,K,iBCCzG,SAAUqe,GACjB,aAESA,EAAOl4B,aAAa,KAAM,CACjChK,OAAQ,gPAA0FzkB,MAAM,KACxGwkB,YAAa,oKAAgExkB,MAAM,KACnF0pB,SAAU,gKAAuD1pB,MAAM,KACvEypB,cAAe,kGAAsCzpB,MAAM,KAC3DwpB,YAAa,8DAA2BxpB,MAAM,KAC9C+c,eAAgB,CACdI,GAAI,SACJD,IAAK,YACLE,EAAG,aACHC,GAAI,cACJC,IAAK,qBACLC,KAAM,4BAERpC,SAAU,CACRN,QAAS,0BACTC,QAAS,yBACTC,SAAU,uDACVC,QAAS,oBACTC,SAAU,2DACVC,SAAU,KAEZ4D,aAAc,CACZb,OAAQ,cACRC,KAAM,qBACNzvB,EAAG,wCACH0vB,GAAI,gBACJrxB,EAAG,6BACHsxB,GAAI,4BACJC,EAAG,mBACHC,GAAI,kBACJtxB,EAAG,0BACHuxB,GAAI,yBACJG,EAAG,gBACHC,GAAI,eACJC,EAAG,sBACHC,GAAI,sBAEN2O,uBAAwB,+BACxBlR,QAAS,yBACT4L,KAAM,CACJL,IAAK,EAELC,IAAK,KA/CuFwgB,CAAQ,EAAQ,K,iBCGzG,SAAUqe,GACjB,aAEWA,EAAOl4B,aAAa,QAAS,CACtChK,OAAQ,0KAAwCzkB,MAAM,KACtDwkB,YAAa,qGAAyCxkB,MAAM,KAC5D0pB,SAAU,uIAA8B1pB,MAAM,KAC9CypB,cAAe,6FAAuBzpB,MAAM,KAC5CwpB,YAAa,mDAAgBxpB,MAAM,KACnC+c,eAAgB,CACdI,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,2BACJC,IAAK,2CACLC,KAAM,+CACN5wB,EAAG,WACH+lF,GAAI,2BACJC,IAAK,iCACLC,KAAM,sCAERnlD,cAAe,gFACf4G,aAAc,SAAUF,EAAMhd,GAK5B,OAJa,KAATgd,IACFA,EAAO,GAGQ,iBAAbhd,GAAkC,iBAAbA,GAAkC,iBAAbA,EACrCgd,EACe,iBAAbhd,GAAkC,iBAAbA,EACvBgd,EAAO,GAGPA,GAAQ,GAAKA,EAAOA,EAAO,IAGtChd,SAAU,SAAUgd,EAAMc,EAAQ5H,GAChC,IAAIwE,EAAY,IAAPsC,EAAac,EAEtB,OAAIpD,EAAK,IACA,eACEA,EAAK,IACP,eACEA,EAAK,KACP,eACEA,EAAK,KACP,eACEA,EAAK,KACP,eAEA,gBAGX1W,SAAU,CACRN,QAAS,mBACTC,QAAS,mBACTC,SAAU,SAAUM,GAClB,OAAIA,EAAI6M,SAAWt3B,KAAKs3B,OACf,gBAEA,iBAGXlN,QAAS,mBACTC,SAAU,SAAUI,GAClB,OAAIzqB,KAAKs3B,SAAW7M,EAAI6M,OACf,gBAEA,iBAGXhN,SAAU,KAEZsS,uBAAwB,gCACxBlR,QAAS,SAAUpJ,EAAQynB,GACzB,OAAQA,GACN,IAAK,IACL,IAAK,IACL,IAAK,MACH,OAAOznB,EAAS,SAElB,IAAK,IACH,OAAOA,EAAS,SAElB,IAAK,IACL,IAAK,IACH,OAAOA,EAAS,SAElB,QACE,OAAOA,IAGb4L,aAAc,CACZb,OAAQ,WACRC,KAAM,WACNzvB,EAAG,eACH0vB,GAAI,YACJrxB,EAAG,iBACHsxB,GAAI,kBACJC,EAAG,iBACHC,GAAI,kBACJtxB,EAAG,WACHuxB,GAAI,YACJC,EAAG,WACHC,GAAI,YACJC,EAAG,iBACHC,GAAI,kBACJC,EAAG,WACHC,GAAI,aAENqJ,KAAM,CAEJL,IAAK,EAELC,IAAK,KAnHuFwgB,CAAQ,EAAQ,K,iBCEzG,SAAUqe,GACjB,aAEWA,EAAOl4B,aAAa,QAAS,CACtChK,OAAQ,0KAAwCzkB,MAAM,KACtDwkB,YAAa,qGAAyCxkB,MAAM,KAC5D0pB,SAAU,uIAA8B1pB,MAAM,KAC9CypB,cAAe,6FAAuBzpB,MAAM,KAC5CwpB,YAAa,mDAAgBxpB,MAAM,KACnC+c,eAAgB,CACdI,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,2BACJC,IAAK,iCACLC,KAAM,qCACN5wB,EAAG,WACH+lF,GAAI,2BACJC,IAAK,iCACLC,KAAM,sCAERnlD,cAAe,gFACf4G,aAAc,SAAUF,EAAMhd,GAK5B,OAJa,KAATgd,IACFA,EAAO,GAGQ,iBAAbhd,GAAkC,iBAAbA,GAAkC,iBAAbA,EACrCgd,EACe,iBAAbhd,EACFgd,GAAQ,GAAKA,EAAOA,EAAO,GACZ,iBAAbhd,GAAkC,iBAAbA,EACvBgd,EAAO,QADT,GAIThd,SAAU,SAAUgd,EAAMc,EAAQ5H,GAChC,IAAIwE,EAAY,IAAPsC,EAAac,EAEtB,OAAIpD,EAAK,IACA,eACEA,EAAK,IACP,eACEA,EAAK,KACP,eACS,OAAPA,EACF,eACEA,EAAK,KACP,eAEA,gBAGX1W,SAAU,CACRN,QAAS,mBACTC,QAAS,mBACTC,SAAU,iBACVC,QAAS,mBACTC,SAAU,iBACVC,SAAU,KAEZsS,uBAAwB,gCACxBlR,QAAS,SAAUpJ,EAAQynB,GACzB,OAAQA,GACN,IAAK,IACL,IAAK,IACL,IAAK,MACH,OAAOznB,EAAS,SAElB,IAAK,IACH,OAAOA,EAAS,SAElB,IAAK,IACL,IAAK,IACH,OAAOA,EAAS,SAElB,QACE,OAAOA,IAGb4L,aAAc,CACZb,OAAQ,WACRC,KAAM,WACNzvB,EAAG,eACH0vB,GAAI,YACJrxB,EAAG,iBACHsxB,GAAI,kBACJC,EAAG,iBACHC,GAAI,kBACJtxB,EAAG,WACHuxB,GAAI,YACJG,EAAG,iBACHC,GAAI,kBACJC,EAAG,WACHC,GAAI,eA9FwFypB,CAAQ,EAAQ,K,iBCAzG,SAAUqe,GACjB,aAEWA,EAAOl4B,aAAa,QAAS,CACtChK,OAAQ,0KAAwCzkB,MAAM,KACtDwkB,YAAa,qGAAyCxkB,MAAM,KAC5D0pB,SAAU,uIAA8B1pB,MAAM,KAC9CypB,cAAe,6FAAuBzpB,MAAM,KAC5CwpB,YAAa,mDAAgBxpB,MAAM,KACnC+c,eAAgB,CACdI,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,2BACJC,IAAK,iCACLC,KAAM,qCACN5wB,EAAG,WACH+lF,GAAI,2BACJC,IAAK,iCACLC,KAAM,sCAERnlD,cAAe,gFACf4G,aAAc,SAAUF,EAAMhd,GAK5B,OAJa,KAATgd,IACFA,EAAO,GAGQ,iBAAbhd,GAAkC,iBAAbA,GAAkC,iBAAbA,EACrCgd,EACe,iBAAbhd,EACFgd,GAAQ,GAAKA,EAAOA,EAAO,GACZ,iBAAbhd,GAAkC,iBAAbA,EACvBgd,EAAO,QADT,GAIThd,SAAU,SAAUgd,EAAMc,EAAQ5H,GAChC,IAAIwE,EAAY,IAAPsC,EAAac,EAEtB,OAAIpD,EAAK,IACA,eACEA,EAAK,IACP,eACEA,EAAK,KACP,eACEA,EAAK,KACP,eACEA,EAAK,KACP,eAEA,gBAGX1W,SAAU,CACRN,QAAS,oBACTC,QAAS,oBACTC,SAAU,kBACVC,QAAS,oBACTC,SAAU,kBACVC,SAAU,KAEZsS,uBAAwB,gCACxBlR,QAAS,SAAUpJ,EAAQynB,GACzB,OAAQA,GACN,IAAK,IACL,IAAK,IACL,IAAK,MACH,OAAOznB,EAAS,SAElB,IAAK,IACH,OAAOA,EAAS,SAElB,IAAK,IACL,IAAK,IACH,OAAOA,EAAS,SAElB,QACE,OAAOA,IAGb4L,aAAc,CACZb,OAAQ,WACRC,KAAM,WACNzvB,EAAG,eACH0vB,GAAI,YACJrxB,EAAG,iBACHsxB,GAAI,kBACJC,EAAG,iBACHC,GAAI,kBACJtxB,EAAG,WACHuxB,GAAI,YACJG,EAAG,iBACHC,GAAI,kBACJC,EAAG,WACHC,GAAI,eA9FwFypB,CAAQ,EAAQ,K,iBCAzG,SAAUqe,GACjB,aAEWA,EAAOl4B,aAAa,QAAS,CACtChK,OAAQ,0KAAwCzkB,MAAM,KACtDwkB,YAAa,qGAAyCxkB,MAAM,KAC5D0pB,SAAU,uIAA8B1pB,MAAM,KAC9CypB,cAAe,6FAAuBzpB,MAAM,KAC5CwpB,YAAa,mDAAgBxpB,MAAM,KACnC+c,eAAgB,CACdI,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,2BACJC,IAAK,iCACLC,KAAM,qCACN5wB,EAAG,WACH+lF,GAAI,2BACJC,IAAK,iCACLC,KAAM,sCAERnlD,cAAe,gFACf4G,aAAc,SAAUF,EAAMhd,GAK5B,OAJa,KAATgd,IACFA,EAAO,GAGQ,iBAAbhd,GAAkC,iBAAbA,GAAkC,iBAAbA,EACrCgd,EACe,iBAAbhd,EACFgd,GAAQ,GAAKA,EAAOA,EAAO,GACZ,iBAAbhd,GAAkC,iBAAbA,EACvBgd,EAAO,QADT,GAIThd,SAAU,SAAUgd,EAAMc,EAAQ5H,GAChC,IAAIwE,EAAY,IAAPsC,EAAac,EAEtB,OAAIpD,EAAK,IACA,eACEA,EAAK,IACP,eACEA,EAAK,KACP,eACEA,EAAK,KACP,eACEA,EAAK,KACP,eAEA,gBAGX1W,SAAU,CACRN,QAAS,oBACTC,QAAS,oBACTC,SAAU,kBACVC,QAAS,oBACTC,SAAU,kBACVC,SAAU,KAEZsS,uBAAwB,gCACxBlR,QAAS,SAAUpJ,EAAQynB,GACzB,OAAQA,GACN,IAAK,IACL,IAAK,IACL,IAAK,MACH,OAAOznB,EAAS,SAElB,IAAK,IACH,OAAOA,EAAS,SAElB,IAAK,IACL,IAAK,IACH,OAAOA,EAAS,SAElB,QACE,OAAOA,IAGb4L,aAAc,CACZb,OAAQ,WACRC,KAAM,WACNzvB,EAAG,eACH0vB,GAAI,YACJrxB,EAAG,iBACHsxB,GAAI,kBACJC,EAAG,iBACHC,GAAI,kBACJtxB,EAAG,WACHuxB,GAAI,YACJG,EAAG,iBACHC,GAAI,kBACJC,EAAG,WACHC,GAAI,eA9FwFypB,CAAQ,EAAQ,K,6BCLlH,IAAIiE,EAAkB37C,MAAQA,KAAK27C,iBAAmB,SAAUloB,GAC9D,OAAOA,GAAOA,EAAIv2B,WAAau2B,EAAM,CACnC,QAAWA,IAIfj3B,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAETnB,EAAQsoF,oBAAsBtoF,EAAQ2yD,0BAA4B3yD,EAAQ2iD,UAAY3iD,EAAQuK,MAAQvK,EAAQuoF,GAAKvoF,EAAQ0pB,OAAS1pB,EAAQ4iD,YAAS,EAErJ,MAAM4lC,EAAiCzoC,EAAgB,EAAQ,MAEzD0oC,EAAkC1oC,EAAgB,EAAQ,MAE1D2oC,EAAkC3oC,EAAgB,EAAQ,MAE1D4oC,EAAsB5oC,EAAgB,EAAQ,MAE9C6oC,EAA+B7oC,EAAgB,EAAQ,MAEvD8oC,EAA6B9oC,EAAgB,EAAQ,MAErD+oC,EAA2B/oC,EAAgB,EAAQ,MAEnDgpC,EAA8BhpC,EAAgB,EAAQ,MAEtDipC,EAAgCjpC,EAAgB,EAAQ,MAExDkpC,EAA4BlpC,EAAgB,EAAQ,MAEpDmpC,EAA2BnpC,EAAgB,EAAQ,MAEnDopC,EAAmB,EAAQ,IAE3BC,EAAuBrpC,EAAgB,EAAQ,MAE/CspC,EAAuBtpC,EAAgB,EAAQ,MAE/CupC,EAAoBvpC,EAAgB,EAAQ,MAE5CwpC,EAA+BxpC,EAAgB,EAAQ,MAEvDwD,EAAW,EAAQ,IAEnBimC,EAA0BzpC,EAAgB,EAAQ,KAElD0pC,EAAyC1pC,EAAgB,EAAQ,MAEjE2pC,EAA+B3pC,EAAgB,EAAQ,MAkB7D,SAAS4S,EAA0BuG,GAAe,GAChD,MAAMzV,EAAS6kC,GAAoB,EAAOpvB,GAM1C,OALAzV,EAAOmP,QAAQ0C,QAAQ,IAAI8zB,EAAqB/jE,SAChDo+B,EAAOmP,QAAQ0C,QAAQ,IAAI+zB,EAAqBhkE,SAChDo+B,EAAOmP,QAAQ0C,QAAQ,IAAIqzB,EAAoBtjE,SAC/Co+B,EAAOmP,QAAQ0C,QAAQ,IAAIi0B,EAA6BlkE,SACxDo+B,EAAOmP,QAAQ0C,QAAQ,IAAIm0B,EAAuCpkE,SAC3Do+B,EAKT,SAAS6kC,EAAoBjzB,GAAa,EAAM6D,GAAe,GAC7D,OAAOiwB,EAAiBt0B,2BAA2B,CACjDjC,QAAS,CAAC,IAAI42B,EAAwBnkE,QAAQ6zC,GAAe,IAAIsvB,EAA+BnjE,QAAW,IAAIojE,EAAgCpjE,QAAW,IAAIqjE,EAAgCrjE,QAAW,IAAIikE,EAAkBjkE,QAAW,IAAIujE,EAA6BvjE,QAAW,IAAIwjE,EAA2BxjE,QAAW,IAAIyjE,EAAyBzjE,QAAQgwC,GAAa,IAAI0zB,EAA4B1jE,QAAQgwC,GAAa,IAAI2zB,EAA8B3jE,QAAQgwC,IACjdxC,SAAU,CAAC,IAAI62B,EAA6BrkE,QAAW,IAAI6jE,EAAyB7jE,QAAW,IAAI4jE,EAA0B5jE,UAC5HgwC,GAhCLr1D,EAAQ4iD,OAAS,IAAIW,EAASD,OAAOqP,GAA0B,IAC/D3yD,EAAQ0pB,OAAS,IAAI65B,EAASD,OAAOglC,GAAoB,GAAM,IAC/DtoF,EAAQuoF,GAAK,IAAIhlC,EAASD,OAAOglC,GAAoB,GAAO,IAM5DtoF,EAAQuK,MAJR,SAAe83C,EAAMmB,EAAKC,GACxB,OAAOzjD,EAAQ4iD,OAAOr4C,MAAM83C,EAAMmB,EAAKC,IASzCzjD,EAAQ2iD,UAJR,SAAmBN,EAAMmB,EAAKC,GAC5B,OAAOzjD,EAAQ4iD,OAAOD,UAAUN,EAAMmB,EAAKC,IAe7CzjD,EAAQ2yD,0BAA4BA,EASpC3yD,EAAQsoF,oBAAsBA,G,6BCtF9B1nF,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAGT,MAAMwoF,EAAmC,EAAQ,GAE3C1wB,EAAU,IAAInjD,OAAO,qJAAwM,KAWnO,MAAM8zE,UAAwBD,EAAiC5tC,uCAC7DI,eACE,OAAO8c,EAGT1c,aAAa7xC,EAAS4E,GACpB,MAAM2yC,EAAa,GAKnB,GAJAA,EAAiB,KAAIxnB,SAASnrB,EAjBR,IAkBtB2yC,EAAkB,MAAIxnB,SAASnrB,EAjBR,IAkBvB2yC,EAAgB,IAAIxnB,SAASnrB,EAjBP,IAmBU,MAA5BA,EAlBkB,GA8BpB,GAXA2yC,EAAiB,KAAIxnB,SAASnrB,EAnBV,IAoBpB2yC,EAAmB,OAAIxnB,SAASnrB,EAnBV,IAqBY,MAA9BA,EApBkB,KAqBpB2yC,EAAmB,OAAIxnB,SAASnrB,EArBZ,KAwBiB,MAAnCA,EAvBuB,KAwBzB2yC,EAAwB,YAAIxnB,SAASnrB,EAxBZ,KA2BS,MAAhCA,EA1BoB,GA2BtB2yC,EAA2B,eAAI,MAC1B,CACL,MAAM4nC,EAAapvD,SAASnrB,EA7BN,IA8BtB,IAAIw6E,EAAe,EAEmB,MAAlCx6E,EA/BoB,KAgCtBw6E,EAAervD,SAASnrB,EAhCF,KAmCxB,IAAI87B,EAAsB,GAAby+C,EAETz+C,EAAS,EACXA,GAAU0+C,EAEV1+C,GAAU0+C,EAGZ7nC,EAA2B,eAAI7W,EAInC,OAAO6W,GAKXjiD,EAAQqlB,QAAUukE,G,6BCnElB,IAAI7pC,EAAkB37C,MAAQA,KAAK27C,iBAAmB,SAAUloB,GAC9D,OAAOA,GAAOA,EAAIv2B,WAAau2B,EAAM,CACnC,QAAWA,IAIfj3B,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAGT,MAAMi/C,EAAUL,EAAgB,EAAQ,IAElC4K,EAAU,EAAQ,GAElBg/B,EAAmC,EAAQ,GAE3CtpC,EAAU,EAAQ,IAElBmY,EAAc,EAAQ,IAE5B,MAAMuxB,UAA2BJ,EAAiC5tC,uCAChEI,aAAazxC,GACX,MAAO,sFAGT6xC,aAAa7xC,EAAS4E,GACpB,MAAM+mD,EAAajW,EAAQ/6B,QAAQ3a,EAAQ43C,SACrC0nC,EAAqB16E,EAAM,GAAGjG,cAC9Bg4C,EAAY32C,EAAQ8oD,0BAE1B,OADAnT,EAAQ+B,iBAAiBf,EAAWgV,GAC7B0zB,EAAmBE,sBAAsB5oC,EAAW2oC,GAG7D,6BAA6B3oC,EAAW2oC,GACtC,OAAQA,GACN,IAAK,SACH3oC,EAAUD,MAAM,OAAQ,GACxBC,EAAUD,MAAM,SAAU,GAC1BC,EAAUD,MAAM,SAAU,GAC1BC,EAAUD,MAAM,WAAYuJ,EAAQtH,SAASwH,IAC7C,MAEF,IAAK,YACHxJ,EAAUD,MAAM,OAAQ,GACxBC,EAAUD,MAAM,SAAU,GAC1BC,EAAUD,MAAM,SAAU,GAC1BC,EAAUD,MAAM,WAAYuJ,EAAQtH,SAASwH,IAC7C,MAEF,IAAK,SACL,IAAK,UACHxJ,EAAUD,MAAM,OAAQ,IACxBC,EAAUD,MAAM,SAAU,GAC1BC,EAAUD,MAAM,SAAU,GAC1BC,EAAUD,MAAM,WAAYuJ,EAAQtH,SAASwH,IAC7C,MAEF,IAAK,aACHxJ,EAAUD,MAAM,OAAQ,IACxBC,EAAUD,MAAM,SAAU,GAC1BC,EAAUD,MAAM,SAAU,GAC1BC,EAAUD,MAAM,WAAYuJ,EAAQtH,SAASyH,IAC7C,MAEF,IAAK,QACHzJ,EAAUD,MAAM,OAAQ,IACxBC,EAAUD,MAAM,SAAU,GAC1BC,EAAUD,MAAM,SAAU,GAC1BC,EAAUD,MAAM,WAAYuJ,EAAQtH,SAASyH,IAC7C,MAEF,IAAK,QACHzJ,EAAUD,MAAM,OAAQ,IACxBC,EAAUD,MAAM,SAAU,GAC1BC,EAAUD,MAAM,SAAU,GAC1BC,EAAUD,MAAM,WAAYuJ,EAAQtH,SAASyH,IAC7C,MAEF,IAAK,cACCzJ,EAAUtgD,IAAI,QAAU,IAC1BsgD,EAAYmX,EAAYzN,oBAAoB1J,EAAW,CACrD,IAAO,KAIXA,EAAUD,MAAM,OAAQ,GACxBC,EAAUD,MAAM,SAAU,GAC1BC,EAAUD,MAAM,SAAU,GAC1BC,EAAUD,MAAM,WAAYuJ,EAAQtH,SAASwH,IAIjD,OAAOxJ,GAKXrhD,EAAQqlB,QAAU0kE,G,iBCnGL9pF,EAAOD,QAAU,EAAQ,MAE/BkqF,GAAGjmE,KAAK,EAAQ,O,gBCAf,IAAU7iB,EAD0CnB,EAAOD,SACjDoB,EAD6D,EAAQ,GAE9E,SAAUA,GACf,SAAS4I,EAAEhJ,GACT,GAAIW,EAAEX,GAAI,OAAOW,EAAEX,GAAGhB,QACtB,IAAIW,EAAIgB,EAAEX,GAAK,CACbd,EAAGc,EACHb,GAAG,EACHH,QAAS,IAEX,OAAOoB,EAAEJ,GAAGX,KAAKM,EAAEX,QAASW,EAAGA,EAAEX,QAASgK,GAAIrJ,EAAER,GAAI,EAAIQ,EAAEX,QAG5D,IAAI2B,EAAI,GACR,OAAOqI,EAAE1J,EAAIc,EAAG4I,EAAEzJ,EAAIoB,EAAGqI,EAAE9J,EAAI,SAAUkB,GACvC,OAAOA,GACN4I,EAAExJ,EAAI,SAAUY,EAAGO,EAAGX,GACvBgJ,EAAErJ,EAAES,EAAGO,IAAMf,OAAOC,eAAeO,EAAGO,EAAG,CACvCu9E,cAAc,EACdp+E,YAAY,EACZC,IAAKC,KAENgJ,EAAErI,EAAI,SAAUP,GACjB,IAAIO,EAAIP,GAAKA,EAAEE,WAAa,WAC1B,OAAOF,EAAEikB,SACP,WACF,OAAOjkB,GAET,OAAO4I,EAAExJ,EAAEmB,EAAG,IAAKA,GAAIA,GACtBqI,EAAErJ,EAAI,SAAUS,EAAG4I,GACpB,OAAOpJ,OAAOkB,UAAUC,eAAe1B,KAAKe,EAAG4I,IAC9CA,EAAEhI,EAAI,GAAIgI,EAAEA,EAAE/H,EAAI,GA7BhB,CA8BL,CAAC,SAAUb,EAAG4I,EAAGrI,GACjB,aAEA,IAAIX,EAAIW,EAAE,EAAFA,GAERP,EAAEpB,QAAU,SAAUoB,GACpB,OAAOA,IAAMJ,GAAK,OAASI,IAE5B,SAAUA,EAAG4I,EAAGrI,GACjB,aAEAP,EAAEpB,QAAU2B,EAAE,GAAFA,GAAUV,OAASU,EAAE,KAChC,SAAUqI,EAAGrI,GACdqI,EAAEhK,QAAUoB,GACX,SAAUA,EAAG4I,EAAGrI,GACjB,aAEA,SAASX,EAAEI,GACT,OAAOA,GAAKA,EAAEE,WAAaF,EAAI,CAC7BikB,QAASjkB,GAIb,SAAST,EAAES,EAAG4I,EAAGrI,GACf,OAAOqI,KAAK5I,EAAIR,OAAOC,eAAeO,EAAG4I,EAAG,CAC1C7I,MAAOQ,EACPb,YAAY,EACZo+E,cAAc,EACdC,UAAU,IACP/9E,EAAE4I,GAAKrI,EAAGP,EAGjB,SAASlB,EAAEkB,EAAG4I,GACZ,KAAM5I,aAAa4I,GAAI,MAAM,IAAIpG,UAAU,qCAG7C,SAASgwB,EAAExyB,GACT,OAAOA,EAAEw7D,MAAQ,SAAU5yD,EAAGrI,GAC5B,IAAIX,EAAIoD,KACR,MAAO,iBAAmB4F,GAAKooB,EAAErwB,eAAeiI,GAAK,IAAI6nB,EAAEzwB,EAAEJ,GAAGwuC,QAAQxlC,GAAI5I,EAAEJ,GAAG2uC,MAAM3lC,IAAM,IAAI6nB,EAAE7nB,EAAGrI,IACrGP,EAAE+oF,kBAAoB,SAAUngF,GACjC,IAAIrI,EAAIgc,UAAU1a,OAAS,QAAK,IAAW0a,UAAU,GAAKA,UAAU,GAAK,EACrE3c,EAAI2c,UAAU1a,OAAS,QAAK,IAAW0a,UAAU,GAAKA,UAAU,GAAKvc,IACzE,GAAIA,EAAE2rB,SAAS/rB,KAAOA,EAAII,EAAEJ,KAAMA,EAAEgqB,UAAW,MAAM,IAAI5gB,MAAM,iBAC/D,IAAIzJ,EAAIK,EAAE6qC,QAAQhnC,IAAIlD,EAAGqI,GACrB9J,EAAI,GACR,OAAOA,EAAE8C,KAAK5B,EAAEu4B,IAAI34B,EAAGL,IAAKT,EAAE8C,KAAK5B,EAAE4R,IAAIhS,EAAGL,IAAK,IAAIkxB,EAAE3xB,IACtDkB,EAAEgpF,mBAAqB,SAAUpgF,GAClC,IAAIrI,EAAIgI,EAAEK,GACNhJ,EAAII,EAAEi1C,UAAU10C,EAAE,IAClBhB,EAAIS,EAAEi1C,UAAU10C,EAAE,IACtB,OAAO,IAAIkwB,EAAE7wB,EAAGL,IACfS,EAAEipF,eAAiBjpF,EAAEgpF,mBAAoBhpF,EAAE+nB,GAAGyzC,MAAQx7D,EAAEw7D,MAAOx7D,EAAEw7D,MAAMp5D,YAAcquB,EAAGzwB,EAAE44E,QAAU,SAAU54E,GAC/G,OAAOA,aAAaywB,GACnBzwB,EAAE+nB,GAAG+zC,OAAS,SAAU97D,GACzB,OAAOA,EAAE+K,SAAS/H,KAAKwsC,WACtBxvC,EAGL,SAASuI,EAAEvI,GACT,OAAOA,EAAEoS,MAAM,KAGjB5S,OAAOC,eAAemJ,EAAG,aAAc,CACrC7I,OAAO,IACL6I,EAAEsgF,eAAY,EAElB,IAAIroF,EAAI,WACN,SAASb,EAAEA,EAAG4I,GACZ,IAAIrI,EAAI,GACJX,GAAI,EACJL,GAAI,EACJT,OAAI,EAER,IACE,IAAK,IAAI0zB,EAAGjqB,EAAIvI,EAAEH,OAAOuB,cAAexB,GAAK4yB,EAAIjqB,EAAE7G,QAAQC,QAAUpB,EAAEqB,KAAK4wB,EAAEzyB,QAAS6I,GAAKrI,EAAEsB,SAAW+G,GAAIhJ,GAAI,IACjH,MAAOI,GACPT,GAAI,EAAIT,EAAIkB,EACZ,QACA,KACGJ,GAAK2I,EAAE4gF,QAAU5gF,EAAE4gF,SACpB,QACA,GAAI5pF,EAAG,MAAMT,GAIjB,OAAOyB,EAGT,OAAO,SAAUqI,EAAGrI,GAClB,GAAIS,MAAMC,QAAQ2H,GAAI,OAAOA,EAC7B,GAAI/I,OAAOuB,YAAY5B,OAAOoJ,GAAI,OAAO5I,EAAE4I,EAAGrI,GAC9C,MAAM,IAAIiC,UAAU,yDAzBhB,GA4BJrD,EAAI,mBAAqBU,QAAU,iBAAmBA,OAAOuB,SAAW,SAAUpB,GACpF,cAAcA,GACZ,SAAUA,GACZ,OAAOA,GAAK,mBAAqBH,QAAUG,EAAEoC,cAAgBvC,QAAUG,IAAMH,OAAOa,UAAY,gBAAkBV,GAEhHq7C,EAAI,WACN,SAASr7C,EAAEA,EAAG4I,GACZ,IAAK,IAAIrI,EAAI,EAAGA,EAAIqI,EAAE/G,OAAQtB,IAAK,CACjC,IAAIX,EAAIgJ,EAAErI,GACVX,EAAEF,WAAaE,EAAEF,aAAc,EAAIE,EAAEk+E,cAAe,EAAI,UAAWl+E,IAAMA,EAAEm+E,UAAW,GAAKv+E,OAAOC,eAAeO,EAAGJ,EAAES,IAAKT,IAI/H,OAAO,SAAUgJ,EAAGrI,EAAGX,GACrB,OAAOW,GAAKP,EAAE4I,EAAElI,UAAWH,GAAIX,GAAKI,EAAE4I,EAAGhJ,GAAIgJ,GATzC,GAaRA,EAAEwgF,aAAe52D,EAEjB,IACInQ,EAAIziB,EADAW,EAAE,IAGNK,EAAIhB,EADAW,EAAE,IAENywB,EAAI,CACN0B,MAAM,EACNoW,SAAS,EACTzV,OAAO,EACPiH,MAAM,EACNoC,KAAK,EACL6J,MAAM,EACNc,QAAQ,EACRC,QAAQ,GAEN7W,EAAI7nB,EAAEsgF,UAAY,WACpB,SAASlpF,EAAE4I,EAAGrI,GACZzB,EAAEkE,KAAMhD,GACR,IAAIJ,EAAIgJ,EACJrJ,EAAIgB,EACR,GAAI,IAAMgc,UAAU1a,aAAU,IAAWtB,EAAG,GAAI,iBAAc,IAAWqI,EAAI,YAAczJ,EAAEyJ,KAAO,IAAMA,EAAE/G,OAAQ,CAClH,IAAI2wB,EAAI3xB,EAAE+H,EAAG,GACbhJ,EAAI4yB,EAAE,GAAIjzB,EAAIizB,EAAE,QACX,GAAI,iBAAmB5pB,EAAG,CAC/B,IAAIyyC,EAAI9yC,EAAEK,GACN7J,EAAI8B,EAAEw6C,EAAG,GACbz7C,EAAIb,EAAE,GAAIQ,EAAIR,EAAE,GAElBiE,KAAKiC,MAAQrF,GAAK,IAAMA,GAAI,EAAIyiB,EAAE4B,SAASrkB,IAAK,EAAIyiB,EAAE4B,UAAU,QAASjhB,KAAK8e,IAAMviB,GAAK,IAAMA,GAAI,EAAI8iB,EAAE4B,SAAS1kB,IAAK,EAAI8iB,EAAE4B,SAAS,QAGxI,OAAOo3B,EAAEr7C,EAAG,CAAC,CACXK,IAAK,WACLN,MAAO,SAAUC,GACf,IAAI4I,EAAI5F,KAAKiC,MAAM2pC,OAAO5uC,EAAE8hB,KACxBvhB,EAAIyC,KAAK8e,IAAI8sB,OAAO5uC,EAAEiF,OAC1B,OAAO2D,GAAK5I,EAAEiF,MAAMijB,WAAallB,KAAKiC,MAAMijB,WAAa3nB,GAAKP,EAAE8hB,IAAIoG,WAAallB,KAAK8e,IAAIoG,YAE3F,CACD7nB,IAAK,MACLN,MAAO,SAAUC,GACf,IAAI4I,EAAI2T,UAAU1a,OAAS,QAAK,IAAW0a,UAAU,GAAKA,UAAU,GAAK,CACvE8sE,UAAU,GAEZ,OAAOrmF,KAAKsmF,SAAStpF,EAAG4I,GAAK,IAAI5F,KAAKZ,YAAYigB,EAAE4B,QAAQsU,IAAIv1B,KAAKiC,MAAOjF,EAAEiF,OAAQod,EAAE4B,QAAQrS,IAAI5O,KAAK8e,IAAK9hB,EAAE8hB,MAAQ,OAEzH,CACDzhB,IAAK,KACLN,MAAO,SAAUC,GACf,IAAI4I,EAAI2T,UAAU1a,OAAS,QAAK,IAAW0a,UAAU,GAAKA,UAAU,GAAK,CACvEgtE,YAAY,EACZ1V,KAAM,GAEJtzE,EAAIyC,KACR,OAAOzD,EAAE,GAAIqB,EAAEqjB,QAAQ7iB,UAAU,WAC/B,IAAIxB,EAAIgJ,EAAEirE,MAAQ,EACdt0E,EAAIoS,KAAKqc,IAAIztB,EAAE0E,MAAMssB,KAAKhxB,EAAEuhB,IAAK9hB,IAAMJ,EACvCd,EAAI8J,EAAE2gF,aAAc,EACpB/2D,EAAI,EACR,OAAO5pB,EAAEjI,eAAe,eAAiB7B,EAAI8J,EAAE4gF,WAAY,CACzD9nF,KAAM,WACJ,IAAIkH,EAAIrI,EAAE0E,MAAMwlC,QAAQhnC,IAAI+uB,EAAI5yB,EAAGI,GAC/BuI,EAAIzJ,IAAM0zB,EAAIjzB,KAAOizB,GAAKjzB,GAC9B,OAAOizB,IAAK,CACV7wB,KAAM4G,EACNxI,MAAOwI,OAAI,EAASK,UAM7B,CACDvI,IAAK,UACLN,MAAO,SAAUC,GACf,IAAI4I,EAAI2T,UAAU1a,OAAS,QAAK,IAAW0a,UAAU,GAAKA,UAAU,GAAK,CACvEgtE,YAAY,EACZ1V,KAAM,GAEJtzE,EAAIyC,KACJpD,EAAIgJ,EAAEirE,MAAQ,EACd/0E,EAAIkE,KAAKklB,UAAYloB,EAAEkoB,UAAYtoB,EACnC4yB,EAAI7gB,KAAKkhB,MAAM/zB,GACfyJ,EAAIK,EAAE2gF,aAAc,EACpB1oF,EAAI,EACR,OAAO+H,EAAEjI,eAAe,eAAiB4H,EAAIK,EAAE4gF,WAAYjqF,EAAE,GAAIqB,EAAEqjB,QAAQ7iB,UAAU,WACnF,OAAOoxB,IAAM,IAAQ,CACnB7wB,MAAM,GACJ,CACFD,KAAM,WACJ,IAAIkH,GAAI,EAAIyZ,EAAE4B,SAAS1jB,EAAE0E,MAAMijB,UAAYloB,EAAEkoB,UAAYrnB,EAAIjB,GACzDL,EAAIizB,IAAM1zB,GAAKyJ,IAAM1H,EAAI2xB,KAAO3xB,GAAK2xB,GACzC,OAAO3xB,IAAK,CACVc,KAAMpC,EACNQ,MAAOR,OAAI,EAASqJ,UAM7B,CACDvI,IAAK,SACLN,MAAO,WACL,IAAIC,EAAIgD,KAAKiC,MAAMijB,UAAYllB,KAAKuuB,OAAS,EAC7C,OAAO,EAAIlP,EAAE4B,SAASjkB,KAEvB,CACDK,IAAK,QACLN,MAAO,WACL,OAAO,IAAIiD,KAAKZ,YAAYY,KAAKiC,MAAMwlC,QAASznC,KAAK8e,IAAI2oB,WAE1D,CACDpqC,IAAK,WACLN,MAAO,SAAU6I,GACf,IAAIrI,EAAIgc,UAAU1a,OAAS,QAAK,IAAW0a,UAAU,GAAKA,UAAU,GAAK,CACvEktE,cAAc,EACdF,YAAY,GAEV3pF,EAAIoD,KAAKiC,MAAMijB,UACf3oB,EAAIyD,KAAK8e,IAAIoG,UACbppB,EAAI8J,EAAEsf,UACNsK,EAAI5pB,EAAEsf,UACN3f,EAAIhI,EAAEkpF,eAAgB,EACtB5oF,EAAIN,EAAEgpF,aAAc,EAIxB,OAHAhpF,EAAEI,eAAe,eAAiB4H,EAAI1H,EAAIN,EAAEipF,WAAY5gF,aAAa5I,IAAMlB,EAAI8J,EAAE3D,MAAMijB,UAAWsK,EAAI5pB,EAAEkZ,IAAIoG,YACpGtoB,EAAId,GAAKc,GAAKd,IAAMyJ,KACpBhJ,EAAIizB,GAAKjzB,GAAKizB,IAAM3xB,KAG7B,CACDR,IAAK,OACLN,MAAO,SAAUC,EAAG4I,GAClB,OAAO5F,KAAK8e,IAAIyP,KAAKvuB,KAAKiC,MAAOjF,EAAG4I,KAErC,CACDvI,IAAK,WACLN,MAAO,SAAUC,EAAG4I,GAClB,OAAO5F,KAAKuuB,KAAKvxB,EAAG4I,KAErB,CACDvI,IAAK,YACLN,MAAO,SAAUC,GACf,IAAI4I,EAAI5F,KAAKiC,MAAMijB,UACf3nB,EAAIyC,KAAK8e,IAAIoG,UACbtoB,EAAII,EAAEiF,MAAMijB,UACZ3oB,EAAIS,EAAE8hB,IAAIoG,UAEVsK,EAAI5yB,GAAKL,EAEb,GAHQqJ,GAAKrI,EAGN,CAEL,GADQqI,GACChJ,GADDgJ,GACWrJ,EAAG,OAAO,KAC7B,GAFQqJ,EAEAhJ,GAFAgJ,EAESrJ,EAAG,OAAOyD,KAAKynC,aAC3B,GAAIjY,EAAG,CACZ,IAAI3xB,EAAIjB,EACR,GAAIiB,GAAK+H,GAAK/H,GAAKN,EAAG,OAAO,KAC7B,GAAIM,EAAI+H,GAAK/H,EAAIN,EAAG,OAAO,IAAIyC,KAAKZ,YAAYvB,EAAGA,GAGrD,OAAO+H,GAAKhJ,GAAKA,EAAIW,GAAKA,EAAIhB,EAAI,IAAIyD,KAAKZ,YAAYxC,EAAGW,GAAKX,EAAIgJ,GAAKA,EAAIrJ,GAAKA,GAAKgB,EAAI,IAAIyC,KAAKZ,YAAYwG,EAAGrJ,GAAKK,EAAIgJ,GAAKA,GAAKrI,GAAKA,EAAIhB,EAAIyD,KAAKynC,QAAU7hC,GAAKhJ,GAAKA,GAAKL,GAAKA,GAAKgB,EAAI,IAAIyC,KAAKZ,YAAYxC,EAAGL,GAAK,OAE5N,CACDc,IAAK,UACLN,MAAO,SAAUC,GACf,OAAOgD,KAAKiC,MAAM2pC,OAAO5uC,EAAEiF,QAAUjC,KAAK8e,IAAI8sB,OAAO5uC,EAAE8hB,OAExD,CACDzhB,IAAK,SACLN,MAAO,SAAUC,GACf,OAAOgD,KAAK0mF,QAAQ1pF,KAErB,CACDK,IAAK,WACLN,MAAO,SAAUC,GACf,IAAI4I,EAAI2T,UAAU1a,OAAS,QAAK,IAAW0a,UAAU,GAAKA,UAAU,GAAK,CACvE8sE,UAAU,GAER9oF,EAAI,OAASyC,KAAK2mF,UAAU3pF,GAChC,OAAO4I,EAAEygF,WAAa9oF,EAAIyC,KAAKqmF,SAASrpF,GAAKO,IAE9C,CACDF,IAAK,YACLN,MAAO,SAAUC,GACf,IAAI4I,EAAI2T,UAAU1a,OAAS,QAAK,IAAW0a,UAAU,GAAKA,UAAU,GAAK,CACvEktE,cAAc,EACd5V,KAAM,GAEJtzE,EAAIyC,KACR,OAAOzD,EAAE,GAAIqB,EAAEqjB,QAAQ7iB,UAAU,WAC/B,IAAIxB,EAAIgJ,EAAEirE,MAAQ,EACdt0E,EAAIoS,KAAKqc,IAAIztB,EAAE0E,MAAMssB,KAAKhxB,EAAEuhB,IAAK9hB,IAAMJ,EACvCd,EAAI8J,EAAE6gF,eAAgB,EACtBj3D,EAAI,EACR,OAAO5pB,EAAEjI,eAAe,eAAiB7B,EAAI8J,EAAE4gF,WAAY,CACzD9nF,KAAM,WACJ,IAAIkH,EAAIrI,EAAEuhB,IAAI2oB,QAAQc,SAAS/Y,EAAI5yB,EAAGI,GAClCuI,EAAIzJ,IAAM0zB,EAAIjzB,KAAOizB,GAAKjzB,GAC9B,OAAOizB,IAAK,CACV7wB,KAAM4G,EACNxI,MAAOwI,OAAI,EAASK,UAM7B,CACDvI,IAAK,iBACLN,MAAO,SAAUC,GACf,IAAI4I,EAAI2T,UAAU1a,OAAS,QAAK,IAAW0a,UAAU,GAAKA,UAAU,GAAK,CACvEktE,cAAc,EACd5V,KAAM,GAEJtzE,EAAIyC,KACJpD,EAAIgJ,EAAEirE,MAAQ,EACd/0E,EAAIkE,KAAKklB,UAAYloB,EAAEkoB,UAAYtoB,EACnC4yB,EAAI7gB,KAAKkhB,MAAM/zB,GACfyJ,EAAIK,EAAE6gF,eAAgB,EACtB5oF,EAAI,EACR,OAAO+H,EAAEjI,eAAe,eAAiB4H,EAAIK,EAAE4gF,WAAYjqF,EAAE,GAAIqB,EAAEqjB,QAAQ7iB,UAAU,WACnF,OAAOoxB,IAAM,IAAQ,CACnB7wB,MAAM,GACJ,CACFD,KAAM,WACJ,IAAIkH,GAAI,EAAIyZ,EAAE4B,SAAS1jB,EAAEuhB,IAAIoG,UAAYloB,EAAEkoB,UAAYrnB,EAAIjB,GACvDL,EAAIizB,IAAM1zB,GAAKyJ,IAAM1H,EAAI2xB,KAAO3xB,GAAK2xB,GACzC,OAAO3xB,IAAK,CACVc,KAAMpC,EACNQ,MAAOR,OAAI,EAASqJ,UAM7B,CACDvI,IAAK,SACLN,MAAO,SAAUC,GACf,IAAI4I,EAAI5F,KAAKynC,QACb,OAAO7hC,EAAE3D,MAAM2pC,QAAO,EAAIvsB,EAAE4B,UAAU,WAAarb,EAAE3D,MAAQ2D,EAAE3D,MAAMmpC,QAAQpuC,IAAK4I,EAAEkZ,IAAI8sB,QAAO,EAAIvsB,EAAE4B,SAAS,WAAarb,EAAEkZ,IAAMlZ,EAAEkZ,IAAIysB,MAAMvuC,IAAK4I,IAErJ,CACDvI,IAAK,WACLN,MAAO,SAAUC,GACf,IAAI4I,EAAI5F,KAAKiC,MAAMijB,UACf3nB,EAAIyC,KAAK8e,IAAIoG,UACbtoB,EAAII,EAAEiF,MAAMijB,UACZ3oB,EAAIS,EAAE8hB,IAAIoG,UACd,OAAO,OAASllB,KAAK2mF,UAAU3pF,GAAK,CAACgD,MAAQpD,GAAKgJ,GAAKA,EAAIrI,GAAKA,GAAKhB,EAAI,GAAKK,GAAKgJ,GAAKA,EAAIrJ,GAAKA,EAAIgB,EAAI,CAAC,IAAIyC,KAAKZ,YAAY7C,EAAGgB,IAAMqI,EAAIhJ,GAAKA,EAAIW,GAAKA,GAAKhB,EAAI,CAAC,IAAIyD,KAAKZ,YAAYwG,EAAGhJ,IAAMgJ,EAAIhJ,GAAKA,EAAIL,GAAKA,EAAIgB,EAAI,CAAC,IAAIyC,KAAKZ,YAAYwG,EAAGhJ,GAAI,IAAIoD,KAAKZ,YAAY7C,EAAGgB,IAAMqI,EAAIhJ,GAAKA,EAAIW,GAAKhB,EAAIgB,EAAI,CAAC,IAAIyC,KAAKZ,YAAYwG,EAAGhJ,GAAI,IAAIoD,KAAKZ,YAAYxC,EAAGW,IAAM,KAE7W,CACDF,IAAK,SACLN,MAAO,WACL,MAAO,CAACiD,KAAKiC,MAAMuqC,SAAUxsC,KAAK8e,IAAI0tB,YAEvC,CACDnvC,IAAK,WACLN,MAAO,WACL,OAAOiD,KAAKiC,MAAMmjB,SAAW,IAAMplB,KAAK8e,IAAIsG,WAE7C,CACD/nB,IAAK,UACLN,MAAO,WACL,OAAOiD,KAAK8e,IAAIoG,UAAYllB,KAAKiC,MAAMijB,cAEtCloB,EAvPe,IAyPrB,SAAUA,EAAG4I,EAAGrI,GACjB,aAEA,IACIhB,EAAIgB,EAAE,GACNzB,EAAIyB,EAAE,IACNiyB,EAAIjyB,EAAE,GACNgI,EAAIhI,EAAE,KACNP,EAAEpB,QAAU,SAAUoB,EAAG4I,GAC3B,IAAIrI,EAAGX,EAAG4yB,EAAG3xB,EAAG1B,EAChB,OAAOod,UAAU1a,OAAS,GAAK,iBAAmB7B,GAAKa,EAAI+H,EAAGA,EAAI5I,EAAGA,EAAI,MAAQa,EAAI0b,UAAU,GAAI,MAAQvc,GAAKO,EAAIiyB,GAAI,EAAI5yB,GAAI,IAAOW,EAAIgI,EAAEtJ,KAAKe,EAAG,KAAMJ,EAAI2I,EAAEtJ,KAAKe,EAAG,KAAMwyB,EAAIjqB,EAAEtJ,KAAKe,EAAG,MAAOb,EAAI,CACtMY,MAAO6I,EACPk1E,aAAcv9E,EACdb,WAAYE,EACZm+E,SAAUvrD,GACT3xB,EAAItB,EAAET,EAAE+B,GAAI1B,GAAKA,IACjByqF,GAAK,SAAU5pF,EAAG4I,EAAGrI,GACxB,IAAIX,EAAGiB,EAAG1B,EAAGk8C,EACb,MAAO,iBAAmBr7C,GAAKb,EAAIoB,EAAGA,EAAIqI,EAAGA,EAAI5I,EAAGA,EAAI,MAAQb,EAAIod,UAAU,GAAI,MAAQ3T,EAAIA,OAAI,EAAS4pB,EAAE5pB,GAAK,MAAQrI,EAAIA,OAAI,EAASiyB,EAAEjyB,KAAOpB,EAAIoB,EAAGA,OAAI,IAAWpB,EAAIyJ,EAAGA,EAAIrI,OAAI,GAAS,MAAQP,GAAKJ,GAAI,EAAIiB,GAAI,IAAOjB,EAAI2I,EAAEtJ,KAAKe,EAAG,KAAMa,EAAI0H,EAAEtJ,KAAKe,EAAG,MAAOq7C,EAAI,CAC7Q17C,IAAKiJ,EACLpC,IAAKjG,EACLu9E,aAAcl+E,EACdF,WAAYmB,GACX1B,EAAII,EAAET,EAAEK,GAAIk8C,GAAKA,IAErB,SAAUr7C,EAAG4I,EAAGrI,GACjB,aAEAP,EAAEpB,QAAU,cACX,SAAUoB,EAAG4I,EAAGrI,GACjB,aAEAP,EAAEpB,QAAU2B,EAAE,EAAFA,GAASf,OAAOwE,OAASzD,EAAE,IACtC,SAAUP,EAAG4I,EAAGrI,GACjB,aAEAP,EAAEpB,QAAU,WACV,IAAIoB,EACA4I,EAAIpJ,OAAOwE,OACf,MAAO,mBAAqB4E,IAEzBA,EAF+B5I,EAAI,CACpC6pF,IAAK,OACC,CACNC,IAAK,OACJ,CACDC,KAAM,SACJ/pF,EAAE6pF,IAAM7pF,EAAE8pF,IAAM9pF,EAAE+pF,OAAS,gBAEhC,SAAU/pF,EAAG4I,EAAGrI,GACjB,aAEA,IAAIX,EAAIW,EAAE,IACNhB,EAAIgB,EAAE,IACNzB,EAAI6S,KAAKC,IAEb5R,EAAEpB,QAAU,SAAUoB,EAAG4I,GACvB,IAAIrI,EACAiyB,EACAjqB,EACA1H,EAAI/B,EAAEyd,UAAU1a,OAAQ,GAE5B,IAAK7B,EAAIR,OAAOD,EAAES,IAAKuI,EAAI,SAAU3I,GACnC,IACEI,EAAEJ,GAAKgJ,EAAEhJ,GACT,MAAOI,GACPO,IAAMA,EAAIP,KAEXwyB,EAAI,EAAGA,EAAI3xB,IAAK2xB,EAAqB5yB,EAAlBgJ,EAAI2T,UAAUiW,IAASrtB,QAAQoD,GAErD,QAAI,IAAWhI,EAAG,MAAMA,EACxB,OAAOP,IAER,SAAUA,EAAG4I,EAAGrI,GACjB,aAEAP,EAAEpB,QAAU,SAAUoB,GACpB,MAAO,mBAAqBA,IAE7B,SAAUA,EAAG4I,EAAGrI,GACjB,aAEAP,EAAEpB,QAAU2B,EAAE,GAAFA,GAAUf,OAAOkH,KAAOnG,EAAE,KACrC,SAAUP,EAAG4I,EAAGrI,GACjB,aAEAP,EAAEpB,QAAU,WACV,IACE,OAAOY,OAAOkH,KAAK,cAAc,EACjC,MAAO1G,GACP,OAAO,KAGV,SAAUA,EAAG4I,EAAGrI,GACjB,aAEA,IAAIX,EAAIW,EAAE,GACNhB,EAAIC,OAAOkH,KAEf1G,EAAEpB,QAAU,SAAUoB,GACpB,OAAOT,EAAEK,EAAEI,GAAKR,OAAOQ,GAAKA,KAE7B,SAAUA,EAAG4I,EAAGrI,GACjB,aAEA,IAAIX,EAAIW,EAAE,GACNhB,EAAIyB,MAAMN,UAAUyE,QACpBrG,EAAIU,OAAOY,OACXoyB,EAAI,SAAUxyB,EAAG4I,GACnB,IAAIrI,EAEJ,IAAKA,KAAKP,EAAG4I,EAAErI,GAAKP,EAAEO,IAGxBP,EAAEpB,QAAU,SAAUoB,GACpB,IAAI4I,EAAI9J,EAAE,MACV,OAAOS,EAAEN,KAAKsd,WAAW,SAAUvc,GACjCJ,EAAEI,IAAMwyB,EAAEhzB,OAAOQ,GAAI4I,MACnBA,IAEL,SAAU5I,EAAG4I,EAAGrI,GACjB,aAEA,IAAIX,EAAIW,EAAE,GAEVP,EAAEpB,QAAU,SAAUoB,GACpB,IAAKJ,EAAEI,GAAI,MAAM,IAAIwC,UAAU,gCAC/B,OAAOxC,IAER,SAAUA,EAAG4I,EAAGrI,GACjB,aAEAP,EAAEpB,QAAU2B,EAAE,GAAFA,GAAU6kB,OAAO1kB,UAAUqK,SAAWxK,EAAE,KACnD,SAAUP,EAAG4I,EAAGrI,GACjB,aAEA,IAAIX,EAAI,aAERI,EAAEpB,QAAU,WACV,MAAO,mBAAqBgB,EAAEmL,WAAY,IAAOnL,EAAEmL,SAAS,SAAU,IAAOnL,EAAEmL,SAAS,SAEzF,SAAU/K,EAAG4I,EAAGrI,GACjB,aAEA,IAAIX,EAAIwlB,OAAO1kB,UAAUq1B,QAEzB/1B,EAAEpB,QAAU,SAAUoB,GACpB,OAAOJ,EAAEX,KAAK+D,KAAMhD,EAAGuc,UAAU,KAAO,IAEzC,SAAUvc,EAAG4I,EAAGrI,GACjB,aAEA,IAAIX,EAAI,CACNY,QAAQ,EACRwpF,QAAQ,GAGVhqF,EAAEpB,QAAU,WACV,IAAIoB,EACJ,GAAI,mBAAqBH,OAAQ,OAAO,EACxCG,EAAIH,OAAO,eAEX,IACEulB,OAAOplB,GACP,MAAOA,GACP,OAAO,EAGT,QAASJ,SAASC,OAAOuB,aAAexB,SAASC,OAAOoqF,gBAAkBrqF,SAASC,OAAOC,eAE3F,SAAUE,EAAG4I,EAAGrI,GACjB,aAEAP,EAAEpB,QAAU,SAAUoB,GACpB,QAASA,IAAM,iBAAmBA,KAAOA,EAAEoC,aAAe,WAAapC,EAAEoC,YAAY/C,MAAQ,WAAaW,EAAEA,EAAEoC,YAAYtC,gBAE3H,SAAUE,EAAG4I,EAAGrI,GACjB,aAEA,IAAIX,EACAL,EACAT,EACA0zB,EACAjqB,EAAIhI,EAAE,GACNM,EAAIN,EAAE,IACNpB,EAAIK,OAAOY,OACXi7C,EAAI77C,OAAOoc,iBACX7c,EAAIS,OAAOC,eACX4iB,EAAI7iB,OAAOkB,UACXtB,EAAID,EAAE,MAEV,GAAI,mBAAqBU,OAAQ,CAC/BD,EAAIC,OAEJ,IACEulB,OAAOxlB,KAAM4yB,GAAI,EACjB,MAAOxyB,KAGX,IAAIY,EAAI,WACN,IAAIZ,EAAIb,EAAE,MACV,OAAO,SAAUyJ,GACf,IAAK,IAAIrI,EAAGX,EAAGL,EAAI,EAAGS,EAAE4I,GAAKrJ,GAAK,QAASA,EAE3C,OAAqBS,EAAd4I,GAAKrJ,GAAK,KAAW,EAAkBR,EAAEsjB,EAAhB9hB,EAAI,KAAOqI,EAAWL,EAAEqhF,GAAG,MAAM,SAAU5pF,GACzEJ,IAAMA,GAAI,EAAIb,EAAEiE,KAAMzC,EAAGgI,EAAEvI,IAAKJ,GAAI,OACjCW,GAPD,GAWRzB,EAAI,SAAUkB,GACZ,GAAIgD,gBAAgBlE,EAAG,MAAM,IAAI0D,UAAU,+BAC3C,OAAOjD,EAAES,IACRA,EAAEpB,QAAUW,EAAI,SAASS,EAAE4I,GAC5B,IAAIrI,EACJ,GAAIyC,gBAAgBhD,EAAG,MAAM,IAAIwC,UAAU,+BAC3C,OAAOgwB,EAAI5yB,EAAEgJ,IAAMrI,EAAIpB,EAAEL,EAAE4B,WAAYkI,OAAI,IAAWA,EAAI,GAAKwc,OAAOxc,GAAIyyC,EAAE96C,EAAG,CAC7E2pF,gBAAiB3hF,EAAE,GAAIK,GACvBuhF,SAAU5hF,EAAE,GAAI3H,EAAEgI,QAEnByyC,EAAE97C,EAAG,CACN41C,IAAK5sC,GAAE,SAAUvI,GACf,OAAOZ,EAAEY,GAAKZ,EAAEY,GAAKZ,EAAEY,GAAKT,EAAE6lB,OAAOplB,OAEvCoqF,OAAQ7hF,GAAE,SAAUvI,GAClB,IAAI4I,EAGJ,IAAKA,KAFL/H,EAAEb,GAEQZ,EAAG,GAAIA,EAAEwJ,KAAO5I,EAAG,OAAO4I,KAEtCyhF,YAAa9hF,EAAE,GAAI3I,GAAKA,EAAEyqF,aAAe9qF,EAAE,gBAC3C+qF,mBAAoB/hF,EAAE,GAAI3I,GAAKA,EAAE0qF,oBAAsB/qF,EAAE,uBACzD6B,SAAUmH,EAAE,GAAI3I,GAAKA,EAAEwB,UAAY7B,EAAE,aACrC2O,MAAO3F,EAAE,GAAI3I,GAAKA,EAAEsO,OAAS3O,EAAE,UAC/BkI,QAASc,EAAE,GAAI3I,GAAKA,EAAE6H,SAAWlI,EAAE,YACnCgrF,OAAQhiF,EAAE,GAAI3I,GAAKA,EAAE2qF,QAAUhrF,EAAE,WACjCirF,QAASjiF,EAAE,GAAI3I,GAAKA,EAAE4qF,SAAWjrF,EAAE,YACnC6S,MAAO7J,EAAE,GAAI3I,GAAKA,EAAEwS,OAAS7S,EAAE,UAC/B0qF,YAAa1hF,EAAE,GAAI3I,GAAKA,EAAEqqF,aAAe1qF,EAAE,gBAC3CO,YAAayI,EAAE,GAAI3I,GAAKA,EAAEE,aAAeP,EAAE,gBAC3CkrF,YAAaliF,EAAE,GAAI3I,GAAKA,EAAE6qF,aAAelrF,EAAE,kBACzC87C,EAAEv8C,EAAE4B,UAAW,CACjB0B,YAAamG,EAAEhJ,GACf2C,SAAUqG,EAAE,IAAI,WACd,OAAOvF,KAAKmnF,cAEZ9uC,EAAE97C,EAAEmB,UAAW,CACjBwB,SAAUqG,GAAE,WACV,MAAO,WAAa1H,EAAEmC,MAAMknF,gBAAkB,OAEhDhiE,QAAS3f,GAAE,WACT,OAAO1H,EAAEmC,WAETjE,EAAEQ,EAAEmB,UAAWnB,EAAE0qF,YAAa1hF,EAAE,IAAI,WACtC,IAAIvI,EAAIa,EAAEmC,MACV,MAAO,iBAAmBhD,EAAIA,EAAIA,EAAEkC,eACjCnD,EAAEQ,EAAEmB,UAAWnB,EAAEO,YAAayI,EAAE,IAAK,WAAYxJ,EAAED,EAAE4B,UAAWnB,EAAEO,YAAayI,EAAE,IAAKhJ,EAAEmB,UAAUnB,EAAEO,eAAgBf,EAAED,EAAE4B,UAAWnB,EAAE0qF,YAAa1hF,EAAE,IAAKhJ,EAAEmB,UAAUnB,EAAE0qF,gBAC3K,SAAUjqF,EAAG4I,EAAGrI,GACjB,aAEA,IAAIX,EAAIW,EAAE,IAEVP,EAAEpB,QAAU,SAAUoB,GACpB,IAAKJ,EAAEI,GAAI,MAAM,IAAIwC,UAAUxC,EAAI,oBACnC,OAAOA,Q,kBCjqBb,IAAIyF,EAAM,CACT,wBAAyB,GACzB,oBAAqB,GACrB,sBAAuB,IACvB,0BAA2B,GAC3B,yBAA0B,GAC1B,aAAc,GACd,2BAA4B,GAC5B,kBAAmB,IAIpB,SAASilF,EAAeC,GACvB,IAAI/d,EAAKge,EAAsBD,GAC/B,OAAOjsF,EAAoBkuE,GAE5B,SAASge,EAAsBD,GAC9B,IAAIjsF,EAAoBa,EAAEkG,EAAKklF,GAAM,CACpC,IAAI/hF,EAAI,IAAII,MAAM,uBAAyB2hF,EAAM,KAEjD,MADA/hF,EAAEiiF,KAAO,mBACHjiF,EAEP,OAAOnD,EAAIklF,GAEZD,EAAehkF,KAAO,WACrB,OAAOlH,OAAOkH,KAAKjB,IAEpBilF,EAAehoE,QAAUkoE,EACzB/rF,EAAOD,QAAU8rF,EACjBA,EAAe9d,GAAK,K,g+BC7BpB,IAAIke,EAAc,SAACjnF,GACjBwd,QAAQgC,IAAI,gBACN9b,SAAS01E,cAAc,gBAAoB11E,SAAS01E,cAAc,UAAU9P,aAChF5lE,SAAS01E,cAAc,cAAcvkB,MAAMwkB,QAAU,QACrD31E,SAAS01E,cAAc,eAAevkB,MAAMwkB,QAAU,QAEtD31E,SAAS01E,cAAc,sBAAsBvkB,MAAMwkB,QAAU,SAI7D6N,EAAe,SAAClnF,GAClBwd,QAAQgC,IAAI,iBACZ9b,SAAS01E,cAAc,sBAAsBvkB,MAAMwkB,QAAU,OAEvD31E,SAAS01E,cAAc,gBAAoB11E,SAAS01E,cAAc,UAAU9P,cAChF5lE,SAAS01E,cAAc,cAAcvkB,MAAMwkB,QAAU,OACrD31E,SAAS01E,cAAc,eAAevkB,MAAMwkB,QAAU,UAItD8N,EAA6B,SAACnnF,GAChC,IAAWonF,EAAX,EAAkBpnF,EAAMoC,OAAxB,MAGA,GADAob,QAAQgC,IAAI,iCACM,KAAd4nE,EAAIvwB,OAGL,OAAOnzD,SAAS2e,cAAc,IAAIgyC,MAAM,qBAGzCgzB,EAAc,SAACrnF,GACjBwd,QAAQgC,IAAI,gBACZ,IAAMpc,EAAUpD,EAAMqD,OAElBD,EAAQgH,aAAa,sBAIzBoT,QAAQgC,IAAI,gBACRpc,EAAQw8E,KAAK0H,WAAW,OAC1BlkF,EAAQuW,aAAa,YAAY,GACjCvW,EAAQuW,aAAa,4BAA4B,MAIrDjW,SAASnE,iBAAiB,iBAAiB,SAACS,GAC1C,IAAOonF,EAAP,EAAgBpnF,EAAMoC,OAAtB,MAEkB,KAAdglF,EAAIvwB,SAIU,KAAduwB,EAAIvwB,OACN0wB,MAAM,iBAAD,OAAkBH,EAAIvwB,OAAtB,6GACkB,KAAduwB,EAAIvwB,OACb0wB,MAAM,mEACiB,KAAdH,EAAIvwB,QAA+B,KAAduwB,EAAIvwB,OAClC0wB,MAAM,0HACiB,GAAdH,EAAIvwB,OACb0wB,MAAM,sEAENA,MAAM,UAAD,OAAWH,EAAIvwB,OAAf,mGAGP72D,EAAME,+BAGRwD,SAASnE,iBAAiB,mBAAmB,WAC7BmE,SAAS4G,iBAAiB,qBAClChJ,SAAQ,SAAC8B,GACbA,EAAQ3D,oBAAoB,cAAewnF,GAC3C7jF,EAAQ7D,iBAAiB,cAAe0nF,GAExC7jF,EAAQ3D,oBAAoB,eAAgBynF,GAC5C9jF,EAAQ7D,iBAAiB,eAAgB2nF,GAEzC9jF,EAAQ3D,oBAAoB,eAAgB0nF,GAC5C/jF,EAAQ7D,iBAAiB,eAAgB4nF,MAGvBzjF,SAAS4G,iBAAiB,wBAClChJ,SAAQ,SAAC8B,GACnBA,EAAQ3D,oBAAoB,kBAAmB4nF,GAC/CjkF,EAAQ7D,iBAAiB,kBAAmB8nF,GAE5CjkF,EAAQ3D,oBAAoB,cAAewnF,GAC3C7jF,EAAQ7D,iBAAiB,cAAe0nF,GAExC7jF,EAAQ3D,oBAAoB,eAAgBynF,GAC5C9jF,EAAQ7D,iBAAiB,eAAgB2nF,GAEzC9jF,EAAQ3D,oBAAoB,eAAgB0nF,GAC5C/jF,EAAQ7D,iBAAiB,eAAgB4nF,MAGxBzjF,SAAS4G,iBAAiB,oFAClChJ,SAAQ,SAAC8B,GAClBA,EAAQ3D,oBAAoB,QAAS4nF,GACrCjkF,EAAQ7D,iBAAiB,QAAS8nF,MAGV3jF,SAAS4G,iBAAiB,qCAClChJ,SAAQ,SAAC8B,GACzBA,EAAQwW,gBAAgB,4BACxBxW,EAAQwW,gBAAgB,mB,iBCxG5B,YAQA,IAAMk/C,EAAUgnB,OAChB7qB,EAAO6D,QAAU,GACjBA,EAAQj2D,OAAOvB,SAAQ,SAAC9E,GACtB,IAAIma,EAAwBna,EAAIoH,QAAQ,KAAM,IAAIA,QAAQ,aAAc,IAV1DA,QAAQ,iBAAiB,SAAC89E,GACtC,OAAOA,EAAG39E,cACPH,QAAQ,IAAK,IACbA,QAAQ,IAAK,OAQlBqxD,EAAO6D,QAAQniD,GAAgBmiD,EAAQt8D,GAAR,a,iCCZjC,IAAIoF,EAAM,CACT,0BAA2B,IAC3B,kCAAmC,IACnC,0BAA2B,IAC3B,4BAA6B,IAC7B,gCAAiC,IACjC,6BAA8B,IAC9B,qBAAsB,IACtB,8BAA+B,IAC/B,wBAAyB,IACzB,yBAA0B,IAC1B,yBAA0B,IAC1B,6BAA8B,IAC9B,4BAA6B,IAC7B,8BAA+B,IAC/B,kCAAmC,IACnC,wBAAyB,IACzB,qBAAsB,GACtB,kBAAmB,IACnB,qBAAsB,IACtB,8BAA+B,IAC/B,4BAA6B,IAC7B,+BAAgC,IAChC,+BAAgC,IAChC,oBAAqB,IACrB,4BAA6B,IAC7B,+BAAgC,GAChC,uBAAwB,IACxB,2BAA4B,IAC5B,wCAAyC,KAI1C,SAASilF,EAAeC,GACvB,IAAI/d,EAAKge,EAAsBD,GAC/B,OAAOjsF,EAAoBkuE,GAE5B,SAASge,EAAsBD,GAC9B,IAAIjsF,EAAoBa,EAAEkG,EAAKklF,GAAM,CACpC,IAAI/hF,EAAI,IAAII,MAAM,uBAAyB2hF,EAAM,KAEjD,MADA/hF,EAAEiiF,KAAO,mBACHjiF,EAEP,OAAOnD,EAAIklF,GAEZD,EAAehkF,KAAO,WACrB,OAAOlH,OAAOkH,KAAKjB,IAEpBilF,EAAehoE,QAAUkoE,EACzB/rF,EAAOD,QAAU8rF,EACjBA,EAAe9d,GAAK,K,6BClDpB,WAAMye,EAAgB,SAAC/uB,EAAYgvB,GACjC,OAAOjyD,SACLm0C,iBAAiBjmE,SAASwY,iBAAiB0tD,iBAA3C,wBACmBnR,EADnB,YACiCgvB,MAK/BnvB,EAAc,CAClBS,KAAM,CACJ33D,MAAOomF,EAAc,OAAQ,SAC7BvpE,IAAKupE,EAAc,OAAQ,QAE7BxuB,MAAO,CACL53D,MAAOomF,EAAc,QAAS,SAC9BvpE,IAAKupE,EAAc,QAAS,QAE9BvuB,OAAQ,CACN73D,MAAOomF,EAAc,SAAU,SAC/BvpE,IAAKupE,EAAc,SAAU,QAE/BtuB,MAAO,CACL93D,MAAOomF,EAAc,QAAS,SAC9BvpE,IAAKupE,EAAc,QAAS,QAE9BruB,KAAM,CACJ/3D,MAAOomF,EAAc,OAAQ,SAC7BvpE,IAAKupE,EAAc,OAAQ,SAIhBlvB,a,6BC/Bf,OAAe,mBAAS4L,EAAUwjB,GAA0B,IAAjBC,EAAgB,uDAAH,EACtD,GAAID,EAAS,OAAO,IACpB,GAAgB,GAAZxjB,EAAe,OAAO,EAE1B,IAAM0jB,EAAc,IAAMD,EAC1B,OAAIzjB,EAAWyjB,EAAmBA,EAC9BzjB,EAAW0jB,EAAoBA,EAE5B1jB,I,+oCCFM,mBAAS6R,GAKb,IAAD,yDAAJ,GAAI,IAJRnpB,qBAIQ,aAHRC,uBAGQ,aAFRC,mBAEQ,SADLz6C,EACK,OACRu6C,EAAgBA,IAAkBE,EAClC,IAAMwpB,EAAelqB,IAAasqB,QAAQX,GAC1CO,EAAaxmE,MAAb,GAAqB88C,gBAAeC,kBAAiBC,eAAgBz6C,M,6BCdvE,mBAAe,qBACb3O,SAAS4G,iBAAiB,8BAA8BhJ,SAAQ,SAACumF,GAC/D,IAAI3hF,EAAa+uD,EAAOj0D,YAAYyV,qCAClCoxE,EAAQ,UAGN3hF,GACFA,EAAW23E,a,8CCPjB,mBAAe,mBAASn8D,GACtB,IAAMqM,EAAYrM,EAAOwS,oBAAoB5lB,OAG7C,OAFuB2mD,EAAO6D,QAAQgvB,SAAS/5D,K,8CCFjD,OAAe,mBAASqvB,GACtB,IAAMy7B,EAAWn1E,SAAS88D,cAAc,YAExC,OADAqY,EAAS/X,UAAY1jB,EACdy7B,EAASzqE,QAAQ25E,oB,myBCHX,mBAAS1pE,GACtB,OAAO,EAAI,IAAIhf,IAAIgf,M,6BCDrB,OAAe,mBAASwqB,EAAMm/C,EAAUxjE,GACtC,IAAMyjE,EAAiBC,KAAKC,aAAa3jE,EAAQ,CAC/CqwC,MAAO,WACPmzB,SAAUA,EACVI,gBAAiB,iBAKnB,MAAsB,KAFCH,EAAeI,cAAc,GAAGpyE,MAAK,SAACqyE,GAAD,MAAwB,aAAdA,EAAK1/E,QAAqB1M,MAGxF,GAAN,OAAU+rF,EAAe1jE,OAAOskB,GAAhC,YAAyCm/C,GAEnC,GAAN,OAAUC,EAAe1jE,OAAOskB,M,6BCZpC,OAAe,mBAASzlC,GACtBA,EAAQq9D,UAAU7gE,IAAI,wBAEtB03D,YAAW,WACTl0D,EAAQq9D,UAAUqT,OAAO,0BACxB,Q,6BCLL,OAAe,qBACb,OAAOyU,UAAUC,UAAUpkF,cAAcgM,SAAS,a,6BCDpD,mBAEe,qBAEb,OAAO,IAAIq4E,WAAoBC,2B,6BCJjC,OAAe,qBACb,IAAMF,EAAY/kF,OAAO8kF,UAAUC,UAAUpkF,cAC7C,MAAO,oBAAoB3F,KAAK+pF,K,6BCFlC,OAAe,qBACb,IAAMA,EAAY/kF,OAAO8kF,UAAUC,UAAUpkF,cAC7C,MAAO,mBAAmB3F,KAAK+pF,IAAcA,EAAUn+E,MAAM,8B,6BCF/D,OAAe,qBACb,IAAMm+E,EAAYD,UAAUC,UACtBG,EAAUH,EAAUp4E,SAAS,cAAgBo4E,EAAUp4E,SAAS,YAChEw4E,EAAW,iCAAiCnqF,KAAK+pF,GAEvD,OAAOG,GAAWC,I,6BCLpB,OAAe,qBACb,OAAOL,UAAUC,UAAUpkF,cAAcgM,SAAS,oB,6BCDpD,OAAe,WACby4E,MAAO,GACPC,QAAS,GACTC,SAAU,K,6BCHZ,OAAe,mBAAS5mF,GACtBqb,QAAQgC,IAAIrd,K,6BCDd,mBAAe,mBAASi7C,GAAqB,IAAf/sC,EAAc,uDAAJ,GAChC24E,EAAa,IAAI5mE,YAAY,qBAAsB,CAAEhgB,OAAQ,CAAEg7C,OAAM/sC,WAAW6R,SAAS,IAC/F+yC,EAAO5yC,cAAc2mE,K,8CCFvB,mBAAe,qBAGb,MAAQ,0BAA2BvlF,QAAWwxD,EAAO6D,QAAQmwB,gB,8CCH/D,mBAKe,qBACb,OAAIh0B,EAAO6D,QAAQmwB,cALZ,eAAgBxlF,OAAO8kF,WAAa9kF,OAAO8kF,UAAU3pB,WASrDn7D,OAAOi1D,WAAW,8BAA8BrwD,U,8CCVzD,mBAAe,mBAASgW,GACtB,IAAM6qE,EAAsBj0B,EAAOi0B,oBAEnC,GAAKA,EAEL,OAAIA,EAAoBC,sBAA8BD,EAAoBE,SAAS,GAAI,CAAEC,SAAS,SAElGH,EAAoBxK,W,8CCPtB,OAAe,mBAAS4K,EAAeC,GACrC,IAAMC,EAAgBh0D,SAASm0C,iBAAiB4f,GAAgB5oB,QAC1D8oB,EAAe,CACnBj0D,SAASm0C,iBAAiB2f,GAAe3oB,QACzCnrC,SAASm0C,iBAAiB2f,GAAeI,WACzCl0D,SAASm0C,iBAAiB2f,GAAeK,eACzCjoF,QAAO,SAACgD,EAAGkU,GAAJ,OAAUlU,EAAIkU,KACjBgxE,EAAmBL,EAAeM,UAClCC,EAAcR,EAAcS,UAAYH,EACxCI,EAAiBR,EAAgBM,EAAcL,EAEjDK,EAAc,IAChBP,EAAeM,UAAYN,EAAeM,UAAYC,GAGpDE,EAAiB,IACnBT,EAAeM,UAAYN,EAAeM,UAAYG,K,6BChB1D,mBAAe,WACblsE,GAAI,SAAC1a,GAAuC,IAA9B0hC,EAA6B,uDAAlB,IAAK38B,EAAa,uCACzC/E,EAAQyxD,MAAMo1B,mBAAqB,mCACnC7mF,EAAQyxD,MAAMq1B,mBAAd,UAAsCplD,EAAtC,MACA1hC,EAAQyxD,MAAMs1B,yBAA2B,cACzC/mF,EAAQyxD,MAAMu1B,UAAY,aAC1BhnF,EAAQyxD,MAAM8L,OAAd,UAA0Bv9D,EAAQinF,aAAlC,MACAjnF,EAAQinF,aACRjnF,EAAQyxD,MAAM8L,OAAS,EACvBv9D,EAAQyxD,MAAMy1B,QAAU,EACxBlnF,EAAQyxD,MAAM01B,WAAa,EAC3BnnF,EAAQyxD,MAAM21B,cAAgB,EAC9BpnF,EAAQyxD,MAAM60B,UAAY,EAC1BtmF,EAAQyxD,MAAM80B,aAAe,EAE7BlmF,OAAO6zD,YAAW,WAChBl0D,EAAQyxD,MAAMwkB,QAAU,OACxBj2E,EAAQyxD,MAAM41B,eAAe,UAC7BrnF,EAAQyxD,MAAM41B,eAAe,WAC7BrnF,EAAQyxD,MAAM41B,eAAe,eAC7BrnF,EAAQyxD,MAAM41B,eAAe,kBAC7BrnF,EAAQyxD,MAAM41B,eAAe,cAC7BrnF,EAAQyxD,MAAM41B,eAAe,iBAC7BrnF,EAAQyxD,MAAM41B,eAAe,YAC7BrnF,EAAQyxD,MAAM41B,eAAe,uBAC7BrnF,EAAQyxD,MAAM41B,eAAe,uBAC7BrnF,EAAQyxD,MAAM41B,eAAe,8BAEzBtiF,GACFA,MAED28B,IAGL/mB,KAAM,SAAC3a,GAAuC,IAA9B0hC,EAA6B,uDAAlB,IAAK38B,EAAa,uCAC3C/E,EAAQyxD,MAAM41B,eAAe,WAE7B,IAAIpR,EAAU51E,OAAOkmE,iBAAiBvmE,GAASi2E,QAC/B,SAAZA,IACFA,EAAU,SAGZj2E,EAAQyxD,MAAMwkB,QAAUA,EACxB,IAAM1Y,EAASv9D,EAAQinF,aACvBjnF,EAAQyxD,MAAM8L,OAAS,EACvBv9D,EAAQyxD,MAAMy1B,QAAU,EACxBlnF,EAAQyxD,MAAM01B,WAAa,EAC3BnnF,EAAQyxD,MAAM21B,cAAgB,EAC9BpnF,EAAQyxD,MAAM60B,UAAY,EAC1BtmF,EAAQyxD,MAAM80B,aAAe,EAC7BvmF,EAAQinF,aACRjnF,EAAQyxD,MAAMu1B,UAAY,aAC1BhnF,EAAQyxD,MAAMo1B,mBAAqB,mCACnC7mF,EAAQyxD,MAAMq1B,mBAAd,UAAsCplD,EAAtC,MACA1hC,EAAQyxD,MAAMs1B,yBAA2B,cACzC/mF,EAAQyxD,MAAM8L,OAAd,UAA0BA,EAA1B,MACAv9D,EAAQyxD,MAAMy1B,QAAU,EACxBlnF,EAAQyxD,MAAM41B,eAAe,eAC7BrnF,EAAQyxD,MAAM41B,eAAe,kBAC7BrnF,EAAQyxD,MAAM41B,eAAe,cAC7BrnF,EAAQyxD,MAAM41B,eAAe,iBAE7BhnF,OAAO6zD,YAAW,WAChBl0D,EAAQyxD,MAAM41B,eAAe,UAC7BrnF,EAAQyxD,MAAM41B,eAAe,WAC7BrnF,EAAQyxD,MAAM41B,eAAe,YAC7BrnF,EAAQyxD,MAAM41B,eAAe,uBAC7BrnF,EAAQyxD,MAAM41B,eAAe,uBAC7BrnF,EAAQyxD,MAAM41B,eAAe,8BAEzBtiF,GACFA,MAED28B,IAGL4lD,OAAQ,SAACtnF,GAA6B,IAApB0hC,EAAmB,uDAAR,IAC3B,MAAiD,SAA7CrhC,OAAOkmE,iBAAiBvmE,GAASi2E,QAC5BpkB,EAAO6D,QAAQ6xB,MAAM5sE,KAAK3a,EAAS0hC,GAEnCmwB,EAAO6D,QAAQ6xB,MAAM7sE,GAAG1a,EAAS0hC,M,8CChF9C,mBAEe,mBAASixC,GAGtB,OAFqB3pB,IAAasqB,QAAQX,K,6BCH5C,OAAe,mBAASr0D,GACtB,OAAOA,EAAOkpE,UAAU,OAAOhnF,QAAQ,uyDAAmB,M,6BCD7C,SAASinF,EAAYz8E,GAClC,IAAcnT,EAAV6vF,EAAO,EACX,GAAuB,IAAnB18E,EAAQpQ,OAAc,OAAO8sF,EACjC,IAAK7vF,EAAI,EAAGA,EAAImT,EAAQpQ,OAAQ/C,IAE9B6vF,GAAUA,GAAQ,GAAKA,EADf18E,EAAQ28E,WAAW9vF,GAE3B6vF,GAAQ,EAEV,OAAOA,EART,gD,6BCAA,OAEe,mBAASE,GAgBtB,IAdA,IAGMC,GAAUD,EAHA,IAAIE,QAAQ,EAAIF,EAAahtF,OAAS,GAAK,IAIxD4F,QAAQ,KAAM,KACdA,QAAQ,KAAM,KAGXunF,EAAU1nF,OAAO2nF,KAAKH,GAEtBI,EAAc,IAAIC,WAAWH,EAAQntF,QAIlC/C,EAAI,EAAGA,EAAIkwF,EAAQntF,SAAU/C,EACpCowF,EAAYpwF,GAAKkwF,EAAQJ,WAAW9vF,GAGtC,OAAOowF,I,kCCtBT,IAAIzpF,EAAM,CACT,+BAAgC,IAChC,4CAA6C,IAC7C,+BAAgC,IAChC,8BAA+B,IAC/B,qCAAsC,IACtC,mCAAoC,IACpC,kCAAmC,IACnC,+BAAgC,IAChC,gCAAiC,IACjC,2BAA4B,IAC5B,mCAAoC,IACpC,8CAA+C,IAC/C,gCAAiC,IACjC,4BAA6B,IAC7B,oDAAqD,IACrD,gDAAiD,IACjD,6CAA8C,IAC9C,8BAA+B,IAC/B,2CAA4C,IAC5C,yBAA0B,IAC1B,sCAAuC,IACvC,2BAA4B,IAC5B,oCAAqC,IACrC,8BAA+B,IAC/B,iCAAkC,IAClC,wBAAyB,IACzB,+BAAgC,IAChC,wBAAyB,IACzB,mCAAoC,IACpC,4BAA6B,IAC7B,sCAAuC,IACvC,2CAA4C,IAC5C,sBAAuB,IACvB,sCAAuC,IACvC,+BAAgC,IAChC,0BAA2B,IAC3B,0BAA2B,IAC3B,8BAA+B,IAC/B,gCAAiC,IACjC,yBAA0B,IAC1B,yBAA0B,IAC1B,mCAAoC,IACpC,+BAAgC,IAChC,8CAA+C,IAC/C,+BAAgC,IAChC,wBAAyB,IACzB,8BAA+B,IAC/B,gCAAiC,IACjC,0BAA2B,IAC3B,6BAA8B,IAC9B,qCAAsC,IACtC,kCAAmC,IACnC,gCAAiC,IACjC,2BAA4B,IAC5B,yBAA0B,IAC1B,+BAAgC,IAChC,mCAAoC,IACpC,oCAAqC,IACrC,mCAAoC,IACpC,gCAAiC,IACjC,gCAAiC,KAIlC,SAASilF,EAAeC,GACvB,IAAI/d,EAAKge,EAAsBD,GAC/B,OAAOjsF,EAAoBkuE,GAE5B,SAASge,EAAsBD,GAC9B,IAAIjsF,EAAoBa,EAAEkG,EAAKklF,GAAM,CACpC,IAAI/hF,EAAI,IAAII,MAAM,uBAAyB2hF,EAAM,KAEjD,MADA/hF,EAAEiiF,KAAO,mBACHjiF,EAEP,OAAOnD,EAAIklF,GAEZD,EAAehkF,KAAO,WACrB,OAAOlH,OAAOkH,KAAKjB,IAEpBilF,EAAehoE,QAAUkoE,EACzB/rF,EAAOD,QAAU8rF,EACjBA,EAAe9d,GAAK,K,iqDCvElBwiB,SAAW,CACT5oF,IAAK,SAACU,EAAQzG,EAAUV,GAKtB,OAJAmH,EAAOzG,GAAYV,EAEF,eAAbU,GAA2B,EAAK2uF,SAASb,UAEtC,GAGTA,OAAQ,WACN,EAAKrM,MAAMmN,WAAa,EAAKD,SAASE,UAAY,EAAKF,SAASG,WAGlED,QAAS,WACP,EAAKF,SAASI,6BACd,EAAKvoF,QAAQq9D,UAAU7gE,IAAI,EAAKgsF,WAChC,EAAKC,gBAAgB,yBAGvBH,QAAS,WACP,EAAKtoF,QAAQq9D,UAAU7gE,IAAI,yBAEP,EAAKwD,QAAQg2E,cAAc,uBACnC75E,iBAAiB,gBAAgB,WAC3C,EAAK6D,QAAQq9D,UAAUqT,OAAO,yBAE9B,EAAK1wE,QAAQq9D,UAAUqT,OAAO,EAAK8X,WACnC,EAAKL,SAASO,0BACV,EAAKC,oBAAoB,EAAK3oF,QAAQ0wE,WACzC,CAAEkY,MAAM,KAWbL,2BAA4B,WACN,EAAK9D,SAAW,EAAKA,OAAOpnB,UAAUv5D,SAAS,8BAEjE,EAAK2gF,OAAOpnB,UAAU7gE,IAAI,4BAC1B,EAAKwD,QAAQuoD,QAAQsgC,uBAAwB,IAIjDH,wBAAyB,WACnB,EAAK1oF,QAAQuoD,QAAQsgC,wBAKvB,EAAK7oF,QAAQuoD,QAAQsgC,uBAAwB,K,sCAKnD,WACE9sF,KAAKk/E,MAAQ,IAAI6N,MAAM,GAAI/sF,KAAKosF,UAE5BpsF,KAAKgtF,2BAA2BhtF,KAAKk+E,S,wBAG3C,WACEl+E,KAAK0+E,U,kBAGP,SAAK79E,GACCA,GAAOA,EAAMkD,iBAEjB/D,KAAKk/E,MAAMmN,YAAa,I,mBAG1B,SAAMxrF,GAAQ,IAAD,EACLosF,EAAU,OAAGpsF,QAAH,IAAGA,GAAH,UAAGA,EAAO2G,qBAAV,aAAG,EAAsB3B,aAAa,QACnC,MAAfonF,GAAqC,KAAfA,GAAmBpsF,EAAMkD,iBAEnD/D,KAAKk/E,MAAMmN,YAAa,I,6BAG1B,SAAgBvsF,GACd,GAAKE,KAAKktF,eAAV,CAEA,IAAMC,EAAc,sBAAkBrtF,GAChCstF,EAAa,IAAInqE,YAAYkqE,EAAgB,CACjDpqE,SAAS,EACT9f,OAAQ,CAAEoqF,aAAcrtF,KAAKiE,WAE/BK,OAAO4e,cAAckqE,M,kBAGvB,WACE,OAAOptF,KAAKiE,QAAQ2Y,QAAQ,gB,mCAvGH8F,G,EACpBpgB,OAAS,CACdgrF,qBAAsBprE,QACtBqrE,cAAerrE,QACf00D,UAAWx0D,Q,EAGNzF,QAAU,CAAC,S,unDCFlB,WACM3c,KAAKwtF,mBAAkBxtF,KAAKytF,mBAAqBlpF,SAAS01E,cAAcj6E,KAAK0tF,kB,qBAGnF,SAAQ7sF,GACNA,EAAMkD,iBACNlD,EAAMgD,kBAEF7D,KAAKytF,oBAEL33B,EAAOj0D,YAAYyV,qCAAqCtX,KAAKytF,mBAAoB,gBAE7DvP,Y,mCAjBCx7D,G,EACpBpgB,OAAS,CACd8I,SAAUgX,S,+oDCAZ,WACE20C,UAAkB42B,oB,wBAGpB,SAAW9sF,GAGT,IAAI+sF,EAAe/sF,EAAMqD,OAAOsoD,QAAQqhC,uBACnCD,IACHA,EAAe/sF,EAAM2G,cAAcglD,QAAQqhC,wBAG7C,IAAMC,EAAe,CACnBzxF,KAAMuxF,EACNG,UAAW/tF,KAAKguF,qBAAqB1wF,KAAK0C,OAEtCiuF,EAAe,IAAIhrE,YAAY,wBAAyB,CAC5DF,SAAS,EACT9f,OAAQ6qF,IAGVxpF,OAAO4e,cAAc+qE,K,kCAGvB,SAAqB5nD,GACnB0wB,UAAkBm3B,oB,8BA1BOxrE,M,iuDC2B3B,WACEozC,EAAOxZ,SAAWt8C,KAAKs8C,SACvBwZ,EAAOzwC,OAASrlB,KAAKqlB,OAErBrlB,KAAKmuF,8BACLnuF,KAAKouF,uBACLpuF,KAAKquF,sBACLruF,KAAKsuF,kBAEDtuF,KAAKuuF,qBAAqBvuF,KAAKwuF,eAG/Bj1B,WAAW,iBAAiBrwD,SAC9BlJ,KAAKyuF,sB,2BAIT,SAAc5tF,GACRA,GAAOA,EAAMkD,iBAEjB/D,KAAK0uF,cAAcliC,QAAQmiC,SAAW3uF,KAAK4uF,iBAC3C5uF,KAAK6uF,qBAAqBvtB,UAAUiqB,OAAO,oBAAqBvrF,KAAK4uF,kBACrErqF,SAASkS,KAAK6qD,UAAUiqB,OAAO,2BAA4BvrF,KAAK4uF,oB,4BAGlE,SAAe/tF,GACTb,KAAK4uF,kBAAkB5uF,KAAK8uF,kB,2BAGlC,SAAcjuF,GAAQ,IAAD,MACmC,OAAlD,UAAAi1D,EAAOi0B,2BAAP,eAA4BgF,sBAEhCluF,EAAMkD,iBAEN,UAAA+xD,EAAOi0B,2BAAP,mBAA4BgF,0BAA5B,SAAgDC,cAAcnuF,M,+BAGhE,WACE,IACE,IAAK,IAAMouF,KAAM1qF,SAAS2qF,YAAa,CACrC,IAAMC,EAAa5qF,SAAS2qF,YAAYD,GACpCG,EAAQ,KAEZ,IACEA,EAAQD,EAAWE,UAAYF,EAAWC,MAC1C,MAAOE,GACPjxE,QAAQgC,IAAIivE,GAEd,GAAKF,EAGL,IAAK,IAAIG,EAAKH,EAAMvwF,OAAS,EAAG0wF,GAAM,EAAGA,IAAM,CAC7C,IAAMC,EAAOJ,EAAMG,GACnB,GAAKC,EAAKC,cAEND,EAAKC,aAAavkF,MAAM,UAAW,CAKrC,IAAMwkF,EAAuBF,EAAKC,aAAargF,MAAM,KAAK9H,QAAO,SAACzJ,GAAD,OAAQA,EAAEqN,MAAM,aAAWvH,KAAK,MAEpE,KAAzB+rF,EACFF,EAAKC,aAAeC,EAGpBP,EAAWQ,WAAWJ,MAK9B,MAAOD,GACPjxE,QAAQgC,IAAIivE,M,0BAIhB,WACE,IAAMxoF,EAAS9G,KAAK4vF,2BAA6B,MAEjDC,MAAMC,KAAK,CACTrmF,KAAM3C,EACNipF,SAAU,SACVt6B,IAAKz1D,KAAKuuF,wB,yCAId,WAGE,IAAMyB,EAAU,IAAIlrE,MAAK,IAAIA,MAAO6R,aAAY,IAAI7R,MAAO4R,cAAgB,IAAIqkB,cAC/Ex2C,SAAS0rF,OAAS,2CAA6CD,EAAU,a,kCAG3E,WACmC,oBAAtBE,mBACTlwF,KAAKiE,QAAQq9D,UAAU7gE,IAAI,8B,iCAI/B,WACE,IAAM0vF,EAA+B,OAAhBnwF,KAAKqlB,OAAkB,QAAUrlB,KAAKqlB,OAE3DywC,EAAOs6B,cAAgBpwF,KAAKqwF,qBAAqBnlD,QACjD4qB,EAAOn2B,WAAa3/B,KAAK2/B,WACzBm2B,EAAOw6B,UAAYtwF,KAAKswF,UACxBx6B,EAAOC,OAASqwB,uBAAa59D,KAC7BstC,EAAOC,OAAO+vB,GAAGyK,WAAWvwF,KAAKs8C,UACjCwZ,EAAOC,OAAO1wC,OAAO8qE,GAEjBnwF,KAAKqwF,qBAAqBhrE,QAC5BywC,EAAOC,OAAO/3B,aAAamyD,EAAcnwF,KAAKqwF,qBAAqBhrE,U,6BAIvE,WACOywC,EAAO06B,UAEZ16B,EAAO06B,SAAS,uBAAuB,SAASC,GAC9C,IAAMC,EAAqB,IAAIztE,YAAY,yBAA0B,CACnEhgB,OAAQ,CAAEypD,MAAO+jC,EAAaE,SAAU,cAE1CrsF,OAAO4e,cAAcwtE,Q,oBAIzB,WACE,OAAO1wF,KAAK4wF,eAAiB,kB,kBAG/B,WACE,IACMvrE,EAASrlB,KAAK6wF,YAAYzhF,MAAM,KAAK,GAE3C,MAAe,OAAXiW,EAAwBrlB,KAAK6wF,YAE1BxrE,GALe,O,qBAQxB,WACE,OAAOrlB,KAAK8wF,gBAAkB,a,gCAGhC,WACE,OAAO9wF,KAAK+wF,2BAA6B,CAAE7lD,QAAS,M,sBAGtD,WACE,MAA0B,aAAnBlrC,KAAKswF,UAA2B,QAAU,U,4BAGnD,WACE,MAA8C,SAAvCtwF,KAAK0uF,cAAcliC,QAAQmiC,a,8BAtKTjsE,K,EACpBpgB,OAAS,CACd0uF,eAAgB5uE,OAChB6uE,qBAAsB7uE,OACtBk6B,SAAUl6B,OACViD,OAAQjD,OACRkuE,UAAWluE,OACXiuE,qBAAsB7zF,Q,EAGjB8e,QAAU,CACf,UACA,mB,iCC3BJ,WAKA,SAAWwwC,EAAMpU,GACf,aAGkC77C,EAAOD,QACvCC,EAAOD,QAAU87C,EAAQ,EAAQ,KAEjC,EAAO,CAAC,WAAkB,2BAAP,EAAF,GAAS,gCAP9B,CAWG13C,GAAM,SAAU+1D,GACjB,kBAEuB5wD,IAAnB4wD,EAAO/e,SAAyB+e,EAAO90C,UACzC80C,EAASA,EAAO90C,SAQlB,IAMIiwE,EALAC,EAAQ,GACRC,EAAQ,GACRC,EAAY,GACZh0D,EAAQ,GACRi0D,EAAU,GAGTv7B,GAAoC,kBAAnBA,EAAO/e,SAC3Bu6C,EAAS,gGAGX,IAAIC,EAAgBz7B,EAAO/e,QAAQ5nC,MAAM,KACrCqiF,GAASD,EAAc,GACvBE,GAASF,EAAc,GAU3B,SAASG,EAAcC,GACrB,OAAIA,EAAW,GACNA,EAAW,GACTA,EAAW,GACbA,EAAW,GAGbA,EAAW,GAGpB,SAASC,EAAatvE,GACpB,IAAIzmB,EAAI,EACJ2H,EAAQ8e,EAAOnT,MAAM,KACrB0iF,EAAQruF,EAAM,GACdsuF,EAAatuF,EAAM,IAAM,GACzBk5E,EAAa,EAEbtpC,EAAM,EACNlM,EAAO,EAQX,IAN6B,KAAzB5kB,EAAOqpE,WAAW,KACpB9vF,EAAI,EACJqrC,GAAQ,GAIFrrC,EAAIg2F,EAAMjzF,OAAQ/C,IAExBu3C,EAAM,GAAKA,EADLs+C,EAAcG,EAAMlG,WAAW9vF,IAKvC,IAAKA,EAAI,EAAGA,EAAIi2F,EAAWlzF,OAAQ/C,IACjC6gF,GAA0B,GAE1BtpC,GADMs+C,EAAcI,EAAWnG,WAAW9vF,IAC7B6gF,EAGf,OAAOtpC,EAAMlM,EAGf,SAAS6qD,EAAW9yE,GAClB,IAAK,IAAIpjB,EAAI,EAAGA,EAAIojB,EAAMrgB,OAAQ/C,IAChCojB,EAAMpjB,GAAK+1F,EAAa3yE,EAAMpjB,IAYlC,SAASm2F,EAAWvoE,EAAQwoE,GAC1B,IACIp2F,EADAu3C,EAAM,GAGV,IAAKv3C,EAAI,EAAGA,EAAIo2F,EAAQrzF,OAAQ/C,IAC9Bu3C,EAAIv3C,GAAK4tB,EAAOwoE,EAAQp2F,IAG1B,OAAOu3C,EAGT,SAAS8+C,EAAO5vE,GACd,IAAIrP,EAAOqP,EAAOnT,MAAM,KACpBgjF,EAAUl/E,EAAK,GAAG9D,MAAM,KACxB8iF,EAAUh/E,EAAK,GAAG9D,MAAM,IACxBijF,EAASn/E,EAAK,GAAG9D,MAAM,KAK3B,OAJA4iF,EAAWI,GACXJ,EAAWE,GACXF,EAAWK,GA1Bb,SAAoBnzE,EAAOrgB,GACzB,IAAK,IAAI/C,EAAI,EAAGA,EAAI+C,EAAQ/C,IAC1BojB,EAAMpjB,GAAK6S,KAAK83B,OAAOvnB,EAAMpjB,EAAI,IAAM,GAAgB,IAAXojB,EAAMpjB,IAGpDojB,EAAMrgB,EAAS,GAAK8/D,IAsBpB2zB,CAAWD,EAAQH,EAAQrzF,QACpB,CACLxC,KAAM6W,EAAK,GACXq/E,MAAON,EAAW/+E,EAAK,GAAG9D,MAAM,KAAM8iF,GACtCE,QAASH,EAAWG,EAASF,GAC7BG,OAAQA,EACRG,WAAsB,EAAVt/E,EAAK,IAQrB,SAASu/E,EAAKC,GACRA,GACF1yF,KAAK2yF,KAAKR,EAAOO,IAwErB,SAASE,EAAQC,EAAcC,GAC7B9yF,KAAK3D,KAAOw2F,EACZ7yF,KAAKmxF,MAAQ2B,EAOf,SAASC,EAASC,GAChB,IAAIC,EAAaD,EAAGE,eAChBp1D,EAAOm1D,EAAW/nF,MAAM,gBAcf,SARX4yB,EAJEA,GAAQA,EAAK,IAGfA,EAAOA,EAAK,GAAG5yB,MAAM,WACP4yB,EAAKn6B,KAAK,SAAMwB,GAI9B24B,EAAOm1D,EAAW/nF,MAAM,gBACV4yB,EAAK,QAAK34B,KAIxB24B,OAAO34B,GAGTnF,KAAKgzF,IAAMA,EACXhzF,KAAK89B,KAAOA,EACZ99B,KAAKgnC,OAASgsD,EAAGnrD,oBAGnB,SAASsrD,EAAUvmD,GACjB5sC,KAAK4sC,KAAOA,EACZ5sC,KAAKozF,YAAc,EACnBpzF,KAAKqzF,UAAY,EAWnB,SAASC,EAAWC,EAAKC,GAGvB,IAFA,IAAIC,EAAKllE,EAEFA,EAAyC,MAAhCilE,EAAKR,GAAKO,EAAIP,IAAM,KAAO,KACzCS,EAAM,IAAIV,EAAS,IAAIjuE,KAAKyuE,EAAIP,GAAKzkE,KAE7ByY,SAAWusD,EAAIvsD,OACrBusD,EAAME,EAEND,EAAOC,EAIX,OAAOF,EA+BT,SAASG,EAAenuF,EAAGkU,GACzB,OAAIlU,EAAE6tF,cAAgB35E,EAAE25E,YACf7tF,EAAE6tF,YAAc35E,EAAE25E,YAGvB7tF,EAAE8tF,YAAc55E,EAAE45E,UACb9tF,EAAE8tF,UAAY55E,EAAE45E,UAGrB9tF,EAAEqnC,KAAK4lD,aAAe/4E,EAAEmzB,KAAK4lD,WACxB/4E,EAAEmzB,KAAK4lD,WAAajtF,EAAEqnC,KAAK4lD,WAG7B/4E,EAAEmzB,KAAKvwC,KAAKs3F,cAAcpuF,EAAEqnC,KAAKvwC,MAG1C,SAASu3F,EAAav3F,EAAM+1F,GAC1B,IAAIt2F,EAAGkrC,EAGP,IAFAgrD,EAAWI,GAENt2F,EAAI,EAAGA,EAAIs2F,EAAQvzF,OAAQ/C,IAC9BkrC,EAASorD,EAAQt2F,GACjBw1F,EAAQtqD,GAAUsqD,EAAQtqD,IAAW,GACrCsqD,EAAQtqD,GAAQ3qC,IAAQ,EAI5B,SAASw3F,EAAsBzB,GAC7B,IAGIt2F,EACAwhC,EACAw2D,EALAC,EAAgB3B,EAAQvzF,OACxBm1F,EAAkB,GAClB3gD,EAAM,GAKV,IAAKv3C,EAAI,EAAGA,EAAIi4F,EAAej4F,IAG7B,IAAKwhC,KAFLw2D,EAAgBxC,EAAQc,EAAQt2F,GAAGkrC,SAAW,GAGxC8sD,EAAcn2F,eAAe2/B,KAC/B02D,EAAgB12D,IAAK,GAK3B,IAAKxhC,KAAKk4F,EACJA,EAAgBr2F,eAAe7B,IACjCu3C,EAAIz0C,KAAKy+B,EAAMvhC,IAInB,OAAOu3C,EAGT,SAAS4gD,IAEP,IACE,IAAIC,EAAWnL,KAAKoL,iBAAiBC,kBAAkBC,SAEvD,GAAIH,GAAYA,EAASr1F,OAAS,EAAG,CACnC,IAAIxC,EAAOghC,EAAMi3D,EAAcJ,IAE/B,GAAI73F,EACF,OAAOA,EAGTk1F,EAAS,yBAA2B2C,EAAW,2DAEjD,MAAOtuF,IAGT,IAII2uF,EACAz4F,EACAwhC,EANA80D,EAnGN,WACE,IAGIhwB,EACA1jE,EACA5C,EALA04F,GAAY,IAAI1vE,MAAO4R,cAAgB,EACvCi5C,EAAO,IAAIojB,EAAS,IAAIjuE,KAAK0vE,EAAW,EAAG,IAC3CpC,EAAU,CAACziB,GAKf,IAAK7zE,EAAI,EAAGA,EAAI,GAAIA,KAClB4C,EAAO,IAAIq0F,EAAS,IAAIjuE,KAAK0vE,EAAW14F,EAAG,KAElCkrC,SAAW2oC,EAAK3oC,SACvBo7B,EAASkxB,EAAW3jB,EAAMjxE,GAC1B0zF,EAAQxzF,KAAKwjE,GACbgwB,EAAQxzF,KAAK,IAAIm0F,EAAS,IAAIjuE,KAAKs9C,EAAO4wB,GAAK,QAGjDrjB,EAAOjxE,EAGT,IAAK5C,EAAI,EAAGA,EAAI,EAAGA,IACjBs2F,EAAQxzF,KAAK,IAAIm0F,EAAS,IAAIjuE,KAAK0vE,EAAY14F,EAAG,EAAG,KACrDs2F,EAAQxzF,KAAK,IAAIm0F,EAAS,IAAIjuE,KAAK0vE,EAAY14F,EAAG,EAAG,KAGvD,OAAOs2F,EA0EOqC,GACVV,EAAgB3B,EAAQvzF,OACxByyF,EAAUuC,EAAsBzB,GAChCsC,EAAa,GAKjB,IAAK54F,EAAI,EAAGA,EAAIw1F,EAAQzyF,OAAQ/C,IAAK,CAGnC,IAFAy4F,EAAY,IAAIpB,EAAUwB,EAAQrD,EAAQx1F,IAAKi4F,GAE1Cz2D,EAAI,EAAGA,EAAIy2D,EAAez2D,IAC7Bi3D,EAAUK,cAAcxC,EAAQ90D,IAGlCo3D,EAAW91F,KAAK21F,GAIlB,OADAG,EAAWpzF,KAAKoyF,GACTgB,EAAW71F,OAAS,EAAI61F,EAAW,GAAG9nD,KAAKvwC,UAAO8I,EAe3D,SAASmvF,EAAcj4F,GACrB,OAAQA,GAAQ,IAAI4I,cAAcR,QAAQ,MAAO,KAGnD,SAASowF,EAAQC,GACf,IAAIh5F,EAAGO,EAAM+S,EAAO2lF,EAMpB,IAJsB,kBAAXD,IACTA,EAAS,CAACA,IAGPh5F,EAAI,EAAGA,EAAIg5F,EAAOj2F,OAAQ/C,IAG7Bi5F,EAAaT,EADbj4F,GADA+S,EAAQ0lF,EAAOh5F,GAAGsT,MAAM,MACX,IAEb+hF,EAAM4D,GAAcD,EAAOh5F,GAC3BuhC,EAAM03D,GAAc14F,EACpBu3F,EAAamB,EAAY3lF,EAAM,GAAGA,MAAM,MAI5C,SAASulF,EAAQt4F,EAAM24F,GACrB34F,EAAOi4F,EAAcj4F,GACrB,IACI44F,EADAroD,EAAOukD,EAAM90F,GAGjB,OAAIuwC,aAAgB6lD,EACX7lD,EAGW,kBAATA,GACTA,EAAO,IAAI6lD,EAAK7lD,GAChBukD,EAAM90F,GAAQuwC,EACPA,GAILwkD,EAAM/0F,IAAS24F,IAAWL,IAAYM,EAAON,EAAQvD,EAAM/0F,GAAOs4F,MACpE/nD,EAAOukD,EAAM90F,GAAQ,IAAIo2F,GAEpBE,KAAKsC,GAEVroD,EAAKvwC,KAAOghC,EAAMhhC,GACXuwC,GAGF,KAoBT,SAASsoD,EAAQ1mE,GACf,IAAI1yB,EAAG84C,EAAOugD,EAASC,EAMvB,IAJuB,kBAAZ5mE,IACTA,EAAU,CAACA,IAGR1yB,EAAI,EAAGA,EAAI0yB,EAAQ3vB,OAAQ/C,IAE9Bq5F,EAAUb,GADV1/C,EAAQpmB,EAAQ1yB,GAAGsT,MAAM,MACK,IAC9BgmF,EAAUd,EAAc1/C,EAAM,IAC9Bw8C,EAAM+D,GAAWC,EACjB/3D,EAAM83D,GAAWvgD,EAAM,GACvBw8C,EAAMgE,GAAWD,EACjB93D,EAAM+3D,GAAWxgD,EAAM,GAuD3B,SAASygD,EAAYn5F,GACnB,IAAIo5F,EAA2B,MAATp5F,EAAEgsB,IAAuB,MAAThsB,EAAEgsB,GACxC,SAAUhsB,EAAE6X,SAAiB5O,IAAXjJ,EAAEksB,MAAuBktE,GAG7C,SAAS/D,EAASvuF,GACO,qBAAZqb,SAAoD,oBAAlBA,QAAQtb,OACnDsb,QAAQtb,MAAMC,GAQlB,SAAS8iF,EAAGngF,GACV,IAAIsS,EAAOja,MAAMN,UAAUyB,MAAMlD,KAAKsd,UAAW,GAAI,GACjDld,EAAOkd,UAAUA,UAAU1a,OAAS,GACpC+tC,EAAO+nD,EAAQt4F,GACfg3C,EAAM0iB,EAAOvwC,IAAInB,MAAM,KAAMpM,GAOjC,OALI20B,IAASmpB,EAAOptC,SAAShjB,IAAU0vF,EAAYhiD,IACjDA,EAAI5yC,IAAImsC,EAAKzmC,MAAMktC,GAAM,WAG3BA,EAAIyyC,GAAGzpF,GACAg3C,GAhhBLo+C,EAAQ,GAAe,IAAVA,GAAeC,EAAQ,IACtCH,EAAS,wEAA0Ex7B,EAAO/e,QAAU,sBAqGtGy7C,EAAK/0F,UAAY,CACfi1F,KAAM,SAAU4C,GACdv1F,KAAK3D,KAAOk5F,EAASl5F,KACrB2D,KAAKuyF,MAAQgD,EAAShD,MACtBvyF,KAAKqyF,OAASkD,EAASlD,OACvBryF,KAAKoyF,QAAUmD,EAASnD,QACxBpyF,KAAKwyF,WAAa+C,EAAS/C,YAE7BgD,OAAQ,SAAUC,GAChB,IAEI35F,EAFAoI,GAAUuxF,EACVpD,EAASryF,KAAKqyF,OAGlB,IAAKv2F,EAAI,EAAGA,EAAIu2F,EAAOxzF,OAAQ/C,IAC7B,GAAIoI,EAASmuF,EAAOv2F,GAClB,OAAOA,GAIbu1F,UAAW,WACT,IAAIqE,EAAY11F,KAAK3D,KACrB,OAAOG,OAAOkH,KAAK2tF,GAAW/pF,QAAO,SAAUquF,GAC7C,OAA6D,IAAtDtE,EAAUsE,GAAcxE,MAAMp+D,QAAQ2iE,OAGjDvvF,MAAO,SAAUsvF,GACf,IAIIzuD,EACA4uD,EACAC,EACA/5F,EAPAoI,GAAUuxF,EACVrD,EAAUpyF,KAAKoyF,QACfC,EAASryF,KAAKqyF,OACdzjF,EAAMyjF,EAAOxzF,OAAS,EAM1B,IAAK/C,EAAI,EAAGA,EAAI8S,EAAK9S,IAWnB,GAVAkrC,EAASorD,EAAQt2F,GACjB85F,EAAaxD,EAAQt2F,EAAI,GACzB+5F,EAAazD,EAAQt2F,EAAIA,EAAI,EAAIA,GAE7BkrC,EAAS4uD,GAAc9P,EAAGgQ,qBAC5B9uD,EAAS4uD,EACA5uD,EAAS6uD,GAAc/P,EAAGiQ,qBACnC/uD,EAAS6uD,GAGP3xF,EAASmuF,EAAOv2F,GAAc,IAATkrC,EACvB,OAAOorD,EAAQt2F,GAInB,OAAOs2F,EAAQxjF,IAEjBkvB,KAAM,SAAUtT,GACd,OAAOxqB,KAAKuyF,MAAMvyF,KAAKw1F,OAAOhrE,KAEhCwc,OAAQ,SAAUxc,GAEhB,OADA+mE,EAAS,8DACFvxF,KAAKoyF,QAAQpyF,KAAKw1F,OAAOhrE,KAElC0c,UAAW,SAAU1c,GACnB,OAAOxqB,KAAKoyF,QAAQpyF,KAAKw1F,OAAOhrE,MA+CpC2oE,EAAUz1F,UAAUk3F,cAAgB,SAAUoB,GAC5Ch2F,KAAKozF,aAAezkF,KAAKqc,IAAIhrB,KAAK4sC,KAAK1F,UAAU8uD,EAAShD,IAAMgD,EAAShvD,QAErEhnC,KAAK4sC,KAAK9O,KAAKk4D,EAAShD,IAAIvuF,QAAQ,UAAW,MAAQuxF,EAASl4D,MAClE99B,KAAKqzF,aA6TTvN,EAAG9uC,QAniBW,SAoiBd8uC,EAAGmQ,YAAc,GACjBnQ,EAAGoQ,OAAS/E,EACZrL,EAAGqQ,OAAS/E,EACZtL,EAAGsQ,OAAS/4D,EACZyoD,EAAGuQ,WAAahF,EAChBvL,EAAGrlF,IAAMo0F,EACT/O,EAAGmP,KAAOC,EACVpP,EAAGjmE,KArDH,SAAkB3M,GAChB2hF,EAAQ3hF,EAAKi+E,OACb+D,EAAQhiF,EAAKk+E,OArCf,SAAsBl+E,GACpB,IAAIpX,EAAG65F,EAAcW,EAAelnF,EACpC,GAAK8D,GAASA,EAAKrU,OAEnB,IAAK/C,EAAI,EAAGA,EAAIoX,EAAKrU,OAAQ/C,IAE3B65F,GADAvmF,EAAQ8D,EAAKpX,GAAGsT,MAAM,MACD,GAAGxK,cACxB0xF,EAAgBlnF,EAAM,GAAGA,MAAM,KAC/BiiF,EAAUsE,GAAgB,IAAI/C,EAAQ+C,EAAcW,GA8BtDC,CAAarjF,EAAKm+E,WAClBvL,EAAGmQ,YAAc/iF,EAAK8jC,SAkDxB8uC,EAAGl5C,KAAO+nD,EACV7O,EAAG0Q,WAhDH,SAASA,EAAWn6F,GAMlB,OALKm6F,EAAWC,eACdD,EAAWC,cAAe,EAC1BlF,EAAS,yBAA2Bl1F,EAAO,uDAAyDA,EAAO,SAGpGs4F,EAAQt4F,IA4CnBypF,EAAG4Q,MA5LH,SAAeC,GAKb,OAJKzF,IAAeyF,IAClBzF,EAAc+C,KAGT/C,GAwLTpL,EAAGzoD,MAhIH,WACE,IAAIvhC,EACAu3C,EAAM,GAEV,IAAKv3C,KAAKuhC,EACJA,EAAM1/B,eAAe7B,KAAOq1F,EAAMr1F,IAAMq1F,EAAMC,EAAMt1F,MAAQuhC,EAAMvhC,IACpEu3C,EAAIz0C,KAAKy+B,EAAMvhC,IAInB,OAAOu3C,EAAI/xC,QAuHbwkF,EAAG2M,KAAOA,EACV3M,EAAGqM,OAASA,EACZrM,EAAG+L,aAAeA,EAClB/L,EAAGuP,YAAcA,EACjBvP,EAAGiQ,oBAAqB,EACxBjQ,EAAGgQ,sBAAuB,EAC1BhQ,EAAGuL,UA1HH,WACE,OAAO70F,OAAOkH,KAAK2tF,IA0HrBvL,EAAG8Q,gBApFH,SAAyBC,EAASC,GALlC,IAAoBz6F,EAOlB,GANAA,GADkBA,EAMGw6F,GALTjyF,gBAKZiyF,EAJOxF,EAAUh1F,IAAS,MAKZ,OAAO,KACrB,IAAI80F,EAAQ0F,EAAQ1F,MAAM7vF,OAE1B,OAAIw1F,EACK3F,EAAM1uF,KAAI,SAAUizF,GAEzB,MAAO,CACLr5F,KAAMq5F,EACN1uD,OAHS2tD,EAAQe,GAGJxuD,UAAU,IAAIpiB,UAK1BqsE,GA0ET,IAyEwB4F,EAzEpBhyE,EAAKgxC,EAAOhxC,GAwDhB,SAASiyE,EAASD,GAChB,OAAO,WACL,OAAI/2F,KAAKi3F,GACAj3F,KAAKi3F,GAAGn5D,KAAK99B,MAGf+2F,EAAI96F,KAAK+D,OAIpB,SAASk3F,EAAcH,GACrB,OAAO,WAEL,OADA/2F,KAAKi3F,GAAK,KACHF,EAAI1yE,MAAMrkB,KAAMuZ,YApE3Bw8C,EAAO+vB,GAAKA,EACZ/vB,EAAOohC,YAAc,KAErBphC,EAAOrtC,aAAe,SAAU8B,EAAK2F,GACnC,IACI6W,EADA4F,EAAOmpB,EAAOohC,YAYlB,QATehyF,IAAXqlB,EAAIysE,KACFrqD,GAAQyoD,EAAY7qE,KAASA,EAAInC,SACnCmC,EAAI/rB,GAAKs3D,EAAOvwC,IAAIgF,EAAIzW,IAAItV,GAC5B+rB,EAAIhF,MAAM/kB,IAAImsC,EAAKzmC,MAAMqkB,GAAM,YAGjCA,EAAIysE,GAAKrqD,GAGPpiB,EAAIysE,GAON,GANAjwD,EAASxc,EAAIysE,GAAG/vD,UAAU1c,GAEtB7b,KAAKqc,IAAIgc,GAAU,KACrBA,GAAkB,SAGE7hC,IAAlBqlB,EAAI0c,UAAyB,CAC/B,IAAIqR,EAAI/tB,EAAIysE,GACZzsE,EAAI0c,WAAWF,EAAQ7W,GACvB3F,EAAIysE,GAAK1+C,OAET/tB,EAAIoiB,KAAK5F,EAAQ7W,IAKvBpL,EAAG+gE,GAAK,SAAUzpF,EAAM8zB,GACtB,GAAI9zB,EAAM,CACR,GAAoB,kBAATA,EACT,MAAM,IAAI2J,MAAM,wCAA0C3J,EAAO,YAAcA,EAAO,KAWxF,OARA2D,KAAKi3F,GAAKtC,EAAQt4F,GAEd2D,KAAKi3F,GACPlhC,EAAOrtC,aAAa1oB,KAAMmwB,GAE1BohE,EAAS,mCAAqCl1F,EAAO,4DAGhD2D,KAGT,GAAIA,KAAKi3F,GACP,OAAOj3F,KAAKi3F,GAAG56F,MA4BnB0oB,EAAG8tB,SAAWmkD,EAASjyE,EAAG8tB,UAC1B9tB,EAAG6tB,SAAWokD,EAASjyE,EAAG6tB,UAC1B7tB,EAAGS,IAAM0xE,EAAcnyE,EAAGS,KAC1BT,EAAG4iB,MAAQuvD,EAAcnyE,EAAG4iB,OAC5B5iB,EAAGmiB,WAXqB6vD,EAWMhyE,EAAGmiB,UAVxB,WAEL,OADI3tB,UAAU1a,OAAS,IAAGmB,KAAKi3F,GAAK,MAC7BF,EAAI1yE,MAAMrkB,KAAMuZ,aAU3Bw8C,EAAO+vB,GAAGyK,WAAa,SAAUl0F,GAM/B,OALIo1F,EAAQ,GAAe,IAAVA,GAAeC,EAAQ,IACtCH,EAAS,qFAAuFx7B,EAAO/e,QAAU,KAGnH+e,EAAOohC,YAAc96F,EAAOs4F,EAAQt4F,GAAQ,KACrC05D,GAIT,IAAIruC,EAAmBquC,EAAOruC,iBAY9B,MAVyD,mBAArDlrB,OAAOkB,UAAUwB,SAASjD,KAAKyrB,IAEjCA,EAAiB9oB,KAAK,MACtB8oB,EAAiB9oB,KAAK,OACb8oB,IAETA,EAAiBuvE,GAAK,MAIjBlhC,M,cCrsBTl6D,EAAOD,QAAU,SAAUC,GAsBzB,OArBKA,EAAOu7F,kBACVv7F,EAAOigB,UAAY,aAEnBjgB,EAAOw7F,MAAQ,GAEVx7F,EAAO81E,WAAU91E,EAAO81E,SAAW,IACxCn1E,OAAOC,eAAeZ,EAAQ,SAAU,CACtCa,YAAY,EACZC,IAAK,WACH,OAAOd,EAAOE,KAGlBS,OAAOC,eAAeZ,EAAQ,KAAM,CAClCa,YAAY,EACZC,IAAK,WACH,OAAOd,EAAOC,KAGlBD,EAAOu7F,gBAAkB,GAGpBv7F,I,gBCtBT,IAAI4G,EAAM,CACT,OAAQ,GACR,UAAW,GACX,OAAQ,GACR,UAAW,GACX,aAAc,GACd,UAAW,GACX,aAAc,GACd,UAAW,GACX,aAAc,GACd,UAAW,GACX,aAAc,GACd,UAAW,GACX,aAAc,GACd,UAAW,GACX,aAAc,GACd,UAAW,GACX,OAAQ,GACR,UAAW,GACX,OAAQ,GACR,UAAW,GACX,OAAQ,GACR,UAAW,GACX,OAAQ,GACR,UAAW,GACX,OAAQ,GACR,UAAW,GACX,aAAc,GACd,UAAW,GACX,OAAQ,GACR,UAAW,GACX,OAAQ,GACR,UAAW,GACX,OAAQ,GACR,UAAW,GACX,OAAQ,GACR,UAAW,GACX,OAAQ,GACR,UAAW,GACX,OAAQ,GACR,UAAW,GACX,OAAQ,GACR,UAAW,GACX,OAAQ,GACR,UAAW,GACX,OAAQ,GACR,UAAW,GACX,aAAc,GACd,UAAW,GACX,aAAc,GACd,UAAW,GACX,OAAQ,GACR,UAAW,GACX,OAAQ,GACR,UAAW,GACX,UAAW,GACX,aAAc,GACd,UAAW,GACX,aAAc,GACd,UAAW,GACX,aAAc,GACd,UAAW,GACX,aAAc,GACd,UAAW,GACX,aAAc,GACd,UAAW,GACX,aAAc,GACd,UAAW,GACX,aAAc,GACd,UAAW,GACX,aAAc,GACd,OAAQ,GACR,UAAW,GACX,OAAQ,GACR,UAAW,GACX,aAAc,GACd,UAAW,GACX,aAAc,GACd,UAAW,GACX,aAAc,GACd,UAAW,GACX,OAAQ,GACR,UAAW,GACX,OAAQ,GACR,UAAW,GACX,OAAQ,GACR,UAAW,GACX,OAAQ,GACR,UAAW,GACX,QAAS,GACT,WAAY,GACZ,OAAQ,IACR,UAAW,IACX,OAAQ,GACR,UAAW,IACX,aAAc,IACd,UAAW,IACX,aAAc,IACd,UAAW,GACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,aAAc,IACd,gBAAiB,IACjB,aAAc,IACd,gBAAiB,IACjB,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,UAAW,IACX,aAAc,IACd,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,GACR,UAAW,IACX,aAAc,IACd,UAAW,GACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,aAAc,IACd,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,GACR,UAAW,IACX,aAAc,IACd,UAAW,GACX,OAAQ,IACR,UAAW,IACX,WAAY,IACZ,cAAe,IACf,UAAW,IACX,aAAc,IACd,OAAQ,GACR,UAAW,GACX,OAAQ,GACR,UAAW,IACX,aAAc,IACd,UAAW,GACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,YAAa,IACb,eAAgB,IAChB,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,QAAS,IACT,WAAY,IACZ,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,UAAW,IACX,aAAc,IACd,QAAS,IACT,WAAY,IACZ,OAAQ,GACR,UAAW,GACX,QAAS,IACT,WAAY,IACZ,QAAS,IACT,aAAc,IACd,gBAAiB,IACjB,WAAY,IACZ,UAAW,IACX,aAAc,IACd,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,YAAa,IACb,eAAgB,IAChB,UAAW,IACX,OAAQ,IACR,UAAW,IACX,aAAc,IACd,gBAAiB,IACjB,OAAQ,IACR,UAAW,IACX,UAAW,IACX,aAAc,IACd,UAAW,IACX,aAAc,IACd,UAAW,IACX,aAAc,IACd,UAAW,IACX,aAAc,KAIf,SAASilF,EAAeC,GACvB,IAAI/d,EAAKge,EAAsBD,GAC/B,OAAOjsF,EAAoBkuE,GAE5B,SAASge,EAAsBD,GAC9B,IAAIjsF,EAAoBa,EAAEkG,EAAKklF,GAAM,CACpC,IAAI/hF,EAAI,IAAII,MAAM,uBAAyB2hF,EAAM,KAEjD,MADA/hF,EAAEiiF,KAAO,mBACHjiF,EAEP,OAAOnD,EAAIklF,GAEZD,EAAehkF,KAAO,WACrB,OAAOlH,OAAOkH,KAAKjB,IAEpBilF,EAAehoE,QAAUkoE,EACzB/rF,EAAOD,QAAU8rF,EACjBA,EAAe9d,GAAK,K,gosvBClSpB,IAAM0tB,EAAW3W,EAAQ,K,sWAgBvB,WAKE3gF,KAAKu3F,qBAAuBD,EAASt3F,KAAKu3F,qBAAsB,KAAKj6F,KAAK0C,Q,qBAG5E,WAAW,IAAD,OACRA,KAAKw3F,uBAAyBx3F,KAAKw3F,wBAtBH,EAuBhCx3F,KAAKy3F,YAAc,GACfz3F,KAAK03F,aACPlsF,MAAMxL,KAAK23F,UACRC,MAAK,SAAAC,GAEJ,IAAKA,EAASC,GACZ,MAAM,IAAI9xF,MAAM6xF,GAElB,OAAOA,EAASE,UAEjBH,MAAK,SAAC1kF,GACL,EAAKukF,YAAcvkF,EAEnB,EAAK8kF,sBAAwB9kF,EAAKzQ,KAAI,SAAA1F,GAAK,OAAI+4D,EAAO6D,QAAQs+B,iBAAiBl7F,MAG/E,IAAK,IAAIjB,EAAI,EAAGA,EAAI,EAAK07F,wBAA0B17F,EAAI,EAAK27F,YAAY54F,OAAQ/C,IAAK,CACnF,IAAMo8F,EAAa,EAAKC,qBAAqBlpF,QAAQ25E,kBAAkBwP,WAAU,GACjF,EAAKC,cAAcz2B,YAAYs2B,GAG7B3zF,SAAS+zF,eAAiB,EAAKC,aACjC,EAAKhB,qBAAqB,CAAErzF,OAAQ,EAAKq0F,iBApB/C,OAsBW,SAACx1F,GACR,EAAKy1F,wBACLn6E,QAAQgC,IAAItd,GAGRwB,SAAS+zF,eAAiB,EAAKC,aAAe,EAAKE,iBACrD,EAAKlB,qBAAqB,CAAErzF,OAAQ,EAAKq0F,mB,4BAMnD,SAAe13F,GAAQ,IAAD,OAChBA,GAASA,EAAMqD,QAAUlE,KAAKu4F,cAKlCv4F,KAAK04F,eAAev2F,SAAQ,SAACk9C,GAC3BA,EAAOiiB,UAAUqT,OAAO,EAAKgkB,wBAC7Bt5C,EAAOiiB,UAAU7gE,IAAI,EAAKm4F,sBAE5B54F,KAAK64F,eAAev3B,UAAUqT,OAAO30E,KAAK84F,yB,kCAG5C,SAAqBj4F,GACnB,IAAMk4F,EAAyC,IAA5B/4F,KAAKy3F,YAAY54F,OAChC8vF,EAAU,EACR1wC,EAAO6X,EAAO6D,QAAQs+B,iBAAiBp3F,EAAMqD,OAAOnH,OACpDi8F,EAAah5F,KAAKg4F,sBAAsB/mF,SAASgtC,GAEvD,GAAI86C,EAAY,CAAC,IAAD,MACO/4F,KAAKi5F,eADZ,IACd,2BAAyC,CAAC,IAA/B55C,EAA8B,QACvCA,EAAOiiB,UAAU7gE,IAAIT,KAAK44F,mBAC1Bv5C,EAAOiiB,UAAUqT,OAAO30E,KAAK24F,yBAHjB,8BAMd,IAAIO,GAAc,EAelB,GAbKF,IAGDE,EADEl5F,KAAKm5F,sCAAwCh3E,OAAO8E,MAAMjnB,KAAKo5F,kCACnDn7C,EAAKp/C,QAAUmB,KAAKo5F,iCAKLp5F,KAAKy3F,YAAY54F,OA/FnB,IA+F4Do/C,EAAKp/C,OAAS,GAKrGq6F,EAEF,IADA,IAAIG,EAAc,EACTv9F,EAAI,EAAGA,EAAIkE,KAAKy3F,YAAY54F,UAC/Bw6F,GAAer5F,KAAKi5F,cAAcp6F,QADK/C,IAI3C,GADuBkE,KAAKg4F,sBAAsBl8F,GAC9BmV,SAASgtC,GAA7B,CAEA,IAAMoB,EAASr/C,KAAKi5F,cAAcI,GACd,IAAhBA,GACFh6C,EAAOiiB,UAAU7gE,IAAIT,KAAK24F,wBAG5B,IAAM57F,EAAQiD,KAAKy3F,YAAY37F,GAC/BujD,EAAOyiB,UAAY/kE,EACnBsiD,EAAOiiB,UAAUqT,OAAO30E,KAAK44F,mBAC7BjK,GAAW,EACX0K,GAAe,GAKL,IAAZ1K,EACF3uF,KAAKq4F,cAAc/2B,UAAU7gE,IAAIT,KAAKs5F,oBAEtCt5F,KAAKq4F,cAAc/2B,UAAUqT,OAAO30E,KAAKs5F,oBAI3B,IAAZ3K,GAAmB3uF,KAAKy4F,kBAAmBO,GAG7Ch5F,KAAK64F,eAAev3B,UAAU7gE,IAAIT,KAAK84F,sBACvC94F,KAAKu5F,wBAHLv5F,KAAK64F,eAAev3B,UAAUqT,OAAO30E,KAAK84F,wB,6BAO9C,SAAgBj4F,GAAQ,IAAD,OACrB,EAAqCi1D,EAAO6D,QAAQ6/B,SAA5C9P,EAAR,EAAQA,MAAOC,EAAf,EAAeA,QAASC,EAAxB,EAAwBA,SAExB,GAAI/oF,EAAM44F,UAAY/P,GAAS7oF,EAAM44F,UAAY9P,GAAW9oF,EAAM44F,UAAY7P,EAA9E,CAIA,IAAM8O,EAAiB14F,KAAK04F,eAG5B,GAA8B,IAA1BA,EAAe75F,OAAnB,CAWA,IAAM66F,EAAqBhB,EAAe5pF,WAAU,SAACuwC,GACnD,OAAOA,EAAOiiB,UAAUv5D,SAAS,EAAK4wF,2BAGxC93F,EAAMkD,iBAEN,IAAI41F,EAAkBD,EACtB,OAAQ74F,EAAM44F,SACZ,KAAK/P,EACH,GAA0B,GAAtBgQ,EACF,OAEFC,EAAkBD,EAAqB,EACvC,MACF,KAAK/P,EACH,GAAI+P,GAAsBhB,EAAe75F,OAAS,EAChD,OAEF86F,EAAkBD,EAAqB,EACvC,MACF,KAAK9P,EAEH,YADA8O,EAAegB,GAAoBE,QAIvClB,EAAegB,GAAoBp4B,UAAUqT,OAAO30E,KAAK24F,wBACzD34F,KAAK65F,mBAAmBF,EAAiBjB,QApCnC73F,EAAM44F,SAAW7P,IAGnB/oF,EAAMkD,iBAEN/D,KAAK85F,WAAWj5F,EAAMqD,OAAOuB,U,uBAkCnC,SAAU5E,GAAQ,IAAD,OACT63F,EAAiB14F,KAAK04F,eAENA,EAAe5hF,MAAK,SAACuoC,GAAD,OAAYA,EAAOiiB,UAAUv5D,SAAS,EAAK4wF,2BACvEr3B,UAAUqT,OAAO30E,KAAK24F,wBAEpC34F,KAAK65F,mBAAmBnB,EAAe3lE,QAAQlyB,EAAMqD,QAASw0F,K,kBAGhE,SAAK73F,GACHb,KAAKu4F,YAAYx7F,MAAQ8D,EAAMqD,OAAO49D,UAAU3yD,OAChDnP,KAAK+5F,mB,mCAGP,WACE/5F,KAAKg6F,uBAAuBC,OAAO,CAAEh3F,OAAQ,CAACjD,KAAKk6F,sBAAuB,KAAM,U,gCAIlF,SAAmBP,EAAiBjB,GAC9BiB,EAAkB,GAAKA,GAAmBjB,EAAe75F,SAI7D65F,EAAeiB,GAAiBr4B,UAAU7gE,IAAIT,KAAK24F,wBACnD7iC,EAAO6D,QAAQwgC,eAAezB,EAAeiB,GAAkB35F,KAAKq4F,kB,kCAGtE,WACE,GAAKr4F,KAAK64F,eAAev3B,UAAUv5D,SAAS/H,KAAK84F,sBAAjD,CAIA,MAA+C94F,KAAKu4F,YAAY1rB,wBAAnDutB,EAAb,EAAQ34B,IAAuB44B,EAA/B,EAAuBC,OACjBjQ,EAAgBrqF,KAAK64F,eAAe0B,aAEpCC,EAAsBJ,EAAW/P,EAAgB,EACjDoQ,EAAgBJ,EAAchQ,EAAgB/lF,OAAOo2F,YAC3D,GAAIF,GAAuBC,EACzBz6F,KAAK64F,eAAenjC,MAAM4kC,OAAS,UAC9B,IAAKt6F,KAAK64F,eAAenjC,MAAM4kC,OAAQ,CAC5C,IAAMK,EAAkB36F,KAAK46F,iBAAiBL,aAC9Cv6F,KAAK64F,eAAenjC,MAAM4kC,OAA1B,UAAsCK,EAAtC,U,wBAIJ,SAAWl1F,GAET,IAAMo1F,EAAep1F,EAAKw0E,cAAc,yBACpC4gB,EACFA,EAAajB,QACJn0F,EAAKq1F,cACdr1F,EAAKq1F,gBAELr1F,EAAKw0F,W,0BAIT,WAAsB,IAAD,OACnB,OAAOj6F,KAAKi5F,cAAc3xF,QAAO,SAAC+3C,GAAD,OAAaA,EAAOiiB,UAAUv5D,SAAS,EAAK6wF,wB,kCAG/E,WACE,OAAO9iC,EAAOj0D,YAAYyV,qCACxBtX,KAAKiE,QAAQ2Y,QAAQ,kBAAmB,mB,iCAI5C,WACE,MAAO,CAAEm+E,Q,EAAM,G,EAAK/6F,KAAKg7F,e,EAAiB,CAACh7F,KAAKi7F,wB,yIAGlD,WACE,OAAOj7F,KAAKiE,QAAQ2Y,QAAQ,oB,8BAjQH8F,K,EACpB/F,QAAU,CAAC,kBAAmB,eAAgB,gBAAiB,qB,EAC/DrB,QAAU,CAAC,SAAU,WAAY,QAAS,SAAU,UAAW,kB,EAC/DhZ,OAAS,CACdmL,UAAW2U,OACX84E,kBAAmB/4E,OACnBg5E,4BAA6Bh5E,OAC7Bi5E,kBAAmBh5E,OACnBqzC,IAAKrzC,S,kCCdT,YAUA,IASIi5E,EAAS,aAGTC,EAAa,qBAGbC,EAAa,aAGbC,EAAY,cAGZC,EAAeplE,SAGfqlE,EAA8B,iBAAV5lC,GAAsBA,GAAUA,EAAOt5D,SAAWA,QAAUs5D,EAGhF6lC,EAA0B,iBAAR33F,MAAoBA,MAAQA,KAAKxH,SAAWA,QAAUwH,KAGxE8nD,EAAO4vC,GAAcC,GAAYryE,SAAS,cAATA,GAUjCsyE,EAPcp/F,OAAOkB,UAOQwB,SAG7B28F,EAAYltF,KAAKC,IACjBktF,EAAYntF,KAAK4mB,IAkBjB9K,EAAM,WACR,OAAOqhC,EAAKhnC,KAAK2F,OAkNnB,SAASlG,EAASxnB,GAChB,IAAI0M,SAAc1M,EAClB,QAASA,IAAkB,UAAR0M,GAA4B,YAARA,GA8EzC,SAASypE,EAASn2E,GAChB,GAAoB,iBAATA,EACT,OAAOA,EAGT,GAjCF,SAAkBA,GAChB,MAAuB,iBAATA,GAvBhB,SAAsBA,GACpB,QAASA,GAAyB,iBAATA,EAsBUg/F,CAAah/F,IAhUlC,mBAgU4C6+F,EAAe3/F,KAAKc,GAgC1Ei/F,CAASj/F,GACX,OApWM,IAuWR,GAAIwnB,EAASxnB,GAAQ,CACnB,IAAI+nC,EAAgC,mBAAjB/nC,EAAMmoB,QAAwBnoB,EAAMmoB,UAAYnoB,EACnEA,EAAQwnB,EAASugB,GAASA,EAAQ,GAAKA,EAGzC,GAAoB,iBAAT/nC,EACT,OAAiB,IAAVA,EAAcA,GAASA,EAGhCA,EAAQA,EAAM0H,QAAQ42F,EAAQ,IAC9B,IAAIY,EAAWV,EAAWj8F,KAAKvC,GAC/B,OAAOk/F,GAAYT,EAAUl8F,KAAKvC,GAAS0+F,EAAa1+F,EAAMoC,MAAM,GAAI88F,EAAW,EAAI,GAAKX,EAAWh8F,KAAKvC,GAlXpG,KAkXoHA,EAG9HlB,EAAOD,QA/PP,SAAkB+vB,EAAMyrC,EAAMlmD,GAC5B,IAAIgrF,EACAC,EACAC,EACA54E,EACA64E,EACAC,EACAC,EAAiB,EACjBC,GAAU,EACVC,GAAS,EACTC,GAAW,EAEf,GAAmB,mBAAR/wE,EACT,MAAM,IAAInsB,UAtIQ,uBAkJpB,SAASm9F,EAAW1xD,GAClB,IAAIhzB,EAAOikF,EACP3zB,EAAU4zB,EAId,OAHAD,EAAWC,OAAWh3F,EACtBo3F,EAAiBtxD,EACjBznB,EAASmI,EAAKtH,MAAMkkD,EAAStwD,GAI/B,SAAS2kF,EAAY3xD,GAMnB,OAJAsxD,EAAiBtxD,EAEjBoxD,EAAUlkC,WAAW0kC,EAAczlC,GAE5BolC,EAAUG,EAAW1xD,GAAQznB,EAUtC,SAASs5E,EAAa7xD,GACpB,IAAI8xD,EAAoB9xD,EAAOqxD,EAK/B,YAAwBn3F,IAAjBm3F,GAA8BS,GAAqB3lC,GAAQ2lC,EAAoB,GAAKN,GAJjExxD,EAAOsxD,GAI2FH,EAG9H,SAASS,IACP,IAAI5xD,EAAOxgB,IAEX,GAAIqyE,EAAa7xD,GACf,OAAO+xD,EAAa/xD,GAItBoxD,EAAUlkC,WAAW0kC,EAxBvB,SAAuB5xD,GACrB,IAEIznB,EAAS4zC,GAFWnsB,EAAOqxD,GAG/B,OAAOG,EAASX,EAAUt4E,EAAQ44E,GAFRnxD,EAAOsxD,IAEkC/4E,EAoBhCy5E,CAAchyD,IAGnD,SAAS+xD,EAAa/xD,GAIpB,OAHAoxD,OAAUl3F,EAGNu3F,GAAYR,EACPS,EAAW1xD,IAGpBixD,EAAWC,OAAWh3F,EACfqe,GAgBT,SAAS05E,IACP,IAAIjyD,EAAOxgB,IACP0yE,EAAaL,EAAa7xD,GAK9B,GAJAixD,EAAW3iF,UACX4iF,EAAWn8F,KACXs8F,EAAerxD,EAEXkyD,EAAY,CACd,QAAgBh4F,IAAZk3F,EACF,OAAOO,EAAYN,GAGrB,GAAIG,EAGF,OADAJ,EAAUlkC,WAAW0kC,EAAczlC,GAC5BulC,EAAWL,GAQtB,YAJgBn3F,IAAZk3F,IACFA,EAAUlkC,WAAW0kC,EAAczlC,IAG9B5zC,EAKT,OA3GA4zC,EAAO8b,EAAS9b,IAAS,EAErB7yC,EAASrT,KACXsrF,IAAYtrF,EAAQsrF,QAEpBJ,GADAK,EAAS,YAAavrF,GACH2qF,EAAU3oB,EAAShiE,EAAQkrF,UAAY,EAAGhlC,GAAQglC,EACrEM,EAAW,aAAcxrF,IAAYA,EAAQwrF,SAAWA,GAmG1DQ,EAAUE,OAvCV,gBACkBj4F,IAAZk3F,GACFjgB,aAAaigB,GAGfE,EAAiB,EACjBL,EAAWI,EAAeH,EAAWE,OAAUl3F,GAkCjD+3F,EAAUG,MA/BV,WACE,YAAmBl4F,IAAZk3F,EAAwB74E,EAASw5E,EAAavyE,MA+BhDyyE,K,4nDC7OP,WAAW,IAAD,OACRl9F,KAAKs9F,gBAGLnlC,YAAW,WACT,EAAKolC,mBAAmBC,OACxB,EAAKD,mBAAmBE,UACvB,O,+BAGL,SAAkB73F,GAChBA,EAAE4B,cAAculD,WAAW2wC,aACzBn5F,SAAS01E,cAAc,kBACvBr0E,EAAE4B,cAAcm2F,e,2BAIpB,WACE,IAAM9G,EAAU,CACd+G,sBAAuB,CAAE/G,QAAS72F,KAAK69F,mBAEzC79F,KAAK89F,aAAe,IAAIC,OAAOC,KAAKC,OAAOC,aACzCl+F,KAAKu9F,mBACL1G,GAGF72F,KAAK89F,aAAaK,SAAS,CAAC,YAE5Bn+F,KAAK89F,aAAaM,YAChB,gBACAp+F,KAAKq+F,aAAa/gG,KAAK0C,S,0BAI3B,WAAgB,IAAD,MACPs+F,EAAQt+F,KAAK89F,aAAaS,WAGhCv+F,KAAKw+F,YAAYzhG,MAAQuhG,EAAMjiG,KAC/B2D,KAAKy+F,YAAY1hG,MAHO,CAAC,UAAW,cAGK0F,KAAI,SAACgH,GAAD,aAAY,UAAA60F,EAAMI,mBAAmB5nF,MAAK,SAAC3a,GAAD,OAAOA,EAAEwiG,MAAM1tF,SAASxH,aAAtD,eAA8Dm1F,YAAa,MAAKt3F,OAAO4a,SAChJliB,KAAK6+F,WAAW9hG,OAAQ,UAAAuhG,EAAMI,mBAAmB5nF,MAAK,SAAC3a,GAAD,OAAQA,EAAEwiG,MAAM1tF,SAAS,aAAe9U,EAAEwiG,MAAM1tF,SAAS,yBAAvF,eAAyG2tF,YAAa,GAC9I5+F,KAAK8+F,YAAY/hG,OAAQ,UAAAuhG,EAAMI,mBAAmB5nF,MAAK,SAAC3a,GAAD,OAAQA,EAAEwiG,MAAM1tF,SAAS,gCAAkC9U,EAAEwiG,MAAM1tF,SAAS,yCAA1G,eAA4I2tF,YAAa,GAClL5+F,KAAK++F,UAAUhiG,OAAQ,UAAAuhG,EAAMI,mBAAmB5nF,MAAK,SAAC3a,GAAD,OAAOA,EAAEwiG,MAAM1tF,SAAS,yBAAtD,eAAuE2tF,YAAa,K,iCAG7G,SAAoBh5F,GAClBA,EAAE7B,iBAEF,IAAMi7F,EAAwBh/F,KAAKi/F,oBAAoB39B,UAAUv5D,SAAS,QAE1E/H,KAAKi/F,oBAAoB39B,UAAUiqB,OAAO,QAASyT,GACnDh/F,KAAKk/F,oBAAoB59B,UAAUiqB,OAAO,OAAQyT,GAClDh/F,KAAKm/F,0BAA0B79B,UAAUiqB,OAAO,gBAAiByT,GACjEh/F,KAAKo/F,0BAA0B99B,UAAUiqB,OAAO,eAAgByT,Q,mCApEvCt8E,G,EACpBpH,QAAU,CACf,eACA,OACA,QACA,MACA,QACA,QACA,gBACA,gBACA,sBACA,uB,EAEKhZ,OAAS,CAAE+8F,YAAaj9E,S,8mDCN/B,WACEpiB,KAAKs/F,QAAUt/F,KAAKu/F,cAAgB,I,0BAGtC,SAAa1+F,GACX,MAA4BA,EAAMoC,OAA1BypD,EAAR,EAAQA,MAAR,EAAeikC,WAEE3wF,KAAKw/F,UAEtBx/F,KAAKs/F,QAAU5yC,K,oBAGjB,WACE1sD,KAAKy/F,cAAc39B,UAAY9hE,KAAK0/F,iBACpC1/F,KAAKiE,QAAQyxD,MAAMwkB,QAA2B,IAAjBl6E,KAAKs/F,QAAgB,OAAS,U,mBAS7D,WACE,OAAOt/F,KAAK2/F,U,IAPd,SAAY5iG,GACViD,KAAK2/F,SAAW5iG,EAEhBiD,KAAK4/F,W,4BAOP,WACE,OAAqB,IAAjB5/F,KAAKs/F,QACA,GAGLt/F,KAAKs/F,QAAU,GACV,MAGFt/F,KAAKs/F,a,mCA3Ca58E,G,EACpBpH,QAAU,CAAC,W,EACXhZ,OAAS,CACdsnE,GAAIxnD,OACJk9E,QAASn9E,S,2mDCoBX,WACMniB,KAAK6/F,WACP7/F,KAAK8/F,YAED9/F,KAAK+/F,eACP//F,KAAKggG,kBAGPhgG,KAAKigG,e,wBAIT,WACMjgG,KAAK6/F,WACP7/F,KAAKigG,aACLjgG,KAAK6/F,WAAY,IAEjB7/F,KAAK8/F,YACL9/F,KAAK6/F,WAAY,K,kBAIrB,SAAKh2B,GACHA,EAAGvI,UAAU7gE,IAAIT,KAAKkgG,oB,kBAGxB,SAAKr2B,GACHA,EAAGvI,UAAUqT,OAAO30E,KAAKkgG,oB,uBAG3B,WAAa,IAAD,OACVlgG,KAAKmgG,WAAW7+B,UAAU7gE,IAAIT,KAAKogG,gBAEnCpgG,KAAKqgG,yBAAyBl+F,SAAQ,SAAA0nE,GACpC,EAAKvS,KAAKuS,MAGR7pE,KAAKsgG,kBACPtgG,KAAKs3D,KAAKt3D,KAAKugG,qB,wBAInB,WAAc,IAAD,OACXvgG,KAAKmgG,WAAW7+B,UAAUqT,OAAO30E,KAAKogG,gBAEtCpgG,KAAKqgG,yBAAyBl+F,SAAQ,SAAA0nE,GACpC,EAAKrS,KAAKqS,MAGR7pE,KAAKsgG,kBACPtgG,KAAKw3D,KAAKx3D,KAAKugG,mBAGbvgG,KAAKwgG,qBACPxgG,KAAKw3D,KAAKx3D,KAAKygG,oB,4BAInB,SAAe5/F,GACTA,GAAOA,EAAMkD,iBAEb/D,KAAK0gG,sBAAwB1gG,KAAKw3D,KAAKx3D,KAAKugG,mBAChDvgG,KAAKs3D,KAAKt3D,KAAKygG,kBACfzgG,KAAK+/F,eAAgB,I,4BAGvB,SAAel/F,GACTA,GAAOA,EAAMkD,iBAEb/D,KAAK0gG,sBAAwB1gG,KAAKs3D,KAAKt3D,KAAKugG,mBAChDvgG,KAAKw3D,KAAKx3D,KAAKygG,kBACfzgG,KAAK+/F,eAAgB,O,mCA/FIr9E,G,EACpBpH,QAAU,CACf,OACA,oBACA,aACA,cAEA,WACA,WAEA,YACA,a,EAGKhZ,OAAS,CACd47E,KAAMh8D,QACNy+E,SAAUz+E,QAEV0+E,YAAa1+E,QAEb2+E,UAAWz+E,OACX0+E,YAAa1+E,S,2mDCXf,WACEpiB,KAAK+gG,mB,4BAGP,WAAkB,IAAD,OACTC,EAAU,GAEhBhhG,KAAKihG,WAAW9+F,SAAQ,SAAA0nE,GACtB,IAAMq3B,EAAWr3B,EAAGoQ,cAAc,+BAC5B/mE,EAAO,CACX,IAAOguF,EAAS10C,QAAQ20C,QACxB,GAAMD,EAAS10C,QAAQod,GACvB,SAAYC,EAAGoQ,cAAc,yBAA2BmnB,QACxD,SAAYv3B,EAAGoQ,cAAc,mBAAmBl9E,OAAS,KACzD,SAAY8sE,EAAGoQ,cAAc,mBAAmBl9E,OAAS,MAGvD,EAAKujG,mBACPptF,EAAI,gBAAsB22D,EAAGrd,QAAQ60C,yBACrCnuF,EAAI,sBAA4B22D,EAAGoQ,cAAc,oBAAoBl9E,MACrEmW,EAAI,wBAA8B22D,EAAGoQ,cAAc,oBAAoBl9E,OAGzEikG,EAAQpiG,KAAKsU,MAGflT,KAAKshG,mBAAmBvkG,MAAQmJ,KAAKuc,UAAUu+E,Q,mCApCtBt+E,G,EACpBpH,QAAU,CACf,MACA,gB,EAGKhZ,OAAS,CACds+F,YAAa1+E,U,ypFCwCfkqE,SAAW,CACT5oF,IAAK,SAACU,EAAQzG,EAAUV,GA+DtB,OA9DAmH,EAAOzG,GAAYV,EAEF,cAAbU,GACF,EAAK2uF,SAASmV,kCAGC,SAAb9jG,GACF,EAAK2uF,SAASoV,sBAGC,SAAb/jG,IACF,EAAK2uF,SAASqV,uBACd,EAAKrV,SAASsV,sBACd,EAAKtV,SAASuV,kBACd,EAAKvV,SAASwV,mBACd,EAAKxV,SAASyV,6BACd,EAAKzV,SAAS0V,8BAGC,mBAAbrkG,GACF,EAAK2uF,SAAS2V,wBAGA,aAAZtkG,IACF,EAAK2uF,SAAS4V,kBACd,EAAK5V,SAAS0V,8BAGA,iBAAZrkG,IACF,EAAK2uF,SAAS4V,kBACd,EAAK5V,SAAS0V,6BACd,EAAK1V,SAAS6V,6BAGC,mBAAbxkG,GACF,EAAK2uF,SAAS8V,kBAGC,eAAbzkG,GACF,EAAK2uF,SAAS+V,sBAGC,4BAAb1kG,GACF,EAAK2uF,SAASgW,6BAGC,0BAAb3kG,GACF,EAAK2uF,SAASiW,2BAGC,2BAAb5kG,GACF,EAAK2uF,SAASkW,sBAGC,gBAAb7kG,GACF,EAAK2uF,SAASmW,6BAGC,oBAAb9kG,GACF,EAAK2uF,SAASyV,8BAGT,GAGTM,oBAAqB,WACnB,IAAMK,EAAsB,uBAExB,EAAKtjB,MAAMujB,YACb,EAAKx+F,QAAQq9D,UAAU7gE,IAAI+hG,GAC3B,EAAKpW,SAASsW,6BAEd,EAAKz+F,QAAQq9D,UAAUqT,OAAO6tB,IAIlCJ,2BAA4B,WAC1B,EAAKn+F,QAAQq9D,UAAUiqB,OAAO,mCAAoC,EAAKrM,MAAMyjB,yBAEzE,EAAKzjB,MAAMyjB,0BAEX,EAAKC,+BACP,EAAKxW,SAASsW,4BACL,EAAKG,gCACd,EAAKzW,SAAS0W,+BAIlBT,yBAA0B,WACxB,IAAMU,EAAmB,EAAKC,yBAAyBtY,UAEvD,EAAKuY,0BAA0BvY,UAAYqY,EAC3C,EAAKG,sBAAsBxY,UAAYqY,GAGzCL,0BAA2B,WACzB,EAAKS,cAAcC,YAAc,EAAKD,cAAch5B,aAGtD24B,2BAA4B,WAC1B,EAAKK,cAAcC,YAAc,EAAKD,cAAch5B,aAGtDk5B,aAAc,WAAgC,IAAD,yDAAP,GAAO,IAA5BC,gBAA4B,SACvC,EAAKpkB,MAAMqkB,iBAIf,EAAKnX,SAASoX,kBAAkB,CAAEv4D,KAAM,EAAKi0C,MAAMmkB,aAAcC,SAAUA,IAC3E,EAAKpkB,MAAMqkB,gBAAiB,IAG9BjB,oBAAqB,WACnB,GAAK,EAAKpjB,MAAMukB,uBAAhB,CAEA,IAAMx4D,EAAO6qB,EAAOC,SAAS3qB,QAAQ,QAAQhmB,OAAO,SACpD,EAAKgnE,SAASoX,kBAAkB,CAAEv4D,KAAMA,EAAMq4D,UAAU,IAExD,EAAKpkB,MAAMukB,wBAAyB,IAGtCD,kBAAmB,WAA6C,IAAD,yDAAP,GAAO,IAAzCv4D,YAAyC,MAAlC,KAAkC,MAA5Bq4D,gBAA4B,SACvD5Y,EAAY,EAAK0B,SAASsX,sCAAsCz4D,GAEtE,EAAKg4D,0BAA0BvY,UAAYA,EAC3C,EAAKwY,sBAAsBxY,UAAYA,EAEnC4Y,EACF,EAAKN,yBAAyBW,SAAS,CAAEliC,IAAKipB,EAAWkZ,SAAU,WAEnE,EAAKZ,yBAAyBtY,UAAYA,GAI9CgZ,sCAAuC,WAAkB,IAAjBz4D,EAAgB,uDAAT,KAE7C,EAAyBA,EAAK77B,MAAM,KAAK3M,IAAI0f,QAA7C,SAAOoZ,EAAP,KAAcG,EAAd,KACMmoE,EAAwB,GAARtoE,EAAcG,EAC9BooE,EAAcD,EAAe,KAAQ,IAGrCjZ,EAAYkZ,EAAa,IACzBC,EAAgB,EAAKf,yBAAyB9X,aAAe,EAAKhM,MAAM8kB,cACxEtZ,EAAYqZ,EAAgBnZ,EAAY,EAAK1L,MAAM+kB,oBAGnDC,EAAoBxZ,EAAY,EAAKxL,MAAMilB,mBAEjD,OAAOD,GAGThC,gBAAiB,WACf,EAAKj+F,QAAQq9D,UAAUiqB,OAAO,4BAA6B,EAAKrM,MAAMklB,iBAGxEnC,0BAA2B,WACzB,GAAK,EAAKoC,8BAAV,CAEA,IAAM7iC,EAAM,UAAM,EAAK4qB,SAASkY,wBAApB,KAEZ,EAAKC,4BAA4BpiG,SAAQ,SAAA+B,GAAM,OAAIA,EAAOwxD,MAAM8L,OAASA,OAG3EgjC,eAAgB,SAAC9qE,GAA0B,IAArB1wB,EAAoB,uDAAT,KACzBsnB,EAAOoJ,EAAIq8B,OAAO3wC,OAAO,EAAKsa,YAC9B+kE,EAAc/qE,EAAIq8B,OAAO3wC,OAAO,OAChC+7E,EAAUsD,EAAYvsD,UAAU,EAAG,GACnCwsD,EAAYhrE,EAAIq8B,OAAO3wC,OAAO,KAC9Bu/E,EAAgB,EAAKC,8BAA8B31F,QAAQ25E,kBAAkBwP,WAAU,GACvFyM,EAAoBF,EAAc1qB,cAAc,qCAEhD6qB,EAAiBvgG,SAAS88D,cAAc,QAC9CyjC,EAAexjC,UAAU7gE,IAAI,uCAC7BqkG,EAAet4C,QAAQu4C,UAAY5D,EACnC2D,EAAet4C,QAAQw4C,SAAWP,EAElC,IAAMQ,EAAmB1gG,SAAS88D,cAAc,QAChD4jC,EAAiB3jC,UAAU7gE,IAAI,yCAC/BwkG,EAAiBC,YAAcR,EAE/BG,EAAkBljC,UAAY,GAC9BkjC,EAAkBjjC,YAAYkjC,GAC9BD,EAAkBjjC,YAAYqjC,GAC9BJ,EAAkBr4C,QAAQl8B,KAAOA,EACjCq0E,EAAcn4C,QAAQl8B,KAAOA,EAE7Bq0E,EAAcrjC,UAAUqT,OAAO,+BAC/BgwB,EAAcrjC,UAAUqT,OAAO,8CAC/BgwB,EAAcrjC,UAAUqT,OAAO,6CAE/B,IAAMwwB,EAAUzrE,EAAIq8B,OAAOnqB,OAAOkqB,EAAOC,SAAU,OAC7CqvC,EAAsB1rE,EAAIq8B,OAAOnqB,OAAOkqB,EAAOC,SAASxtB,SAAS,EAAG,OAAQ,OAC5E88D,EAAqB3rE,EAAIq8B,OAAOnqB,OAAOkqB,EAAOC,SAASt1D,IAAI,EAAG,OAAQ,OAU5E,OARI0kG,GAASR,EAAcrjC,UAAU7gE,IAAI,+BACrC2kG,GAAqBT,EAAcrjC,UAAU7gE,IAAI,8CACjD4kG,GAAoBV,EAAcrjC,UAAU7gE,IAAI,6CAEhDuI,GACFA,EAAS27F,EAAejrE,GAGnBirE,GAGTlD,qBAAsB,WACpB,EAAKrV,SAASkZ,wBACd,EAAKlZ,SAAS5zB,QAAQr2D,SAAQ,SAAAu3B,GAC5B,IAAMm8B,EAAK,UAAM,EAAKu2B,SAASmZ,uBAApB,KACLZ,EAAgB,EAAKvY,SAASoY,eAAe9qE,GACnDirE,EAAcjvC,MAAMG,MAAQA,EAE5B,EAAKu2B,SAASoZ,cAAc9rE,EAAIi/B,SAASiJ,YAAY+iC,OAIzDjD,oBAAqB,WACnB,EAAKtV,SAASqZ,uBACd,EAAKrZ,SAAS5zB,QAAQr2D,SAAQ,SAAAu3B,GAC5B,IAAMpJ,EAAOoJ,EAAIq8B,OAAO3wC,OAAO,EAAKsa,YAC9Bm2B,EAAK,UAAM,EAAKu2B,SAASmZ,uBAApB,KACL/jC,EAAM,UAAM,EAAK4qB,SAASkY,wBAApB,KACNK,EAAgB,EAAKe,4BAA4Bz2F,QAAQ25E,kBAAkBwP,WAAU,GACrFuN,EAAuBhB,EAAc1qB,cAAc,iCAEzD0qB,EAAcn4C,QAAQl8B,KAAOA,EAC7Bq0E,EAAcjvC,MAAMG,MAAQA,EAC5B8vC,EAAqBn5C,QAAQl8B,KAAOA,EACpCq1E,EAAqBn5C,QAAQmM,QAAUj/B,EAAIi/B,QAC3CgtC,EAAqBjwC,MAAM8L,OAASA,EACpCmkC,EAAqBn5C,QAAQo5C,eAAiB,uBAE9C,EAAKxZ,SAASyZ,YAAYnsE,EAAIi/B,SAASiJ,YAAY+iC,MAGrD,EAAKvY,SAASiX,gBAGhB1B,gBAAiB,WACf,IAAI1/D,EAEJ,EAAKmqD,SAAS0Z,mBACd,EAAK1Z,SAAS2Z,iBAAiB5jG,SAAQ,SAACu3B,GACtCuI,EAAc,EAAKmqD,SAAS5zB,QAAQ1hD,MAAK,SAAA4iB,GAAG,MAAoB,YAAhBA,EAAIi/B,WAAuB5C,OAAO3wC,OAAO,EAAKsa,YAE9F,IAAMilE,EAAgB,EAAKvY,SAASoY,eAAe9qE,GAAK,SAACz1B,EAASy1B,GAChEz1B,EAAQq9D,UAAUqT,OAAO,iCACzB1wE,EAAQq9D,UAAUqT,OAAO,gDACzB1wE,EAAQq9D,UAAUqT,OAAO,+CAEzB,IAAM9b,EAAYn/B,EAAIq8B,OAAOnqB,OAAO3J,EAAa,OAC3C+jE,EAAwBtsE,EAAIq8B,OAAOnqB,OAAOkqB,EAAOC,OAAO9zB,GAAasG,SAAS,EAAG,OAAQ,OACzF09D,EAAuBvsE,EAAIq8B,OAAOnqB,OAAOkqB,EAAOC,OAAO9zB,GAAaxhC,IAAI,EAAG,OAAQ,OAErFo4D,GAAW50D,EAAQq9D,UAAU7gE,IAAI,iCACjCulG,GAAuB/hG,EAAQq9D,UAAU7gE,IAAI,gDAC7CwlG,GAAsBhiG,EAAQq9D,UAAU7gE,IAAI,kDAGlD,EAAKylG,gBAAgBtkC,YAAY+iC,OAIrC3C,gBAAiB,WACf,IAEMmE,EADoB,KACkB,EAAKjnB,MAAMknB,UACjDC,EAAyB,IAAMF,EACpB,CAAC,UAAW,WAAY,QAEhChkG,SAAQ,SAAAw2D,GACf,IAAMktC,EAAc,EAAKzZ,SAASyZ,YAAYltC,GACxC2tC,EAAYT,EAAY5rB,cAAc,qCACtCssB,EAAiBV,EAAY5rB,cAAc,2CAC3CusB,EAAkBX,EAAY5rB,cAAc,4CAC5CwsB,EAAsBZ,EAAY5rB,cAAc,gDAEtDssB,EAAe5kC,UAAY,GAC3B6kC,EAAgB7kC,UAAY,GAC5B8kC,EAAoB9kC,UAAY,GAEhC,IAAK,IAAI+a,EAAW,EAAGA,GAAYypB,EAAiBzpB,IAAY,CAC9D,IAAMgqB,EAA+B,IAAbhqB,EAClBiqB,EAAiBjqB,IAAaypB,EAC9BrC,GAAcpnB,EAAW2pB,GAAuBxvD,QAAQ,GACxD+vD,EAAgB,EAAKC,4BAA4B53F,QAAQ25E,kBAAkBwP,WAAU,GACrF0O,EAAiBviG,SAAS88D,cAAc,QAC9CylC,EAAexlC,UAAU7gE,IAAI,0CAE7B,IAAMsmG,EAAsBrqB,EAAW,EAAKwC,MAAMknB,UAC5C7iE,EAAO50B,KAAKkhB,MAAMk3E,EA1BN,IA2BZ1iE,EAAS0iE,EA3BG,GA4BZC,EAAa,UAAMzjE,EAAN,YAAcc,EAAOnlC,WAAW+nG,SAAS,EAAG,MAE/DL,EAAclxC,MAAM+L,IAApB,UAA6BqiC,EAA7B,KACAgD,EAAepxC,MAAM+L,IAArB,UAA8BqiC,EAA9B,KACAgD,EAAet6C,QAAQ06C,mBAAqBF,EAC5CF,EAAehlC,UAAYhM,EAAOC,OAAOixC,EAAe,SAAS5hF,OAAO0wC,EAAOn2B,aAG3E+mE,GAAmBC,KACrBG,EAAehlC,UAAY,IAGzB6kC,IACFC,EAAclxC,MAAM+L,IAAM,OAC1BqlC,EAAepxC,MAAM+L,IAAM,QAI7B8kC,EAAe3kC,YAAYglC,GAC3BJ,EAAgB5kC,YAAYklC,GAG9BR,EAAU5wC,MAAM8L,OAAhB,UAA4B,EAAK4qB,SAASkY,wBAA1C,KACAiC,EAAe7wC,MAAM8L,OAArB,UAAiC,EAAK4qB,SAASkY,wBAA/C,KACAmC,EAAoB/wC,MAAM8L,OAA1B,UAAsC,EAAK4qB,SAASkY,wBAApD,KAIA,IAAM6C,EAA2B,EAAKC,uCAAuCn4F,QAAQ25E,kBAAkBwP,WAAU,GAC3GiP,EAA4B,EAAKC,wCAAwCr4F,QAAQ25E,kBAAkBwP,WAAU,GACnHqO,EAAoB7kC,YAAYulC,GAChCX,EAAgB5kC,YAAYylC,OAIhC9F,gCAAiC,WAC/B,EAAKt9F,QAAQq9D,UAAUiqB,OAAO,qBAA+C,aAAzB,EAAKrM,MAAMoR,YAGjEiS,2BAA4B,WAC1B,QAAyB,EAAKrjB,MAAM1M,YAAYpjE,MAAM,KAAK3M,IAAI0f,QAA/D,GAEM2hF,IADwB,GAD9B,WAEoC,KAAQ,KAAKjtD,QAAQ,GAErD,EAAK0wD,mCACP,EAAKC,gCAAgCrlG,SAAQ,SAAA8B,GAC3CA,EAAQyxD,MAAM+L,IAAd,UAAuBqiC,EAAvB,QAIA,EAAK2D,oCACP,EAAKC,iCAAiCvlG,SAAQ,SAAA8B,GAC5CA,EAAQyxD,MAAM+L,IAAd,UAAuBqiC,EAAvB,KACA7/F,EAAQ69D,UAAYhM,EAAOC,OAAO,EAAKmpB,MAAM1M,YAAa,SAASptD,OAAO0wC,EAAOn2B,gBAKvFmiE,2BAA4B,WACT,CAAC,UAAW,WAAY,QAEhC3/F,SAAQ,SAAAw2D,GACf,IAEMgvC,OAAqCxiG,GAFpB,EAAKinF,SAAS5zB,QAAQlxD,QAAO,SAAAoyB,GAAG,OAAIA,EAAIi/B,UAAYA,KACzC7hD,MAAK,SAAA4iB,GAAG,OAAIA,EAAIq8B,OAAOnqB,OAAOkqB,EAAOC,SAAU,UAE3E8vC,EAAc,EAAKzZ,SAASyZ,YAAYltC,GACxCivC,EAAuB/B,EAAY5rB,cAAc,kEACjDotB,EAA4BxB,EAAY5rB,cAAc,mEAE5D2tB,EAAqBtmC,UAAUiqB,OAAO,iDAAkDoc,GACxFN,EAA0B/lC,UAAUiqB,OAAO,kDAAmDoc,OAIlG/F,iBAAkB,WAChB,IAAMtxE,EAAO,EAAK87D,SAASjrB,aAAanI,YAAY5zC,OAAO,EAAKsa,YAC1Dz9B,EAAQ,EAAKmqF,SAASjrB,aAAanI,YAAY5zC,OAAO,EAAKsa,YAC3D5gB,EAAM,EAAKstE,SAASjrB,aAAalI,UAAU7zC,OAAO,EAAKsa,YAE7D,EAAKmoE,sBAAsB1lG,SAAQ,SAAA4E,GACjCA,EAAWm4E,MAAM5uD,KAAOA,EACxBvpB,EAAWm4E,MAAM3mB,KAAO,EACxBxxD,EAAWm4E,MAAM4oB,UAAY,CAAE7lG,MAAOA,EAAO6c,IAAKA,OAItD+iF,2BAA4B,WACtB,EAAKkG,mCACP,EAAKC,gCAAgC7lG,SAAQ,SAAA8B,GAAY,IAAD,IAChDgkG,EAAkB,EAAK/oB,MAAMj5C,KAAO,EAEtCvG,GAAa,UAAAo2B,EAAOs6B,qBAAP,eAAsB8X,cAAe,QAClDD,IAAiBvoE,GAAa,UAAAo2B,EAAOs6B,qBAAP,sBAA8B,oBAEhE,IAAM1gE,EAAO,EAAK08D,SAASjrB,aAAanI,YAAY5zC,OAAO,QACrDmwC,EAAQtxD,EAAQg2E,cAAc,oBAC9BxhB,EAAa,EAAK2zB,SAASjrB,aAAanI,YAAY5zC,OAAOsa,GAC3Dg5B,EAAW,EAAK0zB,SAASjrB,aAAalI,UAAU7zC,OAAOsa,GAEzDyoE,EAAa,UAAM1vC,EAAN,cAAsBC,EAAtB,YAAkChpC,GAC/Cu4E,IAAiBE,EAAgB1vC,GAErClD,EAAM+L,UAAUiqB,OAAO,qCAAsC0c,GAC7D1yC,EAAMuM,UAAYqmC,MAKxBhnC,WAAY,WACV,OAAO,IAAI7I,IAAmB,CAC5BhoC,KAAM,EAAK4uD,MAAM5uD,KACjB2V,KAAM,EAAKi5C,MAAMj5C,KACjBsyB,KAAM,EAAK2mB,MAAM3mB,QAIrBC,MAAO,WACL,OAAO,EAAK4zB,SAASjrB,aAAa3I,SAGpCutC,eAAgB,WACd,IAAM/sC,EAAYlD,EAAOC,OAAO,EAAKq2B,SAASjrB,aAAanI,aAAa5tB,QAAQ,QAMhF,OALmB,IAAIktB,IAAmB,CACxChoC,KAAM0oC,EACN/yB,KAAM,IAGUuyB,QAAQlxD,QAAO,SAAAoyB,GAAS,MAAuB,YAAhBA,EAAIi/B,YAGvD2sC,sBAAuB,WACrB,CAAC,WAAY,UAAW,QAAQnjG,SAAQ,SAAAw2D,GAChB,EAAKyzB,SAASoZ,cAAc7sC,GACpCgJ,UAAY,OAI9B8jC,qBAAsB,WACpB,EAAK2C,qBAAqBjmG,SAAQ,SAAAkmG,GAAM,OAAIA,EAAO1zB,aAGrDmxB,iBAAkB,WAChB,EAAKI,gBAAgBvkC,UAAY,IAGnCogC,sBAAuB,WACrB,CAAC,WAAY,UAAW,QAAQ5/F,SAAQ,SAAAw2D,GAChB,EAAKyzB,SAASoZ,cAAc7sC,GACpCjD,MAAM4yC,YAApB,UAAqC,EAAKppB,MAAMqpB,eAAhD,SAGF,EAAKC,iBAAiB9yC,MAAM4yC,YAA5B,UAA6C,EAAKppB,MAAMqpB,eAAxD,MACA,EAAKE,uBAAuB/yC,MAAM4yC,YAAlC,UAAmD,EAAKppB,MAAMqpB,eAA9D,OAGF/C,cAAe,SAAC7sC,GACd,OAAO,YAAQA,EAAR,yBAGTktC,YAAa,SAACltC,GACZ,OAAO,YAAQA,EAAR,uBAGT4sC,qBAAsB,WACpB,OAAO,IAAM,EAAKrmB,MAAMj5C,MAG1Bq+D,sBAAuB,WACrB,OAAO,IAAM,EAAKplB,MAAM8kB,eAG1BxC,oBAAqB,WACnB,EAAKv9F,QAAQq9D,UAAUqT,OAAO,4BAA6B,4BAC3D,EAAK1wE,QAAQq9D,UAAU7gE,IAAwB,IAApB,EAAKy+E,MAAMj5C,KAAa,4BAA8B,8B,sCAIrF,WAAW,IAAD,OACRjmC,KAAKk/E,MAAQ,IAAI6N,MAAM,GAAI/sF,KAAKosF,UAChCpsF,KAAKk/E,MAAMknB,UAAYpmG,KAAK0oG,eAC5B1oG,KAAKk/E,MAAM+kB,oBAAsB,EACjCjkG,KAAKk/E,MAAM8kB,cAAgBhkG,KAAK2oG,mBAChC3oG,KAAKk/E,MAAMmkB,aAAerjG,KAAK4oG,kBAC/B5oG,KAAKk/E,MAAMj5C,KAAOjmC,KAAK6oG,UACvB7oG,KAAKk/E,MAAM5uD,KAAOtwB,KAAK8oG,eAAe9oG,KAAK+oG,WAC3C/oG,KAAKk/E,MAAM3mB,KAAOv4D,KAAKgpG,WAAa,EACpChpG,KAAKk/E,MAAMujB,WAAaziG,KAAKipG,aAC7BjpG,KAAKk/E,MAAMklB,eAAiBpkG,KAAKokG,iBACjCpkG,KAAKk/E,MAAMoR,UAAYx6B,EAAOw6B,UAC9BtwF,KAAKk/E,MAAMilB,mBAAqBnkG,KAAKkpG,yBAA2B,EAChElpG,KAAKk/E,MAAMiqB,gBAAkBnpG,KAAKmpG,gBAElCnpG,KAAKopG,iBACLppG,KAAKqpG,sCACLrpG,KAAKspG,aAED,mBAAoBhlG,QACtBtE,KAAKupG,eAAiB,IAAIC,gBAAe,SAAAC,GACvC,EAAK1H,wBACD,EAAK2H,kBACP,EAAKC,6BAEP,EAAKzqB,MAAMiqB,gBAAkB,EAAKA,mBAGpCnpG,KAAKupG,eAAe1gG,QAAQ7I,KAAKgjG,2BAEjChjG,KAAK+hG,0B,wBAIT,WACE/hG,KAAK4pG,qCAED,mBAAoBtlG,QAAQtE,KAAKupG,eAAelpG,e,+BAGtD,WACEL,KAAKosF,SAASwV,qB,2BAGhB,SAAc/gG,GACZA,EAAMkD,iBAEN,IAAMk+B,EAAcjiC,KAAKk/E,MAAM5uD,KACzBu5E,EAAc7pG,KAAKk/E,MAAM3mB,KACzBuxC,EAAa9pG,KAAK8oG,iBAExB9oG,KAAKk/E,MAAMukB,wBAAyB,EAGhCxhE,IAAgB6nE,GAA8B,IAAhBD,IAElC7pG,KAAKk/E,MAAM5uD,KAAOw5E,EAClB9pG,KAAKk/E,MAAM3mB,KAAO,EAClBv4D,KAAKspG,gB,8BAGP,SAAiBzoG,GACXA,GAAOA,EAAMkD,iBAEjB/D,KAAK+pG,aAAa,U,kCAGpB,SAAqBlpG,GACfA,GAAOA,EAAMkD,iBAEjB/D,KAAK+pG,aAAa,c,0BAGpB,SAAalpG,GACXA,EAAMkD,iBAEN,IAAMusB,EAAOzvB,EAAM2G,cAAcglD,QAAQl8B,KACzCtwB,KAAKk/E,MAAM5uD,KAAOtwB,KAAK8oG,eAAex4E,GACtCtwB,KAAKk/E,MAAM3mB,KAAO,EAClBv4D,KAAKspG,e,sBAGP,SAASzoG,GACPA,EAAMkD,iBAEN/D,KAAKk/E,MAAM5uD,KAAOtwB,KAAK8oG,eAAejoG,EAAMoC,OAAO+mG,UAAU/nG,OAC7DjC,KAAKk/E,MAAM3mB,KAAO,EAClBv4D,KAAKiqG,kBAAkB,MACvBjqG,KAAKspG,e,oCAGP,SAAuBzoG,GAAQ,IAAD,OAC5Bu7E,aAAap8E,KAAKkqG,uBAElBlqG,KAAKk/E,MAAMirB,uBAAyB,EACpCnqG,KAAKk/E,MAAMyjB,yBAA0B,EAErC3iG,KAAKkqG,sBAAwB/xC,YAAW,WACtC,EAAK+mB,MAAMirB,uBAAyB,EAAKhH,cAAcC,YAAc,EAAKD,cAAciH,YAAc,EAAKjH,cAAch5B,aAErH,EAAKy4B,gCACP,EAAKyH,mBACL,EAAKf,cACI,EAAKzG,iCACd,EAAKyH,eACL,EAAKhB,cAEP,EAAKpqB,MAAMyjB,yBAA0B,IACpC,O,kCAGL,SAAqB9hG,GAAQ,IAAD,OAC1Bu7E,aAAap8E,KAAKuqG,qBAElBvqG,KAAKk/E,MAAMsrB,uBAAwB,EAEnCxqG,KAAKuqG,oBAAsBpyC,YAAW,WACpC,EAAK+mB,MAAMsrB,uBAAwB,IAClC,KAEH,IAAMC,EAAc,IAAIxnF,YAAY,2BAA4B,CAC9DF,SAAS,EACT9f,OAAQ,CACNmgG,WAAYviG,EAAMqD,OAAOk/F,WACzB1Y,UAAW7pF,EAAMqD,OAAOwmF,aAI5B1qF,KAAKiE,QAAQif,cAAcunF,K,8BAG7B,SAAiB5pG,GACf,IAAM4hG,EAAa5hG,EAAM2G,cAAc45F,QACvCphG,KAAKk/E,MAAMujB,WAAaA,I,kBAG1B,SAAK5hG,GACHA,EAAMkD,iBAEN,IAAM2mG,EAAQ7pG,EAAM2G,cAAczK,MAC9BqpG,EAAY,GAEZsE,GAAS,GAAKA,EAAQ,EACxBtE,EAAY,GACHsE,GAAS,GAAKA,EAAQ,EAC/BtE,EAAY,GACHsE,GAAS,GAAKA,GAAS,KAChCtE,EAAY,IAGdpmG,KAAKk/E,MAAM8kB,cAAgB0G,EAC3B1qG,KAAKk/E,MAAMknB,UAAYA,I,wBAGzB,SAAWvlG,GACT,IAAMolC,EAAOplC,EAAM2G,cAAczK,MAEjCiD,KAAKk/E,MAAMj5C,KAAOA,EAClBjmC,KAAKk/E,MAAMklB,eAAiBpkG,KAAKokG,eAAen+D,GAChDjmC,KAAKk/E,MAAM3mB,KAAO,EAClBv4D,KAAKspG,e,0BAGP,SAAar+D,GAAiC,IAAD,yDAAJ,GAAI,IAAxBq4D,gBAAwB,SAC3CtjG,KAAKk/E,MAAMqkB,gBAAiB,EAC5BvjG,KAAKk/E,MAAMmkB,aAAep4D,EAE1BjrC,KAAKosF,SAASiX,aAAa,CAAEC,e,0BAG/B,WACEtjG,KAAKk/E,MAAM3mB,MAAQ,I,8BAGrB,WACEv4D,KAAKk/E,MAAM3mB,MAAQ,I,0BAGrB,SAAazuB,GACX,GAAK,CAAC,OAAQ,YAAY74B,SAAS64B,GAAnC,CAEA,GAAI9pC,KAAKk/E,MAAMklB,gBAAkBpkG,KAAKmpG,gBAAiB,CACrD,IAAMhoC,EAAa,IAAI7I,IAAmB,CAAEhoC,KAAMtwB,KAAKk/E,MAAM5uD,KAAM2V,KAAM,EAAGsyB,KAAMv4D,KAAKk/E,MAAM3mB,OACvFS,EACc,SAAdlvB,EAA6Bq3B,EAAWh3C,WAC1B,aAAd2f,EAAiCq3B,EAAWwpC,oBAAhD,EAGF3qG,KAAKk/E,MAAM5uD,KAAO0oC,EAAU5zC,OAAOplB,KAAK0/B,YACxC1/B,KAAKk/E,MAAM3mB,KAAO,MAEA,SAAdzuB,GAAsB9pC,KAAKsqG,eACb,aAAdxgE,GAA0B9pC,KAAKqqG,mBAGrCrqG,KAAKspG,gB,4BAGP,WACEtpG,KAAKk/E,MAAM1M,YAAc1c,EAAOC,SAAS3wC,OAAO,W,iDAGlD,WAAuC,IAAD,OACpCplB,KAAK4qG,oCAAsCC,aAAY,WACrD,EAAKzB,mBACJ,O,gDAGL,WACMppG,KAAK4qG,qCACPE,cAAc9qG,KAAK4qG,uC,wBAIvB,WACE,IAAMG,EAAkB,IAAI9nF,YAAY,kBAAmB,CACzDF,SAAS,EACT9f,OAAQ,CACNqtB,KAAMtwB,KAAKk/E,MAAM5uD,KACjBioC,KAAMv4D,KAAKk/E,MAAM3mB,KACjBtyB,KAAMjmC,KAAKk/E,MAAMj5C,QAGrBjmC,KAAKiE,QAAQif,cAAc6nF,K,4BAG7B,WAA6B,IAAdz6E,EAAa,uDAAN,KACdw5E,EAAakB,YAAiB16E,GAC9B26E,EAA6B,MAAdnB,EAAqBh0C,EAAOC,SAAWD,EAAOC,OAAO+zC,GAE1E,OAAO9pG,KAAKk/E,MAAMj5C,KAAO,EACvBglE,EAAa7lF,OAAOplB,KAAK0/B,YACzBurE,EAAa7/D,QAAQ,QAAQhmB,OAAOplB,KAAK0/B,c,4BAG7C,WAAkC,IAAnBuG,EAAkB,4DAAX9gC,EACpB,OAAO8gC,GAA4B,IAApBjmC,KAAKk/E,MAAMj5C,O,mCAG5B,WACEjmC,KAAKk/E,MAAMqpB,eAAiBvoG,KAAKuoG,eAEjC,IAAMwC,EAAkB,IAAI9nF,YAAY,4BAA6B,CACnEF,SAAS,EACT9f,OAAQ,CAAEslG,eAAgBvoG,KAAKk/E,MAAMqpB,kBAEvCvoG,KAAKiE,QAAQif,cAAc6nF,K,+BAG7B,SAAkBlqG,GAChB,IAAMqqG,EAAkBrqG,GAASb,KAAKmrG,sCAAsCC,YAAYvqG,EAAM2G,eAE1F0jG,GAAiBrqG,EAAMkD,kBAKzBmnG,IACCrqG,GACAA,IAAUb,KAAKqrG,8BAEhBrrG,KAAK0pG,kBAAmB,EACxB1pG,KAAKsrG,wB,+BAIT,SAAkBzqG,GAkCZA,EAAMoC,OAAOsoG,QACfvrG,KAAK0pG,kBAAmB,EACxB1pG,KAAK2pG,8BACI3pG,KAAK0pG,mBAAqB1pG,KAAKmpG,iBAExCnpG,KAAKiqG,kBAAkB,Q,gCAM3B,WACEjqG,KAAKwrG,0BACLxrG,KAAKyrG,wB,wCAGP,WACMzrG,KAAKmpG,iBACPnpG,KAAK0rG,sBACL1rG,KAAKwrG,4BAELxrG,KAAK2rG,0BACL3rG,KAAKyrG,yB,qCAIT,WACEzrG,KAAK4rG,oCAAoCzpG,SAAQ,SAAA4E,GAC1CA,EAAWm4E,MAAMqsB,SAAQxkG,EAAWm4E,MAAMqsB,QAAS,Q,qCAI5D,WACEvrG,KAAK4rG,oCAAoCzpG,SAAQ,SAAA4E,GAC3CA,EAAWm4E,MAAMqsB,SAAQxkG,EAAWm4E,MAAMqsB,QAAS,Q,iCAI3D,WAAuB,IAAD,EACmC,EAAnD,UAACvrG,KAAK6rG,iCAAN,OAAC,EAAgC3sB,MAAMmN,YACzC,UAAArsF,KAAK6rG,iCAAL,SAAgC3tB,S,iCAIpC,WAC0F,IAAD,EAAnFl+E,KAAK6rG,2BAA6B7rG,KAAK6rG,0BAA0B3sB,MAAMmN,aACzE,UAAArsF,KAAK6rG,iCAAL,SAAgCntB,W,0BAIpC,SAAapuD,GACX,OAAQtwB,KAAKk/E,MAAM5uD,OAASA,GAAQtwB,KAAKosF,SAAS2Z,iBAAiBh6F,MAAK,SAAA2tB,GAAG,OAAIA,EAAIq8B,OAAOnqB,OAAOtb,Q,sCAGnG,WACE,OAAOtwB,KAAK4rG,oCAAoC90F,MAAK,SAAA/P,GAAU,OAAIA,EAAWm4E,MAAMqsB,Y,2BAGtF,WACE,OAAOvrG,KAAK8rG,eAAiBh2C,EAAO6D,QAAQR,YAAYW,OAAO73D,Q,+CAGjE,WACE,OAAOjC,KAAKgoG,gCAAgCvlG,KAAI,SAAAyB,GAC9C,OAAO4xD,EAAOj0D,YAAYyV,qCAAqCpT,EAAQ,iB,qCAI3E,WACE,OAAO4xD,EAAOj0D,YAAYyV,qCAAqCtX,KAAK+rG,sBAAuB,Y,yBAG7F,WACE,OAAOxnG,SAASwY,gBAAgBivF,c,sBAGlC,WACE,MAAO,e,wBAGT,WACE,OAAOhsG,KAAKisG,sBAAwBjsG,KAAKksG,c,0CAG3C,WACE,OAAOlsG,KAAKk/E,MAAMirB,uBAAyB,K,0CAG7C,WACE,OAAOnqG,KAAKk/E,MAAMirB,uBAAyB,K,0BAG7C,WACE,OAAOnqG,KAAKgjG,yBAAyB74B,YAAcnqE,KAAKgjG,yBAAyBgJ,c,wBAGnF,WACE,OAAOhsG,KAAKgjG,yBAAyBgJ,c,yBAGvC,WACE,OAAOhsG,KAAKgjG,yBAAyBzI,e,uBAGvC,WACE,MACG,iBAAkBj2F,QAClB8kF,UAAU+iB,eAAiB,GAC3B/iB,UAAUgjB,iBAAmB,I,iCAIlC,WACE,OAAKpsG,KAAKqsG,oBAEHrsG,KAAKssG,kBAAkB7pG,KAAI,SAAAwB,GAChC,OAAO6xD,EAAOj0D,YAAYyV,qCAAqCrT,EAAS,kBACvEqD,QAAO,SAAAP,GAAU,OAAIA,KAJc,Q,8BAj6Bb2b,K,EACpBpH,QAAU,CACf,kBACA,kCACA,0BACA,wBACA,gBACA,uBACA,YACA,0BACA,aACA,wBACA,mCACA,oCACA,2BACA,4BACA,kBACA,wBACA,sBACA,iBACA,uBACA,qBACA,cACA,oBACA,kBACA,UACA,iBACA,cACA,aACA,2BACA,aACA,oB,EAGKhZ,OAAS,CACdguB,KAAMlO,OACN6jB,KAAM9jB,OACNo2C,KAAMp2C,OACN6hF,cAAe7hF,OACfoqF,gBAAiBrqF,QACjBkkF,UAAWjkF,OACXkhF,aAAcjhF,OACd+hF,mBAAoBhiF,S,8CC5CxB3lB,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAGT,MAAMyvG,EAAc,EAAQ,GAEtBp+C,EAAY,EAAQ,GAEpBm3B,EAAmC,EAAQ,GAE3CknB,EAAsB,IAAI/6F,OAAiC,uFAAkE86F,EAAYjtD,+BAAgC,KACzKmtD,EAAyB,IAAIh7F,OAAO,kEAAkE86F,EAAYjtD,+BAAgC,KAExJ,MAAMotD,UAAqCpnB,EAAiC5tC,uCAC1EI,aAAazxC,GACX,OAAOA,EAAQ+4C,OAAOutD,YAAcF,EAAyBD,EAG/Dt0D,aAAa7xC,EAAS4E,GACpB,MAAM27C,EAAY2lD,EAAYltD,eAAep0C,EAAM,IACnD,OAAOkjD,EAAUvS,kBAAkBgxD,4BAA4BvmG,EAAQq2C,UAAWkK,IAKtFjrD,EAAQqlB,QAAU0rF,G,gBC1B6C9wG,EAAOD,QAC9D,WACN,aAEA,IAAIoB,EAAI,QACJO,EAAI,UACR,OAAO,SAAUqI,EAAG9J,GAClB,IAAIc,EAAId,EAAE4B,UAEVd,EAAEkpC,QAAU,SAAU9oC,GACpB,OAAOgD,KAAK85C,SAAStqB,EAAExyB,GAAK2R,KAAKihB,MAAM5vB,KAAKqwB,QAAU,GAAK,GAAKrwB,KAAKqwB,MAAMrwB,KAAKqwB,QAAU,EAAI,GAAKrzB,EAAI,KAGzG,IAAIa,EAAIjB,EAAE6D,IAEV7D,EAAE6D,IAAM,SAAUmF,EAAG9J,GACnB,OAAO8J,EAAIuc,OAAOvc,GAAI5F,KAAK85C,SAASl8C,EAAE9B,KAAOyB,EAAIyC,KAAKS,IAAI,EAAImF,EAAG5I,GAAKa,EAAEP,KAAK0C,KAAPnC,CAAa+H,EAAG9J,IAGxF,IAAI0zB,EAAI5yB,EAAEwuC,QAEVxuC,EAAEwuC,QAAU,SAAUxlC,EAAG9J,GACvB,IAAIc,EAAIoD,KAAK85C,SACTj8C,IAAMjB,EAAE4yB,EAAE1zB,IAAMA,EAEpB,GAAIc,EAAEgB,EAAEgI,KAAOrI,EAAG,CAChB,IAAIhB,EAAIyD,KAAK8lC,UAAY,EACzB,OAAOjoC,EAAImC,KAAKqwB,MAAM,EAAI9zB,GAAG6uC,QAAQpuC,GAAGouC,QAAQ,OAASprC,KAAKqwB,MAAM,EAAI9zB,EAAI,GAAGgvC,MAAMvuC,GAAGuuC,MAAM,OAGhG,OAAO/b,EAAElyB,KAAK0C,KAAPwvB,CAAa5pB,EAAG9J,KA9BmDyB,I,6BCChFf,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAETnB,EAAQygD,iBAAmBzgD,EAAQkxG,uBAAoB,EACvDlxG,EAAQkxG,kBAAoB,CAC1BC,KAAM,IACNC,KAAM,IACNC,KAAM,IACNC,KAAM,IACNC,KAAM,IACNC,IAAK,IACLC,MAAO,IACPC,MAAO,IACPC,KAAM,IACNC,MAAO,IACPC,KAAM,IACNC,MAAO,IACPC,KAAM,IACNC,KAAM,IACNC,KAAM,IACNC,KAAM,IACNC,KAAM,IACNC,KAAM,IACNC,MAAO,EACPC,MAAO,GACPC,KAAM,IACNC,IAAK,IACLC,IAAK,IACLC,KAAM,IACNC,MAAO,IACPC,KAAM,IACNC,IAAK,GACLC,IAAK,IACLC,KAAM,IACNC,IAAK,IACLC,IAAK,IACL3vE,KAAM,IACN4vE,KAAM,IACNC,IAAK,GACLC,MAAO,IACPC,MAAO,IACPC,KAAM,IACNC,MAAO,IACPC,KAAM,IACNC,KAAM,IACNlwE,KAAM,IACNmwE,KAAM,GACNC,IAAK,IACLC,KAAM,IACNC,KAAM,IACNC,OAAQ,IACRC,MAAO,IACPC,IAAK,IACLC,KAAM,IACN7wE,KAAM,IACN8wE,KAAM,IACNC,IAAK,IACLC,KAAM,EACNC,KAAM,GACNhxE,KAAM,IACNixE,IAAK,IACLC,KAAM,IACNC,IAAK,IACLC,MAAO,IACPC,KAAM,IACNC,KAAM,IACNC,MAAO,IACPC,MAAO,IACPC,IAAK,IACLC,KAAM,IACNC,KAAM,IACN7xE,IAAK,EACL8xE,IAAK,IACLC,KAAM,IACNC,KAAM,IACNC,KAAM,IACNC,MAAO,IACPC,KAAM,IACNC,KAAM,IACNC,KAAM,IACNC,MAAO,IACPC,KAAM,GACNC,KAAM,IACNC,IAAK,IACLC,KAAM,IACNC,KAAM,IACNC,KAAM,IACNC,KAAM,IACNC,KAAM,IACNC,KAAM,IACNC,KAAM,IACNC,KAAM,IACNC,KAAM,IACNC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,KAAM,IACNC,MAAO,IACPC,KAAM,IACNC,KAAM,IACNC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,MAAO,IACPC,KAAM,IACNC,IAAK,IACLC,KAAM,IACNC,KAAM,IACNC,KAAM,IACNC,KAAM,IACNC,MAAO,IACPC,KAAM,IACNC,MAAO,IACPC,KAAM,IACNl0E,KAAM,IACNm0E,KAAM,IACNC,IAAK,GACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLv0E,KAAM,IACNw0E,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,KAAM,GACNC,IAAK,IACLC,MAAO,IACPC,KAAM,IACNC,IAAK,IACLC,KAAM,IACNC,KAAM,IACNC,KAAM,IACNC,KAAM,IACNC,MAAO,IACPC,KAAM,IACNr1E,KAAM,IACNs1E,KAAM,IACNC,MAAO,IACPC,KAAM,IACNC,IAAK,IACLC,KAAM,IACNC,IAAK,IACLC,IAAK,IACLC,MAAO,IACPC,MAAO,IACPC,KAAM,IACN91E,KAAM,IACN+1E,IAAK,IACLC,IAAK,IACLC,MAAO,IACPC,KAAM,IACNC,IAAK,IACLC,KAAM,IACNC,KAAM,IACNC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,KAAM,IACNC,KAAM,IACNC,MAAO,IACPC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,KAAM,IACN5/E,IAAK,EACL6/E,MAAO,IACPC,KAAM,IACNC,IAAK,IACLC,KAAM,IACNC,MAAO,IACPC,KAAM,IACNC,IAAK,IACLC,KAAM,IACNC,IAAK,GACLC,KAAM,GACNC,KAAM,GACNC,IAAK,EACLC,IAAK,EACLC,IAAK,IACLC,MAAO,IACPC,KAAM,IACNC,IAAK,IACLC,IAAK,IACLC,KAAM,IACNC,IAAK,IACLC,GAAI,EACJC,MAAO,IACPC,KAAM,IACNC,KAAM,IACNC,MAAO,IACPC,KAAM,KAiBRv8G,EAAQygD,iBAdR,SAA0B+7D,GACxB,IAAIrkG,EAEJ,OAAsB,OAAlBqkG,QAA4CjzG,IAAlBizG,EACrB,KAGoB,kBAAlBA,EACFA,EAGkD,QAAnDrkG,EAAKnY,EAAQkxG,kBAAkBsL,UAAmC,IAAPrkG,EAAgBA,EAAK,O,6BCjN1FvX,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAGT,MAAMsjD,EAAU,EAAQ,GAElBmsD,EAAc,EAAQ,GAEtB6L,EAAc,EAAQ,GAEtBC,EAAc,EAAQ,GAEtBl4D,EAAY,EAAQ,GAEpBmlC,EAAmC,EAAQ,GAE3C1wB,EAAU,IAAInjD,OAA2B,mBAAI4mG,EAAY34D,qFAA+F24D,EAAY34D,4DAA2ES,EAAU7E,gBAAgBixD,EAAYvsD,2CAA0Do4D,EAAY54D,wCAAmD,KAMpZ,MAAM84D,UAAsChzB,EAAiC5tC,uCAC3EI,eACE,OAAO8c,EAGT1c,aAAa7xC,EAAS4E,GACpB,MAAMsY,EAASld,EAAQ6oD,oBAAoBjkD,EAAMxJ,MAAOwJ,EAAM,IACxDmlB,EAAQm8E,EAAYvsD,iBAAiB/0C,EAVtB,GAU8CjG,eAC7Dy0B,EAAM4+E,EAAY54D,0BAA0Bx0C,EAbnC,IAef,GAAIwuB,EAAM,GAER,OADAxuB,EAAMxJ,MAAQwJ,EAAMxJ,MAAQwJ,EAhBf,GAgBiCrM,OACvC,KAMT,GAHA2kB,EAAOvhB,MAAMjB,OAAO,QAASqvB,GAC7B7M,EAAOvhB,MAAMjB,OAAO,MAAO04B,GAEvBxuB,EApBW,GAoBQ,CACrB,MAAM06C,EAAayyD,EAAY74D,UAAUt0C,EArB5B,IAsBbsY,EAAOvhB,MAAMjB,OAAO,OAAQ4kD,OACvB,CACL,MAAMl2B,EAAO2wB,EAAQsF,qBAAqBr/C,EAAQ43C,QAASxkB,EAAKrJ,GAChE7M,EAAOvhB,MAAM+6C,MAAM,OAAQttB,GAG7B,GAAIxkB,EA9Bc,GA8BQ,CACxB,MAAM+tD,EAAUq/C,EAAY54D,0BAA0Bx0C,EA/BtC,IAgChBsY,EAAO1E,IAAM0E,EAAOvhB,MAAMwlC,QAC1BjkB,EAAO1E,IAAI9d,OAAO,MAAOi4D,GAG3B,OAAOz1C,GAKX5nB,EAAQqlB,QAAUs3F,G,6BC3DlB/7G,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAGT,MAAMsjD,EAAU,EAAQ,GAElBmsD,EAAc,EAAQ,GAEtB6L,EAAc,EAAQ,GAEtBC,EAAc,EAAQ,GAEtBl4D,EAAY,EAAQ,GAEpBmlC,EAAmC,EAAQ,GAE3C1wB,EAAU,IAAInjD,OAAO,IAAI0uC,EAAU7E,gBAAgBixD,EAAYvsD,wCAAkDo4D,EAAY14D,iEAAgF04D,EAAY14D,sDAA0E24D,EAAY74D,qCAAgD,KAMrW,MAAM+4D,UAAsCjzB,EAAiC5tC,uCAC3EI,eACE,OAAO8c,EAGT1c,aAAa7xC,EAAS4E,GACpB,MAAMmlB,EAAQm8E,EAAYvsD,iBAAiB/0C,EAXtB,GAW8CjG,eAC7Dy0B,EAAM2+E,EAAY34D,0BAA0Bx0C,EAXnC,IAaf,GAAIwuB,EAAM,GACR,OAAO,KAGT,MAAMmkB,EAAav3C,EAAQ8oD,wBAAwB,CACjD11B,IAAKA,EACLrJ,MAAOA,IAGT,GAAInlB,EApBW,GAoBQ,CACrB,MAAMwkB,EAAO4oF,EAAY94D,UAAUt0C,EArBtB,IAsBb2yC,EAAW78C,OAAO,OAAQ0uB,OACrB,CACL,MAAMA,EAAO2wB,EAAQsF,qBAAqBr/C,EAAQ43C,QAASxkB,EAAKrJ,GAChEwtB,EAAWb,MAAM,OAAQttB,GAG3B,IAAKxkB,EA7Ba,GA8BhB,OAAO2yC,EAGT,MAAMob,EAAUo/C,EAAY34D,0BAA0Bx0C,EAjCpC,IAkCZsY,EAASld,EAAQ6oD,oBAAoBjkD,EAAMxJ,MAAOwJ,EAAM,IAI9D,OAHAsY,EAAOvhB,MAAQ47C,EACfr6B,EAAO1E,IAAM++B,EAAWpW,QACxBjkB,EAAO1E,IAAI9d,OAAO,MAAOi4D,GAClBz1C,GAKX5nB,EAAQqlB,QAAUu3F,G,6BC9DlBh8G,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAGT,MAAMyvG,EAAc,EAAQ,GAEtBnsD,EAAU,EAAQ,GAElBD,EAAY,EAAQ,GAEpBi4D,EAAc,EAAQ,GAEtB9yB,EAAmC,EAAQ,GAE3C1wB,EAAU,IAAInjD,OAAyB,iBAAI0uC,EAAU7E,gBAAgBixD,EAAYvsD,sCAAqDo4D,EAAY54D,mDAA8D,KAKtN,MAAMg5D,UAA0BlzB,EAAiC5tC,uCAC/DI,eACE,OAAO8c,EAGT1c,aAAa7xC,EAAS4E,GACpB,MAAM0pB,EAAY1pB,EATG,GASqBjG,cAE1C,GAAIiG,EAAM,GAAGrM,QAAU,IAAM2tG,EAAYtsD,2BAA2BtrB,GAClE,OAAO,KAGT,MAAMpR,EAASld,EAAQ6oD,oBAAoBjkD,EAAMxJ,OAASwJ,EAhBzC,IAgBgE,IAAIrM,OAAQqM,EAAMxJ,MAAQwJ,EAAM,GAAGrM,QACpH2kB,EAAOvhB,MAAM+6C,MAAM,MAAO,GAC1B,MAAM3sB,EAAQm8E,EAAYvsD,iBAAiBrrB,GAG3C,GAFApR,EAAOvhB,MAAMjB,OAAO,QAASqvB,GAEzBnlB,EAnBW,GAmBQ,CACrB,MAAMwkB,EAAO2oF,EAAY74D,UAAUt0C,EApBtB,IAqBbsY,EAAOvhB,MAAMjB,OAAO,OAAQ0uB,OACvB,CACL,MAAMA,EAAO2wB,EAAQsF,qBAAqBr/C,EAAQ43C,QAAS,EAAG7tB,GAC9D7M,EAAOvhB,MAAM+6C,MAAM,OAAQttB,GAG7B,OAAOlM,GAKX5nB,EAAQqlB,QAAUw3F,G,6BCjDlBj8G,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAGT,MAAMyvG,EAAc,EAAQ,GAEtBpsD,EAAY,EAAQ,GAEpBmlC,EAAmC,EAAQ,GAE3C1wB,EAAU,IAAInjD,OAAiC,4BAAO0uC,EAAU7E,gBAAgBixD,EAAYvsD,mEAA8E,KAMhL,MAAMy4D,UAAmCnzB,EAAiC5tC,uCACxEI,eACE,OAAO8c,EAGT1c,aAAa7xC,EAAS4E,GACpB,MAAMmlB,EAAQnlB,EATS,GASmBmrB,SAASnrB,EAT5B,IASyDshG,EAAYvsD,iBAAiB/0C,EAVxF,GAUgHjG,eAErI,GAAIorB,EAAQ,GAAKA,EAAQ,GACvB,OAAO,KAGT,MAAMX,EAAO2G,SAASnrB,EAjBA,IAmBtB,MAAO,CACLwuB,IAFUrD,SAASnrB,EAfC,IAkBpBmlB,MAAOA,EACPX,KAAMA,IAMZ9zB,EAAQqlB,QAAUy3F,G,6BCvClBl8G,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAGT,MAAMwoF,EAAmC,EAAQ,GAE3C1wB,EAAU,IAAInjD,OAAO,mCAAyC,KAIpE,MAAMinG,UAAiCpzB,EAAiC5tC,uCACtEI,eACE,OAAO8c,EAGT1c,aAAa7xC,EAAS4E,GACpB,MAAMwkB,EAAO2G,SAASnrB,EARP,IASTmlB,EAAQgG,SAASnrB,EAVP,IAWhB,OAAO5E,EAAQ8oD,0BAA0BpS,MAAM,MAAO,GAAGh8C,OAAO,QAASqvB,GAAOrvB,OAAO,OAAQ0uB,IAKnG9zB,EAAQqlB,QAAU03F,G,6BCvBlBn8G,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAGT,MAAMwpD,EAAU,EAAQ,GAElBqyD,EAAiC,EAAQ,IAE/C,MAAMC,UAA+BD,EAA+BzmD,6BAClE/yD,YAAY6xD,GACV6nD,MAAM7nD,GAGR4C,iBACE,MAAO,+CAGTF,gBACE,MAAO,wBAGTf,gBACE,MAAO,uFAGTG,6BAA6BzsD,EAAS4E,GACpC,MAAM2yC,EAAai7D,MAAM/lD,6BAA6BzsD,EAAS4E,GAE/D,GAAI2yC,EAAY,CACd,GAAI3yC,EAAM,GAAG6tG,SAAS,SAAU,CAC9B,MAAMx1E,EAAOsa,EAAWlhD,IAAI,QAExB4mC,GAAQ,GAAKA,EAAO,IACtBsa,EAAW78C,OAAO,OAAQ68C,EAAWlhD,IAAI,QAAU,IACnDkhD,EAAW78C,OAAO,WAAYulD,EAAQtH,SAASyH,KACtCnjB,EAAO,GAChBsa,EAAW78C,OAAO,WAAYulD,EAAQtH,SAASwH,IAInD,GAAIv7C,EAAM,GAAG6tG,SAAS,aAAc,CAClCl7D,EAAW78C,OAAO,WAAYulD,EAAQtH,SAASyH,IAC/C,MAAMnjB,EAAOsa,EAAWlhD,IAAI,QAExB4mC,GAAQ,GAAKA,GAAQ,GACvBsa,EAAW78C,OAAO,OAAQ68C,EAAWlhD,IAAI,QAAU,IAIvD,GAAIuO,EAAM,GAAG6tG,SAAS,WAAY,CAChCl7D,EAAW78C,OAAO,WAAYulD,EAAQtH,SAASwH,IAClC5I,EAAWlhD,IAAI,QAEjB,IACTkhD,EAAW78C,OAAO,OAAQ68C,EAAWlhD,IAAI,UAK/C,OAAOkhD,GAKXjiD,EAAQqlB,QAAU43F,G,6BChElBr8G,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAGT,MAAMyvG,EAAc,EAAQ,GAEtBp+C,EAAY,EAAQ,GAEpBm3B,EAAmC,EAAQ,GAE3CnxB,EAAc,EAAQ,IAEtBS,EAAU,IAAInjD,OAAO,IAAI86F,EAAYjtD,iEAAkE,KACvGy5D,EAAiB,IAAItnG,OAAO,IAAI86F,EAAYjtD,8CAA+C,KAEjG,MAAM05D,UAAkC1zB,EAAiC5tC,uCACvEv4C,YAAY6xD,GACV6nD,QACA94G,KAAKixD,WAAaA,EAGpBlZ,eACE,OAAO/3C,KAAKixD,WAAa+nD,EAAiBnkD,EAG5C1c,aAAa7xC,EAAS4E,GACpB,MAAM27C,EAAY2lD,EAAYltD,eAAep0C,EAAM,IAC7CguG,EAAkB9kD,EAAYxN,iBAAiBC,GACrD,OAAOuH,EAAUvS,kBAAkBgxD,4BAA4BvmG,EAAQq2C,UAAWu8D,IAKtFt9G,EAAQqlB,QAAUg4F,G,6BCjClBz8G,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAGT,MAAMyvG,EAAc,EAAQ,GAEtBp+C,EAAY,EAAQ,GAEpBm3B,EAAmC,EAAQ,GAE3C1wB,EAAU,IAAInjD,OAAO,IAAI86F,EAAYjtD,0FAAgG,KACrIy5D,EAAiB,IAAItnG,OAAY,IAAM86F,EAAYjtD,mBAAvB,iCAAwF,KAG1H,MAAM45D,UAAoC5zB,EAAiC5tC,uCACzEv4C,YAAY6xD,GACV6nD,QACA94G,KAAKixD,WAAaA,EAGpBlZ,eACE,OAAO/3C,KAAKixD,WAAa+nD,EAAiBnkD,EAG5C1c,aAAa7xC,EAAS4E,GACpB,MAAM0yC,EAAY4uD,EAAYltD,eAAep0C,EAbrB,IAcxB,OAAOkjD,EAAUvS,kBAAkBgxD,4BAA4BvmG,EAAQq2C,UAAWiB,IAKtFhiD,EAAQqlB,QAAUk4F,G,6BC/BlB,IAAIx9D,EAAkB37C,MAAQA,KAAK27C,iBAAmB,SAAUloB,GAC9D,OAAOA,GAAOA,EAAIv2B,WAAau2B,EAAM,CACnC,QAAWA,IAIfj3B,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAGT,MAAMq8G,EAAkCz9D,EAAgB,EAAQ,KAEhE,MAAM09D,UAAgCD,EAAgCn4F,QACpE+uC,iBACE,MAAO,mBAKXp0D,EAAQqlB,QAAUo4F,G,6BCnBlB,IAAI19D,EAAkB37C,MAAQA,KAAK27C,iBAAmB,SAAUloB,GAC9D,OAAOA,GAAOA,EAAIv2B,WAAau2B,EAAM,CACnC,QAAWA,IAIfj3B,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAGT,MAAMu8G,EAAiC39D,EAAgB,EAAQ,KAE/D,MAAM49D,UAA+BD,EAA+Br4F,QAClE+uC,iBACE,OAAO,IAAIt+C,OAAO,6CAKtB9V,EAAQqlB,QAAUs4F,G,6BCnBlB/8G,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAETnB,EAAQ49G,uBAAyB59G,EAAQ40D,yBAAsB,EAE/D,MAAMjK,EAAU,EAAQ,GA6BxB,SAASizD,EAAuBC,EAAeC,GAC7C,MAAMC,EAAoBF,EAAchyE,QA2CxC,OAzCIiyE,EAAcx8D,UAAU,SAC1By8D,EAAkB34G,OAAO,OAAQ04G,EAAc/8G,IAAI,SACnDg9G,EAAkB34G,OAAO,SAAU04G,EAAc/8G,IAAI,WAEjD+8G,EAAcx8D,UAAU,WAC1By8D,EAAkB34G,OAAO,SAAU04G,EAAc/8G,IAAI,WAEjD+8G,EAAcx8D,UAAU,eAC1By8D,EAAkB34G,OAAO,cAAe04G,EAAc/8G,IAAI,gBAE1Dg9G,EAAkB38D,MAAM,cAAe08D,EAAc/8G,IAAI,kBAG3Dg9G,EAAkB38D,MAAM,SAAU08D,EAAc/8G,IAAI,WACpDg9G,EAAkB38D,MAAM,cAAe08D,EAAc/8G,IAAI,mBAG3Dg9G,EAAkB38D,MAAM,OAAQ08D,EAAc/8G,IAAI,SAClDg9G,EAAkB38D,MAAM,SAAU08D,EAAc/8G,IAAI,WACpDg9G,EAAkB38D,MAAM,SAAU08D,EAAc/8G,IAAI,WACpDg9G,EAAkB38D,MAAM,cAAe08D,EAAc/8G,IAAI,iBAGvD+8G,EAAcx8D,UAAU,mBAC1By8D,EAAkB34G,OAAO,iBAAkB04G,EAAc/8G,IAAI,mBAG3D+8G,EAAcx8D,UAAU,YAC1By8D,EAAkB34G,OAAO,WAAY04G,EAAc/8G,IAAI,aACb,MAAjC+8G,EAAc/8G,IAAI,aAA4D,MAArCg9G,EAAkBh9G,IAAI,aACxEg9G,EAAkB38D,MAAM,WAAY08D,EAAc/8G,IAAI,aAGpDg9G,EAAkBh9G,IAAI,aAAe4pD,EAAQtH,SAASyH,IAAMizD,EAAkBh9G,IAAI,QAAU,KAC1F+8G,EAAcx8D,UAAU,QAC1By8D,EAAkB34G,OAAO,OAAQ24G,EAAkBh9G,IAAI,QAAU,IAEjEg9G,EAAkB38D,MAAM,OAAQ28D,EAAkBh9G,IAAI,QAAU,KAI7Dg9G,EA9CT/9G,EAAQ40D,oBAzBR,SAA6BopD,EAAYC,GACvC,MAAMr2F,EAASo2F,EAAWnyE,QACpBqyE,EAAYF,EAAW33G,MACvB83G,EAAYF,EAAW53G,MAG7B,GAFAuhB,EAAOvhB,MAAQu3G,EAAuBM,EAAWC,GAE3B,MAAlBH,EAAW96F,KAAiC,MAAlB+6F,EAAW/6F,IAAa,CACpD,MAEMk7F,EAAcR,EAFc,MAAlBI,EAAW96F,IAAc86F,EAAW33G,MAAQ23G,EAAW96F,IACrC,MAAlB+6F,EAAW/6F,IAAc+6F,EAAW53G,MAAQ43G,EAAW/6F,KAGjD,MAAlB86F,EAAW96F,KAAek7F,EAAY1pF,OAAOpJ,UAAY1D,EAAOvhB,MAAMquB,OAAOpJ,YAC3E8yF,EAAY98D,UAAU,OACxB88D,EAAYh5G,OAAO,MAAOg5G,EAAYr9G,IAAI,OAAS,GAEnDq9G,EAAYh9D,MAAM,MAAOg9D,EAAYr9G,IAAI,OAAS,IAItD6mB,EAAO1E,IAAMk7F,EAGf,OAAOx2F,GAoDT5nB,EAAQ49G,uBAAyBA,G,6BCjFjCh9G,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAET,MAAMk9G,EAAwB,IAAIvoG,OAAO,2CAA4C,KAC/EwoG,EAA4B,CAChCnN,KAAM,IACNC,KAAM,IACNC,KAAM,IACNC,KAAM,IACNC,KAAM,IACNC,IAAK,IACLC,MAAO,IACPC,MAAO,IACPC,KAAM,IACNC,MAAO,IACPC,KAAM,IACNC,MAAO,IACPC,KAAM,IACNC,KAAM,IACNC,KAAM,IACNC,KAAM,IACNC,KAAM,IACNC,KAAM,IACNC,MAAO,EACPC,MAAO,GACPC,KAAM,IACNC,IAAK,IACLC,IAAK,IACLC,KAAM,IACNC,MAAO,IACPC,KAAM,IACNC,IAAK,GACLC,IAAK,IACLC,KAAM,IACNC,IAAK,IACLC,IAAK,IACL3vE,KAAM,IACN4vE,KAAM,IACNC,IAAK,GACLC,MAAO,IACPC,MAAO,IACPC,KAAM,IACNC,MAAO,IACPC,KAAM,IACNC,KAAM,IACNlwE,KAAM,IACNmwE,KAAM,GACNC,IAAK,IACLC,KAAM,IACNC,KAAM,IACNC,OAAQ,IACRC,MAAO,IACPC,IAAK,IACLC,KAAM,IACN7wE,KAAM,IACN8wE,KAAM,IACNC,IAAK,IACLC,KAAM,EACNC,KAAM,GACNhxE,KAAM,IACNixE,IAAK,IACLC,KAAM,IACNC,IAAK,IACLC,MAAO,IACPC,KAAM,IACNC,KAAM,IACNC,MAAO,IACPC,MAAO,IACPC,IAAK,IACLC,KAAM,IACNC,KAAM,IACN7xE,IAAK,EACL8xE,IAAK,IACLC,KAAM,IACNC,KAAM,IACNC,KAAM,IACNC,MAAO,IACPC,KAAM,IACNC,KAAM,IACNC,KAAM,IACNC,MAAO,IACPC,KAAM,GACNC,KAAM,IACNC,IAAK,IACLC,KAAM,IACNC,KAAM,IACNC,KAAM,IACNC,KAAM,IACNC,KAAM,IACNC,KAAM,IACNC,KAAM,IACNC,KAAM,IACNC,KAAM,IACNC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,KAAM,IACNC,MAAO,IACPC,KAAM,IACNC,KAAM,IACNC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,MAAO,IACPC,KAAM,IACNC,IAAK,IACLC,KAAM,IACNC,KAAM,IACNC,KAAM,IACNC,KAAM,IACNC,MAAO,IACPC,KAAM,IACNC,MAAO,IACPC,KAAM,IACNl0E,KAAM,IACNm0E,KAAM,IACNC,IAAK,GACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLv0E,KAAM,IACNw0E,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,KAAM,GACNC,IAAK,IACLC,MAAO,IACPC,KAAM,IACNC,IAAK,IACLC,KAAM,IACNC,KAAM,IACNC,KAAM,IACNC,KAAM,IACNC,MAAO,IACPC,KAAM,IACNr1E,KAAM,IACNs1E,KAAM,IACNC,MAAO,IACPC,KAAM,IACNC,IAAK,IACLC,KAAM,IACNC,IAAK,IACLC,IAAK,IACLC,MAAO,IACPC,MAAO,IACPC,KAAM,IACN91E,KAAM,IACN+1E,IAAK,IACLC,IAAK,IACLC,MAAO,IACPC,KAAM,IACNC,IAAK,IACLC,KAAM,IACNC,KAAM,IACNC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,KAAM,IACNC,KAAM,IACNC,MAAO,IACPC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,KAAM,IACN5/E,IAAK,EACL6/E,MAAO,IACPC,KAAM,IACNC,IAAK,IACLC,KAAM,IACNC,MAAO,IACPC,KAAM,IACNC,IAAK,IACLC,KAAM,IACNC,IAAK,GACLC,KAAM,GACNC,KAAM,GACNC,IAAK,EACLC,IAAK,EACLC,IAAK,IACLC,MAAO,IACPC,KAAM,IACNC,IAAK,IACLC,IAAK,IACLC,KAAM,IACNC,IAAK,IACLC,GAAI,EACJC,MAAO,IACPC,KAAM,IACNC,KAAM,IACNC,MAAO,IACPC,KAAM,KAiERv8G,EAAQqlB,QA9DR,MACE7hB,YAAY+6G,GACVn6G,KAAKs8C,SAAW9/C,OAAOwE,OAAOxE,OAAOwE,OAAO,GAAIk5G,GAA4BC,GAG9EnrD,OAAO1oD,EAASqoD,GACd,IAAI56C,EAEJ,MAAMomG,EAAwD,QAAnCpmG,EAAKzN,EAAQ+4C,OAAO+6D,iBAA8B,IAAPrmG,EAAgBA,EAAK,GAiD3F,OAhDA46C,EAAQxsD,SAAQqhB,IACd,IAAIzP,EAAIsmG,EAER,MAAM1tE,EAASrmC,EAAQ23C,KAAK/F,UAAU10B,EAAO9hB,MAAQ8hB,EAAOy6B,KAAKp/C,QAC3DqM,EAAQ+uG,EAAsBp6E,KAAK8M,GAEzC,IAAKzhC,EACH,OAGF,MAAMovG,EAAepvG,EAAM,GAAGtG,cACxB21G,EAAyI,QAA9GF,EAAgD,QAA1CtmG,EAAKomG,EAAkBG,UAAkC,IAAPvmG,EAAgBA,EAAK/T,KAAKs8C,SAASg+D,UAAkC,IAAPD,EAAgBA,EAAK,KAE5K,GAAgC,OAA5BE,EACF,OAGFj0G,EAAQiZ,OAAM,KACZlB,QAAQgC,IAAI,yBAAyBi6F,YAAuBC,UAAgC/2F,EAAOvhB,YAErG,MAAMy6C,EAAwBl5B,EAAOvhB,MAAMtF,IAAI,kBAE/C,GAA8B,OAA1B+/C,GAAkC69D,GAA2B79D,EAAuB,CACtF,GAAIl5B,EAAOvhB,MAAMi7C,UAAU,kBACzB,OAGF,GAAIo9D,GAAgBpvG,EAAM,GACxB,OAIAsY,EAAOvhB,MAAMm7C,cACXk9D,GAAgBpvG,EAAM,KAK5BsY,EAAOy6B,MAAQ/yC,EAAM,GAEhBsY,EAAOvhB,MAAMi7C,UAAU,mBAC1B15B,EAAOvhB,MAAMjB,OAAO,iBAAkBu5G,GAGtB,MAAd/2F,EAAO1E,KAAgB0E,EAAO1E,IAAIo+B,UAAU,mBAC9C15B,EAAO1E,IAAI9d,OAAO,iBAAkBu5G,OAGjC5rD,K,6BC/PXnyD,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAkCTnB,EAAQqlB,QA/BR,MACE+tC,OAAO1oD,EAASqoD,GACd,GAAIA,EAAQ9vD,OAAS,EACnB,OAAO8vD,EAGT,MAAM6rD,EAAkB,GACxB,IAAIC,EAAa9rD,EAAQ,GAEzB,IAAK,IAAI7yD,EAAI,EAAGA,EAAI6yD,EAAQ9vD,OAAQ/C,IAAK,CACvC,MAAM0nB,EAASmrC,EAAQ7yD,GAEnB0nB,EAAO9hB,MAAQ+4G,EAAW/4G,MAAQ+4G,EAAWx8D,KAAKp/C,OAChD2kB,EAAOy6B,KAAKp/C,OAAS47G,EAAWx8D,KAAKp/C,SACvC47G,EAAaj3F,IAGfg3F,EAAgB57G,KAAK67G,GACrBA,EAAaj3F,GAQjB,OAJkB,MAAdi3F,GACFD,EAAgB57G,KAAK67G,GAGhBD,K,6BC9BX,IAAI7+D,EAAkB37C,MAAQA,KAAK27C,iBAAmB,SAAUloB,GAC9D,OAAOA,GAAOA,EAAIv2B,WAAau2B,EAAM,CACnC,QAAWA,IAIfj3B,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAGT,MAAMi/C,EAAUL,EAAgB,EAAQ,IAElCM,EAAU,EAAQ,IA4ExBrgD,EAAQqlB,QA1ER,MACE+tC,OAAO1oD,EAASqoD,GACd,OAAKroD,EAAQ+4C,OAAOutD,aAIpBj+C,EAAQxsD,SAAQ,SAAUqhB,GACxB,IAAIqiC,EAAY7J,EAAQ/6B,QAAQ3a,EAAQ43C,SAgBxC,GAdI16B,EAAOvhB,MAAMo7C,cAAgBwI,EAAUlc,QAAQnmB,EAAOvhB,MAAMy7C,WAC9DmI,EAAYA,EAAUplD,IAAI,EAAG,OAC7Bw7C,EAAQmK,iBAAiB5iC,EAAOvhB,MAAO4jD,GAEnCriC,EAAO1E,KAAO0E,EAAO1E,IAAIu+B,eAC3BpB,EAAQmK,iBAAiB5iC,EAAO1E,IAAK+mC,GAEjCriC,EAAOvhB,MAAMy7C,QAAQ/T,QAAQnmB,EAAO1E,IAAI4+B,WAC1CmI,EAAYA,EAAUplD,IAAI,EAAG,OAC7Bw7C,EAAQmK,iBAAiB5iC,EAAO1E,IAAK+mC,MAKvCriC,EAAOvhB,MAAMs7C,2BAA6BsI,EAAUlc,QAAQnmB,EAAOvhB,MAAMy7C,SAC3E,IAAK,IAAI5hD,EAAI,EAAGA,EAAI,GAAK+pD,EAAUlc,QAAQnmB,EAAOvhB,MAAMy7C,SAAU5hD,IAChE0nB,EAAOvhB,MAAM+6C,MAAM,OAAQx5B,EAAOvhB,MAAMtF,IAAI,QAAU,GACtD2J,EAAQiZ,OAAM,KACZlB,QAAQgC,IAAI,+BAA+BmD,MAAWA,EAAOvhB,aAG3DuhB,EAAO1E,MAAQ0E,EAAO1E,IAAIo+B,UAAU,UACtC15B,EAAO1E,IAAIk+B,MAAM,OAAQx5B,EAAO1E,IAAIniB,IAAI,QAAU,GAClD2J,EAAQiZ,OAAM,KACZlB,QAAQgC,IAAI,+BAA+BmD,MAAWA,EAAO1E,YAMjE0E,EAAOvhB,MAAMq7C,0BAA4BuI,EAAUlc,QAAQnmB,EAAOvhB,MAAMy7C,WAExEmI,EADEA,EAAUnsB,OAASlW,EAAOvhB,MAAMtF,IAAI,WAC1BkpD,EAAUnsB,IAAIlW,EAAOvhB,MAAMtF,IAAI,WAAa,GAE5CkpD,EAAUnsB,IAAIlW,EAAOvhB,MAAMtF,IAAI,YAG7C6mB,EAAOvhB,MAAM+6C,MAAM,MAAO6I,EAAUv1B,QACpC9M,EAAOvhB,MAAM+6C,MAAM,QAAS6I,EAAUx1B,QAAU,GAChD7M,EAAOvhB,MAAM+6C,MAAM,OAAQ6I,EAAUn2B,QACrCppB,EAAQiZ,OAAM,KACZlB,QAAQgC,IAAI,+BAA+BmD,MAAWA,EAAOvhB,aAG3DuhB,EAAO1E,KAAO0E,EAAO1E,IAAIw+B,2BAEzBuI,EADEA,EAAUnsB,MAAQlW,EAAO1E,IAAIniB,IAAI,WACvBkpD,EAAUnsB,IAAIlW,EAAO1E,IAAIniB,IAAI,WAAa,GAE1CkpD,EAAUnsB,IAAIlW,EAAO1E,IAAIniB,IAAI,YAG3C6mB,EAAO1E,IAAIk+B,MAAM,MAAO6I,EAAUv1B,QAClC9M,EAAO1E,IAAIk+B,MAAM,QAAS6I,EAAUx1B,QAAU,GAC9C7M,EAAO1E,IAAIk+B,MAAM,OAAQ6I,EAAUn2B,QACnCppB,EAAQiZ,OAAM,KACZlB,QAAQgC,IAAI,+BAA+BmD,MAAWA,EAAO1E,gBAK9D6vC,GAlEEA,K,6BCjBbnyD,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAGT,MAAM0yD,EAAqB,EAAQ,IAEnC,MAAMirD,UAA6BjrD,EAAmB4G,OACpDj3D,YAAY6xD,GACV6nD,QACA94G,KAAKixD,WAAaA,EAGpBrqC,QAAQtgB,EAASkd,GACf,OAAIA,EAAOy6B,KAAKx5C,QAAQ,IAAK,IAAIyG,MAAM,kBACrC5E,EAAQiZ,OAAM,KACZlB,QAAQgC,IAAI,6BAA6BmD,EAAOy6B,aAE3C,GAGJz6B,EAAOvhB,MAAMu7C,cAOdh6B,EAAO1E,MAAQ0E,EAAO1E,IAAI0+B,eAC5Bl3C,EAAQiZ,OAAM,KACZlB,QAAQgC,IAAI,4BAA4BmD,MAAWA,EAAO1E,YAErD,IAGL9e,KAAKixD,YACAjxD,KAAK26G,kBAAkBr0G,EAASkd,IAdvCld,EAAQiZ,OAAM,KACZlB,QAAQgC,IAAI,4BAA4BmD,MAAWA,EAAOvhB,cAErD,GAiBX04G,kBAAkBr0G,EAASkd,GACzB,OAAIA,EAAOvhB,MAAMq7C,0BACfh3C,EAAQiZ,OAAM,KACZlB,QAAQgC,IAAI,6CAA6CmD,MAAWA,EAAO1E,YAEtE,OAGL0E,EAAOvhB,MAAMo7C,cAAkB75B,EAAOvhB,MAAMi7C,UAAU,SAAY15B,EAAOvhB,MAAMi7C,UAAU,aAC3F52C,EAAQiZ,OAAM,KACZlB,QAAQgC,IAAI,+CAA+CmD,MAAWA,EAAO1E,YAExE,IAQbljB,EAAQqlB,QAAUy5F,G,6BC7DlBl+G,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAGT,MAAM0yD,EAAqB,EAAQ,IAEnC,MAAMmrD,UAAqCnrD,EAAmBE,eAC5DM,aAAaJ,EAAaC,EAAeC,GACvC,MAAM8qD,EAAY9qD,EAAWtoB,QAS7B,OARAozE,EAAUn5G,MAAQouD,EAAcpuD,MAChCm5G,EAAU58D,KAAO6R,EAAc7R,KAAO4R,EAAcgrD,EAAU58D,KAC9D48D,EAAU54G,MAAMjB,OAAO,UAAW8uD,EAAc7tD,MAAMtF,IAAI,YAEtDk+G,EAAU/7F,KACZ+7F,EAAU/7F,IAAI9d,OAAO,UAAW8uD,EAAc7tD,MAAMtF,IAAI,YAGnDk+G,EAGTjrD,mBAAmBC,EAAaC,EAAeC,GAE7C,OAD8BD,EAAc7tD,MAAMq7C,2BAA6BwS,EAAc7tD,MAAMi7C,UAAU,SAAW6S,EAAW9tD,MAAMi7C,UAAU,QACnF,MAAhC2S,EAAY3kD,MAAM,YAKtDtP,EAAQqlB,QAAU25F,G,6BC3BlB,IAAIz8D,EAAkBn+C,MAAQA,KAAKm+C,kBAAoB3hD,OAAOY,OAAS,SAAUb,EAAGL,EAAGkjB,EAAGg/B,QAC7Ej5C,IAAPi5C,IAAkBA,EAAKh/B,GAC3B5iB,OAAOC,eAAeF,EAAG6hD,EAAI,CAC3B1hD,YAAY,EACZC,IAAK,WACH,OAAOT,EAAEkjB,OAGX,SAAU7iB,EAAGL,EAAGkjB,EAAGg/B,QACVj5C,IAAPi5C,IAAkBA,EAAKh/B,GAC3B7iB,EAAE6hD,GAAMliD,EAAEkjB,KAGRi/B,EAAqBr+C,MAAQA,KAAKq+C,qBAAuB7hD,OAAOY,OAAS,SAAUb,EAAG8iB,GACxF7iB,OAAOC,eAAeF,EAAG,UAAW,CAClCG,YAAY,EACZK,MAAOsiB,KAEP,SAAU9iB,EAAG8iB,GACf9iB,EAAW,QAAI8iB,IAGbi/B,EAAet+C,MAAQA,KAAKs+C,cAAgB,SAAU7qB,GACxD,GAAIA,GAAOA,EAAIv2B,WAAY,OAAOu2B,EAClC,IAAIjQ,EAAS,GACb,GAAW,MAAPiQ,EAAa,IAAK,IAAIrU,KAAKqU,EAAe,YAANrU,GAAmB5iB,OAAOkB,UAAUC,eAAe1B,KAAKw3B,EAAKrU,IAAI++B,EAAgB36B,EAAQiQ,EAAKrU,GAItI,OAFAi/B,EAAmB76B,EAAQiQ,GAEpBjQ,GAGLm4B,EAAkB37C,MAAQA,KAAK27C,iBAAmB,SAAUloB,GAC9D,OAAOA,GAAOA,EAAIv2B,WAAau2B,EAAM,CACnC,QAAWA,IAIfj3B,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAGT,MAAMi/C,EAAUL,EAAgB,EAAQ,IAElC4pC,EAAmC,EAAQ,GAE3CtpC,EAAU,EAAQ,IAElB6+D,EAAax8D,EAAa,EAAQ,KAElCuW,EAAU,wEAEhB,MAAMkmD,UAA2Bx1B,EAAiC5tC,uCAChEI,aAAazxC,GACX,OAAOuuD,EAGT1c,aAAa7xC,EAAS4E,GACpB,IAAI+mD,EAAajW,EAAQ/6B,QAAQ3a,EAAQ43C,SACzC,MAAM88D,EAAY9vG,EAAM,GAAGjG,cACrBg4C,EAAY32C,EAAQ8oD,0BAE1B,OAAQ4rD,GACN,IAAK,MACH,OAAOF,EAAWrwF,IAAInkB,EAAQq2C,WAEhC,IAAK,QACH,OAAOm+D,EAAWhpD,MAAMxrD,EAAQq2C,WAElC,IAAK,YACH,OAAOm+D,EAAWjpD,UAAUvrD,EAAQq2C,WAEtC,IAAK,WACL,IAAK,MACL,IAAK,OACH,OAAOm+D,EAAWnpD,SAASrrD,EAAQq2C,WAErC,IAAK,UACH,OAAOm+D,EAAWrpD,QAAQnrD,EAAQq2C,WAEpC,QACMq+D,EAAU9vG,MAAM,kBACd+mD,EAAW1uB,OAAS,IACtB0uB,EAAaA,EAAWxxD,KAAK,EAAG,QAGlCw7C,EAAQ8B,kBAAkBd,EAAWgV,GACrChV,EAAUD,MAAM,OAAQ,IAM9B,OAAOC,GAKXrhD,EAAQqlB,QAAU85F,G,6BClGlB,IAAIp/D,EAAkB37C,MAAQA,KAAK27C,iBAAmB,SAAUloB,GAC9D,OAAOA,GAAOA,EAAIv2B,WAAau2B,EAAM,CACnC,QAAWA,IAIfj3B,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAGT,MAAMwpD,EAAU,EAAQ,GAElBg/B,EAAmC,EAAQ,GAE3CvpC,EAAUL,EAAgB,EAAQ,IAElCM,EAAU,EAAQ,IAElB4Y,EAAU,2EAEhB,MAAMomD,UAA2B11B,EAAiC5tC,uCAChEI,eACE,OAAO8c,EAGT1c,aAAa7xC,EAAS4E,GACpB,MAAM+mD,EAAajW,EAAQ/6B,QAAQ3a,EAAQ43C,SACrCjB,EAAY32C,EAAQ8oD,0BAE1B,OAAQlkD,EAAM,GAAGjG,eACf,IAAK,YACHg4C,EAAUD,MAAM,WAAYuJ,EAAQtH,SAASyH,IAC7CzJ,EAAUD,MAAM,OAAQ,IACxB,MAEF,IAAK,UACL,IAAK,QACHC,EAAUD,MAAM,WAAYuJ,EAAQtH,SAASyH,IAC7CzJ,EAAUD,MAAM,OAAQ,IACxB,MAEF,IAAK,WACHf,EAAQoK,gBAAgBpJ,EAAWgV,GACnChV,EAAUj8C,OAAO,OAAQ,GACzBi8C,EAAUj8C,OAAO,SAAU,GAC3Bi8C,EAAUj8C,OAAO,SAAU,GAC3B,MAEF,IAAK,UACHi8C,EAAUD,MAAM,WAAYuJ,EAAQtH,SAASwH,IAC7CxJ,EAAUD,MAAM,OAAQ,GACxB,MAEF,IAAK,OACHC,EAAUD,MAAM,WAAYuJ,EAAQtH,SAASwH,IAC7CxJ,EAAUD,MAAM,OAAQ,IAI5B,OAAOC,GAKXrhD,EAAQqlB,QAAUg6F,G,6BChElBz+G,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAGT,MAAMyvG,EAAc,EAAQ,GAEtBpsD,EAAY,EAAQ,GAEpBmlC,EAAmC,EAAQ,GAE3C21B,EAAa,EAAQ,IAErBrmD,EAAU,IAAInjD,OAAwF,2EAAI0uC,EAAU7E,gBAAgBixD,EAAYrsD,mGAA8G,KAKpQ,MAAMg7D,UAAwB51B,EAAiC5tC,uCAC7DI,eACE,OAAO8c,EAGT1c,aAAa7xC,EAAS4E,GACpB,MAAMkwG,EAAYlwG,EATA,GASqBjG,cACjCsyB,EAAUi1E,EAAYrsD,mBAAmBi7D,GACzCt4F,EAAS5X,EAZE,GAaXmwG,EAAUnwG,EAXE,GAYlB,IAAIowG,EAAex4F,GAAUu4F,EAC7BC,EAAeA,GAAgB,GAC/BA,EAAeA,EAAar2G,cAC5B,IAAI4M,EAAW,KAUf,MARoB,QAAhBypG,GAA0C,QAAhBA,EAC5BzpG,EAAW,OACc,QAAhBypG,EACTzpG,EAAW,OACc,QAAhBypG,IACTzpG,EAAW,QAGNqpG,EAAW/mD,iCAAiC7tD,EAAQq2C,UAAWplB,EAAS1lB,IAKnFjW,EAAQqlB,QAAUk6F,G,6BC7ClB,IAAIx/D,EAAkB37C,MAAQA,KAAK27C,iBAAmB,SAAUloB,GAC9D,OAAOA,GAAOA,EAAIv2B,WAAau2B,EAAM,CACnC,QAAWA,IAIfj3B,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAGT,MAAMyvG,EAAc,EAAQ,GAEtBp+C,EAAY,EAAQ,GAEpBpS,EAAUL,EAAgB,EAAQ,IAElC4pC,EAAmC,EAAQ,GAE3CnlC,EAAY,EAAQ,GAEpByU,EAAU,IAAInjD,OAAO,2CAA2C0uC,EAAU7E,gBAAgBixD,EAAY1sD,0CAAgD,KAI5J,MAAMy7D,UAAmCh2B,EAAiC5tC,uCACxEI,eACE,OAAO8c,EAGT1c,aAAa7xC,EAAS4E,GACpB,MAAM2G,EAAW3G,EATO,GASoBjG,cACtCu2G,EAAWtwG,EATO,GASoBjG,cACtCw2G,EAAWjP,EAAY1sD,qBAAqB07D,GAElD,GAAgB,QAAZ3pG,GAAsBA,EAASs2E,WAAW,SAAU,CACtD,MAAMthC,EAAY,GAElB,OADAA,EAAU40D,GAAY,EACfrtD,EAAUvS,kBAAkBgxD,4BAA4BvmG,EAAQq2C,UAAWkK,GAGpF,GAAgB,QAAZh1C,GAAkC,QAAZA,EAAoB,CAC5C,MAAMg1C,EAAY,GAElB,OADAA,EAAU40D,IAAa,EAChBrtD,EAAUvS,kBAAkBgxD,4BAA4BvmG,EAAQq2C,UAAWkK,GAGpF,MAAMhJ,EAAav3C,EAAQ8oD,0BAC3B,IAAI9+B,EAAO0rB,EAAQ/6B,QAAQ3a,EAAQq2C,UAAUR,SAoB7C,OAlBIq/D,EAAStwG,MAAM,UACjBolB,EAAOA,EAAK7vB,KAAK6vB,EAAK3zB,IAAI,KAAM,KAChCkhD,EAAWb,MAAM,MAAO1sB,EAAKA,QAC7ButB,EAAWb,MAAM,QAAS1sB,EAAKD,QAAU,GACzCwtB,EAAWb,MAAM,OAAQ1sB,EAAKZ,SACrB8rF,EAAStwG,MAAM,WACxBolB,EAAOA,EAAK7vB,IAAmB,EAAd6vB,EAAKA,OAAY,KAClCutB,EAAWb,MAAM,MAAO1sB,EAAKA,QAC7ButB,EAAW78C,OAAO,OAAQsvB,EAAKZ,QAC/BmuB,EAAW78C,OAAO,QAASsvB,EAAKD,QAAU,IACjCmrF,EAAStwG,MAAM,WACxBolB,EAAOA,EAAK7vB,IAAmB,EAAd6vB,EAAKA,OAAY,KAClCA,EAAOA,EAAK7vB,KAAK6vB,EAAKD,QAAS,SAC/BwtB,EAAWb,MAAM,MAAO1sB,EAAKA,QAC7ButB,EAAWb,MAAM,QAAS1sB,EAAKD,QAAU,GACzCwtB,EAAW78C,OAAO,OAAQsvB,EAAKZ,SAG1BmuB,GAKXjiD,EAAQqlB,QAAUs6F,G,6BCxElB/+G,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAGT,MAAMyvG,EAAc,EAAQ,GAEtBp+C,EAAY,EAAQ,GAEpBm3B,EAAmC,EAAQ,GAE3CnxB,EAAc,EAAQ,IAEtBS,EAAU,IAAInjD,OAAO,yCAAyC86F,EAAYjtD,+BAAgC,KAEhH,MAAMm8D,UAA6Cn2B,EAAiC5tC,uCAClFI,eACE,OAAO8c,EAGT1c,aAAa7xC,EAAS4E,GACpB,MAAM4X,EAAS5X,EAAM,GAAGjG,cACxB,IAAI4hD,EAAY2lD,EAAYltD,eAAep0C,EAAM,IAEjD,OAAQ4X,GACN,IAAK,OACL,IAAK,OACL,IAAK,IACH+jC,EAAYuN,EAAYxN,iBAAiBC,GAI7C,OAAOuH,EAAUvS,kBAAkBgxD,4BAA4BvmG,EAAQq2C,UAAWkK,IAKtFjrD,EAAQqlB,QAAUy6F,G,6BCpClBl/G,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAGT,MAAM0yD,EAAqB,EAAQ,IAE7BrB,EAAY,EAAQ,GAEpBo+C,EAAc,EAAQ,GAEtBp4C,EAAc,EAAQ,IAE5B,SAASunD,EAA+Bn4F,GACtC,OAAkD,MAA3CA,EAAOy6B,KAAK/yC,MAAM,sBAO3B,MAAM0wG,UAAmCnsD,EAAmBE,eAC1DK,iBACE,MAAO,SAGTJ,mBAAmBC,EAAaC,EAAeC,GAC7C,QAAKF,EAAY3kD,MAAMlL,KAAKgwD,uBAIvB2rD,EAA+B7rD,KAdFtsC,EAckDssC,EAbpC,MAA3CtsC,EAAOy6B,KAAK/yC,MAAM,4BAiBd6kD,EAAW9tD,MAAMtF,IAAI,UAAYozD,EAAW9tD,MAAMtF,IAAI,YAAcozD,EAAW9tD,MAAMtF,IAAI,UAlBtG,IAAsC6mB,EAqBpCysC,aAAaJ,EAAaC,EAAeC,GACvC,IAAIlJ,EAAY2lD,EAAYltD,eAAewQ,EAAc7R,MAErD09D,EAA+B7rD,KACjCjJ,EAAYuN,EAAYxN,iBAAiBC,IAG3C,MAAMhJ,EAAauQ,EAAUvS,kBAAkBgxD,4BAA4B,IAAIz+C,EAAUtS,sBAAsBiU,EAAW9tD,MAAMquB,QAASu2B,GACzI,OAAO,IAAIuH,EAAUxS,cAAcmU,EAAWpT,UAAWmT,EAAcpuD,MAAO,GAAGouD,EAAc7R,OAAO4R,IAAcE,EAAW9R,OAAQJ,IAK3IjiD,EAAQqlB,QAAU26F,G,6BClDlB,IAAIjgE,EAAkB37C,MAAQA,KAAK27C,iBAAmB,SAAUloB,GAC9D,OAAOA,GAAOA,EAAIv2B,WAAau2B,EAAM,CACnC,QAAWA,IAIfj3B,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAETnB,EAAQsoF,oBAAsBtoF,EAAQ2yD,0BAA4B3yD,EAAQ2iD,UAAY3iD,EAAQuK,MAAQvK,EAAQ0pB,OAAS1pB,EAAQ4iD,YAAS,EAExI,MAAMumC,EAAmB,EAAQ,IAE3B5lC,EAAW,EAAQ,IAEnBimC,EAA0BzpC,EAAgB,EAAQ,KAElDoV,EAAoBpV,EAAgB,EAAQ,MAE5CkgE,EAA2BlgE,EAAgB,EAAQ,MAEnDmgE,EAAoBngE,EAAgB,EAAQ,MAE5CogE,EAAmCpgE,EAAgB,EAAQ,MAE3DqgE,EAA4BrgE,EAAgB,EAAQ,MAEpDsgE,EAA2BtgE,EAAgB,EAAQ,MAEnDugE,EAAuBvgE,EAAgB,EAAQ,MAE/CwgE,EAAuBxgE,EAAgB,EAAQ,MAE/CygE,EAAkCzgE,EAAgB,EAAQ,MAE1D0gE,EAAmC1gE,EAAgB,EAAQ,MAiBjE,SAAS4S,EAA0BuG,GAAe,GAChD,MAAMzV,EAAS6kC,GAAoB,EAAOpvB,GAI1C,OAHAzV,EAAOmP,QAAQ0C,QAAQ,IAAIirD,EAAqBl7F,SAChDo+B,EAAOmP,QAAQ0C,QAAQ,IAAIgrD,EAAqBj7F,SAChDo+B,EAAOmP,QAAQ0C,QAAQ,IAAImrD,EAAiCp7F,SACrDo+B,EAKT,SAAS6kC,EAAoBjzB,GAAa,EAAM6D,GAAe,GAC7D,OAAOiwB,EAAiBt0B,2BAA2B,CACjDjC,QAAS,CAAC,IAAIuC,EAAkB9vC,QAAW,IAAImkE,EAAwBnkE,QAAQ6zC,GAAe,IAAI+mD,EAAyB56F,QAAW,IAAI86F,EAAiC96F,QAAW,IAAIm7F,EAAgCn7F,QAAW,IAAI66F,EAAkB76F,SAC3PwtC,SAAU,CAAC,IAAIutD,EAA0B/6F,QAAW,IAAIg7F,EAAyBh7F,UAChFgwC,GA7BLr1D,EAAQ4iD,OAAS,IAAIW,EAASD,OAAOqP,KACrC3yD,EAAQ0pB,OAAS,IAAI65B,EAASD,OAAOglC,GAAoB,IAMzDtoF,EAAQuK,MAJR,SAAe83C,EAAMmB,EAAKC,GACxB,OAAOzjD,EAAQ4iD,OAAOr4C,MAAM83C,EAAMmB,EAAKC,IASzCzjD,EAAQ2iD,UAJR,SAAmBN,EAAMmB,EAAKC,GAC5B,OAAOzjD,EAAQ4iD,OAAOD,UAAUN,EAAMmB,EAAKC,IAa7CzjD,EAAQ2yD,0BAA4BA,EASpC3yD,EAAQsoF,oBAAsBA,G,6BCrE9B1nF,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAGT,MAAM67G,EAAiC,EAAQ,IAE/C,MAAM0D,UAA+B1D,EAA+BzmD,6BAClEwB,gBACE,MAAO,sBAGTE,iBACE,MAAO,4CAGTd,6BAA6BzsD,EAAS4E,GACpC,OAAIA,EAAM,GAAGA,MAAM,iBACV,KAGF4tG,MAAM/lD,6BAA6BzsD,EAAS4E,IAKvDtP,EAAQqlB,QAAUq7F,G,6BCzBlB9/G,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAGT,MAAMyvG,EAAc,EAAQ,IAEtBpsD,EAAY,EAAQ,GAEpBmlC,EAAmC,EAAQ,GAE3C21B,EAAa,EAAQ,IAErBrmD,EAAU,IAAInjD,OAA+G,qGAAI0uC,EAAU7E,gBAAgBixD,EAAYrsD,+GAAuH,KAKpS,MAAMo8D,UAAwBh3B,EAAiC5tC,uCAC7DI,eACE,OAAO8c,EAGT1c,aAAa7xC,EAAS4E,GACpB,MAAMkwG,EAAYlwG,EARA,GAQqBjG,cACjC+hC,EAASwlE,EAAYrsD,mBAAmBi7D,GACxCt4F,EAAS5X,EAZE,GAaXmwG,EAAUnwG,EAZC,GAajB,IAAIowG,EAAex4F,GAAUu4F,EAC7BC,EAAeA,GAAgB,GAC/BA,EAAeA,EAAar2G,cAC5B,IAAI4M,EAAW,KAUf,OARIypG,EAAapwG,MAAM,UACrB2G,EAAW,OACFypG,EAAapwG,MAAM,SAC5B2G,EAAW,OACFypG,EAAapwG,MAAM,WAC5B2G,EAAW,QAGNqpG,EAAW/mD,iCAAiC7tD,EAAQq2C,UAAW3V,EAAQn1B,IAKlFjW,EAAQqlB,QAAUs7F,G,6BC7ClB//G,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAGT,MAAMwpD,EAAU,EAAQ,GAElBi2D,EAAoB,IAAI9qG,OAAO,wOAA4Q,KAC3S+qG,EAAqB,IAAI/qG,OAAO,mQAAwR,KAM9T,MAAMgrG,EACJjrG,QAAQnL,GACN,OAAOk2G,EAGTxkE,QAAQ1xC,EAAS4E,GACf,MAAMsY,EAASld,EAAQ6oD,oBAAoBjkD,EAAMxJ,MAAQwJ,EAAM,GAAGrM,OAAQqM,EAAM,GAAGgtC,UAAUhtC,EAAM,GAAGrM,SAEtG,GAAI2kB,EAAOy6B,KAAK/yC,MAAM,WAEpB,OADAA,EAAMxJ,OAASwJ,EAAM,GAAGrM,OACjB,KAKT,GAFA2kB,EAAOvhB,MAAQy6G,EAA+BC,qBAAqBn5F,EAAOvhB,MAAMwlC,QAASv8B,IAEpFsY,EAAOvhB,MAEV,OADAiJ,EAAMxJ,OAASwJ,EAAM,GAAGrM,OACjB,KAGT,MAAM6mD,EAAgBp/C,EAAQ23C,KAAK/F,UAAUhtC,EAAMxJ,MAAQwJ,EAAM,GAAGrM,QAC9D+9G,EAAcH,EAAmB58E,KAAK6lB,GAU5C,OARIk3D,IACFp5F,EAAO1E,IAAM49F,EAA+BC,qBAAqBn5F,EAAOvhB,MAAMwlC,QAASm1E,GAEnFp5F,EAAO1E,MACT0E,EAAOy6B,MAAQ2+D,EAAY,KAIxBp5F,EAGT,4BAA4Bq5F,EAAsB3xG,GAChD,IAAIq4B,EAAO,EACPc,EAAS,EACT9d,EAAW,KAOf,GANAgd,EAAOlN,SAASnrB,EA3CD,IA6CY,MAAvBA,EA5Ca,KA6Cfm5B,EAAShO,SAASnrB,EA7CH,KAgDbm5B,GAAU,IAAMd,EAAO,GACzB,OAAO,KAOT,GAJIA,GAAQ,KACVhd,EAAWggC,EAAQtH,SAASyH,IAGC,MAA3Bx7C,EAtDiB,GAsDgB,CACnC,GAAIq4B,EAAO,GAAI,OAAO,KACtB,MAAM8vB,EAAOnoD,EAxDM,GAwDkBjG,cAEjCouD,EAAKnoD,MAAM,sBACbqb,EAAWggC,EAAQtH,SAASwH,GAEhB,IAARljB,IACFA,EAAO,IAIP8vB,EAAKnoD,MAAM,sBACbqb,EAAWggC,EAAQtH,SAASyH,GAEhB,IAARnjB,IACFA,GAAQ,KAIR8vB,EAAKnoD,MAAM,WACD,IAARq4B,GACFhd,EAAWggC,EAAQtH,SAASwH,GAC5BljB,EAAO,GACEA,EAAO,EAChBhd,EAAWggC,EAAQtH,SAASwH,IAE5BlgC,EAAWggC,EAAQtH,SAASyH,GAC5BnjB,GAAQ,KAkBd,GAbAs5E,EAAqB77G,OAAO,OAAQuiC,GACpCs5E,EAAqB77G,OAAO,SAAUqjC,GAErB,OAAb9d,EACFs2F,EAAqB77G,OAAO,WAAYulB,GAEpCgd,EAAO,GACTs5E,EAAqB7/D,MAAM,WAAYuJ,EAAQtH,SAASwH,IAExDo2D,EAAqB7/D,MAAM,WAAYuJ,EAAQtH,SAASyH,IAIjC,MAAvBx7C,EArGa,GAqGgB,CAC/B,MAAMo5B,EAASjO,SAASnrB,EAtGT,IAuGf,GAAIo5B,GAAU,GAAI,OAAO,KACzBu4E,EAAqB77G,OAAO,SAAUsjC,GAGxC,OAAOu4E,GAKXjhH,EAAQqlB,QAAUy7F,G,6BC1HlB,IAAI/gE,EAAkB37C,MAAQA,KAAK27C,iBAAmB,SAAUloB,GAC9D,OAAOA,GAAOA,EAAIv2B,WAAau2B,EAAM,CACnC,QAAWA,IAIfj3B,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAGT,MAAMq8G,EAAkCz9D,EAAgB,EAAQ,KAEhE,MAAMmhE,UAAgC1D,EAAgCn4F,QACpE+uC,iBACE,MAAO,sCAKXp0D,EAAQqlB,QAAU67F,G,6BCnBlB,IAAInhE,EAAkB37C,MAAQA,KAAK27C,iBAAmB,SAAUloB,GAC9D,OAAOA,GAAOA,EAAIv2B,WAAau2B,EAAM,CACnC,QAAWA,IAIfj3B,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAGT,MAAMu8G,EAAiC39D,EAAgB,EAAQ,KAE/D,MAAMohE,UAA+BzD,EAA+Br4F,QAClE+uC,iBACE,OAAO,IAAIt+C,OAAO,6BAKtB9V,EAAQqlB,QAAU87F,G,6BCnBlB,IAAI5+D,EAAkBn+C,MAAQA,KAAKm+C,kBAAoB3hD,OAAOY,OAAS,SAAUb,EAAGL,EAAGkjB,EAAGg/B,QAC7Ej5C,IAAPi5C,IAAkBA,EAAKh/B,GAC3B5iB,OAAOC,eAAeF,EAAG6hD,EAAI,CAC3B1hD,YAAY,EACZC,IAAK,WACH,OAAOT,EAAEkjB,OAGX,SAAU7iB,EAAGL,EAAGkjB,EAAGg/B,QACVj5C,IAAPi5C,IAAkBA,EAAKh/B,GAC3B7iB,EAAE6hD,GAAMliD,EAAEkjB,KAGRi/B,EAAqBr+C,MAAQA,KAAKq+C,qBAAuB7hD,OAAOY,OAAS,SAAUb,EAAG8iB,GACxF7iB,OAAOC,eAAeF,EAAG,UAAW,CAClCG,YAAY,EACZK,MAAOsiB,KAEP,SAAU9iB,EAAG8iB,GACf9iB,EAAW,QAAI8iB,IAGbi/B,EAAet+C,MAAQA,KAAKs+C,cAAgB,SAAU7qB,GACxD,GAAIA,GAAOA,EAAIv2B,WAAY,OAAOu2B,EAClC,IAAIjQ,EAAS,GACb,GAAW,MAAPiQ,EAAa,IAAK,IAAIrU,KAAKqU,EAAe,YAANrU,GAAmB5iB,OAAOkB,UAAUC,eAAe1B,KAAKw3B,EAAKrU,IAAI++B,EAAgB36B,EAAQiQ,EAAKrU,GAItI,OAFAi/B,EAAmB76B,EAAQiQ,GAEpBjQ,GAGLm4B,EAAkB37C,MAAQA,KAAK27C,iBAAmB,SAAUloB,GAC9D,OAAOA,GAAOA,EAAIv2B,WAAau2B,EAAM,CACnC,QAAWA,IAIfj3B,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAGT,MAAMi/C,EAAUL,EAAgB,EAAQ,IAElC4pC,EAAmC,EAAQ,GAE3CtpC,EAAU,EAAQ,IAElBkgE,EAAuBxgE,EAAgB,EAAQ,MAE/Cm/D,EAAax8D,EAAa,EAAQ,KAElCuW,EAAU,IAAInjD,OAAO,oKAA4K,KAIvM,MAAMsrG,UAA2Bz3B,EAAiC5tC,uCAChEI,aAAazxC,GACX,OAAOuuD,EAGT1c,aAAa7xC,EAAS4E,GACpB,IAAI+mD,EAAajW,EAAQ/6B,QAAQ3a,EAAQ43C,SACzC,MAAM++D,GAAe/xG,EAVN,IAU2B,IAAIjG,cACxCi4G,GAAehyG,EAVN,IAU2B,IAAIjG,cAC9C,IAAIg4C,EAAY32C,EAAQ8oD,0BAExB,OAAQ6tD,GACN,IAAK,QACHhgE,EAAY69D,EAAWrwF,IAAInkB,EAAQq2C,WACnC,MAEF,IAAK,QACHM,EAAY69D,EAAWhpD,MAAMxrD,EAAQq2C,WACrC,MAEF,IAAK,SACHV,EAAQqK,iBAAiBrJ,EAAWgV,GACpC,MAEF,IAAK,gBACL,IAAK,cACHA,EAAaA,EAAWxxD,IAAI,EAAG,OAC/Bw7C,EAAQqK,iBAAiBrJ,EAAWgV,GACpC,MAEF,IAAK,UACHA,EAAaA,EAAWxxD,KAAK,EAAG,OAChCw7C,EAAQ8B,kBAAkBd,EAAWgV,GACrChW,EAAQ+B,iBAAiBf,EAAWgV,GACpC,MAEF,IAAK,aACHA,EAAaA,EAAWxxD,KAAK,EAAG,OAChCw7C,EAAQ8B,kBAAkBd,EAAWgV,GACrChW,EAAQ+B,iBAAiBf,EAAWgV,GACpC,MAEF,QACMgrD,EAAY/xG,MAAM,oBAChB+mD,EAAW1uB,OAAS,IACtB0uB,EAAaA,EAAWxxD,KAAK,EAAG,QAGlCw7C,EAAQ8B,kBAAkBd,EAAWgV,GACrChV,EAAUD,MAAM,OAAQ,IAU9B,OAJIkgE,IACFjgE,EAAYk/D,EAAqBl7F,QAAQ4kE,sBAAsB5oC,EAAWigE,IAGrEjgE,GAKXrhD,EAAQqlB,QAAU+7F,G,6BCxHlBxgH,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAGT,MAAMsjD,EAAU,EAAQ,GAElBmsD,EAAc,EAAQ,IAEtB6L,EAAc,EAAQ,IAEtBj4D,EAAY,EAAQ,GAEpBmlC,EAAmC,EAAQ,GAE3C1wB,EAAU,IAAInjD,OAA0I,wHAAI0uC,EAAU7E,gBAAgBixD,EAAYvsD,uCAA4Co4D,EAAY54D,wCAA8C,KAM9S,MAAM09D,UAAsC53B,EAAiC5tC,uCAC3EI,eACE,OAAO8c,EAGT1c,aAAa7xC,EAAS4E,GACpB,MAAMsY,EAASld,EAAQ6oD,oBAAoBjkD,EAAMxJ,MAAOwJ,EAAM,IACxDmlB,EAAQm8E,EAAYvsD,iBAAiB/0C,EAVtB,GAU8CjG,eAC7Dy0B,EAAMrD,SAASnrB,EAbN,IAef,GAAIwuB,EAAM,GAER,OADAxuB,EAAMxJ,MAAQwJ,EAAMxJ,MAAQwJ,EAhBf,GAgBiCrM,OACvC,KAMT,GAHA2kB,EAAOvhB,MAAMjB,OAAO,QAASqvB,GAC7B7M,EAAOvhB,MAAMjB,OAAO,MAAO04B,GAEvBxuB,EApBW,GAoBQ,CACrB,MAAM06C,EAAayyD,EAAY74D,UAAUt0C,EArB5B,IAsBbsY,EAAOvhB,MAAMjB,OAAO,OAAQ4kD,OACvB,CACL,MAAMl2B,EAAO2wB,EAAQsF,qBAAqBr/C,EAAQ43C,QAASxkB,EAAKrJ,GAChE7M,EAAOvhB,MAAM+6C,MAAM,OAAQttB,GAG7B,GAAIxkB,EA9Bc,GA8BQ,CACxB,MAAM+tD,EAAU5iC,SAASnrB,EA/BT,IAgChBsY,EAAO1E,IAAM0E,EAAOvhB,MAAMwlC,QAC1BjkB,EAAO1E,IAAI9d,OAAO,MAAOi4D,GAG3B,OAAOz1C,GAKX5nB,EAAQqlB,QAAUk8F,G,6BCzDlB3gH,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAGT,MAAMyvG,EAAc,EAAQ,IAEtBp+C,EAAY,EAAQ,GAEpBm3B,EAAmC,EAAQ,GAE3CnxB,EAAc,EAAQ,IAEtBhU,EAAY,EAAQ,GAE1B,MAAMg9D,UAAkC73B,EAAiC5tC,uCACvEv4C,cACE05G,QAGF/gE,eACE,OAAO,IAAIrmC,OAA2H,sHAAI86F,EAAY3sD,2HAAkIO,EAAU7E,gBAAgBixD,EAAY1sD,yBAA0B,KAG1V3H,aAAa7xC,EAAS4E,GACpB,MAAMo1C,EAAMp1C,EAAM,GAAKshG,EAAY5sD,mBAAmB10C,EAAM,IAAM,EAElE,IAAI27C,EAAY,GAChBA,EAFa2lD,EAAY1sD,qBAAqB50C,EAAM,GAAGjG,gBAErCq7C,EAClB,IAAIzuC,EAAW3G,EAAM,IAAMA,EAAM,IAAM,GAGvC,GAFA2G,EAAWA,EAAS5M,cAEf4M,EAQL,OAJI,MAAMvS,KAAKuS,IAAa,SAASvS,KAAKuS,IAAa,YAAYvS,KAAKuS,MACtEg1C,EAAYuN,EAAYxN,iBAAiBC,IAGpCuH,EAAUvS,kBAAkBgxD,4BAA4BvmG,EAAQq2C,UAAWkK,IAKtFjrD,EAAQqlB,QAAUm8F,G,6BC5ClB,IAAIzhE,EAAkB37C,MAAQA,KAAK27C,iBAAmB,SAAUloB,GAC9D,OAAOA,GAAOA,EAAIv2B,WAAau2B,EAAM,CACnC,QAAWA,IAIfj3B,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAETnB,EAAQsoF,oBAAsBtoF,EAAQ2yD,0BAA4B3yD,EAAQ2iD,UAAY3iD,EAAQuK,MAAQvK,EAAQ0pB,OAAS1pB,EAAQ4iD,YAAS,EAExI,MAAMumC,EAAmB,EAAQ,IAE3B5lC,EAAW,EAAQ,IAEnBk+D,EAAuB1hE,EAAgB,EAAQ,MAE/C2hE,EAAuB3hE,EAAgB,EAAQ,MAE/CypC,EAA0BzpC,EAAgB,EAAQ,KAElD4hE,EAA2B5hE,EAAgB,EAAQ,MAEnD6hE,EAA2B7hE,EAAgB,EAAQ,MAEnD8hE,EAA4B9hE,EAAgB,EAAQ,MAEpD+hE,EAAoB/hE,EAAgB,EAAQ,MAE5CgiE,EAAmChiE,EAAgB,EAAQ,MAE3DiiE,EAAkCjiE,EAAgB,EAAQ,MAE1DkiE,EAA8BliE,EAAgB,EAAQ,MAEtDmiE,EAAiCniE,EAAgB,EAAQ,MAEzDoiE,EAAmCpiE,EAAgB,EAAQ,MAiBjE,SAAS4S,EAA0BuG,GAAe,GAChD,MAAMzV,EAAS6kC,GAAoB,EAAOpvB,GAI1C,OAHAzV,EAAOmP,QAAQ0C,QAAQ,IAAImsD,EAAqBp8F,SAChDo+B,EAAOmP,QAAQ0C,QAAQ,IAAIosD,EAAqBr8F,SAChDo+B,EAAOmP,QAAQ0C,QAAQ,IAAI6sD,EAAiC98F,SACrDo+B,EAKT,SAAS6kC,EAAoBjzB,GAAa,EAAM6D,GAAe,GAC7D,OAAOiwB,EAAiBt0B,2BAA2B,CACjDjC,QAAS,CAAC,IAAI42B,EAAwBnkE,QAAQ6zC,GAAe,IAAI8oD,EAAgC38F,QAAW,IAAIs8F,EAAyBt8F,QAAW,IAAI08F,EAAiC18F,QAAW,IAAI48F,EAA4B58F,QAAW,IAAI68F,EAA+B78F,QAAW,IAAIy8F,EAAkBz8F,SACnTwtC,SAAU,CAAC,IAAI+uD,EAAyBv8F,QAAW,IAAIw8F,EAA0Bx8F,UAChFgwC,GA7BLr1D,EAAQ4iD,OAAS,IAAIW,EAASD,OAAOqP,KACrC3yD,EAAQ0pB,OAAS,IAAI65B,EAASD,OAAOglC,GAAoB,IAMzDtoF,EAAQuK,MAJR,SAAe83C,EAAMmB,EAAKC,GACxB,OAAOzjD,EAAQ4iD,OAAOr4C,MAAM83C,EAAMmB,EAAKC,IASzCzjD,EAAQ2iD,UAJR,SAAmBN,EAAMmB,EAAKC,GAC5B,OAAOzjD,EAAQ4iD,OAAOD,UAAUN,EAAMmB,EAAKC,IAa7CzjD,EAAQ2yD,0BAA4BA,EASpC3yD,EAAQsoF,oBAAsBA,G,6BCvE9B,IAAI/lC,EAAkBn+C,MAAQA,KAAKm+C,kBAAoB3hD,OAAOY,OAAS,SAAUb,EAAGL,EAAGkjB,EAAGg/B,QAC7Ej5C,IAAPi5C,IAAkBA,EAAKh/B,GAC3B5iB,OAAOC,eAAeF,EAAG6hD,EAAI,CAC3B1hD,YAAY,EACZC,IAAK,WACH,OAAOT,EAAEkjB,OAGX,SAAU7iB,EAAGL,EAAGkjB,EAAGg/B,QACVj5C,IAAPi5C,IAAkBA,EAAKh/B,GAC3B7iB,EAAE6hD,GAAMliD,EAAEkjB,KAGRi/B,EAAqBr+C,MAAQA,KAAKq+C,qBAAuB7hD,OAAOY,OAAS,SAAUb,EAAG8iB,GACxF7iB,OAAOC,eAAeF,EAAG,UAAW,CAClCG,YAAY,EACZK,MAAOsiB,KAEP,SAAU9iB,EAAG8iB,GACf9iB,EAAW,QAAI8iB,IAGbi/B,EAAet+C,MAAQA,KAAKs+C,cAAgB,SAAU7qB,GACxD,GAAIA,GAAOA,EAAIv2B,WAAY,OAAOu2B,EAClC,IAAIjQ,EAAS,GACb,GAAW,MAAPiQ,EAAa,IAAK,IAAIrU,KAAKqU,EAAe,YAANrU,GAAmB5iB,OAAOkB,UAAUC,eAAe1B,KAAKw3B,EAAKrU,IAAI++B,EAAgB36B,EAAQiQ,EAAKrU,GAItI,OAFAi/B,EAAmB76B,EAAQiQ,GAEpBjQ,GAGLm4B,EAAkB37C,MAAQA,KAAK27C,iBAAmB,SAAUloB,GAC9D,OAAOA,GAAOA,EAAIv2B,WAAau2B,EAAM,CACnC,QAAWA,IAIfj3B,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAGT,MAAMi/C,EAAUL,EAAgB,EAAQ,IAElC4K,EAAU,EAAQ,GAElBg/B,EAAmC,EAAQ,GAE3CtpC,EAAU,EAAQ,IAElB6+D,EAAax8D,EAAa,EAAQ,KAExC,MAAM0/D,UAA2Bz4B,EAAiC5tC,uCAChEI,aAAazxC,GACX,MAAO,yEAGT6xC,aAAa7xC,EAAS4E,GACpB,IAAI+mD,EAAajW,EAAQ/6B,QAAQ3a,EAAQ43C,SACzC,MAAM88D,EAAY9vG,EAAM,GAAGjG,cACrBg4C,EAAY32C,EAAQ8oD,0BAE1B,OAAQ4rD,GACN,IAAK,aACH,OAAOF,EAAWrwF,IAAInkB,EAAQq2C,WAEhC,IAAK,cACH,OAAOm+D,EAAWhpD,MAAMxrD,EAAQq2C,WAElC,IAAK,OACH,OAAOm+D,EAAWjpD,UAAUvrD,EAAQq2C,WAEtC,IAAK,SACH,OAAOm+D,EAAWnpD,SAASrrD,EAAQq2C,WAErC,QACMq+D,EAAU9vG,MAAM,iBAClB+wC,EAAQ8B,kBAAkBd,EAAWgV,GACrChV,EAAUD,MAAM,OAAQ,IACxBC,EAAUD,MAAM,WAAYuJ,EAAQtH,SAASyH,KACpCs0D,EAAU9vG,MAAM,iBACzB+mD,EAAaA,EAAWxxD,KAAK,EAAG,OAChCw7C,EAAQ8B,kBAAkBd,EAAWgV,GACrChV,EAAUD,MAAM,OAAQ,IAK9B,OAAOC,GAKXrhD,EAAQqlB,QAAU+8F,G,6BC7FlBxhH,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAGT,MAAMwpD,EAAU,EAAQ,GAElBg/B,EAAmC,EAAQ,GAEjD,MAAM04B,UAA2B14B,EAAiC5tC,uCAChEI,aAAazxC,GACX,MAAO,yEAGT6xC,aAAa7xC,EAAS4E,GACpB,MAAMgzG,EAAchzG,EAAM,GAAGjG,cACvBg4C,EAAY32C,EAAQ8oD,0BAE1B,OAAQ8uD,GACN,IAAK,gBACL,IAAK,QACHjhE,EAAUD,MAAM,OAAQ,IACxBC,EAAUD,MAAM,SAAU,GAC1BC,EAAUD,MAAM,WAAYuJ,EAAQtH,SAASyH,IAC7C,MAEF,IAAK,OACHzJ,EAAUD,MAAM,OAAQ,IACxBC,EAAUD,MAAM,SAAU,GAC1BC,EAAUD,MAAM,WAAYuJ,EAAQtH,SAASyH,IAC7C,MAEF,IAAK,QACHzJ,EAAUD,MAAM,OAAQ,GACxBC,EAAUD,MAAM,SAAU,GAC1BC,EAAUD,MAAM,WAAYuJ,EAAQtH,SAASwH,IAC7C,MAEF,IAAK,SACHxJ,EAAUD,MAAM,OAAQ,IACxBC,EAAUD,MAAM,SAAU,GAC1BC,EAAUD,MAAM,WAAYuJ,EAAQtH,SAASwH,IAC7C,MAEF,IAAK,cACHxJ,EAAUD,MAAM,OAAQ,GACxBC,EAAUD,MAAM,WAAYuJ,EAAQtH,SAASwH,IAIjD,OAAOxJ,GAKXrhD,EAAQqlB,QAAUg9F,G,6BCtDlBzhH,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAGT,MAAM67G,EAAiC,EAAQ,IAE/C,MAAMuF,UAA+BvF,EAA+BzmD,6BAClEwB,gBACE,MAAO,uBAGTE,iBACE,MAAO,oDAGTd,6BAA6BzsD,EAAS4E,GACpC,OAAIA,EAAM,GAAGA,MAAM,iBACV,KAGF4tG,MAAM/lD,6BAA6BzsD,EAAS4E,IAKvDtP,EAAQqlB,QAAUk9F,G,6BCzBlB,IAAIxiE,EAAkB37C,MAAQA,KAAK27C,iBAAmB,SAAUloB,GAC9D,OAAOA,GAAOA,EAAIv2B,WAAau2B,EAAM,CACnC,QAAWA,IAIfj3B,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAGT,MAAMu8G,EAAiC39D,EAAgB,EAAQ,KAE/D,MAAMyiE,UAA+B9E,EAA+Br4F,QAClE+uC,iBACE,OAAO,IAAIt+C,OAAO,sCAKtB9V,EAAQqlB,QAAUm9F,G,6BCnBlB,IAAIziE,EAAkB37C,MAAQA,KAAK27C,iBAAmB,SAAUloB,GAC9D,OAAOA,GAAOA,EAAIv2B,WAAau2B,EAAM,CACnC,QAAWA,IAIfj3B,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAGT,MAAMq8G,EAAkCz9D,EAAgB,EAAQ,KAEhE,MAAM0iE,UAAgCjF,EAAgCn4F,QACpE+uC,iBACE,MAAO,uBAKXp0D,EAAQqlB,QAAUo9F,G,6BCnBlB7hH,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAGT,MAAMyvG,EAAc,EAAQ,IAEtBpsD,EAAY,EAAQ,GAEpBmlC,EAAmC,EAAQ,GAE3C21B,EAAa,EAAQ,IAErBrmD,EAAU,IAAInjD,OAAwD,gDAAI0uC,EAAU7E,gBAAgBixD,EAAYrsD,gGAA2G,KAIjO,MAAMm+D,UAAwB/4B,EAAiC5tC,uCAC7DI,eACE,OAAO8c,EAGT1c,aAAa7xC,EAAS4E,GACpB,MAAMkwG,EAAYlwG,EATA,GASqBjG,cACjCsyB,EAAUi1E,EAAYrsD,mBAAmBi7D,GAE/C,QAAgBj2G,IAAZoyB,EACF,OAAO,KAGT,IAAIoV,EAASzhC,EAfK,GAgBlByhC,EAASA,GAAU,GACnBA,EAASA,EAAO1nC,cAChB,IAAI4M,EAAW,KAQf,MANc,WAAV86B,EACF96B,EAAW,OACQ,YAAV86B,IACT96B,EAAW,QAGNqpG,EAAW/mD,iCAAiC7tD,EAAQq2C,UAAWplB,EAAS1lB,IAKnFjW,EAAQqlB,QAAUq9F,G,6BC7ClB9hH,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAGT,MAAMwpD,EAAU,EAAQ,GAElBi2D,EAAoB,IAAI9qG,OAAO,6IAAyK,KACxM+qG,EAAqB,IAAI/qG,OAAO,gKAA6K,KAMnN,MAAM6sG,EACJ9sG,QAAQnL,GACN,OAAOk2G,EAGTxkE,QAAQ1xC,EAAS4E,GACf,MAAMsY,EAASld,EAAQ6oD,oBAAoBjkD,EAAMxJ,MAAQwJ,EAAM,GAAGrM,OAAQqM,EAAM,GAAGgtC,UAAUhtC,EAAM,GAAGrM,SAEtG,GAAI2kB,EAAOy6B,KAAK/yC,MAAM,WAEpB,OADAA,EAAMxJ,OAASwJ,EAAM,GAAGrM,OACjB,KAKT,GAFA2kB,EAAOvhB,MAAQs8G,EAA+B5B,qBAAqBn5F,EAAOvhB,MAAMwlC,QAASv8B,IAEpFsY,EAAOvhB,MAEV,OADAiJ,EAAMxJ,OAASwJ,EAAM,GAAGrM,OACjB,KAGT,MAAM6mD,EAAgBp/C,EAAQ23C,KAAK/F,UAAUhtC,EAAMxJ,MAAQwJ,EAAM,GAAGrM,QAC9D+9G,EAAcH,EAAmB58E,KAAK6lB,GAU5C,OARIk3D,IACFp5F,EAAO1E,IAAMy/F,EAA+B5B,qBAAqBn5F,EAAOvhB,MAAMwlC,QAASm1E,GAEnFp5F,EAAO1E,MACT0E,EAAOy6B,MAAQ2+D,EAAY,KAIxBp5F,EAGT,4BAA4Bq5F,EAAsB3xG,GAChD,IAAIq4B,EAAO,EACPc,EAAS,EACT9d,EAAW,KAOf,GANAgd,EAAOlN,SAASnrB,EA3CD,IA6CY,MAAvBA,EA5Ca,KA6Cfm5B,EAAShO,SAASnrB,EA7CH,KAgDbm5B,GAAU,IAAMd,EAAO,GACzB,OAAO,KAOT,GAJIA,GAAQ,KACVhd,EAAWggC,EAAQtH,SAASyH,IAGC,MAA3Bx7C,EAtDiB,GAsDgB,CACnC,GAAIq4B,EAAO,GAAI,OAAO,KACtB,MAAM8vB,EAAOnoD,EAxDM,GAwDkB,GAAGjG,cAE5B,KAARouD,IACF9sC,EAAWggC,EAAQtH,SAASwH,GAEhB,IAARljB,IACFA,EAAO,IAIC,KAAR8vB,IACF9sC,EAAWggC,EAAQtH,SAASyH,GAEhB,IAARnjB,IACFA,GAAQ,KAkBd,GAbAs5E,EAAqB77G,OAAO,OAAQuiC,GACpCs5E,EAAqB77G,OAAO,SAAUqjC,GAErB,OAAb9d,EACFs2F,EAAqB77G,OAAO,WAAYulB,GAEpCgd,EAAO,GACTs5E,EAAqB7/D,MAAM,WAAYuJ,EAAQtH,SAASwH,IAExDo2D,EAAqB7/D,MAAM,WAAYuJ,EAAQtH,SAASyH,IAIjC,MAAvBx7C,EAzFa,GAyFgB,CAC/B,MAAMo5B,EAASjO,SAASnrB,EA1FT,IA2Ff,GAAIo5B,GAAU,GAAI,OAAO,KACzBu4E,EAAqB77G,OAAO,SAAUsjC,GAGxC,OAAOu4E,GAKXjhH,EAAQqlB,QAAUs9F,G,6BC9GlB/hH,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAGT,MAAMsjD,EAAU,EAAQ,GAElBmsD,EAAc,EAAQ,IAEtB6L,EAAc,EAAQ,IAEtBC,EAAc,EAAQ,IAEtBl4D,EAAY,EAAQ,GAEpBmlC,EAAmC,EAAQ,GAE3C1wB,EAAU,IAAInjD,OAAwB,gBAAI4mG,EAAY34D,uEAAuE24D,EAAY34D,oDAA8DS,EAAU7E,gBAAgBixD,EAAYvsD,uCAA4Co4D,EAAY54D,wCAA8C,KAMzV,MAAM++D,UAAsCj5B,EAAiC5tC,uCAC3EI,eACE,OAAO8c,EAGT1c,aAAa7xC,EAAS4E,GACpB,MAAMsY,EAASld,EAAQ6oD,oBAAoBjkD,EAAMxJ,MAAOwJ,EAAM,IACxDmlB,EAAQm8E,EAAYvsD,iBAAiB/0C,EAVtB,GAU8CjG,eAC7Dy0B,EAAM4+E,EAAY54D,0BAA0Bx0C,EAbnC,IAef,GAAIwuB,EAAM,GAER,OADAxuB,EAAMxJ,MAAQwJ,EAAMxJ,MAAQwJ,EAhBf,GAgBiCrM,OACvC,KAMT,GAHA2kB,EAAOvhB,MAAMjB,OAAO,QAASqvB,GAC7B7M,EAAOvhB,MAAMjB,OAAO,MAAO04B,GAEvBxuB,EApBW,GAoBQ,CACrB,MAAM06C,EAAayyD,EAAY74D,UAAUt0C,EArB5B,IAsBbsY,EAAOvhB,MAAMjB,OAAO,OAAQ4kD,OACvB,CACL,MAAMl2B,EAAO2wB,EAAQsF,qBAAqBr/C,EAAQ43C,QAASxkB,EAAKrJ,GAChE7M,EAAOvhB,MAAM+6C,MAAM,OAAQttB,GAG7B,GAAIxkB,EA9Bc,GA8BQ,CACxB,MAAM+tD,EAAUq/C,EAAY54D,0BAA0Bx0C,EA/BtC,IAgChBsY,EAAO1E,IAAM0E,EAAOvhB,MAAMwlC,QAC1BjkB,EAAO1E,IAAI9d,OAAO,MAAOi4D,GAG3B,OAAOz1C,GAKX5nB,EAAQqlB,QAAUu9F,G,6BC3DlBhiH,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAGT,MAAMyvG,EAAc,EAAQ,IAEtBp+C,EAAY,EAAQ,GAEpBm3B,EAAmC,EAAQ,GAE3CnxB,EAAc,EAAQ,IAE5B,MAAMqqD,UAAkCl5B,EAAiC5tC,uCACvEv4C,cACE05G,QAGF/gE,eACE,OAAO,IAAIrmC,OAAO,cAAc86F,EAAYjtD,mCAAoC,KAGlFpH,aAAa7xC,EAAS4E,GACpB,MAAM27C,EAAY2lD,EAAYltD,eAAep0C,EAAM,IAC7CguG,EAAkB9kD,EAAYxN,iBAAiBC,GACrD,OAAOuH,EAAUvS,kBAAkBgxD,4BAA4BvmG,EAAQq2C,UAAWu8D,IAKtFt9G,EAAQqlB,QAAUw9F,G,6BC7BlBjiH,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAGT,MAAMyvG,EAAc,EAAQ,IAEtBp+C,EAAY,EAAQ,GAEpBm3B,EAAmC,EAAQ,GAEjD,MAAMm5B,UAAqCn5B,EAAiC5tC,uCAC1EI,eACE,OAAO,IAAIrmC,OAAO,mCAAmC86F,EAAYjtD,+BAAgC,KAGnGpH,aAAa7xC,EAAS4E,GACpB,MAAM27C,EAAY2lD,EAAYltD,eAAep0C,EAAM,IACnD,OAAOkjD,EAAUvS,kBAAkBgxD,4BAA4BvmG,EAAQq2C,UAAWkK,IAKtFjrD,EAAQqlB,QAAUy9F,G,6BCtBlBliH,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAGT,MAAMyvG,EAAc,EAAQ,IAEtBp+C,EAAY,EAAQ,GAEpBm3B,EAAmC,EAAQ,GAE3CnxB,EAAc,EAAQ,IAEtBhU,EAAY,EAAQ,GAE1B,MAAMq+D,UAAkCl5B,EAAiC5tC,uCACvEv4C,cACE05G,QAGF/gE,eACE,OAAO,IAAIrmC,OAAsC,8BAAI86F,EAAY3sD,qHAAmHO,EAAU7E,gBAAgBixD,EAAY1sD,sHAAgH,KAG5U3H,aAAa7xC,EAAS4E,GACpB,MAAMo1C,EAAMp1C,EAAM,GAAKshG,EAAY5sD,mBAAmB10C,EAAM,IAAM,EAElE,IAAI27C,EAAY,GAChBA,EAFa2lD,EAAY1sD,qBAAqB50C,EAAM,GAAGjG,gBAErCq7C,EAClB,IAAIzuC,EAAW3G,EAAM,IAAMA,EAAM,IAAM,GAGvC,GAFA2G,EAAWA,EAAS5M,cAEf4M,EAQL,OAJI,oBAAiBvS,KAAKuS,IAAa,kBAAevS,KAAKuS,IAAa,0BAAoBvS,KAAKuS,MAC/Fg1C,EAAYuN,EAAYxN,iBAAiBC,IAGpCuH,EAAUvS,kBAAkBgxD,4BAA4BvmG,EAAQq2C,UAAWkK,IAKtFjrD,EAAQqlB,QAAUw9F,G,6BC5ClB,IAAI9iE,EAAkB37C,MAAQA,KAAK27C,iBAAmB,SAAUloB,GAC9D,OAAOA,GAAOA,EAAIv2B,WAAau2B,EAAM,CACnC,QAAWA,IAIfj3B,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAETnB,EAAQsoF,oBAAsBtoF,EAAQ2yD,0BAA4B3yD,EAAQ2iD,UAAY3iD,EAAQuK,MAAQvK,EAAQ0pB,OAAS1pB,EAAQ4iD,YAAS,EAExI,MAAMmgE,EAAqBhjE,EAAgB,EAAQ,MAE7CijE,EAA4BjjE,EAAgB,EAAQ,MAEpDkjE,EAAuBljE,EAAgB,EAAQ,MAE/CwD,EAAW,EAAQ,IAiBzB,SAASoP,IACP,MAAMlP,EAAS6kC,IAEf,OADA7kC,EAAOmP,QAAQ0C,QAAQ,IAAI2tD,EAAqB59F,SACzCo+B,EAKT,SAAS6kC,IACP,MAAO,CACL11B,QAAS,CAAC,IAAImwD,EAAmB19F,SACjCwtC,SAAU,CAAC,IAAImwD,EAA0B39F,UA1B7CrlB,EAAQ4iD,OAAS,IAAIW,EAASD,OAAOqP,KACrC3yD,EAAQ0pB,OAAS,IAAI65B,EAASD,OAAOglC,KAMrCtoF,EAAQuK,MAJR,SAAe83C,EAAMmB,EAAKC,GACxB,OAAOzjD,EAAQ4iD,OAAOr4C,MAAM83C,EAAMmB,EAAKC,IASzCzjD,EAAQ2iD,UAJR,SAAmBN,EAAMmB,EAAKC,GAC5B,OAAOzjD,EAAQ4iD,OAAOD,UAAUN,EAAMmB,EAAKC,IAW7CzjD,EAAQ2yD,0BAA4BA,EASpC3yD,EAAQsoF,oBAAsBA,G,6BCjD9B,IAAIvoC,EAAkB37C,MAAQA,KAAK27C,iBAAmB,SAAUloB,GAC9D,OAAOA,GAAOA,EAAIv2B,WAAau2B,EAAM,CACnC,QAAWA,IAIfj3B,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAGT,MAAMyvG,EAAc,EAAQ,KAEtBnsD,EAAU,EAAQ,GAElBrE,EAAUL,EAAgB,EAAQ,IAElCkZ,EAAU,yLAiDhBj5D,EAAQqlB,QAzCR,MACExP,UACE,OAAOojD,EAGT7c,QAAQ1xC,EAAS4E,GACf,MAAMmlB,EAAQgG,SAASm2E,EAAYsS,UAAU5zG,EAT7B,KAUVwuB,EAAMrD,SAASm2E,EAAYsS,UAAU5zG,EAT7B,KAUR2yC,EAAav3C,EAAQ8oD,wBAAwB,CACjD11B,IAAKA,EACLrJ,MAAOA,IAGT,GAAInlB,EApBmB,IAoBUA,EApBV,GAoBoCA,MAAM,wBAAU,CACzE,MAAM6qD,EAAS/Z,EAAQ/6B,QAAQ3a,EAAQ43C,SACvCL,EAAW78C,OAAO,OAAQ+0D,EAAOrmC,QAGnC,GAAIxkB,EAxBmB,GAwBQ,CAC7B,MAAM6zG,EAAc7zG,EAvBA,GAwBpB,IAAIwkB,EAAsB,UAAfqvF,EAAqB,EAAI1oF,SAASm2E,EAAYsS,UAAUC,IAE3C,gBAApB7zG,EA3BQ,GA4BVwkB,GAAQ,KACqB,gBAApBxkB,EA7BC,GA8BVwkB,GAAQ,KACqB,gBAApBxkB,EA/BC,KAgCVwkB,GAAQ,MAGVmuB,EAAW78C,OAAO,OAAQ0uB,OACrB,CACL,MAAMA,EAAO2wB,EAAQsF,qBAAqBr/C,EAAQ43C,QAASxkB,EAAKrJ,GAChEwtB,EAAWb,MAAM,OAAQttB,GAG3B,OAAOmuB,K,6BCjDX,SAASmhE,EAAS3wG,GAChB,OAAO+T,OAAO68F,aAAa5wG,EAAMu9E,WAAW,GAAK,OAZnDpvF,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAETnB,EAAQkjH,eAAY,EAMpBljH,EAAQkjH,UAJR,SAAmB7gE,GACjB,OAAO77B,OAAO67B,GAAMx5C,QAAQ,UAAW,KAAUA,QAAQ,UAAW,KAAUA,QAAQ,UAAW,KAAUA,QAAQ,UAAW,QAAUA,QAAQ,iHAAkHu6G,K,6BCNpQ,IAAIrjE,EAAkB37C,MAAQA,KAAK27C,iBAAmB,SAAUloB,GAC9D,OAAOA,GAAOA,EAAIv2B,WAAau2B,EAAM,CACnC,QAAWA,IAIfj3B,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAGT,MAAMq8G,EAAkCz9D,EAAgB,EAAQ,KAEhE,MAAMujE,UAAgC9F,EAAgCn4F,QACpE+uC,iBACE,MAAO,oCAKXp0D,EAAQqlB,QAAUi+F,G,6BCnBlB,IAAI/gE,EAAkBn+C,MAAQA,KAAKm+C,kBAAoB3hD,OAAOY,OAAS,SAAUb,EAAGL,EAAGkjB,EAAGg/B,QAC7Ej5C,IAAPi5C,IAAkBA,EAAKh/B,GAC3B5iB,OAAOC,eAAeF,EAAG6hD,EAAI,CAC3B1hD,YAAY,EACZC,IAAK,WACH,OAAOT,EAAEkjB,OAGX,SAAU7iB,EAAGL,EAAGkjB,EAAGg/B,QACVj5C,IAAPi5C,IAAkBA,EAAKh/B,GAC3B7iB,EAAE6hD,GAAMliD,EAAEkjB,KAGRi/B,EAAqBr+C,MAAQA,KAAKq+C,qBAAuB7hD,OAAOY,OAAS,SAAUb,EAAG8iB,GACxF7iB,OAAOC,eAAeF,EAAG,UAAW,CAClCG,YAAY,EACZK,MAAOsiB,KAEP,SAAU9iB,EAAG8iB,GACf9iB,EAAW,QAAI8iB,IAGbi/B,EAAet+C,MAAQA,KAAKs+C,cAAgB,SAAU7qB,GACxD,GAAIA,GAAOA,EAAIv2B,WAAY,OAAOu2B,EAClC,IAAIjQ,EAAS,GACb,GAAW,MAAPiQ,EAAa,IAAK,IAAIrU,KAAKqU,EAAe,YAANrU,GAAmB5iB,OAAOkB,UAAUC,eAAe1B,KAAKw3B,EAAKrU,IAAI++B,EAAgB36B,EAAQiQ,EAAKrU,GAItI,OAFAi/B,EAAmB76B,EAAQiQ,GAEpBjQ,GAGLm4B,EAAkB37C,MAAQA,KAAK27C,iBAAmB,SAAUloB,GAC9D,OAAOA,GAAOA,EAAIv2B,WAAau2B,EAAM,CACnC,QAAWA,IAIfj3B,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAGT,MAAMi/C,EAAUL,EAAgB,EAAQ,IAElC4K,EAAU,EAAQ,GAElBu0D,EAAax8D,EAAa,EAAQ,KAElCuW,EAAU,2GAwChBj5D,EAAQqlB,QAtCR,MACExP,UACE,OAAOojD,EAGT7c,QAAQ1xC,EAAS4E,GACf,MAAM+yC,EAAO/yC,EAAM,GACbolB,EAAO0rB,EAAQ/6B,QAAQ3a,EAAQ43C,SAC/BL,EAAav3C,EAAQ8oD,0BAE3B,OAAQnR,GACN,IAAK,eACH,OAAO68D,EAAWjpD,UAAUvrD,EAAQq2C,WAEtC,IAAK,eACH,OAAOm+D,EAAWnpD,SAASrrD,EAAQq2C,WAErC,IAAK,eACL,IAAK,eACH,OAAOm+D,EAAWhpD,MAAMxrD,EAAQq2C,WAcpC,MAXY,gBAARsB,GAAwB,gBAARA,GAAwB,gBAARA,GAClCJ,EAAWb,MAAM,OAAQ,IACzBa,EAAW78C,OAAO,WAAYulD,EAAQtH,SAASyH,KACtCzI,EAAK/yC,MAAM,kBACpB2yC,EAAWb,MAAM,OAAQ,GACzBa,EAAW78C,OAAO,WAAYulD,EAAQtH,SAASwH,KAGjD5I,EAAW78C,OAAO,MAAOsvB,EAAKA,QAC9ButB,EAAW78C,OAAO,QAASsvB,EAAKD,QAAU,GAC1CwtB,EAAW78C,OAAO,OAAQsvB,EAAKZ,QACxBmuB,K,6BCnFX,IAAIlC,EAAkB37C,MAAQA,KAAK27C,iBAAmB,SAAUloB,GAC9D,OAAOA,GAAOA,EAAIv2B,WAAau2B,EAAM,CACnC,QAAWA,IAIfj3B,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAETnB,EAAQsoF,oBAAsBtoF,EAAQ2yD,0BAA4B3yD,EAAQ2iD,UAAY3iD,EAAQuK,MAAQvK,EAAQ0pB,OAAS1pB,EAAQ4iD,YAAS,EAExI,MAAMumC,EAAmB,EAAQ,IAE3B5lC,EAAW,EAAQ,IAEnBimC,EAA0BzpC,EAAgB,EAAQ,KAElDwjE,EAAoBxjE,EAAgB,EAAQ,MAE5CyjE,EAA2BzjE,EAAgB,EAAQ,MAEnD0jE,EAA2B1jE,EAAgB,EAAQ,MAEnD2jE,EAA4B3jE,EAAgB,EAAQ,MAEpD4jE,EAAkC5jE,EAAgB,EAAQ,MAE1D6jE,EAAuB7jE,EAAgB,EAAQ,MAE/C8jE,EAAuB9jE,EAAgB,EAAQ,MAiBrD,SAAS4S,EAA0BuG,GAAe,GAChD,MAAMzV,EAAS6kC,GAAoB,EAAOpvB,GAG1C,OAFAzV,EAAOmP,QAAQ5vD,KAAK,IAAI4gH,EAAqBv+F,SAC7Co+B,EAAOmP,QAAQ5vD,KAAK,IAAI6gH,EAAqBx+F,SACtCo+B,EAKT,SAAS6kC,EAAoBjzB,GAAa,EAAM6D,GAAe,GAC7D,OAAOiwB,EAAiBt0B,2BAA2B,CACjDjC,QAAS,CAAC,IAAI42B,EAAwBnkE,QAAQ6zC,GAAe,IAAIqqD,EAAkBl+F,QAAW,IAAIm+F,EAAyBn+F,QAAW,IAAIs+F,EAAgCt+F,SAC1KwtC,SAAU,CAAC,IAAI4wD,EAAyBp+F,QAAW,IAAIq+F,EAA0Br+F,UAChFgwC,GA5BLr1D,EAAQ4iD,OAAS,IAAIW,EAASD,OAAOqP,KACrC3yD,EAAQ0pB,OAAS,IAAI65B,EAASD,OAAOglC,GAAoB,IAMzDtoF,EAAQuK,MAJR,SAAe83C,EAAMmB,EAAKC,GACxB,OAAOzjD,EAAQ4iD,OAAOr4C,MAAM83C,EAAMmB,EAAKC,IASzCzjD,EAAQ2iD,UAJR,SAAmBN,EAAMmB,EAAKC,GAC5B,OAAOzjD,EAAQ4iD,OAAOD,UAAUN,EAAMmB,EAAKC,IAY7CzjD,EAAQ2yD,0BAA4BA,EASpC3yD,EAAQsoF,oBAAsBA,G,6BC9D9B1nF,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAGT,MAAMyvG,EAAc,EAAQ,IAEtBpsD,EAAY,EAAQ,GAEpBmlC,EAAmC,EAAQ,GAE3C21B,EAAa,EAAQ,IAErBrmD,EAAU,IAAInjD,OAAgF,2EAAI0uC,EAAU7E,gBAAgBixD,EAAYrsD,qHAA6H,KAK3Q,MAAMu/D,UAAwBn6B,EAAiC5tC,uCAC7DI,eACE,OAAO8c,EAGT1c,aAAa7xC,EAAS4E,GACpB,MAAMkwG,EAAYlwG,EATA,GASqBjG,cACjCsyB,EAAUi1E,EAAYrsD,mBAAmBi7D,GAE/C,QAAgBj2G,IAAZoyB,EACF,OAAO,KAGT,MAAMzU,EAAS5X,EAjBE,GAkBXmwG,EAAUnwG,EAhBE,GAiBlB,IAAIy0G,EAAO78F,GAAUu4F,GAAW,GAChCsE,EAAOA,EAAK16G,cACZ,IAAI4M,EAAW,KAUf,MARY,WAAR8tG,EACF9tG,EAAW,OACM,cAAR8tG,GAA6B,WAARA,EAC9B9tG,EAAW,OACM,QAAR8tG,IACT9tG,EAAW,QAGNqpG,EAAW/mD,iCAAiC7tD,EAAQq2C,UAAWplB,EAAS1lB,IAKnFjW,EAAQqlB,QAAUy+F,G,6BCjDlBljH,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAGT,MAAM67G,EAAiC,EAAQ,IAE/C,MAAMgH,UAA+BhH,EAA+BzmD,6BAClEwB,gBACE,MAAO,uCAGTE,iBACE,MAAO,qDAKXj4D,EAAQqlB,QAAU2+F,G,6BCjBlB,IAAIjkE,EAAkB37C,MAAQA,KAAK27C,iBAAmB,SAAUloB,GAC9D,OAAOA,GAAOA,EAAIv2B,WAAau2B,EAAM,CACnC,QAAWA,IAIfj3B,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAGT,MAAMu8G,EAAiC39D,EAAgB,EAAQ,KAE/D,MAAMkkE,UAA+BvG,EAA+Br4F,QAClE+uC,iBACE,OAAO,IAAIt+C,OAAO,0BAKtB9V,EAAQqlB,QAAU4+F,G,6BCnBlB,IAAIlkE,EAAkB37C,MAAQA,KAAK27C,iBAAmB,SAAUloB,GAC9D,OAAOA,GAAOA,EAAIv2B,WAAau2B,EAAM,CACnC,QAAWA,IAIfj3B,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAGT,MAAMq8G,EAAkCz9D,EAAgB,EAAQ,KAEhE,MAAMmkE,UAAgC1G,EAAgCn4F,QACpE+uC,iBACE,MAAO,kBAKXp0D,EAAQqlB,QAAU6+F,G,6BCnBlBtjH,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAGT,MAAMsjD,EAAU,EAAQ,GAElBmsD,EAAc,EAAQ,IAEtB6L,EAAc,EAAQ,IAEtBj4D,EAAY,EAAQ,GAEpBmlC,EAAmC,EAAQ,GAE3C1wB,EAAU,IAAInjD,OAAmJ,wJAAI0uC,EAAU7E,gBAAgBixD,EAAYvsD,0CAA+Co4D,EAAY54D,2BAAiC,KAM7S,MAAMsgE,UAAsCx6B,EAAiC5tC,uCAC3EI,eACE,OAAO8c,EAGT1c,aAAa7xC,EAAS4E,GACpB,MAAMsY,EAASld,EAAQ6oD,oBAAoBjkD,EAAMxJ,MAAOwJ,EAAM,IACxDmlB,EAAQm8E,EAAYvsD,iBAAiB/0C,EAVtB,GAU8CjG,eAC7Dy0B,EAAMrD,SAASnrB,EAbN,IAef,GAAIwuB,EAAM,GAER,OADAxuB,EAAMxJ,MAAQwJ,EAAMxJ,MAAQwJ,EAhBf,GAgBiCrM,OACvC,KAMT,GAHA2kB,EAAOvhB,MAAMjB,OAAO,QAASqvB,GAC7B7M,EAAOvhB,MAAMjB,OAAO,MAAO04B,GAEvBxuB,EApBW,GAoBQ,CACrB,MAAM06C,EAAayyD,EAAY74D,UAAUt0C,EArB5B,IAsBbsY,EAAOvhB,MAAMjB,OAAO,OAAQ4kD,OACvB,CACL,MAAMl2B,EAAO2wB,EAAQsF,qBAAqBr/C,EAAQ43C,QAASxkB,EAAKrJ,GAChE7M,EAAOvhB,MAAM+6C,MAAM,OAAQttB,GAG7B,GAAIxkB,EA9Bc,GA8BQ,CACxB,MAAM+tD,EAAU5iC,SAASnrB,EA/BT,IAgChBsY,EAAO1E,IAAM0E,EAAOvhB,MAAMwlC,QAC1BjkB,EAAO1E,IAAI9d,OAAO,MAAOi4D,GAG3B,OAAOz1C,GAKX5nB,EAAQqlB,QAAU8+F,G,6BCzDlB,IAAI5hE,EAAkBn+C,MAAQA,KAAKm+C,kBAAoB3hD,OAAOY,OAAS,SAAUb,EAAGL,EAAGkjB,EAAGg/B,QAC7Ej5C,IAAPi5C,IAAkBA,EAAKh/B,GAC3B5iB,OAAOC,eAAeF,EAAG6hD,EAAI,CAC3B1hD,YAAY,EACZC,IAAK,WACH,OAAOT,EAAEkjB,OAGX,SAAU7iB,EAAGL,EAAGkjB,EAAGg/B,QACVj5C,IAAPi5C,IAAkBA,EAAKh/B,GAC3B7iB,EAAE6hD,GAAMliD,EAAEkjB,KAGRi/B,EAAqBr+C,MAAQA,KAAKq+C,qBAAuB7hD,OAAOY,OAAS,SAAUb,EAAG8iB,GACxF7iB,OAAOC,eAAeF,EAAG,UAAW,CAClCG,YAAY,EACZK,MAAOsiB,KAEP,SAAU9iB,EAAG8iB,GACf9iB,EAAW,QAAI8iB,IAGbi/B,EAAet+C,MAAQA,KAAKs+C,cAAgB,SAAU7qB,GACxD,GAAIA,GAAOA,EAAIv2B,WAAY,OAAOu2B,EAClC,IAAIjQ,EAAS,GACb,GAAW,MAAPiQ,EAAa,IAAK,IAAIrU,KAAKqU,EAAe,YAANrU,GAAmB5iB,OAAOkB,UAAUC,eAAe1B,KAAKw3B,EAAKrU,IAAI++B,EAAgB36B,EAAQiQ,EAAKrU,GAItI,OAFAi/B,EAAmB76B,EAAQiQ,GAEpBjQ,GAGThnB,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAGT,MAAMwoF,EAAmC,EAAQ,GAE3Cu1B,EAAax8D,EAAa,EAAQ,KAExC,MAAM0hE,UAA2Bz6B,EAAiC5tC,uCAChEI,aAAazxC,GACX,MAAO,+CAGT6xC,aAAa7xC,EAAS4E,GACpB,MAAM8vG,EAAY9vG,EAAM,GAAGjG,cACrBg4C,EAAY32C,EAAQ8oD,0BAE1B,OAAQ4rD,GACN,IAAK,QACH,OAAOF,EAAWrwF,IAAInkB,EAAQq2C,WAEhC,IAAK,OACH,OAAOm+D,EAAWhpD,MAAMxrD,EAAQq2C,WAElC,IAAK,SACL,IAAK,YACH,OAAOm+D,EAAWnpD,SAASrrD,EAAQq2C,WAErC,IAAK,QACH,OAAOm+D,EAAWjpD,UAAUvrD,EAAQq2C,WAGxC,OAAOM,GAKXrhD,EAAQqlB,QAAU++F,G,6BCrElB,IAAIrkE,EAAkB37C,MAAQA,KAAK27C,iBAAmB,SAAUloB,GAC9D,OAAOA,GAAOA,EAAIv2B,WAAau2B,EAAM,CACnC,QAAWA,IAIfj3B,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAGT,MAAMwpD,EAAU,EAAQ,GAElBg/B,EAAmC,EAAQ,GAE3CvpC,EAAU,EAAQ,IAElBC,EAAUN,EAAgB,EAAQ,IAExC,MAAMskE,UAA2B16B,EAAiC5tC,uCAChEI,eACE,MAAO,wEAGTI,aAAa7xC,EAAS4E,GACpB,MAAM+mD,EAAahW,EAAQh7B,QAAQ3a,EAAQ43C,SACrCjB,EAAY32C,EAAQ8oD,0BAE1B,OAAQlkD,EAAM,GAAGjG,eACf,IAAK,QACHg4C,EAAUD,MAAM,WAAYuJ,EAAQtH,SAASyH,IAC7CzJ,EAAUD,MAAM,OAAQ,IACxB,MAEF,IAAK,QACHC,EAAUD,MAAM,WAAYuJ,EAAQtH,SAASyH,IAC7CzJ,EAAUD,MAAM,OAAQ,IACxB,MAEF,IAAK,QACL,IAAK,WACHC,EAAUD,MAAM,WAAYuJ,EAAQtH,SAASwH,IAC7CxJ,EAAUD,MAAM,OAAQ,GACxB,MAEF,IAAK,aACHhB,EAAQsK,iBAAiBrJ,EAAWgV,GACpChV,EAAUD,MAAM,OAAQ,GACxBC,EAAUD,MAAM,SAAU,GAC1BC,EAAUD,MAAM,SAAU,GAC1B,MAEF,IAAK,WACHC,EAAUD,MAAM,WAAYuJ,EAAQtH,SAASwH,IAC7CxJ,EAAUD,MAAM,OAAQ,IAI5B,OAAOC,GAKXrhD,EAAQqlB,QAAUg/F,G,6BC9DlB,IAAItkE,EAAkB37C,MAAQA,KAAK27C,iBAAmB,SAAUloB,GAC9D,OAAOA,GAAOA,EAAIv2B,WAAau2B,EAAM,CACnC,QAAWA,IAIfj3B,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAETnB,EAAQsoF,oBAAsBtoF,EAAQ2yD,0BAA4B3yD,EAAQ2iD,UAAY3iD,EAAQuK,MAAQvK,EAAQ0pB,OAAS1pB,EAAQ4iD,YAAS,EAExI,MAAMumC,EAAmB,EAAQ,IAE3B5lC,EAAW,EAAQ,IAEnB+gE,EAA4BvkE,EAAgB,EAAQ,MAEpDwkE,EAA2BxkE,EAAgB,EAAQ,MAEnDykE,EAAuBzkE,EAAgB,EAAQ,MAE/C0kE,EAAuB1kE,EAAgB,EAAQ,MAE/CypC,EAA0BzpC,EAAgB,EAAQ,KAElD2kE,EAAiC3kE,EAAgB,EAAQ,MAEzD4kE,EAAoB5kE,EAAgB,EAAQ,MAE5C6kE,EAAkC7kE,EAAgB,EAAQ,MAE1D8kE,EAAsB9kE,EAAgB,EAAQ,MAE9C+kE,EAA6B/kE,EAAgB,EAAQ,MAErDglE,EAA2BhlE,EAAgB,EAAQ,MAEnDilE,EAA+BjlE,EAAgB,EAAQ,MAEvDklE,EAA2BllE,EAAgB,EAAQ,MAEnDmlE,EAAyCnlE,EAAgB,EAAQ,MAEjEolE,EAA+BplE,EAAgB,EAAQ,MAEvDqlE,EAA8BrlE,EAAgB,EAAQ,MAEtDslE,EAAgCtlE,EAAgB,EAAQ,MAiB9D,SAAS4S,EAA0BuG,GAAe,GAChD,MAAMzV,EAAS6kC,GAAoB,EAAOpvB,GAO1C,OANAzV,EAAOmP,QAAQ0C,QAAQ,IAAIkvD,EAAqBn/F,SAChDo+B,EAAOmP,QAAQ0C,QAAQ,IAAImvD,EAAqBp/F,SAChDo+B,EAAOmP,QAAQ0C,QAAQ,IAAI2vD,EAAyB5/F,SACpDo+B,EAAOmP,QAAQ0C,QAAQ,IAAIuvD,EAAoBx/F,SAC/Co+B,EAAOmP,QAAQ0C,QAAQ,IAAI6vD,EAA6B9/F,SACxDo+B,EAAOmP,QAAQ0C,QAAQ,IAAI4vD,EAAuC7/F,SAC3Do+B,EAKT,SAAS6kC,EAAoBjzB,GAAa,EAAM6D,GAAe,GAC7D,OAAOiwB,EAAiBt0B,2BAA2B,CACjDjC,QAAS,CAAC,IAAI42B,EAAwBnkE,QAAQ6zC,GAAe,IAAIwrD,EAA+Br/F,QAAW,IAAIu/F,EAAgCv/F,QAAW,IAAIw/F,EAAoBx/F,QAAW,IAAIs/F,EAAkBt/F,QAAW,IAAI2/F,EAA6B3/F,QAAW,IAAIy/F,EAA2Bz/F,QAAW,IAAI0/F,EAAyB1/F,QAAQgwC,GAAa,IAAI+vD,EAA4B//F,QAAQgwC,GAAa,IAAIgwD,EAA8BhgG,QAAQgwC,IACrcxC,SAAU,CAAC,IAAI0xD,EAAyBl/F,QAAW,IAAIi/F,EAA0Bj/F,UAChFgwC,GAhCLr1D,EAAQ4iD,OAAS,IAAIW,EAASD,OAAOqP,KACrC3yD,EAAQ0pB,OAAS,IAAI65B,EAASD,OAAOglC,GAAoB,IAMzDtoF,EAAQuK,MAJR,SAAe83C,EAAMmB,EAAKC,GACxB,OAAOzjD,EAAQ4iD,OAAOr4C,MAAM83C,EAAMmB,EAAKC,IASzCzjD,EAAQ2iD,UAJR,SAAmBN,EAAMmB,EAAKC,GAC5B,OAAOzjD,EAAQ4iD,OAAOD,UAAUN,EAAMmB,EAAKC,IAgB7CzjD,EAAQ2yD,0BAA4BA,EASpC3yD,EAAQsoF,oBAAsBA,G,6BCpF9B,IAAIvoC,EAAkB37C,MAAQA,KAAK27C,iBAAmB,SAAUloB,GAC9D,OAAOA,GAAOA,EAAIv2B,WAAau2B,EAAM,CACnC,QAAWA,IAIfj3B,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAGT,MAAMq8G,EAAkCz9D,EAAgB,EAAQ,KAEhE,MAAMulE,UAAgC9H,EAAgCn4F,QACpE+uC,iBACE,MAAO,oBAKXp0D,EAAQqlB,QAAUigG,G,6BCnBlB,IAAIvlE,EAAkB37C,MAAQA,KAAK27C,iBAAmB,SAAUloB,GAC9D,OAAOA,GAAOA,EAAIv2B,WAAau2B,EAAM,CACnC,QAAWA,IAIfj3B,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAGT,MAAMu8G,EAAiC39D,EAAgB,EAAQ,KAE/D,MAAMwlE,UAA+B7H,EAA+Br4F,QAClE+uC,iBACE,OAAO,IAAIt+C,OAAO,sCAKtB9V,EAAQqlB,QAAUkgG,G,6BCnBlB,IAAIhjE,EAAkBn+C,MAAQA,KAAKm+C,kBAAoB3hD,OAAOY,OAAS,SAAUb,EAAGL,EAAGkjB,EAAGg/B,QAC7Ej5C,IAAPi5C,IAAkBA,EAAKh/B,GAC3B5iB,OAAOC,eAAeF,EAAG6hD,EAAI,CAC3B1hD,YAAY,EACZC,IAAK,WACH,OAAOT,EAAEkjB,OAGX,SAAU7iB,EAAGL,EAAGkjB,EAAGg/B,QACVj5C,IAAPi5C,IAAkBA,EAAKh/B,GAC3B7iB,EAAE6hD,GAAMliD,EAAEkjB,KAGRi/B,EAAqBr+C,MAAQA,KAAKq+C,qBAAuB7hD,OAAOY,OAAS,SAAUb,EAAG8iB,GACxF7iB,OAAOC,eAAeF,EAAG,UAAW,CAClCG,YAAY,EACZK,MAAOsiB,KAEP,SAAU9iB,EAAG8iB,GACf9iB,EAAW,QAAI8iB,IAGbi/B,EAAet+C,MAAQA,KAAKs+C,cAAgB,SAAU7qB,GACxD,GAAIA,GAAOA,EAAIv2B,WAAY,OAAOu2B,EAClC,IAAIjQ,EAAS,GACb,GAAW,MAAPiQ,EAAa,IAAK,IAAIrU,KAAKqU,EAAe,YAANrU,GAAmB5iB,OAAOkB,UAAUC,eAAe1B,KAAKw3B,EAAKrU,IAAI++B,EAAgB36B,EAAQiQ,EAAKrU,GAItI,OAFAi/B,EAAmB76B,EAAQiQ,GAEpBjQ,GAGThnB,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAGT,MAAMwoF,EAAmC,EAAQ,GAE3Cu1B,EAAax8D,EAAa,EAAQ,KAExC,MAAM8iE,UAA2B77B,EAAiC5tC,uCAChEI,aAAazxC,GACX,MAAO,gDAGT6xC,aAAa7xC,EAAS4E,GACpB,MAAM8vG,EAAY9vG,EAAM,GAAGjG,cACrBg4C,EAAY32C,EAAQ8oD,0BAE1B,OAAQ4rD,GACN,IAAK,KACH,OAAOF,EAAWrwF,IAAInkB,EAAQq2C,WAEhC,IAAK,UACH,OAAOm+D,EAAWhpD,MAAMxrD,EAAQq2C,WAElC,IAAK,SACL,IAAK,UACH,OAAOm+D,EAAWnpD,SAASrrD,EAAQq2C,WAErC,IAAK,WACH,OAAOm+D,EAAWjpD,UAAUvrD,EAAQq2C,WAGxC,OAAOM,GAKXrhD,EAAQqlB,QAAUmgG,G,6BCrElB,IAAIzlE,EAAkB37C,MAAQA,KAAK27C,iBAAmB,SAAUloB,GAC9D,OAAOA,GAAOA,EAAIv2B,WAAau2B,EAAM,CACnC,QAAWA,IAIfj3B,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAGT,MAAMwpD,EAAU,EAAQ,GAElBg/B,EAAmC,EAAQ,GAE3CvpC,EAAUL,EAAgB,EAAQ,IAElCM,EAAU,EAAQ,IAKxB,MAAMolE,UAA2B97B,EAAiC5tC,uCAChEI,eACE,MAAO,kGAGTI,aAAa7xC,EAAS4E,GACpB,MAAM+mD,EAAajW,EAAQ/6B,QAAQ3a,EAAQ43C,SACrCjB,EAAY32C,EAAQ8oD,0BAQ1B,OANyB,SAArBlkD,EAZU,KAaZ+xC,EAAUj8C,OAAO,MAAOsF,EAAQ43C,QAAQnc,WACxCkb,EAAUj8C,OAAO,QAASsF,EAAQ43C,QAAQpc,WAAa,GACvDmb,EAAUj8C,OAAO,OAAQsF,EAAQ43C,QAAQxnB,gBAGnCxrB,EAjBS,GAiBWjG,eAC1B,IAAK,WACL,IAAK,eACHg4C,EAAUD,MAAM,WAAYuJ,EAAQtH,SAASyH,IAC7CzJ,EAAUD,MAAM,OAAQ,IACxB,MAEF,IAAK,QACL,IAAK,aACHC,EAAUD,MAAM,WAAYuJ,EAAQtH,SAASyH,IAC7CzJ,EAAUD,MAAM,OAAQ,IACxB,MAEF,IAAK,cACHf,EAAQqK,iBAAiBrJ,EAAWgV,GACpChV,EAAUD,MAAM,OAAQ,GACxBC,EAAUD,MAAM,SAAU,GAC1BC,EAAUD,MAAM,SAAU,GAC1B,MAEF,IAAK,UACL,IAAK,cACHC,EAAUD,MAAM,WAAYuJ,EAAQtH,SAASwH,IAC7CxJ,EAAUD,MAAM,OAAQ,GACxB,MAEF,IAAK,SACL,IAAK,aACHC,EAAUD,MAAM,WAAYuJ,EAAQtH,SAASwH,IAC7CxJ,EAAUD,MAAM,OAAQ,IAI5B,OAAOC,GAKXrhD,EAAQqlB,QAAUogG,G,6BC1ElB7kH,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAGT,MAAMyvG,EAAc,EAAQ,IAEtBp+C,EAAY,EAAQ,GAEpBm3B,EAAmC,EAAQ,GAEjD,MAAM+7B,UAAqC/7B,EAAiC5tC,uCAC1EI,eACE,OAAO,IAAIrmC,OAAO,oCAA2C86F,EAAYjtD,mBAAvD,aAA+F,KAGnHpH,aAAa7xC,EAAS4E,GACpB,MAAM27C,EAAY2lD,EAAYltD,eAAep0C,EAAM,IACnD,OAAOkjD,EAAUvS,kBAAkBgxD,4BAA4BvmG,EAAQq2C,UAAWkK,IAKtFjrD,EAAQqlB,QAAUqgG,G,6BCtBlB9kH,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAGT,MAAMyvG,EAAc,EAAQ,IAEtBpsD,EAAY,EAAQ,GAEpBmlC,EAAmC,EAAQ,GAE3C21B,EAAa,EAAQ,IAErBrmD,EAAU,IAAInjD,OAAsG,yFAAI0uC,EAAU7E,gBAAgBixD,EAAYrsD,gCAAsC,KAK1M,MAAMohE,UAAwBh8B,EAAiC5tC,uCAC7DI,eACE,OAAO8c,EAGT1c,aAAa7xC,EAAS4E,GACpB,MAAMkwG,EAAYlwG,EATA,GASqBjG,cACjCsyB,EAAUi1E,EAAYrsD,mBAAmBi7D,GACzCt4F,EAAS5X,EAZE,GAaXmwG,EAAUnwG,EAXE,GAYlB,IAAIowG,EAAex4F,GAAUu4F,EAC7BC,EAAeA,GAAgB,GAC/BA,EAAeA,EAAar2G,cAC5B,IAAI4M,EAAW,KAUf,MARoB,UAAhBypG,EACFzpG,EAAW,OACc,YAAhBypG,EACTzpG,EAAW,OACc,QAAhBypG,IACTzpG,EAAW,QAGNqpG,EAAW/mD,iCAAiC7tD,EAAQq2C,UAAWplB,EAAS1lB,IAKnFjW,EAAQqlB,QAAUsgG,G,6BC7ClB/kH,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAGT,MAAMsjD,EAAU,EAAQ,GAElBmsD,EAAc,EAAQ,IAEtB6L,EAAc,EAAQ,IAEtBC,EAAc,EAAQ,IAEtBl4D,EAAY,EAAQ,GAEpBmlC,EAAmC,EAAQ,GAE3C1wB,EAAU,IAAInjD,OAAwB,gBAAI2mG,EAAY14D,iFAA2F04D,EAAY14D,oDAAqES,EAAU7E,gBAAgBixD,EAAYvsD,kBAAnP,qBAAwS,IAAIq4D,EAAY74D,wCAAmD,KAMtY,MAAM+hE,UAAsCj8B,EAAiC5tC,uCAC3EI,eACE,OAAO8c,EAGT1c,aAAa7xC,EAAS4E,GACpB,MAAMmlB,EAAQm8E,EAAYvsD,iBAAiB/0C,EAXtB,GAW8CjG,eAC7Dy0B,EAAM2+E,EAAY34D,0BAA0Bx0C,EAXnC,IAaf,GAAIwuB,EAAM,GAER,OADAxuB,EAAMxJ,MAAQwJ,EAAMxJ,MAAQwJ,EAdf,GAciCrM,OACvC,KAGT,MAAMg/C,EAAav3C,EAAQ8oD,wBAAwB,CACjD11B,IAAKA,EACLrJ,MAAOA,IAGT,GAAInlB,EArBW,GAqBQ,CACrB,MAAMwkB,EAAO4oF,EAAY94D,UAAUt0C,EAtBtB,IAuBb2yC,EAAW78C,OAAO,OAAQ0uB,OACrB,CACL,MAAMA,EAAO2wB,EAAQsF,qBAAqBr/C,EAAQ43C,QAASxkB,EAAKrJ,GAChEwtB,EAAWb,MAAM,OAAQttB,GAG3B,IAAKxkB,EA9Ba,GA+BhB,OAAO2yC,EAGT,MAAMob,EAAUo/C,EAAY34D,0BAA0Bx0C,EAlCpC,IAmCZsY,EAASld,EAAQ6oD,oBAAoBjkD,EAAMxJ,MAAOwJ,EAAM,IAI9D,OAHAsY,EAAOvhB,MAAQ47C,EACfr6B,EAAO1E,IAAM++B,EAAWpW,QACxBjkB,EAAO1E,IAAI9d,OAAO,MAAOi4D,GAClBz1C,GAKX5nB,EAAQqlB,QAAUugG,G,6BC/DlBhlH,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAGT,MAAMyvG,EAAc,EAAQ,IAEtBnsD,EAAU,EAAQ,GAElBD,EAAY,EAAQ,GAEpBi4D,EAAc,EAAQ,IAEtB9yB,EAAmC,EAAQ,GAE3C1wB,EAAU,IAAInjD,OAAO,IAAI0uC,EAAU7E,gBAAgBixD,EAAYvsD,sCAAqDo4D,EAAY54D,mDAA8D,KAIpM,MAAMgiE,UAA0Bl8B,EAAiC5tC,uCAC/DI,eACE,OAAO8c,EAGT1c,aAAa7xC,EAAS4E,GACpB,MAAM2yC,EAAav3C,EAAQ8oD,0BAC3BvR,EAAWb,MAAM,MAAO,GACxB,MAAMpoB,EAAY1pB,EAXG,GAYfmlB,EAAQm8E,EAAYvsD,iBAAiBrrB,EAAU3vB,eAGrD,GAFA44C,EAAW78C,OAAO,QAASqvB,GAEvBnlB,EAdW,GAcQ,CACrB,MAAMwkB,EAAO2oF,EAAY74D,UAAUt0C,EAftB,IAgBb2yC,EAAW78C,OAAO,OAAQ0uB,OACrB,CACL,MAAMA,EAAO2wB,EAAQsF,qBAAqBr/C,EAAQ43C,QAAS,EAAG7tB,GAC9DwtB,EAAWb,MAAM,OAAQttB,GAG3B,OAAOmuB,GAKXjiD,EAAQqlB,QAAUwgG,G,6BC3ClBjlH,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAGT,MAAMwoF,EAAmC,EAAQ,GAE3C1wB,EAAU,IAAInjD,OAAO,mCAAyC,KAIpE,MAAMgwG,UAAiCn8B,EAAiC5tC,uCACtEI,eACE,OAAO8c,EAGT1c,aAAa7xC,EAAS4E,GACpB,MAAMwkB,EAAO2G,SAASnrB,EARP,IASTmlB,EAAQgG,SAASnrB,EAVP,IAWhB,OAAO5E,EAAQ8oD,0BAA0BpS,MAAM,MAAO,GAAGh8C,OAAO,QAASqvB,GAAOrvB,OAAO,OAAQ0uB,IAKnG9zB,EAAQqlB,QAAUygG,G,6BCvBlBllH,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAGT,MAAM67G,EAAiC,EAAQ,IAE/C,MAAM+I,UAA+B/I,EAA+BzmD,6BAClEwB,gBACE,MAAO,kBAGTE,iBACE,MAAO,+CAGTjB,gBACE,MAAO,iCAGTG,6BAA6BzsD,EAAS4E,GACpC,OAAIA,EAAM,GAAGA,MAAM,iBACV,KAGF4tG,MAAM/lD,6BAA6BzsD,EAAS4E,IAKvDtP,EAAQqlB,QAAU0gG,G,6BC7BlBnlH,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAGT,MAAMyvG,EAAc,EAAQ,IAEtBpsD,EAAY,EAAQ,GAEpBmlC,EAAmC,EAAQ,GAE3C1wB,EAAU,IAAInjD,OAAiC,4BAAO0uC,EAAU7E,gBAAgBixD,EAAYvsD,mEAA8E,KAMhL,MAAM2hE,UAAmCr8B,EAAiC5tC,uCACxEI,eACE,OAAO8c,EAGT1c,aAAa7xC,EAAS4E,GACpB,MAAMmlB,EAAQnlB,EATS,GASmBmrB,SAASnrB,EAT5B,IASyDshG,EAAYvsD,iBAAiB/0C,EAVxF,GAUgHjG,eAErI,GAAIorB,EAAQ,GAAKA,EAAQ,GACvB,OAAO,KAGT,MAAMX,EAAO2G,SAASnrB,EAjBA,IAmBtB,MAAO,CACLwuB,IAFUrD,SAASnrB,EAfC,IAkBpBmlB,MAAOA,EACPX,KAAMA,IAMZ9zB,EAAQqlB,QAAU2gG,G,6BCvClB,IAAIjmE,EAAkB37C,MAAQA,KAAK27C,iBAAmB,SAAUloB,GAC9D,OAAOA,GAAOA,EAAIv2B,WAAau2B,EAAM,CACnC,QAAWA,IAIfj3B,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAGT,MAAMwoF,EAAmC,EAAQ,GAE3Ch/B,EAAU,EAAQ,GAElBvK,EAAU,EAAQ,IAElBC,EAAUN,EAAgB,EAAQ,IAKxC,MAAMkmE,UAA+Bt8B,EAAiC5tC,uCACpEI,aAAazxC,GACX,MAAO,sEAGT6xC,aAAa7xC,EAAS4E,GACpB,MAAM42G,EAAW52G,EATF,GASoBjG,cAC7B88G,EAAW72G,EATK,GASoBjG,cACpCg4C,EAAY32C,EAAQ8oD,0BACpB6C,EAAahW,EAAQh7B,QAAQ3a,EAAQ43C,SAE3C,OAAQ4jE,GACN,IAAK,WACH9lE,EAAQ+B,kBAAkBd,EAAWgV,EAAWxxD,KAAK,EAAG,QACxD,MAEF,IAAK,MACHu7C,EAAQ+B,kBAAkBd,EAAWgV,GACrC,MAEF,IAAK,SACHjW,EAAQsK,iBAAiBrJ,EAAWgV,GAIxC,OAAQ8vD,GACN,IAAK,UACH9kE,EAAUD,MAAM,WAAYuJ,EAAQtH,SAASwH,IAC7CxJ,EAAUD,MAAM,OAAQ,GACxB,MAEF,IAAK,SACHC,EAAUD,MAAM,WAAYuJ,EAAQtH,SAASwH,IAC7CxJ,EAAUD,MAAM,OAAQ,IACxB,MAEF,IAAK,WACHC,EAAUD,MAAM,WAAYuJ,EAAQtH,SAASyH,IAC7CzJ,EAAUD,MAAM,OAAQ,IACxB,MAEF,IAAK,QACHC,EAAUD,MAAM,WAAYuJ,EAAQtH,SAASyH,IAC7CzJ,EAAUD,MAAM,OAAQ,IAI5B,OAAOC,GAKXrhD,EAAQqlB,QAAU4gG,G,6BCzElBrlH,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAGT,MAAMyvG,EAAc,EAAQ,IAEtBp+C,EAAY,EAAQ,GAEpBm3B,EAAmC,EAAQ,GAE3CnxB,EAAc,EAAQ,IAEtBS,EAAU,IAAInjD,OAAO,kDAAkD86F,EAAYjtD,+BAAgC,KAEzH,MAAMyiE,UAA6Cz8B,EAAiC5tC,uCAClFI,eACE,OAAO8c,EAGT1c,aAAa7xC,EAAS4E,GACpB,MAAM4X,EAAS5X,EAAM,GAAGjG,cACxB,IAAI4hD,EAAY2lD,EAAYltD,eAAep0C,EAAM,IAEjD,OAAQ4X,GACN,IAAK,SACL,IAAK,YACL,IAAK,IACH+jC,EAAYuN,EAAYxN,iBAAiBC,GAI7C,OAAOuH,EAAUvS,kBAAkBgxD,4BAA4BvmG,EAAQq2C,UAAWkK,IAKtFjrD,EAAQqlB,QAAU+gG,G,6BCpClB,IAAIrmE,EAAkB37C,MAAQA,KAAK27C,iBAAmB,SAAUloB,GAC9D,OAAOA,GAAOA,EAAIv2B,WAAau2B,EAAM,CACnC,QAAWA,IAIfj3B,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAGT,MAAMyvG,EAAc,EAAQ,IAEtBp+C,EAAY,EAAQ,GAEpBpS,EAAUL,EAAgB,EAAQ,IAElC4pC,EAAmC,EAAQ,GAE3CnlC,EAAY,EAAQ,GAEpByU,EAAU,IAAInjD,OAAO,4DAA4D0uC,EAAU7E,gBAAgBixD,EAAY1sD,0CAAgD,KAI7K,MAAMmiE,UAAmC18B,EAAiC5tC,uCACxEI,eACE,OAAO8c,EAGT1c,aAAa7xC,EAAS4E,GACpB,MAAM2G,EAAW3G,EATO,GASoBjG,cACtCu2G,EAAWtwG,EATO,GASoBjG,cACtCw2G,EAAWjP,EAAY1sD,qBAAqB07D,GAElD,GAAgB,WAAZ3pG,GAAqC,YAAZA,GAAsC,WAAZA,EAAuB,CAC5E,MAAMg1C,EAAY,GAElB,OADAA,EAAU40D,GAAY,EACfrtD,EAAUvS,kBAAkBgxD,4BAA4BvmG,EAAQq2C,UAAWkK,GAGpF,GAAgB,aAAZh1C,GAAuC,UAAZA,EAAsB,CACnD,MAAMg1C,EAAY,GAElB,OADAA,EAAU40D,IAAa,EAChBrtD,EAAUvS,kBAAkBgxD,4BAA4BvmG,EAAQq2C,UAAWkK,GAGpF,MAAMhJ,EAAav3C,EAAQ8oD,0BAC3B,IAAI9+B,EAAO0rB,EAAQ/6B,QAAQ3a,EAAQq2C,UAAUR,SAoB7C,OAlBIq/D,EAAStwG,MAAM,UACjBolB,EAAOA,EAAK7vB,KAAK6vB,EAAK3zB,IAAI,KAAM,KAChCkhD,EAAWb,MAAM,MAAO1sB,EAAKA,QAC7ButB,EAAWb,MAAM,QAAS1sB,EAAKD,QAAU,GACzCwtB,EAAWb,MAAM,OAAQ1sB,EAAKZ,SACrB8rF,EAAStwG,MAAM,WACxBolB,EAAOA,EAAK7vB,IAAmB,EAAd6vB,EAAKA,OAAY,KAClCutB,EAAWb,MAAM,MAAO1sB,EAAKA,QAC7ButB,EAAW78C,OAAO,OAAQsvB,EAAKZ,QAC/BmuB,EAAW78C,OAAO,QAASsvB,EAAKD,QAAU,IACjCmrF,EAAStwG,MAAM,WACxBolB,EAAOA,EAAK7vB,IAAmB,EAAd6vB,EAAKA,OAAY,KAClCA,EAAOA,EAAK7vB,KAAK6vB,EAAKD,QAAS,SAC/BwtB,EAAWb,MAAM,MAAO1sB,EAAKA,QAC7ButB,EAAWb,MAAM,QAAS1sB,EAAKD,QAAU,GACzCwtB,EAAW78C,OAAO,OAAQsvB,EAAKZ,SAG1BmuB,GAKXjiD,EAAQqlB,QAAUghG,G,6BCxElBzlH,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAGT,MAAMyvG,EAAc,EAAQ,IAEtBp+C,EAAY,EAAQ,GAEpBm3B,EAAmC,EAAQ,GAE3CnxB,EAAc,EAAQ,IAEtBS,EAAU,IAAInjD,OAAY,IAAM86F,EAAYjtD,mBAAvB,wCAA0F,KAC/Gy5D,EAAiB,IAAItnG,OAAY,IAAM86F,EAAYjtD,mBAAvB,wBAA0E,KAE5G,MAAM2iE,UAAkC38B,EAAiC5tC,uCACvEv4C,YAAY6xD,GACV6nD,QACA94G,KAAKixD,WAAaA,EAGpBlZ,eACE,OAAO/3C,KAAKixD,WAAa+nD,EAAiBnkD,EAG5C1c,aAAa7xC,EAAS4E,GACpB,MAAM27C,EAAY2lD,EAAYltD,eAAep0C,EAAM,IAC7CguG,EAAkB9kD,EAAYxN,iBAAiBC,GACrD,OAAOuH,EAAUvS,kBAAkBgxD,4BAA4BvmG,EAAQq2C,UAAWu8D,IAKtFt9G,EAAQqlB,QAAUihG,G,6BCjClB1lH,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAGT,MAAMyvG,EAAc,EAAQ,IAEtBp+C,EAAY,EAAQ,GAEpBm3B,EAAmC,EAAQ,GAE3C1wB,EAAU,IAAInjD,OAAY,IAAM86F,EAAYjtD,mBAAvB,yDAAgH,KACrIy5D,EAAiB,IAAItnG,OAAY,IAAM86F,EAAYjtD,mBAAvB,iCAAwF,KAG1H,MAAM4iE,UAAoC58B,EAAiC5tC,uCACzEv4C,YAAY6xD,GACV6nD,QACA94G,KAAKixD,WAAaA,EAGpBlZ,eACE,OAAO/3C,KAAKixD,WAAa+nD,EAAiBnkD,EAG5C1c,aAAa7xC,EAAS4E,GACpB,MAAM0yC,EAAY4uD,EAAYltD,eAAep0C,EAbrB,IAcxB,OAAOkjD,EAAUvS,kBAAkBgxD,4BAA4BvmG,EAAQq2C,UAAWiB,IAKtFhiD,EAAQqlB,QAAUkhG,G,6BC/BlB,IAAIhkE,EAAkBn+C,MAAQA,KAAKm+C,kBAAoB3hD,OAAOY,OAAS,SAAUb,EAAGL,EAAGkjB,EAAGg/B,QAC7Ej5C,IAAPi5C,IAAkBA,EAAKh/B,GAC3B5iB,OAAOC,eAAeF,EAAG6hD,EAAI,CAC3B1hD,YAAY,EACZC,IAAK,WACH,OAAOT,EAAEkjB,OAGX,SAAU7iB,EAAGL,EAAGkjB,EAAGg/B,QACVj5C,IAAPi5C,IAAkBA,EAAKh/B,GAC3B7iB,EAAE6hD,GAAMliD,EAAEkjB,KAGRi/B,EAAqBr+C,MAAQA,KAAKq+C,qBAAuB7hD,OAAOY,OAAS,SAAUb,EAAG8iB,GACxF7iB,OAAOC,eAAeF,EAAG,UAAW,CAClCG,YAAY,EACZK,MAAOsiB,KAEP,SAAU9iB,EAAG8iB,GACf9iB,EAAW,QAAI8iB,IAGb+iG,EAAepiH,MAAQA,KAAKoiH,cAAgB,SAAUlmH,EAAGN,GAC3D,IAAK,IAAIgC,KAAK1B,EAAa,YAAN0B,GAAoBpB,OAAOkB,UAAUC,eAAe1B,KAAKL,EAASgC,IAAIugD,EAAgBviD,EAASM,EAAG0B,IAGrH0gD,EAAet+C,MAAQA,KAAKs+C,cAAgB,SAAU7qB,GACxD,GAAIA,GAAOA,EAAIv2B,WAAY,OAAOu2B,EAClC,IAAIjQ,EAAS,GACb,GAAW,MAAPiQ,EAAa,IAAK,IAAIrU,KAAKqU,EAAe,YAANrU,GAAmB5iB,OAAOkB,UAAUC,eAAe1B,KAAKw3B,EAAKrU,IAAI++B,EAAgB36B,EAAQiQ,EAAKrU,GAItI,OAFAi/B,EAAmB76B,EAAQiQ,GAEpBjQ,GAGThnB,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAETnB,EAAQymH,UAAO,EAEfD,EAAa,EAAQ,KAAWxmH,GAEhCA,EAAQymH,KAAO/jE,EAAa,EAAQ,O,6BC3CpC,IAAI3C,EAAkB37C,MAAQA,KAAK27C,iBAAmB,SAAUloB,GAC9D,OAAOA,GAAOA,EAAIv2B,WAAau2B,EAAM,CACnC,QAAWA,IAIfj3B,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAETnB,EAAQsoF,oBAAsBtoF,EAAQ2yD,0BAA4B3yD,EAAQ2iD,UAAY3iD,EAAQuK,MAAQvK,EAAQ0pB,OAAS1pB,EAAQ4iD,OAAS5iD,EAAQ0mH,UAAO,EAEvJ,MAAMnjE,EAAW,EAAQ,IAEnBwR,EAAiChV,EAAgB,EAAQ,KAEzDopC,EAAmB,EAAQ,IAE3Bw9B,EAA2B5mE,EAAgB,EAAQ,MAEnD6mE,EAAqB7mE,EAAgB,EAAQ,MAE7C8mE,EAA+B9mE,EAAgB,EAAQ,MAEvD+mE,EAAgC/mE,EAAgB,EAAQ,MAExDgnE,EAA+BhnE,EAAgB,EAAQ,MAEvDinE,EAAwBjnE,EAAgB,EAAQ,MAEhDknE,EAAgClnE,EAAgB,EAAQ,MAExDmnE,EAA+BnnE,EAAgB,EAAQ,MAkB7D,SAAS4S,IACP,MAAMlP,EAAS6kC,IAEf,OADA7kC,EAAOmP,QAAQ0C,QAAQ,IAAIqxD,EAAyBthG,SAC7Co+B,EAKT,SAAS6kC,IACP,MAAM51B,EAAgBy2B,EAAiBt0B,2BAA2B,CAChEjC,QAAS,CAAC,IAAIg0D,EAAmBvhG,QAAW,IAAIyhG,EAA8BzhG,QAAW,IAAI2hG,EAAsB3hG,QAAW,IAAI0hG,EAA6B1hG,QAAW,IAAIwhG,EAA6BxhG,SAC3MwtC,SAAU,CAAC,IAAIo0D,EAA8B5hG,QAAW,IAAI6hG,EAA6B7hG,WAG3F,OADAqtC,EAAcG,SAAWH,EAAcG,SAASnnD,QAAOynD,KAAaA,aAAmB4B,EAA+B1vC,WAC/GqtC,EA9BT1yD,EAAQ0mH,KAAO,IAAInjE,EAASD,OAAOqP,KACnC3yD,EAAQ4iD,OAAS,IAAIW,EAASD,OAAOqP,KACrC3yD,EAAQ0pB,OAAS,IAAI65B,EAASD,OAAOglC,KAMrCtoF,EAAQuK,MAJR,SAAe83C,EAAMmB,EAAKC,GACxB,OAAOzjD,EAAQ4iD,OAAOr4C,MAAM83C,EAAMmB,EAAKC,IASzCzjD,EAAQ2iD,UAJR,SAAmBN,EAAMmB,EAAKC,GAC5B,OAAOzjD,EAAQ4iD,OAAOD,UAAUN,EAAMmB,EAAKC,IAW7CzjD,EAAQ2yD,0BAA4BA,EAWpC3yD,EAAQsoF,oBAAsBA,G,6BClE9B,IAAIvoC,EAAkB37C,MAAQA,KAAK27C,iBAAmB,SAAUloB,GAC9D,OAAOA,GAAOA,EAAIv2B,WAAau2B,EAAM,CACnC,QAAWA,IAIfj3B,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAGT,MAAMi/C,EAAUL,EAAgB,EAAQ,IAElC4pC,EAAmC,EAAQ,GASjD,MAAMw9B,UAA+Bx9B,EAAiC5tC,uCACpEI,aAAazxC,GACX,OAAO,IAAIoL,OAAO,gnBAAyQ,KAG7RymC,aAAa7xC,EAAS4E,GACpB,MAAMxJ,EAAQwJ,EAAMxJ,MACd8hB,EAASld,EAAQ6oD,oBAAoBztD,EAAOwJ,EAAM,IAClD26C,EAAY7J,EAAQ/6B,QAAQ3a,EAAQ43C,SAC1C,IAAI8kE,EAAcn9D,EAElB,GAAI36C,EAlBU,GAmBZsY,EAAOvhB,MAAM+6C,MAAM,OAAQ6I,EAAUtiB,QACrC/f,EAAOvhB,MAAM+6C,MAAM,SAAU6I,EAAUxhB,UACvC7gB,EAAOvhB,MAAM+6C,MAAM,SAAU6I,EAAUvhB,UACvC9gB,EAAOvhB,MAAM+6C,MAAM,cAAe6I,EAAUthB,oBACvC,GAAIr5B,EAtBK,GAsBe,CAC7B,MAAM+3G,EAAO/3G,EAvBC,GAwBRg4G,EAAQh4G,EAvBC,GAyBH,UAAR+3G,GAAuB,UAARA,EACbp9D,EAAUtiB,OAAS,IACrBy/E,EAAcA,EAAYviH,IAAI,EAAG,QAElB,UAARwiH,GAAuB,UAARA,GAAuB,UAARA,EACvCD,EAAcA,EAAYviH,KAAK,EAAG,OACjB,UAARwiH,EACTD,EAAcA,EAAYviH,KAAK,EAAG,OACjB,gBAARwiH,EACTD,EAAcA,EAAYviH,KAAK,EAAG,OACjB,UAARwiH,EACTD,EAAcA,EAAYviH,IAAI,EAAG,OAChB,gBAARwiH,IACTD,EAAcA,EAAYviH,IAAI,EAAG,QAGtB,UAATyiH,GAAyB,UAATA,EAClB1/F,EAAOvhB,MAAM+6C,MAAM,OAAQ,GACT,UAATkmE,IACT1/F,EAAOvhB,MAAM+6C,MAAM,OAAQ,IAC3Bx5B,EAAOvhB,MAAM+6C,MAAM,WAAY,SAE5B,GAAI9xC,EA9CM,GA8Ce,CAC9B,MACMi4G,EADcj4G,EA/CL,GAgDW,GAEb,UAATi4G,GAAyB,UAATA,GAAyB,UAATA,EAClC3/F,EAAOvhB,MAAM+6C,MAAM,OAAQ,GACT,UAATmmE,GAAyB,UAATA,GACzB3/F,EAAOvhB,MAAM+6C,MAAM,OAAQ,IAC3Bx5B,EAAOvhB,MAAM+6C,MAAM,WAAY,IACb,UAATmmE,GACT3/F,EAAOvhB,MAAM+6C,MAAM,OAAQ,IAC3Bx5B,EAAOvhB,MAAM+6C,MAAM,WAAY,IACb,UAATmmE,GAAyB,UAATA,GACzB3/F,EAAOvhB,MAAM+6C,MAAM,OAAQ,IAC3Bx5B,EAAOvhB,MAAM+6C,MAAM,WAAY,IACb,UAATmmE,GACT3/F,EAAOvhB,MAAM+6C,MAAM,OAAQ,QAExB,GAAI9xC,EA/DK,GA+De,CAC7B,MAAMk4G,EAAOl4G,EAhEC,GAkEF,UAARk4G,GAAuB,UAARA,EACbv9D,EAAUtiB,OAAS,IACrBy/E,EAAcA,EAAYviH,IAAI,EAAG,QAElB,UAAR2iH,GAAuB,UAARA,GAAuB,UAARA,EACvCJ,EAAcA,EAAYviH,KAAK,EAAG,OACjB,UAAR2iH,EACTJ,EAAcA,EAAYviH,KAAK,EAAG,OACjB,gBAAR2iH,EACTJ,EAAcA,EAAYviH,KAAK,EAAG,OACjB,UAAR2iH,EACTJ,EAAcA,EAAYviH,IAAI,EAAG,OAChB,gBAAR2iH,IACTJ,EAAcA,EAAYviH,IAAI,EAAG,QAGnC,MAAM4iH,EAAcn4G,EAjFL,GAmFf,GAAIm4G,EAAa,CACf,MAAMC,EAAQD,EAAY,GAEb,UAATC,GAAyB,UAATA,GAAyB,UAATA,EAClC9/F,EAAOvhB,MAAM+6C,MAAM,OAAQ,GACT,UAATsmE,GAAyB,UAATA,GACzB9/F,EAAOvhB,MAAM+6C,MAAM,OAAQ,IAC3Bx5B,EAAOvhB,MAAM+6C,MAAM,WAAY,IACb,UAATsmE,GACT9/F,EAAOvhB,MAAM+6C,MAAM,OAAQ,IAC3Bx5B,EAAOvhB,MAAM+6C,MAAM,WAAY,IACb,UAATsmE,GAAyB,UAATA,GACzB9/F,EAAOvhB,MAAM+6C,MAAM,OAAQ,IAC3Bx5B,EAAOvhB,MAAM+6C,MAAM,WAAY,IACb,UAATsmE,GACT9/F,EAAOvhB,MAAM+6C,MAAM,OAAQ,IAQjC,OAHAx5B,EAAOvhB,MAAMjB,OAAO,MAAOgiH,EAAY1yF,QACvC9M,EAAOvhB,MAAMjB,OAAO,QAASgiH,EAAY3yF,QAAU,GACnD7M,EAAOvhB,MAAMjB,OAAO,OAAQgiH,EAAYtzF,QACjClM,GAKX5nB,EAAQqlB,QAAU8hG,G,6BClIlB,IAAIpnE,EAAkB37C,MAAQA,KAAK27C,iBAAmB,SAAUloB,GAC9D,OAAOA,GAAOA,EAAIv2B,WAAau2B,EAAM,CACnC,QAAWA,IAIfj3B,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAGT,MAAMi/C,EAAUL,EAAgB,EAAQ,IAElC4pC,EAAmC,EAAQ,GAE3CinB,EAAc,EAAQ,IAM5B,MAAM+W,UAAyBh+B,EAAiC5tC,uCAC9DI,eACE,OAAO,IAAIrmC,OAAO,cAA0BlV,OAAOkH,KAAK8oG,EAAY51C,QAAQjzD,KAAK,IAA/D,SAAqFnH,OAAOkH,KAAK8oG,EAAY51C,QAAQjzD,KAAK,IAA1H,0DAAqNnH,OAAOkH,KAAK8oG,EAAY51C,QAAQjzD,KAAK,IAA1P,+CAA+UnH,OAAOkH,KAAK8oG,EAAY51C,QAAQjzD,KAAK,IAApX,sCAGpBw0C,aAAa7xC,EAAS4E,GACpB,MAAM83G,EAAchnE,EAAQ/6B,QAAQ3a,EAAQ43C,SACtC16B,EAASld,EAAQ6oD,oBAAoBjkD,EAAMxJ,MAAOwJ,EAAM,IAC9D,IAAImlB,EAAQgG,SAASnrB,EAXL,IAehB,GAHI+b,MAAMoJ,KAAQA,EAAQm8E,EAAY91C,iBAAiBxrD,EAZvC,KAahBsY,EAAOvhB,MAAMjB,OAAO,QAASqvB,GAEzBnlB,EAdU,GAcQ,CACpB,IAAIwuB,EAAMrD,SAASnrB,EAfP,IAgBR+b,MAAMyS,KAAMA,EAAM8yE,EAAY91C,iBAAiBxrD,EAhBvC,KAiBZsY,EAAOvhB,MAAMjB,OAAO,MAAO04B,QAE3BlW,EAAOvhB,MAAM+6C,MAAM,MAAOgmE,EAAY1yF,QAGxC,GAAIplB,EAxBW,GAwBQ,CACrB,IAAIwkB,EAAO2G,SAASnrB,EAzBP,IA0BT+b,MAAMyI,KAAOA,EAAO88E,EAAY/1C,eAAevrD,EA1BtC,KA2BbsY,EAAOvhB,MAAMjB,OAAO,OAAQ0uB,QAE5BlM,EAAOvhB,MAAM+6C,MAAM,OAAQgmE,EAAYtzF,QAGzC,OAAOlM,GAKX5nB,EAAQqlB,QAAUsiG,G,6BCrDlB,IAAI5nE,EAAkB37C,MAAQA,KAAK27C,iBAAmB,SAAUloB,GAC9D,OAAOA,GAAOA,EAAIv2B,WAAau2B,EAAM,CACnC,QAAWA,IAIfj3B,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAGT,MAAMi/C,EAAUL,EAAgB,EAAQ,IAElC4pC,EAAmC,EAAQ,GAE3CinB,EAAc,EAAQ,IAEtB33C,EAAU,IAAInjD,OAAO,UAAYlV,OAAOkH,KAAK8oG,EAAY51C,QAAQjzD,KAAK,IAAjD,+LAAmJ,KAI9K,MAAM6/G,UAAmCj+B,EAAiC5tC,uCACxEI,eACE,OAAO8c,EAGT1c,aAAa7xC,EAAS4E,GACpB,MAAMsY,EAASld,EAAQ6oD,oBAAoBjkD,EAAMxJ,MAAOwJ,EAAM,IAC9D,IAAIoX,EAAS+T,SAASnrB,EAVL,IAgBjB,GAJI+b,MAAM3E,KACRA,EAASkqF,EAAY91C,iBAAiBxrD,EAbvB,KAgBb+b,MAAM3E,GAAS,CACjB,MAAMC,EAASrX,EAjBA,GAmBf,GAAe,WAAXqX,EACFD,EAAS,MACJ,IAAe,WAAXC,EAGT,OAAO,KAFPD,EAAS,IAMb,IAAIgO,EAAO0rB,EAAQ/6B,QAAQ3a,EAAQ43C,SACnC,MACMulE,EADOv4G,EA5BE,GA6BO,GAEtB,OAAIu4G,EAASv4G,MAAM,2CACD,UAAZu4G,GAA+B,UAAZA,EACrBnzF,EAAOA,EAAK7vB,IAAI6hB,EAAQ,KACH,UAAZmhG,GAA+B,UAAZA,EAC5BnzF,EAAOA,EAAK7vB,IAAa,EAAT6hB,EAAY,KACP,UAAZmhG,EACTnzF,EAAOA,EAAK7vB,IAAI6hB,EAAQ,SACH,UAAZmhG,IACTnzF,EAAOA,EAAK7vB,IAAI6hB,EAAQ,SAG1BkB,EAAOvhB,MAAMjB,OAAO,OAAQsvB,EAAKZ,QACjClM,EAAOvhB,MAAMjB,OAAO,QAASsvB,EAAKD,QAAU,GAC5C7M,EAAOvhB,MAAMjB,OAAO,MAAOsvB,EAAKA,QACzB9M,IAGO,UAAZigG,EACFnzF,EAAOA,EAAK7vB,IAAI6hB,EAAQ,UACH,UAAZmhG,EACTnzF,EAAOA,EAAK7vB,IAAI6hB,EAAQ,UACH,UAAZmhG,GAA+B,UAAZA,IAC5BnzF,EAAOA,EAAK7vB,IAAI6hB,EAAQ,SAG1BkB,EAAOvhB,MAAM+6C,MAAM,OAAQ1sB,EAAKZ,QAChClM,EAAOvhB,MAAM+6C,MAAM,QAAS1sB,EAAKD,QAAU,GAC3C7M,EAAOvhB,MAAM+6C,MAAM,MAAO1sB,EAAKA,QAC/B9M,EAAOvhB,MAAMjB,OAAO,OAAQsvB,EAAKiT,QACjC/f,EAAOvhB,MAAMjB,OAAO,SAAUsvB,EAAK+T,UACnC7gB,EAAOvhB,MAAMjB,OAAO,SAAUsvB,EAAKgU,UAC5B9gB,IAKX5nB,EAAQqlB,QAAUuiG,G,6BCrFlB,IAAI7nE,EAAkB37C,MAAQA,KAAK27C,iBAAmB,SAAUloB,GAC9D,OAAOA,GAAOA,EAAIv2B,WAAau2B,EAAM,CACnC,QAAWA,IAIfj3B,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAGT,MAAMi/C,EAAUL,EAAgB,EAAQ,IAElC4pC,EAAmC,EAAQ,GAE3CinB,EAAc,EAAQ,IAEtB33C,EAAU,IAAInjD,OAAO,0GAAqDlV,OAAOkH,KAAK8oG,EAAY71C,gBAAgBhzD,KAAK,KAAO,KAEpI,MAAM+/G,UAAoCn+B,EAAiC5tC,uCACzEI,eACE,OAAO8c,EAGT1c,aAAa7xC,EAAS4E,GACpB,MAAMsY,EAASld,EAAQ6oD,oBAAoBjkD,EAAMxJ,MAAOwJ,EAAM,IACxDkwG,EAAYlwG,EAAM4xD,OAAOvlC,QACzByP,EAASwlE,EAAY71C,eAAeykD,GAC1C,QAAej2G,IAAX6hC,EAAsB,OAAO,KACjC,IAAIn1B,EAAW,KACf,MAAMiR,EAAS5X,EAAM4xD,OAAOh6C,OAEd,UAAVA,EACFjR,EAAW,OACQ,UAAViR,EACTjR,EAAW,OACQ,UAAViR,GAA2B,UAAVA,GAA2B,UAAVA,IAC3CjR,EAAW,QAGb,IAAImxG,EAAchnE,EAAQ/6B,QAAQ3a,EAAQ43C,SACtCylE,GAAmB,EACvB,MAAMC,EAAYZ,EAAYtpF,MAgC9B,MA9BgB,QAAZ7nB,GAAkC,QAAZA,GACxBmxG,EAAcA,EAAYtpF,IAAIsN,EAAS,GACvC28E,GAAmB,GACE,QAAZ9xG,GACTmxG,EAAcA,EAAYtpF,IAAIsN,EAAS,GACvC28E,GAAmB,GAEnBX,EADqB,QAAZnxG,EACKmxG,EAAYtpF,IAAIsN,GAE1Br4B,KAAKqc,IAAIgc,EAAS,EAAI48E,GAAaj1G,KAAKqc,IAAIgc,EAAS48E,GACzCZ,EAAYtpF,IAAIsN,EAAS,GAC9Br4B,KAAKqc,IAAIgc,EAAS,EAAI48E,GAAaj1G,KAAKqc,IAAIgc,EAAS48E,GAChDZ,EAAYtpF,IAAIsN,EAAS,GAEzBg8E,EAAYtpF,IAAIsN,GAIlCxjB,EAAOvhB,MAAMjB,OAAO,UAAWgmC,GAE3B28E,GACFngG,EAAOvhB,MAAMjB,OAAO,MAAOgiH,EAAY1yF,QACvC9M,EAAOvhB,MAAMjB,OAAO,QAASgiH,EAAY3yF,QAAU,GACnD7M,EAAOvhB,MAAMjB,OAAO,OAAQgiH,EAAYtzF,UAExClM,EAAOvhB,MAAM+6C,MAAM,MAAOgmE,EAAY1yF,QACtC9M,EAAOvhB,MAAM+6C,MAAM,QAASgmE,EAAY3yF,QAAU,GAClD7M,EAAOvhB,MAAM+6C,MAAM,OAAQgmE,EAAYtzF,SAGlClM,GAKX5nB,EAAQqlB,QAAUyiG,G,6BC9ElB,IAAI/nE,EAAkB37C,MAAQA,KAAK27C,iBAAmB,SAAUloB,GAC9D,OAAOA,GAAOA,EAAIv2B,WAAau2B,EAAM,CACnC,QAAWA,IAIfj3B,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAGT,MAAMi/C,EAAUL,EAAgB,EAAQ,IAElC4pC,EAAmC,EAAQ,GAE3CinB,EAAc,EAAQ,IAEtBgQ,EAAoB,IAAI9qG,OAAO,mnBAAgTlV,OAAOkH,KAAK8oG,EAAY51C,QAAQjzD,KAAK,IAArV,4EAAqZnH,OAAOkH,KAAK8oG,EAAY51C,QAAQjzD,KAAK,IAA1b,kDAAofnH,OAAOkH,KAAK8oG,EAAY51C,QAAQjzD,KAAK,IAAzhB,uDAAulB,KACtnB84G,EAAqB,IAAI/qG,OAAO,kpBAA0UlV,OAAOkH,KAAK8oG,EAAY51C,QAAQjzD,KAAK,IAA/W,4EAA+anH,OAAOkH,KAAK8oG,EAAY51C,QAAQjzD,KAAK,IAApd,kDAA8gBnH,OAAOkH,KAAK8oG,EAAY51C,QAAQjzD,KAAK,IAAnjB,uDAAinB,KAWvpB,MAAMkgH,UAAmCt+B,EAAiC5tC,uCACxEI,eACE,OAAOykE,EAGTrkE,aAAa7xC,EAAS4E,GACpB,GAAIA,EAAMxJ,MAAQ,GAAK4E,EAAQ23C,KAAK/yC,EAAMxJ,MAAQ,GAAGwJ,MAAM,MACzD,OAAO,KAGT,MAAM26C,EAAY7J,EAAQ/6B,QAAQ3a,EAAQ43C,SACpC16B,EAASld,EAAQ6oD,oBAAoBjkD,EAAMxJ,MAAOwJ,EAAM,IAC9D,IAAI83G,EAAcn9D,EAAUpe,QAE5B,GAAIv8B,EAxBY,GA2BF,WAFR+3G,EAAO/3G,EAzBG,KA2Ba,UAAR+3G,EACbp9D,EAAUtiB,OAAS,IACrBy/E,EAAcA,EAAYviH,IAAI,EAAG,QAElB,UAARwiH,GAAuB,UAARA,GAAuB,UAARA,EACvCD,EAAcA,EAAYviH,KAAK,EAAG,OACjB,UAARwiH,EACTD,EAAcA,EAAYviH,KAAK,EAAG,OACjB,gBAARwiH,EACTD,EAAcA,EAAYviH,KAAK,EAAG,OACjB,UAARwiH,EACTD,EAAcA,EAAYviH,IAAI,EAAG,OAChB,gBAARwiH,IACTD,EAAcA,EAAYviH,IAAI,EAAG,QAGnC+iB,EAAOvhB,MAAMjB,OAAO,MAAOgiH,EAAY1yF,QACvC9M,EAAOvhB,MAAMjB,OAAO,QAASgiH,EAAY3yF,QAAU,GACnD7M,EAAOvhB,MAAMjB,OAAO,OAAQgiH,EAAYtzF,aACnC,GAAIxkB,EA3CK,GA2Ce,CAGjB,WAFRk4G,EAAOl4G,EA5CG,KA8Ca,UAARk4G,EACjBJ,EAAcA,EAAYviH,IAAI,EAAG,OAChB,UAAR2iH,GAAuB,UAARA,GAAuB,UAARA,EACvCJ,EAAcA,EAAYviH,KAAK,EAAG,OACjB,UAAR2iH,EACTJ,EAAcA,EAAYviH,KAAK,EAAG,OACjB,gBAAR2iH,EACTJ,EAAcA,EAAYviH,KAAK,EAAG,OACjB,UAAR2iH,EACTJ,EAAcA,EAAYviH,IAAI,EAAG,OAChB,gBAAR2iH,IACTJ,EAAcA,EAAYviH,IAAI,EAAG,QAGnC+iB,EAAOvhB,MAAMjB,OAAO,MAAOgiH,EAAY1yF,QACvC9M,EAAOvhB,MAAMjB,OAAO,QAASgiH,EAAY3yF,QAAU,GACnD7M,EAAOvhB,MAAMjB,OAAO,OAAQgiH,EAAYtzF,aAExClM,EAAOvhB,MAAM+6C,MAAM,MAAOgmE,EAAY1yF,QACtC9M,EAAOvhB,MAAM+6C,MAAM,QAASgmE,EAAY3yF,QAAU,GAClD7M,EAAOvhB,MAAM+6C,MAAM,OAAQgmE,EAAYtzF,QAGzC,IAAI6T,EAAO,EACPc,EAAS,EACT9d,GAAY,EAEhB,GAAIrb,EArEa,GAqEQ,CACvB,IAAIo5B,EAASjO,SAASnrB,EAtEP,IA4Ef,GAJI+b,MAAMqd,KACRA,EAASkoE,EAAY91C,iBAAiBxrD,EAzEzB,KA4EXo5B,GAAU,GAAI,OAAO,KACzB9gB,EAAOvhB,MAAMjB,OAAO,SAAUsjC,GA0BhC,GAvBAf,EAAOlN,SAASnrB,EAlFD,IAoFX+b,MAAMsc,KACRA,EAAOipE,EAAY91C,iBAAiBxrD,EArFvB,KAwFXA,EAvFa,GAwFY,UAAvBA,EAxFW,GAyFbm5B,EAAS,GACuB,UAAvBn5B,EA1FI,IA0FiD,UAAvBA,EA1F1B,GA2Fbm5B,EAAS,GAETA,EAAShO,SAASnrB,EA7FL,IA+FT+b,MAAMod,KACRA,EAASmoE,EAAY91C,iBAAiBxrD,EAhG3B,MAmGNq4B,EAAO,MAChBc,EAASd,EAAO,IAChBA,EAAO50B,KAAKkhB,MAAM0T,EAAO,MAGvBc,GAAU,GACZ,OAAO,KAGT,GAAId,EAAO,GACT,OAAO,KAOT,GAJIA,GAAQ,KACVhd,EAAW,GAGTrb,EAlHiB,GAkHQ,CAC3B,GAAIq4B,EAAO,GAAI,OAAO,KAGV,MAFR8vB,EAAOnoD,EApHQ,GAoHgB,GAAGjG,iBAGpCshB,EAAW,EACC,IAARgd,IAAYA,EAAO,IAGb,KAAR8vB,IACF9sC,EAAW,EACC,IAARgd,IAAYA,GAAQ,UAErB,GAAIr4B,EAtIe,GAsIe,CAIxB,WAFX44G,EADgB54G,EAvII,GAwII,KAEK,UAAX44G,GACpBv9F,EAAW,EACC,IAARgd,IAAYA,EAAO,IACH,UAAXugF,IACTv9F,EAAW,EACC,IAARgd,IAAYA,GAAQ,UAErB,GAAIr4B,EAhJe,GAgJe,CAIxB,WAFX64G,EADgB74G,EAjJI,GAkJI,KAEK,UAAX64G,GAA6B,UAAXA,GAA6B,UAAXA,GACxDx9F,EAAW,EACC,IAARgd,IAAYA,EAAO,IACH,UAAXwgF,GAA6B,UAAXA,GAA6B,UAAXA,IAC7Cx9F,EAAW,EACC,IAARgd,IAAYA,GAAQ,UAErB,GAAIr4B,EAzJe,GAyJe,CAIxB,WAFX84G,EADgB94G,EA1JI,GA2JI,KAEK,UAAX84G,GAA6B,UAAXA,GAA6B,UAAXA,GACxDz9F,EAAW,EACC,IAARgd,IAAYA,EAAO,IACH,UAAXygF,GAA6B,UAAXA,GAA6B,UAAXA,IAC7Cz9F,EAAW,EACC,IAARgd,IAAYA,GAAQ,KAmB5B,GAfA/f,EAAOvhB,MAAMjB,OAAO,OAAQuiC,GAC5B/f,EAAOvhB,MAAMjB,OAAO,SAAUqjC,GAE1B9d,GAAY,EACd/C,EAAOvhB,MAAMjB,OAAO,WAAYulB,GAE5Bgd,EAAO,GACT/f,EAAOvhB,MAAM+6C,MAAM,WAAY,GAE/Bx5B,EAAOvhB,MAAM+6C,MAAM,WAAY,KAInC9xC,EAAQuxG,EAAmB58E,KAAKv5B,EAAQ23C,KAAK/F,UAAU10B,EAAO9hB,MAAQ8hB,EAAOy6B,KAAKp/C,UAGhF,OAAI2kB,EAAOy6B,KAAK/yC,MAAM,SACb,KAGFsY,EAGT,IAAIygG,EAAYjB,EAAYv7E,QAI1B,IAAIw7E,EADN,GAFAz/F,EAAO1E,IAAMxY,EAAQ8oD,0BAEjBlkD,EApMY,GAuMF,WAFR+3G,EAAO/3G,EArMG,KAuMa,UAAR+3G,EACbp9D,EAAUtiB,OAAS,IACrB0gF,EAAYA,EAAUxjH,IAAI,EAAG,QAEd,UAARwiH,GAAuB,UAARA,GAAuB,UAARA,EACvCgB,EAAYA,EAAUxjH,KAAK,EAAG,OACb,UAARwiH,EACTgB,EAAYA,EAAUxjH,KAAK,EAAG,OACb,gBAARwiH,EACTgB,EAAYA,EAAUxjH,KAAK,EAAG,OACb,UAARwiH,EACTgB,EAAYA,EAAUxjH,IAAI,EAAG,OACZ,gBAARwiH,IACTgB,EAAYA,EAAUxjH,IAAI,EAAG,QAG/B+iB,EAAO1E,IAAI9d,OAAO,MAAOijH,EAAU3zF,QACnC9M,EAAO1E,IAAI9d,OAAO,QAASijH,EAAU5zF,QAAU,GAC/C7M,EAAO1E,IAAI9d,OAAO,OAAQijH,EAAUv0F,aAC/B,GAAIxkB,EAvNK,GAuNe,CAC7B,IAAIk4G,EAEQ,WAFRA,EAAOl4G,EAxNG,KA0Na,UAARk4G,EACjBa,EAAYA,EAAUxjH,IAAI,EAAG,OACZ,UAAR2iH,GAAuB,UAARA,GAAuB,UAARA,EACvCa,EAAYA,EAAUxjH,KAAK,EAAG,OACb,UAAR2iH,EACTa,EAAYA,EAAUxjH,KAAK,EAAG,OACb,gBAAR2iH,EACTa,EAAYA,EAAUxjH,KAAK,EAAG,OACb,UAAR2iH,EACTa,EAAYA,EAAUxjH,IAAI,EAAG,OACZ,gBAAR2iH,IACTa,EAAYA,EAAUxjH,IAAI,EAAG,QAG/B+iB,EAAO1E,IAAI9d,OAAO,MAAOijH,EAAU3zF,QACnC9M,EAAO1E,IAAI9d,OAAO,QAASijH,EAAU5zF,QAAU,GAC/C7M,EAAO1E,IAAI9d,OAAO,OAAQijH,EAAUv0F,aAEpClM,EAAO1E,IAAIk+B,MAAM,MAAOinE,EAAU3zF,QAClC9M,EAAO1E,IAAIk+B,MAAM,QAASinE,EAAU5zF,QAAU,GAC9C7M,EAAO1E,IAAIk+B,MAAM,OAAQinE,EAAUv0F,QAOrC,GAJA6T,EAAO,EACPc,EAAS,EACT9d,GAAY,EAERrb,EAjPa,GAiPQ,CACnBo5B,EAASjO,SAASnrB,EAlPP,IAwPf,GAJI+b,MAAMqd,KACRA,EAASkoE,EAAY91C,iBAAiBxrD,EArPzB,KAwPXo5B,GAAU,GAAI,OAAO,KACzB9gB,EAAO1E,IAAI9d,OAAO,SAAUsjC,GA0B9B,GAvBAf,EAAOlN,SAASnrB,EA9PD,IAgQX+b,MAAMsc,KACRA,EAAOipE,EAAY91C,iBAAiBxrD,EAjQvB,KAoQXA,EAnQa,GAoQY,UAAvBA,EApQW,GAqQbm5B,EAAS,GACuB,UAAvBn5B,EAtQI,IAsQiD,UAAvBA,EAtQ1B,GAuQbm5B,EAAS,GAETA,EAAShO,SAASnrB,EAzQL,IA2QT+b,MAAMod,KACRA,EAASmoE,EAAY91C,iBAAiBxrD,EA5Q3B,MA+QNq4B,EAAO,MAChBc,EAASd,EAAO,IAChBA,EAAO50B,KAAKkhB,MAAM0T,EAAO,MAGvBc,GAAU,GACZ,OAAO,KAGT,GAAId,EAAO,GACT,OAAO,KAOT,GAJIA,GAAQ,KACVhd,EAAW,GAGTrb,EA9RiB,GA8RQ,CAC3B,GAAIq4B,EAAO,GAAI,OAAO,KACtB,IAAI8vB,EAEQ,MAFRA,EAAOnoD,EAhSQ,GAgSgB,GAAGjG,iBAGpCshB,EAAW,EACC,IAARgd,IAAYA,EAAO,IAGb,KAAR8vB,IACF9sC,EAAW,EACC,IAARgd,IAAYA,GAAQ,KAGrB/f,EAAOvhB,MAAMi7C,UAAU,cACV,GAAZ32B,GACF/C,EAAOvhB,MAAM+6C,MAAM,WAAY,GAEC,IAA5Bx5B,EAAOvhB,MAAMtF,IAAI,SACnB6mB,EAAOvhB,MAAMjB,OAAO,OAAQ,KAG9BwiB,EAAOvhB,MAAM+6C,MAAM,WAAY,GAEC,IAA5Bx5B,EAAOvhB,MAAMtF,IAAI,SACnB6mB,EAAOvhB,MAAMjB,OAAO,OAAQwiB,EAAOvhB,MAAMtF,IAAI,QAAU,WAIxD,GAAIuO,EAlUe,GAkUe,CACvC,IACI44G,EAEW,WAFXA,EADgB54G,EAnUI,GAoUI,KAEK,UAAX44G,GACpBv9F,EAAW,EACC,IAARgd,IAAYA,EAAO,IACH,UAAXugF,IACTv9F,EAAW,EACC,IAARgd,IAAYA,GAAQ,UAErB,GAAIr4B,EA5Ue,GA4Ue,CACvC,IACI64G,EAEW,WAFXA,EADgB74G,EA7UI,GA8UI,KAEK,UAAX64G,GAA6B,UAAXA,GAA6B,UAAXA,GACxDx9F,EAAW,EACC,IAARgd,IAAYA,EAAO,IACH,UAAXwgF,GAA6B,UAAXA,GAA6B,UAAXA,IAC7Cx9F,EAAW,EACC,IAARgd,IAAYA,GAAQ,UAErB,GAAIr4B,EArVe,GAqVe,CACvC,IACI84G,EAEW,WAFXA,EADgB94G,EAtVI,GAuVI,KAEK,UAAX84G,GAA6B,UAAXA,GAA6B,UAAXA,GACxDz9F,EAAW,EACC,IAARgd,IAAYA,EAAO,IACH,UAAXygF,GAA6B,UAAXA,GAA6B,UAAXA,IAC7Cz9F,EAAW,EACC,IAARgd,IAAYA,GAAQ,KAQ5B,GAJA/f,EAAOy6B,KAAOz6B,EAAOy6B,KAAO/yC,EAAM,GAClCsY,EAAO1E,IAAI9d,OAAO,OAAQuiC,GAC1B/f,EAAO1E,IAAI9d,OAAO,SAAUqjC,GAExB9d,GAAY,EACd/C,EAAO1E,IAAI9d,OAAO,WAAYulB,OACzB,CACa/C,EAAOvhB,MAAMi7C,UAAU,aAA+C,GAAhC15B,EAAOvhB,MAAMtF,IAAI,aAExD6mB,EAAOvhB,MAAMtF,IAAI,QAAU4mC,EAC1C/f,EAAO1E,IAAIk+B,MAAM,WAAY,GACpBzZ,EAAO,IAChB/f,EAAO1E,IAAIk+B,MAAM,WAAY,GAQjC,OAJIx5B,EAAO1E,IAAIwR,OAAOpJ,UAAY1D,EAAOvhB,MAAMquB,OAAOpJ,WACpD1D,EAAO1E,IAAIk+B,MAAM,MAAOx5B,EAAO1E,IAAIniB,IAAI,OAAS,GAG3C6mB,GAKX5nB,EAAQqlB,QAAU4iG,G,6BCjZlB,IAAIloE,EAAkB37C,MAAQA,KAAK27C,iBAAmB,SAAUloB,GAC9D,OAAOA,GAAOA,EAAIv2B,WAAau2B,EAAM,CACnC,QAAWA,IAIfj3B,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAGT,MAAMi/C,EAAUL,EAAgB,EAAQ,IAElC4pC,EAAmC,EAAQ,GAE3CinB,EAAc,EAAQ,IAEtB33C,EAAU,IAAInjD,OAAO,kDAA2BlV,OAAOkH,KAAK8oG,EAAY71C,gBAAgBhzD,KAAK,KAAO,KAE1G,MAAMugH,UAA4B3+B,EAAiC5tC,uCACjEI,eACE,OAAO8c,EAGT1c,aAAa7xC,EAAS4E,GACpB,MAAMsY,EAASld,EAAQ6oD,oBAAoBjkD,EAAMxJ,MAAOwJ,EAAM,IACxDkwG,EAAYlwG,EAAM4xD,OAAOvlC,QACzByP,EAASwlE,EAAY71C,eAAeykD,GAC1C,QAAej2G,IAAX6hC,EAAsB,OAAO,KACjC,IAAIg8E,EAAchnE,EAAQ/6B,QAAQ3a,EAAQ43C,SAC1C,MACM0lE,EAAYZ,EAAYtpF,MAsB9B,OAnBEspF,EADEr0G,KAAKqc,IAAIgc,EAAS,EAAI48E,GAAaj1G,KAAKqc,IAAIgc,EAAS48E,GACzCZ,EAAYtpF,IAAIsN,EAAS,GAC9Br4B,KAAKqc,IAAIgc,EAAS,EAAI48E,GAAaj1G,KAAKqc,IAAIgc,EAAS48E,GAChDZ,EAAYtpF,IAAIsN,EAAS,GAEzBg8E,EAAYtpF,IAAIsN,GAGhCxjB,EAAOvhB,MAAMjB,OAAO,UAAWgmC,GAO7BxjB,EAAOvhB,MAAM+6C,MAAM,MAAOgmE,EAAY1yF,QACtC9M,EAAOvhB,MAAM+6C,MAAM,QAASgmE,EAAY3yF,QAAU,GAClD7M,EAAOvhB,MAAM+6C,MAAM,OAAQgmE,EAAYtzF,QAGlClM,GAKX5nB,EAAQqlB,QAAUijG,G,6BCzDlB,IAAIvoE,EAAkB37C,MAAQA,KAAK27C,iBAAmB,SAAUloB,GAC9D,OAAOA,GAAOA,EAAIv2B,WAAau2B,EAAM,CACnC,QAAWA,IAIfj3B,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAGT,MAAMq8G,EAAkCz9D,EAAgB,EAAQ,KAEhE,MAAMwoE,UAAoC/K,EAAgCn4F,QACxE+uC,iBACE,MAAO,uDAKXp0D,EAAQqlB,QAAUkjG,G,6BCnBlB,IAAIxoE,EAAkB37C,MAAQA,KAAK27C,iBAAmB,SAAUloB,GAC9D,OAAOA,GAAOA,EAAIv2B,WAAau2B,EAAM,CACnC,QAAWA,IAIfj3B,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAGT,MAAMu8G,EAAiC39D,EAAgB,EAAQ,KAE/D,MAAMyoE,UAAmC9K,EAA+Br4F,QACtE+uC,iBACE,MAAO,UAKXp0D,EAAQqlB,QAAUmjG,G,6BCnBlB,IAAIzoE,EAAkB37C,MAAQA,KAAK27C,iBAAmB,SAAUloB,GAC9D,OAAOA,GAAOA,EAAIv2B,WAAau2B,EAAM,CACnC,QAAWA,IAIfj3B,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAETnB,EAAQsoF,oBAAsBtoF,EAAQ2yD,0BAA4B3yD,EAAQ2iD,UAAY3iD,EAAQuK,MAAQvK,EAAQ0pB,OAAS1pB,EAAQ4iD,OAAS5iD,EAAQymH,UAAO,EAEvJ,MAAMljE,EAAW,EAAQ,IAEnBwR,EAAiChV,EAAgB,EAAQ,KAEzDopC,EAAmB,EAAQ,IAE3Bs/B,EAA2B1oE,EAAgB,EAAQ,MAEnD2oE,EAAqB3oE,EAAgB,EAAQ,MAE7C4oE,EAA+B5oE,EAAgB,EAAQ,MAEvD6oE,EAAgC7oE,EAAgB,EAAQ,MAExD8oE,EAA+B9oE,EAAgB,EAAQ,MAEvD+oE,EAAwB/oE,EAAgB,EAAQ,MAEhDgpE,EAAgChpE,EAAgB,EAAQ,MAExDipE,EAA+BjpE,EAAgB,EAAQ,MAkB7D,SAAS4S,IACP,MAAMlP,EAAS6kC,IAEf,OADA7kC,EAAOmP,QAAQ0C,QAAQ,IAAImzD,EAAyBpjG,SAC7Co+B,EAKT,SAAS6kC,IACP,MAAM51B,EAAgBy2B,EAAiBt0B,2BAA2B,CAChEjC,QAAS,CAAC,IAAI81D,EAAmBrjG,QAAW,IAAIujG,EAA8BvjG,QAAW,IAAIyjG,EAAsBzjG,QAAW,IAAIwjG,EAA6BxjG,QAAW,IAAIsjG,EAA6BtjG,SAC3MwtC,SAAU,CAAC,IAAIk2D,EAA8B1jG,QAAW,IAAI2jG,EAA6B3jG,WAG3F,OADAqtC,EAAcG,SAAWH,EAAcG,SAASnnD,QAAOynD,KAAaA,aAAmB4B,EAA+B1vC,WAC/GqtC,EA9BT1yD,EAAQymH,KAAO,IAAIljE,EAASD,OAAOqP,KACnC3yD,EAAQ4iD,OAAS,IAAIW,EAASD,OAAOqP,KACrC3yD,EAAQ0pB,OAAS,IAAI65B,EAASD,OAAOglC,KAMrCtoF,EAAQuK,MAJR,SAAe83C,EAAMmB,EAAKC,GACxB,OAAOzjD,EAAQ4iD,OAAOr4C,MAAM83C,EAAMmB,EAAKC,IASzCzjD,EAAQ2iD,UAJR,SAAmBN,EAAMmB,EAAKC,GAC5B,OAAOzjD,EAAQ4iD,OAAOD,UAAUN,EAAMmB,EAAKC,IAW7CzjD,EAAQ2yD,0BAA4BA,EAWpC3yD,EAAQsoF,oBAAsBA,G,6BClE9B,IAAIvoC,EAAkB37C,MAAQA,KAAK27C,iBAAmB,SAAUloB,GAC9D,OAAOA,GAAOA,EAAIv2B,WAAau2B,EAAM,CACnC,QAAWA,IAIfj3B,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAGT,MAAMi/C,EAAUL,EAAgB,EAAQ,IAElC4pC,EAAmC,EAAQ,GASjD,MAAMs/B,UAA+Bt/B,EAAiC5tC,uCACpEI,aAAazxC,GACX,OAAO,IAAIoL,OAAO,+dAAuN,KAG3OymC,aAAa7xC,EAAS4E,GACpB,MAAMxJ,EAAQwJ,EAAMxJ,MACd8hB,EAASld,EAAQ6oD,oBAAoBztD,EAAOwJ,EAAM,IAClD26C,EAAY7J,EAAQ/6B,QAAQ3a,EAAQ43C,SAC1C,IAAI8kE,EAAcn9D,EAElB,GAAI36C,EAlBU,GAmBZsY,EAAOvhB,MAAM+6C,MAAM,OAAQ6I,EAAUtiB,QACrC/f,EAAOvhB,MAAM+6C,MAAM,SAAU6I,EAAUxhB,UACvC7gB,EAAOvhB,MAAM+6C,MAAM,SAAU6I,EAAUvhB,UACvC9gB,EAAOvhB,MAAM+6C,MAAM,cAAe6I,EAAUthB,oBACvC,GAAIr5B,EAtBK,GAsBe,CAC7B,MAAM+3G,EAAO/3G,EAvBC,GAwBRg4G,EAAQh4G,EAvBC,GAyBH,UAAR+3G,EACEp9D,EAAUtiB,OAAS,IACrBy/E,EAAcA,EAAYviH,IAAI,EAAG,QAElB,UAARwiH,EACTD,EAAcA,EAAYviH,KAAK,EAAG,OACjB,UAARwiH,EACTD,EAAcA,EAAYviH,KAAK,EAAG,OACjB,gBAARwiH,EACTD,EAAcA,EAAYviH,KAAK,EAAG,OACjB,UAARwiH,EACTD,EAAcA,EAAYviH,IAAI,EAAG,OAChB,gBAARwiH,IACTD,EAAcA,EAAYviH,IAAI,EAAG,QAGtB,UAATyiH,EACF1/F,EAAOvhB,MAAM+6C,MAAM,OAAQ,GACT,UAATkmE,IACT1/F,EAAOvhB,MAAM+6C,MAAM,OAAQ,IAC3Bx5B,EAAOvhB,MAAM+6C,MAAM,WAAY,SAE5B,GAAI9xC,EA9CM,GA8Ce,CAC9B,MACMi4G,EADcj4G,EA/CL,GAgDW,GAEb,UAATi4G,GAAyB,UAATA,EAClB3/F,EAAOvhB,MAAM+6C,MAAM,OAAQ,GACT,UAATmmE,GACT3/F,EAAOvhB,MAAM+6C,MAAM,OAAQ,IAC3Bx5B,EAAOvhB,MAAM+6C,MAAM,WAAY,IACb,UAATmmE,GACT3/F,EAAOvhB,MAAM+6C,MAAM,OAAQ,IAC3Bx5B,EAAOvhB,MAAM+6C,MAAM,WAAY,IACb,UAATmmE,GAAyB,UAATA,GACzB3/F,EAAOvhB,MAAM+6C,MAAM,OAAQ,IAC3Bx5B,EAAOvhB,MAAM+6C,MAAM,WAAY,IACb,UAATmmE,GACT3/F,EAAOvhB,MAAM+6C,MAAM,OAAQ,QAExB,GAAI9xC,EA/DK,GA+De,CAC7B,MAAMk4G,EAAOl4G,EAhEC,GAkEF,UAARk4G,EACEv9D,EAAUtiB,OAAS,IACrBy/E,EAAcA,EAAYviH,IAAI,EAAG,QAElB,UAAR2iH,EACTJ,EAAcA,EAAYviH,KAAK,EAAG,OACjB,UAAR2iH,EACTJ,EAAcA,EAAYviH,KAAK,EAAG,OACjB,gBAAR2iH,EACTJ,EAAcA,EAAYviH,KAAK,EAAG,OACjB,UAAR2iH,EACTJ,EAAcA,EAAYviH,IAAI,EAAG,OAChB,gBAAR2iH,IACTJ,EAAcA,EAAYviH,IAAI,EAAG,QAGnC,MAAM4iH,EAAcn4G,EAjFL,GAmFf,GAAIm4G,EAAa,CACf,MAAMC,EAAQD,EAAY,GAEb,UAATC,GAAyB,UAATA,EAClB9/F,EAAOvhB,MAAM+6C,MAAM,OAAQ,GACT,UAATsmE,GACT9/F,EAAOvhB,MAAM+6C,MAAM,OAAQ,IAC3Bx5B,EAAOvhB,MAAM+6C,MAAM,WAAY,IACb,UAATsmE,GACT9/F,EAAOvhB,MAAM+6C,MAAM,OAAQ,IAC3Bx5B,EAAOvhB,MAAM+6C,MAAM,WAAY,IACb,UAATsmE,GAAyB,UAATA,GACzB9/F,EAAOvhB,MAAM+6C,MAAM,OAAQ,IAC3Bx5B,EAAOvhB,MAAM+6C,MAAM,WAAY,IACb,UAATsmE,GACT9/F,EAAOvhB,MAAM+6C,MAAM,OAAQ,IAQjC,OAHAx5B,EAAOvhB,MAAMjB,OAAO,MAAOgiH,EAAY1yF,QACvC9M,EAAOvhB,MAAMjB,OAAO,QAASgiH,EAAY3yF,QAAU,GACnD7M,EAAOvhB,MAAMjB,OAAO,OAAQgiH,EAAYtzF,QACjClM,GAKX5nB,EAAQqlB,QAAU4jG,G,6BClIlB,IAAIlpE,EAAkB37C,MAAQA,KAAK27C,iBAAmB,SAAUloB,GAC9D,OAAOA,GAAOA,EAAIv2B,WAAau2B,EAAM,CACnC,QAAWA,IAIfj3B,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAGT,MAAMi/C,EAAUL,EAAgB,EAAQ,IAElC4pC,EAAmC,EAAQ,GAE3CinB,EAAc,EAAQ,IAM5B,MAAMsY,UAAyBv/B,EAAiC5tC,uCAC9DI,eACE,OAAO,IAAIrmC,OAAO,cAA0BlV,OAAOkH,KAAK8oG,EAAY51C,QAAQjzD,KAAK,IAA/D,SAAqFnH,OAAOkH,KAAK8oG,EAAY51C,QAAQjzD,KAAK,IAA1H,0DAAqNnH,OAAOkH,KAAK8oG,EAAY51C,QAAQjzD,KAAK,IAA1P,+CAA+UnH,OAAOkH,KAAK8oG,EAAY51C,QAAQjzD,KAAK,IAApX,sCAGpBw0C,aAAa7xC,EAAS4E,GACpB,MAAM83G,EAAchnE,EAAQ/6B,QAAQ3a,EAAQ43C,SACtC16B,EAASld,EAAQ6oD,oBAAoBjkD,EAAMxJ,MAAOwJ,EAAM,IAC9D,IAAImlB,EAAQgG,SAASnrB,EAXL,IAehB,GAHI+b,MAAMoJ,KAAQA,EAAQm8E,EAAY91C,iBAAiBxrD,EAZvC,KAahBsY,EAAOvhB,MAAMjB,OAAO,QAASqvB,GAEzBnlB,EAdU,GAcQ,CACpB,IAAIwuB,EAAMrD,SAASnrB,EAfP,IAgBR+b,MAAMyS,KAAMA,EAAM8yE,EAAY91C,iBAAiBxrD,EAhBvC,KAiBZsY,EAAOvhB,MAAMjB,OAAO,MAAO04B,QAE3BlW,EAAOvhB,MAAM+6C,MAAM,MAAOgmE,EAAY1yF,QAGxC,GAAIplB,EAxBW,GAwBQ,CACrB,IAAIwkB,EAAO2G,SAASnrB,EAzBP,IA0BT+b,MAAMyI,KAAOA,EAAO88E,EAAY/1C,eAAevrD,EA1BtC,KA2BbsY,EAAOvhB,MAAMjB,OAAO,OAAQ0uB,QAE5BlM,EAAOvhB,MAAM+6C,MAAM,OAAQgmE,EAAYtzF,QAGzC,OAAOlM,GAKX5nB,EAAQqlB,QAAU6jG,G,6BCrDlB,IAAInpE,EAAkB37C,MAAQA,KAAK27C,iBAAmB,SAAUloB,GAC9D,OAAOA,GAAOA,EAAIv2B,WAAau2B,EAAM,CACnC,QAAWA,IAIfj3B,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAGT,MAAMi/C,EAAUL,EAAgB,EAAQ,IAElC4pC,EAAmC,EAAQ,GAE3CinB,EAAc,EAAQ,IAEtB33C,EAAU,IAAInjD,OAAO,UAAYlV,OAAOkH,KAAK8oG,EAAY51C,QAAQjzD,KAAK,IAAjD,+LAAmJ,KAI9K,MAAMohH,UAAmCx/B,EAAiC5tC,uCACxEI,eACE,OAAO8c,EAGT1c,aAAa7xC,EAAS4E,GACpB,MAAMsY,EAASld,EAAQ6oD,oBAAoBjkD,EAAMxJ,MAAOwJ,EAAM,IAC9D,IAAIoX,EAAS+T,SAASnrB,EAVL,IAgBjB,GAJI+b,MAAM3E,KACRA,EAASkqF,EAAY91C,iBAAiBxrD,EAbvB,KAgBb+b,MAAM3E,GAAS,CACjB,MAAMC,EAASrX,EAjBA,GAmBf,GAAe,WAAXqX,EACFD,EAAS,MACJ,IAAe,WAAXC,EAGT,OAAO,KAFPD,EAAS,IAMb,IAAIgO,EAAO0rB,EAAQ/6B,QAAQ3a,EAAQ43C,SACnC,MACMulE,EADOv4G,EA5BE,GA6BO,GAEtB,OAAIu4G,EAASv4G,MAAM,2CACD,UAAZu4G,GAA+B,UAAZA,EACrBnzF,EAAOA,EAAK7vB,IAAI6hB,EAAQ,KACH,UAAZmhG,GAA+B,UAAZA,EAC5BnzF,EAAOA,EAAK7vB,IAAa,EAAT6hB,EAAY,KACP,UAAZmhG,EACTnzF,EAAOA,EAAK7vB,IAAI6hB,EAAQ,SACH,UAAZmhG,IACTnzF,EAAOA,EAAK7vB,IAAI6hB,EAAQ,SAG1BkB,EAAOvhB,MAAMjB,OAAO,OAAQsvB,EAAKZ,QACjClM,EAAOvhB,MAAMjB,OAAO,QAASsvB,EAAKD,QAAU,GAC5C7M,EAAOvhB,MAAMjB,OAAO,MAAOsvB,EAAKA,QACzB9M,IAGO,UAAZigG,EACFnzF,EAAOA,EAAK7vB,IAAI6hB,EAAQ,UACH,UAAZmhG,EACTnzF,EAAOA,EAAK7vB,IAAI6hB,EAAQ,UACH,UAAZmhG,GAA+B,UAAZA,IAC5BnzF,EAAOA,EAAK7vB,IAAI6hB,EAAQ,SAG1BkB,EAAOvhB,MAAM+6C,MAAM,OAAQ1sB,EAAKZ,QAChClM,EAAOvhB,MAAM+6C,MAAM,QAAS1sB,EAAKD,QAAU,GAC3C7M,EAAOvhB,MAAM+6C,MAAM,MAAO1sB,EAAKA,QAC/B9M,EAAOvhB,MAAMjB,OAAO,OAAQsvB,EAAKiT,QACjC/f,EAAOvhB,MAAMjB,OAAO,SAAUsvB,EAAK+T,UACnC7gB,EAAOvhB,MAAMjB,OAAO,SAAUsvB,EAAKgU,UAC5B9gB,IAKX5nB,EAAQqlB,QAAU8jG,G,6BCrFlB,IAAIppE,EAAkB37C,MAAQA,KAAK27C,iBAAmB,SAAUloB,GAC9D,OAAOA,GAAOA,EAAIv2B,WAAau2B,EAAM,CACnC,QAAWA,IAIfj3B,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAGT,MAAMi/C,EAAUL,EAAgB,EAAQ,IAElC4pC,EAAmC,EAAQ,GAE3CinB,EAAc,EAAQ,IAEtB33C,EAAU,IAAInjD,OAAO,4FAAiDlV,OAAOkH,KAAK8oG,EAAY71C,gBAAgBhzD,KAAK,KAAO,KAEhI,MAAMqhH,UAAoCz/B,EAAiC5tC,uCACzEI,eACE,OAAO8c,EAGT1c,aAAa7xC,EAAS4E,GACpB,MAAMsY,EAASld,EAAQ6oD,oBAAoBjkD,EAAMxJ,MAAOwJ,EAAM,IACxDkwG,EAAYlwG,EAAM4xD,OAAOvlC,QACzByP,EAASwlE,EAAY71C,eAAeykD,GAC1C,QAAej2G,IAAX6hC,EAAsB,OAAO,KACjC,IAAIn1B,EAAW,KACf,MAAMiR,EAAS5X,EAAM4xD,OAAOh6C,OAEd,UAAVA,EACFjR,EAAW,OACQ,UAAViR,EACTjR,EAAW,OACQ,UAAViR,IACTjR,EAAW,QAGb,IAAImxG,EAAchnE,EAAQ/6B,QAAQ3a,EAAQ43C,SACtCylE,GAAmB,EACvB,MAAMC,EAAYZ,EAAYtpF,MAgC9B,MA9BgB,QAAZ7nB,GAAkC,QAAZA,GACxBmxG,EAAcA,EAAYtpF,IAAIsN,EAAS,GACvC28E,GAAmB,GACE,QAAZ9xG,GACTmxG,EAAcA,EAAYtpF,IAAIsN,EAAS,GACvC28E,GAAmB,GAEnBX,EADqB,QAAZnxG,EACKmxG,EAAYtpF,IAAIsN,GAE1Br4B,KAAKqc,IAAIgc,EAAS,EAAI48E,GAAaj1G,KAAKqc,IAAIgc,EAAS48E,GACzCZ,EAAYtpF,IAAIsN,EAAS,GAC9Br4B,KAAKqc,IAAIgc,EAAS,EAAI48E,GAAaj1G,KAAKqc,IAAIgc,EAAS48E,GAChDZ,EAAYtpF,IAAIsN,EAAS,GAEzBg8E,EAAYtpF,IAAIsN,GAIlCxjB,EAAOvhB,MAAMjB,OAAO,UAAWgmC,GAE3B28E,GACFngG,EAAOvhB,MAAMjB,OAAO,MAAOgiH,EAAY1yF,QACvC9M,EAAOvhB,MAAMjB,OAAO,QAASgiH,EAAY3yF,QAAU,GACnD7M,EAAOvhB,MAAMjB,OAAO,OAAQgiH,EAAYtzF,UAExClM,EAAOvhB,MAAM+6C,MAAM,MAAOgmE,EAAY1yF,QACtC9M,EAAOvhB,MAAM+6C,MAAM,QAASgmE,EAAY3yF,QAAU,GAClD7M,EAAOvhB,MAAM+6C,MAAM,OAAQgmE,EAAYtzF,SAGlClM,GAKX5nB,EAAQqlB,QAAU+jG,G,6BC9ElB,IAAIrpE,EAAkB37C,MAAQA,KAAK27C,iBAAmB,SAAUloB,GAC9D,OAAOA,GAAOA,EAAIv2B,WAAau2B,EAAM,CACnC,QAAWA,IAIfj3B,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAGT,MAAMi/C,EAAUL,EAAgB,EAAQ,IAElC4pC,EAAmC,EAAQ,GAE3CinB,EAAc,EAAQ,IAEtBgQ,EAAoB,IAAI9qG,OAAO,keAA8PlV,OAAOkH,KAAK8oG,EAAY51C,QAAQjzD,KAAK,IAAnS,4EAAmWnH,OAAOkH,KAAK8oG,EAAY51C,QAAQjzD,KAAK,IAAxY,kDAAkcnH,OAAOkH,KAAK8oG,EAAY51C,QAAQjzD,KAAK,IAAve,uDAAqiB,KACpkB84G,EAAqB,IAAI/qG,OAAO,wgBAA0RlV,OAAOkH,KAAK8oG,EAAY51C,QAAQjzD,KAAK,IAA/T,4EAA+XnH,OAAOkH,KAAK8oG,EAAY51C,QAAQjzD,KAAK,IAApa,kDAA8dnH,OAAOkH,KAAK8oG,EAAY51C,QAAQjzD,KAAK,IAAngB,uDAAikB,KAWvmB,MAAMshH,UAAmC1/B,EAAiC5tC,uCACxEI,eACE,OAAOykE,EAGTrkE,aAAa7xC,EAAS4E,GACpB,GAAIA,EAAMxJ,MAAQ,GAAK4E,EAAQ23C,KAAK/yC,EAAMxJ,MAAQ,GAAGwJ,MAAM,MACzD,OAAO,KAGT,MAAM26C,EAAY7J,EAAQ/6B,QAAQ3a,EAAQ43C,SACpC16B,EAASld,EAAQ6oD,oBAAoBjkD,EAAMxJ,MAAOwJ,EAAM,IAC9D,IAAI83G,EAAcn9D,EAAUpe,QAE5B,GAAIv8B,EAxBY,GAwBQ,CACtB,MAAM+3G,EAAO/3G,EAzBC,GA2BF,UAAR+3G,EACEp9D,EAAUtiB,OAAS,IACrBy/E,EAAcA,EAAYviH,IAAI,EAAG,QAElB,UAARwiH,EACTD,EAAcA,EAAYviH,KAAK,EAAG,OACjB,UAARwiH,EACTD,EAAcA,EAAYviH,KAAK,EAAG,OACjB,gBAARwiH,EACTD,EAAcA,EAAYviH,KAAK,EAAG,OACjB,UAARwiH,EACTD,EAAcA,EAAYviH,IAAI,EAAG,OAChB,gBAARwiH,IACTD,EAAcA,EAAYviH,IAAI,EAAG,QAGnC+iB,EAAOvhB,MAAMjB,OAAO,MAAOgiH,EAAY1yF,QACvC9M,EAAOvhB,MAAMjB,OAAO,QAASgiH,EAAY3yF,QAAU,GACnD7M,EAAOvhB,MAAMjB,OAAO,OAAQgiH,EAAYtzF,aACnC,GAAIxkB,EA3CK,GA2Ce,CAC7B,MAAMk4G,EAAOl4G,EA5CC,GA8CF,UAARk4G,EACFJ,EAAcA,EAAYviH,IAAI,EAAG,OAChB,UAAR2iH,EACTJ,EAAcA,EAAYviH,KAAK,EAAG,OACjB,UAAR2iH,EACTJ,EAAcA,EAAYviH,KAAK,EAAG,OACjB,gBAAR2iH,EACTJ,EAAcA,EAAYviH,KAAK,EAAG,OACjB,UAAR2iH,EACTJ,EAAcA,EAAYviH,IAAI,EAAG,OAChB,gBAAR2iH,IACTJ,EAAcA,EAAYviH,IAAI,EAAG,QAGnC+iB,EAAOvhB,MAAMjB,OAAO,MAAOgiH,EAAY1yF,QACvC9M,EAAOvhB,MAAMjB,OAAO,QAASgiH,EAAY3yF,QAAU,GACnD7M,EAAOvhB,MAAMjB,OAAO,OAAQgiH,EAAYtzF,aAExClM,EAAOvhB,MAAM+6C,MAAM,MAAOgmE,EAAY1yF,QACtC9M,EAAOvhB,MAAM+6C,MAAM,QAASgmE,EAAY3yF,QAAU,GAClD7M,EAAOvhB,MAAM+6C,MAAM,OAAQgmE,EAAYtzF,QAGzC,IAAI6T,EAAO,EACPc,EAAS,EACT9d,GAAY,EAEhB,GAAIrb,EArEa,GAqEQ,CACvB,IAAIo5B,EAASjO,SAASnrB,EAtEP,IA4Ef,GAJI+b,MAAMqd,KACRA,EAASkoE,EAAY91C,iBAAiBxrD,EAzEzB,KA4EXo5B,GAAU,GAAI,OAAO,KACzB9gB,EAAOvhB,MAAMjB,OAAO,SAAUsjC,GA0BhC,GAvBAf,EAAOlN,SAASnrB,EAlFD,IAoFX+b,MAAMsc,KACRA,EAAOipE,EAAY91C,iBAAiBxrD,EArFvB,KAwFXA,EAvFa,GAwFY,UAAvBA,EAxFW,GAyFbm5B,EAAS,GACuB,UAAvBn5B,EA1FI,IA0FiD,UAAvBA,EA1F1B,GA2Fbm5B,EAAS,GAETA,EAAShO,SAASnrB,EA7FL,IA+FT+b,MAAMod,KACRA,EAASmoE,EAAY91C,iBAAiBxrD,EAhG3B,MAmGNq4B,EAAO,MAChBc,EAASd,EAAO,IAChBA,EAAO50B,KAAKkhB,MAAM0T,EAAO,MAGvBc,GAAU,GACZ,OAAO,KAGT,GAAId,EAAO,GACT,OAAO,KAOT,GAJIA,GAAQ,KACVhd,EAAW,GAGTrb,EAlHiB,GAkHQ,CAC3B,GAAIq4B,EAAO,GAAI,OAAO,KACtB,MAAM8vB,EAAOnoD,EApHM,GAoHkB,GAAGjG,cAE5B,KAARouD,IACF9sC,EAAW,EACC,IAARgd,IAAYA,EAAO,IAGb,KAAR8vB,IACF9sC,EAAW,EACC,IAARgd,IAAYA,GAAQ,UAErB,GAAIr4B,EAtIe,GAsIe,CACvC,MACM44G,EADgB54G,EAvIE,GAwIM,GAEf,UAAX44G,GACFv9F,EAAW,EACC,IAARgd,IAAYA,EAAO,IACH,UAAXugF,IACTv9F,EAAW,EACC,IAARgd,IAAYA,GAAQ,UAErB,GAAIr4B,EAhJe,GAgJe,CACvC,MACM64G,EADgB74G,EAjJE,GAkJM,GAEf,UAAX64G,GAA6B,UAAXA,GAA6B,UAAXA,GACtCx9F,EAAW,EACC,IAARgd,IAAYA,EAAO,IACH,UAAXwgF,GAA6B,UAAXA,IAC3Bx9F,EAAW,EACC,IAARgd,IAAYA,GAAQ,UAErB,GAAIr4B,EAzJe,GAyJe,CACvC,MACM84G,EADgB94G,EA1JE,GA2JM,GAEf,UAAX84G,GAA6B,UAAXA,GAA6B,UAAXA,GACtCz9F,EAAW,EACC,IAARgd,IAAYA,EAAO,IACH,UAAXygF,GAA6B,UAAXA,IAC3Bz9F,EAAW,EACC,IAARgd,IAAYA,GAAQ,KAmB5B,GAfA/f,EAAOvhB,MAAMjB,OAAO,OAAQuiC,GAC5B/f,EAAOvhB,MAAMjB,OAAO,SAAUqjC,GAE1B9d,GAAY,EACd/C,EAAOvhB,MAAMjB,OAAO,WAAYulB,GAE5Bgd,EAAO,GACT/f,EAAOvhB,MAAM+6C,MAAM,WAAY,GAE/Bx5B,EAAOvhB,MAAM+6C,MAAM,WAAY,KAInC9xC,EAAQuxG,EAAmB58E,KAAKv5B,EAAQ23C,KAAK/F,UAAU10B,EAAO9hB,MAAQ8hB,EAAOy6B,KAAKp/C,UAGhF,OAAI2kB,EAAOy6B,KAAK/yC,MAAM,SACb,KAGFsY,EAGT,IAAIygG,EAAYjB,EAAYv7E,QAG5B,GAFAjkB,EAAO1E,IAAMxY,EAAQ8oD,0BAEjBlkD,EApMY,GAoMQ,CACtB,MAAM+3G,EAAO/3G,EArMC,GAuMF,UAAR+3G,EACEp9D,EAAUtiB,OAAS,IACrB0gF,EAAYA,EAAUxjH,IAAI,EAAG,QAEd,UAARwiH,EACTgB,EAAYA,EAAUxjH,KAAK,EAAG,OACb,UAARwiH,EACTgB,EAAYA,EAAUxjH,KAAK,EAAG,OACb,gBAARwiH,EACTgB,EAAYA,EAAUxjH,KAAK,EAAG,OACb,UAARwiH,EACTgB,EAAYA,EAAUxjH,IAAI,EAAG,OACZ,gBAARwiH,IACTgB,EAAYA,EAAUxjH,IAAI,EAAG,QAG/B+iB,EAAO1E,IAAI9d,OAAO,MAAOijH,EAAU3zF,QACnC9M,EAAO1E,IAAI9d,OAAO,QAASijH,EAAU5zF,QAAU,GAC/C7M,EAAO1E,IAAI9d,OAAO,OAAQijH,EAAUv0F,aAC/B,GAAIxkB,EAvNK,GAuNe,CAC7B,MAAMk4G,EAAOl4G,EAxNC,GA0NF,UAARk4G,EACFa,EAAYA,EAAUxjH,IAAI,EAAG,OACZ,UAAR2iH,EACTa,EAAYA,EAAUxjH,KAAK,EAAG,OACb,UAAR2iH,EACTa,EAAYA,EAAUxjH,KAAK,EAAG,OACb,gBAAR2iH,EACTa,EAAYA,EAAUxjH,KAAK,EAAG,OACb,UAAR2iH,EACTa,EAAYA,EAAUxjH,IAAI,EAAG,OACZ,gBAAR2iH,IACTa,EAAYA,EAAUxjH,IAAI,EAAG,QAG/B+iB,EAAO1E,IAAI9d,OAAO,MAAOijH,EAAU3zF,QACnC9M,EAAO1E,IAAI9d,OAAO,QAASijH,EAAU5zF,QAAU,GAC/C7M,EAAO1E,IAAI9d,OAAO,OAAQijH,EAAUv0F,aAEpClM,EAAO1E,IAAIk+B,MAAM,MAAOinE,EAAU3zF,QAClC9M,EAAO1E,IAAIk+B,MAAM,QAASinE,EAAU5zF,QAAU,GAC9C7M,EAAO1E,IAAIk+B,MAAM,OAAQinE,EAAUv0F,QAOrC,GAJA6T,EAAO,EACPc,EAAS,EACT9d,GAAY,EAERrb,EAjPa,GAiPQ,CACvB,IAAIo5B,EAASjO,SAASnrB,EAlPP,IAwPf,GAJI+b,MAAMqd,KACRA,EAASkoE,EAAY91C,iBAAiBxrD,EArPzB,KAwPXo5B,GAAU,GAAI,OAAO,KACzB9gB,EAAO1E,IAAI9d,OAAO,SAAUsjC,GA0B9B,GAvBAf,EAAOlN,SAASnrB,EA9PD,IAgQX+b,MAAMsc,KACRA,EAAOipE,EAAY91C,iBAAiBxrD,EAjQvB,KAoQXA,EAnQa,GAoQY,UAAvBA,EApQW,GAqQbm5B,EAAS,GACuB,UAAvBn5B,EAtQI,IAsQiD,UAAvBA,EAtQ1B,GAuQbm5B,EAAS,GAETA,EAAShO,SAASnrB,EAzQL,IA2QT+b,MAAMod,KACRA,EAASmoE,EAAY91C,iBAAiBxrD,EA5Q3B,MA+QNq4B,EAAO,MAChBc,EAASd,EAAO,IAChBA,EAAO50B,KAAKkhB,MAAM0T,EAAO,MAGvBc,GAAU,GACZ,OAAO,KAGT,GAAId,EAAO,GACT,OAAO,KAOT,GAJIA,GAAQ,KACVhd,EAAW,GAGTrb,EA9RiB,GA8RQ,CAC3B,GAAIq4B,EAAO,GAAI,OAAO,KACtB,MAAM8vB,EAAOnoD,EAhSM,GAgSkB,GAAGjG,cAE5B,KAARouD,IACF9sC,EAAW,EACC,IAARgd,IAAYA,EAAO,IAGb,KAAR8vB,IACF9sC,EAAW,EACC,IAARgd,IAAYA,GAAQ,KAGrB/f,EAAOvhB,MAAMi7C,UAAU,cACV,GAAZ32B,GACF/C,EAAOvhB,MAAM+6C,MAAM,WAAY,GAEC,IAA5Bx5B,EAAOvhB,MAAMtF,IAAI,SACnB6mB,EAAOvhB,MAAMjB,OAAO,OAAQ,KAG9BwiB,EAAOvhB,MAAM+6C,MAAM,WAAY,GAEC,IAA5Bx5B,EAAOvhB,MAAMtF,IAAI,SACnB6mB,EAAOvhB,MAAMjB,OAAO,OAAQwiB,EAAOvhB,MAAMtF,IAAI,QAAU,WAIxD,GAAIuO,EAlUe,GAkUe,CACvC,MACM44G,EADgB54G,EAnUE,GAoUM,GAEf,UAAX44G,GACFv9F,EAAW,EACC,IAARgd,IAAYA,EAAO,IACH,UAAXugF,IACTv9F,EAAW,EACC,IAARgd,IAAYA,GAAQ,UAErB,GAAIr4B,EA5Ue,GA4Ue,CACvC,MACM64G,EADgB74G,EA7UE,GA8UM,GAEf,UAAX64G,GAA6B,UAAXA,GAA6B,UAAXA,GACtCx9F,EAAW,EACC,IAARgd,IAAYA,EAAO,IACH,UAAXwgF,GAA6B,UAAXA,IAC3Bx9F,EAAW,EACC,IAARgd,IAAYA,GAAQ,UAErB,GAAIr4B,EArVe,GAqVe,CACvC,MACM84G,EADgB94G,EAtVE,GAuVM,GAEf,UAAX84G,GAA6B,UAAXA,GAA6B,UAAXA,GACtCz9F,EAAW,EACC,IAARgd,IAAYA,EAAO,IACH,UAAXygF,GAA6B,UAAXA,IAC3Bz9F,EAAW,EACC,IAARgd,IAAYA,GAAQ,KAQ5B,GAJA/f,EAAOy6B,KAAOz6B,EAAOy6B,KAAO/yC,EAAM,GAClCsY,EAAO1E,IAAI9d,OAAO,OAAQuiC,GAC1B/f,EAAO1E,IAAI9d,OAAO,SAAUqjC,GAExB9d,GAAY,EACd/C,EAAO1E,IAAI9d,OAAO,WAAYulB,OACzB,CACa/C,EAAOvhB,MAAMi7C,UAAU,aAA+C,GAAhC15B,EAAOvhB,MAAMtF,IAAI,aAExD6mB,EAAOvhB,MAAMtF,IAAI,QAAU4mC,EAC1C/f,EAAO1E,IAAIk+B,MAAM,WAAY,GACpBzZ,EAAO,IAChB/f,EAAO1E,IAAIk+B,MAAM,WAAY,GAQjC,OAJIx5B,EAAO1E,IAAIwR,OAAOpJ,UAAY1D,EAAOvhB,MAAMquB,OAAOpJ,WACpD1D,EAAO1E,IAAIk+B,MAAM,MAAOx5B,EAAO1E,IAAIniB,IAAI,OAAS,GAG3C6mB,GAKX5nB,EAAQqlB,QAAUgkG,G,6BCjZlB,IAAItpE,EAAkB37C,MAAQA,KAAK27C,iBAAmB,SAAUloB,GAC9D,OAAOA,GAAOA,EAAIv2B,WAAau2B,EAAM,CACnC,QAAWA,IAIfj3B,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAGT,MAAMi/C,EAAUL,EAAgB,EAAQ,IAElC4pC,EAAmC,EAAQ,GAE3CinB,EAAc,EAAQ,IAEtB33C,EAAU,IAAInjD,OAAO,kDAA2BlV,OAAOkH,KAAK8oG,EAAY71C,gBAAgBhzD,KAAK,KAAO,KAE1G,MAAMuhH,UAA4B3/B,EAAiC5tC,uCACjEI,eACE,OAAO8c,EAGT1c,aAAa7xC,EAAS4E,GACpB,MAAMsY,EAASld,EAAQ6oD,oBAAoBjkD,EAAMxJ,MAAOwJ,EAAM,IACxDkwG,EAAYlwG,EAAM4xD,OAAOvlC,QACzByP,EAASwlE,EAAY71C,eAAeykD,GAC1C,QAAej2G,IAAX6hC,EAAsB,OAAO,KACjC,IAAIg8E,EAAchnE,EAAQ/6B,QAAQ3a,EAAQ43C,SAC1C,MACM0lE,EAAYZ,EAAYtpF,MAsB9B,OAnBEspF,EADEr0G,KAAKqc,IAAIgc,EAAS,EAAI48E,GAAaj1G,KAAKqc,IAAIgc,EAAS48E,GACzCZ,EAAYtpF,IAAIsN,EAAS,GAC9Br4B,KAAKqc,IAAIgc,EAAS,EAAI48E,GAAaj1G,KAAKqc,IAAIgc,EAAS48E,GAChDZ,EAAYtpF,IAAIsN,EAAS,GAEzBg8E,EAAYtpF,IAAIsN,GAGhCxjB,EAAOvhB,MAAMjB,OAAO,UAAWgmC,GAO7BxjB,EAAOvhB,MAAM+6C,MAAM,MAAOgmE,EAAY1yF,QACtC9M,EAAOvhB,MAAM+6C,MAAM,QAASgmE,EAAY3yF,QAAU,GAClD7M,EAAOvhB,MAAM+6C,MAAM,OAAQgmE,EAAYtzF,QAGlClM,GAKX5nB,EAAQqlB,QAAUikG,G,6BCzDlB,IAAIvpE,EAAkB37C,MAAQA,KAAK27C,iBAAmB,SAAUloB,GAC9D,OAAOA,GAAOA,EAAIv2B,WAAau2B,EAAM,CACnC,QAAWA,IAIfj3B,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAGT,MAAMq8G,EAAkCz9D,EAAgB,EAAQ,KAEhE,MAAMwpE,UAAoC/L,EAAgCn4F,QACxE+uC,iBACE,MAAO,qDAKXp0D,EAAQqlB,QAAUkkG,G,6BCnBlB,IAAIxpE,EAAkB37C,MAAQA,KAAK27C,iBAAmB,SAAUloB,GAC9D,OAAOA,GAAOA,EAAIv2B,WAAau2B,EAAM,CACnC,QAAWA,IAIfj3B,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAGT,MAAMu8G,EAAiC39D,EAAgB,EAAQ,KAE/D,MAAMypE,UAAmC9L,EAA+Br4F,QACtE+uC,iBACE,MAAO,UAKXp0D,EAAQqlB,QAAUmkG,G,6BCnBlB,IAAIzpE,EAAkB37C,MAAQA,KAAK27C,iBAAmB,SAAUloB,GAC9D,OAAOA,GAAOA,EAAIv2B,WAAau2B,EAAM,CACnC,QAAWA,IAIfj3B,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAETnB,EAAQsoF,oBAAsBtoF,EAAQ2yD,0BAA4B3yD,EAAQ2iD,UAAY3iD,EAAQuK,MAAQvK,EAAQ0pB,OAAS1pB,EAAQ4iD,YAAS,EAExI,MAAM6mE,EAAiC1pE,EAAgB,EAAQ,MAEzD2pE,EAAkC3pE,EAAgB,EAAQ,MAE1D4pE,EAAsB5pE,EAAgB,EAAQ,MAE9C6pE,EAA2B7pE,EAAgB,EAAQ,MAEnD8pE,EAA8B9pE,EAAgB,EAAQ,MAEtD+pE,EAA4B/pE,EAAgB,EAAQ,MAEpDgqE,EAA2BhqE,EAAgB,EAAQ,MAEnDopC,EAAmB,EAAQ,IAE3B6gC,EAAuBjqE,EAAgB,EAAQ,MAE/CkqE,EAAuBlqE,EAAgB,EAAQ,MAE/CmqE,EAAoBnqE,EAAgB,EAAQ,MAE5CoqE,EAA+BpqE,EAAgB,EAAQ,MAEvDwD,EAAW,EAAQ,IAEnBimC,EAA0BzpC,EAAgB,EAAQ,KAElDqqE,EAAyCrqE,EAAgB,EAAQ,MAiBvE,SAAS4S,IACP,MAAMlP,EAAS6kC,GAAoB,GAMnC,OALA7kC,EAAOmP,QAAQ0C,QAAQ,IAAI00D,EAAqB3kG,SAChDo+B,EAAOmP,QAAQ0C,QAAQ,IAAI20D,EAAqB5kG,SAChDo+B,EAAOmP,QAAQ0C,QAAQ,IAAIq0D,EAAoBtkG,SAC/Co+B,EAAOmP,QAAQ0C,QAAQ,IAAI60D,EAA6B9kG,SACxDo+B,EAAOmP,QAAQ0C,QAAQ,IAAI80D,EAAuC/kG,SAC3Do+B,EAKT,SAAS6kC,EAAoBjzB,GAAa,GACxC,OAAO8zB,EAAiBt0B,2BAA2B,CACjDjC,QAAS,CAAC,IAAI42B,EAAwBnkE,SAAQ,GAAO,IAAIokG,EAA+BpkG,QAAW,IAAIqkG,EAAgCrkG,QAAW,IAAI6kG,EAAkB7kG,QAAW,IAAIukG,EAAyBvkG,QAAQgwC,GAAa,IAAIw0D,EAA4BxkG,SACrQwtC,SAAU,CAAC,IAAIk3D,EAAyB1kG,QAAW,IAAIykG,EAA0BzkG,UAChFgwC,GA/BLr1D,EAAQ4iD,OAAS,IAAIW,EAASD,OAAOqP,KACrC3yD,EAAQ0pB,OAAS,IAAI65B,EAASD,OAAOglC,GAAoB,IAMzDtoF,EAAQuK,MAJR,SAAe83C,EAAMmB,EAAKC,GACxB,OAAOzjD,EAAQ4iD,OAAOr4C,MAAM83C,EAAMmB,EAAKC,IASzCzjD,EAAQ2iD,UAJR,SAAmBN,EAAMmB,EAAKC,GAC5B,OAAOzjD,EAAQ4iD,OAAOD,UAAUN,EAAMmB,EAAKC,IAe7CzjD,EAAQ2yD,0BAA4BA,EASpC3yD,EAAQsoF,oBAAsBA,G,6BC3E9B1nF,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAGT,MAAMyvG,EAAc,EAAQ,IAEtBp+C,EAAY,EAAQ,GAEpBm3B,EAAmC,EAAQ,GAE3C1wB,EAAU,0GAAyC23C,EAAYjtD,sBAAsBitD,EAAYvmD,YAAYE,gBAC7GsmD,EAAsB,IAAI/6F,OAAO,8GAA8BmjD,IAAW23C,EAAYvmD,YAAYn/B,OAClG4lF,EAAyB,IAAIh7F,OAAOmjD,EAAS,KAEnD,MAAMoxD,UAAqC1gC,EAAiC5tC,uCAC1EG,sBACE,OAAO00D,EAAYvmD,YAAYC,aAGjCnO,aAAazxC,GACX,OAAOA,EAAQ+4C,OAAOutD,YAAcF,EAAyBD,EAG/Dt0D,aAAa7xC,EAAS4E,GACpB,MAAM27C,EAAY2lD,EAAYltD,eAAep0C,EAAM,IACnD,OAAOkjD,EAAUvS,kBAAkBgxD,4BAA4BvmG,EAAQq2C,UAAWkK,IAKtFjrD,EAAQqlB,QAAUglG,G,6BC9BlBzpH,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAGT,MAAMsjD,EAAU,EAAQ,GAElBmsD,EAAc,EAAQ,IAEtB6L,EAAc,EAAQ,IAEtBC,EAAc,EAAQ,IAEtBl4D,EAAY,EAAQ,GAEpBmlC,EAAmC,EAAQ,GAE3C1wB,EAAU,IAAInjD,OAAO,mBAAc4mG,EAAY34D,qFAA2E24D,EAAY34D,8DAA6ES,EAAU7E,gBAAgBixD,EAAYvsD,6CAA4Do4D,EAAY54D,+BAAyC+sD,EAAYvmD,YAAYE,gBAAiBqmD,EAAYvmD,YAAYn/B,OAMjb,MAAMo/F,UAAsC3gC,EAAiC5tC,uCAC3EG,sBACE,OAAO00D,EAAYvmD,YAAYC,aAGjCnO,eACE,OAAO8c,EAGT1c,aAAa7xC,EAAS4E,GACpB,MAAMsY,EAASld,EAAQ6oD,oBAAoBjkD,EAAMxJ,MAAOwJ,EAAM,IACxDmlB,EAAQm8E,EAAYvsD,iBAAiB/0C,EAdtB,GAc8CjG,eAC7Dy0B,EAAM4+E,EAAY54D,0BAA0Bx0C,EAjBnC,IAmBf,GAAIwuB,EAAM,GAER,OADAxuB,EAAMxJ,MAAQwJ,EAAMxJ,MAAQwJ,EApBf,GAoBiCrM,OACvC,KAMT,GAHA2kB,EAAOvhB,MAAMjB,OAAO,QAASqvB,GAC7B7M,EAAOvhB,MAAMjB,OAAO,MAAO04B,GAEvBxuB,EAxBW,GAwBQ,CACrB,MAAM06C,EAAayyD,EAAY74D,UAAUt0C,EAzB5B,IA0BbsY,EAAOvhB,MAAMjB,OAAO,OAAQ4kD,OACvB,CACL,MAAMl2B,EAAO2wB,EAAQsF,qBAAqBr/C,EAAQ43C,QAASxkB,EAAKrJ,GAChE7M,EAAOvhB,MAAM+6C,MAAM,OAAQttB,GAG7B,GAAIxkB,EAlCc,GAkCQ,CACxB,MAAM+tD,EAAUq/C,EAAY54D,0BAA0Bx0C,EAnCtC,IAoChBsY,EAAO1E,IAAM0E,EAAOvhB,MAAMwlC,QAC1BjkB,EAAO1E,IAAI9d,OAAO,MAAOi4D,GAG3B,OAAOz1C,GAKX5nB,EAAQqlB,QAAUilG,G,6BC/DlB1pH,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAGT,MAAMyvG,EAAc,EAAQ,IAEtBnsD,EAAU,EAAQ,GAElBD,EAAY,EAAQ,GAEpBi4D,EAAc,EAAQ,IAEtB9yB,EAAmC,EAAQ,GAE3C1wB,EAAU,IAAInjD,OAAwB,qBAAI0uC,EAAU7E,gBAAgBixD,EAAYvsD,sCAAqDo4D,EAAY54D,mDAA8D+sD,EAAYvmD,YAAYn/B,OAI7O,MAAMq/F,UAA0B5gC,EAAiC5tC,uCAC/DG,sBACE,OAAO00D,EAAYvmD,YAAYC,aAGjCnO,eACE,OAAO8c,EAGT1c,aAAa7xC,EAAS4E,GACpB,MAAM0pB,EAAY1pB,EAbG,GAaqBjG,cAE1C,GAAIiG,EAAM,GAAGrM,QAAU,IAAM2tG,EAAYtsD,2BAA2BtrB,GAClE,OAAO,KAGT,MAAMpR,EAASld,EAAQ6oD,oBAAoBjkD,EAAMxJ,MAAOwJ,EAAMxJ,MAAQwJ,EAAM,GAAGrM,QAC/E2kB,EAAOvhB,MAAM+6C,MAAM,MAAO,GAC1B,MAAM3sB,EAAQm8E,EAAYvsD,iBAAiBrrB,GAG3C,GAFApR,EAAOvhB,MAAMjB,OAAO,QAASqvB,GAEzBnlB,EAvBW,GAuBQ,CACrB,MAAMwkB,EAAO2oF,EAAY74D,UAAUt0C,EAxBtB,IAyBbsY,EAAOvhB,MAAMjB,OAAO,OAAQ0uB,OACvB,CACL,MAAMA,EAAO2wB,EAAQsF,qBAAqBr/C,EAAQ43C,QAAS,EAAG7tB,GAC9D7M,EAAOvhB,MAAM+6C,MAAM,OAAQttB,GAG7B,OAAOlM,GAKX5nB,EAAQqlB,QAAUklG,G,6BCpDlB3pH,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAGT,MAAMwpD,EAAU,EAAQ,GAElBqyD,EAAiC,EAAQ,IAEzCpM,EAAc,EAAQ,IAE5B,MAAM4Z,UAA+BxN,EAA+BzmD,6BAClE/yD,YAAY6xD,GACV6nD,MAAM7nD,GAGRyB,eACE,OAAO85C,EAAYvmD,YAAYn/B,MAGjC6rC,6BACE,MAAO,iCAGTkB,iBACE,MAAO,6EAGTF,gBACE,MAAO,8BAGTf,gBACE,MAAO,8JAAgD45C,EAAYvmD,YAAYE,gBAGjF4M,6BAA6BzsD,EAAS4E,GACpC,MAAM2yC,EAAai7D,MAAM/lD,6BAA6BzsD,EAAS4E,GAE/D,GAAI2yC,EAAY,CACd,GAAI3yC,EAAM,GAAG6tG,SAAS,wCAAW,CAC/B,MAAMx1E,EAAOsa,EAAWlhD,IAAI,QAExB4mC,GAAQ,GAAKA,EAAO,IACtBsa,EAAW78C,OAAO,OAAQ68C,EAAWlhD,IAAI,QAAU,IACnDkhD,EAAW78C,OAAO,WAAYulD,EAAQtH,SAASyH,KACtCnjB,EAAO,GAChBsa,EAAW78C,OAAO,WAAYulD,EAAQtH,SAASwH,IAInD,GAAIv7C,EAAM,GAAG6tG,SAAS,6EAAkB,CACtCl7D,EAAW78C,OAAO,WAAYulD,EAAQtH,SAASyH,IAC/C,MAAMnjB,EAAOsa,EAAWlhD,IAAI,QAExB4mC,GAAQ,GAAKA,GAAQ,GACvBsa,EAAW78C,OAAO,OAAQ68C,EAAWlhD,IAAI,QAAU,IAIvD,GAAIuO,EAAM,GAAG6tG,SAAS,4BAAS,CAC7Bl7D,EAAW78C,OAAO,WAAYulD,EAAQtH,SAASwH,IAClC5I,EAAWlhD,IAAI,QAEjB,IACTkhD,EAAW78C,OAAO,OAAQ68C,EAAWlhD,IAAI,UAK/C,OAAOkhD,GAKXjiD,EAAQqlB,QAAUmlG,G,6BC1ElB5pH,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAGT,MAAMyvG,EAAc,EAAQ,IAEtBp+C,EAAY,EAAQ,GAEpBm3B,EAAmC,EAAQ,GAE3CnxB,EAAc,EAAQ,IAEtBS,EAAU,IAAInjD,OAAO,IAAI86F,EAAYjtD,yEAAiDitD,EAAYvmD,YAAYn/B,OAEpH,MAAMu/F,UAAkC9gC,EAAiC5tC,uCACvEG,sBACE,OAAO00D,EAAYvmD,YAAYC,aAGjCnO,eACE,OAAO8c,EAGT1c,aAAa7xC,EAAS4E,GACpB,MAAM27C,EAAY2lD,EAAYltD,eAAep0C,EAAM,IAC7CguG,EAAkB9kD,EAAYxN,iBAAiBC,GACrD,OAAOuH,EAAUvS,kBAAkBgxD,4BAA4BvmG,EAAQq2C,UAAWu8D,IAKtFt9G,EAAQqlB,QAAUolG,G,6BC/BlB,IAAI1qE,EAAkB37C,MAAQA,KAAK27C,iBAAmB,SAAUloB,GAC9D,OAAOA,GAAOA,EAAIv2B,WAAau2B,EAAM,CACnC,QAAWA,IAIfj3B,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAGT,MAAMq8G,EAAkCz9D,EAAgB,EAAQ,KAEhE,MAAM2qE,UAAgClN,EAAgCn4F,QACpE+uC,iBACE,MAAO,kFAKXp0D,EAAQqlB,QAAUqlG,G,6BCnBlB,IAAI3qE,EAAkB37C,MAAQA,KAAK27C,iBAAmB,SAAUloB,GAC9D,OAAOA,GAAOA,EAAIv2B,WAAau2B,EAAM,CACnC,QAAWA,IAIfj3B,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAGT,MAAMu8G,EAAiC39D,EAAgB,EAAQ,KAE/D,MAAM4qE,UAA+BjN,EAA+Br4F,QAClE+uC,iBACE,OAAO,IAAIt+C,OAAO,8BAKtB9V,EAAQqlB,QAAUslG,G,6BCnBlB,IAAIpoE,EAAkBn+C,MAAQA,KAAKm+C,kBAAoB3hD,OAAOY,OAAS,SAAUb,EAAGL,EAAGkjB,EAAGg/B,QAC7Ej5C,IAAPi5C,IAAkBA,EAAKh/B,GAC3B5iB,OAAOC,eAAeF,EAAG6hD,EAAI,CAC3B1hD,YAAY,EACZC,IAAK,WACH,OAAOT,EAAEkjB,OAGX,SAAU7iB,EAAGL,EAAGkjB,EAAGg/B,QACVj5C,IAAPi5C,IAAkBA,EAAKh/B,GAC3B7iB,EAAE6hD,GAAMliD,EAAEkjB,KAGRi/B,EAAqBr+C,MAAQA,KAAKq+C,qBAAuB7hD,OAAOY,OAAS,SAAUb,EAAG8iB,GACxF7iB,OAAOC,eAAeF,EAAG,UAAW,CAClCG,YAAY,EACZK,MAAOsiB,KAEP,SAAU9iB,EAAG8iB,GACf9iB,EAAW,QAAI8iB,IAGbi/B,EAAet+C,MAAQA,KAAKs+C,cAAgB,SAAU7qB,GACxD,GAAIA,GAAOA,EAAIv2B,WAAY,OAAOu2B,EAClC,IAAIjQ,EAAS,GACb,GAAW,MAAPiQ,EAAa,IAAK,IAAIrU,KAAKqU,EAAe,YAANrU,GAAmB5iB,OAAOkB,UAAUC,eAAe1B,KAAKw3B,EAAKrU,IAAI++B,EAAgB36B,EAAQiQ,EAAKrU,GAItI,OAFAi/B,EAAmB76B,EAAQiQ,GAEpBjQ,GAGThnB,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAGT,MAAMwoF,EAAmC,EAAQ,GAE3Cu1B,EAAax8D,EAAa,EAAQ,KAElCkuD,EAAc,EAAQ,IAEtB33C,EAAU,IAAInjD,OAAO,yQAA4D86F,EAAYvmD,YAAYE,gBAAiBqmD,EAAYvmD,YAAYn/B,OAExJ,MAAM0/F,UAA2BjhC,EAAiC5tC,uCAChEG,sBACE,OAAO00D,EAAYvmD,YAAYC,aAGjCnO,aAAazxC,GACX,OAAOuuD,EAGT1c,aAAa7xC,EAAS4E,GACpB,MAAM8vG,EAAY9vG,EAAM,GAAGjG,cACrBg4C,EAAY32C,EAAQ8oD,0BAE1B,OAAQ4rD,GACN,IAAK,6CACH,OAAOF,EAAWhpD,MAAMxrD,EAAQq2C,WAElC,IAAK,iCACH,OAAOm+D,EAAWjpD,UAAUvrD,EAAQq2C,WAEtC,IAAK,uCACH,OAAOm+D,EAAWnpD,SAASrrD,EAAQq2C,WAErC,IAAK,qEACH,OAAOm+D,EAAWppD,YAAYprD,EAAQq2C,UAAW,GAEnD,IAAK,yDACH,OAAOm+D,EAAWlpD,aAAatrD,EAAQq2C,UAAW,GAGtD,OAAOM,GAKXrhD,EAAQqlB,QAAUulG,G,6BC/ElB,IAAIroE,EAAkBn+C,MAAQA,KAAKm+C,kBAAoB3hD,OAAOY,OAAS,SAAUb,EAAGL,EAAGkjB,EAAGg/B,QAC7Ej5C,IAAPi5C,IAAkBA,EAAKh/B,GAC3B5iB,OAAOC,eAAeF,EAAG6hD,EAAI,CAC3B1hD,YAAY,EACZC,IAAK,WACH,OAAOT,EAAEkjB,OAGX,SAAU7iB,EAAGL,EAAGkjB,EAAGg/B,QACVj5C,IAAPi5C,IAAkBA,EAAKh/B,GAC3B7iB,EAAE6hD,GAAMliD,EAAEkjB,KAGRi/B,EAAqBr+C,MAAQA,KAAKq+C,qBAAuB7hD,OAAOY,OAAS,SAAUb,EAAG8iB,GACxF7iB,OAAOC,eAAeF,EAAG,UAAW,CAClCG,YAAY,EACZK,MAAOsiB,KAEP,SAAU9iB,EAAG8iB,GACf9iB,EAAW,QAAI8iB,IAGbi/B,EAAet+C,MAAQA,KAAKs+C,cAAgB,SAAU7qB,GACxD,GAAIA,GAAOA,EAAIv2B,WAAY,OAAOu2B,EAClC,IAAIjQ,EAAS,GACb,GAAW,MAAPiQ,EAAa,IAAK,IAAIrU,KAAKqU,EAAe,YAANrU,GAAmB5iB,OAAOkB,UAAUC,eAAe1B,KAAKw3B,EAAKrU,IAAI++B,EAAgB36B,EAAQiQ,EAAKrU,GAItI,OAFAi/B,EAAmB76B,EAAQiQ,GAEpBjQ,GAGLm4B,EAAkB37C,MAAQA,KAAK27C,iBAAmB,SAAUloB,GAC9D,OAAOA,GAAOA,EAAIv2B,WAAau2B,EAAM,CACnC,QAAWA,IAIfj3B,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAGT,MAAMwoF,EAAmC,EAAQ,GAE3Cu1B,EAAax8D,EAAa,EAAQ,KAElCtC,EAAU,EAAQ,IAElBC,EAAUN,EAAgB,EAAQ,IAElC6wD,EAAc,EAAQ,IAEtB33C,EAAU,IAAInjD,OAA+K,yvBAAG86F,EAAYvmD,YAAYE,gBAAiBqmD,EAAYvmD,YAAYn/B,OAEvQ,MAAM2/F,UAA2BlhC,EAAiC5tC,uCAChEG,sBACE,OAAO00D,EAAYvmD,YAAYC,aAGjCnO,eACE,OAAO8c,EAGT1c,aAAa7xC,EAAS4E,GACpB,IAAI+mD,EAAahW,EAAQh7B,QAAQ3a,EAAQ43C,SACzC,MAAM88D,EAAY9vG,EAAM,GAAGjG,cACrBg4C,EAAY32C,EAAQ8oD,0BAE1B,GAAkB,yCAAd4rD,EACF,OAAOF,EAAWrwF,IAAInkB,EAAQq2C,WAGhC,GAAkB,+CAAdq+D,GAAyC,yCAAdA,EAC7B,OAAOF,EAAWvpD,QAAQjrD,EAAQq2C,WAGpC,GAAIq+D,EAAUjC,SAAS,mCAAYiC,EAAUjC,SAAS,4BACpD,OAAO+B,EAAW1pD,QAAQ9qD,EAAQq2C,WAGpC,GAAIq+D,EAAU9vG,MAAM,uDAClB,OAAO4vG,EAAW3pD,KAAK7qD,EAAQq2C,WAGjC,GAAIq+D,EAAU9vG,MAAM,+EAClB,OAAO4vG,EAAWtpD,UAAUlrD,EAAQq2C,WAGtC,GAAIq+D,EAAU9vG,MAAM,2FAClB,OAAO4vG,EAAWxpD,iBAAiBhrD,EAAQq2C,WAG7C,GAAIq+D,EAAU9vG,MAAM,2FAAsB,CACxC,MAAMw7G,EAAYz0D,EAAW1uB,OAAS,GAAK,EAAI,EAC/C0uB,EAAaA,EAAWxxD,IAAIimH,EAAW,OACvC1qE,EAAQ+B,kBAAkBd,EAAWgV,GACrChV,EAAUD,MAAM,OAAQ,GAG1B,OAAIg+D,EAAU9vG,MAAM,wDAAkB8vG,EAAUjC,SAAS,kCAChD+B,EAAWzpD,SAAS/qD,EAAQq2C,WAG9BM,GAKXrhD,EAAQqlB,QAAUwlG,G,6BC5GlBjqH,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAGT,MAAMyvG,EAAc,EAAQ,IAEtBpsD,EAAY,EAAQ,GAEpBmlC,EAAmC,EAAQ,GAE3C21B,EAAa,EAAQ,IAErBrmD,EAAU,IAAInjD,OAAuH,oWAAI0uC,EAAU7E,gBAAgBixD,EAAYrsD,6OAA2GqsD,EAAYvmD,YAAYE,gBAAiBqmD,EAAYvmD,YAAYn/B,OAKjW,MAAM6/F,UAAwBphC,EAAiC5tC,uCAC7DI,eACE,OAAO8c,EAGT/c,sBACE,OAAO00D,EAAYvmD,YAAYC,aAGjC/N,aAAa7xC,EAAS4E,GACpB,MAAMkwG,EAAYlwG,EAbA,GAaqBjG,cACjCsyB,EAAUi1E,EAAYrsD,mBAAmBi7D,GACzCt4F,EAAS5X,EAhBE,GAiBXmwG,EAAUnwG,EAfE,GAgBlB,IAAIowG,EAAex4F,GAAUu4F,EAC7BC,EAAeA,GAAgB,GAC/BA,EAAeA,EAAar2G,cAC5B,IAAI4M,EAAW,KAUf,MARoB,8CAAhBypG,GAA6C,8CAAhBA,GAA6C,8CAAhBA,EAC5DzpG,EAAW,OACc,0DAAhBypG,GAA+C,0DAAhBA,GAA+C,0DAAhBA,GAA+C,gEAAhBA,EACtGzpG,EAAW,OACc,4BAAhBypG,GAA0C,sBAAhBA,GAAyC,4BAAhBA,IAC5DzpG,EAAW,QAGNqpG,EAAW/mD,iCAAiC7tD,EAAQq2C,UAAWplB,EAAS1lB,IAKnFjW,EAAQqlB,QAAU0lG,G,6BCjDlB,IAAIhrE,EAAkB37C,MAAQA,KAAK27C,iBAAmB,SAAUloB,GAC9D,OAAOA,GAAOA,EAAIv2B,WAAau2B,EAAM,CACnC,QAAWA,IAIfj3B,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAGT,MAAMyvG,EAAc,EAAQ,IAEtBp+C,EAAY,EAAQ,GAEpBpS,EAAUL,EAAgB,EAAQ,IAElC4pC,EAAmC,EAAQ,GAE3CnlC,EAAY,EAAQ,GAEpByU,EAAU,IAAInjD,OAAO,2TAAsE0uC,EAAU7E,gBAAgBixD,EAAY1sD,iCAAiC0sD,EAAYvmD,YAAYE,gBAAiBqmD,EAAYvmD,YAAYn/B,OAIzO,MAAM8/F,UAAmCrhC,EAAiC5tC,uCACxEG,sBACE,OAAO00D,EAAYvmD,YAAYC,aAGjCnO,eACE,OAAO8c,EAGT1c,aAAa7xC,EAAS4E,GACpB,MAAM2G,EAAW3G,EAbO,GAaoBjG,cACtCu2G,EAAWtwG,EAbO,GAaoBjG,cACtCw2G,EAAWjP,EAAY1sD,qBAAqB07D,GAElD,GAAgB,uEAAZ3pG,GAA0C,iEAAZA,EAA2B,CAC3D,MAAMg1C,EAAY,GAElB,OADAA,EAAU40D,GAAY,EACfrtD,EAAUvS,kBAAkBgxD,4BAA4BvmG,EAAQq2C,UAAWkK,GAGpF,GAAgB,qDAAZh1C,GAAuC,2DAAZA,EAA0B,CACvD,MAAMg1C,EAAY,GAElB,OADAA,EAAU40D,IAAa,EAChBrtD,EAAUvS,kBAAkBgxD,4BAA4BvmG,EAAQq2C,UAAWkK,GAGpF,MAAMhJ,EAAav3C,EAAQ8oD,0BAC3B,IAAI9+B,EAAO0rB,EAAQ/6B,QAAQ3a,EAAQq2C,UAAUR,SAoB7C,OAlBIs/D,EAASvwG,MAAM,UACjBolB,EAAOA,EAAK7vB,KAAK6vB,EAAK3zB,IAAI,KAAM,KAChCkhD,EAAWb,MAAM,MAAO1sB,EAAKA,QAC7ButB,EAAWb,MAAM,QAAS1sB,EAAKD,QAAU,GACzCwtB,EAAWb,MAAM,OAAQ1sB,EAAKZ,SACrB+rF,EAASvwG,MAAM,WACxBolB,EAAOA,EAAK7vB,IAAmB,EAAd6vB,EAAKA,OAAY,KAClCutB,EAAWb,MAAM,MAAO1sB,EAAKA,QAC7ButB,EAAW78C,OAAO,OAAQsvB,EAAKZ,QAC/BmuB,EAAW78C,OAAO,QAASsvB,EAAKD,QAAU,IACjCorF,EAASvwG,MAAM,WACxBolB,EAAOA,EAAK7vB,IAAmB,EAAd6vB,EAAKA,OAAY,KAClCA,EAAOA,EAAK7vB,KAAK6vB,EAAKD,QAAS,SAC/BwtB,EAAWb,MAAM,MAAO1sB,EAAKA,QAC7ButB,EAAWb,MAAM,QAAS1sB,EAAKD,QAAU,GACzCwtB,EAAW78C,OAAO,OAAQsvB,EAAKZ,SAG1BmuB,GAKXjiD,EAAQqlB,QAAU2lG,G,6BC5ElBpqH,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAGT,MAAMyvG,EAAc,EAAQ,IAEtBp+C,EAAY,EAAQ,GAEpBm3B,EAAmC,EAAQ,GAE3CnxB,EAAc,EAAQ,IAEtBS,EAAU,IAAInjD,OAAO,yPAA2D86F,EAAYjtD,sBAAsBitD,EAAYvmD,YAAYE,gBAAiBqmD,EAAYvmD,YAAYn/B,OAEzL,MAAM+/F,UAA6CthC,EAAiC5tC,uCAClFG,sBACE,OAAO00D,EAAYvmD,YAAYC,aAGjCnO,eACE,OAAO8c,EAGT1c,aAAa7xC,EAAS4E,GACpB,MAAM4X,EAAS5X,EAAM,GAAGjG,cACxB,IAAI4hD,EAAY2lD,EAAYltD,eAAep0C,EAAM,IAEjD,OAAQ4X,GACN,IAAK,yDACL,IAAK,6CACL,IAAK,IACH+jC,EAAYuN,EAAYxN,iBAAiBC,GAI7C,OAAOuH,EAAUvS,kBAAkBgxD,4BAA4BvmG,EAAQq2C,UAAWkK,IAKtFjrD,EAAQqlB,QAAU4lG,G,2mDCxBhB,WACE7mH,KAAK8mH,aACL9mH,KAAK+mH,wB,wBAGP,WACE/mH,KAAKgnH,iBAAmB,CACtB,0BACA,qBAGFhnH,KAAKinH,gBAAkB,GACvBjnH,KAAKknH,cAAgB,EAErBlnH,KAAKmnH,cAAgB,kB,iCAGvB,WACE,IAAMlpE,EAAOj+C,KAAKonH,UAEdnpE,EAAKp/C,QAAUmB,KAAKg2C,WACtBh2C,KAAKinH,gBAAkBjnH,KAAKinH,gBAAgB3/G,QAAO,SAAAsjC,GAAI,MAAa,4BAATA,KAC3D5qC,KAAKknH,cAAgB,IAErBlnH,KAAKknH,cAAgBv4G,KAAKihB,KAAKquB,EAAKp/C,OAASmB,KAAKqnH,wBAC7CrnH,KAAKinH,gBAAgBh2G,SAAS,4BAA8BjR,KAAKinH,gBAAgBroH,KAAK,4BAGlD,GAAvCoB,KAAKsnH,eAAetnH,KAAKonH,WACtBpnH,KAAKinH,gBAAgBh2G,SAAS,sBAAwBjR,KAAKinH,gBAAgBroH,KAAK,qBAErFoB,KAAKinH,gBAAkBjnH,KAAKinH,gBAAgB3/G,QAAO,SAAAsjC,GAAI,MAAa,sBAATA,KAG7D5qC,KAAKunH,oB,6BAGP,WAAmB,IAAD,OAChBvnH,KAAKgnH,iBAAiB7kH,SAAQ,SAACqlH,GAC7B,IAAM39C,EAAKtlE,SAASkjH,eAAeD,GAE9B39C,IAED,EAAKo9C,gBAAgBh2G,SAASu2G,GAChC39C,EAAGvI,UAAUqT,OAAO,UAEpB9K,EAAGvI,UAAU7gE,IAAI,cAIrBT,KAAK0nH,wB,iCAGP,WACE,IAAMC,EAAwBpjH,SAASkjH,eAAe,2BAA2BxtC,cAAc,8BACzF2tC,EAAOrjH,SAASkjH,eAAe,2BAA2Bj7D,QAAQq7D,YAExEF,EAAsBhmD,UAAYimD,EAAKnjH,QAAQ,WAAYzE,KAAKknH,eAChElnH,KAAK8nH,oB,6BAGP,WACE,GAAK9nH,KAAK+nH,eAAV,CAEA,IAAMC,EAAWhoH,KAAKknH,cAAgBlnH,KAAKioH,YAAYz7D,QAAQ07D,MACzDp/B,EAAiBC,KAAKC,aAAahpF,KAAKioH,YAAYz7D,QAAQnnC,OAAQ,CACtEqwC,MAAO,WACPmzB,SAAU7oF,KAAKioH,YAAYz7D,QAAQq8B,SACnCI,gBAAiB,iBAErBjpF,KAAKioH,YAAYhuC,cAAc,4BAA4BirB,YAA3D,UAA4Epc,EAAe1jE,OAAO4iG,O,4BAIpG,SAAe3kD,GAGb,OAFe,IAAI3xD,OAAO,4OAEZpS,KAAK+jE,K,qBAIrB,WACE,IAAIplB,EAAOj+C,KAAKmoH,eAAeprH,MAG/B,OADsBiD,KAAKooH,kCAAoCpoH,KAAKqoH,oBAAsBroH,KAAKsoH,sBAI7FrqE,EADgD,GAA9Cj+C,KAAKuoH,8BAA8BnnB,QAC9BnjD,EAAO,IAAMj+C,KAAKwoH,gBAElBvqE,EAAO,OAASj+C,KAAKyoH,kBAAoB,KAAOzoH,KAAKwoH,gBAG7B,GAA7BxoH,KAAK0oH,uBACPzqE,EAAOA,EAAO,IAAMj+C,KAAKmnH,eAGpBlpE,GAZsBA,I,qBAe/B,WACE,OAA+C,GAAvCj+C,KAAKsnH,eAAetnH,KAAKonH,WAAsBpnH,KAAK2oH,gBAAkB3oH,KAAK4oH,e,kCAGrF,WACE,OAA+C,GAAvC5oH,KAAKsnH,eAAetnH,KAAKonH,WAAsBpnH,KAAK6oH,6BAA+B7oH,KAAK8oH,4B,wBAGlG,WAAqB,OAAO,M,qCAE5B,WAAkC,OAAO,M,2BAEzC,WAAwB,OAAO,K,wCAE/B,WAAqC,OAAO,Q,mCAlIjBpmG,G,EACpBpgB,OAAS,CACdoqD,MAAOvqC,OAEP4mG,WAAY3mG,OACZ4mG,aAAc5mG,OAEd6mG,gBAAiB/mG,S,EAGZ5G,QAAU,CACf,0BACA,WACA,U,+wCCbJ,IAAM4tG,EAAgB,SAAAC,GACpB5kH,SAASkS,KAAKyM,cAAc,IAAIgyC,MAAM,QAAS,CAAEnyC,SAAS,EAAMC,YAAY,EAAMomG,UAAU,M,mWAO5F,WACEppH,KAAKiE,QAAQ7D,iBAAiB,cAAe8oH,K,wBAG/C,WACElpH,KAAKiE,QAAQ3D,oBAAoB,cAAe4oH,Q,8BANvBxmG,M,ymDCJ3B,SAAMymG,GACCnpH,KAAKqpH,cAEVrpH,KAAKqpH,aAAazvB,a,mCANOl3E,G,EACpBpH,QAAU,CAAC,W,wmDCYlB,SAAKza,GACHA,EAAMkD,iBACNqlF,UAAUkgC,UAAUC,UAAUvpH,KAAKwpH,aAAazsH,OAASiD,KAAKwpH,aAAa1nD,WAC3E9hE,KAAKypH,kB,2BAGP,WAAiB,IAAD,OACRC,EAAiB1pH,KAAK2pH,qBAAuB,oBAC7CC,EAAe5pH,KAAK6pH,mBAAqB,kBAE/C7pH,KAAK8pH,sBAAsBnoD,UAAY3hE,KAAK+pH,eAC5C/pH,KAAK8pH,sBAAsBxoD,UAAUqT,OAAOi1C,GAC5C5pH,KAAK8pH,sBAAsBxoD,UAAU7gE,IAAIipH,GAEzC,IAOIM,EAAiBnf,aAPP,WACZ,EAAKif,sBAAsBnoD,UAAY,EAAKsoD,aAC5C,EAAKH,sBAAsBxoD,UAAUqT,OAAO+0C,GAC5C,EAAKI,sBAAsBxoD,UAAU7gE,IAAImpH,GACzC9e,cAAckf,KAGwB,U,mCAlCftnG,G,EACpBpH,QAAU,CACf,SACA,mB,EAGKhZ,OAAS,CACd4nH,QAAS9nG,OACT+nG,UAAW/nG,OACXwnG,aAAcxnG,OACdsnG,eAAgBtnG,S,uxCCTpB,IAAMgoG,EAAO,CACX,aAAc,CACZ,CACEj1D,UAAW,4BACXC,QAAS,4BACTC,YAAa,EACbE,MAAO,UACP80D,MAAO,WAET,CACEl1D,UAAW,4BACXC,QAAS,4BACTC,YAAa,EACbE,MAAO,UACP80D,MAAO,WAET,CACEl1D,UAAW,4BACXC,QAAS,4BACTC,YAAa,EACbE,MAAO,UACP80D,MAAO,WAET,CACEl1D,UAAW,4BACXC,QAAS,4BACTC,YAAa,EACbE,MAAO,UACP80D,MAAO,WAET,CACEl1D,UAAW,4BACXC,QAAS,4BACTC,YAAa,EACbE,MAAO,UACP80D,MAAO,YAGX,aAAc,CACZ,CACEl1D,UAAW,4BACXC,QAAS,4BACTC,YAAa,EACbE,MAAO,UACP80D,MAAO,WAET,CACEl1D,UAAW,4BACXC,QAAS,4BACTC,YAAa,EACbE,MAAO,UACP80D,MAAO,WAET,CACEl1D,UAAW,4BACXC,QAAS,4BACTC,YAAa,EACbE,MAAO,UACP80D,MAAO,WAET,CACEl1D,UAAW,4BACXC,QAAS,4BACTC,YAAa,EACbE,MAAO,UACP80D,MAAO,WAET,CACEl1D,UAAW,4BACXC,QAAS,4BACTC,YAAa,EACbE,MAAO,UACP80D,MAAO,WAET,CACEl1D,UAAW,4BACXC,QAAS,4BACTC,YAAa,EACbE,MAAO,UACP80D,MAAO,a,mWAMX,WAAW,IAAD,OACJrqH,KAAKkT,MACU,IAAI+tD,IAASjhE,KAAKkT,KAAM,CAAEguD,WAAYlhE,KAAKsqH,iBACnD1qB,QAAO,SAAA37F,GAAO,OAAI,EAAKA,QAAQ29D,YAAY39D,Q,gBAIxD,WACE,OAAOjE,KAAKiE,QAAQuoD,QAAQl8B,O,0BAG9B,WACE,OAAOtwB,KAAKiE,QAAQuoD,QAAQ89D,iB,gBAG9B,WACE,OAAOF,EAAKpqH,KAAKswB,W,8BAjBQ5N,M,6qDClF3B0pE,SAAW,CACT5oF,IAAK,SAACU,EAAQzG,EAAUV,GAKtB,OAJAmH,EAAOzG,GAAYV,EAEF,cAAbU,GAA0B,EAAK2uF,SAASm+B,aAErC,GAGTA,UAAW,WACT,GAA6B,OAAzB,EAAKrrC,MAAM8qB,UAAf,CAEA,IAAM/nG,EAAQ6zD,EAAOC,OAAO,EAAKmpB,MAAM8qB,UAAU/nG,OAAOmjB,OAAO,MACzDtG,EAAMg3C,EAAOC,OAAO,EAAKmpB,MAAM8qB,UAAUlrF,KAAKsG,OAAO,MAQ3D,EAAKolG,eAAe1oD,UANhB7/D,IAAU6c,EAMd,UAAmC7c,EAAnC,cAA8C6c,GALZ7c,K,sCAStC,WACEjC,KAAKk/E,MAAQ,IAAI6N,MAAM,GAAI/sF,KAAKosF,UAChCpsF,KAAKk/E,MAAM8qB,UAAY,O,oBAGzB,SAAOnpG,GACLb,KAAKk/E,MAAM8qB,UAAYnpG,EAAMoC,OAAO+mG,e,mCAlCXtnF,G,EACpBpH,QAAU,CAAC,a,ynDCAlB,SAAKza,GACH,IAAMw+C,EAASx+C,EAAM2G,cAAcs6D,UAAU3yD,OAC7CkP,QAAQgC,IAAR,wBAA6Bg/B,EAA7B,MACAx+C,EAAMkD,sB,mCAJmB2e,I,+rDCU3B0pE,SAAW,CACT5oF,IAAK,SAACU,EAAQzG,EAAUV,GAMtB,OALAmH,EAAOzG,GAAYV,EAEF,SAAbU,GAAoC,SAAbA,GAAqB,EAAK2uF,SAASq+B,iBAC7C,cAAbhtH,GAA0B,EAAK2uF,SAAS0b,aAErC,GAGT2iB,eAAgB,WACd,IAAMxoH,EAAQ6zD,EAAOC,OAAO,EAAKmpB,MAAM5uD,MAAM7vB,IAAI,EAAKy+E,MAAM3mB,KAAM,SAASntB,QAAQ,SAC7EtsB,EAAMg3C,EAAOC,OAAO,EAAKmpB,MAAM5uD,MAAM7vB,IAAI,EAAKy+E,MAAM3mB,KAAM,SAAShtB,MAAM,SAGzEm/E,GAAkBzoH,EAAMy3B,MAAQ,EAAI,EAAKixF,cAAgB,EACzDC,EAAgB90D,EAAOC,OAAO9zD,GAAOsmC,SAASmiF,EAAgB,QAGpE,EAAK9kB,eAAez6F,iBAAiB,YAAYhJ,SAAQ,SAAA8B,GACvDA,EAAQ09D,UAAY,GACpB19D,EAAQuoD,QAAQl8B,KAAO,GACvBrsB,EAAQuoD,QAAQjmD,OAAS,MAI3B,IAAK,IAAIzK,EAAI,EAAGA,EATM,GASaA,IAAK,CACtC,IAAMw0B,EAAOwlC,EAAOC,OAAO60D,GAAenqH,IAAI3E,EAAG,QAC7C+uH,EAAY,UAEZv6F,EAAKsZ,SAAS3nC,EAAO,SACvB4oH,EAAY,WACHv6F,EAAKqZ,QAAQ7qB,EAAK,WAC3B+rG,EAAY,QAGd,EAAKz+B,SAAS0+B,UAAUx6F,EAAMu6F,GAGhC,IAAME,EAAYj1D,EAAOC,OAAO9zD,GAAOmpC,QAAQ,QAAQ7C,SAAS,EAAKyiF,0BAA2B,QAC1FC,EAAUn1D,EAAOC,OAAO9zD,GAAOspC,MAAM,QAAQ9qC,IAAI,EAAKuqH,0BAA2B,QACjFE,EAAYp1D,EAAOC,OAAOyC,MAAMuyD,EAAWE,GAC3CrlF,EAAQ5nC,MAAMqB,KAAK6rH,EAAUtyD,GAAG,UAAUn2D,KAAI,SAAAvG,GAAC,OAAIA,EAAEkpB,OAAO,WAElE,EAAK+lG,iBAAiBxpD,UAAY,GAElC/7B,EAAMzjC,SAAQ,SAAAutB,GACZ,IAAM2vB,EAAS96C,SAAS88D,cAAc,UACtChiB,EAAOtiD,MAAQ2yB,EACf2vB,EAAOsiB,UAAYjyC,EAEnB,EAAKy7F,iBAAiBvpD,YAAYviB,MAGpC,EAAK8rE,iBAAiBpuH,MAAQ+4D,EAAOC,OAAO9zD,GAAOmjB,OAAO,QAC1D,EAAKgmG,kBAAkBruH,MAAQ+4D,EAAOC,OAAO9zD,GAAOmjB,OAAO,KAEvD,EAAK85D,MAAM4oB,WAAW,EAAK1b,SAAS0b,aAG1CA,UAAW,WACT,IAAM7lG,EAAQ6zD,EAAOC,OAAO,EAAKmpB,MAAM4oB,UAAU7lG,OAC3C6c,EAAMg3C,EAAOC,OAAO,EAAKmpB,MAAM4oB,UAAUhpF,KAE/C,EAAK8mF,eAAez6F,iBAAiB,4BAA4BhJ,SAAS,SAAA8B,GACxEA,EAAQq9D,UAAUqT,OAAO,wCACzB1wE,EAAQq9D,UAAUqT,OAAO,8CACzB1wE,EAAQq9D,UAAUqT,OAAO,+CAG3B,IAAMnc,EAAQ1C,EAAOC,SAASyC,MAAMv2D,EAAO6c,IAC7B9gB,MAAMqB,KAAKm5D,EAAMI,GAAG,SAE5Bz2D,SAAQ,SAACmuB,GACR,EAAK87D,SAASi/B,UAAU/6F,IAEd,EAAK87D,SAASk/B,cAAch7F,GACV2pD,cAAc,4BAE7B3Y,UAAU7gE,IAAI,2CAG9B,EAAK2rF,SAASi/B,UAAUppH,KACN,EAAKmqF,SAASk/B,cAAcrpH,GACLg4E,cAAc,4BAClC3Y,UAAU7gE,IAAI,8CAGnC,EAAK2rF,SAASi/B,UAAUvsG,IACR,EAAKstE,SAASk/B,cAAcxsG,GACPm7D,cAAc,4BAChC3Y,UAAU7gE,IAAI,6CAIvCqqH,UAAW,SAACx6F,GAAiC,IAA3Bu6F,EAA0B,uDAAd,UACtB5oF,EAAc6zB,EAAOC,SAAS3wC,OAAO,EAAKsa,YAC1CyoE,EAAgBryC,EAAOC,OAAOzlC,GAAMlL,OAAO,EAAKsa,YAChD6rF,EAAW,UAAMz1D,EAAOC,OAAOzlC,GAAMlL,OAAO,EAAKsa,aACjD2oE,EAAS,EAAKjc,SAASk/B,cAAch7F,GACrCk7F,EAAoBjnH,SAAS88D,cAAc,UACjDmqD,EAAkBlqD,UAAU7gE,IAAI,2BAChC+qH,EAAkB1pD,UAAYhM,EAAOC,OAAOzlC,GAAMlL,OAAO,KACzDomG,EAAkBh/D,QAAQl8B,KAAOi7F,EACjCC,EAAkBh/D,QAAQjmD,OAAS,4BACnCilH,EAAkBlqD,UAAU7gE,IAA5B,mCAA4DoqH,EAA5D,WAEI5oF,GAAekmE,GAAeqjB,EAAkBlqD,UAAU7gE,IAAI,kCAElE4nG,EAAO1mC,UAAY6pD,EAAkBC,WAGvCH,cAAe,SAACh7F,GACd,IAAMo7F,EAAc,EAAKC,eAAer7F,GAIxC,OAHY,EAAKrsB,QAAQg2E,cAAb,iCAAqDyxC,EAAYE,IAAjE,OACO3xC,cAAJ,oCAA+CyxC,EAAYrjB,OAA3D,QAKjBgjB,UAAW,SAAC/6F,GACV,IAAMo7F,EAAc,EAAKC,eAAer7F,GAClCs7F,EAAM,EAAK3nH,QAAQg2E,cAAb,iCAAqDyxC,EAAYE,IAAjE,OACZ,QAAKA,KAEUA,EAAI3xC,cAAJ,oCAA+CyxC,EAAYrjB,OAA3D,S,sCAMnB,WACEroG,KAAKk/E,MAAQ,IAAI6N,MAAM,GAAI/sF,KAAKosF,UAChCpsF,KAAKk/E,MAAM5uD,KAAOtwB,KAAKu+C,UAAUv+C,KAAK+oG,WACtC/oG,KAAKk/E,MAAM3mB,KAAO,EAClBv4D,KAAKk/E,MAAMt5C,MAEX5lC,KAAK6rH,eAAiB,KACtB7rH,KAAK8rH,UAAU,a,0BAGjB,WACE9rH,KAAKk/E,MAAM5uD,KAAO,IAAIxL,KACtB9kB,KAAKk/E,MAAM3mB,KAAO,EAClBv4D,KAAK8rH,UAAU,c,uBAGjB,WACE9rH,KAAKk/E,MAAM3mB,MAAQ,EACnBv4D,KAAK8rH,UAAU,c,2BAGjB,WACE9rH,KAAKk/E,MAAM3mB,MAAQ,EACnBv4D,KAAK8rH,UAAU,c,oBAGjB,SAAOjrH,GACL,GAAIb,KAAK+rH,iBAAkB,OAAO/rH,KAAKgsH,YAAYnrH,GAEnDb,KAAKisH,aAAaprH,K,0BAGpB,SAAaA,GACXb,KAAKgqG,UAAY,CAAE/nG,MAAOpB,EAAM2G,cAAcglD,QAAQl8B,KAAMxR,IAAKje,EAAM2G,cAAcglD,QAAQl8B,MAC7FtwB,KAAK8rH,UAAU,Y,yBAGjB,SAAYjrH,GACV,GAA4B,OAAxBb,KAAK6rH,eAIP,OAHA7rH,KAAK6rH,eAAiBhrH,EAAM2G,cAAcglD,QAAQl8B,UAClDtwB,KAAKgqG,UAAY,CAAE/nG,MAAOjC,KAAK6rH,eAAgB/sG,IAAK9e,KAAK6rH,iBAK3D,IAAM5pH,EAAQ6zD,EAAOC,OAAO/1D,KAAK6rH,gBAC3B/sG,EAAMg3C,EAAOC,OAAOl1D,EAAM2G,cAAcglD,QAAQl8B,MAElDruB,EAAM2nC,SAAS9qB,GACjB9e,KAAKgqG,UAAY,CAAE/nG,MAAOjC,KAAK6rH,eAAgB/sG,IAAKje,EAAM2G,cAAcglD,QAAQl8B,MAEhFtwB,KAAKgqG,UAAY,CAAE/nG,MAAOpB,EAAM2G,cAAcglD,QAAQl8B,KAAMxR,IAAK9e,KAAK6rH,gBAGxE7rH,KAAK6rH,eAAiB,KACtB7rH,KAAK8rH,UAAU,Y,sBAGjB,WACE,IAAMz7F,EAAQjO,OAAOpiB,KAAKorH,kBAAkBruH,OAAOkqG,SAAS,EAAG,KACzDv3E,EAAO1vB,KAAKmrH,iBAAiBpuH,MAC7BuzB,EAAI,UAAMZ,EAAN,YAAcW,EAAd,OAEVrwB,KAAKk/E,MAAM5uD,KAAOwlC,EAAOC,OAAOzlC,GAChCtwB,KAAKk/E,MAAM3mB,KAAO,EAClBv4D,KAAK8rH,UAAU,c,4BAGjB,SAAex7F,GAEb,IAAMruB,EAAQ6zD,EAAOC,OAAO/1D,KAAKk/E,MAAM5uD,MAAM7vB,IAAIT,KAAKk/E,MAAM3mB,KAAM,SAASntB,QAAQ,SAC7Es/E,GAAkBzoH,EAAMy3B,MAAQ,EAAI15B,KAAK2qH,cAAgB,EACzDC,EAAgB90D,EAAOC,OAAO9zD,GAAOsmC,SAASmiF,EAAgB,QAG9DwB,EAAa57F,EAAK/B,KAAKq8F,EAAe,QAGtCc,EAAc,GAIpB,OAHAA,EAAYE,IAAMj9G,KAAKkhB,MAAMq8F,EAAa,GAC1CR,EAAYrjB,OAAS6jB,EAAa,EAE3BR,I,uBAGT,WAAwB,IAAdp7F,EAAa,uDAAN,KACTw5E,EAAakB,YAAiB16E,GAC9B26E,EAAenB,EAAah0C,EAAOC,OAAO+zC,GAAch0C,EAAOC,SAErE,OAAOk1C,EAAa7lF,OAAOplB,KAAK0/B,c,uBAGlC,SAAUysF,GACR,IAAMt/D,EAAc,IAAI5pC,YAAJ,sBAA+BkpG,GAAa,CAC9DppG,SAAS,EACT9f,OAAQjD,KAAKk/E,QAEfl/E,KAAKiE,QAAQif,cAAc2pC,K,qBAQ7B,WACE,OAAO7sD,KAAKk/E,MAAM8qB,W,IANpB,SAAcA,GACZhqG,KAAKk/E,MAAM8qB,UAAYA,EACvBhqG,KAAKk/E,MAAM4oB,UAAY9nG,KAAKk/E,MAAM8qB,Y,qBAWpC,WACE,OAAOhqG,KAAKk/E,MAAM4oB,W,IALpB,SAAcA,GACZ9nG,KAAKk/E,MAAM4oB,UAAYA,I,sBAOzB,WACE,MAAO,e,4BAGT,WACE,OAAoC,IAA7B9nG,KAAKosH,sB,wBAGd,WACE,OAAO,O,8BA1QkB1pG,K,EACpBpH,QAAU,CAAC,WAAY,aAAc,e,EAErChZ,OAAS,CACdguB,KAAMlO,OACNiqG,eAAgBnqG,QAChBoqG,qBAAsBnqG,S,2nDCJxB,SAAOthB,GACLb,KAAKusH,eAAenrB,QAA8C,KAApCphG,KAAKwsH,cAAczvH,MAAMoS,Y,mCAJ9BuT,G,EACpBpH,QAAU,CAAC,WAAY,Y,unDCI9B,SAAQza,GACNA,EAAMkD,sBAMwBoB,IAA1BnF,KAAKysH,kBAAgCzsH,KAAK0sH,sBAE1C1sH,KAAKysH,kBAAkBzsH,KAAKysH,iBAAiBvuC,S,iCAGnD,WACE,IAAMwK,EAAS1oF,KAAKwtF,iBAAmBxtF,KAAK2sH,cAAgBpoH,SAAS01E,cAAcj6E,KAAK0tF,eAAiB,KACrGhF,IACF1oF,KAAKysH,iBAAmB32D,EAAOj0D,YAAYyV,qCACzCoxE,EAAQ,WAIP1oF,KAAKysH,mBAAkBzsH,KAAKysH,iBAAmB,W,mCAzB3B/pG,G,EACpBpgB,OAAS,CACd8I,SAAUgX,S,67ECQZgqE,SAAW,CACT5oF,IAAK,SAACU,EAAQzG,EAAUV,GAaS,IAAD,GAZ9BmH,EAAOzG,GAAYV,EAEF,UAAbU,GACF,EAAKwG,QAAQq9D,UAAUiqB,OAAO,qBAAgC,aAAVxuF,GAGrC,WAAbU,IACF,EAAK6gF,SAAW,EAAK8N,SAASE,UAAY,EAAKF,SAASG,UAExD,EAAKu/B,UAAU,WAGA,cAAbruH,MACF,IAAKwG,QAAQq9D,WAAUqT,OAAvB,UAAiC,EAAKi4C,mBACtC,EAAK3oH,QAAQq9D,UAAU7gE,IAAvB,oBAAwC1D,EAAxC,gBAYF,GATiB,uBAAbU,IACF,EAAKovH,eAAe1qH,SAAQ,SAACgoF,EAAezoF,GACtByoF,EAAclQ,cAAc,0BACpC3Y,UAAUiqB,OAAO,qCAAsC7pF,GAAS3E,MAG9E,EAAK+uH,UAAU,cAGA,wBAAbruH,EAAoC,CACtC,IAAMqvH,EAAiB,EAAKz0B,cAAcpe,cAAnB,uCACW,EAAKiF,MAAM6tC,oBADtB,OAGvBj3D,EAAO6D,QAAQwgC,eAAe2yB,EAAgB,EAAKz0B,eAEnD,EAAKyzB,UAAU,aAGjB,GAAiB,qBAAbruH,GACE,EAAKyhF,MAAM8tC,iBAAkB,CAW/B,GAVA,EAAKH,eAAe1qH,SAAQ,SAAA8B,GAC1BA,EAAQg2E,cAAc,0BACnB3Y,UAAUqT,OAAO,sCAEtB,EAAKuK,MAAM8tC,iBAAiB1rD,UAAU7gE,IAAI,mCAEtC,EAAKwsH,uBACP,EAAKC,kBAAkBprD,UAAY,EAAKod,MAAM8tC,iBAAiBlrD,UAAU3yD,QAGvE,EAAKg+G,cAAe,CAAC,IAAD,EAChBC,EAAwB,UAAG,EAAKluC,MAAM8tC,iBAAiB/yC,cAAc,iCAA7C,aAAG,EAAqEtY,UAClG,EAAK0rD,aAAeD,IAA0B,EAAKC,YAAY1rD,UAAYyrD,GAGjF,EAAKtB,UAAU,UAInB,OAAO,GAGTx/B,QAAS,WAEP,IAEIghC,EAFc,IAIlB,GAAI,EAAKC,qBAAsB,CAG7B,IAAMC,EAAelpH,OAAOo2F,YACtB+yB,EAAiBD,EAAe,EAEhCE,EADY,EAAKC,aAAa9gD,wBAAwBpL,IAC5BgsD,EAE5BC,GACF,EAAKr1B,cAAc/2B,UAAU7gE,IAAI,oCAKnC,EAAK43F,cAAc3iC,MAAMwkB,QAAU,QACnC,EAAKme,cAAc3iC,MAAMk4D,WAAa,SAEtC,IAAMC,EAAa,EAAKx1B,cAAcxrB,wBAAwBpL,IACxD4oB,EAAgB,EAAKgO,cAAcnN,aACnC4iC,EAAgBD,EAAaxjC,EAEnC,EAAKgO,cAAc3iC,MAAMwkB,QAAU,GACnC,EAAKme,cAAc3iC,MAAMk4D,WAAa,GAGtC,IAAMG,EAAoBp/G,KAAKqc,IAAI6iG,GAC7BG,EAAuBF,EAAgBN,EAEvCS,EAAuBH,EAAgBN,EAG7C,GAAIE,GAJsBG,EAAa,EAID,CACpC,IAAMK,EAAmB7jC,EAAgB0jC,EAAoB,EAAKI,gBAE9DD,EAtCU,MAsCoBZ,EAAiBY,GAGrD,IAAKR,GAAeO,EAAsB,CACxC,IAAMC,EAAmB7jC,EAAgB2jC,EAAuB,EAAKG,gBAEjED,EA5CU,MA4CoBZ,EAAiBY,IAIvD,GAAI,EAAKE,eAAgB,CACvB,IAGMC,EAA+Bf,GAHXj3F,SAAS/xB,OAAOkmE,iBAAiB,EAAK6tB,eAAejN,YAClD/0D,SAAS/xB,OAAOkmE,iBAAiB,EAAK6tB,eAAehN,gBAIlF,EAAKgN,cAAc3iC,MAAM7vC,SAAW,QACpC,EAAKuoG,eAAe14D,MAAM44D,UAA1B,UAAyCD,EAAzC,MACA,EAAKD,eAAe14D,MAAM64D,UAAY,OAGxC,EAAKl2B,cAAc3iC,MAAM44D,UAAzB,UAAwChB,EAAxC,MACA,EAAKK,aAAarsD,UAAU7gE,IAAI,4BAChC,EAAK43F,cAAc/2B,UAAU7gE,IAAI,gBAGnC8rF,QAAS,WACP,EAAKohC,aAAarsD,UAAUqT,OAAO,4BACnC,EAAK0jB,cAAc/2B,UAAUqT,OAAO,eACpC,EAAK0jB,cAAc/2B,UAAUqT,OAAO,oCACpC,EAAK0jB,cAAc3iC,MAAM44D,UAAY,GAEjC,EAAKF,iBACP,EAAK/1B,cAAc3iC,MAAM7vC,SAAW,GACpC,EAAKuoG,eAAe14D,MAAM44D,UAAY,GACtC,EAAKF,eAAe14D,MAAM64D,UAAY,M,yCAK5C,WACEvuH,KAAKk/E,MAAQ,IAAI6N,MAAM,GAAI/sF,KAAKosF,UAChCpsF,KAAKk/E,MAAMA,MAAQl/E,KAAKwuH,WACxBxuH,KAAKk/E,MAAMqsB,QAAS,EACpBvrG,KAAKk/E,MAAMuvC,UAAYzuH,KAAK0uH,iBAC5B1uH,KAAKk/E,MAAMhuE,QAAUlR,KAAK6sH,eAC1B7sH,KAAKk/E,MAAM8tC,iBAAmBhtH,KAAK2uH,iBACnC3uH,KAAK4uH,eACL5uH,KAAK6uH,uB,0BAGP,WACE7uH,KAAK6sH,eAAe1qH,SAAQ,SAACgoF,EAAezoF,GAAhB,OAA0ByoF,EAAc39B,QAAQ9qD,MAAQA,O,uBAGtF,SAAUb,GACR,IACMiuH,EADgBjuH,EAAM2G,cAAcoV,QAAQ,oBACX4vC,QAAQ9qD,MAC/C1B,KAAKk/E,MAAMwa,mBAAqBo1B,I,gCAGlC,SAAmBjuH,GACjBb,KAAKk/E,MAAMwa,mBAAqB15F,KAAK+uH,e,kBAGvC,SAAKluH,GACHb,KAAKk/E,MAAM8vC,kBAAoBnuH,EAAM2G,cAEjCxH,KAAKivH,6BAA+BjvH,KAAKkvH,2BAC3CruH,EAAMkD,iBAIJ/D,KAAKivH,4BACPpuH,EAAME,2BAIRf,KAAKk/E,MAAM8tC,iBAAmBhtH,KAAKk/E,MAAM8vC,oB,oBAG3C,SAAOnuH,GACLA,EAAME,2BACNF,EAAMkD,iBAEF/D,KAAKmvH,aAETnvH,KAAKovH,gBACLpvH,KAAK6uH,qBAEL7uH,KAAKk/E,MAAMqsB,QAAUvrG,KAAKk/E,MAAMqsB,U,qBAGlC,SAAQ1qG,GACN,GAAIA,EAAO,CACT,IAAMwuH,EAAgBrvH,KAAKq4F,cAActwF,SAASlH,EAAMqD,QAClDorH,GAA6BtvH,KAAKuvH,cAExC,GAAIF,GAAiBC,EAA2B,OAGlDtvH,KAAKk/E,MAAMqsB,QAAS,EACpBvrG,KAAK6uH,uB,2BAGP,WAAiB,IAAD,OACdtqH,SAAS4G,iBAAiB,0CAA4ChJ,SAAQ,SAAC8B,GACzEA,IAAY,EAAKA,UACF6xD,EAAOj0D,YAAYyV,qCAAqCrT,EAAS,YACzEi7E,MAAMqsB,QAAS,Q,6BAK9B,SAAgB1qG,GACd,GAAKb,KAAKs+E,UAAat+E,KAAKuvH,cAA5B,CAEA,IAAMC,EAAgBxvH,KAAKq4F,cAAcpe,cAAnB,yCACcj6E,KAAKk/E,MAAMwa,mBADzB,8BAItB,EAAqC5jC,EAAO6D,QAAQ6/B,SAA5C9P,EAAR,EAAQA,MAAOC,EAAf,EAAeA,QAASC,EAAxB,EAAwBA,SAExB,OAAQ/oF,EAAM44F,SACZ,KAAK/P,EACH7oF,EAAMkD,iBAEF/D,KAAKk/E,MAAMwa,oBAAsB15F,KAAK+uH,aACxC/uH,KAAKk/E,MAAMwa,mBAAqB15F,KAAKyvH,SAC5BzvH,KAAKk/E,MAAMwa,mBAAqB15F,KAAK0vH,UAC9C1vH,KAAKk/E,MAAMwa,qBAEb,MACF,KAAK/P,EACH9oF,EAAMkD,iBAEF/D,KAAKk/E,MAAMwa,mBAAqB15F,KAAKyvH,UACvCzvH,KAAKk/E,MAAMwa,qBAEb,MACF,KAAK9P,EAEH,GADI5pF,KAAKk/E,MAAMwa,oBAAsB15F,KAAK+uH,cAAcluH,EAAMkD,iBAC1DyrH,EAEF,YADAA,EAAc51B,QAMpB55F,KAAKk/E,MAAM6tC,oBAAsB/sH,KAAKk/E,MAAMwa,sB,uBAG9C,SAAUyyB,GACR,IAAMt/D,EAAc,IAAI5pC,YAAJ,mBAA4BkpG,GAAa,CAC3DppG,SAAS,EACT9f,OAAQjD,KAAKk/E,QAEfl/E,KAAKiE,QAAQif,cAAc2pC,K,qBA2B7B,WACE,OAAO7sD,KAAKk/E,MAAMuvC,W,IAzBpB,SAAc1xH,GACZiD,KAAKk/E,MAAMuvC,UAAY1xH,I,0BAGzB,WACE,OAAOiB,MAAMqB,KAAKW,KAAKq4F,cAAcltF,iBAAiB,uB,uBAGxD,WACE,OAAOnL,KAAKiE,QAAQg2E,cAAc,qB,0BAGpC,WACE,OAAOj6E,KAAKq4F,cAAcpe,cAAc,wB,sBAG1C,WACE,MAA4B,aAArBj6E,KAAKk/E,MAAMA,Q,oBAGpB,WACE,OAA6B,IAAtBl/E,KAAKk/E,MAAMqsB,S,sCAOpB,WAGE,MAFmB,CAAC,IAAK,IAEPt6F,SAASjR,KAAKk/E,MAAM8vC,kBAAkBnpH,aAAa,W,uCAGvE,WACE,OAAO7F,KAAKk/E,MAAM8vC,kBAAkB1tD,UAAUv5D,SAAS,qC,4BAGzD,WACE,OAAO/H,KAAKq4F,cAAcpe,cAAc,sC,wBAG1C,WACE,OAAQ,I,oBAGV,WACE,OAAO,I,oBAGT,WACE,OAAOj6E,KAAKk/E,MAAMhuE,QAAQrS,OAAS,I,yBAGrC,WACE,OAAOmB,KAAK6sH,eAAehuH,OAAS,I,4BAGtC,WACE,OAAOmB,KAAK2vH,gBAAkB,S,4BAGhC,WACE,MAAO,CAAC,2BAA4B,6BAA8B,kC,mCA9UzCjtG,G,EACpBpH,QAAU,CAAC,SAAU,UAAW,e,EAChChZ,OAAS,CACd48E,MAAO98D,OACPwtG,SAAU1tG,QACV2tG,gBAAiB3tG,QACjB4tG,WAAY3tG,OACZssG,UAAWrsG,S,ioDCGb,WACE,OAAO,I,qBAGT,WAAW,IAAD,OACR,GAAsB,GAAlBpiB,KAAK+vH,WACY,IAAjB/vH,KAAK23F,SAAT,CAEA,IAAI7yC,EAAM9kD,KAAKgwH,eAEfhwH,KAAKs/F,QAAUuL,aAAY,WAGzB,IAFA/lD,GAAY,IAED,EAGT,OAFAgmD,cAAc,EAAKxL,cACnB,EAAK2wB,SAAS,EAAKt4B,UAIrB,EAAKu4B,cAAchrB,YAAcpgD,IAChC,Q,wBAGL,WACEs3B,aAAap8E,KAAKs/F,W,sBAGpB,SAAS7pC,GACPnxD,OAAO6rH,SAAS1vC,KAAOhrB,O,mCAtCE/yC,G,EACpBpgB,OAAS,CACdmzD,IAAKrzC,OACL+gC,KAAMjhC,S,EAGD5G,QAAU,CACf,Y,wrFCSF8wE,SAAW,CACT5oF,IAAK,SAACU,EAAQzG,EAAUV,GAWtB,OAVAmH,EAAOzG,GAAYV,EAEF,kBAAbU,EACF,EAAK2uF,SAASgkC,yBAAyBrzH,GACjB,iBAAbU,EACT,EAAK2uF,SAASikC,6BAA6BtzH,GACrB,UAAbU,GACT,EAAK2uF,SAASkkC,mBAAmBvzH,IAG5B,GAETqzH,yBAA0B,SAACG,GACrBA,EAAM1xH,QAAU,EAAKk3E,UAEzBzxE,OAAOq1D,QAAQzN,OAAO,EAAKskE,4BAA6B,CAAC/mH,KAAM,WAEjE4mH,6BAA8B,SAACE,GACR,IAAjBA,EAAM1xH,QAEVyF,OAAOq1D,QAAQzN,OAAO,EAAKukE,2BAA4B,CAAChnH,KAAM,WAEhE6mH,mBAAoB,SAACC,GACnB,OAAQ,EAAKG,mBACX,IAAK,SACH,EAAKtkC,SAASukC,yBAAyBJ,EAAM1xH,UAOnD8xH,yBAA0B,SAACjkE,GACzB,EAAKwgE,kBAAkBx3D,MAAMwkB,QAAU,OACvC,EAAK02C,+BAA+Bl7D,MAAMwkB,QAAU,OACpD,EAAK22C,iCAAiCn7D,MAAMwkB,QAAU,OAExC,IAAVxtB,EACF,EAAKwgE,kBAAkBx3D,MAAMwkB,QAAU,QACpB,IAAVxtB,EACT,EAAKkkE,+BAA+Bl7D,MAAMwkB,QAAU,SAEpD,EAAK22C,iCAAiCn7D,MAAMwkB,QAAU,QACtD,EAAK42C,+BAA+B5rB,YAClC,EAAK4rB,+BAA+B5rB,YAAYzgG,QAAQ,MAAOioD,M,sCAKvE,WAAW,IAAD,OAGR,CAAC,YAAa,WAAY,YAAa,QAAQvqD,SAAQ,SAACrC,GACtD,EAAKixH,gBAAgB3wH,iBAAiBN,GAAW,SAACe,GAChDA,EAAMkD,iBACNlD,EAAMgD,wBAMV7D,KAAKgxH,YAAY5wH,iBAAiB,SAAS,SAACS,GAAD,OAAWA,EAAMgD,qBAC5D7D,KAAKk/E,MAAQ,IAAI6N,MAAM,GAAI/sF,KAAKosF,UAEhCpsF,KAAKk/E,MAAMqxC,MAAQvwH,KAAKixH,a,gCAG1B,SAAmBpwH,GACjB,IAAIb,KAAKkxH,cAAT,CAEA,IAAMC,EAAatwH,EAAMuwH,aAAab,MACtCvwH,KAAKgxH,YAAYT,MAAQY,EAIzBnxH,KAAKgxH,YAAY9tG,cAAc,IAAIgyC,MAAM,c,6BAG3C,WACMl1D,KAAKkxH,eAETlxH,KAAKgxH,YAAYp3B,U,mCAGnB,WACE,IAAI55F,KAAKkxH,cAAT,CAEA,IAAMX,EAAQvwH,KAAKgxH,YAAYT,MAE/BvwH,KAAKk/E,MAAMmyC,cAAgBd,EAE3B,IAPsB,EAOhBa,EAAe,IAAIE,aACnBC,EAAe,GARC,IASHhB,GATG,IAStB,2BAA0B,CAAC,IAAhBiB,EAAe,QACxB,GAAKxxH,KAAKyxH,UAAUD,GAEb,IAAIJ,EAAaM,MAAM7yH,SAAWmB,KAAK+1E,SAC5C,SAEAq7C,EAAaM,MAAMjxH,IAAI+wH,QAJvBD,EAAa3yH,KAAK4yH,IAXA,8BAkBtBxxH,KAAKk/E,MAAMqyC,aAAeA,EAC1BvxH,KAAKgxH,YAAYT,MAAQa,EAAab,MAEtCvwH,KAAKk/E,MAAMqxC,MAAQa,EAAab,S,uBAGlC,SAAUiB,GACR,MAA+B,QAAxBxxH,KAAK2xH,gBAA4B3xH,KAAK4xH,UAAU3gH,SAASugH,EAAK/nH,Q,sBAGvE,WACE,OAAOzJ,KAAKgxH,YAAYT,MAAM1xH,S,qBAGhC,WACE,OAAOmB,KAAK2xH,eAAeviH,MAAM,Q,0CAGnC,WACE,OAAOpP,KAAK6wH,iCAAiCgB,uBAAuB,4BAA4B,Q,mCA3IvEnvG,G,EACpBpgB,OAAS,CACdwvH,aAAc1vG,OACdmuG,MAAOvyH,MACP+zH,SAAU7vG,QACVtT,IAAKuT,OACLyvG,UAAWxvG,OACX4vG,uBAAwB5vG,OACxB6vG,sBAAuB7vG,OACvB8vG,SAAUhwG,S,EAEL5G,QAAU,CACf,QAAS,YAAa,cAAe,2BACrC,+B,mmGCIF62G,kBAAoB,SAACtxH,GACnB,MAA0BA,EAAMoC,OAAxBg7C,EAAR,EAAQA,KAAM/sC,EAAd,EAAcA,QACRkhH,EAAgBlhH,EAAQkhH,gBAAiB,EACzCC,EAAYnhH,EAAQ04D,IAAM9T,EAAO6D,QAAQ+xB,YAAYztC,GAE3D6X,EAAOopB,MAAMozC,cAAc1zH,KAA3B,GAAkCgrE,GAAIyoD,EAAW57G,KAAMwnC,GAAS/sC,IAChE,EAAKqhH,cAAcH,I,yCAVrB,WACEpyH,KAAKuyH,eAAc,EAAO,O,2BAY5B,SAAcH,GAA2B,IAAD,OAAXxvD,EAAW,uDAAH,EACnC5iE,KAAKoyH,cAAgBA,EAEhBpyH,KAAKwyH,iBAKVr6D,YAAW,WACT,EAAKs6D,eAAetwH,SAAQ,SAACuwH,EAAgBhxH,GAC3C,IAAMixH,EAAcD,EAAe/wD,UAC7BixD,EAAcF,EAAelmE,QAAQomE,YACrCP,EAAcK,EAAelmE,QAAQ6lE,WAAav8D,EAAO6D,QAAQ+xB,YAAYinC,GAEnF78D,EAAOopB,MAAMozC,cAAc1zH,KAAK,CAAEgrE,GAAIyoD,EAAW57G,KAAMk8G,EAAalpH,KAAMmpH,IAC1EF,EAAe/9C,YAGjB,EAAKk+C,oBACJjwD,GAfD5iE,KAAK6yH,oB,6BAkBT,WAAmB,IAAD,OACZ7yH,KAAKoyH,gBAAepyH,KAAK8yH,cAAcnxD,UAAY,IAEvD7L,EAAOopB,MAAMozC,cAAcnwH,SAAQ,SAAC4wH,EAAerxH,GACjD,IAEMwP,EAAO,GAAK8hH,aAFG,EAAKC,sBAAwBvxH,EAAQ,IAEvBqxH,GACnC,EAAKG,eAAeH,EAAct8G,KAAMvF,Q,4BAI5C,SAAejC,GAAwB,IAAD,OAAdiC,EAAc,uDAAJ,GAC1BiiH,EAAsBnzH,KAAKozH,aAAankH,EAASiC,GAEvDinD,YAAW,WACL,EAAKk7D,mBAAmBniH,EAAQ04D,MACpC,EAAKkpD,cAAclxD,YAAYuxD,GAC/B,EAAKG,cAAcpiH,EAAQ04D,OAC1B14D,EAAQ8hH,cAAgB,K,gCAG7B,SAAmBX,GACjB,QAAKA,GAGyB,MADFryH,KAAK8yH,cAAc74C,cAAnB,oBAA8Co4C,EAA9C,S,2BAI9B,SAAcA,GACZ,IAAMkB,EAAez9D,EAAOopB,MAAMozC,cAAcxjH,WAAU,SAAC9L,GAAD,OAAaA,EAAQ4mE,KAAOyoD,MAChE,IAAlBkB,GAEJz9D,EAAOopB,MAAMozC,cAAcrhD,OAAOsiD,EAAc,K,0BAGlD,SAAatkH,EAASiC,GACpB,IACMsiH,EADWxzH,KAAKyzH,2BACYxkH,QAAQ25E,kBAAkBwP,WAAU,GAChEs7B,EAAaxiH,EAAQ3K,QAAU,GAC/BotH,EAAiB,CACrBp+D,MAAOrkD,EAAQqkD,MACfC,YAAavmD,EACb2kH,WAAYF,EAAWz1E,MAAQj+C,KAAK6zH,uBACpCC,UAAWJ,EAAWvmD,MAUxB,OAPAqmD,EAAiB7xD,UAAY7L,EAAO6D,QAAQ8f,gBAAgB+5C,EAAiB7xD,UAAWgyD,GACxF3zH,KAAK+zH,sBAAsBP,EAAkBtiH,GAC7ClR,KAAKg0H,aAAaR,EAAkBtiH,EAAQqkD,OAC5Cv1D,KAAKi0H,cAAcT,EAAkBE,GACrC1zH,KAAKk0H,YAAYV,EAAkBtiH,EAAQzH,KAAMyH,EAAQijH,MACzDn0H,KAAKo0H,eAAeZ,EAAkBtiH,EAAQzH,KAAMyH,EAAQqwD,SAAW,IAEhEiyD,I,mCAGT,SAAsBA,EAAkBtiH,GACjCA,EAAQ04D,KAEb4pD,EAAiBhnE,QAAQod,GAAK14D,EAAQ04D,M,0BAGxC,SAAa4pD,EAAkBj+D,GACxBA,GACHi+D,EAAiBv5C,cAAc,+BAA+BtF,W,2BAIlE,SAAc6+C,EAAkBE,GAC9B,IAAMW,EAAiBb,EAAiBv5C,cAAc,gCAEnD,OAACy5C,QAAD,IAACA,KAAYvmD,KAKhB3wE,OAAOkH,KAAKgwH,GAAc,IAAIvxH,SAAQ,SAAC9E,GACrCg3H,EAAe7nE,QAAQnvD,GAAOq2H,EAAWr2H,MALzCg3H,EAAe1/C,W,4BASnB,SAAe6+C,EAAkBZ,EAAarxD,GAAU,IAAD,EACjD+yD,EAAWt2H,MAAMC,QAAQsjE,GAAWA,EAAU,CAACA,GAE7CgzD,GADND,EAAWA,EAAS5xH,OAAO1C,KAAKw0H,iBAAiB5B,KACjBtrH,QAAO,SAACi6D,GAAD,OAAaA,KACpB9+D,KAAI,SAAC8+D,GAAD,qCAAqCA,OAEzE,EAAAiyD,EAAiBlyD,WAAU7gE,IAA3B,UAAkC8zH,M,yBAGpC,SAAYf,EAAkBZ,EAAauB,GACzC,GAAKn0H,KAAKy0H,uBAKV,GAJoB,UAAhB7B,GAA2C,UAAhBA,IAC7BuB,EAAO,WAGJA,EAAL,CAKA,IAAMO,EAAe10H,KAAK20H,oBAAoB1lH,QAAQ25E,kBAAkBwP,WAAU,GAC5Ew8B,EAAa,iBAAaT,EAAK1vH,QAAQ,MAAM,KAC7CowH,EAAoBH,EAAaz6C,cAAc26C,GAEhDC,GAE4BrB,EAAiBv5C,cAAc,mCACvC66C,YAAYD,QAXnCrB,EAAiBv5C,cAAc,+BAA+BtF,W,8BAclE,SAAiBi+C,GACf,MAAoB,WAAhBA,EAAiC,GAS9B,CAPW,CAChBmC,OAAQ,OACRC,QAAS,QACTjyH,MAAO,MACPqlF,MAAO,UACPwqC,GAEiB,mB,gCAGrB,WACE,OAAO,M,yBAGT,WAEE,IACMqC,EAAe1wH,SAAS4G,iBADD,wFAE7B,OAAI8pH,EAAap2H,OAAS,EACGo2H,EAAaA,EAAap2H,OAAS,GACpCo7E,cAAcj6E,KAAKk1H,gCAGxCl1H,KAAKm1H,gB,mCAzLazyG,G,EACpBpH,QAAU,CACf,OACA,uBACA,gBACA,W,EAGKhZ,OAAS,CACd8yH,kBAAmBhzG,OACnBizG,0BAA2BjzG,S,4nDCH7B,WACMpiB,KAAKs1H,qBAAuBt1H,KAAKu1H,eACnCv1H,KAAKw1H,gB,yBAIT,SAAYrM,GACV,GAAKnpH,KAAKu1H,cAAV,CAEA,IAAM1rD,EAAK7pE,KAAKu1H,cAGhB,GAFA1rD,EAAG4zB,QAECz9F,KAAKy1H,cAAc5rD,GAAK,CAC1B,IAAMnoE,EAAQmoE,EAAG9sE,MAAM8B,OACvBgrE,EAAG6rD,kBAAkBh0H,EAAOA,O,2BAIhC,SAAcmoE,GACZ,MAAmB,SAAZA,EAAGpgE,MAA+B,aAAZogE,EAAGpgE,O,yBAGlC,WAEE,OADWzJ,KAAK21H,mBAAqB31H,KAAKiE,QAAUM,UAC1C01E,cAAcj6E,KAAK0tF,oB,mCA/BJhrE,G,EACpBpgB,OAAS,CACd8I,SAAUgX,OACVwzG,eAAgB1zG,QAChB2zG,cAAe3zG,U,gkFCAjB,WACEliB,KAAK81H,KAAK,KAAM,IAAIhxG,MACpB9kB,KAAK81H,KAAK,SAAU91H,KAAKw/F,QAAS,CAAC,4BAA8B,M,oBAGnE,SAAO3+F,GAIL,GADkC,kBAFlC,EAAkBA,EAAMoC,OAAxB,MAGe,CACb,IAAM8yH,EAAc,CAClBC,MAAOh2H,KAAKi2H,YAAYl5H,MACxB,aAAgBiD,KAAKk2H,YAAYn5H,OAGnCiD,KAAK81H,KAAK,QAAS,aAAcC,M,kBAIrC,WACE/1H,KAAKm2H,UAAUv3H,KAAK2a,a,qBAGtB,WAEE,OADAjV,OAAO6xH,UAAY7xH,OAAO6xH,WAAa,GAChC7xH,OAAO6xH,e,mCA7BWzzG,G,EACpBpgB,OAAS,CAAEsnE,GAAIxnD,Q,EACf9G,QAAU,CAAC,QAAS,U,ymDCC3B,WACEtb,KAAKo2H,aAAalxB,YAAc,wB,mCAJPxiF,G,EACpBpH,QAAU,CAAC,W,0mDCElB,SAAOza,GACLA,EAAMkD,iBAEN/D,KAAKq2H,YAAYl0H,SAAQ,SAAC+B,GACxBA,EAAOo9D,UAAUiqB,OAAO,aAG1BvrF,KAAKs2H,YAAYn0H,SAAQ,SAAC+B,GACxBA,EAAOo9D,UAAUiqB,OAAO,kB,mCAXD7oE,G,EACpBpH,QAAU,CAAC,OAAQ,S,2mDCG1B,WACEtb,KAAKurF,W,oBAGP,WACuC,cAAjCvrF,KAAKkT,KAAKvW,IAAI,iBACZqD,KAAKu2H,cAAcn1B,QACrBphG,KAAKw2H,gBAAgBl1D,UAAU7gE,IAAIT,KAAKy2H,gBAExCz2H,KAAKw2H,gBAAgBl1D,UAAUqT,OAAO30E,KAAKy2H,sB,mCAbtB/zG,G,EACpBpH,QAAU,CAAE,YAAa,W,EACzBqB,QAAU,CAAE,c,iqDCKnByvE,SAAW,CACT5oF,IAAK,SAACU,EAAQzG,EAAUV,GAetB,OAdAmH,EAAOzG,GAAYV,EAEF,cAAbU,IACE,EAAKyhF,MAAMw3C,WACb,EAAKvzB,cAAc7hC,UAAU7gE,IAAI,oDACjC,EAAKk2H,iBAAiBr1D,UAAU7gE,IAAI,wDACpC,EAAKm2H,kBAAkBt1D,UAAU7gE,IAAI,2DAErC,EAAK0iG,cAAc7hC,UAAUqT,OAAO,mDACpC,EAAKgiD,iBAAiBr1D,UAAUqT,OAAO,wDACvC,EAAKiiD,kBAAkBt1D,UAAUqT,OAAO,4DAIrC,I,sCAIX,WACE,GAAI,yBAA0BrwE,OAAQ,CACpC,IAAMuyH,EAA+B72H,KAAK82H,uBAAuBx5H,KAAK0C,MACtEA,KAAK+2H,mBAAqB,IAAIC,qBAAqBH,GACnD72H,KAAK+2H,mBAAmBluH,QAAQ7I,KAAKmjG,kB,wBAIzC,WACM,yBAA0B7+F,SAC5BtE,KAAK+2H,mBAAmB12H,aACxBL,KAAK+2H,mBAAqB,Q,wBAI9B,WACE/2H,KAAKk/E,MAAQ,IAAI6N,MAAM,GAAI/sF,KAAKosF,UAE3BpsF,KAAKi3H,mBACRj3H,KAAKmjG,cAAc7hC,UAAU7gE,IAAI,gCAEnCT,KAAK22H,iBAAiBr1D,UAAU7gE,IAAI,oCACpCT,KAAK42H,kBAAkBt1D,UAAU7gE,IAAI,qCAErC,IAAM8F,EAASvG,KAAKmjG,cAAc32C,QAAQjmD,OAC1CvG,KAAKmjG,cAAc32C,QAAQjmD,OAA3B,UAAuCA,EAAvC,8CAEAvG,KAAKk3H,W,oCAGP,SAAuB9vH,EAASmO,GAAW,IAAD,OACxCnO,EAAQjF,SAAQ,SAAAg1H,GACVA,EAAMC,gBACR,EAAKF,c,oBAKX,SAAOr2H,GACLb,KAAKk/E,MAAMw3C,UAAY12H,KAAKq3H,gB,wBAG9B,SAAWx2H,GACTA,EAAMkD,iBAEN/D,KAAKmjG,cAAcQ,SAAS,CAC1BpiG,KAAMvB,KAAKmjG,cAAcC,WAAapjG,KAAKs3H,aAC3C1zB,SAAU,a,yBAId,SAAY/iG,GACVA,EAAMkD,iBAEN/D,KAAKmjG,cAAcQ,SAAS,CAC1BpiG,KAAMvB,KAAKmjG,cAAcC,WAAapjG,KAAKs3H,aAC3C1zB,SAAU,a,yBAId,WACE,OAAO5jG,KAAKmjG,cAAco0B,aAAev3H,KAAKmjG,cAAc5I,cAC1Dv6F,KAAKmjG,cAAciH,YAAcpqG,KAAKmjG,cAAc6I,c,wBAGxD,WACE,IAAMwrB,EAAWnhG,SAASr2B,KAAKw3H,UAE/B,MAA0B,MAAtBx3H,KAAKy3H,aAA6Bz3H,KAAKmjG,cAAch5B,aAAeqtD,EAAW,KAE5EA,I,oBAGT,WACE,OAAOx3H,KAAK03H,eAAiB,Q,6BAG/B,WACE,OAAO13H,KAAK23H,yBAA0B,I,wBAGxC,WAAoB,IAAD,OACXF,EAAez3H,KAAK43H,cAAc9gH,MAAK,SAAA4X,GAAI,OAAI,EAAK8oG,SAASt4H,WAAW65G,SAASrqF,MAEvF,OAAI+oG,GAEGz3H,KAAK43H,cAAc,K,yBAG5B,WACE,MAAO,CAAC,KAAM,U,mCArHWl1G,G,EACpBpH,QAAU,CAAC,UAAW,aAAc,e,EACpChZ,OAAS,CACdk1H,SAAUp1G,OACV60G,kBAAmB/0G,U,wmDCDrB,WACE2tE,MAAMC,KAAK,CACTrmF,KAAM,MACNgsD,IAAKz1D,KAAKkT,KAAKvW,IAAI,OACnBozF,SAAU,a,mBAId,WACM/vF,KAAK63H,4BAA8E,IAAhD73H,KAAKqrH,UAAUrrH,KAAK83H,0BACzD93H,KAAK6f,OACL7f,KAAK83H,uBAAuBnjD,Y,uBAIhC,SAAUojD,GACR,MAAwBA,EAAIlrD,wBAApBpL,EAAR,EAAQA,IAAK64B,EAAb,EAAaA,OACP09B,EAAW1zH,OAAOo2F,aAAen2F,SAASwY,gBAAgBw9E,aAEhE,OACG94B,EAAM,GAAK64B,EAAS,IACrB74B,EAAMu2D,O,mCAxBiBt1G,G,EACpBpH,QAAU,CAAE,qB,2mDCYnB,WAAW,IAAD,OACJ28G,EAAO,EACPC,EAAM,UACNC,GAAO,SAEuB,KAA9Bn4H,KAAKo4H,eAAer7H,OAA+C,KAA/BiD,KAAKq4H,gBAAgBt7H,QAC3Dm7H,EAAMl4H,KAAKo4H,eAAer7H,MAC1Bo7H,EAAMn4H,KAAKq4H,gBAAgBt7H,MAC3Bk7H,EAAO,IAKTj4H,KAAKyC,IAAM,IAAI61H,SAASv2H,IAAI,CAC1Bw2H,UAAW,kBACXC,OAAQ,IAAIF,SAASG,OAAON,EAAKD,GACjCxiE,MAAO,0EACPuiE,KAAMA,IAGR,IAAMS,EAAM,IAAIJ,SAASK,kBAAkB,CAACC,aAAa,IAEzD54H,KAAKyC,IAAIo2H,WAAWH,EAAK,YACzB14H,KAAKyC,IAAIq2H,GAAG,SAAS,SAACC,GAAD,OAAS,EAAKC,UAAUD,MAE7C/4H,KAAKi5H,OAAS,IAAIX,SAASY,OAAO,CAChCj1H,QAASjE,KAAK+wH,gBACd/pF,OAAQ,CAACtT,EAAG,EAAG1F,GAAI,MAClBmrG,UAAU,CAAChB,EAAKD,IAChBkB,MAAMp5H,KAAKyC,O,uBAKhB,SAAUs2H,GACR,IAAMj3C,EAAKi3C,EAAIM,OAEfr5H,KAAKo4H,eAAer7H,MAAQ+kF,EAAGo2C,IAC/Bl4H,KAAKq4H,gBAAgBt7H,MAAQ+kF,EAAGq2C,IAEhCn4H,KAAKi5H,OAAOE,UAAUr3C,EAAGh5C,WAAWswF,MAAMp5H,KAAKyC,U,mCArDtBigB,G,EACpBpH,QAAU,CACf,WACA,YAEA,a,EAGKhZ,OAAS,CACd41H,IAAM91G,OACNk3G,KAAOl3G,S,orDCHTgqE,SAAW,CACT5oF,IAAK,SAACU,EAAQzG,EAAUV,GAuBtB,OAtBAmH,EAAOzG,GAAYV,EAEF,WAAbU,IACwB,IAAtB,EAAKyhF,MAAMq6C,QACbnoD,YAAM,CACJ91D,QAAS,EAAKrX,QACdu9D,OAAQ,IACR4pB,WAAY,IACZC,cAAe,IACfd,UAAW,IACXC,aAAc,IACdW,QAAS,IACTuf,MAAO,GACP5nC,OAAQ,gBACRn9B,SAAU,IACV48B,SAAU,SAACi3D,GACT,EAAKv1H,QAAQ0wE,aAMd,I,yCAIX,WACE30E,KAAKk/E,MAAQ,IAAI6N,MAAM,GAAI/sF,KAAKosF,UAChCpsF,KAAKk/E,MAAMq6C,QAAS,EACpBv5H,KAAKy5H,kB,mBAGP,SAAM54H,GACAA,GAAOA,EAAMkD,iBAEjB/D,KAAKk/E,MAAMq6C,QAAS,I,2BAGtB,WAAiB,IAAD,OACd,GAAKv5H,KAAK05H,qBAEVvhE,YAAW,kBAAM,EAAKumB,UAAS1+E,KAAK25H,iBAEhC35H,KAAK45H,wBAAwB,CAC/B,IAAMC,EAA4B75H,KAAK25H,gBAAkB,IACzD35H,KAAK85H,oBAAoBpkE,MAAMqkE,kBAA/B,UAAsDF,EAAtD,W,8BArDuBn3G,K,EACpBpH,QAAU,CAAC,iB,EACXhZ,OAAS,CACd03H,WAAY73G,S,2mDCHd,WACEniB,KAAKiE,QAAQ7D,iBAAiB,SAAS,SAACwF,GAAD,OAAOA,EAAE7B,sB,2BAGlD,SAAclD,GACM,UAAdA,EAAMxD,KACRwD,EAAMkD,sB,mCAPiB2e,I,unDCG3B,WAAW,IAAD,OACM1iB,KAAKiE,QAAQkH,iBAAiB,MAEtChJ,SAAQ,SAAAgpE,GAAI,OAAIA,EAAK7J,UAAU7gE,IAAI,cAErCT,KAAKi6H,gBACPj6H,KAAKiE,QAAQkH,iBAAiB,kCAAkChJ,SAAQ,SAAAopF,GACtE,EAAK2uC,YAAY3uC,EAAQ,CAAE5lD,SAAU,S,oBAK3C,SAAO9kC,GACL,IAAMoD,EAAUpD,EAAM2G,cAElBxH,KAAKm6H,eAAel2H,KACtBpD,EAAMkD,iBAEN/D,KAAKk6H,YAAYj2H,M,yBAIrB,SAAYsnF,GAAkC,IAAD,yDAAJ,GAAI,IAAvB5lD,gBAAuB,MAAZ,IAAY,EACrCy0F,EAAW7uC,EAAOx+B,WAClBoe,EAAOivD,EAASngD,cAAc,MAE/B9O,IAEDA,EAAK7J,UAAUv5D,SAAS,uBAC1BwjF,EAAOjqB,UAAUqT,OAAO,8BACxBxJ,EAAK7J,UAAUqT,OAAO,sBACtBylD,EAAS94D,UAAUqT,OAAO,4BAC1B7e,EAAO6D,QAAQ6xB,MAAM5sE,KAAKusD,EAAMxlC,GAEhC3lC,KAAKq6H,yBAAyB9uC,KAE9BA,EAAOjqB,UAAU7gE,IAAI,8BACrB0qE,EAAK7J,UAAU7gE,IAAI,sBACnB25H,EAAS94D,UAAU7gE,IAAI,4BACvBq1D,EAAO6D,QAAQ6xB,MAAM7sE,GAAGwsD,EAAMxlC,O,4BAIlC,SAAe1hC,GACb,MAAwC,MAAjCA,EAAQ4B,aAAa,U,sCAG9B,SAAyB5B,GACvB,GAAKjE,KAAKs6H,gBAAgBr2H,GAA1B,CAGA,IAAMs2H,EAAUv6H,KAAKs6H,gBAAgBr2H,GAAS4oE,wBAAwBpL,IAChE+4D,EAAUv2H,EAAQ4oE,wBAAwBpL,IAGhDzhE,KAAKs6H,gBAAgBr2H,GAASuzH,SAAS,CACrC/1D,IAAK+4D,EAAUD,EACf32B,SAAU,c,6BAId,SAAgB3/F,GACd,GAAKjE,KAAKy6H,6BAEV,OAAOx2H,EAAQ2Y,QAAQ5c,KAAKy6H,mC,mCAnEH/3G,G,EACpBpgB,OAAS,CAAEo4H,UAAWx4G,QAASy4G,wBAAyBv4G,S,4nDCM/D,WACMpiB,KAAK46H,yBAAyB56H,KAAK66H,iB,0BAGzC,WACOv2H,OAAOw2H,SAEZx2H,OAAOw2H,QAAQC,QAAQ/6H,KAAKg7H,eAAgBh7H,KAAKi7H,iBAAmB,S,mCAd3Cv4G,G,EACpBpgB,OAAS,CACdxC,UAAWsiB,OACXjK,WAAY3b,OACZ0+H,mBAAoB,CAAEzxH,KAAMyY,QAASjB,SAAS,K,2mDCGhD,WACE,IAAMk6G,EAAe,IAAIl4G,YAAY,sBAAuB,CAAEhgB,OAAQ,CAAE8D,WAAY/G,QAEpFA,KAAKiE,QAAQif,cAAci4G,K,qBAG7B,WACEn7H,KAAKiE,QAAQq9D,UAAU7gE,IAAIT,KAAKo7H,0B,oBAGlC,WACEp7H,KAAKiE,QAAQq9D,UAAUqT,OAAO30E,KAAKo7H,0B,4BAGrC,WAAuC,IAAxBC,EAAuB,4DAAXl2H,OACPA,IAAdk2H,EACFr7H,KAAKiE,QAAQq9D,UAAUiqB,OAAOvrF,KAAKo7H,wBAC1BC,EACTr7H,KAAKs7H,UAELt7H,KAAKu7H,W,gBAWT,WACE,OAAKv7H,KAAKw7H,eAEHx7H,KAAKy7H,YAAYv2B,YAAY/1F,OAFH,I,IARnC,SAAS8uC,GACFj+C,KAAKw7H,iBAEVx7H,KAAKiE,QAAQuW,aAAa,QAASyjC,GACnCj+C,KAAKy7H,YAAYv2B,YAAcjnD,K,sBASjC,WACE,OAAOj+C,KAAK07H,mB,mCA7Cah5G,G,EACpBpH,QAAU,CAAC,S,EACXhZ,OAAS,CACdq5H,kBAAmBv5G,OACnBw5G,SAAU15G,U,mnFCDZkqE,SAAW,CACT5oF,IAAK,SAACU,EAAQzG,EAAUV,GAGtB,GAFAmH,EAAOzG,GAAYV,EAEF,WAAbU,IACF,EAAK2uF,SAASyvC,mCAEV,EAAK38C,MAAM6b,QACb,cAA0Cv+F,OAAO4K,QAAQ,EAAK83E,MAAM6b,QAApE,eAA6E,CAAC,IAAD,YAAjE7nD,EAAiE,KAA1D4oF,EAA0D,KAC7D,SAAV5oF,EACF,EAAKk5C,SAAS2vC,+BAA+B7oF,EAAO4oF,GAEpD,EAAK1vC,SAAS4vC,kCAAkC9oF,EAAO4oF,GAM/D,OAAO,GAGTD,iCAAkC,WAChC,EAAKI,wBAAwBt6D,UAAY,GAEzC,EAAK19D,QAAQkH,iBAAiB,oCAAoChJ,SAAQ,SAAC+5H,GACzEA,EAAuBv6D,UAAY,MAGrC,EAAK19D,QAAQkH,iBAAiB,eAAehJ,SAAQ,SAACg6H,GACpDA,EAAc76D,UAAUqT,OAAO,yBAInCqnD,kCAAmC,SAAC9oF,EAAO4oF,GACzC,IAEMK,EAFY,EAAKl4H,QAAQg2E,cAAb,mBAAuC/mC,EAAvC,6BAEct2B,QAAQ,eAClCw/G,EAAgCD,EAAcliD,cAAc,oDAC5DiiD,EAAyBC,EAAcliD,cAAc,oCAE3D6hD,EAAmB35H,SAAQ,SAACk6H,GAC1B,IAAMC,EAAwBF,EAA8BntH,QAAQmpF,WAAU,GAC5CkkC,EAAsBriD,cAAc,wCAC5CnY,UAAYu6D,EACtCH,EAAuBt6D,YAAY06D,MAGrCH,EAAc76D,UAAU7gE,IAAI,sBAI9Bs7H,+BAAgC,SAAC7oF,EAAO4oF,GACtCA,EAAmB35H,SAAQ,SAACk6H,GAC1B,IAAME,EAAuB,EAAKC,+BAA+BvtH,QAAQmpF,WAAU,GAClDmkC,EAAqBtiD,cAAc,8BAC3CnY,UAAYu6D,EACrC,EAAKJ,wBAAwBr6D,YAAY26D,Q,yCAK/C,WACEv8H,KAAKk/E,MAAQ,IAAI6N,MAAM,GAAI/sF,KAAKosF,UAEhCpsF,KAAKy8H,gB,oBAGP,SAAO57H,GACL,IAAOqS,EAAP,EAAmBrS,EAAMoC,OAAzB,MAEAjD,KAAKk/E,MAAM6b,OAAS7nF,EAAI,QAAc,K,yBAGxC,SAAYrS,GACVb,KAAKk/E,MAAM6b,OAAS,Q,mCA7EKr4E,G,EACpBpH,QAAU,CAAC,2BAA4B,sB,0mDCE9C,SAAO6tG,GACAnpH,KAAKu1H,eAEVv1H,KAAKu1H,cAAc5gD,W,yBAGrB,WACE,OAAOpwE,SAAS01E,cAAcj6E,KAAK0tF,oB,mCAVVhrE,G,EACpBpgB,OAAS,CAAE8I,SAAUgX,S,0mDCM5B,WACMvhB,MAAM2G,cAAc3B,aAAa,QAAU7F,KAAK08H,eAClD18H,KAAKwpH,aAAaloD,UAAUqT,OAAO30E,KAAK28H,kBAExC38H,KAAKwpH,aAAaloD,UAAU7gE,IAAIT,KAAK28H,uB,mCAXdj6G,G,EACpBpH,QAAU,CAAE,U,EACZhZ,OAAS,CACds6H,YAAax6G,OACby6G,UAAWz6G,S,knDCCb,SAAe+mG,GACb9qG,QAAQgC,IAAIrgB,KAAK0tF,eACjBrvE,QAAQgC,IAAIrgB,KAAKu1H,eACZv1H,KAAKu1H,gBAEVl3G,QAAQgC,IAAIrgB,KAAKu1H,eAEjBv1H,KAAKu1H,cAAcuH,oB,yBAGrB,WACE,OAAO98H,KAAKiE,QAAQg2E,cAAcj6E,KAAK0tF,oB,mCAhBdhrE,G,EACpBpgB,OAAS,CACd8I,SAAUgX,S,koFCEZ,WAAW,IAAD,OACRpiB,KAAKi5F,cAAc92F,SAAQ,SAAA0nE,GACzB,EAAKkzD,qBAAqB,EAAKC,YAAYnzD,S,oBAI/C,SAAOhpE,GAAQ,IAAD,OACNo9C,EAAOp9C,EAAMqD,OAAOnH,MAAMg4B,oBAAoB5lB,OAChDuW,GAAQ,EAEZ1lB,KAAKi5F,cAAc92F,SAAQ,SAAA0nE,GACZ,KAAT5rB,IAAuE,IAAxD,EAAKg/E,SAASpzD,GAAI90C,oBAAoBwyD,OAAOtpC,IAC9D4rB,EAAGvI,UAAUqT,OAAO,EAAKikB,mBACzBlzE,GAAQ,GAERmkD,EAAGvI,UAAU7gE,IAAI,EAAKm4F,sBAItB54F,KAAKk9H,uBAELl9H,KAAKm9H,kBAAkBznE,MAAMwkB,QAD3Bx0D,EACqC,OAEA,U,mCAK7C,SAAsB7kB,GACpB,IAAMu8H,EAAWv8H,EAAMqD,OACvBlE,KAAK+8H,qBAAqBK,K,uBAG5B,SAAUv8H,GAER,IAAQw8H,EAAkBx8H,EAAMqD,OAAO6T,cAAcy0C,QAA7C6wE,cACFxzD,EAAK7pE,KAAKi5F,cAAcniF,MAAK,SAAA+yD,GAAE,OAAIA,EAAGrd,QAAQ6wE,gBAAkBA,KAClExzD,GACF7pE,KAAKg9H,YAAYnzD,GAAI+vB,U,iCAKzB,SAAoBwH,GAAU,IAAD,OAErBk8B,EADkBt9H,KAAKi5F,cAAc3xF,QAAO,SAAAuiE,GAAE,OAAI,EAAKmzD,YAAYnzD,GAAIu3B,WAC5CviG,OAE/BmB,KAAKu9H,oBAAoBz7D,UADV,IAAbw7D,EACmCt9H,KAAKu9H,oBAAoB/wE,QAAQgxE,yBAChD,IAAbF,EAC4Bt9H,KAAKu9H,oBAAoB/wE,QAAQixE,wBAEjCz9H,KAAKu9H,oBAAoB/wE,QAAQkxE,0BAA0Bj5H,QAAQ,WAAY64H,GAIpHt9H,KAAK29H,6BAA6BjoE,MAAMwkB,QADtCojD,EAAW,EACqC,OAEA,S,+BAItD,SAAkBF,GAChB,IAAQh8B,EAAYg8B,EAAZh8B,QACAi8B,EAAkBr9H,KAAK49H,WAAWR,GAAU5wE,QAA5C6wE,cACR,GAAIj8B,EAAS,CACX,IAAMj3F,EAAOnK,KAAK69H,0BAA0B5uH,QAAQmpF,WAAU,GACxD58B,EAAMrxD,EAAKy+E,kBACjBptB,EAAIhP,QAAQ6wE,cAAgBA,EAEX7hE,EAAIye,cAAc,SAC1BnY,UAAY9hE,KAAKi9H,SAASj9H,KAAK49H,WAAWR,IAEnDp9H,KAAK89H,aAAal8D,YAAYz3D,OACzB,CAAC,IAAD,MAEmBnK,KAAK+9H,qBAFxB,IACLC,EACA,2BAAkD,CAAC,IAAD,cACrBrsD,UADqB,IAChD,2BAAqC,CAAC,IAA3B9H,EAA0B,QACnC,GAAIA,EAAGrd,QAAQ6wE,gBAAkBA,EAAe,CAC9CxzD,EAAG8K,SACH,MAAMqpD,IAJsC,gCAF7C,+BAYPh+H,KAAKi+H,wB,kCAGP,SAAqBb,GAGnB,IAAQh8B,EAAmBg8B,EAAnBh8B,QAASrkG,EAAUqgI,EAAVrgI,MACjBiD,KAAKk+H,aAAajkD,cAAlB,wBAAiDl9E,EAAjD,OAA4DohI,SAAW/8B,EAEnEphG,KAAKo+H,wBACPp+H,KAAKq+H,oBAAoBjB,EAASh8B,SAEhCphG,KAAKs+H,uBACPt+H,KAAKu+H,kBAAkBnB,K,iCAI3B,WAAuB,IAAD,OAKpB,GAJAp9H,KAAKw+H,WAAW9oE,MAAMwkB,QAAU,OAChCl6E,KAAKy+H,WAAW/oE,MAAMwkB,QAAU,OAChCl6E,KAAK89H,aAAapoE,MAAMwkB,QAAU,OAEM,IAApCl6E,KAAK+9H,oBAAoBl/H,OAA7B,CAIA,IAAM6/H,EAAO1+H,KAAK+9H,oBAAoBx7H,QAAO,SAACo8H,EAAK3yE,GAAY,IAAD,MAC3CA,EAAO2lB,UADoC,IAC5D,2BAAkC,CAAC,IAAxB9H,EAAuB,QAChC80D,EAAI//H,KAAKirE,IAFiD,8BAI5D,OAAO80D,IACN,IAEC1oF,EAAQ,EACR2oF,EAAU,EAEV5+H,KAAK6+H,WACP5oF,EAAQ,GAGVj2C,KAAKw+H,WAAW9oE,MAAMwkB,QAAU,OAE5BwkD,EAAK7/H,OAASo3C,IAChBj2C,KAAKy+H,WAAW/oE,MAAMwkB,QAAU,OAChC0kD,EAAU,GAGRF,EAAK7/H,OAAkB,EAARo3C,IACjBj2C,KAAK89H,aAAapoE,MAAMwkB,QAAU,OAClC0kD,EAAU,GAGZ,IAAME,EAAcF,EAAU,EAE9B,GAAgB,IAAZA,EACFF,EAAKv8H,SAAQ,SAAA0nE,GAAE,OAAI,EAAK20D,WAAW58D,YAAYiI,UAC1C,CACL,IAAMk1D,EAAcpwH,KAAKkhB,MAAM6uG,EAAK7/H,OAAS+/H,GAEvCI,EAA8BrwH,KAAKkhB,OAAO6uG,EAAK7/H,OAASkgI,GAAe,GACvEE,EAAgBH,EAAeC,EAAcC,EAA+BN,EAAK7/H,OACvF6/H,EAAKv8H,SAAQ,SAAC0nE,EAAI/tE,GACZA,EAAIijI,EACN,EAAKP,WAAW58D,YAAYiI,GACnB/tE,EAAImjI,EACb,EAAKR,WAAW78D,YAAYiI,GAE5B,EAAKi0D,aAAal8D,YAAYiI,U,sBAMtC,SAASA,GACP,OAAOA,EAAGrd,QAAQ0yE,mB,yBAGpB,SAAYr1D,GACV,OAAOA,EAAGoQ,cAAc,4B,wBAG1B,SAAWmjD,GACT,OAAOA,EAASrlH,gB,sBAGlB,WACE,OAAO/X,KAAK+9H,oBAAoB,K,sBAGlC,WACE,OAAO/9H,KAAK+9H,oBAAoB,K,wBAGlC,WACE,OAAO/9H,KAAK+9H,oBAAoB,K,oBAGlC,WACE,OAAO/9H,KAAKiE,QAAQkmE,aAAe,S,mCA3LVznD,G,EACpBpH,QAAU,CAAC,SAAU,gBAAiB,yBAA0B,sBAAuB,eAAgB,cAAe,U,EACtHqB,QAAU,CAAC,iB,iqDCsBlBwiH,wBAA0B,SAACt+H,GACzB,MAAoDA,EAAMoC,OAAlDm8H,EAAR,EAAQA,oBAAqBrxC,EAA7B,EAA6BA,UAAWsxC,EAAxC,EAAwCA,QAExC,EAAKC,kBAAkBF,EAAqBrxC,EAAWsxC,I,sCArBzD,WAAW,IAAD,OACRr/H,KAAKu/H,yBAA2Bv/H,KAAKm/H,wBAAwB7hI,KAAK0C,MAClEsE,OAAOlE,iBAAiB,yBAA0BJ,KAAKu/H,0BACvDv/H,KAAKs/H,kBACH,CAAEt3H,MAAO,MACT,SAAAw3H,GACE,EAAKC,mBAAmBD,MAE1B,SAAAz8H,GAAK,OAAIsb,QAAQtb,MAAM,sCAAuCA,Q,wBAIlE,WACEuB,OAAOhE,oBAAoB,yBAA0BN,KAAKu/H,4B,+BAW5D,SAAkBH,EAAqBrxC,EAAWsxC,GAC1C,kBAAmBj2C,UAKzBA,UAAUs2C,cAAc9/G,SAAS,qBAAsBw/G,GACpDxnC,MAAK,SAAC4nC,GACLzxC,EAAUyxC,MAFd,OAIS,SAACz8H,GACNs8H,EAAQt8H,MATVsb,QAAQtb,MAAM,kC,gCAgBlB,SAAmBy8H,GACjB,OAAgD,IAA5Cx/H,KAAK2/H,mCACAlgH,QAAQmgH,IAAI,CACjB5/H,KAAK6/H,+BAA+BL,GACpCx/H,KAAK8/H,uBAAuBN,KAGvB//G,QAAQC,Y,4CAInB,SAA+B8/G,GAAe,IAAD,OAC3C,OAAOO,aAAaC,oBACjBpoC,MAAK,SAAAqoC,GACJ,MAAmB,YAAfA,GACF5hH,QAAQtb,MAAM,kCACP0c,QAAQk7C,OAAO,mCAEjByuB,UAAUs2C,cAAcQ,SAEhCtoC,MAAK,SAAA4nC,GAAY,OAAIA,EAAaW,YAAYC,qBAC9CxoC,MAAK,SAAApf,GACJ,IAAM6nD,EAAqB/7H,OAAOwzE,aAAa7L,QAAQ,2CACvD,OAAIuM,GAAgB6nD,EACX5gH,QAAQC,QAAQ84D,GAElB,EAAK8nD,6BAA6Bd,MAdtC,OAgBE,SAAAz8H,GAAK,OAAIsb,QAAQtb,MAAM,4BAA6BA,Q,0CAG/D,SAA6By8H,GAAe,IAAD,OACzC,OAAOA,EAAaW,YAAYxnD,UAAU,CACxC4nD,iBAAiB,EACjBC,qBAAsBl8H,OAAOq1D,QAAQ8mE,sBAAsBzgI,KAAK0gI,uBAEjE9oC,MAAK,SAAApf,GACJ,EAAKmoD,yBAAyBnoD,MALzB,OAOA,SAAAz1E,GAAK,OAAIsb,QAAQtb,MAAM,mCAAoCA,Q,sCAGpE,SAAyBy1E,GACvB,IAAM/hE,EAAOvQ,KAAKuc,UAAU+1D,GACtBooD,EAAYr8H,SAAS01E,cAAc,2BAA6BhrE,QAKtE,OAAOzD,MAAM,4BAA6B,CAAE1E,OAAQ,OAAQ+5H,QAJ5C,CACd,eAAgB,mBAChB,eAAgBD,GAEmDnqH,SAClEmhF,MAAK,SAAAC,GACAA,EAASC,GACXxzF,OAAOwzE,aAAaG,QAAQ,2CAA2C,GAEvE55D,QAAQtb,MAAM,oDAAqD80F,EAASngC,a,oCAKpF,SAAuB8nE,GAAe,IAAD,OACnC,MAAM,gBAAiBl7H,OAIhB8kF,UAAUs2C,cAAcQ,MAC5BtoC,MAAK,SAAA4nC,GAAY,OAAIA,EAAasB,KAAKC,aACvCnpC,MAAK,SAAA8mC,GACJ,OAAIA,EAAKztH,SAAS,cACTwO,QAAQC,UAEV,EAAKshH,aAAaxB,MANtB,OAQE,SAAAz8H,GAAK,OAAIsb,QAAQtb,MAAM,uCAAwCA,MAX/D0c,QAAQk7C,OAAO,+B,0BAc1B,SAAa6kE,GACX,OAAOA,EAAasB,KAAKlhH,SAAS,cAC/Bg4E,MAAK,WACJv5E,QAAQgC,IAAI,iCAFT,OAIE,SAAAtd,GAAK,OAAIsb,QAAQtb,MAAM,uCAAwCA,W,mCAhI/C2f,G,EACpBpgB,OAAS,CACd2+H,eAAgB7+G,OAChB8+G,8BAA+Bh/G,U,unDCIjC,WACEliB,KAAKmhI,uB,gCAGP,WACE,GAAI78H,OAAO6rH,SAAS1vC,KAAKxvE,SAAS,aAC9BjR,KAAKohI,YAAephI,KAAKqhI,uBAA7B,CAEA,IAAMC,EAAU,IAAIC,IAAIvhI,KAAKohI,WAAW76H,OAAQuvD,EAAOq6D,SAASqR,QAC1DC,EAAYzhI,KAAKqhI,uBAEvB,IAAK,IAAMhkI,KAAOokI,EAChBH,EAAQI,aAAaC,OAAOtkI,EAAKokI,EAAUpkI,IAG7C2C,KAAKohI,WAAW76H,OAAS+6H,EAAQpiI,iB,mCAtBRwjB,G,EACpBpgB,OAAS,CAAEs/H,kBAAmBplI,Q,EAE9B8e,QAAU,CACf,S,kmDCFEumH,E,iWAOJ,WACE7hI,KAAKiE,QAAQ7D,iBAAiB,mBAAoBJ,KAAK8hI,MAAMxkI,KAAK0C,OAClEA,KAAKstD,cAAgBttD,KAAK+hI,iBAAiB/hI,KAAKiE,SAChDjE,KAAKgiI,qBACLhiI,KAAKiiI,+B,wBAGP,WACEjiI,KAAKiE,QAAQ3D,oBAAoB,mBAAoBN,KAAK8hI,MAAMxkI,KAAK0C,S,iBAGvE,SAAIa,GACFA,EAAMkD,iBACNlD,EAAME,2BAENf,KAAKstD,cAAcf,Q,+BAGrB,SAAkB1rD,GAChBb,KAAKstD,cAAcf,Q,2BAMrB,SAAc1rD,GAAQ,IAAD,OACnBA,EAAME,2BAEN,IAAMkD,EAAUpD,EAAMqD,QAAUrD,EAAM2G,cACtCxH,KAAKkiI,yBAAyBj+H,GAAS,WACrC,IAAMk+H,EAActhI,EAAM0G,QAAU,GACpC,EAAK+lD,cAAc38C,M,+VAAnB,EAA2B88C,eAAe,GAAS00E,S,mBAIvD,SAAMthI,GACJA,EAAMkD,iBAGN/D,KAAKoiI,aAAc,EACnBpiI,KAAKstD,cAAc38C,U,mBAGrB,SAAM9P,GACJA,EAAMkD,iBAEN/D,KAAKqiI,aAAariI,KAAKiE,W,sCAMzB,SAAyBA,EAASq+H,GACK,WAAjCr+H,EAAQ4B,aAAa,QACvB7F,KAAKuiI,sBAAsBt+H,EAAQ2Y,QAAQ,QAAS0lH,GACV,WAAjCr+H,EAAQ4B,aAAa,SAAmD,SAA3B5B,EAAQuoD,QAAQg2E,OACtExiI,KAAKuiI,sBAAsBt+H,EAASq+H,GAEpCA,M,mCAIJ,SAAsBr+H,EAASq+H,GACxBr+H,GAELA,EAAQ7D,iBAAiB,gBAAgB,SAACS,GACxCyhI,MACC,CAAEz1C,MAAM,M,0BAIb,SAAanE,GACX,GAAKA,EAAL,CAEA,IAAM+5C,EAAaziI,KAAK0iI,mBAAmBh6C,GACvC+5C,GACFA,EAAW/jD,MAAM,CACfz7E,OAAQ,CAAE0/H,qBAAsB3iI,KAAK2iI,2B,gCAK3C,SAAmBj6C,GACjB,IAAI+5C,EAAaziI,KAAK6B,YAAYyV,qCAAqCoxE,EAAQ,UAK/E,OAJK+5C,IAEHA,EAAaziI,KAAK6B,YAAYyV,qCAAqCoxE,EAAQ,iBAEtE+5C,I,8BAGT,SAAiB/5C,GACf,IAAIk6C,EAAkBl6C,EAAOl8B,QAAQq2E,qBAIrC,OAHKD,IACHA,EAAkBl6C,EAAOl8B,QAAQs2E,2BAE5B71E,IAAasqB,QAAQqrD,K,gCAG9B,WACM5iI,KAAK+iI,6BACP/iI,KAAKgjI,oBAAsBhjI,KAAKijI,yBAAyBh0H,QAAQ25E,kBAAkBwP,WAAU,GAC7Fp4F,KAAKkjI,mBAAqBljI,KAAKmjI,wBAAwBl0H,QAAQ25E,kBAAkBwP,WAAU,GAC3Fp4F,KAAKojI,wBAAwBxhE,YAAY5hE,KAAKgjI,qBAC9ChjI,KAAKojI,wBAAwBxhE,YAAY5hE,KAAKkjI,uB,wCAIlD,WAA8B,IAAD,OACrBG,EAAmBnqE,UAAiBoqE,kBAC1CD,EAAiBhqE,mBAAoB,EAGrCgqE,EAAiBvK,GAAG,CAAC,OAAQ,UAAU,SAACyK,GAClCA,GACF,EAAKC,4BAITH,EAAiBvK,GAAG,CAAC,SAAU,QAAS,SAAS,SAACyK,GAC5CA,GACF,EAAKE,+B,oCAKX,WACOzjI,KAAK+iI,6BAIV/iI,KAAK0jI,oBACL1jI,KAAKkjI,mBAAmBxtE,MAAMwkB,QAAU,M,qCAG1C,WACOl6E,KAAK+iI,6BAIV/iI,KAAK0jI,oBACL1jI,KAAKgjI,oBAAoBttE,MAAMwkB,QAAU,M,+BAG3C,WACEl6E,KAAKojI,wBAAwBj4H,iBAAiB,YAAYhJ,SAAQ,SAACqD,GACjEA,EAAOkwD,MAAMwkB,QAAU,Y,gCAI3B,WACE,OAAIl6E,KAAKoiI,YACA,wBAEA,uB,8BAjKO1/G,KAAdm/G,EACGvmH,QAAU,CACf,qBACA,oBACA,qBAkKWumH,a,mvCCrKT8B,E,oWAGJ,WACE3jI,KAAK4jI,kBAAoB5jI,KAAK6jI,aAAavmI,KAAK0C,Q,qBAGlD,WACEsE,OAAOlE,iBAAiB,6BAA8BJ,KAAK4jI,mBAC3Dt/H,OAAOlE,iBAAiB,mCAAoCJ,KAAK4jI,qB,wBAGnE,WACEt/H,OAAOhE,oBAAoB,6BAA8BN,KAAK4jI,mBAC9Dt/H,OAAOhE,oBAAoB,mCAAoCN,KAAK4jI,qB,0BAGtE,SAAa/iI,GACX,IAAMijI,EAAgBjjI,EAAMoC,OAAOoqF,aACnC,GAAKy2C,EAAL,CAEA,IAAM3sD,EAAen3E,KAAK+hI,iBAAiB+B,GAC3C9jI,KAAK+jI,uBAAuBD,EAAe3sD,GAC3CA,EAAav4E,KAAKklI,M,oCAGpB,SAAuBp7C,EAAQvR,GAC7B,IAAI6sD,EAAkBt7C,EAAOl8B,QAAQzlD,YAAc,GAG/Ci9H,EAAgB50H,MAAM,KAAK6B,SAAS,WAExC+yH,EAAe,UAAMA,EAAN,UACft7C,EAAOl8B,QAAQy3E,qBAAuB9sD,EAAat4E,OAAS,EAC5D6pF,EAAOl8B,QAAQzlD,WAAai9H,K,8BAG9B,SAAiBt7C,GACf,IAAIk6C,EAAkBl6C,EAAOl8B,QAAQq2E,qBAIrC,OAHKD,IACHA,EAAkBl6C,EAAOl8B,QAAQs2E,2BAE5B71E,IAAasqB,QAAQqrD,Q,8BA1CPlgH,KAAnBihH,EACGroH,QAAU,CAAC,UA6CLqoH,a,+wCCjDf,I,mWAKE,WAIM3jI,KAAKkkI,4BACPlkI,KAAKmkI,uBAAuBpnI,MAVI,U,8BAET2lB,K,EACpBpH,QAAU,CAAE,qB,+wCCHrB,I,yZAME8wE,SAAW,CACT5oF,IAAK,SAACU,EAAQzG,EAAUV,GAatB,OAZAmH,EAAOzG,GAAYV,EAEF,UAAbU,IACF,EAAK86F,YAAYx7F,MAAQ,EAAKmiF,MAAMniF,MACpC,EAAKw7F,YAAYr1E,cAAc,IAAIgyC,MAAM,WAEzC,EAAKkvE,gBAED,EAAKC,cAAc,EAAKC,wBACxB,EAAKC,cAAc,EAAKC,0BAGvB,I,yCAIX,WACExkI,KAAKk/E,MAAQ,IAAI6N,MAAM,GAAI/sF,KAAKosF,UAChCpsF,KAAKykI,UACLzkI,KAAK0kI,W,oBAGP,SAAO7jI,GACLb,KAAKk/E,MAAMniF,MAAQiD,KAAKk/E,MAAMylD,gB,sBAGhC,SAAS9jI,GACHA,GAAOA,EAAMkD,iBAEb/D,KAAKmvH,YACLnvH,KAAKqkI,eAETrkI,KAAK4kI,kBACL5kI,KAAK0kI,Y,sBAGP,SAAS7jI,GACHA,GAAOA,EAAMkD,iBAEb/D,KAAKmvH,YACLnvH,KAAKukI,eAETvkI,KAAK6kI,kBACL7kI,KAAK0kI,Y,qBAGP,SAAQ7jI,GACN,IAAM8jI,EAAgB3kI,KAAK8kI,sBAEL3/H,IAAlBw/H,IAA6B3kI,KAAKk/E,MAAMylD,cAAgBA,GAExD3kI,KAAKukI,eAAcvkI,KAAKk/E,MAAMylD,cAAgB3kI,KAAK4O,KACnD5O,KAAKqkI,eAAcrkI,KAAKk/E,MAAMylD,cAAgB3kI,KAAKu1B,O,kBAGzD,SAAK10B,GACH,OAAQA,EAAM44F,SACZ,KAjEQ,GAkEN54F,EAAMkD,iBAEN/D,KAAKykI,UACLzkI,KAAK+kI,WAEL,MACF,KAvEU,GAwERlkI,EAAMkD,iBAEN/D,KAAKykI,UACLzkI,KAAKglI,c,6BAMX,WACEhlI,KAAKk/E,MAAMylD,eAAiB3kI,KAAK6wE,O,6BAGnC,WACE7wE,KAAKk/E,MAAMylD,eAAiB3kI,KAAK6wE,O,2BAGnC,WACE,CAAC7wE,KAAKilI,eAAgBjlI,KAAKklI,gBAAgB/iI,SAAQ,SAAA0nE,GAAE,OAAIA,EAAGvI,UAAUqT,OAAO,yB,mCAG/E,WACE30E,KAAKilI,eAAe3jE,UAAU7gE,IAAI,sB,mCAGpC,WACET,KAAKklI,eAAe5jE,UAAU7gE,IAAI,sB,4BAGpC,WACE,OAAOT,KAAKq2B,SAASr2B,KAAKu4F,YAAYx7F,MAAO,K,gBAG/C,WACE,OAAOiD,KAAKq2B,SAASr2B,KAAKu4F,YAAY1yF,aAAa,QAAS,K,eAG9D,WACE,OAAO7F,KAAKq2B,SAASr2B,KAAKu4F,YAAY1yF,aAAa,OAAQ,Q,eAG7D,WACE,OAAO7F,KAAKq2B,SAASr2B,KAAKu4F,YAAY1yF,aAAa,OAAQ,Q,wBAG7D,WACE,OAAO7F,KAAKu1B,KAAOv1B,KAAKmlI,mBAAqBnlI,KAAKu1B,M,wBAGpD,WACE,OAAOv1B,KAAK4O,KAAO5O,KAAKolI,mBAAqBplI,KAAK4O,M,8BAGpD,WACE,OAAO5O,KAAKk/E,MAAMylD,cAAgB3kI,KAAK6wE,O,8BAGzC,WACE,OAAO7wE,KAAKk/E,MAAMylD,cAAgB3kI,KAAK6wE,O,sBAGzC,WACE,OAAO7wE,KAAKiE,QAAQq9D,UAAUv5D,SAAS,6B,uIAGzC,SAASonE,EAAer8D,GAAe,IAAD,EACpC,GAAqB,IAAjBq8D,EAAJ,CAEA,IAAMpyE,EAAQs5B,SAAQ,OAAC84C,QAAD,IAACA,GAAD,UAACA,EAAejkE,MAAM,iBAAtB,aAAC,EAAgCvH,KAAK,KAC5D,OAAOwe,OAAO8E,MAAMlqB,GAAS+V,EAAe/V,U,8BA3InB2lB,K,EACpBpH,QAAU,CAAC,QAAS,WAAY,a,2mDCGvC,WAAW,IAAD,OAGR68C,YAAW,kBAAM,EAAKktE,aAAY,O,sBAGpC,WACyB,OAAnBrlI,KAAKslI,UAILtlI,KAAKulI,mBAAmBvlI,KAAKslI,YAActlI,KAAKwlI,gBAClDxlI,KAAKylI,UAELzlI,KAAK0lI,UANLrnH,QAAQgC,IAAI,qC,qBAUhB,WACErgB,KAAK2lI,UAAUjwE,MAAMwkB,QAAU,S,qBAGjC,WACEl6E,KAAK2lI,UAAUjwE,MAAMwkB,QAAU,U,qBAGjC,WACE,OAAO31E,SAAS01E,cAAcj6E,KAAK4lI,wB,gCAGrC,SAAmB/7D,GACjB,IAAI+C,EAAO/C,EAAGgD,wBACVg5D,EAAUj5D,EAAKnL,IACfqkE,EAAal5D,EAAK0tB,OAMtB,OAHiBurC,GAAW,GAAOC,GAAcxhI,OAAOo2F,c,2BAM1D,WACE,OAAO16F,KAAK+lI,oBAAsB/lI,KAAKgmI,qB,6BAGzC,WACE,OAAO1hI,OAAO2hI,WAAa,S,mCAtDFvjH,G,EACpBpH,QAAU,CAAC,O,EACXhZ,OAAS,CACd4jI,gBAAiB9jH,OACjB+jH,cAAejkH,U,2mDCIjB,WACMliB,KAAKomI,cACPpmI,KAAKs3D,OAEHt3D,KAAKqmI,qBACPrmI,KAAKsmI,kB,oBAIT,WACMtmI,KAAK2uF,QACP3uF,KAAKw3D,OAELx3D,KAAKs3D,S,kBAIT,WACEt3D,KAAKumI,aAAajlE,UAAUqT,OAAO30E,KAAKwmI,a,kBAG1C,WACExmI,KAAKumI,aAAajlE,UAAU7gE,IAAIT,KAAKwmI,a,2BAGvC,WACExmI,KAAKwF,OAAO0sH,UAAW,EACvBlyH,KAAKwF,OAAO87D,UAAU7gE,IAAI,sB,0BAG5B,WACET,KAAKwF,OAAO0sH,UAAW,EACvBlyH,KAAKwF,OAAO87D,UAAUqT,OAAO,sB,mBAG/B,WACE,OAAQ30E,KAAKumI,aAAajlE,UAAUv5D,SAAS/H,KAAKwmI,a,kBAGpD,WACE,OAAOxmI,KAAKiE,QAAQg2E,cAAc,gB,mCAhDTv3D,G,EACpBpH,QAAU,CAAC,SAAU,U,EACrBqB,QAAU,CAAC,Q,EACXra,OAAS,CACdqsF,QAASzsE,QACTukH,eAAgBvkH,U,iqDCAlBkqE,SAAW,CACT5oF,IAAK,SAACU,EAAQzG,EAAUV,GAKtB,OAJAmH,EAAOzG,GAAYV,EAEnB,EAAKqvF,SAASs6C,qBAAqBjpI,IAE5B,GAETipI,qBAAsB,SAACjpI,GACJ,2BAAbA,IAEJ,EAAKkpI,eAAexkI,SAAQ,SAACw2D,GAAD,OAAaA,EAAQ2I,UAAUqT,OAAO,EAAKiyD,0BACvE,EAAKC,WAAW1kI,SAAQ,SAACqc,GAAD,OAASA,EAAI8iD,UAAUqT,OAAO,EAAKmyD,sBAE3D,EAAKC,sBAAsBzlE,UAAU7gE,IAAI,EAAKmmI,uBAC9C,EAAKI,kBAAkB1lE,UAAU7gE,IAAI,EAAKqmI,sB,yCAI9C,WACE9mI,KAAKinI,eAAiBjnI,KAAKknI,kBAAkB5pI,KAAK0C,MAClDA,KAAKk/E,MAAQ,IAAI6N,MAAM,GAAI/sF,KAAKosF,UAC5BpsF,KAAKmnI,yBACPnnI,KAAKk/E,MAAMkoD,uBAAyBpnI,KAAKqnI,uB,qBAI7C,WACE/iI,OAAOlE,iBAAiB,aAAcJ,KAAKinI,gBAE3CjnI,KAAKknI,sB,wBAGP,WACE5iI,OAAOhE,oBAAoB,aAAcN,KAAKinI,kB,kBAGhD,SAAKpmI,GACHA,EAAMkD,iBACN,IAEMujI,EAFczmI,EAAM2G,cAAc3B,aAAa,QAErBuJ,MAAM,KAAK,GACvCk4H,IAAahjI,OAAO6rH,SAASxkC,KAAO27C,K,+BAG1C,SAAkBzmI,GAChB,IAAMwrC,EAAS/nC,OAAO6rH,SAASxkC,KAC1Bt/C,GAEDrsC,KAAKunI,eAAel7F,IACtBrsC,KAAKwnI,UAAUn7F,K,4BAInB,SAAe7tB,GACb,QAAKA,GAEExgB,MAAMqB,KAAKW,KAAK6mI,YAAY96H,MAAK,SAAA07H,GACtC,OAAOA,EAAW97C,KAAK16E,SAASuN,Q,uBAIpC,SAAUA,GACRxe,KAAKk/E,MAAMkoD,uBAAyB5oH,I,iCAGtC,WAA6B,IAAD,OAC1B,OAAOxe,KAAK2mI,eAAe7vH,MAAK,SAAC+yD,GAAD,OAAQA,EAAG3gE,QAAQ,EAAKg2E,MAAMkoD,6B,6BAGhE,WAAyB,IAAD,OACtB,OAAOpnI,KAAK6mI,WAAW/vH,MAAK,SAAC+yD,GAAD,OAAQA,EAAG3gE,QAAH,kBAAsB,EAAKg2E,MAAMkoD,uBAAjC,Y,iCAGtC,WACE,OAAIpnI,KAAK0nI,sBACA1nI,KAAK2nI,mBAEL,gB,6BAIX,WACE,OAAI3nI,KAAK4nI,kBACA5nI,KAAK6nI,eAEL,yB,mCA3FgBnlH,G,EACpBpgB,OAAS,CAAEwlI,eAAgB1lH,Q,EAC3B9G,QAAU,CAAC,MAAO,W,EAClBqB,QAAU,CAAC,gBAAiB,c,8mDCCnC,SAAW9b,GACTA,EAAMkD,iBAEF/D,KAAK+nI,iBAAmB/nI,KAAKgoI,kBAC/BhoI,KAAKioI,aAAa3mE,UAAU7gE,IAAIT,KAAKkoI,iBACrCloI,KAAKmoI,aAAa7mE,UAAUqT,OAAO30E,KAAKooI,oB,wBAI5C,SAAWvnI,GACTA,EAAMkD,iBAEF/D,KAAK+nI,iBAAmB/nI,KAAKgoI,kBAC/BhoI,KAAKioI,aAAa3mE,UAAUqT,OAAO30E,KAAKkoI,iBACxCloI,KAAKmoI,aAAa7mE,UAAU7gE,IAAIT,KAAKooI,uB,mCAlBd1lH,G,EACpBpH,QAAU,CAAC,SAAU,U,EACrBqB,QAAU,CAAC,aAAc,e,8mDCchC,WAAc,IAAD,OACN3c,KAAKqoI,wBACRroI,KAAKsoI,oBAAqB,GAGxBtoI,KAAKsoI,qBACPtoI,KAAKupG,eAAiB,IAAIC,gBAAe,kBAAM,EAAK++B,gB,qBAIxD,WACMvoI,KAAKsoI,oBACPtoI,KAAKupG,eAAe1gG,QAAQ7I,KAAKiE,SAGnCjE,KAAKuoI,Y,wBAGP,WACMvoI,KAAKsoI,oBACPtoI,KAAKupG,eAAei/B,UAAUxoI,KAAKiE,W,qBAIvC,WAEE,IAAMiN,EAAU,CACdu3H,UAAWzoI,KAAK0oI,eAChBC,WAAY3oI,KAAK4oI,gBACjBC,UAAW7oI,KAAK8oI,eAChBC,iBAAiB/oI,KAAKgpI,yBAA0BhpI,KAAKipI,qBACrDC,YAAalpI,KAAKmpI,iBAClBC,YAAappI,KAAKqpI,iBAClBC,WAAWtpI,KAAKupI,mBAAoBvpI,KAAKwpI,eACzCC,UAAWzpI,KAAK0pI,eAChBC,qBAAsB3pI,KAAK4pI,2BAG7B5pI,KAAK6pI,QAAQ7pI,KAAKiE,QAASiN,GAC3BlR,KAAK8pI,yB,qBAKP,SAAQC,EAAK74H,GACNA,IAASA,EAAU,IAExB,IAAIm9D,EAAW,GACf,IAAK,IAAIhxE,KAAO2C,KAAKgqI,gBACf94H,EAAQ7T,GACVgxE,EAAShxE,GAAO6T,EAAQ7T,GAExBgxE,EAAShxE,GAAO2C,KAAKgqI,gBAAgB3sI,GAKd,oBAAhB0sI,EAAIjhG,UACbihG,EAAMA,EAAIjhG,WAIZ,IAAImhG,EAASztI,OAAOkB,UAAUwB,SAASjD,KAAK8tI,GAC7B,mBAAXE,GAA0C,sBAAXA,GACtB,4BAAXA,IACAF,EAAM,CAACA,IAIT,IAAK,IAAIjuI,EAAI,EAAGA,EAAIiuI,EAAIlrI,OAAQ/C,IAC9BkE,KAAKkqI,YAAYH,EAAIjuI,GAAIuyE,K,yBAS7B,SAAYxE,EAAIwE,GACd,IAAKruE,KAAKmqI,UAAUtgE,KAASwE,EAASi7D,WAAaz/D,EAAGhkE,aAAa,cACjE,OAAO,EAQT,IAAIukI,EAAWC,EAAgBC,EAAcC,EACzCh3C,EAAKE,EAAKD,EAMd,GAXKnlB,EAASi7D,WACZz/D,EAAGrvD,aAAa,aAAc,GAMhC8vH,EAAezgE,EAAGlI,UAClB4oE,EAAgBvqI,KAAKimI,WAAWp8D,GAChCwgE,EAAiBrqI,KAAK06F,YAAY7wB,IAE7B0gE,IAAmBl8D,EAASo7D,YAAcY,EAC7C,MAAKh8D,EAASo7D,UACH,IAAIzjI,MAAM,4CAA8C6jE,EAAG4hD,UAAY,0BADnD,IAAIzlH,MAAM,uDAAyD6jE,EAAG4hD,UAAY,2BAKvE,IAAxC6e,EAAav3G,QAAQ,gBACvBq3G,EAAY7lI,SAAS88D,cAAc,SACzBmpE,UAAY,aAGtBJ,EAAU10E,MAAV,QAA6B,eAC7B00E,EAAUzoE,UAAY2oE,EACtBzgE,EAAGlI,UAAY,GACfkI,EAAGjI,YAAYwoE,KAGfA,EAAYvgE,EAAGoQ,cAAc,mBAEzBj6E,KAAKyqI,SAASL,EAAW,sBAC3BA,EAAUI,UAAYJ,EAAUI,UAAU/lI,QAAQ,mBAAoB,IACtE2lI,EAAU10E,MAAV,OAA4B,GAC5BmU,EAAG2gE,UAAU/lI,QAAQ,uBAAwB,MAK7C4pE,EAASs6D,aACX9+D,EAAGnU,MAAM,cAAgB,SACzB00E,EAAU10E,MAAM,cAAgB,UAKlC,IAAImzE,EAAYx6D,EAASw6D,UACrBx6D,EAAS06D,kBAAoBF,GAC/BuB,EAAUv9D,wBAAwBrL,QAA0E,EAAhEnrC,SAAS/xB,OAAOkmE,iBAAiB4/D,GAAW,aAAc,MACtGvB,GAAY,GAITA,IACHh/D,EAAGnU,MAAM,eAAiB,UAG5B69B,EAAMllB,EAAS66D,YACf11C,EAAOnlB,EAAS+6D,YAGhB,IADA,IAAI/nI,EAAOkyF,EACJA,GAAOC,GAAM,CAClBC,EAAOD,EAAOD,GAAQ,EACtB62C,EAAU10E,MAAMg1E,SAAWj3C,EAAM,KACjC,IAAIk3C,EAA8BP,EAAUv9D,wBAE1C89D,EAA4B90E,OAAS00E,IACjCl8D,EAASo7D,WAAakB,EAA4BnpE,QAAU6oE,IAEhEhpI,EAAOoyF,EACPF,EAAME,EAAM,GAEZD,EAAOC,EAAM,EAOjB,GAFI22C,EAAU10E,MAAMg1E,UAAYrpI,EAAO,OAAM+oI,EAAU10E,MAAMg1E,SAAWrpI,EAAO,MAE3EgtE,EAASo6D,UAAW,CACtBzoI,KAAK4qI,gBACL,IAAIppE,EAAS4oE,EAAU7S,aACyB,WAA5CjzH,OAAOkmE,iBAAiBX,GAAxB,WACFA,EAAGnU,MAAH,SAAuB,YAEpB11D,KAAKyqI,SAASL,EAAW,sBAC5BA,EAAUI,UAAYJ,EAAUI,UAAY,qBAE9CJ,EAAU10E,MAAV,OAA4B8L,EAAS,KACjC6M,EAASs7D,uBAAyB3pI,KAAKyqI,SAAS5gE,EAAI,0BACtDA,EAAG2gE,UAAY3gE,EAAG2gE,UAAY,4B,yBAMpC,SAAY3gE,GACV,IAAInU,EAAQpxD,OAAOkmE,iBAAiBX,EAAI,MACxC,OAAOA,EAAGgD,wBAAwBrL,OAChCnrC,SAASq/B,EAAM+U,iBAAiB,eAAgB,IAChDp0C,SAASq/B,EAAM+U,iBAAiB,kBAAmB,M,wBAIvD,SAAWZ,GACT,IAAInU,EAAQpxD,OAAOkmE,iBAAiBX,EAAI,MACxC,OAAOA,EAAGgD,wBAAwBhX,MAChCx/B,SAASq/B,EAAM+U,iBAAiB,gBAAiB,IACjDp0C,SAASq/B,EAAM+U,iBAAiB,iBAAkB,M,uBAItD,SAAUluE,GACR,MACyB,kBAAhBuwD,YAA2BvwD,aAAauwD,YAC7CvwD,GAAkB,kBAANA,GAAwB,OAANA,GAA6B,IAAfA,EAAEkO,UAAwC,kBAAflO,EAAEsuI,W,sBAI/E,SAAS5mI,EAAS6mI,GAChB,OAAQ,IAAM7mI,EAAQumI,UAAY,KAAKz3G,QAAQ,IAAM+3G,EAAM,MAAQ,I,2BAIrE,WACE,IAAIvmI,SAASkjH,eAAe,qBAA5B,CACA,IAAI/xD,EAAQ,CACV,qBACA,sBACA,wCACA,gBACA,iBACA,2BACA,0BACA,IACA,yBACA,iBACA,IACA,2CACA,oBACA,KAAM/xD,KAAK,IACT8rE,EAAMlrE,SAAS88D,cAAc,SACjCoO,EAAIhmE,KAAO,WACXgmE,EAAI7F,GAAK,oBACT6F,EAAI9N,UAAYjM,EAChBnxD,SAASkS,KAAKmrD,YAAY6N,M,kCAG5B,WACE,IAAM5uE,EAAQ,IAAIq0D,MAAM,YACxBl1D,KAAKiE,QAAQif,cAAcriB,K,2BAI7B,WACE,MAAO,CACL4nI,WAAW,EACXE,YAAY,EACZE,WAAW,EACXE,iBAAiB,EACjBG,YAAa,EACbE,YAAa,GACbE,WAAW,EACXG,WAAW,EACXE,sBAAsB,Q,mCAtQCjnH,G,EACpBpgB,OAAS,CACdmmI,UAAWvmH,QACXymH,WAAYzmH,QACZ2mH,UAAW3mH,QACX6mH,gBAAiB7mH,QACjBgnH,YAAa/mH,OACbinH,YAAajnH,OACbmnH,UAAWpnH,QACXunH,UAAWvnH,QACXynH,qBAAsBznH,QACtB6oH,cAAe7oH,U,wmDCRjB,SAAKrhB,GACEb,KAAKu1H,eAEVv1H,KAAKu1H,cAAcj0D,UAAU7gE,IAAI,iB,qBAGnC,SAAQI,GACDb,KAAKu1H,eAEVv1H,KAAKu1H,cAAcj0D,UAAUqT,OAAO,iB,oBAGtC,SAAO9zE,GACLA,EAAMkD,iBAED/D,KAAKu1H,gBAENv1H,KAAKu1H,cAAcj0D,UAAUv5D,SAAS,eACxC/H,KAAKusF,QAAQ1rF,GAEbb,KAAKs3D,KAAKz2D,M,yBAId,WACE,OAAO0D,SAAS01E,cAAcj6E,KAAK0tF,oB,mCA9BVhrE,G,EACpBpgB,OAAS,CACd8I,SAAUgX,S,2mDCCZ,WACEpiB,KAAKurF,W,oBAGP,WAAU,IAAD,OACFvrF,KAAKgrI,cAEVhrI,KAAKgrI,aAAa7oI,SAAQ,SAAA0nE,GACxB,IAAMohE,EAAgB,EAAKC,iBAAiBrhE,GACxCA,EAAGu3B,QACL6pC,EAAc9oI,SAAQ,SAAAgpI,GAAG,OAAIA,EAAI7pE,UAAU7gE,IAAI,kBAE/CwqI,EAAc9oI,SAAQ,SAAAgpI,GAAG,OAAIA,EAAI7pE,UAAUqT,OAAO,uB,8BAKxD,SAAiB9K,GACf,OAAOtlE,SAAS4G,iBAAiB0+D,EAAGrd,QAAQy+E,oB,mCArBnBvoH,G,EACpBpH,QAAU,CAAC,U,iqDCIlB8wE,SAAW,CACT5oF,IAAK,SAACU,EAAQzG,EAAUV,GAetB,OAdAmH,EAAOzG,GAAYV,EAEF,gBAAbU,IAC6B,QAA3B,EAAKyhF,MAAMksD,aAAuB,EAAKh/C,SAASi/C,yBACrB,WAA3B,EAAKnsD,MAAMksD,aAA0B,EAAKh/C,SAASk/C,4BACxB,SAA3B,EAAKpsD,MAAMksD,aAAwB,EAAKh/C,SAASi/C,0BAGtC,kBAAb5tI,IAC+B,SAA7B,EAAKyhF,MAAMqsD,eAA0B,EAAKn/C,SAASo/C,cACtB,WAA7B,EAAKtsD,MAAMqsD,eAA4B,EAAKn/C,SAASq/C,gBACxB,UAA7B,EAAKvsD,MAAMqsD,eAA2B,EAAKn/C,SAASs/C,iBAGnD,GAGTL,uBAAwB,WACtB,EAAKpnI,QAAQq9D,UAAU78D,QAAQ,6BAA8B,2BAC7D,EAAKR,QAAQq9D,UAAU78D,QAAQ,+BAAgC,6BAC/D,EAAKR,QAAQq9D,UAAU78D,QAAQ,8BAA+B,4BAE9D,EAAKR,QAAQyxD,MAAM+L,IAAnB,UAA4B,EAAKkqE,eAAezgD,aAAe,EAAK0gD,UAApE,OAGFN,0BAA2B,WACzB,EAAKrnI,QAAQq9D,UAAU78D,QAAQ,0BAA2B,8BAC1D,EAAKR,QAAQq9D,UAAU78D,QAAQ,4BAA6B,gCAC5D,EAAKR,QAAQq9D,UAAU78D,QAAQ,2BAA4B,+BAE3D,EAAKR,QAAQyxD,MAAM+L,IAAnB,WAA6B,EAAKoqE,cAAgB,EAAKD,UAAvD,OAGFJ,YAAa,WACX,EAAKvnI,QAAQyxD,MAAMn0D,KAAnB,UAA6B,EAAKoqI,eAAeG,WAAjD,OAGFL,cAAe,WACb,IAGIM,EAHEC,EAAe,EAAK/nI,QAAQkmE,YAC5B8hE,EAAe,EAAKN,eAAexhE,YACnC+hE,EAAc,EAAKP,eAAeG,WAGtCC,EADEE,EAAeD,EACFE,EAAc71G,UAAU41G,EAAeD,GAAgB,GAEvDE,EAAc71G,UAAU21G,EAAeC,GAAgB,GAExE,EAAKhoI,QAAQyxD,MAAMn0D,KAAnB,UAA6BwqI,EAA7B,OAGFL,aAAc,WACZ,IAAMM,EAAe,EAAK/nI,QAAQkmE,YAC5B8hE,EAAe,EAAKN,eAAexhE,YAGrC4hE,EAFgB,EAAKJ,eAAeG,WAEPG,EAAeD,EAEhD,EAAK/nI,QAAQyxD,MAAMn0D,KAAnB,UAA6BwqI,EAA7B,Q,yCAIJ,WACE/rI,KAAKk/E,MAAQ,IAAI6N,MAAM,GAAI/sF,KAAKosF,Y,qBAGlC,WACEpsF,KAAKmsI,U,mBAGP,SAAMtrI,GACCb,KAAK2rI,gBAAmB3rI,KAAKosI,cAE9BpsI,KAAKqsI,cAAgBrsI,KAAKssI,wBAC5BtsI,KAAKk/E,MAAMksD,YAAc,MAChBprI,KAAKusI,iBAAmBvsI,KAAKssI,wBACtCtsI,KAAKk/E,MAAMksD,YAAc,SAEzBprI,KAAKk/E,MAAMksD,YAAc,OAG3BprI,KAAKk/E,MAAMqsD,cAAgBvrI,KAAKurI,iB,0BAGlC,WACE,QAAsBpmI,GAAlBnF,KAAKwsI,UAET,OAAOjoI,SAAS01E,cAAT,yCAAyDj6E,KAAKwsI,UAA9D,S,qBAGT,WACE,OAAOxsI,KAAKiE,QAAQ2lE,K,yBAGtB,WACE,OAAO5pE,KAAKiE,QAAQinF,e,4BAGtB,WACE,OAAO5mF,OAAOo2F,YAAc16F,KAAK2rI,eAAe9+D,wBAAwBytB,S,yBAG1E,WACE,OAAOt6F,KAAK2rI,eAAe9+D,wBAAwBpL,M,yBAGrD,WACE,OAAOzhE,KAAKiE,QAAQ4B,aAAa,SAASqF,MAAM,gCAAgC,K,qBAGlF,WACE,OAAO,K,mCAGT,WACE,OAAOlL,KAAK6rI,cAAgB,K,uBAG9B,WACE,OAA8B,GAAvB7rI,KAAKysI,oB,mCA7Ha/pH,G,EACpBpgB,OAAS,CACdoqI,UAAWxqH,U,unDCAb,WACEliB,KAAK2sI,Y,wBAGP,WACE3sI,KAAK4sI,kB,qBAGP,WAAW,IAAD,OACR5sI,KAAK6sI,WAAW7sI,KAAK8sI,WAClBl1C,MAAK,WAAQ,EAAKm1C,gBADrB,OAES,SAAChqI,GAAYsb,QAAQtb,MAAM,0BAA2BA,Q,wBAGjE,SAAW0yD,GACT,OAAO,IAAIh2C,SAAQ,SAACC,EAASi7C,GAC3B,IAAMqyE,EAASzoI,SAAS88D,cAAc,UACtC2rE,EAAOC,IAAMx3E,EACbu3E,EAAOE,OAAQ,EACfF,EAAOG,OAASztH,EAChBstH,EAAO7sH,QAAUw6C,EACjBp2D,SAASwb,KAAK6hD,YAAYorE,Q,wBAI9B,WACMl3E,EAAOs3E,YAA2D,oBAAtCt3E,EAAOs3E,WAAWC,gBAChDv3E,EAAOs3E,WAAWC,gBAAgBrtI,KAAKiE,SAEvCoa,QAAQtb,MAAM,4B,2BAIlB,WACE/C,KAAKiE,QAAQ09D,UAAY,K,qBAG3B,WACE,MAAO,uE,mCAxCkBj/C,I,0nDCC3B,WACE4qH,WAAWC,MAAMvtI,KAAKkT,KAAKvW,IAAI,e,kBAGjC,WACEkE,MAAMgD,uB,mCANmB6e,I,2mDCC3B,WAKE1iB,KAAKwtI,kBAAoBxtI,KAAKytI,cAAcnwI,KAAK0C,MAEjDsE,OAAOlE,iBAAiB,wBAAyBJ,KAAKwtI,qB,wBAGxD,WACElpI,OAAOhE,oBAAoB,wBAAyBN,KAAKwtI,qB,2BAG3D,SAAc3sI,GACZ,IAAM6sI,EAAW7sI,EAAMoC,OAAO5G,KACxB0xF,EAAYltF,EAAMoC,OAAO8qF,UAEzBxmF,EAAS,IAAIomI,gBACnBpmI,EAAOo6H,OAAO,0BAA2B+L,GAEzC79C,MAAMC,KAAK,CACTrmF,KALa,OAMbsmF,SAAU,OACVt6B,IAAK,gCACLviD,KAAM3L,EAAOrI,WACb81H,QAASjnC,S,mCA3BcrrE,I,4mDCG3B,SAAS7hB,GACFb,KAAKohI,WAAWwM,iBACnB/sI,EAAME,gC,mCALiB2hB,G,EACpBpH,QAAU,CAAC,S,4ECFpB,IAAIuyH,EAAqBvpI,OAAO2e,YAsBhC,SAAS6qH,EAAkB5pI,EAAQrD,GACjC,IAAIktI,EAAQ,KAAOltI,EAAM4I,KAAKxE,cAM9B,MAJ6B,oBAAlBf,EAAO6pI,IAChB7pI,EAAO6pI,GAAOltI,GAGTqD,EAAOgf,cAAcriB,GAiC9B,SAASmtI,EAAkBnkE,GACzB,KAAOA,GAAI,CACT,GAAqB,WAAjBA,EAAGokE,UACL,OAAOpkE,EAIPA,EADEA,EAAG9xD,cACA8xD,EAAG9xD,cACC8xD,EAAG9c,WACP8c,EAAG9c,WAAWmhF,KAEd,KAIT,OAAO,KAWT,SAASC,EAAStkE,GAEhB,KAAOA,GAAMA,EAAGukE,YAAcvkE,EAAGukE,WAAW91C,eAC1CzuB,EAAKA,EAAGukE,WAAW91C,cAGjBzuB,GAAMA,EAAG2zB,MAAQ3zB,IAAOtlE,SAASkS,MACnCozD,EAAG2zB,OAUP,SAAS6wC,EAAWC,EAAUnkI,GAC5B,IAAK,IAAIrO,EAAI,EAAGA,EAAIwyI,EAASzvI,SAAU/C,EACrC,GAAIwyI,EAASxyI,KAAOqO,EAClB,OAAO,EAIX,OAAO,EAQT,SAASokI,EAAmB1kE,GAC1B,SAAKA,IAAOA,EAAG5+D,aAAa,YAIuB,WAA5C4+D,EAAGhkE,aAAa,UAAUZ,cAQnC,SAASupI,EAA2BC,GAGlC,IACIj1E,EADO,CAAC,SAAU,QAAS,SAAU,SAAU,YAClC/2D,KAAI,SAAUonE,GAC7B,OAAOA,EAAK,sBAGdrQ,EAAM56D,KAAK,iDAEX,IAAIsF,EAASuqI,EAAYx0D,cAAczgB,EAAM71D,KAAK,OAElD,IAAKO,GAAU,iBAAkB4D,QAAQpK,UAMvC,IAFA,IAAIgxI,EAAQD,EAAYtjI,iBAAiB,KAEhCrP,EAAI,EAAGA,EAAI4yI,EAAM7vI,UACpB6vI,EAAM5yI,GAAG+U,SAAW69H,EAAM5yI,GAAGsyI,aAC/BlqI,EAASsqI,EAA2BE,EAAM5yI,GAAGsyI,cAFftyI,KAWpC,OAAOoI,EAST,SAAS0G,EAAY3G,GACnB,OAAOA,EAAQ2G,aAAerG,SAASkS,KAAK1O,SAAS9D,GAQvD,SAAS0qI,EAAkB9tI,GACzB,GAAIA,EAAM+tI,UACR,OAAO/tI,EAAM+tI,UAGf,IAAInpI,EAAO5E,EAAMqD,OAEjB,KAAMuB,aAAgBopI,iBACpB,OAAO,KAGT,IAAID,EAAYE,EAAeC,cAE/B,IAAKH,EAAW,CACd,IAAI1qI,EAASrD,EAAMqD,OAEnB0qI,GADW,gBAAiB1qI,GAAUA,EAAO8qI,eAAiBzqI,UAC7C+zF,cAGnB,OAAKs2C,GAAaA,EAAUnpI,OAASA,EAI9BmpI,EAHE,KAUX,SAASK,EAAkBpuI,GACzB,IAAIA,EAAMquI,iBAAV,CAIA,IAAIzpI,EAAO5E,EAAMqD,OAEbnH,EAAQ+xI,EAAeK,iBACvBP,EAAYD,EAAkB9tI,GAEpB,OAAV9D,GAAkB6xI,IACpB7xI,EAAQ6xI,EAAU7xI,OAKpB,IAAI2rF,EAASslD,EAAkBvoI,GAE/B,GAAKijF,EAOc,YAFFkmD,GAAaA,EAAU/oI,aAAa,eAAiBJ,EAAKI,aAAa,aAMxFhF,EAAMkD,iBAEO,MAAThH,EAEF2rF,EAAOhK,MAAM3hF,GAEb2rF,EAAOhK,UASX,SAAS0wD,EAAmB1mD,GAkB1B,GAjBA1oF,KAAKqvI,QAAU3mD,EACf1oF,KAAKsvI,mBAAoB,EACzBtvI,KAAKuvI,cAAe,EAEf7mD,EAAOz9E,aAAa,SACvBy9E,EAAOluE,aAAa,OAAQ,UAG9BkuE,EAAOpxB,KAAOt3D,KAAKs3D,KAAKh6D,KAAK0C,MAC7B0oF,EAAO8mD,UAAYxvI,KAAKwvI,UAAUlyI,KAAK0C,MACvC0oF,EAAOhK,MAAQ1+E,KAAK0+E,MAAMphF,KAAK0C,MAC/B0oF,EAAOtoF,iBAAiB,SAAU6uI,GAAmB,GAE/C,gBAAiBvmD,IACrBA,EAAO+mD,YAAc,IAGnB,qBAAsBnrI,OAAQ,CACvB,IAAIoE,iBAAiB1I,KAAK0vI,eAAepyI,KAAK0C,OACpD6I,QAAQ6/E,EAAQ,CACjBrgF,YAAY,EACZsnI,gBAAiB,CAAC,cAEf,CAIL,IAOIC,EAPAC,GAAU,EAEVr8D,EAAK,WACPq8D,EAAU7vI,KAAK8vI,iBAAmB9vI,KAAK0vI,iBACvCG,GAAU,GACVvyI,KAAK0C,MAIH+vI,EAAa,SAAUC,GACzB,GAAIA,EAAG9rI,SAAWwkF,EAAlB,CAKA,IAAIunD,EAAO,iBACXJ,GAAWG,EAAGvmI,KAAK0hB,OAAO,EAAG8kH,EAAKpxI,UAAYoxI,EAC9C3rI,OAAO83E,aAAawzD,GACpBA,EAAUtrI,OAAO6zD,WAAWqb,EAAI,KAGlC,CAAC,kBAAmB,iBAAkB,8BAA8BrxE,SAAQ,SAAU9F,GACpFqsF,EAAOtoF,iBAAiB/D,EAAM0zI,MAMlCvzI,OAAOC,eAAeisF,EAAQ,OAAQ,CACpCllF,IAAKxD,KAAKkwI,QAAQ5yI,KAAK0C,MACvBrD,IAAK+rF,EAAOz9E,aAAa3N,KAAKorF,EAAQ,UAExC1oF,KAAKmwI,UAAY5rI,SAAS88D,cAAc,OACxCrhE,KAAKmwI,UAAU3F,UAAY,WAC3BxqI,KAAKmwI,UAAU/vI,iBAAiB,UAAWJ,KAAKowI,oBAAoB9yI,KAAK0C,OACzEA,KAAKmwI,UAAU/vI,iBAAiB,YAAaJ,KAAKowI,oBAAoB9yI,KAAK0C,OAC3EA,KAAKmwI,UAAU/vI,iBAAiB,QAASJ,KAAKowI,oBAAoB9yI,KAAK0C,OA5TpE6tI,GAAoD,kBAAvBA,KAChCA,EAAqB,SAAqBhtI,EAAO6yB,GAC/CA,EAAIA,GAAK,GACT,IAAIs8G,EAAKzrI,SAAS8rI,YAAY,eAE9B,OADAL,EAAGM,gBAAgBzvI,IAAS6yB,EAAE3Q,UAAW2Q,EAAE1Q,WAAY0Q,EAAEzwB,QAAU,MAC5D+sI,IAGUtyI,UAAY4G,OAAO4wD,MAAMx3D,WAuT9C0xI,EAAmB1xI,UAAY,CAC7B,aACE,OAAOsC,KAAKqvI,SAQdK,eAAgB,WACV1vI,KAAKqvI,QAAQpkI,aAAa,SAAWL,EAAY5K,KAAKqvI,UAI1DrvI,KAAK8vI,kBAMPA,eAAgB,WACT9vI,KAAKuvI,eAIVvvI,KAAKuvI,cAAe,EACpBvvI,KAAKqvI,QAAQ35E,MAAM66E,OAAS,GAIxBvwI,KAAKsvI,oBACPtvI,KAAKqvI,QAAQ35E,MAAM+L,IAAM,GACzBzhE,KAAKsvI,mBAAoB,GAI3BtvI,KAAKmwI,UAAUpjF,YAAc/sD,KAAKmwI,UAAUpjF,WAAWqd,YAAYpqE,KAAKmwI,WACxErB,EAAe0B,GAAGC,aAAazwI,QAMjCkwI,QAAS,SAAUnzI,GACbA,EACFiD,KAAKqvI,QAAQpkI,aAAa,SAAWjL,KAAKqvI,QAAQ70H,aAAa,OAAQ,KAEvExa,KAAKqvI,QAAQ50H,gBAAgB,QAC7Bza,KAAK0vI,mBAUTU,oBAAqB,SAAUxqI,GAC7B,GAAK5F,KAAKqvI,QAAQpkI,aAAa,YAU7BjL,KAAKqvI,QAAQ5xC,YAV6B,CAI1C,IAAIizC,EAAOnsI,SAAS88D,cAAc,OAClCrhE,KAAKqvI,QAAQ3xC,aAAagzC,EAAM1wI,KAAKqvI,QAAQsB,YAC7CD,EAAKE,UAAY,EACjBF,EAAKjzC,QACLz9F,KAAKqvI,QAAQjlE,YAAYsmE,GAK3B,IAAIG,EAAkBtsI,SAAS8rI,YAAY,eAC3CQ,EAAgBC,eAAelrI,EAAE6D,KAAM7D,EAAEmd,QAASnd,EAAEod,WAAY1e,OAAQsB,EAAE3C,OAAQ2C,EAAEmrI,QAASnrI,EAAEorI,QAASprI,EAAEqrI,QAASrrI,EAAEsrI,QAAStrI,EAAEuM,QAASvM,EAAEwM,OAAQxM,EAAEyM,SAAUzM,EAAEsM,QAAStM,EAAEJ,OAAQI,EAAEurI,eACtLnxI,KAAKqvI,QAAQnsH,cAAc2tH,GAC3BjrI,EAAE/B,mBAOJutI,OAAQ,WAEN,IAAIltI,EAASlE,KAAKqvI,QAAQp1D,cAAc,gCAEnC/1E,GAAUlE,KAAKqvI,QAAQuB,UAAY,IACtC1sI,EAASlE,KAAKqvI,SAGXnrI,IACHA,EAASsqI,EAA2BxuI,KAAKqvI,UAG3ClB,EAAS5pI,SAAS+zF,eAClBp0F,GAAUA,EAAOu5F,SASnB4zC,aAAc,SAAUC,EAASC,GAC/B,GAAID,EAAUC,EACZ,MAAM,IAAIvrI,MAAM,uCAGlBhG,KAAKqvI,QAAQ35E,MAAM66E,OAASe,EAC5BtxI,KAAKmwI,UAAUz6E,MAAM66E,OAASgB,GAMhCj6E,KAAM,WACCt3D,KAAKqvI,QAAQnxD,OAChBl+E,KAAKkwI,SAAQ,GACblwI,KAAKoxI,WAOT5B,UAAW,WACT,GAAIxvI,KAAKqvI,QAAQpkI,aAAa,QAC5B,MAAM,IAAIjF,MAAM,iHAGlB,IAAK4E,EAAY5K,KAAKqvI,SACpB,MAAM,IAAIrpI,MAAM,8EAGlB,IAAK8oI,EAAe0B,GAAGgB,WAAWxxI,MAChC,MAAM,IAAIgG,MAAM,oFAratB,SAAgC6jE,GAC9B,KAAOA,GAAMA,IAAOtlE,SAASkS,MAAM,CACjC,IAAI5Y,EAAIyG,OAAOkmE,iBAAiBX,GAE5B3/B,EAAU,SAAU9qB,EAAG04E,GACzB,aAAkB3yF,IAATtH,EAAEuhB,IAAoBvhB,EAAEuhB,KAAO04E,IAG1C,GAAIj6F,EAAEstF,QAAU,GAAKjhD,EAAQ,SAAU,SAAWA,EAAQ,YAAa,SAAWA,EAAQ,eAAgB,WAAaA,EAAQ,SAAU,SAAWA,EAAQ,cAAe,SAA8B,YAAnBrsC,EAAa,WAAkC,UAAfA,EAAEosE,UAAsD,UAA9BpsE,EAAE4zI,wBAChP,OAAO,EAGT5nE,EAAKA,EAAG9xD,cAGV,OAAO,GAyZD25H,CAAuB1xI,KAAKqvI,QAAQt3H,gBACtCsG,QAAQxD,KAAK,+LAGf7a,KAAKkwI,SAAQ,GACblwI,KAAKuvI,cAAe,EAEhBT,EAAe6C,eAAe3xI,KAAKqvI,UACrCP,EAAe8C,WAAW5xI,KAAKqvI,SAC/BrvI,KAAKsvI,mBAAoB,GAEzBtvI,KAAKsvI,mBAAoB,EAI3BtvI,KAAKqvI,QAAQtiF,WAAW2wC,aAAa19F,KAAKmwI,UAAWnwI,KAAKqvI,QAAQ1xC,aAElE39F,KAAKoxI,UASP1yD,MAAO,SAAUmzD,GACf,IAAK7xI,KAAKqvI,QAAQpkI,aAAa,QAC7B,MAAM,IAAIjF,MAAM,uHAGlBhG,KAAKkwI,SAAQ,QAEW/qI,IAApB0sI,IACF7xI,KAAKqvI,QAAQI,YAAcoC,GAI7B,IAAIC,EAAa,IAAIjE,EAAmB,QAAS,CAC/C9qH,SAAS,EACTC,YAAY,IAEd8qH,EAAkB9tI,KAAKqvI,QAASyC,KAGpC,IAAIhD,EAAiB,CAErB,WAA4B,SAAU7qI,GACpC,IAAIymF,EAAYnmF,SAASkS,KAAKi0E,WAAanmF,SAASwY,gBAAgB2tE,UAChEqnD,EAAWrnD,GAAapmF,OAAOo2F,YAAcz2F,EAAQinF,cAAgB,EACzEjnF,EAAQyxD,MAAM+L,IAAM9yD,KAAKC,IAAI87E,EAAWqnD,GAAY,MAGtD,gCAAiD,SAAU9tI,GACzD,IAAK,IAAInI,EAAI,EAAGA,EAAIyI,SAAS2qF,YAAYrwF,SAAU/C,EAAG,CACpD,IAAIqzF,EAAa5qF,SAAS2qF,YAAYpzF,GAClCuzF,EAAW,KAEf,IACEA,EAAWF,EAAWE,SACtB,MAAOzpF,IAET,GAAKypF,EAIL,IAAK,IAAI/xD,EAAI,EAAGA,EAAI+xD,EAASxwF,SAAUy+B,EAAG,CACxC,IAAIkyD,EAAOH,EAAS/xD,GAChB00G,EAAgB,KAEpB,IACEA,EAAgBztI,SAAS4G,iBAAiBqkF,EAAKC,cAC/C,MAAO7pF,IAET,GAAKosI,GAAkB3D,EAAW2D,EAAe/tI,GAAjD,CAIA,IAAIguI,EAASziD,EAAK95B,MAAM+U,iBAAiB,OACrCynE,EAAY1iD,EAAK95B,MAAM+U,iBAAiB,UAE5C,GAAIwnE,GAAqB,SAAXA,GAAqBC,GAA2B,SAAdA,EAC9C,OAAO,IAKb,OAAO,GAGT,eAAgC,SAAUxpD,GAGxC,MAA+B,aAFXpkF,OAAOkmE,iBAAiBke,GAE1Bze,aAQO,SAArBye,EAAOhzB,MAAM+L,KAAuC,KAArBinB,EAAOhzB,MAAM+L,KAAsC,SAAxBinB,EAAOhzB,MAAM4kC,QAA6C,KAAxB5R,EAAOhzB,MAAM4kC,UAIrGw0C,EAAeqD,gCAAgCzpD,KAOzD,oBAAqC,SAAUzkF,GAK7C,IAJIK,OAAO4rF,mBAAqBjsF,EAAQurI,YACtCnxH,QAAQxD,KAAK,8EAAoF5W,GAGzE,WAAtBA,EAAQgqI,UACV,MAAM,IAAIjoI,MAAM,2DAGlB,IAAIopI,EAAmBnrI,IAOzB,eAAgC,SAAUA,GACnCA,EAAQurI,WACXV,EAAesD,oBAAoBnuI,IAQvC,cAA+B,WAE7BjE,KAAKqyI,mBAAqB,GAC1B,IAAIC,EAAWtyI,KAAKuyI,UAAUj1I,KAAK0C,MAMnCA,KAAKwyI,QAAUjuI,SAAS88D,cAAc,OACtCrhE,KAAKwyI,QAAQhI,UAAY,kBACzBxqI,KAAKwyI,QAAQpyI,iBAAiB,QAAS,SAAUwF,GAC/C5F,KAAKyyI,iBAActtI,EACnBS,EAAE/B,kBACFyuI,EAAS,KACTh1I,KAAK0C,OACPA,KAAK0yI,WAAa1yI,KAAK0yI,WAAWp1I,KAAK0C,MACvCA,KAAK2yI,aAAe3yI,KAAK2yI,aAAar1I,KAAK0C,MAC3CA,KAAK4yI,WAAa,IAClB5yI,KAAK6yI,YAAc,OACnB7yI,KAAKyyI,iBAActtI,EAEf,qBAAsBb,SACxBtE,KAAK8yI,IAAM,IAAIpqI,kBAAiB,SAAUqqI,GACxC,IAAIlD,EAAU,GACdkD,EAAQ5wI,SAAQ,SAAU6wI,GACxB,IAAK,IAAW72I,EAAPL,EAAI,EAAMK,EAAI62I,EAAInpI,aAAa/N,KAAMA,EACtCK,aAAa2L,UAEQ,WAAhB3L,EAAE8xI,WACX4B,EAAQjxI,KAAKzC,GAGf0zI,EAAUA,EAAQntI,OAAOvG,EAAEgP,iBAAiB,eAGhD0kI,EAAQhxI,QAAUyzI,EAASzC,SAyMjC,GA/LAf,EAAemE,cAAcv1I,UAAUw1I,cAAgB,WACrD3uI,SAASwY,gBAAgB3c,iBAAiB,QAASJ,KAAK2yI,cAAc,GACtEpuI,SAASnE,iBAAiB,UAAWJ,KAAK0yI,YAC1C1yI,KAAK8yI,KAAO9yI,KAAK8yI,IAAIjqI,QAAQtE,SAAU,CACrC+D,WAAW,EACXC,SAAS,KASbumI,EAAemE,cAAcv1I,UAAUy1I,gBAAkB,WACvD5uI,SAASwY,gBAAgBzc,oBAAoB,QAASN,KAAK2yI,cAAc,GACzEpuI,SAASjE,oBAAoB,UAAWN,KAAK0yI,YAC7C1yI,KAAK8yI,KAAO9yI,KAAK8yI,IAAIzyI,cAOvByuI,EAAemE,cAAcv1I,UAAU01I,eAAiB,WAGtD,IAFA,IAEgBC,EAFZ9C,EAASvwI,KAAK6yI,YAET/2I,EAAI,EAAQu3I,EAAMrzI,KAAKqyI,mBAAmBv2I,KAAMA,EACvDu3I,EAAIhC,eAAed,IAAUA,GAEnB,IAANz0I,IACFkE,KAAKwyI,QAAQ98E,MAAM66E,SAAWA,GAKlC,IAAI5gE,EAAO3vE,KAAKqyI,mBAAmB,GAE/B1iE,GACMA,EAAK+Y,OAAO37B,YAAcxoD,SAASkS,MACzCmrD,YAAY5hE,KAAKwyI,SACVxyI,KAAKwyI,QAAQzlF,YACtB/sD,KAAKwyI,QAAQzlF,WAAWqd,YAAYpqE,KAAKwyI,UAS7C1D,EAAemE,cAAcv1I,UAAU41I,sBAAwB,SAAUC,GACvE,KAAOA,EAAYvF,EAAkBuF,IAAY,CAC/C,IAAK,IAAWF,EAAPv3I,EAAI,EAAQu3I,EAAMrzI,KAAKqyI,mBAAmBv2I,KAAMA,EACvD,GAAIu3I,EAAI3qD,SAAW6qD,EACjB,OAAa,IAANz3I,EAIXy3I,EAAYA,EAAUx7H,cAGxB,OAAO,GAGT+2H,EAAemE,cAAcv1I,UAAUi1I,aAAe,SAAU9xI,GAC9D,IAAIqD,EAASrD,EAAM2yI,aAAe3yI,EAAM2yI,eAAe,GAAK3yI,EAAMqD,OAElE,IAAIlE,KAAKszI,sBAAsBpvI,IAI3BK,SAAS+zF,gBAAkB/zF,SAASwY,kBAIxClc,EAAMkD,iBACNlD,EAAMgD,kBACNsqI,EAASjqI,QAEgBiB,IAArBnF,KAAKyyI,aAAT,CAKA,IAAIY,EAAMrzI,KAAKqyI,mBAAmB,GAclC,OAbagB,EAAI3qD,OACK+qD,wBAAwBvvI,GAE/BwG,KAAKgpI,8BACd1zI,KAAKyyI,YAEPY,EAAIjC,SACKltI,IAAWK,SAASwY,iBAE7BxY,SAASwY,gBAAgB0gF,UAItB,IAGTqxC,EAAemE,cAAcv1I,UAAUg1I,WAAa,SAAU7xI,GAG5D,GAFAb,KAAKyyI,iBAActtI,EAEG,KAAlBtE,EAAM44F,QAAgB,CACxB54F,EAAMkD,iBACNlD,EAAMgD,kBACN,IAAI8vI,EAAc,IAAI9F,EAAmB,SAAU,CACjD9qH,SAAS,EACTC,YAAY,IAEVqwH,EAAMrzI,KAAKqyI,mBAAmB,GAE9BgB,GAAOvF,EAAkBuF,EAAI3qD,OAAQirD,IACvCN,EAAI3qD,OAAOhK,aAEc,IAAlB79E,EAAM44F,UACfz5F,KAAKyyI,aAAe5xI,EAAMwR,WAW9By8H,EAAemE,cAAcv1I,UAAU60I,UAAY,SAAU1C,GAI/C7vI,KAAKqyI,mBAAmBlzI,QAC9BgD,SAAQ,SAAUkxI,IACe,IAAjCxD,EAAQ98G,QAAQsgH,EAAI3qD,QACtB2qD,EAAIvD,iBAEJuD,EAAI3D,qBAUVZ,EAAemE,cAAcv1I,UAAU8zI,WAAa,SAAU6B,GAC5D,IAAIO,GAAW5zI,KAAK6yI,YAAc7yI,KAAK4yI,YAAc,EAAI,EAEzD,QAAI5yI,KAAKqyI,mBAAmBxzI,QAAU+0I,KAIO,IAAzC5zI,KAAKqyI,mBAAmBnhF,QAAQmiF,IAClCrzI,KAAKkzI,gBAGPlzI,KAAKozI,kBACE,IAOTtE,EAAemE,cAAcv1I,UAAU+yI,aAAe,SAAU4C,GAC9D,IAAI3xI,EAAQ1B,KAAKqyI,mBAAmBt/G,QAAQsgH,IAE7B,IAAX3xI,IAIJ1B,KAAKqyI,mBAAmBphE,OAAOvvE,EAAO,GAEC,IAAnC1B,KAAKqyI,mBAAmBxzI,QAC1BmB,KAAKmzI,kBAGPnzI,KAAKozI,mBAGPtE,EAAe0B,GAAK,IAAI1B,EAAemE,cACvCnE,EAAeC,cAAgB,KAC/BD,EAAeK,iBAAmB,UAMDhqI,IAA7Bb,OAAO4rF,kBAAiC,CAK1C,IAAI2jD,EAAWtvI,SAAS88D,cAAc,QAGtC,GAFAwyE,EAASr5H,aAAa,SAAU,UAER,WAApBq5H,EAAS/sI,OAAqB,CAChC,IAAIgtI,EAAmBt3I,OAAOic,yBAAyBo2H,gBAAgBnxI,UAAW,UAElF,GAAIo2I,EAAkB,CAGpB,IAAIC,EAAUD,EAAiBn3I,IAE/Bm3I,EAAiBn3I,IAAM,WACrB,OAAI4xI,EAAmBvuI,MACd,SAGF+zI,EAAQ93I,KAAK+D,OAGtB,IAAIg0I,EAAUF,EAAiBtwI,IAG/BswI,EAAiBtwI,IAAM,SAAU6b,GAC/B,MAAiB,kBAANA,GAAsC,WAApBA,EAAEpa,cACtBjF,KAAKwa,aAAa,SAAU6E,GAG9B20H,EAAQ/3I,KAAK+D,KAAMqf,IAG5B7iB,OAAOC,eAAeoyI,gBAAgBnxI,UAAW,SAAUo2I,IAU/DvvI,SAASnE,iBAAiB,SAAS,SAAU4vI,GAI3C,GAHAlB,EAAeC,cAAgB,KAC/BD,EAAeK,iBAAmB,MAE9Ba,EAAGd,iBAAP,CAKA,IAAIhrI,EAAS8rI,EAAG9rI,OAEhB,GAAI,iBAAkB8rI,EAEpB9rI,EADW8rI,EAAGwD,eACAvhI,SAAW/N,EAG3B,GAAKA,GAAWqqI,EAAmBrqI,EAAOuB,MAA1C,CAMA,KAF4B,WAAhBvB,EAAOuF,MAAqB,CAAC,SAAU,SAASspB,QAAQ7uB,EAAO+pI,YAAc,GAE7E,CACV,GAA2B,UAArB/pI,EAAO+pI,WAAyC,UAAhB/pI,EAAOuF,KAC3C,OAIFqlI,EAAeK,iBAAmBa,EAAGiE,QAAU,IAAMjE,EAAGkE,QAG7ClG,EAAkB9pI,KAM/B4qI,EAAeC,cAAgB7qI,QAC9B,GAMHK,SAASnE,iBAAiB,UAAU,SAAU4vI,GAC5C,IAAIvqI,EAAOuqI,EAAG9rI,OAGd,IAFa8pI,EAAkBvoI,GAE/B,CAIA,IAAImpI,EAAYD,EAAkBqB,GAGf,YAFFpB,GAAaA,EAAU/oI,aAAa,eAAiBJ,EAAKI,aAAa,YAGtFmqI,EAAGjsI,qBAQP,IAAIowI,EAAmBtF,gBAAgBnxI,UAAUu8F,OAWjD40C,gBAAgBnxI,UAAUu8F,OATE,WAC1B,IAAKs0C,EAAmBvuI,MACtB,OAAOm0I,EAAiBl4I,KAAK+D,MAG/B,IAAI0oF,EAASslD,EAAkBhuI,MAC/B0oF,GAAUA,EAAOhK,SAMN,Q,qlDCr7Bb0N,SAAW,CACT5oF,IAAK,SAACU,EAAQzG,EAAUV,GAMtB,OALAmH,EAAOzG,GAAYV,EAEF,eAAbU,GAA2B,EAAK2uF,SAASb,SAC5B,gBAAb9tF,GAA4B,EAAK2uF,SAASgoD,UAEvC,GAGT7oD,OAAQ,WACN,EAAKrM,MAAMmN,WAAa,EAAKD,SAASE,UAAY,EAAKF,SAASG,WAGlED,QAAS,WACP,EAAK+nD,cACL,EAAKpwI,QAAQ7D,iBAAiB,UAAU,SAAAS,GAAK,OAAIA,EAAMkD,oBAEvDQ,SAASkS,KAAK6qD,UAAU7gE,IAAI,wBAE5B,EAAKksD,WAAW,mBAGlB4/B,QAAS,WAKP,IACE,EAAKtoF,QAAQq9D,UAAU7gE,IAAI,EAAK6zI,uBAChC,EAAKrwI,QAAQuoD,QAAQ+nF,aAAc,EAEnCp8E,YAAW,WACT,EAAKl0D,QAAQq9D,UAAUqT,OAAO,EAAK2/D,uBACnC,EAAKrwI,QAAQuoD,QAAQ+nF,aAAc,EACnC,EAAKtwI,QAAQy6E,QAEbn6E,SAASkS,KAAK6qD,UAAUqT,OAAO,wBAE/B,EAAKhoB,WAAW,kBAEZ,EAAKigC,oBAAoB,EAAK3oF,QAAQ0wE,WACzC,KACH,MAAM5xE,GACNsb,QAAQgC,IAAItd,EAAMC,WAItBoxI,OAAQ,WACN,EAAKnwI,QAAQyxD,MAAM8+E,YAAY,wBAA/B,UAA2D,EAAKt1D,MAAMu1D,YAAtE,S,sCAIJ,WACEz0I,KAAKk/E,MAAQ,IAAI6N,MAAM,GAAI/sF,KAAKosF,UAChCpsF,KAAKs0I,sBAAwB,kBAE7BxF,EAAe4F,eAAe10I,KAAKiE,SAEnCjE,KAAKiE,QAAQ7D,iBAAiB,QAASJ,KAAK20I,qBAAqBr3I,KAAK0C,OAElEA,KAAKgtF,2BAA2BhtF,KAAKk+E,S,wBAG3C,WACEl+E,KAAK0+E,QAEL1+E,KAAKiE,QAAQ3D,oBAAoB,QAASN,KAAK20I,qBAAqBr3I,KAAK0C,S,kBAG3E,SAAKa,GACCA,GAAOA,EAAMkD,iBAEjB/D,KAAKk/E,MAAMmN,YAAa,EAExBrsF,KAAKo0I,W,mBAGP,SAAMvzI,GAAQ,IAAD,IACwC,OAA1C,OAALA,QAAK,IAALA,GAAA,UAAAA,EAAO2G,qBAAP,eAAsB3B,aAAa,UAAiBhF,EAAMkD,iBAC9D/D,KAAKs0I,uBAA6B,OAALzzI,QAAK,IAALA,GAAA,UAAAA,EAAOoC,cAAP,eAAe0/H,uBAAwB3iI,KAAKs0I,sBAEzEt0I,KAAKk/E,MAAMmN,YAAa,I,oBAG1B,SAAOxrF,GACLb,KAAKk/E,MAAMu1D,YAAcz0I,KAAKy0I,c,wBAGhC,SAAW30I,GACTE,KAAKiE,QAAQif,cAAcljB,KAAK40I,YAAY90I,IAExCE,KAAKktF,gBACPltF,KAAK0sF,gBAAgB5sF,K,6BAIzB,SAAgBA,GACdwE,OAAO4e,cAAcljB,KAAK40I,YAAL,sBACJ90I,GACf,CAAEutF,aAAcrtF,KAAKiE,a,yBAIzB,SAAYnE,GAAuB,IAAZoT,EAAW,uDAAJ,GACtB2hI,EAAcr4I,OAAOwE,OAAOhB,KAAKk/E,MAAOhsE,GAC9C,OAAO,IAAI+P,YAAYnjB,EAAW,CAChCijB,SAAS,EACT9f,OAAQ4xI,M,kCAIZ,SAAqBh0I,GAChBb,KAAK80I,eAIJj0I,EAAMqD,SAAWlE,KAAKiE,UACxBjE,KAAKk/E,MAAMmN,YAAa,K,yBAI5B,WACErsF,KAAKiE,QAAQurI,YACbxvI,KAAKiE,QAAQuoD,QAAQuoF,eAAgB,I,yBAGvC,WACE,OAAO/0I,KAAKg1I,a,uBAGd,WACE,MAA4B,IAArB1wI,OAAOo2F,c,2BAGhB,WACE,OAAOn2F,SAAS01E,cAAc,sBAAwB11E,SAAS01E,cAAc,4B,mCAhJpDv3D,G,EACpBpgB,OAAS,CACdgrF,qBAAsBprE,QACtBqrE,cAAerrE,QACf00D,UAAWx0D,OACXgmE,MAAOlmE,U,wGCRX,SAMA,YAEE,YACE,WACEliB,KAAK6vF,MAAQ,CACXolD,kBAAmB,yGACnBC,oBAAqB,CACnB9pI,SAAU,oEACV+pI,QAAS,eAEXC,oBAAqB,iEACrBC,mBAAoB,8BACpBC,uBAAwB,ySACxBC,oBAAqB,sMACrBC,mBAAoB,4MACpBC,kBAAmB,yCACnBC,oBAAqB,wCACrBC,sBAAuB,+EAExB15I,KAAK+D,QACP/D,KAnBW+D,MAoBd,IAAI6vF,EApBU7vF,KAoBM6vF,OACpB,YACE,WACE,IAAI+lD,EACJA,EAAQ,KAER/lD,EAAMgmD,aAAe,WACnB,IAAIz2F,EACJ,OAAOw2F,EAAkE,OAAzDx2F,EAAM76C,SAAS01E,cAAc,yBAAmC76B,EAAInwC,aAAU,GAGhG4gF,EAAMimD,SAAW,WACf,OAAgB,MAATF,EAAgBA,EAAQ/lD,EAAMgmD,kBAEtC55I,KAAK+D,MACR,WACE,IAAa9D,EACbA,EAAI4L,QAAQpK,UAAUwL,SAAWpB,QAAQpK,UAAUq4I,iBAAmBjuI,QAAQpK,UAAUs4I,oBAAsBluI,QAAQpK,UAAUu4I,mBAAqBnuI,QAAQpK,UAAUw4I,kBAAoBpuI,QAAQpK,UAAUy4I,sBAE7MtmD,EAAM3mF,QAAU,SAAUjF,EAASmH,GACjC,OAAwB,MAApBA,EAAS+pI,QACJj5I,EAAED,KAAKgI,EAASmH,EAASA,YAAclP,EAAED,KAAKgI,EAASmH,EAAS+pI,SAEhEj5I,EAAED,KAAKgI,EAASmH,IAM3BykF,EAAMumD,QAAU,SAAUnyI,EAAS5G,GACjC,IAAI+hD,EACJ,OAAmC,OAA3BA,EAAMn7C,EAAe,UAAam7C,EAAI/hD,QAAO,GAGvDwyF,EAAMwmD,QAAU,SAAUpyI,EAAS5G,EAAKN,GAKtC,OAJwB,MAApBkH,EAAe,WACjBA,EAAe,SAAI,IAGdA,EAAe,SAAE5G,GAAON,GAGjC8yF,EAAMv3C,EAAI,SAAUltC,GAClB,OAAOpN,MAAMN,UAAUyB,MAAMlD,KAAKsI,SAAS4G,iBAAiBC,MAE7DnP,KAAK+D,MACR,WACE,IAAIs4C,EAAGg+F,EAAW1V,EAClBtoF,EAAIu3C,EAAMv3C,EAEVsoF,EAAY/wC,EAAM+wC,UAAY,WAC5B,IAAI9uH,EAEJ,OADAA,EAAOvN,SAAS01E,cAAc,2BACfnoE,EAAK7C,SAGtBqnI,EAAYzmD,EAAMymD,UAAY,WAC5B,IAAIxkI,EAEJ,OADAA,EAAOvN,SAAS01E,cAAc,2BACfnoE,EAAK7C,SAGtB4gF,EAAM0mD,eAAiB,SAAUtuD,GAC/B,IAAI55E,EAGJ,GAAa,OAFbA,EAAQuyH,KAGN,OAAO34C,EAAIuuD,iBAAiB,eAAgBnoI,IAIhDwhF,EAAM4mD,kBAAoB,WACxB,IAAIC,EAAOroI,EAIX,GAHAA,EAAQuyH,IACR8V,EAAQJ,IAEK,MAATjoI,GAA0B,MAATqoI,EACnB,OAAOp+F,EAAE,oBAAsBo+F,EAAQ,MAAMv0I,SAAQ,SAAUwD,GAC7D,OAAOA,EAAM5I,MAAQsR,OAI1BpS,KAAK+D,MACR,WACE,IAAIijB,EAAa0zH,EAAMztI,EAASnF,EAChCmF,EAAU2mF,EAAM3mF,QAGW,oBAF3B+Z,EAAc3e,OAAO2e,gBAGnBA,EAAc,SAAUpiB,EAAO0G,GAC7B,IAAIwxH,EAGJ,OAFAA,EAAMx0H,SAAS8rI,YAAY,gBACvBC,gBAAgBzvI,EAAO0G,EAAOwb,QAASxb,EAAOyb,WAAYzb,EAAOtE,QAC9D81H,IAGGr7H,UAAY4G,OAAO4wD,MAAMx3D,UACrCqG,EAAiBkf,EAAYvlB,UAAUqG,eAEvCkf,EAAYvlB,UAAUqG,eAAiB,WACrC,IAAIyf,EAWJ,OAVAA,EAASzf,EAAe9H,KAAK+D,MAEzBA,KAAKgjB,aAAehjB,KAAKkvI,kBAC3B1yI,OAAOC,eAAeuD,KAAM,mBAAoB,CAC9CrD,IAAK,WACH,OAAO,KAKN6mB,IAIXmzH,EAAO9mD,EAAM8mD,KAAO,SAAUjyH,EAAKroB,EAAM6W,GACvC,IAAIrS,EAOJ,OANAA,EAAQ,IAAIoiB,EAAY5mB,EAAM,CAC5B0mB,SAAS,EACTC,YAAY,EACZ/f,OAAQiQ,IAEVwR,EAAIxB,cAAcriB,IACVA,EAAMquI,kBAGhBr/C,EAAM+mD,eAAiB,SAAUhxI,GAI/B,OAHA+wI,EAAK/wI,EAAE1B,OAAQ,yBACf0B,EAAE7B,iBACF6B,EAAE/B,kBACK+B,EAAE7E,4BAGX8uF,EAAM1nF,SAAW,SAAUlE,EAASmH,EAAU+gH,EAAWhtC,GACvD,OAAOl7E,EAAQ7D,iBAAiB+rH,GAAW,SAAUvmH,GACnD,IAAI1B,EAGJ,IAFAA,EAAS0B,EAAE1B,OAEAA,aAAkB4D,UAAYoB,EAAQhF,EAAQkH,IACvDlH,EAASA,EAAO6oD,WAGlB,GAAI7oD,aAAkB4D,UAAuC,IAA5Bq3E,EAAQljF,KAAKiI,EAAQ0B,GAEpD,OADAA,EAAE7B,iBACK6B,EAAE/B,uBAId5H,KAAK+D,MACR,WACE,IAAI62I,EAAeN,EAAgBO,EAAWhB,EAAgBiB,EAAgBC,EAC9ElB,EAAWjmD,EAAMimD,SAAUS,EAAiB1mD,EAAM0mD,eAAuB1mD,EAAM8mD,KAC/EE,EAAgB,CACd,IAAK,MACL54F,KAAM,aACNg5F,KAAM,YACNC,IAAK,4BACLn/C,KAAM,oCACNi1C,OAAQ,6FAGVn9C,EAAMC,KAAO,SAAU5+E,GACrB,IAAI+2E,EAmBJ,OAlBA/2E,EAAU6lI,EAAe7lI,GACzB+2E,EAAM6uD,EAAU5lI,GAAS,WACvB,IAAIkuC,EAAKy4C,EAaT,OAZAA,EAAWm/C,EAAwC,OAAvB53F,EAAM6oC,EAAI4P,UAAoBz4C,EAAM6oC,EAAIkvD,aAAclvD,EAAImvD,kBAAkB,iBAEnE,IAAjCzoI,KAAKkhB,MAAMo4D,EAAIvwB,OAAS,KACK,oBAApBxmD,EAAQ8jH,SACjB9jH,EAAQ8jH,QAAQn9B,EAAU5P,EAAIovD,WAAYpvD,GAGf,oBAAlB/2E,EAAQnO,OACjBmO,EAAQnO,MAAM80F,EAAU5P,EAAIovD,WAAYpvD,GAIT,oBAArB/2E,EAAQqxD,SAA0BrxD,EAAQqxD,SAAS0lB,EAAKA,EAAIovD,iBAAc,OAGhE,MAAtBnmI,EAAQomI,aAAuBpmI,EAAQomI,WAAWrvD,EAAK/2E,MAIvD+2E,EAAItoE,aAAe43H,eAAeC,OAC7BvvD,EAAI7J,KAAKltE,EAAQgC,WAD1B,IAKF6jI,EAAiB,SAAU7lI,GAsBzB,OArBAA,EAAQukD,IAAMvkD,EAAQukD,KAAO06D,SAAS1vC,KACtCvvE,EAAQzH,KAAOyH,EAAQzH,KAAK7E,cAEP,QAAjBsM,EAAQzH,MAAkByH,EAAQgC,OAChChC,EAAQukD,IAAI1iC,QAAQ,KAAO,EAC7B7hB,EAAQukD,KAAO,IAAMvkD,EAAQgC,KAE7BhC,EAAQukD,KAAO,IAAMvkD,EAAQgC,MAIM,MAAnC2jI,EAAc3lI,EAAQ6+E,YACxB7+E,EAAQ6+E,SAAW,KAGrB7+E,EAAQumI,OAASZ,EAAc3lI,EAAQ6+E,UAEd,MAArB7+E,EAAQ6+E,WACV7+E,EAAQumI,QAAU,iBAGbvmI,GAGT4lI,EAAY,SAAU5lI,EAASvS,GAC7B,IAAIspF,EAsBJ,OArBAA,EAAM,IAAIsvD,gBACNr5D,KAAKhtE,EAAQzH,KAAMyH,EAAQukD,KAAK,GACpCwyB,EAAIuuD,iBAAiB,SAAUtlI,EAAQumI,QAEX,kBAAjBvmI,EAAQgC,MACjB+0E,EAAIuuD,iBAAiB,eAAgB,oDAGlCtlI,EAAQwmI,cACXzvD,EAAIuuD,iBAAiB,mBAAoB,kBACzCD,EAAetuD,IAGjBA,EAAI0vD,kBAAoBzmI,EAAQymI,gBAEhC1vD,EAAI2vD,mBAAqB,WACvB,GAAI3vD,EAAItoE,aAAe43H,eAAeM,KACpC,OAAOl5I,EAAKspF,IAITA,GAGT+uD,EAAkB,SAAUn/C,EAAUpuF,GACpC,IAAImlD,EAAQo+E,EAEZ,GAAwB,kBAAbn1C,GAAyC,kBAATpuF,EACzC,GAAIA,EAAKyB,MAAM,YACb,IACE2sF,EAAW3xF,KAAKC,MAAM0xF,GACtB,MAAO90F,SACJ,GAAI0G,EAAKyB,MAAM,4BACpB8hI,EAASzoI,SAAS88D,cAAc,WACzB7mD,aAAa,QAASs7H,KAC7B9I,EAAO/uF,KAAO45C,EACdtzF,SAASwb,KAAK6hD,YAAYorE,GAAQjgF,WAAWqd,YAAY4iE,QACpD,GAAIvjI,EAAKyB,MAAM,sBAAuB,CAC3C0jD,EAAS,IAAIkpF,UACbruI,EAAOA,EAAKhF,QAAQ,MAAO,IAE3B,IACEozF,EAAWjpC,EAAOmpF,gBAAgBlgD,EAAUpuF,GAC5C,MAAO1G,KAIb,OAAO80F,GAGThI,EAAMpP,KAAO,SAAUx8E,GACrB,OAAOA,EAAQw8E,MAGjBoP,EAAMmoD,cAAgB,SAAUviF,GAC9B,IAAOwiF,EAAcC,GACrBD,EAAe1zI,SAAS88D,cAAc,MACzBof,KAAO0vC,SAAS1vC,KAC7By3D,EAAY3zI,SAAS88D,cAAc,KAEnC,IAEE,OADA62E,EAAUz3D,KAAOhrB,MACNyiF,EAAUp5D,UAAmC,MAAvBo5D,EAAUp5D,YAAsBo5D,EAAUhK,MAAQ+J,EAAan5D,SAAW,KAAOm5D,EAAa/J,OAASgK,EAAUp5D,SAAW,KAAOo5D,EAAUhK,MAC9K,MAAOnrI,GAEP,OADIA,GACG,KAGV9G,KAAK+D,MACR,WACE,IAAIkJ,EAAS4/B,EACb5/B,EAAU2mF,EAAM3mF,QAEhB4/B,EAAU,SAAUljC,GAClB,OAAO5H,MAAMN,UAAUyB,MAAMlD,KAAK2J,IAGpCiqF,EAAMsoD,iBAAmB,SAAUl0I,EAASm0I,GAC1C,IAAIC,EAAQ9wI,EAsCZ,OArCA8wI,EAAS,CAACp0I,GAENiF,EAAQjF,EAAS,UACnBo0I,EAASvvG,EAAQ7kC,EAAQuE,WAG3BjB,EAAS,GACT8wI,EAAOl2I,SAAQ,SAAUwD,GACvB,GAAKA,EAAMtJ,OAAQsJ,EAAMusH,WAIrBhpH,EAAQvD,EAAO,wBAInB,OAAIuD,EAAQvD,EAAO,UACVmjC,EAAQnjC,EAAMuL,SAAS/O,SAAQ,SAAUk9C,GAC9C,GAAIA,EAAO8+E,SACT,OAAO52H,EAAO3I,KAAK,CACjBvC,KAAMsJ,EAAMtJ,KACZU,MAAOsiD,EAAOtiD,WAIX4I,EAAMy7F,UAAoE,IAAzD,CAAC,QAAS,WAAY,UAAUruE,QAAQptB,EAAM8D,MACjElC,EAAO3I,KAAK,CACjBvC,KAAMsJ,EAAMtJ,KACZU,MAAO4I,EAAM5I,aAHV,KAQLq7I,GACF7wI,EAAO3I,KAAKw5I,GAGP7wI,EAAO9E,KAAI,SAAUi0I,GAC1B,OAAkB,MAAdA,EAAMr6I,KACDi8I,mBAAmB5B,EAAMr6I,MAAQ,IAAMi8I,mBAAmB5B,EAAM35I,OAEhE25I,KAER/yI,KAAK,MAGVksF,EAAM0oD,aAAe,SAAU9yI,EAAM2F,GACnC,OAAIlC,EAAQzD,EAAM,QACTqjC,EAAQrjC,EAAK+C,UAAUlB,QAAO,SAAUuiE,GAC7C,OAAO3gE,EAAQ2gE,EAAIz+D,MAGd09B,EAAQrjC,EAAK0F,iBAAiBC,MAGxCnP,KAAK+D,MACR,WACE,IAAIw4I,EAAa7B,EAAMC,EACvBD,EAAO9mD,EAAM8mD,KAAMC,EAAiB/mD,EAAM+mD,eAE1C/mD,EAAM4oD,cAAgB,SAAU7yI,GAC9B,IAAK4yI,EAAYx4I,MACf,OAAO42I,EAAehxI,IAI1BiqF,EAAM6oD,QAAU,SAAU11I,EAASiB,GACjC,OAAOy0I,QAAQ11I,IAGjBw1I,EAAc,SAAUv0I,GACtB,IAAI00I,EAAQ3vI,EAAUhG,EAGtB,KAFAA,EAAUiB,EAAQ4B,aAAa,iBAG7B,OAAO,EAKT,GAFA8yI,GAAS,EAELhC,EAAK1yI,EAAS,WAAY,CAC5B,IACE00I,EAAS9oD,EAAM6oD,QAAQ11I,EAASiB,GAChC,MAAOlB,IAETiG,EAAW2tI,EAAK1yI,EAAS,mBAAoB,CAAC00I,IAGhD,OAAOA,GAAU3vI,IAElB/M,KAAK+D,MACR,WACE,IAAI44I,EAAoBC,EAAqBC,EAAoBC,EAAmBC,EAAoBC,EAAmBV,EAAcnC,EAAS8C,EAAehwI,EAASmtI,EAASO,EACnL1tI,EAAU2mF,EAAM3mF,QAASktI,EAAUvmD,EAAMumD,QAASC,EAAUxmD,EAAMwmD,QAASO,EAAiB/mD,EAAM+mD,eAAgB2B,EAAe1oD,EAAM0oD,aAEvI1oD,EAAMspD,sBAAwB,SAAUvzI,GAItC,GAFU5F,UAEEkyH,SACV,OAAO0kB,EAAehxI,IAI1BiqF,EAAMupD,cAAgB,SAAUxzI,GAC9B,IAAI3B,EAEJ,GAAI2B,aAAasvD,MAAO,CACtB,GAAIgkF,EAActzI,GAChB,OAGF3B,EAAU2B,EAAE1B,YAEZD,EAAU2B,EAGZ,OAAIsD,EAAQjF,EAAS4rF,EAAM6lD,qBAClBuD,EAAkBh1I,GAChBiF,EAAQjF,EAAS4rF,EAAM8lD,wBAA0BzsI,EAAQjF,EAAS4rF,EAAM2lD,oBAC1EuD,EAAkB90I,GAChBiF,EAAQjF,EAAS4rF,EAAMwlD,oBACzB2D,EAAmB/0I,QADrB,GAKT4rF,EAAMwpD,eAAiB,SAAUzzI,GAC/B,IAAI3B,EAGJ,OAFAA,EAAU2B,aAAasvD,MAAQtvD,EAAE1B,OAAS0B,EAEtCsD,EAAQjF,EAAS4rF,EAAM6lD,qBAClBoD,EAAmB70I,GACjBiF,EAAQjF,EAAS4rF,EAAM8lD,wBAA0BzsI,EAAQjF,EAAS4rF,EAAM0lD,qBAC1EqD,EAAmB30I,GACjBiF,EAAQjF,EAAS4rF,EAAMwlD,oBACzBwD,EAAoB50I,QADtB,GAKT60I,EAAqB,SAAU70I,GAC7B,IAAIq1I,EAEJ,IAAIlD,EAAQnyI,EAAS,gBAYrB,OANmB,OAFnBq1I,EAAcr1I,EAAQ4B,aAAa,wBAGjCwwI,EAAQpyI,EAAS,kBAAmBA,EAAQ09D,WAC5C19D,EAAQ09D,UAAY23E,GAGtBr1I,EAAQ7D,iBAAiB,QAASw2I,GAC3BP,EAAQpyI,EAAS,gBAAgB,IAG1Cg1I,EAAoB,SAAUh1I,GAC5B,IAAIgrD,EASJ,OANoB,OAFpBA,EAAemnF,EAAQnyI,EAAS,sBAG9BA,EAAQ09D,UAAY1S,EACpBonF,EAAQpyI,EAAS,kBAAmB,OAGtCA,EAAQ3D,oBAAoB,QAASs2I,GAC9BP,EAAQpyI,EAAS,eAAgB,OAG1C40I,EAAsB,SAAUpzI,GAC9B,OAAO8yI,EAAa9yI,EAAMoqF,EAAM0lD,qBAAqBpzI,QAAQy2I,IAG/DA,EAAqB,SAAU30I,GAC7B,IAAIq1I,EAEJ,IAAIlD,EAAQnyI,EAAS,gBAiBrB,OAXmB,OAFnBq1I,EAAcr1I,EAAQ4B,aAAa,wBAG7BqD,EAAQjF,EAAS,WACnBoyI,EAAQpyI,EAAS,kBAAmBA,EAAQ09D,WAC5C19D,EAAQ09D,UAAY23E,IAEpBjD,EAAQpyI,EAAS,kBAAmBA,EAAQlH,OAC5CkH,EAAQlH,MAAQu8I,IAIpBr1I,EAAQiuH,UAAW,EACZmkB,EAAQpyI,EAAS,gBAAgB,IAG1C+0I,EAAqB,SAAUvzI,GAC7B,OAAO8yI,EAAa9yI,EAAMoqF,EAAM2lD,oBAAoBrzI,QAAQ42I,IAG9DA,EAAoB,SAAU90I,GAC5B,IAAIgrD,EAcJ,OAXoB,OAFpBA,EAAemnF,EAAQnyI,EAAS,sBAG1BiF,EAAQjF,EAAS,UACnBA,EAAQ09D,UAAY1S,EAEpBhrD,EAAQlH,MAAQkyD,EAGlBonF,EAAQpyI,EAAS,kBAAmB,OAGtCA,EAAQiuH,UAAW,EACZmkB,EAAQpyI,EAAS,eAAgB,OAG1Ci1I,EAAgB,SAAUr4I,GACxB,IAAIu+C,EAAK6oC,EAET,OAA2E,OAA5D,OADfA,EAA8B,OAAvB7oC,EAAMv+C,EAAMoC,QAAkBm8C,EAAI,QAAK,GACxB6oC,EAAImvD,kBAAkB,uBAAoB,KAEjEn7I,KAAK+D,MACR,WACE,IAAI42I,EACJA,EAAiB/mD,EAAM+mD,eAEvB/mD,EAAM0pD,aAAe,SAAU3zI,GAC7B,IAAI0wI,EAAW1V,EAAWn7H,EAAM+zI,EAAa/4D,EAAMwU,EAAMnuF,EAIzD,GAFAA,GADAmuF,EAAOj1F,MACO6F,aAAa,eAwB3B,OAlBA46E,EAAOoP,EAAMpP,KAAKwU,GAClB2rC,EAAY/wC,EAAM+wC,YAClB0V,EAAYzmD,EAAMymD,YAClB7wI,EAAOlB,SAAS88D,cAAc,QAC9Bm4E,EAAc,gCAAkC1yI,EAAS,qBAExC,MAAbwvI,GAAkC,MAAb1V,GAAsB/wC,EAAMmoD,cAAcv3D,KACjE+4D,GAAe,gBAAkBlD,EAAY,YAAc1V,EAAY,sBAGzE4Y,GAAe,0BACf/zI,EAAKqB,OAAS,OACdrB,EAAKc,OAASk6E,EACdh7E,EAAKvB,OAAS+wF,EAAK/wF,OACnBuB,EAAKk8D,UAAY63E,EACjB/zI,EAAKiwD,MAAMwkB,QAAU,OACrB31E,SAASkS,KAAKmrD,YAAYn8D,GAC1BA,EAAKw0E,cAAc,mBAAmB2f,QAC/Bg9C,EAAehxI,KAEvB3J,KAAK+D,MACR,WACE,IAAI8vF,EACA6mD,EACAP,EACA4B,EACAyB,EACAvwI,EACAivI,EACA9B,EACAO,EACAz3I,EAAQ,GAAGA,MACf+J,EAAU2mF,EAAM3mF,QAASktI,EAAUvmD,EAAMumD,QAASC,EAAUxmD,EAAMwmD,QAASM,EAAO9mD,EAAM8mD,KAAMC,EAAiB/mD,EAAM+mD,eAAgB9mD,EAAOD,EAAMC,KAAMkoD,EAAgBnoD,EAAMmoD,cAAeG,EAAmBtoD,EAAMsoD,iBAEtNsB,EAAW,SAAUx1I,GACnB,IAAIlH,EAEJ,OAAgB,OADhBA,EAAQkH,EAAQ4B,aAAa,iBACK,UAAV9I,GAG1B8yF,EAAM6pD,aAAe,SAAU9zI,GAC7B,IAAIJ,EAAQ0N,EAAM68E,EAAU9rF,EAAS6C,EAAQ2uD,EAAKkiF,EAGlD,OAAK8B,EAFLx1I,EAAUjE,QAML22I,EAAK1yI,EAAS,gBAKnB0zI,EAAkB1zI,EAAQ4B,aAAa,yBACvCkqF,EAAW9rF,EAAQ4B,aAAa,cAAgB,SAE5CqD,EAAQjF,EAAS4rF,EAAMwlD,qBACzB7vI,EAAS4wI,EAAQnyI,EAAS,qBAC1B6C,EAASsvI,EAAQnyI,EAAS,iCAAmCA,EAAQ6C,OACrE2uD,EAAM2gF,EAAQnyI,EAAS,iCAAmCA,EAAQ4B,aAAa,WAAasqH,SAAS1vC,KAExE,QAAzB35E,EAAOlC,gBACT6wD,EAAMA,EAAIhxD,QAAQ,QAAS,KAGL,wBAApBR,EAAQ01I,SACVzmI,EAAO,IAAI0mI,SAAS31I,GAEN,MAAVuB,GACF0N,EAAKyuH,OAAOn8H,EAAOnJ,KAAMmJ,EAAOzI,QAGlCmW,EAAOilI,EAAiBl0I,EAASuB,GAGnC6wI,EAAQpyI,EAAS,oBAAqB,MACtCoyI,EAAQpyI,EAAS,+BAAgC,MACjDoyI,EAAQpyI,EAAS,+BAAgC,OACxCiF,EAAQjF,EAAS4rF,EAAMqlD,sBAAwBhsI,EAAQjF,EAAS4rF,EAAMulD,sBAC/EtuI,EAAS7C,EAAQ4B,aAAa,eAC9B4vD,EAAMxxD,EAAQ4B,aAAa,YAC3BqN,EAAOilI,EAAiBl0I,EAASA,EAAQ4B,aAAa,kBAEtDiB,EAAS7C,EAAQ4B,aAAa,eAC9B4vD,EAAMo6B,EAAMpP,KAAKx8E,GACjBiP,EAAOjP,EAAQ4B,aAAa,gBAG9BiqF,EAAK,CACHrmF,KAAM3C,GAAU,MAChB2uD,IAAKA,EACLviD,KAAMA,EACN68E,SAAUA,EACVunD,WAAY,SAAUrvD,EAAK/2E,GACzB,OAAIylI,EAAK1yI,EAAS,kBAAmB,CAACgkF,EAAK/2E,IAClCylI,EAAK1yI,EAAS,YAAa,CAACgkF,KAEnC0uD,EAAK1yI,EAAS,iBACP,IAGX+wH,QAAS,WACP,IAAI/8G,EAEJ,OADAA,EAAO,GAAKsB,UAAU1a,OAASM,EAAMlD,KAAKsd,UAAW,GAAK,GACnDo9H,EAAK1yI,EAAS,eAAgBgU,IAEvClV,MAAO,WACL,IAAIkV,EAEJ,OADAA,EAAO,GAAKsB,UAAU1a,OAASM,EAAMlD,KAAKsd,UAAW,GAAK,GACnDo9H,EAAK1yI,EAAS,aAAcgU,IAErCsqD,SAAU,WACR,IAAItqD,EAEJ,OADAA,EAAO,GAAKsB,UAAU1a,OAASM,EAAMlD,KAAKsd,UAAW,GAAK,GACnDo9H,EAAK1yI,EAAS,gBAAiBgU,IAExCy/H,YAAaM,EAAcviF,GAC3BkiF,gBAAoC,MAAnBA,GAA+C,UAApBA,IAEvCf,EAAehxI,KAtEpB+wI,EAAK1yI,EAAS,iBACP,KAwEX4rF,EAAMgqD,sBAAwB,SAAUj0I,GACtC,IAAIJ,EAAQC,EAIZ,GAFAA,GADAD,EAASxF,MACKyF,KAed,OATID,EAAOnJ,MACTg6I,EAAQ5wI,EAAM,oBAAqB,CACjCpJ,KAAMmJ,EAAOnJ,KACbU,MAAOyI,EAAOzI,QAIlBs5I,EAAQ5wI,EAAM,4BAA6BD,EAAOs0I,gBAClDzD,EAAQ5wI,EAAM,+BAAgCD,EAAOK,aAAa,eAC3DwwI,EAAQ5wI,EAAM,+BAAgCD,EAAOK,aAAa,gBAG3EgqF,EAAMkqD,0BAA4B,SAAUn0I,GAC1C,IAAIsN,EAAM8mI,EAAyClzI,EAQnD,GAPO9G,KACP8G,GADO9G,KACQ6F,aAAa,gBAAkB,OAAOjB,cACrDsO,EAFOlT,KAEK6F,aAAa,eAEzBm0I,GADYp0I,EAAEsM,SAAWtM,EAAEuM,UACsB,QAAXrL,IAAqBoM,EACxB,MAAZtN,EAAEJ,QAA+B,IAAbI,EAAEJ,QAEjBw0I,EAC1B,OAAOp0I,EAAE7E,6BAGZ9E,KAAK+D,MACR,WACE,IAAIs4C,EAAGi+F,EAAgBpuI,EAAUkxI,EAAgBD,EAAezC,EAAMkD,EAAuBzD,EAASqC,EAAeU,EAAuBI,EAAcG,EAAc7D,EAAckE,EAA2BtD,EAGjN,GAFAE,EAAO9mD,EAAM8mD,KAAMxuI,EAAW0nF,EAAM1nF,SAAUiuI,EAAUvmD,EAAMumD,QAAS99F,EAAIu3C,EAAMv3C,EAAGm+F,EAAoB5mD,EAAM4mD,kBAAmBF,EAAiB1mD,EAAM0mD,eAAgBV,EAAehmD,EAAMgmD,aAAcuD,EAAgBvpD,EAAMupD,cAAeC,EAAiBxpD,EAAMwpD,eAAgBF,EAAwBtpD,EAAMspD,sBAAuBV,EAAgB5oD,EAAM4oD,cAAesB,EAA4BlqD,EAAMkqD,0BAA2BL,EAAe7pD,EAAM6pD,aAAcG,EAAwBhqD,EAAMgqD,sBAAuBN,EAAe1pD,EAAM0pD,aAErgB,qBAAXU,QAAqC,OAAXA,QAAkC,MAAfA,OAAOnqD,KAAc,CAC3E,GAAImqD,OAAOC,MACT,MAAM,IAAIl0I,MAAM,kEAGlBi0I,OAAOC,MAAQrqD,EACfoqD,OAAOE,eAAc,SAAUjpI,EAASkpI,EAAiBnyD,GACvD,IAAK/2E,EAAQwmI,YACX,OAAOnB,EAAetuD,MAK5B4H,EAAM5tF,MAAQ,WACZ,GAAIqC,OAAO+1I,cACT,MAAM,IAAIr0I,MAAM,sCAiDlB,OA9CA1B,OAAOlE,iBAAiB,YAAY,WAMlC,OALAk4C,EAAEu3C,EAAM2lD,oBAAoBrzI,SAAQ,SAAU0nE,GAC5C,GAAIusE,EAAQvsE,EAAI,gBACd,OAAOuvE,EAAcvvE,MAGlBvxB,EAAEu3C,EAAM6lD,qBAAqBvzI,SAAQ,SAAU0nE,GACpD,GAAIusE,EAAQvsE,EAAI,gBACd,OAAOuvE,EAAcvvE,SAI3B1hE,EAAS5D,SAAUsrF,EAAM6lD,oBAAqB,gBAAiB0D,GAC/DjxI,EAAS5D,SAAUsrF,EAAM6lD,oBAAqB,eAAgB0D,GAC9DjxI,EAAS5D,SAAUsrF,EAAM8lD,sBAAuB,gBAAiByD,GACjEjxI,EAAS5D,SAAUsrF,EAAM8lD,sBAAuB,eAAgByD,GAChEjxI,EAAS5D,SAAUsrF,EAAMolD,kBAAmB,QAAS8E,GACrD5xI,EAAS5D,SAAUsrF,EAAMolD,kBAAmB,QAASkE,GACrDhxI,EAAS5D,SAAUsrF,EAAMolD,kBAAmB,QAASwD,GACrDtwI,EAAS5D,SAAUsrF,EAAMolD,kBAAmB,QAASoE,GACrDlxI,EAAS5D,SAAUsrF,EAAMolD,kBAAmB,QAASyE,GACrDvxI,EAAS5D,SAAUsrF,EAAMolD,kBAAmB,QAASsE,GACrDpxI,EAAS5D,SAAUsrF,EAAMqlD,oBAAqB,QAAS6E,GACvD5xI,EAAS5D,SAAUsrF,EAAMqlD,oBAAqB,QAASiE,GACvDhxI,EAAS5D,SAAUsrF,EAAMqlD,oBAAqB,QAASuD,GACvDtwI,EAAS5D,SAAUsrF,EAAMqlD,oBAAqB,QAASmE,GACvDlxI,EAAS5D,SAAUsrF,EAAMqlD,oBAAqB,QAASwE,GACvDvxI,EAAS5D,SAAUsrF,EAAMulD,oBAAqB,SAAU+D,GACxDhxI,EAAS5D,SAAUsrF,EAAMulD,oBAAqB,SAAUqD,GACxDtwI,EAAS5D,SAAUsrF,EAAMulD,oBAAqB,SAAUsE,GACxDvxI,EAAS5D,SAAUsrF,EAAMwlD,mBAAoB,SAAU8D,GACvDhxI,EAAS5D,SAAUsrF,EAAMwlD,mBAAoB,SAAUoD,GACvDtwI,EAAS5D,SAAUsrF,EAAMwlD,mBAAoB,SAAUqE,GACvDvxI,EAAS5D,SAAUsrF,EAAMwlD,mBAAoB,UAAU,SAAUzvI,GAC/D,OAAOuyD,YAAW,WAChB,OAAOkhF,EAAezzI,KACrB,OAELuC,EAAS5D,SAAUsrF,EAAMwlD,mBAAoB,YAAagE,GAC1DlxI,EAAS5D,SAAUsrF,EAAMwlD,mBAAoB,gBAAiB+D,GAC9DjxI,EAAS5D,SAAUsrF,EAAMylD,uBAAwB,QAASyE,GAC1D5xI,EAAS5D,SAAUsrF,EAAMylD,uBAAwB,QAAS6D,GAC1DhxI,EAAS5D,SAAUsrF,EAAMylD,uBAAwB,QAASmD,GAC1DtwI,EAAS5D,SAAUsrF,EAAMylD,uBAAwB,QAASuE,GAC1Dt1I,SAASnE,iBAAiB,mBAAoBq2I,GAC9ClyI,SAASnE,iBAAiB,mBAAoBy1I,GACvCvxI,OAAO+1I,eAAgB,GAG5B/1I,OAAOurF,QAAUA,GAAS8mD,EAAKpyI,SAAU,yBAC3CsrF,EAAM5tF,SAEPhG,KAAK+D,QACP/D,KAAK+D,MAE0BnE,EAAOD,QACvCC,EAAOD,QAAUi0F,OAEL,2BAAZ,KAAY,oCAEb5zF,KAAK+D,O,gBChyBR,SAIA,YAEE,YACE,WACEA,KAAKstI,WAAa,CAChBgN,UACS,MAAQh2I,OAAOi2I,QAAQC,WAAa,MAAQl2I,OAAO6sE,uBAAyB,MAAQ7sE,OAAOlE,iBAEpGmtI,MAAO,SAAUvwI,EAAGJ,GAClB,OAAOgJ,EAAEmB,WAAWwmI,MAAMvwI,EAAGJ,IAE/B69I,WAAY,WACV,OAAO70I,EAAEmB,WAAW0zI,cAEtBC,oBAAqB,SAAU19I,GAC7B,OAAO4I,EAAEmB,WAAW2zI,oBAAoB19I,OAG3Cf,KAAK+D,QACP/D,KAlBK+D,MAmBR,IAAI4F,EAnBI5F,KAmBEstI,YACV,YACE,WACE,IAAItwI,EACAJ,EACAW,EACAhB,EAAI,GAAG4C,MACXyG,EAAE+0I,WAAa,SAAU39I,GACvB,IAAI4I,EAAGhJ,EAAGW,EAGV,IAAKqI,KAFLhJ,EAAI,GAEMI,EAAGO,EAAIP,EAAE4I,GAAIhJ,EAAEgJ,GAAKrI,EAE9B,OAAOX,GACNgJ,EAAEgX,QAAU,SAAUhX,EAAGhJ,GAC1B,OAAOI,EAAEf,KAAK2J,EAAGhJ,IAChBI,EAAI,WACL,IAAO4I,EACP,OAAqC,OAASA,EAAnCrB,SAASwY,gBAAgCH,SAAWhX,EAAI,SAAU5I,GAC3E,IAAI4I,EAEJ,IAAKA,EAAI5F,KAAM4F,GAAI,CACjB,GAAIA,EAAE6E,WAAaC,KAAKC,cAAgB/N,EAAEX,KAAK2J,EAAG5I,GAAI,OAAO4I,EAC7DA,EAAIA,EAAEmnD,aAPL,GAUFnnD,EAAEg1I,MAAQ,SAAU59I,GACvB,OAAOm7D,WAAWn7D,EAAG,IACpB4I,EAAEi1I,SAAW,SAAU79I,GACxB,IAAI4I,EACJ,OAAOA,EAAI,KAAM,WACf,IAAIhJ,EACJ,OAAOA,EAAI,GAAK2c,UAAU1a,OAAStC,EAAEN,KAAKsd,UAAW,GAAK,GAAI,MAAQ3T,EAAIA,EAAIA,EAAIurE,sBAAsB,SAAU5zE,GAChH,OAAO,WACL,OAAOqI,EAAI,KAAM5I,EAAEqnB,MAAM9mB,EAAGX,IAFwE,CAItGoD,SAEH4F,EAAEid,SAAW,SAAU7lB,EAAG4I,GAC3B,IAAIhJ,EAAGL,EAAGT,EAAG+B,EAAG0H,EAAGiqB,EACnB,OAA+BA,GAAxBjqB,EAAI,MAAQK,EAAIA,EAAI,IAAU1B,OAAQtH,EAAI2I,EAAEyd,WAAYzmB,EAAIgJ,EAAE2N,MAAMpX,EAAIyI,SAAS8rI,YAAY,WAAayK,UAAU99I,GAAG,GAAU,IAANJ,GAAWd,EAAEoX,KAAO,MAAQ3W,EAAIA,EAAI,GAAIT,EAAEknB,aAAezlB,IAAMM,EAAI/B,EAAEiI,eAAgBjI,EAAEiI,eAAiB,WACxO,OAAO/D,KAAKkvI,kBAAoB1yI,OAAOC,eAAeuD,KAAM,mBAAoB,CAC9ErD,IAAK,WACH,OAAO,KAEPkB,EAAE5B,KAAK+D,SACR,MAAQwvB,EAAIA,EAAIjrB,UAAU2e,cAAcpnB,GAAIA,GAChDyB,EAAI,WACL,IAAIP,EACJ,OAAOA,EAAIuH,SAAS8rI,YAAY,WAAayK,UAAU,QAAQ,GAAI,GAAK99I,EAAE+G,iBAAkB/G,EAAEkyI,iBAFzF,GAGFtpI,EAAEsF,MAAQ,SAAUlO,EAAG4I,GAC1B,OAAOhJ,EAAEX,KAAKe,EAAG4I,IAChBhJ,EAAI,WACL,IAAII,EAAG4I,EAAGhJ,EAAGW,EACb,OAAqC,OAASqI,EAAI,OAAShJ,EAAI,OAASW,GAAjEP,EAAIuH,SAASwY,iBAA0Dg5H,iBAAmBx4I,EAAIP,EAAEm5I,uBAAyBv5I,EAAII,EAAEi5I,mBAAqBrwI,EAAI5I,EAAEg5I,mBAF5J,GAGFpwI,EAAEm1I,KAAO,WACZ,IAAI/9I,EAAG4I,EAAGhJ,EAEV,IAAKA,EAAI,GAAII,EAAI4I,EAAI,EAAG,IAAMA,EAAG5I,IAAM4I,EAAGhJ,GAAK,IAAMI,GAAK,KAAOA,GAAK,KAAOA,GAAK,KAAOA,EAAI,IAAM,KAAOA,EAAI,IAAM,KAAOA,GAAK2R,KAAKkhB,MAAM,EAAIlhB,KAAKssD,UAAY,GAAG/7D,SAAS,IAAMyP,KAAKkhB,MAAM,GAAKlhB,KAAKssD,UAAU/7D,SAAS,IAE1N,OAAOtC,KAERX,KAAK+D,MAAO,WACb4F,EAAEo1I,SAAW,WACX,SAASh+I,EAAEA,GACT,IAAI4I,EAAGhJ,EACP,MAAQI,IAAMA,EAAI,KAAKJ,EAAI2H,SAAS88D,cAAc,MAAQof,KAAOzjF,EAAEkC,WAAYc,KAAKi7I,YAAcr+I,EAAE6jF,KAAyB,GAAnB76E,EAAIhJ,EAAE+uF,KAAK9sF,QAAgBmB,KAAKk7I,WAAal7I,KAAKi7I,aAAej7I,KAAKk7I,WAAal7I,KAAKi7I,YAAY97I,MAAM,GAAIyG,GAAI5F,KAAKqsC,OAASzvC,EAAE+uF,KAAKxsF,MAAM,IAGzP,IAAIyG,EAAGhJ,EAAGW,EAAGhB,EACb,OAAOS,EAAEm+I,KAAO,SAAUn+I,GACxB,OAAOA,aAAagD,KAAOhD,EAAI,IAAIgD,KAAKhD,IACvCA,EAAEU,UAAU09I,UAAY,WACzB,OAAOp7I,KAAKi7I,YAAY7rI,MAAM,IAAK,GAAGzL,KAAK,MAC1C3G,EAAEU,UAAU29I,QAAU,WACvB,IAAIr+I,EAAG4I,EACP,OAAO,OAAS5I,EAAI,OAAS4I,EAAI5F,KAAKk7I,WAAWhwI,MAAM,yBAA2BtF,EAAE,QAAK,GAAU5I,EAAI,KACtGA,EAAEU,UAAU49I,kBAAoB,WACjC,OAAOt7I,KAAKq7I,UAAUjsI,MAAM,KAAKjQ,MAAM,IACtCnC,EAAEU,UAAU69I,qBAAuB,WACpC,OAAOv7I,KAAKs7I,oBAAoBn8I,OAAO,GAAG,IACzCnC,EAAEU,UAAU89I,aAAe,WAC5B,IAAIx+I,EAAG4I,EACP,OAAO,OAAS5I,EAAI,OAAS4I,EAAI5F,KAAKu7I,uBAAuBrwI,MAAM,aAAetF,EAAE,QAAK,GAAU5I,EAAI,IACtGA,EAAEU,UAAU+9I,OAAS,WACtB,OAAOz7I,KAAKw7I,eAAetwI,MAAM,gCAChClO,EAAEU,UAAUg+I,aAAe,SAAU1+I,GACtC,IAAI4I,EACJ,OAAOA,EAAIhJ,EAAEI,GAAIgD,KAAK27I,UAAU3+I,IAAMT,EAAEyD,KAAKi7I,YAAar1I,IACzD5I,EAAEU,UAAUi+I,UAAY,SAAU3+I,GACnC,OAAOgD,KAAKi7I,eAAiB,MAAQj+I,EAAIA,EAAEi+I,iBAAc,IACxDj+I,EAAEU,UAAUk+I,WAAa,WAC1B,OAAO57I,KAAKk7I,YACXl+I,EAAEU,UAAUywC,OAAS,WACtB,OAAOnuC,KAAKi7I,aACXj+I,EAAEU,UAAUwB,SAAW,WACxB,OAAOc,KAAKi7I,aACXj+I,EAAEU,UAAUwnB,QAAU,WACvB,OAAOllB,KAAKi7I,aACXr+I,EAAI,SAAUI,GACf,OAAO4I,EAAE5I,EAAEo+I,YAAcp+I,EAAEq+I,YAC1Bz1I,EAAI,SAAU5I,GACf,OAAOO,EAAEP,EAAG,KAAOA,EAAIA,EAAI,KAC1BT,EAAI,SAAUS,EAAG4I,GAClB,OAAO5I,EAAEmC,MAAM,EAAGyG,EAAE/G,UAAY+G,GAC/BrI,EAAI,SAAUP,EAAG4I,GAClB,OAAO5I,EAAEmC,OAAOyG,EAAE/G,UAAY+G,GAC7B5I,EA5CQ,IA8Cbf,KAAK+D,MAAO,WACZ,IAAIhD,EAAI,SAAUA,EAAG4I,GACnB,OAAO,WACL,OAAO5I,EAAEqnB,MAAMze,EAAG2T,aAItB3T,EAAEi2I,YAAc,WACd,SAASj/I,EAAEA,EAAGW,EAAGhB,GACfyD,KAAKmI,SAAWvL,EAAGoD,KAAK87I,gBAAkB9+I,EAAEgD,KAAK87I,gBAAiB97I,MAAOA,KAAK+7I,gBAAkB/+I,EAAEgD,KAAK+7I,gBAAiB/7I,MAAOA,KAAKg8I,cAAgBh/I,EAAEgD,KAAKg8I,cAAeh8I,MAAOA,KAAKi8I,cAAgBj/I,EAAEgD,KAAKi8I,cAAej8I,MAAOA,KAAKk8I,kBAAoBl/I,EAAEgD,KAAKk8I,kBAAmBl8I,MAAOA,KAAKy1D,IAAM7vD,EAAEo1I,SAASG,KAAK59I,GAAG29I,WAAYl7I,KAAKm8I,SAAWv2I,EAAEo1I,SAASG,KAAK5+I,GAAG0+I,YAAaj7I,KAAK82I,YAG9X,OAAOl6I,EAAEw/I,gBAAkB,EAAGx/I,EAAEy/I,iBAAmB,EAAGz/I,EAAEgzI,QAAU,GAAIhzI,EAAEc,UAAU0gF,KAAO,WACvF,IAAIphF,EACJ,OAAOgD,KAAKioF,MAAQjoF,KAAKs8I,MAAQt8I,KAAKu8I,sCAAuCv8I,KAAKw8I,YAAY,GAAIx8I,KAAKioF,IAAI7J,OAAQp+E,KAAKs8I,MAAO,EAAI,mBAAsBt/I,EAAIgD,KAAKmI,UAAUs0I,eAAiBz/I,EAAEy/I,sBAAmB,QAAU,GAC3N7/I,EAAEc,UAAU0/F,OAAS,WACtB,OAAOp9F,KAAKioF,KAAOjoF,KAAKs8I,KAAOt8I,KAAKioF,IAAIy0D,aAAU,GACjD9/I,EAAEc,UAAUw+I,kBAAoB,SAAUl/I,GAC3C,OAAOA,EAAE2/I,iBAAmB38I,KAAKw8I,YAAYx/I,EAAE4/I,OAAS5/I,EAAE45C,YAAS,GAClEh6C,EAAEc,UAAUu+I,cAAgB,WAC7B,OAAOj8I,KAAK68I,WAAW,SAAU7/I,GAC/B,OAAO,WACL,IAAI4I,EACJ,OAAO,MAAQA,EAAI5I,EAAEirF,IAAIvwB,SAAW,IAAM9xD,EAAI5I,EAAEmL,SAAS20I,6BAA6B9/I,EAAEirF,IAAIkvD,aAAcn6I,EAAEirF,IAAImvD,kBAAkB,yBAA2Bp6I,EAAE+/I,QAAS,EAAI//I,EAAEmL,SAAS60I,4BAA4BhgJ,EAAEirF,IAAIvwB,OAAQ16D,EAAEirF,IAAIkvD,gBAHpN,CAKrBn3I,QACDpD,EAAEc,UAAUs+I,cAAgB,WAC7B,OAAOh8I,KAAK68I,WAAW,SAAU7/I,GAC/B,OAAO,WACL,OAAOA,EAAE+/I,QAAS,EAAI//I,EAAEmL,SAAS60I,4BAA4BhgJ,EAAEoC,YAAYg9I,kBAFxD,CAIrBp8I,QACDpD,EAAEc,UAAUq+I,gBAAkB,WAC/B,OAAO/7I,KAAK68I,WAAW,SAAU7/I,GAC/B,OAAO,WACL,OAAOA,EAAE+/I,QAAS,EAAI//I,EAAEmL,SAAS60I,4BAA4BhgJ,EAAEoC,YAAYi9I,kBAFxD,CAIrBr8I,QACDpD,EAAEc,UAAUo+I,gBAAkB,WAC/B,OAAO97I,KAAK68I,cACXjgJ,EAAEc,UAAU6+I,oCAAsC,WACnD,OAAO32I,EAAEid,SAAS,2BAA4B,CAC5C3P,KAAM,CACJuiD,IAAKz1D,KAAKy1D,IACVwyB,IAAKjoF,KAAKioF,QAGbrrF,EAAEc,UAAUu/I,iCAAmC,WAChD,OAAOr3I,EAAEid,SAAS,yBAA0B,CAC1C3P,KAAM,CACJuiD,IAAKz1D,KAAKy1D,IACVwyB,IAAKjoF,KAAKioF,QAGbrrF,EAAEc,UAAUo5I,UAAY,WACzB,OAAO92I,KAAKioF,IAAM,IAAIsvD,eAAkBv3I,KAAKioF,IAAI/J,KAAK,MAAOl+E,KAAKy1D,KAAK,GAAKz1D,KAAKioF,IAAI2nD,QAAU,IAAM5vI,KAAKZ,YAAYwwI,QAAS5vI,KAAKioF,IAAIuuD,iBAAiB,SAAU,oCAAqCx2I,KAAKioF,IAAIuuD,iBAAiB,sBAAuBx2I,KAAKm8I,UAAWn8I,KAAKioF,IAAIi1D,WAAal9I,KAAKk8I,kBAAmBl8I,KAAKioF,IAAIklD,OAASntI,KAAKi8I,cAAej8I,KAAKioF,IAAI9nE,QAAUngB,KAAKg8I,cAAeh8I,KAAKioF,IAAIk1D,UAAYn9I,KAAK+7I,gBAAiB/7I,KAAKioF,IAAIm1D,QAAUp9I,KAAK87I,iBACtcl/I,EAAEc,UAAUm/I,WAAa,SAAU7/I,GACpC,OAAOgD,KAAKioF,KAAOjoF,KAAKi9I,mCAAoC,MAAQjgJ,GAAKA,EAAEf,KAAK+D,MAAOA,KAAKq9I,gBAAa,GACxGzgJ,EAAEc,UAAU8+I,YAAc,SAAUx/I,GACrC,IAAI4I,EACJ,OAAO5F,KAAK+kE,SAAW/nE,EAAG,mBAAsB4I,EAAI5F,KAAKmI,UAAU+zI,kBAAoBt2I,EAAEs2I,kBAAkBl8I,KAAK+kE,eAAY,GAC3HnoE,EAAEc,UAAU2/I,QAAU,WACvB,IAAIrgJ,EACJ,OAAOgD,KAAKw8I,YAAY,GAAI,mBAAsBx/I,EAAIgD,KAAKmI,UAAUm1I,iBAAmBtgJ,EAAEsgJ,kBAAmBt9I,KAAKmI,SAAW,KAAMnI,KAAKioF,IAAM,MAC7IrrF,EAzDW,IA2DhBX,KAAK+D,MAAO,WAOZ4F,EAAE23I,YAAc,WACd,SAAS33I,IACP5F,KAAKw9I,QARD,SAAUxgJ,EAAG4I,GACnB,OAAO,WACL,OAAO5I,EAAEqnB,MAAMze,EAAG2T,YAMHvc,CAAEgD,KAAKw9I,QAASx9I,MAAOA,KAAKy9I,kBAAoBz9I,KAAK09I,0BAA2B19I,KAAK29I,gBAAkB39I,KAAK49I,wBAG7H,IAAIhhJ,EACJ,OAAOA,EAAI,IAAKgJ,EAAEi4I,WAAa,8PAAyRj4I,EAAElI,UAAU45D,KAAO,WACzU,OAAOt3D,KAAK2uF,aAAU,GAAU3uF,KAAK2uF,SAAU,EAAI3uF,KAAK89I,2BAA4B99I,KAAK+9I,yBAA0B/9I,KAAKg+I,mBACvHp4I,EAAElI,UAAU85D,KAAO,WACpB,OAAOx3D,KAAK2uF,UAAY3uF,KAAKi+I,QAAUj+I,KAAKi+I,QAAS,EAAIj+I,KAAKk+I,oBAAoB,SAAUlhJ,GAC1F,OAAO,WACL,OAAOA,EAAEmhJ,2BAA4BnhJ,EAAEohJ,gBAAiBphJ,EAAE2xF,SAAU,EAAI3xF,EAAEihJ,QAAS,GAFL,CAIhFj+I,aAAU,GACX4F,EAAElI,UAAU2gJ,SAAW,SAAUrhJ,GAClC,OAAOgD,KAAKjD,MAAQC,EAAGgD,KAAK8I,WAC3BlD,EAAElI,UAAUogJ,yBAA2B,WACxC,OAAOv5I,SAASwb,KAAK29E,aAAa19F,KAAKy9I,kBAAmBl5I,SAASwb,KAAK4wH,aACvE/qI,EAAElI,UAAUqgJ,uBAAyB,WACtC,OAAO/9I,KAAK29I,gBAAgBjoF,MAAMG,MAAQ,EAAG71D,KAAK29I,gBAAgBjoF,MAAMy1B,QAAU,EAAG5mF,SAASwY,gBAAgB2gF,aAAa19F,KAAK29I,gBAAiBp5I,SAASkS,MAAOzW,KAAK8I,WACrKlD,EAAElI,UAAUwgJ,oBAAsB,SAAUlhJ,GAC7C,OAAOgD,KAAK29I,gBAAgBjoF,MAAMy1B,QAAU,EAAGhzB,WAAWn7D,EAAG,MAC5D4I,EAAElI,UAAUygJ,yBAA2B,WACxC,OAAOn+I,KAAK29I,gBAAgB5wF,WAAaxoD,SAASwY,gBAAgBqtD,YAAYpqE,KAAK29I,sBAAmB,GACrG/3I,EAAElI,UAAUsgJ,eAAiB,WAC9B,OAAO,MAAQh+I,KAAKs+I,gBAAkBt+I,KAAKs+I,gBAAkBt+I,KAAKs+I,gBAAkBzzC,YAAY7qG,KAAKw9I,QAAS5gJ,IAC7GgJ,EAAElI,UAAU0gJ,cAAgB,WAC7B,OAAOtzC,cAAc9qG,KAAKs+I,iBAAkBt+I,KAAKs+I,gBAAkB,MAClE14I,EAAElI,UAAU8/I,QAAU,WACvB,OAAOx9I,KAAKq+I,SAASr+I,KAAKjD,MAAQ4R,KAAKssD,SAAW,MACjDr1D,EAAElI,UAAUoL,QAAU,WACvB,OAAOqoE,sBAAsB,SAAUn0E,GACrC,OAAO,WACL,OAAOA,EAAE2gJ,gBAAgBjoF,MAAMG,MAAQ,GAAK,GAAK74D,EAAED,MAAQ,KAFlC,CAI3BiD,QACD4F,EAAElI,UAAUggJ,wBAA0B,WACvC,IAAI1gJ,EACJ,OAAOA,EAAIuH,SAAS88D,cAAc,UAAY53D,KAAO,WAAYzM,EAAEkoG,YAAcllG,KAAKZ,YAAYy+I,WAAY7gJ,GAC7G4I,EAAElI,UAAUkgJ,sBAAwB,WACrC,IAAI5gJ,EACJ,OAAOA,EAAIuH,SAAS88D,cAAc,QAAUmpE,UAAY,0BAA2BxtI,GAClF4I,EA1CW,IA4ChB3J,KAAK+D,MAAO,WAOZ4F,EAAE24I,eAAiB,WACjB,SAAS3hJ,EAAEA,GACToD,KAAK+G,WAAanK,EAAGoD,KAAKw+I,gBARtB,SAAUxhJ,EAAG4I,GACnB,OAAO,WACL,OAAO5I,EAAEqnB,MAAMze,EAAG2T,YAM0Bvc,CAAEgD,KAAKw+I,gBAAiBx+I,MAAOA,KAAKy+I,YAAc,IAAI74I,EAAE23I,YAGtG,IAAIhgJ,EAAGhB,EAAGT,EACV,OAAOA,EAAI8J,EAAEi2I,YAAat+I,EAAIzB,EAAEsgJ,gBAAiB7/I,EAAIT,EAAEugJ,gBAAiBz/I,EAAEc,UAAUghJ,kCAAoC,SAAU1hJ,EAAG4I,GACnI,OAAO5F,KAAK+G,WAAW43I,+BAA+B3hJ,EAAG4I,IACxDhJ,EAAEc,UAAUkhJ,aAAe,SAAU5hJ,GACtC,OAAOA,EAAE6hJ,eAAgB7hJ,EAAE8hJ,gBAAiB9hJ,EAAE+hJ,sBAC7CniJ,EAAEc,UAAUshJ,oBAAsB,SAAUhiJ,GAC7C,OAAOgD,KAAKy+I,YAAYJ,SAAS,GAAIrhJ,EAAEiiJ,qBAAuB,YAAcjiJ,EAAEuJ,OAASvG,KAAKk/I,4BAA8Bl/I,KAAKw+I,mBAC9H5hJ,EAAEc,UAAUyhJ,uBAAyB,SAAUniJ,GAChD,OAAOgD,KAAKy+I,YAAYJ,SAASrhJ,EAAE+nE,WAClCnoE,EAAEc,UAAU0hJ,sBAAwB,SAAUpiJ,GAC/C,OAAOA,EAAEqiJ,gBACRziJ,EAAEc,UAAU4hJ,iCAAmC,SAAUtiJ,EAAG4I,GAC7D,OAAQA,GACN,KAAKrI,EACL,KAAKhB,EACH,OAAOyD,KAAKu/E,SAEd,QACE,OAAOviF,EAAEqiJ,iBAEZziJ,EAAEc,UAAU6hJ,qBAAuB,SAAUviJ,GAC9C,OAAOgD,KAAKw/I,mBACX5iJ,EAAEc,UAAU+hJ,eAAiB,SAAUziJ,GACxC,OAAOA,EAAE0iJ,kBACR9iJ,EAAEc,UAAUiiJ,gBAAkB,WAC/B,OAAO3/I,KAAKu/E,UACX3iF,EAAEc,UAAUwhJ,0BAA4B,WACzC,OAAOl/I,KAAK4/I,mBAAqBznF,WAAWn4D,KAAKw+I,gBAAiBx+I,KAAK+G,WAAW84I,mBACjFjjJ,EAAEc,UAAU8gJ,gBAAkB,WAC/B,OAAOx+I,KAAKy+I,YAAYnnF,QACvB16D,EAAEc,UAAU8hJ,gBAAkB,WAC/B,OAAOx/I,KAAKy+I,YAAYjnF,OAAQ4kB,aAAap8E,KAAK4/I,qBACjDhjJ,EAAEc,UAAU6hF,OAAS,WACtB,OAAOj7E,OAAO6rH,SAAS5wC,UACtB3iF,EAvCc,IAyCnBX,KAAK+D,MAAO,WACZ,IAAIhD,EAAI,SAAUA,EAAG4I,GACnB,OAAO,WACL,OAAO5I,EAAEqnB,MAAMze,EAAG2T,aAItB3T,EAAEk6I,QAAU,WACV,SAASljJ,EAAEgJ,GACT5F,KAAKmI,SAAWvC,EAAG5F,KAAK+/I,WAAa/iJ,EAAEgD,KAAK+/I,WAAY//I,MAAOA,KAAKggJ,WAAahjJ,EAAEgD,KAAKggJ,WAAYhgJ,MAGtG,OAAOpD,EAAEc,UAAUuE,MAAQ,WACzB,OAAOjC,KAAKgC,aAAU,GAAU5B,iBAAiB,WAAYJ,KAAKggJ,YAAY,GAAK5/I,iBAAiB,OAAQJ,KAAK+/I,YAAY,GAAK//I,KAAKgC,SAAU,IAChJpF,EAAEc,UAAU2E,KAAO,WACpB,OAAOrC,KAAKgC,SAAW1B,oBAAoB,WAAYN,KAAKggJ,YAAY,GAAK1/I,oBAAoB,OAAQN,KAAK+/I,YAAY,GAAK//I,KAAKgC,SAAU,QAAM,GACnJpF,EAAEc,UAAUkB,KAAO,SAAU5B,EAAGJ,GACjC,OAAOI,EAAI4I,EAAEo1I,SAASG,KAAKn+I,GAAIgD,KAAKgiE,OAAO,OAAQhlE,EAAGJ,IACrDA,EAAEc,UAAU+G,QAAU,SAAUzH,EAAGJ,GACpC,OAAOI,EAAI4I,EAAEo1I,SAASG,KAAKn+I,GAAIgD,KAAKgiE,OAAO,UAAWhlE,EAAGJ,IACxDA,EAAEc,UAAUsiJ,WAAa,SAAUhjJ,GACpC,IAAIJ,EAAGW,EAAGhB,EAAGT,EACb,OAAOkE,KAAKigJ,yBAA2BnkJ,EAAI,OAASyB,EAAIP,EAAEkiF,OAAS3hF,EAAE2iJ,gBAAa,IAAWtjJ,EAAIgJ,EAAEo1I,SAASG,KAAK72I,OAAO6rH,UAAW5zH,EAAIT,EAAEqkJ,sBAAuBngJ,KAAKmI,SAASi4I,iDAAiDxjJ,EAAGL,SAAM,GACvOK,EAAEc,UAAUqiJ,WAAa,SAAU/iJ,GACpC,OAAO4I,EAAEg1I,MAAM,SAAU59I,GACvB,OAAO,WACL,OAAOA,EAAEqjJ,YAAa,GAFX,CAIbrgJ,QACDpD,EAAEc,UAAUuiJ,qBAAuB,WACpC,OAAOjgJ,KAAKsgJ,gBACX1jJ,EAAEc,UAAU4iJ,aAAe,WAC5B,OAAOtgJ,KAAKqgJ,YAAc,aAAe97I,SAASob,YACjD/iB,EAAEc,UAAUskE,OAAS,SAAUhlE,EAAG4I,EAAGhJ,GACtC,IAAIW,EACJ,OAAOA,EAAI,CACT2iJ,WAAY,CACVC,sBAAuBvjJ,IAExB29I,QAAQv9I,EAAI,SAASO,EAAG,KAAMqI,IAChChJ,EAjCO,IAmCZX,KAAK+D,MAAO,WACZ4F,EAAE26I,YAAc,WACd,SAASvjJ,EAAEA,GACT,IAAI4I,EAAMrI,EAAGM,EAAG0H,EAAGiqB,EAEnB,IAAKxvB,KAAKwI,SAAW,GAAIjL,EAAI,EAAGgI,EAAIvI,EAAE6B,OAAQ0G,EAAIhI,EAAGA,KAAKiyB,EAAIxyB,EAAEO,IAAMkN,WAAaC,KAAKC,eAAiB9M,EAAI2xB,EAAEi8F,WAAe,OAAS7lH,EAAI5F,KAAKwI,UAAU3K,GAAK+H,EAAE/H,GAAK+H,EAAE/H,GAAK,CAC3K4L,KAAM3N,EAAE0zB,GACRgxH,QAASjkJ,EAAEizB,GACXhnB,SAAU,KACPA,SAAS5J,KAAK4wB,IAGrB,IAAI5pB,EAAGhJ,EAAGW,EAAGhB,EAAGT,EAChB,OAAOkB,EAAEyjJ,gBAAkB,SAAUzjJ,GACnC,IAAI4I,EACJ,OAAO,IAAI5F,KAAK,OAAS4F,EAAI,MAAQ5I,EAAIA,EAAE0jJ,gBAAa,GAAU96I,EAAI,KACrE5I,EAAEU,UAAUijJ,kBAAoB,SAAU3jJ,GAC3C,OAAOA,KAAKgD,KAAKwI,UAChBxL,EAAEU,UAAUkjJ,2BAA6B,WAC1C,IAAI5jJ,EACJ,OAAO,WACL,IAAIJ,EAAGW,EAGP,IAAKP,KAFcO,EAAI,GAAvBX,EAAIoD,KAAKwI,SAEQ5L,EAAEI,GAAGwjJ,SAAcjjJ,EAAEqB,KAAK5B,GAE3C,OAAOO,GACPtB,KAAK+D,MAAM2D,KAAK,KACjB3G,EAAEU,UAAUmjJ,8BAAgC,SAAU7jJ,GACvD,OAAOgD,KAAK8gJ,oCAAoC,SAAU9jJ,IACzDA,EAAEU,UAAUqjJ,kCAAoC,SAAU/jJ,GAC3D,OAAOgD,KAAK8gJ,oCAAoC,aAAc9jJ,IAC7DA,EAAEU,UAAUojJ,oCAAsC,SAAU9jJ,EAAG4I,GAChE,IAAIhJ,EAAGW,EAAGhB,EAAGT,EAAG+B,EAAG0H,EAGnB,IAAKhI,KAFcM,EAAI,GAAvBtB,EAAIyD,KAAKwI,SAEcjD,GAAVzJ,EAAIS,EAAEgB,IAAUkM,KAAM7M,EAAId,EAAE0M,SAAUjD,IAAMvI,GAAK4I,EAAE+6I,kBAAkBpjJ,IAAMM,EAAEe,KAAKhC,EAAE,IAEjG,OAAOiB,GACNb,EAAEU,UAAUsjJ,uBAAyB,WACtC,IAAIhkJ,EAAG4I,EAAGhJ,EAAGW,EAAGhB,EAAGT,EAAG+B,EAGtB,IAAK+H,KAFLhJ,EAAI,GAAIW,EAAIyC,KAAKwI,SAEM3K,GAAVtB,EAAIgB,EAAEqI,IAAU6D,KAAM3N,EAAIS,EAAEikJ,QAASxjJ,EAAIT,EAAEiM,SAAU,MAAQ3K,GAAK/B,EAAIkB,EAAE6B,OAAS,GAAKjC,EAAEgC,KAAKylB,MAAMznB,EAAGI,EAAEmC,MAAM,IAAMvC,EAAEgC,KAAKylB,MAAMznB,EAAGI,GAEjJ,OAAOJ,GACNI,EAAEU,UAAUujJ,aAAe,SAAUjkJ,GACtC,IAAI4I,EACJ,OAAO,OAASA,EAAI5F,KAAKkhJ,sBAAsBlkJ,IAAM4I,EAAEC,aAAa,gBAAa,GAChF7I,EAAEU,UAAUwjJ,sBAAwB,SAAUlkJ,GAC/C,IAAIJ,EAAGW,EAAGhB,EAAGT,EAGb,IAAKS,KAFLK,OAAI,EAAQd,EAAIkE,KAAKwI,SAERjL,EAAIzB,EAAES,GAAGiM,SAAU5C,EAAErI,EAAE,GAAIP,KAAOJ,EAAIW,EAAE,IAErD,OAAOX,GACNd,EAAI,SAAUkB,GACf,OAAOJ,EAAEI,GAAK,SAAWO,EAAEP,GAAK,kBAAe,GAC9CT,EAAI,SAAUS,GACf,MAAO,WAAaA,EAAE6I,aAAa,0BAClCjJ,EAAI,SAAUI,GAEf,MAAoC,WAAzBA,EAAE6T,QAAQ5L,eACpB1H,EAAI,SAAUP,GACf,IAAI4I,EACJ,MAAoC,WAA7BA,EAAI5I,EAAE6T,QAAQ5L,gBAAgC,SAAWW,GAAK,eAAiB5I,EAAE6I,aAAa,QACpGD,EAAI,SAAU5I,EAAG4I,GAElB,MAAoC,SAAzB5I,EAAE6T,QAAQ5L,eAA+BjI,EAAE6I,aAAa,UAAYD,GAC9E5I,EApEW,IAsEhBf,KAAK+D,MAAO,WACZ4F,EAAEu7I,SAAW,WACX,SAASnkJ,EAAEA,EAAG4I,GACZ5F,KAAKohJ,YAAcpkJ,EAAGgD,KAAKqhJ,YAAcz7I,EAG3C,OAAO5I,EAAEm+I,KAAO,SAAUn+I,GACxB,OAAOA,aAAagD,KAAOhD,EAAI,iBAAmBA,EAAIgD,KAAKshJ,eAAetkJ,GAAKgD,KAAKuhJ,gBAAgBvkJ,IACnGA,EAAEskJ,eAAiB,SAAUtkJ,GAC9B,IAAI4I,EACJ,OAAOA,EAAIrB,SAAS88D,cAAc,SAAWM,UAAY3kE,EAAGgD,KAAKuhJ,gBAAgB37I,IAChF5I,EAAEukJ,gBAAkB,SAAUvkJ,GAC/B,IAAIJ,EAAML,EAAGT,EACb,OAAOS,EAAIS,EAAEi9E,cAAc,QAASr9E,EAAI,OAASd,EAAIkB,EAAEi9E,cAAc,SAAWn+E,EAAIyI,SAAS88D,cAAc,QAA+C,IAAIrhE,KAAtC4F,EAAE26I,YAAYE,gBAAgBlkJ,GAAgBK,IACrKI,EAAEU,UAAU+pC,MAAQ,WACrB,OAAO,IAAIznC,KAAKZ,YAAYY,KAAKohJ,YAAaphJ,KAAKqhJ,YAAYjpD,WAAU,KACxEp7F,EAAEU,UAAU8jJ,gBAAkB,WAC/B,IAAIxkJ,EAAGJ,EACP,OAAOA,EAAI,OAASI,EAAIgD,KAAKyhJ,WAAW,SAAWzkJ,EAAI,IAAK,IAAI4I,EAAEo1I,SAASp+I,IAC1EI,EAAEU,UAAUgkJ,qBAAuB,WACpC,OAAO1hJ,KAAKyhJ,WAAW,kBACtBzkJ,EAAEU,UAAUikJ,oBAAsB,SAAU3kJ,GAC7C,IACE,OAAOgD,KAAKqhJ,YAAYpnE,cAAc,QAAUj9E,EAAI,eAAiBA,EAAI,MACzE,MAAO4I,MACR5I,EAAEU,UAAUkkJ,qBAAuB,WACpC,OAAO5hJ,KAAKqhJ,YAAYl2I,iBAAiB,oCACxCnO,EAAEU,UAAUmkJ,wBAA0B,SAAU7kJ,GACjD,OAAOgD,KAAKqhJ,YAAYpnE,cAAc,IAAMj9E,EAAI,gCAC/CA,EAAEU,UAAUokJ,sCAAwC,SAAU9kJ,GAC/D,IAAI4I,EAAGhJ,EAAGW,EAAGhB,EAAGT,EAEhB,IAAsCA,EAAI,GAAIc,EAAI,EAAGW,GAAhDhB,EAAIyD,KAAK4hJ,wBAA6C/iJ,OAAQtB,EAAIX,EAAGA,IAAKgJ,EAAIrJ,EAAEK,GAAII,EAAE6kJ,wBAAwBj8I,EAAEgkE,KAAO9tE,EAAE8C,KAAKgH,GAEnI,OAAO9J,GACNkB,EAAEU,UAAUqkJ,8BAAgC,WAC7C,OAAO/hJ,KAAKqhJ,YAAYpnE,cAAc,gBACrCj9E,EAAEU,UAAUskJ,UAAY,SAAUhlJ,GACnC,OAAO,MAAQgD,KAAK2hJ,oBAAoB3kJ,IACvCA,EAAEU,UAAUukJ,cAAgB,WAC7B,MAAO,eAAiBjiJ,KAAK0hJ,wBAC5B1kJ,EAAEU,UAAUwkJ,YAAc,WAC3B,MAAO,aAAeliJ,KAAK0hJ,wBAC1B1kJ,EAAEU,UAAUykJ,YAAc,WAC3B,MAAO,WAAaniJ,KAAKyhJ,WAAW,kBACnCzkJ,EAAEU,UAAU+jJ,WAAa,SAAUzkJ,GACpC,OAAOgD,KAAKohJ,YAAYH,aAAa,cAAgBjkJ,IACpDA,EA9CQ,IAgDbf,KAAK+D,MAAO,WACZ,IAAIhD,EAAI,GAAGmC,MAEXyG,EAAEq7D,SAAW,WACX,SAASr7D,KAET,IAAIhJ,EACJ,OAAOgJ,EAAEg6F,OAAS,WAChB,IAAOhjG,EAAGW,EAAGhB,EACb,OAAOgB,EAAIgc,UAAU,GAAI3c,EAAI2c,UAAU,IAA2Dhd,EAAI,SAAUS,EAAG4I,EAAGhJ,GACpHA,EAAEc,UAAYV,EAAEU,UAChB,IAAIH,EAAI,IAAIX,EACRL,EAAIS,EAAEqnB,MAAM9mB,EAAGqI,GACnB,OAAOpJ,OAAOD,KAAOA,EAAIA,EAAIgB,EAJuE,CAKpGyC,KAL6C,GAAKuZ,UAAU1a,OAAS7B,EAAEf,KAAKsd,UAAW,GAAK,IAKnF,gBAAmBpR,SAAW5K,EAAGhB,EAAEqjG,OAAOhjG,GAAIL,GACxDqJ,EAAElI,UAAU0kJ,WAAa,SAAUplJ,GACpC,OAAOgD,KAAKmI,SAASk6I,eAAeriJ,KAAKsiJ,SAAUtlJ,IAAKgD,KAAKmI,SAASo6I,aAAaviJ,KAAKsiJ,UACvF18I,EAAElI,UAAU8kJ,eAAiB,WAC9B,OAAOxiJ,KAAKmI,SAASs6I,mBACpB78I,EAAElI,UAAUglJ,oBAAsB,SAAU1lJ,GAC7C,IAAI4I,EACJ,MAAO,UAAY5I,EAAE6I,aAAa,wBAA0B7I,IAAK4I,EAAIrB,SAAS88D,cAAc,WAAa6jC,YAAcloG,EAAEkoG,YAAat/F,EAAEsnI,OAAQ,EAAItwI,EAAEgJ,EAAG5I,GAAI4I,IAC5JhJ,EAAI,SAAUI,EAAG4I,GAClB,IAAIhJ,EAAGW,EAAGhB,EAAGT,EAAG+B,EAAG0H,EAAGiqB,EAEtB,IAAuBjqB,EAAI,GAAI3I,EAAI,EAAGW,GAAjCzB,EAAI8J,EAAEyC,YAAiCxJ,OAAQtB,EAAIX,EAAGA,IAAeL,GAAVsB,EAAI/B,EAAEc,IAAUP,KAAMmzB,EAAI3xB,EAAEd,MAAOwI,EAAE3G,KAAK5B,EAAEwd,aAAaje,EAAGizB,IAE5H,OAAOjqB,GACNK,EAzBQ,IA2Bb3J,KAAK+D,MAAO,WACZ,IAAIhD,EACAJ,EACAW,EAAI,SAAUP,EAAG4I,GACnB,SAAShJ,IACPoD,KAAKZ,YAAcpC,EAGrB,IAAK,IAAIO,KAAKqI,EAAGrJ,EAAEN,KAAK2J,EAAGrI,KAAOP,EAAEO,GAAKqI,EAAErI,IAE3C,OAAOX,EAAEc,UAAYkI,EAAElI,UAAWV,EAAEU,UAAY,IAAId,EAAKI,EAAE2lJ,UAAY/8I,EAAElI,UAAWV,GAElFT,EAAI,GAAGoB,eAEXiI,EAAEg9I,iBAAmB,SAAUh9I,GAC7B,SAASrJ,EAAES,EAAG4I,EAAGhJ,GACfoD,KAAK6iJ,gBAAkB7lJ,EAAGgD,KAAK8iJ,YAAcl9I,EAAG5F,KAAK+iJ,UAAYnmJ,EAAGoD,KAAKgjJ,mBAAqBhjJ,KAAK6iJ,gBAAgBzB,YAAaphJ,KAAKijJ,eAAiBjjJ,KAAK8iJ,YAAY1B,YAAaphJ,KAAKkjJ,YAAcljJ,KAAK6iJ,gBAAgBxB,YAAarhJ,KAAKsiJ,QAAUtiJ,KAAK8iJ,YAAYzB,YAG3Q,OAAO9jJ,EAAEhB,EAAGqJ,GAAIrJ,EAAEmB,UAAUkiG,OAAS,SAAU5iG,GAC7C,OAAOgD,KAAKmjJ,gBAAkBnjJ,KAAKojJ,YAAapjJ,KAAKoiJ,WAAW,SAAUx8I,GACxE,OAAO,WACL,OAAOA,EAAEy9I,cAAez9I,EAAEm9I,WAAan9I,EAAE09I,iCAAkCtmJ,KAFf,CAI9DgD,QAAUA,KAAKwiJ,kBAChBjmJ,EAAEmB,UAAU0lJ,UAAY,WACzB,OAAOpjJ,KAAKujJ,gCAAiCvjJ,KAAKwjJ,4BAA6BxjJ,KAAKyjJ,uCAAwCzjJ,KAAK0jJ,kCAChInnJ,EAAEmB,UAAU2lJ,YAAc,WAC3B,IAAIrmJ,EACJ,OAAOA,EAAIgD,KAAK2jJ,uCAAwC3jJ,KAAK4jJ,gCAAiC5jJ,KAAK6jJ,gBAAiB7jJ,KAAK8jJ,sDAAsD9mJ,IAC9KT,EAAEmB,UAAUylJ,aAAe,WAC5B,OAAOnjJ,KAAK8iJ,YAAYX,eAAiBniJ,KAAK+jJ,+BAC7CxnJ,EAAEmB,UAAUqmJ,4BAA8B,WAC3C,OAAO/jJ,KAAKgjJ,mBAAmBpC,+BAAiC5gJ,KAAKijJ,eAAerC,8BACnFrkJ,EAAEmB,UAAU6lJ,8BAAgC,WAC7C,IAAIvmJ,EAAG4I,EAAGhJ,EAAGW,EAAGhB,EAEhB,IAA8CA,EAAI,GAAIqJ,EAAI,EAAGhJ,GAAxDW,EAAIyC,KAAKgkJ,gCAAqDnlJ,OAAQjC,EAAIgJ,EAAGA,IAAK5I,EAAIO,EAAEqI,GAAIrJ,EAAEqC,KAAK2F,SAASwb,KAAK6hD,YAAY5kE,IAElI,OAAOT,GACNA,EAAEmB,UAAU8lJ,0BAA4B,WACzC,IAAIxmJ,EAAG4I,EAAGhJ,EAAGW,EAAGhB,EAEhB,IAA0CA,EAAI,GAAIqJ,EAAI,EAAGhJ,GAApDW,EAAIyC,KAAKikJ,4BAAiDplJ,OAAQjC,EAAIgJ,EAAGA,IAAK5I,EAAIO,EAAEqI,GAAIrJ,EAAEqC,KAAK2F,SAASwb,KAAK6hD,YAAY5hE,KAAK0iJ,oBAAoB1lJ,KAEvJ,OAAOT,GACNA,EAAEmB,UAAU+lJ,qCAAuC,WACpD,IAAIzmJ,EAAG4I,EAAGhJ,EAAGW,EAAGhB,EAEhB,IAAmDA,EAAI,GAAIqJ,EAAI,EAAGhJ,GAA7DW,EAAIyC,KAAKkkJ,qCAA0DrlJ,OAAQjC,EAAIgJ,EAAGA,IAAK5I,EAAIO,EAAEqI,GAAIrJ,EAAEqC,KAAK2F,SAASwb,KAAKqqD,YAAYptE,IAEvI,OAAOT,GACNA,EAAEmB,UAAUgmJ,+BAAiC,WAC9C,IAAI1mJ,EAAG4I,EAAGhJ,EAAGW,EAAGhB,EAEhB,IAA+CA,EAAI,GAAIqJ,EAAI,EAAGhJ,GAAzDW,EAAIyC,KAAKmkJ,iCAAsDtlJ,OAAQjC,EAAIgJ,EAAGA,IAAK5I,EAAIO,EAAEqI,GAAIrJ,EAAEqC,KAAK2F,SAASwb,KAAK6hD,YAAY5kE,IAEnI,OAAOT,GACNA,EAAEmB,UAAUimJ,qCAAuC,WACpD,IAAI/9I,EAAGrI,EAAGhB,EAAGT,EAAG+B,EAAG0H,EAAGiqB,EAEtB,IAAiDA,EAAI,GAAI5pB,EAAI,EAAGrI,GAA3DgI,EAAIvF,KAAKokJ,mCAAwDvlJ,OAAQtB,EAAIqI,EAAGA,IAAK9J,EAAIyJ,EAAEK,GAAI/H,EAAIb,EAAElB,GAAIS,EAAIyD,KAAK8iJ,YAAYjB,wBAAwB/lJ,EAAE8tE,IAAKhtE,EAAEd,EAAG+B,EAAEoG,SAAUrH,EAAEL,EAAGT,GAAI0zB,EAAE5wB,KAAKf,GAEnM,OAAO2xB,GACNjzB,EAAEmB,UAAUomJ,sDAAwD,SAAU9mJ,GAC/E,IAAI4I,EAAGrI,EAAGhB,EAAGT,EAAMyJ,EAAGiqB,EAEtB,IAAKA,EAAI,GAAIjzB,EAAI,EAAGT,EAAIkB,EAAE6B,OAAQ/C,EAAIS,EAAGA,IAAegB,GAAVgI,EAAIvI,EAAET,IAAU0H,QAAiC2B,EAApBL,EAAE8+I,iBAAwBjsD,WAAU,GAAK5oE,EAAE5wB,KAAKhC,EAAEW,EAAGqI,IAEhI,OAAO4pB,GACNjzB,EAAEmB,UAAUkmJ,8BAAgC,WAC7C,IAAI5mJ,EAAG4I,EAAGrI,EAAGhB,EAAGT,EAAG+B,EAEnB,IAA0CA,EAAI,GAAI+H,EAAI,EAAGrJ,GAApDT,EAAIkE,KAAKskJ,4BAAiDzlJ,OAAQtC,EAAIqJ,EAAGA,IAAKrI,EAAIzB,EAAE8J,GAAI5I,EAAIgD,KAAK0iJ,oBAAoBnlJ,GAAIM,EAAEe,KAAKhC,EAAEW,EAAGP,IAE1I,OAAOa,GACNtB,EAAEmB,UAAUmmJ,cAAgB,WAC7B,OAAOt/I,SAASkS,KAAOzW,KAAKsiJ,SAC3B/lJ,EAAEmB,UAAU4lJ,+BAAiC,WAC9C,IAAItmJ,EACJ,OAAO,OAASA,EAAIgD,KAAK8iJ,YAAYf,iCAAmC/kJ,EAAEygG,aAAU,GACnFlhG,EAAEmB,UAAUsmJ,6BAA+B,WAC5C,OAAOhkJ,KAAKijJ,eAAelC,kCAAkC/gJ,KAAKgjJ,qBACjEzmJ,EAAEmB,UAAUumJ,yBAA2B,WACxC,OAAOjkJ,KAAKijJ,eAAepC,8BAA8B7gJ,KAAKgjJ,qBAC7DzmJ,EAAEmB,UAAUwmJ,kCAAoC,WACjD,OAAOlkJ,KAAKgjJ,mBAAmBhC,0BAC9BzkJ,EAAEmB,UAAUymJ,8BAAgC,WAC7C,OAAOnkJ,KAAKijJ,eAAejC,0BAC1BzkJ,EAAEmB,UAAU0mJ,gCAAkC,WAC/C,OAAOpkJ,KAAK6iJ,gBAAgBf,sCAAsC9hJ,KAAK8iJ,cACtEvmJ,EAAEmB,UAAU4mJ,yBAA2B,WACxC,OAAOtkJ,KAAKsiJ,QAAQn3I,iBAAiB,WACpC5O,EA/EgB,CAgFnBqJ,EAAEq7D,UAAWjkE,EAAI,SAAUA,GAC3B,IAAI4I,EACJ,OAAOA,EAAIrB,SAAS88D,cAAc,SAAW7mD,aAAa,OAAQ,oCAAqC5U,EAAE4U,aAAa,UAAWxd,EAAE4sE,IAAK,CACtI3lE,QAAS2B,EACTy+I,iBAAkBrnJ,IAEnBJ,EAAI,SAAUI,EAAG4I,GAClB,IAAIhJ,EACJ,OAAQA,EAAII,EAAE+vD,YAAcnwD,EAAE2nJ,aAAa3+I,EAAG5I,QAAK,IAErDf,KAAK+D,MAAO,WACZ,IAAIhD,EAAI,SAAUA,EAAG4I,GACnB,SAASrI,IACPyC,KAAKZ,YAAcpC,EAGrB,IAAK,IAAIT,KAAKqJ,EAAGhJ,EAAEX,KAAK2J,EAAGrJ,KAAOS,EAAET,GAAKqJ,EAAErJ,IAE3C,OAAOgB,EAAEG,UAAYkI,EAAElI,UAAWV,EAAEU,UAAY,IAAIH,EAAKP,EAAE2lJ,UAAY/8I,EAAElI,UAAWV,GAElFJ,EAAI,GAAGe,eAEXiI,EAAE4+I,cAAgB,SAAU5+I,GAC1B,SAAShJ,EAAEI,GACT,IAAI4I,GACJA,EAAIrB,SAAS88D,cAAc,SAAWM,UAAY3kE,EAAGgD,KAAKykJ,QAAU7+I,EAAEq0E,cAAc,QAASj6E,KAAKsiJ,QAAU18I,EAAEq0E,cAAc,QAG9H,OAAOj9E,EAAEJ,EAAGgJ,GAAIhJ,EAAEc,UAAUkiG,OAAS,SAAU5iG,GAC7C,OAAOgD,KAAKoiJ,WAAW,SAAUx8I,GAC/B,OAAO,WACL,OAAOA,EAAE8+I,qBAAsB9+I,EAAE++I,6BAA8B3nJ,KAF5C,CAIrBgD,QACDpD,EAAEc,UAAUgnJ,mBAAqB,WAClC,IAAI1nJ,EAAG4I,EACP,OAAOA,EAAIrB,SAASwb,KAAM/iB,EAAIuH,SAASkS,KAAM7Q,EAAEmnD,WAAWw3F,aAAavkJ,KAAKykJ,QAAS7+I,GAAI5I,EAAE+vD,WAAWw3F,aAAavkJ,KAAKsiJ,QAAStlJ,IAChIJ,EAAEc,UAAUinJ,2BAA6B,WAC1C,IAAI3nJ,EAAG4I,EAAGhJ,EAAGW,EAAGhB,EAAGT,EAEnB,IAAmCA,EAAI,GAAI8J,EAAI,EAAGhJ,GAA7CW,EAAIyC,KAAK4kJ,qBAA0C/lJ,OAAQjC,EAAIgJ,EAAGA,IAAKrJ,EAAIgB,EAAEqI,GAAI5I,EAAIgD,KAAK0iJ,oBAAoBnmJ,GAAIT,EAAE8C,KAAKrC,EAAEwwD,WAAWw3F,aAAavnJ,EAAGT,IAE3J,OAAOT,GACNc,EAAEc,UAAUknJ,kBAAoB,WACjC,OAAOrgJ,SAASwY,gBAAgB5R,iBAAiB,WAChDvO,EAvBa,CAwBhBgJ,EAAEq7D,WACJhlE,KAAK+D,MAAO,WACZ4F,EAAEi/I,KAAO,WACP,SAAS7nJ,EAAEA,GACTgD,KAAKmI,SAAWnL,EAAGgD,KAAK8kJ,YAAcvgJ,SAASwY,gBAGjD,OAAO/f,EAAEU,UAAU8jJ,gBAAkB,WACnC,OAAOxhJ,KAAK+kJ,cAAcvD,mBACzBxkJ,EAAEU,UAAUikJ,oBAAsB,SAAU3kJ,GAC7C,OAAOgD,KAAK+kJ,cAAcpD,oBAAoB3kJ,IAC7CA,EAAEU,UAAUqnJ,YAAc,WAC3B,OAAOn/I,EAAEu7I,SAASI,gBAAgBvhJ,KAAK8kJ,cACtC9nJ,EAAEU,UAAUkiG,OAAS,SAAU5iG,EAAG4I,GACnC,IAAIhJ,EAAGW,EAAGhB,EACV,OAAOA,EAAIS,EAAEgoJ,SAAUpoJ,EAAII,EAAE+F,MAAOxF,EAAIP,EAAE+lJ,UAAW/iJ,KAAKilJ,cAAc1nJ,GAAI,MAAQhB,EAAIyD,KAAKklJ,eAAe3oJ,EAAGgB,EAAGqI,GAAK5F,KAAKmlJ,YAAYvoJ,EAAGgJ,IAC1I5I,EAAEU,UAAUunJ,cAAgB,SAAUjoJ,GACvC,OAAOA,EAAIgD,KAAK8kJ,YAAYtqI,aAAa,0BAA2B,IAAMxa,KAAK8kJ,YAAYrqI,gBAAgB,4BAC1Gzd,EAAEU,UAAUwnJ,eAAiB,SAAUloJ,EAAGJ,EAAGW,GAC9C,OAAOqI,EAAEg9I,iBAAiBhjD,OAAO5/F,KAAKmI,SAAU5K,EAAGyC,KAAK+kJ,cAAen/I,EAAEu7I,SAAShG,KAAKn+I,GAAIJ,IAC1FI,EAAEU,UAAUynJ,YAAc,SAAUnoJ,EAAGJ,GACxC,OAAOgJ,EAAE4+I,cAAc5kD,OAAO5/F,KAAKmI,SAAUvL,EAAGI,IAC/CA,EApBI,IAsBTf,KAAK+D,MAAO,WAOZ4F,EAAEw/I,cAAgB,WAChB,SAASxoJ,EAAEA,GACToD,KAAKmI,SAAWvL,EAAGoD,KAAKqlI,SARpB,SAAUroI,EAAG4I,GACnB,OAAO,WACL,OAAO5I,EAAEqnB,MAAMze,EAAG2T,YAMiBvc,CAAEgD,KAAKqlI,SAAUrlI,MAAOA,KAAKqlI,SAAWz/H,EAAEi1I,SAAS76I,KAAKqlI,UAG7F,OAAOzoI,EAAEc,UAAUuE,MAAQ,WACzB,OAAOjC,KAAKgC,aAAU,GAAU5B,iBAAiB,SAAUJ,KAAKqlI,UAAU,GAAKrlI,KAAKqlI,WAAYrlI,KAAKgC,SAAU,IAC9GpF,EAAEc,UAAU2E,KAAO,WACpB,OAAOrC,KAAKgC,SAAW1B,oBAAoB,SAAUN,KAAKqlI,UAAU,GAAKrlI,KAAKgC,SAAU,QAAM,GAC7FpF,EAAEc,UAAU2nJ,gBAAkB,SAAUroJ,GACzC,OAAOA,EAAE8/H,kBACRlgI,EAAEc,UAAU4nJ,iBAAmB,SAAUtoJ,GAC1C,IAAI4I,EAAGhJ,EACP,OAAOgJ,EAAI5I,EAAE02B,EAAG92B,EAAII,EAAEgxB,EAAG1pB,OAAOq/F,SAAS/9F,EAAGhJ,IAC3CA,EAAEc,UAAU2nI,SAAW,SAAUroI,GAClC,OAAOgD,KAAKulJ,eAAe,CACzB7xH,EAAGpvB,OAAOkhJ,YACVx3H,EAAG1pB,OAAOmhJ,eAEX7oJ,EAAEc,UAAU6nJ,eAAiB,SAAUvoJ,GACxC,IAAI4I,EACJ,OAAO5F,KAAKiqE,SAAWjtE,EAAG,OAAS4I,EAAI5F,KAAKmI,UAAYvC,EAAE8/I,sBAAsB1lJ,KAAKiqE,eAAY,GAChGrtE,EAtBa,IAwBlBX,KAAK+D,MAAO,WACZ4F,EAAE+/I,cAAgB,WAChB,SAAS3oJ,EAAEA,GACTgD,KAAKqB,KAAOrE,EAAGgD,KAAK0D,KAAO,GAAI1D,KAAK4lJ,UAAY,GAGlD,IAAIhpJ,EACJ,OAAOI,EAAEU,UAAU0L,IAAM,SAAUpM,GAEjC,OAAWJ,EAAEI,KAASgD,KAAK4lJ,WAC1B5oJ,EAAEU,UAAUf,IAAM,SAAUK,GAC7B,IAAI4I,EACJ,GAAI5F,KAAKoJ,IAAIpM,GAAI,OAAO4I,EAAI5F,KAAK2jB,KAAK3mB,GAAIgD,KAAK6lJ,MAAM7oJ,GAAI4I,GACxD5I,EAAEU,UAAUooJ,IAAM,SAAU9oJ,EAAG4I,GAChC,OAAO5F,KAAK4jB,MAAM5mB,EAAG4I,GAAI5F,KAAK6lJ,MAAM7oJ,GAAI4I,GACvC5I,EAAEU,UAAUimB,KAAO,SAAU3mB,GAC9B,IAAI4I,EACJ,OAAOA,EAAIhJ,EAAEI,GAAIgD,KAAK4lJ,UAAUhgJ,IAC/B5I,EAAEU,UAAUkmB,MAAQ,SAAU5mB,EAAG4I,GAClC,IAAIrI,EACJ,OAAOA,EAAIX,EAAEI,GAAIgD,KAAK4lJ,UAAUroJ,GAAKqI,GACpC5I,EAAEU,UAAUmoJ,MAAQ,SAAU7oJ,GAC/B,IAAI4I,EAAGrI,EACP,OAAOA,EAAIX,EAAEI,IAAI4I,EAAI5F,KAAK0D,KAAKqvB,QAAQx1B,KAAS,GAAKyC,KAAK0D,KAAKutE,OAAOrrE,EAAG,GAAI5F,KAAK0D,KAAKwtD,QAAQ3zD,GAAIyC,KAAKmP,QACvGnS,EAAEU,UAAUyR,KAAO,WACpB,IAAInS,EAAG4I,EAAGhJ,EAAGW,EAAGhB,EAEhB,IAAsCA,EAAI,GAAIS,EAAI,EAAGJ,GAAhDW,EAAIyC,KAAK0D,KAAKutE,OAAOjxE,KAAKqB,OAA4BxC,OAAQjC,EAAII,EAAGA,IAAK4I,EAAIrI,EAAEP,GAAIT,EAAEqC,YAAYoB,KAAK4lJ,UAAUhgJ,IAEtH,OAAOrJ,GACNK,EAAI,SAAUI,GACf,OAAO4I,EAAEo1I,SAASG,KAAKn+I,GAAG4+I,cACzB5+I,EA/Ba,IAiClBf,KAAK+D,MAAO,WAOZ4F,EAAEmgJ,MAAQ,WACR,SAASnpJ,EAAEA,EAAGW,EAAGhB,GACfyD,KAAK+G,WAAanK,EAAGoD,KAAKuG,OAAShK,EAAGyD,KAAKgmJ,cARvC,SAAUhpJ,EAAG4I,GACnB,OAAO,WACL,OAAO5I,EAAEqnB,MAAMze,EAAG2T,YAMyCvc,CAAEgD,KAAKgmJ,cAAehmJ,MAAOA,KAAKwG,WAAaZ,EAAEm1I,OAAQ/6I,KAAKmwH,SAAWvqH,EAAEo1I,SAASG,KAAK59I,GAAIyC,KAAKimJ,QAAUjmJ,KAAK+G,WAAWk/I,QAASjmJ,KAAKk/E,MAAQ,cAAel/E,KAAKkmJ,cAAgB,GAGnP,IAAI3oJ,EACJ,OAAOX,EAAEc,UAAUuE,MAAQ,WACzB,MAAO,gBAAkBjC,KAAKk/E,OAASl/E,KAAKmmJ,mBAAmB,cAAenmJ,KAAKk/E,MAAQ,UAAWl/E,KAAKimJ,QAAQrH,aAAa5+I,YAAS,GACxIpD,EAAEc,UAAU0/F,OAAS,WACtB,IAAIpgG,EACJ,MAAO,YAAcgD,KAAKk/E,OAAS,OAASliF,EAAIgD,KAAKomJ,UAAYppJ,EAAEogG,SAAUp9F,KAAKqmJ,eAAgBrmJ,KAAKk/E,MAAQ,iBAAc,GAC5HtiF,EAAEc,UAAU6kE,SAAW,WACxB,IAAIvlE,EACJ,MAAO,YAAcgD,KAAKk/E,OAASl/E,KAAKmmJ,mBAAmB,YAAanmJ,KAAKk/E,MAAQ,YAAa,mBAAsBliF,EAAIgD,KAAKimJ,SAASxG,gBAAkBziJ,EAAEyiJ,eAAez/I,MAAOA,KAAK+G,WAAW04I,eAAez/I,YAAS,GAC3NpD,EAAEc,UAAU4oJ,KAAO,WACpB,IAAItpJ,EACJ,MAAO,YAAcgD,KAAKk/E,OAASl/E,KAAKk/E,MAAQ,SAAU,mBAAsBliF,EAAIgD,KAAKimJ,SAASM,YAAcvpJ,EAAEupJ,YAAYvmJ,WAAQ,QAAU,GAC/IpD,EAAEc,UAAUohJ,cAAgB,WAC7B,IAAI9hJ,EAAG4I,EACP,OAAO5F,KAAKwmJ,oBAAiB,GAAUxpJ,EAAIgD,KAAKmwH,SAASwrB,UAAU37I,KAAKm8I,UAAY,UAAYn8I,KAAKuG,OAAQX,EAAIrI,EAAEP,GAAIgD,KAAK+G,WAAWnB,GAAG5F,KAAKmwH,SAAUnwH,KAAKmgJ,uBAAwBngJ,KAAKwmJ,gBAAiB,IAC3M5pJ,EAAEc,UAAUmhJ,aAAe,WAC5B,OAAO7+I,KAAKymJ,sBAAwB,MAAQzmJ,KAAKomJ,SAAWpmJ,KAAK+kE,SAAW,EAAG/kE,KAAKomJ,QAAU,IAAIxgJ,EAAEi2I,YAAY77I,KAAMA,KAAKmwH,SAAUnwH,KAAKm8I,UAAWn8I,KAAKomJ,QAAQhoE,aAAU,GAC3KxhF,EAAEc,UAAUgpJ,kBAAoB,WACjC,IAAI1pJ,EACJ,QAASA,EAAIgD,KAAK+G,WAAW4/I,6BAA6B3mJ,KAAKmwH,YAAc,MAAQnwH,KAAKmwH,SAAS9jF,SAAWrvC,EAAEglJ,UAAUhiJ,KAAKmwH,SAAS9jF,SAAW,YAAcrsC,KAAKuG,SAAWvJ,EAAEilJ,qBAAkB,EAASjlJ,GAC7MJ,EAAEc,UAAUuhJ,kBAAoB,WACjC,OAAO,MAAQj/I,KAAK0mJ,qBACnB9pJ,EAAEc,UAAUqhJ,mBAAqB,WAClC,IAAI/hJ,EAAG4I,EACP,OAAQA,EAAI5F,KAAK0mJ,sBAAwB1pJ,EAAIgD,KAAKymJ,qBAAsBzmJ,KAAK4/F,QAAO,WAClF,IAAIhjG,EACJ,OAAOoD,KAAK4mJ,gBAAiB5mJ,KAAK+G,WAAW64F,OAAO,CAClDolD,SAAUp/I,EACVm9I,UAAW/lJ,GACVgD,KAAKgmJ,eAAgB,mBAAsBppJ,EAAIoD,KAAKimJ,SAASY,eAAiBjqJ,EAAEiqJ,cAAc7mJ,MAAOhD,OAAI,EAASgD,KAAKuiE,oBACtH,GACL3lE,EAAEc,UAAU2hJ,aAAe,WAC5B,OAAO,MAAQr/I,KAAK63F,SAAW73F,KAAK4/F,QAAO,WACzC,IAAI5iG,EAAG4I,EACP,OAAO5F,KAAK4mJ,gBAAiB5mJ,KAAKomJ,QAAQrJ,QAAU/8I,KAAK+G,WAAW64F,OAAO,CACzE78F,MAAO/C,KAAK63F,UACX73F,KAAKgmJ,eAAgB,mBAAsBhpJ,EAAIgD,KAAKimJ,SAASY,eAAiB7pJ,EAAE6pJ,cAAc7mJ,MAAOA,KAAKsmJ,SAAWtmJ,KAAK+G,WAAW64F,OAAO,CAC7IolD,SAAUhlJ,KAAK63F,UACd73F,KAAKgmJ,eAAgB,mBAAsBpgJ,EAAI5F,KAAKimJ,SAASY,eAAiBjhJ,EAAEihJ,cAAc7mJ,MAAOA,KAAKuiE,oBAC1G,GACJ3lE,EAAEc,UAAUgiJ,eAAiB,WAC9B,OAAO1/I,KAAK8mJ,uBAAyB9mJ,KAAK+mJ,kBAAoB/mJ,KAAKmwH,SAAWnwH,KAAK8mJ,qBAAsB9mJ,KAAK+G,WAAWigJ,mDAAmDhnJ,KAAK8mJ,qBAAsB9mJ,KAAKmgJ,uBAAwBngJ,KAAK+mJ,kBAAmB,QAAM,GACjQnqJ,EAAEc,UAAU++I,eAAiB,WAC9B,IAAIz/I,EACJ,OAAOgD,KAAKmmJ,mBAAmB,gBAAiB,mBAAsBnpJ,EAAIgD,KAAKimJ,SAASjH,oBAAsBhiJ,EAAEgiJ,oBAAoBh/I,WAAQ,GAC3IpD,EAAEc,UAAUw+I,kBAAoB,SAAUl/I,GAC3C,IAAI4I,EACJ,OAAO5F,KAAK+kE,SAAW/nE,EAAG,mBAAsB4I,EAAI5F,KAAKimJ,SAAS9G,uBAAyBv5I,EAAEu5I,uBAAuBn/I,WAAQ,GAC3HpD,EAAEc,UAAUo/I,6BAA+B,SAAU9/I,EAAGJ,GACzD,OAAOoD,KAAK63F,SAAW76F,EAAG,MAAQJ,IAAMoD,KAAK8mJ,qBAAuBlhJ,EAAEo1I,SAASG,KAAKv+I,IAAKoD,KAAKimJ,QAAQ7G,sBAAsBp/I,OAC3HpD,EAAEc,UAAUs/I,4BAA8B,SAAUhgJ,EAAG4I,GACxD,OAAO5F,KAAK63F,SAAWjyF,EAAG5F,KAAKimJ,QAAQ3G,iCAAiCt/I,KAAMhD,IAC7EJ,EAAEc,UAAU4/I,gBAAkB,WAC/B,IAAItgJ,EACJ,OAAOgD,KAAKmmJ,mBAAmB,cAAe,mBAAsBnpJ,EAAIgD,KAAKimJ,SAAS1G,qBAAuBviJ,EAAEuiJ,qBAAqBv/I,WAAQ,GAC3IpD,EAAEc,UAAUsoJ,cAAgB,WAC7B,OAAOhmJ,KAAKinJ,cAAW,GAAU,YAAcjnJ,KAAKuG,OAASvG,KAAKknJ,4BAA8BlnJ,KAAKmnJ,cAAgBnnJ,KAAKonJ,kBAAoBpnJ,KAAKmnJ,cAAennJ,KAAKinJ,UAAW,IACjLrqJ,EAAEc,UAAUwpJ,yBAA2B,WACxC,IAAIlqJ,EAAG4I,EACP,OAA2E,OAApE5I,EAAI,OAAS4I,EAAI5F,KAAKqnJ,iBAAmBzhJ,EAAE0hJ,oBAAiB,IAAqBtnJ,KAAK+G,WAAWu+I,iBAAiBtoJ,IAAI,QAAM,GAClIJ,EAAEc,UAAU0pJ,eAAiB,WAC9B,OAAO,MAAQpnJ,KAAKmwH,SAAS9jF,QAAUrsC,KAAK+G,WAAWqgJ,eAAepnJ,KAAKmwH,SAAS9jF,SAAS,QAAM,GAClGzvC,EAAEc,UAAUypJ,YAAc,WAC3B,OAAOnnJ,KAAK+G,WAAWu+I,iBAAiB,CACtC5xH,EAAG,EACH1F,EAAG,KAEJpxB,EAAEc,UAAUyoJ,mBAAqB,SAAUnpJ,GAC5C,IAAI4I,EACJ,OAAO,OAASA,EAAI5F,KAAKkmJ,eAAelpJ,GAAK4I,EAAE5I,GAAK4I,EAAE5I,IAAK,IAAI8nB,MAAOoC,WACrEtqB,EAAEc,UAAU6pJ,iBAAmB,WAChC,OAAO3hJ,EAAE+0I,WAAW36I,KAAKkmJ,gBACxB3oJ,EAAI,SAAUP,GACf,OAAQA,GACN,IAAK,UACH,MAAO,qDAET,IAAK,UACL,IAAK,UACH,MAAO,oDAEVJ,EAAEc,UAAU+oJ,mBAAqB,WAClC,MAAO,YAAczmJ,KAAKuG,SAAUvG,KAAKi/I,qBACxCriJ,EAAEc,UAAUkpJ,cAAgB,WAC7B,OAAO5mJ,KAAKwnJ,oBAAiB,GAAUxnJ,KAAK+G,WAAW6/I,gBAAiB5mJ,KAAKwnJ,gBAAiB,IAC7F5qJ,EAAEc,UAAUkiG,OAAS,SAAU5iG,GAChC,OAAOgD,KAAKqmJ,eAAgBrmJ,KAAKolE,MAAQ+L,sBAAsB,SAAUvrE,GACvE,OAAO,WACL,OAAOA,EAAEw/D,MAAQ,KAAMpoE,EAAEf,KAAK2J,IAF6B,CAI7D5F,QACDpD,EAAEc,UAAU2oJ,aAAe,WAC5B,OAAOrmJ,KAAKolE,MAAQmM,qBAAqBvxE,KAAKolE,YAAS,GACtDxoE,EAlGK,IAoGVX,KAAK+D,MAAO,WACZ,IAAIhD,EAAI,SAAUA,EAAG4I,GACnB,OAAO,WACL,OAAO5I,EAAEqnB,MAAMze,EAAG2T,aAItB3T,EAAE8c,WAAa,WACb,SAAS9lB,IACPoD,KAAKynJ,aAAezqJ,EAAEgD,KAAKynJ,aAAcznJ,MAAOA,KAAK0nJ,cAAgB1qJ,EAAEgD,KAAK0nJ,cAAe1nJ,MAAOA,KAAKqgJ,WAAarjJ,EAAEgD,KAAKqgJ,WAAYrgJ,MAAOA,KAAKu6I,QAAU,IAAI30I,EAAEk6I,QAAQ9/I,MAAOA,KAAK2nJ,KAAO,IAAI/hJ,EAAEi/I,KAAK7kJ,MAAOA,KAAK4nJ,cAAgB,IAAIhiJ,EAAEw/I,cAAcplJ,MAAOA,KAAKqnJ,gBAAkB,GAAIrnJ,KAAKy6I,aAAcz6I,KAAK06I,oBAAoB,KAGzU,OAAO99I,EAAEc,UAAUuE,MAAQ,WACzB,OAAO2D,EAAE00I,YAAct6I,KAAKgC,SAAW5B,iBAAiB,QAASJ,KAAK0nJ,eAAe,GAAKtnJ,iBAAiB,mBAAoBJ,KAAKqgJ,YAAY,GAAKrgJ,KAAK4nJ,cAAc3lJ,QAASjC,KAAK6nJ,eAAgB7nJ,KAAKgC,SAAU,EAAIhC,KAAKq6E,SAAU,QAAM,GAC7Oz9E,EAAEc,UAAU49H,QAAU,WACvB,OAAOt7H,KAAKq6E,SAAU,GACrBz9E,EAAEc,UAAU2E,KAAO,WACpB,OAAOrC,KAAKgC,SAAW1B,oBAAoB,QAASN,KAAK0nJ,eAAe,GAAKpnJ,oBAAoB,mBAAoBN,KAAKqgJ,YAAY,GAAKrgJ,KAAK4nJ,cAAcvlJ,OAAQrC,KAAK8nJ,cAAe9nJ,KAAKgC,SAAU,QAAM,GAC9MpF,EAAEc,UAAU+8I,WAAa,WAC1B,OAAOz6I,KAAKgjE,MAAQ,IAAIp9D,EAAE+/I,cAAc,KACvC/oJ,EAAEc,UAAU6vI,MAAQ,SAAUvwI,EAAGJ,GAClC,IAAIW,EAAGhB,EACP,OAAO,MAAQK,IAAMA,EAAI,IAAKI,EAAI4I,EAAEo1I,SAASG,KAAKn+I,GAAIgD,KAAK+nJ,kCAAkC/qJ,GAAKgD,KAAKgoJ,oBAAoBhrJ,IAAMO,EAAI,OAAShB,EAAIK,EAAE2J,QAAUhK,EAAI,UAAWyD,KAAKimJ,QAAQvH,kCAAkC1hJ,EAAGO,IAAM+G,OAAO6rH,SAAWnzH,OAAI,GAC1PJ,EAAEc,UAAUihJ,+BAAiC,SAAU3hJ,EAAGJ,EAAGW,GAC9D,IAAIhB,EACJ,OAAOqJ,EAAE00I,WAAa/9I,EAAIyD,KAAKioJ,gCAAgC1qJ,GAAIyC,KAAKkoJ,WAAWlrJ,EAAGJ,EAAG,CACvFyqJ,gBAAiB9qJ,KACb+H,OAAO6rH,SAAWnzH,GACvBJ,EAAEc,UAAUg9I,oBAAsB,SAAU19I,GAC7C,OAAOgD,KAAK6/I,iBAAmB7iJ,GAC9BJ,EAAEc,UAAUmqJ,aAAe,WAC5B,OAAO7nJ,KAAKmwH,SAAWvqH,EAAEo1I,SAASG,KAAK72I,OAAO6rH,UAAWnwH,KAAKmgJ,sBAAwBv6I,EAAEm1I,OAAQ/6I,KAAKu6I,QAAQt4I,QAASjC,KAAKu6I,QAAQ91I,QAAQzE,KAAKmwH,SAAUnwH,KAAKmgJ,wBAC9JvjJ,EAAEc,UAAUoqJ,YAAc,WAC3B,OAAO9nJ,KAAKu6I,QAAQl4I,QACnBzF,EAAEc,UAAUyqJ,gDAAkD,SAAUnrJ,EAAGJ,GAC5E,OAAOoD,KAAKmgJ,sBAAwBvjJ,EAAGoD,KAAKmwH,SAAWvqH,EAAEo1I,SAASG,KAAKn+I,GAAIgD,KAAKu6I,QAAQ37I,KAAKoB,KAAKmwH,SAAUnwH,KAAKmgJ,wBAChHvjJ,EAAEc,UAAUspJ,mDAAqD,SAAUhqJ,EAAGJ,GAC/E,OAAOoD,KAAKmgJ,sBAAwBvjJ,EAAGoD,KAAKmwH,SAAWvqH,EAAEo1I,SAASG,KAAKn+I,GAAIgD,KAAKu6I,QAAQ91I,QAAQzE,KAAKmwH,SAAUnwH,KAAKmgJ,wBACnHvjJ,EAAEc,UAAU0iJ,iDAAmD,SAAUpjJ,EAAGJ,GAC7E,IAAIW,EACJ,OAAOyC,KAAKmgJ,sBAAwBvjJ,EAAGoD,KAAKq6E,SAAW98E,EAAIyC,KAAKioJ,gCAAgCjoJ,KAAKmgJ,uBAAwBngJ,KAAKkoJ,WAAWlrJ,EAAG,UAAW,CACzJmjJ,sBAAuBngJ,KAAKmgJ,sBAC5BkH,gBAAiB9pJ,EACjBipJ,gBAAgB,IACdxmJ,KAAKmwH,SAAWvqH,EAAEo1I,SAASG,KAAKn+I,IAAMgD,KAAKimJ,QAAQtG,mBACtD/iJ,EAAEc,UAAUipJ,6BAA+B,SAAU3pJ,GACtD,IAAI4I,EACJ,OAAO,OAASA,EAAI5F,KAAKgjE,MAAMrmE,IAAIK,IAAM4I,EAAE6hC,aAAU,GACpD7qC,EAAEc,UAAU0qJ,oBAAsB,WACnC,OAAOpoJ,KAAK2nJ,KAAK5C,cAAc7C,eAC9BtlJ,EAAEc,UAAUkpJ,cAAgB,WAC7B,IAAI5pJ,EAAGJ,EACP,OAAOoD,KAAKooJ,uBAAyBpoJ,KAAKqoJ,yCAA0CzrJ,EAAIoD,KAAK2nJ,KAAK5C,cAAe/nJ,EAAIgD,KAAKsoJ,qBAAsB1iJ,EAAEg1I,MAAM,SAAUh1I,GAChK,OAAO,WACL,OAAOA,EAAEo9D,MAAM8iF,IAAI9oJ,EAAGJ,EAAE6qC,UAF4H,CAItJznC,aAAU,GACXpD,EAAEc,UAAU0pJ,eAAiB,SAAUpqJ,GACxC,IAAI4I,EACJ,OAAQA,EAAI5F,KAAK2nJ,KAAKhG,oBAAoB3kJ,IAAMgD,KAAKqlJ,gBAAgBz/I,GAAK5F,KAAKslJ,iBAAiB,CAC9F5xH,EAAG,EACH1F,EAAG,KAEJpxB,EAAEc,UAAU2nJ,gBAAkB,SAAUroJ,GACzC,OAAOgD,KAAK4nJ,cAAcvC,gBAAgBroJ,IACzCJ,EAAEc,UAAU4nJ,iBAAmB,SAAUtoJ,GAC1C,OAAOgD,KAAK4nJ,cAActC,iBAAiBtoJ,IAC1CJ,EAAEc,UAAUgoJ,sBAAwB,SAAU1oJ,GAE/C,OAAWgD,KAAKuoJ,4BAA+BjB,eAAiBtqJ,GAC/DJ,EAAEc,UAAUkiG,OAAS,SAAU5iG,EAAG4I,GACnC,OAAO5F,KAAK2nJ,KAAK/nD,OAAO5iG,EAAG4I,IAC1BhJ,EAAEc,UAAU+kJ,gBAAkB,WAC/B,OAAOziJ,KAAKimJ,QAAQtG,mBACnB/iJ,EAAEc,UAAU2kJ,eAAiB,SAAUrlJ,GACxC,OAAOgD,KAAKwoJ,8BAA8BxrJ,IACzCJ,EAAEc,UAAU6kJ,aAAe,WAC5B,OAAOviJ,KAAKsoJ,qBAAuBtoJ,KAAKyoJ,aAAat4B,SAAUnwH,KAAK0oJ,gCACnE9rJ,EAAEc,UAAU2iJ,WAAa,WAC1B,OAAOrgJ,KAAKsoJ,qBAAuBtoJ,KAAKmwH,SAAUnwH,KAAK2oJ,kCACtD/rJ,EAAEc,UAAUgqJ,cAAgB,WAC7B,OAAOpnJ,oBAAoB,QAASN,KAAKynJ,cAAc,GAAKrnJ,iBAAiB,QAASJ,KAAKynJ,cAAc,IACxG7qJ,EAAEc,UAAU+pJ,aAAe,SAAUzqJ,GACtC,IAAI4I,EAAGhJ,EAAGW,EACV,OAAOyC,KAAKq6E,SAAWr6E,KAAK4oJ,wBAAwB5rJ,KAAOJ,EAAIoD,KAAK6oJ,wBAAwB7rJ,EAAEkH,WAAa3G,EAAIyC,KAAK8oJ,4BAA4BlsJ,KAAOoD,KAAK+oJ,yCAAyCnsJ,EAAGW,IAAMP,EAAE+G,iBAAkB6B,EAAI5F,KAAKgpJ,iBAAiBpsJ,GAAIoD,KAAKutI,MAAMhwI,EAAG,CAC5QgJ,OAAQX,UACJ,GACLhJ,EAAEc,UAAUqrJ,yCAA2C,SAAU/rJ,EAAG4I,GAErE,OAAW5F,KAAKipJ,6CAA6CjsJ,EAAG4I,GAAOspI,kBACtEtyI,EAAEc,UAAUqqJ,kCAAoC,SAAU/qJ,GAE3D,OAAWgD,KAAKkpJ,wCAAwClsJ,GAAOkyI,kBAC9DtyI,EAAEc,UAAUurJ,6CAA+C,SAAUjsJ,EAAGJ,GACzE,OAAOgJ,EAAEid,SAAS,mBAAoB,CACpC3e,OAAQlH,EACRkW,KAAM,CACJuiD,IAAK74D,EAAEq+I,aAETj4H,YAAY,KAEbpmB,EAAEc,UAAUwrJ,wCAA0C,SAAUlsJ,GACjE,OAAO4I,EAAEid,SAAS,0BAA2B,CAC3C3P,KAAM,CACJuiD,IAAKz4D,EAAEi+I,aAETj4H,YAAY,KAEbpmB,EAAEc,UAAUyrJ,uCAAyC,SAAUnsJ,GAChE,OAAO4I,EAAEid,SAAS,mBAAoB,CACpC3P,KAAM,CACJuiD,IAAKz4D,EAAEi+I,gBAGVr+I,EAAEc,UAAU2qJ,uCAAyC,WACtD,OAAOziJ,EAAEid,SAAS,4BACjBjmB,EAAEc,UAAU8qJ,8BAAgC,SAAUxrJ,GACvD,OAAO4I,EAAEid,SAAS,2BAA4B,CAC5C3P,KAAM,CACJovI,QAAStlJ,MAGZJ,EAAEc,UAAUgrJ,6BAA+B,WAC5C,OAAO9iJ,EAAEid,SAAS,sBACjBjmB,EAAEc,UAAUirJ,+BAAiC,SAAU3rJ,GACxD,OAAO,MAAQA,IAAMA,EAAI,IAAK4I,EAAEid,SAAS,kBAAmB,CAC1D3P,KAAM,CACJuiD,IAAKz1D,KAAKmwH,SAAS8qB,YACnBmO,OAAQpsJ,MAGXJ,EAAEc,UAAUwqJ,WAAa,SAAUlrJ,EAAG4I,EAAGhJ,GAC1C,IAAIW,EACJ,OAAO,OAASA,EAAIyC,KAAKyoJ,eAAiBlrJ,EAAE6/F,SAAUp9F,KAAKyoJ,aAAezoJ,KAAKqpJ,YAAYrsJ,EAAG4I,EAAGhJ,GAAIoD,KAAKyoJ,aAAaxmJ,QAASjC,KAAKmpJ,uCAAuCnsJ,IAC3KJ,EAAEc,UAAU2rJ,YAAc,SAAUrsJ,EAAGJ,EAAGW,GAC3C,IAAIhB,EAAGT,EAAG+B,EAAG0H,EAAGiqB,EAChB,OAA+BjqB,GAAxBzJ,EAAI,MAAQyB,EAAIA,EAAI,IAAU4iJ,sBAAuBtiJ,EAAI/B,EAAEurJ,gBAAiB9qJ,EAAIT,EAAE0qJ,gBAAgBh3H,EAAI,IAAI5pB,EAAEmgJ,MAAM/lJ,KAAMhD,EAAGJ,IAAMujJ,sBAAwB,MAAQ56I,EAAIA,EAAIK,EAAEm1I,OAAQvrH,EAAE63H,gBAAkBzhJ,EAAE+0I,WAAW98I,GAAI2xB,EAAEg3H,eAAiBjqJ,EAAGizB,EAAE2sH,SAAWn8I,KAAKmwH,SAAU3gG,GAChR5yB,EAAEc,UAAU+hJ,eAAiB,SAAUziJ,GACxC,OAAOgD,KAAK2oJ,+BAA+B3rJ,EAAEuqJ,qBAC5C3qJ,EAAEc,UAAUkrJ,wBAA0B,SAAU5rJ,GACjD,QAASA,EAAEkyI,kBAAoBlyI,EAAEkH,OAAOolJ,mBAAqBtsJ,EAAEusJ,MAAQ,GAAKvsJ,EAAEoV,QAAUpV,EAAEmV,SAAWnV,EAAEkV,SAAWlV,EAAEqV,WACnHzV,EAAEc,UAAUmrJ,wBAA0B,SAAU7rJ,GACjD,OAAOgD,KAAKwpJ,gBAAgBxsJ,GAAK4I,EAAEgX,QAAQ5f,EAAG,8CAA2C,GACxFJ,EAAEc,UAAUorJ,4BAA8B,SAAU9rJ,GACrD,IAAIJ,EACJ,OAAOA,EAAI,IAAIgJ,EAAEo1I,SAASh+I,EAAE6I,aAAa,SAAU7F,KAAKgoJ,oBAAoBprJ,GAAKA,OAAI,GACpFA,EAAEc,UAAUsrJ,iBAAmB,SAAUhsJ,GAC1C,IAAI4I,EACJ,OAAO,OAASA,EAAI5I,EAAE6I,aAAa,2BAA6BD,EAAI,WACnEhJ,EAAEc,UAAU8rJ,gBAAkB,SAAUxsJ,GACzC,IAAIJ,EACJ,QAAQA,EAAIgJ,EAAEgX,QAAQ5f,EAAG,uBAAwB,UAAYJ,EAAEiJ,aAAa,oBAC3EjJ,EAAEc,UAAUsqJ,oBAAsB,SAAUhrJ,GAC7C,OAAOA,EAAE0+I,aAAa17I,KAAK2nJ,KAAKnG,oBAAsBxkJ,EAAEy+I,UACvD7+I,EAAEc,UAAU6qJ,0BAA4B,WACzC,OAAOvoJ,KAAKioJ,gCAAgCjoJ,KAAKmgJ,wBAChDvjJ,EAAEc,UAAUuqJ,gCAAkC,SAAUjrJ,GACzD,IAAI4I,EACJ,OAAO,OAASA,EAAI5F,KAAKqnJ,iBAAiBrqJ,GAAK4I,EAAE5I,GAAK4I,EAAE5I,GAAK,IAC5DJ,EAxJU,IA0JfX,KAAK+D,MAAO,YACX,WACC,IAAIhD,EAAG4I,EACP,IAAK5I,EAAI4I,EAAIrB,SAASklJ,iBAAmB7jJ,EAAEqF,aAAa,oCAAqC,KAAOjO,EAAIA,EAAE+vD,YAAa,GAAI/vD,IAAMuH,SAASkS,KAAM,OAAO4H,QAAQxD,KAAK,4dAA6djV,EAAE6lH,WAFpoB,IAIDxvH,KAAK+D,MAAO,WACZ,IAAIhD,EAAGJ,EAAGW,EACVqI,EAAE3D,MAAQ,WACR,OAAOrF,KAAO,MAAQgJ,EAAEmB,aAAenB,EAAEmB,WAAa/J,KAAM4I,EAAEmB,WAAW9E,cAAW,GACnFrF,EAAI,WACL,OAAO,MAAQ0H,OAAOgpI,aAAehpI,OAAOgpI,WAAa1nI,GAAIrI,KAC5DP,EAAI,WACL,IAAIA,EACJ,OAAOA,EAAI,IAAI4I,EAAE8c,YAAgBujI,QAAU,IAAIrgJ,EAAE24I,eAAevhJ,GAAIA,IACnEO,EAAI,WACL,OAAO+G,OAAOgpI,aAAe1nI,OACrBA,EAAE3D,SACZhG,KAAK+D,QACN/D,KAAK+D,MAAoCnE,EAAOD,QAAUC,EAAOD,QAAUgK,OAAyD,2BAAR,KAAQ,oCACtI3J,KAAK+D,O,wCC9+BR,0DAMA2gF,EAAQ,KAAc1+E,QACtB0+E,EAAQ,KAAc1+E,QAEtB,IAAMJ,EAAcyd,IAAYrd,QAC1BynJ,EAAgB/oE,OAChBgpE,EAAqBhpE,OAE3B9+E,EAAYge,KAAKu/C,YAAuBsqF,IACxC7nJ,EAAYge,KAAKu/C,YAAuBuqF,IAExC7zF,EAAOj0D,YAAcA,EACrBi0D,EAAOopB,MAAQ,CACbozC,cAAe,K,iCClBjB,IAAI7vH,EAAM,CACT,4CAA6C,IAC7C,gCAAiC,IACjC,4BAA6B,IAC7B,8CAA+C,IAC/C,qCAAsC,IACtC,yBAA0B,IAC1B,6BAA8B,KAI/B,SAASilF,EAAeC,GACvB,IAAI/d,EAAKge,EAAsBD,GAC/B,OAAOjsF,EAAoBkuE,GAE5B,SAASge,EAAsBD,GAC9B,IAAIjsF,EAAoBa,EAAEkG,EAAKklF,GAAM,CACpC,IAAI/hF,EAAI,IAAII,MAAM,uBAAyB2hF,EAAM,KAEjD,MADA/hF,EAAEiiF,KAAO,mBACHjiF,EAEP,OAAOnD,EAAIklF,GAEZD,EAAehkF,KAAO,WACrB,OAAOlH,OAAOkH,KAAKjB,IAEpBilF,EAAehoE,QAAUkoE,EACzB/rF,EAAOD,QAAU8rF,EACjBA,EAAe9d,GAAK,K,2mDCtBlB,WACE5pE,KAAKurF,W,oBAGP,WACE,IAAKvrF,KAAK4pJ,cAAcxoD,QAItB,OAHAphG,KAAKu4F,YAAYj3B,UAAU7gE,IAAIT,KAAKwmI,gBACpCxmI,KAAK6pJ,eAAe1nJ,SAAQ,SAAA0nE,GAAE,OAAIA,EAAGqoD,UAAW,KAKlDlyH,KAAK6pJ,eAAe1nJ,SAAQ,SAAA0nE,GAAE,OAAIA,EAAGqoD,UAAW,KAEhB,wBAA5BlyH,KAAK8pJ,cAAc/sJ,MAMvBiD,KAAKu4F,YAAYj3B,UAAUqT,OAAO30E,KAAKwmI,WALrCxmI,KAAKu4F,YAAYj3B,UAAU7gE,IAAIT,KAAKwmI,a,yBAQxC,WACE,OAAOxmI,KAAK6pJ,eAAe/yI,MAAK,SAAA+yD,GAAE,OAAIA,EAAGu3B,gB,mCA5BhB1+E,G,EACpBpH,QAAU,CAAC,QAAS,UAAW,W,EAC/BqB,QAAU,CAAC,S,2mDCKlB,WACE3c,KAAK+pJ,gB,yBAGP,WACE/pJ,KAAKgqJ,uBAAuBvpE,KAAOzgF,KAAKygF,OAEpCzgF,KAAKiqJ,4BACPjqJ,KAAKkqJ,uBAAuBvoF,UAAY3hE,KAAKg2H,W,kBAIjD,WACE,OAAIh2H,KAAKmqJ,gBACA,UAAYnqJ,KAAKg2H,QAAU,YAAch2H,KAAKoqJ,aAE9C,UAAYpqJ,KAAKg2H,U,mBAI5B,WAIE,IAHA,IAAIq0B,EAAa,GACbC,EAAiBtqJ,KAAKsqJ,iBAEjBxuJ,EAAI,EAAGA,EAAIwuJ,EAAezrJ,OAAQ/C,IACzCuuJ,GAAcjoI,OAAO68F,aAAaqrC,EAAexuJ,IAGnD,OAAOuuJ,I,4BAGT,WACE,OAAOnkJ,KAAKC,MAAMnG,KAAKuqJ,wB,mCAvCE7nI,G,EACpBpH,QAAU,CAAE,mBAAoB,oB,EAChChZ,OAAS,CACdkoJ,aAAcpoI,OACdqoI,QAASroI,S,wmDCGX,SAAKvhB,GACEb,KAAKu1H,gBAEVv1H,KAAKu1H,cAAcj0D,UAAU7gE,IAAI,eACjCT,KAAK0qJ,iBAAiBppF,UAAU7gE,IAAI,a,qBAGtC,SAAQI,GACDb,KAAKu1H,gBAEVv1H,KAAKu1H,cAAcj0D,UAAUqT,OAAO,eACpC30E,KAAK0qJ,iBAAiBppF,UAAUqT,OAAO,a,oBAGzC,SAAO9zE,GACLA,EAAMkD,iBAED/D,KAAKu1H,gBAENv1H,KAAKu1H,cAAcj0D,UAAUv5D,SAAS,eACxC/H,KAAKusF,QAAQ1rF,GAEbb,KAAKs3D,KAAKz2D,M,yBAId,WACE,OAAO0D,SAAS01E,cAAcj6E,KAAK0tF,oB,mCAlCVhrE,G,EACpBpgB,OAAS,CACd8I,SAAUgX,Q,EAGL9G,QAAU,CAAC,e,2mDCElB,WAAW,IAAD,OACJtb,KAAK2qJ,2BACP3qJ,KAAK4qJ,wBAGH5qJ,KAAK6qJ,qBAAuB7qJ,KAAKumI,cACnCpuE,YAAW,WACT,EAAKouE,aAAa3sC,UACjB,O,oBAIP,WAAU,IAAD,OACPzhC,YAAW,kBAAM,EAAKouE,aAAa3sC,UAAS,O,mCAG9C,WACE55F,KAAKg6E,iBAAiBtkB,MAAMwkB,QAAU,U,4BAGxC,WACE,OAAOl6E,KAAKiE,QAAQg2E,cAAc,2B,mCA5BTv3D,G,EACpBpH,QAAU,CAAC,U,EACXhZ,OAAS,CACdwoJ,eAAgB5oI,QAChB6oI,qBAAsB7oI,U,unDCWxB,WACEliB,KAAKgrJ,mB,4BAGP,WACE,IAAMC,EAAYjrJ,KAAKkrJ,eAAejxE,cAAc,SAASl9E,MACvDouJ,EAAanrJ,KAAKorJ,gBAAgBnxE,cAAc,SAASl9E,MACzDsuJ,EAAYrrJ,KAAKqrJ,UAAY18I,KAAKC,IAAIq8I,EAAYjrJ,KAAKsrJ,mBAAoB,GAC3EC,EAAYvrJ,KAAKurJ,UAAY58I,KAAKC,IAAIu8I,EAAanrJ,KAAKwrJ,mBAAoB,GAClF,GAAIP,GAAa,GAAKE,GAAc,EAClCnrJ,KAAKyrJ,gBACA,CACL,IAAIC,EAAW1rJ,KAAK2rJ,UAAYN,EAAYE,EACf,MAAzBvrJ,KAAK69F,kBAAqD,MAAzB79F,KAAK69F,mBACxC6tD,GAAY1rJ,KAAK4rJ,UAGf5rJ,KAAK6rJ,qBAEPH,GAAsB,IAGtBA,EAAW/8I,KAAKihB,KAAgB,EAAX87H,GAAgB,GAGvC1rJ,KAAK8rJ,cAAcnqF,UAAY7L,EAAO6D,QAAQmvB,eAAe4iE,EAAU1rJ,KAAK+rJ,cAAe/rJ,KAAK6wF,aAChG7wF,KAAKgsJ,e,uBAIT,WACEhsJ,KAAKisJ,YAAY3qF,UAAUqT,OAAO,eAClC30E,KAAK8rJ,cAAcxqF,UAAU7gE,IAAI,eACjCT,KAAKksJ,YAAY5qF,UAAU7gE,IAAI,iB,uBAGjC,WACET,KAAKisJ,YAAY3qF,UAAU7gE,IAAI,eAC/BT,KAAK8rJ,cAAcxqF,UAAUqT,OAAO,eACpC30E,KAAKksJ,YAAY5qF,UAAUqT,OAAO,oB,mCAtDTjyD,G,EACpBpH,QAAU,CAAC,WAAY,YAAa,UAAW,QAAS,S,EACxDhZ,OAAS,CACdonC,KAAMvnB,OACNgqI,KAAM/pI,OACNgqI,cAAehqI,OACfiqI,KAAMjqI,OACNkqI,cAAelqI,OACfymE,SAAUzmE,OACViD,OAAQjD,OACRi9E,YAAaj9E,OACbmqI,IAAKpqI,OACLqqI,cAAetqI,U,koDCTjB,SAAcrhB,GACRb,KAAKysJ,iBACPzsJ,KAAKysJ,eAAe1vJ,MAAQ,M,4BAIhC,SAAe8D,GACTb,KAAK0sJ,kBAA+C,0BAA3B7rJ,EAAMqD,OAAOsmI,YACxCxqI,KAAK0sJ,iBAAiBh3F,MAAMwkB,QAAU,a,mCAXfx3D,G,EACpBpH,QAAU,CAAE,WAAY,e,4mDCA/B,WACE,IAAMqxI,EAAYpoJ,SAASwY,gBAAgB2tE,WAAanmF,SAASkS,KAAKi0E,UAChEkiE,EAAOroJ,SAASkjH,eAAe,QAC/BolC,EAAatoJ,SAASkjH,eAAe,eAEvCklC,EAAY,IACd3sJ,KAAKiE,QAAQq9D,UAAU7gE,IAAI,4BAC3BmsJ,EAAKtrF,UAAUqT,OAAO,yBACtBk4E,EAAWvrF,UAAUqT,OAAO,kCAE5B30E,KAAKiE,QAAQq9D,UAAUqT,OAAO,4BAC9Bi4E,EAAKtrF,UAAU7gE,IAAI,yBACnBosJ,EAAWvrF,UAAU7gE,IAAI,sC,mCAbFiiB","file":"js/landing_page-63b82010f1f1bd4aafb0.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/packs/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 499);\n","function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n/*\nStimulus 3.2.1\nCopyright © 2023 Basecamp, LLC\n */\nclass EventListener {\n constructor(eventTarget, eventName, eventOptions) {\n this.eventTarget = eventTarget;\n this.eventName = eventName;\n this.eventOptions = eventOptions;\n this.unorderedBindings = new Set();\n }\n\n connect() {\n this.eventTarget.addEventListener(this.eventName, this, this.eventOptions);\n }\n\n disconnect() {\n this.eventTarget.removeEventListener(this.eventName, this, this.eventOptions);\n }\n\n bindingConnected(binding) {\n this.unorderedBindings.add(binding);\n }\n\n bindingDisconnected(binding) {\n this.unorderedBindings.delete(binding);\n }\n\n handleEvent(event) {\n const extendedEvent = extendEvent(event);\n\n for (const binding of this.bindings) {\n if (extendedEvent.immediatePropagationStopped) {\n break;\n } else {\n binding.handleEvent(extendedEvent);\n }\n }\n }\n\n hasBindings() {\n return this.unorderedBindings.size > 0;\n }\n\n get bindings() {\n return Array.from(this.unorderedBindings).sort((left, right) => {\n const leftIndex = left.index,\n rightIndex = right.index;\n return leftIndex < rightIndex ? -1 : leftIndex > rightIndex ? 1 : 0;\n });\n }\n\n}\n\nfunction extendEvent(event) {\n if (\"immediatePropagationStopped\" in event) {\n return event;\n } else {\n const stopImmediatePropagation = event.stopImmediatePropagation;\n return Object.assign(event, {\n immediatePropagationStopped: false,\n\n stopImmediatePropagation() {\n this.immediatePropagationStopped = true;\n stopImmediatePropagation.call(this);\n }\n\n });\n }\n}\n\nclass Dispatcher {\n constructor(application) {\n this.application = application;\n this.eventListenerMaps = new Map();\n this.started = false;\n }\n\n start() {\n if (!this.started) {\n this.started = true;\n this.eventListeners.forEach(eventListener => eventListener.connect());\n }\n }\n\n stop() {\n if (this.started) {\n this.started = false;\n this.eventListeners.forEach(eventListener => eventListener.disconnect());\n }\n }\n\n get eventListeners() {\n return Array.from(this.eventListenerMaps.values()).reduce((listeners, map) => listeners.concat(Array.from(map.values())), []);\n }\n\n bindingConnected(binding) {\n this.fetchEventListenerForBinding(binding).bindingConnected(binding);\n }\n\n bindingDisconnected(binding, clearEventListeners = false) {\n this.fetchEventListenerForBinding(binding).bindingDisconnected(binding);\n if (clearEventListeners) this.clearEventListenersForBinding(binding);\n }\n\n handleError(error, message, detail = {}) {\n this.application.handleError(error, `Error ${message}`, detail);\n }\n\n clearEventListenersForBinding(binding) {\n const eventListener = this.fetchEventListenerForBinding(binding);\n\n if (!eventListener.hasBindings()) {\n eventListener.disconnect();\n this.removeMappedEventListenerFor(binding);\n }\n }\n\n removeMappedEventListenerFor(binding) {\n const eventTarget = binding.eventTarget,\n eventName = binding.eventName,\n eventOptions = binding.eventOptions;\n const eventListenerMap = this.fetchEventListenerMapForEventTarget(eventTarget);\n const cacheKey = this.cacheKey(eventName, eventOptions);\n eventListenerMap.delete(cacheKey);\n if (eventListenerMap.size == 0) this.eventListenerMaps.delete(eventTarget);\n }\n\n fetchEventListenerForBinding(binding) {\n const eventTarget = binding.eventTarget,\n eventName = binding.eventName,\n eventOptions = binding.eventOptions;\n return this.fetchEventListener(eventTarget, eventName, eventOptions);\n }\n\n fetchEventListener(eventTarget, eventName, eventOptions) {\n const eventListenerMap = this.fetchEventListenerMapForEventTarget(eventTarget);\n const cacheKey = this.cacheKey(eventName, eventOptions);\n let eventListener = eventListenerMap.get(cacheKey);\n\n if (!eventListener) {\n eventListener = this.createEventListener(eventTarget, eventName, eventOptions);\n eventListenerMap.set(cacheKey, eventListener);\n }\n\n return eventListener;\n }\n\n createEventListener(eventTarget, eventName, eventOptions) {\n const eventListener = new EventListener(eventTarget, eventName, eventOptions);\n\n if (this.started) {\n eventListener.connect();\n }\n\n return eventListener;\n }\n\n fetchEventListenerMapForEventTarget(eventTarget) {\n let eventListenerMap = this.eventListenerMaps.get(eventTarget);\n\n if (!eventListenerMap) {\n eventListenerMap = new Map();\n this.eventListenerMaps.set(eventTarget, eventListenerMap);\n }\n\n return eventListenerMap;\n }\n\n cacheKey(eventName, eventOptions) {\n const parts = [eventName];\n Object.keys(eventOptions).sort().forEach(key => {\n parts.push(`${eventOptions[key] ? \"\" : \"!\"}${key}`);\n });\n return parts.join(\":\");\n }\n\n}\n\nconst defaultActionDescriptorFilters = {\n stop({\n event,\n value\n }) {\n if (value) event.stopPropagation();\n return true;\n },\n\n prevent({\n event,\n value\n }) {\n if (value) event.preventDefault();\n return true;\n },\n\n self({\n event,\n value,\n element\n }) {\n if (value) {\n return element === event.target;\n } else {\n return true;\n }\n }\n\n};\nconst descriptorPattern = /^(?:(?:([^.]+?)\\+)?(.+?)(?:\\.(.+?))?(?:@(window|document))?->)?(.+?)(?:#([^:]+?))(?::(.+))?$/;\n\nfunction parseActionDescriptorString(descriptorString) {\n const source = descriptorString.trim();\n const matches = source.match(descriptorPattern) || [];\n let eventName = matches[2];\n let keyFilter = matches[3];\n\n if (keyFilter && ![\"keydown\", \"keyup\", \"keypress\"].includes(eventName)) {\n eventName += `.${keyFilter}`;\n keyFilter = \"\";\n }\n\n return {\n eventTarget: parseEventTarget(matches[4]),\n eventName,\n eventOptions: matches[7] ? parseEventOptions(matches[7]) : {},\n identifier: matches[5],\n methodName: matches[6],\n keyFilter: matches[1] || keyFilter\n };\n}\n\nfunction parseEventTarget(eventTargetName) {\n if (eventTargetName == \"window\") {\n return window;\n } else if (eventTargetName == \"document\") {\n return document;\n }\n}\n\nfunction parseEventOptions(eventOptions) {\n return eventOptions.split(\":\").reduce((options, token) => Object.assign(options, {\n [token.replace(/^!/, \"\")]: !/^!/.test(token)\n }), {});\n}\n\nfunction stringifyEventTarget(eventTarget) {\n if (eventTarget == window) {\n return \"window\";\n } else if (eventTarget == document) {\n return \"document\";\n }\n}\n\nfunction camelize(value) {\n return value.replace(/(?:[_-])([a-z0-9])/g, (_, char) => char.toUpperCase());\n}\n\nfunction namespaceCamelize(value) {\n return camelize(value.replace(/--/g, \"-\").replace(/__/g, \"_\"));\n}\n\nfunction capitalize(value) {\n return value.charAt(0).toUpperCase() + value.slice(1);\n}\n\nfunction dasherize(value) {\n return value.replace(/([A-Z])/g, (_, char) => `-${char.toLowerCase()}`);\n}\n\nfunction tokenize(value) {\n return value.match(/[^\\s]+/g) || [];\n}\n\nfunction isSomething(object) {\n return object !== null && object !== undefined;\n}\n\nfunction hasProperty(object, property) {\n return Object.prototype.hasOwnProperty.call(object, property);\n}\n\nconst allModifiers = [\"meta\", \"ctrl\", \"alt\", \"shift\"];\n\nclass Action {\n constructor(element, index, descriptor, schema) {\n this.element = element;\n this.index = index;\n this.eventTarget = descriptor.eventTarget || element;\n this.eventName = descriptor.eventName || getDefaultEventNameForElement(element) || error(\"missing event name\");\n this.eventOptions = descriptor.eventOptions || {};\n this.identifier = descriptor.identifier || error(\"missing identifier\");\n this.methodName = descriptor.methodName || error(\"missing method name\");\n this.keyFilter = descriptor.keyFilter || \"\";\n this.schema = schema;\n }\n\n static forToken(token, schema) {\n return new this(token.element, token.index, parseActionDescriptorString(token.content), schema);\n }\n\n toString() {\n const eventFilter = this.keyFilter ? `.${this.keyFilter}` : \"\";\n const eventTarget = this.eventTargetName ? `@${this.eventTargetName}` : \"\";\n return `${this.eventName}${eventFilter}${eventTarget}->${this.identifier}#${this.methodName}`;\n }\n\n shouldIgnoreKeyboardEvent(event) {\n if (!this.keyFilter) {\n return false;\n }\n\n const filters = this.keyFilter.split(\"+\");\n\n if (this.keyFilterDissatisfied(event, filters)) {\n return true;\n }\n\n const standardFilter = filters.filter(key => !allModifiers.includes(key))[0];\n\n if (!standardFilter) {\n return false;\n }\n\n if (!hasProperty(this.keyMappings, standardFilter)) {\n error(`contains unknown key filter: ${this.keyFilter}`);\n }\n\n return this.keyMappings[standardFilter].toLowerCase() !== event.key.toLowerCase();\n }\n\n shouldIgnoreMouseEvent(event) {\n if (!this.keyFilter) {\n return false;\n }\n\n const filters = [this.keyFilter];\n\n if (this.keyFilterDissatisfied(event, filters)) {\n return true;\n }\n\n return false;\n }\n\n get params() {\n const params = {};\n const pattern = new RegExp(`^data-${this.identifier}-(.+)-param$`, \"i\");\n\n for (const _ref of Array.from(this.element.attributes)) {\n const name = _ref.name;\n const value = _ref.value;\n const match = name.match(pattern);\n const key = match && match[1];\n\n if (key) {\n params[camelize(key)] = typecast(value);\n }\n }\n\n return params;\n }\n\n get eventTargetName() {\n return stringifyEventTarget(this.eventTarget);\n }\n\n get keyMappings() {\n return this.schema.keyMappings;\n }\n\n keyFilterDissatisfied(event, filters) {\n const _allModifiers$map = allModifiers.map(modifier => filters.includes(modifier)),\n _allModifiers$map2 = _slicedToArray(_allModifiers$map, 4),\n meta = _allModifiers$map2[0],\n ctrl = _allModifiers$map2[1],\n alt = _allModifiers$map2[2],\n shift = _allModifiers$map2[3];\n\n return event.metaKey !== meta || event.ctrlKey !== ctrl || event.altKey !== alt || event.shiftKey !== shift;\n }\n\n}\n\nconst defaultEventNames = {\n a: () => \"click\",\n button: () => \"click\",\n form: () => \"submit\",\n details: () => \"toggle\",\n input: e => e.getAttribute(\"type\") == \"submit\" ? \"click\" : \"input\",\n select: () => \"change\",\n textarea: () => \"input\"\n};\n\nfunction getDefaultEventNameForElement(element) {\n const tagName = element.tagName.toLowerCase();\n\n if (tagName in defaultEventNames) {\n return defaultEventNames[tagName](element);\n }\n}\n\nfunction error(message) {\n throw new Error(message);\n}\n\nfunction typecast(value) {\n try {\n return JSON.parse(value);\n } catch (o_O) {\n return value;\n }\n}\n\nclass Binding {\n constructor(context, action) {\n this.context = context;\n this.action = action;\n }\n\n get index() {\n return this.action.index;\n }\n\n get eventTarget() {\n return this.action.eventTarget;\n }\n\n get eventOptions() {\n return this.action.eventOptions;\n }\n\n get identifier() {\n return this.context.identifier;\n }\n\n handleEvent(event) {\n const actionEvent = this.prepareActionEvent(event);\n\n if (this.willBeInvokedByEvent(event) && this.applyEventModifiers(actionEvent)) {\n this.invokeWithEvent(actionEvent);\n }\n }\n\n get eventName() {\n return this.action.eventName;\n }\n\n get method() {\n const method = this.controller[this.methodName];\n\n if (typeof method == \"function\") {\n return method;\n }\n\n throw new Error(`Action \"${this.action}\" references undefined method \"${this.methodName}\"`);\n }\n\n applyEventModifiers(event) {\n const element = this.action.element;\n const actionDescriptorFilters = this.context.application.actionDescriptorFilters;\n const controller = this.context.controller;\n let passes = true;\n\n for (const _ref2 of Object.entries(this.eventOptions)) {\n var _ref3 = _slicedToArray(_ref2, 2);\n\n const name = _ref3[0];\n const value = _ref3[1];\n\n if (name in actionDescriptorFilters) {\n const filter = actionDescriptorFilters[name];\n passes = passes && filter({\n name,\n value,\n event,\n element,\n controller\n });\n } else {\n continue;\n }\n }\n\n return passes;\n }\n\n prepareActionEvent(event) {\n return Object.assign(event, {\n params: this.action.params\n });\n }\n\n invokeWithEvent(event) {\n const target = event.target,\n currentTarget = event.currentTarget;\n\n try {\n this.method.call(this.controller, event);\n this.context.logDebugActivity(this.methodName, {\n event,\n target,\n currentTarget,\n action: this.methodName\n });\n } catch (error) {\n const identifier = this.identifier,\n controller = this.controller,\n element = this.element,\n index = this.index;\n const detail = {\n identifier,\n controller,\n element,\n index,\n event\n };\n this.context.handleError(error, `invoking action \"${this.action}\"`, detail);\n }\n }\n\n willBeInvokedByEvent(event) {\n const eventTarget = event.target;\n\n if (event instanceof KeyboardEvent && this.action.shouldIgnoreKeyboardEvent(event)) {\n return false;\n }\n\n if (event instanceof MouseEvent && this.action.shouldIgnoreMouseEvent(event)) {\n return false;\n }\n\n if (this.element === eventTarget) {\n return true;\n } else if (eventTarget instanceof Element && this.element.contains(eventTarget)) {\n return this.scope.containsElement(eventTarget);\n } else {\n return this.scope.containsElement(this.action.element);\n }\n }\n\n get controller() {\n return this.context.controller;\n }\n\n get methodName() {\n return this.action.methodName;\n }\n\n get element() {\n return this.scope.element;\n }\n\n get scope() {\n return this.context.scope;\n }\n\n}\n\nclass ElementObserver {\n constructor(element, delegate) {\n this.mutationObserverInit = {\n attributes: true,\n childList: true,\n subtree: true\n };\n this.element = element;\n this.started = false;\n this.delegate = delegate;\n this.elements = new Set();\n this.mutationObserver = new MutationObserver(mutations => this.processMutations(mutations));\n }\n\n start() {\n if (!this.started) {\n this.started = true;\n this.mutationObserver.observe(this.element, this.mutationObserverInit);\n this.refresh();\n }\n }\n\n pause(callback) {\n if (this.started) {\n this.mutationObserver.disconnect();\n this.started = false;\n }\n\n callback();\n\n if (!this.started) {\n this.mutationObserver.observe(this.element, this.mutationObserverInit);\n this.started = true;\n }\n }\n\n stop() {\n if (this.started) {\n this.mutationObserver.takeRecords();\n this.mutationObserver.disconnect();\n this.started = false;\n }\n }\n\n refresh() {\n if (this.started) {\n const matches = new Set(this.matchElementsInTree());\n\n for (const element of Array.from(this.elements)) {\n if (!matches.has(element)) {\n this.removeElement(element);\n }\n }\n\n for (const element of Array.from(matches)) {\n this.addElement(element);\n }\n }\n }\n\n processMutations(mutations) {\n if (this.started) {\n for (const mutation of mutations) {\n this.processMutation(mutation);\n }\n }\n }\n\n processMutation(mutation) {\n if (mutation.type == \"attributes\") {\n this.processAttributeChange(mutation.target, mutation.attributeName);\n } else if (mutation.type == \"childList\") {\n this.processRemovedNodes(mutation.removedNodes);\n this.processAddedNodes(mutation.addedNodes);\n }\n }\n\n processAttributeChange(element, attributeName) {\n if (this.elements.has(element)) {\n if (this.delegate.elementAttributeChanged && this.matchElement(element)) {\n this.delegate.elementAttributeChanged(element, attributeName);\n } else {\n this.removeElement(element);\n }\n } else if (this.matchElement(element)) {\n this.addElement(element);\n }\n }\n\n processRemovedNodes(nodes) {\n for (const node of Array.from(nodes)) {\n const element = this.elementFromNode(node);\n\n if (element) {\n this.processTree(element, this.removeElement);\n }\n }\n }\n\n processAddedNodes(nodes) {\n for (const node of Array.from(nodes)) {\n const element = this.elementFromNode(node);\n\n if (element && this.elementIsActive(element)) {\n this.processTree(element, this.addElement);\n }\n }\n }\n\n matchElement(element) {\n return this.delegate.matchElement(element);\n }\n\n matchElementsInTree(tree = this.element) {\n return this.delegate.matchElementsInTree(tree);\n }\n\n processTree(tree, processor) {\n for (const element of this.matchElementsInTree(tree)) {\n processor.call(this, element);\n }\n }\n\n elementFromNode(node) {\n if (node.nodeType == Node.ELEMENT_NODE) {\n return node;\n }\n }\n\n elementIsActive(element) {\n if (element.isConnected != this.element.isConnected) {\n return false;\n } else {\n return this.element.contains(element);\n }\n }\n\n addElement(element) {\n if (!this.elements.has(element)) {\n if (this.elementIsActive(element)) {\n this.elements.add(element);\n\n if (this.delegate.elementMatched) {\n this.delegate.elementMatched(element);\n }\n }\n }\n }\n\n removeElement(element) {\n if (this.elements.has(element)) {\n this.elements.delete(element);\n\n if (this.delegate.elementUnmatched) {\n this.delegate.elementUnmatched(element);\n }\n }\n }\n\n}\n\nclass AttributeObserver {\n constructor(element, attributeName, delegate) {\n this.attributeName = attributeName;\n this.delegate = delegate;\n this.elementObserver = new ElementObserver(element, this);\n }\n\n get element() {\n return this.elementObserver.element;\n }\n\n get selector() {\n return `[${this.attributeName}]`;\n }\n\n start() {\n this.elementObserver.start();\n }\n\n pause(callback) {\n this.elementObserver.pause(callback);\n }\n\n stop() {\n this.elementObserver.stop();\n }\n\n refresh() {\n this.elementObserver.refresh();\n }\n\n get started() {\n return this.elementObserver.started;\n }\n\n matchElement(element) {\n return element.hasAttribute(this.attributeName);\n }\n\n matchElementsInTree(tree) {\n const match = this.matchElement(tree) ? [tree] : [];\n const matches = Array.from(tree.querySelectorAll(this.selector));\n return match.concat(matches);\n }\n\n elementMatched(element) {\n if (this.delegate.elementMatchedAttribute) {\n this.delegate.elementMatchedAttribute(element, this.attributeName);\n }\n }\n\n elementUnmatched(element) {\n if (this.delegate.elementUnmatchedAttribute) {\n this.delegate.elementUnmatchedAttribute(element, this.attributeName);\n }\n }\n\n elementAttributeChanged(element, attributeName) {\n if (this.delegate.elementAttributeValueChanged && this.attributeName == attributeName) {\n this.delegate.elementAttributeValueChanged(element, attributeName);\n }\n }\n\n}\n\nfunction add(map, key, value) {\n fetch(map, key).add(value);\n}\n\nfunction del(map, key, value) {\n fetch(map, key).delete(value);\n prune(map, key);\n}\n\nfunction fetch(map, key) {\n let values = map.get(key);\n\n if (!values) {\n values = new Set();\n map.set(key, values);\n }\n\n return values;\n}\n\nfunction prune(map, key) {\n const values = map.get(key);\n\n if (values != null && values.size == 0) {\n map.delete(key);\n }\n}\n\nclass Multimap {\n constructor() {\n this.valuesByKey = new Map();\n }\n\n get keys() {\n return Array.from(this.valuesByKey.keys());\n }\n\n get values() {\n const sets = Array.from(this.valuesByKey.values());\n return sets.reduce((values, set) => values.concat(Array.from(set)), []);\n }\n\n get size() {\n const sets = Array.from(this.valuesByKey.values());\n return sets.reduce((size, set) => size + set.size, 0);\n }\n\n add(key, value) {\n add(this.valuesByKey, key, value);\n }\n\n delete(key, value) {\n del(this.valuesByKey, key, value);\n }\n\n has(key, value) {\n const values = this.valuesByKey.get(key);\n return values != null && values.has(value);\n }\n\n hasKey(key) {\n return this.valuesByKey.has(key);\n }\n\n hasValue(value) {\n const sets = Array.from(this.valuesByKey.values());\n return sets.some(set => set.has(value));\n }\n\n getValuesForKey(key) {\n const values = this.valuesByKey.get(key);\n return values ? Array.from(values) : [];\n }\n\n getKeysForValue(value) {\n return Array.from(this.valuesByKey).filter(([_key, values]) => values.has(value)).map(([key, _values]) => key);\n }\n\n}\n\nclass IndexedMultimap extends Multimap {\n constructor() {\n super();\n this.keysByValue = new Map();\n }\n\n get values() {\n return Array.from(this.keysByValue.keys());\n }\n\n add(key, value) {\n super.add(key, value);\n add(this.keysByValue, value, key);\n }\n\n delete(key, value) {\n super.delete(key, value);\n del(this.keysByValue, value, key);\n }\n\n hasValue(value) {\n return this.keysByValue.has(value);\n }\n\n getKeysForValue(value) {\n const set = this.keysByValue.get(value);\n return set ? Array.from(set) : [];\n }\n\n}\n\nclass SelectorObserver {\n constructor(element, selector, delegate, details) {\n this._selector = selector;\n this.details = details;\n this.elementObserver = new ElementObserver(element, this);\n this.delegate = delegate;\n this.matchesByElement = new Multimap();\n }\n\n get started() {\n return this.elementObserver.started;\n }\n\n get selector() {\n return this._selector;\n }\n\n set selector(selector) {\n this._selector = selector;\n this.refresh();\n }\n\n start() {\n this.elementObserver.start();\n }\n\n pause(callback) {\n this.elementObserver.pause(callback);\n }\n\n stop() {\n this.elementObserver.stop();\n }\n\n refresh() {\n this.elementObserver.refresh();\n }\n\n get element() {\n return this.elementObserver.element;\n }\n\n matchElement(element) {\n const selector = this.selector;\n\n if (selector) {\n const matches = element.matches(selector);\n\n if (this.delegate.selectorMatchElement) {\n return matches && this.delegate.selectorMatchElement(element, this.details);\n }\n\n return matches;\n } else {\n return false;\n }\n }\n\n matchElementsInTree(tree) {\n const selector = this.selector;\n\n if (selector) {\n const match = this.matchElement(tree) ? [tree] : [];\n const matches = Array.from(tree.querySelectorAll(selector)).filter(match => this.matchElement(match));\n return match.concat(matches);\n } else {\n return [];\n }\n }\n\n elementMatched(element) {\n const selector = this.selector;\n\n if (selector) {\n this.selectorMatched(element, selector);\n }\n }\n\n elementUnmatched(element) {\n const selectors = this.matchesByElement.getKeysForValue(element);\n\n for (const selector of selectors) {\n this.selectorUnmatched(element, selector);\n }\n }\n\n elementAttributeChanged(element, _attributeName) {\n const selector = this.selector;\n\n if (selector) {\n const matches = this.matchElement(element);\n const matchedBefore = this.matchesByElement.has(selector, element);\n\n if (matches && !matchedBefore) {\n this.selectorMatched(element, selector);\n } else if (!matches && matchedBefore) {\n this.selectorUnmatched(element, selector);\n }\n }\n }\n\n selectorMatched(element, selector) {\n this.delegate.selectorMatched(element, selector, this.details);\n this.matchesByElement.add(selector, element);\n }\n\n selectorUnmatched(element, selector) {\n this.delegate.selectorUnmatched(element, selector, this.details);\n this.matchesByElement.delete(selector, element);\n }\n\n}\n\nclass StringMapObserver {\n constructor(element, delegate) {\n this.element = element;\n this.delegate = delegate;\n this.started = false;\n this.stringMap = new Map();\n this.mutationObserver = new MutationObserver(mutations => this.processMutations(mutations));\n }\n\n start() {\n if (!this.started) {\n this.started = true;\n this.mutationObserver.observe(this.element, {\n attributes: true,\n attributeOldValue: true\n });\n this.refresh();\n }\n }\n\n stop() {\n if (this.started) {\n this.mutationObserver.takeRecords();\n this.mutationObserver.disconnect();\n this.started = false;\n }\n }\n\n refresh() {\n if (this.started) {\n for (const attributeName of this.knownAttributeNames) {\n this.refreshAttribute(attributeName, null);\n }\n }\n }\n\n processMutations(mutations) {\n if (this.started) {\n for (const mutation of mutations) {\n this.processMutation(mutation);\n }\n }\n }\n\n processMutation(mutation) {\n const attributeName = mutation.attributeName;\n\n if (attributeName) {\n this.refreshAttribute(attributeName, mutation.oldValue);\n }\n }\n\n refreshAttribute(attributeName, oldValue) {\n const key = this.delegate.getStringMapKeyForAttribute(attributeName);\n\n if (key != null) {\n if (!this.stringMap.has(attributeName)) {\n this.stringMapKeyAdded(key, attributeName);\n }\n\n const value = this.element.getAttribute(attributeName);\n\n if (this.stringMap.get(attributeName) != value) {\n this.stringMapValueChanged(value, key, oldValue);\n }\n\n if (value == null) {\n const oldValue = this.stringMap.get(attributeName);\n this.stringMap.delete(attributeName);\n if (oldValue) this.stringMapKeyRemoved(key, attributeName, oldValue);\n } else {\n this.stringMap.set(attributeName, value);\n }\n }\n }\n\n stringMapKeyAdded(key, attributeName) {\n if (this.delegate.stringMapKeyAdded) {\n this.delegate.stringMapKeyAdded(key, attributeName);\n }\n }\n\n stringMapValueChanged(value, key, oldValue) {\n if (this.delegate.stringMapValueChanged) {\n this.delegate.stringMapValueChanged(value, key, oldValue);\n }\n }\n\n stringMapKeyRemoved(key, attributeName, oldValue) {\n if (this.delegate.stringMapKeyRemoved) {\n this.delegate.stringMapKeyRemoved(key, attributeName, oldValue);\n }\n }\n\n get knownAttributeNames() {\n return Array.from(new Set(this.currentAttributeNames.concat(this.recordedAttributeNames)));\n }\n\n get currentAttributeNames() {\n return Array.from(this.element.attributes).map(attribute => attribute.name);\n }\n\n get recordedAttributeNames() {\n return Array.from(this.stringMap.keys());\n }\n\n}\n\nclass TokenListObserver {\n constructor(element, attributeName, delegate) {\n this.attributeObserver = new AttributeObserver(element, attributeName, this);\n this.delegate = delegate;\n this.tokensByElement = new Multimap();\n }\n\n get started() {\n return this.attributeObserver.started;\n }\n\n start() {\n this.attributeObserver.start();\n }\n\n pause(callback) {\n this.attributeObserver.pause(callback);\n }\n\n stop() {\n this.attributeObserver.stop();\n }\n\n refresh() {\n this.attributeObserver.refresh();\n }\n\n get element() {\n return this.attributeObserver.element;\n }\n\n get attributeName() {\n return this.attributeObserver.attributeName;\n }\n\n elementMatchedAttribute(element) {\n this.tokensMatched(this.readTokensForElement(element));\n }\n\n elementAttributeValueChanged(element) {\n const _this$refreshTokensFo = this.refreshTokensForElement(element),\n _this$refreshTokensFo2 = _slicedToArray(_this$refreshTokensFo, 2),\n unmatchedTokens = _this$refreshTokensFo2[0],\n matchedTokens = _this$refreshTokensFo2[1];\n\n this.tokensUnmatched(unmatchedTokens);\n this.tokensMatched(matchedTokens);\n }\n\n elementUnmatchedAttribute(element) {\n this.tokensUnmatched(this.tokensByElement.getValuesForKey(element));\n }\n\n tokensMatched(tokens) {\n tokens.forEach(token => this.tokenMatched(token));\n }\n\n tokensUnmatched(tokens) {\n tokens.forEach(token => this.tokenUnmatched(token));\n }\n\n tokenMatched(token) {\n this.delegate.tokenMatched(token);\n this.tokensByElement.add(token.element, token);\n }\n\n tokenUnmatched(token) {\n this.delegate.tokenUnmatched(token);\n this.tokensByElement.delete(token.element, token);\n }\n\n refreshTokensForElement(element) {\n const previousTokens = this.tokensByElement.getValuesForKey(element);\n const currentTokens = this.readTokensForElement(element);\n const firstDifferingIndex = zip(previousTokens, currentTokens).findIndex(([previousToken, currentToken]) => !tokensAreEqual(previousToken, currentToken));\n\n if (firstDifferingIndex == -1) {\n return [[], []];\n } else {\n return [previousTokens.slice(firstDifferingIndex), currentTokens.slice(firstDifferingIndex)];\n }\n }\n\n readTokensForElement(element) {\n const attributeName = this.attributeName;\n const tokenString = element.getAttribute(attributeName) || \"\";\n return parseTokenString(tokenString, element, attributeName);\n }\n\n}\n\nfunction parseTokenString(tokenString, element, attributeName) {\n return tokenString.trim().split(/\\s+/).filter(content => content.length).map((content, index) => ({\n element,\n attributeName,\n content,\n index\n }));\n}\n\nfunction zip(left, right) {\n const length = Math.max(left.length, right.length);\n return Array.from({\n length\n }, (_, index) => [left[index], right[index]]);\n}\n\nfunction tokensAreEqual(left, right) {\n return left && right && left.index == right.index && left.content == right.content;\n}\n\nclass ValueListObserver {\n constructor(element, attributeName, delegate) {\n this.tokenListObserver = new TokenListObserver(element, attributeName, this);\n this.delegate = delegate;\n this.parseResultsByToken = new WeakMap();\n this.valuesByTokenByElement = new WeakMap();\n }\n\n get started() {\n return this.tokenListObserver.started;\n }\n\n start() {\n this.tokenListObserver.start();\n }\n\n stop() {\n this.tokenListObserver.stop();\n }\n\n refresh() {\n this.tokenListObserver.refresh();\n }\n\n get element() {\n return this.tokenListObserver.element;\n }\n\n get attributeName() {\n return this.tokenListObserver.attributeName;\n }\n\n tokenMatched(token) {\n const element = token.element;\n\n const _this$fetchParseResul = this.fetchParseResultForToken(token),\n value = _this$fetchParseResul.value;\n\n if (value) {\n this.fetchValuesByTokenForElement(element).set(token, value);\n this.delegate.elementMatchedValue(element, value);\n }\n }\n\n tokenUnmatched(token) {\n const element = token.element;\n\n const _this$fetchParseResul2 = this.fetchParseResultForToken(token),\n value = _this$fetchParseResul2.value;\n\n if (value) {\n this.fetchValuesByTokenForElement(element).delete(token);\n this.delegate.elementUnmatchedValue(element, value);\n }\n }\n\n fetchParseResultForToken(token) {\n let parseResult = this.parseResultsByToken.get(token);\n\n if (!parseResult) {\n parseResult = this.parseToken(token);\n this.parseResultsByToken.set(token, parseResult);\n }\n\n return parseResult;\n }\n\n fetchValuesByTokenForElement(element) {\n let valuesByToken = this.valuesByTokenByElement.get(element);\n\n if (!valuesByToken) {\n valuesByToken = new Map();\n this.valuesByTokenByElement.set(element, valuesByToken);\n }\n\n return valuesByToken;\n }\n\n parseToken(token) {\n try {\n const value = this.delegate.parseValueForToken(token);\n return {\n value\n };\n } catch (error) {\n return {\n error\n };\n }\n }\n\n}\n\nclass BindingObserver {\n constructor(context, delegate) {\n this.context = context;\n this.delegate = delegate;\n this.bindingsByAction = new Map();\n }\n\n start() {\n if (!this.valueListObserver) {\n this.valueListObserver = new ValueListObserver(this.element, this.actionAttribute, this);\n this.valueListObserver.start();\n }\n }\n\n stop() {\n if (this.valueListObserver) {\n this.valueListObserver.stop();\n delete this.valueListObserver;\n this.disconnectAllActions();\n }\n }\n\n get element() {\n return this.context.element;\n }\n\n get identifier() {\n return this.context.identifier;\n }\n\n get actionAttribute() {\n return this.schema.actionAttribute;\n }\n\n get schema() {\n return this.context.schema;\n }\n\n get bindings() {\n return Array.from(this.bindingsByAction.values());\n }\n\n connectAction(action) {\n const binding = new Binding(this.context, action);\n this.bindingsByAction.set(action, binding);\n this.delegate.bindingConnected(binding);\n }\n\n disconnectAction(action) {\n const binding = this.bindingsByAction.get(action);\n\n if (binding) {\n this.bindingsByAction.delete(action);\n this.delegate.bindingDisconnected(binding);\n }\n }\n\n disconnectAllActions() {\n this.bindings.forEach(binding => this.delegate.bindingDisconnected(binding, true));\n this.bindingsByAction.clear();\n }\n\n parseValueForToken(token) {\n const action = Action.forToken(token, this.schema);\n\n if (action.identifier == this.identifier) {\n return action;\n }\n }\n\n elementMatchedValue(element, action) {\n this.connectAction(action);\n }\n\n elementUnmatchedValue(element, action) {\n this.disconnectAction(action);\n }\n\n}\n\nclass ValueObserver {\n constructor(context, receiver) {\n this.context = context;\n this.receiver = receiver;\n this.stringMapObserver = new StringMapObserver(this.element, this);\n this.valueDescriptorMap = this.controller.valueDescriptorMap;\n }\n\n start() {\n this.stringMapObserver.start();\n this.invokeChangedCallbacksForDefaultValues();\n }\n\n stop() {\n this.stringMapObserver.stop();\n }\n\n get element() {\n return this.context.element;\n }\n\n get controller() {\n return this.context.controller;\n }\n\n getStringMapKeyForAttribute(attributeName) {\n if (attributeName in this.valueDescriptorMap) {\n return this.valueDescriptorMap[attributeName].name;\n }\n }\n\n stringMapKeyAdded(key, attributeName) {\n const descriptor = this.valueDescriptorMap[attributeName];\n\n if (!this.hasValue(key)) {\n this.invokeChangedCallback(key, descriptor.writer(this.receiver[key]), descriptor.writer(descriptor.defaultValue));\n }\n }\n\n stringMapValueChanged(value, name, oldValue) {\n const descriptor = this.valueDescriptorNameMap[name];\n if (value === null) return;\n\n if (oldValue === null) {\n oldValue = descriptor.writer(descriptor.defaultValue);\n }\n\n this.invokeChangedCallback(name, value, oldValue);\n }\n\n stringMapKeyRemoved(key, attributeName, oldValue) {\n const descriptor = this.valueDescriptorNameMap[key];\n\n if (this.hasValue(key)) {\n this.invokeChangedCallback(key, descriptor.writer(this.receiver[key]), oldValue);\n } else {\n this.invokeChangedCallback(key, descriptor.writer(descriptor.defaultValue), oldValue);\n }\n }\n\n invokeChangedCallbacksForDefaultValues() {\n for (const _ref4 of this.valueDescriptors) {\n const key = _ref4.key;\n const name = _ref4.name;\n const defaultValue = _ref4.defaultValue;\n const writer = _ref4.writer;\n\n if (defaultValue != undefined && !this.controller.data.has(key)) {\n this.invokeChangedCallback(name, writer(defaultValue), undefined);\n }\n }\n }\n\n invokeChangedCallback(name, rawValue, rawOldValue) {\n const changedMethodName = `${name}Changed`;\n const changedMethod = this.receiver[changedMethodName];\n\n if (typeof changedMethod == \"function\") {\n const descriptor = this.valueDescriptorNameMap[name];\n\n try {\n const value = descriptor.reader(rawValue);\n let oldValue = rawOldValue;\n\n if (rawOldValue) {\n oldValue = descriptor.reader(rawOldValue);\n }\n\n changedMethod.call(this.receiver, value, oldValue);\n } catch (error) {\n if (error instanceof TypeError) {\n error.message = `Stimulus Value \"${this.context.identifier}.${descriptor.name}\" - ${error.message}`;\n }\n\n throw error;\n }\n }\n }\n\n get valueDescriptors() {\n const valueDescriptorMap = this.valueDescriptorMap;\n return Object.keys(valueDescriptorMap).map(key => valueDescriptorMap[key]);\n }\n\n get valueDescriptorNameMap() {\n const descriptors = {};\n Object.keys(this.valueDescriptorMap).forEach(key => {\n const descriptor = this.valueDescriptorMap[key];\n descriptors[descriptor.name] = descriptor;\n });\n return descriptors;\n }\n\n hasValue(attributeName) {\n const descriptor = this.valueDescriptorNameMap[attributeName];\n const hasMethodName = `has${capitalize(descriptor.name)}`;\n return this.receiver[hasMethodName];\n }\n\n}\n\nclass TargetObserver {\n constructor(context, delegate) {\n this.context = context;\n this.delegate = delegate;\n this.targetsByName = new Multimap();\n }\n\n start() {\n if (!this.tokenListObserver) {\n this.tokenListObserver = new TokenListObserver(this.element, this.attributeName, this);\n this.tokenListObserver.start();\n }\n }\n\n stop() {\n if (this.tokenListObserver) {\n this.disconnectAllTargets();\n this.tokenListObserver.stop();\n delete this.tokenListObserver;\n }\n }\n\n tokenMatched({\n element,\n content: name\n }) {\n if (this.scope.containsElement(element)) {\n this.connectTarget(element, name);\n }\n }\n\n tokenUnmatched({\n element,\n content: name\n }) {\n this.disconnectTarget(element, name);\n }\n\n connectTarget(element, name) {\n var _a;\n\n if (!this.targetsByName.has(name, element)) {\n this.targetsByName.add(name, element);\n (_a = this.tokenListObserver) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.targetConnected(element, name));\n }\n }\n\n disconnectTarget(element, name) {\n var _a;\n\n if (this.targetsByName.has(name, element)) {\n this.targetsByName.delete(name, element);\n (_a = this.tokenListObserver) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.targetDisconnected(element, name));\n }\n }\n\n disconnectAllTargets() {\n for (const name of this.targetsByName.keys) {\n for (const element of this.targetsByName.getValuesForKey(name)) {\n this.disconnectTarget(element, name);\n }\n }\n }\n\n get attributeName() {\n return `data-${this.context.identifier}-target`;\n }\n\n get element() {\n return this.context.element;\n }\n\n get scope() {\n return this.context.scope;\n }\n\n}\n\nfunction readInheritableStaticArrayValues(constructor, propertyName) {\n const ancestors = getAncestorsForConstructor(constructor);\n return Array.from(ancestors.reduce((values, constructor) => {\n getOwnStaticArrayValues(constructor, propertyName).forEach(name => values.add(name));\n return values;\n }, new Set()));\n}\n\nfunction readInheritableStaticObjectPairs(constructor, propertyName) {\n const ancestors = getAncestorsForConstructor(constructor);\n return ancestors.reduce((pairs, constructor) => {\n pairs.push(...getOwnStaticObjectPairs(constructor, propertyName));\n return pairs;\n }, []);\n}\n\nfunction getAncestorsForConstructor(constructor) {\n const ancestors = [];\n\n while (constructor) {\n ancestors.push(constructor);\n constructor = Object.getPrototypeOf(constructor);\n }\n\n return ancestors.reverse();\n}\n\nfunction getOwnStaticArrayValues(constructor, propertyName) {\n const definition = constructor[propertyName];\n return Array.isArray(definition) ? definition : [];\n}\n\nfunction getOwnStaticObjectPairs(constructor, propertyName) {\n const definition = constructor[propertyName];\n return definition ? Object.keys(definition).map(key => [key, definition[key]]) : [];\n}\n\nclass OutletObserver {\n constructor(context, delegate) {\n this.started = false;\n this.context = context;\n this.delegate = delegate;\n this.outletsByName = new Multimap();\n this.outletElementsByName = new Multimap();\n this.selectorObserverMap = new Map();\n this.attributeObserverMap = new Map();\n }\n\n start() {\n if (!this.started) {\n this.outletDefinitions.forEach(outletName => {\n this.setupSelectorObserverForOutlet(outletName);\n this.setupAttributeObserverForOutlet(outletName);\n });\n this.started = true;\n this.dependentContexts.forEach(context => context.refresh());\n }\n }\n\n refresh() {\n this.selectorObserverMap.forEach(observer => observer.refresh());\n this.attributeObserverMap.forEach(observer => observer.refresh());\n }\n\n stop() {\n if (this.started) {\n this.started = false;\n this.disconnectAllOutlets();\n this.stopSelectorObservers();\n this.stopAttributeObservers();\n }\n }\n\n stopSelectorObservers() {\n if (this.selectorObserverMap.size > 0) {\n this.selectorObserverMap.forEach(observer => observer.stop());\n this.selectorObserverMap.clear();\n }\n }\n\n stopAttributeObservers() {\n if (this.attributeObserverMap.size > 0) {\n this.attributeObserverMap.forEach(observer => observer.stop());\n this.attributeObserverMap.clear();\n }\n }\n\n selectorMatched(element, _selector, {\n outletName\n }) {\n const outlet = this.getOutlet(element, outletName);\n\n if (outlet) {\n this.connectOutlet(outlet, element, outletName);\n }\n }\n\n selectorUnmatched(element, _selector, {\n outletName\n }) {\n const outlet = this.getOutletFromMap(element, outletName);\n\n if (outlet) {\n this.disconnectOutlet(outlet, element, outletName);\n }\n }\n\n selectorMatchElement(element, {\n outletName\n }) {\n const selector = this.selector(outletName);\n const hasOutlet = this.hasOutlet(element, outletName);\n const hasOutletController = element.matches(`[${this.schema.controllerAttribute}~=${outletName}]`);\n\n if (selector) {\n return hasOutlet && hasOutletController && element.matches(selector);\n } else {\n return false;\n }\n }\n\n elementMatchedAttribute(_element, attributeName) {\n const outletName = this.getOutletNameFromOutletAttributeName(attributeName);\n\n if (outletName) {\n this.updateSelectorObserverForOutlet(outletName);\n }\n }\n\n elementAttributeValueChanged(_element, attributeName) {\n const outletName = this.getOutletNameFromOutletAttributeName(attributeName);\n\n if (outletName) {\n this.updateSelectorObserverForOutlet(outletName);\n }\n }\n\n elementUnmatchedAttribute(_element, attributeName) {\n const outletName = this.getOutletNameFromOutletAttributeName(attributeName);\n\n if (outletName) {\n this.updateSelectorObserverForOutlet(outletName);\n }\n }\n\n connectOutlet(outlet, element, outletName) {\n var _a;\n\n if (!this.outletElementsByName.has(outletName, element)) {\n this.outletsByName.add(outletName, outlet);\n this.outletElementsByName.add(outletName, element);\n (_a = this.selectorObserverMap.get(outletName)) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.outletConnected(outlet, element, outletName));\n }\n }\n\n disconnectOutlet(outlet, element, outletName) {\n var _a;\n\n if (this.outletElementsByName.has(outletName, element)) {\n this.outletsByName.delete(outletName, outlet);\n this.outletElementsByName.delete(outletName, element);\n (_a = this.selectorObserverMap.get(outletName)) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.outletDisconnected(outlet, element, outletName));\n }\n }\n\n disconnectAllOutlets() {\n for (const outletName of this.outletElementsByName.keys) {\n for (const element of this.outletElementsByName.getValuesForKey(outletName)) {\n for (const outlet of this.outletsByName.getValuesForKey(outletName)) {\n this.disconnectOutlet(outlet, element, outletName);\n }\n }\n }\n }\n\n updateSelectorObserverForOutlet(outletName) {\n const observer = this.selectorObserverMap.get(outletName);\n\n if (observer) {\n observer.selector = this.selector(outletName);\n }\n }\n\n setupSelectorObserverForOutlet(outletName) {\n const selector = this.selector(outletName);\n const selectorObserver = new SelectorObserver(document.body, selector, this, {\n outletName\n });\n this.selectorObserverMap.set(outletName, selectorObserver);\n selectorObserver.start();\n }\n\n setupAttributeObserverForOutlet(outletName) {\n const attributeName = this.attributeNameForOutletName(outletName);\n const attributeObserver = new AttributeObserver(this.scope.element, attributeName, this);\n this.attributeObserverMap.set(outletName, attributeObserver);\n attributeObserver.start();\n }\n\n selector(outletName) {\n return this.scope.outlets.getSelectorForOutletName(outletName);\n }\n\n attributeNameForOutletName(outletName) {\n return this.scope.schema.outletAttributeForScope(this.identifier, outletName);\n }\n\n getOutletNameFromOutletAttributeName(attributeName) {\n return this.outletDefinitions.find(outletName => this.attributeNameForOutletName(outletName) === attributeName);\n }\n\n get outletDependencies() {\n const dependencies = new Multimap();\n this.router.modules.forEach(module => {\n const constructor = module.definition.controllerConstructor;\n const outlets = readInheritableStaticArrayValues(constructor, \"outlets\");\n outlets.forEach(outlet => dependencies.add(outlet, module.identifier));\n });\n return dependencies;\n }\n\n get outletDefinitions() {\n return this.outletDependencies.getKeysForValue(this.identifier);\n }\n\n get dependentControllerIdentifiers() {\n return this.outletDependencies.getValuesForKey(this.identifier);\n }\n\n get dependentContexts() {\n const identifiers = this.dependentControllerIdentifiers;\n return this.router.contexts.filter(context => identifiers.includes(context.identifier));\n }\n\n hasOutlet(element, outletName) {\n return !!this.getOutlet(element, outletName) || !!this.getOutletFromMap(element, outletName);\n }\n\n getOutlet(element, outletName) {\n return this.application.getControllerForElementAndIdentifier(element, outletName);\n }\n\n getOutletFromMap(element, outletName) {\n return this.outletsByName.getValuesForKey(outletName).find(outlet => outlet.element === element);\n }\n\n get scope() {\n return this.context.scope;\n }\n\n get schema() {\n return this.context.schema;\n }\n\n get identifier() {\n return this.context.identifier;\n }\n\n get application() {\n return this.context.application;\n }\n\n get router() {\n return this.application.router;\n }\n\n}\n\nclass Context {\n constructor(module, scope) {\n this.logDebugActivity = (functionName, detail = {}) => {\n const identifier = this.identifier,\n controller = this.controller,\n element = this.element;\n detail = Object.assign({\n identifier,\n controller,\n element\n }, detail);\n this.application.logDebugActivity(this.identifier, functionName, detail);\n };\n\n this.module = module;\n this.scope = scope;\n this.controller = new module.controllerConstructor(this);\n this.bindingObserver = new BindingObserver(this, this.dispatcher);\n this.valueObserver = new ValueObserver(this, this.controller);\n this.targetObserver = new TargetObserver(this, this);\n this.outletObserver = new OutletObserver(this, this);\n\n try {\n this.controller.initialize();\n this.logDebugActivity(\"initialize\");\n } catch (error) {\n this.handleError(error, \"initializing controller\");\n }\n }\n\n connect() {\n this.bindingObserver.start();\n this.valueObserver.start();\n this.targetObserver.start();\n this.outletObserver.start();\n\n try {\n this.controller.connect();\n this.logDebugActivity(\"connect\");\n } catch (error) {\n this.handleError(error, \"connecting controller\");\n }\n }\n\n refresh() {\n this.outletObserver.refresh();\n }\n\n disconnect() {\n try {\n this.controller.disconnect();\n this.logDebugActivity(\"disconnect\");\n } catch (error) {\n this.handleError(error, \"disconnecting controller\");\n }\n\n this.outletObserver.stop();\n this.targetObserver.stop();\n this.valueObserver.stop();\n this.bindingObserver.stop();\n }\n\n get application() {\n return this.module.application;\n }\n\n get identifier() {\n return this.module.identifier;\n }\n\n get schema() {\n return this.application.schema;\n }\n\n get dispatcher() {\n return this.application.dispatcher;\n }\n\n get element() {\n return this.scope.element;\n }\n\n get parentElement() {\n return this.element.parentElement;\n }\n\n handleError(error, message, detail = {}) {\n const identifier = this.identifier,\n controller = this.controller,\n element = this.element;\n detail = Object.assign({\n identifier,\n controller,\n element\n }, detail);\n this.application.handleError(error, `Error ${message}`, detail);\n }\n\n targetConnected(element, name) {\n this.invokeControllerMethod(`${name}TargetConnected`, element);\n }\n\n targetDisconnected(element, name) {\n this.invokeControllerMethod(`${name}TargetDisconnected`, element);\n }\n\n outletConnected(outlet, element, name) {\n this.invokeControllerMethod(`${namespaceCamelize(name)}OutletConnected`, outlet, element);\n }\n\n outletDisconnected(outlet, element, name) {\n this.invokeControllerMethod(`${namespaceCamelize(name)}OutletDisconnected`, outlet, element);\n }\n\n invokeControllerMethod(methodName, ...args) {\n const controller = this.controller;\n\n if (typeof controller[methodName] == \"function\") {\n controller[methodName](...args);\n }\n }\n\n}\n\nfunction bless(constructor) {\n return shadow(constructor, getBlessedProperties(constructor));\n}\n\nfunction shadow(constructor, properties) {\n const shadowConstructor = extend(constructor);\n const shadowProperties = getShadowProperties(constructor.prototype, properties);\n Object.defineProperties(shadowConstructor.prototype, shadowProperties);\n return shadowConstructor;\n}\n\nfunction getBlessedProperties(constructor) {\n const blessings = readInheritableStaticArrayValues(constructor, \"blessings\");\n return blessings.reduce((blessedProperties, blessing) => {\n const properties = blessing(constructor);\n\n for (const key in properties) {\n const descriptor = blessedProperties[key] || {};\n blessedProperties[key] = Object.assign(descriptor, properties[key]);\n }\n\n return blessedProperties;\n }, {});\n}\n\nfunction getShadowProperties(prototype, properties) {\n return getOwnKeys(properties).reduce((shadowProperties, key) => {\n const descriptor = getShadowedDescriptor(prototype, properties, key);\n\n if (descriptor) {\n Object.assign(shadowProperties, {\n [key]: descriptor\n });\n }\n\n return shadowProperties;\n }, {});\n}\n\nfunction getShadowedDescriptor(prototype, properties, key) {\n const shadowingDescriptor = Object.getOwnPropertyDescriptor(prototype, key);\n const shadowedByValue = shadowingDescriptor && \"value\" in shadowingDescriptor;\n\n if (!shadowedByValue) {\n const descriptor = Object.getOwnPropertyDescriptor(properties, key).value;\n\n if (shadowingDescriptor) {\n descriptor.get = shadowingDescriptor.get || descriptor.get;\n descriptor.set = shadowingDescriptor.set || descriptor.set;\n }\n\n return descriptor;\n }\n}\n\nconst getOwnKeys = (() => {\n if (typeof Object.getOwnPropertySymbols == \"function\") {\n return object => [...Object.getOwnPropertyNames(object), ...Object.getOwnPropertySymbols(object)];\n } else {\n return Object.getOwnPropertyNames;\n }\n})();\n\nconst extend = (() => {\n function extendWithReflect(constructor) {\n function extended() {\n return Reflect.construct(constructor, arguments, new.target);\n }\n\n extended.prototype = Object.create(constructor.prototype, {\n constructor: {\n value: extended\n }\n });\n Reflect.setPrototypeOf(extended, constructor);\n return extended;\n }\n\n function testReflectExtension() {\n const a = function () {\n this.a.call(this);\n };\n\n const b = extendWithReflect(a);\n\n b.prototype.a = function () {};\n\n return new b();\n }\n\n try {\n testReflectExtension();\n return extendWithReflect;\n } catch (error) {\n return constructor => class extended extends constructor {};\n }\n})();\n\nfunction blessDefinition(definition) {\n return {\n identifier: definition.identifier,\n controllerConstructor: bless(definition.controllerConstructor)\n };\n}\n\nclass Module {\n constructor(application, definition) {\n this.application = application;\n this.definition = blessDefinition(definition);\n this.contextsByScope = new WeakMap();\n this.connectedContexts = new Set();\n }\n\n get identifier() {\n return this.definition.identifier;\n }\n\n get controllerConstructor() {\n return this.definition.controllerConstructor;\n }\n\n get contexts() {\n return Array.from(this.connectedContexts);\n }\n\n connectContextForScope(scope) {\n const context = this.fetchContextForScope(scope);\n this.connectedContexts.add(context);\n context.connect();\n }\n\n disconnectContextForScope(scope) {\n const context = this.contextsByScope.get(scope);\n\n if (context) {\n this.connectedContexts.delete(context);\n context.disconnect();\n }\n }\n\n fetchContextForScope(scope) {\n let context = this.contextsByScope.get(scope);\n\n if (!context) {\n context = new Context(this, scope);\n this.contextsByScope.set(scope, context);\n }\n\n return context;\n }\n\n}\n\nclass ClassMap {\n constructor(scope) {\n this.scope = scope;\n }\n\n has(name) {\n return this.data.has(this.getDataKey(name));\n }\n\n get(name) {\n return this.getAll(name)[0];\n }\n\n getAll(name) {\n const tokenString = this.data.get(this.getDataKey(name)) || \"\";\n return tokenize(tokenString);\n }\n\n getAttributeName(name) {\n return this.data.getAttributeNameForKey(this.getDataKey(name));\n }\n\n getDataKey(name) {\n return `${name}-class`;\n }\n\n get data() {\n return this.scope.data;\n }\n\n}\n\nclass DataMap {\n constructor(scope) {\n this.scope = scope;\n }\n\n get element() {\n return this.scope.element;\n }\n\n get identifier() {\n return this.scope.identifier;\n }\n\n get(key) {\n const name = this.getAttributeNameForKey(key);\n return this.element.getAttribute(name);\n }\n\n set(key, value) {\n const name = this.getAttributeNameForKey(key);\n this.element.setAttribute(name, value);\n return this.get(key);\n }\n\n has(key) {\n const name = this.getAttributeNameForKey(key);\n return this.element.hasAttribute(name);\n }\n\n delete(key) {\n if (this.has(key)) {\n const name = this.getAttributeNameForKey(key);\n this.element.removeAttribute(name);\n return true;\n } else {\n return false;\n }\n }\n\n getAttributeNameForKey(key) {\n return `data-${this.identifier}-${dasherize(key)}`;\n }\n\n}\n\nclass Guide {\n constructor(logger) {\n this.warnedKeysByObject = new WeakMap();\n this.logger = logger;\n }\n\n warn(object, key, message) {\n let warnedKeys = this.warnedKeysByObject.get(object);\n\n if (!warnedKeys) {\n warnedKeys = new Set();\n this.warnedKeysByObject.set(object, warnedKeys);\n }\n\n if (!warnedKeys.has(key)) {\n warnedKeys.add(key);\n this.logger.warn(message, object);\n }\n }\n\n}\n\nfunction attributeValueContainsToken(attributeName, token) {\n return `[${attributeName}~=\"${token}\"]`;\n}\n\nclass TargetSet {\n constructor(scope) {\n this.scope = scope;\n }\n\n get element() {\n return this.scope.element;\n }\n\n get identifier() {\n return this.scope.identifier;\n }\n\n get schema() {\n return this.scope.schema;\n }\n\n has(targetName) {\n return this.find(targetName) != null;\n }\n\n find(...targetNames) {\n return targetNames.reduce((target, targetName) => target || this.findTarget(targetName) || this.findLegacyTarget(targetName), undefined);\n }\n\n findAll(...targetNames) {\n return targetNames.reduce((targets, targetName) => [...targets, ...this.findAllTargets(targetName), ...this.findAllLegacyTargets(targetName)], []);\n }\n\n findTarget(targetName) {\n const selector = this.getSelectorForTargetName(targetName);\n return this.scope.findElement(selector);\n }\n\n findAllTargets(targetName) {\n const selector = this.getSelectorForTargetName(targetName);\n return this.scope.findAllElements(selector);\n }\n\n getSelectorForTargetName(targetName) {\n const attributeName = this.schema.targetAttributeForScope(this.identifier);\n return attributeValueContainsToken(attributeName, targetName);\n }\n\n findLegacyTarget(targetName) {\n const selector = this.getLegacySelectorForTargetName(targetName);\n return this.deprecate(this.scope.findElement(selector), targetName);\n }\n\n findAllLegacyTargets(targetName) {\n const selector = this.getLegacySelectorForTargetName(targetName);\n return this.scope.findAllElements(selector).map(element => this.deprecate(element, targetName));\n }\n\n getLegacySelectorForTargetName(targetName) {\n const targetDescriptor = `${this.identifier}.${targetName}`;\n return attributeValueContainsToken(this.schema.targetAttribute, targetDescriptor);\n }\n\n deprecate(element, targetName) {\n if (element) {\n const identifier = this.identifier;\n const attributeName = this.schema.targetAttribute;\n const revisedAttributeName = this.schema.targetAttributeForScope(identifier);\n this.guide.warn(element, `target:${targetName}`, `Please replace ${attributeName}=\"${identifier}.${targetName}\" with ${revisedAttributeName}=\"${targetName}\". ` + `The ${attributeName} attribute is deprecated and will be removed in a future version of Stimulus.`);\n }\n\n return element;\n }\n\n get guide() {\n return this.scope.guide;\n }\n\n}\n\nclass OutletSet {\n constructor(scope, controllerElement) {\n this.scope = scope;\n this.controllerElement = controllerElement;\n }\n\n get element() {\n return this.scope.element;\n }\n\n get identifier() {\n return this.scope.identifier;\n }\n\n get schema() {\n return this.scope.schema;\n }\n\n has(outletName) {\n return this.find(outletName) != null;\n }\n\n find(...outletNames) {\n return outletNames.reduce((outlet, outletName) => outlet || this.findOutlet(outletName), undefined);\n }\n\n findAll(...outletNames) {\n return outletNames.reduce((outlets, outletName) => [...outlets, ...this.findAllOutlets(outletName)], []);\n }\n\n getSelectorForOutletName(outletName) {\n const attributeName = this.schema.outletAttributeForScope(this.identifier, outletName);\n return this.controllerElement.getAttribute(attributeName);\n }\n\n findOutlet(outletName) {\n const selector = this.getSelectorForOutletName(outletName);\n if (selector) return this.findElement(selector, outletName);\n }\n\n findAllOutlets(outletName) {\n const selector = this.getSelectorForOutletName(outletName);\n return selector ? this.findAllElements(selector, outletName) : [];\n }\n\n findElement(selector, outletName) {\n const elements = this.scope.queryElements(selector);\n return elements.filter(element => this.matchesElement(element, selector, outletName))[0];\n }\n\n findAllElements(selector, outletName) {\n const elements = this.scope.queryElements(selector);\n return elements.filter(element => this.matchesElement(element, selector, outletName));\n }\n\n matchesElement(element, selector, outletName) {\n const controllerAttribute = element.getAttribute(this.scope.schema.controllerAttribute) || \"\";\n return element.matches(selector) && controllerAttribute.split(\" \").includes(outletName);\n }\n\n}\n\nclass Scope {\n constructor(schema, element, identifier, logger) {\n this.targets = new TargetSet(this);\n this.classes = new ClassMap(this);\n this.data = new DataMap(this);\n\n this.containsElement = element => {\n return element.closest(this.controllerSelector) === this.element;\n };\n\n this.schema = schema;\n this.element = element;\n this.identifier = identifier;\n this.guide = new Guide(logger);\n this.outlets = new OutletSet(this.documentScope, element);\n }\n\n findElement(selector) {\n return this.element.matches(selector) ? this.element : this.queryElements(selector).find(this.containsElement);\n }\n\n findAllElements(selector) {\n return [...(this.element.matches(selector) ? [this.element] : []), ...this.queryElements(selector).filter(this.containsElement)];\n }\n\n queryElements(selector) {\n return Array.from(this.element.querySelectorAll(selector));\n }\n\n get controllerSelector() {\n return attributeValueContainsToken(this.schema.controllerAttribute, this.identifier);\n }\n\n get isDocumentScope() {\n return this.element === document.documentElement;\n }\n\n get documentScope() {\n return this.isDocumentScope ? this : new Scope(this.schema, document.documentElement, this.identifier, this.guide.logger);\n }\n\n}\n\nclass ScopeObserver {\n constructor(element, schema, delegate) {\n this.element = element;\n this.schema = schema;\n this.delegate = delegate;\n this.valueListObserver = new ValueListObserver(this.element, this.controllerAttribute, this);\n this.scopesByIdentifierByElement = new WeakMap();\n this.scopeReferenceCounts = new WeakMap();\n }\n\n start() {\n this.valueListObserver.start();\n }\n\n stop() {\n this.valueListObserver.stop();\n }\n\n get controllerAttribute() {\n return this.schema.controllerAttribute;\n }\n\n parseValueForToken(token) {\n const element = token.element,\n identifier = token.content;\n return this.parseValueForElementAndIdentifier(element, identifier);\n }\n\n parseValueForElementAndIdentifier(element, identifier) {\n const scopesByIdentifier = this.fetchScopesByIdentifierForElement(element);\n let scope = scopesByIdentifier.get(identifier);\n\n if (!scope) {\n scope = this.delegate.createScopeForElementAndIdentifier(element, identifier);\n scopesByIdentifier.set(identifier, scope);\n }\n\n return scope;\n }\n\n elementMatchedValue(element, value) {\n const referenceCount = (this.scopeReferenceCounts.get(value) || 0) + 1;\n this.scopeReferenceCounts.set(value, referenceCount);\n\n if (referenceCount == 1) {\n this.delegate.scopeConnected(value);\n }\n }\n\n elementUnmatchedValue(element, value) {\n const referenceCount = this.scopeReferenceCounts.get(value);\n\n if (referenceCount) {\n this.scopeReferenceCounts.set(value, referenceCount - 1);\n\n if (referenceCount == 1) {\n this.delegate.scopeDisconnected(value);\n }\n }\n }\n\n fetchScopesByIdentifierForElement(element) {\n let scopesByIdentifier = this.scopesByIdentifierByElement.get(element);\n\n if (!scopesByIdentifier) {\n scopesByIdentifier = new Map();\n this.scopesByIdentifierByElement.set(element, scopesByIdentifier);\n }\n\n return scopesByIdentifier;\n }\n\n}\n\nclass Router {\n constructor(application) {\n this.application = application;\n this.scopeObserver = new ScopeObserver(this.element, this.schema, this);\n this.scopesByIdentifier = new Multimap();\n this.modulesByIdentifier = new Map();\n }\n\n get element() {\n return this.application.element;\n }\n\n get schema() {\n return this.application.schema;\n }\n\n get logger() {\n return this.application.logger;\n }\n\n get controllerAttribute() {\n return this.schema.controllerAttribute;\n }\n\n get modules() {\n return Array.from(this.modulesByIdentifier.values());\n }\n\n get contexts() {\n return this.modules.reduce((contexts, module) => contexts.concat(module.contexts), []);\n }\n\n start() {\n this.scopeObserver.start();\n }\n\n stop() {\n this.scopeObserver.stop();\n }\n\n loadDefinition(definition) {\n this.unloadIdentifier(definition.identifier);\n const module = new Module(this.application, definition);\n this.connectModule(module);\n const afterLoad = definition.controllerConstructor.afterLoad;\n\n if (afterLoad) {\n afterLoad.call(definition.controllerConstructor, definition.identifier, this.application);\n }\n }\n\n unloadIdentifier(identifier) {\n const module = this.modulesByIdentifier.get(identifier);\n\n if (module) {\n this.disconnectModule(module);\n }\n }\n\n getContextForElementAndIdentifier(element, identifier) {\n const module = this.modulesByIdentifier.get(identifier);\n\n if (module) {\n return module.contexts.find(context => context.element == element);\n }\n }\n\n proposeToConnectScopeForElementAndIdentifier(element, identifier) {\n const scope = this.scopeObserver.parseValueForElementAndIdentifier(element, identifier);\n\n if (scope) {\n this.scopeObserver.elementMatchedValue(scope.element, scope);\n } else {\n console.error(`Couldn't find or create scope for identifier: \"${identifier}\" and element:`, element);\n }\n }\n\n handleError(error, message, detail) {\n this.application.handleError(error, message, detail);\n }\n\n createScopeForElementAndIdentifier(element, identifier) {\n return new Scope(this.schema, element, identifier, this.logger);\n }\n\n scopeConnected(scope) {\n this.scopesByIdentifier.add(scope.identifier, scope);\n const module = this.modulesByIdentifier.get(scope.identifier);\n\n if (module) {\n module.connectContextForScope(scope);\n }\n }\n\n scopeDisconnected(scope) {\n this.scopesByIdentifier.delete(scope.identifier, scope);\n const module = this.modulesByIdentifier.get(scope.identifier);\n\n if (module) {\n module.disconnectContextForScope(scope);\n }\n }\n\n connectModule(module) {\n this.modulesByIdentifier.set(module.identifier, module);\n const scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n scopes.forEach(scope => module.connectContextForScope(scope));\n }\n\n disconnectModule(module) {\n this.modulesByIdentifier.delete(module.identifier);\n const scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n scopes.forEach(scope => module.disconnectContextForScope(scope));\n }\n\n}\n\nconst defaultSchema = {\n controllerAttribute: \"data-controller\",\n actionAttribute: \"data-action\",\n targetAttribute: \"data-target\",\n targetAttributeForScope: identifier => `data-${identifier}-target`,\n outletAttributeForScope: (identifier, outlet) => `data-${identifier}-${outlet}-outlet`,\n keyMappings: Object.assign(Object.assign({\n enter: \"Enter\",\n tab: \"Tab\",\n esc: \"Escape\",\n space: \" \",\n up: \"ArrowUp\",\n down: \"ArrowDown\",\n left: \"ArrowLeft\",\n right: \"ArrowRight\",\n home: \"Home\",\n end: \"End\",\n page_up: \"PageUp\",\n page_down: \"PageDown\"\n }, objectFromEntries(\"abcdefghijklmnopqrstuvwxyz\".split(\"\").map(c => [c, c]))), objectFromEntries(\"0123456789\".split(\"\").map(n => [n, n])))\n};\n\nfunction objectFromEntries(array) {\n return array.reduce((memo, [k, v]) => Object.assign(Object.assign({}, memo), {\n [k]: v\n }), {});\n}\n\nclass Application {\n constructor(element = document.documentElement, schema = defaultSchema) {\n this.logger = console;\n this.debug = false;\n\n this.logDebugActivity = (identifier, functionName, detail = {}) => {\n if (this.debug) {\n this.logFormattedMessage(identifier, functionName, detail);\n }\n };\n\n this.element = element;\n this.schema = schema;\n this.dispatcher = new Dispatcher(this);\n this.router = new Router(this);\n this.actionDescriptorFilters = Object.assign({}, defaultActionDescriptorFilters);\n }\n\n static start(element, schema) {\n const application = new this(element, schema);\n application.start();\n return application;\n }\n\n async start() {\n await domReady();\n this.logDebugActivity(\"application\", \"starting\");\n this.dispatcher.start();\n this.router.start();\n this.logDebugActivity(\"application\", \"start\");\n }\n\n stop() {\n this.logDebugActivity(\"application\", \"stopping\");\n this.dispatcher.stop();\n this.router.stop();\n this.logDebugActivity(\"application\", \"stop\");\n }\n\n register(identifier, controllerConstructor) {\n this.load({\n identifier,\n controllerConstructor\n });\n }\n\n registerActionOption(name, filter) {\n this.actionDescriptorFilters[name] = filter;\n }\n\n load(head, ...rest) {\n const definitions = Array.isArray(head) ? head : [head, ...rest];\n definitions.forEach(definition => {\n if (definition.controllerConstructor.shouldLoad) {\n this.router.loadDefinition(definition);\n }\n });\n }\n\n unload(head, ...rest) {\n const identifiers = Array.isArray(head) ? head : [head, ...rest];\n identifiers.forEach(identifier => this.router.unloadIdentifier(identifier));\n }\n\n get controllers() {\n return this.router.contexts.map(context => context.controller);\n }\n\n getControllerForElementAndIdentifier(element, identifier) {\n const context = this.router.getContextForElementAndIdentifier(element, identifier);\n return context ? context.controller : null;\n }\n\n handleError(error, message, detail) {\n var _a;\n\n this.logger.error(`%s\\n\\n%o\\n\\n%o`, message, error, detail);\n (_a = window.onerror) === null || _a === void 0 ? void 0 : _a.call(window, message, \"\", 0, 0, error);\n }\n\n logFormattedMessage(identifier, functionName, detail = {}) {\n detail = Object.assign({\n application: this\n }, detail);\n this.logger.groupCollapsed(`${identifier} #${functionName}`);\n this.logger.log(\"details:\", Object.assign({}, detail));\n this.logger.groupEnd();\n }\n\n}\n\nfunction domReady() {\n return new Promise(resolve => {\n if (document.readyState == \"loading\") {\n document.addEventListener(\"DOMContentLoaded\", () => resolve());\n } else {\n resolve();\n }\n });\n}\n\nfunction ClassPropertiesBlessing(constructor) {\n const classes = readInheritableStaticArrayValues(constructor, \"classes\");\n return classes.reduce((properties, classDefinition) => {\n return Object.assign(properties, propertiesForClassDefinition(classDefinition));\n }, {});\n}\n\nfunction propertiesForClassDefinition(key) {\n return {\n [`${key}Class`]: {\n get() {\n const classes = this.classes;\n\n if (classes.has(key)) {\n return classes.get(key);\n } else {\n const attribute = classes.getAttributeName(key);\n throw new Error(`Missing attribute \"${attribute}\"`);\n }\n }\n\n },\n [`${key}Classes`]: {\n get() {\n return this.classes.getAll(key);\n }\n\n },\n [`has${capitalize(key)}Class`]: {\n get() {\n return this.classes.has(key);\n }\n\n }\n };\n}\n\nfunction OutletPropertiesBlessing(constructor) {\n const outlets = readInheritableStaticArrayValues(constructor, \"outlets\");\n return outlets.reduce((properties, outletDefinition) => {\n return Object.assign(properties, propertiesForOutletDefinition(outletDefinition));\n }, {});\n}\n\nfunction getOutletController(controller, element, identifier) {\n return controller.application.getControllerForElementAndIdentifier(element, identifier);\n}\n\nfunction getControllerAndEnsureConnectedScope(controller, element, outletName) {\n let outletController = getOutletController(controller, element, outletName);\n if (outletController) return outletController;\n controller.application.router.proposeToConnectScopeForElementAndIdentifier(element, outletName);\n outletController = getOutletController(controller, element, outletName);\n if (outletController) return outletController;\n}\n\nfunction propertiesForOutletDefinition(name) {\n const camelizedName = namespaceCamelize(name);\n return {\n [`${camelizedName}Outlet`]: {\n get() {\n const outletElement = this.outlets.find(name);\n const selector = this.outlets.getSelectorForOutletName(name);\n\n if (outletElement) {\n const outletController = getControllerAndEnsureConnectedScope(this, outletElement, name);\n if (outletController) return outletController;\n throw new Error(`The provided outlet element is missing an outlet controller \"${name}\" instance for host controller \"${this.identifier}\"`);\n }\n\n throw new Error(`Missing outlet element \"${name}\" for host controller \"${this.identifier}\". Stimulus couldn't find a matching outlet element using selector \"${selector}\".`);\n }\n\n },\n [`${camelizedName}Outlets`]: {\n get() {\n const outlets = this.outlets.findAll(name);\n\n if (outlets.length > 0) {\n return outlets.map(outletElement => {\n const outletController = getControllerAndEnsureConnectedScope(this, outletElement, name);\n if (outletController) return outletController;\n console.warn(`The provided outlet element is missing an outlet controller \"${name}\" instance for host controller \"${this.identifier}\"`, outletElement);\n }).filter(controller => controller);\n }\n\n return [];\n }\n\n },\n [`${camelizedName}OutletElement`]: {\n get() {\n const outletElement = this.outlets.find(name);\n const selector = this.outlets.getSelectorForOutletName(name);\n\n if (outletElement) {\n return outletElement;\n } else {\n throw new Error(`Missing outlet element \"${name}\" for host controller \"${this.identifier}\". Stimulus couldn't find a matching outlet element using selector \"${selector}\".`);\n }\n }\n\n },\n [`${camelizedName}OutletElements`]: {\n get() {\n return this.outlets.findAll(name);\n }\n\n },\n [`has${capitalize(camelizedName)}Outlet`]: {\n get() {\n return this.outlets.has(name);\n }\n\n }\n };\n}\n\nfunction TargetPropertiesBlessing(constructor) {\n const targets = readInheritableStaticArrayValues(constructor, \"targets\");\n return targets.reduce((properties, targetDefinition) => {\n return Object.assign(properties, propertiesForTargetDefinition(targetDefinition));\n }, {});\n}\n\nfunction propertiesForTargetDefinition(name) {\n return {\n [`${name}Target`]: {\n get() {\n const target = this.targets.find(name);\n\n if (target) {\n return target;\n } else {\n throw new Error(`Missing target element \"${name}\" for \"${this.identifier}\" controller`);\n }\n }\n\n },\n [`${name}Targets`]: {\n get() {\n return this.targets.findAll(name);\n }\n\n },\n [`has${capitalize(name)}Target`]: {\n get() {\n return this.targets.has(name);\n }\n\n }\n };\n}\n\nfunction ValuePropertiesBlessing(constructor) {\n const valueDefinitionPairs = readInheritableStaticObjectPairs(constructor, \"values\");\n const propertyDescriptorMap = {\n valueDescriptorMap: {\n get() {\n return valueDefinitionPairs.reduce((result, valueDefinitionPair) => {\n const valueDescriptor = parseValueDefinitionPair(valueDefinitionPair, this.identifier);\n const attributeName = this.data.getAttributeNameForKey(valueDescriptor.key);\n return Object.assign(result, {\n [attributeName]: valueDescriptor\n });\n }, {});\n }\n\n }\n };\n return valueDefinitionPairs.reduce((properties, valueDefinitionPair) => {\n return Object.assign(properties, propertiesForValueDefinitionPair(valueDefinitionPair));\n }, propertyDescriptorMap);\n}\n\nfunction propertiesForValueDefinitionPair(valueDefinitionPair, controller) {\n const definition = parseValueDefinitionPair(valueDefinitionPair, controller);\n const key = definition.key,\n name = definition.name,\n read = definition.reader,\n write = definition.writer;\n return {\n [name]: {\n get() {\n const value = this.data.get(key);\n\n if (value !== null) {\n return read(value);\n } else {\n return definition.defaultValue;\n }\n },\n\n set(value) {\n if (value === undefined) {\n this.data.delete(key);\n } else {\n this.data.set(key, write(value));\n }\n }\n\n },\n [`has${capitalize(name)}`]: {\n get() {\n return this.data.has(key) || definition.hasCustomDefaultValue;\n }\n\n }\n };\n}\n\nfunction parseValueDefinitionPair([token, typeDefinition], controller) {\n return valueDescriptorForTokenAndTypeDefinition({\n controller,\n token,\n typeDefinition\n });\n}\n\nfunction parseValueTypeConstant(constant) {\n switch (constant) {\n case Array:\n return \"array\";\n\n case Boolean:\n return \"boolean\";\n\n case Number:\n return \"number\";\n\n case Object:\n return \"object\";\n\n case String:\n return \"string\";\n }\n}\n\nfunction parseValueTypeDefault(defaultValue) {\n switch (typeof defaultValue) {\n case \"boolean\":\n return \"boolean\";\n\n case \"number\":\n return \"number\";\n\n case \"string\":\n return \"string\";\n }\n\n if (Array.isArray(defaultValue)) return \"array\";\n if (Object.prototype.toString.call(defaultValue) === \"[object Object]\") return \"object\";\n}\n\nfunction parseValueTypeObject(payload) {\n const controller = payload.controller,\n token = payload.token,\n typeObject = payload.typeObject;\n const hasType = isSomething(typeObject.type);\n const hasDefault = isSomething(typeObject.default);\n const fullObject = hasType && hasDefault;\n const onlyType = hasType && !hasDefault;\n const onlyDefault = !hasType && hasDefault;\n const typeFromObject = parseValueTypeConstant(typeObject.type);\n const typeFromDefaultValue = parseValueTypeDefault(payload.typeObject.default);\n if (onlyType) return typeFromObject;\n if (onlyDefault) return typeFromDefaultValue;\n\n if (typeFromObject !== typeFromDefaultValue) {\n const propertyPath = controller ? `${controller}.${token}` : token;\n throw new Error(`The specified default value for the Stimulus Value \"${propertyPath}\" must match the defined type \"${typeFromObject}\". The provided default value of \"${typeObject.default}\" is of type \"${typeFromDefaultValue}\".`);\n }\n\n if (fullObject) return typeFromObject;\n}\n\nfunction parseValueTypeDefinition(payload) {\n const controller = payload.controller,\n token = payload.token,\n typeDefinition = payload.typeDefinition;\n const typeObject = {\n controller,\n token,\n typeObject: typeDefinition\n };\n const typeFromObject = parseValueTypeObject(typeObject);\n const typeFromDefaultValue = parseValueTypeDefault(typeDefinition);\n const typeFromConstant = parseValueTypeConstant(typeDefinition);\n const type = typeFromObject || typeFromDefaultValue || typeFromConstant;\n if (type) return type;\n const propertyPath = controller ? `${controller}.${typeDefinition}` : token;\n throw new Error(`Unknown value type \"${propertyPath}\" for \"${token}\" value`);\n}\n\nfunction defaultValueForDefinition(typeDefinition) {\n const constant = parseValueTypeConstant(typeDefinition);\n if (constant) return defaultValuesByType[constant];\n const hasDefault = hasProperty(typeDefinition, \"default\");\n const hasType = hasProperty(typeDefinition, \"type\");\n const typeObject = typeDefinition;\n if (hasDefault) return typeObject.default;\n\n if (hasType) {\n const type = typeObject.type;\n const constantFromType = parseValueTypeConstant(type);\n if (constantFromType) return defaultValuesByType[constantFromType];\n }\n\n return typeDefinition;\n}\n\nfunction valueDescriptorForTokenAndTypeDefinition(payload) {\n const token = payload.token,\n typeDefinition = payload.typeDefinition;\n const key = `${dasherize(token)}-value`;\n const type = parseValueTypeDefinition(payload);\n return {\n type,\n key,\n name: camelize(key),\n\n get defaultValue() {\n return defaultValueForDefinition(typeDefinition);\n },\n\n get hasCustomDefaultValue() {\n return parseValueTypeDefault(typeDefinition) !== undefined;\n },\n\n reader: readers[type],\n writer: writers[type] || writers.default\n };\n}\n\nconst defaultValuesByType = {\n get array() {\n return [];\n },\n\n boolean: false,\n number: 0,\n\n get object() {\n return {};\n },\n\n string: \"\"\n};\nconst readers = {\n array(value) {\n const array = JSON.parse(value);\n\n if (!Array.isArray(array)) {\n throw new TypeError(`expected value of type \"array\" but instead got value \"${value}\" of type \"${parseValueTypeDefault(array)}\"`);\n }\n\n return array;\n },\n\n boolean(value) {\n return !(value == \"0\" || String(value).toLowerCase() == \"false\");\n },\n\n number(value) {\n return Number(value.replace(/_/g, \"\"));\n },\n\n object(value) {\n const object = JSON.parse(value);\n\n if (object === null || typeof object != \"object\" || Array.isArray(object)) {\n throw new TypeError(`expected value of type \"object\" but instead got value \"${value}\" of type \"${parseValueTypeDefault(object)}\"`);\n }\n\n return object;\n },\n\n string(value) {\n return value;\n }\n\n};\nconst writers = {\n default: writeString,\n array: writeJSON,\n object: writeJSON\n};\n\nfunction writeJSON(value) {\n return JSON.stringify(value);\n}\n\nfunction writeString(value) {\n return `${value}`;\n}\n\nclass Controller {\n constructor(context) {\n this.context = context;\n }\n\n static get shouldLoad() {\n return true;\n }\n\n static afterLoad(_identifier, _application) {\n return;\n }\n\n get application() {\n return this.context.application;\n }\n\n get scope() {\n return this.context.scope;\n }\n\n get element() {\n return this.scope.element;\n }\n\n get identifier() {\n return this.scope.identifier;\n }\n\n get targets() {\n return this.scope.targets;\n }\n\n get outlets() {\n return this.scope.outlets;\n }\n\n get classes() {\n return this.scope.classes;\n }\n\n get data() {\n return this.scope.data;\n }\n\n initialize() {}\n\n connect() {}\n\n disconnect() {}\n\n dispatch(eventName, {\n target = this.element,\n detail = {},\n prefix = this.identifier,\n bubbles = true,\n cancelable = true\n } = {}) {\n const type = prefix ? `${prefix}:${eventName}` : eventName;\n const event = new CustomEvent(type, {\n detail,\n bubbles,\n cancelable\n });\n target.dispatchEvent(event);\n return event;\n }\n\n}\n\nController.blessings = [ClassPropertiesBlessing, TargetPropertiesBlessing, ValuePropertiesBlessing, OutletPropertiesBlessing];\nController.targets = [];\nController.outlets = [];\nController.values = {};\nexport { Application, AttributeObserver, Context, Controller, ElementObserver, IndexedMultimap, Multimap, SelectorObserver, StringMapObserver, TokenListObserver, ValueListObserver, add, defaultSchema, del, fetch, prune };","//! moment.js\n//! version : 2.29.4\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : global.moment = factory();\n})(this, function () {\n 'use strict';\n\n var hookCallback;\n\n function hooks() {\n return hookCallback.apply(null, arguments);\n } // This is done to register the method called with moment()\n // without creating circular dependencies.\n\n\n function setHookCallback(callback) {\n hookCallback = callback;\n }\n\n function isArray(input) {\n return input instanceof Array || Object.prototype.toString.call(input) === '[object Array]';\n }\n\n function isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return input != null && Object.prototype.toString.call(input) === '[object Object]';\n }\n\n function hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n }\n\n function isObjectEmpty(obj) {\n if (Object.getOwnPropertyNames) {\n return Object.getOwnPropertyNames(obj).length === 0;\n } else {\n var k;\n\n for (k in obj) {\n if (hasOwnProp(obj, k)) {\n return false;\n }\n }\n\n return true;\n }\n }\n\n function isUndefined(input) {\n return input === void 0;\n }\n\n function isNumber(input) {\n return typeof input === 'number' || Object.prototype.toString.call(input) === '[object Number]';\n }\n\n function isDate(input) {\n return input instanceof Date || Object.prototype.toString.call(input) === '[object Date]';\n }\n\n function map(arr, fn) {\n var res = [],\n i,\n arrLen = arr.length;\n\n for (i = 0; i < arrLen; ++i) {\n res.push(fn(arr[i], i));\n }\n\n return res;\n }\n\n function extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n\n return a;\n }\n\n function createUTC(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n }\n\n function defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty: false,\n unusedTokens: [],\n unusedInput: [],\n overflow: -2,\n charsLeftOver: 0,\n nullInput: false,\n invalidEra: null,\n invalidMonth: null,\n invalidFormat: false,\n userInvalidated: false,\n iso: false,\n parsedDateParts: [],\n era: null,\n meridiem: null,\n rfc2822: false,\n weekdayMismatch: false\n };\n }\n\n function getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n\n return m._pf;\n }\n\n var some;\n\n if (Array.prototype.some) {\n some = Array.prototype.some;\n } else {\n some = function (fun) {\n var t = Object(this),\n len = t.length >>> 0,\n i;\n\n for (i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n\n return false;\n };\n }\n\n function isValid(m) {\n if (m._isValid == null) {\n var flags = getParsingFlags(m),\n parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n }),\n isNowValid = !isNaN(m._d.getTime()) && flags.overflow < 0 && !flags.empty && !flags.invalidEra && !flags.invalidMonth && !flags.invalidWeekday && !flags.weekdayMismatch && !flags.nullInput && !flags.invalidFormat && !flags.userInvalidated && (!flags.meridiem || flags.meridiem && parsedParts);\n\n if (m._strict) {\n isNowValid = isNowValid && flags.charsLeftOver === 0 && flags.unusedTokens.length === 0 && flags.bigHour === undefined;\n }\n\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n } else {\n return isNowValid;\n }\n }\n\n return m._isValid;\n }\n\n function createInvalid(flags) {\n var m = createUTC(NaN);\n\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n } else {\n getParsingFlags(m).userInvalidated = true;\n }\n\n return m;\n } // Plugins that add properties should also add the key here (null value),\n // so we can properly clone ourselves.\n\n\n var momentProperties = hooks.momentProperties = [],\n updateInProgress = false;\n\n function copyConfig(to, from) {\n var i,\n prop,\n val,\n momentPropertiesLen = momentProperties.length;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentPropertiesLen > 0) {\n for (i = 0; i < momentPropertiesLen; i++) {\n prop = momentProperties[i];\n val = from[prop];\n\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n } // Moment prototype object\n\n\n function Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n\n if (!this.isValid()) {\n this._d = new Date(NaN);\n } // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n\n\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n }\n\n function isMoment(obj) {\n return obj instanceof Moment || obj != null && obj._isAMomentObject != null;\n }\n\n function warn(msg) {\n if (hooks.suppressDeprecationWarnings === false && typeof console !== 'undefined' && console.warn) {\n console.warn('Deprecation warning: ' + msg);\n }\n }\n\n function deprecate(msg, fn) {\n var firstTime = true;\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n\n if (firstTime) {\n var args = [],\n arg,\n i,\n key,\n argLen = arguments.length;\n\n for (i = 0; i < argLen; i++) {\n arg = '';\n\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n\n for (key in arguments[0]) {\n if (hasOwnProp(arguments[0], key)) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n }\n\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n\n args.push(arg);\n }\n\n warn(msg + '\\nArguments: ' + Array.prototype.slice.call(args).join('') + '\\n' + new Error().stack);\n firstTime = false;\n }\n\n return fn.apply(this, arguments);\n }, fn);\n }\n\n var deprecations = {};\n\n function deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n }\n\n hooks.suppressDeprecationWarnings = false;\n hooks.deprecationHandler = null;\n\n function isFunction(input) {\n return typeof Function !== 'undefined' && input instanceof Function || Object.prototype.toString.call(input) === '[object Function]';\n }\n\n function set(config) {\n var prop, i;\n\n for (i in config) {\n if (hasOwnProp(config, i)) {\n prop = config[i];\n\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n }\n\n this._config = config; // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n\n this._dayOfMonthOrdinalParseLenient = new RegExp((this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) + '|' + /\\d{1,2}/.source);\n }\n\n function mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig),\n prop;\n\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n\n for (prop in parentConfig) {\n if (hasOwnProp(parentConfig, prop) && !hasOwnProp(childConfig, prop) && isObject(parentConfig[prop])) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n\n return res;\n }\n\n function Locale(config) {\n if (config != null) {\n this.set(config);\n }\n }\n\n var keys;\n\n if (Object.keys) {\n keys = Object.keys;\n } else {\n keys = function (obj) {\n var i,\n res = [];\n\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n\n return res;\n };\n }\n\n var defaultCalendar = {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L'\n };\n\n function calendar(key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n }\n\n function zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (sign ? forceSign ? '+' : '' : '-') + Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + absNumber;\n }\n\n var formattingTokens = /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n formatFunctions = {},\n formatTokenFunctions = {}; // token: 'M'\n // padded: ['MM', 2]\n // ordinal: 'Mo'\n // callback: function () { this.month() + 1 }\n\n function addFormatToken(token, padded, ordinal, callback) {\n var func = callback;\n\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n\n if (token) {\n formatTokenFunctions[token] = func;\n }\n\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(func.apply(this, arguments), token);\n };\n }\n }\n\n function removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n\n return input.replace(/\\\\/g, '');\n }\n\n function makeFormatFunction(format) {\n var array = format.match(formattingTokens),\n i,\n length;\n\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (mom) {\n var output = '',\n i;\n\n for (i = 0; i < length; i++) {\n output += isFunction(array[i]) ? array[i].call(mom, format) : array[i];\n }\n\n return output;\n };\n } // format date using native date object\n\n\n function formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n\n format = expandFormat(format, m.localeData());\n formatFunctions[format] = formatFunctions[format] || makeFormatFunction(format);\n return formatFunctions[format](m);\n }\n\n function expandFormat(format, locale) {\n var i = 5;\n\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n\n localFormattingTokens.lastIndex = 0;\n\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(localFormattingTokens, replaceLongDateFormatTokens);\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n }\n\n var defaultLongDateFormat = {\n LTS: 'h:mm:ss A',\n LT: 'h:mm A',\n L: 'MM/DD/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A'\n };\n\n function longDateFormat(key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper.match(formattingTokens).map(function (tok) {\n if (tok === 'MMMM' || tok === 'MM' || tok === 'DD' || tok === 'dddd') {\n return tok.slice(1);\n }\n\n return tok;\n }).join('');\n return this._longDateFormat[key];\n }\n\n var defaultInvalidDate = 'Invalid date';\n\n function invalidDate() {\n return this._invalidDate;\n }\n\n var defaultOrdinal = '%d',\n defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n function ordinal(number) {\n return this._ordinal.replace('%d', number);\n }\n\n var defaultRelativeTime = {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n w: 'a week',\n ww: '%d weeks',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years'\n };\n\n function relativeTime(number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return isFunction(output) ? output(number, withoutSuffix, string, isFuture) : output.replace(/%d/i, number);\n }\n\n function pastFuture(diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n }\n\n var aliases = {};\n\n function addUnitAlias(unit, shorthand) {\n var lowerCase = unit.toLowerCase();\n aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n }\n\n function normalizeUnits(units) {\n return typeof units === 'string' ? aliases[units] || aliases[units.toLowerCase()] : undefined;\n }\n\n function normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n }\n\n var priorities = {};\n\n function addUnitPriority(unit, priority) {\n priorities[unit] = priority;\n }\n\n function getPrioritizedUnits(unitsObj) {\n var units = [],\n u;\n\n for (u in unitsObj) {\n if (hasOwnProp(unitsObj, u)) {\n units.push({\n unit: u,\n priority: priorities[u]\n });\n }\n }\n\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n }\n\n function isLeapYear(year) {\n return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0;\n }\n\n function absFloor(number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n }\n\n function toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n }\n\n function makeGetSet(unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n }\n\n function get(mom, unit) {\n return mom.isValid() ? mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]() : NaN;\n }\n\n function set$1(mom, unit, value) {\n if (mom.isValid() && !isNaN(value)) {\n if (unit === 'FullYear' && isLeapYear(mom.year()) && mom.month() === 1 && mom.date() === 29) {\n value = toInt(value);\n\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value, mom.month(), daysInMonth(value, mom.month()));\n } else {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n }\n }\n } // MOMENTS\n\n\n function stringGet(units) {\n units = normalizeUnits(units);\n\n if (isFunction(this[units])) {\n return this[units]();\n }\n\n return this;\n }\n\n function stringSet(units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units),\n i,\n prioritizedLen = prioritized.length;\n\n for (i = 0; i < prioritizedLen; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n\n return this;\n }\n\n var match1 = /\\d/,\n // 0 - 9\n match2 = /\\d\\d/,\n // 00 - 99\n match3 = /\\d{3}/,\n // 000 - 999\n match4 = /\\d{4}/,\n // 0000 - 9999\n match6 = /[+-]?\\d{6}/,\n // -999999 - 999999\n match1to2 = /\\d\\d?/,\n // 0 - 99\n match3to4 = /\\d\\d\\d\\d?/,\n // 999 - 9999\n match5to6 = /\\d\\d\\d\\d\\d\\d?/,\n // 99999 - 999999\n match1to3 = /\\d{1,3}/,\n // 0 - 999\n match1to4 = /\\d{1,4}/,\n // 0 - 9999\n match1to6 = /[+-]?\\d{1,6}/,\n // -999999 - 999999\n matchUnsigned = /\\d+/,\n // 0 - inf\n matchSigned = /[+-]?\\d+/,\n // -inf - inf\n matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi,\n // +00:00 -00:00 +0000 -0000 or Z\n matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi,\n // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/,\n // 123456789 123456789.123\n // any word (or two) characters or numbers including two/three word month in arabic.\n // includes scottish gaelic two word and hyphenated months\n matchWord = /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\n regexes;\n regexes = {};\n\n function addRegexToken(token, regex, strictRegex) {\n regexes[token] = isFunction(regex) ? regex : function (isStrict, localeData) {\n return isStrict && strictRegex ? strictRegex : regex;\n };\n }\n\n function getParseRegexForToken(token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n } // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n\n\n function unescapeFormat(s) {\n return regexEscape(s.replace('\\\\', '').replace(/\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g, function (matched, p1, p2, p3, p4) {\n return p1 || p2 || p3 || p4;\n }));\n }\n\n function regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n\n var tokens = {};\n\n function addParseToken(token, callback) {\n var i,\n func = callback,\n tokenLen;\n\n if (typeof token === 'string') {\n token = [token];\n }\n\n if (isNumber(callback)) {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n\n tokenLen = token.length;\n\n for (i = 0; i < tokenLen; i++) {\n tokens[token[i]] = func;\n }\n }\n\n function addWeekParseToken(token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n }\n\n function addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n }\n\n var YEAR = 0,\n MONTH = 1,\n DATE = 2,\n HOUR = 3,\n MINUTE = 4,\n SECOND = 5,\n MILLISECOND = 6,\n WEEK = 7,\n WEEKDAY = 8;\n\n function mod(n, x) {\n return (n % x + x) % x;\n }\n\n var indexOf;\n\n if (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n } else {\n indexOf = function (o) {\n // I know\n var i;\n\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n\n return -1;\n };\n }\n\n function daysInMonth(year, month) {\n if (isNaN(year) || isNaN(month)) {\n return NaN;\n }\n\n var modMonth = mod(month, 12);\n year += (month - modMonth) / 12;\n return modMonth === 1 ? isLeapYear(year) ? 29 : 28 : 31 - modMonth % 7 % 2;\n } // FORMATTING\n\n\n addFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n });\n addFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n });\n addFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n }); // ALIASES\n\n addUnitAlias('month', 'M'); // PRIORITY\n\n addUnitPriority('month', 8); // PARSING\n\n addRegexToken('M', match1to2);\n addRegexToken('MM', match1to2, match2);\n addRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n });\n addRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n });\n addParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n });\n addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict); // if we didn't find a month name, mark the date as invalid.\n\n\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n }); // LOCALES\n\n var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n defaultMonthsShortRegex = matchWord,\n defaultMonthsRegex = matchWord;\n\n function localeMonths(m, format) {\n if (!m) {\n return isArray(this._months) ? this._months : this._months['standalone'];\n }\n\n return isArray(this._months) ? this._months[m.month()] : this._months[(this._months.isFormat || MONTHS_IN_FORMAT).test(format) ? 'format' : 'standalone'][m.month()];\n }\n\n function localeMonthsShort(m, format) {\n if (!m) {\n return isArray(this._monthsShort) ? this._monthsShort : this._monthsShort['standalone'];\n }\n\n return isArray(this._monthsShort) ? this._monthsShort[m.month()] : this._monthsShort[MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'][m.month()];\n }\n\n function handleStrictParse(monthName, format, strict) {\n var i,\n ii,\n mom,\n llc = monthName.toLocaleLowerCase();\n\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(mom, '').toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n\n if (ii !== -1) {\n return ii;\n }\n\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n\n if (ii !== -1) {\n return ii;\n }\n\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeMonthsParse(monthName, format, strict) {\n var i, mom, regex;\n\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n } // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n\n\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i');\n this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i');\n }\n\n if (!strict && !this._monthsParse[i]) {\n regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n } // test the regex\n\n\n if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) {\n return i;\n } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n } // MOMENTS\n\n\n function setMonth(mom, value) {\n var dayOfMonth;\n\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value); // TODO: Another silent failure?\n\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n\n dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n\n return mom;\n }\n\n function getSetMonth(value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n }\n\n function getDaysInMonth() {\n return daysInMonth(this.year(), this.month());\n }\n\n function monthsShortRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n\n return this._monthsShortStrictRegex && isStrict ? this._monthsShortStrictRegex : this._monthsShortRegex;\n }\n }\n\n function monthsRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n\n return this._monthsStrictRegex && isStrict ? this._monthsStrictRegex : this._monthsRegex;\n }\n }\n\n function computeMonthsParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom;\n\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortPieces.push(this.monthsShort(mom, ''));\n longPieces.push(this.months(mom, ''));\n mixedPieces.push(this.months(mom, ''));\n mixedPieces.push(this.monthsShort(mom, ''));\n } // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n\n\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n\n for (i = 0; i < 12; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n }\n\n for (i = 0; i < 24; i++) {\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');\n this._monthsShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');\n } // FORMATTING\n\n\n addFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n });\n addFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n });\n addFormatToken(0, ['YYYY', 4], 0, 'year');\n addFormatToken(0, ['YYYYY', 5], 0, 'year');\n addFormatToken(0, ['YYYYYY', 6, true], 0, 'year'); // ALIASES\n\n addUnitAlias('year', 'y'); // PRIORITIES\n\n addUnitPriority('year', 1); // PARSING\n\n addRegexToken('Y', matchSigned);\n addRegexToken('YY', match1to2, match2);\n addRegexToken('YYYY', match1to4, match4);\n addRegexToken('YYYYY', match1to6, match6);\n addRegexToken('YYYYYY', match1to6, match6);\n addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YYYY', function (input, array) {\n array[YEAR] = input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n });\n addParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n });\n addParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n }); // HELPERS\n\n function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n } // HOOKS\n\n\n hooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n }; // MOMENTS\n\n\n var getSetYear = makeGetSet('FullYear', true);\n\n function getIsLeapYear() {\n return isLeapYear(this.year());\n }\n\n function createDate(y, m, d, h, M, s, ms) {\n // can't just apply() to create a date:\n // https://stackoverflow.com/q/181348\n var date; // the date constructor remaps years 0-99 to 1900-1999\n\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n date = new Date(y + 400, m, d, h, M, s, ms);\n\n if (isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n } else {\n date = new Date(y, m, d, h, M, s, ms);\n }\n\n return date;\n }\n\n function createUTCDate(y) {\n var date, args; // the Date.UTC function remaps years 0-99 to 1900-1999\n\n if (y < 100 && y >= 0) {\n args = Array.prototype.slice.call(arguments); // preserve leap years using a full 400 year cycle, then reset\n\n args[0] = y + 400;\n date = new Date(Date.UTC.apply(null, args));\n\n if (isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n } else {\n date = new Date(Date.UTC.apply(null, arguments));\n }\n\n return date;\n } // start-of-first-week - start-of-year\n\n\n function firstWeekOffset(year, dow, doy) {\n var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n return -fwdlw + fwd - 1;\n } // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n\n\n function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear,\n resDayOfYear;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear\n };\n }\n\n function weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek,\n resYear;\n\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear\n };\n }\n\n function weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n } // FORMATTING\n\n\n addFormatToken('w', ['ww', 2], 'wo', 'week');\n addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek'); // ALIASES\n\n addUnitAlias('week', 'w');\n addUnitAlias('isoWeek', 'W'); // PRIORITIES\n\n addUnitPriority('week', 5);\n addUnitPriority('isoWeek', 5); // PARSING\n\n addRegexToken('w', match1to2);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2);\n addRegexToken('WW', match1to2, match2);\n addWeekParseToken(['w', 'ww', 'W', 'WW'], function (input, week, config, token) {\n week[token.substr(0, 1)] = toInt(input);\n }); // HELPERS\n // LOCALES\n\n function localeWeek(mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n }\n\n var defaultLocaleWeek = {\n dow: 0,\n // Sunday is the first day of the week.\n doy: 6 // The week that contains Jan 6th is the first week of the year.\n\n };\n\n function localeFirstDayOfWeek() {\n return this._week.dow;\n }\n\n function localeFirstDayOfYear() {\n return this._week.doy;\n } // MOMENTS\n\n\n function getSetWeek(input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n function getSetISOWeek(input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n } // FORMATTING\n\n\n addFormatToken('d', 0, 'do', 'day');\n addFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n });\n addFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n });\n addFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n });\n addFormatToken('e', 0, 0, 'weekday');\n addFormatToken('E', 0, 0, 'isoWeekday'); // ALIASES\n\n addUnitAlias('day', 'd');\n addUnitAlias('weekday', 'e');\n addUnitAlias('isoWeekday', 'E'); // PRIORITY\n\n addUnitPriority('day', 11);\n addUnitPriority('weekday', 11);\n addUnitPriority('isoWeekday', 11); // PARSING\n\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n addRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n });\n addRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n });\n addRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n });\n addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict); // if we didn't get a weekday name, mark the date as invalid\n\n\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n });\n addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n }); // HELPERS\n\n function parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n\n input = locale.weekdaysParse(input);\n\n if (typeof input === 'number') {\n return input;\n }\n\n return null;\n }\n\n function parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n\n return isNaN(input) ? null : input;\n } // LOCALES\n\n\n function shiftWeekdays(ws, n) {\n return ws.slice(n, 7).concat(ws.slice(0, n));\n }\n\n var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n defaultWeekdaysRegex = matchWord,\n defaultWeekdaysShortRegex = matchWord,\n defaultWeekdaysMinRegex = matchWord;\n\n function localeWeekdays(m, format) {\n var weekdays = isArray(this._weekdays) ? this._weekdays : this._weekdays[m && m !== true && this._weekdays.isFormat.test(format) ? 'format' : 'standalone'];\n return m === true ? shiftWeekdays(weekdays, this._week.dow) : m ? weekdays[m.day()] : weekdays;\n }\n\n function localeWeekdaysShort(m) {\n return m === true ? shiftWeekdays(this._weekdaysShort, this._week.dow) : m ? this._weekdaysShort[m.day()] : this._weekdaysShort;\n }\n\n function localeWeekdaysMin(m) {\n return m === true ? shiftWeekdays(this._weekdaysMin, this._week.dow) : m ? this._weekdaysMin[m.day()] : this._weekdaysMin;\n }\n\n function handleStrictParse$1(weekdayName, format, strict) {\n var i,\n ii,\n mom,\n llc = weekdayName.toLocaleLowerCase();\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(mom, '').toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(mom, '').toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n\n if (ii !== -1) {\n return ii;\n }\n\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n\n if (ii !== -1) {\n return ii;\n }\n\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n\n if (ii !== -1) {\n return ii;\n }\n\n ii = indexOf.call(this._weekdaysParse, llc);\n\n if (ii !== -1) {\n return ii;\n }\n\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n\n if (ii !== -1) {\n return ii;\n }\n\n ii = indexOf.call(this._weekdaysParse, llc);\n\n if (ii !== -1) {\n return ii;\n }\n\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeWeekdaysParse(weekdayName, format, strict) {\n var i, mom, regex;\n\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp('^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$', 'i');\n this._shortWeekdaysParse[i] = new RegExp('^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$', 'i');\n this._minWeekdaysParse[i] = new RegExp('^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$', 'i');\n }\n\n if (!this._weekdaysParse[i]) {\n regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n } // test the regex\n\n\n if (strict && format === 'dddd' && this._fullWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (strict && format === 'ddd' && this._shortWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (strict && format === 'dd' && this._minWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n } // MOMENTS\n\n\n function getSetDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n }\n\n function getSetLocaleDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n }\n\n function getSetISODayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n } // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n }\n\n function weekdaysRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n\n return this._weekdaysStrictRegex && isStrict ? this._weekdaysStrictRegex : this._weekdaysRegex;\n }\n }\n\n function weekdaysShortRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n\n return this._weekdaysShortStrictRegex && isStrict ? this._weekdaysShortStrictRegex : this._weekdaysShortRegex;\n }\n }\n\n function weekdaysMinRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n\n return this._weekdaysMinStrictRegex && isStrict ? this._weekdaysMinStrictRegex : this._weekdaysMinRegex;\n }\n }\n\n function computeWeekdaysParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var minPieces = [],\n shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n minp,\n shortp,\n longp;\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = regexEscape(this.weekdaysMin(mom, ''));\n shortp = regexEscape(this.weekdaysShort(mom, ''));\n longp = regexEscape(this.weekdays(mom, ''));\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n } // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n\n\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n this._weekdaysStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');\n this._weekdaysShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');\n this._weekdaysMinStrictRegex = new RegExp('^(' + minPieces.join('|') + ')', 'i');\n } // FORMATTING\n\n\n function hFormat() {\n return this.hours() % 12 || 12;\n }\n\n function kFormat() {\n return this.hours() || 24;\n }\n\n addFormatToken('H', ['HH', 2], 0, 'hour');\n addFormatToken('h', ['hh', 2], 0, hFormat);\n addFormatToken('k', ['kk', 2], 0, kFormat);\n addFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n });\n addFormatToken('hmmss', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2) + zeroFill(this.seconds(), 2);\n });\n addFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n });\n addFormatToken('Hmmss', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2) + zeroFill(this.seconds(), 2);\n });\n\n function meridiem(token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(this.hours(), this.minutes(), lowercase);\n });\n }\n\n meridiem('a', true);\n meridiem('A', false); // ALIASES\n\n addUnitAlias('hour', 'h'); // PRIORITY\n\n addUnitPriority('hour', 13); // PARSING\n\n function matchMeridiem(isStrict, locale) {\n return locale._meridiemParse;\n }\n\n addRegexToken('a', matchMeridiem);\n addRegexToken('A', matchMeridiem);\n addRegexToken('H', match1to2);\n addRegexToken('h', match1to2);\n addRegexToken('k', match1to2);\n addRegexToken('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n addRegexToken('kk', match1to2, match2);\n addRegexToken('hmm', match3to4);\n addRegexToken('hmmss', match5to6);\n addRegexToken('Hmm', match3to4);\n addRegexToken('Hmmss', match5to6);\n addParseToken(['H', 'HH'], HOUR);\n addParseToken(['k', 'kk'], function (input, array, config) {\n var kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n });\n addParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n });\n addParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n });\n addParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n }); // LOCALES\n\n function localeIsPM(input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return (input + '').toLowerCase().charAt(0) === 'p';\n }\n\n var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n // Setting the hour should keep the time, because the user explicitly\n // specified which hour they want. So trying to maintain the same hour (in\n // a new timezone) makes sense. Adding/subtracting hours does not follow\n // this rule.\n getSetHour = makeGetSet('Hours', true);\n\n function localeMeridiem(hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n }\n\n var baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n week: defaultLocaleWeek,\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n meridiemParse: defaultLocaleMeridiemParse\n }; // internal storage for locale config files\n\n var locales = {},\n localeFamilies = {},\n globalLocale;\n\n function commonPrefix(arr1, arr2) {\n var i,\n minl = Math.min(arr1.length, arr2.length);\n\n for (i = 0; i < minl; i += 1) {\n if (arr1[i] !== arr2[i]) {\n return i;\n }\n }\n\n return minl;\n }\n\n function normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n } // pick the locale from the array\n // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n\n\n function chooseLocale(names) {\n var i = 0,\n j,\n next,\n locale,\n split;\n\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n\n if (locale) {\n return locale;\n }\n\n if (next && next.length >= j && commonPrefix(split, next) >= j - 1) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n\n j--;\n }\n\n i++;\n }\n\n return globalLocale;\n }\n\n function isLocaleNameSane(name) {\n // Prevent names that look like filesystem paths, i.e contain '/' or '\\'\n return name.match('^[^/\\\\\\\\]*$') != null;\n }\n\n function loadLocale(name) {\n var oldLocale = null,\n aliasedRequire; // TODO: Find a better way to register and load all the locales in Node\n\n if (locales[name] === undefined && typeof module !== 'undefined' && module && module.exports && isLocaleNameSane(name)) {\n try {\n oldLocale = globalLocale._abbr;\n aliasedRequire = require;\n aliasedRequire('./locale/' + name);\n getSetGlobalLocale(oldLocale);\n } catch (e) {\n // mark as not found to avoid repeating expensive file require call causing high CPU\n // when trying to find en-US, en_US, en-us for every format call\n locales[name] = null; // null means not found\n }\n }\n\n return locales[name];\n } // This function will load locale and then set the global locale. If\n // no arguments are passed in, it will simply return the current global\n // locale key.\n\n\n function getSetGlobalLocale(key, values) {\n var data;\n\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n } else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n } else {\n if (typeof console !== 'undefined' && console.warn) {\n //warn user if arguments are passed but the locale could not be set\n console.warn('Locale ' + key + ' not found. Did you forget to load it?');\n }\n }\n }\n\n return globalLocale._abbr;\n }\n\n function defineLocale(name, config) {\n if (config !== null) {\n var locale,\n parentConfig = baseConfig;\n config.abbr = name;\n\n if (locales[name] != null) {\n deprecateSimple('defineLocaleOverride', 'use moment.updateLocale(localeName, config) to change ' + 'an existing locale. moment.defineLocale(localeName, ' + 'config) should only be used for creating a new locale ' + 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.');\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n locale = loadLocale(config.parentLocale);\n\n if (locale != null) {\n parentConfig = locale._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config\n });\n return null;\n }\n }\n }\n\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n } // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n\n\n getSetGlobalLocale(name);\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n }\n\n function updateLocale(name, config) {\n if (config != null) {\n var locale,\n tmpLocale,\n parentConfig = baseConfig;\n\n if (locales[name] != null && locales[name].parentLocale != null) {\n // Update existing child locale in-place to avoid memory-leaks\n locales[name].set(mergeConfigs(locales[name]._config, config));\n } else {\n // MERGE\n tmpLocale = loadLocale(name);\n\n if (tmpLocale != null) {\n parentConfig = tmpLocale._config;\n }\n\n config = mergeConfigs(parentConfig, config);\n\n if (tmpLocale == null) {\n // updateLocale is called for creating a new locale\n // Set abbr so it will have a name (getters return\n // undefined otherwise).\n config.abbr = name;\n }\n\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n } // backwards compat for now: also set the locale\n\n\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n\n if (name === getSetGlobalLocale()) {\n getSetGlobalLocale(name);\n }\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n\n return locales[name];\n } // returns locale data\n\n\n function getLocale(key) {\n var locale;\n\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n\n if (!key) {\n return globalLocale;\n }\n\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n\n if (locale) {\n return locale;\n }\n\n key = [key];\n }\n\n return chooseLocale(key);\n }\n\n function listLocales() {\n return keys(locales);\n }\n\n function checkOverflow(m) {\n var overflow,\n a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow = a[MONTH] < 0 || a[MONTH] > 11 ? MONTH : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) ? DATE : a[HOUR] < 0 || a[HOUR] > 24 || a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0) ? HOUR : a[MINUTE] < 0 || a[MINUTE] > 59 ? MINUTE : a[SECOND] < 0 || a[SECOND] > 59 ? SECOND : a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND : -1;\n\n if (getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) {\n overflow = DATE;\n }\n\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n } // iso 8601 regex\n // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n\n\n var extendedIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n basicIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d|))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n isoDates = [['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/], ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/], ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/], ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false], ['YYYY-DDD', /\\d{4}-\\d{3}/], ['YYYY-MM', /\\d{4}-\\d\\d/, false], ['YYYYYYMMDD', /[+-]\\d{10}/], ['YYYYMMDD', /\\d{8}/], ['GGGG[W]WWE', /\\d{4}W\\d{3}/], ['GGGG[W]WW', /\\d{4}W\\d{2}/, false], ['YYYYDDD', /\\d{7}/], ['YYYYMM', /\\d{6}/, false], ['YYYY', /\\d{4}/, false]],\n // iso time formats and regexes\n isoTimes = [['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/], ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/], ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/], ['HH:mm', /\\d\\d:\\d\\d/], ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/], ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/], ['HHmmss', /\\d\\d\\d\\d\\d\\d/], ['HHmm', /\\d\\d\\d\\d/], ['HH', /\\d\\d/]],\n aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\n obsOffsets = {\n UT: 0,\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60\n }; // date from iso format\n\n function configFromISO(config) {\n var i,\n l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime,\n dateFormat,\n timeFormat,\n tzFormat,\n isoDatesLen = isoDates.length,\n isoTimesLen = isoTimes.length;\n\n if (match) {\n getParsingFlags(config).iso = true;\n\n for (i = 0, l = isoDatesLen; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n\n if (match[3]) {\n for (i = 0, l = isoTimesLen; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n }\n\n function extractFromRFC2822Strings(yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr) {\n var result = [untruncateYear(yearStr), defaultLocaleMonthsShort.indexOf(monthStr), parseInt(dayStr, 10), parseInt(hourStr, 10), parseInt(minuteStr, 10)];\n\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n\n return result;\n }\n\n function untruncateYear(yearStr) {\n var year = parseInt(yearStr, 10);\n\n if (year <= 49) {\n return 2000 + year;\n } else if (year <= 999) {\n return 1900 + year;\n }\n\n return year;\n }\n\n function preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s.replace(/\\([^()]*\\)|[\\n\\t]/g, ' ').replace(/(\\s\\s+)/g, ' ').replace(/^\\s\\s*/, '').replace(/\\s\\s*$/, '');\n }\n\n function checkWeekday(weekdayStr, parsedInput, config) {\n if (weekdayStr) {\n // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n weekdayActual = new Date(parsedInput[0], parsedInput[1], parsedInput[2]).getDay();\n\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return false;\n }\n }\n\n return true;\n }\n\n function calculateOffset(obsOffset, militaryOffset, numOffset) {\n if (obsOffset) {\n return obsOffsets[obsOffset];\n } else if (militaryOffset) {\n // the only allowed military tz is Z\n return 0;\n } else {\n var hm = parseInt(numOffset, 10),\n m = hm % 100,\n h = (hm - m) / 100;\n return h * 60 + m;\n }\n } // date and time from ref 2822 format\n\n\n function configFromRFC2822(config) {\n var match = rfc2822.exec(preprocessRFC2822(config._i)),\n parsedArray;\n\n if (match) {\n parsedArray = extractFromRFC2822Strings(match[4], match[3], match[2], match[5], match[6], match[7]);\n\n if (!checkWeekday(match[1], parsedArray, config)) {\n return;\n }\n\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n config._d = createUTCDate.apply(null, config._a);\n\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n getParsingFlags(config).rfc2822 = true;\n } else {\n config._isValid = false;\n }\n } // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\n\n\n function configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n configFromRFC2822(config);\n\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n if (config._strict) {\n config._isValid = false;\n } else {\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n }\n }\n\n hooks.createFromInputFallback = deprecate('value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' + 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' + 'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.', function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }); // Pick the first defined of two or three arguments.\n\n function defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n\n if (b != null) {\n return b;\n }\n\n return c;\n }\n\n function currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n\n if (config._useUTC) {\n return [nowValue.getUTCFullYear(), nowValue.getUTCMonth(), nowValue.getUTCDate()];\n }\n\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n } // convert an array to a date.\n // the array should mirror the parameters below\n // note: all values past the year are optional and will default to the lowest possible value.\n // [year, month, day , hour, minute, second, millisecond]\n\n\n function configFromArray(config) {\n var i,\n date,\n input = [],\n currentDate,\n expectedWeekday,\n yearToUse;\n\n if (config._d) {\n return;\n }\n\n currentDate = currentDateArray(config); //compute day of the year from weeks and weekdays\n\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n } //if the day of the year is set, figure out what it is\n\n\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (config._dayOfYear > daysInYear(yearToUse) || config._dayOfYear === 0) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n } // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n\n\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n } // Zero out whatever was not defaulted, including time\n\n\n for (; i < 7; i++) {\n config._a[i] = input[i] = config._a[i] == null ? i === 2 ? 1 : 0 : config._a[i];\n } // Check for 24:00:00.000\n\n\n if (config._a[HOUR] === 24 && config._a[MINUTE] === 0 && config._a[SECOND] === 0 && config._a[MILLISECOND] === 0) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(null, input);\n expectedWeekday = config._useUTC ? config._d.getUTCDay() : config._d.getDay(); // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n } // check for mismatching day of week\n\n\n if (config._w && typeof config._w.d !== 'undefined' && config._w.d !== expectedWeekday) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n }\n\n function dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n w = config._w;\n\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4; // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n\n weekYear = defaults(w.GG, config._a[YEAR], weekOfYear(createLocal(), 1, 4).year);\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n curWeek = weekOfYear(createLocal(), dow, doy);\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year); // Default to current week.\n\n week = defaults(w.w, curWeek.week);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from beginning of week\n weekday = w.e + dow;\n\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to beginning of week\n weekday = dow;\n }\n }\n\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n } // constant that refers to the ISO standard\n\n\n hooks.ISO_8601 = function () {}; // constant that refers to the RFC 2822 form\n\n\n hooks.RFC_2822 = function () {}; // date from string and format string\n\n\n function configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n\n if (config._f === hooks.RFC_2822) {\n configFromRFC2822(config);\n return;\n }\n\n config._a = [];\n getParsingFlags(config).empty = true; // This array is used to make a Date, either with `new Date` or `Date.UTC`\n\n var string = '' + config._i,\n i,\n parsedInput,\n tokens,\n token,\n skipped,\n stringLength = string.length,\n totalParsedInputLength = 0,\n era,\n tokenLen;\n tokens = expandFormat(config._f, config._locale).match(formattingTokens) || [];\n tokenLen = tokens.length;\n\n for (i = 0; i < tokenLen; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0];\n\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n\n string = string.slice(string.indexOf(parsedInput) + parsedInput.length);\n totalParsedInputLength += parsedInput.length;\n } // don't parse if it's not a known token\n\n\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n } else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n\n addTimeToArrayFromToken(token, parsedInput, config);\n } else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n } // add remaining unparsed input length to the string\n\n\n getParsingFlags(config).charsLeftOver = stringLength - totalParsedInputLength;\n\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n } // clear _12h flag if hour is <= 12\n\n\n if (config._a[HOUR] <= 12 && getParsingFlags(config).bigHour === true && config._a[HOUR] > 0) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem; // handle meridiem\n\n config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem); // handle era\n\n era = getParsingFlags(config).era;\n\n if (era !== null) {\n config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n }\n\n configFromArray(config);\n checkOverflow(config);\n }\n\n function meridiemFixWrap(locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n\n if (isPm && hour < 12) {\n hour += 12;\n }\n\n if (!isPm && hour === 12) {\n hour = 0;\n }\n\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n } // date from string and array of format strings\n\n\n function configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n scoreToBeat,\n i,\n currentScore,\n validFormatFound,\n bestFormatIsValid = false,\n configfLen = config._f.length;\n\n if (configfLen === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < configfLen; i++) {\n currentScore = 0;\n validFormatFound = false;\n tempConfig = copyConfig({}, config);\n\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (isValid(tempConfig)) {\n validFormatFound = true;\n } // if there is any input that was not parsed add a penalty for that format\n\n\n currentScore += getParsingFlags(tempConfig).charsLeftOver; //or tokens\n\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n getParsingFlags(tempConfig).score = currentScore;\n\n if (!bestFormatIsValid) {\n if (scoreToBeat == null || currentScore < scoreToBeat || validFormatFound) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n\n if (validFormatFound) {\n bestFormatIsValid = true;\n }\n }\n } else {\n if (currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n }\n\n extend(config, bestMoment || tempConfig);\n }\n\n function configFromObject(config) {\n if (config._d) {\n return;\n }\n\n var i = normalizeObjectUnits(config._i),\n dayOrDate = i.day === undefined ? i.date : i.day;\n config._a = map([i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond], function (obj) {\n return obj && parseInt(obj, 10);\n });\n configFromArray(config);\n }\n\n function createFromConfig(config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n\n return res;\n }\n\n function prepareConfig(config) {\n var input = config._i,\n format = config._f;\n config._locale = config._locale || getLocale(config._l);\n\n if (input === null || format === undefined && input === '') {\n return createInvalid({\n nullInput: true\n });\n }\n\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!isValid(config)) {\n config._d = null;\n }\n\n return config;\n }\n\n function configFromInput(config) {\n var input = config._i;\n\n if (isUndefined(input)) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (isObject(input)) {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n }\n\n function createLocalOrUTC(input, format, locale, strict, isUTC) {\n var c = {};\n\n if (format === true || format === false) {\n strict = format;\n format = undefined;\n }\n\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n\n if (isObject(input) && isObjectEmpty(input) || isArray(input) && input.length === 0) {\n input = undefined;\n } // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n\n\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n return createFromConfig(c);\n }\n\n function createLocal(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n }\n\n var prototypeMin = deprecate('moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/', function () {\n var other = createLocal.apply(null, arguments);\n\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n }),\n prototypeMax = deprecate('moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/', function () {\n var other = createLocal.apply(null, arguments);\n\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n }); // Pick a moment m from moments so that m[fn](other) is true for all\n // other. This relies on the function fn to be transitive.\n //\n // moments should either be an array of moment objects or an array, whose\n // first element is an array of moment objects.\n\n function pickBy(fn, moments) {\n var res, i;\n\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n\n if (!moments.length) {\n return createLocal();\n }\n\n res = moments[0];\n\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n\n return res;\n } // TODO: Use [].sort instead?\n\n\n function min() {\n var args = [].slice.call(arguments, 0);\n return pickBy('isBefore', args);\n }\n\n function max() {\n var args = [].slice.call(arguments, 0);\n return pickBy('isAfter', args);\n }\n\n var now = function () {\n return Date.now ? Date.now() : +new Date();\n };\n\n var ordering = ['year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', 'millisecond'];\n\n function isDurationValid(m) {\n var key,\n unitHasDecimal = false,\n i,\n orderLen = ordering.length;\n\n for (key in m) {\n if (hasOwnProp(m, key) && !(indexOf.call(ordering, key) !== -1 && (m[key] == null || !isNaN(m[key])))) {\n return false;\n }\n }\n\n for (i = 0; i < orderLen; ++i) {\n if (m[ordering[i]]) {\n if (unitHasDecimal) {\n return false; // only allow non-integers for smallest unit\n }\n\n if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n\n return true;\n }\n\n function isValid$1() {\n return this._isValid;\n }\n\n function createInvalid$1() {\n return createDuration(NaN);\n }\n\n function Duration(duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n this._isValid = isDurationValid(normalizedInput); // representation for dateAddRemove\n\n this._milliseconds = +milliseconds + seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n\n this._days = +days + weeks * 7; // It is impossible to translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n\n this._months = +months + quarters * 3 + years * 12;\n this._data = {};\n this._locale = getLocale();\n\n this._bubble();\n }\n\n function isDuration(obj) {\n return obj instanceof Duration;\n }\n\n function absRound(number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n } // compare two arrays, return the number of differences\n\n\n function compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n\n for (i = 0; i < len; i++) {\n if (dontConvert && array1[i] !== array2[i] || !dontConvert && toInt(array1[i]) !== toInt(array2[i])) {\n diffs++;\n }\n }\n\n return diffs + lengthDiff;\n } // FORMATTING\n\n\n function offset(token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset(),\n sign = '+';\n\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n\n return sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~offset % 60, 2);\n });\n }\n\n offset('Z', ':');\n offset('ZZ', ''); // PARSING\n\n addRegexToken('Z', matchShortOffset);\n addRegexToken('ZZ', matchShortOffset);\n addParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n }); // HELPERS\n // timezone chunker\n // '+10:00' > ['10', '00']\n // '-1530' > ['-15', '30']\n\n var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n function offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher),\n chunk,\n parts,\n minutes;\n\n if (matches === null) {\n return null;\n }\n\n chunk = matches[matches.length - 1] || [];\n parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n minutes = +(parts[1] * 60) + toInt(parts[2]);\n return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n } // Return a moment from input, that is local/utc/zone equivalent to model.\n\n\n function cloneWithOffset(input, model) {\n var res, diff;\n\n if (model._isUTC) {\n res = model.clone();\n diff = (isMoment(input) || isDate(input) ? input.valueOf() : createLocal(input).valueOf()) - res.valueOf(); // Use low-level api, because this fn is low-level api.\n\n res._d.setTime(res._d.valueOf() + diff);\n\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n }\n\n function getDateOffset(m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset());\n } // HOOKS\n // This function will be called whenever a moment is mutated.\n // It is intended to keep the offset in sync with the timezone.\n\n\n hooks.updateOffset = function () {}; // MOMENTS\n // keepLocalTime = true means only change the timezone, without\n // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n // +0200, so we adjust the time as needed, to be valid.\n //\n // Keeping the time actually adds/subtracts (one hour)\n // from the actual represented time. That is why we call updateOffset\n // a second time. In case it wants us to change the offset again\n // _changeInProgress == true case, then we have to adjust, because\n // there is no such time in the given timezone.\n\n\n function getSetOffset(input, keepLocalTime, keepMinutes) {\n var offset = this._offset || 0,\n localAdjust;\n\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16 && !keepMinutes) {\n input = input * 60;\n }\n\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n\n this._offset = input;\n this._isUTC = true;\n\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(this, createDuration(input - offset, 'm'), 1, false);\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n }\n\n function getSetZone(input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n return this;\n } else {\n return -this.utcOffset();\n }\n }\n\n function setOffsetToUTC(keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n }\n\n function setOffsetToLocal(keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n\n return this;\n }\n\n function setOffsetToParsedOffset() {\n if (this._tzm != null) {\n this.utcOffset(this._tzm, false, true);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n\n if (tZone != null) {\n this.utcOffset(tZone);\n } else {\n this.utcOffset(0, true);\n }\n }\n\n return this;\n }\n\n function hasAlignedHourOffset(input) {\n if (!this.isValid()) {\n return false;\n }\n\n input = input ? createLocal(input).utcOffset() : 0;\n return (this.utcOffset() - input) % 60 === 0;\n }\n\n function isDaylightSavingTime() {\n return this.utcOffset() > this.clone().month(0).utcOffset() || this.utcOffset() > this.clone().month(5).utcOffset();\n }\n\n function isDaylightSavingTimeShifted() {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n var c = {},\n other;\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted = this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n }\n\n function isLocal() {\n return this.isValid() ? !this._isUTC : false;\n }\n\n function isUtcOffset() {\n return this.isValid() ? this._isUTC : false;\n }\n\n function isUtc() {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n } // ASP.NET json date format regex\n\n\n var aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n // and further modified to allow for strings containing both week and day\n isoRegex = /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n function createDuration(input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms: input._milliseconds,\n d: input._days,\n M: input._months\n };\n } else if (isNumber(input) || !isNaN(+input)) {\n duration = {};\n\n if (key) {\n duration[key] = +input;\n } else {\n duration.milliseconds = +input;\n }\n } else if (match = aspNetRegex.exec(input)) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: 0,\n d: toInt(match[DATE]) * sign,\n h: toInt(match[HOUR]) * sign,\n m: toInt(match[MINUTE]) * sign,\n s: toInt(match[SECOND]) * sign,\n ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign // the millisecond decimal point is included in the match\n\n };\n } else if (match = isoRegex.exec(input)) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: parseIso(match[2], sign),\n M: parseIso(match[3], sign),\n w: parseIso(match[4], sign),\n d: parseIso(match[5], sign),\n h: parseIso(match[6], sign),\n m: parseIso(match[7], sign),\n s: parseIso(match[8], sign)\n };\n } else if (duration == null) {\n // checks for null or undefined\n duration = {};\n } else if (typeof duration === 'object' && ('from' in duration || 'to' in duration)) {\n diffRes = momentsDifference(createLocal(duration.from), createLocal(duration.to));\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n ret._isValid = input._isValid;\n }\n\n return ret;\n }\n\n createDuration.fn = Duration.prototype;\n createDuration.invalid = createInvalid$1;\n\n function parseIso(inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.')); // apply sign while we're at it\n\n return (isNaN(res) ? 0 : res) * sign;\n }\n\n function positiveMomentsDifference(base, other) {\n var res = {};\n res.months = other.month() - base.month() + (other.year() - base.year()) * 12;\n\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +base.clone().add(res.months, 'M');\n return res;\n }\n\n function momentsDifference(base, other) {\n var res;\n\n if (!(base.isValid() && other.isValid())) {\n return {\n milliseconds: 0,\n months: 0\n };\n }\n\n other = cloneWithOffset(other, base);\n\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n } // TODO: remove 'name' arg after deprecation is removed\n\n\n function createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp; //invert the arguments, but complain about it\n\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period). ' + 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.');\n tmp = val;\n val = period;\n period = tmp;\n }\n\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n }\n\n function addSubtract(mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n\n if (!mom.isValid()) {\n // No op\n return;\n }\n\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n }\n\n var add = createAdder(1, 'add'),\n subtract = createAdder(-1, 'subtract');\n\n function isString(input) {\n return typeof input === 'string' || input instanceof String;\n } // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\n\n\n function isMomentInput(input) {\n return isMoment(input) || isDate(input) || isString(input) || isNumber(input) || isNumberOrStringArray(input) || isMomentInputObject(input) || input === null || input === undefined;\n }\n\n function isMomentInputObject(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = ['years', 'year', 'y', 'months', 'month', 'M', 'days', 'day', 'd', 'dates', 'date', 'D', 'hours', 'hour', 'h', 'minutes', 'minute', 'm', 'seconds', 'second', 's', 'milliseconds', 'millisecond', 'ms'],\n i,\n property,\n propertyLen = properties.length;\n\n for (i = 0; i < propertyLen; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function isNumberOrStringArray(input) {\n var arrayTest = isArray(input),\n dataTypeTest = false;\n\n if (arrayTest) {\n dataTypeTest = input.filter(function (item) {\n return !isNumber(item) && isString(input);\n }).length === 0;\n }\n\n return arrayTest && dataTypeTest;\n }\n\n function isCalendarSpec(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = ['sameDay', 'nextDay', 'lastDay', 'nextWeek', 'lastWeek', 'sameElse'],\n i,\n property;\n\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6 ? 'sameElse' : diff < -1 ? 'lastWeek' : diff < 0 ? 'lastDay' : diff < 1 ? 'sameDay' : diff < 2 ? 'nextDay' : diff < 7 ? 'nextWeek' : 'sameElse';\n }\n\n function calendar$1(time, formats) {\n // Support for single parameter, formats only overload to the calendar function\n if (arguments.length === 1) {\n if (!arguments[0]) {\n time = undefined;\n formats = undefined;\n } else if (isMomentInput(arguments[0])) {\n time = arguments[0];\n formats = undefined;\n } else if (isCalendarSpec(arguments[0])) {\n formats = arguments[0];\n time = undefined;\n }\n } // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n\n\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse',\n output = formats && (isFunction(formats[format]) ? formats[format].call(this, now) : formats[format]);\n return this.format(output || this.localeData().calendar(format, this, createLocal(now)));\n }\n\n function clone() {\n return new Moment(this);\n }\n\n function isAfter(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n\n units = normalizeUnits(units) || 'millisecond';\n\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n }\n\n function isBefore(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n\n units = normalizeUnits(units) || 'millisecond';\n\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n }\n\n function isBetween(from, to, units, inclusivity) {\n var localFrom = isMoment(from) ? from : createLocal(from),\n localTo = isMoment(to) ? to : createLocal(to);\n\n if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n return false;\n }\n\n inclusivity = inclusivity || '()';\n return (inclusivity[0] === '(' ? this.isAfter(localFrom, units) : !this.isBefore(localFrom, units)) && (inclusivity[1] === ')' ? this.isBefore(localTo, units) : !this.isAfter(localTo, units));\n }\n\n function isSame(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n\n units = normalizeUnits(units) || 'millisecond';\n\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return this.clone().startOf(units).valueOf() <= inputMs && inputMs <= this.clone().endOf(units).valueOf();\n }\n }\n\n function isSameOrAfter(input, units) {\n return this.isSame(input, units) || this.isAfter(input, units);\n }\n\n function isSameOrBefore(input, units) {\n return this.isSame(input, units) || this.isBefore(input, units);\n }\n\n function diff(input, units, asFloat) {\n var that, zoneDelta, output;\n\n if (!this.isValid()) {\n return NaN;\n }\n\n that = cloneWithOffset(input, this);\n\n if (!that.isValid()) {\n return NaN;\n }\n\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n units = normalizeUnits(units);\n\n switch (units) {\n case 'year':\n output = monthDiff(this, that) / 12;\n break;\n\n case 'month':\n output = monthDiff(this, that);\n break;\n\n case 'quarter':\n output = monthDiff(this, that) / 3;\n break;\n\n case 'second':\n output = (this - that) / 1e3;\n break;\n // 1000\n\n case 'minute':\n output = (this - that) / 6e4;\n break;\n // 1000 * 60\n\n case 'hour':\n output = (this - that) / 36e5;\n break;\n // 1000 * 60 * 60\n\n case 'day':\n output = (this - that - zoneDelta) / 864e5;\n break;\n // 1000 * 60 * 60 * 24, negate dst\n\n case 'week':\n output = (this - that - zoneDelta) / 6048e5;\n break;\n // 1000 * 60 * 60 * 24 * 7, negate dst\n\n default:\n output = this - that;\n }\n\n return asFloat ? output : absFloor(output);\n }\n\n function monthDiff(a, b) {\n if (a.date() < b.date()) {\n // end-of-month calculations work correct when the start month has more\n // days than the end month.\n return -monthDiff(b, a);\n } // difference in months\n\n\n var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2,\n adjust;\n\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months'); // linear across the month\n\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months'); // linear across the month\n\n adjust = (b - anchor) / (anchor2 - anchor);\n } //check for negative zero, return zero if negative zero\n\n\n return -(wholeMonthDiff + adjust) || 0;\n }\n\n hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n function toString() {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n }\n\n function toISOString(keepOffset) {\n if (!this.isValid()) {\n return null;\n }\n\n var utc = keepOffset !== true,\n m = utc ? this.clone().utc() : this;\n\n if (m.year() < 0 || m.year() > 9999) {\n return formatMoment(m, utc ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ');\n }\n\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n if (utc) {\n return this.toDate().toISOString();\n } else {\n return new Date(this.valueOf() + this.utcOffset() * 60 * 1000).toISOString().replace('Z', formatMoment(m, 'Z'));\n }\n }\n\n return formatMoment(m, utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ');\n }\n /**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\n\n\n function inspect() {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n\n var func = 'moment',\n zone = '',\n prefix,\n year,\n datetime,\n suffix;\n\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n\n prefix = '[' + func + '(\"]';\n year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n datetime = '-MM-DD[T]HH:mm:ss.SSS';\n suffix = zone + '[\")]';\n return this.format(prefix + year + datetime + suffix);\n }\n\n function format(inputString) {\n if (!inputString) {\n inputString = this.isUtc() ? hooks.defaultFormatUtc : hooks.defaultFormat;\n }\n\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n }\n\n function from(time, withoutSuffix) {\n if (this.isValid() && (isMoment(time) && time.isValid() || createLocal(time).isValid())) {\n return createDuration({\n to: this,\n from: time\n }).locale(this.locale()).humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function fromNow(withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n }\n\n function to(time, withoutSuffix) {\n if (this.isValid() && (isMoment(time) && time.isValid() || createLocal(time).isValid())) {\n return createDuration({\n from: this,\n to: time\n }).locale(this.locale()).humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function toNow(withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n } // If passed a locale key, it will set the locale for this\n // instance. Otherwise, it will return the locale configuration\n // variables for this instance.\n\n\n function locale(key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n\n return this;\n }\n }\n\n var lang = deprecate('moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.', function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n });\n\n function localeData() {\n return this._locale;\n }\n\n var MS_PER_SECOND = 1000,\n MS_PER_MINUTE = 60 * MS_PER_SECOND,\n MS_PER_HOUR = 60 * MS_PER_MINUTE,\n MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR; // actual modulo - handles negative numbers (for dates before 1970):\n\n function mod$1(dividend, divisor) {\n return (dividend % divisor + divisor) % divisor;\n }\n\n function localStartOfDate(y, m, d) {\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return new Date(y, m, d).valueOf();\n }\n }\n\n function utcStartOfDate(y, m, d) {\n // Date.UTC remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return Date.UTC(y, m, d);\n }\n }\n\n function startOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year(), 0, 1);\n break;\n\n case 'quarter':\n time = startOfDate(this.year(), this.month() - this.month() % 3, 1);\n break;\n\n case 'month':\n time = startOfDate(this.year(), this.month(), 1);\n break;\n\n case 'week':\n time = startOfDate(this.year(), this.month(), this.date() - this.weekday());\n break;\n\n case 'isoWeek':\n time = startOfDate(this.year(), this.month(), this.date() - (this.isoWeekday() - 1));\n break;\n\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date());\n break;\n\n case 'hour':\n time = this._d.valueOf();\n time -= mod$1(time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE), MS_PER_HOUR);\n break;\n\n case 'minute':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_MINUTE);\n break;\n\n case 'second':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_SECOND);\n break;\n }\n\n this._d.setTime(time);\n\n hooks.updateOffset(this, true);\n return this;\n }\n\n function endOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year() + 1, 0, 1) - 1;\n break;\n\n case 'quarter':\n time = startOfDate(this.year(), this.month() - this.month() % 3 + 3, 1) - 1;\n break;\n\n case 'month':\n time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n break;\n\n case 'week':\n time = startOfDate(this.year(), this.month(), this.date() - this.weekday() + 7) - 1;\n break;\n\n case 'isoWeek':\n time = startOfDate(this.year(), this.month(), this.date() - (this.isoWeekday() - 1) + 7) - 1;\n break;\n\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n break;\n\n case 'hour':\n time = this._d.valueOf();\n time += MS_PER_HOUR - mod$1(time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE), MS_PER_HOUR) - 1;\n break;\n\n case 'minute':\n time = this._d.valueOf();\n time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n break;\n\n case 'second':\n time = this._d.valueOf();\n time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n break;\n }\n\n this._d.setTime(time);\n\n hooks.updateOffset(this, true);\n return this;\n }\n\n function valueOf() {\n return this._d.valueOf() - (this._offset || 0) * 60000;\n }\n\n function unix() {\n return Math.floor(this.valueOf() / 1000);\n }\n\n function toDate() {\n return new Date(this.valueOf());\n }\n\n function toArray() {\n var m = this;\n return [m.year(), m.month(), m.date(), m.hour(), m.minute(), m.second(), m.millisecond()];\n }\n\n function toObject() {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds()\n };\n }\n\n function toJSON() {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n }\n\n function isValid$2() {\n return isValid(this);\n }\n\n function parsingFlags() {\n return extend({}, getParsingFlags(this));\n }\n\n function invalidAt() {\n return getParsingFlags(this).overflow;\n }\n\n function creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict\n };\n }\n\n addFormatToken('N', 0, 0, 'eraAbbr');\n addFormatToken('NN', 0, 0, 'eraAbbr');\n addFormatToken('NNN', 0, 0, 'eraAbbr');\n addFormatToken('NNNN', 0, 0, 'eraName');\n addFormatToken('NNNNN', 0, 0, 'eraNarrow');\n addFormatToken('y', ['y', 1], 'yo', 'eraYear');\n addFormatToken('y', ['yy', 2], 0, 'eraYear');\n addFormatToken('y', ['yyy', 3], 0, 'eraYear');\n addFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n addRegexToken('N', matchEraAbbr);\n addRegexToken('NN', matchEraAbbr);\n addRegexToken('NNN', matchEraAbbr);\n addRegexToken('NNNN', matchEraName);\n addRegexToken('NNNNN', matchEraNarrow);\n addParseToken(['N', 'NN', 'NNN', 'NNNN', 'NNNNN'], function (input, array, config, token) {\n var era = config._locale.erasParse(input, token, config._strict);\n\n if (era) {\n getParsingFlags(config).era = era;\n } else {\n getParsingFlags(config).invalidEra = input;\n }\n });\n addRegexToken('y', matchUnsigned);\n addRegexToken('yy', matchUnsigned);\n addRegexToken('yyy', matchUnsigned);\n addRegexToken('yyyy', matchUnsigned);\n addRegexToken('yo', matchEraYearOrdinal);\n addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\n addParseToken(['yo'], function (input, array, config, token) {\n var match;\n\n if (config._locale._eraYearOrdinalRegex) {\n match = input.match(config._locale._eraYearOrdinalRegex);\n }\n\n if (config._locale.eraYearOrdinalParse) {\n array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n } else {\n array[YEAR] = parseInt(input, 10);\n }\n });\n\n function localeEras(m, format) {\n var i,\n l,\n date,\n eras = this._eras || getLocale('en')._eras;\n\n for (i = 0, l = eras.length; i < l; ++i) {\n switch (typeof eras[i].since) {\n case 'string':\n // truncate time\n date = hooks(eras[i].since).startOf('day');\n eras[i].since = date.valueOf();\n break;\n }\n\n switch (typeof eras[i].until) {\n case 'undefined':\n eras[i].until = +Infinity;\n break;\n\n case 'string':\n // truncate time\n date = hooks(eras[i].until).startOf('day').valueOf();\n eras[i].until = date.valueOf();\n break;\n }\n }\n\n return eras;\n }\n\n function localeErasParse(eraName, format, strict) {\n var i,\n l,\n eras = this.eras(),\n name,\n abbr,\n narrow;\n eraName = eraName.toUpperCase();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n name = eras[i].name.toUpperCase();\n abbr = eras[i].abbr.toUpperCase();\n narrow = eras[i].narrow.toUpperCase();\n\n if (strict) {\n switch (format) {\n case 'N':\n case 'NN':\n case 'NNN':\n if (abbr === eraName) {\n return eras[i];\n }\n\n break;\n\n case 'NNNN':\n if (name === eraName) {\n return eras[i];\n }\n\n break;\n\n case 'NNNNN':\n if (narrow === eraName) {\n return eras[i];\n }\n\n break;\n }\n } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n return eras[i];\n }\n }\n }\n\n function localeErasConvertYear(era, year) {\n var dir = era.since <= era.until ? +1 : -1;\n\n if (year === undefined) {\n return hooks(era.since).year();\n } else {\n return hooks(era.since).year() + (year - era.offset) * dir;\n }\n }\n\n function getEraName() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].name;\n }\n\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].name;\n }\n }\n\n return '';\n }\n\n function getEraNarrow() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].narrow;\n }\n\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].narrow;\n }\n }\n\n return '';\n }\n\n function getEraAbbr() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].abbr;\n }\n\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].abbr;\n }\n }\n\n return '';\n }\n\n function getEraYear() {\n var i,\n l,\n dir,\n val,\n eras = this.localeData().eras();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n dir = eras[i].since <= eras[i].until ? +1 : -1; // truncate time\n\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until || eras[i].until <= val && val <= eras[i].since) {\n return (this.year() - hooks(eras[i].since).year()) * dir + eras[i].offset;\n }\n }\n\n return this.year();\n }\n\n function erasNameRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNameRegex')) {\n computeErasParse.call(this);\n }\n\n return isStrict ? this._erasNameRegex : this._erasRegex;\n }\n\n function erasAbbrRegex(isStrict) {\n if (!hasOwnProp(this, '_erasAbbrRegex')) {\n computeErasParse.call(this);\n }\n\n return isStrict ? this._erasAbbrRegex : this._erasRegex;\n }\n\n function erasNarrowRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNarrowRegex')) {\n computeErasParse.call(this);\n }\n\n return isStrict ? this._erasNarrowRegex : this._erasRegex;\n }\n\n function matchEraAbbr(isStrict, locale) {\n return locale.erasAbbrRegex(isStrict);\n }\n\n function matchEraName(isStrict, locale) {\n return locale.erasNameRegex(isStrict);\n }\n\n function matchEraNarrow(isStrict, locale) {\n return locale.erasNarrowRegex(isStrict);\n }\n\n function matchEraYearOrdinal(isStrict, locale) {\n return locale._eraYearOrdinalRegex || matchUnsigned;\n }\n\n function computeErasParse() {\n var abbrPieces = [],\n namePieces = [],\n narrowPieces = [],\n mixedPieces = [],\n i,\n l,\n eras = this.eras();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n namePieces.push(regexEscape(eras[i].name));\n abbrPieces.push(regexEscape(eras[i].abbr));\n narrowPieces.push(regexEscape(eras[i].narrow));\n mixedPieces.push(regexEscape(eras[i].name));\n mixedPieces.push(regexEscape(eras[i].abbr));\n mixedPieces.push(regexEscape(eras[i].narrow));\n }\n\n this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n this._erasNarrowRegex = new RegExp('^(' + narrowPieces.join('|') + ')', 'i');\n } // FORMATTING\n\n\n addFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n });\n addFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n });\n\n function addWeekYearFormatToken(token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n }\n\n addWeekYearFormatToken('gggg', 'weekYear');\n addWeekYearFormatToken('ggggg', 'weekYear');\n addWeekYearFormatToken('GGGG', 'isoWeekYear');\n addWeekYearFormatToken('GGGGG', 'isoWeekYear'); // ALIASES\n\n addUnitAlias('weekYear', 'gg');\n addUnitAlias('isoWeekYear', 'GG'); // PRIORITY\n\n addUnitPriority('weekYear', 1);\n addUnitPriority('isoWeekYear', 1); // PARSING\n\n addRegexToken('G', matchSigned);\n addRegexToken('g', matchSigned);\n addRegexToken('GG', match1to2, match2);\n addRegexToken('gg', match1to2, match2);\n addRegexToken('GGGG', match1to4, match4);\n addRegexToken('gggg', match1to4, match4);\n addRegexToken('GGGGG', match1to6, match6);\n addRegexToken('ggggg', match1to6, match6);\n addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (input, week, config, token) {\n week[token.substr(0, 2)] = toInt(input);\n });\n addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n }); // MOMENTS\n\n function getSetWeekYear(input) {\n return getSetWeekYearHelper.call(this, input, this.week(), this.weekday(), this.localeData()._week.dow, this.localeData()._week.doy);\n }\n\n function getSetISOWeekYear(input) {\n return getSetWeekYearHelper.call(this, input, this.isoWeek(), this.isoWeekday(), 1, 4);\n }\n\n function getISOWeeksInYear() {\n return weeksInYear(this.year(), 1, 4);\n }\n\n function getISOWeeksInISOWeekYear() {\n return weeksInYear(this.isoWeekYear(), 1, 4);\n }\n\n function getWeeksInYear() {\n var weekInfo = this.localeData()._week;\n\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n }\n\n function getWeeksInWeekYear() {\n var weekInfo = this.localeData()._week;\n\n return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n }\n\n function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n }\n\n function setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n } // FORMATTING\n\n\n addFormatToken('Q', 0, 'Qo', 'quarter'); // ALIASES\n\n addUnitAlias('quarter', 'Q'); // PRIORITY\n\n addUnitPriority('quarter', 7); // PARSING\n\n addRegexToken('Q', match1);\n addParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n }); // MOMENTS\n\n function getSetQuarter(input) {\n return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3);\n } // FORMATTING\n\n\n addFormatToken('D', ['DD', 2], 'Do', 'date'); // ALIASES\n\n addUnitAlias('date', 'D'); // PRIORITY\n\n addUnitPriority('date', 9); // PARSING\n\n addRegexToken('D', match1to2);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n return isStrict ? locale._dayOfMonthOrdinalParse || locale._ordinalParse : locale._dayOfMonthOrdinalParseLenient;\n });\n addParseToken(['D', 'DD'], DATE);\n addParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0]);\n }); // MOMENTS\n\n var getSetDayOfMonth = makeGetSet('Date', true); // FORMATTING\n\n addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear'); // ALIASES\n\n addUnitAlias('dayOfYear', 'DDD'); // PRIORITY\n\n addUnitPriority('dayOfYear', 4); // PARSING\n\n addRegexToken('DDD', match1to3);\n addRegexToken('DDDD', match3);\n addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n }); // HELPERS\n // MOMENTS\n\n function getSetDayOfYear(input) {\n var dayOfYear = Math.round((this.clone().startOf('day') - this.clone().startOf('year')) / 864e5) + 1;\n return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n } // FORMATTING\n\n\n addFormatToken('m', ['mm', 2], 0, 'minute'); // ALIASES\n\n addUnitAlias('minute', 'm'); // PRIORITY\n\n addUnitPriority('minute', 14); // PARSING\n\n addRegexToken('m', match1to2);\n addRegexToken('mm', match1to2, match2);\n addParseToken(['m', 'mm'], MINUTE); // MOMENTS\n\n var getSetMinute = makeGetSet('Minutes', false); // FORMATTING\n\n addFormatToken('s', ['ss', 2], 0, 'second'); // ALIASES\n\n addUnitAlias('second', 's'); // PRIORITY\n\n addUnitPriority('second', 15); // PARSING\n\n addRegexToken('s', match1to2);\n addRegexToken('ss', match1to2, match2);\n addParseToken(['s', 'ss'], SECOND); // MOMENTS\n\n var getSetSecond = makeGetSet('Seconds', false); // FORMATTING\n\n addFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n });\n addFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n });\n addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n addFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n });\n addFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n });\n addFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n });\n addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n });\n addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n });\n addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n }); // ALIASES\n\n addUnitAlias('millisecond', 'ms'); // PRIORITY\n\n addUnitPriority('millisecond', 16); // PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n var token, getSetMillisecond;\n\n for (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n }\n\n function parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n }\n\n for (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n }\n\n getSetMillisecond = makeGetSet('Milliseconds', false); // FORMATTING\n\n addFormatToken('z', 0, 0, 'zoneAbbr');\n addFormatToken('zz', 0, 0, 'zoneName'); // MOMENTS\n\n function getZoneAbbr() {\n return this._isUTC ? 'UTC' : '';\n }\n\n function getZoneName() {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n }\n\n var proto = Moment.prototype;\n proto.add = add;\n proto.calendar = calendar$1;\n proto.clone = clone;\n proto.diff = diff;\n proto.endOf = endOf;\n proto.format = format;\n proto.from = from;\n proto.fromNow = fromNow;\n proto.to = to;\n proto.toNow = toNow;\n proto.get = stringGet;\n proto.invalidAt = invalidAt;\n proto.isAfter = isAfter;\n proto.isBefore = isBefore;\n proto.isBetween = isBetween;\n proto.isSame = isSame;\n proto.isSameOrAfter = isSameOrAfter;\n proto.isSameOrBefore = isSameOrBefore;\n proto.isValid = isValid$2;\n proto.lang = lang;\n proto.locale = locale;\n proto.localeData = localeData;\n proto.max = prototypeMax;\n proto.min = prototypeMin;\n proto.parsingFlags = parsingFlags;\n proto.set = stringSet;\n proto.startOf = startOf;\n proto.subtract = subtract;\n proto.toArray = toArray;\n proto.toObject = toObject;\n proto.toDate = toDate;\n proto.toISOString = toISOString;\n proto.inspect = inspect;\n\n if (typeof Symbol !== 'undefined' && Symbol.for != null) {\n proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n return 'Moment<' + this.format() + '>';\n };\n }\n\n proto.toJSON = toJSON;\n proto.toString = toString;\n proto.unix = unix;\n proto.valueOf = valueOf;\n proto.creationData = creationData;\n proto.eraName = getEraName;\n proto.eraNarrow = getEraNarrow;\n proto.eraAbbr = getEraAbbr;\n proto.eraYear = getEraYear;\n proto.year = getSetYear;\n proto.isLeapYear = getIsLeapYear;\n proto.weekYear = getSetWeekYear;\n proto.isoWeekYear = getSetISOWeekYear;\n proto.quarter = proto.quarters = getSetQuarter;\n proto.month = getSetMonth;\n proto.daysInMonth = getDaysInMonth;\n proto.week = proto.weeks = getSetWeek;\n proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n proto.weeksInYear = getWeeksInYear;\n proto.weeksInWeekYear = getWeeksInWeekYear;\n proto.isoWeeksInYear = getISOWeeksInYear;\n proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\n proto.date = getSetDayOfMonth;\n proto.day = proto.days = getSetDayOfWeek;\n proto.weekday = getSetLocaleDayOfWeek;\n proto.isoWeekday = getSetISODayOfWeek;\n proto.dayOfYear = getSetDayOfYear;\n proto.hour = proto.hours = getSetHour;\n proto.minute = proto.minutes = getSetMinute;\n proto.second = proto.seconds = getSetSecond;\n proto.millisecond = proto.milliseconds = getSetMillisecond;\n proto.utcOffset = getSetOffset;\n proto.utc = setOffsetToUTC;\n proto.local = setOffsetToLocal;\n proto.parseZone = setOffsetToParsedOffset;\n proto.hasAlignedHourOffset = hasAlignedHourOffset;\n proto.isDST = isDaylightSavingTime;\n proto.isLocal = isLocal;\n proto.isUtcOffset = isUtcOffset;\n proto.isUtc = isUtc;\n proto.isUTC = isUtc;\n proto.zoneAbbr = getZoneAbbr;\n proto.zoneName = getZoneName;\n proto.dates = deprecate('dates accessor is deprecated. Use date instead.', getSetDayOfMonth);\n proto.months = deprecate('months accessor is deprecated. Use month instead', getSetMonth);\n proto.years = deprecate('years accessor is deprecated. Use year instead', getSetYear);\n proto.zone = deprecate('moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/', getSetZone);\n proto.isDSTShifted = deprecate('isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information', isDaylightSavingTimeShifted);\n\n function createUnix(input) {\n return createLocal(input * 1000);\n }\n\n function createInZone() {\n return createLocal.apply(null, arguments).parseZone();\n }\n\n function preParsePostFormat(string) {\n return string;\n }\n\n var proto$1 = Locale.prototype;\n proto$1.calendar = calendar;\n proto$1.longDateFormat = longDateFormat;\n proto$1.invalidDate = invalidDate;\n proto$1.ordinal = ordinal;\n proto$1.preparse = preParsePostFormat;\n proto$1.postformat = preParsePostFormat;\n proto$1.relativeTime = relativeTime;\n proto$1.pastFuture = pastFuture;\n proto$1.set = set;\n proto$1.eras = localeEras;\n proto$1.erasParse = localeErasParse;\n proto$1.erasConvertYear = localeErasConvertYear;\n proto$1.erasAbbrRegex = erasAbbrRegex;\n proto$1.erasNameRegex = erasNameRegex;\n proto$1.erasNarrowRegex = erasNarrowRegex;\n proto$1.months = localeMonths;\n proto$1.monthsShort = localeMonthsShort;\n proto$1.monthsParse = localeMonthsParse;\n proto$1.monthsRegex = monthsRegex;\n proto$1.monthsShortRegex = monthsShortRegex;\n proto$1.week = localeWeek;\n proto$1.firstDayOfYear = localeFirstDayOfYear;\n proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n proto$1.weekdays = localeWeekdays;\n proto$1.weekdaysMin = localeWeekdaysMin;\n proto$1.weekdaysShort = localeWeekdaysShort;\n proto$1.weekdaysParse = localeWeekdaysParse;\n proto$1.weekdaysRegex = weekdaysRegex;\n proto$1.weekdaysShortRegex = weekdaysShortRegex;\n proto$1.weekdaysMinRegex = weekdaysMinRegex;\n proto$1.isPM = localeIsPM;\n proto$1.meridiem = localeMeridiem;\n\n function get$1(format, index, field, setter) {\n var locale = getLocale(),\n utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n }\n\n function listMonthsImpl(format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n\n var i,\n out = [];\n\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n\n return out;\n } // ()\n // (5)\n // (fmt, 5)\n // (fmt)\n // (true)\n // (true, 5)\n // (true, fmt, 5)\n // (true, fmt)\n\n\n function listWeekdaysImpl(localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n }\n\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0,\n i,\n out = [];\n\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n\n return out;\n }\n\n function listMonths(format, index) {\n return listMonthsImpl(format, index, 'months');\n }\n\n function listMonthsShort(format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n }\n\n function listWeekdays(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n }\n\n function listWeekdaysShort(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n }\n\n function listWeekdaysMin(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n }\n\n getSetGlobalLocale('en', {\n eras: [{\n since: '0001-01-01',\n until: +Infinity,\n offset: 1,\n name: 'Anno Domini',\n narrow: 'AD',\n abbr: 'AD'\n }, {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: 'Before Christ',\n narrow: 'BC',\n abbr: 'BC'\n }],\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output = toInt(number % 100 / 10) === 1 ? 'th' : b === 1 ? 'st' : b === 2 ? 'nd' : b === 3 ? 'rd' : 'th';\n return number + output;\n }\n }); // Side effect imports\n\n hooks.lang = deprecate('moment.lang is deprecated. Use moment.locale instead.', getSetGlobalLocale);\n hooks.langData = deprecate('moment.langData is deprecated. Use moment.localeData instead.', getLocale);\n var mathAbs = Math.abs;\n\n function abs() {\n var data = this._data;\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n return this;\n }\n\n function addSubtract$1(duration, input, value, direction) {\n var other = createDuration(input, value);\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n return duration._bubble();\n } // supports only 2.0-style add(1, 's') or add(duration)\n\n\n function add$1(input, value) {\n return addSubtract$1(this, input, value, 1);\n } // supports only 2.0-style subtract(1, 's') or subtract(duration)\n\n\n function subtract$1(input, value) {\n return addSubtract$1(this, input, value, -1);\n }\n\n function absCeil(number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n }\n\n function bubble() {\n var milliseconds = this._milliseconds,\n days = this._days,\n months = this._months,\n data = this._data,\n seconds,\n minutes,\n hours,\n years,\n monthsFromDays; // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n\n if (!(milliseconds >= 0 && days >= 0 && months >= 0 || milliseconds <= 0 && days <= 0 && months <= 0)) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n } // The following code bubbles up values, see the tests for\n // examples of what that means.\n\n\n data.milliseconds = milliseconds % 1000;\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n days += absFloor(hours / 24); // convert days to months\n\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays)); // 12 months -> 1 year\n\n years = absFloor(months / 12);\n months %= 12;\n data.days = days;\n data.months = months;\n data.years = years;\n return this;\n }\n\n function daysToMonths(days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return days * 4800 / 146097;\n }\n\n function monthsToDays(months) {\n // the reverse of daysToMonths\n return months * 146097 / 4800;\n }\n\n function as(units) {\n if (!this.isValid()) {\n return NaN;\n }\n\n var days,\n months,\n milliseconds = this._milliseconds;\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'quarter' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n\n switch (units) {\n case 'month':\n return months;\n\n case 'quarter':\n return months / 3;\n\n case 'year':\n return months / 12;\n }\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n\n switch (units) {\n case 'week':\n return days / 7 + milliseconds / 6048e5;\n\n case 'day':\n return days + milliseconds / 864e5;\n\n case 'hour':\n return days * 24 + milliseconds / 36e5;\n\n case 'minute':\n return days * 1440 + milliseconds / 6e4;\n\n case 'second':\n return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n\n case 'millisecond':\n return Math.floor(days * 864e5) + milliseconds;\n\n default:\n throw new Error('Unknown unit ' + units);\n }\n }\n } // TODO: Use this.as('ms')?\n\n\n function valueOf$1() {\n if (!this.isValid()) {\n return NaN;\n }\n\n return this._milliseconds + this._days * 864e5 + this._months % 12 * 2592e6 + toInt(this._months / 12) * 31536e6;\n }\n\n function makeAs(alias) {\n return function () {\n return this.as(alias);\n };\n }\n\n var asMilliseconds = makeAs('ms'),\n asSeconds = makeAs('s'),\n asMinutes = makeAs('m'),\n asHours = makeAs('h'),\n asDays = makeAs('d'),\n asWeeks = makeAs('w'),\n asMonths = makeAs('M'),\n asQuarters = makeAs('Q'),\n asYears = makeAs('y');\n\n function clone$1() {\n return createDuration(this);\n }\n\n function get$2(units) {\n units = normalizeUnits(units);\n return this.isValid() ? this[units + 's']() : NaN;\n }\n\n function makeGetter(name) {\n return function () {\n return this.isValid() ? this._data[name] : NaN;\n };\n }\n\n var milliseconds = makeGetter('milliseconds'),\n seconds = makeGetter('seconds'),\n minutes = makeGetter('minutes'),\n hours = makeGetter('hours'),\n days = makeGetter('days'),\n months = makeGetter('months'),\n years = makeGetter('years');\n\n function weeks() {\n return absFloor(this.days() / 7);\n }\n\n var round = Math.round,\n thresholds = {\n ss: 44,\n // a few seconds to seconds\n s: 45,\n // seconds to minute\n m: 45,\n // minutes to hour\n h: 22,\n // hours to day\n d: 26,\n // days to month/week\n w: null,\n // weeks to month\n M: 11 // months to year\n\n }; // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n\n function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n }\n\n function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n var duration = createDuration(posNegDuration).abs(),\n seconds = round(duration.as('s')),\n minutes = round(duration.as('m')),\n hours = round(duration.as('h')),\n days = round(duration.as('d')),\n months = round(duration.as('M')),\n weeks = round(duration.as('w')),\n years = round(duration.as('y')),\n a = seconds <= thresholds.ss && ['s', seconds] || seconds < thresholds.s && ['ss', seconds] || minutes <= 1 && ['m'] || minutes < thresholds.m && ['mm', minutes] || hours <= 1 && ['h'] || hours < thresholds.h && ['hh', hours] || days <= 1 && ['d'] || days < thresholds.d && ['dd', days];\n\n if (thresholds.w != null) {\n a = a || weeks <= 1 && ['w'] || weeks < thresholds.w && ['ww', weeks];\n }\n\n a = a || months <= 1 && ['M'] || months < thresholds.M && ['MM', months] || years <= 1 && ['y'] || ['yy', years];\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n } // This function allows you to set the rounding function for relative time strings\n\n\n function getSetRelativeTimeRounding(roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n\n if (typeof roundingFunction === 'function') {\n round = roundingFunction;\n return true;\n }\n\n return false;\n } // This function allows you to set a threshold for relative time strings\n\n\n function getSetRelativeTimeThreshold(threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n\n if (limit === undefined) {\n return thresholds[threshold];\n }\n\n thresholds[threshold] = limit;\n\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n\n return true;\n }\n\n function humanize(argWithSuffix, argThresholds) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var withSuffix = false,\n th = thresholds,\n locale,\n output;\n\n if (typeof argWithSuffix === 'object') {\n argThresholds = argWithSuffix;\n argWithSuffix = false;\n }\n\n if (typeof argWithSuffix === 'boolean') {\n withSuffix = argWithSuffix;\n }\n\n if (typeof argThresholds === 'object') {\n th = Object.assign({}, thresholds, argThresholds);\n\n if (argThresholds.s != null && argThresholds.ss == null) {\n th.ss = argThresholds.s - 1;\n }\n }\n\n locale = this.localeData();\n output = relativeTime$1(this, !withSuffix, th, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n }\n\n var abs$1 = Math.abs;\n\n function sign(x) {\n return (x > 0) - (x < 0) || +x;\n }\n\n function toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var seconds = abs$1(this._milliseconds) / 1000,\n days = abs$1(this._days),\n months = abs$1(this._months),\n minutes,\n hours,\n years,\n s,\n total = this.asSeconds(),\n totalSign,\n ymSign,\n daysSign,\n hmsSign;\n\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n } // 3600 seconds -> 60 minutes -> 1 hour\n\n\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60; // 12 months -> 1 year\n\n years = absFloor(months / 12);\n months %= 12; // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n\n s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n totalSign = total < 0 ? '-' : '';\n ymSign = sign(this._months) !== sign(total) ? '-' : '';\n daysSign = sign(this._days) !== sign(total) ? '-' : '';\n hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n return totalSign + 'P' + (years ? ymSign + years + 'Y' : '') + (months ? ymSign + months + 'M' : '') + (days ? daysSign + days + 'D' : '') + (hours || minutes || seconds ? 'T' : '') + (hours ? hmsSign + hours + 'H' : '') + (minutes ? hmsSign + minutes + 'M' : '') + (seconds ? hmsSign + s + 'S' : '');\n }\n\n var proto$2 = Duration.prototype;\n proto$2.isValid = isValid$1;\n proto$2.abs = abs;\n proto$2.add = add$1;\n proto$2.subtract = subtract$1;\n proto$2.as = as;\n proto$2.asMilliseconds = asMilliseconds;\n proto$2.asSeconds = asSeconds;\n proto$2.asMinutes = asMinutes;\n proto$2.asHours = asHours;\n proto$2.asDays = asDays;\n proto$2.asWeeks = asWeeks;\n proto$2.asMonths = asMonths;\n proto$2.asQuarters = asQuarters;\n proto$2.asYears = asYears;\n proto$2.valueOf = valueOf$1;\n proto$2._bubble = bubble;\n proto$2.clone = clone$1;\n proto$2.get = get$2;\n proto$2.milliseconds = milliseconds;\n proto$2.seconds = seconds;\n proto$2.minutes = minutes;\n proto$2.hours = hours;\n proto$2.days = days;\n proto$2.weeks = weeks;\n proto$2.months = months;\n proto$2.years = years;\n proto$2.humanize = humanize;\n proto$2.toISOString = toISOString$1;\n proto$2.toString = toISOString$1;\n proto$2.toJSON = toISOString$1;\n proto$2.locale = locale;\n proto$2.localeData = localeData;\n proto$2.toIsoString = deprecate('toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', toISOString$1);\n proto$2.lang = lang; // FORMATTING\n\n addFormatToken('X', 0, 0, 'unix');\n addFormatToken('x', 0, 0, 'valueOf'); // PARSING\n\n addRegexToken('x', matchSigned);\n addRegexToken('X', matchTimestamp);\n addParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input) * 1000);\n });\n addParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n }); //! moment.js\n\n hooks.version = '2.29.4';\n setHookCallback(createLocal);\n hooks.fn = proto;\n hooks.min = min;\n hooks.max = max;\n hooks.now = now;\n hooks.utc = createUTC;\n hooks.unix = createUnix;\n hooks.months = listMonths;\n hooks.isDate = isDate;\n hooks.locale = getSetGlobalLocale;\n hooks.invalid = createInvalid;\n hooks.duration = createDuration;\n hooks.isMoment = isMoment;\n hooks.weekdays = listWeekdays;\n hooks.parseZone = createInZone;\n hooks.localeData = getLocale;\n hooks.isDuration = isDuration;\n hooks.monthsShort = listMonthsShort;\n hooks.weekdaysMin = listWeekdaysMin;\n hooks.defineLocale = defineLocale;\n hooks.updateLocale = updateLocale;\n hooks.locales = listLocales;\n hooks.weekdaysShort = listWeekdaysShort;\n hooks.normalizeUnits = normalizeUnits;\n hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n hooks.calendarFormat = getCalendarFormat;\n hooks.prototype = proto; // currently HTML5 input type only supports 24-hour formats\n\n hooks.HTML5_FMT = {\n DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm',\n // \n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss',\n // \n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS',\n // \n DATE: 'YYYY-MM-DD',\n // \n TIME: 'HH:mm',\n // \n TIME_SECONDS: 'HH:mm:ss',\n // \n TIME_MS: 'HH:mm:ss.SSS',\n // \n WEEK: 'GGGG-[W]WW',\n // \n MONTH: 'YYYY-MM' // \n\n };\n return hooks;\n});","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.AbstractParserWithWordBoundaryChecking = void 0;\n\nclass AbstractParserWithWordBoundaryChecking {\n constructor() {\n this.cachedInnerPattern = null;\n this.cachedPattern = null;\n }\n\n patternLeftBoundary() {\n return `(\\\\W|^)`;\n }\n\n pattern(context) {\n const innerPattern = this.innerPattern(context);\n\n if (innerPattern == this.cachedInnerPattern) {\n return this.cachedPattern;\n }\n\n this.cachedPattern = new RegExp(`${this.patternLeftBoundary()}${innerPattern.source}`, innerPattern.flags);\n this.cachedInnerPattern = innerPattern;\n return this.cachedPattern;\n }\n\n extract(context, match) {\n var _a;\n\n const header = (_a = match[1]) !== null && _a !== void 0 ? _a : \"\";\n match.index = match.index + header.length;\n match[0] = match[0].substring(header.length);\n\n for (let i = 2; i < match.length; i++) {\n match[i - 1] = match[i];\n }\n\n return this.innerExtract(context, match);\n }\n\n}\n\nexports.AbstractParserWithWordBoundaryChecking = AbstractParserWithWordBoundaryChecking;","var g; // This works in non-strict mode\n\ng = function () {\n return this;\n}();\n\ntry {\n // This works if eval is allowed (see CSP)\n g = g || new Function(\"return this\")();\n} catch (e) {\n // This works if the window reference is available\n if (typeof window === \"object\") g = window;\n} // g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\n\nmodule.exports = g;","!function (t, e) {\n \"object\" == typeof exports && \"undefined\" != typeof module ? module.exports = e() : \"function\" == typeof define && define.amd ? define(e) : (t = \"undefined\" != typeof globalThis ? globalThis : t || self).dayjs = e();\n}(this, function () {\n \"use strict\";\n\n var t = 1e3,\n e = 6e4,\n n = 36e5,\n r = \"millisecond\",\n i = \"second\",\n s = \"minute\",\n u = \"hour\",\n a = \"day\",\n o = \"week\",\n f = \"month\",\n h = \"quarter\",\n c = \"year\",\n d = \"date\",\n l = \"Invalid Date\",\n $ = /^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/,\n y = /\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,\n M = {\n name: \"en\",\n weekdays: \"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),\n months: \"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),\n ordinal: function (t) {\n var e = [\"th\", \"st\", \"nd\", \"rd\"],\n n = t % 100;\n return \"[\" + t + (e[(n - 20) % 10] || e[n] || e[0]) + \"]\";\n }\n },\n m = function (t, e, n) {\n var r = String(t);\n return !r || r.length >= e ? t : \"\" + Array(e + 1 - r.length).join(n) + t;\n },\n v = {\n s: m,\n z: function (t) {\n var e = -t.utcOffset(),\n n = Math.abs(e),\n r = Math.floor(n / 60),\n i = n % 60;\n return (e <= 0 ? \"+\" : \"-\") + m(r, 2, \"0\") + \":\" + m(i, 2, \"0\");\n },\n m: function t(e, n) {\n if (e.date() < n.date()) return -t(n, e);\n var r = 12 * (n.year() - e.year()) + (n.month() - e.month()),\n i = e.clone().add(r, f),\n s = n - i < 0,\n u = e.clone().add(r + (s ? -1 : 1), f);\n return +(-(r + (n - i) / (s ? i - u : u - i)) || 0);\n },\n a: function (t) {\n return t < 0 ? Math.ceil(t) || 0 : Math.floor(t);\n },\n p: function (t) {\n return {\n M: f,\n y: c,\n w: o,\n d: a,\n D: d,\n h: u,\n m: s,\n s: i,\n ms: r,\n Q: h\n }[t] || String(t || \"\").toLowerCase().replace(/s$/, \"\");\n },\n u: function (t) {\n return void 0 === t;\n }\n },\n g = \"en\",\n D = {};\n\n D[g] = M;\n\n var p = function (t) {\n return t instanceof _;\n },\n S = function t(e, n, r) {\n var i;\n if (!e) return g;\n\n if (\"string\" == typeof e) {\n var s = e.toLowerCase();\n D[s] && (i = s), n && (D[s] = n, i = s);\n var u = e.split(\"-\");\n if (!i && u.length > 1) return t(u[0]);\n } else {\n var a = e.name;\n D[a] = e, i = a;\n }\n\n return !r && i && (g = i), i || !r && g;\n },\n w = function (t, e) {\n if (p(t)) return t.clone();\n var n = \"object\" == typeof e ? e : {};\n return n.date = t, n.args = arguments, new _(n);\n },\n O = v;\n\n O.l = S, O.i = p, O.w = function (t, e) {\n return w(t, {\n locale: e.$L,\n utc: e.$u,\n x: e.$x,\n $offset: e.$offset\n });\n };\n\n var _ = function () {\n function M(t) {\n this.$L = S(t.locale, null, !0), this.parse(t);\n }\n\n var m = M.prototype;\n return m.parse = function (t) {\n this.$d = function (t) {\n var e = t.date,\n n = t.utc;\n if (null === e) return new Date(NaN);\n if (O.u(e)) return new Date();\n if (e instanceof Date) return new Date(e);\n\n if (\"string\" == typeof e && !/Z$/i.test(e)) {\n var r = e.match($);\n\n if (r) {\n var i = r[2] - 1 || 0,\n s = (r[7] || \"0\").substring(0, 3);\n return n ? new Date(Date.UTC(r[1], i, r[3] || 1, r[4] || 0, r[5] || 0, r[6] || 0, s)) : new Date(r[1], i, r[3] || 1, r[4] || 0, r[5] || 0, r[6] || 0, s);\n }\n }\n\n return new Date(e);\n }(t), this.$x = t.x || {}, this.init();\n }, m.init = function () {\n var t = this.$d;\n this.$y = t.getFullYear(), this.$M = t.getMonth(), this.$D = t.getDate(), this.$W = t.getDay(), this.$H = t.getHours(), this.$m = t.getMinutes(), this.$s = t.getSeconds(), this.$ms = t.getMilliseconds();\n }, m.$utils = function () {\n return O;\n }, m.isValid = function () {\n return !(this.$d.toString() === l);\n }, m.isSame = function (t, e) {\n var n = w(t);\n return this.startOf(e) <= n && n <= this.endOf(e);\n }, m.isAfter = function (t, e) {\n return w(t) < this.startOf(e);\n }, m.isBefore = function (t, e) {\n return this.endOf(e) < w(t);\n }, m.$g = function (t, e, n) {\n return O.u(t) ? this[e] : this.set(n, t);\n }, m.unix = function () {\n return Math.floor(this.valueOf() / 1e3);\n }, m.valueOf = function () {\n return this.$d.getTime();\n }, m.startOf = function (t, e) {\n var n = this,\n r = !!O.u(e) || e,\n h = O.p(t),\n l = function (t, e) {\n var i = O.w(n.$u ? Date.UTC(n.$y, e, t) : new Date(n.$y, e, t), n);\n return r ? i : i.endOf(a);\n },\n $ = function (t, e) {\n return O.w(n.toDate()[t].apply(n.toDate(\"s\"), (r ? [0, 0, 0, 0] : [23, 59, 59, 999]).slice(e)), n);\n },\n y = this.$W,\n M = this.$M,\n m = this.$D,\n v = \"set\" + (this.$u ? \"UTC\" : \"\");\n\n switch (h) {\n case c:\n return r ? l(1, 0) : l(31, 11);\n\n case f:\n return r ? l(1, M) : l(0, M + 1);\n\n case o:\n var g = this.$locale().weekStart || 0,\n D = (y < g ? y + 7 : y) - g;\n return l(r ? m - D : m + (6 - D), M);\n\n case a:\n case d:\n return $(v + \"Hours\", 0);\n\n case u:\n return $(v + \"Minutes\", 1);\n\n case s:\n return $(v + \"Seconds\", 2);\n\n case i:\n return $(v + \"Milliseconds\", 3);\n\n default:\n return this.clone();\n }\n }, m.endOf = function (t) {\n return this.startOf(t, !1);\n }, m.$set = function (t, e) {\n var n,\n o = O.p(t),\n h = \"set\" + (this.$u ? \"UTC\" : \"\"),\n l = (n = {}, n[a] = h + \"Date\", n[d] = h + \"Date\", n[f] = h + \"Month\", n[c] = h + \"FullYear\", n[u] = h + \"Hours\", n[s] = h + \"Minutes\", n[i] = h + \"Seconds\", n[r] = h + \"Milliseconds\", n)[o],\n $ = o === a ? this.$D + (e - this.$W) : e;\n\n if (o === f || o === c) {\n var y = this.clone().set(d, 1);\n y.$d[l]($), y.init(), this.$d = y.set(d, Math.min(this.$D, y.daysInMonth())).$d;\n } else l && this.$d[l]($);\n\n return this.init(), this;\n }, m.set = function (t, e) {\n return this.clone().$set(t, e);\n }, m.get = function (t) {\n return this[O.p(t)]();\n }, m.add = function (r, h) {\n var d,\n l = this;\n r = Number(r);\n\n var $ = O.p(h),\n y = function (t) {\n var e = w(l);\n return O.w(e.date(e.date() + Math.round(t * r)), l);\n };\n\n if ($ === f) return this.set(f, this.$M + r);\n if ($ === c) return this.set(c, this.$y + r);\n if ($ === a) return y(1);\n if ($ === o) return y(7);\n var M = (d = {}, d[s] = e, d[u] = n, d[i] = t, d)[$] || 1,\n m = this.$d.getTime() + r * M;\n return O.w(m, this);\n }, m.subtract = function (t, e) {\n return this.add(-1 * t, e);\n }, m.format = function (t) {\n var e = this,\n n = this.$locale();\n if (!this.isValid()) return n.invalidDate || l;\n\n var r = t || \"YYYY-MM-DDTHH:mm:ssZ\",\n i = O.z(this),\n s = this.$H,\n u = this.$m,\n a = this.$M,\n o = n.weekdays,\n f = n.months,\n h = function (t, n, i, s) {\n return t && (t[n] || t(e, r)) || i[n].slice(0, s);\n },\n c = function (t) {\n return O.s(s % 12 || 12, t, \"0\");\n },\n d = n.meridiem || function (t, e, n) {\n var r = t < 12 ? \"AM\" : \"PM\";\n return n ? r.toLowerCase() : r;\n },\n $ = {\n YY: String(this.$y).slice(-2),\n YYYY: this.$y,\n M: a + 1,\n MM: O.s(a + 1, 2, \"0\"),\n MMM: h(n.monthsShort, a, f, 3),\n MMMM: h(f, a),\n D: this.$D,\n DD: O.s(this.$D, 2, \"0\"),\n d: String(this.$W),\n dd: h(n.weekdaysMin, this.$W, o, 2),\n ddd: h(n.weekdaysShort, this.$W, o, 3),\n dddd: o[this.$W],\n H: String(s),\n HH: O.s(s, 2, \"0\"),\n h: c(1),\n hh: c(2),\n a: d(s, u, !0),\n A: d(s, u, !1),\n m: String(u),\n mm: O.s(u, 2, \"0\"),\n s: String(this.$s),\n ss: O.s(this.$s, 2, \"0\"),\n SSS: O.s(this.$ms, 3, \"0\"),\n Z: i\n };\n\n return r.replace(y, function (t, e) {\n return e || $[t] || i.replace(\":\", \"\");\n });\n }, m.utcOffset = function () {\n return 15 * -Math.round(this.$d.getTimezoneOffset() / 15);\n }, m.diff = function (r, d, l) {\n var $,\n y = O.p(d),\n M = w(r),\n m = (M.utcOffset() - this.utcOffset()) * e,\n v = this - M,\n g = O.m(this, M);\n return g = ($ = {}, $[c] = g / 12, $[f] = g, $[h] = g / 3, $[o] = (v - m) / 6048e5, $[a] = (v - m) / 864e5, $[u] = v / n, $[s] = v / e, $[i] = v / t, $)[y] || v, l ? g : O.a(g);\n }, m.daysInMonth = function () {\n return this.endOf(f).$D;\n }, m.$locale = function () {\n return D[this.$L];\n }, m.locale = function (t, e) {\n if (!t) return this.$L;\n var n = this.clone(),\n r = S(t, e, !0);\n return r && (n.$L = r), n;\n }, m.clone = function () {\n return O.w(this.$d, this);\n }, m.toDate = function () {\n return new Date(this.valueOf());\n }, m.toJSON = function () {\n return this.isValid() ? this.toISOString() : null;\n }, m.toISOString = function () {\n return this.$d.toISOString();\n }, m.toString = function () {\n return this.$d.toUTCString();\n }, M;\n }(),\n T = _.prototype;\n\n return w.prototype = T, [[\"$ms\", r], [\"$s\", i], [\"$m\", s], [\"$H\", u], [\"$W\", a], [\"$M\", f], [\"$y\", c], [\"$D\", d]].forEach(function (t) {\n T[t[1]] = function (e) {\n return this.$g(e, t[0], t[1]);\n };\n }), w.extend = function (t, e) {\n return t.$i || (t(e, _, w), t.$i = !0), w;\n }, w.locale = S, w.isDayjs = p, w.unix = function (t) {\n return w(1e3 * t);\n }, w.en = D[g], w.Ls = D, w.p = {}, w;\n});","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.matchAnyPattern = exports.extractTerms = exports.repeatedTimeunitPattern = void 0;\n\nfunction repeatedTimeunitPattern(prefix, singleTimeunitPattern) {\n const singleTimeunitPatternNoCapture = singleTimeunitPattern.replace(/\\((?!\\?)/g, \"(?:\");\n return `${prefix}${singleTimeunitPatternNoCapture}\\\\s{0,5}(?:,?\\\\s{0,5}${singleTimeunitPatternNoCapture}){0,10}`;\n}\n\nexports.repeatedTimeunitPattern = repeatedTimeunitPattern;\n\nfunction extractTerms(dictionary) {\n let keys;\n\n if (dictionary instanceof Array) {\n keys = [...dictionary];\n } else if (dictionary instanceof Map) {\n keys = Array.from(dictionary.keys());\n } else {\n keys = Object.keys(dictionary);\n }\n\n return keys;\n}\n\nexports.extractTerms = extractTerms;\n\nfunction matchAnyPattern(dictionary) {\n const joinedTerms = extractTerms(dictionary).sort((a, b) => b.length - a.length).join(\"|\").replace(/\\./g, \"\\\\.\");\n return `(?:${joinedTerms})`;\n}\n\nexports.matchAnyPattern = matchAnyPattern;","\"use strict\";\n\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ParsingResult = exports.ParsingComponents = exports.ReferenceWithTimezone = void 0;\n\nconst quarterOfYear_1 = __importDefault(require(\"dayjs/plugin/quarterOfYear\"));\n\nconst dayjs_1 = __importDefault(require(\"dayjs\"));\n\nconst dayjs_2 = require(\"./utils/dayjs\");\n\nconst timezone_1 = require(\"./timezone\");\n\ndayjs_1.default.extend(quarterOfYear_1.default);\n\nclass ReferenceWithTimezone {\n constructor(input) {\n var _a;\n\n input = input !== null && input !== void 0 ? input : new Date();\n\n if (input instanceof Date) {\n this.instant = input;\n } else {\n this.instant = (_a = input.instant) !== null && _a !== void 0 ? _a : new Date();\n this.timezoneOffset = timezone_1.toTimezoneOffset(input.timezone);\n }\n }\n\n getDateWithAdjustedTimezone() {\n return new Date(this.instant.getTime() + this.getSystemTimezoneAdjustmentMinute(this.instant) * 60000);\n }\n\n getSystemTimezoneAdjustmentMinute(date, overrideTimezoneOffset) {\n var _a;\n\n if (!date || date.getTime() < 0) {\n date = new Date();\n }\n\n const currentTimezoneOffset = -date.getTimezoneOffset();\n const targetTimezoneOffset = (_a = overrideTimezoneOffset !== null && overrideTimezoneOffset !== void 0 ? overrideTimezoneOffset : this.timezoneOffset) !== null && _a !== void 0 ? _a : currentTimezoneOffset;\n return currentTimezoneOffset - targetTimezoneOffset;\n }\n\n}\n\nexports.ReferenceWithTimezone = ReferenceWithTimezone;\n\nclass ParsingComponents {\n constructor(reference, knownComponents) {\n this.reference = reference;\n this.knownValues = {};\n this.impliedValues = {};\n\n if (knownComponents) {\n for (const key in knownComponents) {\n this.knownValues[key] = knownComponents[key];\n }\n }\n\n const refDayJs = dayjs_1.default(reference.instant);\n this.imply(\"day\", refDayJs.date());\n this.imply(\"month\", refDayJs.month() + 1);\n this.imply(\"year\", refDayJs.year());\n this.imply(\"hour\", 12);\n this.imply(\"minute\", 0);\n this.imply(\"second\", 0);\n this.imply(\"millisecond\", 0);\n }\n\n get(component) {\n if (component in this.knownValues) {\n return this.knownValues[component];\n }\n\n if (component in this.impliedValues) {\n return this.impliedValues[component];\n }\n\n return null;\n }\n\n isCertain(component) {\n return component in this.knownValues;\n }\n\n getCertainComponents() {\n return Object.keys(this.knownValues);\n }\n\n imply(component, value) {\n if (component in this.knownValues) {\n return this;\n }\n\n this.impliedValues[component] = value;\n return this;\n }\n\n assign(component, value) {\n this.knownValues[component] = value;\n delete this.impliedValues[component];\n return this;\n }\n\n delete(component) {\n delete this.knownValues[component];\n delete this.impliedValues[component];\n }\n\n clone() {\n const component = new ParsingComponents(this.reference);\n component.knownValues = {};\n component.impliedValues = {};\n\n for (const key in this.knownValues) {\n component.knownValues[key] = this.knownValues[key];\n }\n\n for (const key in this.impliedValues) {\n component.impliedValues[key] = this.impliedValues[key];\n }\n\n return component;\n }\n\n isOnlyDate() {\n return !this.isCertain(\"hour\") && !this.isCertain(\"minute\") && !this.isCertain(\"second\");\n }\n\n isOnlyTime() {\n return !this.isCertain(\"weekday\") && !this.isCertain(\"day\") && !this.isCertain(\"month\");\n }\n\n isOnlyWeekdayComponent() {\n return this.isCertain(\"weekday\") && !this.isCertain(\"day\") && !this.isCertain(\"month\");\n }\n\n isOnlyDayMonthComponent() {\n return this.isCertain(\"day\") && this.isCertain(\"month\") && !this.isCertain(\"year\");\n }\n\n isValidDate() {\n const date = this.dateWithoutTimezoneAdjustment();\n if (date.getFullYear() !== this.get(\"year\")) return false;\n if (date.getMonth() !== this.get(\"month\") - 1) return false;\n if (date.getDate() !== this.get(\"day\")) return false;\n if (this.get(\"hour\") != null && date.getHours() != this.get(\"hour\")) return false;\n if (this.get(\"minute\") != null && date.getMinutes() != this.get(\"minute\")) return false;\n return true;\n }\n\n toString() {\n return `[ParsingComponents {knownValues: ${JSON.stringify(this.knownValues)}, impliedValues: ${JSON.stringify(this.impliedValues)}}, reference: ${JSON.stringify(this.reference)}]`;\n }\n\n dayjs() {\n return dayjs_1.default(this.date());\n }\n\n date() {\n const date = this.dateWithoutTimezoneAdjustment();\n const timezoneAdjustment = this.reference.getSystemTimezoneAdjustmentMinute(date, this.get(\"timezoneOffset\"));\n return new Date(date.getTime() + timezoneAdjustment * 60000);\n }\n\n dateWithoutTimezoneAdjustment() {\n const date = new Date(this.get(\"year\"), this.get(\"month\") - 1, this.get(\"day\"), this.get(\"hour\"), this.get(\"minute\"), this.get(\"second\"), this.get(\"millisecond\"));\n date.setFullYear(this.get(\"year\"));\n return date;\n }\n\n static createRelativeFromReference(reference, fragments) {\n let date = dayjs_1.default(reference.instant);\n\n for (const key in fragments) {\n date = date.add(fragments[key], key);\n }\n\n const components = new ParsingComponents(reference);\n\n if (fragments[\"hour\"] || fragments[\"minute\"] || fragments[\"second\"]) {\n dayjs_2.assignSimilarTime(components, date);\n dayjs_2.assignSimilarDate(components, date);\n\n if (reference.timezoneOffset !== null) {\n components.assign(\"timezoneOffset\", -reference.instant.getTimezoneOffset());\n }\n } else {\n dayjs_2.implySimilarTime(components, date);\n\n if (reference.timezoneOffset !== null) {\n components.imply(\"timezoneOffset\", -reference.instant.getTimezoneOffset());\n }\n\n if (fragments[\"d\"]) {\n components.assign(\"day\", date.date());\n components.assign(\"month\", date.month() + 1);\n components.assign(\"year\", date.year());\n } else {\n if (fragments[\"week\"]) {\n components.imply(\"weekday\", date.day());\n }\n\n components.imply(\"day\", date.date());\n\n if (fragments[\"month\"]) {\n components.assign(\"month\", date.month() + 1);\n components.assign(\"year\", date.year());\n } else {\n components.imply(\"month\", date.month() + 1);\n\n if (fragments[\"year\"]) {\n components.assign(\"year\", date.year());\n } else {\n components.imply(\"year\", date.year());\n }\n }\n }\n }\n\n return components;\n }\n\n}\n\nexports.ParsingComponents = ParsingComponents;\n\nclass ParsingResult {\n constructor(reference, index, text, start, end) {\n this.reference = reference;\n this.refDate = reference.instant;\n this.index = index;\n this.text = text;\n this.start = start || new ParsingComponents(reference);\n this.end = end;\n }\n\n clone() {\n const result = new ParsingResult(this.reference, this.index, this.text);\n result.start = this.start ? this.start.clone() : null;\n result.end = this.end ? this.end.clone() : null;\n return result;\n }\n\n date() {\n return this.start.date();\n }\n\n toString() {\n return `[ParsingResult {index: ${this.index}, text: '${this.text}', ...}]`;\n }\n\n}\n\nexports.ParsingResult = ParsingResult;","\"use strict\";\n\nvar __createBinding = this && this.__createBinding || (Object.create ? function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, {\n enumerable: true,\n get: function () {\n return m[k];\n }\n });\n} : function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nvar __setModuleDefault = this && this.__setModuleDefault || (Object.create ? function (o, v) {\n Object.defineProperty(o, \"default\", {\n enumerable: true,\n value: v\n });\n} : function (o, v) {\n o[\"default\"] = v;\n});\n\nvar __importStar = this && this.__importStar || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n\n __setModuleDefault(result, mod);\n\n return result;\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.parseDate = exports.parse = exports.casual = exports.strict = exports.ru = exports.zh = exports.nl = exports.pt = exports.ja = exports.fr = exports.de = exports.Weekday = exports.Meridiem = exports.Chrono = exports.en = void 0;\n\nconst en = __importStar(require(\"./locales/en\"));\n\nexports.en = en;\n\nconst chrono_1 = require(\"./chrono\");\n\nObject.defineProperty(exports, \"Chrono\", {\n enumerable: true,\n get: function () {\n return chrono_1.Chrono;\n }\n});\nvar Meridiem;\n\n(function (Meridiem) {\n Meridiem[Meridiem[\"AM\"] = 0] = \"AM\";\n Meridiem[Meridiem[\"PM\"] = 1] = \"PM\";\n})(Meridiem = exports.Meridiem || (exports.Meridiem = {}));\n\nvar Weekday;\n\n(function (Weekday) {\n Weekday[Weekday[\"SUNDAY\"] = 0] = \"SUNDAY\";\n Weekday[Weekday[\"MONDAY\"] = 1] = \"MONDAY\";\n Weekday[Weekday[\"TUESDAY\"] = 2] = \"TUESDAY\";\n Weekday[Weekday[\"WEDNESDAY\"] = 3] = \"WEDNESDAY\";\n Weekday[Weekday[\"THURSDAY\"] = 4] = \"THURSDAY\";\n Weekday[Weekday[\"FRIDAY\"] = 5] = \"FRIDAY\";\n Weekday[Weekday[\"SATURDAY\"] = 6] = \"SATURDAY\";\n})(Weekday = exports.Weekday || (exports.Weekday = {}));\n\nconst de = __importStar(require(\"./locales/de\"));\n\nexports.de = de;\n\nconst fr = __importStar(require(\"./locales/fr\"));\n\nexports.fr = fr;\n\nconst ja = __importStar(require(\"./locales/ja\"));\n\nexports.ja = ja;\n\nconst pt = __importStar(require(\"./locales/pt\"));\n\nexports.pt = pt;\n\nconst nl = __importStar(require(\"./locales/nl\"));\n\nexports.nl = nl;\n\nconst zh = __importStar(require(\"./locales/zh\"));\n\nexports.zh = zh;\n\nconst ru = __importStar(require(\"./locales/ru\"));\n\nexports.ru = ru;\nexports.strict = en.strict;\nexports.casual = en.casual;\n\nfunction parse(text, ref, option) {\n return exports.casual.parse(text, ref, option);\n}\n\nexports.parse = parse;\n\nfunction parseDate(text, ref, option) {\n return exports.casual.parseDate(text, ref, option);\n}\n\nexports.parseDate = parseDate;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.parseTimeUnits = exports.TIME_UNITS_PATTERN = exports.parseYear = exports.YEAR_PATTERN = exports.parseOrdinalNumberPattern = exports.ORDINAL_NUMBER_PATTERN = exports.parseNumberPattern = exports.NUMBER_PATTERN = exports.TIME_UNIT_DICTIONARY = exports.ORDINAL_WORD_DICTIONARY = exports.INTEGER_WORD_DICTIONARY = exports.MONTH_DICTIONARY = exports.FULL_MONTH_NAME_DICTIONARY = exports.WEEKDAY_DICTIONARY = void 0;\n\nconst pattern_1 = require(\"../../utils/pattern\");\n\nconst years_1 = require(\"../../calculation/years\");\n\nexports.WEEKDAY_DICTIONARY = {\n sunday: 0,\n sun: 0,\n \"sun.\": 0,\n monday: 1,\n mon: 1,\n \"mon.\": 1,\n tuesday: 2,\n tue: 2,\n \"tue.\": 2,\n wednesday: 3,\n wed: 3,\n \"wed.\": 3,\n thursday: 4,\n thurs: 4,\n \"thurs.\": 4,\n thur: 4,\n \"thur.\": 4,\n thu: 4,\n \"thu.\": 4,\n friday: 5,\n fri: 5,\n \"fri.\": 5,\n saturday: 6,\n sat: 6,\n \"sat.\": 6\n};\nexports.FULL_MONTH_NAME_DICTIONARY = {\n january: 1,\n february: 2,\n march: 3,\n april: 4,\n may: 5,\n june: 6,\n july: 7,\n august: 8,\n september: 9,\n october: 10,\n november: 11,\n december: 12\n};\nexports.MONTH_DICTIONARY = Object.assign(Object.assign({}, exports.FULL_MONTH_NAME_DICTIONARY), {\n jan: 1,\n \"jan.\": 1,\n feb: 2,\n \"feb.\": 2,\n mar: 3,\n \"mar.\": 3,\n apr: 4,\n \"apr.\": 4,\n jun: 6,\n \"jun.\": 6,\n jul: 7,\n \"jul.\": 7,\n aug: 8,\n \"aug.\": 8,\n sep: 9,\n \"sep.\": 9,\n sept: 9,\n \"sept.\": 9,\n oct: 10,\n \"oct.\": 10,\n nov: 11,\n \"nov.\": 11,\n dec: 12,\n \"dec.\": 12\n});\nexports.INTEGER_WORD_DICTIONARY = {\n one: 1,\n two: 2,\n three: 3,\n four: 4,\n five: 5,\n six: 6,\n seven: 7,\n eight: 8,\n nine: 9,\n ten: 10,\n eleven: 11,\n twelve: 12\n};\nexports.ORDINAL_WORD_DICTIONARY = {\n first: 1,\n second: 2,\n third: 3,\n fourth: 4,\n fifth: 5,\n sixth: 6,\n seventh: 7,\n eighth: 8,\n ninth: 9,\n tenth: 10,\n eleventh: 11,\n twelfth: 12,\n thirteenth: 13,\n fourteenth: 14,\n fifteenth: 15,\n sixteenth: 16,\n seventeenth: 17,\n eighteenth: 18,\n nineteenth: 19,\n twentieth: 20,\n \"twenty first\": 21,\n \"twenty-first\": 21,\n \"twenty second\": 22,\n \"twenty-second\": 22,\n \"twenty third\": 23,\n \"twenty-third\": 23,\n \"twenty fourth\": 24,\n \"twenty-fourth\": 24,\n \"twenty fifth\": 25,\n \"twenty-fifth\": 25,\n \"twenty sixth\": 26,\n \"twenty-sixth\": 26,\n \"twenty seventh\": 27,\n \"twenty-seventh\": 27,\n \"twenty eighth\": 28,\n \"twenty-eighth\": 28,\n \"twenty ninth\": 29,\n \"twenty-ninth\": 29,\n \"thirtieth\": 30,\n \"thirty first\": 31,\n \"thirty-first\": 31\n};\nexports.TIME_UNIT_DICTIONARY = {\n sec: \"second\",\n second: \"second\",\n seconds: \"second\",\n min: \"minute\",\n mins: \"minute\",\n minute: \"minute\",\n minutes: \"minute\",\n h: \"hour\",\n hr: \"hour\",\n hrs: \"hour\",\n hour: \"hour\",\n hours: \"hour\",\n day: \"d\",\n days: \"d\",\n week: \"week\",\n weeks: \"week\",\n month: \"month\",\n months: \"month\",\n qtr: \"quarter\",\n quarter: \"quarter\",\n quarters: \"quarter\",\n y: \"year\",\n yr: \"year\",\n year: \"year\",\n years: \"year\"\n};\nexports.NUMBER_PATTERN = `(?:${pattern_1.matchAnyPattern(exports.INTEGER_WORD_DICTIONARY)}|[0-9]+|[0-9]+\\\\.[0-9]+|half(?:\\\\s{0,2}an?)?|an?\\\\b(?:\\\\s{0,2}few)?|few|several|a?\\\\s{0,2}couple\\\\s{0,2}(?:of)?)`;\n\nfunction parseNumberPattern(match) {\n const num = match.toLowerCase();\n\n if (exports.INTEGER_WORD_DICTIONARY[num] !== undefined) {\n return exports.INTEGER_WORD_DICTIONARY[num];\n } else if (num === \"a\" || num === \"an\") {\n return 1;\n } else if (num.match(/few/)) {\n return 3;\n } else if (num.match(/half/)) {\n return 0.5;\n } else if (num.match(/couple/)) {\n return 2;\n } else if (num.match(/several/)) {\n return 7;\n }\n\n return parseFloat(num);\n}\n\nexports.parseNumberPattern = parseNumberPattern;\nexports.ORDINAL_NUMBER_PATTERN = `(?:${pattern_1.matchAnyPattern(exports.ORDINAL_WORD_DICTIONARY)}|[0-9]{1,2}(?:st|nd|rd|th)?)`;\n\nfunction parseOrdinalNumberPattern(match) {\n let num = match.toLowerCase();\n\n if (exports.ORDINAL_WORD_DICTIONARY[num] !== undefined) {\n return exports.ORDINAL_WORD_DICTIONARY[num];\n }\n\n num = num.replace(/(?:st|nd|rd|th)$/i, \"\");\n return parseInt(num);\n}\n\nexports.parseOrdinalNumberPattern = parseOrdinalNumberPattern;\nexports.YEAR_PATTERN = `(?:[1-9][0-9]{0,3}\\\\s{0,2}(?:BE|AD|BC|BCE|CE)|[1-2][0-9]{3}|[5-9][0-9])`;\n\nfunction parseYear(match) {\n if (/BE/i.test(match)) {\n match = match.replace(/BE/i, \"\");\n return parseInt(match) - 543;\n }\n\n if (/BCE?/i.test(match)) {\n match = match.replace(/BCE?/i, \"\");\n return -parseInt(match);\n }\n\n if (/(AD|CE)/i.test(match)) {\n match = match.replace(/(AD|CE)/i, \"\");\n return parseInt(match);\n }\n\n const rawYearNumber = parseInt(match);\n return years_1.findMostLikelyADYear(rawYearNumber);\n}\n\nexports.parseYear = parseYear;\nconst SINGLE_TIME_UNIT_PATTERN = `(${exports.NUMBER_PATTERN})\\\\s{0,3}(${pattern_1.matchAnyPattern(exports.TIME_UNIT_DICTIONARY)})`;\nconst SINGLE_TIME_UNIT_REGEX = new RegExp(SINGLE_TIME_UNIT_PATTERN, \"i\");\nexports.TIME_UNITS_PATTERN = pattern_1.repeatedTimeunitPattern(`(?:(?:about|around)\\\\s{0,3})?`, SINGLE_TIME_UNIT_PATTERN);\n\nfunction parseTimeUnits(timeunitText) {\n const fragments = {};\n let remainingText = timeunitText;\n let match = SINGLE_TIME_UNIT_REGEX.exec(remainingText);\n\n while (match) {\n collectDateTimeFragment(fragments, match);\n remainingText = remainingText.substring(match[0].length).trim();\n match = SINGLE_TIME_UNIT_REGEX.exec(remainingText);\n }\n\n return fragments;\n}\n\nexports.parseTimeUnits = parseTimeUnits;\n\nfunction collectDateTimeFragment(fragments, match) {\n const num = parseNumberPattern(match[1]);\n const unit = exports.TIME_UNIT_DICTIONARY[match[2].toLowerCase()];\n fragments[unit] = num;\n}","\"use strict\";\n\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.findYearClosestToRef = exports.findMostLikelyADYear = void 0;\n\nconst dayjs_1 = __importDefault(require(\"dayjs\"));\n\nfunction findMostLikelyADYear(yearNumber) {\n if (yearNumber < 100) {\n if (yearNumber > 50) {\n yearNumber = yearNumber + 1900;\n } else {\n yearNumber = yearNumber + 2000;\n }\n }\n\n return yearNumber;\n}\n\nexports.findMostLikelyADYear = findMostLikelyADYear;\n\nfunction findYearClosestToRef(refDate, day, month) {\n const refMoment = dayjs_1.default(refDate);\n let dateMoment = refMoment;\n dateMoment = dateMoment.month(month - 1);\n dateMoment = dateMoment.date(day);\n dateMoment = dateMoment.year(refMoment.year());\n const nextYear = dateMoment.add(1, \"y\");\n const lastYear = dateMoment.add(-1, \"y\");\n\n if (Math.abs(nextYear.diff(refMoment)) < Math.abs(dateMoment.diff(refMoment))) {\n dateMoment = nextYear;\n } else if (Math.abs(lastYear.diff(refMoment)) < Math.abs(dateMoment.diff(refMoment))) {\n dateMoment = lastYear;\n }\n\n return dateMoment.year();\n}\n\nexports.findYearClosestToRef = findYearClosestToRef;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.parseTimeUnits = exports.TIME_UNITS_PATTERN = exports.parseYear = exports.YEAR_PATTERN = exports.parseOrdinalNumberPattern = exports.ORDINAL_NUMBER_PATTERN = exports.parseNumberPattern = exports.NUMBER_PATTERN = exports.TIME_UNIT_DICTIONARY = exports.ORDINAL_WORD_DICTIONARY = exports.INTEGER_WORD_DICTIONARY = exports.MONTH_DICTIONARY = exports.FULL_MONTH_NAME_DICTIONARY = exports.WEEKDAY_DICTIONARY = exports.REGEX_PARTS = void 0;\n\nconst pattern_1 = require(\"../../utils/pattern\");\n\nconst years_1 = require(\"../../calculation/years\");\n\nexports.REGEX_PARTS = {\n leftBoundary: \"([^\\\\p{L}\\\\p{N}_]|^)\",\n rightBoundary: \"(?=[^\\\\p{L}\\\\p{N}_]|$)\",\n flags: \"iu\"\n};\nexports.WEEKDAY_DICTIONARY = {\n воскресенье: 0,\n воскресенья: 0,\n вск: 0,\n \"вск.\": 0,\n понедельник: 1,\n понедельника: 1,\n пн: 1,\n \"пн.\": 1,\n вторник: 2,\n вторника: 2,\n вт: 2,\n \"вт.\": 2,\n среда: 3,\n среды: 3,\n среду: 3,\n ср: 3,\n \"ср.\": 3,\n четверг: 4,\n четверга: 4,\n чт: 4,\n \"чт.\": 4,\n пятница: 5,\n пятницу: 5,\n пятницы: 5,\n пт: 5,\n \"пт.\": 5,\n суббота: 6,\n субботу: 6,\n субботы: 6,\n сб: 6,\n \"сб.\": 6\n};\nexports.FULL_MONTH_NAME_DICTIONARY = {\n январь: 1,\n января: 1,\n январе: 1,\n февраль: 2,\n февраля: 2,\n феврале: 2,\n март: 3,\n марта: 3,\n марте: 3,\n апрель: 4,\n апреля: 4,\n апреле: 4,\n май: 5,\n мая: 5,\n мае: 5,\n июнь: 6,\n июня: 6,\n июне: 6,\n июль: 7,\n июля: 7,\n июле: 7,\n август: 8,\n августа: 8,\n августе: 8,\n сентябрь: 9,\n сентября: 9,\n сентябре: 9,\n октябрь: 10,\n октября: 10,\n октябре: 10,\n ноябрь: 11,\n ноября: 11,\n ноябре: 11,\n декабрь: 12,\n декабря: 12,\n декабре: 12\n};\nexports.MONTH_DICTIONARY = Object.assign(Object.assign({}, exports.FULL_MONTH_NAME_DICTIONARY), {\n янв: 1,\n \"янв.\": 1,\n фев: 2,\n \"фев.\": 2,\n мар: 3,\n \"мар.\": 3,\n апр: 4,\n \"апр.\": 4,\n авг: 8,\n \"авг.\": 8,\n сен: 9,\n \"сен.\": 9,\n окт: 10,\n \"окт.\": 10,\n ноя: 11,\n \"ноя.\": 11,\n дек: 12,\n \"дек.\": 12\n});\nexports.INTEGER_WORD_DICTIONARY = {\n один: 1,\n одна: 1,\n одной: 1,\n одну: 1,\n две: 2,\n два: 2,\n двух: 2,\n три: 3,\n трех: 3,\n трёх: 3,\n четыре: 4,\n четырех: 4,\n четырёх: 4,\n пять: 5,\n пяти: 5,\n шесть: 6,\n шести: 6,\n семь: 7,\n семи: 7,\n восемь: 8,\n восьми: 8,\n девять: 9,\n девяти: 9,\n десять: 10,\n десяти: 10,\n одиннадцать: 11,\n одиннадцати: 11,\n двенадцать: 12,\n двенадцати: 12\n};\nexports.ORDINAL_WORD_DICTIONARY = {\n первое: 1,\n первого: 1,\n второе: 2,\n второго: 2,\n третье: 3,\n третьего: 3,\n четвертое: 4,\n четвертого: 4,\n пятое: 5,\n пятого: 5,\n шестое: 6,\n шестого: 6,\n седьмое: 7,\n седьмого: 7,\n восьмое: 8,\n восьмого: 8,\n девятое: 9,\n девятого: 9,\n десятое: 10,\n десятого: 10,\n одиннадцатое: 11,\n одиннадцатого: 11,\n двенадцатое: 12,\n двенадцатого: 12,\n тринадцатое: 13,\n тринадцатого: 13,\n четырнадцатое: 14,\n четырнадцатого: 14,\n пятнадцатое: 15,\n пятнадцатого: 15,\n шестнадцатое: 16,\n шестнадцатого: 16,\n семнадцатое: 17,\n семнадцатого: 17,\n восемнадцатое: 18,\n восемнадцатого: 18,\n девятнадцатое: 19,\n девятнадцатого: 19,\n двадцатое: 20,\n двадцатого: 20,\n \"двадцать первое\": 21,\n \"двадцать первого\": 21,\n \"двадцать второе\": 22,\n \"двадцать второго\": 22,\n \"двадцать третье\": 23,\n \"двадцать третьего\": 23,\n \"двадцать четвертое\": 24,\n \"двадцать четвертого\": 24,\n \"двадцать пятое\": 25,\n \"двадцать пятого\": 25,\n \"двадцать шестое\": 26,\n \"двадцать шестого\": 26,\n \"двадцать седьмое\": 27,\n \"двадцать седьмого\": 27,\n \"двадцать восьмое\": 28,\n \"двадцать восьмого\": 28,\n \"двадцать девятое\": 29,\n \"двадцать девятого\": 29,\n \"тридцатое\": 30,\n \"тридцатого\": 30,\n \"тридцать первое\": 31,\n \"тридцать первого\": 31\n};\nexports.TIME_UNIT_DICTIONARY = {\n сек: \"second\",\n секунда: \"second\",\n секунд: \"second\",\n секунды: \"second\",\n секунду: \"second\",\n секундочка: \"second\",\n секундочки: \"second\",\n секундочек: \"second\",\n секундочку: \"second\",\n мин: \"minute\",\n минута: \"minute\",\n минут: \"minute\",\n минуты: \"minute\",\n минуту: \"minute\",\n минуток: \"minute\",\n минутки: \"minute\",\n минутку: \"minute\",\n час: \"hour\",\n часов: \"hour\",\n часа: \"hour\",\n часу: \"hour\",\n часиков: \"hour\",\n часика: \"hour\",\n часике: \"hour\",\n часик: \"hour\",\n день: \"d\",\n дня: \"d\",\n дней: \"d\",\n суток: \"d\",\n сутки: \"d\",\n неделя: \"week\",\n неделе: \"week\",\n недели: \"week\",\n неделю: \"week\",\n недель: \"week\",\n недельке: \"week\",\n недельки: \"week\",\n неделек: \"week\",\n месяц: \"month\",\n месяце: \"month\",\n месяцев: \"month\",\n месяца: \"month\",\n квартал: \"quarter\",\n квартале: \"quarter\",\n кварталов: \"quarter\",\n год: \"year\",\n года: \"year\",\n году: \"year\",\n годов: \"year\",\n лет: \"year\",\n годик: \"year\",\n годика: \"year\",\n годиков: \"year\"\n};\nexports.NUMBER_PATTERN = `(?:${pattern_1.matchAnyPattern(exports.INTEGER_WORD_DICTIONARY)}|[0-9]+|[0-9]+\\\\.[0-9]+|пол|несколько|пар(?:ы|у)|\\\\s{0,3})`;\n\nfunction parseNumberPattern(match) {\n const num = match.toLowerCase();\n\n if (exports.INTEGER_WORD_DICTIONARY[num] !== undefined) {\n return exports.INTEGER_WORD_DICTIONARY[num];\n }\n\n if (num.match(/несколько/)) {\n return 3;\n } else if (num.match(/пол/)) {\n return 0.5;\n } else if (num.match(/пар/)) {\n return 2;\n } else if (num === \"\") {\n return 1;\n }\n\n return parseFloat(num);\n}\n\nexports.parseNumberPattern = parseNumberPattern;\nexports.ORDINAL_NUMBER_PATTERN = `(?:${pattern_1.matchAnyPattern(exports.ORDINAL_WORD_DICTIONARY)}|[0-9]{1,2}(?:го|ого|е|ое)?)`;\n\nfunction parseOrdinalNumberPattern(match) {\n let num = match.toLowerCase();\n\n if (exports.ORDINAL_WORD_DICTIONARY[num] !== undefined) {\n return exports.ORDINAL_WORD_DICTIONARY[num];\n }\n\n return parseInt(num);\n}\n\nexports.parseOrdinalNumberPattern = parseOrdinalNumberPattern;\nconst year = \"(?:\\\\s+(?:году|года|год|г|г.))?\";\nexports.YEAR_PATTERN = `(?:[1-9][0-9]{0,3}${year}\\\\s*(?:н.э.|до н.э.|н. э.|до н. э.)|[1-2][0-9]{3}${year}|[5-9][0-9]${year})`;\n\nfunction parseYear(match) {\n if (/(год|года|г|г.)/i.test(match)) {\n match = match.replace(/(год|года|г|г.)/i, \"\");\n }\n\n if (/(до н.э.|до н. э.)/i.test(match)) {\n match = match.replace(/(до н.э.|до н. э.)/i, \"\");\n return -parseInt(match);\n }\n\n if (/(н. э.|н.э.)/i.test(match)) {\n match = match.replace(/(н. э.|н.э.)/i, \"\");\n return parseInt(match);\n }\n\n const rawYearNumber = parseInt(match);\n return years_1.findMostLikelyADYear(rawYearNumber);\n}\n\nexports.parseYear = parseYear;\nconst SINGLE_TIME_UNIT_PATTERN = `(${exports.NUMBER_PATTERN})\\\\s{0,3}(${pattern_1.matchAnyPattern(exports.TIME_UNIT_DICTIONARY)})`;\nconst SINGLE_TIME_UNIT_REGEX = new RegExp(SINGLE_TIME_UNIT_PATTERN, \"i\");\nexports.TIME_UNITS_PATTERN = pattern_1.repeatedTimeunitPattern(`(?:(?:около|примерно)\\\\s{0,3})?`, SINGLE_TIME_UNIT_PATTERN);\n\nfunction parseTimeUnits(timeunitText) {\n const fragments = {};\n let remainingText = timeunitText;\n let match = SINGLE_TIME_UNIT_REGEX.exec(remainingText);\n\n while (match) {\n collectDateTimeFragment(fragments, match);\n remainingText = remainingText.substring(match[0].length).trim();\n match = SINGLE_TIME_UNIT_REGEX.exec(remainingText);\n }\n\n return fragments;\n}\n\nexports.parseTimeUnits = parseTimeUnits;\n\nfunction collectDateTimeFragment(fragments, match) {\n const num = parseNumberPattern(match[1]);\n const unit = exports.TIME_UNIT_DICTIONARY[match[2].toLowerCase()];\n fragments[unit] = num;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.implySimilarTime = exports.implySimilarDate = exports.assignSimilarTime = exports.assignSimilarDate = exports.implyTheNextDay = exports.assignTheNextDay = void 0;\n\nconst index_1 = require(\"../index\");\n\nfunction assignTheNextDay(component, targetDayJs) {\n targetDayJs = targetDayJs.add(1, \"day\");\n assignSimilarDate(component, targetDayJs);\n implySimilarTime(component, targetDayJs);\n}\n\nexports.assignTheNextDay = assignTheNextDay;\n\nfunction implyTheNextDay(component, targetDayJs) {\n targetDayJs = targetDayJs.add(1, \"day\");\n implySimilarDate(component, targetDayJs);\n implySimilarTime(component, targetDayJs);\n}\n\nexports.implyTheNextDay = implyTheNextDay;\n\nfunction assignSimilarDate(component, targetDayJs) {\n component.assign(\"day\", targetDayJs.date());\n component.assign(\"month\", targetDayJs.month() + 1);\n component.assign(\"year\", targetDayJs.year());\n}\n\nexports.assignSimilarDate = assignSimilarDate;\n\nfunction assignSimilarTime(component, targetDayJs) {\n component.assign(\"hour\", targetDayJs.hour());\n component.assign(\"minute\", targetDayJs.minute());\n component.assign(\"second\", targetDayJs.second());\n component.assign(\"millisecond\", targetDayJs.millisecond());\n\n if (component.get(\"hour\") < 12) {\n component.assign(\"meridiem\", index_1.Meridiem.AM);\n } else {\n component.assign(\"meridiem\", index_1.Meridiem.PM);\n }\n}\n\nexports.assignSimilarTime = assignSimilarTime;\n\nfunction implySimilarDate(component, targetDayJs) {\n component.imply(\"day\", targetDayJs.date());\n component.imply(\"month\", targetDayJs.month() + 1);\n component.imply(\"year\", targetDayJs.year());\n}\n\nexports.implySimilarDate = implySimilarDate;\n\nfunction implySimilarTime(component, targetDayJs) {\n component.imply(\"hour\", targetDayJs.hour());\n component.imply(\"minute\", targetDayJs.minute());\n component.imply(\"second\", targetDayJs.second());\n component.imply(\"millisecond\", targetDayJs.millisecond());\n}\n\nexports.implySimilarTime = implySimilarTime;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.addImpliedTimeUnits = exports.reverseTimeUnits = void 0;\n\nfunction reverseTimeUnits(timeUnits) {\n const reversed = {};\n\n for (const key in timeUnits) {\n reversed[key] = -timeUnits[key];\n }\n\n return reversed;\n}\n\nexports.reverseTimeUnits = reverseTimeUnits;\n\nfunction addImpliedTimeUnits(components, timeUnits) {\n const output = components.clone();\n let date = components.dayjs();\n\n for (const key in timeUnits) {\n date = date.add(timeUnits[key], key);\n }\n\n if (\"day\" in timeUnits || \"d\" in timeUnits || \"week\" in timeUnits || \"month\" in timeUnits || \"year\" in timeUnits) {\n output.imply(\"day\", date.date());\n output.imply(\"month\", date.month() + 1);\n output.imply(\"year\", date.year());\n }\n\n if (\"second\" in timeUnits || \"minute\" in timeUnits || \"hour\" in timeUnits) {\n output.imply(\"second\", date.second());\n output.imply(\"minute\", date.minute());\n output.imply(\"hour\", date.hour());\n }\n\n return output;\n}\n\nexports.addImpliedTimeUnits = addImpliedTimeUnits;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.parseTimeUnits = exports.TIME_UNITS_PATTERN = exports.parseYear = exports.YEAR_PATTERN = exports.parseOrdinalNumberPattern = exports.ORDINAL_NUMBER_PATTERN = exports.parseNumberPattern = exports.NUMBER_PATTERN = exports.TIME_UNIT_DICTIONARY = exports.ORDINAL_WORD_DICTIONARY = exports.INTEGER_WORD_DICTIONARY = exports.MONTH_DICTIONARY = exports.WEEKDAY_DICTIONARY = void 0;\n\nconst pattern_1 = require(\"../../utils/pattern\");\n\nconst years_1 = require(\"../../calculation/years\");\n\nexports.WEEKDAY_DICTIONARY = {\n zondag: 0,\n zon: 0,\n \"zon.\": 0,\n zo: 0,\n \"zo.\": 0,\n maandag: 1,\n ma: 1,\n \"ma.\": 1,\n dinsdag: 2,\n din: 2,\n \"din.\": 2,\n di: 2,\n \"di.\": 2,\n woensdag: 3,\n woe: 3,\n \"woe.\": 3,\n wo: 3,\n \"wo.\": 3,\n donderdag: 4,\n dond: 4,\n \"dond.\": 4,\n do: 4,\n \"do.\": 4,\n vrijdag: 5,\n vrij: 5,\n \"vrij.\": 5,\n vr: 5,\n \"vr.\": 5,\n zaterdag: 6,\n zat: 6,\n \"zat.\": 6,\n \"za\": 6,\n \"za.\": 6\n};\nexports.MONTH_DICTIONARY = {\n januari: 1,\n jan: 1,\n \"jan.\": 1,\n februari: 2,\n feb: 2,\n \"feb.\": 2,\n maart: 3,\n mar: 3,\n \"mar.\": 3,\n april: 4,\n apr: 4,\n \"apr.\": 4,\n mei: 5,\n juni: 6,\n jun: 6,\n \"jun.\": 6,\n juli: 7,\n jul: 7,\n \"jul.\": 7,\n augustus: 8,\n aug: 8,\n \"aug.\": 8,\n september: 9,\n sep: 9,\n \"sep.\": 9,\n sept: 9,\n \"sept.\": 9,\n oktober: 10,\n okt: 10,\n \"okt.\": 10,\n november: 11,\n nov: 11,\n \"nov.\": 11,\n december: 12,\n dec: 12,\n \"dec.\": 12\n};\nexports.INTEGER_WORD_DICTIONARY = {\n een: 1,\n twee: 2,\n drie: 3,\n vier: 4,\n vijf: 5,\n zes: 6,\n zeven: 7,\n acht: 8,\n negen: 9,\n tien: 10,\n elf: 11,\n twaalf: 12\n};\nexports.ORDINAL_WORD_DICTIONARY = {\n eerste: 1,\n tweede: 2,\n derde: 3,\n vierde: 4,\n vijfde: 5,\n zesde: 6,\n zevende: 7,\n achtste: 8,\n negende: 9,\n tiende: 10,\n elfde: 11,\n twaalfde: 12,\n dertiende: 13,\n veertiende: 14,\n vijftiende: 15,\n zestiende: 16,\n zeventiende: 17,\n achttiende: 18,\n negentiende: 19,\n twintigste: 20,\n \"eenentwintigste\": 21,\n \"tweeëntwintigste\": 22,\n \"drieentwintigste\": 23,\n \"vierentwintigste\": 24,\n \"vijfentwintigste\": 25,\n \"zesentwintigste\": 26,\n \"zevenentwintigste\": 27,\n \"achtentwintig\": 28,\n \"negenentwintig\": 29,\n \"dertigste\": 30,\n \"eenendertigste\": 31\n};\nexports.TIME_UNIT_DICTIONARY = {\n sec: \"second\",\n second: \"second\",\n seconden: \"second\",\n min: \"minute\",\n mins: \"minute\",\n minute: \"minute\",\n minuut: \"minute\",\n minuten: \"minute\",\n minuutje: \"minute\",\n h: \"hour\",\n hr: \"hour\",\n hrs: \"hour\",\n uur: \"hour\",\n u: \"hour\",\n uren: \"hour\",\n dag: \"d\",\n dagen: \"d\",\n week: \"week\",\n weken: \"week\",\n maand: \"month\",\n maanden: \"month\",\n jaar: \"year\",\n jr: \"year\",\n jaren: \"year\"\n};\nexports.NUMBER_PATTERN = `(?:${pattern_1.matchAnyPattern(exports.INTEGER_WORD_DICTIONARY)}|[0-9]+|[0-9]+[\\\\.,][0-9]+|halve?|half|paar)`;\n\nfunction parseNumberPattern(match) {\n const num = match.toLowerCase();\n\n if (exports.INTEGER_WORD_DICTIONARY[num] !== undefined) {\n return exports.INTEGER_WORD_DICTIONARY[num];\n } else if (num === \"paar\") {\n return 2;\n } else if (num === \"half\" || num.match(/halve?/)) {\n return 0.5;\n }\n\n return parseFloat(num.replace(\",\", \".\"));\n}\n\nexports.parseNumberPattern = parseNumberPattern;\nexports.ORDINAL_NUMBER_PATTERN = `(?:${pattern_1.matchAnyPattern(exports.ORDINAL_WORD_DICTIONARY)}|[0-9]{1,2}(?:ste|de)?)`;\n\nfunction parseOrdinalNumberPattern(match) {\n let num = match.toLowerCase();\n\n if (exports.ORDINAL_WORD_DICTIONARY[num] !== undefined) {\n return exports.ORDINAL_WORD_DICTIONARY[num];\n }\n\n num = num.replace(/(?:ste|de)$/i, \"\");\n return parseInt(num);\n}\n\nexports.parseOrdinalNumberPattern = parseOrdinalNumberPattern;\nexports.YEAR_PATTERN = `(?:[1-9][0-9]{0,3}\\\\s*(?:voor Christus|na Christus)|[1-2][0-9]{3}|[5-9][0-9])`;\n\nfunction parseYear(match) {\n if (/voor Christus/i.test(match)) {\n match = match.replace(/voor Christus/i, \"\");\n return -parseInt(match);\n }\n\n if (/na Christus/i.test(match)) {\n match = match.replace(/na Christus/i, \"\");\n return parseInt(match);\n }\n\n const rawYearNumber = parseInt(match);\n return years_1.findMostLikelyADYear(rawYearNumber);\n}\n\nexports.parseYear = parseYear;\nconst SINGLE_TIME_UNIT_PATTERN = `(${exports.NUMBER_PATTERN})\\\\s{0,5}(${pattern_1.matchAnyPattern(exports.TIME_UNIT_DICTIONARY)})\\\\s{0,5}`;\nconst SINGLE_TIME_UNIT_REGEX = new RegExp(SINGLE_TIME_UNIT_PATTERN, \"i\");\nexports.TIME_UNITS_PATTERN = pattern_1.repeatedTimeunitPattern(`(?:(?:binnen|in)\\\\s*)?`, SINGLE_TIME_UNIT_PATTERN);\n\nfunction parseTimeUnits(timeunitText) {\n const fragments = {};\n let remainingText = timeunitText;\n let match = SINGLE_TIME_UNIT_REGEX.exec(remainingText);\n\n while (match) {\n collectDateTimeFragment(fragments, match);\n remainingText = remainingText.substring(match[0].length);\n match = SINGLE_TIME_UNIT_REGEX.exec(remainingText);\n }\n\n return fragments;\n}\n\nexports.parseTimeUnits = parseTimeUnits;\n\nfunction collectDateTimeFragment(fragments, match) {\n const num = parseNumberPattern(match[1]);\n const unit = exports.TIME_UNIT_DICTIONARY[match[2].toLowerCase()];\n fragments[unit] = num;\n}","class GlobalRegistration {\n constructor(registryName) {\n window.registry = window.registry || {}\n this._registryName = registryName\n }\n\n get() {\n return window.registry[this._registryName]\n }\n\n set(value) {\n window.registry[this._registryName] = value\n }\n\n clear() {\n window.registry[this._registryName] = null\n }\n}\n\nexport default GlobalRegistration\n","import GlobalRegistration from \"../global_registration\"\n\nclass NodeManager {\n constructor(name) {\n this.name = name\n this.root = null\n this.currentNode = null\n }\n\n push(item, notify = false) {\n const node = {\n item,\n parent: this.currentNode\n }\n\n this._updateCurrentNode(node)\n }\n\n pop(notify = true) {\n if (!this.currentNode) return null\n\n const node = this.currentNode\n this.currentNode = node.parent // Move up to the parent node\n\n if (!node.parent) {\n // If there's no parent, it means this is the root node\n // and then we can clear the root\n this.root = null\n }\n\n this._cleanUp()\n if (notify) {\n this._notify(\"pop\", node)\n this._emitChildRemoval(node, node.parent)\n }\n return node\n }\n\n clear() {\n let poppedNode = null\n while (this.currentNode) {\n poppedNode = this.pop()\n }\n\n return poppedNode\n }\n\n clearUpTo(node) {\n if (!node) return\n\n let poppedNode = null\n while (this.currentNode && this.currentNode !== node) {\n poppedNode = this.pop()\n }\n\n return poppedNode\n }\n\n closestOriginNode() {\n let currentNode = this.currentNode\n // We need to traverse up to the root node to find the origin node\n while (currentNode.item.dataset.sheetStackTarget !== \"origin\" && currentNode.parent) {\n currentNode = currentNode.parent\n }\n\n return currentNode\n }\n\n length() {\n let currentNode = this.currentNode\n let count = 0\n while (currentNode) {\n count++\n currentNode = currentNode.parent\n }\n\n return count\n }\n\n _notify(action, node = this.currentNode) {\n if (node) {\n this._emitEvent(action, node)\n }\n }\n\n _updateCurrentNode(node) {\n if (!this.currentNode) {\n this.root = node\n }\n\n this.currentNode = node\n }\n\n _emitEvent(action, node) {\n const eventName = `sheet-update:${action}`\n const nodeElement = node.item\n const customEvent = new CustomEvent(eventName, {\n bubbles: false,\n detail: { item: nodeElement }\n })\n\n if (nodeElement instanceof HTMLElement) {\n nodeElement.dispatchEvent(customEvent)\n }\n }\n\n _emitChildRemoval(currentNode, parentNode) {\n if (!parentNode) return\n\n const parentElement = parentNode.item\n\n const childRemovalEvent = new CustomEvent(\"sheet-update:child-removal\", {\n bubbles: false, // No bubbling because we aim only the parent element\n detail: { node: currentNode }\n })\n\n parentElement.dispatchEvent(childRemovalEvent)\n\n // We need to notify the root node as well if it's not the parent node\n if (this.root && this.root !== parentNode) {\n this._emitChildRemoval(currentNode, this.root)\n }\n }\n\n _cleanUp() {\n if (!this.root) {\n const globalRegistration = new GlobalRegistration(this.name)\n globalRegistration.clear()\n }\n }\n}\n\nexport default NodeManager\n","import GlobalRegistration from \"./global_registration\"\nimport SheetsTree from \"./sheets/node_manager\"\n\nclass StackManager {\n constructor(name, sheetsTree = null) {\n this.name = name\n this.sheets = sheetsTree || new SheetsTree(name)\n }\n\n // Load a stack manager for a given name, otherwise create a new one\n static loadFor(name) {\n const stackRegistration = new GlobalRegistration(name)\n let _stackManager = stackRegistration.get()\n if (!_stackManager) {\n _stackManager = new StackManager(name)\n stackRegistration.set(_stackManager)\n }\n\n return _stackManager\n }\n\n push(item, ...args) {\n this.sheets.push(item, ...args)\n this._persistStack()\n }\n\n pop({ notify = true } = {}) {\n const poppedNode = this.sheets.pop(notify)\n\n this._emitGenericEvent(\"pop\", poppedNode)\n this._persistStack()\n return poppedNode ? poppedNode.item : null\n }\n\n // This clears the stack\n // if reloadPrimary is true, it will trigger a reload event on the primary sheet element\n // if notifyCallbacks is true, it will trigger the removed event on the last element in the stack\n // otherwise, it will trigger a pop event on the last element in the stack\n clear({ reloadPrimary = false, notifyCallbacks = true, keepPrimary = false, ...data } = {}) {\n this._reloading = reloadPrimary && !keepPrimary\n const lastRemovedNode = this._removeNodes(keepPrimary)\n if (!lastRemovedNode) return null\n\n if (reloadPrimary && !keepPrimary) {\n this._emitElementEvent(\"reload\", lastRemovedNode, data)\n } else {\n this._emitGenericEvent(\"pop\", lastRemovedNode)\n }\n\n // If we don't want to notify the callbacks to react to the removal of the last element\n if (notifyCallbacks) {\n this._emitElementEvent(\"removed\", lastRemovedNode)\n }\n\n this._persistStack()\n return lastRemovedNode ? lastRemovedNode.item : null\n }\n\n closestOrigin() {\n return this.sheets.closestOriginNode().item\n }\n\n hasNodes() {\n return this.sheets.root !== null\n }\n\n // We need a flag to indicate that the stack is finished reloading\n finishReloading() {\n this._reloading = false\n }\n\n _removeNodes(keepPrimary = false) {\n if (keepPrimary) {\n return this.sheets.clearUpTo(this.sheets.root)\n } else {\n return this.sheets.clear()\n }\n }\n\n _emitElementEvent(action, node, data) {\n if (!node || !node.item) return\n node.data = data\n\n const customEvent = new CustomEvent(this._eventNameFor(action), {\n bubbles: false,\n detail: { node }\n })\n\n node.item.dispatchEvent(customEvent)\n }\n\n // This allows any independent component to act upon an action made in the stack\n _emitGenericEvent(action, node) {\n if (!node) return\n\n const customEvent = new CustomEvent(this._eventNameFor(action), {\n bubbles: false,\n detail: { node }\n })\n\n window.dispatchEvent(customEvent)\n }\n\n _persistStack() {\n const stackRegistration = new GlobalRegistration(this.name)\n stackRegistration.set(this)\n }\n\n _eventNameFor(action) {\n return `stack-${this.name}:${action}`\n }\n\n get popEventName() {\n return `stack-${this.name}:pop`\n }\n\n get reloadEventName() {\n return `stack-${this.name}:reload`\n }\n\n get length() {\n return this.sheets.length()\n }\n\n get isReloading() {\n return this._reloading\n }\n}\n\nexport default StackManager\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ParsingContext = exports.Chrono = void 0;\n\nconst results_1 = require(\"./results\");\n\nconst en_1 = require(\"./locales/en\");\n\nclass Chrono {\n constructor(configuration) {\n configuration = configuration || en_1.createCasualConfiguration();\n this.parsers = [...configuration.parsers];\n this.refiners = [...configuration.refiners];\n }\n\n clone() {\n return new Chrono({\n parsers: [...this.parsers],\n refiners: [...this.refiners]\n });\n }\n\n parseDate(text, referenceDate, option) {\n const results = this.parse(text, referenceDate, option);\n return results.length > 0 ? results[0].start.date() : null;\n }\n\n parse(text, referenceDate, option) {\n const context = new ParsingContext(text, referenceDate, option);\n let results = [];\n this.parsers.forEach(parser => {\n const parsedResults = Chrono.executeParser(context, parser);\n results = results.concat(parsedResults);\n });\n results.sort((a, b) => {\n return a.index - b.index;\n });\n this.refiners.forEach(function (refiner) {\n results = refiner.refine(context, results);\n });\n return results;\n }\n\n static executeParser(context, parser) {\n const results = [];\n const pattern = parser.pattern(context);\n const originalText = context.text;\n let remainingText = context.text;\n let match = pattern.exec(remainingText);\n\n while (match) {\n const index = match.index + originalText.length - remainingText.length;\n match.index = index;\n const result = parser.extract(context, match);\n\n if (!result) {\n remainingText = originalText.substring(match.index + 1);\n match = pattern.exec(remainingText);\n continue;\n }\n\n let parsedResult = null;\n\n if (result instanceof results_1.ParsingResult) {\n parsedResult = result;\n } else if (result instanceof results_1.ParsingComponents) {\n parsedResult = context.createParsingResult(match.index, match[0]);\n parsedResult.start = result;\n } else {\n parsedResult = context.createParsingResult(match.index, match[0], result);\n }\n\n context.debug(() => console.log(`${parser.constructor.name} extracted result ${parsedResult}`));\n results.push(parsedResult);\n remainingText = originalText.substring(index + parsedResult.text.length);\n match = pattern.exec(remainingText);\n }\n\n return results;\n }\n\n}\n\nexports.Chrono = Chrono;\n\nclass ParsingContext {\n constructor(text, refDate, option) {\n this.text = text;\n this.reference = new results_1.ReferenceWithTimezone(refDate);\n this.option = option !== null && option !== void 0 ? option : {};\n this.refDate = this.reference.instant;\n }\n\n createParsingComponents(components) {\n if (components instanceof results_1.ParsingComponents) {\n return components;\n }\n\n return new results_1.ParsingComponents(this.reference, components);\n }\n\n createParsingResult(index, textOrEndIndex, startComponents, endComponents) {\n const text = typeof textOrEndIndex === \"string\" ? textOrEndIndex : this.text.substring(index, textOrEndIndex);\n const start = startComponents ? this.createParsingComponents(startComponents) : null;\n const end = endComponents ? this.createParsingComponents(endComponents) : null;\n return new results_1.ParsingResult(this.reference, index, text, start, end);\n }\n\n debug(block) {\n if (this.option.debug) {\n if (this.option.debug instanceof Function) {\n this.option.debug(block);\n } else {\n const handler = this.option.debug;\n handler.debug(block);\n }\n }\n }\n\n}\n\nexports.ParsingContext = ParsingContext;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nconst abstractRefiners_1 = require(\"../abstractRefiners\");\n\nclass AbstractMergeDateRangeRefiner extends abstractRefiners_1.MergingRefiner {\n shouldMergeResults(textBetween, currentResult, nextResult) {\n return !currentResult.end && !nextResult.end && textBetween.match(this.patternBetween()) != null;\n }\n\n mergeResults(textBetween, fromResult, toResult) {\n if (!fromResult.start.isOnlyWeekdayComponent() && !toResult.start.isOnlyWeekdayComponent()) {\n toResult.start.getCertainComponents().forEach(key => {\n if (!fromResult.start.isCertain(key)) {\n fromResult.start.assign(key, toResult.start.get(key));\n }\n });\n fromResult.start.getCertainComponents().forEach(key => {\n if (!toResult.start.isCertain(key)) {\n toResult.start.assign(key, fromResult.start.get(key));\n }\n });\n }\n\n if (fromResult.start.date().getTime() > toResult.start.date().getTime()) {\n let fromMoment = fromResult.start.dayjs();\n let toMoment = toResult.start.dayjs();\n\n if (fromResult.start.isOnlyWeekdayComponent() && fromMoment.add(-7, \"days\").isBefore(toMoment)) {\n fromMoment = fromMoment.add(-7, \"days\");\n fromResult.start.imply(\"day\", fromMoment.date());\n fromResult.start.imply(\"month\", fromMoment.month() + 1);\n fromResult.start.imply(\"year\", fromMoment.year());\n } else if (toResult.start.isOnlyWeekdayComponent() && toMoment.add(7, \"days\").isAfter(fromMoment)) {\n toMoment = toMoment.add(7, \"days\");\n toResult.start.imply(\"day\", toMoment.date());\n toResult.start.imply(\"month\", toMoment.month() + 1);\n toResult.start.imply(\"year\", toMoment.year());\n } else {\n var _ref = [fromResult, toResult];\n toResult = _ref[0];\n fromResult = _ref[1];\n }\n }\n\n const result = fromResult.clone();\n result.start = fromResult.start;\n result.end = toResult.start;\n result.index = Math.min(fromResult.index, toResult.index);\n\n if (fromResult.index < toResult.index) {\n result.text = fromResult.text + textBetween + toResult.text;\n } else {\n result.text = toResult.text + textBetween + fromResult.text;\n }\n\n return result;\n }\n\n}\n\nexports.default = AbstractMergeDateRangeRefiner;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nconst abstractRefiners_1 = require(\"../abstractRefiners\");\n\nconst mergingCalculation_1 = require(\"../../calculation/mergingCalculation\");\n\nclass AbstractMergeDateTimeRefiner extends abstractRefiners_1.MergingRefiner {\n shouldMergeResults(textBetween, currentResult, nextResult) {\n return (currentResult.start.isOnlyDate() && nextResult.start.isOnlyTime() || nextResult.start.isOnlyDate() && currentResult.start.isOnlyTime()) && textBetween.match(this.patternBetween()) != null;\n }\n\n mergeResults(textBetween, currentResult, nextResult) {\n const result = currentResult.start.isOnlyDate() ? mergingCalculation_1.mergeDateTimeResult(currentResult, nextResult) : mergingCalculation_1.mergeDateTimeResult(nextResult, currentResult);\n result.index = currentResult.index;\n result.text = currentResult.text + textBetween + nextResult.text;\n return result;\n }\n\n}\n\nexports.default = AbstractMergeDateTimeRefiner;","\"use strict\";\n\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.includeCommonConfiguration = void 0;\n\nconst ExtractTimezoneAbbrRefiner_1 = __importDefault(require(\"./common/refiners/ExtractTimezoneAbbrRefiner\"));\n\nconst ExtractTimezoneOffsetRefiner_1 = __importDefault(require(\"./common/refiners/ExtractTimezoneOffsetRefiner\"));\n\nconst OverlapRemovalRefiner_1 = __importDefault(require(\"./common/refiners/OverlapRemovalRefiner\"));\n\nconst ForwardDateRefiner_1 = __importDefault(require(\"./common/refiners/ForwardDateRefiner\"));\n\nconst UnlikelyFormatFilter_1 = __importDefault(require(\"./common/refiners/UnlikelyFormatFilter\"));\n\nconst ISOFormatParser_1 = __importDefault(require(\"./common/parsers/ISOFormatParser\"));\n\nconst MergeWeekdayComponentRefiner_1 = __importDefault(require(\"./common/refiners/MergeWeekdayComponentRefiner\"));\n\nfunction includeCommonConfiguration(configuration, strictMode = false) {\n configuration.parsers.unshift(new ISOFormatParser_1.default());\n configuration.refiners.unshift(new MergeWeekdayComponentRefiner_1.default());\n configuration.refiners.unshift(new ExtractTimezoneAbbrRefiner_1.default());\n configuration.refiners.unshift(new ExtractTimezoneOffsetRefiner_1.default());\n configuration.refiners.unshift(new OverlapRemovalRefiner_1.default());\n configuration.refiners.push(new OverlapRemovalRefiner_1.default());\n configuration.refiners.push(new ForwardDateRefiner_1.default());\n configuration.refiners.push(new UnlikelyFormatFilter_1.default(strictMode));\n return configuration;\n}\n\nexports.includeCommonConfiguration = includeCommonConfiguration;","\"use strict\";\n\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.noon = exports.morning = exports.midnight = exports.yesterdayEvening = exports.evening = exports.lastNight = exports.tonight = exports.theDayAfter = exports.tomorrow = exports.theDayBefore = exports.yesterday = exports.today = exports.now = void 0;\n\nconst results_1 = require(\"../results\");\n\nconst dayjs_1 = __importDefault(require(\"dayjs\"));\n\nconst dayjs_2 = require(\"../utils/dayjs\");\n\nconst index_1 = require(\"../index\");\n\nfunction now(reference) {\n const targetDate = dayjs_1.default(reference.instant);\n const component = new results_1.ParsingComponents(reference, {});\n dayjs_2.assignSimilarDate(component, targetDate);\n dayjs_2.assignSimilarTime(component, targetDate);\n\n if (reference.timezoneOffset !== null) {\n component.assign(\"timezoneOffset\", targetDate.utcOffset());\n }\n\n return component;\n}\n\nexports.now = now;\n\nfunction today(reference) {\n const targetDate = dayjs_1.default(reference.instant);\n const component = new results_1.ParsingComponents(reference, {});\n dayjs_2.assignSimilarDate(component, targetDate);\n dayjs_2.implySimilarTime(component, targetDate);\n return component;\n}\n\nexports.today = today;\n\nfunction yesterday(reference) {\n return theDayBefore(reference, 1);\n}\n\nexports.yesterday = yesterday;\n\nfunction theDayBefore(reference, numDay) {\n return theDayAfter(reference, -numDay);\n}\n\nexports.theDayBefore = theDayBefore;\n\nfunction tomorrow(reference) {\n return theDayAfter(reference, 1);\n}\n\nexports.tomorrow = tomorrow;\n\nfunction theDayAfter(reference, nDays) {\n let targetDate = dayjs_1.default(reference.instant);\n const component = new results_1.ParsingComponents(reference, {});\n targetDate = targetDate.add(nDays, \"day\");\n dayjs_2.assignSimilarDate(component, targetDate);\n dayjs_2.implySimilarTime(component, targetDate);\n return component;\n}\n\nexports.theDayAfter = theDayAfter;\n\nfunction tonight(reference, implyHour = 22) {\n const targetDate = dayjs_1.default(reference.instant);\n const component = new results_1.ParsingComponents(reference, {});\n component.imply(\"hour\", implyHour);\n component.imply(\"meridiem\", index_1.Meridiem.PM);\n dayjs_2.assignSimilarDate(component, targetDate);\n return component;\n}\n\nexports.tonight = tonight;\n\nfunction lastNight(reference, implyHour = 0) {\n let targetDate = dayjs_1.default(reference.instant);\n const component = new results_1.ParsingComponents(reference, {});\n\n if (targetDate.hour() < 6) {\n targetDate = targetDate.add(-1, \"day\");\n }\n\n dayjs_2.assignSimilarDate(component, targetDate);\n component.imply(\"hour\", implyHour);\n return component;\n}\n\nexports.lastNight = lastNight;\n\nfunction evening(reference, implyHour = 20) {\n const component = new results_1.ParsingComponents(reference, {});\n component.imply(\"meridiem\", index_1.Meridiem.PM);\n component.imply(\"hour\", implyHour);\n return component;\n}\n\nexports.evening = evening;\n\nfunction yesterdayEvening(reference, implyHour = 20) {\n let targetDate = dayjs_1.default(reference.instant);\n const component = new results_1.ParsingComponents(reference, {});\n targetDate = targetDate.add(-1, \"day\");\n dayjs_2.assignSimilarDate(component, targetDate);\n component.imply(\"hour\", implyHour);\n component.imply(\"meridiem\", index_1.Meridiem.PM);\n return component;\n}\n\nexports.yesterdayEvening = yesterdayEvening;\n\nfunction midnight(reference) {\n const component = new results_1.ParsingComponents(reference, {});\n component.imply(\"hour\", 0);\n component.imply(\"minute\", 0);\n component.imply(\"second\", 0);\n return component;\n}\n\nexports.midnight = midnight;\n\nfunction morning(reference, implyHour = 6) {\n const component = new results_1.ParsingComponents(reference, {});\n component.imply(\"meridiem\", index_1.Meridiem.AM);\n component.imply(\"hour\", implyHour);\n return component;\n}\n\nexports.morning = morning;\n\nfunction noon(reference) {\n const component = new results_1.ParsingComponents(reference, {});\n component.imply(\"meridiem\", index_1.Meridiem.AM);\n component.imply(\"hour\", 12);\n return component;\n}\n\nexports.noon = noon;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.parseTimeUnits = exports.TIME_UNITS_PATTERN = exports.parseYear = exports.YEAR_PATTERN = exports.parseOrdinalNumberPattern = exports.ORDINAL_NUMBER_PATTERN = exports.parseNumberPattern = exports.NUMBER_PATTERN = exports.TIME_UNIT_DICTIONARY = exports.INTEGER_WORD_DICTIONARY = exports.MONTH_DICTIONARY = exports.WEEKDAY_DICTIONARY = void 0;\n\nconst pattern_1 = require(\"../../utils/pattern\");\n\nexports.WEEKDAY_DICTIONARY = {\n \"dimanche\": 0,\n \"dim\": 0,\n \"lundi\": 1,\n \"lun\": 1,\n \"mardi\": 2,\n \"mar\": 2,\n \"mercredi\": 3,\n \"mer\": 3,\n \"jeudi\": 4,\n \"jeu\": 4,\n \"vendredi\": 5,\n \"ven\": 5,\n \"samedi\": 6,\n \"sam\": 6\n};\nexports.MONTH_DICTIONARY = {\n \"janvier\": 1,\n \"jan\": 1,\n \"jan.\": 1,\n \"février\": 2,\n \"fév\": 2,\n \"fév.\": 2,\n \"fevrier\": 2,\n \"fev\": 2,\n \"fev.\": 2,\n \"mars\": 3,\n \"mar\": 3,\n \"mar.\": 3,\n \"avril\": 4,\n \"avr\": 4,\n \"avr.\": 4,\n \"mai\": 5,\n \"juin\": 6,\n \"jun\": 6,\n \"juillet\": 7,\n \"juil\": 7,\n \"jul\": 7,\n \"jul.\": 7,\n \"août\": 8,\n \"aout\": 8,\n \"septembre\": 9,\n \"sep\": 9,\n \"sep.\": 9,\n \"sept\": 9,\n \"sept.\": 9,\n \"octobre\": 10,\n \"oct\": 10,\n \"oct.\": 10,\n \"novembre\": 11,\n \"nov\": 11,\n \"nov.\": 11,\n \"décembre\": 12,\n \"decembre\": 12,\n \"dec\": 12,\n \"dec.\": 12\n};\nexports.INTEGER_WORD_DICTIONARY = {\n \"un\": 1,\n \"deux\": 2,\n \"trois\": 3,\n \"quatre\": 4,\n \"cinq\": 5,\n \"six\": 6,\n \"sept\": 7,\n \"huit\": 8,\n \"neuf\": 9,\n \"dix\": 10,\n \"onze\": 11,\n \"douze\": 12,\n \"treize\": 13\n};\nexports.TIME_UNIT_DICTIONARY = {\n \"sec\": \"second\",\n \"seconde\": \"second\",\n \"secondes\": \"second\",\n \"min\": \"minute\",\n \"mins\": \"minute\",\n \"minute\": \"minute\",\n \"minutes\": \"minute\",\n \"h\": \"hour\",\n \"hr\": \"hour\",\n \"hrs\": \"hour\",\n \"heure\": \"hour\",\n \"heures\": \"hour\",\n \"jour\": \"d\",\n \"jours\": \"d\",\n \"semaine\": \"week\",\n \"semaines\": \"week\",\n \"mois\": \"month\",\n \"trimestre\": \"quarter\",\n \"trimestres\": \"quarter\",\n \"ans\": \"year\",\n \"année\": \"year\",\n \"années\": \"year\"\n};\nexports.NUMBER_PATTERN = `(?:${pattern_1.matchAnyPattern(exports.INTEGER_WORD_DICTIONARY)}|[0-9]+|[0-9]+\\\\.[0-9]+|une?\\\\b|quelques?|demi-?)`;\n\nfunction parseNumberPattern(match) {\n const num = match.toLowerCase();\n\n if (exports.INTEGER_WORD_DICTIONARY[num] !== undefined) {\n return exports.INTEGER_WORD_DICTIONARY[num];\n } else if (num === \"une\" || num === \"un\") {\n return 1;\n } else if (num.match(/quelques?/)) {\n return 3;\n } else if (num.match(/demi-?/)) {\n return 0.5;\n }\n\n return parseFloat(num);\n}\n\nexports.parseNumberPattern = parseNumberPattern;\nexports.ORDINAL_NUMBER_PATTERN = `(?:[0-9]{1,2}(?:er)?)`;\n\nfunction parseOrdinalNumberPattern(match) {\n let num = match.toLowerCase();\n num = num.replace(/(?:er)$/i, \"\");\n return parseInt(num);\n}\n\nexports.parseOrdinalNumberPattern = parseOrdinalNumberPattern;\nexports.YEAR_PATTERN = `(?:[1-9][0-9]{0,3}\\\\s*(?:AC|AD|p\\\\.\\\\s*C(?:hr?)?\\\\.\\\\s*n\\\\.)|[1-2][0-9]{3}|[5-9][0-9])`;\n\nfunction parseYear(match) {\n if (/AC/i.test(match)) {\n match = match.replace(/BC/i, \"\");\n return -parseInt(match);\n }\n\n if (/AD/i.test(match) || /C/i.test(match)) {\n match = match.replace(/[^\\d]+/i, \"\");\n return parseInt(match);\n }\n\n let yearNumber = parseInt(match);\n\n if (yearNumber < 100) {\n if (yearNumber > 50) {\n yearNumber = yearNumber + 1900;\n } else {\n yearNumber = yearNumber + 2000;\n }\n }\n\n return yearNumber;\n}\n\nexports.parseYear = parseYear;\nconst SINGLE_TIME_UNIT_PATTERN = `(${exports.NUMBER_PATTERN})\\\\s{0,5}(${pattern_1.matchAnyPattern(exports.TIME_UNIT_DICTIONARY)})\\\\s{0,5}`;\nconst SINGLE_TIME_UNIT_REGEX = new RegExp(SINGLE_TIME_UNIT_PATTERN, \"i\");\nexports.TIME_UNITS_PATTERN = pattern_1.repeatedTimeunitPattern(\"\", SINGLE_TIME_UNIT_PATTERN);\n\nfunction parseTimeUnits(timeunitText) {\n const fragments = {};\n let remainingText = timeunitText;\n let match = SINGLE_TIME_UNIT_REGEX.exec(remainingText);\n\n while (match) {\n collectDateTimeFragment(fragments, match);\n remainingText = remainingText.substring(match[0].length);\n match = SINGLE_TIME_UNIT_REGEX.exec(remainingText);\n }\n\n return fragments;\n}\n\nexports.parseTimeUnits = parseTimeUnits;\n\nfunction collectDateTimeFragment(fragments, match) {\n const num = parseNumberPattern(match[1]);\n const unit = exports.TIME_UNIT_DICTIONARY[match[2].toLowerCase()];\n fragments[unit] = num;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.AbstractTimeExpressionParser = void 0;\n\nconst index_1 = require(\"../../index\");\n\nfunction primaryTimePattern(leftBoundary, primaryPrefix, primarySuffix, flags) {\n return new RegExp(`${leftBoundary}` + `${primaryPrefix}` + `(\\\\d{1,4})` + `(?:` + `(?:\\\\.|:|:)` + `(\\\\d{1,2})` + `(?:` + `(?::|:)` + `(\\\\d{2})` + `(?:\\\\.(\\\\d{1,6}))?` + `)?` + `)?` + `(?:\\\\s*(a\\\\.m\\\\.|p\\\\.m\\\\.|am?|pm?))?` + `${primarySuffix}`, flags);\n}\n\nfunction followingTimePatten(followingPhase, followingSuffix) {\n return new RegExp(`^(${followingPhase})` + `(\\\\d{1,4})` + `(?:` + `(?:\\\\.|\\\\:|\\\\:)` + `(\\\\d{1,2})` + `(?:` + `(?:\\\\.|\\\\:|\\\\:)` + `(\\\\d{1,2})(?:\\\\.(\\\\d{1,6}))?` + `)?` + `)?` + `(?:\\\\s*(a\\\\.m\\\\.|p\\\\.m\\\\.|am?|pm?))?` + `${followingSuffix}`, \"i\");\n}\n\nconst HOUR_GROUP = 2;\nconst MINUTE_GROUP = 3;\nconst SECOND_GROUP = 4;\nconst MILLI_SECOND_GROUP = 5;\nconst AM_PM_HOUR_GROUP = 6;\n\nclass AbstractTimeExpressionParser {\n constructor(strictMode = false) {\n this.cachedPrimaryPrefix = null;\n this.cachedPrimarySuffix = null;\n this.cachedPrimaryTimePattern = null;\n this.cachedFollowingPhase = null;\n this.cachedFollowingSuffix = null;\n this.cachedFollowingTimePatten = null;\n this.strictMode = strictMode;\n }\n\n patternFlags() {\n return \"i\";\n }\n\n primaryPatternLeftBoundary() {\n return `(^|\\\\s|T|\\\\b)`;\n }\n\n primarySuffix() {\n return `(?=\\\\W|$)`;\n }\n\n followingSuffix() {\n return `(?=\\\\W|$)`;\n }\n\n pattern(context) {\n return this.getPrimaryTimePatternThroughCache();\n }\n\n extract(context, match) {\n const startComponents = this.extractPrimaryTimeComponents(context, match);\n\n if (!startComponents) {\n match.index += match[0].length;\n return null;\n }\n\n const index = match.index + match[1].length;\n const text = match[0].substring(match[1].length);\n const result = context.createParsingResult(index, text, startComponents);\n match.index += match[0].length;\n const remainingText = context.text.substring(match.index);\n const followingPattern = this.getFollowingTimePatternThroughCache();\n const followingMatch = followingPattern.exec(remainingText);\n\n if (text.match(/^\\d{3,4}/) && followingMatch && followingMatch[0].match(/^\\s*([+-])\\s*\\d{2,4}$/)) {\n return null;\n }\n\n if (!followingMatch || followingMatch[0].match(/^\\s*([+-])\\s*\\d{3,4}$/)) {\n return this.checkAndReturnWithoutFollowingPattern(result);\n }\n\n result.end = this.extractFollowingTimeComponents(context, followingMatch, result);\n\n if (result.end) {\n result.text += followingMatch[0];\n }\n\n return this.checkAndReturnWithFollowingPattern(result);\n }\n\n extractPrimaryTimeComponents(context, match, strict = false) {\n const components = context.createParsingComponents();\n let minute = 0;\n let meridiem = null;\n let hour = parseInt(match[HOUR_GROUP]);\n\n if (hour > 100) {\n if (this.strictMode || match[MINUTE_GROUP] != null) {\n return null;\n }\n\n minute = hour % 100;\n hour = Math.floor(hour / 100);\n }\n\n if (hour > 24) {\n return null;\n }\n\n if (match[MINUTE_GROUP] != null) {\n if (match[MINUTE_GROUP].length == 1 && !match[AM_PM_HOUR_GROUP]) {\n return null;\n }\n\n minute = parseInt(match[MINUTE_GROUP]);\n }\n\n if (minute >= 60) {\n return null;\n }\n\n if (hour > 12) {\n meridiem = index_1.Meridiem.PM;\n }\n\n if (match[AM_PM_HOUR_GROUP] != null) {\n if (hour > 12) return null;\n const ampm = match[AM_PM_HOUR_GROUP][0].toLowerCase();\n\n if (ampm == \"a\") {\n meridiem = index_1.Meridiem.AM;\n\n if (hour == 12) {\n hour = 0;\n }\n }\n\n if (ampm == \"p\") {\n meridiem = index_1.Meridiem.PM;\n\n if (hour != 12) {\n hour += 12;\n }\n }\n }\n\n components.assign(\"hour\", hour);\n components.assign(\"minute\", minute);\n\n if (meridiem !== null) {\n components.assign(\"meridiem\", meridiem);\n } else {\n if (hour < 12) {\n components.imply(\"meridiem\", index_1.Meridiem.AM);\n } else {\n components.imply(\"meridiem\", index_1.Meridiem.PM);\n }\n }\n\n if (match[MILLI_SECOND_GROUP] != null) {\n const millisecond = parseInt(match[MILLI_SECOND_GROUP].substring(0, 3));\n if (millisecond >= 1000) return null;\n components.assign(\"millisecond\", millisecond);\n }\n\n if (match[SECOND_GROUP] != null) {\n const second = parseInt(match[SECOND_GROUP]);\n if (second >= 60) return null;\n components.assign(\"second\", second);\n }\n\n return components;\n }\n\n extractFollowingTimeComponents(context, match, result) {\n const components = context.createParsingComponents();\n\n if (match[MILLI_SECOND_GROUP] != null) {\n const millisecond = parseInt(match[MILLI_SECOND_GROUP].substring(0, 3));\n if (millisecond >= 1000) return null;\n components.assign(\"millisecond\", millisecond);\n }\n\n if (match[SECOND_GROUP] != null) {\n const second = parseInt(match[SECOND_GROUP]);\n if (second >= 60) return null;\n components.assign(\"second\", second);\n }\n\n let hour = parseInt(match[HOUR_GROUP]);\n let minute = 0;\n let meridiem = -1;\n\n if (match[MINUTE_GROUP] != null) {\n minute = parseInt(match[MINUTE_GROUP]);\n } else if (hour > 100) {\n minute = hour % 100;\n hour = Math.floor(hour / 100);\n }\n\n if (minute >= 60 || hour > 24) {\n return null;\n }\n\n if (hour >= 12) {\n meridiem = index_1.Meridiem.PM;\n }\n\n if (match[AM_PM_HOUR_GROUP] != null) {\n if (hour > 12) {\n return null;\n }\n\n const ampm = match[AM_PM_HOUR_GROUP][0].toLowerCase();\n\n if (ampm == \"a\") {\n meridiem = index_1.Meridiem.AM;\n\n if (hour == 12) {\n hour = 0;\n\n if (!components.isCertain(\"day\")) {\n components.imply(\"day\", components.get(\"day\") + 1);\n }\n }\n }\n\n if (ampm == \"p\") {\n meridiem = index_1.Meridiem.PM;\n if (hour != 12) hour += 12;\n }\n\n if (!result.start.isCertain(\"meridiem\")) {\n if (meridiem == index_1.Meridiem.AM) {\n result.start.imply(\"meridiem\", index_1.Meridiem.AM);\n\n if (result.start.get(\"hour\") == 12) {\n result.start.assign(\"hour\", 0);\n }\n } else {\n result.start.imply(\"meridiem\", index_1.Meridiem.PM);\n\n if (result.start.get(\"hour\") != 12) {\n result.start.assign(\"hour\", result.start.get(\"hour\") + 12);\n }\n }\n }\n }\n\n components.assign(\"hour\", hour);\n components.assign(\"minute\", minute);\n\n if (meridiem >= 0) {\n components.assign(\"meridiem\", meridiem);\n } else {\n const startAtPM = result.start.isCertain(\"meridiem\") && result.start.get(\"hour\") > 12;\n\n if (startAtPM) {\n if (result.start.get(\"hour\") - 12 > hour) {\n components.imply(\"meridiem\", index_1.Meridiem.AM);\n } else if (hour <= 12) {\n components.assign(\"hour\", hour + 12);\n components.assign(\"meridiem\", index_1.Meridiem.PM);\n }\n } else if (hour > 12) {\n components.imply(\"meridiem\", index_1.Meridiem.PM);\n } else if (hour <= 12) {\n components.imply(\"meridiem\", index_1.Meridiem.AM);\n }\n }\n\n if (components.date().getTime() < result.start.date().getTime()) {\n components.imply(\"day\", components.get(\"day\") + 1);\n }\n\n return components;\n }\n\n checkAndReturnWithoutFollowingPattern(result) {\n if (result.text.match(/^\\d$/)) {\n return null;\n }\n\n if (result.text.match(/^\\d\\d\\d+$/)) {\n return null;\n }\n\n if (result.text.match(/\\d[apAP]$/)) {\n return null;\n }\n\n const endingWithNumbers = result.text.match(/[^\\d:.](\\d[\\d.]+)$/);\n\n if (endingWithNumbers) {\n const endingNumbers = endingWithNumbers[1];\n\n if (this.strictMode) {\n return null;\n }\n\n if (endingNumbers.includes(\".\") && !endingNumbers.match(/\\d(\\.\\d{2})+$/)) {\n return null;\n }\n\n const endingNumberVal = parseInt(endingNumbers);\n\n if (endingNumberVal > 24) {\n return null;\n }\n }\n\n return result;\n }\n\n checkAndReturnWithFollowingPattern(result) {\n if (result.text.match(/^\\d+-\\d+$/)) {\n return null;\n }\n\n const endingWithNumbers = result.text.match(/[^\\d:.](\\d[\\d.]+)\\s*-\\s*(\\d[\\d.]+)$/);\n\n if (endingWithNumbers) {\n if (this.strictMode) {\n return null;\n }\n\n const startingNumbers = endingWithNumbers[1];\n const endingNumbers = endingWithNumbers[2];\n\n if (endingNumbers.includes(\".\") && !endingNumbers.match(/\\d(\\.\\d{2})+$/)) {\n return null;\n }\n\n const endingNumberVal = parseInt(endingNumbers);\n const startingNumberVal = parseInt(startingNumbers);\n\n if (endingNumberVal > 24 || startingNumberVal > 24) {\n return null;\n }\n }\n\n return result;\n }\n\n getPrimaryTimePatternThroughCache() {\n const primaryPrefix = this.primaryPrefix();\n const primarySuffix = this.primarySuffix();\n\n if (this.cachedPrimaryPrefix === primaryPrefix && this.cachedPrimarySuffix === primarySuffix) {\n return this.cachedPrimaryTimePattern;\n }\n\n this.cachedPrimaryTimePattern = primaryTimePattern(this.primaryPatternLeftBoundary(), primaryPrefix, primarySuffix, this.patternFlags());\n this.cachedPrimaryPrefix = primaryPrefix;\n this.cachedPrimarySuffix = primarySuffix;\n return this.cachedPrimaryTimePattern;\n }\n\n getFollowingTimePatternThroughCache() {\n const followingPhase = this.followingPhase();\n const followingSuffix = this.followingSuffix();\n\n if (this.cachedFollowingPhase === followingPhase && this.cachedFollowingSuffix === followingSuffix) {\n return this.cachedFollowingTimePatten;\n }\n\n this.cachedFollowingTimePatten = followingTimePatten(followingPhase, followingSuffix);\n this.cachedFollowingPhase = followingPhase;\n this.cachedFollowingSuffix = followingSuffix;\n return this.cachedFollowingTimePatten;\n }\n\n}\n\nexports.AbstractTimeExpressionParser = AbstractTimeExpressionParser;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getBackwardDaysToWeekday = exports.getDaysForwardToWeekday = exports.getDaysToWeekdayClosest = exports.getDaysToWeekday = exports.createParsingComponentsAtWeekday = void 0;\n\nconst index_1 = require(\"../../index\");\n\nconst results_1 = require(\"../../results\");\n\nconst timeunits_1 = require(\"../../utils/timeunits\");\n\nfunction createParsingComponentsAtWeekday(reference, weekday, modifier) {\n const refDate = reference.getDateWithAdjustedTimezone();\n const daysToWeekday = getDaysToWeekday(refDate, weekday, modifier);\n let components = new results_1.ParsingComponents(reference);\n components = timeunits_1.addImpliedTimeUnits(components, {\n \"day\": daysToWeekday\n });\n components.assign(\"weekday\", weekday);\n return components;\n}\n\nexports.createParsingComponentsAtWeekday = createParsingComponentsAtWeekday;\n\nfunction getDaysToWeekday(refDate, weekday, modifier) {\n const refWeekday = refDate.getDay();\n\n switch (modifier) {\n case \"this\":\n return getDaysForwardToWeekday(refDate, weekday);\n\n case \"last\":\n return getBackwardDaysToWeekday(refDate, weekday);\n\n case \"next\":\n if (refWeekday == index_1.Weekday.SUNDAY) {\n return weekday == index_1.Weekday.SUNDAY ? 7 : weekday;\n }\n\n if (refWeekday == index_1.Weekday.SATURDAY) {\n if (weekday == index_1.Weekday.SATURDAY) return 7;\n if (weekday == index_1.Weekday.SUNDAY) return 8;\n return 1 + weekday;\n }\n\n if (weekday < refWeekday && weekday != index_1.Weekday.SUNDAY) {\n return getDaysForwardToWeekday(refDate, weekday);\n } else {\n return getDaysForwardToWeekday(refDate, weekday) + 7;\n }\n\n }\n\n return getDaysToWeekdayClosest(refDate, weekday);\n}\n\nexports.getDaysToWeekday = getDaysToWeekday;\n\nfunction getDaysToWeekdayClosest(refDate, weekday) {\n const backward = getBackwardDaysToWeekday(refDate, weekday);\n const forward = getDaysForwardToWeekday(refDate, weekday);\n return forward < -backward ? forward : backward;\n}\n\nexports.getDaysToWeekdayClosest = getDaysToWeekdayClosest;\n\nfunction getDaysForwardToWeekday(refDate, weekday) {\n const refWeekday = refDate.getDay();\n let forwardCount = weekday - refWeekday;\n\n if (forwardCount < 0) {\n forwardCount += 7;\n }\n\n return forwardCount;\n}\n\nexports.getDaysForwardToWeekday = getDaysForwardToWeekday;\n\nfunction getBackwardDaysToWeekday(refDate, weekday) {\n const refWeekday = refDate.getDay();\n let backwardCount = weekday - refWeekday;\n\n if (backwardCount >= 0) {\n backwardCount -= 7;\n }\n\n return backwardCount;\n}\n\nexports.getBackwardDaysToWeekday = getBackwardDaysToWeekday;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nconst years_1 = require(\"../../calculation/years\");\n\nconst PATTERN = new RegExp(\"([^\\\\d]|^)\" + \"([0-3]{0,1}[0-9]{1})[\\\\/\\\\.\\\\-]([0-3]{0,1}[0-9]{1})\" + \"(?:[\\\\/\\\\.\\\\-]([0-9]{4}|[0-9]{2}))?\" + \"(\\\\W|$)\", \"i\");\nconst OPENING_GROUP = 1;\nconst ENDING_GROUP = 5;\nconst FIRST_NUMBERS_GROUP = 2;\nconst SECOND_NUMBERS_GROUP = 3;\nconst YEAR_GROUP = 4;\n\nclass SlashDateFormatParser {\n constructor(littleEndian) {\n this.groupNumberMonth = littleEndian ? SECOND_NUMBERS_GROUP : FIRST_NUMBERS_GROUP;\n this.groupNumberDay = littleEndian ? FIRST_NUMBERS_GROUP : SECOND_NUMBERS_GROUP;\n }\n\n pattern() {\n return PATTERN;\n }\n\n extract(context, match) {\n if (match[OPENING_GROUP].length == 0 && match.index > 0 && match.index < context.text.length) {\n const previousChar = context.text[match.index - 1];\n\n if (previousChar >= \"0\" && previousChar <= \"9\") {\n return;\n }\n }\n\n const index = match.index + match[OPENING_GROUP].length;\n const text = match[0].substr(match[OPENING_GROUP].length, match[0].length - match[OPENING_GROUP].length - match[ENDING_GROUP].length);\n\n if (text.match(/^\\d\\.\\d$/) || text.match(/^\\d\\.\\d{1,2}\\.\\d{1,2}\\s*$/)) {\n return;\n }\n\n if (!match[YEAR_GROUP] && match[0].indexOf(\"/\") < 0) {\n return;\n }\n\n const result = context.createParsingResult(index, text);\n let month = parseInt(match[this.groupNumberMonth]);\n let day = parseInt(match[this.groupNumberDay]);\n\n if (month < 1 || month > 12) {\n if (month > 12) {\n if (day >= 1 && day <= 12 && month <= 31) {\n var _ref = [month, day];\n day = _ref[0];\n month = _ref[1];\n } else {\n return null;\n }\n }\n }\n\n if (day < 1 || day > 31) {\n return null;\n }\n\n result.start.assign(\"day\", day);\n result.start.assign(\"month\", month);\n\n if (match[YEAR_GROUP]) {\n const rawYearNumber = parseInt(match[YEAR_GROUP]);\n const year = years_1.findMostLikelyADYear(rawYearNumber);\n result.start.assign(\"year\", year);\n } else {\n const year = years_1.findYearClosestToRef(context.refDate, day, month);\n result.start.imply(\"year\", year);\n }\n\n return result;\n }\n\n}\n\nexports.default = SlashDateFormatParser;","class Event {\n #MINUTES_TO_PERCENTAGE_BASE_SCALE = 100.0 / 1440.0\n\n constructor({ startTime, endTime, referenceId, paymentToken, title, description, url, dataset, style, barberToken, ...attributes }) {\n this.startTime = startTime\n this.endTime = endTime\n this.referenceId = referenceId\n this.paymentToken = paymentToken\n this.title = title\n this.description = description\n this.maxOverlaps = 1\n this.url = url\n this.barberToken = barberToken\n this.dataset = { url, referenceId, paymentToken, title, description, startTime, endTime, barberToken, ...dataset }\n this.style = style\n this.width = undefined\n this.left = undefined\n\n Object.assign(this, attributes)\n }\n\n get startTimeMoment() {\n return global.moment(this.startTime)\n }\n\n get endTimeMoment() {\n return global.moment(this.endTime)\n }\n\n get startTimeToInteger() {\n return this.startTimeMoment.valueOf()\n }\n\n get endTimeToInteger() {\n return this.endTimeMoment.valueOf()\n }\n\n get duration() {\n return (this.endTimeMoment - this.startTimeMoment) / 1000 / 60\n }\n\n get durationToPercentage() {\n return this.duration * this.#MINUTES_TO_PERCENTAGE_BASE_SCALE\n }\n\n get minutesSinceMidnight() {\n return (this.startTimeMoment.hour() * 60) + this.startTimeMoment.minute()\n }\n\n get minutesSinceMidnightToPercentage() {\n return this.minutesSinceMidnight * this.#MINUTES_TO_PERCENTAGE_BASE_SCALE\n }\n\n get top() {\n return this.minutesSinceMidnightToPercentage\n }\n\n get height() {\n return this.durationToPercentage\n }\n}\n\nexport default Event\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.MergingRefiner = exports.Filter = void 0;\n\nclass Filter {\n refine(context, results) {\n return results.filter(r => this.isValid(context, r));\n }\n\n}\n\nexports.Filter = Filter;\n\nclass MergingRefiner {\n refine(context, results) {\n if (results.length < 2) {\n return results;\n }\n\n const mergedResults = [];\n let curResult = results[0];\n let nextResult = null;\n\n for (let i = 1; i < results.length; i++) {\n nextResult = results[i];\n const textBetween = context.text.substring(curResult.index + curResult.text.length, nextResult.index);\n\n if (!this.shouldMergeResults(textBetween, curResult, nextResult, context)) {\n mergedResults.push(curResult);\n curResult = nextResult;\n } else {\n const left = curResult;\n const right = nextResult;\n const mergedResult = this.mergeResults(textBetween, left, right, context);\n context.debug(() => {\n console.log(`${this.constructor.name} merged ${left} and ${right} into ${mergedResult}`);\n });\n curResult = mergedResult;\n }\n }\n\n if (curResult != null) {\n mergedResults.push(curResult);\n }\n\n return mergedResults;\n }\n\n}\n\nexports.MergingRefiner = MergingRefiner;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.zhStringToYear = exports.zhStringToNumber = exports.WEEKDAY_OFFSET = exports.NUMBER = void 0;\nexports.NUMBER = {\n \"零\": 0,\n \"一\": 1,\n \"二\": 2,\n \"兩\": 2,\n \"三\": 3,\n \"四\": 4,\n \"五\": 5,\n \"六\": 6,\n \"七\": 7,\n \"八\": 8,\n \"九\": 9,\n \"十\": 10,\n \"廿\": 20,\n \"卅\": 30\n};\nexports.WEEKDAY_OFFSET = {\n \"天\": 0,\n \"日\": 0,\n \"一\": 1,\n \"二\": 2,\n \"三\": 3,\n \"四\": 4,\n \"五\": 5,\n \"六\": 6\n};\n\nfunction zhStringToNumber(text) {\n let number = 0;\n\n for (let i = 0; i < text.length; i++) {\n const char = text[i];\n\n if (char === \"十\") {\n number = number === 0 ? exports.NUMBER[char] : number * exports.NUMBER[char];\n } else {\n number += exports.NUMBER[char];\n }\n }\n\n return number;\n}\n\nexports.zhStringToNumber = zhStringToNumber;\n\nfunction zhStringToYear(text) {\n let string = \"\";\n\n for (let i = 0; i < text.length; i++) {\n const char = text[i];\n string = string + exports.NUMBER[char];\n }\n\n return parseInt(string);\n}\n\nexports.zhStringToYear = zhStringToYear;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.zhStringToYear = exports.zhStringToNumber = exports.WEEKDAY_OFFSET = exports.NUMBER = void 0;\nexports.NUMBER = {\n \"零\": 0,\n \"〇\": 0,\n \"一\": 1,\n \"二\": 2,\n \"两\": 2,\n \"三\": 3,\n \"四\": 4,\n \"五\": 5,\n \"六\": 6,\n \"七\": 7,\n \"八\": 8,\n \"九\": 9,\n \"十\": 10\n};\nexports.WEEKDAY_OFFSET = {\n \"天\": 0,\n \"日\": 0,\n \"一\": 1,\n \"二\": 2,\n \"三\": 3,\n \"四\": 4,\n \"五\": 5,\n \"六\": 6\n};\n\nfunction zhStringToNumber(text) {\n let number = 0;\n\n for (let i = 0; i < text.length; i++) {\n const char = text[i];\n\n if (char === \"十\") {\n number = number === 0 ? exports.NUMBER[char] : number * exports.NUMBER[char];\n } else {\n number += exports.NUMBER[char];\n }\n }\n\n return number;\n}\n\nexports.zhStringToNumber = zhStringToNumber;\n\nfunction zhStringToYear(text) {\n let string = \"\";\n\n for (let i = 0; i < text.length; i++) {\n const char = text[i];\n string = string + exports.NUMBER[char];\n }\n\n return parseInt(string);\n}\n\nexports.zhStringToYear = zhStringToYear;","import { createConsumer } from \"@rails/actioncable\"\n\nconst cable = createConsumer()\n\nexport default cable\n","class AnnouncementQueue {\n constructor() {\n this._started = false\n this._announcementCallbacks = new Map()\n }\n\n static getInstance() {\n if (!this._instance) {\n this._instance = new AnnouncementQueue()\n }\n\n return this._instance\n }\n\n announceNext() {\n this._announce({ wait: false })\n }\n\n startAnnouncing() {\n // To avoid multiple calls to the announce method\n // We will only need to ignite the announcement once\n if (this._started) return\n\n this._started = true\n this._announce({ wait: true })\n }\n\n on(eventName, { show: showCallback, hide: hideCallback }) {\n const eventCallbacks = this._announcementCallbacks.get(eventName) || []\n\n eventCallbacks.push({\n status: \"pending\",\n show: showCallback,\n hide: hideCallback\n })\n this._announcementCallbacks.set(eventName, eventCallbacks)\n }\n\n _announce(options = { wait: true }) {\n if (options.wait) {\n this._waitOnAnnounceCallbacks(5)\n }\n\n const onAnnounceCallbacks = this._announcementCallbacks.get(\"announce\") || []\n this._updateLastAnnounceCallback(onAnnounceCallbacks)\n this._runCurrentAnnounceCallback(onAnnounceCallbacks)\n }\n\n _updateLastAnnounceCallback(onAnnounceCallbacks) {\n const lastAnnounceCallback = onAnnounceCallbacks.find((callback) => {\n return callback.status === \"running\"\n })\n\n if (lastAnnounceCallback) {\n lastAnnounceCallback.status = \"done\"\n lastAnnounceCallback.hide()\n }\n }\n\n _runCurrentAnnounceCallback(onAnnounceCallbacks) {\n const currentAnnounceCallback = onAnnounceCallbacks.find((callback) => {\n return callback.status === \"pending\"\n })\n\n if (currentAnnounceCallback) {\n currentAnnounceCallback.status = \"running\"\n currentAnnounceCallback.show()\n }\n }\n\n // It will recursively check if there are any callbacks registered within a certain time frame for given attempts\n _waitOnAnnounceCallbacks(attempts) {\n const waitTime = attempts * 500\n const onAnnounceCallbacks = this._announcementCallbacks.get(\"announce\") || []\n\n // If there are at least one callback registered, we can early return to the announce method\n if (onAnnounceCallbacks.length > 0) {\n return this._announce({ wait: false })\n }\n\n // If we have reached the maximum attempts, we can early return. Nothing to be shown.\n if (waitTime <= 0) {\n return\n }\n\n // Otherwise, we will recursively check if there are any callbacks registered within a 500ms time frame\n setTimeout(() => {\n this._waitOnAnnounceCallbacks(waitTime - 500)\n }, waitTime)\n }\n}\n\nexport default AnnouncementQueue.getInstance()\nexport const AnnouncementQueueConstructor = AnnouncementQueue\n","class CalendarDataSource {\n constructor({ date, days, page = 0 }) {\n this.date = date\n this.days = days\n this.page = page\n }\n\n range() {\n const range = global.moment().range(this.rangeStart(), this.rangeEnd())\n let section = \"previous\"\n\n return Array.from(range.by(\"days\")).map(day => {\n const isCurrent = day.within(this.currentRange())\n\n if (isCurrent) section = \"current\"\n if (section === \"current\" && !isCurrent) section = \"next\"\n\n return { moment: day, section: section }\n })\n }\n\n nextWeek() {\n return this.startDate().add(7, \"day\")\n }\n\n previousWeek() {\n return this.startDate().subtract(7, \"day\")\n }\n\n startDate() {\n return global.moment(this.date).add(this.days * this.page, \"day\")\n }\n\n endDate() {\n return global.moment(this.startDate()).add(Math.max(this.days - 1, 0), \"day\")\n }\n\n rangeStart() {\n return this.startDate().subtract(this.days, \"day\")\n }\n\n rangeEnd() {\n return this.endDate().add(this.days, \"day\")\n }\n\n currentRange() {\n return global.moment.range(this.startDate(), this.endDate())\n }\n\n get dateFormat() {\n return \"YYYY-MM-DD\"\n }\n}\n\nexport default CalendarDataSource\n","// It allows easy detection of breakpoint changes based on window media queries\nclass BreakpointChange {\n\n // builder class method to create a new instance of BreakpointChange\n // with the default breakpoints from the global.helpers.breakpoints object\n static buildFromGlobal() {\n return new BreakpointChange([\n { name: \"tiny\", query: BreakpointChange.queryMatchFor(global.helpers.breakpoints.tiny) },\n { name: \"small\", query: BreakpointChange.queryMatchFor(global.helpers.breakpoints.small) },\n { name: \"medium\", query: BreakpointChange.queryMatchFor(global.helpers.breakpoints.medium) },\n { name: \"large\", query: BreakpointChange.queryMatchFor(global.helpers.breakpoints.large) },\n { name: \"huge\", query: BreakpointChange.queryMatchFor(global.helpers.breakpoints.huge) },\n ])\n }\n\n constructor(breakpoints, options = {}) {\n this.breakpoints = breakpoints\n this.listeners = {}\n this._triggerOnAddition = options.triggerOnAddition || false\n\n this.breakpoints.forEach(breakpoint => {\n const mediaQueryList = window.matchMedia(breakpoint.query)\n mediaQueryList.addEventListener(\"change\", (event) => {\n this._handleBreakpointChange(breakpoint.name, event)\n })\n })\n }\n\n onAll(callback, options = {}) {\n this.breakpoints.forEach(breakpoint => {\n this._registerListener(breakpoint.name, callback)\n })\n\n this._initialTrigger(options)\n }\n\n on(incomingBreakingNames, callback, options = {}) {\n const breakpointNames = Array.isArray(incomingBreakingNames) ? incomingBreakingNames : [incomingBreakingNames]\n breakpointNames.forEach(breakpointName => {\n this._registerListener(breakpointName, callback)\n })\n\n this._initialTrigger(options)\n }\n\n set triggerOnAddition(value) {\n this._triggerOnAddition = value\n }\n\n _initialTrigger(options) {\n if (options.triggerOnAddition || this._triggerOnAddition) {\n const currentBreakpoint = this.breakpoints.find(breakpoint => window.matchMedia(breakpoint.query).matches)\n if (currentBreakpoint) {\n this._handleBreakpointChange(currentBreakpoint.name, { matches: true })\n }\n }\n }\n\n _handleBreakpointChange(breakpointName, event) {\n if (this.listeners[breakpointName]) {\n this.listeners[breakpointName].forEach(callback => {\n callback(event.matches)\n })\n }\n }\n\n\n _registerListener(breakpointName, callback) {\n if (!this.listeners[breakpointName]) {\n this.listeners[breakpointName] = []\n }\n this.listeners[breakpointName].push(callback)\n }\n\n\n static queryMatchFor(breakpoint) {\n const min = `(min-width: ${breakpoint.start}px)`\n const max = `(max-width: ${breakpoint.end}px)`\n\n return `${min} and ${max}`\n }\n}\n\nexport default BreakpointChange\n\n","export default class IosMessageHandler {\n constructor() {\n this.pendingRequests = {}\n }\n\n // This method encapsulates the logic to send a message to the iOS app\n // by using the message as the action and the generated requestId as the key\n // to store the pending request callback so it can be handled later\n // once the iOS app responds using the same requestId\n request(message) {\n const requestId = this.generateRequestId()\n return new Promise((resolve, reject) => {\n this.pendingRequests[requestId] = { resolve, reject }\n console.log(\"Sending request to iOS app\", message)\n this.pushNotificationsHandler?.postMessage({\n action: message,\n requestId: requestId\n })\n }).finally(() => {\n delete this.pendingRequests[requestId]\n })\n }\n\n send(message, data) {\n console.log(\"Sending one-way message to iOS app\", message, data)\n\n this.pushNotificationsHandler?.postMessage({\n action: message,\n data: data\n })\n }\n\n // This method encapsulates the logic to call the registered pending request callback\n // by using the requestID as the key to find the callback\n // and forwarding the remaining arguments to the callback\n handleResponse(requestId, result, error) {\n const callback = this.pendingRequests[requestId]\n if (!callback) {\n console.error(\"Request not found\")\n return\n }\n\n if (error) {\n callback.reject(error)\n } else {\n callback.resolve(result)\n }\n\n delete this.pendingRequests[requestId]\n }\n\n isPushChannelAvailable() {\n return !!this.pushNotificationsHandler\n }\n\n // iOS injects a global object `webkit` with a property `messageHandlers`\n // and the key is the name of the message handler: 'pushNotifications'\n get pushNotificationsHandler() {\n return window?.webkit?.messageHandlers?.pushNotifications\n }\n\n // This method generates a random string to be used as the requestId\n generateRequestId() {\n return Math.random().toString(36).substring(7)\n }\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.parseTimeUnits = exports.TIME_UNITS_PATTERN = exports.parseYear = exports.YEAR_PATTERN = exports.parseNumberPattern = exports.NUMBER_PATTERN = exports.TIME_UNIT_DICTIONARY = exports.INTEGER_WORD_DICTIONARY = exports.MONTH_DICTIONARY = exports.WEEKDAY_DICTIONARY = void 0;\n\nconst pattern_1 = require(\"../../utils/pattern\");\n\nconst years_1 = require(\"../../calculation/years\");\n\nexports.WEEKDAY_DICTIONARY = {\n \"sonntag\": 0,\n \"so\": 0,\n \"montag\": 1,\n \"mo\": 1,\n \"dienstag\": 2,\n \"di\": 2,\n \"mittwoch\": 3,\n \"mi\": 3,\n \"donnerstag\": 4,\n \"do\": 4,\n \"freitag\": 5,\n \"fr\": 5,\n \"samstag\": 6,\n \"sa\": 6\n};\nexports.MONTH_DICTIONARY = {\n \"januar\": 1,\n \"jänner\": 1,\n \"janner\": 1,\n \"jan\": 1,\n \"jan.\": 1,\n \"februar\": 2,\n \"feber\": 2,\n \"feb\": 2,\n \"feb.\": 2,\n \"märz\": 3,\n \"maerz\": 3,\n \"mär\": 3,\n \"mär.\": 3,\n \"mrz\": 3,\n \"mrz.\": 3,\n \"april\": 4,\n \"apr\": 4,\n \"apr.\": 4,\n \"mai\": 5,\n \"juni\": 6,\n \"jun\": 6,\n \"jun.\": 6,\n \"juli\": 7,\n \"jul\": 7,\n \"jul.\": 7,\n \"august\": 8,\n \"aug\": 8,\n \"aug.\": 8,\n \"september\": 9,\n \"sep\": 9,\n \"sep.\": 9,\n \"sept\": 9,\n \"sept.\": 9,\n \"oktober\": 10,\n \"okt\": 10,\n \"okt.\": 10,\n \"november\": 11,\n \"nov\": 11,\n \"nov.\": 11,\n \"dezember\": 12,\n \"dez\": 12,\n \"dez.\": 12\n};\nexports.INTEGER_WORD_DICTIONARY = {\n \"eins\": 1,\n \"eine\": 1,\n \"einem\": 1,\n \"einen\": 1,\n \"einer\": 1,\n \"zwei\": 2,\n \"drei\": 3,\n \"vier\": 4,\n \"fünf\": 5,\n \"fuenf\": 5,\n \"sechs\": 6,\n \"sieben\": 7,\n \"acht\": 8,\n \"neun\": 9,\n \"zehn\": 10,\n \"elf\": 11,\n \"zwölf\": 12,\n \"zwoelf\": 12\n};\nexports.TIME_UNIT_DICTIONARY = {\n sek: \"second\",\n sekunde: \"second\",\n sekunden: \"second\",\n min: \"minute\",\n minute: \"minute\",\n minuten: \"minute\",\n h: \"hour\",\n std: \"hour\",\n stunde: \"hour\",\n stunden: \"hour\",\n tag: \"d\",\n tage: \"d\",\n tagen: \"d\",\n woche: \"week\",\n wochen: \"week\",\n monat: \"month\",\n monate: \"month\",\n monaten: \"month\",\n monats: \"month\",\n quartal: \"quarter\",\n quartals: \"quarter\",\n quartale: \"quarter\",\n quartalen: \"quarter\",\n a: \"year\",\n j: \"year\",\n jr: \"year\",\n jahr: \"year\",\n jahre: \"year\",\n jahren: \"year\",\n jahres: \"year\"\n};\nexports.NUMBER_PATTERN = `(?:${pattern_1.matchAnyPattern(exports.INTEGER_WORD_DICTIONARY)}|[0-9]+|[0-9]+\\\\.[0-9]+|half(?:\\\\s*an?)?|an?\\\\b(?:\\\\s*few)?|few|several|a?\\\\s*couple\\\\s*(?:of)?)`;\n\nfunction parseNumberPattern(match) {\n const num = match.toLowerCase();\n\n if (exports.INTEGER_WORD_DICTIONARY[num] !== undefined) {\n return exports.INTEGER_WORD_DICTIONARY[num];\n } else if (num === \"a\" || num === \"an\") {\n return 1;\n } else if (num.match(/few/)) {\n return 3;\n } else if (num.match(/half/)) {\n return 0.5;\n } else if (num.match(/couple/)) {\n return 2;\n } else if (num.match(/several/)) {\n return 7;\n }\n\n return parseFloat(num);\n}\n\nexports.parseNumberPattern = parseNumberPattern;\nexports.YEAR_PATTERN = `(?:[0-9]{1,4}(?:\\\\s*[vn]\\\\.?\\\\s*(?:C(?:hr)?|(?:u\\\\.?|d\\\\.?(?:\\\\s*g\\\\.?)?)?\\\\s*Z)\\\\.?|\\\\s*(?:u\\\\.?|d\\\\.?(?:\\\\s*g\\\\.)?)\\\\s*Z\\\\.?)?)`;\n\nfunction parseYear(match) {\n if (/v/i.test(match)) {\n return -parseInt(match.replace(/[^0-9]+/gi, \"\"));\n }\n\n if (/n/i.test(match)) {\n return parseInt(match.replace(/[^0-9]+/gi, \"\"));\n }\n\n if (/z/i.test(match)) {\n return parseInt(match.replace(/[^0-9]+/gi, \"\"));\n }\n\n const rawYearNumber = parseInt(match);\n return years_1.findMostLikelyADYear(rawYearNumber);\n}\n\nexports.parseYear = parseYear;\nconst SINGLE_TIME_UNIT_PATTERN = `(${exports.NUMBER_PATTERN})\\\\s{0,5}(${pattern_1.matchAnyPattern(exports.TIME_UNIT_DICTIONARY)})\\\\s{0,5}`;\nconst SINGLE_TIME_UNIT_REGEX = new RegExp(SINGLE_TIME_UNIT_PATTERN, \"i\");\nexports.TIME_UNITS_PATTERN = pattern_1.repeatedTimeunitPattern(\"\", SINGLE_TIME_UNIT_PATTERN);\n\nfunction parseTimeUnits(timeunitText) {\n const fragments = {};\n let remainingText = timeunitText;\n let match = SINGLE_TIME_UNIT_REGEX.exec(remainingText);\n\n while (match) {\n collectDateTimeFragment(fragments, match);\n remainingText = remainingText.substring(match[0].length);\n match = SINGLE_TIME_UNIT_REGEX.exec(remainingText);\n }\n\n return fragments;\n}\n\nexports.parseTimeUnits = parseTimeUnits;\n\nfunction collectDateTimeFragment(fragments, match) {\n const num = parseNumberPattern(match[1]);\n const unit = exports.TIME_UNIT_DICTIONARY[match[2].toLowerCase()];\n fragments[unit] = num;\n}","import Event from \"./event\"\n\n/**\n * Optimises the layout of the events provided.\n */\nclass EventArrangement {\n /**\n * @param {Object} details\n * @param {Event[]} details.events the events to optimise layout for. They are\n * provided sorted by startTime + duration.\n */\n constructor({ events }) {\n // We create an internal copy because we're going to mutate the events in\n // this list.\n this.events = events.map(event => new Event(event))\n }\n\n /**\n * @returns {Event[]} the returned events are sorted left to right if their\n * start times are the same.\n */\n arrangedEvents() {\n const eventGroups = this.calculateEventGroups()\n\n this.updateEventsPosition(eventGroups)\n\n return this.events\n }\n\n /**\n * @returns {EventGroup[]}\n */\n calculateEventGroups() {\n // To calculate the overlapping events, we have to think of how to place\n // all the events. The way we've come up with is to put the events in a\n // bunch of groups. A group contains all the events which share horizontal\n // space. An event can be in multiple groups, but its width will be the\n // minimum allowed based on all the groups it is a part of.\n // Each group is the longest time frame where a bunch of events share\n // horizontal space.\n\n /**\n * Will always be sorted by startTime\n * @type {EventGroup[]}\n */\n let groups = []\n\n this.events.forEach(event => groups = this.mergeEventIntoGroups(event, groups))\n\n return groups\n }\n\n /**\n * @param {EventGroup[]} groups\n * @returns {void}\n */\n updateEventsPosition(groups) {\n // The way we want to approach it is a simplified and non-optimal approach.\n // The optimal approach would be some form of DP where we basically try all\n // the possible combinations and select the best one. The criteria for the\n // best one would be the one which maximises the mean of the area of the\n // events.\n // We will start from top to bottom and try to adjust events in each group.\n // Now, we may have some events from earlier groups which overlap in this\n // group. In this case, we would assume the space taken by these events as\n // consumed and try to fit in the remaining events in the gaps left.\n\n // We would first calculate the max overlaps of each event. We would use this\n // to calculate the max width allowed(even though in the optimal solution\n // the max width could be greater in some cases).\n this.updateEventsOverlaps(groups)\n\n this.fillEventsInGaps(groups)\n\n this.maximiseEventWidth(groups)\n }\n\n /**\n * merge the given event into the provided list of event groups for the day.\n * @param {Event} event\n * @param {EventGroup[]} groups\n * @returns {EventGroup[]}\n */\n mergeEventIntoGroups(event, groups) {\n // We need a list because if we move parts of the time frame of an event\n // to a group, that does not mean the entire event is covered by that group.\n // e.g. if the group is for 9 AM to 9:30 AM, and the event is from 8:45 AM\n // to 9:45 AM, then there's parts of the event which are not covered by the\n // group and need to be put in other groups.\n let eventGroups = [new EventGroup({ startTime: event.startTimeToInteger, endTime: event.endTimeToInteger, events: [event] })]\n /** @type {EventGroup[]} */\n const newGroups = []\n for (const group of groups) {\n // The following if check will `continue` if there is no overlap with the group\n if (event.startTimeToInteger >= group.endTime || event.endTimeToInteger <= group.startTime) {\n newGroups.push(group)\n continue\n }\n\n // There is definitely overlap with this group\n /** @type {EventGroup[]} */\n const newEventGroups = []\n for (const eventGroup of eventGroups) {\n // If no overlap for this , then just move it to be tested against the\n // next group.\n if (eventGroup.startTime >= group.endTime || eventGroup.endTime <= group.startTime) {\n newEventGroups.push(eventGroup)\n continue\n }\n\n // First we handle the non-overlapping parts at the top.\n // Only one of these 2 is possible.\n if (group.startTime < eventGroup.startTime) {\n const groupPrev = new EventGroup({ startTime: group.startTime, endTime: eventGroup.startTime, events: [...group.events] })\n newGroups.push(groupPrev)\n }\n if (eventGroup.startTime < group.startTime) {\n const eventGroupPrev = new EventGroup({ startTime: eventGroup.startTime, endTime: group.startTime, events: [event] })\n newEventGroups.push(eventGroupPrev)\n }\n\n // Then we add the overlapping group\n const overlapStartTime = Math.max(eventGroup.startTime, group.startTime)\n const overlapEndTime = Math.min(eventGroup.endTime, group.endTime)\n const overlapGroup = new EventGroup({ startTime: overlapStartTime, endTime: overlapEndTime, events: [...group.events, event] })\n newGroups.push(overlapGroup)\n\n // Then we handle the non-overlapping parts at the bottom\n // Only one of these 2 is possible.\n if (eventGroup.endTime < group.endTime) {\n const groupNext = new EventGroup({ startTime: eventGroup.endTime, endTime: group.endTime, events: [...group.events] })\n newGroups.push(groupNext)\n }\n if (group.endTime < eventGroup.endTime) {\n const eventGroupNext = new EventGroup({ startTime: group.endTime, endTime: eventGroup.endTime, events: [event] })\n newEventGroups.push(eventGroupNext)\n }\n }\n eventGroups = newEventGroups\n }\n\n newGroups.push(...eventGroups)\n // Because of how we've written the sequence of operations, newGroups is\n // already sorted.\n return newGroups\n }\n\n /**\n * These overlaps will help us figure out the max width.\n * @param {EventGroup[]} groups\n * @returns {void}\n */\n updateEventsOverlaps(groups) {\n for (const group of groups) {\n for (const event of group.events) {\n event.maxOverlaps = Math.max(event.maxOverlaps, group.events.length)\n }\n }\n }\n\n /**\n * @param {EventGroup[]} groups\n * @returns {void}\n */\n fillEventsInGaps(groups) {\n // Now, we go through each group. Find the gaps which we can fill with the\n // events and start filling.\n // NOTE: In super rare, although theoretically possible, edge case we might\n // have a few very small gaps which could be clubbed together(only in some\n // instances) to increase the available gap for an event.\n // Dealing with them will be non-trivial so I believe we should deal with it\n // only if the need arises(There would need to be a lot of events for the\n // same time frame and it would probably make more sense to use more\n // detailed views in those cases anyways).\n for (const group of groups) {\n const gaps = this.gapsForEvents(group)\n for (const event of group.events) {\n // It is one of the events with overlaps and we've already placed it in\n // a previous group.\n if (event.left !== undefined) {\n continue\n }\n\n const gap = gaps.pop()\n const desiredWidth = (100 / event.maxOverlaps)\n\n event.left = gap.start\n if (gap.width <= desiredWidth) {\n event.width = gap.width\n } else {\n event.width = desiredWidth\n gap.start += desiredWidth\n gaps.push(gap)\n // We could potentially make do without this sorting and just find the\n // largest gap and manage an array with empty indices, but the list of\n // gaps will be too small to worry about.\n this.sortGaps(gaps)\n }\n }\n }\n }\n\n /**\n * We'll go through every event and if there is space to their right then\n * we'll expand the event width.\n * @param {EventGroup[]} groups\n * @returns {void}\n */\n maximiseEventWidth(groups) {\n // Sort events by their left value. Required because while filling in gaps\n // we might've moved the events around.\n for (const group of groups) {\n group.events.sort((a, b) => a.left - b.left)\n }\n\n // The basic idea is very simple, for each event we'll go through all the\n // groups that it is a part of and try to find the min space to their right\n // that we can find, as that is how much we can expand the event by without\n // causing an overlap. If there is some, we increase the width of the event\n // to fill it.\n for (let i = 0; i < groups.length; i++) {\n const group = groups[i]\n\n for (let j = 0; j < group.events.length; j++) {\n const event = group.events[j]\n // We've already handled it in a previous group.\n if (event.startTimeToInteger < group.startTime) {\n continue\n }\n\n const eventRight = event.left + event.width\n\n let nextGroup, nextEvent, nextLeft\n let minRight = Infinity\n let nextGroupIndex = i\n while (minRight > eventRight && nextGroupIndex < groups.length) {\n nextGroup = groups[nextGroupIndex]\n const eventIndex = nextGroup.events.indexOf(event)\n if (eventIndex === -1) {\n // The event ended on the previous group\n break\n }\n\n nextEvent = nextGroup.events[eventIndex + 1]\n nextLeft = nextEvent ? nextEvent.left : 100\n minRight = Math.min(minRight, nextLeft)\n\n nextGroupIndex += 1\n }\n\n if (minRight !== Infinity && minRight > eventRight) {\n event.width = minRight - event.left\n }\n }\n }\n }\n\n /**\n * The returned gaps are sorted by shortest gap first\n * @param {EventGroup} group\n * @returns {Gap[]}\n */\n gapsForEvents(group) {\n const gaps = []\n\n // We have sorted it such that\n // All the events with `left` set, are sorted left to right\n // Then all the events without it are sorted based on their duration, longest first\n group.events.sort((a, b) => {\n if (a.left === undefined && b.left === undefined) {\n return b.endTimeToInteger - a.endTimeToInteger\n } else {\n // This way we push the events without `left` to the end\n return (a.left === undefined ? 100 : a.left) - (b.left === undefined ? 100 : b.left)\n }\n })\n\n let prev = 0\n for (const event of group.events) {\n if (event.left === undefined) {\n break\n }\n\n if (prev < event.left) {\n gaps.push(new Gap({ start: prev, end: event.left }))\n }\n\n prev = event.left + event.width\n }\n\n if (prev < 100) {\n gaps.push(new Gap({ start: prev, end: 100 }))\n }\n\n return this.sortGaps(gaps)\n }\n\n /**\n * sorts the gaps by the shortest gap first\n * @param {Gap[]} gaps\n * @returns {Gap[]}\n */\n sortGaps(gaps) {\n return gaps.sort((a, b) => a.width - b.width)\n }\n}\n\n/** ------------------------- Helper classes start ------------------------- */\nclass EventGroup {\n /**\n * @param {Object} details\n * @param {Number} details.startTime\n * @param {Number} details.endTime\n * @param {Event[]} details.events\n */\n constructor({ startTime, endTime, events }) {\n this.startTime = startTime\n this.endTime = endTime\n this.events = events\n }\n}\n\nclass Gap {\n constructor({ start, end }) {\n this.start = start\n this.end = end\n }\n\n get width() {\n return this.end - this.start\n }\n}\n/** ------------------------- Helper classes end ------------------------- */\n\nexport default EventArrangement\n","import Event from \"./event\"\nimport EventArrangement from \"./event_arrangement\"\n\nclass DataSource {\n constructor(data) {\n this.events = this.prepareEvents(data)\n }\n\n prepareEvents(data) {\n let events = []\n\n events = this.initializeEvents(data)\n events = new EventArrangement({ events }).arrangedEvents()\n\n return events\n }\n\n initializeEvents(data) {\n // These events come grouped by barber from the backend. So, they need to\n // be sorted again after merging all events from all barbers.\n return data.map(item => new Event(item)).sort((a, b) => {\n let result = a.startTimeToInteger - b.startTimeToInteger\n // If start time is the same, then sort by duration, longest first.\n if (result === 0) {\n result = b.endTimeToInteger - a.endTimeToInteger\n }\n\n return result\n })\n }\n}\n\nexport default DataSource\n","import Event from \"./event\"\nimport EventArrangement from \"./event_arrangement\"\nimport DataSource from \"./data_source\"\nimport Renderer from \"./renderer\"\n\nexport {\n Event,\n EventArrangement,\n DataSource,\n Renderer\n}\n","/*\nStimulus Webpack Helpers 1.0.0\nCopyright © 2021 Basecamp, LLC\n */\nfunction definitionsFromContext(context) {\n return context.keys().map(key => definitionForModuleWithContextAndKey(context, key)).filter(value => value);\n}\n\nfunction definitionForModuleWithContextAndKey(context, key) {\n const identifier = identifierForContextKey(key);\n\n if (identifier) {\n return definitionForModuleAndIdentifier(context(key), identifier);\n }\n}\n\nfunction definitionForModuleAndIdentifier(module, identifier) {\n const controllerConstructor = module.default;\n\n if (typeof controllerConstructor == \"function\") {\n return {\n identifier,\n controllerConstructor\n };\n }\n}\n\nfunction identifierForContextKey(key) {\n const logicalName = (key.match(/^(?:\\.\\/)?(.+)(?:[_-]controller\\..+?)$/) || [])[1];\n\n if (logicalName) {\n return logicalName.replace(/_/g, \"-\").replace(/\\//g, \"--\");\n }\n}\n\nexport { definitionForModuleAndIdentifier, definitionForModuleWithContextAndKey, definitionsFromContext, identifierForContextKey };","//! moment.js locale configuration\n//! locale : Czech [cs]\n//! author : petrbela : https://github.com/petrbela\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var months = {\n format: 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split('_'),\n standalone: 'ledna_února_března_dubna_května_června_července_srpna_září_října_listopadu_prosince'.split('_')\n },\n monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_'),\n monthsParse = [/^led/i, /^úno/i, /^bře/i, /^dub/i, /^kvě/i, /^(čvn|červen$|června)/i, /^(čvc|červenec|července)/i, /^srp/i, /^zář/i, /^říj/i, /^lis/i, /^pro/i],\n // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.\n // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.\n monthsRegex = /^(leden|únor|březen|duben|květen|červenec|července|červen|června|srpen|září|říjen|listopad|prosinec|led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i;\n\n function plural(n) {\n return n > 1 && n < 5 && ~~(n / 10) !== 1;\n }\n\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n\n switch (key) {\n case 's':\n // a few seconds / in a few seconds / a few seconds ago\n return withoutSuffix || isFuture ? 'pár sekund' : 'pár sekundami';\n\n case 'ss':\n // 9 seconds / in 9 seconds / 9 seconds ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'sekundy' : 'sekund');\n } else {\n return result + 'sekundami';\n }\n\n case 'm':\n // a minute / in a minute / a minute ago\n return withoutSuffix ? 'minuta' : isFuture ? 'minutu' : 'minutou';\n\n case 'mm':\n // 9 minutes / in 9 minutes / 9 minutes ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'minuty' : 'minut');\n } else {\n return result + 'minutami';\n }\n\n case 'h':\n // an hour / in an hour / an hour ago\n return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';\n\n case 'hh':\n // 9 hours / in 9 hours / 9 hours ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'hodiny' : 'hodin');\n } else {\n return result + 'hodinami';\n }\n\n case 'd':\n // a day / in a day / a day ago\n return withoutSuffix || isFuture ? 'den' : 'dnem';\n\n case 'dd':\n // 9 days / in 9 days / 9 days ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'dny' : 'dní');\n } else {\n return result + 'dny';\n }\n\n case 'M':\n // a month / in a month / a month ago\n return withoutSuffix || isFuture ? 'měsíc' : 'měsícem';\n\n case 'MM':\n // 9 months / in 9 months / 9 months ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'měsíce' : 'měsíců');\n } else {\n return result + 'měsíci';\n }\n\n case 'y':\n // a year / in a year / a year ago\n return withoutSuffix || isFuture ? 'rok' : 'rokem';\n\n case 'yy':\n // 9 years / in 9 years / 9 years ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'roky' : 'let');\n } else {\n return result + 'lety';\n }\n\n }\n }\n\n var cs = moment.defineLocale('cs', {\n months: months,\n monthsShort: monthsShort,\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.\n // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.\n monthsStrictRegex: /^(leden|ledna|února|únor|březen|března|duben|dubna|květen|května|červenec|července|červen|června|srpen|srpna|září|říjen|října|listopadu|listopad|prosinec|prosince)/i,\n monthsShortStrictRegex: /^(led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'),\n weekdaysShort: 'ne_po_út_st_čt_pá_so'.split('_'),\n weekdaysMin: 'ne_po_út_st_čt_pá_so'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd D. MMMM YYYY H:mm',\n l: 'D. M. YYYY'\n },\n calendar: {\n sameDay: '[dnes v] LT',\n nextDay: '[zítra v] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v neděli v] LT';\n\n case 1:\n case 2:\n return '[v] dddd [v] LT';\n\n case 3:\n return '[ve středu v] LT';\n\n case 4:\n return '[ve čtvrtek v] LT';\n\n case 5:\n return '[v pátek v] LT';\n\n case 6:\n return '[v sobotu v] LT';\n }\n },\n lastDay: '[včera v] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[minulou neděli v] LT';\n\n case 1:\n case 2:\n return '[minulé] dddd [v] LT';\n\n case 3:\n return '[minulou středu v] LT';\n\n case 4:\n case 5:\n return '[minulý] dddd [v] LT';\n\n case 6:\n return '[minulou sobotu v] LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'za %s',\n past: 'před %s',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return cs;\n});","//! moment.js locale configuration\n//! locale : German [de]\n//! author : lluchs : https://github.com/lluchs\n//! author: Menelion Elensúle: https://github.com/Oire\n//! author : Mikolaj Dadela : https://github.com/mik01aj\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n w: ['eine Woche', 'einer Woche'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren']\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n var de = moment.defineLocale('de', {\n months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),\n monthsShort: 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n monthsParseExact: true,\n weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),\n weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]'\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime,\n mm: '%d Minuten',\n h: processRelativeTime,\n hh: '%d Stunden',\n d: processRelativeTime,\n dd: processRelativeTime,\n w: processRelativeTime,\n ww: '%d Wochen',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return de;\n});","//! moment.js locale configuration\n//! locale : Greek [el]\n//! author : Aggelos Karalias : https://github.com/mehiel\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n function isFunction(input) {\n return typeof Function !== 'undefined' && input instanceof Function || Object.prototype.toString.call(input) === '[object Function]';\n }\n\n var el = moment.defineLocale('el', {\n monthsNominativeEl: 'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split('_'),\n monthsGenitiveEl: 'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.split('_'),\n months: function (momentToFormat, format) {\n if (!momentToFormat) {\n return this._monthsNominativeEl;\n } else if (typeof format === 'string' && /D/.test(format.substring(0, format.indexOf('MMMM')))) {\n // if there is a day number before 'MMMM'\n return this._monthsGenitiveEl[momentToFormat.month()];\n } else {\n return this._monthsNominativeEl[momentToFormat.month()];\n }\n },\n monthsShort: 'Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ'.split('_'),\n weekdays: 'Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο'.split('_'),\n weekdaysShort: 'Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ'.split('_'),\n weekdaysMin: 'Κυ_Δε_Τρ_Τε_Πε_Πα_Σα'.split('_'),\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'μμ' : 'ΜΜ';\n } else {\n return isLower ? 'πμ' : 'ΠΜ';\n }\n },\n isPM: function (input) {\n return (input + '').toLowerCase()[0] === 'μ';\n },\n meridiemParse: /[ΠΜ]\\.?Μ?\\.?/i,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A'\n },\n calendarEl: {\n sameDay: '[Σήμερα {}] LT',\n nextDay: '[Αύριο {}] LT',\n nextWeek: 'dddd [{}] LT',\n lastDay: '[Χθες {}] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 6:\n return '[το προηγούμενο] dddd [{}] LT';\n\n default:\n return '[την προηγούμενη] dddd [{}] LT';\n }\n },\n sameElse: 'L'\n },\n calendar: function (key, mom) {\n var output = this._calendarEl[key],\n hours = mom && mom.hours();\n\n if (isFunction(output)) {\n output = output.apply(mom);\n }\n\n return output.replace('{}', hours % 12 === 1 ? 'στη' : 'στις');\n },\n relativeTime: {\n future: 'σε %s',\n past: '%s πριν',\n s: 'λίγα δευτερόλεπτα',\n ss: '%d δευτερόλεπτα',\n m: 'ένα λεπτό',\n mm: '%d λεπτά',\n h: 'μία ώρα',\n hh: '%d ώρες',\n d: 'μία μέρα',\n dd: '%d μέρες',\n M: 'ένας μήνας',\n MM: '%d μήνες',\n y: 'ένας χρόνος',\n yy: '%d χρόνια'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}η/,\n ordinal: '%dη',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4st is the first week of the year.\n\n }\n });\n return el;\n});","//! moment.js locale configuration\n//! locale : English (United Kingdom) [en-gb]\n//! author : Chris Gedrim : https://github.com/chrisgedrim\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var enGb = moment.defineLocale('en-gb', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output = ~~(number % 100 / 10) === 1 ? 'th' : b === 1 ? 'st' : b === 2 ? 'nd' : b === 3 ? 'rd' : 'th';\n return number + output;\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return enGb;\n});","//! moment.js locale configuration\n//! locale : Spanish [es]\n//! author : Julio Napurí : https://github.com/julionc\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_'),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [/^ene/i, /^feb/i, /^mar/i, /^abr/i, /^may/i, /^jun/i, /^jul/i, /^ago/i, /^sep/i, /^oct/i, /^nov/i, /^dic/i],\n monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n var es = moment.defineLocale('es', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm'\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return '[el] dddd [pasado a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n },\n invalidDate: 'Fecha inválida'\n });\n return es;\n});","//! moment.js locale configuration\n//! locale : French [fr]\n//! author : John Fischer : https://github.com/jfroffice\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var monthsStrictRegex = /^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,\n monthsShortStrictRegex = /(janv\\.?|févr\\.?|mars|avr\\.?|mai|juin|juil\\.?|août|sept\\.?|oct\\.?|nov\\.?|déc\\.?)/i,\n monthsRegex = /(janv\\.?|févr\\.?|mars|avr\\.?|mai|juin|juil\\.?|août|sept\\.?|oct\\.?|nov\\.?|déc\\.?|janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,\n monthsParse = [/^janv/i, /^févr/i, /^mars/i, /^avr/i, /^mai/i, /^juin/i, /^juil/i, /^août/i, /^sept/i, /^oct/i, /^nov/i, /^déc/i];\n var fr = moment.defineLocale('fr', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),\n monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: monthsStrictRegex,\n monthsShortStrictRegex: monthsShortStrictRegex,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Aujourd’hui à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n w: 'une semaine',\n ww: '%d semaines',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|)/,\n ordinal: function (number, period) {\n switch (period) {\n // TODO: Return 'e' when day of month > 1. Move this case inside\n // block for masculine words below.\n // See https://github.com/moment/moment/issues/3375\n case 'D':\n return number + (number === 1 ? 'er' : '');\n // Words with masculine grammatical gender: mois, trimestre, jour\n\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n // Words with feminine grammatical gender: semaine\n\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return fr;\n});","//! moment.js locale configuration\n//! locale : Italian [it]\n//! author : Lorenzo : https://github.com/aliem\n//! author: Mattia Larentis: https://github.com/nostalgiaz\n//! author: Marco : https://github.com/Manfre98\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var it = moment.defineLocale('it', {\n months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split('_'),\n monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split('_'),\n weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: function () {\n return '[Oggi a' + (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") + ']LT';\n },\n nextDay: function () {\n return '[Domani a' + (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") + ']LT';\n },\n nextWeek: function () {\n return 'dddd [a' + (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") + ']LT';\n },\n lastDay: function () {\n return '[Ieri a' + (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") + ']LT';\n },\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[La scorsa] dddd [a' + (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") + ']LT';\n\n default:\n return '[Lo scorso] dddd [a' + (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") + ']LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'tra %s',\n past: '%s fa',\n s: 'alcuni secondi',\n ss: '%d secondi',\n m: 'un minuto',\n mm: '%d minuti',\n h: \"un'ora\",\n hh: '%d ore',\n d: 'un giorno',\n dd: '%d giorni',\n w: 'una settimana',\n ww: '%d settimane',\n M: 'un mese',\n MM: '%d mesi',\n y: 'un anno',\n yy: '%d anni'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return it;\n});","//! moment.js locale configuration\n//! locale : Dutch [nl]\n//! author : Joris Röling : https://github.com/jorisroling\n//! author : Jacob Middag : https://github.com/middagj\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),\n monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n monthsParse = [/^jan/i, /^feb/i, /^maart|mrt.?$/i, /^apr/i, /^mei$/i, /^jun[i.]?$/i, /^jul[i.]?$/i, /^aug/i, /^sep/i, /^okt/i, /^nov/i, /^dec/i],\n monthsRegex = /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n var nl = moment.defineLocale('nl', {\n months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split('_'),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,\n monthsShortStrictRegex: /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),\n weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),\n weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[vandaag om] LT',\n nextDay: '[morgen om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[gisteren om] LT',\n lastWeek: '[afgelopen] dddd [om] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'over %s',\n past: '%s geleden',\n s: 'een paar seconden',\n ss: '%d seconden',\n m: 'één minuut',\n mm: '%d minuten',\n h: 'één uur',\n hh: '%d uur',\n d: 'één dag',\n dd: '%d dagen',\n w: 'één week',\n ww: '%d weken',\n M: 'één maand',\n MM: '%d maanden',\n y: 'één jaar',\n yy: '%d jaar'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return number + (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de');\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return nl;\n});","//! moment.js locale configuration\n//! locale : Polish [pl]\n//! author : Rafal Hirsz : https://github.com/evoL\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var monthsNominative = 'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split('_'),\n monthsSubjective = 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split('_'),\n monthsParse = [/^sty/i, /^lut/i, /^mar/i, /^kwi/i, /^maj/i, /^cze/i, /^lip/i, /^sie/i, /^wrz/i, /^paź/i, /^lis/i, /^gru/i];\n\n function plural(n) {\n return n % 10 < 5 && n % 10 > 1 && ~~(n / 10) % 10 !== 1;\n }\n\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n\n switch (key) {\n case 'ss':\n return result + (plural(number) ? 'sekundy' : 'sekund');\n\n case 'm':\n return withoutSuffix ? 'minuta' : 'minutę';\n\n case 'mm':\n return result + (plural(number) ? 'minuty' : 'minut');\n\n case 'h':\n return withoutSuffix ? 'godzina' : 'godzinę';\n\n case 'hh':\n return result + (plural(number) ? 'godziny' : 'godzin');\n\n case 'ww':\n return result + (plural(number) ? 'tygodnie' : 'tygodni');\n\n case 'MM':\n return result + (plural(number) ? 'miesiące' : 'miesięcy');\n\n case 'yy':\n return result + (plural(number) ? 'lata' : 'lat');\n }\n }\n\n var pl = moment.defineLocale('pl', {\n months: function (momentToFormat, format) {\n if (!momentToFormat) {\n return monthsNominative;\n } else if (/D MMMM/.test(format)) {\n return monthsSubjective[momentToFormat.month()];\n } else {\n return monthsNominative[momentToFormat.month()];\n }\n },\n monthsShort: 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'),\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split('_'),\n weekdaysShort: 'ndz_pon_wt_śr_czw_pt_sob'.split('_'),\n weekdaysMin: 'Nd_Pn_Wt_Śr_Cz_Pt_So'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Dziś o] LT',\n nextDay: '[Jutro o] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[W niedzielę o] LT';\n\n case 2:\n return '[We wtorek o] LT';\n\n case 3:\n return '[W środę o] LT';\n\n case 6:\n return '[W sobotę o] LT';\n\n default:\n return '[W] dddd [o] LT';\n }\n },\n lastDay: '[Wczoraj o] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[W zeszłą niedzielę o] LT';\n\n case 3:\n return '[W zeszłą środę o] LT';\n\n case 6:\n return '[W zeszłą sobotę o] LT';\n\n default:\n return '[W zeszły] dddd [o] LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'za %s',\n past: '%s temu',\n s: 'kilka sekund',\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: '1 dzień',\n dd: '%d dni',\n w: 'tydzień',\n ww: translate,\n M: 'miesiąc',\n MM: translate,\n y: 'rok',\n yy: translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return pl;\n});","//! moment.js locale configuration\n//! locale : Portuguese [pt]\n//! author : Jefferson : https://github.com/jalex79\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var pt = moment.defineLocale('pt', {\n months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split('_'),\n monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),\n weekdays: 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split('_'),\n weekdaysShort: 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),\n weekdaysMin: 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY HH:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Hoje às] LT',\n nextDay: '[Amanhã às] LT',\n nextWeek: 'dddd [às] LT',\n lastDay: '[Ontem às] LT',\n lastWeek: function () {\n return this.day() === 0 || this.day() === 6 ? '[Último] dddd [às] LT' // Saturday + Sunday\n : '[Última] dddd [às] LT'; // Monday - Friday\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'em %s',\n past: 'há %s',\n s: 'segundos',\n ss: '%d segundos',\n m: 'um minuto',\n mm: '%d minutos',\n h: 'uma hora',\n hh: '%d horas',\n d: 'um dia',\n dd: '%d dias',\n w: 'uma semana',\n ww: '%d semanas',\n M: 'um mês',\n MM: '%d meses',\n y: 'um ano',\n yy: '%d anos'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return pt;\n});","//! moment.js locale configuration\n//! locale : Turkish [tr]\n//! authors : Erhan Gundogan : https://github.com/erhangundogan,\n//! Burak Yiğit Kaya: https://github.com/BYK\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var suffixes = {\n 1: \"'inci\",\n 5: \"'inci\",\n 8: \"'inci\",\n 70: \"'inci\",\n 80: \"'inci\",\n 2: \"'nci\",\n 7: \"'nci\",\n 20: \"'nci\",\n 50: \"'nci\",\n 3: \"'üncü\",\n 4: \"'üncü\",\n 100: \"'üncü\",\n 6: \"'ncı\",\n 9: \"'uncu\",\n 10: \"'uncu\",\n 30: \"'uncu\",\n 60: \"'ıncı\",\n 90: \"'ıncı\"\n };\n var tr = moment.defineLocale('tr', {\n months: 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split('_'),\n monthsShort: 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'),\n weekdays: 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split('_'),\n weekdaysShort: 'Paz_Pzt_Sal_Çar_Per_Cum_Cmt'.split('_'),\n weekdaysMin: 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'),\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'öö' : 'ÖÖ';\n } else {\n return isLower ? 'ös' : 'ÖS';\n }\n },\n meridiemParse: /öö|ÖÖ|ös|ÖS/,\n isPM: function (input) {\n return input === 'ös' || input === 'ÖS';\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[bugün saat] LT',\n nextDay: '[yarın saat] LT',\n nextWeek: '[gelecek] dddd [saat] LT',\n lastDay: '[dün] LT',\n lastWeek: '[geçen] dddd [saat] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s sonra',\n past: '%s önce',\n s: 'birkaç saniye',\n ss: '%d saniye',\n m: 'bir dakika',\n mm: '%d dakika',\n h: 'bir saat',\n hh: '%d saat',\n d: 'bir gün',\n dd: '%d gün',\n w: 'bir hafta',\n ww: '%d hafta',\n M: 'bir ay',\n MM: '%d ay',\n y: 'bir yıl',\n yy: '%d yıl'\n },\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'Do':\n case 'DD':\n return number;\n\n default:\n if (number === 0) {\n // special case for zero\n return number + \"'ıncı\";\n }\n\n var a = number % 10,\n b = number % 100 - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n }\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n\n }\n });\n return tr;\n});","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nconst TIMEZONE_OFFSET_PATTERN = new RegExp(\"^\\\\s*(?:\\\\(?(?:GMT|UTC)\\\\s?)?([+-])(\\\\d{1,2})(?::?(\\\\d{2}))?\\\\)?\", \"i\");\nconst TIMEZONE_OFFSET_SIGN_GROUP = 1;\nconst TIMEZONE_OFFSET_HOUR_OFFSET_GROUP = 2;\nconst TIMEZONE_OFFSET_MINUTE_OFFSET_GROUP = 3;\n\nclass ExtractTimezoneOffsetRefiner {\n refine(context, results) {\n results.forEach(function (result) {\n if (result.start.isCertain(\"timezoneOffset\")) {\n return;\n }\n\n const suffix = context.text.substring(result.index + result.text.length);\n const match = TIMEZONE_OFFSET_PATTERN.exec(suffix);\n\n if (!match) {\n return;\n }\n\n context.debug(() => {\n console.log(`Extracting timezone: '${match[0]}' into : ${result}`);\n });\n const hourOffset = parseInt(match[TIMEZONE_OFFSET_HOUR_OFFSET_GROUP]);\n const minuteOffset = parseInt(match[TIMEZONE_OFFSET_MINUTE_OFFSET_GROUP] || \"0\");\n let timezoneOffset = hourOffset * 60 + minuteOffset;\n\n if (timezoneOffset > 14 * 60) {\n return;\n }\n\n if (match[TIMEZONE_OFFSET_SIGN_GROUP] === \"-\") {\n timezoneOffset = -timezoneOffset;\n }\n\n if (result.end != null) {\n result.end.assign(\"timezoneOffset\", timezoneOffset);\n }\n\n result.start.assign(\"timezoneOffset\", timezoneOffset);\n result.text += match[0];\n });\n return results;\n }\n\n}\n\nexports.default = ExtractTimezoneOffsetRefiner;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.parseYear = exports.YEAR_PATTERN = exports.MONTH_DICTIONARY = exports.WEEKDAY_DICTIONARY = void 0;\nexports.WEEKDAY_DICTIONARY = {\n \"domingo\": 0,\n \"dom\": 0,\n \"segunda\": 1,\n \"segunda-feira\": 1,\n \"seg\": 1,\n \"terça\": 2,\n \"terça-feira\": 2,\n \"ter\": 2,\n \"quarta\": 3,\n \"quarta-feira\": 3,\n \"qua\": 3,\n \"quinta\": 4,\n \"quinta-feira\": 4,\n \"qui\": 4,\n \"sexta\": 5,\n \"sexta-feira\": 5,\n \"sex\": 5,\n \"sábado\": 6,\n \"sabado\": 6,\n \"sab\": 6\n};\nexports.MONTH_DICTIONARY = {\n \"janeiro\": 1,\n \"jan\": 1,\n \"jan.\": 1,\n \"fevereiro\": 2,\n \"fev\": 2,\n \"fev.\": 2,\n \"março\": 3,\n \"mar\": 3,\n \"mar.\": 3,\n \"abril\": 4,\n \"abr\": 4,\n \"abr.\": 4,\n \"maio\": 5,\n \"mai\": 5,\n \"mai.\": 5,\n \"junho\": 6,\n \"jun\": 6,\n \"jun.\": 6,\n \"julho\": 7,\n \"jul\": 7,\n \"jul.\": 7,\n \"agosto\": 8,\n \"ago\": 8,\n \"ago.\": 8,\n \"setembro\": 9,\n \"set\": 9,\n \"set.\": 9,\n \"outubro\": 10,\n \"out\": 10,\n \"out.\": 10,\n \"novembro\": 11,\n \"nov\": 11,\n \"nov.\": 11,\n \"dezembro\": 12,\n \"dez\": 12,\n \"dez.\": 12\n};\nexports.YEAR_PATTERN = \"[0-9]{1,4}(?![^\\\\s]\\\\d)(?:\\\\s*[a|d]\\\\.?\\\\s*c\\\\.?|\\\\s*a\\\\.?\\\\s*d\\\\.?)?\";\n\nfunction parseYear(match) {\n if (match.match(/^[0-9]{1,4}$/)) {\n let yearNumber = parseInt(match);\n\n if (yearNumber < 100) {\n if (yearNumber > 50) {\n yearNumber = yearNumber + 1900;\n } else {\n yearNumber = yearNumber + 2000;\n }\n }\n\n return yearNumber;\n }\n\n if (match.match(/a\\.?\\s*c\\.?/i)) {\n match = match.replace(/a\\.?\\s*c\\.?/i, \"\");\n return -parseInt(match);\n }\n\n return parseInt(match);\n}\n\nexports.parseYear = parseYear;","import DataSource from \"./data_source\"\n\nclass Renderer {\n constructor(data, options = {}) {\n this.eventClass = options.eventClass || \"event\"\n this.dataSource = new DataSource(data)\n }\n\n render(callback) {\n return this.dataSource.events.map(event => {\n const element = this.renderEvent(event)\n\n return callback ? callback(element, event) : element\n })\n }\n\n renderEvent(event) {\n const element = document.createElement(\"a\")\n\n element.classList.add(this.eventClass)\n event?.style?.classes?.forEach(variant => element.classList.add(variant))\n\n element.setAttribute(\"href\", event.url)\n\n // We have to manually assign each dataset key on the element because it's a read only property.\n Object.keys(event.dataset).forEach(key => element.dataset[key] = event.dataset[key])\n\n element.style.width = `${event.width}%`\n element.style.height = `${event.height}%`\n element.style.top = `${event.top}%`\n element.style.left = `${event.left}%`\n\n if (event.title) {\n const titleElement = document.createElement(\"span\")\n titleElement.classList.add(`${this.eventClass}-title`)\n titleElement.innerHTML = event.title\n\n element.appendChild(titleElement)\n }\n\n if (event.description) {\n const descriptionElement = document.createElement(\"span\")\n descriptionElement.classList.add(`${this.eventClass}-description`)\n descriptionElement.innerText = event.description\n\n element.appendChild(descriptionElement)\n }\n\n return element\n }\n}\n\nexport default Renderer\n","/*\n * anime.js v3.2.1\n * (c) 2020 Julian Garnier\n * Released under the MIT license\n * animejs.com\n */\n// Defaults\nvar defaultInstanceSettings = {\n update: null,\n begin: null,\n loopBegin: null,\n changeBegin: null,\n change: null,\n changeComplete: null,\n loopComplete: null,\n complete: null,\n loop: 1,\n direction: 'normal',\n autoplay: true,\n timelineOffset: 0\n};\nvar defaultTweenSettings = {\n duration: 1000,\n delay: 0,\n endDelay: 0,\n easing: 'easeOutElastic(1, .5)',\n round: 0\n};\nvar validTransforms = ['translateX', 'translateY', 'translateZ', 'rotate', 'rotateX', 'rotateY', 'rotateZ', 'scale', 'scaleX', 'scaleY', 'scaleZ', 'skew', 'skewX', 'skewY', 'perspective', 'matrix', 'matrix3d']; // Caching\n\nvar cache = {\n CSS: {},\n springs: {}\n}; // Utils\n\nfunction minMax(val, min, max) {\n return Math.min(Math.max(val, min), max);\n}\n\nfunction stringContains(str, text) {\n return str.indexOf(text) > -1;\n}\n\nfunction applyArguments(func, args) {\n return func.apply(null, args);\n}\n\nvar is = {\n arr: function (a) {\n return Array.isArray(a);\n },\n obj: function (a) {\n return stringContains(Object.prototype.toString.call(a), 'Object');\n },\n pth: function (a) {\n return is.obj(a) && a.hasOwnProperty('totalLength');\n },\n svg: function (a) {\n return a instanceof SVGElement;\n },\n inp: function (a) {\n return a instanceof HTMLInputElement;\n },\n dom: function (a) {\n return a.nodeType || is.svg(a);\n },\n str: function (a) {\n return typeof a === 'string';\n },\n fnc: function (a) {\n return typeof a === 'function';\n },\n und: function (a) {\n return typeof a === 'undefined';\n },\n nil: function (a) {\n return is.und(a) || a === null;\n },\n hex: function (a) {\n return /(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(a);\n },\n rgb: function (a) {\n return /^rgb/.test(a);\n },\n hsl: function (a) {\n return /^hsl/.test(a);\n },\n col: function (a) {\n return is.hex(a) || is.rgb(a) || is.hsl(a);\n },\n key: function (a) {\n return !defaultInstanceSettings.hasOwnProperty(a) && !defaultTweenSettings.hasOwnProperty(a) && a !== 'targets' && a !== 'keyframes';\n }\n}; // Easings\n\nfunction parseEasingParameters(string) {\n var match = /\\(([^)]+)\\)/.exec(string);\n return match ? match[1].split(',').map(function (p) {\n return parseFloat(p);\n }) : [];\n} // Spring solver inspired by Webkit Copyright © 2016 Apple Inc. All rights reserved. https://webkit.org/demos/spring/spring.js\n\n\nfunction spring(string, duration) {\n var params = parseEasingParameters(string);\n var mass = minMax(is.und(params[0]) ? 1 : params[0], .1, 100);\n var stiffness = minMax(is.und(params[1]) ? 100 : params[1], .1, 100);\n var damping = minMax(is.und(params[2]) ? 10 : params[2], .1, 100);\n var velocity = minMax(is.und(params[3]) ? 0 : params[3], .1, 100);\n var w0 = Math.sqrt(stiffness / mass);\n var zeta = damping / (2 * Math.sqrt(stiffness * mass));\n var wd = zeta < 1 ? w0 * Math.sqrt(1 - zeta * zeta) : 0;\n var a = 1;\n var b = zeta < 1 ? (zeta * w0 + -velocity) / wd : -velocity + w0;\n\n function solver(t) {\n var progress = duration ? duration * t / 1000 : t;\n\n if (zeta < 1) {\n progress = Math.exp(-progress * zeta * w0) * (a * Math.cos(wd * progress) + b * Math.sin(wd * progress));\n } else {\n progress = (a + b * progress) * Math.exp(-progress * w0);\n }\n\n if (t === 0 || t === 1) {\n return t;\n }\n\n return 1 - progress;\n }\n\n function getDuration() {\n var cached = cache.springs[string];\n\n if (cached) {\n return cached;\n }\n\n var frame = 1 / 6;\n var elapsed = 0;\n var rest = 0;\n\n while (true) {\n elapsed += frame;\n\n if (solver(elapsed) === 1) {\n rest++;\n\n if (rest >= 16) {\n break;\n }\n } else {\n rest = 0;\n }\n }\n\n var duration = elapsed * frame * 1000;\n cache.springs[string] = duration;\n return duration;\n }\n\n return duration ? solver : getDuration;\n} // Basic steps easing implementation https://developer.mozilla.org/fr/docs/Web/CSS/transition-timing-function\n\n\nfunction steps(steps) {\n if (steps === void 0) steps = 10;\n return function (t) {\n return Math.ceil(minMax(t, 0.000001, 1) * steps) * (1 / steps);\n };\n} // BezierEasing https://github.com/gre/bezier-easing\n\n\nvar bezier = function () {\n var kSplineTableSize = 11;\n var kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);\n\n function A(aA1, aA2) {\n return 1.0 - 3.0 * aA2 + 3.0 * aA1;\n }\n\n function B(aA1, aA2) {\n return 3.0 * aA2 - 6.0 * aA1;\n }\n\n function C(aA1) {\n return 3.0 * aA1;\n }\n\n function calcBezier(aT, aA1, aA2) {\n return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT;\n }\n\n function getSlope(aT, aA1, aA2) {\n return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1);\n }\n\n function binarySubdivide(aX, aA, aB, mX1, mX2) {\n var currentX,\n currentT,\n i = 0;\n\n do {\n currentT = aA + (aB - aA) / 2.0;\n currentX = calcBezier(currentT, mX1, mX2) - aX;\n\n if (currentX > 0.0) {\n aB = currentT;\n } else {\n aA = currentT;\n }\n } while (Math.abs(currentX) > 0.0000001 && ++i < 10);\n\n return currentT;\n }\n\n function newtonRaphsonIterate(aX, aGuessT, mX1, mX2) {\n for (var i = 0; i < 4; ++i) {\n var currentSlope = getSlope(aGuessT, mX1, mX2);\n\n if (currentSlope === 0.0) {\n return aGuessT;\n }\n\n var currentX = calcBezier(aGuessT, mX1, mX2) - aX;\n aGuessT -= currentX / currentSlope;\n }\n\n return aGuessT;\n }\n\n function bezier(mX1, mY1, mX2, mY2) {\n if (!(0 <= mX1 && mX1 <= 1 && 0 <= mX2 && mX2 <= 1)) {\n return;\n }\n\n var sampleValues = new Float32Array(kSplineTableSize);\n\n if (mX1 !== mY1 || mX2 !== mY2) {\n for (var i = 0; i < kSplineTableSize; ++i) {\n sampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);\n }\n }\n\n function getTForX(aX) {\n var intervalStart = 0;\n var currentSample = 1;\n var lastSample = kSplineTableSize - 1;\n\n for (; currentSample !== lastSample && sampleValues[currentSample] <= aX; ++currentSample) {\n intervalStart += kSampleStepSize;\n }\n\n --currentSample;\n var dist = (aX - sampleValues[currentSample]) / (sampleValues[currentSample + 1] - sampleValues[currentSample]);\n var guessForT = intervalStart + dist * kSampleStepSize;\n var initialSlope = getSlope(guessForT, mX1, mX2);\n\n if (initialSlope >= 0.001) {\n return newtonRaphsonIterate(aX, guessForT, mX1, mX2);\n } else if (initialSlope === 0.0) {\n return guessForT;\n } else {\n return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);\n }\n }\n\n return function (x) {\n if (mX1 === mY1 && mX2 === mY2) {\n return x;\n }\n\n if (x === 0 || x === 1) {\n return x;\n }\n\n return calcBezier(getTForX(x), mY1, mY2);\n };\n }\n\n return bezier;\n}();\n\nvar penner = function () {\n // Based on jQuery UI's implemenation of easing equations from Robert Penner (http://www.robertpenner.com/easing)\n var eases = {\n linear: function () {\n return function (t) {\n return t;\n };\n }\n };\n var functionEasings = {\n Sine: function () {\n return function (t) {\n return 1 - Math.cos(t * Math.PI / 2);\n };\n },\n Circ: function () {\n return function (t) {\n return 1 - Math.sqrt(1 - t * t);\n };\n },\n Back: function () {\n return function (t) {\n return t * t * (3 * t - 2);\n };\n },\n Bounce: function () {\n return function (t) {\n var pow2,\n b = 4;\n\n while (t < ((pow2 = Math.pow(2, --b)) - 1) / 11) {}\n\n return 1 / Math.pow(4, 3 - b) - 7.5625 * Math.pow((pow2 * 3 - 2) / 22 - t, 2);\n };\n },\n Elastic: function (amplitude, period) {\n if (amplitude === void 0) amplitude = 1;\n if (period === void 0) period = .5;\n var a = minMax(amplitude, 1, 10);\n var p = minMax(period, .1, 2);\n return function (t) {\n return t === 0 || t === 1 ? t : -a * Math.pow(2, 10 * (t - 1)) * Math.sin((t - 1 - p / (Math.PI * 2) * Math.asin(1 / a)) * (Math.PI * 2) / p);\n };\n }\n };\n var baseEasings = ['Quad', 'Cubic', 'Quart', 'Quint', 'Expo'];\n baseEasings.forEach(function (name, i) {\n functionEasings[name] = function () {\n return function (t) {\n return Math.pow(t, i + 2);\n };\n };\n });\n Object.keys(functionEasings).forEach(function (name) {\n var easeIn = functionEasings[name];\n eases['easeIn' + name] = easeIn;\n\n eases['easeOut' + name] = function (a, b) {\n return function (t) {\n return 1 - easeIn(a, b)(1 - t);\n };\n };\n\n eases['easeInOut' + name] = function (a, b) {\n return function (t) {\n return t < 0.5 ? easeIn(a, b)(t * 2) / 2 : 1 - easeIn(a, b)(t * -2 + 2) / 2;\n };\n };\n\n eases['easeOutIn' + name] = function (a, b) {\n return function (t) {\n return t < 0.5 ? (1 - easeIn(a, b)(1 - t * 2)) / 2 : (easeIn(a, b)(t * 2 - 1) + 1) / 2;\n };\n };\n });\n return eases;\n}();\n\nfunction parseEasings(easing, duration) {\n if (is.fnc(easing)) {\n return easing;\n }\n\n var name = easing.split('(')[0];\n var ease = penner[name];\n var args = parseEasingParameters(easing);\n\n switch (name) {\n case 'spring':\n return spring(easing, duration);\n\n case 'cubicBezier':\n return applyArguments(bezier, args);\n\n case 'steps':\n return applyArguments(steps, args);\n\n default:\n return applyArguments(ease, args);\n }\n} // Strings\n\n\nfunction selectString(str) {\n try {\n var nodes = document.querySelectorAll(str);\n return nodes;\n } catch (e) {\n return;\n }\n} // Arrays\n\n\nfunction filterArray(arr, callback) {\n var len = arr.length;\n var thisArg = arguments.length >= 2 ? arguments[1] : void 0;\n var result = [];\n\n for (var i = 0; i < len; i++) {\n if (i in arr) {\n var val = arr[i];\n\n if (callback.call(thisArg, val, i, arr)) {\n result.push(val);\n }\n }\n }\n\n return result;\n}\n\nfunction flattenArray(arr) {\n return arr.reduce(function (a, b) {\n return a.concat(is.arr(b) ? flattenArray(b) : b);\n }, []);\n}\n\nfunction toArray(o) {\n if (is.arr(o)) {\n return o;\n }\n\n if (is.str(o)) {\n o = selectString(o) || o;\n }\n\n if (o instanceof NodeList || o instanceof HTMLCollection) {\n return [].slice.call(o);\n }\n\n return [o];\n}\n\nfunction arrayContains(arr, val) {\n return arr.some(function (a) {\n return a === val;\n });\n} // Objects\n\n\nfunction cloneObject(o) {\n var clone = {};\n\n for (var p in o) {\n clone[p] = o[p];\n }\n\n return clone;\n}\n\nfunction replaceObjectProps(o1, o2) {\n var o = cloneObject(o1);\n\n for (var p in o1) {\n o[p] = o2.hasOwnProperty(p) ? o2[p] : o1[p];\n }\n\n return o;\n}\n\nfunction mergeObjects(o1, o2) {\n var o = cloneObject(o1);\n\n for (var p in o2) {\n o[p] = is.und(o1[p]) ? o2[p] : o1[p];\n }\n\n return o;\n} // Colors\n\n\nfunction rgbToRgba(rgbValue) {\n var rgb = /rgb\\((\\d+,\\s*[\\d]+,\\s*[\\d]+)\\)/g.exec(rgbValue);\n return rgb ? \"rgba(\" + rgb[1] + \",1)\" : rgbValue;\n}\n\nfunction hexToRgba(hexValue) {\n var rgx = /^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i;\n var hex = hexValue.replace(rgx, function (m, r, g, b) {\n return r + r + g + g + b + b;\n });\n var rgb = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n var r = parseInt(rgb[1], 16);\n var g = parseInt(rgb[2], 16);\n var b = parseInt(rgb[3], 16);\n return \"rgba(\" + r + \",\" + g + \",\" + b + \",1)\";\n}\n\nfunction hslToRgba(hslValue) {\n var hsl = /hsl\\((\\d+),\\s*([\\d.]+)%,\\s*([\\d.]+)%\\)/g.exec(hslValue) || /hsla\\((\\d+),\\s*([\\d.]+)%,\\s*([\\d.]+)%,\\s*([\\d.]+)\\)/g.exec(hslValue);\n var h = parseInt(hsl[1], 10) / 360;\n var s = parseInt(hsl[2], 10) / 100;\n var l = parseInt(hsl[3], 10) / 100;\n var a = hsl[4] || 1;\n\n function hue2rgb(p, q, t) {\n if (t < 0) {\n t += 1;\n }\n\n if (t > 1) {\n t -= 1;\n }\n\n if (t < 1 / 6) {\n return p + (q - p) * 6 * t;\n }\n\n if (t < 1 / 2) {\n return q;\n }\n\n if (t < 2 / 3) {\n return p + (q - p) * (2 / 3 - t) * 6;\n }\n\n return p;\n }\n\n var r, g, b;\n\n if (s == 0) {\n r = g = b = l;\n } else {\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n var p = 2 * l - q;\n r = hue2rgb(p, q, h + 1 / 3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1 / 3);\n }\n\n return \"rgba(\" + r * 255 + \",\" + g * 255 + \",\" + b * 255 + \",\" + a + \")\";\n}\n\nfunction colorToRgb(val) {\n if (is.rgb(val)) {\n return rgbToRgba(val);\n }\n\n if (is.hex(val)) {\n return hexToRgba(val);\n }\n\n if (is.hsl(val)) {\n return hslToRgba(val);\n }\n} // Units\n\n\nfunction getUnit(val) {\n var split = /[+-]?\\d*\\.?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?(%|px|pt|em|rem|in|cm|mm|ex|ch|pc|vw|vh|vmin|vmax|deg|rad|turn)?$/.exec(val);\n\n if (split) {\n return split[1];\n }\n}\n\nfunction getTransformUnit(propName) {\n if (stringContains(propName, 'translate') || propName === 'perspective') {\n return 'px';\n }\n\n if (stringContains(propName, 'rotate') || stringContains(propName, 'skew')) {\n return 'deg';\n }\n} // Values\n\n\nfunction getFunctionValue(val, animatable) {\n if (!is.fnc(val)) {\n return val;\n }\n\n return val(animatable.target, animatable.id, animatable.total);\n}\n\nfunction getAttribute(el, prop) {\n return el.getAttribute(prop);\n}\n\nfunction convertPxToUnit(el, value, unit) {\n var valueUnit = getUnit(value);\n\n if (arrayContains([unit, 'deg', 'rad', 'turn'], valueUnit)) {\n return value;\n }\n\n var cached = cache.CSS[value + unit];\n\n if (!is.und(cached)) {\n return cached;\n }\n\n var baseline = 100;\n var tempEl = document.createElement(el.tagName);\n var parentEl = el.parentNode && el.parentNode !== document ? el.parentNode : document.body;\n parentEl.appendChild(tempEl);\n tempEl.style.position = 'absolute';\n tempEl.style.width = baseline + unit;\n var factor = baseline / tempEl.offsetWidth;\n parentEl.removeChild(tempEl);\n var convertedUnit = factor * parseFloat(value);\n cache.CSS[value + unit] = convertedUnit;\n return convertedUnit;\n}\n\nfunction getCSSValue(el, prop, unit) {\n if (prop in el.style) {\n var uppercasePropName = prop.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();\n var value = el.style[prop] || getComputedStyle(el).getPropertyValue(uppercasePropName) || '0';\n return unit ? convertPxToUnit(el, value, unit) : value;\n }\n}\n\nfunction getAnimationType(el, prop) {\n if (is.dom(el) && !is.inp(el) && (!is.nil(getAttribute(el, prop)) || is.svg(el) && el[prop])) {\n return 'attribute';\n }\n\n if (is.dom(el) && arrayContains(validTransforms, prop)) {\n return 'transform';\n }\n\n if (is.dom(el) && prop !== 'transform' && getCSSValue(el, prop)) {\n return 'css';\n }\n\n if (el[prop] != null) {\n return 'object';\n }\n}\n\nfunction getElementTransforms(el) {\n if (!is.dom(el)) {\n return;\n }\n\n var str = el.style.transform || '';\n var reg = /(\\w+)\\(([^)]*)\\)/g;\n var transforms = new Map();\n var m;\n\n while (m = reg.exec(str)) {\n transforms.set(m[1], m[2]);\n }\n\n return transforms;\n}\n\nfunction getTransformValue(el, propName, animatable, unit) {\n var defaultVal = stringContains(propName, 'scale') ? 1 : 0 + getTransformUnit(propName);\n var value = getElementTransforms(el).get(propName) || defaultVal;\n\n if (animatable) {\n animatable.transforms.list.set(propName, value);\n animatable.transforms['last'] = propName;\n }\n\n return unit ? convertPxToUnit(el, value, unit) : value;\n}\n\nfunction getOriginalTargetValue(target, propName, unit, animatable) {\n switch (getAnimationType(target, propName)) {\n case 'transform':\n return getTransformValue(target, propName, animatable, unit);\n\n case 'css':\n return getCSSValue(target, propName, unit);\n\n case 'attribute':\n return getAttribute(target, propName);\n\n default:\n return target[propName] || 0;\n }\n}\n\nfunction getRelativeValue(to, from) {\n var operator = /^(\\*=|\\+=|-=)/.exec(to);\n\n if (!operator) {\n return to;\n }\n\n var u = getUnit(to) || 0;\n var x = parseFloat(from);\n var y = parseFloat(to.replace(operator[0], ''));\n\n switch (operator[0][0]) {\n case '+':\n return x + y + u;\n\n case '-':\n return x - y + u;\n\n case '*':\n return x * y + u;\n }\n}\n\nfunction validateValue(val, unit) {\n if (is.col(val)) {\n return colorToRgb(val);\n }\n\n if (/\\s/g.test(val)) {\n return val;\n }\n\n var originalUnit = getUnit(val);\n var unitLess = originalUnit ? val.substr(0, val.length - originalUnit.length) : val;\n\n if (unit) {\n return unitLess + unit;\n }\n\n return unitLess;\n} // getTotalLength() equivalent for circle, rect, polyline, polygon and line shapes\n// adapted from https://gist.github.com/SebLambla/3e0550c496c236709744\n\n\nfunction getDistance(p1, p2) {\n return Math.sqrt(Math.pow(p2.x - p1.x, 2) + Math.pow(p2.y - p1.y, 2));\n}\n\nfunction getCircleLength(el) {\n return Math.PI * 2 * getAttribute(el, 'r');\n}\n\nfunction getRectLength(el) {\n return getAttribute(el, 'width') * 2 + getAttribute(el, 'height') * 2;\n}\n\nfunction getLineLength(el) {\n return getDistance({\n x: getAttribute(el, 'x1'),\n y: getAttribute(el, 'y1')\n }, {\n x: getAttribute(el, 'x2'),\n y: getAttribute(el, 'y2')\n });\n}\n\nfunction getPolylineLength(el) {\n var points = el.points;\n var totalLength = 0;\n var previousPos;\n\n for (var i = 0; i < points.numberOfItems; i++) {\n var currentPos = points.getItem(i);\n\n if (i > 0) {\n totalLength += getDistance(previousPos, currentPos);\n }\n\n previousPos = currentPos;\n }\n\n return totalLength;\n}\n\nfunction getPolygonLength(el) {\n var points = el.points;\n return getPolylineLength(el) + getDistance(points.getItem(points.numberOfItems - 1), points.getItem(0));\n} // Path animation\n\n\nfunction getTotalLength(el) {\n if (el.getTotalLength) {\n return el.getTotalLength();\n }\n\n switch (el.tagName.toLowerCase()) {\n case 'circle':\n return getCircleLength(el);\n\n case 'rect':\n return getRectLength(el);\n\n case 'line':\n return getLineLength(el);\n\n case 'polyline':\n return getPolylineLength(el);\n\n case 'polygon':\n return getPolygonLength(el);\n }\n}\n\nfunction setDashoffset(el) {\n var pathLength = getTotalLength(el);\n el.setAttribute('stroke-dasharray', pathLength);\n return pathLength;\n} // Motion path\n\n\nfunction getParentSvgEl(el) {\n var parentEl = el.parentNode;\n\n while (is.svg(parentEl)) {\n if (!is.svg(parentEl.parentNode)) {\n break;\n }\n\n parentEl = parentEl.parentNode;\n }\n\n return parentEl;\n}\n\nfunction getParentSvg(pathEl, svgData) {\n var svg = svgData || {};\n var parentSvgEl = svg.el || getParentSvgEl(pathEl);\n var rect = parentSvgEl.getBoundingClientRect();\n var viewBoxAttr = getAttribute(parentSvgEl, 'viewBox');\n var width = rect.width;\n var height = rect.height;\n var viewBox = svg.viewBox || (viewBoxAttr ? viewBoxAttr.split(' ') : [0, 0, width, height]);\n return {\n el: parentSvgEl,\n viewBox: viewBox,\n x: viewBox[0] / 1,\n y: viewBox[1] / 1,\n w: width,\n h: height,\n vW: viewBox[2],\n vH: viewBox[3]\n };\n}\n\nfunction getPath(path, percent) {\n var pathEl = is.str(path) ? selectString(path)[0] : path;\n var p = percent || 100;\n return function (property) {\n return {\n property: property,\n el: pathEl,\n svg: getParentSvg(pathEl),\n totalLength: getTotalLength(pathEl) * (p / 100)\n };\n };\n}\n\nfunction getPathProgress(path, progress, isPathTargetInsideSVG) {\n function point(offset) {\n if (offset === void 0) offset = 0;\n var l = progress + offset >= 1 ? progress + offset : 0;\n return path.el.getPointAtLength(l);\n }\n\n var svg = getParentSvg(path.el, path.svg);\n var p = point();\n var p0 = point(-1);\n var p1 = point(+1);\n var scaleX = isPathTargetInsideSVG ? 1 : svg.w / svg.vW;\n var scaleY = isPathTargetInsideSVG ? 1 : svg.h / svg.vH;\n\n switch (path.property) {\n case 'x':\n return (p.x - svg.x) * scaleX;\n\n case 'y':\n return (p.y - svg.y) * scaleY;\n\n case 'angle':\n return Math.atan2(p1.y - p0.y, p1.x - p0.x) * 180 / Math.PI;\n }\n} // Decompose value\n\n\nfunction decomposeValue(val, unit) {\n // const rgx = /-?\\d*\\.?\\d+/g; // handles basic numbers\n // const rgx = /[+-]?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?/g; // handles exponents notation\n var rgx = /[+-]?\\d*\\.?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?/g; // handles exponents notation\n\n var value = validateValue(is.pth(val) ? val.totalLength : val, unit) + '';\n return {\n original: value,\n numbers: value.match(rgx) ? value.match(rgx).map(Number) : [0],\n strings: is.str(val) || unit ? value.split(rgx) : []\n };\n} // Animatables\n\n\nfunction parseTargets(targets) {\n var targetsArray = targets ? flattenArray(is.arr(targets) ? targets.map(toArray) : toArray(targets)) : [];\n return filterArray(targetsArray, function (item, pos, self) {\n return self.indexOf(item) === pos;\n });\n}\n\nfunction getAnimatables(targets) {\n var parsed = parseTargets(targets);\n return parsed.map(function (t, i) {\n return {\n target: t,\n id: i,\n total: parsed.length,\n transforms: {\n list: getElementTransforms(t)\n }\n };\n });\n} // Properties\n\n\nfunction normalizePropertyTweens(prop, tweenSettings) {\n var settings = cloneObject(tweenSettings); // Override duration if easing is a spring\n\n if (/^spring/.test(settings.easing)) {\n settings.duration = spring(settings.easing);\n }\n\n if (is.arr(prop)) {\n var l = prop.length;\n var isFromTo = l === 2 && !is.obj(prop[0]);\n\n if (!isFromTo) {\n // Duration divided by the number of tweens\n if (!is.fnc(tweenSettings.duration)) {\n settings.duration = tweenSettings.duration / l;\n }\n } else {\n // Transform [from, to] values shorthand to a valid tween value\n prop = {\n value: prop\n };\n }\n }\n\n var propArray = is.arr(prop) ? prop : [prop];\n return propArray.map(function (v, i) {\n var obj = is.obj(v) && !is.pth(v) ? v : {\n value: v\n }; // Default delay value should only be applied to the first tween\n\n if (is.und(obj.delay)) {\n obj.delay = !i ? tweenSettings.delay : 0;\n } // Default endDelay value should only be applied to the last tween\n\n\n if (is.und(obj.endDelay)) {\n obj.endDelay = i === propArray.length - 1 ? tweenSettings.endDelay : 0;\n }\n\n return obj;\n }).map(function (k) {\n return mergeObjects(k, settings);\n });\n}\n\nfunction flattenKeyframes(keyframes) {\n var propertyNames = filterArray(flattenArray(keyframes.map(function (key) {\n return Object.keys(key);\n })), function (p) {\n return is.key(p);\n }).reduce(function (a, b) {\n if (a.indexOf(b) < 0) {\n a.push(b);\n }\n\n return a;\n }, []);\n var properties = {};\n\n var loop = function (i) {\n var propName = propertyNames[i];\n properties[propName] = keyframes.map(function (key) {\n var newKey = {};\n\n for (var p in key) {\n if (is.key(p)) {\n if (p == propName) {\n newKey.value = key[p];\n }\n } else {\n newKey[p] = key[p];\n }\n }\n\n return newKey;\n });\n };\n\n for (var i = 0; i < propertyNames.length; i++) loop(i);\n\n return properties;\n}\n\nfunction getProperties(tweenSettings, params) {\n var properties = [];\n var keyframes = params.keyframes;\n\n if (keyframes) {\n params = mergeObjects(flattenKeyframes(keyframes), params);\n }\n\n for (var p in params) {\n if (is.key(p)) {\n properties.push({\n name: p,\n tweens: normalizePropertyTweens(params[p], tweenSettings)\n });\n }\n }\n\n return properties;\n} // Tweens\n\n\nfunction normalizeTweenValues(tween, animatable) {\n var t = {};\n\n for (var p in tween) {\n var value = getFunctionValue(tween[p], animatable);\n\n if (is.arr(value)) {\n value = value.map(function (v) {\n return getFunctionValue(v, animatable);\n });\n\n if (value.length === 1) {\n value = value[0];\n }\n }\n\n t[p] = value;\n }\n\n t.duration = parseFloat(t.duration);\n t.delay = parseFloat(t.delay);\n return t;\n}\n\nfunction normalizeTweens(prop, animatable) {\n var previousTween;\n return prop.tweens.map(function (t) {\n var tween = normalizeTweenValues(t, animatable);\n var tweenValue = tween.value;\n var to = is.arr(tweenValue) ? tweenValue[1] : tweenValue;\n var toUnit = getUnit(to);\n var originalValue = getOriginalTargetValue(animatable.target, prop.name, toUnit, animatable);\n var previousValue = previousTween ? previousTween.to.original : originalValue;\n var from = is.arr(tweenValue) ? tweenValue[0] : previousValue;\n var fromUnit = getUnit(from) || getUnit(originalValue);\n var unit = toUnit || fromUnit;\n\n if (is.und(to)) {\n to = previousValue;\n }\n\n tween.from = decomposeValue(from, unit);\n tween.to = decomposeValue(getRelativeValue(to, from), unit);\n tween.start = previousTween ? previousTween.end : 0;\n tween.end = tween.start + tween.delay + tween.duration + tween.endDelay;\n tween.easing = parseEasings(tween.easing, tween.duration);\n tween.isPath = is.pth(tweenValue);\n tween.isPathTargetInsideSVG = tween.isPath && is.svg(animatable.target);\n tween.isColor = is.col(tween.from.original);\n\n if (tween.isColor) {\n tween.round = 1;\n }\n\n previousTween = tween;\n return tween;\n });\n} // Tween progress\n\n\nvar setProgressValue = {\n css: function (t, p, v) {\n return t.style[p] = v;\n },\n attribute: function (t, p, v) {\n return t.setAttribute(p, v);\n },\n object: function (t, p, v) {\n return t[p] = v;\n },\n transform: function (t, p, v, transforms, manual) {\n transforms.list.set(p, v);\n\n if (p === transforms.last || manual) {\n var str = '';\n transforms.list.forEach(function (value, prop) {\n str += prop + \"(\" + value + \") \";\n });\n t.style.transform = str;\n }\n }\n}; // Set Value helper\n\nfunction setTargetsValue(targets, properties) {\n var animatables = getAnimatables(targets);\n animatables.forEach(function (animatable) {\n for (var property in properties) {\n var value = getFunctionValue(properties[property], animatable);\n var target = animatable.target;\n var valueUnit = getUnit(value);\n var originalValue = getOriginalTargetValue(target, property, valueUnit, animatable);\n var unit = valueUnit || getUnit(originalValue);\n var to = getRelativeValue(validateValue(value, unit), originalValue);\n var animType = getAnimationType(target, property);\n setProgressValue[animType](target, property, to, animatable.transforms, true);\n }\n });\n} // Animations\n\n\nfunction createAnimation(animatable, prop) {\n var animType = getAnimationType(animatable.target, prop.name);\n\n if (animType) {\n var tweens = normalizeTweens(prop, animatable);\n var lastTween = tweens[tweens.length - 1];\n return {\n type: animType,\n property: prop.name,\n animatable: animatable,\n tweens: tweens,\n duration: lastTween.end,\n delay: tweens[0].delay,\n endDelay: lastTween.endDelay\n };\n }\n}\n\nfunction getAnimations(animatables, properties) {\n return filterArray(flattenArray(animatables.map(function (animatable) {\n return properties.map(function (prop) {\n return createAnimation(animatable, prop);\n });\n })), function (a) {\n return !is.und(a);\n });\n} // Create Instance\n\n\nfunction getInstanceTimings(animations, tweenSettings) {\n var animLength = animations.length;\n\n var getTlOffset = function (anim) {\n return anim.timelineOffset ? anim.timelineOffset : 0;\n };\n\n var timings = {};\n timings.duration = animLength ? Math.max.apply(Math, animations.map(function (anim) {\n return getTlOffset(anim) + anim.duration;\n })) : tweenSettings.duration;\n timings.delay = animLength ? Math.min.apply(Math, animations.map(function (anim) {\n return getTlOffset(anim) + anim.delay;\n })) : tweenSettings.delay;\n timings.endDelay = animLength ? timings.duration - Math.max.apply(Math, animations.map(function (anim) {\n return getTlOffset(anim) + anim.duration - anim.endDelay;\n })) : tweenSettings.endDelay;\n return timings;\n}\n\nvar instanceID = 0;\n\nfunction createNewInstance(params) {\n var instanceSettings = replaceObjectProps(defaultInstanceSettings, params);\n var tweenSettings = replaceObjectProps(defaultTweenSettings, params);\n var properties = getProperties(tweenSettings, params);\n var animatables = getAnimatables(params.targets);\n var animations = getAnimations(animatables, properties);\n var timings = getInstanceTimings(animations, tweenSettings);\n var id = instanceID;\n instanceID++;\n return mergeObjects(instanceSettings, {\n id: id,\n children: [],\n animatables: animatables,\n animations: animations,\n duration: timings.duration,\n delay: timings.delay,\n endDelay: timings.endDelay\n });\n} // Core\n\n\nvar activeInstances = [];\n\nvar engine = function () {\n var raf;\n\n function play() {\n if (!raf && (!isDocumentHidden() || !anime.suspendWhenDocumentHidden) && activeInstances.length > 0) {\n raf = requestAnimationFrame(step);\n }\n }\n\n function step(t) {\n // memo on algorithm issue:\n // dangerous iteration over mutable `activeInstances`\n // (that collection may be updated from within callbacks of `tick`-ed animation instances)\n var activeInstancesLength = activeInstances.length;\n var i = 0;\n\n while (i < activeInstancesLength) {\n var activeInstance = activeInstances[i];\n\n if (!activeInstance.paused) {\n activeInstance.tick(t);\n i++;\n } else {\n activeInstances.splice(i, 1);\n activeInstancesLength--;\n }\n }\n\n raf = i > 0 ? requestAnimationFrame(step) : undefined;\n }\n\n function handleVisibilityChange() {\n if (!anime.suspendWhenDocumentHidden) {\n return;\n }\n\n if (isDocumentHidden()) {\n // suspend ticks\n raf = cancelAnimationFrame(raf);\n } else {\n // is back to active tab\n // first adjust animations to consider the time that ticks were suspended\n activeInstances.forEach(function (instance) {\n return instance._onDocumentVisibility();\n });\n engine();\n }\n }\n\n if (typeof document !== 'undefined') {\n document.addEventListener('visibilitychange', handleVisibilityChange);\n }\n\n return play;\n}();\n\nfunction isDocumentHidden() {\n return !!document && document.hidden;\n} // Public Instance\n\n\nfunction anime(params) {\n if (params === void 0) params = {};\n var startTime = 0,\n lastTime = 0,\n now = 0;\n var children,\n childrenLength = 0;\n var resolve = null;\n\n function makePromise(instance) {\n var promise = window.Promise && new Promise(function (_resolve) {\n return resolve = _resolve;\n });\n instance.finished = promise;\n return promise;\n }\n\n var instance = createNewInstance(params);\n var promise = makePromise(instance);\n\n function toggleInstanceDirection() {\n var direction = instance.direction;\n\n if (direction !== 'alternate') {\n instance.direction = direction !== 'normal' ? 'normal' : 'reverse';\n }\n\n instance.reversed = !instance.reversed;\n children.forEach(function (child) {\n return child.reversed = instance.reversed;\n });\n }\n\n function adjustTime(time) {\n return instance.reversed ? instance.duration - time : time;\n }\n\n function resetTime() {\n startTime = 0;\n lastTime = adjustTime(instance.currentTime) * (1 / anime.speed);\n }\n\n function seekChild(time, child) {\n if (child) {\n child.seek(time - child.timelineOffset);\n }\n }\n\n function syncInstanceChildren(time) {\n if (!instance.reversePlayback) {\n for (var i = 0; i < childrenLength; i++) {\n seekChild(time, children[i]);\n }\n } else {\n for (var i$1 = childrenLength; i$1--;) {\n seekChild(time, children[i$1]);\n }\n }\n }\n\n function setAnimationsProgress(insTime) {\n var i = 0;\n var animations = instance.animations;\n var animationsLength = animations.length;\n\n while (i < animationsLength) {\n var anim = animations[i];\n var animatable = anim.animatable;\n var tweens = anim.tweens;\n var tweenLength = tweens.length - 1;\n var tween = tweens[tweenLength]; // Only check for keyframes if there is more than one tween\n\n if (tweenLength) {\n tween = filterArray(tweens, function (t) {\n return insTime < t.end;\n })[0] || tween;\n }\n\n var elapsed = minMax(insTime - tween.start - tween.delay, 0, tween.duration) / tween.duration;\n var eased = isNaN(elapsed) ? 1 : tween.easing(elapsed);\n var strings = tween.to.strings;\n var round = tween.round;\n var numbers = [];\n var toNumbersLength = tween.to.numbers.length;\n var progress = void 0;\n\n for (var n = 0; n < toNumbersLength; n++) {\n var value = void 0;\n var toNumber = tween.to.numbers[n];\n var fromNumber = tween.from.numbers[n] || 0;\n\n if (!tween.isPath) {\n value = fromNumber + eased * (toNumber - fromNumber);\n } else {\n value = getPathProgress(tween.value, eased * toNumber, tween.isPathTargetInsideSVG);\n }\n\n if (round) {\n if (!(tween.isColor && n > 2)) {\n value = Math.round(value * round) / round;\n }\n }\n\n numbers.push(value);\n } // Manual Array.reduce for better performances\n\n\n var stringsLength = strings.length;\n\n if (!stringsLength) {\n progress = numbers[0];\n } else {\n progress = strings[0];\n\n for (var s = 0; s < stringsLength; s++) {\n var a = strings[s];\n var b = strings[s + 1];\n var n$1 = numbers[s];\n\n if (!isNaN(n$1)) {\n if (!b) {\n progress += n$1 + ' ';\n } else {\n progress += n$1 + b;\n }\n }\n }\n }\n\n setProgressValue[anim.type](animatable.target, anim.property, progress, animatable.transforms);\n anim.currentValue = progress;\n i++;\n }\n }\n\n function setCallback(cb) {\n if (instance[cb] && !instance.passThrough) {\n instance[cb](instance);\n }\n }\n\n function countIteration() {\n if (instance.remaining && instance.remaining !== true) {\n instance.remaining--;\n }\n }\n\n function setInstanceProgress(engineTime) {\n var insDuration = instance.duration;\n var insDelay = instance.delay;\n var insEndDelay = insDuration - instance.endDelay;\n var insTime = adjustTime(engineTime);\n instance.progress = minMax(insTime / insDuration * 100, 0, 100);\n instance.reversePlayback = insTime < instance.currentTime;\n\n if (children) {\n syncInstanceChildren(insTime);\n }\n\n if (!instance.began && instance.currentTime > 0) {\n instance.began = true;\n setCallback('begin');\n }\n\n if (!instance.loopBegan && instance.currentTime > 0) {\n instance.loopBegan = true;\n setCallback('loopBegin');\n }\n\n if (insTime <= insDelay && instance.currentTime !== 0) {\n setAnimationsProgress(0);\n }\n\n if (insTime >= insEndDelay && instance.currentTime !== insDuration || !insDuration) {\n setAnimationsProgress(insDuration);\n }\n\n if (insTime > insDelay && insTime < insEndDelay) {\n if (!instance.changeBegan) {\n instance.changeBegan = true;\n instance.changeCompleted = false;\n setCallback('changeBegin');\n }\n\n setCallback('change');\n setAnimationsProgress(insTime);\n } else {\n if (instance.changeBegan) {\n instance.changeCompleted = true;\n instance.changeBegan = false;\n setCallback('changeComplete');\n }\n }\n\n instance.currentTime = minMax(insTime, 0, insDuration);\n\n if (instance.began) {\n setCallback('update');\n }\n\n if (engineTime >= insDuration) {\n lastTime = 0;\n countIteration();\n\n if (!instance.remaining) {\n instance.paused = true;\n\n if (!instance.completed) {\n instance.completed = true;\n setCallback('loopComplete');\n setCallback('complete');\n\n if (!instance.passThrough && 'Promise' in window) {\n resolve();\n promise = makePromise(instance);\n }\n }\n } else {\n startTime = now;\n setCallback('loopComplete');\n instance.loopBegan = false;\n\n if (instance.direction === 'alternate') {\n toggleInstanceDirection();\n }\n }\n }\n }\n\n instance.reset = function () {\n var direction = instance.direction;\n instance.passThrough = false;\n instance.currentTime = 0;\n instance.progress = 0;\n instance.paused = true;\n instance.began = false;\n instance.loopBegan = false;\n instance.changeBegan = false;\n instance.completed = false;\n instance.changeCompleted = false;\n instance.reversePlayback = false;\n instance.reversed = direction === 'reverse';\n instance.remaining = instance.loop;\n children = instance.children;\n childrenLength = children.length;\n\n for (var i = childrenLength; i--;) {\n instance.children[i].reset();\n }\n\n if (instance.reversed && instance.loop !== true || direction === 'alternate' && instance.loop === 1) {\n instance.remaining++;\n }\n\n setAnimationsProgress(instance.reversed ? instance.duration : 0);\n }; // internal method (for engine) to adjust animation timings before restoring engine ticks (rAF)\n\n\n instance._onDocumentVisibility = resetTime; // Set Value helper\n\n instance.set = function (targets, properties) {\n setTargetsValue(targets, properties);\n return instance;\n };\n\n instance.tick = function (t) {\n now = t;\n\n if (!startTime) {\n startTime = now;\n }\n\n setInstanceProgress((now + (lastTime - startTime)) * anime.speed);\n };\n\n instance.seek = function (time) {\n setInstanceProgress(adjustTime(time));\n };\n\n instance.pause = function () {\n instance.paused = true;\n resetTime();\n };\n\n instance.play = function () {\n if (!instance.paused) {\n return;\n }\n\n if (instance.completed) {\n instance.reset();\n }\n\n instance.paused = false;\n activeInstances.push(instance);\n resetTime();\n engine();\n };\n\n instance.reverse = function () {\n toggleInstanceDirection();\n instance.completed = instance.reversed ? false : true;\n resetTime();\n };\n\n instance.restart = function () {\n instance.reset();\n instance.play();\n };\n\n instance.remove = function (targets) {\n var targetsArray = parseTargets(targets);\n removeTargetsFromInstance(targetsArray, instance);\n };\n\n instance.reset();\n\n if (instance.autoplay) {\n instance.play();\n }\n\n return instance;\n} // Remove targets from animation\n\n\nfunction removeTargetsFromAnimations(targetsArray, animations) {\n for (var a = animations.length; a--;) {\n if (arrayContains(targetsArray, animations[a].animatable.target)) {\n animations.splice(a, 1);\n }\n }\n}\n\nfunction removeTargetsFromInstance(targetsArray, instance) {\n var animations = instance.animations;\n var children = instance.children;\n removeTargetsFromAnimations(targetsArray, animations);\n\n for (var c = children.length; c--;) {\n var child = children[c];\n var childAnimations = child.animations;\n removeTargetsFromAnimations(targetsArray, childAnimations);\n\n if (!childAnimations.length && !child.children.length) {\n children.splice(c, 1);\n }\n }\n\n if (!animations.length && !children.length) {\n instance.pause();\n }\n}\n\nfunction removeTargetsFromActiveInstances(targets) {\n var targetsArray = parseTargets(targets);\n\n for (var i = activeInstances.length; i--;) {\n var instance = activeInstances[i];\n removeTargetsFromInstance(targetsArray, instance);\n }\n} // Stagger helpers\n\n\nfunction stagger(val, params) {\n if (params === void 0) params = {};\n var direction = params.direction || 'normal';\n var easing = params.easing ? parseEasings(params.easing) : null;\n var grid = params.grid;\n var axis = params.axis;\n var fromIndex = params.from || 0;\n var fromFirst = fromIndex === 'first';\n var fromCenter = fromIndex === 'center';\n var fromLast = fromIndex === 'last';\n var isRange = is.arr(val);\n var val1 = isRange ? parseFloat(val[0]) : parseFloat(val);\n var val2 = isRange ? parseFloat(val[1]) : 0;\n var unit = getUnit(isRange ? val[1] : val) || 0;\n var start = params.start || 0 + (isRange ? val1 : 0);\n var values = [];\n var maxValue = 0;\n return function (el, i, t) {\n if (fromFirst) {\n fromIndex = 0;\n }\n\n if (fromCenter) {\n fromIndex = (t - 1) / 2;\n }\n\n if (fromLast) {\n fromIndex = t - 1;\n }\n\n if (!values.length) {\n for (var index = 0; index < t; index++) {\n if (!grid) {\n values.push(Math.abs(fromIndex - index));\n } else {\n var fromX = !fromCenter ? fromIndex % grid[0] : (grid[0] - 1) / 2;\n var fromY = !fromCenter ? Math.floor(fromIndex / grid[0]) : (grid[1] - 1) / 2;\n var toX = index % grid[0];\n var toY = Math.floor(index / grid[0]);\n var distanceX = fromX - toX;\n var distanceY = fromY - toY;\n var value = Math.sqrt(distanceX * distanceX + distanceY * distanceY);\n\n if (axis === 'x') {\n value = -distanceX;\n }\n\n if (axis === 'y') {\n value = -distanceY;\n }\n\n values.push(value);\n }\n\n maxValue = Math.max.apply(Math, values);\n }\n\n if (easing) {\n values = values.map(function (val) {\n return easing(val / maxValue) * maxValue;\n });\n }\n\n if (direction === 'reverse') {\n values = values.map(function (val) {\n return axis ? val < 0 ? val * -1 : -val : Math.abs(maxValue - val);\n });\n }\n }\n\n var spacing = isRange ? (val2 - val1) / maxValue : val1;\n return start + spacing * (Math.round(values[i] * 100) / 100) + unit;\n };\n} // Timeline\n\n\nfunction timeline(params) {\n if (params === void 0) params = {};\n var tl = anime(params);\n tl.duration = 0;\n\n tl.add = function (instanceParams, timelineOffset) {\n var tlIndex = activeInstances.indexOf(tl);\n var children = tl.children;\n\n if (tlIndex > -1) {\n activeInstances.splice(tlIndex, 1);\n }\n\n function passThrough(ins) {\n ins.passThrough = true;\n }\n\n for (var i = 0; i < children.length; i++) {\n passThrough(children[i]);\n }\n\n var insParams = mergeObjects(instanceParams, replaceObjectProps(defaultTweenSettings, params));\n insParams.targets = insParams.targets || params.targets;\n var tlDuration = tl.duration;\n insParams.autoplay = false;\n insParams.direction = tl.direction;\n insParams.timelineOffset = is.und(timelineOffset) ? tlDuration : getRelativeValue(timelineOffset, tlDuration);\n passThrough(tl);\n tl.seek(insParams.timelineOffset);\n var ins = anime(insParams);\n passThrough(ins);\n children.push(ins);\n var timings = getInstanceTimings(children, params);\n tl.delay = timings.delay;\n tl.endDelay = timings.endDelay;\n tl.duration = timings.duration;\n tl.seek(0);\n tl.reset();\n\n if (tl.autoplay) {\n tl.play();\n }\n\n return tl;\n };\n\n return tl;\n}\n\nanime.version = '3.2.1';\nanime.speed = 1; // TODO:#review: naming, documentation\n\nanime.suspendWhenDocumentHidden = true;\nanime.running = activeInstances;\nanime.remove = removeTargetsFromActiveInstances;\nanime.get = getOriginalTargetValue;\nanime.set = setTargetsValue;\nanime.convertPx = convertPxToUnit;\nanime.path = getPath;\nanime.setDashoffset = setDashoffset;\nanime.stagger = stagger;\nanime.timeline = timeline;\nanime.easing = parseEasings;\nanime.penner = penner;\n\nanime.random = function (min, max) {\n return Math.floor(Math.random() * (max - min + 1)) + min;\n};\n\nexport default anime;","import StackManager from \"models/stack_manager\"\n\nclass Stackable {\n constructor(controller, options) {\n this.controller = controller\n this.stackName = options.stackName\n }\n\n attach() {\n this._onSheetRemovalBind = this._onSheetRemoval.bind(this)\n this._onSheetReloadBind = this._onSheetReload.bind(this)\n this.controller.element.addEventListener(`stack-${this.stackName}:reload`, this._onSheetReloadBind)\n this.controller.element.addEventListener(\"sheet-update:child-removal\", this._onSheetRemovalBind)\n this._defineProxyGetters(this.controller, [\"stackManager\"])\n }\n\n detach() {\n this.controller.element.removeEventListener(\"sheet-update:child-removal\", this._onSheetRemovalBind)\n this.controller.element.removeEventListener(`stack-${this.stackName}:reload`, this._onSheetReloadBind)\n }\n\n _onSheetReload(event) {\n if (this.controller.onSheetReload) {\n this.controller.onSheetReload(event.detail.node)\n }\n this.stackManager.finishReloading()\n }\n\n _onSheetRemoval(data) {\n if (this.controller.onSheetRemoval) {\n return this.controller.onSheetRemoval(data)\n }\n }\n\n _defineProxyGetters(target, proxyProperties) {\n proxyProperties.forEach(key => {\n Object.defineProperty(target, key, {\n get: () => this[key],\n })\n })\n }\n\n get stackManager() {\n if (this._stackManager) return this._stackManager\n\n this._stackManager = StackManager.loadFor(this.stackName)\n return this._stackManager\n }\n}\n\nexport function useAsStackable(controller, options = {}) {\n function register() {\n const stackable = new Stackable(controller, options)\n stackable.attach()\n }\n\n function unregister() {\n const stackable = new Stackable(controller, options)\n stackable.detach()\n }\n\n if (!options.stackName) {\n throw new Error(\"Stack name is required\")\n }\n\n register()\n\n return {\n register,\n unregister,\n }\n}\n","import cable from \"./action_cable\"\n\nfunction onCableConnected(controller) {\n if(controller.onCableConnected){\n controller.onCableConnected()\n }\n}\n\nfunction onCableDisconnected(controller, storageIdentifier) {\n const currentSubscription = loadSubscriptionIdentifier(controller, storageIdentifier)\n if (currentSubscription) {\n localStorage.removeItem(\"actionCableSubscriptions\")\n }\n if(controller.onCableDisconnected){\n controller.onCableDisconnected()\n }\n}\n\nfunction onCableReceived(controller, data) {\n if(controller.onCableReceived){\n controller.onCableReceived(data)\n }\n}\n\nfunction persistSubscription(controller, storageIdentifier, subscription) {\n const currentStorage = JSON.parse(localStorage.getItem(\"actionCableSubscriptions\")) || {}\n currentStorage[`${controller.identifier}-${storageIdentifier}`] = subscription.identifier\n localStorage.setItem(\"actionCableSubscriptions\", JSON.stringify(currentStorage))\n}\n\nfunction loadSubscriptionIdentifier(controller, storageIdentifier) {\n const currentStorage = JSON.parse(localStorage.getItem(\"actionCableSubscriptions\")) || {}\n return currentStorage[`${controller.identifier}-${storageIdentifier}`]\n}\n\nfunction removeSubscriptionIdentifier(controller, storageIdentifier) {\n const currentStorage = JSON.parse(localStorage.getItem(\"actionCableSubscriptions\")) || {}\n delete currentStorage[`${controller.identifier}-${storageIdentifier}`]\n localStorage.setItem(\"actionCableSubscriptions\", JSON.stringify(currentStorage))\n}\n\nfunction loadSubscription(controller, storageIdentifier) {\n const subscriptionIdentifier = loadSubscriptionIdentifier(controller, storageIdentifier)\n return cable.subscriptions.findAll(subscriptionIdentifier)[0]\n}\n\nfunction createSubscription(controller, storageIdentifier, subscriptionChannel, subscriptionCallbacks) {\n let subscription = loadSubscription(controller, storageIdentifier)\n if(subscription) return subscription\n\n subscription = cable.subscriptions.create(subscriptionChannel, subscriptionCallbacks)\n persistSubscription(controller, storageIdentifier, subscription)\n return subscription\n}\n\nexport function useActionCable(controller, options) {\n function subscribe() {\n const subscriptionChannel = { channel: options.channel, ...options.channelArgs }\n // If storageIdentifier is not provided, use channel as the identifier (for backward compatibility with current notification channels)\n const storageIdentifier = options.storageIdentifier || options.channel\n createSubscription(controller, storageIdentifier, subscriptionChannel, {\n connected: () => {\n onCableConnected(controller)\n },\n disconnected: () => {\n onCableDisconnected(controller, options.storageIdentifier)\n },\n received: (data) => {\n onCableReceived(controller, data)\n }\n })\n }\n\n function currentSubscription() {\n if (!options || !options.channel) return null\n\n return loadSubscription(controller, options.storageIdentifier)\n }\n\n function unsubscribe() {\n const subscription = currentSubscription()\n\n if (subscription) {\n subscription.unsubscribe()\n removeSubscriptionIdentifier(controller, options.storageIdentifier)\n }\n }\n\n function unsubscribeAll() {\n const storageIdentifier = options.storageIdentifier || options.channel\n const subscriptions = cable.subscriptions.subscriptions\n const subscriptionsToRemove = subscriptions.filter(subscription => subscription.identifier.includes(controller.identifier))\n subscriptionsToRemove.forEach(subscription => {\n removeSubscriptionIdentifier(controller, storageIdentifier)\n subscription.unsubscribe()\n })\n }\n\n function perform(action, data) {\n const subscription = currentSubscription()\n\n if (subscription) {\n subscription.perform(action, data)\n }\n }\n\n if (options && options.channel) {\n subscribe()\n }\n\n return {\n subscribe,\n unsubscribe,\n unsubscribeAll,\n perform,\n subscription: currentSubscription()\n }\n}\n","export default function tagReplacements(template, replacements, options = {}) {\n const mustacheRegex = /{{\\s*(\\w+)\\s*}}/g\n const clearUnknownTags = options.clearUnknownTags || false\n const sanitizedTemplate = template.replace(mustacheRegex, function(match, key) {\n return replacements[key] || `{{${key}}}`\n })\n\n if (clearUnknownTags) {\n return sanitizedTemplate.replace(mustacheRegex, \"\")\n }\n\n return sanitizedTemplate\n}\n","const loaderHelper = {\n show: () => {\n const loadingIndicator = document.querySelector(\"#loading-indicator\")\n if (loadingIndicator) loadingIndicator.style.display = \"block\"\n },\n\n hide: () => {\n const loadingIndicator = document.querySelector(\"#loading-indicator\")\n if (loadingIndicator) loadingIndicator.style.display = \"none\"\n }\n}\n\nexport default loaderHelper","(function (global, factory) {\n typeof exports === \"object\" && typeof module !== \"undefined\" ? factory(exports) : typeof define === \"function\" && define.amd ? define([\"exports\"], factory) : factory(global.ActionCable = {});\n})(this, function (exports) {\n \"use strict\";\n\n var adapters = {\n logger: self.console,\n WebSocket: self.WebSocket\n };\n var logger = {\n log: function log() {\n if (this.enabled) {\n var _adapters$logger;\n\n for (var _len = arguments.length, messages = Array(_len), _key = 0; _key < _len; _key++) {\n messages[_key] = arguments[_key];\n }\n\n messages.push(Date.now());\n\n (_adapters$logger = adapters.logger).log.apply(_adapters$logger, [\"[ActionCable]\"].concat(messages));\n }\n }\n };\n\n var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n\n var classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n };\n\n var createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n var now = function now() {\n return new Date().getTime();\n };\n\n var secondsSince = function secondsSince(time) {\n return (now() - time) / 1e3;\n };\n\n var clamp = function clamp(number, min, max) {\n return Math.max(min, Math.min(max, number));\n };\n\n var ConnectionMonitor = function () {\n function ConnectionMonitor(connection) {\n classCallCheck(this, ConnectionMonitor);\n this.visibilityDidChange = this.visibilityDidChange.bind(this);\n this.connection = connection;\n this.reconnectAttempts = 0;\n }\n\n ConnectionMonitor.prototype.start = function start() {\n if (!this.isRunning()) {\n this.startedAt = now();\n delete this.stoppedAt;\n this.startPolling();\n addEventListener(\"visibilitychange\", this.visibilityDidChange);\n logger.log(\"ConnectionMonitor started. pollInterval = \" + this.getPollInterval() + \" ms\");\n }\n };\n\n ConnectionMonitor.prototype.stop = function stop() {\n if (this.isRunning()) {\n this.stoppedAt = now();\n this.stopPolling();\n removeEventListener(\"visibilitychange\", this.visibilityDidChange);\n logger.log(\"ConnectionMonitor stopped\");\n }\n };\n\n ConnectionMonitor.prototype.isRunning = function isRunning() {\n return this.startedAt && !this.stoppedAt;\n };\n\n ConnectionMonitor.prototype.recordPing = function recordPing() {\n this.pingedAt = now();\n };\n\n ConnectionMonitor.prototype.recordConnect = function recordConnect() {\n this.reconnectAttempts = 0;\n this.recordPing();\n delete this.disconnectedAt;\n logger.log(\"ConnectionMonitor recorded connect\");\n };\n\n ConnectionMonitor.prototype.recordDisconnect = function recordDisconnect() {\n this.disconnectedAt = now();\n logger.log(\"ConnectionMonitor recorded disconnect\");\n };\n\n ConnectionMonitor.prototype.startPolling = function startPolling() {\n this.stopPolling();\n this.poll();\n };\n\n ConnectionMonitor.prototype.stopPolling = function stopPolling() {\n clearTimeout(this.pollTimeout);\n };\n\n ConnectionMonitor.prototype.poll = function poll() {\n var _this = this;\n\n this.pollTimeout = setTimeout(function () {\n _this.reconnectIfStale();\n\n _this.poll();\n }, this.getPollInterval());\n };\n\n ConnectionMonitor.prototype.getPollInterval = function getPollInterval() {\n var _constructor$pollInte = this.constructor.pollInterval,\n min = _constructor$pollInte.min,\n max = _constructor$pollInte.max,\n multiplier = _constructor$pollInte.multiplier;\n var interval = multiplier * Math.log(this.reconnectAttempts + 1);\n return Math.round(clamp(interval, min, max) * 1e3);\n };\n\n ConnectionMonitor.prototype.reconnectIfStale = function reconnectIfStale() {\n if (this.connectionIsStale()) {\n logger.log(\"ConnectionMonitor detected stale connection. reconnectAttempts = \" + this.reconnectAttempts + \", pollInterval = \" + this.getPollInterval() + \" ms, time disconnected = \" + secondsSince(this.disconnectedAt) + \" s, stale threshold = \" + this.constructor.staleThreshold + \" s\");\n this.reconnectAttempts++;\n\n if (this.disconnectedRecently()) {\n logger.log(\"ConnectionMonitor skipping reopening recent disconnect\");\n } else {\n logger.log(\"ConnectionMonitor reopening\");\n this.connection.reopen();\n }\n }\n };\n\n ConnectionMonitor.prototype.connectionIsStale = function connectionIsStale() {\n return secondsSince(this.pingedAt ? this.pingedAt : this.startedAt) > this.constructor.staleThreshold;\n };\n\n ConnectionMonitor.prototype.disconnectedRecently = function disconnectedRecently() {\n return this.disconnectedAt && secondsSince(this.disconnectedAt) < this.constructor.staleThreshold;\n };\n\n ConnectionMonitor.prototype.visibilityDidChange = function visibilityDidChange() {\n var _this2 = this;\n\n if (document.visibilityState === \"visible\") {\n setTimeout(function () {\n if (_this2.connectionIsStale() || !_this2.connection.isOpen()) {\n logger.log(\"ConnectionMonitor reopening stale connection on visibilitychange. visbilityState = \" + document.visibilityState);\n\n _this2.connection.reopen();\n }\n }, 200);\n }\n };\n\n return ConnectionMonitor;\n }();\n\n ConnectionMonitor.pollInterval = {\n min: 3,\n max: 30,\n multiplier: 5\n };\n ConnectionMonitor.staleThreshold = 6;\n var INTERNAL = {\n message_types: {\n welcome: \"welcome\",\n disconnect: \"disconnect\",\n ping: \"ping\",\n confirmation: \"confirm_subscription\",\n rejection: \"reject_subscription\"\n },\n disconnect_reasons: {\n unauthorized: \"unauthorized\",\n invalid_request: \"invalid_request\",\n server_restart: \"server_restart\"\n },\n default_mount_path: \"/cable\",\n protocols: [\"actioncable-v1-json\", \"actioncable-unsupported\"]\n };\n var message_types = INTERNAL.message_types,\n protocols = INTERNAL.protocols;\n var supportedProtocols = protocols.slice(0, protocols.length - 1);\n var indexOf = [].indexOf;\n\n var Connection = function () {\n function Connection(consumer) {\n classCallCheck(this, Connection);\n this.open = this.open.bind(this);\n this.consumer = consumer;\n this.subscriptions = this.consumer.subscriptions;\n this.monitor = new ConnectionMonitor(this);\n this.disconnected = true;\n }\n\n Connection.prototype.send = function send(data) {\n if (this.isOpen()) {\n this.webSocket.send(JSON.stringify(data));\n return true;\n } else {\n return false;\n }\n };\n\n Connection.prototype.open = function open() {\n if (this.isActive()) {\n logger.log(\"Attempted to open WebSocket, but existing socket is \" + this.getState());\n return false;\n } else {\n logger.log(\"Opening WebSocket, current state is \" + this.getState() + \", subprotocols: \" + protocols);\n\n if (this.webSocket) {\n this.uninstallEventHandlers();\n }\n\n this.webSocket = new adapters.WebSocket(this.consumer.url, protocols);\n this.installEventHandlers();\n this.monitor.start();\n return true;\n }\n };\n\n Connection.prototype.close = function close() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {\n allowReconnect: true\n },\n allowReconnect = _ref.allowReconnect;\n\n if (!allowReconnect) {\n this.monitor.stop();\n }\n\n if (this.isActive()) {\n return this.webSocket.close();\n }\n };\n\n Connection.prototype.reopen = function reopen() {\n logger.log(\"Reopening WebSocket, current state is \" + this.getState());\n\n if (this.isActive()) {\n try {\n return this.close();\n } catch (error) {\n logger.log(\"Failed to reopen WebSocket\", error);\n } finally {\n logger.log(\"Reopening WebSocket in \" + this.constructor.reopenDelay + \"ms\");\n setTimeout(this.open, this.constructor.reopenDelay);\n }\n } else {\n return this.open();\n }\n };\n\n Connection.prototype.getProtocol = function getProtocol() {\n if (this.webSocket) {\n return this.webSocket.protocol;\n }\n };\n\n Connection.prototype.isOpen = function isOpen() {\n return this.isState(\"open\");\n };\n\n Connection.prototype.isActive = function isActive() {\n return this.isState(\"open\", \"connecting\");\n };\n\n Connection.prototype.isProtocolSupported = function isProtocolSupported() {\n return indexOf.call(supportedProtocols, this.getProtocol()) >= 0;\n };\n\n Connection.prototype.isState = function isState() {\n for (var _len = arguments.length, states = Array(_len), _key = 0; _key < _len; _key++) {\n states[_key] = arguments[_key];\n }\n\n return indexOf.call(states, this.getState()) >= 0;\n };\n\n Connection.prototype.getState = function getState() {\n if (this.webSocket) {\n for (var state in adapters.WebSocket) {\n if (adapters.WebSocket[state] === this.webSocket.readyState) {\n return state.toLowerCase();\n }\n }\n }\n\n return null;\n };\n\n Connection.prototype.installEventHandlers = function installEventHandlers() {\n for (var eventName in this.events) {\n var handler = this.events[eventName].bind(this);\n this.webSocket[\"on\" + eventName] = handler;\n }\n };\n\n Connection.prototype.uninstallEventHandlers = function uninstallEventHandlers() {\n for (var eventName in this.events) {\n this.webSocket[\"on\" + eventName] = function () {};\n }\n };\n\n return Connection;\n }();\n\n Connection.reopenDelay = 500;\n Connection.prototype.events = {\n message: function message(event) {\n if (!this.isProtocolSupported()) {\n return;\n }\n\n var _JSON$parse = JSON.parse(event.data),\n identifier = _JSON$parse.identifier,\n message = _JSON$parse.message,\n reason = _JSON$parse.reason,\n reconnect = _JSON$parse.reconnect,\n type = _JSON$parse.type;\n\n switch (type) {\n case message_types.welcome:\n this.monitor.recordConnect();\n return this.subscriptions.reload();\n\n case message_types.disconnect:\n logger.log(\"Disconnecting. Reason: \" + reason);\n return this.close({\n allowReconnect: reconnect\n });\n\n case message_types.ping:\n return this.monitor.recordPing();\n\n case message_types.confirmation:\n return this.subscriptions.notify(identifier, \"connected\");\n\n case message_types.rejection:\n return this.subscriptions.reject(identifier);\n\n default:\n return this.subscriptions.notify(identifier, \"received\", message);\n }\n },\n open: function open() {\n logger.log(\"WebSocket onopen event, using '\" + this.getProtocol() + \"' subprotocol\");\n this.disconnected = false;\n\n if (!this.isProtocolSupported()) {\n logger.log(\"Protocol is unsupported. Stopping monitor and disconnecting.\");\n return this.close({\n allowReconnect: false\n });\n }\n },\n close: function close(event) {\n logger.log(\"WebSocket onclose event\");\n\n if (this.disconnected) {\n return;\n }\n\n this.disconnected = true;\n this.monitor.recordDisconnect();\n return this.subscriptions.notifyAll(\"disconnected\", {\n willAttemptReconnect: this.monitor.isRunning()\n });\n },\n error: function error() {\n logger.log(\"WebSocket onerror event\");\n }\n };\n\n var extend = function extend(object, properties) {\n if (properties != null) {\n for (var key in properties) {\n var value = properties[key];\n object[key] = value;\n }\n }\n\n return object;\n };\n\n var Subscription = function () {\n function Subscription(consumer) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var mixin = arguments[2];\n classCallCheck(this, Subscription);\n this.consumer = consumer;\n this.identifier = JSON.stringify(params);\n extend(this, mixin);\n }\n\n Subscription.prototype.perform = function perform(action) {\n var data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n data.action = action;\n return this.send(data);\n };\n\n Subscription.prototype.send = function send(data) {\n return this.consumer.send({\n command: \"message\",\n identifier: this.identifier,\n data: JSON.stringify(data)\n });\n };\n\n Subscription.prototype.unsubscribe = function unsubscribe() {\n return this.consumer.subscriptions.remove(this);\n };\n\n return Subscription;\n }();\n\n var Subscriptions = function () {\n function Subscriptions(consumer) {\n classCallCheck(this, Subscriptions);\n this.consumer = consumer;\n this.subscriptions = [];\n }\n\n Subscriptions.prototype.create = function create(channelName, mixin) {\n var channel = channelName;\n var params = (typeof channel === \"undefined\" ? \"undefined\" : _typeof(channel)) === \"object\" ? channel : {\n channel: channel\n };\n var subscription = new Subscription(this.consumer, params, mixin);\n return this.add(subscription);\n };\n\n Subscriptions.prototype.add = function add(subscription) {\n this.subscriptions.push(subscription);\n this.consumer.ensureActiveConnection();\n this.notify(subscription, \"initialized\");\n this.sendCommand(subscription, \"subscribe\");\n return subscription;\n };\n\n Subscriptions.prototype.remove = function remove(subscription) {\n this.forget(subscription);\n\n if (!this.findAll(subscription.identifier).length) {\n this.sendCommand(subscription, \"unsubscribe\");\n }\n\n return subscription;\n };\n\n Subscriptions.prototype.reject = function reject(identifier) {\n var _this = this;\n\n return this.findAll(identifier).map(function (subscription) {\n _this.forget(subscription);\n\n _this.notify(subscription, \"rejected\");\n\n return subscription;\n });\n };\n\n Subscriptions.prototype.forget = function forget(subscription) {\n this.subscriptions = this.subscriptions.filter(function (s) {\n return s !== subscription;\n });\n return subscription;\n };\n\n Subscriptions.prototype.findAll = function findAll(identifier) {\n return this.subscriptions.filter(function (s) {\n return s.identifier === identifier;\n });\n };\n\n Subscriptions.prototype.reload = function reload() {\n var _this2 = this;\n\n return this.subscriptions.map(function (subscription) {\n return _this2.sendCommand(subscription, \"subscribe\");\n });\n };\n\n Subscriptions.prototype.notifyAll = function notifyAll(callbackName) {\n var _this3 = this;\n\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return this.subscriptions.map(function (subscription) {\n return _this3.notify.apply(_this3, [subscription, callbackName].concat(args));\n });\n };\n\n Subscriptions.prototype.notify = function notify(subscription, callbackName) {\n for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n args[_key2 - 2] = arguments[_key2];\n }\n\n var subscriptions = void 0;\n\n if (typeof subscription === \"string\") {\n subscriptions = this.findAll(subscription);\n } else {\n subscriptions = [subscription];\n }\n\n return subscriptions.map(function (subscription) {\n return typeof subscription[callbackName] === \"function\" ? subscription[callbackName].apply(subscription, args) : undefined;\n });\n };\n\n Subscriptions.prototype.sendCommand = function sendCommand(subscription, command) {\n var identifier = subscription.identifier;\n return this.consumer.send({\n command: command,\n identifier: identifier\n });\n };\n\n return Subscriptions;\n }();\n\n var Consumer = function () {\n function Consumer(url) {\n classCallCheck(this, Consumer);\n this._url = url;\n this.subscriptions = new Subscriptions(this);\n this.connection = new Connection(this);\n }\n\n Consumer.prototype.send = function send(data) {\n return this.connection.send(data);\n };\n\n Consumer.prototype.connect = function connect() {\n return this.connection.open();\n };\n\n Consumer.prototype.disconnect = function disconnect() {\n return this.connection.close({\n allowReconnect: false\n });\n };\n\n Consumer.prototype.ensureActiveConnection = function ensureActiveConnection() {\n if (!this.connection.isActive()) {\n return this.connection.open();\n }\n };\n\n createClass(Consumer, [{\n key: \"url\",\n get: function get$$1() {\n return createWebSocketURL(this._url);\n }\n }]);\n return Consumer;\n }();\n\n function createWebSocketURL(url) {\n if (typeof url === \"function\") {\n url = url();\n }\n\n if (url && !/^wss?:/i.test(url)) {\n var a = document.createElement(\"a\");\n a.href = url;\n a.href = a.href;\n a.protocol = a.protocol.replace(\"http\", \"ws\");\n return a.href;\n } else {\n return url;\n }\n }\n\n function createConsumer() {\n var url = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getConfig(\"url\") || INTERNAL.default_mount_path;\n return new Consumer(url);\n }\n\n function getConfig(name) {\n var element = document.head.querySelector(\"meta[name='action-cable-\" + name + \"']\");\n\n if (element) {\n return element.getAttribute(\"content\");\n }\n }\n\n exports.Connection = Connection;\n exports.ConnectionMonitor = ConnectionMonitor;\n exports.Consumer = Consumer;\n exports.INTERNAL = INTERNAL;\n exports.Subscription = Subscription;\n exports.Subscriptions = Subscriptions;\n exports.adapters = adapters;\n exports.createWebSocketURL = createWebSocketURL;\n exports.logger = logger;\n exports.createConsumer = createConsumer;\n exports.getConfig = getConfig;\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n});","function importAll(r) {\n r.keys().forEach(r)\n}\n\nimportAll(require.context(\"../shared/\", true, /\\.js$/))\n","//! moment.js locale configuration\n//! locale : Afrikaans [af]\n//! author : Werner Mollentze : https://github.com/wernerm\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var af = moment.defineLocale('af', {\n months: 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split('_'),\n monthsShort: 'Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'),\n weekdays: 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split('_'),\n weekdaysShort: 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'),\n weekdaysMin: 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'),\n meridiemParse: /vm|nm/i,\n isPM: function (input) {\n return /^nm$/i.test(input);\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'vm' : 'VM';\n } else {\n return isLower ? 'nm' : 'NM';\n }\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Vandag om] LT',\n nextDay: '[Môre om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[Gister om] LT',\n lastWeek: '[Laas] dddd [om] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'oor %s',\n past: '%s gelede',\n s: \"'n paar sekondes\",\n ss: '%d sekondes',\n m: \"'n minuut\",\n mm: '%d minute',\n h: \"'n uur\",\n hh: '%d ure',\n d: \"'n dag\",\n dd: '%d dae',\n M: \"'n maand\",\n MM: '%d maande',\n y: \"'n jaar\",\n yy: '%d jaar'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return number + (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de'); // Thanks to Joris Röling : https://github.com/jjupiter\n },\n week: {\n dow: 1,\n // Maandag is die eerste dag van die week.\n doy: 4 // Die week wat die 4de Januarie bevat is die eerste week van die jaar.\n\n }\n });\n return af;\n});","//! moment.js locale configuration\n//! locale : Arabic [ar]\n//! author : Abdel Said: https://github.com/abdelsaid\n//! author : Ahmed Elkhatib\n//! author : forabi https://github.com/forabi\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var symbolMap = {\n 1: '١',\n 2: '٢',\n 3: '٣',\n 4: '٤',\n 5: '٥',\n 6: '٦',\n 7: '٧',\n 8: '٨',\n 9: '٩',\n 0: '٠'\n },\n numberMap = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0'\n },\n pluralForm = function (n) {\n return n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5;\n },\n plurals = {\n s: ['أقل من ثانية', 'ثانية واحدة', ['ثانيتان', 'ثانيتين'], '%d ثوان', '%d ثانية', '%d ثانية'],\n m: ['أقل من دقيقة', 'دقيقة واحدة', ['دقيقتان', 'دقيقتين'], '%d دقائق', '%d دقيقة', '%d دقيقة'],\n h: ['أقل من ساعة', 'ساعة واحدة', ['ساعتان', 'ساعتين'], '%d ساعات', '%d ساعة', '%d ساعة'],\n d: ['أقل من يوم', 'يوم واحد', ['يومان', 'يومين'], '%d أيام', '%d يومًا', '%d يوم'],\n M: ['أقل من شهر', 'شهر واحد', ['شهران', 'شهرين'], '%d أشهر', '%d شهرا', '%d شهر'],\n y: ['أقل من عام', 'عام واحد', ['عامان', 'عامين'], '%d أعوام', '%d عامًا', '%d عام']\n },\n pluralize = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n\n return str.replace(/%d/i, number);\n };\n },\n months = ['يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', 'نوفمبر', 'ديسمبر'];\n\n var ar = moment.defineLocale('ar', {\n months: months,\n monthsShort: months,\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/\\u200FM/\\u200FYYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'بعد %s',\n past: 'منذ %s',\n s: pluralize('s'),\n ss: pluralize('s'),\n m: pluralize('m'),\n mm: pluralize('m'),\n h: pluralize('h'),\n hh: pluralize('h'),\n d: pluralize('d'),\n dd: pluralize('d'),\n M: pluralize('M'),\n MM: pluralize('M'),\n y: pluralize('y'),\n yy: pluralize('y')\n },\n preparse: function (string) {\n return string.replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n }).replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n }).replace(/,/g, '،');\n },\n week: {\n dow: 6,\n // Saturday is the first day of the week.\n doy: 12 // The week that contains Jan 12th is the first week of the year.\n\n }\n });\n return ar;\n});","//! moment.js locale configuration\n//! locale : Arabic (Algeria) [ar-dz]\n//! author : Amine Roukh: https://github.com/Amine27\n//! author : Abdel Said: https://github.com/abdelsaid\n//! author : Ahmed Elkhatib\n//! author : forabi https://github.com/forabi\n//! author : Noureddine LOUAHEDJ : https://github.com/noureddinem\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var pluralForm = function (n) {\n return n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5;\n },\n plurals = {\n s: ['أقل من ثانية', 'ثانية واحدة', ['ثانيتان', 'ثانيتين'], '%d ثوان', '%d ثانية', '%d ثانية'],\n m: ['أقل من دقيقة', 'دقيقة واحدة', ['دقيقتان', 'دقيقتين'], '%d دقائق', '%d دقيقة', '%d دقيقة'],\n h: ['أقل من ساعة', 'ساعة واحدة', ['ساعتان', 'ساعتين'], '%d ساعات', '%d ساعة', '%d ساعة'],\n d: ['أقل من يوم', 'يوم واحد', ['يومان', 'يومين'], '%d أيام', '%d يومًا', '%d يوم'],\n M: ['أقل من شهر', 'شهر واحد', ['شهران', 'شهرين'], '%d أشهر', '%d شهرا', '%d شهر'],\n y: ['أقل من عام', 'عام واحد', ['عامان', 'عامين'], '%d أعوام', '%d عامًا', '%d عام']\n },\n pluralize = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n\n return str.replace(/%d/i, number);\n };\n },\n months = ['جانفي', 'فيفري', 'مارس', 'أفريل', 'ماي', 'جوان', 'جويلية', 'أوت', 'سبتمبر', 'أكتوبر', 'نوفمبر', 'ديسمبر'];\n\n var arDz = moment.defineLocale('ar-dz', {\n months: months,\n monthsShort: months,\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/\\u200FM/\\u200FYYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'بعد %s',\n past: 'منذ %s',\n s: pluralize('s'),\n ss: pluralize('s'),\n m: pluralize('m'),\n mm: pluralize('m'),\n h: pluralize('h'),\n hh: pluralize('h'),\n d: pluralize('d'),\n dd: pluralize('d'),\n M: pluralize('M'),\n MM: pluralize('M'),\n y: pluralize('y'),\n yy: pluralize('y')\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 0,\n // Sunday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return arDz;\n});","//! moment.js locale configuration\n//! locale : Arabic (Kuwait) [ar-kw]\n//! author : Nusret Parlak: https://github.com/nusretparlak\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var arKw = moment.defineLocale('ar-kw', {\n months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),\n monthsShort: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),\n weekdays: 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات'\n },\n week: {\n dow: 0,\n // Sunday is the first day of the week.\n doy: 12 // The week that contains Jan 12th is the first week of the year.\n\n }\n });\n return arKw;\n});","//! moment.js locale configuration\n//! locale : Arabic (Libya) [ar-ly]\n//! author : Ali Hmer: https://github.com/kikoanis\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var symbolMap = {\n 1: '1',\n 2: '2',\n 3: '3',\n 4: '4',\n 5: '5',\n 6: '6',\n 7: '7',\n 8: '8',\n 9: '9',\n 0: '0'\n },\n pluralForm = function (n) {\n return n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5;\n },\n plurals = {\n s: ['أقل من ثانية', 'ثانية واحدة', ['ثانيتان', 'ثانيتين'], '%d ثوان', '%d ثانية', '%d ثانية'],\n m: ['أقل من دقيقة', 'دقيقة واحدة', ['دقيقتان', 'دقيقتين'], '%d دقائق', '%d دقيقة', '%d دقيقة'],\n h: ['أقل من ساعة', 'ساعة واحدة', ['ساعتان', 'ساعتين'], '%d ساعات', '%d ساعة', '%d ساعة'],\n d: ['أقل من يوم', 'يوم واحد', ['يومان', 'يومين'], '%d أيام', '%d يومًا', '%d يوم'],\n M: ['أقل من شهر', 'شهر واحد', ['شهران', 'شهرين'], '%d أشهر', '%d شهرا', '%d شهر'],\n y: ['أقل من عام', 'عام واحد', ['عامان', 'عامين'], '%d أعوام', '%d عامًا', '%d عام']\n },\n pluralize = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n\n return str.replace(/%d/i, number);\n };\n },\n months = ['يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', 'نوفمبر', 'ديسمبر'];\n\n var arLy = moment.defineLocale('ar-ly', {\n months: months,\n monthsShort: months,\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/\\u200FM/\\u200FYYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'بعد %s',\n past: 'منذ %s',\n s: pluralize('s'),\n ss: pluralize('s'),\n m: pluralize('m'),\n mm: pluralize('m'),\n h: pluralize('h'),\n hh: pluralize('h'),\n d: pluralize('d'),\n dd: pluralize('d'),\n M: pluralize('M'),\n MM: pluralize('M'),\n y: pluralize('y'),\n yy: pluralize('y')\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n }).replace(/,/g, '،');\n },\n week: {\n dow: 6,\n // Saturday is the first day of the week.\n doy: 12 // The week that contains Jan 12th is the first week of the year.\n\n }\n });\n return arLy;\n});","//! moment.js locale configuration\n//! locale : Arabic (Morocco) [ar-ma]\n//! author : ElFadili Yassine : https://github.com/ElFadiliY\n//! author : Abdel Said : https://github.com/abdelsaid\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var arMa = moment.defineLocale('ar-ma', {\n months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),\n monthsShort: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات'\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return arMa;\n});","//! moment.js locale configuration\n//! locale : Arabic (Saudi Arabia) [ar-sa]\n//! author : Suhail Alkowaileet : https://github.com/xsoh\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var symbolMap = {\n 1: '١',\n 2: '٢',\n 3: '٣',\n 4: '٤',\n 5: '٥',\n 6: '٦',\n 7: '٧',\n 8: '٨',\n 9: '٩',\n 0: '٠'\n },\n numberMap = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0'\n };\n var arSa = moment.defineLocale('ar-sa', {\n months: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),\n monthsShort: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات'\n },\n preparse: function (string) {\n return string.replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n }).replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n }).replace(/,/g, '،');\n },\n week: {\n dow: 0,\n // Sunday is the first day of the week.\n doy: 6 // The week that contains Jan 6th is the first week of the year.\n\n }\n });\n return arSa;\n});","//! moment.js locale configuration\n//! locale : Arabic (Tunisia) [ar-tn]\n//! author : Nader Toukabri : https://github.com/naderio\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var arTn = moment.defineLocale('ar-tn', {\n months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),\n monthsShort: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات'\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return arTn;\n});","//! moment.js locale configuration\n//! locale : Azerbaijani [az]\n//! author : topchiyev : https://github.com/topchiyev\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var suffixes = {\n 1: '-inci',\n 5: '-inci',\n 8: '-inci',\n 70: '-inci',\n 80: '-inci',\n 2: '-nci',\n 7: '-nci',\n 20: '-nci',\n 50: '-nci',\n 3: '-üncü',\n 4: '-üncü',\n 100: '-üncü',\n 6: '-ncı',\n 9: '-uncu',\n 10: '-uncu',\n 30: '-uncu',\n 60: '-ıncı',\n 90: '-ıncı'\n };\n var az = moment.defineLocale('az', {\n months: 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split('_'),\n monthsShort: 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'),\n weekdays: 'Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split('_'),\n weekdaysShort: 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'),\n weekdaysMin: 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[bugün saat] LT',\n nextDay: '[sabah saat] LT',\n nextWeek: '[gələn həftə] dddd [saat] LT',\n lastDay: '[dünən] LT',\n lastWeek: '[keçən həftə] dddd [saat] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s sonra',\n past: '%s əvvəl',\n s: 'bir neçə saniyə',\n ss: '%d saniyə',\n m: 'bir dəqiqə',\n mm: '%d dəqiqə',\n h: 'bir saat',\n hh: '%d saat',\n d: 'bir gün',\n dd: '%d gün',\n M: 'bir ay',\n MM: '%d ay',\n y: 'bir il',\n yy: '%d il'\n },\n meridiemParse: /gecə|səhər|gündüz|axşam/,\n isPM: function (input) {\n return /^(gündüz|axşam)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'gecə';\n } else if (hour < 12) {\n return 'səhər';\n } else if (hour < 17) {\n return 'gündüz';\n } else {\n return 'axşam';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,\n ordinal: function (number) {\n if (number === 0) {\n // special case for zero\n return number + '-ıncı';\n }\n\n var a = number % 10,\n b = number % 100 - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n\n }\n });\n return az;\n});","//! moment.js locale configuration\n//! locale : Belarusian [be]\n//! author : Dmitry Demidov : https://github.com/demidov91\n//! author: Praleska: http://praleska.pro/\n//! Author : Menelion Elensúle : https://github.com/Oire\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11 ? forms[0] : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2];\n }\n\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',\n mm: withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін',\n hh: withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін',\n dd: 'дзень_дні_дзён',\n MM: 'месяц_месяцы_месяцаў',\n yy: 'год_гады_гадоў'\n };\n\n if (key === 'm') {\n return withoutSuffix ? 'хвіліна' : 'хвіліну';\n } else if (key === 'h') {\n return withoutSuffix ? 'гадзіна' : 'гадзіну';\n } else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n\n var be = moment.defineLocale('be', {\n months: {\n format: 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split('_'),\n standalone: 'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split('_')\n },\n monthsShort: 'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split('_'),\n weekdays: {\n format: 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split('_'),\n standalone: 'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split('_'),\n isFormat: /\\[ ?[Ууў] ?(?:мінулую|наступную)? ?\\] ?dddd/\n },\n weekdaysShort: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),\n weekdaysMin: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY г.',\n LLL: 'D MMMM YYYY г., HH:mm',\n LLLL: 'dddd, D MMMM YYYY г., HH:mm'\n },\n calendar: {\n sameDay: '[Сёння ў] LT',\n nextDay: '[Заўтра ў] LT',\n lastDay: '[Учора ў] LT',\n nextWeek: function () {\n return '[У] dddd [ў] LT';\n },\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 5:\n case 6:\n return '[У мінулую] dddd [ў] LT';\n\n case 1:\n case 2:\n case 4:\n return '[У мінулы] dddd [ў] LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'праз %s',\n past: '%s таму',\n s: 'некалькі секунд',\n m: relativeTimeWithPlural,\n mm: relativeTimeWithPlural,\n h: relativeTimeWithPlural,\n hh: relativeTimeWithPlural,\n d: 'дзень',\n dd: relativeTimeWithPlural,\n M: 'месяц',\n MM: relativeTimeWithPlural,\n y: 'год',\n yy: relativeTimeWithPlural\n },\n meridiemParse: /ночы|раніцы|дня|вечара/,\n isPM: function (input) {\n return /^(дня|вечара)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночы';\n } else if (hour < 12) {\n return 'раніцы';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечара';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(і|ы|га)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n case 'w':\n case 'W':\n return (number % 10 === 2 || number % 10 === 3) && number % 100 !== 12 && number % 100 !== 13 ? number + '-і' : number + '-ы';\n\n case 'D':\n return number + '-га';\n\n default:\n return number;\n }\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n\n }\n });\n return be;\n});","//! moment.js locale configuration\n//! locale : Bulgarian [bg]\n//! author : Krasen Borisov : https://github.com/kraz\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var bg = moment.defineLocale('bg', {\n months: 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split('_'),\n monthsShort: 'яну_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'),\n weekdays: 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split('_'),\n weekdaysShort: 'нед_пон_вто_сря_чет_пет_съб'.split('_'),\n weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm'\n },\n calendar: {\n sameDay: '[Днес в] LT',\n nextDay: '[Утре в] LT',\n nextWeek: 'dddd [в] LT',\n lastDay: '[Вчера в] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 6:\n return '[Миналата] dddd [в] LT';\n\n case 1:\n case 2:\n case 4:\n case 5:\n return '[Миналия] dddd [в] LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'след %s',\n past: 'преди %s',\n s: 'няколко секунди',\n ss: '%d секунди',\n m: 'минута',\n mm: '%d минути',\n h: 'час',\n hh: '%d часа',\n d: 'ден',\n dd: '%d дена',\n w: 'седмица',\n ww: '%d седмици',\n M: 'месец',\n MM: '%d месеца',\n y: 'година',\n yy: '%d години'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n ordinal: function (number) {\n var lastDigit = number % 10,\n last2Digits = number % 100;\n\n if (number === 0) {\n return number + '-ев';\n } else if (last2Digits === 0) {\n return number + '-ен';\n } else if (last2Digits > 10 && last2Digits < 20) {\n return number + '-ти';\n } else if (lastDigit === 1) {\n return number + '-ви';\n } else if (lastDigit === 2) {\n return number + '-ри';\n } else if (lastDigit === 7 || lastDigit === 8) {\n return number + '-ми';\n } else {\n return number + '-ти';\n }\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n\n }\n });\n return bg;\n});","//! moment.js locale configuration\n//! locale : Bambara [bm]\n//! author : Estelle Comment : https://github.com/estellecomment\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var bm = moment.defineLocale('bm', {\n months: 'Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo'.split('_'),\n monthsShort: 'Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des'.split('_'),\n weekdays: 'Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri'.split('_'),\n weekdaysShort: 'Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib'.split('_'),\n weekdaysMin: 'Ka_Nt_Ta_Ar_Al_Ju_Si'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'MMMM [tile] D [san] YYYY',\n LLL: 'MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',\n LLLL: 'dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm'\n },\n calendar: {\n sameDay: '[Bi lɛrɛ] LT',\n nextDay: '[Sini lɛrɛ] LT',\n nextWeek: 'dddd [don lɛrɛ] LT',\n lastDay: '[Kunu lɛrɛ] LT',\n lastWeek: 'dddd [tɛmɛnen lɛrɛ] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s kɔnɔ',\n past: 'a bɛ %s bɔ',\n s: 'sanga dama dama',\n ss: 'sekondi %d',\n m: 'miniti kelen',\n mm: 'miniti %d',\n h: 'lɛrɛ kelen',\n hh: 'lɛrɛ %d',\n d: 'tile kelen',\n dd: 'tile %d',\n M: 'kalo kelen',\n MM: 'kalo %d',\n y: 'san kelen',\n yy: 'san %d'\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return bm;\n});","//! moment.js locale configuration\n//! locale : Bengali [bn]\n//! author : Kaushik Gandhi : https://github.com/kaushikgandhi\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var symbolMap = {\n 1: '১',\n 2: '২',\n 3: '৩',\n 4: '৪',\n 5: '৫',\n 6: '৬',\n 7: '৭',\n 8: '৮',\n 9: '৯',\n 0: '০'\n },\n numberMap = {\n '১': '1',\n '২': '2',\n '৩': '3',\n '৪': '4',\n '৫': '5',\n '৬': '6',\n '৭': '7',\n '৮': '8',\n '৯': '9',\n '০': '0'\n };\n var bn = moment.defineLocale('bn', {\n months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split('_'),\n monthsShort: 'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split('_'),\n weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split('_'),\n weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),\n weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'),\n longDateFormat: {\n LT: 'A h:mm সময়',\n LTS: 'A h:mm:ss সময়',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm সময়',\n LLLL: 'dddd, D MMMM YYYY, A h:mm সময়'\n },\n calendar: {\n sameDay: '[আজ] LT',\n nextDay: '[আগামীকাল] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[গতকাল] LT',\n lastWeek: '[গত] dddd, LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s পরে',\n past: '%s আগে',\n s: 'কয়েক সেকেন্ড',\n ss: '%d সেকেন্ড',\n m: 'এক মিনিট',\n mm: '%d মিনিট',\n h: 'এক ঘন্টা',\n hh: '%d ঘন্টা',\n d: 'এক দিন',\n dd: '%d দিন',\n M: 'এক মাস',\n MM: '%d মাস',\n y: 'এক বছর',\n yy: '%d বছর'\n },\n preparse: function (string) {\n return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /রাত|সকাল|দুপুর|বিকাল|রাত/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n\n if (meridiem === 'রাত' && hour >= 4 || meridiem === 'দুপুর' && hour < 5 || meridiem === 'বিকাল') {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'রাত';\n } else if (hour < 10) {\n return 'সকাল';\n } else if (hour < 17) {\n return 'দুপুর';\n } else if (hour < 20) {\n return 'বিকাল';\n } else {\n return 'রাত';\n }\n },\n week: {\n dow: 0,\n // Sunday is the first day of the week.\n doy: 6 // The week that contains Jan 6th is the first week of the year.\n\n }\n });\n return bn;\n});","//! moment.js locale configuration\n//! locale : Bengali (Bangladesh) [bn-bd]\n//! author : Asraf Hossain Patoary : https://github.com/ashwoolford\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var symbolMap = {\n 1: '১',\n 2: '২',\n 3: '৩',\n 4: '৪',\n 5: '৫',\n 6: '৬',\n 7: '৭',\n 8: '৮',\n 9: '৯',\n 0: '০'\n },\n numberMap = {\n '১': '1',\n '২': '2',\n '৩': '3',\n '৪': '4',\n '৫': '5',\n '৬': '6',\n '৭': '7',\n '৮': '8',\n '৯': '9',\n '০': '0'\n };\n var bnBd = moment.defineLocale('bn-bd', {\n months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split('_'),\n monthsShort: 'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split('_'),\n weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split('_'),\n weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),\n weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'),\n longDateFormat: {\n LT: 'A h:mm সময়',\n LTS: 'A h:mm:ss সময়',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm সময়',\n LLLL: 'dddd, D MMMM YYYY, A h:mm সময়'\n },\n calendar: {\n sameDay: '[আজ] LT',\n nextDay: '[আগামীকাল] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[গতকাল] LT',\n lastWeek: '[গত] dddd, LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s পরে',\n past: '%s আগে',\n s: 'কয়েক সেকেন্ড',\n ss: '%d সেকেন্ড',\n m: 'এক মিনিট',\n mm: '%d মিনিট',\n h: 'এক ঘন্টা',\n hh: '%d ঘন্টা',\n d: 'এক দিন',\n dd: '%d দিন',\n M: 'এক মাস',\n MM: '%d মাস',\n y: 'এক বছর',\n yy: '%d বছর'\n },\n preparse: function (string) {\n return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /রাত|ভোর|সকাল|দুপুর|বিকাল|সন্ধ্যা|রাত/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n\n if (meridiem === 'রাত') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ভোর') {\n return hour;\n } else if (meridiem === 'সকাল') {\n return hour;\n } else if (meridiem === 'দুপুর') {\n return hour >= 3 ? hour : hour + 12;\n } else if (meridiem === 'বিকাল') {\n return hour + 12;\n } else if (meridiem === 'সন্ধ্যা') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'রাত';\n } else if (hour < 6) {\n return 'ভোর';\n } else if (hour < 12) {\n return 'সকাল';\n } else if (hour < 15) {\n return 'দুপুর';\n } else if (hour < 18) {\n return 'বিকাল';\n } else if (hour < 20) {\n return 'সন্ধ্যা';\n } else {\n return 'রাত';\n }\n },\n week: {\n dow: 0,\n // Sunday is the first day of the week.\n doy: 6 // The week that contains Jan 6th is the first week of the year.\n\n }\n });\n return bnBd;\n});","//! moment.js locale configuration\n//! locale : Tibetan [bo]\n//! author : Thupten N. Chakrishar : https://github.com/vajradog\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var symbolMap = {\n 1: '༡',\n 2: '༢',\n 3: '༣',\n 4: '༤',\n 5: '༥',\n 6: '༦',\n 7: '༧',\n 8: '༨',\n 9: '༩',\n 0: '༠'\n },\n numberMap = {\n '༡': '1',\n '༢': '2',\n '༣': '3',\n '༤': '4',\n '༥': '5',\n '༦': '6',\n '༧': '7',\n '༨': '8',\n '༩': '9',\n '༠': '0'\n };\n var bo = moment.defineLocale('bo', {\n months: 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split('_'),\n monthsShort: 'ཟླ་1_ཟླ་2_ཟླ་3_ཟླ་4_ཟླ་5_ཟླ་6_ཟླ་7_ཟླ་8_ཟླ་9_ཟླ་10_ཟླ་11_ཟླ་12'.split('_'),\n monthsShortRegex: /^(ཟླ་\\d{1,2})/,\n monthsParseExact: true,\n weekdays: 'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split('_'),\n weekdaysShort: 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split('_'),\n weekdaysMin: 'ཉི_ཟླ_མིག_ལྷག_ཕུར_སངས_སྤེན'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm'\n },\n calendar: {\n sameDay: '[དི་རིང] LT',\n nextDay: '[སང་ཉིན] LT',\n nextWeek: '[བདུན་ཕྲག་རྗེས་མ], LT',\n lastDay: '[ཁ་སང] LT',\n lastWeek: '[བདུན་ཕྲག་མཐའ་མ] dddd, LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s ལ་',\n past: '%s སྔན་ལ',\n s: 'ལམ་སང',\n ss: '%d སྐར་ཆ།',\n m: 'སྐར་མ་གཅིག',\n mm: '%d སྐར་མ',\n h: 'ཆུ་ཚོད་གཅིག',\n hh: '%d ཆུ་ཚོད',\n d: 'ཉིན་གཅིག',\n dd: '%d ཉིན་',\n M: 'ཟླ་བ་གཅིག',\n MM: '%d ཟླ་བ',\n y: 'ལོ་གཅིག',\n yy: '%d ལོ'\n },\n preparse: function (string) {\n return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n\n if (meridiem === 'མཚན་མོ' && hour >= 4 || meridiem === 'ཉིན་གུང' && hour < 5 || meridiem === 'དགོང་དག') {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'མཚན་མོ';\n } else if (hour < 10) {\n return 'ཞོགས་ཀས';\n } else if (hour < 17) {\n return 'ཉིན་གུང';\n } else if (hour < 20) {\n return 'དགོང་དག';\n } else {\n return 'མཚན་མོ';\n }\n },\n week: {\n dow: 0,\n // Sunday is the first day of the week.\n doy: 6 // The week that contains Jan 6th is the first week of the year.\n\n }\n });\n return bo;\n});","//! moment.js locale configuration\n//! locale : Breton [br]\n//! author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n function relativeTimeWithMutation(number, withoutSuffix, key) {\n var format = {\n mm: 'munutenn',\n MM: 'miz',\n dd: 'devezh'\n };\n return number + ' ' + mutation(format[key], number);\n }\n\n function specialMutationForYears(number) {\n switch (lastNumber(number)) {\n case 1:\n case 3:\n case 4:\n case 5:\n case 9:\n return number + ' bloaz';\n\n default:\n return number + ' vloaz';\n }\n }\n\n function lastNumber(number) {\n if (number > 9) {\n return lastNumber(number % 10);\n }\n\n return number;\n }\n\n function mutation(text, number) {\n if (number === 2) {\n return softMutation(text);\n }\n\n return text;\n }\n\n function softMutation(text) {\n var mutationTable = {\n m: 'v',\n b: 'v',\n d: 'z'\n };\n\n if (mutationTable[text.charAt(0)] === undefined) {\n return text;\n }\n\n return mutationTable[text.charAt(0)] + text.substring(1);\n }\n\n var monthsParse = [/^gen/i, /^c[ʼ\\']hwe/i, /^meu/i, /^ebr/i, /^mae/i, /^(mez|eve)/i, /^gou/i, /^eos/i, /^gwe/i, /^her/i, /^du/i, /^ker/i],\n monthsRegex = /^(genver|c[ʼ\\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu|gen|c[ʼ\\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,\n monthsStrictRegex = /^(genver|c[ʼ\\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu)/i,\n monthsShortStrictRegex = /^(gen|c[ʼ\\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,\n fullWeekdaysParse = [/^sul/i, /^lun/i, /^meurzh/i, /^merc[ʼ\\']her/i, /^yaou/i, /^gwener/i, /^sadorn/i],\n shortWeekdaysParse = [/^Sul/i, /^Lun/i, /^Meu/i, /^Mer/i, /^Yao/i, /^Gwe/i, /^Sad/i],\n minWeekdaysParse = [/^Su/i, /^Lu/i, /^Me([^r]|$)/i, /^Mer/i, /^Ya/i, /^Gw/i, /^Sa/i];\n var br = moment.defineLocale('br', {\n months: 'Genver_Cʼhwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split('_'),\n monthsShort: 'Gen_Cʼhwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'),\n weekdays: 'Sul_Lun_Meurzh_Mercʼher_Yaou_Gwener_Sadorn'.split('_'),\n weekdaysShort: 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'),\n weekdaysMin: 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'),\n weekdaysParse: minWeekdaysParse,\n fullWeekdaysParse: fullWeekdaysParse,\n shortWeekdaysParse: shortWeekdaysParse,\n minWeekdaysParse: minWeekdaysParse,\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: monthsStrictRegex,\n monthsShortStrictRegex: monthsShortStrictRegex,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [a viz] MMMM YYYY',\n LLL: 'D [a viz] MMMM YYYY HH:mm',\n LLLL: 'dddd, D [a viz] MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Hiziv da] LT',\n nextDay: '[Warcʼhoazh da] LT',\n nextWeek: 'dddd [da] LT',\n lastDay: '[Decʼh da] LT',\n lastWeek: 'dddd [paset da] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'a-benn %s',\n past: '%s ʼzo',\n s: 'un nebeud segondennoù',\n ss: '%d eilenn',\n m: 'ur vunutenn',\n mm: relativeTimeWithMutation,\n h: 'un eur',\n hh: '%d eur',\n d: 'un devezh',\n dd: relativeTimeWithMutation,\n M: 'ur miz',\n MM: relativeTimeWithMutation,\n y: 'ur bloaz',\n yy: specialMutationForYears\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(añ|vet)/,\n ordinal: function (number) {\n var output = number === 1 ? 'añ' : 'vet';\n return number + output;\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n },\n meridiemParse: /a.m.|g.m./,\n // goude merenn | a-raok merenn\n isPM: function (token) {\n return token === 'g.m.';\n },\n meridiem: function (hour, minute, isLower) {\n return hour < 12 ? 'a.m.' : 'g.m.';\n }\n });\n return br;\n});","//! moment.js locale configuration\n//! locale : Bosnian [bs]\n//! author : Nedim Cholich : https://github.com/frontyard\n//! based on (hr) translation by Bojan Marković\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n\n switch (key) {\n case 'ss':\n if (number === 1) {\n result += 'sekunda';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sekunde';\n } else {\n result += 'sekundi';\n }\n\n return result;\n\n case 'm':\n return withoutSuffix ? 'jedna minuta' : 'jedne minute';\n\n case 'mm':\n if (number === 1) {\n result += 'minuta';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'minute';\n } else {\n result += 'minuta';\n }\n\n return result;\n\n case 'h':\n return withoutSuffix ? 'jedan sat' : 'jednog sata';\n\n case 'hh':\n if (number === 1) {\n result += 'sat';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sata';\n } else {\n result += 'sati';\n }\n\n return result;\n\n case 'dd':\n if (number === 1) {\n result += 'dan';\n } else {\n result += 'dana';\n }\n\n return result;\n\n case 'MM':\n if (number === 1) {\n result += 'mjesec';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'mjeseca';\n } else {\n result += 'mjeseci';\n }\n\n return result;\n\n case 'yy':\n if (number === 1) {\n result += 'godina';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'godine';\n } else {\n result += 'godina';\n }\n\n return result;\n }\n }\n\n var bs = moment.defineLocale('bs', {\n months: 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split('_'),\n monthsShort: 'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split('_'),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'),\n weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm'\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n\n case 3:\n return '[u] [srijedu] [u] LT';\n\n case 6:\n return '[u] [subotu] [u] LT';\n\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[jučer u] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n return '[prošlu] dddd [u] LT';\n\n case 6:\n return '[prošle] [subote] [u] LT';\n\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prošli] dddd [u] LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'za %s',\n past: 'prije %s',\n s: 'par sekundi',\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: 'dan',\n dd: translate,\n M: 'mjesec',\n MM: translate,\n y: 'godinu',\n yy: translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n\n }\n });\n return bs;\n});","//! moment.js locale configuration\n//! locale : Catalan [ca]\n//! author : Juan G. Hurtado : https://github.com/juanghurtado\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var ca = moment.defineLocale('ca', {\n months: {\n standalone: 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split('_'),\n format: \"de gener_de febrer_de març_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre\".split('_'),\n isFormat: /D[oD]?(\\s)+MMMM/\n },\n monthsShort: 'gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.'.split('_'),\n monthsParseExact: true,\n weekdays: 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split('_'),\n weekdaysShort: 'dg._dl._dt._dc._dj._dv._ds.'.split('_'),\n weekdaysMin: 'dg_dl_dt_dc_dj_dv_ds'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [de] YYYY',\n ll: 'D MMM YYYY',\n LLL: 'D MMMM [de] YYYY [a les] H:mm',\n lll: 'D MMM YYYY, H:mm',\n LLLL: 'dddd D MMMM [de] YYYY [a les] H:mm',\n llll: 'ddd D MMM YYYY, H:mm'\n },\n calendar: {\n sameDay: function () {\n return '[avui a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n nextDay: function () {\n return '[demà a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n lastDay: function () {\n return '[ahir a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n lastWeek: function () {\n return '[el] dddd [passat a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: \"d'aquí %s\",\n past: 'fa %s',\n s: 'uns segons',\n ss: '%d segons',\n m: 'un minut',\n mm: '%d minuts',\n h: 'una hora',\n hh: '%d hores',\n d: 'un dia',\n dd: '%d dies',\n M: 'un mes',\n MM: '%d mesos',\n y: 'un any',\n yy: '%d anys'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(r|n|t|è|a)/,\n ordinal: function (number, period) {\n var output = number === 1 ? 'r' : number === 2 ? 'n' : number === 3 ? 'r' : number === 4 ? 't' : 'è';\n\n if (period === 'w' || period === 'W') {\n output = 'a';\n }\n\n return number + output;\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return ca;\n});","//! moment.js locale configuration\n//! locale : Chuvash [cv]\n//! author : Anatoly Mironov : https://github.com/mirontoli\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var cv = moment.defineLocale('cv', {\n months: 'кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split('_'),\n monthsShort: 'кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'),\n weekdays: 'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.split('_'),\n weekdaysShort: 'выр_тун_ытл_юн_кӗҫ_эрн_шӑм'.split('_'),\n weekdaysMin: 'вр_тн_ыт_юн_кҫ_эр_шм'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]',\n LLL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',\n LLLL: 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm'\n },\n calendar: {\n sameDay: '[Паян] LT [сехетре]',\n nextDay: '[Ыран] LT [сехетре]',\n lastDay: '[Ӗнер] LT [сехетре]',\n nextWeek: '[Ҫитес] dddd LT [сехетре]',\n lastWeek: '[Иртнӗ] dddd LT [сехетре]',\n sameElse: 'L'\n },\n relativeTime: {\n future: function (output) {\n var affix = /сехет$/i.exec(output) ? 'рен' : /ҫул$/i.exec(output) ? 'тан' : 'ран';\n return output + affix;\n },\n past: '%s каялла',\n s: 'пӗр-ик ҫеккунт',\n ss: '%d ҫеккунт',\n m: 'пӗр минут',\n mm: '%d минут',\n h: 'пӗр сехет',\n hh: '%d сехет',\n d: 'пӗр кун',\n dd: '%d кун',\n M: 'пӗр уйӑх',\n MM: '%d уйӑх',\n y: 'пӗр ҫул',\n yy: '%d ҫул'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-мӗш/,\n ordinal: '%d-мӗш',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n\n }\n });\n return cv;\n});","//! moment.js locale configuration\n//! locale : Welsh [cy]\n//! author : Robert Allen : https://github.com/robgallen\n//! author : https://github.com/ryangreaves\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var cy = moment.defineLocale('cy', {\n months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split('_'),\n monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split('_'),\n weekdays: 'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split('_'),\n weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'),\n weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'),\n weekdaysParseExact: true,\n // time formats are the same as en-gb\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Heddiw am] LT',\n nextDay: '[Yfory am] LT',\n nextWeek: 'dddd [am] LT',\n lastDay: '[Ddoe am] LT',\n lastWeek: 'dddd [diwethaf am] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'mewn %s',\n past: '%s yn ôl',\n s: 'ychydig eiliadau',\n ss: '%d eiliad',\n m: 'munud',\n mm: '%d munud',\n h: 'awr',\n hh: '%d awr',\n d: 'diwrnod',\n dd: '%d diwrnod',\n M: 'mis',\n MM: '%d mis',\n y: 'blwyddyn',\n yy: '%d flynedd'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,\n // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh\n ordinal: function (number) {\n var b = number,\n output = '',\n lookup = ['', 'af', 'il', 'ydd', 'ydd', 'ed', 'ed', 'ed', 'fed', 'fed', 'fed', // 1af to 10fed\n 'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'fed' // 11eg to 20fed\n ];\n\n if (b > 20) {\n if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) {\n output = 'fed'; // not 30ain, 70ain or 90ain\n } else {\n output = 'ain';\n }\n } else if (b > 0) {\n output = lookup[b];\n }\n\n return number + output;\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return cy;\n});","//! moment.js locale configuration\n//! locale : Danish [da]\n//! author : Ulrik Nielsen : https://github.com/mrbase\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var da = moment.defineLocale('da', {\n months: 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split('_'),\n monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n weekdaysShort: 'søn_man_tir_ons_tor_fre_lør'.split('_'),\n weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd [d.] D. MMMM YYYY [kl.] HH:mm'\n },\n calendar: {\n sameDay: '[i dag kl.] LT',\n nextDay: '[i morgen kl.] LT',\n nextWeek: 'på dddd [kl.] LT',\n lastDay: '[i går kl.] LT',\n lastWeek: '[i] dddd[s kl.] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'om %s',\n past: '%s siden',\n s: 'få sekunder',\n ss: '%d sekunder',\n m: 'et minut',\n mm: '%d minutter',\n h: 'en time',\n hh: '%d timer',\n d: 'en dag',\n dd: '%d dage',\n M: 'en måned',\n MM: '%d måneder',\n y: 'et år',\n yy: '%d år'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return da;\n});","//! moment.js locale configuration\n//! locale : German (Austria) [de-at]\n//! author : lluchs : https://github.com/lluchs\n//! author: Menelion Elensúle: https://github.com/Oire\n//! author : Martin Groller : https://github.com/MadMG\n//! author : Mikolaj Dadela : https://github.com/mik01aj\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n w: ['eine Woche', 'einer Woche'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren']\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n var deAt = moment.defineLocale('de-at', {\n months: 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),\n monthsShort: 'Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n monthsParseExact: true,\n weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),\n weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]'\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime,\n mm: '%d Minuten',\n h: processRelativeTime,\n hh: '%d Stunden',\n d: processRelativeTime,\n dd: processRelativeTime,\n w: processRelativeTime,\n ww: '%d Wochen',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return deAt;\n});","//! moment.js locale configuration\n//! locale : German (Switzerland) [de-ch]\n//! author : sschueller : https://github.com/sschueller\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n w: ['eine Woche', 'einer Woche'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren']\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n var deCh = moment.defineLocale('de-ch', {\n months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),\n monthsShort: 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n monthsParseExact: true,\n weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),\n weekdaysShort: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]'\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime,\n mm: '%d Minuten',\n h: processRelativeTime,\n hh: '%d Stunden',\n d: processRelativeTime,\n dd: processRelativeTime,\n w: processRelativeTime,\n ww: '%d Wochen',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return deCh;\n});","//! moment.js locale configuration\n//! locale : Maldivian [dv]\n//! author : Jawish Hameed : https://github.com/jawish\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var months = ['ޖެނުއަރީ', 'ފެބްރުއަރީ', 'މާރިޗު', 'އޭޕްރީލު', 'މޭ', 'ޖޫން', 'ޖުލައި', 'އޯގަސްޓު', 'ސެޕްޓެމްބަރު', 'އޮކްޓޯބަރު', 'ނޮވެމްބަރު', 'ޑިސެމްބަރު'],\n weekdays = ['އާދިއްތަ', 'ހޯމަ', 'އަންގާރަ', 'ބުދަ', 'ބުރާސްފަތި', 'ހުކުރު', 'ހޮނިހިރު'];\n var dv = moment.defineLocale('dv', {\n months: months,\n monthsShort: months,\n weekdays: weekdays,\n weekdaysShort: weekdays,\n weekdaysMin: 'އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/M/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n meridiemParse: /މކ|މފ/,\n isPM: function (input) {\n return 'މފ' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'މކ';\n } else {\n return 'މފ';\n }\n },\n calendar: {\n sameDay: '[މިއަދު] LT',\n nextDay: '[މާދަމާ] LT',\n nextWeek: 'dddd LT',\n lastDay: '[އިއްޔެ] LT',\n lastWeek: '[ފާއިތުވި] dddd LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'ތެރޭގައި %s',\n past: 'ކުރިން %s',\n s: 'ސިކުންތުކޮޅެއް',\n ss: 'd% ސިކުންތު',\n m: 'މިނިޓެއް',\n mm: 'މިނިޓު %d',\n h: 'ގަޑިއިރެއް',\n hh: 'ގަޑިއިރު %d',\n d: 'ދުވަހެއް',\n dd: 'ދުވަސް %d',\n M: 'މަހެއް',\n MM: 'މަސް %d',\n y: 'އަހަރެއް',\n yy: 'އަހަރު %d'\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 7,\n // Sunday is the first day of the week.\n doy: 12 // The week that contains Jan 12th is the first week of the year.\n\n }\n });\n return dv;\n});","//! moment.js locale configuration\n//! locale : English (Australia) [en-au]\n//! author : Jared Morse : https://github.com/jarcoal\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var enAu = moment.defineLocale('en-au', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A'\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output = ~~(number % 100 / 10) === 1 ? 'th' : b === 1 ? 'st' : b === 2 ? 'nd' : b === 3 ? 'rd' : 'th';\n return number + output;\n },\n week: {\n dow: 0,\n // Sunday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return enAu;\n});","//! moment.js locale configuration\n//! locale : English (Canada) [en-ca]\n//! author : Jonathan Abourbih : https://github.com/jonbca\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var enCa = moment.defineLocale('en-ca', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'YYYY-MM-DD',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A'\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output = ~~(number % 100 / 10) === 1 ? 'th' : b === 1 ? 'st' : b === 2 ? 'nd' : b === 3 ? 'rd' : 'th';\n return number + output;\n }\n });\n return enCa;\n});","//! moment.js locale configuration\n//! locale : English (Ireland) [en-ie]\n//! author : Chris Cartlidge : https://github.com/chriscartlidge\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var enIe = moment.defineLocale('en-ie', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output = ~~(number % 100 / 10) === 1 ? 'th' : b === 1 ? 'st' : b === 2 ? 'nd' : b === 3 ? 'rd' : 'th';\n return number + output;\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return enIe;\n});","//! moment.js locale configuration\n//! locale : English (Israel) [en-il]\n//! author : Chris Gedrim : https://github.com/chrisgedrim\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var enIl = moment.defineLocale('en-il', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output = ~~(number % 100 / 10) === 1 ? 'th' : b === 1 ? 'st' : b === 2 ? 'nd' : b === 3 ? 'rd' : 'th';\n return number + output;\n }\n });\n return enIl;\n});","//! moment.js locale configuration\n//! locale : English (India) [en-in]\n//! author : Jatin Agrawal : https://github.com/jatinag22\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var enIn = moment.defineLocale('en-in', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A'\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output = ~~(number % 100 / 10) === 1 ? 'th' : b === 1 ? 'st' : b === 2 ? 'nd' : b === 3 ? 'rd' : 'th';\n return number + output;\n },\n week: {\n dow: 0,\n // Sunday is the first day of the week.\n doy: 6 // The week that contains Jan 1st is the first week of the year.\n\n }\n });\n return enIn;\n});","//! moment.js locale configuration\n//! locale : English (New Zealand) [en-nz]\n//! author : Luke McGregor : https://github.com/lukemcgregor\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var enNz = moment.defineLocale('en-nz', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A'\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output = ~~(number % 100 / 10) === 1 ? 'th' : b === 1 ? 'st' : b === 2 ? 'nd' : b === 3 ? 'rd' : 'th';\n return number + output;\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return enNz;\n});","//! moment.js locale configuration\n//! locale : English (Singapore) [en-sg]\n//! author : Matthew Castrillon-Madrigal : https://github.com/techdimension\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var enSg = moment.defineLocale('en-sg', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output = ~~(number % 100 / 10) === 1 ? 'th' : b === 1 ? 'st' : b === 2 ? 'nd' : b === 3 ? 'rd' : 'th';\n return number + output;\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return enSg;\n});","//! moment.js locale configuration\n//! locale : Esperanto [eo]\n//! author : Colin Dean : https://github.com/colindean\n//! author : Mia Nordentoft Imperatori : https://github.com/miestasmia\n//! comment : miestasmia corrected the translation by colindean\n//! comment : Vivakvo corrected the translation by colindean and miestasmia\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var eo = moment.defineLocale('eo', {\n months: 'januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro'.split('_'),\n monthsShort: 'jan_feb_mart_apr_maj_jun_jul_aŭg_sept_okt_nov_dec'.split('_'),\n weekdays: 'dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato'.split('_'),\n weekdaysShort: 'dim_lun_mard_merk_ĵaŭ_ven_sab'.split('_'),\n weekdaysMin: 'di_lu_ma_me_ĵa_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: '[la] D[-an de] MMMM, YYYY',\n LLL: '[la] D[-an de] MMMM, YYYY HH:mm',\n LLLL: 'dddd[n], [la] D[-an de] MMMM, YYYY HH:mm',\n llll: 'ddd, [la] D[-an de] MMM, YYYY HH:mm'\n },\n meridiemParse: /[ap]\\.t\\.m/i,\n isPM: function (input) {\n return input.charAt(0).toLowerCase() === 'p';\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'p.t.m.' : 'P.T.M.';\n } else {\n return isLower ? 'a.t.m.' : 'A.T.M.';\n }\n },\n calendar: {\n sameDay: '[Hodiaŭ je] LT',\n nextDay: '[Morgaŭ je] LT',\n nextWeek: 'dddd[n je] LT',\n lastDay: '[Hieraŭ je] LT',\n lastWeek: '[pasintan] dddd[n je] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'post %s',\n past: 'antaŭ %s',\n s: 'kelkaj sekundoj',\n ss: '%d sekundoj',\n m: 'unu minuto',\n mm: '%d minutoj',\n h: 'unu horo',\n hh: '%d horoj',\n d: 'unu tago',\n //ne 'diurno', ĉar estas uzita por proksimumo\n dd: '%d tagoj',\n M: 'unu monato',\n MM: '%d monatoj',\n y: 'unu jaro',\n yy: '%d jaroj'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}a/,\n ordinal: '%da',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n\n }\n });\n return eo;\n});","//! moment.js locale configuration\n//! locale : Spanish (Dominican Republic) [es-do]\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_'),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [/^ene/i, /^feb/i, /^mar/i, /^abr/i, /^may/i, /^jun/i, /^jul/i, /^ago/i, /^sep/i, /^oct/i, /^nov/i, /^dic/i],\n monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n var esDo = moment.defineLocale('es-do', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY h:mm A',\n LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A'\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return '[el] dddd [pasado a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return esDo;\n});","//! moment.js locale configuration\n//! locale : Spanish (Mexico) [es-mx]\n//! author : JC Franco : https://github.com/jcfranco\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_'),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [/^ene/i, /^feb/i, /^mar/i, /^abr/i, /^may/i, /^jun/i, /^jul/i, /^ago/i, /^sep/i, /^oct/i, /^nov/i, /^dic/i],\n monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n var esMx = moment.defineLocale('es-mx', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm'\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return '[el] dddd [pasado a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 0,\n // Sunday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n },\n invalidDate: 'Fecha inválida'\n });\n return esMx;\n});","//! moment.js locale configuration\n//! locale : Spanish (United States) [es-us]\n//! author : bustta : https://github.com/bustta\n//! author : chrisrodz : https://github.com/chrisrodz\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_'),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [/^ene/i, /^feb/i, /^mar/i, /^abr/i, /^may/i, /^jun/i, /^jul/i, /^ago/i, /^sep/i, /^oct/i, /^nov/i, /^dic/i],\n monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n var esUs = moment.defineLocale('es-us', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'MM/DD/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY h:mm A',\n LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A'\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return '[el] dddd [pasado a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 0,\n // Sunday is the first day of the week.\n doy: 6 // The week that contains Jan 6th is the first week of the year.\n\n }\n });\n return esUs;\n});","//! moment.js locale configuration\n//! locale : Estonian [et]\n//! author : Henry Kehlmann : https://github.com/madhenry\n//! improvements : Illimar Tambek : https://github.com/ragulka\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['mõne sekundi', 'mõni sekund', 'paar sekundit'],\n ss: [number + 'sekundi', number + 'sekundit'],\n m: ['ühe minuti', 'üks minut'],\n mm: [number + ' minuti', number + ' minutit'],\n h: ['ühe tunni', 'tund aega', 'üks tund'],\n hh: [number + ' tunni', number + ' tundi'],\n d: ['ühe päeva', 'üks päev'],\n M: ['kuu aja', 'kuu aega', 'üks kuu'],\n MM: [number + ' kuu', number + ' kuud'],\n y: ['ühe aasta', 'aasta', 'üks aasta'],\n yy: [number + ' aasta', number + ' aastat']\n };\n\n if (withoutSuffix) {\n return format[key][2] ? format[key][2] : format[key][1];\n }\n\n return isFuture ? format[key][0] : format[key][1];\n }\n\n var et = moment.defineLocale('et', {\n months: 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split('_'),\n monthsShort: 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split('_'),\n weekdays: 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split('_'),\n weekdaysShort: 'P_E_T_K_N_R_L'.split('_'),\n weekdaysMin: 'P_E_T_K_N_R_L'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm'\n },\n calendar: {\n sameDay: '[Täna,] LT',\n nextDay: '[Homme,] LT',\n nextWeek: '[Järgmine] dddd LT',\n lastDay: '[Eile,] LT',\n lastWeek: '[Eelmine] dddd LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s pärast',\n past: '%s tagasi',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: '%d päeva',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return et;\n});","//! moment.js locale configuration\n//! locale : Basque [eu]\n//! author : Eneko Illarramendi : https://github.com/eillarra\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var eu = moment.defineLocale('eu', {\n months: 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split('_'),\n monthsShort: 'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split('_'),\n monthsParseExact: true,\n weekdays: 'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split('_'),\n weekdaysShort: 'ig._al._ar._az._og._ol._lr.'.split('_'),\n weekdaysMin: 'ig_al_ar_az_og_ol_lr'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY[ko] MMMM[ren] D[a]',\n LLL: 'YYYY[ko] MMMM[ren] D[a] HH:mm',\n LLLL: 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm',\n l: 'YYYY-M-D',\n ll: 'YYYY[ko] MMM D[a]',\n lll: 'YYYY[ko] MMM D[a] HH:mm',\n llll: 'ddd, YYYY[ko] MMM D[a] HH:mm'\n },\n calendar: {\n sameDay: '[gaur] LT[etan]',\n nextDay: '[bihar] LT[etan]',\n nextWeek: 'dddd LT[etan]',\n lastDay: '[atzo] LT[etan]',\n lastWeek: '[aurreko] dddd LT[etan]',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s barru',\n past: 'duela %s',\n s: 'segundo batzuk',\n ss: '%d segundo',\n m: 'minutu bat',\n mm: '%d minutu',\n h: 'ordu bat',\n hh: '%d ordu',\n d: 'egun bat',\n dd: '%d egun',\n M: 'hilabete bat',\n MM: '%d hilabete',\n y: 'urte bat',\n yy: '%d urte'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n\n }\n });\n return eu;\n});","//! moment.js locale configuration\n//! locale : Persian [fa]\n//! author : Ebrahim Byagowi : https://github.com/ebraminio\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var symbolMap = {\n 1: '۱',\n 2: '۲',\n 3: '۳',\n 4: '۴',\n 5: '۵',\n 6: '۶',\n 7: '۷',\n 8: '۸',\n 9: '۹',\n 0: '۰'\n },\n numberMap = {\n '۱': '1',\n '۲': '2',\n '۳': '3',\n '۴': '4',\n '۵': '5',\n '۶': '6',\n '۷': '7',\n '۸': '8',\n '۹': '9',\n '۰': '0'\n };\n var fa = moment.defineLocale('fa', {\n months: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'),\n monthsShort: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'),\n weekdays: 'یک\\u200cشنبه_دوشنبه_سه\\u200cشنبه_چهارشنبه_پنج\\u200cشنبه_جمعه_شنبه'.split('_'),\n weekdaysShort: 'یک\\u200cشنبه_دوشنبه_سه\\u200cشنبه_چهارشنبه_پنج\\u200cشنبه_جمعه_شنبه'.split('_'),\n weekdaysMin: 'ی_د_س_چ_پ_ج_ش'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n meridiemParse: /قبل از ظهر|بعد از ظهر/,\n isPM: function (input) {\n return /بعد از ظهر/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'قبل از ظهر';\n } else {\n return 'بعد از ظهر';\n }\n },\n calendar: {\n sameDay: '[امروز ساعت] LT',\n nextDay: '[فردا ساعت] LT',\n nextWeek: 'dddd [ساعت] LT',\n lastDay: '[دیروز ساعت] LT',\n lastWeek: 'dddd [پیش] [ساعت] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'در %s',\n past: '%s پیش',\n s: 'چند ثانیه',\n ss: '%d ثانیه',\n m: 'یک دقیقه',\n mm: '%d دقیقه',\n h: 'یک ساعت',\n hh: '%d ساعت',\n d: 'یک روز',\n dd: '%d روز',\n M: 'یک ماه',\n MM: '%d ماه',\n y: 'یک سال',\n yy: '%d سال'\n },\n preparse: function (string) {\n return string.replace(/[۰-۹]/g, function (match) {\n return numberMap[match];\n }).replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n }).replace(/,/g, '،');\n },\n dayOfMonthOrdinalParse: /\\d{1,2}م/,\n ordinal: '%dم',\n week: {\n dow: 6,\n // Saturday is the first day of the week.\n doy: 12 // The week that contains Jan 12th is the first week of the year.\n\n }\n });\n return fa;\n});","//! moment.js locale configuration\n//! locale : Finnish [fi]\n//! author : Tarmo Aidantausta : https://github.com/bleadof\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var numbersPast = 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(' '),\n numbersFuture = ['nolla', 'yhden', 'kahden', 'kolmen', 'neljän', 'viiden', 'kuuden', numbersPast[7], numbersPast[8], numbersPast[9]];\n\n function translate(number, withoutSuffix, key, isFuture) {\n var result = '';\n\n switch (key) {\n case 's':\n return isFuture ? 'muutaman sekunnin' : 'muutama sekunti';\n\n case 'ss':\n result = isFuture ? 'sekunnin' : 'sekuntia';\n break;\n\n case 'm':\n return isFuture ? 'minuutin' : 'minuutti';\n\n case 'mm':\n result = isFuture ? 'minuutin' : 'minuuttia';\n break;\n\n case 'h':\n return isFuture ? 'tunnin' : 'tunti';\n\n case 'hh':\n result = isFuture ? 'tunnin' : 'tuntia';\n break;\n\n case 'd':\n return isFuture ? 'päivän' : 'päivä';\n\n case 'dd':\n result = isFuture ? 'päivän' : 'päivää';\n break;\n\n case 'M':\n return isFuture ? 'kuukauden' : 'kuukausi';\n\n case 'MM':\n result = isFuture ? 'kuukauden' : 'kuukautta';\n break;\n\n case 'y':\n return isFuture ? 'vuoden' : 'vuosi';\n\n case 'yy':\n result = isFuture ? 'vuoden' : 'vuotta';\n break;\n }\n\n result = verbalNumber(number, isFuture) + ' ' + result;\n return result;\n }\n\n function verbalNumber(number, isFuture) {\n return number < 10 ? isFuture ? numbersFuture[number] : numbersPast[number] : number;\n }\n\n var fi = moment.defineLocale('fi', {\n months: 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split('_'),\n monthsShort: 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split('_'),\n weekdays: 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split('_'),\n weekdaysShort: 'su_ma_ti_ke_to_pe_la'.split('_'),\n weekdaysMin: 'su_ma_ti_ke_to_pe_la'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD.MM.YYYY',\n LL: 'Do MMMM[ta] YYYY',\n LLL: 'Do MMMM[ta] YYYY, [klo] HH.mm',\n LLLL: 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm',\n l: 'D.M.YYYY',\n ll: 'Do MMM YYYY',\n lll: 'Do MMM YYYY, [klo] HH.mm',\n llll: 'ddd, Do MMM YYYY, [klo] HH.mm'\n },\n calendar: {\n sameDay: '[tänään] [klo] LT',\n nextDay: '[huomenna] [klo] LT',\n nextWeek: 'dddd [klo] LT',\n lastDay: '[eilen] [klo] LT',\n lastWeek: '[viime] dddd[na] [klo] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s päästä',\n past: '%s sitten',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return fi;\n});","//! moment.js locale configuration\n//! locale : Filipino [fil]\n//! author : Dan Hagman : https://github.com/hagmandan\n//! author : Matthew Co : https://github.com/matthewdeeco\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var fil = moment.defineLocale('fil', {\n months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split('_'),\n monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),\n weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split('_'),\n weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),\n weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'MM/D/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY HH:mm',\n LLLL: 'dddd, MMMM DD, YYYY HH:mm'\n },\n calendar: {\n sameDay: 'LT [ngayong araw]',\n nextDay: '[Bukas ng] LT',\n nextWeek: 'LT [sa susunod na] dddd',\n lastDay: 'LT [kahapon]',\n lastWeek: 'LT [noong nakaraang] dddd',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'sa loob ng %s',\n past: '%s ang nakalipas',\n s: 'ilang segundo',\n ss: '%d segundo',\n m: 'isang minuto',\n mm: '%d minuto',\n h: 'isang oras',\n hh: '%d oras',\n d: 'isang araw',\n dd: '%d araw',\n M: 'isang buwan',\n MM: '%d buwan',\n y: 'isang taon',\n yy: '%d taon'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: function (number) {\n return number;\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return fil;\n});","//! moment.js locale configuration\n//! locale : Faroese [fo]\n//! author : Ragnar Johannesen : https://github.com/ragnar123\n//! author : Kristian Sakarisson : https://github.com/sakarisson\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var fo = moment.defineLocale('fo', {\n months: 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split('_'),\n monthsShort: 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),\n weekdays: 'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split('_'),\n weekdaysShort: 'sun_mán_týs_mik_hós_frí_ley'.split('_'),\n weekdaysMin: 'su_má_tý_mi_hó_fr_le'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D. MMMM, YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Í dag kl.] LT',\n nextDay: '[Í morgin kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[Í gjár kl.] LT',\n lastWeek: '[síðstu] dddd [kl] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'um %s',\n past: '%s síðani',\n s: 'fá sekund',\n ss: '%d sekundir',\n m: 'ein minuttur',\n mm: '%d minuttir',\n h: 'ein tími',\n hh: '%d tímar',\n d: 'ein dagur',\n dd: '%d dagar',\n M: 'ein mánaður',\n MM: '%d mánaðir',\n y: 'eitt ár',\n yy: '%d ár'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return fo;\n});","//! moment.js locale configuration\n//! locale : French (Canada) [fr-ca]\n//! author : Jonathan Abourbih : https://github.com/jonbca\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var frCa = moment.defineLocale('fr-ca', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),\n monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),\n monthsParseExact: true,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Aujourd’hui à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n ordinal: function (number, period) {\n switch (period) {\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'D':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n // Words with feminine grammatical gender: semaine\n\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n }\n });\n return frCa;\n});","//! moment.js locale configuration\n//! locale : French (Switzerland) [fr-ch]\n//! author : Gaspard Bucher : https://github.com/gaspard\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var frCh = moment.defineLocale('fr-ch', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),\n monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),\n monthsParseExact: true,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Aujourd’hui à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n ordinal: function (number, period) {\n switch (period) {\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'D':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n // Words with feminine grammatical gender: semaine\n\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return frCh;\n});","//! moment.js locale configuration\n//! locale : Frisian [fy]\n//! author : Robin van der Vliet : https://github.com/robin0van0der0v\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var monthsShortWithDots = 'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split('_'),\n monthsShortWithoutDots = 'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_');\n var fy = moment.defineLocale('fy', {\n months: 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split('_'),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n monthsParseExact: true,\n weekdays: 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split('_'),\n weekdaysShort: 'si._mo._ti._wo._to._fr._so.'.split('_'),\n weekdaysMin: 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[hjoed om] LT',\n nextDay: '[moarn om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[juster om] LT',\n lastWeek: '[ôfrûne] dddd [om] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'oer %s',\n past: '%s lyn',\n s: 'in pear sekonden',\n ss: '%d sekonden',\n m: 'ien minút',\n mm: '%d minuten',\n h: 'ien oere',\n hh: '%d oeren',\n d: 'ien dei',\n dd: '%d dagen',\n M: 'ien moanne',\n MM: '%d moannen',\n y: 'ien jier',\n yy: '%d jierren'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return number + (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de');\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return fy;\n});","//! moment.js locale configuration\n//! locale : Irish or Irish Gaelic [ga]\n//! author : André Silva : https://github.com/askpt\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var months = ['Eanáir', 'Feabhra', 'Márta', 'Aibreán', 'Bealtaine', 'Meitheamh', 'Iúil', 'Lúnasa', 'Meán Fómhair', 'Deireadh Fómhair', 'Samhain', 'Nollaig'],\n monthsShort = ['Ean', 'Feabh', 'Márt', 'Aib', 'Beal', 'Meith', 'Iúil', 'Lún', 'M.F.', 'D.F.', 'Samh', 'Noll'],\n weekdays = ['Dé Domhnaigh', 'Dé Luain', 'Dé Máirt', 'Dé Céadaoin', 'Déardaoin', 'Dé hAoine', 'Dé Sathairn'],\n weekdaysShort = ['Domh', 'Luan', 'Máirt', 'Céad', 'Déar', 'Aoine', 'Sath'],\n weekdaysMin = ['Do', 'Lu', 'Má', 'Cé', 'Dé', 'A', 'Sa'];\n var ga = moment.defineLocale('ga', {\n months: months,\n monthsShort: monthsShort,\n monthsParseExact: true,\n weekdays: weekdays,\n weekdaysShort: weekdaysShort,\n weekdaysMin: weekdaysMin,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Inniu ag] LT',\n nextDay: '[Amárach ag] LT',\n nextWeek: 'dddd [ag] LT',\n lastDay: '[Inné ag] LT',\n lastWeek: 'dddd [seo caite] [ag] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'i %s',\n past: '%s ó shin',\n s: 'cúpla soicind',\n ss: '%d soicind',\n m: 'nóiméad',\n mm: '%d nóiméad',\n h: 'uair an chloig',\n hh: '%d uair an chloig',\n d: 'lá',\n dd: '%d lá',\n M: 'mí',\n MM: '%d míonna',\n y: 'bliain',\n yy: '%d bliain'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(d|na|mh)/,\n ordinal: function (number) {\n var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';\n return number + output;\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return ga;\n});","//! moment.js locale configuration\n//! locale : Scottish Gaelic [gd]\n//! author : Jon Ashdown : https://github.com/jonashdown\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var months = ['Am Faoilleach', 'An Gearran', 'Am Màrt', 'An Giblean', 'An Cèitean', 'An t-Ògmhios', 'An t-Iuchar', 'An Lùnastal', 'An t-Sultain', 'An Dàmhair', 'An t-Samhain', 'An Dùbhlachd'],\n monthsShort = ['Faoi', 'Gear', 'Màrt', 'Gibl', 'Cèit', 'Ògmh', 'Iuch', 'Lùn', 'Sult', 'Dàmh', 'Samh', 'Dùbh'],\n weekdays = ['Didòmhnaich', 'Diluain', 'Dimàirt', 'Diciadain', 'Diardaoin', 'Dihaoine', 'Disathairne'],\n weekdaysShort = ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis'],\n weekdaysMin = ['Dò', 'Lu', 'Mà', 'Ci', 'Ar', 'Ha', 'Sa'];\n var gd = moment.defineLocale('gd', {\n months: months,\n monthsShort: monthsShort,\n monthsParseExact: true,\n weekdays: weekdays,\n weekdaysShort: weekdaysShort,\n weekdaysMin: weekdaysMin,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[An-diugh aig] LT',\n nextDay: '[A-màireach aig] LT',\n nextWeek: 'dddd [aig] LT',\n lastDay: '[An-dè aig] LT',\n lastWeek: 'dddd [seo chaidh] [aig] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'ann an %s',\n past: 'bho chionn %s',\n s: 'beagan diogan',\n ss: '%d diogan',\n m: 'mionaid',\n mm: '%d mionaidean',\n h: 'uair',\n hh: '%d uairean',\n d: 'latha',\n dd: '%d latha',\n M: 'mìos',\n MM: '%d mìosan',\n y: 'bliadhna',\n yy: '%d bliadhna'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(d|na|mh)/,\n ordinal: function (number) {\n var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';\n return number + output;\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return gd;\n});","//! moment.js locale configuration\n//! locale : Galician [gl]\n//! author : Juan G. Hurtado : https://github.com/juanghurtado\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var gl = moment.defineLocale('gl', {\n months: 'xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro'.split('_'),\n monthsShort: 'xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.'.split('_'),\n monthsParseExact: true,\n weekdays: 'domingo_luns_martes_mércores_xoves_venres_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mér._xov._ven._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mé_xo_ve_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm'\n },\n calendar: {\n sameDay: function () {\n return '[hoxe ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';\n },\n nextDay: function () {\n return '[mañá ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT';\n },\n lastDay: function () {\n return '[onte ' + (this.hours() !== 1 ? 'á' : 'a') + '] LT';\n },\n lastWeek: function () {\n return '[o] dddd [pasado ' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT';\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: function (str) {\n if (str.indexOf('un') === 0) {\n return 'n' + str;\n }\n\n return 'en ' + str;\n },\n past: 'hai %s',\n s: 'uns segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'unha hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n M: 'un mes',\n MM: '%d meses',\n y: 'un ano',\n yy: '%d anos'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return gl;\n});","//! moment.js locale configuration\n//! locale : Konkani Devanagari script [gom-deva]\n//! author : The Discoverer : https://github.com/WikiDiscoverer\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['थोडया सॅकंडांनी', 'थोडे सॅकंड'],\n ss: [number + ' सॅकंडांनी', number + ' सॅकंड'],\n m: ['एका मिणटान', 'एक मिनूट'],\n mm: [number + ' मिणटांनी', number + ' मिणटां'],\n h: ['एका वरान', 'एक वर'],\n hh: [number + ' वरांनी', number + ' वरां'],\n d: ['एका दिसान', 'एक दीस'],\n dd: [number + ' दिसांनी', number + ' दीस'],\n M: ['एका म्हयन्यान', 'एक म्हयनो'],\n MM: [number + ' म्हयन्यानी', number + ' म्हयने'],\n y: ['एका वर्सान', 'एक वर्स'],\n yy: [number + ' वर्सांनी', number + ' वर्सां']\n };\n return isFuture ? format[key][0] : format[key][1];\n }\n\n var gomDeva = moment.defineLocale('gom-deva', {\n months: {\n standalone: 'जानेवारी_फेब्रुवारी_मार्च_एप्रील_मे_जून_जुलय_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split('_'),\n format: 'जानेवारीच्या_फेब्रुवारीच्या_मार्चाच्या_एप्रीलाच्या_मेयाच्या_जूनाच्या_जुलयाच्या_ऑगस्टाच्या_सप्टेंबराच्या_ऑक्टोबराच्या_नोव्हेंबराच्या_डिसेंबराच्या'.split('_'),\n isFormat: /MMMM(\\s)+D[oD]?/\n },\n monthsShort: 'जाने._फेब्रु._मार्च_एप्री._मे_जून_जुल._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split('_'),\n monthsParseExact: true,\n weekdays: 'आयतार_सोमार_मंगळार_बुधवार_बिरेस्तार_सुक्रार_शेनवार'.split('_'),\n weekdaysShort: 'आयत._सोम._मंगळ._बुध._ब्रेस्त._सुक्र._शेन.'.split('_'),\n weekdaysMin: 'आ_सो_मं_बु_ब्रे_सु_शे'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'A h:mm [वाजतां]',\n LTS: 'A h:mm:ss [वाजतां]',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY A h:mm [वाजतां]',\n LLLL: 'dddd, MMMM Do, YYYY, A h:mm [वाजतां]',\n llll: 'ddd, D MMM YYYY, A h:mm [वाजतां]'\n },\n calendar: {\n sameDay: '[आयज] LT',\n nextDay: '[फाल्यां] LT',\n nextWeek: '[फुडलो] dddd[,] LT',\n lastDay: '[काल] LT',\n lastWeek: '[फाटलो] dddd[,] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s',\n past: '%s आदीं',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(वेर)/,\n ordinal: function (number, period) {\n switch (period) {\n // the ordinal 'वेर' only applies to day of the month\n case 'D':\n return number + 'वेर';\n\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n case 'w':\n case 'W':\n return number;\n }\n },\n week: {\n dow: 0,\n // Sunday is the first day of the week\n doy: 3 // The week that contains Jan 4th is the first week of the year (7 + 0 - 4)\n\n },\n meridiemParse: /राती|सकाळीं|दनपारां|सांजे/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n\n if (meridiem === 'राती') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'सकाळीं') {\n return hour;\n } else if (meridiem === 'दनपारां') {\n return hour > 12 ? hour : hour + 12;\n } else if (meridiem === 'सांजे') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'राती';\n } else if (hour < 12) {\n return 'सकाळीं';\n } else if (hour < 16) {\n return 'दनपारां';\n } else if (hour < 20) {\n return 'सांजे';\n } else {\n return 'राती';\n }\n }\n });\n return gomDeva;\n});","//! moment.js locale configuration\n//! locale : Konkani Latin script [gom-latn]\n//! author : The Discoverer : https://github.com/WikiDiscoverer\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['thoddea sekondamni', 'thodde sekond'],\n ss: [number + ' sekondamni', number + ' sekond'],\n m: ['eka mintan', 'ek minut'],\n mm: [number + ' mintamni', number + ' mintam'],\n h: ['eka voran', 'ek vor'],\n hh: [number + ' voramni', number + ' voram'],\n d: ['eka disan', 'ek dis'],\n dd: [number + ' disamni', number + ' dis'],\n M: ['eka mhoinean', 'ek mhoino'],\n MM: [number + ' mhoineamni', number + ' mhoine'],\n y: ['eka vorsan', 'ek voros'],\n yy: [number + ' vorsamni', number + ' vorsam']\n };\n return isFuture ? format[key][0] : format[key][1];\n }\n\n var gomLatn = moment.defineLocale('gom-latn', {\n months: {\n standalone: 'Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr'.split('_'),\n format: 'Janerachea_Febrerachea_Marsachea_Abrilachea_Maiachea_Junachea_Julaiachea_Agostachea_Setembrachea_Otubrachea_Novembrachea_Dezembrachea'.split('_'),\n isFormat: /MMMM(\\s)+D[oD]?/\n },\n monthsShort: 'Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.'.split('_'),\n monthsParseExact: true,\n weekdays: \"Aitar_Somar_Mongllar_Budhvar_Birestar_Sukrar_Son'var\".split('_'),\n weekdaysShort: 'Ait._Som._Mon._Bud._Bre._Suk._Son.'.split('_'),\n weekdaysMin: 'Ai_Sm_Mo_Bu_Br_Su_Sn'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'A h:mm [vazta]',\n LTS: 'A h:mm:ss [vazta]',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY A h:mm [vazta]',\n LLLL: 'dddd, MMMM Do, YYYY, A h:mm [vazta]',\n llll: 'ddd, D MMM YYYY, A h:mm [vazta]'\n },\n calendar: {\n sameDay: '[Aiz] LT',\n nextDay: '[Faleam] LT',\n nextWeek: '[Fuddlo] dddd[,] LT',\n lastDay: '[Kal] LT',\n lastWeek: '[Fattlo] dddd[,] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s',\n past: '%s adim',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er)/,\n ordinal: function (number, period) {\n switch (period) {\n // the ordinal 'er' only applies to day of the month\n case 'D':\n return number + 'er';\n\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n case 'w':\n case 'W':\n return number;\n }\n },\n week: {\n dow: 0,\n // Sunday is the first day of the week\n doy: 3 // The week that contains Jan 4th is the first week of the year (7 + 0 - 4)\n\n },\n meridiemParse: /rati|sokallim|donparam|sanje/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n\n if (meridiem === 'rati') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'sokallim') {\n return hour;\n } else if (meridiem === 'donparam') {\n return hour > 12 ? hour : hour + 12;\n } else if (meridiem === 'sanje') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'rati';\n } else if (hour < 12) {\n return 'sokallim';\n } else if (hour < 16) {\n return 'donparam';\n } else if (hour < 20) {\n return 'sanje';\n } else {\n return 'rati';\n }\n }\n });\n return gomLatn;\n});","//! moment.js locale configuration\n//! locale : Gujarati [gu]\n//! author : Kaushik Thanki : https://github.com/Kaushik1987\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var symbolMap = {\n 1: '૧',\n 2: '૨',\n 3: '૩',\n 4: '૪',\n 5: '૫',\n 6: '૬',\n 7: '૭',\n 8: '૮',\n 9: '૯',\n 0: '૦'\n },\n numberMap = {\n '૧': '1',\n '૨': '2',\n '૩': '3',\n '૪': '4',\n '૫': '5',\n '૬': '6',\n '૭': '7',\n '૮': '8',\n '૯': '9',\n '૦': '0'\n };\n var gu = moment.defineLocale('gu', {\n months: 'જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર'.split('_'),\n monthsShort: 'જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.'.split('_'),\n monthsParseExact: true,\n weekdays: 'રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર'.split('_'),\n weekdaysShort: 'રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ'.split('_'),\n weekdaysMin: 'ર_સો_મં_બુ_ગુ_શુ_શ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm વાગ્યે',\n LTS: 'A h:mm:ss વાગ્યે',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm વાગ્યે',\n LLLL: 'dddd, D MMMM YYYY, A h:mm વાગ્યે'\n },\n calendar: {\n sameDay: '[આજ] LT',\n nextDay: '[કાલે] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ગઇકાલે] LT',\n lastWeek: '[પાછલા] dddd, LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s મા',\n past: '%s પહેલા',\n s: 'અમુક પળો',\n ss: '%d સેકંડ',\n m: 'એક મિનિટ',\n mm: '%d મિનિટ',\n h: 'એક કલાક',\n hh: '%d કલાક',\n d: 'એક દિવસ',\n dd: '%d દિવસ',\n M: 'એક મહિનો',\n MM: '%d મહિનો',\n y: 'એક વર્ષ',\n yy: '%d વર્ષ'\n },\n preparse: function (string) {\n return string.replace(/[૧૨૩૪૫૬૭૮૯૦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Gujarati notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Gujarati.\n meridiemParse: /રાત|બપોર|સવાર|સાંજ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n\n if (meridiem === 'રાત') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'સવાર') {\n return hour;\n } else if (meridiem === 'બપોર') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'સાંજ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'રાત';\n } else if (hour < 10) {\n return 'સવાર';\n } else if (hour < 17) {\n return 'બપોર';\n } else if (hour < 20) {\n return 'સાંજ';\n } else {\n return 'રાત';\n }\n },\n week: {\n dow: 0,\n // Sunday is the first day of the week.\n doy: 6 // The week that contains Jan 6th is the first week of the year.\n\n }\n });\n return gu;\n});","//! moment.js locale configuration\n//! locale : Hebrew [he]\n//! author : Tomer Cohen : https://github.com/tomer\n//! author : Moshe Simantov : https://github.com/DevelopmentIL\n//! author : Tal Ater : https://github.com/TalAter\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var he = moment.defineLocale('he', {\n months: 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split('_'),\n monthsShort: 'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split('_'),\n weekdays: 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'),\n weekdaysShort: 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'),\n weekdaysMin: 'א_ב_ג_ד_ה_ו_ש'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [ב]MMMM YYYY',\n LLL: 'D [ב]MMMM YYYY HH:mm',\n LLLL: 'dddd, D [ב]MMMM YYYY HH:mm',\n l: 'D/M/YYYY',\n ll: 'D MMM YYYY',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd, D MMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[היום ב־]LT',\n nextDay: '[מחר ב־]LT',\n nextWeek: 'dddd [בשעה] LT',\n lastDay: '[אתמול ב־]LT',\n lastWeek: '[ביום] dddd [האחרון בשעה] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'בעוד %s',\n past: 'לפני %s',\n s: 'מספר שניות',\n ss: '%d שניות',\n m: 'דקה',\n mm: '%d דקות',\n h: 'שעה',\n hh: function (number) {\n if (number === 2) {\n return 'שעתיים';\n }\n\n return number + ' שעות';\n },\n d: 'יום',\n dd: function (number) {\n if (number === 2) {\n return 'יומיים';\n }\n\n return number + ' ימים';\n },\n M: 'חודש',\n MM: function (number) {\n if (number === 2) {\n return 'חודשיים';\n }\n\n return number + ' חודשים';\n },\n y: 'שנה',\n yy: function (number) {\n if (number === 2) {\n return 'שנתיים';\n } else if (number % 10 === 0 && number !== 10) {\n return number + ' שנה';\n }\n\n return number + ' שנים';\n }\n },\n meridiemParse: /אחה\"צ|לפנה\"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,\n isPM: function (input) {\n return /^(אחה\"צ|אחרי הצהריים|בערב)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 5) {\n return 'לפנות בוקר';\n } else if (hour < 10) {\n return 'בבוקר';\n } else if (hour < 12) {\n return isLower ? 'לפנה\"צ' : 'לפני הצהריים';\n } else if (hour < 18) {\n return isLower ? 'אחה\"צ' : 'אחרי הצהריים';\n } else {\n return 'בערב';\n }\n }\n });\n return he;\n});","//! moment.js locale configuration\n//! locale : Hindi [hi]\n//! author : Mayank Singhal : https://github.com/mayanksinghal\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var symbolMap = {\n 1: '१',\n 2: '२',\n 3: '३',\n 4: '४',\n 5: '५',\n 6: '६',\n 7: '७',\n 8: '८',\n 9: '९',\n 0: '०'\n },\n numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0'\n },\n monthsParse = [/^जन/i, /^फ़र|फर/i, /^मार्च/i, /^अप्रै/i, /^मई/i, /^जून/i, /^जुल/i, /^अग/i, /^सितं|सित/i, /^अक्टू/i, /^नव|नवं/i, /^दिसं|दिस/i],\n shortMonthsParse = [/^जन/i, /^फ़र/i, /^मार्च/i, /^अप्रै/i, /^मई/i, /^जून/i, /^जुल/i, /^अग/i, /^सित/i, /^अक्टू/i, /^नव/i, /^दिस/i];\n var hi = moment.defineLocale('hi', {\n months: {\n format: 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split('_'),\n standalone: 'जनवरी_फरवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितंबर_अक्टूबर_नवंबर_दिसंबर'.split('_')\n },\n monthsShort: 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split('_'),\n weekdays: 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\n weekdaysShort: 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'),\n weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),\n longDateFormat: {\n LT: 'A h:mm बजे',\n LTS: 'A h:mm:ss बजे',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm बजे',\n LLLL: 'dddd, D MMMM YYYY, A h:mm बजे'\n },\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: shortMonthsParse,\n monthsRegex: /^(जनवरी|जन\\.?|फ़रवरी|फरवरी|फ़र\\.?|मार्च?|अप्रैल|अप्रै\\.?|मई?|जून?|जुलाई|जुल\\.?|अगस्त|अग\\.?|सितम्बर|सितंबर|सित\\.?|अक्टूबर|अक्टू\\.?|नवम्बर|नवंबर|नव\\.?|दिसम्बर|दिसंबर|दिस\\.?)/i,\n monthsShortRegex: /^(जनवरी|जन\\.?|फ़रवरी|फरवरी|फ़र\\.?|मार्च?|अप्रैल|अप्रै\\.?|मई?|जून?|जुलाई|जुल\\.?|अगस्त|अग\\.?|सितम्बर|सितंबर|सित\\.?|अक्टूबर|अक्टू\\.?|नवम्बर|नवंबर|नव\\.?|दिसम्बर|दिसंबर|दिस\\.?)/i,\n monthsStrictRegex: /^(जनवरी?|फ़रवरी|फरवरी?|मार्च?|अप्रैल?|मई?|जून?|जुलाई?|अगस्त?|सितम्बर|सितंबर|सित?\\.?|अक्टूबर|अक्टू\\.?|नवम्बर|नवंबर?|दिसम्बर|दिसंबर?)/i,\n monthsShortStrictRegex: /^(जन\\.?|फ़र\\.?|मार्च?|अप्रै\\.?|मई?|जून?|जुल\\.?|अग\\.?|सित\\.?|अक्टू\\.?|नव\\.?|दिस\\.?)/i,\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[कल] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[कल] LT',\n lastWeek: '[पिछले] dddd, LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s में',\n past: '%s पहले',\n s: 'कुछ ही क्षण',\n ss: '%d सेकंड',\n m: 'एक मिनट',\n mm: '%d मिनट',\n h: 'एक घंटा',\n hh: '%d घंटे',\n d: 'एक दिन',\n dd: '%d दिन',\n M: 'एक महीने',\n MM: '%d महीने',\n y: 'एक वर्ष',\n yy: '%d वर्ष'\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Hindi notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.\n meridiemParse: /रात|सुबह|दोपहर|शाम/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n\n if (meridiem === 'रात') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'सुबह') {\n return hour;\n } else if (meridiem === 'दोपहर') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'शाम') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'रात';\n } else if (hour < 10) {\n return 'सुबह';\n } else if (hour < 17) {\n return 'दोपहर';\n } else if (hour < 20) {\n return 'शाम';\n } else {\n return 'रात';\n }\n },\n week: {\n dow: 0,\n // Sunday is the first day of the week.\n doy: 6 // The week that contains Jan 6th is the first week of the year.\n\n }\n });\n return hi;\n});","//! moment.js locale configuration\n//! locale : Croatian [hr]\n//! author : Bojan Marković : https://github.com/bmarkovic\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n\n switch (key) {\n case 'ss':\n if (number === 1) {\n result += 'sekunda';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sekunde';\n } else {\n result += 'sekundi';\n }\n\n return result;\n\n case 'm':\n return withoutSuffix ? 'jedna minuta' : 'jedne minute';\n\n case 'mm':\n if (number === 1) {\n result += 'minuta';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'minute';\n } else {\n result += 'minuta';\n }\n\n return result;\n\n case 'h':\n return withoutSuffix ? 'jedan sat' : 'jednog sata';\n\n case 'hh':\n if (number === 1) {\n result += 'sat';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sata';\n } else {\n result += 'sati';\n }\n\n return result;\n\n case 'dd':\n if (number === 1) {\n result += 'dan';\n } else {\n result += 'dana';\n }\n\n return result;\n\n case 'MM':\n if (number === 1) {\n result += 'mjesec';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'mjeseca';\n } else {\n result += 'mjeseci';\n }\n\n return result;\n\n case 'yy':\n if (number === 1) {\n result += 'godina';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'godine';\n } else {\n result += 'godina';\n }\n\n return result;\n }\n }\n\n var hr = moment.defineLocale('hr', {\n months: {\n format: 'siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca'.split('_'),\n standalone: 'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split('_')\n },\n monthsShort: 'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split('_'),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'),\n weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'Do MMMM YYYY',\n LLL: 'Do MMMM YYYY H:mm',\n LLLL: 'dddd, Do MMMM YYYY H:mm'\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n\n case 3:\n return '[u] [srijedu] [u] LT';\n\n case 6:\n return '[u] [subotu] [u] LT';\n\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[jučer u] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[prošlu] [nedjelju] [u] LT';\n\n case 3:\n return '[prošlu] [srijedu] [u] LT';\n\n case 6:\n return '[prošle] [subote] [u] LT';\n\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prošli] dddd [u] LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'za %s',\n past: 'prije %s',\n s: 'par sekundi',\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: 'dan',\n dd: translate,\n M: 'mjesec',\n MM: translate,\n y: 'godinu',\n yy: translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n\n }\n });\n return hr;\n});","//! moment.js locale configuration\n//! locale : Hungarian [hu]\n//! author : Adam Brunner : https://github.com/adambrunner\n//! author : Peter Viszt : https://github.com/passatgt\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var weekEndings = 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(' ');\n\n function translate(number, withoutSuffix, key, isFuture) {\n var num = number;\n\n switch (key) {\n case 's':\n return isFuture || withoutSuffix ? 'néhány másodperc' : 'néhány másodperce';\n\n case 'ss':\n return num + (isFuture || withoutSuffix) ? ' másodperc' : ' másodperce';\n\n case 'm':\n return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce');\n\n case 'mm':\n return num + (isFuture || withoutSuffix ? ' perc' : ' perce');\n\n case 'h':\n return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája');\n\n case 'hh':\n return num + (isFuture || withoutSuffix ? ' óra' : ' órája');\n\n case 'd':\n return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja');\n\n case 'dd':\n return num + (isFuture || withoutSuffix ? ' nap' : ' napja');\n\n case 'M':\n return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n\n case 'MM':\n return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n\n case 'y':\n return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve');\n\n case 'yy':\n return num + (isFuture || withoutSuffix ? ' év' : ' éve');\n }\n\n return '';\n }\n\n function week(isFuture) {\n return (isFuture ? '' : '[múlt] ') + '[' + weekEndings[this.day()] + '] LT[-kor]';\n }\n\n var hu = moment.defineLocale('hu', {\n months: 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split('_'),\n monthsShort: 'jan._feb._márc._ápr._máj._jún._júl._aug._szept._okt._nov._dec.'.split('_'),\n monthsParseExact: true,\n weekdays: 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'),\n weekdaysShort: 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'),\n weekdaysMin: 'v_h_k_sze_cs_p_szo'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'YYYY.MM.DD.',\n LL: 'YYYY. MMMM D.',\n LLL: 'YYYY. MMMM D. H:mm',\n LLLL: 'YYYY. MMMM D., dddd H:mm'\n },\n meridiemParse: /de|du/i,\n isPM: function (input) {\n return input.charAt(1).toLowerCase() === 'u';\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower === true ? 'de' : 'DE';\n } else {\n return isLower === true ? 'du' : 'DU';\n }\n },\n calendar: {\n sameDay: '[ma] LT[-kor]',\n nextDay: '[holnap] LT[-kor]',\n nextWeek: function () {\n return week.call(this, true);\n },\n lastDay: '[tegnap] LT[-kor]',\n lastWeek: function () {\n return week.call(this, false);\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s múlva',\n past: '%s',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return hu;\n});","//! moment.js locale configuration\n//! locale : Armenian [hy-am]\n//! author : Armendarabyan : https://github.com/armendarabyan\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var hyAm = moment.defineLocale('hy-am', {\n months: {\n format: 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split('_'),\n standalone: 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split('_')\n },\n monthsShort: 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'),\n weekdays: 'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split('_'),\n weekdaysShort: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),\n weekdaysMin: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY թ.',\n LLL: 'D MMMM YYYY թ., HH:mm',\n LLLL: 'dddd, D MMMM YYYY թ., HH:mm'\n },\n calendar: {\n sameDay: '[այսօր] LT',\n nextDay: '[վաղը] LT',\n lastDay: '[երեկ] LT',\n nextWeek: function () {\n return 'dddd [օրը ժամը] LT';\n },\n lastWeek: function () {\n return '[անցած] dddd [օրը ժամը] LT';\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s հետո',\n past: '%s առաջ',\n s: 'մի քանի վայրկյան',\n ss: '%d վայրկյան',\n m: 'րոպե',\n mm: '%d րոպե',\n h: 'ժամ',\n hh: '%d ժամ',\n d: 'օր',\n dd: '%d օր',\n M: 'ամիս',\n MM: '%d ամիս',\n y: 'տարի',\n yy: '%d տարի'\n },\n meridiemParse: /գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,\n isPM: function (input) {\n return /^(ցերեկվա|երեկոյան)$/.test(input);\n },\n meridiem: function (hour) {\n if (hour < 4) {\n return 'գիշերվա';\n } else if (hour < 12) {\n return 'առավոտվա';\n } else if (hour < 17) {\n return 'ցերեկվա';\n } else {\n return 'երեկոյան';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}|\\d{1,2}-(ին|րդ)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'DDD':\n case 'w':\n case 'W':\n case 'DDDo':\n if (number === 1) {\n return number + '-ին';\n }\n\n return number + '-րդ';\n\n default:\n return number;\n }\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n\n }\n });\n return hyAm;\n});","//! moment.js locale configuration\n//! locale : Indonesian [id]\n//! author : Mohammad Satrio Utomo : https://github.com/tyok\n//! reference: http://id.wikisource.org/wiki/Pedoman_Umum_Ejaan_Bahasa_Indonesia_yang_Disempurnakan\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var id = moment.defineLocale('id', {\n months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split('_'),\n monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des'.split('_'),\n weekdays: 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'),\n weekdaysShort: 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'),\n weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm'\n },\n meridiemParse: /pagi|siang|sore|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'siang') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'sore' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'siang';\n } else if (hours < 19) {\n return 'sore';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Besok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kemarin pukul] LT',\n lastWeek: 'dddd [lalu pukul] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lalu',\n s: 'beberapa detik',\n ss: '%d detik',\n m: 'semenit',\n mm: '%d menit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun'\n },\n week: {\n dow: 0,\n // Sunday is the first day of the week.\n doy: 6 // The week that contains Jan 6th is the first week of the year.\n\n }\n });\n return id;\n});","//! moment.js locale configuration\n//! locale : Icelandic [is]\n//! author : Hinrik Örn Sigurðsson : https://github.com/hinrik\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n function plural(n) {\n if (n % 100 === 11) {\n return true;\n } else if (n % 10 === 1) {\n return false;\n }\n\n return true;\n }\n\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n\n switch (key) {\n case 's':\n return withoutSuffix || isFuture ? 'nokkrar sekúndur' : 'nokkrum sekúndum';\n\n case 'ss':\n if (plural(number)) {\n return result + (withoutSuffix || isFuture ? 'sekúndur' : 'sekúndum');\n }\n\n return result + 'sekúnda';\n\n case 'm':\n return withoutSuffix ? 'mínúta' : 'mínútu';\n\n case 'mm':\n if (plural(number)) {\n return result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum');\n } else if (withoutSuffix) {\n return result + 'mínúta';\n }\n\n return result + 'mínútu';\n\n case 'hh':\n if (plural(number)) {\n return result + (withoutSuffix || isFuture ? 'klukkustundir' : 'klukkustundum');\n }\n\n return result + 'klukkustund';\n\n case 'd':\n if (withoutSuffix) {\n return 'dagur';\n }\n\n return isFuture ? 'dag' : 'degi';\n\n case 'dd':\n if (plural(number)) {\n if (withoutSuffix) {\n return result + 'dagar';\n }\n\n return result + (isFuture ? 'daga' : 'dögum');\n } else if (withoutSuffix) {\n return result + 'dagur';\n }\n\n return result + (isFuture ? 'dag' : 'degi');\n\n case 'M':\n if (withoutSuffix) {\n return 'mánuður';\n }\n\n return isFuture ? 'mánuð' : 'mánuði';\n\n case 'MM':\n if (plural(number)) {\n if (withoutSuffix) {\n return result + 'mánuðir';\n }\n\n return result + (isFuture ? 'mánuði' : 'mánuðum');\n } else if (withoutSuffix) {\n return result + 'mánuður';\n }\n\n return result + (isFuture ? 'mánuð' : 'mánuði');\n\n case 'y':\n return withoutSuffix || isFuture ? 'ár' : 'ári';\n\n case 'yy':\n if (plural(number)) {\n return result + (withoutSuffix || isFuture ? 'ár' : 'árum');\n }\n\n return result + (withoutSuffix || isFuture ? 'ár' : 'ári');\n }\n }\n\n var is = moment.defineLocale('is', {\n months: 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split('_'),\n monthsShort: 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'),\n weekdays: 'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split('_'),\n weekdaysShort: 'sun_mán_þri_mið_fim_fös_lau'.split('_'),\n weekdaysMin: 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] H:mm',\n LLLL: 'dddd, D. MMMM YYYY [kl.] H:mm'\n },\n calendar: {\n sameDay: '[í dag kl.] LT',\n nextDay: '[á morgun kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[í gær kl.] LT',\n lastWeek: '[síðasta] dddd [kl.] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'eftir %s',\n past: 'fyrir %s síðan',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: 'klukkustund',\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return is;\n});","//! moment.js locale configuration\n//! locale : Italian (Switzerland) [it-ch]\n//! author : xfh : https://github.com/xfh\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var itCh = moment.defineLocale('it-ch', {\n months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split('_'),\n monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split('_'),\n weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Oggi alle] LT',\n nextDay: '[Domani alle] LT',\n nextWeek: 'dddd [alle] LT',\n lastDay: '[Ieri alle] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[la scorsa] dddd [alle] LT';\n\n default:\n return '[lo scorso] dddd [alle] LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: function (s) {\n return (/^[0-9].+$/.test(s) ? 'tra' : 'in') + ' ' + s;\n },\n past: '%s fa',\n s: 'alcuni secondi',\n ss: '%d secondi',\n m: 'un minuto',\n mm: '%d minuti',\n h: \"un'ora\",\n hh: '%d ore',\n d: 'un giorno',\n dd: '%d giorni',\n M: 'un mese',\n MM: '%d mesi',\n y: 'un anno',\n yy: '%d anni'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return itCh;\n});","//! moment.js locale configuration\n//! locale : Japanese [ja]\n//! author : LI Long : https://github.com/baryon\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var ja = moment.defineLocale('ja', {\n eras: [{\n since: '2019-05-01',\n offset: 1,\n name: '令和',\n narrow: '㋿',\n abbr: 'R'\n }, {\n since: '1989-01-08',\n until: '2019-04-30',\n offset: 1,\n name: '平成',\n narrow: '㍻',\n abbr: 'H'\n }, {\n since: '1926-12-25',\n until: '1989-01-07',\n offset: 1,\n name: '昭和',\n narrow: '㍼',\n abbr: 'S'\n }, {\n since: '1912-07-30',\n until: '1926-12-24',\n offset: 1,\n name: '大正',\n narrow: '㍽',\n abbr: 'T'\n }, {\n since: '1873-01-01',\n until: '1912-07-29',\n offset: 6,\n name: '明治',\n narrow: '㍾',\n abbr: 'M'\n }, {\n since: '0001-01-01',\n until: '1873-12-31',\n offset: 1,\n name: '西暦',\n narrow: 'AD',\n abbr: 'AD'\n }, {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: '紀元前',\n narrow: 'BC',\n abbr: 'BC'\n }],\n eraYearOrdinalRegex: /(元|\\d+)年/,\n eraYearOrdinalParse: function (input, match) {\n return match[1] === '元' ? 1 : parseInt(match[1] || input, 10);\n },\n months: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n weekdays: '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'),\n weekdaysShort: '日_月_火_水_木_金_土'.split('_'),\n weekdaysMin: '日_月_火_水_木_金_土'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日 dddd HH:mm',\n l: 'YYYY/MM/DD',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日(ddd) HH:mm'\n },\n meridiemParse: /午前|午後/i,\n isPM: function (input) {\n return input === '午後';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return '午前';\n } else {\n return '午後';\n }\n },\n calendar: {\n sameDay: '[今日] LT',\n nextDay: '[明日] LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n return '[来週]dddd LT';\n } else {\n return 'dddd LT';\n }\n },\n lastDay: '[昨日] LT',\n lastWeek: function (now) {\n if (this.week() !== now.week()) {\n return '[先週]dddd LT';\n } else {\n return 'dddd LT';\n }\n },\n sameElse: 'L'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}日/,\n ordinal: function (number, period) {\n switch (period) {\n case 'y':\n return number === 1 ? '元年' : number + '年';\n\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%s前',\n s: '数秒',\n ss: '%d秒',\n m: '1分',\n mm: '%d分',\n h: '1時間',\n hh: '%d時間',\n d: '1日',\n dd: '%d日',\n M: '1ヶ月',\n MM: '%dヶ月',\n y: '1年',\n yy: '%d年'\n }\n });\n return ja;\n});","//! moment.js locale configuration\n//! locale : Javanese [jv]\n//! author : Rony Lantip : https://github.com/lantip\n//! reference: http://jv.wikipedia.org/wiki/Basa_Jawa\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var jv = moment.defineLocale('jv', {\n months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split('_'),\n monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'),\n weekdays: 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'),\n weekdaysShort: 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'),\n weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm'\n },\n meridiemParse: /enjing|siyang|sonten|ndalu/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n\n if (meridiem === 'enjing') {\n return hour;\n } else if (meridiem === 'siyang') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'sonten' || meridiem === 'ndalu') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'enjing';\n } else if (hours < 15) {\n return 'siyang';\n } else if (hours < 19) {\n return 'sonten';\n } else {\n return 'ndalu';\n }\n },\n calendar: {\n sameDay: '[Dinten puniko pukul] LT',\n nextDay: '[Mbenjang pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kala wingi pukul] LT',\n lastWeek: 'dddd [kepengker pukul] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'wonten ing %s',\n past: '%s ingkang kepengker',\n s: 'sawetawis detik',\n ss: '%d detik',\n m: 'setunggal menit',\n mm: '%d menit',\n h: 'setunggal jam',\n hh: '%d jam',\n d: 'sedinten',\n dd: '%d dinten',\n M: 'sewulan',\n MM: '%d wulan',\n y: 'setaun',\n yy: '%d taun'\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n\n }\n });\n return jv;\n});","//! moment.js locale configuration\n//! locale : Georgian [ka]\n//! author : Irakli Janiashvili : https://github.com/IrakliJani\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var ka = moment.defineLocale('ka', {\n months: 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split('_'),\n monthsShort: 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'),\n weekdays: {\n standalone: 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split('_'),\n format: 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split('_'),\n isFormat: /(წინა|შემდეგ)/\n },\n weekdaysShort: 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'),\n weekdaysMin: 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[დღეს] LT[-ზე]',\n nextDay: '[ხვალ] LT[-ზე]',\n lastDay: '[გუშინ] LT[-ზე]',\n nextWeek: '[შემდეგ] dddd LT[-ზე]',\n lastWeek: '[წინა] dddd LT-ზე',\n sameElse: 'L'\n },\n relativeTime: {\n future: function (s) {\n return s.replace(/(წამ|წუთ|საათ|წელ|დღ|თვ)(ი|ე)/, function ($0, $1, $2) {\n return $2 === 'ი' ? $1 + 'ში' : $1 + $2 + 'ში';\n });\n },\n past: function (s) {\n if (/(წამი|წუთი|საათი|დღე|თვე)/.test(s)) {\n return s.replace(/(ი|ე)$/, 'ის წინ');\n }\n\n if (/წელი/.test(s)) {\n return s.replace(/წელი$/, 'წლის წინ');\n }\n\n return s;\n },\n s: 'რამდენიმე წამი',\n ss: '%d წამი',\n m: 'წუთი',\n mm: '%d წუთი',\n h: 'საათი',\n hh: '%d საათი',\n d: 'დღე',\n dd: '%d დღე',\n M: 'თვე',\n MM: '%d თვე',\n y: 'წელი',\n yy: '%d წელი'\n },\n dayOfMonthOrdinalParse: /0|1-ლი|მე-\\d{1,2}|\\d{1,2}-ე/,\n ordinal: function (number) {\n if (number === 0) {\n return number;\n }\n\n if (number === 1) {\n return number + '-ლი';\n }\n\n if (number < 20 || number <= 100 && number % 20 === 0 || number % 100 === 0) {\n return 'მე-' + number;\n }\n\n return number + '-ე';\n },\n week: {\n dow: 1,\n doy: 7\n }\n });\n return ka;\n});","//! moment.js locale configuration\n//! locale : Kazakh [kk]\n//! authors : Nurlan Rakhimzhanov : https://github.com/nurlan\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var suffixes = {\n 0: '-ші',\n 1: '-ші',\n 2: '-ші',\n 3: '-ші',\n 4: '-ші',\n 5: '-ші',\n 6: '-шы',\n 7: '-ші',\n 8: '-ші',\n 9: '-шы',\n 10: '-шы',\n 20: '-шы',\n 30: '-шы',\n 40: '-шы',\n 50: '-ші',\n 60: '-шы',\n 70: '-ші',\n 80: '-ші',\n 90: '-шы',\n 100: '-ші'\n };\n var kk = moment.defineLocale('kk', {\n months: 'қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан'.split('_'),\n monthsShort: 'қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел'.split('_'),\n weekdays: 'жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі'.split('_'),\n weekdaysShort: 'жек_дүй_сей_сәр_бей_жұм_сен'.split('_'),\n weekdaysMin: 'жк_дй_сй_ср_бй_жм_сн'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Бүгін сағат] LT',\n nextDay: '[Ертең сағат] LT',\n nextWeek: 'dddd [сағат] LT',\n lastDay: '[Кеше сағат] LT',\n lastWeek: '[Өткен аптаның] dddd [сағат] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s ішінде',\n past: '%s бұрын',\n s: 'бірнеше секунд',\n ss: '%d секунд',\n m: 'бір минут',\n mm: '%d минут',\n h: 'бір сағат',\n hh: '%d сағат',\n d: 'бір күн',\n dd: '%d күн',\n M: 'бір ай',\n MM: '%d ай',\n y: 'бір жыл',\n yy: '%d жыл'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ші|шы)/,\n ordinal: function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n\n }\n });\n return kk;\n});","//! moment.js locale configuration\n//! locale : Cambodian [km]\n//! author : Kruy Vanna : https://github.com/kruyvanna\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var symbolMap = {\n 1: '១',\n 2: '២',\n 3: '៣',\n 4: '៤',\n 5: '៥',\n 6: '៦',\n 7: '៧',\n 8: '៨',\n 9: '៩',\n 0: '០'\n },\n numberMap = {\n '១': '1',\n '២': '2',\n '៣': '3',\n '៤': '4',\n '៥': '5',\n '៦': '6',\n '៧': '7',\n '៨': '8',\n '៩': '9',\n '០': '0'\n };\n var km = moment.defineLocale('km', {\n months: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split('_'),\n monthsShort: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split('_'),\n weekdays: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),\n weekdaysShort: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),\n weekdaysMin: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n meridiemParse: /ព្រឹក|ល្ងាច/,\n isPM: function (input) {\n return input === 'ល្ងាច';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ព្រឹក';\n } else {\n return 'ល្ងាច';\n }\n },\n calendar: {\n sameDay: '[ថ្ងៃនេះ ម៉ោង] LT',\n nextDay: '[ស្អែក ម៉ោង] LT',\n nextWeek: 'dddd [ម៉ោង] LT',\n lastDay: '[ម្សិលមិញ ម៉ោង] LT',\n lastWeek: 'dddd [សប្តាហ៍មុន] [ម៉ោង] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%sទៀត',\n past: '%sមុន',\n s: 'ប៉ុន្មានវិនាទី',\n ss: '%d វិនាទី',\n m: 'មួយនាទី',\n mm: '%d នាទី',\n h: 'មួយម៉ោង',\n hh: '%d ម៉ោង',\n d: 'មួយថ្ងៃ',\n dd: '%d ថ្ងៃ',\n M: 'មួយខែ',\n MM: '%d ខែ',\n y: 'មួយឆ្នាំ',\n yy: '%d ឆ្នាំ'\n },\n dayOfMonthOrdinalParse: /ទី\\d{1,2}/,\n ordinal: 'ទី%d',\n preparse: function (string) {\n return string.replace(/[១២៣៤៥៦៧៨៩០]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return km;\n});","//! moment.js locale configuration\n//! locale : Kannada [kn]\n//! author : Rajeev Naik : https://github.com/rajeevnaikte\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var symbolMap = {\n 1: '೧',\n 2: '೨',\n 3: '೩',\n 4: '೪',\n 5: '೫',\n 6: '೬',\n 7: '೭',\n 8: '೮',\n 9: '೯',\n 0: '೦'\n },\n numberMap = {\n '೧': '1',\n '೨': '2',\n '೩': '3',\n '೪': '4',\n '೫': '5',\n '೬': '6',\n '೭': '7',\n '೮': '8',\n '೯': '9',\n '೦': '0'\n };\n var kn = moment.defineLocale('kn', {\n months: 'ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್'.split('_'),\n monthsShort: 'ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ'.split('_'),\n monthsParseExact: true,\n weekdays: 'ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ'.split('_'),\n weekdaysShort: 'ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ'.split('_'),\n weekdaysMin: 'ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm'\n },\n calendar: {\n sameDay: '[ಇಂದು] LT',\n nextDay: '[ನಾಳೆ] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ನಿನ್ನೆ] LT',\n lastWeek: '[ಕೊನೆಯ] dddd, LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s ನಂತರ',\n past: '%s ಹಿಂದೆ',\n s: 'ಕೆಲವು ಕ್ಷಣಗಳು',\n ss: '%d ಸೆಕೆಂಡುಗಳು',\n m: 'ಒಂದು ನಿಮಿಷ',\n mm: '%d ನಿಮಿಷ',\n h: 'ಒಂದು ಗಂಟೆ',\n hh: '%d ಗಂಟೆ',\n d: 'ಒಂದು ದಿನ',\n dd: '%d ದಿನ',\n M: 'ಒಂದು ತಿಂಗಳು',\n MM: '%d ತಿಂಗಳು',\n y: 'ಒಂದು ವರ್ಷ',\n yy: '%d ವರ್ಷ'\n },\n preparse: function (string) {\n return string.replace(/[೧೨೩೪೫೬೭೮೯೦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n\n if (meridiem === 'ರಾತ್ರಿ') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ಬೆಳಿಗ್ಗೆ') {\n return hour;\n } else if (meridiem === 'ಮಧ್ಯಾಹ್ನ') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'ಸಂಜೆ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ರಾತ್ರಿ';\n } else if (hour < 10) {\n return 'ಬೆಳಿಗ್ಗೆ';\n } else if (hour < 17) {\n return 'ಮಧ್ಯಾಹ್ನ';\n } else if (hour < 20) {\n return 'ಸಂಜೆ';\n } else {\n return 'ರಾತ್ರಿ';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ನೇ)/,\n ordinal: function (number) {\n return number + 'ನೇ';\n },\n week: {\n dow: 0,\n // Sunday is the first day of the week.\n doy: 6 // The week that contains Jan 6th is the first week of the year.\n\n }\n });\n return kn;\n});","//! moment.js locale configuration\n//! locale : Korean [ko]\n//! author : Kyungwook, Park : https://github.com/kyungw00k\n//! author : Jeeeyul Lee \n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var ko = moment.defineLocale('ko', {\n months: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),\n monthsShort: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),\n weekdays: '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'),\n weekdaysShort: '일_월_화_수_목_금_토'.split('_'),\n weekdaysMin: '일_월_화_수_목_금_토'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'YYYY.MM.DD.',\n LL: 'YYYY년 MMMM D일',\n LLL: 'YYYY년 MMMM D일 A h:mm',\n LLLL: 'YYYY년 MMMM D일 dddd A h:mm',\n l: 'YYYY.MM.DD.',\n ll: 'YYYY년 MMMM D일',\n lll: 'YYYY년 MMMM D일 A h:mm',\n llll: 'YYYY년 MMMM D일 dddd A h:mm'\n },\n calendar: {\n sameDay: '오늘 LT',\n nextDay: '내일 LT',\n nextWeek: 'dddd LT',\n lastDay: '어제 LT',\n lastWeek: '지난주 dddd LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s 후',\n past: '%s 전',\n s: '몇 초',\n ss: '%d초',\n m: '1분',\n mm: '%d분',\n h: '한 시간',\n hh: '%d시간',\n d: '하루',\n dd: '%d일',\n M: '한 달',\n MM: '%d달',\n y: '일 년',\n yy: '%d년'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(일|월|주)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '일';\n\n case 'M':\n return number + '월';\n\n case 'w':\n case 'W':\n return number + '주';\n\n default:\n return number;\n }\n },\n meridiemParse: /오전|오후/,\n isPM: function (token) {\n return token === '오후';\n },\n meridiem: function (hour, minute, isUpper) {\n return hour < 12 ? '오전' : '오후';\n }\n });\n return ko;\n});","//! moment.js locale configuration\n//! locale : Kurdish [ku]\n//! author : Shahram Mebashar : https://github.com/ShahramMebashar\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var symbolMap = {\n 1: '١',\n 2: '٢',\n 3: '٣',\n 4: '٤',\n 5: '٥',\n 6: '٦',\n 7: '٧',\n 8: '٨',\n 9: '٩',\n 0: '٠'\n },\n numberMap = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0'\n },\n months = ['کانونی دووەم', 'شوبات', 'ئازار', 'نیسان', 'ئایار', 'حوزەیران', 'تەمموز', 'ئاب', 'ئەیلوول', 'تشرینی یەكەم', 'تشرینی دووەم', 'كانونی یەکەم'];\n var ku = moment.defineLocale('ku', {\n months: months,\n monthsShort: months,\n weekdays: 'یه‌كشه‌ممه‌_دووشه‌ممه‌_سێشه‌ممه‌_چوارشه‌ممه‌_پێنجشه‌ممه‌_هه‌ینی_شه‌ممه‌'.split('_'),\n weekdaysShort: 'یه‌كشه‌م_دووشه‌م_سێشه‌م_چوارشه‌م_پێنجشه‌م_هه‌ینی_شه‌ممه‌'.split('_'),\n weekdaysMin: 'ی_د_س_چ_پ_ه_ش'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n meridiemParse: /ئێواره‌|به‌یانی/,\n isPM: function (input) {\n return /ئێواره‌/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'به‌یانی';\n } else {\n return 'ئێواره‌';\n }\n },\n calendar: {\n sameDay: '[ئه‌مرۆ كاتژمێر] LT',\n nextDay: '[به‌یانی كاتژمێر] LT',\n nextWeek: 'dddd [كاتژمێر] LT',\n lastDay: '[دوێنێ كاتژمێر] LT',\n lastWeek: 'dddd [كاتژمێر] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'له‌ %s',\n past: '%s',\n s: 'چه‌ند چركه‌یه‌ك',\n ss: 'چركه‌ %d',\n m: 'یه‌ك خوله‌ك',\n mm: '%d خوله‌ك',\n h: 'یه‌ك كاتژمێر',\n hh: '%d كاتژمێر',\n d: 'یه‌ك ڕۆژ',\n dd: '%d ڕۆژ',\n M: 'یه‌ك مانگ',\n MM: '%d مانگ',\n y: 'یه‌ك ساڵ',\n yy: '%d ساڵ'\n },\n preparse: function (string) {\n return string.replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n }).replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n }).replace(/,/g, '،');\n },\n week: {\n dow: 6,\n // Saturday is the first day of the week.\n doy: 12 // The week that contains Jan 12th is the first week of the year.\n\n }\n });\n return ku;\n});","//! moment.js locale configuration\n//! locale : Kyrgyz [ky]\n//! author : Chyngyz Arystan uulu : https://github.com/chyngyz\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var suffixes = {\n 0: '-чү',\n 1: '-чи',\n 2: '-чи',\n 3: '-чү',\n 4: '-чү',\n 5: '-чи',\n 6: '-чы',\n 7: '-чи',\n 8: '-чи',\n 9: '-чу',\n 10: '-чу',\n 20: '-чы',\n 30: '-чу',\n 40: '-чы',\n 50: '-чү',\n 60: '-чы',\n 70: '-чи',\n 80: '-чи',\n 90: '-чу',\n 100: '-чү'\n };\n var ky = moment.defineLocale('ky', {\n months: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_'),\n monthsShort: 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split('_'),\n weekdays: 'Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби'.split('_'),\n weekdaysShort: 'Жек_Дүй_Шей_Шар_Бей_Жум_Ише'.split('_'),\n weekdaysMin: 'Жк_Дй_Шй_Шр_Бй_Жм_Иш'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Бүгүн саат] LT',\n nextDay: '[Эртең саат] LT',\n nextWeek: 'dddd [саат] LT',\n lastDay: '[Кечээ саат] LT',\n lastWeek: '[Өткөн аптанын] dddd [күнү] [саат] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s ичинде',\n past: '%s мурун',\n s: 'бирнече секунд',\n ss: '%d секунд',\n m: 'бир мүнөт',\n mm: '%d мүнөт',\n h: 'бир саат',\n hh: '%d саат',\n d: 'бир күн',\n dd: '%d күн',\n M: 'бир ай',\n MM: '%d ай',\n y: 'бир жыл',\n yy: '%d жыл'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(чи|чы|чү|чу)/,\n ordinal: function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n\n }\n });\n return ky;\n});","//! moment.js locale configuration\n//! locale : Luxembourgish [lb]\n//! author : mweimerskirch : https://github.com/mweimerskirch\n//! author : David Raison : https://github.com/kwisatz\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eng Minutt', 'enger Minutt'],\n h: ['eng Stonn', 'enger Stonn'],\n d: ['een Dag', 'engem Dag'],\n M: ['ee Mount', 'engem Mount'],\n y: ['ee Joer', 'engem Joer']\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n function processFutureTime(string) {\n var number = string.substr(0, string.indexOf(' '));\n\n if (eifelerRegelAppliesToNumber(number)) {\n return 'a ' + string;\n }\n\n return 'an ' + string;\n }\n\n function processPastTime(string) {\n var number = string.substr(0, string.indexOf(' '));\n\n if (eifelerRegelAppliesToNumber(number)) {\n return 'viru ' + string;\n }\n\n return 'virun ' + string;\n }\n /**\n * Returns true if the word before the given number loses the '-n' ending.\n * e.g. 'an 10 Deeg' but 'a 5 Deeg'\n *\n * @param number {integer}\n * @returns {boolean}\n */\n\n\n function eifelerRegelAppliesToNumber(number) {\n number = parseInt(number, 10);\n\n if (isNaN(number)) {\n return false;\n }\n\n if (number < 0) {\n // Negative Number --> always true\n return true;\n } else if (number < 10) {\n // Only 1 digit\n if (4 <= number && number <= 7) {\n return true;\n }\n\n return false;\n } else if (number < 100) {\n // 2 digits\n var lastDigit = number % 10,\n firstDigit = number / 10;\n\n if (lastDigit === 0) {\n return eifelerRegelAppliesToNumber(firstDigit);\n }\n\n return eifelerRegelAppliesToNumber(lastDigit);\n } else if (number < 10000) {\n // 3 or 4 digits --> recursively check first digit\n while (number >= 10) {\n number = number / 10;\n }\n\n return eifelerRegelAppliesToNumber(number);\n } else {\n // Anything larger than 4 digits: recursively check first n-3 digits\n number = number / 1000;\n return eifelerRegelAppliesToNumber(number);\n }\n }\n\n var lb = moment.defineLocale('lb', {\n months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),\n monthsShort: 'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'),\n monthsParseExact: true,\n weekdays: 'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split('_'),\n weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm [Auer]',\n LTS: 'H:mm:ss [Auer]',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm [Auer]',\n LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]'\n },\n calendar: {\n sameDay: '[Haut um] LT',\n sameElse: 'L',\n nextDay: '[Muer um] LT',\n nextWeek: 'dddd [um] LT',\n lastDay: '[Gëschter um] LT',\n lastWeek: function () {\n // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule\n switch (this.day()) {\n case 2:\n case 4:\n return '[Leschten] dddd [um] LT';\n\n default:\n return '[Leschte] dddd [um] LT';\n }\n }\n },\n relativeTime: {\n future: processFutureTime,\n past: processPastTime,\n s: 'e puer Sekonnen',\n ss: '%d Sekonnen',\n m: processRelativeTime,\n mm: '%d Minutten',\n h: processRelativeTime,\n hh: '%d Stonnen',\n d: processRelativeTime,\n dd: '%d Deeg',\n M: processRelativeTime,\n MM: '%d Méint',\n y: processRelativeTime,\n yy: '%d Joer'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return lb;\n});","//! moment.js locale configuration\n//! locale : Lao [lo]\n//! author : Ryan Hart : https://github.com/ryanhart2\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var lo = moment.defineLocale('lo', {\n months: 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split('_'),\n monthsShort: 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split('_'),\n weekdays: 'ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),\n weekdaysShort: 'ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),\n weekdaysMin: 'ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'ວັນdddd D MMMM YYYY HH:mm'\n },\n meridiemParse: /ຕອນເຊົ້າ|ຕອນແລງ/,\n isPM: function (input) {\n return input === 'ຕອນແລງ';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ຕອນເຊົ້າ';\n } else {\n return 'ຕອນແລງ';\n }\n },\n calendar: {\n sameDay: '[ມື້ນີ້ເວລາ] LT',\n nextDay: '[ມື້ອື່ນເວລາ] LT',\n nextWeek: '[ວັນ]dddd[ໜ້າເວລາ] LT',\n lastDay: '[ມື້ວານນີ້ເວລາ] LT',\n lastWeek: '[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'ອີກ %s',\n past: '%sຜ່ານມາ',\n s: 'ບໍ່ເທົ່າໃດວິນາທີ',\n ss: '%d ວິນາທີ',\n m: '1 ນາທີ',\n mm: '%d ນາທີ',\n h: '1 ຊົ່ວໂມງ',\n hh: '%d ຊົ່ວໂມງ',\n d: '1 ມື້',\n dd: '%d ມື້',\n M: '1 ເດືອນ',\n MM: '%d ເດືອນ',\n y: '1 ປີ',\n yy: '%d ປີ'\n },\n dayOfMonthOrdinalParse: /(ທີ່)\\d{1,2}/,\n ordinal: function (number) {\n return 'ທີ່' + number;\n }\n });\n return lo;\n});","//! moment.js locale configuration\n//! locale : Lithuanian [lt]\n//! author : Mindaugas Mozūras : https://github.com/mmozuras\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var units = {\n ss: 'sekundė_sekundžių_sekundes',\n m: 'minutė_minutės_minutę',\n mm: 'minutės_minučių_minutes',\n h: 'valanda_valandos_valandą',\n hh: 'valandos_valandų_valandas',\n d: 'diena_dienos_dieną',\n dd: 'dienos_dienų_dienas',\n M: 'mėnuo_mėnesio_mėnesį',\n MM: 'mėnesiai_mėnesių_mėnesius',\n y: 'metai_metų_metus',\n yy: 'metai_metų_metus'\n };\n\n function translateSeconds(number, withoutSuffix, key, isFuture) {\n if (withoutSuffix) {\n return 'kelios sekundės';\n } else {\n return isFuture ? 'kelių sekundžių' : 'kelias sekundes';\n }\n }\n\n function translateSingular(number, withoutSuffix, key, isFuture) {\n return withoutSuffix ? forms(key)[0] : isFuture ? forms(key)[1] : forms(key)[2];\n }\n\n function special(number) {\n return number % 10 === 0 || number > 10 && number < 20;\n }\n\n function forms(key) {\n return units[key].split('_');\n }\n\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n\n if (number === 1) {\n return result + translateSingular(number, withoutSuffix, key[0], isFuture);\n } else if (withoutSuffix) {\n return result + (special(number) ? forms(key)[1] : forms(key)[0]);\n } else {\n if (isFuture) {\n return result + forms(key)[1];\n } else {\n return result + (special(number) ? forms(key)[1] : forms(key)[2]);\n }\n }\n }\n\n var lt = moment.defineLocale('lt', {\n months: {\n format: 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split('_'),\n standalone: 'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split('_'),\n isFormat: /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?|MMMM?(\\[[^\\[\\]]*\\]|\\s)+D[oD]?/\n },\n monthsShort: 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'),\n weekdays: {\n format: 'sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį'.split('_'),\n standalone: 'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split('_'),\n isFormat: /dddd HH:mm/\n },\n weekdaysShort: 'Sek_Pir_Ant_Tre_Ket_Pen_Šeš'.split('_'),\n weekdaysMin: 'S_P_A_T_K_Pn_Š'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY [m.] MMMM D [d.]',\n LLL: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n LLLL: 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]',\n l: 'YYYY-MM-DD',\n ll: 'YYYY [m.] MMMM D [d.]',\n lll: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n llll: 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]'\n },\n calendar: {\n sameDay: '[Šiandien] LT',\n nextDay: '[Rytoj] LT',\n nextWeek: 'dddd LT',\n lastDay: '[Vakar] LT',\n lastWeek: '[Praėjusį] dddd LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'po %s',\n past: 'prieš %s',\n s: translateSeconds,\n ss: translate,\n m: translateSingular,\n mm: translate,\n h: translateSingular,\n hh: translate,\n d: translateSingular,\n dd: translate,\n M: translateSingular,\n MM: translate,\n y: translateSingular,\n yy: translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-oji/,\n ordinal: function (number) {\n return number + '-oji';\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return lt;\n});","//! moment.js locale configuration\n//! locale : Latvian [lv]\n//! author : Kristaps Karlsons : https://github.com/skakri\n//! author : Jānis Elmeris : https://github.com/JanisE\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var units = {\n ss: 'sekundes_sekundēm_sekunde_sekundes'.split('_'),\n m: 'minūtes_minūtēm_minūte_minūtes'.split('_'),\n mm: 'minūtes_minūtēm_minūte_minūtes'.split('_'),\n h: 'stundas_stundām_stunda_stundas'.split('_'),\n hh: 'stundas_stundām_stunda_stundas'.split('_'),\n d: 'dienas_dienām_diena_dienas'.split('_'),\n dd: 'dienas_dienām_diena_dienas'.split('_'),\n M: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),\n MM: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),\n y: 'gada_gadiem_gads_gadi'.split('_'),\n yy: 'gada_gadiem_gads_gadi'.split('_')\n };\n /**\n * @param withoutSuffix boolean true = a length of time; false = before/after a period of time.\n */\n\n function format(forms, number, withoutSuffix) {\n if (withoutSuffix) {\n // E.g. \"21 minūte\", \"3 minūtes\".\n return number % 10 === 1 && number % 100 !== 11 ? forms[2] : forms[3];\n } else {\n // E.g. \"21 minūtes\" as in \"pēc 21 minūtes\".\n // E.g. \"3 minūtēm\" as in \"pēc 3 minūtēm\".\n return number % 10 === 1 && number % 100 !== 11 ? forms[0] : forms[1];\n }\n }\n\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n return number + ' ' + format(units[key], number, withoutSuffix);\n }\n\n function relativeTimeWithSingular(number, withoutSuffix, key) {\n return format(units[key], number, withoutSuffix);\n }\n\n function relativeSeconds(number, withoutSuffix) {\n return withoutSuffix ? 'dažas sekundes' : 'dažām sekundēm';\n }\n\n var lv = moment.defineLocale('lv', {\n months: 'janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris'.split('_'),\n monthsShort: 'jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec'.split('_'),\n weekdays: 'svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena'.split('_'),\n weekdaysShort: 'Sv_P_O_T_C_Pk_S'.split('_'),\n weekdaysMin: 'Sv_P_O_T_C_Pk_S'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY.',\n LL: 'YYYY. [gada] D. MMMM',\n LLL: 'YYYY. [gada] D. MMMM, HH:mm',\n LLLL: 'YYYY. [gada] D. MMMM, dddd, HH:mm'\n },\n calendar: {\n sameDay: '[Šodien pulksten] LT',\n nextDay: '[Rīt pulksten] LT',\n nextWeek: 'dddd [pulksten] LT',\n lastDay: '[Vakar pulksten] LT',\n lastWeek: '[Pagājušā] dddd [pulksten] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'pēc %s',\n past: 'pirms %s',\n s: relativeSeconds,\n ss: relativeTimeWithPlural,\n m: relativeTimeWithSingular,\n mm: relativeTimeWithPlural,\n h: relativeTimeWithSingular,\n hh: relativeTimeWithPlural,\n d: relativeTimeWithSingular,\n dd: relativeTimeWithPlural,\n M: relativeTimeWithSingular,\n MM: relativeTimeWithPlural,\n y: relativeTimeWithSingular,\n yy: relativeTimeWithPlural\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return lv;\n});","//! moment.js locale configuration\n//! locale : Montenegrin [me]\n//! author : Miodrag Nikač : https://github.com/miodragnikac\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var translator = {\n words: {\n //Different grammatical cases\n ss: ['sekund', 'sekunda', 'sekundi'],\n m: ['jedan minut', 'jednog minuta'],\n mm: ['minut', 'minuta', 'minuta'],\n h: ['jedan sat', 'jednog sata'],\n hh: ['sat', 'sata', 'sati'],\n dd: ['dan', 'dana', 'dana'],\n MM: ['mjesec', 'mjeseca', 'mjeseci'],\n yy: ['godina', 'godine', 'godina']\n },\n correctGrammaticalCase: function (number, wordKey) {\n return number === 1 ? wordKey[0] : number >= 2 && number <= 4 ? wordKey[1] : wordKey[2];\n },\n translate: function (number, withoutSuffix, key) {\n var wordKey = translator.words[key];\n\n if (key.length === 1) {\n return withoutSuffix ? wordKey[0] : wordKey[1];\n } else {\n return number + ' ' + translator.correctGrammaticalCase(number, wordKey);\n }\n }\n };\n var me = moment.defineLocale('me', {\n months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split('_'),\n monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'),\n weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm'\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sjutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n\n case 3:\n return '[u] [srijedu] [u] LT';\n\n case 6:\n return '[u] [subotu] [u] LT';\n\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[juče u] LT',\n lastWeek: function () {\n var lastWeekDays = ['[prošle] [nedjelje] [u] LT', '[prošlog] [ponedjeljka] [u] LT', '[prošlog] [utorka] [u] LT', '[prošle] [srijede] [u] LT', '[prošlog] [četvrtka] [u] LT', '[prošlog] [petka] [u] LT', '[prošle] [subote] [u] LT'];\n return lastWeekDays[this.day()];\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'za %s',\n past: 'prije %s',\n s: 'nekoliko sekundi',\n ss: translator.translate,\n m: translator.translate,\n mm: translator.translate,\n h: translator.translate,\n hh: translator.translate,\n d: 'dan',\n dd: translator.translate,\n M: 'mjesec',\n MM: translator.translate,\n y: 'godinu',\n yy: translator.translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n\n }\n });\n return me;\n});","//! moment.js locale configuration\n//! locale : Maori [mi]\n//! author : John Corrigan : https://github.com/johnideal\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var mi = moment.defineLocale('mi', {\n months: 'Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea'.split('_'),\n monthsShort: 'Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki'.split('_'),\n monthsRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsShortRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsShortStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,2}/i,\n weekdays: 'Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei'.split('_'),\n weekdaysShort: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),\n weekdaysMin: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [i] HH:mm',\n LLLL: 'dddd, D MMMM YYYY [i] HH:mm'\n },\n calendar: {\n sameDay: '[i teie mahana, i] LT',\n nextDay: '[apopo i] LT',\n nextWeek: 'dddd [i] LT',\n lastDay: '[inanahi i] LT',\n lastWeek: 'dddd [whakamutunga i] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'i roto i %s',\n past: '%s i mua',\n s: 'te hēkona ruarua',\n ss: '%d hēkona',\n m: 'he meneti',\n mm: '%d meneti',\n h: 'te haora',\n hh: '%d haora',\n d: 'he ra',\n dd: '%d ra',\n M: 'he marama',\n MM: '%d marama',\n y: 'he tau',\n yy: '%d tau'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return mi;\n});","//! moment.js locale configuration\n//! locale : Macedonian [mk]\n//! author : Borislav Mickov : https://github.com/B0k0\n//! author : Sashko Todorov : https://github.com/bkyceh\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var mk = moment.defineLocale('mk', {\n months: 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split('_'),\n monthsShort: 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'),\n weekdays: 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split('_'),\n weekdaysShort: 'нед_пон_вто_сре_чет_пет_саб'.split('_'),\n weekdaysMin: 'нe_пo_вт_ср_че_пе_сa'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm'\n },\n calendar: {\n sameDay: '[Денес во] LT',\n nextDay: '[Утре во] LT',\n nextWeek: '[Во] dddd [во] LT',\n lastDay: '[Вчера во] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 6:\n return '[Изминатата] dddd [во] LT';\n\n case 1:\n case 2:\n case 4:\n case 5:\n return '[Изминатиот] dddd [во] LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'за %s',\n past: 'пред %s',\n s: 'неколку секунди',\n ss: '%d секунди',\n m: 'една минута',\n mm: '%d минути',\n h: 'еден час',\n hh: '%d часа',\n d: 'еден ден',\n dd: '%d дена',\n M: 'еден месец',\n MM: '%d месеци',\n y: 'една година',\n yy: '%d години'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n ordinal: function (number) {\n var lastDigit = number % 10,\n last2Digits = number % 100;\n\n if (number === 0) {\n return number + '-ев';\n } else if (last2Digits === 0) {\n return number + '-ен';\n } else if (last2Digits > 10 && last2Digits < 20) {\n return number + '-ти';\n } else if (lastDigit === 1) {\n return number + '-ви';\n } else if (lastDigit === 2) {\n return number + '-ри';\n } else if (lastDigit === 7 || lastDigit === 8) {\n return number + '-ми';\n } else {\n return number + '-ти';\n }\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n\n }\n });\n return mk;\n});","//! moment.js locale configuration\n//! locale : Malayalam [ml]\n//! author : Floyd Pink : https://github.com/floydpink\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var ml = moment.defineLocale('ml', {\n months: 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split('_'),\n monthsShort: 'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split('_'),\n monthsParseExact: true,\n weekdays: 'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split('_'),\n weekdaysShort: 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'),\n weekdaysMin: 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm -നു',\n LTS: 'A h:mm:ss -നു',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm -നു',\n LLLL: 'dddd, D MMMM YYYY, A h:mm -നു'\n },\n calendar: {\n sameDay: '[ഇന്ന്] LT',\n nextDay: '[നാളെ] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ഇന്നലെ] LT',\n lastWeek: '[കഴിഞ്ഞ] dddd, LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s കഴിഞ്ഞ്',\n past: '%s മുൻപ്',\n s: 'അൽപ നിമിഷങ്ങൾ',\n ss: '%d സെക്കൻഡ്',\n m: 'ഒരു മിനിറ്റ്',\n mm: '%d മിനിറ്റ്',\n h: 'ഒരു മണിക്കൂർ',\n hh: '%d മണിക്കൂർ',\n d: 'ഒരു ദിവസം',\n dd: '%d ദിവസം',\n M: 'ഒരു മാസം',\n MM: '%d മാസം',\n y: 'ഒരു വർഷം',\n yy: '%d വർഷം'\n },\n meridiemParse: /രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n\n if (meridiem === 'രാത്രി' && hour >= 4 || meridiem === 'ഉച്ച കഴിഞ്ഞ്' || meridiem === 'വൈകുന്നേരം') {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'രാത്രി';\n } else if (hour < 12) {\n return 'രാവിലെ';\n } else if (hour < 17) {\n return 'ഉച്ച കഴിഞ്ഞ്';\n } else if (hour < 20) {\n return 'വൈകുന്നേരം';\n } else {\n return 'രാത്രി';\n }\n }\n });\n return ml;\n});","//! moment.js locale configuration\n//! locale : Mongolian [mn]\n//! author : Javkhlantugs Nyamdorj : https://github.com/javkhaanj7\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n function translate(number, withoutSuffix, key, isFuture) {\n switch (key) {\n case 's':\n return withoutSuffix ? 'хэдхэн секунд' : 'хэдхэн секундын';\n\n case 'ss':\n return number + (withoutSuffix ? ' секунд' : ' секундын');\n\n case 'm':\n case 'mm':\n return number + (withoutSuffix ? ' минут' : ' минутын');\n\n case 'h':\n case 'hh':\n return number + (withoutSuffix ? ' цаг' : ' цагийн');\n\n case 'd':\n case 'dd':\n return number + (withoutSuffix ? ' өдөр' : ' өдрийн');\n\n case 'M':\n case 'MM':\n return number + (withoutSuffix ? ' сар' : ' сарын');\n\n case 'y':\n case 'yy':\n return number + (withoutSuffix ? ' жил' : ' жилийн');\n\n default:\n return number;\n }\n }\n\n var mn = moment.defineLocale('mn', {\n months: 'Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар'.split('_'),\n monthsShort: '1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар'.split('_'),\n monthsParseExact: true,\n weekdays: 'Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба'.split('_'),\n weekdaysShort: 'Ням_Дав_Мяг_Лха_Пүр_Баа_Бям'.split('_'),\n weekdaysMin: 'Ня_Да_Мя_Лх_Пү_Ба_Бя'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY оны MMMMын D',\n LLL: 'YYYY оны MMMMын D HH:mm',\n LLLL: 'dddd, YYYY оны MMMMын D HH:mm'\n },\n meridiemParse: /ҮӨ|ҮХ/i,\n isPM: function (input) {\n return input === 'ҮХ';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ҮӨ';\n } else {\n return 'ҮХ';\n }\n },\n calendar: {\n sameDay: '[Өнөөдөр] LT',\n nextDay: '[Маргааш] LT',\n nextWeek: '[Ирэх] dddd LT',\n lastDay: '[Өчигдөр] LT',\n lastWeek: '[Өнгөрсөн] dddd LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s дараа',\n past: '%s өмнө',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2} өдөр/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + ' өдөр';\n\n default:\n return number;\n }\n }\n });\n return mn;\n});","//! moment.js locale configuration\n//! locale : Marathi [mr]\n//! author : Harshad Kale : https://github.com/kalehv\n//! author : Vivek Athalye : https://github.com/vnathalye\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var symbolMap = {\n 1: '१',\n 2: '२',\n 3: '३',\n 4: '४',\n 5: '५',\n 6: '६',\n 7: '७',\n 8: '८',\n 9: '९',\n 0: '०'\n },\n numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0'\n };\n\n function relativeTimeMr(number, withoutSuffix, string, isFuture) {\n var output = '';\n\n if (withoutSuffix) {\n switch (string) {\n case 's':\n output = 'काही सेकंद';\n break;\n\n case 'ss':\n output = '%d सेकंद';\n break;\n\n case 'm':\n output = 'एक मिनिट';\n break;\n\n case 'mm':\n output = '%d मिनिटे';\n break;\n\n case 'h':\n output = 'एक तास';\n break;\n\n case 'hh':\n output = '%d तास';\n break;\n\n case 'd':\n output = 'एक दिवस';\n break;\n\n case 'dd':\n output = '%d दिवस';\n break;\n\n case 'M':\n output = 'एक महिना';\n break;\n\n case 'MM':\n output = '%d महिने';\n break;\n\n case 'y':\n output = 'एक वर्ष';\n break;\n\n case 'yy':\n output = '%d वर्षे';\n break;\n }\n } else {\n switch (string) {\n case 's':\n output = 'काही सेकंदां';\n break;\n\n case 'ss':\n output = '%d सेकंदां';\n break;\n\n case 'm':\n output = 'एका मिनिटा';\n break;\n\n case 'mm':\n output = '%d मिनिटां';\n break;\n\n case 'h':\n output = 'एका तासा';\n break;\n\n case 'hh':\n output = '%d तासां';\n break;\n\n case 'd':\n output = 'एका दिवसा';\n break;\n\n case 'dd':\n output = '%d दिवसां';\n break;\n\n case 'M':\n output = 'एका महिन्या';\n break;\n\n case 'MM':\n output = '%d महिन्यां';\n break;\n\n case 'y':\n output = 'एका वर्षा';\n break;\n\n case 'yy':\n output = '%d वर्षां';\n break;\n }\n }\n\n return output.replace(/%d/i, number);\n }\n\n var mr = moment.defineLocale('mr', {\n months: 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split('_'),\n monthsShort: 'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split('_'),\n monthsParseExact: true,\n weekdays: 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\n weekdaysShort: 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'),\n weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),\n longDateFormat: {\n LT: 'A h:mm वाजता',\n LTS: 'A h:mm:ss वाजता',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm वाजता',\n LLLL: 'dddd, D MMMM YYYY, A h:mm वाजता'\n },\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[उद्या] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[काल] LT',\n lastWeek: '[मागील] dddd, LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%sमध्ये',\n past: '%sपूर्वी',\n s: relativeTimeMr,\n ss: relativeTimeMr,\n m: relativeTimeMr,\n mm: relativeTimeMr,\n h: relativeTimeMr,\n hh: relativeTimeMr,\n d: relativeTimeMr,\n dd: relativeTimeMr,\n M: relativeTimeMr,\n MM: relativeTimeMr,\n y: relativeTimeMr,\n yy: relativeTimeMr\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /पहाटे|सकाळी|दुपारी|सायंकाळी|रात्री/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n\n if (meridiem === 'पहाटे' || meridiem === 'सकाळी') {\n return hour;\n } else if (meridiem === 'दुपारी' || meridiem === 'सायंकाळी' || meridiem === 'रात्री') {\n return hour >= 12 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour >= 0 && hour < 6) {\n return 'पहाटे';\n } else if (hour < 12) {\n return 'सकाळी';\n } else if (hour < 17) {\n return 'दुपारी';\n } else if (hour < 20) {\n return 'सायंकाळी';\n } else {\n return 'रात्री';\n }\n },\n week: {\n dow: 0,\n // Sunday is the first day of the week.\n doy: 6 // The week that contains Jan 6th is the first week of the year.\n\n }\n });\n return mr;\n});","//! moment.js locale configuration\n//! locale : Malay [ms]\n//! author : Weldan Jamili : https://github.com/weldan\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var ms = moment.defineLocale('ms', {\n months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split('_'),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm'\n },\n meridiemParse: /pagi|tengahari|petang|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'tengahari') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'petang' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'tengahari';\n } else if (hours < 19) {\n return 'petang';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Esok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kelmarin pukul] LT',\n lastWeek: 'dddd [lepas pukul] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lepas',\n s: 'beberapa saat',\n ss: '%d saat',\n m: 'seminit',\n mm: '%d minit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun'\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n\n }\n });\n return ms;\n});","//! moment.js locale configuration\n//! locale : Malay [ms-my]\n//! note : DEPRECATED, the correct one is [ms]\n//! author : Weldan Jamili : https://github.com/weldan\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var msMy = moment.defineLocale('ms-my', {\n months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split('_'),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm'\n },\n meridiemParse: /pagi|tengahari|petang|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'tengahari') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'petang' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'tengahari';\n } else if (hours < 19) {\n return 'petang';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Esok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kelmarin pukul] LT',\n lastWeek: 'dddd [lepas pukul] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lepas',\n s: 'beberapa saat',\n ss: '%d saat',\n m: 'seminit',\n mm: '%d minit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun'\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n\n }\n });\n return msMy;\n});","//! moment.js locale configuration\n//! locale : Maltese (Malta) [mt]\n//! author : Alessandro Maruccia : https://github.com/alesma\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var mt = moment.defineLocale('mt', {\n months: 'Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru'.split('_'),\n monthsShort: 'Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ'.split('_'),\n weekdays: 'Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt'.split('_'),\n weekdaysShort: 'Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib'.split('_'),\n weekdaysMin: 'Ħa_Tn_Tl_Er_Ħa_Ġi_Si'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Illum fil-]LT',\n nextDay: '[Għada fil-]LT',\n nextWeek: 'dddd [fil-]LT',\n lastDay: '[Il-bieraħ fil-]LT',\n lastWeek: 'dddd [li għadda] [fil-]LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'f’ %s',\n past: '%s ilu',\n s: 'ftit sekondi',\n ss: '%d sekondi',\n m: 'minuta',\n mm: '%d minuti',\n h: 'siegħa',\n hh: '%d siegħat',\n d: 'ġurnata',\n dd: '%d ġranet',\n M: 'xahar',\n MM: '%d xhur',\n y: 'sena',\n yy: '%d sni'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return mt;\n});","//! moment.js locale configuration\n//! locale : Burmese [my]\n//! author : Squar team, mysquar.com\n//! author : David Rossellat : https://github.com/gholadr\n//! author : Tin Aung Lin : https://github.com/thanyawzinmin\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var symbolMap = {\n 1: '၁',\n 2: '၂',\n 3: '၃',\n 4: '၄',\n 5: '၅',\n 6: '၆',\n 7: '၇',\n 8: '၈',\n 9: '၉',\n 0: '၀'\n },\n numberMap = {\n '၁': '1',\n '၂': '2',\n '၃': '3',\n '၄': '4',\n '၅': '5',\n '၆': '6',\n '၇': '7',\n '၈': '8',\n '၉': '9',\n '၀': '0'\n };\n var my = moment.defineLocale('my', {\n months: 'ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ'.split('_'),\n monthsShort: 'ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ'.split('_'),\n weekdays: 'တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ'.split('_'),\n weekdaysShort: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n weekdaysMin: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[ယနေ.] LT [မှာ]',\n nextDay: '[မနက်ဖြန်] LT [မှာ]',\n nextWeek: 'dddd LT [မှာ]',\n lastDay: '[မနေ.က] LT [မှာ]',\n lastWeek: '[ပြီးခဲ့သော] dddd LT [မှာ]',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'လာမည့် %s မှာ',\n past: 'လွန်ခဲ့သော %s က',\n s: 'စက္ကန်.အနည်းငယ်',\n ss: '%d စက္ကန့်',\n m: 'တစ်မိနစ်',\n mm: '%d မိနစ်',\n h: 'တစ်နာရီ',\n hh: '%d နာရီ',\n d: 'တစ်ရက်',\n dd: '%d ရက်',\n M: 'တစ်လ',\n MM: '%d လ',\n y: 'တစ်နှစ်',\n yy: '%d နှစ်'\n },\n preparse: function (string) {\n return string.replace(/[၁၂၃၄၅၆၇၈၉၀]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return my;\n});","//! moment.js locale configuration\n//! locale : Norwegian Bokmål [nb]\n//! authors : Espen Hovlandsdal : https://github.com/rexxars\n//! Sigurd Gartmann : https://github.com/sigurdga\n//! Stephen Ramthun : https://github.com/stephenramthun\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var nb = moment.defineLocale('nb', {\n months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'),\n monthsShort: 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split('_'),\n monthsParseExact: true,\n weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n weekdaysShort: 'sø._ma._ti._on._to._fr._lø.'.split('_'),\n weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] HH:mm',\n LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm'\n },\n calendar: {\n sameDay: '[i dag kl.] LT',\n nextDay: '[i morgen kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[i går kl.] LT',\n lastWeek: '[forrige] dddd [kl.] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'om %s',\n past: '%s siden',\n s: 'noen sekunder',\n ss: '%d sekunder',\n m: 'ett minutt',\n mm: '%d minutter',\n h: 'en time',\n hh: '%d timer',\n d: 'en dag',\n dd: '%d dager',\n w: 'en uke',\n ww: '%d uker',\n M: 'en måned',\n MM: '%d måneder',\n y: 'ett år',\n yy: '%d år'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return nb;\n});","//! moment.js locale configuration\n//! locale : Nepalese [ne]\n//! author : suvash : https://github.com/suvash\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var symbolMap = {\n 1: '१',\n 2: '२',\n 3: '३',\n 4: '४',\n 5: '५',\n 6: '६',\n 7: '७',\n 8: '८',\n 9: '९',\n 0: '०'\n },\n numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0'\n };\n var ne = moment.defineLocale('ne', {\n months: 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split('_'),\n monthsShort: 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split('_'),\n monthsParseExact: true,\n weekdays: 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split('_'),\n weekdaysShort: 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'),\n weekdaysMin: 'आ._सो._मं._बु._बि._शु._श.'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'Aको h:mm बजे',\n LTS: 'Aको h:mm:ss बजे',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, Aको h:mm बजे',\n LLLL: 'dddd, D MMMM YYYY, Aको h:mm बजे'\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /राति|बिहान|दिउँसो|साँझ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n\n if (meridiem === 'राति') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'बिहान') {\n return hour;\n } else if (meridiem === 'दिउँसो') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'साँझ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 3) {\n return 'राति';\n } else if (hour < 12) {\n return 'बिहान';\n } else if (hour < 16) {\n return 'दिउँसो';\n } else if (hour < 20) {\n return 'साँझ';\n } else {\n return 'राति';\n }\n },\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[भोलि] LT',\n nextWeek: '[आउँदो] dddd[,] LT',\n lastDay: '[हिजो] LT',\n lastWeek: '[गएको] dddd[,] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%sमा',\n past: '%s अगाडि',\n s: 'केही क्षण',\n ss: '%d सेकेण्ड',\n m: 'एक मिनेट',\n mm: '%d मिनेट',\n h: 'एक घण्टा',\n hh: '%d घण्टा',\n d: 'एक दिन',\n dd: '%d दिन',\n M: 'एक महिना',\n MM: '%d महिना',\n y: 'एक बर्ष',\n yy: '%d बर्ष'\n },\n week: {\n dow: 0,\n // Sunday is the first day of the week.\n doy: 6 // The week that contains Jan 6th is the first week of the year.\n\n }\n });\n return ne;\n});","//! moment.js locale configuration\n//! locale : Dutch (Belgium) [nl-be]\n//! author : Joris Röling : https://github.com/jorisroling\n//! author : Jacob Middag : https://github.com/middagj\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),\n monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n monthsParse = [/^jan/i, /^feb/i, /^maart|mrt.?$/i, /^apr/i, /^mei$/i, /^jun[i.]?$/i, /^jul[i.]?$/i, /^aug/i, /^sep/i, /^okt/i, /^nov/i, /^dec/i],\n monthsRegex = /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n var nlBe = moment.defineLocale('nl-be', {\n months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split('_'),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,\n monthsShortStrictRegex: /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),\n weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),\n weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[vandaag om] LT',\n nextDay: '[morgen om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[gisteren om] LT',\n lastWeek: '[afgelopen] dddd [om] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'over %s',\n past: '%s geleden',\n s: 'een paar seconden',\n ss: '%d seconden',\n m: 'één minuut',\n mm: '%d minuten',\n h: 'één uur',\n hh: '%d uur',\n d: 'één dag',\n dd: '%d dagen',\n M: 'één maand',\n MM: '%d maanden',\n y: 'één jaar',\n yy: '%d jaar'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return number + (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de');\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return nlBe;\n});","//! moment.js locale configuration\n//! locale : Nynorsk [nn]\n//! authors : https://github.com/mechuwind\n//! Stephen Ramthun : https://github.com/stephenramthun\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var nn = moment.defineLocale('nn', {\n months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'),\n monthsShort: 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split('_'),\n monthsParseExact: true,\n weekdays: 'sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'),\n weekdaysShort: 'su._må._ty._on._to._fr._lau.'.split('_'),\n weekdaysMin: 'su_må_ty_on_to_fr_la'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] H:mm',\n LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm'\n },\n calendar: {\n sameDay: '[I dag klokka] LT',\n nextDay: '[I morgon klokka] LT',\n nextWeek: 'dddd [klokka] LT',\n lastDay: '[I går klokka] LT',\n lastWeek: '[Føregåande] dddd [klokka] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'om %s',\n past: '%s sidan',\n s: 'nokre sekund',\n ss: '%d sekund',\n m: 'eit minutt',\n mm: '%d minutt',\n h: 'ein time',\n hh: '%d timar',\n d: 'ein dag',\n dd: '%d dagar',\n w: 'ei veke',\n ww: '%d veker',\n M: 'ein månad',\n MM: '%d månader',\n y: 'eit år',\n yy: '%d år'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return nn;\n});","//! moment.js locale configuration\n//! locale : Occitan, lengadocian dialecte [oc-lnc]\n//! author : Quentin PAGÈS : https://github.com/Quenty31\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var ocLnc = moment.defineLocale('oc-lnc', {\n months: {\n standalone: 'genièr_febrièr_març_abril_mai_junh_julhet_agost_setembre_octòbre_novembre_decembre'.split('_'),\n format: \"de genièr_de febrièr_de març_d'abril_de mai_de junh_de julhet_d'agost_de setembre_d'octòbre_de novembre_de decembre\".split('_'),\n isFormat: /D[oD]?(\\s)+MMMM/\n },\n monthsShort: 'gen._febr._març_abr._mai_junh_julh._ago._set._oct._nov._dec.'.split('_'),\n monthsParseExact: true,\n weekdays: 'dimenge_diluns_dimars_dimècres_dijòus_divendres_dissabte'.split('_'),\n weekdaysShort: 'dg._dl._dm._dc._dj._dv._ds.'.split('_'),\n weekdaysMin: 'dg_dl_dm_dc_dj_dv_ds'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [de] YYYY',\n ll: 'D MMM YYYY',\n LLL: 'D MMMM [de] YYYY [a] H:mm',\n lll: 'D MMM YYYY, H:mm',\n LLLL: 'dddd D MMMM [de] YYYY [a] H:mm',\n llll: 'ddd D MMM YYYY, H:mm'\n },\n calendar: {\n sameDay: '[uèi a] LT',\n nextDay: '[deman a] LT',\n nextWeek: 'dddd [a] LT',\n lastDay: '[ièr a] LT',\n lastWeek: 'dddd [passat a] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: \"d'aquí %s\",\n past: 'fa %s',\n s: 'unas segondas',\n ss: '%d segondas',\n m: 'una minuta',\n mm: '%d minutas',\n h: 'una ora',\n hh: '%d oras',\n d: 'un jorn',\n dd: '%d jorns',\n M: 'un mes',\n MM: '%d meses',\n y: 'un an',\n yy: '%d ans'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(r|n|t|è|a)/,\n ordinal: function (number, period) {\n var output = number === 1 ? 'r' : number === 2 ? 'n' : number === 3 ? 'r' : number === 4 ? 't' : 'è';\n\n if (period === 'w' || period === 'W') {\n output = 'a';\n }\n\n return number + output;\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4\n }\n });\n return ocLnc;\n});","//! moment.js locale configuration\n//! locale : Punjabi (India) [pa-in]\n//! author : Harpreet Singh : https://github.com/harpreetkhalsagtbit\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var symbolMap = {\n 1: '੧',\n 2: '੨',\n 3: '੩',\n 4: '੪',\n 5: '੫',\n 6: '੬',\n 7: '੭',\n 8: '੮',\n 9: '੯',\n 0: '੦'\n },\n numberMap = {\n '੧': '1',\n '੨': '2',\n '੩': '3',\n '੪': '4',\n '੫': '5',\n '੬': '6',\n '੭': '7',\n '੮': '8',\n '੯': '9',\n '੦': '0'\n };\n var paIn = moment.defineLocale('pa-in', {\n // There are months name as per Nanakshahi Calendar but they are not used as rigidly in modern Punjabi.\n months: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split('_'),\n monthsShort: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split('_'),\n weekdays: 'ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ'.split('_'),\n weekdaysShort: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),\n weekdaysMin: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm ਵਜੇ',\n LTS: 'A h:mm:ss ਵਜੇ',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm ਵਜੇ',\n LLLL: 'dddd, D MMMM YYYY, A h:mm ਵਜੇ'\n },\n calendar: {\n sameDay: '[ਅਜ] LT',\n nextDay: '[ਕਲ] LT',\n nextWeek: '[ਅਗਲਾ] dddd, LT',\n lastDay: '[ਕਲ] LT',\n lastWeek: '[ਪਿਛਲੇ] dddd, LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s ਵਿੱਚ',\n past: '%s ਪਿਛਲੇ',\n s: 'ਕੁਝ ਸਕਿੰਟ',\n ss: '%d ਸਕਿੰਟ',\n m: 'ਇਕ ਮਿੰਟ',\n mm: '%d ਮਿੰਟ',\n h: 'ਇੱਕ ਘੰਟਾ',\n hh: '%d ਘੰਟੇ',\n d: 'ਇੱਕ ਦਿਨ',\n dd: '%d ਦਿਨ',\n M: 'ਇੱਕ ਮਹੀਨਾ',\n MM: '%d ਮਹੀਨੇ',\n y: 'ਇੱਕ ਸਾਲ',\n yy: '%d ਸਾਲ'\n },\n preparse: function (string) {\n return string.replace(/[੧੨੩੪੫੬੭੮੯੦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Punjabi notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Punjabi.\n meridiemParse: /ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n\n if (meridiem === 'ਰਾਤ') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ਸਵੇਰ') {\n return hour;\n } else if (meridiem === 'ਦੁਪਹਿਰ') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'ਸ਼ਾਮ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ਰਾਤ';\n } else if (hour < 10) {\n return 'ਸਵੇਰ';\n } else if (hour < 17) {\n return 'ਦੁਪਹਿਰ';\n } else if (hour < 20) {\n return 'ਸ਼ਾਮ';\n } else {\n return 'ਰਾਤ';\n }\n },\n week: {\n dow: 0,\n // Sunday is the first day of the week.\n doy: 6 // The week that contains Jan 6th is the first week of the year.\n\n }\n });\n return paIn;\n});","//! moment.js locale configuration\n//! locale : Portuguese (Brazil) [pt-br]\n//! author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var ptBr = moment.defineLocale('pt-br', {\n months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split('_'),\n monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),\n weekdays: 'domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado'.split('_'),\n weekdaysShort: 'dom_seg_ter_qua_qui_sex_sáb'.split('_'),\n weekdaysMin: 'do_2ª_3ª_4ª_5ª_6ª_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY [às] HH:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY [às] HH:mm'\n },\n calendar: {\n sameDay: '[Hoje às] LT',\n nextDay: '[Amanhã às] LT',\n nextWeek: 'dddd [às] LT',\n lastDay: '[Ontem às] LT',\n lastWeek: function () {\n return this.day() === 0 || this.day() === 6 ? '[Último] dddd [às] LT' // Saturday + Sunday\n : '[Última] dddd [às] LT'; // Monday - Friday\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'em %s',\n past: 'há %s',\n s: 'poucos segundos',\n ss: '%d segundos',\n m: 'um minuto',\n mm: '%d minutos',\n h: 'uma hora',\n hh: '%d horas',\n d: 'um dia',\n dd: '%d dias',\n M: 'um mês',\n MM: '%d meses',\n y: 'um ano',\n yy: '%d anos'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n invalidDate: 'Data inválida'\n });\n return ptBr;\n});","//! moment.js locale configuration\n//! locale : Romanian [ro]\n//! author : Vlad Gurdiga : https://github.com/gurdiga\n//! author : Valentin Agachi : https://github.com/avaly\n//! author : Emanuel Cepoi : https://github.com/cepem\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: 'secunde',\n mm: 'minute',\n hh: 'ore',\n dd: 'zile',\n ww: 'săptămâni',\n MM: 'luni',\n yy: 'ani'\n },\n separator = ' ';\n\n if (number % 100 >= 20 || number >= 100 && number % 100 === 0) {\n separator = ' de ';\n }\n\n return number + separator + format[key];\n }\n\n var ro = moment.defineLocale('ro', {\n months: 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split('_'),\n monthsShort: 'ian._feb._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split('_'),\n monthsParseExact: true,\n weekdays: 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'),\n weekdaysShort: 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'),\n weekdaysMin: 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm'\n },\n calendar: {\n sameDay: '[azi la] LT',\n nextDay: '[mâine la] LT',\n nextWeek: 'dddd [la] LT',\n lastDay: '[ieri la] LT',\n lastWeek: '[fosta] dddd [la] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'peste %s',\n past: '%s în urmă',\n s: 'câteva secunde',\n ss: relativeTimeWithPlural,\n m: 'un minut',\n mm: relativeTimeWithPlural,\n h: 'o oră',\n hh: relativeTimeWithPlural,\n d: 'o zi',\n dd: relativeTimeWithPlural,\n w: 'o săptămână',\n ww: relativeTimeWithPlural,\n M: 'o lună',\n MM: relativeTimeWithPlural,\n y: 'un an',\n yy: relativeTimeWithPlural\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n\n }\n });\n return ro;\n});","//! moment.js locale configuration\n//! locale : Russian [ru]\n//! author : Viktorminator : https://github.com/Viktorminator\n//! author : Menelion Elensúle : https://github.com/Oire\n//! author : Коренберг Марк : https://github.com/socketpair\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11 ? forms[0] : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2];\n }\n\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',\n mm: withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут',\n hh: 'час_часа_часов',\n dd: 'день_дня_дней',\n ww: 'неделя_недели_недель',\n MM: 'месяц_месяца_месяцев',\n yy: 'год_года_лет'\n };\n\n if (key === 'm') {\n return withoutSuffix ? 'минута' : 'минуту';\n } else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n\n var monthsParse = [/^янв/i, /^фев/i, /^мар/i, /^апр/i, /^ма[йя]/i, /^июн/i, /^июл/i, /^авг/i, /^сен/i, /^окт/i, /^ноя/i, /^дек/i]; // http://new.gramota.ru/spravka/rules/139-prop : § 103\n // Сокращения месяцев: http://new.gramota.ru/spravka/buro/search-answer?s=242637\n // CLDR data: http://www.unicode.org/cldr/charts/28/summary/ru.html#1753\n\n var ru = moment.defineLocale('ru', {\n months: {\n format: 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split('_'),\n standalone: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_')\n },\n monthsShort: {\n // по CLDR именно \"июл.\" и \"июн.\", но какой смысл менять букву на точку?\n format: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split('_'),\n standalone: 'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split('_')\n },\n weekdays: {\n standalone: 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split('_'),\n format: 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split('_'),\n isFormat: /\\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?] ?dddd/\n },\n weekdaysShort: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n weekdaysMin: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n // полные названия с падежами, по три буквы, для некоторых, по 4 буквы, сокращения с точкой и без точки\n monthsRegex: /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n // копия предыдущего\n monthsShortRegex: /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n // полные названия с падежами\n monthsStrictRegex: /^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,\n // Выражение, которое соответствует только сокращённым формам\n monthsShortStrictRegex: /^(янв\\.|февр?\\.|мар[т.]|апр\\.|ма[яй]|июн[ья.]|июл[ья.]|авг\\.|сент?\\.|окт\\.|нояб?\\.|дек\\.)/i,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY г.',\n LLL: 'D MMMM YYYY г., H:mm',\n LLLL: 'dddd, D MMMM YYYY г., H:mm'\n },\n calendar: {\n sameDay: '[Сегодня, в] LT',\n nextDay: '[Завтра, в] LT',\n lastDay: '[Вчера, в] LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n switch (this.day()) {\n case 0:\n return '[В следующее] dddd, [в] LT';\n\n case 1:\n case 2:\n case 4:\n return '[В следующий] dddd, [в] LT';\n\n case 3:\n case 5:\n case 6:\n return '[В следующую] dddd, [в] LT';\n }\n } else {\n if (this.day() === 2) {\n return '[Во] dddd, [в] LT';\n } else {\n return '[В] dddd, [в] LT';\n }\n }\n },\n lastWeek: function (now) {\n if (now.week() !== this.week()) {\n switch (this.day()) {\n case 0:\n return '[В прошлое] dddd, [в] LT';\n\n case 1:\n case 2:\n case 4:\n return '[В прошлый] dddd, [в] LT';\n\n case 3:\n case 5:\n case 6:\n return '[В прошлую] dddd, [в] LT';\n }\n } else {\n if (this.day() === 2) {\n return '[Во] dddd, [в] LT';\n } else {\n return '[В] dddd, [в] LT';\n }\n }\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'через %s',\n past: '%s назад',\n s: 'несколько секунд',\n ss: relativeTimeWithPlural,\n m: relativeTimeWithPlural,\n mm: relativeTimeWithPlural,\n h: 'час',\n hh: relativeTimeWithPlural,\n d: 'день',\n dd: relativeTimeWithPlural,\n w: 'неделя',\n ww: relativeTimeWithPlural,\n M: 'месяц',\n MM: relativeTimeWithPlural,\n y: 'год',\n yy: relativeTimeWithPlural\n },\n meridiemParse: /ночи|утра|дня|вечера/i,\n isPM: function (input) {\n return /^(дня|вечера)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночи';\n } else if (hour < 12) {\n return 'утра';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечера';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(й|го|я)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n return number + '-й';\n\n case 'D':\n return number + '-го';\n\n case 'w':\n case 'W':\n return number + '-я';\n\n default:\n return number;\n }\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return ru;\n});","//! moment.js locale configuration\n//! locale : Sindhi [sd]\n//! author : Narain Sagar : https://github.com/narainsagar\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var months = ['جنوري', 'فيبروري', 'مارچ', 'اپريل', 'مئي', 'جون', 'جولاءِ', 'آگسٽ', 'سيپٽمبر', 'آڪٽوبر', 'نومبر', 'ڊسمبر'],\n days = ['آچر', 'سومر', 'اڱارو', 'اربع', 'خميس', 'جمع', 'ڇنڇر'];\n var sd = moment.defineLocale('sd', {\n months: months,\n monthsShort: months,\n weekdays: days,\n weekdaysShort: days,\n weekdaysMin: days,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd، D MMMM YYYY HH:mm'\n },\n meridiemParse: /صبح|شام/,\n isPM: function (input) {\n return 'شام' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'صبح';\n }\n\n return 'شام';\n },\n calendar: {\n sameDay: '[اڄ] LT',\n nextDay: '[سڀاڻي] LT',\n nextWeek: 'dddd [اڳين هفتي تي] LT',\n lastDay: '[ڪالهه] LT',\n lastWeek: '[گزريل هفتي] dddd [تي] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s پوء',\n past: '%s اڳ',\n s: 'چند سيڪنڊ',\n ss: '%d سيڪنڊ',\n m: 'هڪ منٽ',\n mm: '%d منٽ',\n h: 'هڪ ڪلاڪ',\n hh: '%d ڪلاڪ',\n d: 'هڪ ڏينهن',\n dd: '%d ڏينهن',\n M: 'هڪ مهينو',\n MM: '%d مهينا',\n y: 'هڪ سال',\n yy: '%d سال'\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return sd;\n});","//! moment.js locale configuration\n//! locale : Northern Sami [se]\n//! authors : Bård Rolstad Henriksen : https://github.com/karamell\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var se = moment.defineLocale('se', {\n months: 'ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu'.split('_'),\n monthsShort: 'ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov'.split('_'),\n weekdays: 'sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split('_'),\n weekdaysShort: 'sotn_vuos_maŋ_gask_duor_bear_láv'.split('_'),\n weekdaysMin: 's_v_m_g_d_b_L'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'MMMM D. [b.] YYYY',\n LLL: 'MMMM D. [b.] YYYY [ti.] HH:mm',\n LLLL: 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm'\n },\n calendar: {\n sameDay: '[otne ti] LT',\n nextDay: '[ihttin ti] LT',\n nextWeek: 'dddd [ti] LT',\n lastDay: '[ikte ti] LT',\n lastWeek: '[ovddit] dddd [ti] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s geažes',\n past: 'maŋit %s',\n s: 'moadde sekunddat',\n ss: '%d sekunddat',\n m: 'okta minuhta',\n mm: '%d minuhtat',\n h: 'okta diimmu',\n hh: '%d diimmut',\n d: 'okta beaivi',\n dd: '%d beaivvit',\n M: 'okta mánnu',\n MM: '%d mánut',\n y: 'okta jahki',\n yy: '%d jagit'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return se;\n});","//! moment.js locale configuration\n//! locale : Sinhalese [si]\n//! author : Sampath Sitinamaluwa : https://github.com/sampathsris\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n /*jshint -W100*/\n\n var si = moment.defineLocale('si', {\n months: 'ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්'.split('_'),\n monthsShort: 'ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ'.split('_'),\n weekdays: 'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split('_'),\n weekdaysShort: 'ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන'.split('_'),\n weekdaysMin: 'ඉ_ස_අ_බ_බ්‍ර_සි_සෙ'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'a h:mm',\n LTS: 'a h:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY MMMM D',\n LLL: 'YYYY MMMM D, a h:mm',\n LLLL: 'YYYY MMMM D [වැනි] dddd, a h:mm:ss'\n },\n calendar: {\n sameDay: '[අද] LT[ට]',\n nextDay: '[හෙට] LT[ට]',\n nextWeek: 'dddd LT[ට]',\n lastDay: '[ඊයේ] LT[ට]',\n lastWeek: '[පසුගිය] dddd LT[ට]',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%sකින්',\n past: '%sකට පෙර',\n s: 'තත්පර කිහිපය',\n ss: 'තත්පර %d',\n m: 'මිනිත්තුව',\n mm: 'මිනිත්තු %d',\n h: 'පැය',\n hh: 'පැය %d',\n d: 'දිනය',\n dd: 'දින %d',\n M: 'මාසය',\n MM: 'මාස %d',\n y: 'වසර',\n yy: 'වසර %d'\n },\n dayOfMonthOrdinalParse: /\\d{1,2} වැනි/,\n ordinal: function (number) {\n return number + ' වැනි';\n },\n meridiemParse: /පෙර වරු|පස් වරු|පෙ.ව|ප.ව./,\n isPM: function (input) {\n return input === 'ප.ව.' || input === 'පස් වරු';\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'ප.ව.' : 'පස් වරු';\n } else {\n return isLower ? 'පෙ.ව.' : 'පෙර වරු';\n }\n }\n });\n return si;\n});","//! moment.js locale configuration\n//! locale : Slovak [sk]\n//! author : Martin Minka : https://github.com/k2s\n//! based on work of petrbela : https://github.com/petrbela\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var months = 'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split('_'),\n monthsShort = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_');\n\n function plural(n) {\n return n > 1 && n < 5;\n }\n\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n\n switch (key) {\n case 's':\n // a few seconds / in a few seconds / a few seconds ago\n return withoutSuffix || isFuture ? 'pár sekúnd' : 'pár sekundami';\n\n case 'ss':\n // 9 seconds / in 9 seconds / 9 seconds ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'sekundy' : 'sekúnd');\n } else {\n return result + 'sekundami';\n }\n\n case 'm':\n // a minute / in a minute / a minute ago\n return withoutSuffix ? 'minúta' : isFuture ? 'minútu' : 'minútou';\n\n case 'mm':\n // 9 minutes / in 9 minutes / 9 minutes ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'minúty' : 'minút');\n } else {\n return result + 'minútami';\n }\n\n case 'h':\n // an hour / in an hour / an hour ago\n return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';\n\n case 'hh':\n // 9 hours / in 9 hours / 9 hours ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'hodiny' : 'hodín');\n } else {\n return result + 'hodinami';\n }\n\n case 'd':\n // a day / in a day / a day ago\n return withoutSuffix || isFuture ? 'deň' : 'dňom';\n\n case 'dd':\n // 9 days / in 9 days / 9 days ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'dni' : 'dní');\n } else {\n return result + 'dňami';\n }\n\n case 'M':\n // a month / in a month / a month ago\n return withoutSuffix || isFuture ? 'mesiac' : 'mesiacom';\n\n case 'MM':\n // 9 months / in 9 months / 9 months ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'mesiace' : 'mesiacov');\n } else {\n return result + 'mesiacmi';\n }\n\n case 'y':\n // a year / in a year / a year ago\n return withoutSuffix || isFuture ? 'rok' : 'rokom';\n\n case 'yy':\n // 9 years / in 9 years / 9 years ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'roky' : 'rokov');\n } else {\n return result + 'rokmi';\n }\n\n }\n }\n\n var sk = moment.defineLocale('sk', {\n months: months,\n monthsShort: monthsShort,\n weekdays: 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'),\n weekdaysShort: 'ne_po_ut_st_št_pi_so'.split('_'),\n weekdaysMin: 'ne_po_ut_st_št_pi_so'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd D. MMMM YYYY H:mm'\n },\n calendar: {\n sameDay: '[dnes o] LT',\n nextDay: '[zajtra o] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v nedeľu o] LT';\n\n case 1:\n case 2:\n return '[v] dddd [o] LT';\n\n case 3:\n return '[v stredu o] LT';\n\n case 4:\n return '[vo štvrtok o] LT';\n\n case 5:\n return '[v piatok o] LT';\n\n case 6:\n return '[v sobotu o] LT';\n }\n },\n lastDay: '[včera o] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[minulú nedeľu o] LT';\n\n case 1:\n case 2:\n return '[minulý] dddd [o] LT';\n\n case 3:\n return '[minulú stredu o] LT';\n\n case 4:\n case 5:\n return '[minulý] dddd [o] LT';\n\n case 6:\n return '[minulú sobotu o] LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'za %s',\n past: 'pred %s',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return sk;\n});","//! moment.js locale configuration\n//! locale : Slovenian [sl]\n//! author : Robert Sedovšek : https://github.com/sedovsek\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n\n switch (key) {\n case 's':\n return withoutSuffix || isFuture ? 'nekaj sekund' : 'nekaj sekundami';\n\n case 'ss':\n if (number === 1) {\n result += withoutSuffix ? 'sekundo' : 'sekundi';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'sekundi' : 'sekundah';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'sekunde' : 'sekundah';\n } else {\n result += 'sekund';\n }\n\n return result;\n\n case 'm':\n return withoutSuffix ? 'ena minuta' : 'eno minuto';\n\n case 'mm':\n if (number === 1) {\n result += withoutSuffix ? 'minuta' : 'minuto';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'minuti' : 'minutama';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'minute' : 'minutami';\n } else {\n result += withoutSuffix || isFuture ? 'minut' : 'minutami';\n }\n\n return result;\n\n case 'h':\n return withoutSuffix ? 'ena ura' : 'eno uro';\n\n case 'hh':\n if (number === 1) {\n result += withoutSuffix ? 'ura' : 'uro';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'uri' : 'urama';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'ure' : 'urami';\n } else {\n result += withoutSuffix || isFuture ? 'ur' : 'urami';\n }\n\n return result;\n\n case 'd':\n return withoutSuffix || isFuture ? 'en dan' : 'enim dnem';\n\n case 'dd':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'dan' : 'dnem';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'dni' : 'dnevoma';\n } else {\n result += withoutSuffix || isFuture ? 'dni' : 'dnevi';\n }\n\n return result;\n\n case 'M':\n return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem';\n\n case 'MM':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'mesec' : 'mesecem';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'meseca' : 'mesecema';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'mesece' : 'meseci';\n } else {\n result += withoutSuffix || isFuture ? 'mesecev' : 'meseci';\n }\n\n return result;\n\n case 'y':\n return withoutSuffix || isFuture ? 'eno leto' : 'enim letom';\n\n case 'yy':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'leto' : 'letom';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'leti' : 'letoma';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'leta' : 'leti';\n } else {\n result += withoutSuffix || isFuture ? 'let' : 'leti';\n }\n\n return result;\n }\n }\n\n var sl = moment.defineLocale('sl', {\n months: 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split('_'),\n monthsShort: 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split('_'),\n monthsParseExact: true,\n weekdays: 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'),\n weekdaysShort: 'ned._pon._tor._sre._čet._pet._sob.'.split('_'),\n weekdaysMin: 'ne_po_to_sr_če_pe_so'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD. MM. YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm'\n },\n calendar: {\n sameDay: '[danes ob] LT',\n nextDay: '[jutri ob] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v] [nedeljo] [ob] LT';\n\n case 3:\n return '[v] [sredo] [ob] LT';\n\n case 6:\n return '[v] [soboto] [ob] LT';\n\n case 1:\n case 2:\n case 4:\n case 5:\n return '[v] dddd [ob] LT';\n }\n },\n lastDay: '[včeraj ob] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[prejšnjo] [nedeljo] [ob] LT';\n\n case 3:\n return '[prejšnjo] [sredo] [ob] LT';\n\n case 6:\n return '[prejšnjo] [soboto] [ob] LT';\n\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prejšnji] dddd [ob] LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'čez %s',\n past: 'pred %s',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n\n }\n });\n return sl;\n});","//! moment.js locale configuration\n//! locale : Albanian [sq]\n//! author : Flakërim Ismani : https://github.com/flakerimi\n//! author : Menelion Elensúle : https://github.com/Oire\n//! author : Oerd Cukalla : https://github.com/oerd\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var sq = moment.defineLocale('sq', {\n months: 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split('_'),\n monthsShort: 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'),\n weekdays: 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split('_'),\n weekdaysShort: 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'),\n weekdaysMin: 'D_H_Ma_Më_E_P_Sh'.split('_'),\n weekdaysParseExact: true,\n meridiemParse: /PD|MD/,\n isPM: function (input) {\n return input.charAt(0) === 'M';\n },\n meridiem: function (hours, minutes, isLower) {\n return hours < 12 ? 'PD' : 'MD';\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Sot në] LT',\n nextDay: '[Nesër në] LT',\n nextWeek: 'dddd [në] LT',\n lastDay: '[Dje në] LT',\n lastWeek: 'dddd [e kaluar në] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'në %s',\n past: '%s më parë',\n s: 'disa sekonda',\n ss: '%d sekonda',\n m: 'një minutë',\n mm: '%d minuta',\n h: 'një orë',\n hh: '%d orë',\n d: 'një ditë',\n dd: '%d ditë',\n M: 'një muaj',\n MM: '%d muaj',\n y: 'një vit',\n yy: '%d vite'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return sq;\n});","//! moment.js locale configuration\n//! locale : Serbian [sr]\n//! author : Milan Janačković : https://github.com/milan-j\n//! author : Stefan Crnjaković : https://github.com/crnjakovic\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var translator = {\n words: {\n //Different grammatical cases\n ss: ['sekunda', 'sekunde', 'sekundi'],\n m: ['jedan minut', 'jednog minuta'],\n mm: ['minut', 'minuta', 'minuta'],\n h: ['jedan sat', 'jednog sata'],\n hh: ['sat', 'sata', 'sati'],\n d: ['jedan dan', 'jednog dana'],\n dd: ['dan', 'dana', 'dana'],\n M: ['jedan mesec', 'jednog meseca'],\n MM: ['mesec', 'meseca', 'meseci'],\n y: ['jednu godinu', 'jedne godine'],\n yy: ['godinu', 'godine', 'godina']\n },\n correctGrammaticalCase: function (number, wordKey) {\n if (number % 10 >= 1 && number % 10 <= 4 && (number % 100 < 10 || number % 100 >= 20)) {\n return number % 10 === 1 ? wordKey[0] : wordKey[1];\n }\n\n return wordKey[2];\n },\n translate: function (number, withoutSuffix, key, isFuture) {\n var wordKey = translator.words[key],\n word;\n\n if (key.length === 1) {\n // Nominativ\n if (key === 'y' && withoutSuffix) return 'jedna godina';\n return isFuture || withoutSuffix ? wordKey[0] : wordKey[1];\n }\n\n word = translator.correctGrammaticalCase(number, wordKey); // Nominativ\n\n if (key === 'yy' && withoutSuffix && word === 'godinu') {\n return number + ' godina';\n }\n\n return number + ' ' + word;\n }\n };\n var sr = moment.defineLocale('sr', {\n months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split('_'),\n monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),\n monthsParseExact: true,\n weekdays: 'nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota'.split('_'),\n weekdaysShort: 'ned._pon._uto._sre._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D. M. YYYY.',\n LL: 'D. MMMM YYYY.',\n LLL: 'D. MMMM YYYY. H:mm',\n LLLL: 'dddd, D. MMMM YYYY. H:mm'\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedelju] [u] LT';\n\n case 3:\n return '[u] [sredu] [u] LT';\n\n case 6:\n return '[u] [subotu] [u] LT';\n\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[juče u] LT',\n lastWeek: function () {\n var lastWeekDays = ['[prošle] [nedelje] [u] LT', '[prošlog] [ponedeljka] [u] LT', '[prošlog] [utorka] [u] LT', '[prošle] [srede] [u] LT', '[prošlog] [četvrtka] [u] LT', '[prošlog] [petka] [u] LT', '[prošle] [subote] [u] LT'];\n return lastWeekDays[this.day()];\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'za %s',\n past: 'pre %s',\n s: 'nekoliko sekundi',\n ss: translator.translate,\n m: translator.translate,\n mm: translator.translate,\n h: translator.translate,\n hh: translator.translate,\n d: translator.translate,\n dd: translator.translate,\n M: translator.translate,\n MM: translator.translate,\n y: translator.translate,\n yy: translator.translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n\n }\n });\n return sr;\n});","//! moment.js locale configuration\n//! locale : Serbian Cyrillic [sr-cyrl]\n//! author : Milan Janačković : https://github.com/milan-j\n//! author : Stefan Crnjaković : https://github.com/crnjakovic\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var translator = {\n words: {\n //Different grammatical cases\n ss: ['секунда', 'секунде', 'секунди'],\n m: ['један минут', 'једног минута'],\n mm: ['минут', 'минута', 'минута'],\n h: ['један сат', 'једног сата'],\n hh: ['сат', 'сата', 'сати'],\n d: ['један дан', 'једног дана'],\n dd: ['дан', 'дана', 'дана'],\n M: ['један месец', 'једног месеца'],\n MM: ['месец', 'месеца', 'месеци'],\n y: ['једну годину', 'једне године'],\n yy: ['годину', 'године', 'година']\n },\n correctGrammaticalCase: function (number, wordKey) {\n if (number % 10 >= 1 && number % 10 <= 4 && (number % 100 < 10 || number % 100 >= 20)) {\n return number % 10 === 1 ? wordKey[0] : wordKey[1];\n }\n\n return wordKey[2];\n },\n translate: function (number, withoutSuffix, key, isFuture) {\n var wordKey = translator.words[key],\n word;\n\n if (key.length === 1) {\n // Nominativ\n if (key === 'y' && withoutSuffix) return 'једна година';\n return isFuture || withoutSuffix ? wordKey[0] : wordKey[1];\n }\n\n word = translator.correctGrammaticalCase(number, wordKey); // Nominativ\n\n if (key === 'yy' && withoutSuffix && word === 'годину') {\n return number + ' година';\n }\n\n return number + ' ' + word;\n }\n };\n var srCyrl = moment.defineLocale('sr-cyrl', {\n months: 'јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар'.split('_'),\n monthsShort: 'јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.'.split('_'),\n monthsParseExact: true,\n weekdays: 'недеља_понедељак_уторак_среда_четвртак_петак_субота'.split('_'),\n weekdaysShort: 'нед._пон._уто._сре._чет._пет._суб.'.split('_'),\n weekdaysMin: 'не_по_ут_ср_че_пе_су'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D. M. YYYY.',\n LL: 'D. MMMM YYYY.',\n LLL: 'D. MMMM YYYY. H:mm',\n LLLL: 'dddd, D. MMMM YYYY. H:mm'\n },\n calendar: {\n sameDay: '[данас у] LT',\n nextDay: '[сутра у] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[у] [недељу] [у] LT';\n\n case 3:\n return '[у] [среду] [у] LT';\n\n case 6:\n return '[у] [суботу] [у] LT';\n\n case 1:\n case 2:\n case 4:\n case 5:\n return '[у] dddd [у] LT';\n }\n },\n lastDay: '[јуче у] LT',\n lastWeek: function () {\n var lastWeekDays = ['[прошле] [недеље] [у] LT', '[прошлог] [понедељка] [у] LT', '[прошлог] [уторка] [у] LT', '[прошле] [среде] [у] LT', '[прошлог] [четвртка] [у] LT', '[прошлог] [петка] [у] LT', '[прошле] [суботе] [у] LT'];\n return lastWeekDays[this.day()];\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'за %s',\n past: 'пре %s',\n s: 'неколико секунди',\n ss: translator.translate,\n m: translator.translate,\n mm: translator.translate,\n h: translator.translate,\n hh: translator.translate,\n d: translator.translate,\n dd: translator.translate,\n M: translator.translate,\n MM: translator.translate,\n y: translator.translate,\n yy: translator.translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 1st is the first week of the year.\n\n }\n });\n return srCyrl;\n});","//! moment.js locale configuration\n//! locale : siSwati [ss]\n//! author : Nicolai Davies : https://github.com/nicolaidavies\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var ss = moment.defineLocale('ss', {\n months: \"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni\".split('_'),\n monthsShort: 'Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo'.split('_'),\n weekdays: 'Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo'.split('_'),\n weekdaysShort: 'Lis_Umb_Lsb_Les_Lsi_Lsh_Umg'.split('_'),\n weekdaysMin: 'Li_Us_Lb_Lt_Ls_Lh_Ug'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A'\n },\n calendar: {\n sameDay: '[Namuhla nga] LT',\n nextDay: '[Kusasa nga] LT',\n nextWeek: 'dddd [nga] LT',\n lastDay: '[Itolo nga] LT',\n lastWeek: 'dddd [leliphelile] [nga] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'nga %s',\n past: 'wenteka nga %s',\n s: 'emizuzwana lomcane',\n ss: '%d mzuzwana',\n m: 'umzuzu',\n mm: '%d emizuzu',\n h: 'lihora',\n hh: '%d emahora',\n d: 'lilanga',\n dd: '%d emalanga',\n M: 'inyanga',\n MM: '%d tinyanga',\n y: 'umnyaka',\n yy: '%d iminyaka'\n },\n meridiemParse: /ekuseni|emini|entsambama|ebusuku/,\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'ekuseni';\n } else if (hours < 15) {\n return 'emini';\n } else if (hours < 19) {\n return 'entsambama';\n } else {\n return 'ebusuku';\n }\n },\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n\n if (meridiem === 'ekuseni') {\n return hour;\n } else if (meridiem === 'emini') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'entsambama' || meridiem === 'ebusuku') {\n if (hour === 0) {\n return 0;\n }\n\n return hour + 12;\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: '%d',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return ss;\n});","//! moment.js locale configuration\n//! locale : Swedish [sv]\n//! author : Jens Alm : https://github.com/ulmus\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var sv = moment.defineLocale('sv', {\n months: 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split('_'),\n monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n weekdays: 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'),\n weekdaysShort: 'sön_mån_tis_ons_tor_fre_lör'.split('_'),\n weekdaysMin: 'sö_må_ti_on_to_fr_lö'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [kl.] HH:mm',\n LLLL: 'dddd D MMMM YYYY [kl.] HH:mm',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd D MMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Idag] LT',\n nextDay: '[Imorgon] LT',\n lastDay: '[Igår] LT',\n nextWeek: '[På] dddd LT',\n lastWeek: '[I] dddd[s] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'om %s',\n past: 'för %s sedan',\n s: 'några sekunder',\n ss: '%d sekunder',\n m: 'en minut',\n mm: '%d minuter',\n h: 'en timme',\n hh: '%d timmar',\n d: 'en dag',\n dd: '%d dagar',\n M: 'en månad',\n MM: '%d månader',\n y: 'ett år',\n yy: '%d år'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(\\:e|\\:a)/,\n ordinal: function (number) {\n var b = number % 10,\n output = ~~(number % 100 / 10) === 1 ? ':e' : b === 1 ? ':a' : b === 2 ? ':a' : b === 3 ? ':e' : ':e';\n return number + output;\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return sv;\n});","//! moment.js locale configuration\n//! locale : Swahili [sw]\n//! author : Fahad Kassim : https://github.com/fadsel\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var sw = moment.defineLocale('sw', {\n months: 'Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba'.split('_'),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des'.split('_'),\n weekdays: 'Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi'.split('_'),\n weekdaysShort: 'Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos'.split('_'),\n weekdaysMin: 'J2_J3_J4_J5_Al_Ij_J1'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'hh:mm A',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[leo saa] LT',\n nextDay: '[kesho saa] LT',\n nextWeek: '[wiki ijayo] dddd [saat] LT',\n lastDay: '[jana] LT',\n lastWeek: '[wiki iliyopita] dddd [saat] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s baadaye',\n past: 'tokea %s',\n s: 'hivi punde',\n ss: 'sekunde %d',\n m: 'dakika moja',\n mm: 'dakika %d',\n h: 'saa limoja',\n hh: 'masaa %d',\n d: 'siku moja',\n dd: 'siku %d',\n M: 'mwezi mmoja',\n MM: 'miezi %d',\n y: 'mwaka mmoja',\n yy: 'miaka %d'\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n\n }\n });\n return sw;\n});","//! moment.js locale configuration\n//! locale : Tamil [ta]\n//! author : Arjunkumar Krishnamoorthy : https://github.com/tk120404\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var symbolMap = {\n 1: '௧',\n 2: '௨',\n 3: '௩',\n 4: '௪',\n 5: '௫',\n 6: '௬',\n 7: '௭',\n 8: '௮',\n 9: '௯',\n 0: '௦'\n },\n numberMap = {\n '௧': '1',\n '௨': '2',\n '௩': '3',\n '௪': '4',\n '௫': '5',\n '௬': '6',\n '௭': '7',\n '௮': '8',\n '௯': '9',\n '௦': '0'\n };\n var ta = moment.defineLocale('ta', {\n months: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split('_'),\n monthsShort: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split('_'),\n weekdays: 'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split('_'),\n weekdaysShort: 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split('_'),\n weekdaysMin: 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, HH:mm',\n LLLL: 'dddd, D MMMM YYYY, HH:mm'\n },\n calendar: {\n sameDay: '[இன்று] LT',\n nextDay: '[நாளை] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[நேற்று] LT',\n lastWeek: '[கடந்த வாரம்] dddd, LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s இல்',\n past: '%s முன்',\n s: 'ஒரு சில விநாடிகள்',\n ss: '%d விநாடிகள்',\n m: 'ஒரு நிமிடம்',\n mm: '%d நிமிடங்கள்',\n h: 'ஒரு மணி நேரம்',\n hh: '%d மணி நேரம்',\n d: 'ஒரு நாள்',\n dd: '%d நாட்கள்',\n M: 'ஒரு மாதம்',\n MM: '%d மாதங்கள்',\n y: 'ஒரு வருடம்',\n yy: '%d ஆண்டுகள்'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}வது/,\n ordinal: function (number) {\n return number + 'வது';\n },\n preparse: function (string) {\n return string.replace(/[௧௨௩௪௫௬௭௮௯௦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // refer http://ta.wikipedia.org/s/1er1\n meridiemParse: /யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,\n meridiem: function (hour, minute, isLower) {\n if (hour < 2) {\n return ' யாமம்';\n } else if (hour < 6) {\n return ' வைகறை'; // வைகறை\n } else if (hour < 10) {\n return ' காலை'; // காலை\n } else if (hour < 14) {\n return ' நண்பகல்'; // நண்பகல்\n } else if (hour < 18) {\n return ' எற்பாடு'; // எற்பாடு\n } else if (hour < 22) {\n return ' மாலை'; // மாலை\n } else {\n return ' யாமம்';\n }\n },\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n\n if (meridiem === 'யாமம்') {\n return hour < 2 ? hour : hour + 12;\n } else if (meridiem === 'வைகறை' || meridiem === 'காலை') {\n return hour;\n } else if (meridiem === 'நண்பகல்') {\n return hour >= 10 ? hour : hour + 12;\n } else {\n return hour + 12;\n }\n },\n week: {\n dow: 0,\n // Sunday is the first day of the week.\n doy: 6 // The week that contains Jan 6th is the first week of the year.\n\n }\n });\n return ta;\n});","//! moment.js locale configuration\n//! locale : Telugu [te]\n//! author : Krishna Chaitanya Thota : https://github.com/kcthota\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var te = moment.defineLocale('te', {\n months: 'జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జులై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్'.split('_'),\n monthsShort: 'జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జులై_ఆగ._సెప్._అక్టో._నవ._డిసె.'.split('_'),\n monthsParseExact: true,\n weekdays: 'ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం'.split('_'),\n weekdaysShort: 'ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని'.split('_'),\n weekdaysMin: 'ఆ_సో_మం_బు_గు_శు_శ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm'\n },\n calendar: {\n sameDay: '[నేడు] LT',\n nextDay: '[రేపు] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[నిన్న] LT',\n lastWeek: '[గత] dddd, LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s లో',\n past: '%s క్రితం',\n s: 'కొన్ని క్షణాలు',\n ss: '%d సెకన్లు',\n m: 'ఒక నిమిషం',\n mm: '%d నిమిషాలు',\n h: 'ఒక గంట',\n hh: '%d గంటలు',\n d: 'ఒక రోజు',\n dd: '%d రోజులు',\n M: 'ఒక నెల',\n MM: '%d నెలలు',\n y: 'ఒక సంవత్సరం',\n yy: '%d సంవత్సరాలు'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}వ/,\n ordinal: '%dవ',\n meridiemParse: /రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n\n if (meridiem === 'రాత్రి') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ఉదయం') {\n return hour;\n } else if (meridiem === 'మధ్యాహ్నం') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'సాయంత్రం') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'రాత్రి';\n } else if (hour < 10) {\n return 'ఉదయం';\n } else if (hour < 17) {\n return 'మధ్యాహ్నం';\n } else if (hour < 20) {\n return 'సాయంత్రం';\n } else {\n return 'రాత్రి';\n }\n },\n week: {\n dow: 0,\n // Sunday is the first day of the week.\n doy: 6 // The week that contains Jan 6th is the first week of the year.\n\n }\n });\n return te;\n});","//! moment.js locale configuration\n//! locale : Tetun Dili (East Timor) [tet]\n//! author : Joshua Brooks : https://github.com/joshbrooks\n//! author : Onorio De J. Afonso : https://github.com/marobo\n//! author : Sonia Simoes : https://github.com/soniasimoes\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var tet = moment.defineLocale('tet', {\n months: 'Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru'.split('_'),\n monthsShort: 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),\n weekdays: 'Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu'.split('_'),\n weekdaysShort: 'Dom_Seg_Ters_Kua_Kint_Sest_Sab'.split('_'),\n weekdaysMin: 'Do_Seg_Te_Ku_Ki_Ses_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Ohin iha] LT',\n nextDay: '[Aban iha] LT',\n nextWeek: 'dddd [iha] LT',\n lastDay: '[Horiseik iha] LT',\n lastWeek: 'dddd [semana kotuk] [iha] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'iha %s',\n past: '%s liuba',\n s: 'segundu balun',\n ss: 'segundu %d',\n m: 'minutu ida',\n mm: 'minutu %d',\n h: 'oras ida',\n hh: 'oras %d',\n d: 'loron ida',\n dd: 'loron %d',\n M: 'fulan ida',\n MM: 'fulan %d',\n y: 'tinan ida',\n yy: 'tinan %d'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output = ~~(number % 100 / 10) === 1 ? 'th' : b === 1 ? 'st' : b === 2 ? 'nd' : b === 3 ? 'rd' : 'th';\n return number + output;\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return tet;\n});","//! moment.js locale configuration\n//! locale : Tajik [tg]\n//! author : Orif N. Jr. : https://github.com/orif-jr\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var suffixes = {\n 0: '-ум',\n 1: '-ум',\n 2: '-юм',\n 3: '-юм',\n 4: '-ум',\n 5: '-ум',\n 6: '-ум',\n 7: '-ум',\n 8: '-ум',\n 9: '-ум',\n 10: '-ум',\n 12: '-ум',\n 13: '-ум',\n 20: '-ум',\n 30: '-юм',\n 40: '-ум',\n 50: '-ум',\n 60: '-ум',\n 70: '-ум',\n 80: '-ум',\n 90: '-ум',\n 100: '-ум'\n };\n var tg = moment.defineLocale('tg', {\n months: {\n format: 'январи_феврали_марти_апрели_майи_июни_июли_августи_сентябри_октябри_ноябри_декабри'.split('_'),\n standalone: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split('_')\n },\n monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),\n weekdays: 'якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе'.split('_'),\n weekdaysShort: 'яшб_дшб_сшб_чшб_пшб_ҷум_шнб'.split('_'),\n weekdaysMin: 'яш_дш_сш_чш_пш_ҷм_шб'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Имрӯз соати] LT',\n nextDay: '[Фардо соати] LT',\n lastDay: '[Дирӯз соати] LT',\n nextWeek: 'dddd[и] [ҳафтаи оянда соати] LT',\n lastWeek: 'dddd[и] [ҳафтаи гузашта соати] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'баъди %s',\n past: '%s пеш',\n s: 'якчанд сония',\n m: 'як дақиқа',\n mm: '%d дақиқа',\n h: 'як соат',\n hh: '%d соат',\n d: 'як рӯз',\n dd: '%d рӯз',\n M: 'як моҳ',\n MM: '%d моҳ',\n y: 'як сол',\n yy: '%d сол'\n },\n meridiemParse: /шаб|субҳ|рӯз|бегоҳ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n\n if (meridiem === 'шаб') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'субҳ') {\n return hour;\n } else if (meridiem === 'рӯз') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'бегоҳ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'шаб';\n } else if (hour < 11) {\n return 'субҳ';\n } else if (hour < 16) {\n return 'рӯз';\n } else if (hour < 19) {\n return 'бегоҳ';\n } else {\n return 'шаб';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ум|юм)/,\n ordinal: function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 1th is the first week of the year.\n\n }\n });\n return tg;\n});","//! moment.js locale configuration\n//! locale : Thai [th]\n//! author : Kridsada Thanabulpong : https://github.com/sirn\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var th = moment.defineLocale('th', {\n months: 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split('_'),\n monthsShort: 'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.split('_'),\n monthsParseExact: true,\n weekdays: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'),\n weekdaysShort: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'),\n // yes, three characters difference\n weekdaysMin: 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY เวลา H:mm',\n LLLL: 'วันddddที่ D MMMM YYYY เวลา H:mm'\n },\n meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/,\n isPM: function (input) {\n return input === 'หลังเที่ยง';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ก่อนเที่ยง';\n } else {\n return 'หลังเที่ยง';\n }\n },\n calendar: {\n sameDay: '[วันนี้ เวลา] LT',\n nextDay: '[พรุ่งนี้ เวลา] LT',\n nextWeek: 'dddd[หน้า เวลา] LT',\n lastDay: '[เมื่อวานนี้ เวลา] LT',\n lastWeek: '[วัน]dddd[ที่แล้ว เวลา] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'อีก %s',\n past: '%sที่แล้ว',\n s: 'ไม่กี่วินาที',\n ss: '%d วินาที',\n m: '1 นาที',\n mm: '%d นาที',\n h: '1 ชั่วโมง',\n hh: '%d ชั่วโมง',\n d: '1 วัน',\n dd: '%d วัน',\n w: '1 สัปดาห์',\n ww: '%d สัปดาห์',\n M: '1 เดือน',\n MM: '%d เดือน',\n y: '1 ปี',\n yy: '%d ปี'\n }\n });\n return th;\n});","//! moment.js locale configuration\n//! locale : Turkmen [tk]\n//! author : Atamyrat Abdyrahmanov : https://github.com/atamyratabdy\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var suffixes = {\n 1: \"'inji\",\n 5: \"'inji\",\n 8: \"'inji\",\n 70: \"'inji\",\n 80: \"'inji\",\n 2: \"'nji\",\n 7: \"'nji\",\n 20: \"'nji\",\n 50: \"'nji\",\n 3: \"'ünji\",\n 4: \"'ünji\",\n 100: \"'ünji\",\n 6: \"'njy\",\n 9: \"'unjy\",\n 10: \"'unjy\",\n 30: \"'unjy\",\n 60: \"'ynjy\",\n 90: \"'ynjy\"\n };\n var tk = moment.defineLocale('tk', {\n months: 'Ýanwar_Fewral_Mart_Aprel_Maý_Iýun_Iýul_Awgust_Sentýabr_Oktýabr_Noýabr_Dekabr'.split('_'),\n monthsShort: 'Ýan_Few_Mar_Apr_Maý_Iýn_Iýl_Awg_Sen_Okt_Noý_Dek'.split('_'),\n weekdays: 'Ýekşenbe_Duşenbe_Sişenbe_Çarşenbe_Penşenbe_Anna_Şenbe'.split('_'),\n weekdaysShort: 'Ýek_Duş_Siş_Çar_Pen_Ann_Şen'.split('_'),\n weekdaysMin: 'Ýk_Dş_Sş_Çr_Pn_An_Şn'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[bugün sagat] LT',\n nextDay: '[ertir sagat] LT',\n nextWeek: '[indiki] dddd [sagat] LT',\n lastDay: '[düýn] LT',\n lastWeek: '[geçen] dddd [sagat] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s soň',\n past: '%s öň',\n s: 'birnäçe sekunt',\n m: 'bir minut',\n mm: '%d minut',\n h: 'bir sagat',\n hh: '%d sagat',\n d: 'bir gün',\n dd: '%d gün',\n M: 'bir aý',\n MM: '%d aý',\n y: 'bir ýyl',\n yy: '%d ýyl'\n },\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'Do':\n case 'DD':\n return number;\n\n default:\n if (number === 0) {\n // special case for zero\n return number + \"'unjy\";\n }\n\n var a = number % 10,\n b = number % 100 - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n }\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n\n }\n });\n return tk;\n});","//! moment.js locale configuration\n//! locale : Tagalog (Philippines) [tl-ph]\n//! author : Dan Hagman : https://github.com/hagmandan\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var tlPh = moment.defineLocale('tl-ph', {\n months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split('_'),\n monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),\n weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split('_'),\n weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),\n weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'MM/D/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY HH:mm',\n LLLL: 'dddd, MMMM DD, YYYY HH:mm'\n },\n calendar: {\n sameDay: 'LT [ngayong araw]',\n nextDay: '[Bukas ng] LT',\n nextWeek: 'LT [sa susunod na] dddd',\n lastDay: 'LT [kahapon]',\n lastWeek: 'LT [noong nakaraang] dddd',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'sa loob ng %s',\n past: '%s ang nakalipas',\n s: 'ilang segundo',\n ss: '%d segundo',\n m: 'isang minuto',\n mm: '%d minuto',\n h: 'isang oras',\n hh: '%d oras',\n d: 'isang araw',\n dd: '%d araw',\n M: 'isang buwan',\n MM: '%d buwan',\n y: 'isang taon',\n yy: '%d taon'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: function (number) {\n return number;\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return tlPh;\n});","//! moment.js locale configuration\n//! locale : Klingon [tlh]\n//! author : Dominika Kruk : https://github.com/amaranthrose\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var numbersNouns = 'pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut'.split('_');\n\n function translateFuture(output) {\n var time = output;\n time = output.indexOf('jaj') !== -1 ? time.slice(0, -3) + 'leS' : output.indexOf('jar') !== -1 ? time.slice(0, -3) + 'waQ' : output.indexOf('DIS') !== -1 ? time.slice(0, -3) + 'nem' : time + ' pIq';\n return time;\n }\n\n function translatePast(output) {\n var time = output;\n time = output.indexOf('jaj') !== -1 ? time.slice(0, -3) + 'Hu’' : output.indexOf('jar') !== -1 ? time.slice(0, -3) + 'wen' : output.indexOf('DIS') !== -1 ? time.slice(0, -3) + 'ben' : time + ' ret';\n return time;\n }\n\n function translate(number, withoutSuffix, string, isFuture) {\n var numberNoun = numberAsNoun(number);\n\n switch (string) {\n case 'ss':\n return numberNoun + ' lup';\n\n case 'mm':\n return numberNoun + ' tup';\n\n case 'hh':\n return numberNoun + ' rep';\n\n case 'dd':\n return numberNoun + ' jaj';\n\n case 'MM':\n return numberNoun + ' jar';\n\n case 'yy':\n return numberNoun + ' DIS';\n }\n }\n\n function numberAsNoun(number) {\n var hundred = Math.floor(number % 1000 / 100),\n ten = Math.floor(number % 100 / 10),\n one = number % 10,\n word = '';\n\n if (hundred > 0) {\n word += numbersNouns[hundred] + 'vatlh';\n }\n\n if (ten > 0) {\n word += (word !== '' ? ' ' : '') + numbersNouns[ten] + 'maH';\n }\n\n if (one > 0) {\n word += (word !== '' ? ' ' : '') + numbersNouns[one];\n }\n\n return word === '' ? 'pagh' : word;\n }\n\n var tlh = moment.defineLocale('tlh', {\n months: 'tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’'.split('_'),\n monthsShort: 'jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’'.split('_'),\n monthsParseExact: true,\n weekdays: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),\n weekdaysShort: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),\n weekdaysMin: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[DaHjaj] LT',\n nextDay: '[wa’leS] LT',\n nextWeek: 'LLL',\n lastDay: '[wa’Hu’] LT',\n lastWeek: 'LLL',\n sameElse: 'L'\n },\n relativeTime: {\n future: translateFuture,\n past: translatePast,\n s: 'puS lup',\n ss: translate,\n m: 'wa’ tup',\n mm: translate,\n h: 'wa’ rep',\n hh: translate,\n d: 'wa’ jaj',\n dd: translate,\n M: 'wa’ jar',\n MM: translate,\n y: 'wa’ DIS',\n yy: translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return tlh;\n});","//! moment.js locale configuration\n//! locale : Talossan [tzl]\n//! author : Robin van der Vliet : https://github.com/robin0van0der0v\n//! author : Iustì Canun\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n // After the year there should be a slash and the amount of years since December 26, 1979 in Roman numerals.\n // This is currently too difficult (maybe even impossible) to add.\n\n var tzl = moment.defineLocale('tzl', {\n months: 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split('_'),\n monthsShort: 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'),\n weekdays: 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'),\n weekdaysShort: 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'),\n weekdaysMin: 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM [dallas] YYYY',\n LLL: 'D. MMMM [dallas] YYYY HH.mm',\n LLLL: 'dddd, [li] D. MMMM [dallas] YYYY HH.mm'\n },\n meridiemParse: /d\\'o|d\\'a/i,\n isPM: function (input) {\n return \"d'o\" === input.toLowerCase();\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? \"d'o\" : \"D'O\";\n } else {\n return isLower ? \"d'a\" : \"D'A\";\n }\n },\n calendar: {\n sameDay: '[oxhi à] LT',\n nextDay: '[demà à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[ieiri à] LT',\n lastWeek: '[sür el] dddd [lasteu à] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'osprei %s',\n past: 'ja%s',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['viensas secunds', \"'iensas secunds\"],\n ss: [number + ' secunds', '' + number + ' secunds'],\n m: [\"'n míut\", \"'iens míut\"],\n mm: [number + ' míuts', '' + number + ' míuts'],\n h: [\"'n þora\", \"'iensa þora\"],\n hh: [number + ' þoras', '' + number + ' þoras'],\n d: [\"'n ziua\", \"'iensa ziua\"],\n dd: [number + ' ziuas', '' + number + ' ziuas'],\n M: [\"'n mes\", \"'iens mes\"],\n MM: [number + ' mesen', '' + number + ' mesen'],\n y: [\"'n ar\", \"'iens ar\"],\n yy: [number + ' ars', '' + number + ' ars']\n };\n return isFuture ? format[key][0] : withoutSuffix ? format[key][0] : format[key][1];\n }\n\n return tzl;\n});","//! moment.js locale configuration\n//! locale : Central Atlas Tamazight [tzm]\n//! author : Abdel Said : https://github.com/abdelsaid\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var tzm = moment.defineLocale('tzm', {\n months: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split('_'),\n monthsShort: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split('_'),\n weekdays: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n weekdaysShort: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n weekdaysMin: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[ⴰⵙⴷⵅ ⴴ] LT',\n nextDay: '[ⴰⵙⴽⴰ ⴴ] LT',\n nextWeek: 'dddd [ⴴ] LT',\n lastDay: '[ⴰⵚⴰⵏⵜ ⴴ] LT',\n lastWeek: 'dddd [ⴴ] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s',\n past: 'ⵢⴰⵏ %s',\n s: 'ⵉⵎⵉⴽ',\n ss: '%d ⵉⵎⵉⴽ',\n m: 'ⵎⵉⵏⵓⴺ',\n mm: '%d ⵎⵉⵏⵓⴺ',\n h: 'ⵙⴰⵄⴰ',\n hh: '%d ⵜⴰⵙⵙⴰⵄⵉⵏ',\n d: 'ⴰⵙⵙ',\n dd: '%d oⵙⵙⴰⵏ',\n M: 'ⴰⵢoⵓⵔ',\n MM: '%d ⵉⵢⵢⵉⵔⵏ',\n y: 'ⴰⵙⴳⴰⵙ',\n yy: '%d ⵉⵙⴳⴰⵙⵏ'\n },\n week: {\n dow: 6,\n // Saturday is the first day of the week.\n doy: 12 // The week that contains Jan 12th is the first week of the year.\n\n }\n });\n return tzm;\n});","//! moment.js locale configuration\n//! locale : Central Atlas Tamazight Latin [tzm-latn]\n//! author : Abdel Said : https://github.com/abdelsaid\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var tzmLatn = moment.defineLocale('tzm-latn', {\n months: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split('_'),\n monthsShort: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split('_'),\n weekdays: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n weekdaysShort: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n weekdaysMin: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[asdkh g] LT',\n nextDay: '[aska g] LT',\n nextWeek: 'dddd [g] LT',\n lastDay: '[assant g] LT',\n lastWeek: 'dddd [g] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'dadkh s yan %s',\n past: 'yan %s',\n s: 'imik',\n ss: '%d imik',\n m: 'minuḍ',\n mm: '%d minuḍ',\n h: 'saɛa',\n hh: '%d tassaɛin',\n d: 'ass',\n dd: '%d ossan',\n M: 'ayowr',\n MM: '%d iyyirn',\n y: 'asgas',\n yy: '%d isgasn'\n },\n week: {\n dow: 6,\n // Saturday is the first day of the week.\n doy: 12 // The week that contains Jan 12th is the first week of the year.\n\n }\n });\n return tzmLatn;\n});","//! moment.js locale configuration\n//! locale : Uyghur (China) [ug-cn]\n//! author: boyaq : https://github.com/boyaq\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var ugCn = moment.defineLocale('ug-cn', {\n months: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split('_'),\n monthsShort: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split('_'),\n weekdays: 'يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە'.split('_'),\n weekdaysShort: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),\n weekdaysMin: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY-يىلىM-ئاينىڭD-كۈنى',\n LLL: 'YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',\n LLLL: 'dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm'\n },\n meridiemParse: /يېرىم كېچە|سەھەر|چۈشتىن بۇرۇن|چۈش|چۈشتىن كېيىن|كەچ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n\n if (meridiem === 'يېرىم كېچە' || meridiem === 'سەھەر' || meridiem === 'چۈشتىن بۇرۇن') {\n return hour;\n } else if (meridiem === 'چۈشتىن كېيىن' || meridiem === 'كەچ') {\n return hour + 12;\n } else {\n return hour >= 11 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n\n if (hm < 600) {\n return 'يېرىم كېچە';\n } else if (hm < 900) {\n return 'سەھەر';\n } else if (hm < 1130) {\n return 'چۈشتىن بۇرۇن';\n } else if (hm < 1230) {\n return 'چۈش';\n } else if (hm < 1800) {\n return 'چۈشتىن كېيىن';\n } else {\n return 'كەچ';\n }\n },\n calendar: {\n sameDay: '[بۈگۈن سائەت] LT',\n nextDay: '[ئەتە سائەت] LT',\n nextWeek: '[كېلەركى] dddd [سائەت] LT',\n lastDay: '[تۆنۈگۈن] LT',\n lastWeek: '[ئالدىنقى] dddd [سائەت] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s كېيىن',\n past: '%s بۇرۇن',\n s: 'نەچچە سېكونت',\n ss: '%d سېكونت',\n m: 'بىر مىنۇت',\n mm: '%d مىنۇت',\n h: 'بىر سائەت',\n hh: '%d سائەت',\n d: 'بىر كۈن',\n dd: '%d كۈن',\n M: 'بىر ئاي',\n MM: '%d ئاي',\n y: 'بىر يىل',\n yy: '%d يىل'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(-كۈنى|-ئاي|-ھەپتە)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '-كۈنى';\n\n case 'w':\n case 'W':\n return number + '-ھەپتە';\n\n default:\n return number;\n }\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 1st is the first week of the year.\n\n }\n });\n return ugCn;\n});","//! moment.js locale configuration\n//! locale : Ukrainian [uk]\n//! author : zemlanin : https://github.com/zemlanin\n//! Author : Menelion Elensúle : https://github.com/Oire\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11 ? forms[0] : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2];\n }\n\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: withoutSuffix ? 'секунда_секунди_секунд' : 'секунду_секунди_секунд',\n mm: withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин',\n hh: withoutSuffix ? 'година_години_годин' : 'годину_години_годин',\n dd: 'день_дні_днів',\n MM: 'місяць_місяці_місяців',\n yy: 'рік_роки_років'\n };\n\n if (key === 'm') {\n return withoutSuffix ? 'хвилина' : 'хвилину';\n } else if (key === 'h') {\n return withoutSuffix ? 'година' : 'годину';\n } else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n\n function weekdaysCaseReplace(m, format) {\n var weekdays = {\n nominative: 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split('_'),\n accusative: 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split('_'),\n genitive: 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split('_')\n },\n nounCase;\n\n if (m === true) {\n return weekdays['nominative'].slice(1, 7).concat(weekdays['nominative'].slice(0, 1));\n }\n\n if (!m) {\n return weekdays['nominative'];\n }\n\n nounCase = /(\\[[ВвУу]\\]) ?dddd/.test(format) ? 'accusative' : /\\[?(?:минулої|наступної)? ?\\] ?dddd/.test(format) ? 'genitive' : 'nominative';\n return weekdays[nounCase][m.day()];\n }\n\n function processHoursFunction(str) {\n return function () {\n return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT';\n };\n }\n\n var uk = moment.defineLocale('uk', {\n months: {\n format: 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split('_'),\n standalone: 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split('_')\n },\n monthsShort: 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split('_'),\n weekdays: weekdaysCaseReplace,\n weekdaysShort: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY р.',\n LLL: 'D MMMM YYYY р., HH:mm',\n LLLL: 'dddd, D MMMM YYYY р., HH:mm'\n },\n calendar: {\n sameDay: processHoursFunction('[Сьогодні '),\n nextDay: processHoursFunction('[Завтра '),\n lastDay: processHoursFunction('[Вчора '),\n nextWeek: processHoursFunction('[У] dddd ['),\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 5:\n case 6:\n return processHoursFunction('[Минулої] dddd [').call(this);\n\n case 1:\n case 2:\n case 4:\n return processHoursFunction('[Минулого] dddd [').call(this);\n }\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'за %s',\n past: '%s тому',\n s: 'декілька секунд',\n ss: relativeTimeWithPlural,\n m: relativeTimeWithPlural,\n mm: relativeTimeWithPlural,\n h: 'годину',\n hh: relativeTimeWithPlural,\n d: 'день',\n dd: relativeTimeWithPlural,\n M: 'місяць',\n MM: relativeTimeWithPlural,\n y: 'рік',\n yy: relativeTimeWithPlural\n },\n // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason\n meridiemParse: /ночі|ранку|дня|вечора/,\n isPM: function (input) {\n return /^(дня|вечора)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночі';\n } else if (hour < 12) {\n return 'ранку';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечора';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(й|го)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n case 'w':\n case 'W':\n return number + '-й';\n\n case 'D':\n return number + '-го';\n\n default:\n return number;\n }\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n\n }\n });\n return uk;\n});","//! moment.js locale configuration\n//! locale : Urdu [ur]\n//! author : Sawood Alam : https://github.com/ibnesayeed\n//! author : Zack : https://github.com/ZackVision\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var months = ['جنوری', 'فروری', 'مارچ', 'اپریل', 'مئی', 'جون', 'جولائی', 'اگست', 'ستمبر', 'اکتوبر', 'نومبر', 'دسمبر'],\n days = ['اتوار', 'پیر', 'منگل', 'بدھ', 'جمعرات', 'جمعہ', 'ہفتہ'];\n var ur = moment.defineLocale('ur', {\n months: months,\n monthsShort: months,\n weekdays: days,\n weekdaysShort: days,\n weekdaysMin: days,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd، D MMMM YYYY HH:mm'\n },\n meridiemParse: /صبح|شام/,\n isPM: function (input) {\n return 'شام' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'صبح';\n }\n\n return 'شام';\n },\n calendar: {\n sameDay: '[آج بوقت] LT',\n nextDay: '[کل بوقت] LT',\n nextWeek: 'dddd [بوقت] LT',\n lastDay: '[گذشتہ روز بوقت] LT',\n lastWeek: '[گذشتہ] dddd [بوقت] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s بعد',\n past: '%s قبل',\n s: 'چند سیکنڈ',\n ss: '%d سیکنڈ',\n m: 'ایک منٹ',\n mm: '%d منٹ',\n h: 'ایک گھنٹہ',\n hh: '%d گھنٹے',\n d: 'ایک دن',\n dd: '%d دن',\n M: 'ایک ماہ',\n MM: '%d ماہ',\n y: 'ایک سال',\n yy: '%d سال'\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return ur;\n});","//! moment.js locale configuration\n//! locale : Uzbek [uz]\n//! author : Sardor Muminov : https://github.com/muminoff\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var uz = moment.defineLocale('uz', {\n months: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split('_'),\n monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),\n weekdays: 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'),\n weekdaysShort: 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'),\n weekdaysMin: 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'D MMMM YYYY, dddd HH:mm'\n },\n calendar: {\n sameDay: '[Бугун соат] LT [да]',\n nextDay: '[Эртага] LT [да]',\n nextWeek: 'dddd [куни соат] LT [да]',\n lastDay: '[Кеча соат] LT [да]',\n lastWeek: '[Утган] dddd [куни соат] LT [да]',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'Якин %s ичида',\n past: 'Бир неча %s олдин',\n s: 'фурсат',\n ss: '%d фурсат',\n m: 'бир дакика',\n mm: '%d дакика',\n h: 'бир соат',\n hh: '%d соат',\n d: 'бир кун',\n dd: '%d кун',\n M: 'бир ой',\n MM: '%d ой',\n y: 'бир йил',\n yy: '%d йил'\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return uz;\n});","//! moment.js locale configuration\n//! locale : Uzbek Latin [uz-latn]\n//! author : Rasulbek Mirzayev : github.com/Rasulbeeek\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var uzLatn = moment.defineLocale('uz-latn', {\n months: 'Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr'.split('_'),\n monthsShort: 'Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek'.split('_'),\n weekdays: 'Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba'.split('_'),\n weekdaysShort: 'Yak_Dush_Sesh_Chor_Pay_Jum_Shan'.split('_'),\n weekdaysMin: 'Ya_Du_Se_Cho_Pa_Ju_Sha'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'D MMMM YYYY, dddd HH:mm'\n },\n calendar: {\n sameDay: '[Bugun soat] LT [da]',\n nextDay: '[Ertaga] LT [da]',\n nextWeek: 'dddd [kuni soat] LT [da]',\n lastDay: '[Kecha soat] LT [da]',\n lastWeek: \"[O'tgan] dddd [kuni soat] LT [da]\",\n sameElse: 'L'\n },\n relativeTime: {\n future: 'Yaqin %s ichida',\n past: 'Bir necha %s oldin',\n s: 'soniya',\n ss: '%d soniya',\n m: 'bir daqiqa',\n mm: '%d daqiqa',\n h: 'bir soat',\n hh: '%d soat',\n d: 'bir kun',\n dd: '%d kun',\n M: 'bir oy',\n MM: '%d oy',\n y: 'bir yil',\n yy: '%d yil'\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n\n }\n });\n return uzLatn;\n});","//! moment.js locale configuration\n//! locale : Vietnamese [vi]\n//! author : Bang Nguyen : https://github.com/bangnk\n//! author : Chien Kira : https://github.com/chienkira\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var vi = moment.defineLocale('vi', {\n months: 'tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12'.split('_'),\n monthsShort: 'Thg 01_Thg 02_Thg 03_Thg 04_Thg 05_Thg 06_Thg 07_Thg 08_Thg 09_Thg 10_Thg 11_Thg 12'.split('_'),\n monthsParseExact: true,\n weekdays: 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split('_'),\n weekdaysShort: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n weekdaysMin: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n weekdaysParseExact: true,\n meridiemParse: /sa|ch/i,\n isPM: function (input) {\n return /^ch$/i.test(input);\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'sa' : 'SA';\n } else {\n return isLower ? 'ch' : 'CH';\n }\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [năm] YYYY',\n LLL: 'D MMMM [năm] YYYY HH:mm',\n LLLL: 'dddd, D MMMM [năm] YYYY HH:mm',\n l: 'DD/M/YYYY',\n ll: 'D MMM YYYY',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd, D MMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Hôm nay lúc] LT',\n nextDay: '[Ngày mai lúc] LT',\n nextWeek: 'dddd [tuần tới lúc] LT',\n lastDay: '[Hôm qua lúc] LT',\n lastWeek: 'dddd [tuần trước lúc] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s tới',\n past: '%s trước',\n s: 'vài giây',\n ss: '%d giây',\n m: 'một phút',\n mm: '%d phút',\n h: 'một giờ',\n hh: '%d giờ',\n d: 'một ngày',\n dd: '%d ngày',\n w: 'một tuần',\n ww: '%d tuần',\n M: 'một tháng',\n MM: '%d tháng',\n y: 'một năm',\n yy: '%d năm'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: function (number) {\n return number;\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return vi;\n});","//! moment.js locale configuration\n//! locale : Pseudo [x-pseudo]\n//! author : Andrew Hood : https://github.com/andrewhood125\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var xPseudo = moment.defineLocale('x-pseudo', {\n months: 'J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér'.split('_'),\n monthsShort: 'J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc'.split('_'),\n monthsParseExact: true,\n weekdays: 'S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý'.split('_'),\n weekdaysShort: 'S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát'.split('_'),\n weekdaysMin: 'S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[T~ódá~ý át] LT',\n nextDay: '[T~ómó~rró~w át] LT',\n nextWeek: 'dddd [át] LT',\n lastDay: '[Ý~ést~érdá~ý át] LT',\n lastWeek: '[L~ást] dddd [át] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'í~ñ %s',\n past: '%s á~gó',\n s: 'á ~féw ~sécó~ñds',\n ss: '%d s~écóñ~ds',\n m: 'á ~míñ~úté',\n mm: '%d m~íñú~tés',\n h: 'á~ñ hó~úr',\n hh: '%d h~óúrs',\n d: 'á ~dáý',\n dd: '%d d~áýs',\n M: 'á ~móñ~th',\n MM: '%d m~óñt~hs',\n y: 'á ~ýéár',\n yy: '%d ý~éárs'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output = ~~(number % 100 / 10) === 1 ? 'th' : b === 1 ? 'st' : b === 2 ? 'nd' : b === 3 ? 'rd' : 'th';\n return number + output;\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return xPseudo;\n});","//! moment.js locale configuration\n//! locale : Yoruba Nigeria [yo]\n//! author : Atolagbe Abisoye : https://github.com/andela-batolagbe\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var yo = moment.defineLocale('yo', {\n months: 'Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀'.split('_'),\n monthsShort: 'Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀'.split('_'),\n weekdays: 'Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta'.split('_'),\n weekdaysShort: 'Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá'.split('_'),\n weekdaysMin: 'Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A'\n },\n calendar: {\n sameDay: '[Ònì ni] LT',\n nextDay: '[Ọ̀la ni] LT',\n nextWeek: \"dddd [Ọsẹ̀ tón'bọ] [ni] LT\",\n lastDay: '[Àna ni] LT',\n lastWeek: 'dddd [Ọsẹ̀ tólọ́] [ni] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'ní %s',\n past: '%s kọjá',\n s: 'ìsẹjú aayá die',\n ss: 'aayá %d',\n m: 'ìsẹjú kan',\n mm: 'ìsẹjú %d',\n h: 'wákati kan',\n hh: 'wákati %d',\n d: 'ọjọ́ kan',\n dd: 'ọjọ́ %d',\n M: 'osù kan',\n MM: 'osù %d',\n y: 'ọdún kan',\n yy: 'ọdún %d'\n },\n dayOfMonthOrdinalParse: /ọjọ́\\s\\d{1,2}/,\n ordinal: 'ọjọ́ %d',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return yo;\n});","//! moment.js locale configuration\n//! locale : Chinese (China) [zh-cn]\n//! author : suupic : https://github.com/suupic\n//! author : Zeno Zeng : https://github.com/zenozeng\n//! author : uu109 : https://github.com/uu109\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var zhCn = moment.defineLocale('zh-cn', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '周日_周一_周二_周三_周四_周五_周六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日Ah点mm分',\n LLLL: 'YYYY年M月D日ddddAh点mm分',\n l: 'YYYY/M/D',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm'\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n } else {\n // '中午'\n return hour >= 11 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天]LT',\n nextDay: '[明天]LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n return '[下]dddLT';\n } else {\n return '[本]dddLT';\n }\n },\n lastDay: '[昨天]LT',\n lastWeek: function (now) {\n if (this.week() !== now.week()) {\n return '[上]dddLT';\n } else {\n return '[本]dddLT';\n }\n },\n sameElse: 'L'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|周)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n\n case 'M':\n return number + '月';\n\n case 'w':\n case 'W':\n return number + '周';\n\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s后',\n past: '%s前',\n s: '几秒',\n ss: '%d 秒',\n m: '1 分钟',\n mm: '%d 分钟',\n h: '1 小时',\n hh: '%d 小时',\n d: '1 天',\n dd: '%d 天',\n w: '1 周',\n ww: '%d 周',\n M: '1 个月',\n MM: '%d 个月',\n y: '1 年',\n yy: '%d 年'\n },\n week: {\n // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n\n }\n });\n return zhCn;\n});","//! moment.js locale configuration\n//! locale : Chinese (Hong Kong) [zh-hk]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n//! author : Konstantin : https://github.com/skfd\n//! author : Anthony : https://github.com/anthonylau\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var zhHk = moment.defineLocale('zh-hk', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日dddd HH:mm',\n l: 'YYYY/M/D',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm'\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '中午') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1200) {\n return '上午';\n } else if (hm === 1200) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天]LT',\n nextDay: '[明天]LT',\n nextWeek: '[下]ddddLT',\n lastDay: '[昨天]LT',\n lastWeek: '[上]ddddLT',\n sameElse: 'L'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n\n case 'M':\n return number + '月';\n\n case 'w':\n case 'W':\n return number + '週';\n\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%s前',\n s: '幾秒',\n ss: '%d 秒',\n m: '1 分鐘',\n mm: '%d 分鐘',\n h: '1 小時',\n hh: '%d 小時',\n d: '1 天',\n dd: '%d 天',\n M: '1 個月',\n MM: '%d 個月',\n y: '1 年',\n yy: '%d 年'\n }\n });\n return zhHk;\n});","//! moment.js locale configuration\n//! locale : Chinese (Macau) [zh-mo]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n//! author : Tan Yuanhong : https://github.com/le0tan\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var zhMo = moment.defineLocale('zh-mo', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日dddd HH:mm',\n l: 'D/M/YYYY',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm'\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '中午') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天] LT',\n nextDay: '[明天] LT',\n nextWeek: '[下]dddd LT',\n lastDay: '[昨天] LT',\n lastWeek: '[上]dddd LT',\n sameElse: 'L'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n\n case 'M':\n return number + '月';\n\n case 'w':\n case 'W':\n return number + '週';\n\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s內',\n past: '%s前',\n s: '幾秒',\n ss: '%d 秒',\n m: '1 分鐘',\n mm: '%d 分鐘',\n h: '1 小時',\n hh: '%d 小時',\n d: '1 天',\n dd: '%d 天',\n M: '1 個月',\n MM: '%d 個月',\n y: '1 年',\n yy: '%d 年'\n }\n });\n return zhMo;\n});","//! moment.js locale configuration\n//! locale : Chinese (Taiwan) [zh-tw]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n;\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict'; //! moment.js locale configuration\n\n var zhTw = moment.defineLocale('zh-tw', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日dddd HH:mm',\n l: 'YYYY/M/D',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm'\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '中午') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天] LT',\n nextDay: '[明天] LT',\n nextWeek: '[下]dddd LT',\n lastDay: '[昨天] LT',\n lastWeek: '[上]dddd LT',\n sameElse: 'L'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n\n case 'M':\n return number + '月';\n\n case 'w':\n case 'W':\n return number + '週';\n\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%s前',\n s: '幾秒',\n ss: '%d 秒',\n m: '1 分鐘',\n mm: '%d 分鐘',\n h: '1 小時',\n hh: '%d 小時',\n d: '1 天',\n dd: '%d 天',\n M: '1 個月',\n MM: '%d 個月',\n y: '1 年',\n yy: '%d 年'\n }\n });\n return zhTw;\n});","\"use strict\";\n\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.createConfiguration = exports.createCasualConfiguration = exports.parseDate = exports.parse = exports.GB = exports.strict = exports.casual = void 0;\n\nconst ENTimeUnitWithinFormatParser_1 = __importDefault(require(\"./parsers/ENTimeUnitWithinFormatParser\"));\n\nconst ENMonthNameLittleEndianParser_1 = __importDefault(require(\"./parsers/ENMonthNameLittleEndianParser\"));\n\nconst ENMonthNameMiddleEndianParser_1 = __importDefault(require(\"./parsers/ENMonthNameMiddleEndianParser\"));\n\nconst ENMonthNameParser_1 = __importDefault(require(\"./parsers/ENMonthNameParser\"));\n\nconst ENCasualYearMonthDayParser_1 = __importDefault(require(\"./parsers/ENCasualYearMonthDayParser\"));\n\nconst ENSlashMonthFormatParser_1 = __importDefault(require(\"./parsers/ENSlashMonthFormatParser\"));\n\nconst ENTimeExpressionParser_1 = __importDefault(require(\"./parsers/ENTimeExpressionParser\"));\n\nconst ENTimeUnitAgoFormatParser_1 = __importDefault(require(\"./parsers/ENTimeUnitAgoFormatParser\"));\n\nconst ENTimeUnitLaterFormatParser_1 = __importDefault(require(\"./parsers/ENTimeUnitLaterFormatParser\"));\n\nconst ENMergeDateRangeRefiner_1 = __importDefault(require(\"./refiners/ENMergeDateRangeRefiner\"));\n\nconst ENMergeDateTimeRefiner_1 = __importDefault(require(\"./refiners/ENMergeDateTimeRefiner\"));\n\nconst configurations_1 = require(\"../../configurations\");\n\nconst ENCasualDateParser_1 = __importDefault(require(\"./parsers/ENCasualDateParser\"));\n\nconst ENCasualTimeParser_1 = __importDefault(require(\"./parsers/ENCasualTimeParser\"));\n\nconst ENWeekdayParser_1 = __importDefault(require(\"./parsers/ENWeekdayParser\"));\n\nconst ENRelativeDateFormatParser_1 = __importDefault(require(\"./parsers/ENRelativeDateFormatParser\"));\n\nconst chrono_1 = require(\"../../chrono\");\n\nconst SlashDateFormatParser_1 = __importDefault(require(\"../../common/parsers/SlashDateFormatParser\"));\n\nconst ENTimeUnitCasualRelativeFormatParser_1 = __importDefault(require(\"./parsers/ENTimeUnitCasualRelativeFormatParser\"));\n\nconst ENMergeRelativeDateRefiner_1 = __importDefault(require(\"./refiners/ENMergeRelativeDateRefiner\"));\n\nexports.casual = new chrono_1.Chrono(createCasualConfiguration(false));\nexports.strict = new chrono_1.Chrono(createConfiguration(true, false));\nexports.GB = new chrono_1.Chrono(createConfiguration(false, true));\n\nfunction parse(text, ref, option) {\n return exports.casual.parse(text, ref, option);\n}\n\nexports.parse = parse;\n\nfunction parseDate(text, ref, option) {\n return exports.casual.parseDate(text, ref, option);\n}\n\nexports.parseDate = parseDate;\n\nfunction createCasualConfiguration(littleEndian = false) {\n const option = createConfiguration(false, littleEndian);\n option.parsers.unshift(new ENCasualDateParser_1.default());\n option.parsers.unshift(new ENCasualTimeParser_1.default());\n option.parsers.unshift(new ENMonthNameParser_1.default());\n option.parsers.unshift(new ENRelativeDateFormatParser_1.default());\n option.parsers.unshift(new ENTimeUnitCasualRelativeFormatParser_1.default());\n return option;\n}\n\nexports.createCasualConfiguration = createCasualConfiguration;\n\nfunction createConfiguration(strictMode = true, littleEndian = false) {\n return configurations_1.includeCommonConfiguration({\n parsers: [new SlashDateFormatParser_1.default(littleEndian), new ENTimeUnitWithinFormatParser_1.default(), new ENMonthNameLittleEndianParser_1.default(), new ENMonthNameMiddleEndianParser_1.default(), new ENWeekdayParser_1.default(), new ENCasualYearMonthDayParser_1.default(), new ENSlashMonthFormatParser_1.default(), new ENTimeExpressionParser_1.default(strictMode), new ENTimeUnitAgoFormatParser_1.default(strictMode), new ENTimeUnitLaterFormatParser_1.default(strictMode)],\n refiners: [new ENMergeRelativeDateRefiner_1.default(), new ENMergeDateTimeRefiner_1.default(), new ENMergeDateRangeRefiner_1.default()]\n }, strictMode);\n}\n\nexports.createConfiguration = createConfiguration;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nconst AbstractParserWithWordBoundary_1 = require(\"./AbstractParserWithWordBoundary\");\n\nconst PATTERN = new RegExp(\"([0-9]{4})\\\\-([0-9]{1,2})\\\\-([0-9]{1,2})\" + \"(?:T\" + \"([0-9]{1,2}):([0-9]{1,2})\" + \"(?:\" + \":([0-9]{1,2})(?:\\\\.(\\\\d{1,4}))?\" + \")?\" + \"(?:\" + \"Z|([+-]\\\\d{2}):?(\\\\d{2})?\" + \")?\" + \")?\" + \"(?=\\\\W|$)\", \"i\");\nconst YEAR_NUMBER_GROUP = 1;\nconst MONTH_NUMBER_GROUP = 2;\nconst DATE_NUMBER_GROUP = 3;\nconst HOUR_NUMBER_GROUP = 4;\nconst MINUTE_NUMBER_GROUP = 5;\nconst SECOND_NUMBER_GROUP = 6;\nconst MILLISECOND_NUMBER_GROUP = 7;\nconst TZD_HOUR_OFFSET_GROUP = 8;\nconst TZD_MINUTE_OFFSET_GROUP = 9;\n\nclass ISOFormatParser extends AbstractParserWithWordBoundary_1.AbstractParserWithWordBoundaryChecking {\n innerPattern() {\n return PATTERN;\n }\n\n innerExtract(context, match) {\n const components = {};\n components[\"year\"] = parseInt(match[YEAR_NUMBER_GROUP]);\n components[\"month\"] = parseInt(match[MONTH_NUMBER_GROUP]);\n components[\"day\"] = parseInt(match[DATE_NUMBER_GROUP]);\n\n if (match[HOUR_NUMBER_GROUP] != null) {\n components[\"hour\"] = parseInt(match[HOUR_NUMBER_GROUP]);\n components[\"minute\"] = parseInt(match[MINUTE_NUMBER_GROUP]);\n\n if (match[SECOND_NUMBER_GROUP] != null) {\n components[\"second\"] = parseInt(match[SECOND_NUMBER_GROUP]);\n }\n\n if (match[MILLISECOND_NUMBER_GROUP] != null) {\n components[\"millisecond\"] = parseInt(match[MILLISECOND_NUMBER_GROUP]);\n }\n\n if (match[TZD_HOUR_OFFSET_GROUP] == null) {\n components[\"timezoneOffset\"] = 0;\n } else {\n const hourOffset = parseInt(match[TZD_HOUR_OFFSET_GROUP]);\n let minuteOffset = 0;\n\n if (match[TZD_MINUTE_OFFSET_GROUP] != null) {\n minuteOffset = parseInt(match[TZD_MINUTE_OFFSET_GROUP]);\n }\n\n let offset = hourOffset * 60;\n\n if (offset < 0) {\n offset -= minuteOffset;\n } else {\n offset += minuteOffset;\n }\n\n components[\"timezoneOffset\"] = offset;\n }\n }\n\n return components;\n }\n\n}\n\nexports.default = ISOFormatParser;","\"use strict\";\n\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nconst dayjs_1 = __importDefault(require(\"dayjs\"));\n\nconst index_1 = require(\"../../../index\");\n\nconst AbstractParserWithWordBoundary_1 = require(\"../../../common/parsers/AbstractParserWithWordBoundary\");\n\nconst dayjs_2 = require(\"../../../utils/dayjs\");\n\nconst timeunits_1 = require(\"../../../utils/timeunits\");\n\nclass DECasualTimeParser extends AbstractParserWithWordBoundary_1.AbstractParserWithWordBoundaryChecking {\n innerPattern(context) {\n return /(diesen)?\\s*(morgen|vormittag|mittags?|nachmittag|abend|nacht|mitternacht)(?=\\W|$)/i;\n }\n\n innerExtract(context, match) {\n const targetDate = dayjs_1.default(context.refDate);\n const timeKeywordPattern = match[2].toLowerCase();\n const component = context.createParsingComponents();\n dayjs_2.implySimilarTime(component, targetDate);\n return DECasualTimeParser.extractTimeComponents(component, timeKeywordPattern);\n }\n\n static extractTimeComponents(component, timeKeywordPattern) {\n switch (timeKeywordPattern) {\n case \"morgen\":\n component.imply(\"hour\", 6);\n component.imply(\"minute\", 0);\n component.imply(\"second\", 0);\n component.imply(\"meridiem\", index_1.Meridiem.AM);\n break;\n\n case \"vormittag\":\n component.imply(\"hour\", 9);\n component.imply(\"minute\", 0);\n component.imply(\"second\", 0);\n component.imply(\"meridiem\", index_1.Meridiem.AM);\n break;\n\n case \"mittag\":\n case \"mittags\":\n component.imply(\"hour\", 12);\n component.imply(\"minute\", 0);\n component.imply(\"second\", 0);\n component.imply(\"meridiem\", index_1.Meridiem.AM);\n break;\n\n case \"nachmittag\":\n component.imply(\"hour\", 15);\n component.imply(\"minute\", 0);\n component.imply(\"second\", 0);\n component.imply(\"meridiem\", index_1.Meridiem.PM);\n break;\n\n case \"abend\":\n component.imply(\"hour\", 18);\n component.imply(\"minute\", 0);\n component.imply(\"second\", 0);\n component.imply(\"meridiem\", index_1.Meridiem.PM);\n break;\n\n case \"nacht\":\n component.imply(\"hour\", 22);\n component.imply(\"minute\", 0);\n component.imply(\"second\", 0);\n component.imply(\"meridiem\", index_1.Meridiem.PM);\n break;\n\n case \"mitternacht\":\n if (component.get(\"hour\") > 1) {\n component = timeunits_1.addImpliedTimeUnits(component, {\n \"day\": 1\n });\n }\n\n component.imply(\"hour\", 0);\n component.imply(\"minute\", 0);\n component.imply(\"second\", 0);\n component.imply(\"meridiem\", index_1.Meridiem.AM);\n break;\n }\n\n return component;\n }\n\n}\n\nexports.default = DECasualTimeParser;","var moment = module.exports = require(\"./moment-timezone\");\n\nmoment.tz.load(require('./data/packed/latest.json'));","!function (t, e) {\n \"object\" == typeof exports && \"object\" == typeof module ? module.exports = e(require(\"moment\")) : \"function\" == typeof define && define.amd ? define(\"moment-range\", [\"moment\"], e) : \"object\" == typeof exports ? exports[\"moment-range\"] = e(require(\"moment\")) : t[\"moment-range\"] = e(t.moment);\n}(this, function (t) {\n return function (t) {\n function e(r) {\n if (n[r]) return n[r].exports;\n var o = n[r] = {\n i: r,\n l: !1,\n exports: {}\n };\n return t[r].call(o.exports, o, o.exports, e), o.l = !0, o.exports;\n }\n\n var n = {};\n return e.m = t, e.c = n, e.i = function (t) {\n return t;\n }, e.d = function (t, n, r) {\n e.o(t, n) || Object.defineProperty(t, n, {\n configurable: !1,\n enumerable: !0,\n get: r\n });\n }, e.n = function (t) {\n var n = t && t.__esModule ? function () {\n return t.default;\n } : function () {\n return t;\n };\n return e.d(n, \"a\", n), n;\n }, e.o = function (t, e) {\n return Object.prototype.hasOwnProperty.call(t, e);\n }, e.p = \"\", e(e.s = 3);\n }([function (t, e, n) {\n \"use strict\";\n\n var r = n(5)();\n\n t.exports = function (t) {\n return t !== r && null !== t;\n };\n }, function (t, e, n) {\n \"use strict\";\n\n t.exports = n(18)() ? Symbol : n(20);\n }, function (e, n) {\n e.exports = t;\n }, function (t, e, n) {\n \"use strict\";\n\n function r(t) {\n return t && t.__esModule ? t : {\n default: t\n };\n }\n\n function o(t, e, n) {\n return e in t ? Object.defineProperty(t, e, {\n value: n,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : t[e] = n, t;\n }\n\n function i(t, e) {\n if (!(t instanceof e)) throw new TypeError(\"Cannot call a class as a function\");\n }\n\n function u(t) {\n return t.range = function (e, n) {\n var r = this;\n return \"string\" == typeof e && y.hasOwnProperty(e) ? new h(t(r).startOf(e), t(r).endOf(e)) : new h(e, n);\n }, t.rangeFromInterval = function (e) {\n var n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 1,\n r = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : t();\n if (t.isMoment(r) || (r = t(r)), !r.isValid()) throw new Error(\"Invalid date.\");\n var o = r.clone().add(n, e),\n i = [];\n return i.push(t.min(r, o)), i.push(t.max(r, o)), new h(i);\n }, t.rangeFromISOString = function (e) {\n var n = a(e),\n r = t.parseZone(n[0]),\n o = t.parseZone(n[1]);\n return new h(r, o);\n }, t.parseZoneRange = t.rangeFromISOString, t.fn.range = t.range, t.range.constructor = h, t.isRange = function (t) {\n return t instanceof h;\n }, t.fn.within = function (t) {\n return t.contains(this.toDate());\n }, t;\n }\n\n function a(t) {\n return t.split(\"/\");\n }\n\n Object.defineProperty(e, \"__esModule\", {\n value: !0\n }), e.DateRange = void 0;\n\n var s = function () {\n function t(t, e) {\n var n = [],\n r = !0,\n o = !1,\n i = void 0;\n\n try {\n for (var u, a = t[Symbol.iterator](); !(r = (u = a.next()).done) && (n.push(u.value), !e || n.length !== e); r = !0);\n } catch (t) {\n o = !0, i = t;\n } finally {\n try {\n !r && a.return && a.return();\n } finally {\n if (o) throw i;\n }\n }\n\n return n;\n }\n\n return function (e, n) {\n if (Array.isArray(e)) return e;\n if (Symbol.iterator in Object(e)) return t(e, n);\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n };\n }(),\n c = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (t) {\n return typeof t;\n } : function (t) {\n return t && \"function\" == typeof Symbol && t.constructor === Symbol && t !== Symbol.prototype ? \"symbol\" : typeof t;\n },\n f = function () {\n function t(t, e) {\n for (var n = 0; n < e.length; n++) {\n var r = e[n];\n r.enumerable = r.enumerable || !1, r.configurable = !0, \"value\" in r && (r.writable = !0), Object.defineProperty(t, r.key, r);\n }\n }\n\n return function (e, n, r) {\n return n && t(e.prototype, n), r && t(e, r), e;\n };\n }();\n\n e.extendMoment = u;\n\n var l = n(2),\n v = r(l),\n d = n(1),\n p = r(d),\n y = {\n year: !0,\n quarter: !0,\n month: !0,\n week: !0,\n day: !0,\n hour: !0,\n minute: !0,\n second: !0\n },\n h = e.DateRange = function () {\n function t(e, n) {\n i(this, t);\n var r = e,\n o = n;\n if (1 === arguments.length || void 0 === n) if (\"object\" === (void 0 === e ? \"undefined\" : c(e)) && 2 === e.length) {\n var u = s(e, 2);\n r = u[0], o = u[1];\n } else if (\"string\" == typeof e) {\n var f = a(e),\n l = s(f, 2);\n r = l[0], o = l[1];\n }\n this.start = r || 0 === r ? (0, v.default)(r) : (0, v.default)(-864e13), this.end = o || 0 === o ? (0, v.default)(o) : (0, v.default)(864e13);\n }\n\n return f(t, [{\n key: \"adjacent\",\n value: function (t) {\n var e = this.start.isSame(t.end),\n n = this.end.isSame(t.start);\n return e && t.start.valueOf() <= this.start.valueOf() || n && t.end.valueOf() >= this.end.valueOf();\n }\n }, {\n key: \"add\",\n value: function (t) {\n var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {\n adjacent: !1\n };\n return this.overlaps(t, e) ? new this.constructor(v.default.min(this.start, t.start), v.default.max(this.end, t.end)) : null;\n }\n }, {\n key: \"by\",\n value: function (t) {\n var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {\n excludeEnd: !1,\n step: 1\n },\n n = this;\n return o({}, p.default.iterator, function () {\n var r = e.step || 1,\n o = Math.abs(n.start.diff(n.end, t)) / r,\n i = e.excludeEnd || !1,\n u = 0;\n return e.hasOwnProperty(\"exclusive\") && (i = e.exclusive), {\n next: function () {\n var e = n.start.clone().add(u * r, t),\n a = i ? !(u < o) : !(u <= o);\n return u++, {\n done: a,\n value: a ? void 0 : e\n };\n }\n };\n });\n }\n }, {\n key: \"byRange\",\n value: function (t) {\n var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {\n excludeEnd: !1,\n step: 1\n },\n n = this,\n r = e.step || 1,\n i = this.valueOf() / t.valueOf() / r,\n u = Math.floor(i),\n a = e.excludeEnd || !1,\n s = 0;\n return e.hasOwnProperty(\"exclusive\") && (a = e.exclusive), o({}, p.default.iterator, function () {\n return u === 1 / 0 ? {\n done: !0\n } : {\n next: function () {\n var e = (0, v.default)(n.start.valueOf() + t.valueOf() * s * r),\n o = u === i && a ? !(s < u) : !(s <= u);\n return s++, {\n done: o,\n value: o ? void 0 : e\n };\n }\n };\n });\n }\n }, {\n key: \"center\",\n value: function () {\n var t = this.start.valueOf() + this.diff() / 2;\n return (0, v.default)(t);\n }\n }, {\n key: \"clone\",\n value: function () {\n return new this.constructor(this.start.clone(), this.end.clone());\n }\n }, {\n key: \"contains\",\n value: function (e) {\n var n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {\n excludeStart: !1,\n excludeEnd: !1\n },\n r = this.start.valueOf(),\n o = this.end.valueOf(),\n i = e.valueOf(),\n u = e.valueOf(),\n a = n.excludeStart || !1,\n s = n.excludeEnd || !1;\n n.hasOwnProperty(\"exclusive\") && (a = s = n.exclusive), e instanceof t && (i = e.start.valueOf(), u = e.end.valueOf());\n var c = r < i || r <= i && !a,\n f = o > u || o >= u && !s;\n return c && f;\n }\n }, {\n key: \"diff\",\n value: function (t, e) {\n return this.end.diff(this.start, t, e);\n }\n }, {\n key: \"duration\",\n value: function (t, e) {\n return this.diff(t, e);\n }\n }, {\n key: \"intersect\",\n value: function (t) {\n var e = this.start.valueOf(),\n n = this.end.valueOf(),\n r = t.start.valueOf(),\n o = t.end.valueOf(),\n i = e == n,\n u = r == o;\n\n if (i) {\n var a = e;\n if (a == r || a == o) return null;\n if (a > r && a < o) return this.clone();\n } else if (u) {\n var s = r;\n if (s == e || s == n) return null;\n if (s > e && s < n) return new this.constructor(s, s);\n }\n\n return e <= r && r < n && n < o ? new this.constructor(r, n) : r < e && e < o && o <= n ? new this.constructor(e, o) : r < e && e <= n && n < o ? this.clone() : e <= r && r <= o && o <= n ? new this.constructor(r, o) : null;\n }\n }, {\n key: \"isEqual\",\n value: function (t) {\n return this.start.isSame(t.start) && this.end.isSame(t.end);\n }\n }, {\n key: \"isSame\",\n value: function (t) {\n return this.isEqual(t);\n }\n }, {\n key: \"overlaps\",\n value: function (t) {\n var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {\n adjacent: !1\n },\n n = null !== this.intersect(t);\n return e.adjacent && !n ? this.adjacent(t) : n;\n }\n }, {\n key: \"reverseBy\",\n value: function (t) {\n var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {\n excludeStart: !1,\n step: 1\n },\n n = this;\n return o({}, p.default.iterator, function () {\n var r = e.step || 1,\n o = Math.abs(n.start.diff(n.end, t)) / r,\n i = e.excludeStart || !1,\n u = 0;\n return e.hasOwnProperty(\"exclusive\") && (i = e.exclusive), {\n next: function () {\n var e = n.end.clone().subtract(u * r, t),\n a = i ? !(u < o) : !(u <= o);\n return u++, {\n done: a,\n value: a ? void 0 : e\n };\n }\n };\n });\n }\n }, {\n key: \"reverseByRange\",\n value: function (t) {\n var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {\n excludeStart: !1,\n step: 1\n },\n n = this,\n r = e.step || 1,\n i = this.valueOf() / t.valueOf() / r,\n u = Math.floor(i),\n a = e.excludeStart || !1,\n s = 0;\n return e.hasOwnProperty(\"exclusive\") && (a = e.exclusive), o({}, p.default.iterator, function () {\n return u === 1 / 0 ? {\n done: !0\n } : {\n next: function () {\n var e = (0, v.default)(n.end.valueOf() - t.valueOf() * s * r),\n o = u === i && a ? !(s < u) : !(s <= u);\n return s++, {\n done: o,\n value: o ? void 0 : e\n };\n }\n };\n });\n }\n }, {\n key: \"snapTo\",\n value: function (t) {\n var e = this.clone();\n return e.start.isSame((0, v.default)(-864e13)) || (e.start = e.start.startOf(t)), e.end.isSame((0, v.default)(864e13)) || (e.end = e.end.endOf(t)), e;\n }\n }, {\n key: \"subtract\",\n value: function (t) {\n var e = this.start.valueOf(),\n n = this.end.valueOf(),\n r = t.start.valueOf(),\n o = t.end.valueOf();\n return null === this.intersect(t) ? [this] : r <= e && e < n && n <= o ? [] : r <= e && e < o && o < n ? [new this.constructor(o, n)] : e < r && r < n && n <= o ? [new this.constructor(e, r)] : e < r && r < o && o < n ? [new this.constructor(e, r), new this.constructor(o, n)] : e < r && r < n && o < n ? [new this.constructor(e, r), new this.constructor(r, n)] : [];\n }\n }, {\n key: \"toDate\",\n value: function () {\n return [this.start.toDate(), this.end.toDate()];\n }\n }, {\n key: \"toString\",\n value: function () {\n return this.start.format() + \"/\" + this.end.format();\n }\n }, {\n key: \"valueOf\",\n value: function () {\n return this.end.valueOf() - this.start.valueOf();\n }\n }]), t;\n }();\n }, function (t, e, n) {\n \"use strict\";\n\n var r,\n o = n(6),\n i = n(13),\n u = n(9),\n a = n(15);\n r = t.exports = function (t, e) {\n var n, r, u, s, c;\n return arguments.length < 2 || \"string\" != typeof t ? (s = e, e = t, t = null) : s = arguments[2], null == t ? (n = u = !0, r = !1) : (n = a.call(t, \"c\"), r = a.call(t, \"e\"), u = a.call(t, \"w\")), c = {\n value: e,\n configurable: n,\n enumerable: r,\n writable: u\n }, s ? o(i(s), c) : c;\n }, r.gs = function (t, e, n) {\n var r, s, c, f;\n return \"string\" != typeof t ? (c = n, n = e, e = t, t = null) : c = arguments[3], null == e ? e = void 0 : u(e) ? null == n ? n = void 0 : u(n) || (c = n, n = void 0) : (c = e, e = n = void 0), null == t ? (r = !0, s = !1) : (r = a.call(t, \"c\"), s = a.call(t, \"e\")), f = {\n get: e,\n set: n,\n configurable: r,\n enumerable: s\n }, c ? o(i(c), f) : f;\n };\n }, function (t, e, n) {\n \"use strict\";\n\n t.exports = function () {};\n }, function (t, e, n) {\n \"use strict\";\n\n t.exports = n(7)() ? Object.assign : n(8);\n }, function (t, e, n) {\n \"use strict\";\n\n t.exports = function () {\n var t,\n e = Object.assign;\n return \"function\" == typeof e && (t = {\n foo: \"raz\"\n }, e(t, {\n bar: \"dwa\"\n }, {\n trzy: \"trzy\"\n }), t.foo + t.bar + t.trzy === \"razdwatrzy\");\n };\n }, function (t, e, n) {\n \"use strict\";\n\n var r = n(10),\n o = n(14),\n i = Math.max;\n\n t.exports = function (t, e) {\n var n,\n u,\n a,\n s = i(arguments.length, 2);\n\n for (t = Object(o(t)), a = function (r) {\n try {\n t[r] = e[r];\n } catch (t) {\n n || (n = t);\n }\n }, u = 1; u < s; ++u) e = arguments[u], r(e).forEach(a);\n\n if (void 0 !== n) throw n;\n return t;\n };\n }, function (t, e, n) {\n \"use strict\";\n\n t.exports = function (t) {\n return \"function\" == typeof t;\n };\n }, function (t, e, n) {\n \"use strict\";\n\n t.exports = n(11)() ? Object.keys : n(12);\n }, function (t, e, n) {\n \"use strict\";\n\n t.exports = function () {\n try {\n return Object.keys(\"primitive\"), !0;\n } catch (t) {\n return !1;\n }\n };\n }, function (t, e, n) {\n \"use strict\";\n\n var r = n(0),\n o = Object.keys;\n\n t.exports = function (t) {\n return o(r(t) ? Object(t) : t);\n };\n }, function (t, e, n) {\n \"use strict\";\n\n var r = n(0),\n o = Array.prototype.forEach,\n i = Object.create,\n u = function (t, e) {\n var n;\n\n for (n in t) e[n] = t[n];\n };\n\n t.exports = function (t) {\n var e = i(null);\n return o.call(arguments, function (t) {\n r(t) && u(Object(t), e);\n }), e;\n };\n }, function (t, e, n) {\n \"use strict\";\n\n var r = n(0);\n\n t.exports = function (t) {\n if (!r(t)) throw new TypeError(\"Cannot use null or undefined\");\n return t;\n };\n }, function (t, e, n) {\n \"use strict\";\n\n t.exports = n(16)() ? String.prototype.contains : n(17);\n }, function (t, e, n) {\n \"use strict\";\n\n var r = \"razdwatrzy\";\n\n t.exports = function () {\n return \"function\" == typeof r.contains && !0 === r.contains(\"dwa\") && !1 === r.contains(\"foo\");\n };\n }, function (t, e, n) {\n \"use strict\";\n\n var r = String.prototype.indexOf;\n\n t.exports = function (t) {\n return r.call(this, t, arguments[1]) > -1;\n };\n }, function (t, e, n) {\n \"use strict\";\n\n var r = {\n object: !0,\n symbol: !0\n };\n\n t.exports = function () {\n var t;\n if (\"function\" != typeof Symbol) return !1;\n t = Symbol(\"test symbol\");\n\n try {\n String(t);\n } catch (t) {\n return !1;\n }\n\n return !!r[typeof Symbol.iterator] && !!r[typeof Symbol.toPrimitive] && !!r[typeof Symbol.toStringTag];\n };\n }, function (t, e, n) {\n \"use strict\";\n\n t.exports = function (t) {\n return !!t && (\"symbol\" == typeof t || !!t.constructor && \"Symbol\" === t.constructor.name && \"Symbol\" === t[t.constructor.toStringTag]);\n };\n }, function (t, e, n) {\n \"use strict\";\n\n var r,\n o,\n i,\n u,\n a = n(4),\n s = n(21),\n c = Object.create,\n f = Object.defineProperties,\n l = Object.defineProperty,\n v = Object.prototype,\n d = c(null);\n\n if (\"function\" == typeof Symbol) {\n r = Symbol;\n\n try {\n String(r()), u = !0;\n } catch (t) {}\n }\n\n var p = function () {\n var t = c(null);\n return function (e) {\n for (var n, r, o = 0; t[e + (o || \"\")];) ++o;\n\n return e += o || \"\", t[e] = !0, n = \"@@\" + e, l(v, n, a.gs(null, function (t) {\n r || (r = !0, l(this, n, a(t)), r = !1);\n })), n;\n };\n }();\n\n i = function (t) {\n if (this instanceof i) throw new TypeError(\"Symbol is not a constructor\");\n return o(t);\n }, t.exports = o = function t(e) {\n var n;\n if (this instanceof t) throw new TypeError(\"Symbol is not a constructor\");\n return u ? r(e) : (n = c(i.prototype), e = void 0 === e ? \"\" : String(e), f(n, {\n __description__: a(\"\", e),\n __name__: a(\"\", p(e))\n }));\n }, f(o, {\n for: a(function (t) {\n return d[t] ? d[t] : d[t] = o(String(t));\n }),\n keyFor: a(function (t) {\n var e;\n s(t);\n\n for (e in d) if (d[e] === t) return e;\n }),\n hasInstance: a(\"\", r && r.hasInstance || o(\"hasInstance\")),\n isConcatSpreadable: a(\"\", r && r.isConcatSpreadable || o(\"isConcatSpreadable\")),\n iterator: a(\"\", r && r.iterator || o(\"iterator\")),\n match: a(\"\", r && r.match || o(\"match\")),\n replace: a(\"\", r && r.replace || o(\"replace\")),\n search: a(\"\", r && r.search || o(\"search\")),\n species: a(\"\", r && r.species || o(\"species\")),\n split: a(\"\", r && r.split || o(\"split\")),\n toPrimitive: a(\"\", r && r.toPrimitive || o(\"toPrimitive\")),\n toStringTag: a(\"\", r && r.toStringTag || o(\"toStringTag\")),\n unscopables: a(\"\", r && r.unscopables || o(\"unscopables\"))\n }), f(i.prototype, {\n constructor: a(o),\n toString: a(\"\", function () {\n return this.__name__;\n })\n }), f(o.prototype, {\n toString: a(function () {\n return \"Symbol (\" + s(this).__description__ + \")\";\n }),\n valueOf: a(function () {\n return s(this);\n })\n }), l(o.prototype, o.toPrimitive, a(\"\", function () {\n var t = s(this);\n return \"symbol\" == typeof t ? t : t.toString();\n })), l(o.prototype, o.toStringTag, a(\"c\", \"Symbol\")), l(i.prototype, o.toStringTag, a(\"c\", o.prototype[o.toStringTag])), l(i.prototype, o.toPrimitive, a(\"c\", o.prototype[o.toPrimitive]));\n }, function (t, e, n) {\n \"use strict\";\n\n var r = n(19);\n\n t.exports = function (t) {\n if (!r(t)) throw new TypeError(t + \" is not a symbol\");\n return t;\n };\n }]);\n});","var map = {\n\t\"./act_as_stackable.js\": 54,\n\t\"./action_cable.js\": 29,\n\t\"./ajax_listeners.js\": 192,\n\t\"./announcement_queue.js\": 30,\n\t\"./breakpoint_change.js\": 32,\n\t\"./index.js\": 59,\n\t\"./ios_message_handler.js\": 33,\n\t\"./web_socket.js\": 55\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 191;","var showSpinner = (event) => {\n console.log(\"show spinner\")\n if (!!document.querySelector(\".modal form\") && !!document.querySelector(\".modal\").offsetWidth) {\n document.querySelector(\"#mySpinner\").style.display = \"block\"\n document.querySelector(\".modal form\").style.display = \"none\"\n } else {\n document.querySelector(\"#loading-indicator\").style.display = \"block\"\n }\n}\n\nvar clearSpinner = (event) => {\n console.log(\"clear spinner\")\n document.querySelector(\"#loading-indicator\").style.display = \"none\"\n\n if (!!document.querySelector(\".modal form\") && !!document.querySelector(\".modal\").offsetWidth) {\n document.querySelector(\"#mySpinner\").style.display = \"none\"\n document.querySelector(\".modal form\").style.display = \"block\"\n }\n}\n\nvar triggerTurbolinksLoadEvent = (event) => {\n const [, , xhr] = event.detail\n\n console.log(\"trigger turbolinks load event\")\n if (xhr.status == 200)\n // As we move over all Javascript to Stimulus, explicitly calling turbolinks:load after\n // ajax:success events to run ready() will be unnecessary\n {return document.dispatchEvent(new Event(\"turbolinks:load\"))}\n}\n\nvar disableLink = (event) => {\n console.log(\"disable link\")\n const element = event.target\n\n if (element.hasAttribute(\"data-autodisable\")) {\n return\n }\n\n console.log(\"disable link\")\n if(!element.href.startsWith(\"#\")) {\n element.setAttribute(\"disabled\", true)\n element.setAttribute(\"data-reenable-after-load\", true)\n }\n}\n\ndocument.addEventListener(\"ajax:complete\", (event) => {\n const [xhr, ] = event.detail\n\n if (xhr.status == 200) {\n return\n }\n\n if (xhr.status == 500) {\n alert(`Server Error #${xhr.status}.\\nThere was an error processing the page. Please report the bug to our team with reference 'Error 500'!`)\n } else if (xhr.status == 404) {\n alert(\"404 page not found! Try visiting the homepage and trying again?\")\n } else if (xhr.status == 401 || xhr.status == 403) {\n alert(\"You are not authorised to visit this page. You may not have permission to access this page or you may not be logged in\")\n } else if (xhr.status == 0) {\n alert(\"There is a problem with your internet connection. Please try again\")\n } else {\n alert(`Error #${xhr.status}.\\nThe server encountered an error processing your request. Please report the bug to our team!`)\n }\n\n event.stopImmediatePropagation()\n})\n\ndocument.addEventListener(\"turbolinks:load\", () => {\n const forms = document.querySelectorAll(\"form[data-remote]\")\n forms.forEach((element) => {\n element.removeEventListener(\"ajax:before\", showSpinner)\n element.addEventListener(\"ajax:before\", showSpinner)\n\n element.removeEventListener(\"ajax:success\", clearSpinner)\n element.addEventListener(\"ajax:success\", clearSpinner)\n\n element.removeEventListener(\"ajax:success\", triggerTurbolinksLoadEvent)\n element.addEventListener(\"ajax:success\", triggerTurbolinksLoadEvent)\n })\n\n const remoteLinks = document.querySelectorAll(\"a[href][data-remote]\")\n remoteLinks.forEach((element) => {\n element.removeEventListener(\"ajax:beforeSend\", disableLink)\n element.addEventListener(\"ajax:beforeSend\", disableLink)\n\n element.removeEventListener(\"ajax:before\", showSpinner)\n element.addEventListener(\"ajax:before\", showSpinner)\n\n element.removeEventListener(\"ajax:success\", clearSpinner)\n element.addEventListener(\"ajax:success\", clearSpinner)\n\n element.removeEventListener(\"ajax:success\", triggerTurbolinksLoadEvent)\n element.addEventListener(\"ajax:success\", triggerTurbolinksLoadEvent)\n })\n\n const otherLinks = document.querySelectorAll(\"a[href]:not([data-remote]):not([data-autodisable]):not([target]):not([href='#'])\")\n otherLinks.forEach((element) => {\n element.removeEventListener(\"click\", disableLink)\n element.addEventListener(\"click\", disableLink)\n })\n\n const autodisabledLinks = document.querySelectorAll(\"a[href][data-reenable-after-load]\")\n autodisabledLinks.forEach((element) => {\n element.removeAttribute(\"data-reenable-after-load\")\n element.removeAttribute(\"disabled\")\n })\n})\n","function camelize(string) {\n return string.replace(/([-_][a-z])/ig, ($1) => {\n return $1.toUpperCase()\n .replace(\"-\", \"\")\n .replace(\"_\", \"\")\n })\n}\n\nconst helpers = require.context(\".\", true, /_helper\\.js$/)\nglobal.helpers = {}\nhelpers.keys().forEach((key) => {\n var functionName = camelize(key.replace(\"./\", \"\").replace(\"_helper.js\", \"\"))\n global.helpers[functionName] = helpers(key).default\n})\n","var map = {\n\t\"./breakpoints_helper.js\": 195,\n\t\"./cashing_up_progress_helper.js\": 196,\n\t\"./clear_stack_helper.js\": 197,\n\t\"./close_dialogs_helper.js\": 198,\n\t\"./comparable_string_helper.js\": 199,\n\t\"./create_element_helper.js\": 200,\n\t\"./dedupe_helper.js\": 201,\n\t\"./format_currency_helper.js\": 202,\n\t\"./highlight_helper.js\": 203,\n\t\"./is_firefox_helper.js\": 204,\n\t\"./is_ios_app_helper.js\": 205,\n\t\"./is_ios_browser_helper.js\": 206,\n\t\"./is_ios_safari_helper.js\": 207,\n\t\"./is_macos_safari_helper.js\": 208,\n\t\"./is_samsung_internet_helper.js\": 209,\n\t\"./key_codes_helper.js\": 210,\n\t\"./loader_helper.js\": 57,\n\t\"./log_helper.js\": 211,\n\t\"./notify_helper.js\": 212,\n\t\"./pwa_installable_helper.js\": 213,\n\t\"./pwa_installed_helper.js\": 214,\n\t\"./reload_timetable_helper.js\": 215,\n\t\"./scroll_to_option_helper.js\": 216,\n\t\"./slide_helper.js\": 217,\n\t\"./stack_manager_helper.js\": 218,\n\t\"./tag_replacements_helper.js\": 56,\n\t\"./unaccent_helper.js\": 219,\n\t\"./unicode_hash_helper.js\": 220,\n\t\"./url_base64_to_uint8_array_helper.js\": 221\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 194;","const getBreakpoint = (breakpoint, rangeType) => {\n return parseInt(\n getComputedStyle(document.documentElement).getPropertyValue(\n `--break-point-${breakpoint}-${rangeType}`,\n ),\n )\n}\n\nconst breakpoints = {\n tiny: {\n start: getBreakpoint(\"tiny\", \"start\"),\n end: getBreakpoint(\"tiny\", \"end\"),\n },\n small: {\n start: getBreakpoint(\"small\", \"start\"),\n end: getBreakpoint(\"small\", \"end\"),\n },\n medium: {\n start: getBreakpoint(\"medium\", \"start\"),\n end: getBreakpoint(\"medium\", \"end\"),\n },\n large: {\n start: getBreakpoint(\"large\", \"start\"),\n end: getBreakpoint(\"large\", \"end\"),\n },\n huge: {\n start: getBreakpoint(\"huge\", \"start\"),\n end: getBreakpoint(\"huge\", \"end\"),\n },\n}\n\nexport default breakpoints\n","export default function(progress, allPaid, adjustment = 5) {\n if (allPaid) return 100\n if (progress == 0) return 0\n\n const maxAdjusted = 100 - adjustment\n if (progress < adjustment) return adjustment\n if (progress > maxAdjusted) return maxAdjusted\n\n return progress\n}\n","import StackManager from \"models/stack_manager\"\n\n// @options\n// - reloadPrimary: boolean (default: false). If true, it will trigger a reload event on that is handled by the primary sheet element\n// - notifyCallbacks: boolean (default: true). If false, it will not trigger the removed event on the last element in the stack\n// - keepPrimary: boolean (default: false). If true, it will keep the primary element in the stack. This conflicts with reloadPrimary, overriding it to false\nexport default function(stackName, {\n reloadPrimary = false,\n notifyCallbacks = true,\n keepPrimary = false,\n ...data\n } = {}) {\n reloadPrimary = reloadPrimary && !keepPrimary\n const stackManager = StackManager.loadFor(stackName)\n stackManager.clear({ reloadPrimary, notifyCallbacks, keepPrimary, ...data })\n}\n","export default function() {\n document.querySelectorAll(\"[data-controller='dialog']\").forEach((dialog) => {\n var controller = global.application.getControllerForElementAndIdentifier(\n dialog, \"dialog\"\n )\n\n if (controller) {\n controller.close()\n }\n })\n}\n","export default function(string) {\n const lowerCase = string.toLocaleLowerCase().trim()\n const withoutAccents = global.helpers.unaccent(lowerCase)\n\n return withoutAccents\n}\n","export default function(text) {\n const template = document.createElement(\"template\")\n template.innerHTML = text\n return template.content.firstElementChild\n}\n","export default function(array) {\n return [...new Set(array)]\n}\n","export default function(base, currency, locale) {\n const formatCurrency = Intl.NumberFormat(locale, {\n style: \"currency\",\n currency: currency,\n currencyDisplay: \"narrowSymbol\",\n })\n\n const currencySymbol = formatCurrency.formatToParts(1).find((part) => part.type === \"currency\").value\n\n if (currencySymbol == \"$\") {\n return `${formatCurrency.format(base)} ${currency}`\n } else {\n return `${formatCurrency.format(base)}`\n }\n}\n","export default function(element) {\n element.classList.add(\"element--highlighted\")\n\n setTimeout(() => {\n element.classList.remove(\"element--highlighted\")\n }, 1500)\n}\n","export default function() {\n return navigator.userAgent.toLowerCase().includes(\"firefox\")\n}\n","import iOSMessageHandler from \"shared/ios_message_handler\"\n\nexport default function() {\n // We ensure that it's within the iOS app by checking that the injected pushNotifications handler is available.\n return new iOSMessageHandler().isPushChannelAvailable()\n}\n","export default function() {\n const userAgent = window.navigator.userAgent.toLowerCase()\n return /iphone|ipad|ipod/i.test(userAgent)\n}\n","export default function() {\n const userAgent = window.navigator.userAgent.toLowerCase()\n return /iphone|ipad|ipod/.test(userAgent) && userAgent.match(/version\\/[\\d\\.]+.*safari/)\n}\n","export default function() {\n const userAgent = navigator.userAgent\n const isMacOS = userAgent.includes(\"Macintosh\") || userAgent.includes(\"Mac OS X\")\n const isSafari = /^((?!chrome|android).)*safari/i.test(userAgent)\n\n return isMacOS && isSafari\n}\n","export default function() {\n return navigator.userAgent.toLowerCase().includes(\"samsungbrowser\")\n}\n","export default {\n upKey: 38,\n downKey: 40,\n enterKey: 13\n}\n","export default function(message) {\n console.log(message)\n}\n","export default function(text, options = {}) {\n const flashEvent = new CustomEvent(\"application:notify\", { detail: { text, options }, bubbles: false })\n global.dispatchEvent(flashEvent)\n}\n","export default function() {\n // We ensure that we have https connection, valid manifest.json and service worker registration.\n // So, all we need to check for is `onbeforeinstallprompt` event in Chromium browsers.\n return (\"onbeforeinstallprompt\" in window) || global.helpers.isIosSafari()\n}\n","function isInIosStandaloneMode() {\n return \"standalone\" in window.navigator && window.navigator.standalone\n}\n\n// All we can really check is whether we are in standalone mode.\nexport default function() {\n if (global.helpers.isIosSafari()) {\n return isInIosStandaloneMode()\n }\n\n return window.matchMedia(\"(display-mode: standalone)\").matches\n}\n","export default function(array) {\n const timetableController = global.timetableController\n\n if (!timetableController) return\n\n if (timetableController.hideNonWorkingBarbers) return timetableController.setState({}, { advance: false })\n\n timetableController.reload()\n}\n","export default function(optionElement, optionsElement) {\n const optionsHeight = parseInt(getComputedStyle(optionsElement).height)\n const optionHeight = [\n parseInt(getComputedStyle(optionElement).height),\n parseInt(getComputedStyle(optionElement).marginTop),\n parseInt(getComputedStyle(optionElement).marginBottom)\n ].reduce((a, b) => a + b)\n const optionsScrollTop = optionsElement.scrollTop\n const topDistance = optionElement.offsetTop - optionsScrollTop\n const bottomDistance = optionsHeight - topDistance - optionHeight\n\n if (topDistance < 0) {\n optionsElement.scrollTop = optionsElement.scrollTop + topDistance\n }\n\n if (bottomDistance < 0) {\n optionsElement.scrollTop = optionsElement.scrollTop - bottomDistance\n }\n}\n","export default {\n up: (element, duration = 150, callback) => {\n element.style.transitionProperty = \"height, margin, padding, opacity\"\n element.style.transitionDuration = `${duration}ms`\n element.style.transitionTimingFunction = \"ease-in-out\"\n element.style.boxSizing = \"border-box\"\n element.style.height = `${element.offsetHeight}px`\n element.offsetHeight\n element.style.height = 0\n element.style.opacity = 0\n element.style.paddingTop = 0\n element.style.paddingBottom = 0\n element.style.marginTop = 0\n element.style.marginBottom = 0\n\n window.setTimeout(() => {\n element.style.display = \"none\"\n element.style.removeProperty(\"height\")\n element.style.removeProperty(\"opacity\")\n element.style.removeProperty(\"padding-top\")\n element.style.removeProperty(\"padding-bottom\")\n element.style.removeProperty(\"margin-top\")\n element.style.removeProperty(\"margin-bottom\")\n element.style.removeProperty(\"overflow\")\n element.style.removeProperty(\"transition-duration\")\n element.style.removeProperty(\"transition-property\")\n element.style.removeProperty(\"transition-timing-function\")\n\n if (callback) {\n callback()\n }\n }, duration)\n },\n\n down: (element, duration = 150, callback) => {\n element.style.removeProperty(\"display\")\n\n let display = window.getComputedStyle(element).display\n if (display === \"none\") {\n display = \"block\"\n }\n\n element.style.display = display\n const height = element.offsetHeight\n element.style.height = 0\n element.style.opacity = 0\n element.style.paddingTop = 0\n element.style.paddingBottom = 0\n element.style.marginTop = 0\n element.style.marginBottom = 0\n element.offsetHeight\n element.style.boxSizing = \"border-box\"\n element.style.transitionProperty = \"height, margin, padding, opacity\"\n element.style.transitionDuration = `${duration}ms`\n element.style.transitionTimingFunction = \"ease-in-out\"\n element.style.height = `${height}px`\n element.style.opacity = 1\n element.style.removeProperty(\"padding-top\")\n element.style.removeProperty(\"padding-bottom\")\n element.style.removeProperty(\"margin-top\")\n element.style.removeProperty(\"margin-bottom\")\n\n window.setTimeout(() => {\n element.style.removeProperty(\"height\")\n element.style.removeProperty(\"opacity\")\n element.style.removeProperty(\"overflow\")\n element.style.removeProperty(\"transition-duration\")\n element.style.removeProperty(\"transition-property\")\n element.style.removeProperty(\"transition-timing-function\")\n\n if (callback) {\n callback()\n }\n }, duration)\n },\n\n toggle: (element, duration = 150) => {\n if (window.getComputedStyle(element).display === \"none\") {\n return global.helpers.slide.down(element, duration)\n } else {\n return global.helpers.slide.up(element, duration)\n }\n }\n}\n","import StackManager from \"models/stack_manager\"\n\nexport default function(stackName) {\n const stackManager = StackManager.loadFor(stackName)\n\n return stackManager\n}\n","export default function(string) {\n return string.normalize(\"NFD\").replace(/\\p{Diacritic}/gu, \"\")\n}\n","export default function unicodeHash(content) {\n let hash = 0, i, chr\n if (content.length === 0) return hash\n for (i = 0; i < content.length; i++) {\n chr = content.charCodeAt(i)\n hash = ((hash << 5) - hash) + chr\n hash |= 0\n }\n return hash\n}\n","// Based on this gist: https://gist.github.com/Klerith/80abd742d726dd587f4bd5d6a0ab26b6\n// Reference of use: https://web.dev/articles/push-notifications-subscribing-a-user#what_is_a_pushsubscription\nexport default function(base64String) {\n // padding with repeated '=' to make the length a multiple of 4\n const padding = \"=\".repeat((4 - base64String.length % 4) % 4)\n // replace characters according to base64url specifications (see https://tools.ietf.org/html/rfc4648#section-5)\n // and add padding to the base64 string\n const base64 = (base64String + padding)\n .replace(/-/g, \"+\")\n .replace(/_/g, \"/\")\n\n // convert base64 string to binary string\n const rawData = window.atob(base64)\n // create a Uint8Array in the size of the binary string\n const outputArray = new Uint8Array(rawData.length)\n\n // loop through the size of the binary string and for each character\n // convert it to a number and store it in the Uint8Array\n for (let i = 0; i < rawData.length; ++i) {\n outputArray[i] = rawData.charCodeAt(i)\n }\n\n return outputArray\n}\n","var map = {\n\t\"./action_sheet_controller.js\": 224,\n\t\"./action_sheet_presentation_controller.js\": 225,\n\t\"./announcement_controller.js\": 226,\n\t\"./application_controller.js\": 227,\n\t\"./autocomplete_field_controller.js\": 232,\n\t\"./autofill_address_controller.js\": 234,\n\t\"./badge_indicator_controller.js\": 235,\n\t\"./business_day_controller.js\": 236,\n\t\"./business_week_controller.js\": 237,\n\t\"./calendar_controller.js\": 238,\n\t\"./characters_count_controller.js\": 347,\n\t\"./click_document_through_ajax_controller.js\": 348,\n\t\"./click_through_controller.js\": 349,\n\t\"./clipboard_controller.js\": 350,\n\t\"./component_preview_calendar_column_controller.js\": 351,\n\t\"./component_preview_date_picker_controller.js\": 352,\n\t\"./component_preview_dropdown_controller.js\": 353,\n\t\"./date_picker_controller.js\": 354,\n\t\"./depended_checkbox_toggle_controller.js\": 355,\n\t\"./dialog_controller.js\": 397,\n\t\"./dialog_presentation_controller.js\": 356,\n\t\"./dropdown_controller.js\": 357,\n\t\"./feedback_redirect_controller.js\": 358,\n\t\"./file_upload_controller.js\": 359,\n\t\"./flash_messages_controller.js\": 360,\n\t\"./focus_controller.js\": 361,\n\t\"./gtag_manager_controller.js\": 362,\n\t\"./hello_controller.js\": 363,\n\t\"./hide_show_toggle_controller.js\": 364,\n\t\"./highlight_controller.js\": 365,\n\t\"./horizontal_scroller_controller.js\": 366,\n\t\"./load_remote_when_visible_controller.js\": 367,\n\t\"./map_controller.js\": 368,\n\t\"./notification_banner_controller.js\": 369,\n\t\"./number_field_controller.js\": 370,\n\t\"./outline_controller.js\": 371,\n\t\"./posthog_controller.js\": 372,\n\t\"./push_button_controller.js\": 373,\n\t\"./record_editor_controller.js\": 374,\n\t\"./remove_controller.js\": 375,\n\t\"./reveal_controller.js\": 376,\n\t\"./scroll_into_view_controller.js\": 377,\n\t\"./select_field_controller.js\": 378,\n\t\"./service_worker_registration_controller.js\": 379,\n\t\"./setup_wizard_controller.js\": 380,\n\t\"./sheet_controller.js\": 381,\n\t\"./sheet_stack_controller.js\": 382,\n\t\"./spam_honeypot_controller.js\": 383,\n\t\"./stepper_controller.js\": 384,\n\t\"./sticky_cta_controller.js\": 385,\n\t\"./sticky_form_footer_controller.js\": 386,\n\t\"./tabbed_sections_controller.js\": 387,\n\t\"./template_logo_controller.js\": 388,\n\t\"./text_fit_controller.js\": 389,\n\t\"./toggle_controller.js\": 390,\n\t\"./toggle_radio_controller.js\": 391,\n\t\"./tooltip_position_controller.js\": 392,\n\t\"./trustpilot_widget_controller.js\": 393,\n\t\"./turbolinks_visit_controller.js\": 394,\n\t\"./usetiful_tour_controller.js\": 395,\n\t\"./validate_form_controller.js\": 396\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 223;","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static values = {\n displayAutomatically: Boolean,\n removeOnClose: Boolean,\n stackName: String\n }\n\n static classes = [\"show\"]\n\n renderer = {\n set: (target, property, value) => {\n target[property] = value\n\n if (property === \"presenting\") this.renderer.toggle()\n\n return true\n },\n\n toggle: () => {\n this.state.presenting ? this.renderer.present() : this.renderer.dismiss()\n },\n\n present: () => {\n this.renderer.removeParentDialogOverflow()\n this.element.classList.add(this.showClass)\n this._emitStackEvent(\"action-sheet:present\")\n },\n\n dismiss: () => {\n this.element.classList.add(\"action-sheet--closing\")\n\n const bodyElement = this.element.querySelector(\".action-sheet__body\")\n bodyElement.addEventListener(\"animationend\", () => {\n this.element.classList.remove(\"action-sheet--closing\")\n\n this.element.classList.remove(this.showClass)\n this.renderer.addParentDialogOverflow()\n if (this.removeOnCloseValue) this.element.remove()\n }, { once: true })\n },\n\n // This one and the one below it remove the overflow from the parent dialog.\n // That is required because otherwise we see a scrollbar for a brief instant when\n // the action sheet's animation happens. This can move the text around a bit due to\n // taking up some space.\n //\n // What we do here is simple, if there's a parent dialog and it doesn't already remove\n // the overflow, then we remove it and store a flag that we removed it. Then when we\n // close the action sheet, if we find the flag, we revert our changes.\n removeParentDialogOverflow: () => {\n const hasOverflow = this.dialog && !this.dialog.classList.contains(\"dialog--without-overflow\")\n if (hasOverflow) {\n this.dialog.classList.add(\"dialog--without-overflow\")\n this.element.dataset.removedDialogOverflow = true\n }\n },\n\n addParentDialogOverflow: () => {\n if (this.element.dataset.removedDialogOverflow) {\n // TODO: This seems like a bug.\n // const dialog = this.element.closest(\"dialog\")\n // Commenting it out for now.\n // dialog.classList.remove(\"dialog--without-overflow\")\n this.element.dataset.removedDialogOverflow = false\n }\n }\n }\n\n connect() {\n this.state = new Proxy({}, this.renderer)\n\n if (this.displayAutomaticallyValue) this.open()\n }\n\n disconnect() {\n this.close()\n }\n\n open(event) {\n if (event) event.preventDefault()\n\n this.state.presenting = true\n }\n\n close(event) {\n const targetHref = event?.currentTarget?.getAttribute(\"href\")\n if (targetHref === \"#\" || targetHref === \"\") event.preventDefault()\n\n this.state.presenting = false\n }\n\n _emitStackEvent(eventName) {\n if (!this.stackNameValue) return\n\n const stackEventName = `sheet-stack-${eventName}`\n const stackEvent = new CustomEvent(stackEventName, {\n bubbles: false,\n detail: { targetDialog: this.element }\n })\n window.dispatchEvent(stackEvent)\n }\n\n get dialog() {\n return this.element.closest(\".dialog\")\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static values = {\n selector: String\n }\n\n connect() {\n if (this.hasSelectorValue) this.actionSheetElement = document.querySelector(this.selectorValue)\n }\n\n present(event) {\n event.preventDefault()\n event.stopPropagation()\n\n if (this.actionSheetElement) {\n const actionSheetController =\n global.application.getControllerForElementAndIdentifier(this.actionSheetElement, \"action-sheet\")\n\n actionSheetController.open()\n }\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\nimport AnnouncementQueue from \"shared/announcement_queue\"\n\nexport default class extends Controller {\n connect() {\n AnnouncementQueue.startAnnouncing()\n }\n\n markAsSeen(event) {\n // Since stimulus params are not supported in this version\n // we can still use simple data attributes\n let announceName = event.target.dataset.announceNameParamValue\n if (!announceName) {\n announceName = event.currentTarget.dataset.announceNameParamValue\n }\n\n const eventPayload = {\n name: announceName,\n onSuccess: this.onMarkAsSeenCallback.bind(this)\n }\n const visitedEvent = new CustomEvent(\"usetiful-tour:visited\", {\n bubbles: false,\n detail: eventPayload\n })\n\n window.dispatchEvent(visitedEvent)\n }\n\n onMarkAsSeenCallback(_data) {\n AnnouncementQueue.announceNext()\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\nimport Moment from \"moment-timezone\"\nimport \"moment/locale/en-gb\"\nimport \"moment/locale/fr\"\nimport \"moment/locale/de\"\nimport \"moment/locale/es\"\nimport \"moment/locale/it\"\nimport \"moment/locale/nl\"\nimport \"moment/locale/pt\"\nimport \"moment/locale/tr\"\nimport \"moment/locale/el\"\nimport \"moment/locale/pl\"\nimport \"moment/locale/cs\"\nimport { extendMoment } from \"moment-range\"\n\nexport default class extends Controller {\n static values = {\n fetchUrlOnLoad: String,\n fetchUrlOnLoadMethod: String,\n timezone: String,\n locale: String,\n clockType: String,\n momentLocaleSettings: Object\n }\n\n static targets = [\n \"sidebar\",\n \"sidebarToggler\"\n ]\n\n connect() {\n global.timezone = this.timezone\n global.locale = this.locale\n\n this.prepareJavascriptTestCookie()\n this.prepareDialogSupport()\n this.prepareMomentObject()\n this.prepareIntercom()\n\n if (this.fetchUrlOnLoadValue) this.loadFetchUrl()\n\n // Ref: https://stackoverflow.com/a/30303898\n if (matchMedia(\"(hover: none)\").matches) { // remove all the :hover stylesheets\n this.removeHoverStyles()\n }\n }\n\n toggleSidebar(event) {\n if (event) event.preventDefault()\n\n this.sidebarTarget.dataset.visible = !this.isSidebarVisible\n this.sidebarTogglerTarget.classList.toggle(\"tab__link--active\", this.isSidebarVisible)\n document.body.classList.toggle(\"element--sidebar-visible\", this.isSidebarVisible)\n }\n\n dismissSidebar(event) {\n if (this.isSidebarVisible) this.toggleSidebar()\n }\n\n switchToToday(event) {\n if (global.timetableController?.calendarController == null) return\n\n event.preventDefault()\n\n global.timetableController?.calendarController?.switchToToday(event)\n }\n\n removeHoverStyles() {\n try { // prevent exception on browsers not supporting DOM styleSheets properly\n for (const si in document.styleSheets) {\n const styleSheet = document.styleSheets[si]\n let rules = null\n // Some stylesheets are not from the same domain and we can't access their rules\n try {\n rules = styleSheet.cssRules || styleSheet.rules\n } catch (ex) {\n console.log(ex)\n }\n if (!rules) continue\n\n // We start from behind so that the indices don't change as we remove rules\n for (let ri = rules.length - 1; ri >= 0; ri--) {\n const rule = rules[ri]\n if (!rule.selectorText) continue\n\n if (rule.selectorText.match(\":hover\")) {\n // NOTE: We may want to enable adding back these styles if media query changes\n // To do this we'll add `change` event listener to the `matchMedia`'s result.\n // Not doing it now as the only usage seems to be testing while development and\n // I don't want to make this code more complicated unless it's really needed.\n const selectorWithoutHover = rule.selectorText.split(\",\").filter((s) => !s.match(\":hover\")).join(\", \")\n // There are other selectors besides the hover text e.g. `a, a:hover`, which it converts to `a`\n if (selectorWithoutHover !== \"\") {\n rule.selectorText = selectorWithoutHover\n // There is only the hover selector\n } else {\n styleSheet.deleteRule(ri)\n }\n }\n }\n }\n } catch (ex) {\n console.log(ex)\n }\n }\n\n loadFetchUrl() {\n const method = this.fetchUrlOnLoadMethodValue || \"get\"\n\n Rails.ajax({\n type: method,\n dataType: \"script\",\n url: this.fetchUrlOnLoadValue\n })\n }\n\n prepareJavascriptTestCookie() {\n // Sometimes we want to know on the backend whether the JS has run. This is useful for excluding bots.\n\n const expires = new Date(new Date().setFullYear(new Date().getFullYear() + 1)).toUTCString()\n document.cookie = \"javascript_can_set_cookie=true; expires=\" + expires + \"; path=/\"\n }\n\n prepareDialogSupport() {\n if (typeof HTMLDialogElement === \"function\") {\n this.element.classList.add(\"element--supports-dialog\")\n }\n }\n\n prepareMomentObject() {\n const momentLocale = this.locale === \"en\" ? \"en-gb\" : this.locale\n\n global.momentFormats = this.momentLocaleSettings.formats\n global.timeFormat = this.timeFormat\n global.clockType = this.clockType\n global.moment = extendMoment(Moment)\n global.moment.tz.setDefault(this.timezone)\n global.moment.locale(momentLocale)\n\n if (this.momentLocaleSettings.locale) {\n global.moment.updateLocale(momentLocale, this.momentLocaleSettings.locale)\n }\n }\n\n prepareIntercom() {\n if (!global.Intercom) return\n\n global.Intercom(\"onUnreadCountChange\", function(unreadCount) {\n const intercomBadgeEvent = new CustomEvent(\"badge-indicator:change\", {\n detail: { count: unreadCount, targetId: \"intercom\" }\n })\n window.dispatchEvent(intercomBadgeEvent)\n })\n }\n\n get timezone() {\n return this.timezoneValue || \"Europe/London\"\n }\n\n get locale() {\n const defaultLocale = \"en\"\n const locale = this.localeValue.split(\"-\")[0]\n\n if (locale === \"en\") return this.localeValue\n\n return locale || defaultLocale\n }\n\n get clockType() {\n return this.clockTypeValue || \"24_hours\"\n }\n\n get momentLocaleSettings() {\n return this.momentLocaleSettingsValue || { formats: {} }\n }\n\n get timeFormat() {\n return this.clockType === \"24_hours\" ? \"HH:mm\" : \"h:mma\"\n }\n\n get isSidebarVisible() {\n return this.sidebarTarget.dataset.visible === \"true\"\n }\n}\n","//! moment-timezone.js\n//! version : 0.5.43\n//! Copyright (c) JS Foundation and other contributors\n//! license : MIT\n//! github.com/moment/moment-timezone\n(function (root, factory) {\n \"use strict\";\n /*global define*/\n\n if (typeof module === 'object' && module.exports) {\n module.exports = factory(require('moment')); // Node\n } else if (typeof define === 'function' && define.amd) {\n define(['moment'], factory); // AMD\n } else {\n factory(root.moment); // Browser\n }\n})(this, function (moment) {\n \"use strict\"; // Resolves es6 module loading issue\n\n if (moment.version === undefined && moment.default) {\n moment = moment.default;\n } // Do not load moment-timezone a second time.\n // if (moment.tz !== undefined) {\n // \tlogError('Moment Timezone ' + moment.tz.version + ' was already loaded ' + (moment.tz.dataVersion ? 'with data from ' : 'without any data') + moment.tz.dataVersion);\n // \treturn moment;\n // }\n\n\n var VERSION = \"0.5.43\",\n zones = {},\n links = {},\n countries = {},\n names = {},\n guesses = {},\n cachedGuess;\n\n if (!moment || typeof moment.version !== 'string') {\n logError('Moment Timezone requires Moment.js. See https://momentjs.com/timezone/docs/#/use-it/browser/');\n }\n\n var momentVersion = moment.version.split('.'),\n major = +momentVersion[0],\n minor = +momentVersion[1]; // Moment.js version check\n\n if (major < 2 || major === 2 && minor < 6) {\n logError('Moment Timezone requires Moment.js >= 2.6.0. You are using Moment.js ' + moment.version + '. See momentjs.com');\n }\n /************************************\n \tUnpacking\n ************************************/\n\n\n function charCodeToInt(charCode) {\n if (charCode > 96) {\n return charCode - 87;\n } else if (charCode > 64) {\n return charCode - 29;\n }\n\n return charCode - 48;\n }\n\n function unpackBase60(string) {\n var i = 0,\n parts = string.split('.'),\n whole = parts[0],\n fractional = parts[1] || '',\n multiplier = 1,\n num,\n out = 0,\n sign = 1; // handle negative numbers\n\n if (string.charCodeAt(0) === 45) {\n i = 1;\n sign = -1;\n } // handle digits before the decimal\n\n\n for (i; i < whole.length; i++) {\n num = charCodeToInt(whole.charCodeAt(i));\n out = 60 * out + num;\n } // handle digits after the decimal\n\n\n for (i = 0; i < fractional.length; i++) {\n multiplier = multiplier / 60;\n num = charCodeToInt(fractional.charCodeAt(i));\n out += num * multiplier;\n }\n\n return out * sign;\n }\n\n function arrayToInt(array) {\n for (var i = 0; i < array.length; i++) {\n array[i] = unpackBase60(array[i]);\n }\n }\n\n function intToUntil(array, length) {\n for (var i = 0; i < length; i++) {\n array[i] = Math.round((array[i - 1] || 0) + array[i] * 60000); // minutes to milliseconds\n }\n\n array[length - 1] = Infinity;\n }\n\n function mapIndices(source, indices) {\n var out = [],\n i;\n\n for (i = 0; i < indices.length; i++) {\n out[i] = source[indices[i]];\n }\n\n return out;\n }\n\n function unpack(string) {\n var data = string.split('|'),\n offsets = data[2].split(' '),\n indices = data[3].split(''),\n untils = data[4].split(' ');\n arrayToInt(offsets);\n arrayToInt(indices);\n arrayToInt(untils);\n intToUntil(untils, indices.length);\n return {\n name: data[0],\n abbrs: mapIndices(data[1].split(' '), indices),\n offsets: mapIndices(offsets, indices),\n untils: untils,\n population: data[5] | 0\n };\n }\n /************************************\n \tZone object\n ************************************/\n\n\n function Zone(packedString) {\n if (packedString) {\n this._set(unpack(packedString));\n }\n }\n\n Zone.prototype = {\n _set: function (unpacked) {\n this.name = unpacked.name;\n this.abbrs = unpacked.abbrs;\n this.untils = unpacked.untils;\n this.offsets = unpacked.offsets;\n this.population = unpacked.population;\n },\n _index: function (timestamp) {\n var target = +timestamp,\n untils = this.untils,\n i;\n\n for (i = 0; i < untils.length; i++) {\n if (target < untils[i]) {\n return i;\n }\n }\n },\n countries: function () {\n var zone_name = this.name;\n return Object.keys(countries).filter(function (country_code) {\n return countries[country_code].zones.indexOf(zone_name) !== -1;\n });\n },\n parse: function (timestamp) {\n var target = +timestamp,\n offsets = this.offsets,\n untils = this.untils,\n max = untils.length - 1,\n offset,\n offsetNext,\n offsetPrev,\n i;\n\n for (i = 0; i < max; i++) {\n offset = offsets[i];\n offsetNext = offsets[i + 1];\n offsetPrev = offsets[i ? i - 1 : i];\n\n if (offset < offsetNext && tz.moveAmbiguousForward) {\n offset = offsetNext;\n } else if (offset > offsetPrev && tz.moveInvalidForward) {\n offset = offsetPrev;\n }\n\n if (target < untils[i] - offset * 60000) {\n return offsets[i];\n }\n }\n\n return offsets[max];\n },\n abbr: function (mom) {\n return this.abbrs[this._index(mom)];\n },\n offset: function (mom) {\n logError(\"zone.offset has been deprecated in favor of zone.utcOffset\");\n return this.offsets[this._index(mom)];\n },\n utcOffset: function (mom) {\n return this.offsets[this._index(mom)];\n }\n };\n /************************************\n \tCountry object\n ************************************/\n\n function Country(country_name, zone_names) {\n this.name = country_name;\n this.zones = zone_names;\n }\n /************************************\n \tCurrent Timezone\n ************************************/\n\n\n function OffsetAt(at) {\n var timeString = at.toTimeString();\n var abbr = timeString.match(/\\([a-z ]+\\)/i);\n\n if (abbr && abbr[0]) {\n // 17:56:31 GMT-0600 (CST)\n // 17:56:31 GMT-0600 (Central Standard Time)\n abbr = abbr[0].match(/[A-Z]/g);\n abbr = abbr ? abbr.join('') : undefined;\n } else {\n // 17:56:31 CST\n // 17:56:31 GMT+0800 (台北標準時間)\n abbr = timeString.match(/[A-Z]{3,5}/g);\n abbr = abbr ? abbr[0] : undefined;\n }\n\n if (abbr === 'GMT') {\n abbr = undefined;\n }\n\n this.at = +at;\n this.abbr = abbr;\n this.offset = at.getTimezoneOffset();\n }\n\n function ZoneScore(zone) {\n this.zone = zone;\n this.offsetScore = 0;\n this.abbrScore = 0;\n }\n\n ZoneScore.prototype.scoreOffsetAt = function (offsetAt) {\n this.offsetScore += Math.abs(this.zone.utcOffset(offsetAt.at) - offsetAt.offset);\n\n if (this.zone.abbr(offsetAt.at).replace(/[^A-Z]/g, '') !== offsetAt.abbr) {\n this.abbrScore++;\n }\n };\n\n function findChange(low, high) {\n var mid, diff;\n\n while (diff = ((high.at - low.at) / 12e4 | 0) * 6e4) {\n mid = new OffsetAt(new Date(low.at + diff));\n\n if (mid.offset === low.offset) {\n low = mid;\n } else {\n high = mid;\n }\n }\n\n return low;\n }\n\n function userOffsets() {\n var startYear = new Date().getFullYear() - 2,\n last = new OffsetAt(new Date(startYear, 0, 1)),\n offsets = [last],\n change,\n next,\n i;\n\n for (i = 1; i < 48; i++) {\n next = new OffsetAt(new Date(startYear, i, 1));\n\n if (next.offset !== last.offset) {\n change = findChange(last, next);\n offsets.push(change);\n offsets.push(new OffsetAt(new Date(change.at + 6e4)));\n }\n\n last = next;\n }\n\n for (i = 0; i < 4; i++) {\n offsets.push(new OffsetAt(new Date(startYear + i, 0, 1)));\n offsets.push(new OffsetAt(new Date(startYear + i, 6, 1)));\n }\n\n return offsets;\n }\n\n function sortZoneScores(a, b) {\n if (a.offsetScore !== b.offsetScore) {\n return a.offsetScore - b.offsetScore;\n }\n\n if (a.abbrScore !== b.abbrScore) {\n return a.abbrScore - b.abbrScore;\n }\n\n if (a.zone.population !== b.zone.population) {\n return b.zone.population - a.zone.population;\n }\n\n return b.zone.name.localeCompare(a.zone.name);\n }\n\n function addToGuesses(name, offsets) {\n var i, offset;\n arrayToInt(offsets);\n\n for (i = 0; i < offsets.length; i++) {\n offset = offsets[i];\n guesses[offset] = guesses[offset] || {};\n guesses[offset][name] = true;\n }\n }\n\n function guessesForUserOffsets(offsets) {\n var offsetsLength = offsets.length,\n filteredGuesses = {},\n out = [],\n i,\n j,\n guessesOffset;\n\n for (i = 0; i < offsetsLength; i++) {\n guessesOffset = guesses[offsets[i].offset] || {};\n\n for (j in guessesOffset) {\n if (guessesOffset.hasOwnProperty(j)) {\n filteredGuesses[j] = true;\n }\n }\n }\n\n for (i in filteredGuesses) {\n if (filteredGuesses.hasOwnProperty(i)) {\n out.push(names[i]);\n }\n }\n\n return out;\n }\n\n function rebuildGuess() {\n // use Intl API when available and returning valid time zone\n try {\n var intlName = Intl.DateTimeFormat().resolvedOptions().timeZone;\n\n if (intlName && intlName.length > 3) {\n var name = names[normalizeName(intlName)];\n\n if (name) {\n return name;\n }\n\n logError(\"Moment Timezone found \" + intlName + \" from the Intl api, but did not have that data loaded.\");\n }\n } catch (e) {// Intl unavailable, fall back to manual guessing.\n }\n\n var offsets = userOffsets(),\n offsetsLength = offsets.length,\n guesses = guessesForUserOffsets(offsets),\n zoneScores = [],\n zoneScore,\n i,\n j;\n\n for (i = 0; i < guesses.length; i++) {\n zoneScore = new ZoneScore(getZone(guesses[i]), offsetsLength);\n\n for (j = 0; j < offsetsLength; j++) {\n zoneScore.scoreOffsetAt(offsets[j]);\n }\n\n zoneScores.push(zoneScore);\n }\n\n zoneScores.sort(sortZoneScores);\n return zoneScores.length > 0 ? zoneScores[0].zone.name : undefined;\n }\n\n function guess(ignoreCache) {\n if (!cachedGuess || ignoreCache) {\n cachedGuess = rebuildGuess();\n }\n\n return cachedGuess;\n }\n /************************************\n \tGlobal Methods\n ************************************/\n\n\n function normalizeName(name) {\n return (name || '').toLowerCase().replace(/\\//g, '_');\n }\n\n function addZone(packed) {\n var i, name, split, normalized;\n\n if (typeof packed === \"string\") {\n packed = [packed];\n }\n\n for (i = 0; i < packed.length; i++) {\n split = packed[i].split('|');\n name = split[0];\n normalized = normalizeName(name);\n zones[normalized] = packed[i];\n names[normalized] = name;\n addToGuesses(normalized, split[2].split(' '));\n }\n }\n\n function getZone(name, caller) {\n name = normalizeName(name);\n var zone = zones[name];\n var link;\n\n if (zone instanceof Zone) {\n return zone;\n }\n\n if (typeof zone === 'string') {\n zone = new Zone(zone);\n zones[name] = zone;\n return zone;\n } // Pass getZone to prevent recursion more than 1 level deep\n\n\n if (links[name] && caller !== getZone && (link = getZone(links[name], getZone))) {\n zone = zones[name] = new Zone();\n\n zone._set(link);\n\n zone.name = names[name];\n return zone;\n }\n\n return null;\n }\n\n function getNames() {\n var i,\n out = [];\n\n for (i in names) {\n if (names.hasOwnProperty(i) && (zones[i] || zones[links[i]]) && names[i]) {\n out.push(names[i]);\n }\n }\n\n return out.sort();\n }\n\n function getCountryNames() {\n return Object.keys(countries);\n }\n\n function addLink(aliases) {\n var i, alias, normal0, normal1;\n\n if (typeof aliases === \"string\") {\n aliases = [aliases];\n }\n\n for (i = 0; i < aliases.length; i++) {\n alias = aliases[i].split('|');\n normal0 = normalizeName(alias[0]);\n normal1 = normalizeName(alias[1]);\n links[normal0] = normal1;\n names[normal0] = alias[0];\n links[normal1] = normal0;\n names[normal1] = alias[1];\n }\n }\n\n function addCountries(data) {\n var i, country_code, country_zones, split;\n if (!data || !data.length) return;\n\n for (i = 0; i < data.length; i++) {\n split = data[i].split('|');\n country_code = split[0].toUpperCase();\n country_zones = split[1].split(' ');\n countries[country_code] = new Country(country_code, country_zones);\n }\n }\n\n function getCountry(name) {\n name = name.toUpperCase();\n return countries[name] || null;\n }\n\n function zonesForCountry(country, with_offset) {\n country = getCountry(country);\n if (!country) return null;\n var zones = country.zones.sort();\n\n if (with_offset) {\n return zones.map(function (zone_name) {\n var zone = getZone(zone_name);\n return {\n name: zone_name,\n offset: zone.utcOffset(new Date())\n };\n });\n }\n\n return zones;\n }\n\n function loadData(data) {\n addZone(data.zones);\n addLink(data.links);\n addCountries(data.countries);\n tz.dataVersion = data.version;\n }\n\n function zoneExists(name) {\n if (!zoneExists.didShowError) {\n zoneExists.didShowError = true;\n logError(\"moment.tz.zoneExists('\" + name + \"') has been deprecated in favor of !moment.tz.zone('\" + name + \"')\");\n }\n\n return !!getZone(name);\n }\n\n function needsOffset(m) {\n var isUnixTimestamp = m._f === 'X' || m._f === 'x';\n return !!(m._a && m._tzm === undefined && !isUnixTimestamp);\n }\n\n function logError(message) {\n if (typeof console !== 'undefined' && typeof console.error === 'function') {\n console.error(message);\n }\n }\n /************************************\n \tmoment.tz namespace\n ************************************/\n\n\n function tz(input) {\n var args = Array.prototype.slice.call(arguments, 0, -1),\n name = arguments[arguments.length - 1],\n zone = getZone(name),\n out = moment.utc.apply(null, args);\n\n if (zone && !moment.isMoment(input) && needsOffset(out)) {\n out.add(zone.parse(out), 'minutes');\n }\n\n out.tz(name);\n return out;\n }\n\n tz.version = VERSION;\n tz.dataVersion = '';\n tz._zones = zones;\n tz._links = links;\n tz._names = names;\n tz._countries = countries;\n tz.add = addZone;\n tz.link = addLink;\n tz.load = loadData;\n tz.zone = getZone;\n tz.zoneExists = zoneExists; // deprecated in 0.1.0\n\n tz.guess = guess;\n tz.names = getNames;\n tz.Zone = Zone;\n tz.unpack = unpack;\n tz.unpackBase60 = unpackBase60;\n tz.needsOffset = needsOffset;\n tz.moveInvalidForward = true;\n tz.moveAmbiguousForward = false;\n tz.countries = getCountryNames;\n tz.zonesForCountry = zonesForCountry;\n /************************************\n \tInterface with Moment.js\n ************************************/\n\n var fn = moment.fn;\n moment.tz = tz;\n moment.defaultZone = null;\n\n moment.updateOffset = function (mom, keepTime) {\n var zone = moment.defaultZone,\n offset;\n\n if (mom._z === undefined) {\n if (zone && needsOffset(mom) && !mom._isUTC) {\n mom._d = moment.utc(mom._a)._d;\n mom.utc().add(zone.parse(mom), 'minutes');\n }\n\n mom._z = zone;\n }\n\n if (mom._z) {\n offset = mom._z.utcOffset(mom);\n\n if (Math.abs(offset) < 16) {\n offset = offset / 60;\n }\n\n if (mom.utcOffset !== undefined) {\n var z = mom._z;\n mom.utcOffset(-offset, keepTime);\n mom._z = z;\n } else {\n mom.zone(offset, keepTime);\n }\n }\n };\n\n fn.tz = function (name, keepTime) {\n if (name) {\n if (typeof name !== 'string') {\n throw new Error('Time zone name must be a string, got ' + name + ' [' + typeof name + ']');\n }\n\n this._z = getZone(name);\n\n if (this._z) {\n moment.updateOffset(this, keepTime);\n } else {\n logError(\"Moment Timezone has no data for \" + name + \". See http://momentjs.com/timezone/docs/#/data-loading/.\");\n }\n\n return this;\n }\n\n if (this._z) {\n return this._z.name;\n }\n };\n\n function abbrWrap(old) {\n return function () {\n if (this._z) {\n return this._z.abbr(this);\n }\n\n return old.call(this);\n };\n }\n\n function resetZoneWrap(old) {\n return function () {\n this._z = null;\n return old.apply(this, arguments);\n };\n }\n\n function resetZoneWrap2(old) {\n return function () {\n if (arguments.length > 0) this._z = null;\n return old.apply(this, arguments);\n };\n }\n\n fn.zoneName = abbrWrap(fn.zoneName);\n fn.zoneAbbr = abbrWrap(fn.zoneAbbr);\n fn.utc = resetZoneWrap(fn.utc);\n fn.local = resetZoneWrap(fn.local);\n fn.utcOffset = resetZoneWrap2(fn.utcOffset);\n\n moment.tz.setDefault = function (name) {\n if (major < 2 || major === 2 && minor < 9) {\n logError('Moment Timezone setDefault() requires Moment.js >= 2.9.0. You are using Moment.js ' + moment.version + '.');\n }\n\n moment.defaultZone = name ? getZone(name) : null;\n return moment;\n }; // Cloning a moment should include the _z property.\n\n\n var momentProperties = moment.momentProperties;\n\n if (Object.prototype.toString.call(momentProperties) === '[object Array]') {\n // moment 2.8.1+\n momentProperties.push('_z');\n momentProperties.push('_a');\n } else if (momentProperties) {\n // moment 2.7.0\n momentProperties._z = null;\n } // INJECT DATA\n\n\n return moment;\n});","module.exports = function (module) {\n if (!module.webpackPolyfill) {\n module.deprecate = function () {};\n\n module.paths = []; // module.parent = undefined by default\n\n if (!module.children) module.children = [];\n Object.defineProperty(module, \"loaded\", {\n enumerable: true,\n get: function () {\n return module.l;\n }\n });\n Object.defineProperty(module, \"id\", {\n enumerable: true,\n get: function () {\n return module.i;\n }\n });\n module.webpackPolyfill = 1;\n }\n\n return module;\n};","var map = {\n\t\"./af\": 60,\n\t\"./af.js\": 60,\n\t\"./ar\": 61,\n\t\"./ar-dz\": 62,\n\t\"./ar-dz.js\": 62,\n\t\"./ar-kw\": 63,\n\t\"./ar-kw.js\": 63,\n\t\"./ar-ly\": 64,\n\t\"./ar-ly.js\": 64,\n\t\"./ar-ma\": 65,\n\t\"./ar-ma.js\": 65,\n\t\"./ar-sa\": 66,\n\t\"./ar-sa.js\": 66,\n\t\"./ar-tn\": 67,\n\t\"./ar-tn.js\": 67,\n\t\"./ar.js\": 61,\n\t\"./az\": 68,\n\t\"./az.js\": 68,\n\t\"./be\": 69,\n\t\"./be.js\": 69,\n\t\"./bg\": 70,\n\t\"./bg.js\": 70,\n\t\"./bm\": 71,\n\t\"./bm.js\": 71,\n\t\"./bn\": 72,\n\t\"./bn-bd\": 73,\n\t\"./bn-bd.js\": 73,\n\t\"./bn.js\": 72,\n\t\"./bo\": 74,\n\t\"./bo.js\": 74,\n\t\"./br\": 75,\n\t\"./br.js\": 75,\n\t\"./bs\": 76,\n\t\"./bs.js\": 76,\n\t\"./ca\": 77,\n\t\"./ca.js\": 77,\n\t\"./cs\": 39,\n\t\"./cs.js\": 39,\n\t\"./cv\": 78,\n\t\"./cv.js\": 78,\n\t\"./cy\": 79,\n\t\"./cy.js\": 79,\n\t\"./da\": 80,\n\t\"./da.js\": 80,\n\t\"./de\": 40,\n\t\"./de-at\": 81,\n\t\"./de-at.js\": 81,\n\t\"./de-ch\": 82,\n\t\"./de-ch.js\": 82,\n\t\"./de.js\": 40,\n\t\"./dv\": 83,\n\t\"./dv.js\": 83,\n\t\"./el\": 41,\n\t\"./el.js\": 41,\n\t\"./en-au\": 84,\n\t\"./en-au.js\": 84,\n\t\"./en-ca\": 85,\n\t\"./en-ca.js\": 85,\n\t\"./en-gb\": 42,\n\t\"./en-gb.js\": 42,\n\t\"./en-ie\": 86,\n\t\"./en-ie.js\": 86,\n\t\"./en-il\": 87,\n\t\"./en-il.js\": 87,\n\t\"./en-in\": 88,\n\t\"./en-in.js\": 88,\n\t\"./en-nz\": 89,\n\t\"./en-nz.js\": 89,\n\t\"./en-sg\": 90,\n\t\"./en-sg.js\": 90,\n\t\"./eo\": 91,\n\t\"./eo.js\": 91,\n\t\"./es\": 43,\n\t\"./es-do\": 92,\n\t\"./es-do.js\": 92,\n\t\"./es-mx\": 93,\n\t\"./es-mx.js\": 93,\n\t\"./es-us\": 94,\n\t\"./es-us.js\": 94,\n\t\"./es.js\": 43,\n\t\"./et\": 95,\n\t\"./et.js\": 95,\n\t\"./eu\": 96,\n\t\"./eu.js\": 96,\n\t\"./fa\": 97,\n\t\"./fa.js\": 97,\n\t\"./fi\": 98,\n\t\"./fi.js\": 98,\n\t\"./fil\": 99,\n\t\"./fil.js\": 99,\n\t\"./fo\": 100,\n\t\"./fo.js\": 100,\n\t\"./fr\": 44,\n\t\"./fr-ca\": 101,\n\t\"./fr-ca.js\": 101,\n\t\"./fr-ch\": 102,\n\t\"./fr-ch.js\": 102,\n\t\"./fr.js\": 44,\n\t\"./fy\": 103,\n\t\"./fy.js\": 103,\n\t\"./ga\": 104,\n\t\"./ga.js\": 104,\n\t\"./gd\": 105,\n\t\"./gd.js\": 105,\n\t\"./gl\": 106,\n\t\"./gl.js\": 106,\n\t\"./gom-deva\": 107,\n\t\"./gom-deva.js\": 107,\n\t\"./gom-latn\": 108,\n\t\"./gom-latn.js\": 108,\n\t\"./gu\": 109,\n\t\"./gu.js\": 109,\n\t\"./he\": 110,\n\t\"./he.js\": 110,\n\t\"./hi\": 111,\n\t\"./hi.js\": 111,\n\t\"./hr\": 112,\n\t\"./hr.js\": 112,\n\t\"./hu\": 113,\n\t\"./hu.js\": 113,\n\t\"./hy-am\": 114,\n\t\"./hy-am.js\": 114,\n\t\"./id\": 115,\n\t\"./id.js\": 115,\n\t\"./is\": 116,\n\t\"./is.js\": 116,\n\t\"./it\": 45,\n\t\"./it-ch\": 117,\n\t\"./it-ch.js\": 117,\n\t\"./it.js\": 45,\n\t\"./ja\": 118,\n\t\"./ja.js\": 118,\n\t\"./jv\": 119,\n\t\"./jv.js\": 119,\n\t\"./ka\": 120,\n\t\"./ka.js\": 120,\n\t\"./kk\": 121,\n\t\"./kk.js\": 121,\n\t\"./km\": 122,\n\t\"./km.js\": 122,\n\t\"./kn\": 123,\n\t\"./kn.js\": 123,\n\t\"./ko\": 124,\n\t\"./ko.js\": 124,\n\t\"./ku\": 125,\n\t\"./ku.js\": 125,\n\t\"./ky\": 126,\n\t\"./ky.js\": 126,\n\t\"./lb\": 127,\n\t\"./lb.js\": 127,\n\t\"./lo\": 128,\n\t\"./lo.js\": 128,\n\t\"./lt\": 129,\n\t\"./lt.js\": 129,\n\t\"./lv\": 130,\n\t\"./lv.js\": 130,\n\t\"./me\": 131,\n\t\"./me.js\": 131,\n\t\"./mi\": 132,\n\t\"./mi.js\": 132,\n\t\"./mk\": 133,\n\t\"./mk.js\": 133,\n\t\"./ml\": 134,\n\t\"./ml.js\": 134,\n\t\"./mn\": 135,\n\t\"./mn.js\": 135,\n\t\"./mr\": 136,\n\t\"./mr.js\": 136,\n\t\"./ms\": 137,\n\t\"./ms-my\": 138,\n\t\"./ms-my.js\": 138,\n\t\"./ms.js\": 137,\n\t\"./mt\": 139,\n\t\"./mt.js\": 139,\n\t\"./my\": 140,\n\t\"./my.js\": 140,\n\t\"./nb\": 141,\n\t\"./nb.js\": 141,\n\t\"./ne\": 142,\n\t\"./ne.js\": 142,\n\t\"./nl\": 46,\n\t\"./nl-be\": 143,\n\t\"./nl-be.js\": 143,\n\t\"./nl.js\": 46,\n\t\"./nn\": 144,\n\t\"./nn.js\": 144,\n\t\"./oc-lnc\": 145,\n\t\"./oc-lnc.js\": 145,\n\t\"./pa-in\": 146,\n\t\"./pa-in.js\": 146,\n\t\"./pl\": 47,\n\t\"./pl.js\": 47,\n\t\"./pt\": 48,\n\t\"./pt-br\": 147,\n\t\"./pt-br.js\": 147,\n\t\"./pt.js\": 48,\n\t\"./ro\": 148,\n\t\"./ro.js\": 148,\n\t\"./ru\": 149,\n\t\"./ru.js\": 149,\n\t\"./sd\": 150,\n\t\"./sd.js\": 150,\n\t\"./se\": 151,\n\t\"./se.js\": 151,\n\t\"./si\": 152,\n\t\"./si.js\": 152,\n\t\"./sk\": 153,\n\t\"./sk.js\": 153,\n\t\"./sl\": 154,\n\t\"./sl.js\": 154,\n\t\"./sq\": 155,\n\t\"./sq.js\": 155,\n\t\"./sr\": 156,\n\t\"./sr-cyrl\": 157,\n\t\"./sr-cyrl.js\": 157,\n\t\"./sr.js\": 156,\n\t\"./ss\": 158,\n\t\"./ss.js\": 158,\n\t\"./sv\": 159,\n\t\"./sv.js\": 159,\n\t\"./sw\": 160,\n\t\"./sw.js\": 160,\n\t\"./ta\": 161,\n\t\"./ta.js\": 161,\n\t\"./te\": 162,\n\t\"./te.js\": 162,\n\t\"./tet\": 163,\n\t\"./tet.js\": 163,\n\t\"./tg\": 164,\n\t\"./tg.js\": 164,\n\t\"./th\": 165,\n\t\"./th.js\": 165,\n\t\"./tk\": 166,\n\t\"./tk.js\": 166,\n\t\"./tl-ph\": 167,\n\t\"./tl-ph.js\": 167,\n\t\"./tlh\": 168,\n\t\"./tlh.js\": 168,\n\t\"./tr\": 49,\n\t\"./tr.js\": 49,\n\t\"./tzl\": 169,\n\t\"./tzl.js\": 169,\n\t\"./tzm\": 170,\n\t\"./tzm-latn\": 171,\n\t\"./tzm-latn.js\": 171,\n\t\"./tzm.js\": 170,\n\t\"./ug-cn\": 172,\n\t\"./ug-cn.js\": 172,\n\t\"./uk\": 173,\n\t\"./uk.js\": 173,\n\t\"./ur\": 174,\n\t\"./ur.js\": 174,\n\t\"./uz\": 175,\n\t\"./uz-latn\": 176,\n\t\"./uz-latn.js\": 176,\n\t\"./uz.js\": 175,\n\t\"./vi\": 177,\n\t\"./vi.js\": 177,\n\t\"./x-pseudo\": 178,\n\t\"./x-pseudo.js\": 178,\n\t\"./yo\": 179,\n\t\"./yo.js\": 179,\n\t\"./zh-cn\": 180,\n\t\"./zh-cn.js\": 180,\n\t\"./zh-hk\": 181,\n\t\"./zh-hk.js\": 181,\n\t\"./zh-mo\": 182,\n\t\"./zh-mo.js\": 182,\n\t\"./zh-tw\": 183,\n\t\"./zh-tw.js\": 183\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 230;","import { Controller } from \"@hotwired/stimulus\"\nconst debounce = require(\"lodash.debounce\")\n\nconst ALWAYS_VISIBLE_OPTIONS_LIMIT = 25\nconst MAX_VISIBLE_OPTIONS_DEFAULT = 4\n\nexport default class extends Controller {\n static classes = [\"dropdownVisible\", \"optionHidden\", \"optionsHidden\", \"optionHighlighted\"]\n static targets = [\"action\", \"dropdown\", \"input\", \"option\", \"options\", \"optionTemplate\"]\n static values = {\n attribute: String,\n maxVisibleOptions: Number,\n minInputLengthToShowOptions: Number,\n optionsFetchError: String,\n url: String\n }\n\n initialize() {\n // Need to add debounce since we use this component with data containing 1000s\n // or even 10s of thousands of options. In such cases, filterAndShowOptions\n // becomes the bottleneck as it has to loop through all those options in\n // case the match is not found, ON EVERY KEYSTROKE.\n this.filterAndShowOptions = debounce(this.filterAndShowOptions, 200).bind(this)\n }\n\n connect() {\n this.maxVisibleOptionsValue = this.maxVisibleOptionsValue || MAX_VISIBLE_OPTIONS_DEFAULT\n this.optionsData = []\n if (this.hasUrlValue) {\n fetch(this.urlValue)\n .then(response => {\n // Since this is never going to be a user error, we'll show a predefined error\n if (!response.ok) {\n throw new Error(response)\n }\n return response.json()\n })\n .then((data) => {\n this.optionsData = data\n // We've had to save this as separate data for performance reasons.\n this.optionsDataNormalised = data.map(value => global.helpers.comparableString(value))\n\n // create options\n for (let i = 0; i < this.maxVisibleOptionsValue && i < this.optionsData.length; i++) {\n const optionNode = this.optionTemplateTarget.content.firstElementChild.cloneNode(true)\n this.optionsTarget.appendChild(optionNode)\n }\n // If the input is focused, we need to show the options\n if (document.activeElement == this.inputTarget) {\n this.filterAndShowOptions({ target: this.inputTarget })\n }\n }).catch((error) => {\n this.showOptionsFetchError()\n console.log(error)\n\n // If the input is focused, and we have an action\n if (document.activeElement == this.inputTarget && this.hasActionTarget) {\n this.filterAndShowOptions({ target: this.inputTarget })\n }\n })\n }\n }\n\n dismissOptions(event) {\n if (event && event.target == this.inputTarget) {\n // This is to prevent dismissing the options when the user clicks on the input\n return\n }\n\n this.visibleOptions.forEach((option) => {\n option.classList.remove(this.optionHighlightedClass)\n option.classList.add(this.optionHiddenClass)\n })\n this.dropdownTarget.classList.remove(this.dropdownVisibleClass)\n }\n\n filterAndShowOptions(event) {\n const hasOptions = this.optionsData.length !== 0\n let visible = 0\n const text = global.helpers.comparableString(event.target.value)\n const matchFound = this.optionsDataNormalised.includes(text)\n\n if (hasOptions) {\n for (const option of this.optionTargets) {\n option.classList.add(this.optionHiddenClass)\n option.classList.remove(this.optionHighlightedClass)\n }\n\n let showOptions = false\n\n if (!matchFound) {\n // When not set, this value's nil value gets converted to NaN in javascript.\n if (this.hasMinInputLengthToShowOptionsValue && !Number.isNaN(this.minInputLengthToShowOptionsValue)) {\n showOptions = text.length >= this.minInputLengthToShowOptionsValue\n // This else clause is to ensure existing functionality works.\n } else {\n // Can extract this thing out into an option on the component, but for now we want it to always\n // happen so keeping it here.\n const showOptionsIfNotMany = this.optionsData.length < ALWAYS_VISIBLE_OPTIONS_LIMIT || text.length > 0\n showOptions = showOptionsIfNotMany\n }\n }\n\n if (showOptions) {\n let optionIndex = 0\n for (let i = 0; i < this.optionsData.length; i++) {\n if (optionIndex >= this.optionTargets.length) break\n\n const valueLowerCase = this.optionsDataNormalised[i]\n if (!valueLowerCase.includes(text)) continue\n\n const option = this.optionTargets[optionIndex]\n if (optionIndex === 0) {\n option.classList.add(this.optionHighlightedClass)\n }\n\n const value = this.optionsData[i]\n option.innerText = value\n option.classList.remove(this.optionHiddenClass)\n visible += 1\n optionIndex += 1\n }\n }\n }\n\n if (visible === 0) {\n this.optionsTarget.classList.add(this.optionsHiddenClass)\n } else {\n this.optionsTarget.classList.remove(this.optionsHiddenClass)\n }\n\n // if action exists, show dropdown unless an option is selected\n if (visible === 0 && (!this.hasActionTarget || matchFound)) {\n this.dropdownTarget.classList.remove(this.dropdownVisibleClass)\n } else {\n this.dropdownTarget.classList.add(this.dropdownVisibleClass)\n this.shiftOptionsPosition()\n }\n }\n\n navigateOptions(event) {\n const { upKey, downKey, enterKey } = global.helpers.keyCodes\n\n if (event.keyCode !== upKey && event.keyCode !== downKey && event.keyCode !== enterKey) {\n return\n }\n\n const visibleOptions = this.visibleOptions\n\n // No visible options, submit the form on press of enter\n if (visibleOptions.length === 0) {\n if (event.keyCode == enterKey) {\n // Otherwise on pressing enter, the default action of textarea occurs, which adds\n // a newline.\n event.preventDefault()\n\n this.submitForm(event.target.form)\n }\n return\n }\n\n const currentOptionIndex = visibleOptions.findIndex((option) => {\n return option.classList.contains(this.optionHighlightedClass)\n })\n\n event.preventDefault()\n\n let nextOptionIndex = currentOptionIndex\n switch (event.keyCode) {\n case upKey:\n if (currentOptionIndex == 0) {\n return\n }\n nextOptionIndex = currentOptionIndex - 1\n break\n case downKey:\n if (currentOptionIndex == visibleOptions.length - 1) {\n return\n }\n nextOptionIndex = currentOptionIndex + 1\n break\n case enterKey:\n visibleOptions[currentOptionIndex].click()\n return\n }\n\n visibleOptions[currentOptionIndex].classList.remove(this.optionHighlightedClass)\n this.highlightNewOption(nextOptionIndex, visibleOptions)\n }\n\n highlight(event) {\n const visibleOptions = this.visibleOptions\n\n const currentOption = visibleOptions.find((option) => option.classList.contains(this.optionHighlightedClass))\n currentOption.classList.remove(this.optionHighlightedClass)\n\n this.highlightNewOption(visibleOptions.indexOf(event.target), visibleOptions)\n }\n\n pick(event) {\n this.inputTarget.value = event.target.innerText.trim()\n this.dismissOptions()\n }\n\n showOptionsFetchError() {\n this.recordEditorController.submit({ detail: [this.optionsFetchErrorData, null, null] })\n }\n\n // visibleOptions is passed for performance reasons\n highlightNewOption(nextOptionIndex, visibleOptions) {\n if (nextOptionIndex < 0 || nextOptionIndex >= visibleOptions.length) {\n return\n }\n\n visibleOptions[nextOptionIndex].classList.add(this.optionHighlightedClass)\n global.helpers.scrollToOption(visibleOptions[nextOptionIndex], this.optionsTarget)\n }\n\n shiftOptionsPosition() {\n if (!this.dropdownTarget.classList.contains(this.dropdownVisibleClass)) {\n return\n }\n\n const { top: inputTop, bottom: inputBottom } = this.inputTarget.getBoundingClientRect()\n const optionsHeight = this.dropdownTarget.clientHeight\n\n const notEnoughSpaceAbove = inputTop - optionsHeight < 0\n const noCutoffBelow = inputBottom + optionsHeight < window.innerHeight\n if (notEnoughSpaceAbove || noCutoffBelow) {\n this.dropdownTarget.style.bottom = null\n } else if (!this.dropdownTarget.style.bottom) { // If it should show on top of the input but doesn't\n const formFieldHeight = this.formFieldElement.clientHeight\n this.dropdownTarget.style.bottom = `${formFieldHeight}px`\n }\n }\n\n submitForm(form) {\n // add-barber--services controller has the reasoning behind this.\n const submitButton = form.querySelector(\"button[type=\\\"submit\\\"]\")\n if (submitButton) {\n submitButton.click()\n } else if (form.requestSubmit) {\n form.requestSubmit()\n } else {\n form.submit()\n }\n }\n\n get visibleOptions() {\n return this.optionTargets.filter((option) => !option.classList.contains(this.optionHiddenClass))\n }\n\n get recordEditorController() {\n return global.application.getControllerForElementAndIdentifier(\n this.element.closest(\".record-editor\"), \"record-editor\"\n )\n }\n\n get optionsFetchErrorData() {\n return { errors: { [this.attributeValue]: [this.optionsFetchErrorValue] } }\n }\n\n get formFieldElement() {\n return this.element.closest(\".form-field\")\n }\n}\n","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n/** Used as references for various `Number` constants. */\n\nvar NAN = 0 / 0;\n/** `Object#toString` result references. */\n\nvar symbolTag = '[object Symbol]';\n/** Used to match leading and trailing whitespace. */\n\nvar reTrim = /^\\s+|\\s+$/g;\n/** Used to detect bad signed hexadecimal string values. */\n\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n/** Used to detect binary string values. */\n\nvar reIsBinary = /^0b[01]+$/i;\n/** Used to detect octal string values. */\n\nvar reIsOctal = /^0o[0-7]+$/i;\n/** Built-in method references without a dependency on `root`. */\n\nvar freeParseInt = parseInt;\n/** Detect free variable `global` from Node.js. */\n\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n/** Detect free variable `self`. */\n\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n/** Used as a reference to the global object. */\n\nvar root = freeGlobal || freeSelf || Function('return this')();\n/** Used for built-in method references. */\n\nvar objectProto = Object.prototype;\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n\nvar objectToString = objectProto.toString;\n/* Built-in method references for those with the same name as other `lodash` methods. */\n\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\n\nvar now = function () {\n return root.Date.now();\n};\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\n\n\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n\n wait = toNumber(wait) || 0;\n\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time; // Start the timer for the trailing edge.\n\n timerId = setTimeout(timerExpired, wait); // Invoke the leading edge.\n\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n result = wait - timeSinceLastCall;\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime; // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n\n return lastCallTime === undefined || timeSinceLastCall >= wait || timeSinceLastCall < 0 || maxing && timeSinceLastInvoke >= maxWait;\n }\n\n function timerExpired() {\n var time = now();\n\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n } // Restart the timer.\n\n\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined; // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n\n return result;\n }\n\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\n\n\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\n\n\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\n\n\nfunction isSymbol(value) {\n return typeof value == 'symbol' || isObjectLike(value) && objectToString.call(value) == symbolTag;\n}\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\n\n\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n\n if (isSymbol(value)) {\n return NAN;\n }\n\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? other + '' : other;\n }\n\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return isBinary || reIsOctal.test(value) ? freeParseInt(value.slice(2), isBinary ? 2 : 8) : reIsBadHex.test(value) ? NAN : +value;\n}\n\nmodule.exports = debounce;","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\n \"addressField\",\n \"city\",\n \"state\",\n \"zip\",\n \"line1\",\n \"line2\",\n \"manualAddress\",\n \"googleAddress\",\n \"googleAddressButton\",\n \"manualAddressButton\"\n ]\n static values = { countryCode: String }\n\n connect() {\n this.handleInitMap()\n\n // Refocus the address field make sure pac-container is placed correctly\n setTimeout(() => {\n this.addressFieldTarget.blur()\n this.addressFieldTarget.focus()\n }, 500)\n }\n\n placePacContainer(e) {\n e.currentTarget.parentNode.insertBefore(\n document.querySelector(\".pac-container\"),\n e.currentTarget.nextSibling\n )\n }\n\n handleInitMap() {\n const country = {\n componentRestrictions: { country: this.countryCodeValue },\n }\n this.autocomplete = new google.maps.places.Autocomplete(\n this.addressFieldTarget,\n country\n )\n\n this.autocomplete.setTypes([\"address\"])\n\n this.autocomplete.addListener(\n \"place_changed\",\n this.placeChanged.bind(this)\n )\n }\n\n placeChanged() {\n const place = this.autocomplete.getPlace()\n const line2Components = [\"premise\", \"subpremise\"]\n\n this.line1Target.value = place.name\n this.line2Target.value = line2Components.map((type) => ( place.address_components.find((c) => c.types.includes(type))?.long_name || \"\")).filter(Boolean)\n this.cityTarget.value = place.address_components.find((c) => (c.types.includes(\"locality\") || c.types.includes(\"postal_town\")))?.long_name || \"\"\n this.stateTarget.value = place.address_components.find((c) => (c.types.includes(\"administrative_area_level_2\") || c.types.includes(\"administrative_area_level_1\")))?.long_name || \"\"\n this.zipTarget.value = place.address_components.find((c) => c.types.includes(\"postal_code\"))?.long_name || \"\"\n }\n\n toggleAddressFields(e) {\n e.preventDefault()\n\n const isManualAddressHidden = this.manualAddressTarget.classList.contains(\"hide\")\n\n this.manualAddressTarget.classList.toggle(\"hide\", !isManualAddressHidden)\n this.googleAddressTarget.classList.toggle(\"hide\", isManualAddressHidden)\n this.googleAddressButtonTarget.classList.toggle(\"button--hide\", !isManualAddressHidden)\n this.manualAddressButtonTarget.classList.toggle(\"button--hide\", isManualAddressHidden)\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"counter\"]\n static values = {\n id: String,\n counter: Number\n }\n\n initialize() {\n this.counter = this.counterValue || 0\n }\n\n handleChange(event) {\n const { count, targetId } = event.detail\n\n if (targetId !== this.idValue) return\n\n this.counter = count\n }\n\n render() {\n this.counterTarget.innerText = this.formattedCounter\n this.element.style.display = this.counter === 0 ? \"none\" : \"block\"\n }\n\n set counter(value) {\n this._counter = value\n\n this.render()\n }\n\n get counter() {\n return this._counter\n }\n\n get formattedCounter() {\n if (this.counter === 0) {\n return \"\"\n }\n\n if (this.counter > 99) {\n return \"99+\"\n }\n\n return this.counter\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\n \"item\",\n \"timepickerWrapper\",\n \"breakPanel\",\n \"togglePanel\",\n\n \"workFrom\",\n \"workTill\",\n\n \"breakFrom\",\n \"breakTill\",\n ]\n\n static values = {\n open: Boolean,\n hasBreak: Boolean,\n\n allowBreaks: Boolean,\n\n openClass: String,\n hiddenClass: String,\n }\n\n connect() {\n if (this.openValue) {\n this.enableDay()\n\n if (this.hasBreakValue) {\n this.showBrakePanel()\n }\n } else {\n this.disableDay()\n }\n }\n\n toggleOpen() {\n if (this.openValue) {\n this.disableDay()\n this.openValue = false\n } else {\n this.enableDay()\n this.openValue = true\n }\n }\n\n hide(el) {\n el.classList.add(this.hiddenClassValue)\n }\n\n show(el) {\n el.classList.remove(this.hiddenClassValue)\n }\n\n enableDay() {\n this.itemTarget.classList.add(this.openClassValue)\n\n this.timepickerWrapperTargets.forEach(el => {\n this.show(el)\n })\n\n if (this.allowBreaksValue) {\n this.show(this.togglePanelTarget)\n }\n }\n\n disableDay() {\n this.itemTarget.classList.remove(this.openClassValue)\n\n this.timepickerWrapperTargets.forEach(el => {\n this.hide(el)\n })\n\n if (this.allowBreaksValue) {\n this.hide(this.togglePanelTarget)\n }\n\n if (this.hasBreakPanelTarget) {\n this.hide(this.breakPanelTarget)\n }\n }\n\n showBrakePanel(event) {\n if (event) event.preventDefault()\n\n if (this.hasTogglePanelTarget) { this.hide(this.togglePanelTarget) }\n this.show(this.breakPanelTarget)\n this.hasBreakValue = true\n }\n\n hideBrakePanel(event) {\n if (event) event.preventDefault()\n\n if (this.hasTogglePanelTarget) { this.show(this.togglePanelTarget) }\n this.hide(this.breakPanelTarget)\n this.hasBreakValue = false\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\n \"day\",\n \"summaryInput\"\n ]\n\n static values = {\n allowBreaks: Boolean\n }\n\n connect() {\n this.extractSummary()\n }\n\n extractSummary() {\n const summary = []\n\n this.dayTargets.forEach(el => {\n const dayPanel = el.querySelector(\"div.business-day-panel__day\")\n const data = {\n \"day\": dayPanel.dataset.dayName,\n \"id\": dayPanel.dataset.id,\n \"isActive\": el.querySelector(\"input[type=\\\"checkbox\\\"\").checked,\n \"timeFrom\": el.querySelector(\"input.work_from\").value || null,\n \"timeTill\": el.querySelector(\"input.work_till\").value || null,\n }\n\n if (this.allowBreaksValue) {\n data[\"has_lunch_break\"] = el.dataset.businessDayHasBreakValue\n data[\"lunch_break_starts_at\"] = el.querySelector(\"input.break_from\").value\n data[\"lunch_break_finishes_at\"] = el.querySelector(\"input.break_till\").value\n }\n\n summary.push(data)\n })\n\n this.summaryInputTarget.value = JSON.stringify(summary)\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\nimport * as chrono from \"chrono-node\"\nimport CalendarDataSource from \"models/calendar_data_source\"\n\nexport default class extends Controller {\n static targets = [\n \"datePickerSheet\",\n \"datePickerDropdownDismissButton\",\n \"dayColumnHeaderTemplate\",\n \"dayColumnBodyTemplate\",\n \"dayColumnBody\",\n \"dayColumnBodyContent\",\n \"dayticker\",\n \"daytickerColumnTemplate\",\n \"pagination\",\n \"timescaleTickTemplate\",\n \"currentTimeIndicatorTickTemplate\",\n \"currentTimeIndicatorLabelTemplate\",\n \"currentTimeIndicatorTick\",\n \"currentTimeIndicatorLabel\",\n \"previousSection\",\n \"previousSectionHeader\",\n \"previousSectionBody\",\n \"currentSection\",\n \"currentSectionHeader\",\n \"currentSectionBody\",\n \"nextSection\",\n \"nextSectionHeader\",\n \"nextSectionBody\",\n \"content\",\n \"previousButton\",\n \"todayButton\",\n \"nextButton\",\n \"toggleDatePickerDropdown\",\n \"datePicker\",\n \"sectionScrollers\",\n ]\n\n static values = {\n date: String,\n days: Number,\n page: Number,\n verticalScale: Number,\n forcedScrolling: Boolean,\n timeScale: Number,\n scrollToTime: String,\n scrollToTimeOffset: Number\n }\n\n renderer = {\n set: (target, property, value) => {\n target[property] = value\n\n if (property === \"clockType\") {\n this.renderer.adaptTimescaleLabelsToClockType()\n }\n\n if (property === \"days\") {\n this.renderer.updateViewTypeClass()\n }\n\n if (property === \"page\") {\n this.renderer.layoutSectionHeaders()\n this.renderer.layoutSectionBodies()\n this.renderer.layoutDayticker()\n this.renderer.layoutDatePicker()\n this.renderer.formatDatePickerToggleText()\n this.renderer.toggleCurrentTimeIndicator()\n }\n\n if (property === \"scrollbarWidth\") {\n this.renderer.adaptToScrollbarWidth()\n }\n\n if (property == \"timeScale\") {\n this.renderer.layoutTimescale()\n this.renderer.toggleCurrentTimeIndicator()\n }\n\n if (property == \"verticalScale\") {\n this.renderer.layoutTimescale()\n this.renderer.toggleCurrentTimeIndicator()\n this.renderer.adjustSectionBodiesHeight()\n }\n\n if (property === \"needsDayticker\") {\n this.renderer.toggleDayticker()\n }\n\n if (property === \"scrollable\") {\n this.renderer.toggleScrollability()\n }\n\n if (property === \"isScrollingHorizontally\") {\n this.renderer.scrollIntoViewHorizontally()\n }\n\n if (property === \"isScrollingVertically\") {\n this.renderer.scrollIntoViewVertically()\n }\n\n if (property === \"canScrollToCurrentTime\") {\n this.renderer.scrollToCurrentTime()\n }\n\n if (property === \"currentTime\") {\n this.renderer.layoutCurrentTimeIndicator()\n }\n\n if (property === \"isSmallViewport\") {\n this.renderer.formatDatePickerToggleText()\n }\n\n return true\n },\n\n toggleScrollability: () => {\n const scrollableClassName = \"calendar--scrollable\"\n\n if (this.state.scrollable) {\n this.element.classList.add(scrollableClassName)\n this.renderer.scrollIntoViewFromTheLeft()\n } else {\n this.element.classList.remove(scrollableClassName)\n }\n },\n\n scrollIntoViewHorizontally: () => {\n this.element.classList.toggle(\"calendar--horizontally-scrolling\", this.state.isScrollingHorizontally)\n\n if (this.state.isScrollingHorizontally) return\n\n if (this.isScrollingReachedTheRLeftSide) {\n this.renderer.scrollIntoViewFromTheLeft()\n } else if (this.isScrollingReachedTheRightSide) {\n this.renderer.scrollIntoViewFromTheRight()\n }\n },\n\n scrollIntoViewVertically: () => {\n const currentScrollTop = this.currentSectionBodyTarget.scrollTop\n\n this.previousSectionBodyTarget.scrollTop = currentScrollTop\n this.nextSectionBodyTarget.scrollTop = currentScrollTop\n },\n\n scrollIntoViewFromTheLeft: () => {\n this.contentTarget.scrollLeft += this.contentTarget.offsetWidth\n },\n\n scrollIntoViewFromTheRight: () => {\n this.contentTarget.scrollLeft -= this.contentTarget.offsetWidth\n },\n\n scrollToTime: ({ animated = false } = {}) => {\n if (this.state.scrolledToTime) return\n\n // Scroll to the initial time set in the `scrollToTime` value.\n // Then store the fact that we scrolled to it already.\n this.renderer.scrollToTimeLabel({ time: this.state.scrollToTime, animated: animated })\n this.state.scrolledToTime = true\n },\n\n scrollToCurrentTime: () => {\n if (!this.state.canScrollToCurrentTime) return\n\n const time = global.moment().startOf(\"hour\").format(\"HH:mm\")\n this.renderer.scrollToTimeLabel({ time: time, animated: true })\n\n this.state.canScrollToCurrentTime = false\n },\n\n scrollToTimeLabel: ({ time = null, animated = false } = {}) => {\n const scrollTop = this.renderer.calculateTimeLabelOffsetTopAdjustment(time)\n\n this.previousSectionBodyTarget.scrollTop = scrollTop\n this.nextSectionBodyTarget.scrollTop = scrollTop\n\n if (animated) {\n this.currentSectionBodyTarget.scrollTo({ top: scrollTop, behavior: \"smooth\" })\n } else {\n this.currentSectionBodyTarget.scrollTop = scrollTop\n }\n },\n\n calculateTimeLabelOffsetTopAdjustment: (time = null) => {\n // Find the percentage of the time compared to 24 hours.\n const [hours, minutes] = time.split(\":\").map(Number)\n const totalMinutes = (hours * 60) + minutes\n const percentage = (totalMinutes / 1440) * 100\n\n // Scroll to the timescale label.\n const offsetTop = percentage / 100\n const sectionHeight = this.currentSectionBodyTarget.offsetHeight * this.state.verticalScale\n const scrollTop = sectionHeight * offsetTop + this.state.offsetTopAdjustment\n\n // Adjust the scrollTop based on the scrollToTimeOffset\n const adjustedScrollTop = scrollTop - this.state.scrollToTimeOffset\n\n return adjustedScrollTop\n },\n\n toggleDayticker: () => {\n this.element.classList.toggle(\"calendar--needs-dayticker\", this.state.needsDayticker)\n },\n\n adjustSectionBodiesHeight: () => {\n if (!this.hasDayColumnBodyContentTarget) return\n\n const height = `${this.renderer.calculateColumnHeight()}%`\n\n this.dayColumnBodyContentTargets.forEach(target => target.style.height = height)\n },\n\n layoutDayLabel: (day, callback = null) => {\n const date = day.moment.format(this.dateFormat)\n const fullDayName = day.moment.format(\"ddd\")\n const dayName = fullDayName.substring(0, 1)\n const dayNumber = day.moment.format(\"D\")\n const columnElement = this.daytickerColumnTemplateTarget.content.firstElementChild.cloneNode(true)\n const titleLabelElement = columnElement.querySelector(\".calendar__day-column-title-label\")\n\n const dayNameElement = document.createElement(\"span\")\n dayNameElement.classList.add(\"calendar__day-column-title-day-name\")\n dayNameElement.dataset.shortName = dayName\n dayNameElement.dataset.fullName = fullDayName\n\n const dayNumberElement = document.createElement(\"span\")\n dayNumberElement.classList.add(\"calendar__day-column-title-day-number\")\n dayNumberElement.textContent = dayNumber\n\n titleLabelElement.innerHTML = \"\"\n titleLabelElement.appendChild(dayNameElement)\n titleLabelElement.appendChild(dayNumberElement)\n titleLabelElement.dataset.date = date\n columnElement.dataset.date = date\n\n columnElement.classList.remove(\"calendar__day-column--today\")\n columnElement.classList.remove(\"calendar__day-column--one-day-before-today\")\n columnElement.classList.remove(\"calendar__day-column--one-day-after-today\")\n\n const isToday = day.moment.isSame(global.moment(), \"day\")\n const isOneDayBeforeToday = day.moment.isSame(global.moment().subtract(1, \"day\"), \"day\")\n const isOneDayAfterToday = day.moment.isSame(global.moment().add(1, \"day\"), \"day\")\n\n if (isToday) columnElement.classList.add(\"calendar__day-column--today\")\n if (isOneDayBeforeToday) columnElement.classList.add(\"calendar__day-column--one-day-before-today\")\n if (isOneDayAfterToday) columnElement.classList.add(\"calendar__day-column--one-day-after-today\")\n\n if (callback) {\n callback(columnElement, day)\n }\n\n return columnElement\n },\n\n layoutSectionHeaders: () => {\n this.renderer.prepareSectionHeaders()\n this.renderer.range().forEach(day => {\n const width = `${this.renderer.calculateColumnWidth()}%`\n const columnElement = this.renderer.layoutDayLabel(day)\n columnElement.style.width = width\n\n this.renderer.sectionHeader(day.section).appendChild(columnElement)\n })\n },\n\n layoutSectionBodies: () => {\n this.renderer.prepareSectionBodies()\n this.renderer.range().forEach(day => {\n const date = day.moment.format(this.dateFormat)\n const width = `${this.renderer.calculateColumnWidth()}%`\n const height = `${this.renderer.calculateColumnHeight()}%`\n const columnElement = this.dayColumnBodyTemplateTarget.content.firstElementChild.cloneNode(true)\n const columnContentElement = columnElement.querySelector(\".calendar__day-column-content\")\n\n columnElement.dataset.date = date\n columnElement.style.width = width\n columnContentElement.dataset.date = date\n columnContentElement.dataset.section = day.section\n columnContentElement.style.height = height\n columnContentElement.dataset.calendarTarget = \"dayColumnBodyContent\"\n\n this.renderer.sectionBody(day.section).appendChild(columnElement)\n })\n\n this.renderer.scrollToTime()\n },\n\n layoutDayticker: () => {\n let currentDate\n\n this.renderer.prepareDayTicker()\n this.renderer.daytickerRange().forEach((day) => {\n currentDate = this.renderer.range().find(day => day.section === \"current\").moment.format(this.dateFormat)\n\n const columnElement = this.renderer.layoutDayLabel(day, (element, day) => {\n element.classList.remove(\"calendar__day-column--current\")\n element.classList.remove(\"calendar__day-column--one-day-before-current\")\n element.classList.remove(\"calendar__day-column--one-day-after-current\")\n\n const isCurrent = day.moment.isSame(currentDate, \"day\")\n const isOneDayBeforeCurrent = day.moment.isSame(global.moment(currentDate).subtract(1, \"day\"), \"day\")\n const isOneDayAfterCurrent = day.moment.isSame(global.moment(currentDate).add(1, \"day\"), \"day\")\n\n if (isCurrent) element.classList.add(\"calendar__day-column--current\")\n if (isOneDayBeforeCurrent) element.classList.add(\"calendar__day-column--one-day-before-current\")\n if (isOneDayAfterCurrent) element.classList.add(\"calendar__day-column--one-day-after-current\")\n })\n\n this.daytickerTarget.appendChild(columnElement)\n })\n },\n\n layoutTimescale: () => {\n const minutesInHour = 60\n const totalMinutesInDay = 24 * minutesInHour\n const intervalsPerDay = totalMinutesInDay / this.state.timeScale\n const percentagePerInterval = (100 / intervalsPerDay)\n const sections = [\"current\", \"previous\", \"next\"]\n\n sections.forEach(section => {\n const sectionBody = this.renderer.sectionBody(section)\n const timescale = sectionBody.querySelector(\".calendar__section-body-timescale\")\n const timescaleTicks = sectionBody.querySelector(\".calendar__section-body-timescale-ticks\")\n const timescaleLabels = sectionBody.querySelector(\".calendar__section-body-timescale-labels\")\n const timescaleIndicators = sectionBody.querySelector(\".calendar__section-body-timescale-indicators\")\n\n timescaleTicks.innerHTML = \"\"\n timescaleLabels.innerHTML = \"\"\n timescaleIndicators.innerHTML = \"\"\n\n for (let interval = 0; interval <= intervalsPerDay; interval++) {\n const isFirstInterval = interval === 0\n const isLastInterval = interval === intervalsPerDay\n const percentage = (interval * percentagePerInterval).toFixed(2)\n const timescaleTick = this.timescaleTickTemplateTarget.content.firstElementChild.cloneNode(true)\n const timescaleLabel = document.createElement(\"span\")\n timescaleLabel.classList.add(\"calendar__section-body-timescale-label\")\n\n const minutesFromMidnight = interval * this.state.timeScale\n const hour = Math.floor(minutesFromMidnight / minutesInHour)\n const minute = minutesFromMidnight % minutesInHour\n const formattedTime = `${hour}:${minute.toString().padStart(2, \"0\")}`\n\n timescaleTick.style.top = `${percentage}%`\n timescaleLabel.style.top = `${percentage}%`\n timescaleLabel.dataset.timescaleLabelTime = formattedTime\n timescaleLabel.innerText = global.moment(formattedTime, \"HH:mm\").format(global.timeFormat)\n\n // Hide the label at midnight.\n if (isFirstInterval || isLastInterval) {\n timescaleLabel.innerText = \"\"\n }\n\n if (isLastInterval) {\n timescaleTick.style.top = \"100%\"\n timescaleLabel.style.top = \"100%\"\n }\n\n // Append the tick and label to the timescale.\n timescaleTicks.appendChild(timescaleTick)\n timescaleLabels.appendChild(timescaleLabel)\n }\n\n timescale.style.height = `${this.renderer.calculateColumnHeight()}%`\n timescaleTicks.style.height = `${this.renderer.calculateColumnHeight()}%`\n timescaleIndicators.style.height = `${this.renderer.calculateColumnHeight()}%`\n\n // Add the time indicator template to the timescale.\n // We need to call toggleCurrentTimeIndicator after layoutTimescale because of this\n const currentTimeIndicatorTick = this.currentTimeIndicatorTickTemplateTarget.content.firstElementChild.cloneNode(true)\n const currentTimeIndicatorLabel = this.currentTimeIndicatorLabelTemplateTarget.content.firstElementChild.cloneNode(true)\n timescaleIndicators.appendChild(currentTimeIndicatorTick)\n timescaleLabels.appendChild(currentTimeIndicatorLabel)\n })\n },\n\n adaptTimescaleLabelsToClockType: () => {\n this.element.classList.toggle(\"calendar--12-hours\", this.state.clockType === \"12_hours\")\n },\n\n layoutCurrentTimeIndicator: () => {\n const [hours, minutes] = this.state.currentTime.split(\":\").map(Number)\n const totalMinutes = (hours * 60) + minutes\n const percentage = ((totalMinutes / 1440) * 100).toFixed(2)\n\n if (this.hasCurrentTimeIndicatorTickTarget) {\n this.currentTimeIndicatorTickTargets.forEach(element => {\n element.style.top = `${percentage}%`\n })\n }\n\n if (this.hasCurrentTimeIndicatorLabelTarget) {\n this.currentTimeIndicatorLabelTargets.forEach(element => {\n element.style.top = `${percentage}%`\n element.innerText = global.moment(this.state.currentTime, \"HH:mm\").format(global.timeFormat)\n })\n }\n },\n\n toggleCurrentTimeIndicator: () => {\n const sections = [\"current\", \"previous\", \"next\"]\n\n sections.forEach(section => {\n const daysForSection = this.renderer.range().filter(day => day.section === section)\n const currentDay = daysForSection.find(day => day.moment.isSame(global.moment(), \"day\"))\n const sectionIncludesToday = currentDay != undefined\n const sectionBody = this.renderer.sectionBody(section)\n const currentTimeIndicator = sectionBody.querySelector(\".calendar__section-body-timescale-tick--current-time-indicator\")\n const currentTimeIndicatorLabel = sectionBody.querySelector(\".calendar__section-body-timescale-label--current-time-indicator\")\n\n currentTimeIndicator.classList.toggle(\"calendar__section-body-timescale-tick--hidden\", !sectionIncludesToday)\n currentTimeIndicatorLabel.classList.toggle(\"calendar__section-body-timescale-label--hidden\", !sectionIncludesToday)\n })\n },\n\n layoutDatePicker: () => {\n const date = this.renderer.dataSource().startDate().format(this.dateFormat)\n const start = this.renderer.dataSource().startDate().format(this.dateFormat)\n const end = this.renderer.dataSource().endDate().format(this.dateFormat)\n\n this.datePickerControllers.forEach(controller => {\n controller.state.date = date\n controller.state.page = 0\n controller.state.highlight = { start: start, end: end }\n })\n },\n\n formatDatePickerToggleText: () => {\n if (this.hasToggleDatePickerDropdownTarget) {\n this.toggleDatePickerDropdownTargets.forEach(element => {\n const needsLongFormat = this.state.days < 7\n\n let dateFormat = global.momentFormats?.dayAndMonth || \"D MMM\"\n if (needsLongFormat) dateFormat = global.momentFormats?.long || \"ddd, D MMM, YYYY\"\n\n const year = this.renderer.dataSource().startDate().format(\"YYYY\")\n const title = element.querySelector(\".dropdown__title\")\n const rangeStart = this.renderer.dataSource().startDate().format(dateFormat)\n const rangeEnd = this.renderer.dataSource().endDate().format(dateFormat)\n\n let formattedDate = `${rangeStart} - ${rangeEnd} ${year}`\n if (needsLongFormat) formattedDate = rangeStart\n\n title.classList.toggle(\"dropdown__title--needs-long-format\", needsLongFormat)\n title.innerText = formattedDate\n })\n }\n },\n\n dataSource: () => {\n return new CalendarDataSource({\n date: this.state.date,\n days: this.state.days,\n page: this.state.page\n })\n },\n\n range: () => {\n return this.renderer.dataSource().range()\n },\n\n daytickerRange: () => {\n const startDate = global.moment(this.renderer.dataSource().startDate()).startOf(\"week\")\n const dataSource = new CalendarDataSource({\n date: startDate,\n days: 7\n })\n\n return dataSource.range().filter(day => { return day.section === \"current\" })\n },\n\n prepareSectionHeaders: () => {\n [\"previous\", \"current\", \"next\"].forEach(section => {\n const sectionHeader = this.renderer.sectionHeader(section)\n sectionHeader.innerHTML = \"\"\n })\n },\n\n prepareSectionBodies: () => {\n this.dayColumnBodyTargets.forEach(column => column.remove())\n },\n\n prepareDayTicker: () => {\n this.daytickerTarget.innerHTML = \"\"\n },\n\n adaptToScrollbarWidth: () => {\n [\"previous\", \"current\", \"next\"].forEach(section => {\n const sectionHeader = this.renderer.sectionHeader(section)\n sectionHeader.style.marginRight = `${this.state.scrollbarWidth}px`\n })\n\n this.paginationTarget.style.marginRight = `${this.state.scrollbarWidth}px`\n this.sectionScrollersTarget.style.marginRight = `${this.state.scrollbarWidth}px`\n },\n\n sectionHeader: (section) => {\n return this[`${section}SectionHeaderTarget`]\n },\n\n sectionBody: (section) => {\n return this[`${section}SectionBodyTarget`]\n },\n\n calculateColumnWidth: () => {\n return 100 / this.state.days\n },\n\n calculateColumnHeight: () => {\n return 100 * this.state.verticalScale\n },\n\n updateViewTypeClass: () => {\n this.element.classList.remove(\"calendar--single-day-view\", \"calendar--multi-day-view\")\n this.element.classList.add(this.state.days === 1 ? \"calendar--single-day-view\" : \"calendar--multi-day-view\")\n }\n }\n\n connect() {\n this.state = new Proxy({}, this.renderer)\n this.state.timeScale = this.timeScaleValue\n this.state.offsetTopAdjustment = 0\n this.state.verticalScale = this.verticalScaleValue\n this.state.scrollToTime = this.scrollToTimeValue\n this.state.days = this.daysValue\n this.state.date = this.parseStartDate(this.dateValue)\n this.state.page = this.pageValue || 0\n this.state.scrollable = this.isScrollable\n this.state.needsDayticker = this.needsDayticker()\n this.state.clockType = global.clockType\n this.state.scrollToTimeOffset = this.scrollToTimeOffsetValue || 0\n this.state.isSmallViewport = this.isSmallViewport\n\n this.setCurrentTime()\n this.startRefreshingCurrentTimeIndicator()\n this.emitChange()\n\n if (\"ResizeObserver\" in window) {\n this.resizeObserver = new ResizeObserver(_entries => {\n this.adaptToScrollbarWidth()\n if (this.datePickerActive) {\n this.showAppropriateDatePickers()\n }\n this.state.isSmallViewport = this.isSmallViewport\n })\n\n this.resizeObserver.observe(this.currentSectionBodyTarget)\n } else {\n this.adaptToScrollbarWidth()\n }\n }\n\n disconnect() {\n this.stopRefreshingCurrentTimeIndicator()\n\n if (\"ResizeObserver\" in window) this.resizeObserver.disconnect()\n }\n\n prepareDatePicker() {\n this.renderer.layoutDatePicker()\n }\n\n switchToToday(event) {\n event.preventDefault()\n\n const currentDate = this.state.date\n const currentPage = this.state.page\n const parsedDate = this.parseStartDate()\n\n this.state.canScrollToCurrentTime = true\n\n // If we already on the current date, then we just return.\n if (currentDate === parsedDate && currentPage === 0) return\n\n this.state.date = parsedDate\n this.state.page = 0\n this.emitChange()\n }\n\n switchToNextPage(event) {\n if (event) event.preventDefault()\n\n this.switchToPage(\"next\")\n }\n\n switchToPreviousPage(event) {\n if (event) event.preventDefault()\n\n this.switchToPage(\"previous\")\n }\n\n switchToDate(event) {\n event.preventDefault()\n\n const date = event.currentTarget.dataset.date\n this.state.date = this.parseStartDate(date)\n this.state.page = 0\n this.emitChange()\n }\n\n pickDate(event) {\n event.preventDefault()\n\n this.state.date = this.parseStartDate(event.detail.selection.start)\n this.state.page = 0\n this.dismissDatePicker(null)\n this.emitChange()\n }\n\n handleHorizontalScroll(event) {\n clearTimeout(this.horizontalScrollDelay)\n\n this.state.horizontalScrollFactor = 0\n this.state.isScrollingHorizontally = true\n\n this.horizontalScrollDelay = setTimeout(() => {\n this.state.horizontalScrollFactor = this.contentTarget.scrollLeft / (this.contentTarget.scrollWidth - this.contentTarget.offsetWidth)\n\n if (this.isScrollingReachedTheRLeftSide) {\n this.goToPreviousPage()\n this.emitChange()\n } else if (this.isScrollingReachedTheRightSide) {\n this.goToNextPage()\n this.emitChange()\n }\n this.state.isScrollingHorizontally = false\n }, 200)\n }\n\n handleVerticalScroll(event) {\n clearTimeout(this.verticalScrollDelay)\n\n this.state.isScrollingVertically = true\n\n this.verticalScrollDelay = setTimeout(() => {\n this.state.isScrollingVertically = false\n }, 200)\n\n const scrollEvent = new CustomEvent(\"calendar:vertical-scroll\", {\n bubbles: false,\n detail: {\n scrollLeft: event.target.scrollLeft,\n scrollTop: event.target.scrollTop\n }\n })\n\n this.element.dispatchEvent(scrollEvent)\n }\n\n toggleScrollable(event) {\n const scrollable = event.currentTarget.checked\n this.state.scrollable = scrollable\n }\n\n zoom(event) {\n event.preventDefault()\n\n const scale = event.currentTarget.value\n let timeScale = 60\n\n if (scale >= 1 && scale < 3) {\n timeScale = 60\n } else if (scale >= 3 && scale < 6) {\n timeScale = 30\n } else if (scale >= 6 && scale <= 10) {\n timeScale = 15\n }\n\n this.state.verticalScale = scale\n this.state.timeScale = timeScale\n }\n\n changeDays(event) {\n const days = event.currentTarget.value\n\n this.state.days = days\n this.state.needsDayticker = this.needsDayticker(days)\n this.state.page = 0\n this.emitChange()\n }\n\n scrollToTime(time, { animated = true } = {}) {\n this.state.scrolledToTime = false\n this.state.scrollToTime = time\n\n this.renderer.scrollToTime({ animated })\n }\n\n goToNextPage() {\n this.state.page += 1\n }\n\n goToPreviousPage() {\n this.state.page -= 1\n }\n\n switchToPage(direction) {\n if (![\"next\", \"previous\"].includes(direction)) return\n\n if (this.state.needsDayticker && this.isSmallViewport) {\n const dataSource = new CalendarDataSource({ date: this.state.date, days: 1, page: this.state.page })\n const startDate = (() => {\n if (direction === \"next\") return dataSource.nextWeek()\n if (direction === \"previous\") return dataSource.previousWeek()\n })()\n\n this.state.date = startDate.format(this.dateFormat)\n this.state.page = 0\n } else {\n if (direction === \"next\") this.goToNextPage()\n if (direction === \"previous\") this.goToPreviousPage()\n }\n\n this.emitChange()\n }\n\n setCurrentTime() {\n this.state.currentTime = global.moment().format(\"HH:mm\")\n }\n\n startRefreshingCurrentTimeIndicator() {\n this.refreshCurrentTimeIndicatorInterval = setInterval(() => {\n this.setCurrentTime()\n }, 1000)\n }\n\n stopRefreshingCurrentTimeIndicator() {\n if (this.refreshCurrentTimeIndicatorInterval) {\n clearInterval(this.refreshCurrentTimeIndicatorInterval)\n }\n }\n\n emitChange() {\n const pickedDateEvent = new CustomEvent(\"calendar:change\", {\n bubbles: false,\n detail: {\n date: this.state.date,\n page: this.state.page,\n days: this.state.days\n }\n })\n this.element.dispatchEvent(pickedDateEvent)\n }\n\n parseStartDate(date = null) {\n const parsedDate = chrono.parseDate(date)\n const parsedMoment = parsedDate == null ? global.moment() : global.moment(parsedDate)\n\n return this.state.days < 7 ?\n parsedMoment.format(this.dateFormat) :\n parsedMoment.startOf(\"week\").format(this.dateFormat)\n }\n\n needsDayticker(days = undefined) {\n return days || this.state.days === 1\n }\n\n adaptToScrollbarWidth() {\n this.state.scrollbarWidth = this.scrollbarWidth\n\n const pickedDateEvent = new CustomEvent(\"calendar:scrollbar-change\", {\n bubbles: false,\n detail: { scrollbarWidth: this.state.scrollbarWidth }\n })\n this.element.dispatchEvent(pickedDateEvent)\n }\n\n dismissDatePicker(event) {\n const isDismissButton = event && this.datePickerDropdownDismissButtonTarget.isEqualNode(event.currentTarget)\n\n if (isDismissButton) event.preventDefault()\n\n // The event is called either by the close button, or us hiding the sheet to show the\n // dropdown. If it is the latter, we want to ignore that.\n if (\n isDismissButton ||\n !event ||\n (event && !this.datePickerDropdownsVisible)\n ) {\n this.datePickerActive = false\n this.hideAllDatePickers()\n }\n }\n\n presentDatePicker(event) {\n // The states for the date picker are easy if we know what to look for. So, here we explain how it works.\n // But, first let's look into why we need to do this at all:\n // - We want have dropdown shown when clicking on a wide enough screen, else we want to show a sheet.\n // - We want to handle resize, and switch between these two.\n // - We want to close them using the expected way for both, so clicking outside on dropdown and clicking close\n // on the sheet.\n // - Thus, we need to:\n // - keep track of whether date picker is active/visible.\n // - show appropriate date picker depending on that.\n // - handle the various events.\n //\n // There is only one way to show the date picker, to click on the dropdown. That event is received in this method.\n // There are 3 ways to close the date picker:\n // - When dropdown is visible, click anywhere that is not the dropdown option.\n // - Click on a date in either dropdown or sheet.\n // - Click on close button on the date picker sheet.\n //\n // Thus, all we do is:\n // - Set internal state to active when the only way to show the date picker happens, which is in this method.\n // - Set internal state to false in 3 methods:\n // - this one, to handle the first case where dropdown is visible and we click anywhere on the screen to close it.\n // - pickDate event handler, for the second case.\n // - dismissDatePicker event handler, for the third case.\n // - When state is set to active, we show appropriate date picker using showAppropriateDatePickers.\n // - When state is active and we resize, we recalculate which date picker to show and do it, again via showAppropriateDatePickers.\n // - When state is set to inactive, we dismiss the date pickers.\n //\n // We could've also done it by:\n // - updating dropdown controller to handle `disable` in `#dismiss` event handler.\n // - Using dropdown options having element--on class instead of this.datePickerActive.\n // - Using CSS to show/hide the dropdown options based on screen width, instead of show/hideDatePickerDropdowns.\n // - While still having to require hideDatePickerDropdowns to be called in dismissDatePicker.\n\n if (event.detail.active) {\n this.datePickerActive = true\n this.showAppropriateDatePickers()\n } else if (this.datePickerActive && !this.isSmallViewport) {\n // This means that dropdown is visible and its controller is telling us that the state is now inactive.\n this.dismissDatePicker(null)\n }\n // otherwise we get event.detail.active == false but that happens due to clicking anywhere\n // while the datepicker sheet is visible. So, we discard that event.\n }\n\n hideAllDatePickers() {\n this.hideDatePickerDropdowns()\n this.hideDatePickerSheet()\n }\n\n showAppropriateDatePickers() {\n if (this.isSmallViewport) {\n this.showDatePickerSheet()\n this.hideDatePickerDropdowns()\n } else {\n this.showDatePickerDropdowns()\n this.hideDatePickerSheet()\n }\n }\n\n showDatePickerDropdowns() {\n this.toggleDatePickerDropdownControllers.forEach(controller => {\n if (!controller.state.active) controller.state.active = true\n })\n }\n\n hideDatePickerDropdowns() {\n this.toggleDatePickerDropdownControllers.forEach(controller => {\n if (controller.state.active) controller.state.active = false\n })\n }\n\n showDatePickerSheet() {\n if (!this.datePickerSheetController?.state.presenting) {\n this.datePickerSheetController?.open()\n }\n }\n\n hideDatePickerSheet() {\n if (this.datePickerSheetController && this.datePickerSheetController.state.presenting) {\n this.datePickerSheetController?.close()\n }\n }\n\n isDayVisible(date) {\n return (this.state.date === date || this.renderer.daytickerRange().some(day => day.moment.isSame(date)))\n }\n\n get datePickerDropdownsVisible() {\n return this.toggleDatePickerDropdownControllers.find(controller => controller.state.active)\n }\n\n get isSmallViewport() {\n return this.viewportWidth <= global.helpers.breakpoints.medium.start\n }\n\n get toggleDatePickerDropdownControllers() {\n return this.toggleDatePickerDropdownTargets.map(target => {\n return global.application.getControllerForElementAndIdentifier(target, \"dropdown\")\n })\n }\n\n get datePickerSheetController() {\n return global.application.getControllerForElementAndIdentifier(this.datePickerSheetTarget, \"dialog\")\n }\n\n get viewportWidth() {\n return document.documentElement.clientWidth\n }\n\n get dateFormat() {\n return \"YYYY-MM-DD\"\n }\n\n get isScrollable() {\n return this.forcedScrollingValue || this.isTouchable\n }\n\n get isScrollingReachedTheRLeftSide() {\n return this.state.horizontalScrollFactor < 0.1\n }\n\n get isScrollingReachedTheRightSide() {\n return this.state.horizontalScrollFactor > 0.9\n }\n\n get scrollbarWidth() {\n return this.currentSectionBodyTarget.offsetWidth - this.currentSectionBodyTarget.clientWidth\n }\n\n get contentWidth() {\n return this.currentSectionBodyTarget.clientWidth\n }\n\n get contentHeight() {\n return this.currentSectionBodyTarget.clientHeight\n }\n\n get isTouchable() {\n return (\n (\"ontouchstart\" in window) ||\n (navigator.maxTouchPoints > 0) ||\n (navigator.msMaxTouchPoints > 0)\n )\n }\n\n get datePickerControllers() {\n if (!this.hasDatePickerTarget) return []\n\n return this.datePickerTargets.map(element => {\n return global.application.getControllerForElementAndIdentifier(element, \"date-picker\")\n }).filter(controller => controller)\n }\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nconst constants_1 = require(\"../constants\");\n\nconst results_1 = require(\"../../../results\");\n\nconst AbstractParserWithWordBoundary_1 = require(\"../../../common/parsers/AbstractParserWithWordBoundary\");\n\nconst PATTERN_WITH_PREFIX = new RegExp(`(?:within|in|for)\\\\s*` + `(?:(?:about|around|roughly|approximately|just)\\\\s*(?:~\\\\s*)?)?(${constants_1.TIME_UNITS_PATTERN})(?=\\\\W|$)`, \"i\");\nconst PATTERN_WITHOUT_PREFIX = new RegExp(`(?:(?:about|around|roughly|approximately|just)\\\\s*(?:~\\\\s*)?)?(${constants_1.TIME_UNITS_PATTERN})(?=\\\\W|$)`, \"i\");\n\nclass ENTimeUnitWithinFormatParser extends AbstractParserWithWordBoundary_1.AbstractParserWithWordBoundaryChecking {\n innerPattern(context) {\n return context.option.forwardDate ? PATTERN_WITHOUT_PREFIX : PATTERN_WITH_PREFIX;\n }\n\n innerExtract(context, match) {\n const timeUnits = constants_1.parseTimeUnits(match[1]);\n return results_1.ParsingComponents.createRelativeFromReference(context.reference, timeUnits);\n }\n\n}\n\nexports.default = ENTimeUnitWithinFormatParser;","!function (t, n) {\n \"object\" == typeof exports && \"undefined\" != typeof module ? module.exports = n() : \"function\" == typeof define && define.amd ? define(n) : (t = \"undefined\" != typeof globalThis ? globalThis : t || self).dayjs_plugin_quarterOfYear = n();\n}(this, function () {\n \"use strict\";\n\n var t = \"month\",\n n = \"quarter\";\n return function (e, i) {\n var r = i.prototype;\n\n r.quarter = function (t) {\n return this.$utils().u(t) ? Math.ceil((this.month() + 1) / 3) : this.month(this.month() % 3 + 3 * (t - 1));\n };\n\n var s = r.add;\n\n r.add = function (e, i) {\n return e = Number(e), this.$utils().p(i) === n ? this.add(3 * e, t) : s.bind(this)(e, i);\n };\n\n var u = r.startOf;\n\n r.startOf = function (e, i) {\n var r = this.$utils(),\n s = !!r.u(i) || i;\n\n if (r.p(e) === n) {\n var o = this.quarter() - 1;\n return s ? this.month(3 * o).startOf(t).startOf(\"day\") : this.month(3 * o + 2).endOf(t).endOf(\"day\");\n }\n\n return u.bind(this)(e, i);\n };\n };\n});","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.toTimezoneOffset = exports.TIMEZONE_ABBR_MAP = void 0;\nexports.TIMEZONE_ABBR_MAP = {\n ACDT: 630,\n ACST: 570,\n ADT: -180,\n AEDT: 660,\n AEST: 600,\n AFT: 270,\n AKDT: -480,\n AKST: -540,\n ALMT: 360,\n AMST: -180,\n AMT: -240,\n ANAST: 720,\n ANAT: 720,\n AQTT: 300,\n ART: -180,\n AST: -240,\n AWDT: 540,\n AWST: 480,\n AZOST: 0,\n AZOT: -60,\n AZST: 300,\n AZT: 240,\n BNT: 480,\n BOT: -240,\n BRST: -120,\n BRT: -180,\n BST: 60,\n BTT: 360,\n CAST: 480,\n CAT: 120,\n CCT: 390,\n CDT: -300,\n CEST: 120,\n CET: 60,\n CHADT: 825,\n CHAST: 765,\n CKT: -600,\n CLST: -180,\n CLT: -240,\n COT: -300,\n CST: -360,\n CVT: -60,\n CXT: 420,\n ChST: 600,\n DAVT: 420,\n EASST: -300,\n EAST: -360,\n EAT: 180,\n ECT: -300,\n EDT: -240,\n EEST: 180,\n EET: 120,\n EGST: 0,\n EGT: -60,\n EST: -300,\n ET: -300,\n FJST: 780,\n FJT: 720,\n FKST: -180,\n FKT: -240,\n FNT: -120,\n GALT: -360,\n GAMT: -540,\n GET: 240,\n GFT: -180,\n GILT: 720,\n GMT: 0,\n GST: 240,\n GYT: -240,\n HAA: -180,\n HAC: -300,\n HADT: -540,\n HAE: -240,\n HAP: -420,\n HAR: -360,\n HAST: -600,\n HAT: -90,\n HAY: -480,\n HKT: 480,\n HLV: -210,\n HNA: -240,\n HNC: -360,\n HNE: -300,\n HNP: -480,\n HNR: -420,\n HNT: -150,\n HNY: -540,\n HOVT: 420,\n ICT: 420,\n IDT: 180,\n IOT: 360,\n IRDT: 270,\n IRKST: 540,\n IRKT: 540,\n IRST: 210,\n IST: 330,\n JST: 540,\n KGT: 360,\n KRAST: 480,\n KRAT: 480,\n KST: 540,\n KUYT: 240,\n LHDT: 660,\n LHST: 630,\n LINT: 840,\n MAGST: 720,\n MAGT: 720,\n MART: -510,\n MAWT: 300,\n MDT: -360,\n MESZ: 120,\n MEZ: 60,\n MHT: 720,\n MMT: 390,\n MSD: 240,\n MSK: 180,\n MST: -420,\n MUT: 240,\n MVT: 300,\n MYT: 480,\n NCT: 660,\n NDT: -90,\n NFT: 690,\n NOVST: 420,\n NOVT: 360,\n NPT: 345,\n NST: -150,\n NUT: -660,\n NZDT: 780,\n NZST: 720,\n OMSST: 420,\n OMST: 420,\n PDT: -420,\n PET: -300,\n PETST: 720,\n PETT: 720,\n PGT: 600,\n PHOT: 780,\n PHT: 480,\n PKT: 300,\n PMDT: -120,\n PMST: -180,\n PONT: 660,\n PST: -480,\n PT: -480,\n PWT: 540,\n PYST: -180,\n PYT: -240,\n RET: 240,\n SAMT: 240,\n SAST: 120,\n SBT: 660,\n SCT: 240,\n SGT: 480,\n SRT: -180,\n SST: -660,\n TAHT: -600,\n TFT: 300,\n TJT: 300,\n TKT: 780,\n TLT: 540,\n TMT: 300,\n TVT: 720,\n ULAT: 480,\n UTC: 0,\n UYST: -120,\n UYT: -180,\n UZT: 300,\n VET: -210,\n VLAST: 660,\n VLAT: 660,\n VUT: 660,\n WAST: 120,\n WAT: 60,\n WEST: 60,\n WESZ: 60,\n WET: 0,\n WEZ: 0,\n WFT: 720,\n WGST: -120,\n WGT: -180,\n WIB: 420,\n WIT: 540,\n WITA: 480,\n WST: 780,\n WT: 0,\n YAKST: 600,\n YAKT: 600,\n YAPT: 600,\n YEKST: 360,\n YEKT: 360\n};\n\nfunction toTimezoneOffset(timezoneInput) {\n var _a;\n\n if (timezoneInput === null || timezoneInput === undefined) {\n return null;\n }\n\n if (typeof timezoneInput === \"number\") {\n return timezoneInput;\n }\n\n return (_a = exports.TIMEZONE_ABBR_MAP[timezoneInput]) !== null && _a !== void 0 ? _a : null;\n}\n\nexports.toTimezoneOffset = toTimezoneOffset;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nconst years_1 = require(\"../../../calculation/years\");\n\nconst constants_1 = require(\"../constants\");\n\nconst constants_2 = require(\"../constants\");\n\nconst constants_3 = require(\"../constants\");\n\nconst pattern_1 = require(\"../../../utils/pattern\");\n\nconst AbstractParserWithWordBoundary_1 = require(\"../../../common/parsers/AbstractParserWithWordBoundary\");\n\nconst PATTERN = new RegExp(`(?:on\\\\s{0,3})?` + `(${constants_3.ORDINAL_NUMBER_PATTERN})` + `(?:` + `\\\\s{0,3}(?:to|\\\\-|\\\\–|until|through|till)?\\\\s{0,3}` + `(${constants_3.ORDINAL_NUMBER_PATTERN})` + \")?\" + `(?:-|/|\\\\s{0,3}(?:of)?\\\\s{0,3})` + `(${pattern_1.matchAnyPattern(constants_1.MONTH_DICTIONARY)})` + \"(?:\" + `(?:-|/|,?\\\\s{0,3})` + `(${constants_2.YEAR_PATTERN}(?![^\\\\s]\\\\d))` + \")?\" + \"(?=\\\\W|$)\", \"i\");\nconst DATE_GROUP = 1;\nconst DATE_TO_GROUP = 2;\nconst MONTH_NAME_GROUP = 3;\nconst YEAR_GROUP = 4;\n\nclass ENMonthNameLittleEndianParser extends AbstractParserWithWordBoundary_1.AbstractParserWithWordBoundaryChecking {\n innerPattern() {\n return PATTERN;\n }\n\n innerExtract(context, match) {\n const result = context.createParsingResult(match.index, match[0]);\n const month = constants_1.MONTH_DICTIONARY[match[MONTH_NAME_GROUP].toLowerCase()];\n const day = constants_3.parseOrdinalNumberPattern(match[DATE_GROUP]);\n\n if (day > 31) {\n match.index = match.index + match[DATE_GROUP].length;\n return null;\n }\n\n result.start.assign(\"month\", month);\n result.start.assign(\"day\", day);\n\n if (match[YEAR_GROUP]) {\n const yearNumber = constants_2.parseYear(match[YEAR_GROUP]);\n result.start.assign(\"year\", yearNumber);\n } else {\n const year = years_1.findYearClosestToRef(context.refDate, day, month);\n result.start.imply(\"year\", year);\n }\n\n if (match[DATE_TO_GROUP]) {\n const endDate = constants_3.parseOrdinalNumberPattern(match[DATE_TO_GROUP]);\n result.end = result.start.clone();\n result.end.assign(\"day\", endDate);\n }\n\n return result;\n }\n\n}\n\nexports.default = ENMonthNameLittleEndianParser;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nconst years_1 = require(\"../../../calculation/years\");\n\nconst constants_1 = require(\"../constants\");\n\nconst constants_2 = require(\"../constants\");\n\nconst constants_3 = require(\"../constants\");\n\nconst pattern_1 = require(\"../../../utils/pattern\");\n\nconst AbstractParserWithWordBoundary_1 = require(\"../../../common/parsers/AbstractParserWithWordBoundary\");\n\nconst PATTERN = new RegExp(`(${pattern_1.matchAnyPattern(constants_1.MONTH_DICTIONARY)})` + \"(?:-|/|\\\\s*,?\\\\s*)\" + `(${constants_2.ORDINAL_NUMBER_PATTERN})(?!\\\\s*(?:am|pm))\\\\s*` + \"(?:\" + \"(?:to|\\\\-)\\\\s*\" + `(${constants_2.ORDINAL_NUMBER_PATTERN})\\\\s*` + \")?\" + \"(?:\" + \"(?:-|/|\\\\s*,?\\\\s*)\" + `(${constants_3.YEAR_PATTERN})` + \")?\" + \"(?=\\\\W|$)(?!\\\\:\\\\d)\", \"i\");\nconst MONTH_NAME_GROUP = 1;\nconst DATE_GROUP = 2;\nconst DATE_TO_GROUP = 3;\nconst YEAR_GROUP = 4;\n\nclass ENMonthNameMiddleEndianParser extends AbstractParserWithWordBoundary_1.AbstractParserWithWordBoundaryChecking {\n innerPattern() {\n return PATTERN;\n }\n\n innerExtract(context, match) {\n const month = constants_1.MONTH_DICTIONARY[match[MONTH_NAME_GROUP].toLowerCase()];\n const day = constants_2.parseOrdinalNumberPattern(match[DATE_GROUP]);\n\n if (day > 31) {\n return null;\n }\n\n const components = context.createParsingComponents({\n day: day,\n month: month\n });\n\n if (match[YEAR_GROUP]) {\n const year = constants_3.parseYear(match[YEAR_GROUP]);\n components.assign(\"year\", year);\n } else {\n const year = years_1.findYearClosestToRef(context.refDate, day, month);\n components.imply(\"year\", year);\n }\n\n if (!match[DATE_TO_GROUP]) {\n return components;\n }\n\n const endDate = constants_2.parseOrdinalNumberPattern(match[DATE_TO_GROUP]);\n const result = context.createParsingResult(match.index, match[0]);\n result.start = components;\n result.end = components.clone();\n result.end.assign(\"day\", endDate);\n return result;\n }\n\n}\n\nexports.default = ENMonthNameMiddleEndianParser;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nconst constants_1 = require(\"../constants\");\n\nconst years_1 = require(\"../../../calculation/years\");\n\nconst pattern_1 = require(\"../../../utils/pattern\");\n\nconst constants_2 = require(\"../constants\");\n\nconst AbstractParserWithWordBoundary_1 = require(\"../../../common/parsers/AbstractParserWithWordBoundary\");\n\nconst PATTERN = new RegExp(`((?:in)\\\\s*)?` + `(${pattern_1.matchAnyPattern(constants_1.MONTH_DICTIONARY)})` + `\\\\s*` + `(?:` + `[,-]?\\\\s*(${constants_2.YEAR_PATTERN})?` + \")?\" + \"(?=[^\\\\s\\\\w]|\\\\s+[^0-9]|\\\\s+$|$)\", \"i\");\nconst PREFIX_GROUP = 1;\nconst MONTH_NAME_GROUP = 2;\nconst YEAR_GROUP = 3;\n\nclass ENMonthNameParser extends AbstractParserWithWordBoundary_1.AbstractParserWithWordBoundaryChecking {\n innerPattern() {\n return PATTERN;\n }\n\n innerExtract(context, match) {\n const monthName = match[MONTH_NAME_GROUP].toLowerCase();\n\n if (match[0].length <= 3 && !constants_1.FULL_MONTH_NAME_DICTIONARY[monthName]) {\n return null;\n }\n\n const result = context.createParsingResult(match.index + (match[PREFIX_GROUP] || \"\").length, match.index + match[0].length);\n result.start.imply(\"day\", 1);\n const month = constants_1.MONTH_DICTIONARY[monthName];\n result.start.assign(\"month\", month);\n\n if (match[YEAR_GROUP]) {\n const year = constants_2.parseYear(match[YEAR_GROUP]);\n result.start.assign(\"year\", year);\n } else {\n const year = years_1.findYearClosestToRef(context.refDate, 1, month);\n result.start.imply(\"year\", year);\n }\n\n return result;\n }\n\n}\n\nexports.default = ENMonthNameParser;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nconst constants_1 = require(\"../constants\");\n\nconst pattern_1 = require(\"../../../utils/pattern\");\n\nconst AbstractParserWithWordBoundary_1 = require(\"../../../common/parsers/AbstractParserWithWordBoundary\");\n\nconst PATTERN = new RegExp(`([0-9]{4})[\\\\.\\\\/\\\\s]` + `(?:(${pattern_1.matchAnyPattern(constants_1.MONTH_DICTIONARY)})|([0-9]{1,2}))[\\\\.\\\\/\\\\s]` + `([0-9]{1,2})` + \"(?=\\\\W|$)\", \"i\");\nconst YEAR_NUMBER_GROUP = 1;\nconst MONTH_NAME_GROUP = 2;\nconst MONTH_NUMBER_GROUP = 3;\nconst DATE_NUMBER_GROUP = 4;\n\nclass ENCasualYearMonthDayParser extends AbstractParserWithWordBoundary_1.AbstractParserWithWordBoundaryChecking {\n innerPattern() {\n return PATTERN;\n }\n\n innerExtract(context, match) {\n const month = match[MONTH_NUMBER_GROUP] ? parseInt(match[MONTH_NUMBER_GROUP]) : constants_1.MONTH_DICTIONARY[match[MONTH_NAME_GROUP].toLowerCase()];\n\n if (month < 1 || month > 12) {\n return null;\n }\n\n const year = parseInt(match[YEAR_NUMBER_GROUP]);\n const day = parseInt(match[DATE_NUMBER_GROUP]);\n return {\n day: day,\n month: month,\n year: year\n };\n }\n\n}\n\nexports.default = ENCasualYearMonthDayParser;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nconst AbstractParserWithWordBoundary_1 = require(\"../../../common/parsers/AbstractParserWithWordBoundary\");\n\nconst PATTERN = new RegExp(\"([0-9]|0[1-9]|1[012])/([0-9]{4})\" + \"\", \"i\");\nconst MONTH_GROUP = 1;\nconst YEAR_GROUP = 2;\n\nclass ENSlashMonthFormatParser extends AbstractParserWithWordBoundary_1.AbstractParserWithWordBoundaryChecking {\n innerPattern() {\n return PATTERN;\n }\n\n innerExtract(context, match) {\n const year = parseInt(match[YEAR_GROUP]);\n const month = parseInt(match[MONTH_GROUP]);\n return context.createParsingComponents().imply(\"day\", 1).assign(\"month\", month).assign(\"year\", year);\n }\n\n}\n\nexports.default = ENSlashMonthFormatParser;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nconst index_1 = require(\"../../../index\");\n\nconst AbstractTimeExpressionParser_1 = require(\"../../../common/parsers/AbstractTimeExpressionParser\");\n\nclass ENTimeExpressionParser extends AbstractTimeExpressionParser_1.AbstractTimeExpressionParser {\n constructor(strictMode) {\n super(strictMode);\n }\n\n followingPhase() {\n return \"\\\\s*(?:\\\\-|\\\\–|\\\\~|\\\\〜|to|\\\\?)\\\\s*\";\n }\n\n primaryPrefix() {\n return \"(?:(?:at|from)\\\\s*)??\";\n }\n\n primarySuffix() {\n return \"(?:\\\\s*(?:o\\\\W*clock|at\\\\s*night|in\\\\s*the\\\\s*(?:morning|afternoon)))?(?!/)(?=\\\\W|$)\";\n }\n\n extractPrimaryTimeComponents(context, match) {\n const components = super.extractPrimaryTimeComponents(context, match);\n\n if (components) {\n if (match[0].endsWith(\"night\")) {\n const hour = components.get(\"hour\");\n\n if (hour >= 6 && hour < 12) {\n components.assign(\"hour\", components.get(\"hour\") + 12);\n components.assign(\"meridiem\", index_1.Meridiem.PM);\n } else if (hour < 6) {\n components.assign(\"meridiem\", index_1.Meridiem.AM);\n }\n }\n\n if (match[0].endsWith(\"afternoon\")) {\n components.assign(\"meridiem\", index_1.Meridiem.PM);\n const hour = components.get(\"hour\");\n\n if (hour >= 0 && hour <= 6) {\n components.assign(\"hour\", components.get(\"hour\") + 12);\n }\n }\n\n if (match[0].endsWith(\"morning\")) {\n components.assign(\"meridiem\", index_1.Meridiem.AM);\n const hour = components.get(\"hour\");\n\n if (hour < 12) {\n components.assign(\"hour\", components.get(\"hour\"));\n }\n }\n }\n\n return components;\n }\n\n}\n\nexports.default = ENTimeExpressionParser;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nconst constants_1 = require(\"../constants\");\n\nconst results_1 = require(\"../../../results\");\n\nconst AbstractParserWithWordBoundary_1 = require(\"../../../common/parsers/AbstractParserWithWordBoundary\");\n\nconst timeunits_1 = require(\"../../../utils/timeunits\");\n\nconst PATTERN = new RegExp(`(${constants_1.TIME_UNITS_PATTERN})\\\\s{0,5}(?:ago|before|earlier)(?=(?:\\\\W|$))`, \"i\");\nconst STRICT_PATTERN = new RegExp(`(${constants_1.TIME_UNITS_PATTERN})\\\\s{0,5}ago(?=(?:\\\\W|$))`, \"i\");\n\nclass ENTimeUnitAgoFormatParser extends AbstractParserWithWordBoundary_1.AbstractParserWithWordBoundaryChecking {\n constructor(strictMode) {\n super();\n this.strictMode = strictMode;\n }\n\n innerPattern() {\n return this.strictMode ? STRICT_PATTERN : PATTERN;\n }\n\n innerExtract(context, match) {\n const timeUnits = constants_1.parseTimeUnits(match[1]);\n const outputTimeUnits = timeunits_1.reverseTimeUnits(timeUnits);\n return results_1.ParsingComponents.createRelativeFromReference(context.reference, outputTimeUnits);\n }\n\n}\n\nexports.default = ENTimeUnitAgoFormatParser;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nconst constants_1 = require(\"../constants\");\n\nconst results_1 = require(\"../../../results\");\n\nconst AbstractParserWithWordBoundary_1 = require(\"../../../common/parsers/AbstractParserWithWordBoundary\");\n\nconst PATTERN = new RegExp(`(${constants_1.TIME_UNITS_PATTERN})\\\\s{0,5}(?:later|after|from now|henceforth|forward|out)` + \"(?=(?:\\\\W|$))\", \"i\");\nconst STRICT_PATTERN = new RegExp(\"\" + \"(\" + constants_1.TIME_UNITS_PATTERN + \")\" + \"(later|from now)\" + \"(?=(?:\\\\W|$))\", \"i\");\nconst GROUP_NUM_TIMEUNITS = 1;\n\nclass ENTimeUnitLaterFormatParser extends AbstractParserWithWordBoundary_1.AbstractParserWithWordBoundaryChecking {\n constructor(strictMode) {\n super();\n this.strictMode = strictMode;\n }\n\n innerPattern() {\n return this.strictMode ? STRICT_PATTERN : PATTERN;\n }\n\n innerExtract(context, match) {\n const fragments = constants_1.parseTimeUnits(match[GROUP_NUM_TIMEUNITS]);\n return results_1.ParsingComponents.createRelativeFromReference(context.reference, fragments);\n }\n\n}\n\nexports.default = ENTimeUnitLaterFormatParser;","\"use strict\";\n\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nconst AbstractMergeDateRangeRefiner_1 = __importDefault(require(\"../../../common/refiners/AbstractMergeDateRangeRefiner\"));\n\nclass ENMergeDateRangeRefiner extends AbstractMergeDateRangeRefiner_1.default {\n patternBetween() {\n return /^\\s*(to|-)\\s*$/i;\n }\n\n}\n\nexports.default = ENMergeDateRangeRefiner;","\"use strict\";\n\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nconst AbstractMergeDateTimeRefiner_1 = __importDefault(require(\"../../../common/refiners/AbstractMergeDateTimeRefiner\"));\n\nclass ENMergeDateTimeRefiner extends AbstractMergeDateTimeRefiner_1.default {\n patternBetween() {\n return new RegExp(\"^\\\\s*(T|at|after|before|on|of|,|-)?\\\\s*$\");\n }\n\n}\n\nexports.default = ENMergeDateTimeRefiner;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.mergeDateTimeComponent = exports.mergeDateTimeResult = void 0;\n\nconst index_1 = require(\"../index\");\n\nfunction mergeDateTimeResult(dateResult, timeResult) {\n const result = dateResult.clone();\n const beginDate = dateResult.start;\n const beginTime = timeResult.start;\n result.start = mergeDateTimeComponent(beginDate, beginTime);\n\n if (dateResult.end != null || timeResult.end != null) {\n const endDate = dateResult.end == null ? dateResult.start : dateResult.end;\n const endTime = timeResult.end == null ? timeResult.start : timeResult.end;\n const endDateTime = mergeDateTimeComponent(endDate, endTime);\n\n if (dateResult.end == null && endDateTime.date().getTime() < result.start.date().getTime()) {\n if (endDateTime.isCertain(\"day\")) {\n endDateTime.assign(\"day\", endDateTime.get(\"day\") + 1);\n } else {\n endDateTime.imply(\"day\", endDateTime.get(\"day\") + 1);\n }\n }\n\n result.end = endDateTime;\n }\n\n return result;\n}\n\nexports.mergeDateTimeResult = mergeDateTimeResult;\n\nfunction mergeDateTimeComponent(dateComponent, timeComponent) {\n const dateTimeComponent = dateComponent.clone();\n\n if (timeComponent.isCertain(\"hour\")) {\n dateTimeComponent.assign(\"hour\", timeComponent.get(\"hour\"));\n dateTimeComponent.assign(\"minute\", timeComponent.get(\"minute\"));\n\n if (timeComponent.isCertain(\"second\")) {\n dateTimeComponent.assign(\"second\", timeComponent.get(\"second\"));\n\n if (timeComponent.isCertain(\"millisecond\")) {\n dateTimeComponent.assign(\"millisecond\", timeComponent.get(\"millisecond\"));\n } else {\n dateTimeComponent.imply(\"millisecond\", timeComponent.get(\"millisecond\"));\n }\n } else {\n dateTimeComponent.imply(\"second\", timeComponent.get(\"second\"));\n dateTimeComponent.imply(\"millisecond\", timeComponent.get(\"millisecond\"));\n }\n } else {\n dateTimeComponent.imply(\"hour\", timeComponent.get(\"hour\"));\n dateTimeComponent.imply(\"minute\", timeComponent.get(\"minute\"));\n dateTimeComponent.imply(\"second\", timeComponent.get(\"second\"));\n dateTimeComponent.imply(\"millisecond\", timeComponent.get(\"millisecond\"));\n }\n\n if (timeComponent.isCertain(\"timezoneOffset\")) {\n dateTimeComponent.assign(\"timezoneOffset\", timeComponent.get(\"timezoneOffset\"));\n }\n\n if (timeComponent.isCertain(\"meridiem\")) {\n dateTimeComponent.assign(\"meridiem\", timeComponent.get(\"meridiem\"));\n } else if (timeComponent.get(\"meridiem\") != null && dateTimeComponent.get(\"meridiem\") == null) {\n dateTimeComponent.imply(\"meridiem\", timeComponent.get(\"meridiem\"));\n }\n\n if (dateTimeComponent.get(\"meridiem\") == index_1.Meridiem.PM && dateTimeComponent.get(\"hour\") < 12) {\n if (timeComponent.isCertain(\"hour\")) {\n dateTimeComponent.assign(\"hour\", dateTimeComponent.get(\"hour\") + 12);\n } else {\n dateTimeComponent.imply(\"hour\", dateTimeComponent.get(\"hour\") + 12);\n }\n }\n\n return dateTimeComponent;\n}\n\nexports.mergeDateTimeComponent = mergeDateTimeComponent;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nconst TIMEZONE_NAME_PATTERN = new RegExp(\"^\\\\s*,?\\\\s*\\\\(?([A-Z]{2,4})\\\\)?(?=\\\\W|$)\", \"i\");\nconst DEFAULT_TIMEZONE_ABBR_MAP = {\n ACDT: 630,\n ACST: 570,\n ADT: -180,\n AEDT: 660,\n AEST: 600,\n AFT: 270,\n AKDT: -480,\n AKST: -540,\n ALMT: 360,\n AMST: -180,\n AMT: -240,\n ANAST: 720,\n ANAT: 720,\n AQTT: 300,\n ART: -180,\n AST: -240,\n AWDT: 540,\n AWST: 480,\n AZOST: 0,\n AZOT: -60,\n AZST: 300,\n AZT: 240,\n BNT: 480,\n BOT: -240,\n BRST: -120,\n BRT: -180,\n BST: 60,\n BTT: 360,\n CAST: 480,\n CAT: 120,\n CCT: 390,\n CDT: -300,\n CEST: 120,\n CET: 60,\n CHADT: 825,\n CHAST: 765,\n CKT: -600,\n CLST: -180,\n CLT: -240,\n COT: -300,\n CST: -360,\n CVT: -60,\n CXT: 420,\n ChST: 600,\n DAVT: 420,\n EASST: -300,\n EAST: -360,\n EAT: 180,\n ECT: -300,\n EDT: -240,\n EEST: 180,\n EET: 120,\n EGST: 0,\n EGT: -60,\n EST: -300,\n ET: -300,\n FJST: 780,\n FJT: 720,\n FKST: -180,\n FKT: -240,\n FNT: -120,\n GALT: -360,\n GAMT: -540,\n GET: 240,\n GFT: -180,\n GILT: 720,\n GMT: 0,\n GST: 240,\n GYT: -240,\n HAA: -180,\n HAC: -300,\n HADT: -540,\n HAE: -240,\n HAP: -420,\n HAR: -360,\n HAST: -600,\n HAT: -90,\n HAY: -480,\n HKT: 480,\n HLV: -210,\n HNA: -240,\n HNC: -360,\n HNE: -300,\n HNP: -480,\n HNR: -420,\n HNT: -150,\n HNY: -540,\n HOVT: 420,\n ICT: 420,\n IDT: 180,\n IOT: 360,\n IRDT: 270,\n IRKST: 540,\n IRKT: 540,\n IRST: 210,\n IST: 330,\n JST: 540,\n KGT: 360,\n KRAST: 480,\n KRAT: 480,\n KST: 540,\n KUYT: 240,\n LHDT: 660,\n LHST: 630,\n LINT: 840,\n MAGST: 720,\n MAGT: 720,\n MART: -510,\n MAWT: 300,\n MDT: -360,\n MESZ: 120,\n MEZ: 60,\n MHT: 720,\n MMT: 390,\n MSD: 240,\n MSK: 240,\n MST: -420,\n MUT: 240,\n MVT: 300,\n MYT: 480,\n NCT: 660,\n NDT: -90,\n NFT: 690,\n NOVST: 420,\n NOVT: 360,\n NPT: 345,\n NST: -150,\n NUT: -660,\n NZDT: 780,\n NZST: 720,\n OMSST: 420,\n OMST: 420,\n PDT: -420,\n PET: -300,\n PETST: 720,\n PETT: 720,\n PGT: 600,\n PHOT: 780,\n PHT: 480,\n PKT: 300,\n PMDT: -120,\n PMST: -180,\n PONT: 660,\n PST: -480,\n PT: -480,\n PWT: 540,\n PYST: -180,\n PYT: -240,\n RET: 240,\n SAMT: 240,\n SAST: 120,\n SBT: 660,\n SCT: 240,\n SGT: 480,\n SRT: -180,\n SST: -660,\n TAHT: -600,\n TFT: 300,\n TJT: 300,\n TKT: 780,\n TLT: 540,\n TMT: 300,\n TVT: 720,\n ULAT: 480,\n UTC: 0,\n UYST: -120,\n UYT: -180,\n UZT: 300,\n VET: -210,\n VLAST: 660,\n VLAT: 660,\n VUT: 660,\n WAST: 120,\n WAT: 60,\n WEST: 60,\n WESZ: 60,\n WET: 0,\n WEZ: 0,\n WFT: 720,\n WGST: -120,\n WGT: -180,\n WIB: 420,\n WIT: 540,\n WITA: 480,\n WST: 780,\n WT: 0,\n YAKST: 600,\n YAKT: 600,\n YAPT: 600,\n YEKST: 360,\n YEKT: 360\n};\n\nclass ExtractTimezoneAbbrRefiner {\n constructor(timezoneOverrides) {\n this.timezone = Object.assign(Object.assign({}, DEFAULT_TIMEZONE_ABBR_MAP), timezoneOverrides);\n }\n\n refine(context, results) {\n var _a;\n\n const timezoneOverrides = (_a = context.option.timezones) !== null && _a !== void 0 ? _a : {};\n results.forEach(result => {\n var _a, _b;\n\n const suffix = context.text.substring(result.index + result.text.length);\n const match = TIMEZONE_NAME_PATTERN.exec(suffix);\n\n if (!match) {\n return;\n }\n\n const timezoneAbbr = match[1].toUpperCase();\n const extractedTimezoneOffset = (_b = (_a = timezoneOverrides[timezoneAbbr]) !== null && _a !== void 0 ? _a : this.timezone[timezoneAbbr]) !== null && _b !== void 0 ? _b : null;\n\n if (extractedTimezoneOffset === null) {\n return;\n }\n\n context.debug(() => {\n console.log(`Extracting timezone: '${timezoneAbbr}' into: ${extractedTimezoneOffset} for: ${result.start}`);\n });\n const currentTimezoneOffset = result.start.get(\"timezoneOffset\");\n\n if (currentTimezoneOffset !== null && extractedTimezoneOffset != currentTimezoneOffset) {\n if (result.start.isCertain(\"timezoneOffset\")) {\n return;\n }\n\n if (timezoneAbbr != match[1]) {\n return;\n }\n }\n\n if (result.start.isOnlyDate()) {\n if (timezoneAbbr != match[1]) {\n return;\n }\n }\n\n result.text += match[0];\n\n if (!result.start.isCertain(\"timezoneOffset\")) {\n result.start.assign(\"timezoneOffset\", extractedTimezoneOffset);\n }\n\n if (result.end != null && !result.end.isCertain(\"timezoneOffset\")) {\n result.end.assign(\"timezoneOffset\", extractedTimezoneOffset);\n }\n });\n return results;\n }\n\n}\n\nexports.default = ExtractTimezoneAbbrRefiner;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nclass OverlapRemovalRefiner {\n refine(context, results) {\n if (results.length < 2) {\n return results;\n }\n\n const filteredResults = [];\n let prevResult = results[0];\n\n for (let i = 1; i < results.length; i++) {\n const result = results[i];\n\n if (result.index < prevResult.index + prevResult.text.length) {\n if (result.text.length > prevResult.text.length) {\n prevResult = result;\n }\n } else {\n filteredResults.push(prevResult);\n prevResult = result;\n }\n }\n\n if (prevResult != null) {\n filteredResults.push(prevResult);\n }\n\n return filteredResults;\n }\n\n}\n\nexports.default = OverlapRemovalRefiner;","\"use strict\";\n\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nconst dayjs_1 = __importDefault(require(\"dayjs\"));\n\nconst dayjs_2 = require(\"../../utils/dayjs\");\n\nclass ForwardDateRefiner {\n refine(context, results) {\n if (!context.option.forwardDate) {\n return results;\n }\n\n results.forEach(function (result) {\n let refMoment = dayjs_1.default(context.refDate);\n\n if (result.start.isOnlyTime() && refMoment.isAfter(result.start.dayjs())) {\n refMoment = refMoment.add(1, \"day\");\n dayjs_2.implySimilarDate(result.start, refMoment);\n\n if (result.end && result.end.isOnlyTime()) {\n dayjs_2.implySimilarDate(result.end, refMoment);\n\n if (result.start.dayjs().isAfter(result.end.dayjs())) {\n refMoment = refMoment.add(1, \"day\");\n dayjs_2.implySimilarDate(result.end, refMoment);\n }\n }\n }\n\n if (result.start.isOnlyDayMonthComponent() && refMoment.isAfter(result.start.dayjs())) {\n for (let i = 0; i < 3 && refMoment.isAfter(result.start.dayjs()); i++) {\n result.start.imply(\"year\", result.start.get(\"year\") + 1);\n context.debug(() => {\n console.log(`Forward yearly adjusted for ${result} (${result.start})`);\n });\n\n if (result.end && !result.end.isCertain(\"year\")) {\n result.end.imply(\"year\", result.end.get(\"year\") + 1);\n context.debug(() => {\n console.log(`Forward yearly adjusted for ${result} (${result.end})`);\n });\n }\n }\n }\n\n if (result.start.isOnlyWeekdayComponent() && refMoment.isAfter(result.start.dayjs())) {\n if (refMoment.day() >= result.start.get(\"weekday\")) {\n refMoment = refMoment.day(result.start.get(\"weekday\") + 7);\n } else {\n refMoment = refMoment.day(result.start.get(\"weekday\"));\n }\n\n result.start.imply(\"day\", refMoment.date());\n result.start.imply(\"month\", refMoment.month() + 1);\n result.start.imply(\"year\", refMoment.year());\n context.debug(() => {\n console.log(`Forward weekly adjusted for ${result} (${result.start})`);\n });\n\n if (result.end && result.end.isOnlyWeekdayComponent()) {\n if (refMoment.day() > result.end.get(\"weekday\")) {\n refMoment = refMoment.day(result.end.get(\"weekday\") + 7);\n } else {\n refMoment = refMoment.day(result.end.get(\"weekday\"));\n }\n\n result.end.imply(\"day\", refMoment.date());\n result.end.imply(\"month\", refMoment.month() + 1);\n result.end.imply(\"year\", refMoment.year());\n context.debug(() => {\n console.log(`Forward weekly adjusted for ${result} (${result.end})`);\n });\n }\n }\n });\n return results;\n }\n\n}\n\nexports.default = ForwardDateRefiner;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nconst abstractRefiners_1 = require(\"../abstractRefiners\");\n\nclass UnlikelyFormatFilter extends abstractRefiners_1.Filter {\n constructor(strictMode) {\n super();\n this.strictMode = strictMode;\n }\n\n isValid(context, result) {\n if (result.text.replace(\" \", \"\").match(/^\\d*(\\.\\d*)?$/)) {\n context.debug(() => {\n console.log(`Removing unlikely result '${result.text}'`);\n });\n return false;\n }\n\n if (!result.start.isValidDate()) {\n context.debug(() => {\n console.log(`Removing invalid result: ${result} (${result.start})`);\n });\n return false;\n }\n\n if (result.end && !result.end.isValidDate()) {\n context.debug(() => {\n console.log(`Removing invalid result: ${result} (${result.end})`);\n });\n return false;\n }\n\n if (this.strictMode) {\n return this.isStrictModeValid(context, result);\n }\n\n return true;\n }\n\n isStrictModeValid(context, result) {\n if (result.start.isOnlyWeekdayComponent()) {\n context.debug(() => {\n console.log(`(Strict) Removing weekday only component: ${result} (${result.end})`);\n });\n return false;\n }\n\n if (result.start.isOnlyTime() && (!result.start.isCertain(\"hour\") || !result.start.isCertain(\"minute\"))) {\n context.debug(() => {\n console.log(`(Strict) Removing uncertain time component: ${result} (${result.end})`);\n });\n return false;\n }\n\n return true;\n }\n\n}\n\nexports.default = UnlikelyFormatFilter;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nconst abstractRefiners_1 = require(\"../abstractRefiners\");\n\nclass MergeWeekdayComponentRefiner extends abstractRefiners_1.MergingRefiner {\n mergeResults(textBetween, currentResult, nextResult) {\n const newResult = nextResult.clone();\n newResult.index = currentResult.index;\n newResult.text = currentResult.text + textBetween + newResult.text;\n newResult.start.assign(\"weekday\", currentResult.start.get(\"weekday\"));\n\n if (newResult.end) {\n newResult.end.assign(\"weekday\", currentResult.start.get(\"weekday\"));\n }\n\n return newResult;\n }\n\n shouldMergeResults(textBetween, currentResult, nextResult) {\n const weekdayThenNormalDate = currentResult.start.isOnlyWeekdayComponent() && !currentResult.start.isCertain(\"hour\") && nextResult.start.isCertain(\"day\");\n return weekdayThenNormalDate && textBetween.match(/^,?\\s*$/) != null;\n }\n\n}\n\nexports.default = MergeWeekdayComponentRefiner;","\"use strict\";\n\nvar __createBinding = this && this.__createBinding || (Object.create ? function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, {\n enumerable: true,\n get: function () {\n return m[k];\n }\n });\n} : function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nvar __setModuleDefault = this && this.__setModuleDefault || (Object.create ? function (o, v) {\n Object.defineProperty(o, \"default\", {\n enumerable: true,\n value: v\n });\n} : function (o, v) {\n o[\"default\"] = v;\n});\n\nvar __importStar = this && this.__importStar || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n\n __setModuleDefault(result, mod);\n\n return result;\n};\n\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nconst dayjs_1 = __importDefault(require(\"dayjs\"));\n\nconst AbstractParserWithWordBoundary_1 = require(\"../../../common/parsers/AbstractParserWithWordBoundary\");\n\nconst dayjs_2 = require(\"../../../utils/dayjs\");\n\nconst references = __importStar(require(\"../../../common/casualReferences\"));\n\nconst PATTERN = /(now|today|tonight|tomorrow|tmr|tmrw|yesterday|last\\s*night)(?=\\W|$)/i;\n\nclass ENCasualDateParser extends AbstractParserWithWordBoundary_1.AbstractParserWithWordBoundaryChecking {\n innerPattern(context) {\n return PATTERN;\n }\n\n innerExtract(context, match) {\n let targetDate = dayjs_1.default(context.refDate);\n const lowerText = match[0].toLowerCase();\n const component = context.createParsingComponents();\n\n switch (lowerText) {\n case \"now\":\n return references.now(context.reference);\n\n case \"today\":\n return references.today(context.reference);\n\n case \"yesterday\":\n return references.yesterday(context.reference);\n\n case \"tomorrow\":\n case \"tmr\":\n case \"tmrw\":\n return references.tomorrow(context.reference);\n\n case \"tonight\":\n return references.tonight(context.reference);\n\n default:\n if (lowerText.match(/last\\s*night/)) {\n if (targetDate.hour() > 6) {\n targetDate = targetDate.add(-1, \"day\");\n }\n\n dayjs_2.assignSimilarDate(component, targetDate);\n component.imply(\"hour\", 0);\n }\n\n break;\n }\n\n return component;\n }\n\n}\n\nexports.default = ENCasualDateParser;","\"use strict\";\n\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nconst index_1 = require(\"../../../index\");\n\nconst AbstractParserWithWordBoundary_1 = require(\"../../../common/parsers/AbstractParserWithWordBoundary\");\n\nconst dayjs_1 = __importDefault(require(\"dayjs\"));\n\nconst dayjs_2 = require(\"../../../utils/dayjs\");\n\nconst PATTERN = /(?:this)?\\s{0,3}(morning|afternoon|evening|night|midnight|noon)(?=\\W|$)/i;\n\nclass ENCasualTimeParser extends AbstractParserWithWordBoundary_1.AbstractParserWithWordBoundaryChecking {\n innerPattern() {\n return PATTERN;\n }\n\n innerExtract(context, match) {\n const targetDate = dayjs_1.default(context.refDate);\n const component = context.createParsingComponents();\n\n switch (match[1].toLowerCase()) {\n case \"afternoon\":\n component.imply(\"meridiem\", index_1.Meridiem.PM);\n component.imply(\"hour\", 15);\n break;\n\n case \"evening\":\n case \"night\":\n component.imply(\"meridiem\", index_1.Meridiem.PM);\n component.imply(\"hour\", 20);\n break;\n\n case \"midnight\":\n dayjs_2.implyTheNextDay(component, targetDate);\n component.assign(\"hour\", 0);\n component.assign(\"minute\", 0);\n component.assign(\"second\", 0);\n break;\n\n case \"morning\":\n component.imply(\"meridiem\", index_1.Meridiem.AM);\n component.imply(\"hour\", 6);\n break;\n\n case \"noon\":\n component.imply(\"meridiem\", index_1.Meridiem.AM);\n component.imply(\"hour\", 12);\n break;\n }\n\n return component;\n }\n\n}\n\nexports.default = ENCasualTimeParser;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nconst constants_1 = require(\"../constants\");\n\nconst pattern_1 = require(\"../../../utils/pattern\");\n\nconst AbstractParserWithWordBoundary_1 = require(\"../../../common/parsers/AbstractParserWithWordBoundary\");\n\nconst weekdays_1 = require(\"../../../common/calculation/weekdays\");\n\nconst PATTERN = new RegExp(\"(?:(?:\\\\,|\\\\(|\\\\()\\\\s*)?\" + \"(?:on\\\\s*?)?\" + \"(?:(this|last|past|next)\\\\s*)?\" + `(${pattern_1.matchAnyPattern(constants_1.WEEKDAY_DICTIONARY)})` + \"(?:\\\\s*(?:\\\\,|\\\\)|\\\\)))?\" + \"(?:\\\\s*(this|last|past|next)\\\\s*week)?\" + \"(?=\\\\W|$)\", \"i\");\nconst PREFIX_GROUP = 1;\nconst WEEKDAY_GROUP = 2;\nconst POSTFIX_GROUP = 3;\n\nclass ENWeekdayParser extends AbstractParserWithWordBoundary_1.AbstractParserWithWordBoundaryChecking {\n innerPattern() {\n return PATTERN;\n }\n\n innerExtract(context, match) {\n const dayOfWeek = match[WEEKDAY_GROUP].toLowerCase();\n const weekday = constants_1.WEEKDAY_DICTIONARY[dayOfWeek];\n const prefix = match[PREFIX_GROUP];\n const postfix = match[POSTFIX_GROUP];\n let modifierWord = prefix || postfix;\n modifierWord = modifierWord || \"\";\n modifierWord = modifierWord.toLowerCase();\n let modifier = null;\n\n if (modifierWord == \"last\" || modifierWord == \"past\") {\n modifier = \"last\";\n } else if (modifierWord == \"next\") {\n modifier = \"next\";\n } else if (modifierWord == \"this\") {\n modifier = \"this\";\n }\n\n return weekdays_1.createParsingComponentsAtWeekday(context.reference, weekday, modifier);\n }\n\n}\n\nexports.default = ENWeekdayParser;","\"use strict\";\n\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nconst constants_1 = require(\"../constants\");\n\nconst results_1 = require(\"../../../results\");\n\nconst dayjs_1 = __importDefault(require(\"dayjs\"));\n\nconst AbstractParserWithWordBoundary_1 = require(\"../../../common/parsers/AbstractParserWithWordBoundary\");\n\nconst pattern_1 = require(\"../../../utils/pattern\");\n\nconst PATTERN = new RegExp(`(this|last|past|next|after\\\\s*this)\\\\s*(${pattern_1.matchAnyPattern(constants_1.TIME_UNIT_DICTIONARY)})(?=\\\\s*)` + \"(?=\\\\W|$)\", \"i\");\nconst MODIFIER_WORD_GROUP = 1;\nconst RELATIVE_WORD_GROUP = 2;\n\nclass ENRelativeDateFormatParser extends AbstractParserWithWordBoundary_1.AbstractParserWithWordBoundaryChecking {\n innerPattern() {\n return PATTERN;\n }\n\n innerExtract(context, match) {\n const modifier = match[MODIFIER_WORD_GROUP].toLowerCase();\n const unitWord = match[RELATIVE_WORD_GROUP].toLowerCase();\n const timeunit = constants_1.TIME_UNIT_DICTIONARY[unitWord];\n\n if (modifier == \"next\" || modifier.startsWith(\"after\")) {\n const timeUnits = {};\n timeUnits[timeunit] = 1;\n return results_1.ParsingComponents.createRelativeFromReference(context.reference, timeUnits);\n }\n\n if (modifier == \"last\" || modifier == \"past\") {\n const timeUnits = {};\n timeUnits[timeunit] = -1;\n return results_1.ParsingComponents.createRelativeFromReference(context.reference, timeUnits);\n }\n\n const components = context.createParsingComponents();\n let date = dayjs_1.default(context.reference.instant);\n\n if (unitWord.match(/week/i)) {\n date = date.add(-date.get(\"d\"), \"d\");\n components.imply(\"day\", date.date());\n components.imply(\"month\", date.month() + 1);\n components.imply(\"year\", date.year());\n } else if (unitWord.match(/month/i)) {\n date = date.add(-date.date() + 1, \"d\");\n components.imply(\"day\", date.date());\n components.assign(\"year\", date.year());\n components.assign(\"month\", date.month() + 1);\n } else if (unitWord.match(/year/i)) {\n date = date.add(-date.date() + 1, \"d\");\n date = date.add(-date.month(), \"month\");\n components.imply(\"day\", date.date());\n components.imply(\"month\", date.month() + 1);\n components.assign(\"year\", date.year());\n }\n\n return components;\n }\n\n}\n\nexports.default = ENRelativeDateFormatParser;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nconst constants_1 = require(\"../constants\");\n\nconst results_1 = require(\"../../../results\");\n\nconst AbstractParserWithWordBoundary_1 = require(\"../../../common/parsers/AbstractParserWithWordBoundary\");\n\nconst timeunits_1 = require(\"../../../utils/timeunits\");\n\nconst PATTERN = new RegExp(`(this|last|past|next|after|\\\\+|-)\\\\s*(${constants_1.TIME_UNITS_PATTERN})(?=\\\\W|$)`, \"i\");\n\nclass ENTimeUnitCasualRelativeFormatParser extends AbstractParserWithWordBoundary_1.AbstractParserWithWordBoundaryChecking {\n innerPattern() {\n return PATTERN;\n }\n\n innerExtract(context, match) {\n const prefix = match[1].toLowerCase();\n let timeUnits = constants_1.parseTimeUnits(match[2]);\n\n switch (prefix) {\n case \"last\":\n case \"past\":\n case \"-\":\n timeUnits = timeunits_1.reverseTimeUnits(timeUnits);\n break;\n }\n\n return results_1.ParsingComponents.createRelativeFromReference(context.reference, timeUnits);\n }\n\n}\n\nexports.default = ENTimeUnitCasualRelativeFormatParser;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nconst abstractRefiners_1 = require(\"../../../common/abstractRefiners\");\n\nconst results_1 = require(\"../../../results\");\n\nconst constants_1 = require(\"../constants\");\n\nconst timeunits_1 = require(\"../../../utils/timeunits\");\n\nfunction hasImpliedEarlierReferenceDate(result) {\n return result.text.match(/\\s+(before|from)$/i) != null;\n}\n\nfunction hasImpliedLaterReferenceDate(result) {\n return result.text.match(/\\s+(after|since)$/i) != null;\n}\n\nclass ENMergeRelativeDateRefiner extends abstractRefiners_1.MergingRefiner {\n patternBetween() {\n return /^\\s*$/i;\n }\n\n shouldMergeResults(textBetween, currentResult, nextResult) {\n if (!textBetween.match(this.patternBetween())) {\n return false;\n }\n\n if (!hasImpliedEarlierReferenceDate(currentResult) && !hasImpliedLaterReferenceDate(currentResult)) {\n return false;\n }\n\n return !!nextResult.start.get(\"day\") && !!nextResult.start.get(\"month\") && !!nextResult.start.get(\"year\");\n }\n\n mergeResults(textBetween, currentResult, nextResult) {\n let timeUnits = constants_1.parseTimeUnits(currentResult.text);\n\n if (hasImpliedEarlierReferenceDate(currentResult)) {\n timeUnits = timeunits_1.reverseTimeUnits(timeUnits);\n }\n\n const components = results_1.ParsingComponents.createRelativeFromReference(new results_1.ReferenceWithTimezone(nextResult.start.date()), timeUnits);\n return new results_1.ParsingResult(nextResult.reference, currentResult.index, `${currentResult.text}${textBetween}${nextResult.text}`, components);\n }\n\n}\n\nexports.default = ENMergeRelativeDateRefiner;","\"use strict\";\n\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.createConfiguration = exports.createCasualConfiguration = exports.parseDate = exports.parse = exports.strict = exports.casual = void 0;\n\nconst configurations_1 = require(\"../../configurations\");\n\nconst chrono_1 = require(\"../../chrono\");\n\nconst SlashDateFormatParser_1 = __importDefault(require(\"../../common/parsers/SlashDateFormatParser\"));\n\nconst ISOFormatParser_1 = __importDefault(require(\"../../common/parsers/ISOFormatParser\"));\n\nconst DETimeExpressionParser_1 = __importDefault(require(\"./parsers/DETimeExpressionParser\"));\n\nconst DEWeekdayParser_1 = __importDefault(require(\"./parsers/DEWeekdayParser\"));\n\nconst DESpecificTimeExpressionParser_1 = __importDefault(require(\"./parsers/DESpecificTimeExpressionParser\"));\n\nconst DEMergeDateRangeRefiner_1 = __importDefault(require(\"./refiners/DEMergeDateRangeRefiner\"));\n\nconst DEMergeDateTimeRefiner_1 = __importDefault(require(\"./refiners/DEMergeDateTimeRefiner\"));\n\nconst DECasualDateParser_1 = __importDefault(require(\"./parsers/DECasualDateParser\"));\n\nconst DECasualTimeParser_1 = __importDefault(require(\"./parsers/DECasualTimeParser\"));\n\nconst DEMonthNameLittleEndianParser_1 = __importDefault(require(\"./parsers/DEMonthNameLittleEndianParser\"));\n\nconst DETimeUnitRelativeFormatParser_1 = __importDefault(require(\"./parsers/DETimeUnitRelativeFormatParser\"));\n\nexports.casual = new chrono_1.Chrono(createCasualConfiguration());\nexports.strict = new chrono_1.Chrono(createConfiguration(true));\n\nfunction parse(text, ref, option) {\n return exports.casual.parse(text, ref, option);\n}\n\nexports.parse = parse;\n\nfunction parseDate(text, ref, option) {\n return exports.casual.parseDate(text, ref, option);\n}\n\nexports.parseDate = parseDate;\n\nfunction createCasualConfiguration(littleEndian = true) {\n const option = createConfiguration(false, littleEndian);\n option.parsers.unshift(new DECasualTimeParser_1.default());\n option.parsers.unshift(new DECasualDateParser_1.default());\n option.parsers.unshift(new DETimeUnitRelativeFormatParser_1.default());\n return option;\n}\n\nexports.createCasualConfiguration = createCasualConfiguration;\n\nfunction createConfiguration(strictMode = true, littleEndian = true) {\n return configurations_1.includeCommonConfiguration({\n parsers: [new ISOFormatParser_1.default(), new SlashDateFormatParser_1.default(littleEndian), new DETimeExpressionParser_1.default(), new DESpecificTimeExpressionParser_1.default(), new DEMonthNameLittleEndianParser_1.default(), new DEWeekdayParser_1.default()],\n refiners: [new DEMergeDateRangeRefiner_1.default(), new DEMergeDateTimeRefiner_1.default()]\n }, strictMode);\n}\n\nexports.createConfiguration = createConfiguration;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nconst AbstractTimeExpressionParser_1 = require(\"../../../common/parsers/AbstractTimeExpressionParser\");\n\nclass DETimeExpressionParser extends AbstractTimeExpressionParser_1.AbstractTimeExpressionParser {\n primaryPrefix() {\n return \"(?:(?:um|von)\\\\s*)?\";\n }\n\n followingPhase() {\n return \"\\\\s*(?:\\\\-|\\\\–|\\\\~|\\\\〜|bis)\\\\s*\";\n }\n\n extractPrimaryTimeComponents(context, match) {\n if (match[0].match(/^\\s*\\d{4}\\s*$/)) {\n return null;\n }\n\n return super.extractPrimaryTimeComponents(context, match);\n }\n\n}\n\nexports.default = DETimeExpressionParser;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nconst constants_1 = require(\"../constants\");\n\nconst pattern_1 = require(\"../../../utils/pattern\");\n\nconst AbstractParserWithWordBoundary_1 = require(\"../../../common/parsers/AbstractParserWithWordBoundary\");\n\nconst weekdays_1 = require(\"../../../common/calculation/weekdays\");\n\nconst PATTERN = new RegExp(\"(?:(?:\\\\,|\\\\(|\\\\()\\\\s*)?\" + \"(?:a[mn]\\\\s*?)?\" + \"(?:(diese[mn]|letzte[mn]|n(?:ä|ae)chste[mn])\\\\s*)?\" + `(${pattern_1.matchAnyPattern(constants_1.WEEKDAY_DICTIONARY)})` + \"(?:\\\\s*(?:\\\\,|\\\\)|\\\\)))?\" + \"(?:\\\\s*(diese|letzte|n(?:ä|ae)chste)\\\\s*woche)?\" + \"(?=\\\\W|$)\", \"i\");\nconst PREFIX_GROUP = 1;\nconst SUFFIX_GROUP = 3;\nconst WEEKDAY_GROUP = 2;\n\nclass DEWeekdayParser extends AbstractParserWithWordBoundary_1.AbstractParserWithWordBoundaryChecking {\n innerPattern() {\n return PATTERN;\n }\n\n innerExtract(context, match) {\n const dayOfWeek = match[WEEKDAY_GROUP].toLowerCase();\n const offset = constants_1.WEEKDAY_DICTIONARY[dayOfWeek];\n const prefix = match[PREFIX_GROUP];\n const postfix = match[SUFFIX_GROUP];\n let modifierWord = prefix || postfix;\n modifierWord = modifierWord || \"\";\n modifierWord = modifierWord.toLowerCase();\n let modifier = null;\n\n if (modifierWord.match(/letzte/)) {\n modifier = \"last\";\n } else if (modifierWord.match(/chste/)) {\n modifier = \"next\";\n } else if (modifierWord.match(/diese/)) {\n modifier = \"this\";\n }\n\n return weekdays_1.createParsingComponentsAtWeekday(context.reference, offset, modifier);\n }\n\n}\n\nexports.default = DEWeekdayParser;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nconst index_1 = require(\"../../../index\");\n\nconst FIRST_REG_PATTERN = new RegExp(\"(^|\\\\s|T)\" + \"(?:(?:um|von)\\\\s*)?\" + \"(\\\\d{1,2})(?:h|:)?\" + \"(?:(\\\\d{1,2})(?:m|:)?)?\" + \"(?:(\\\\d{1,2})(?:s)?)?\" + \"(?:\\\\s*Uhr)?\" + \"(?:\\\\s*(morgens|vormittags|nachmittags|abends|nachts|am\\\\s+(?:Morgen|Vormittag|Nachmittag|Abend)|in\\\\s+der\\\\s+Nacht))?\" + \"(?=\\\\W|$)\", \"i\");\nconst SECOND_REG_PATTERN = new RegExp(\"^\\\\s*(\\\\-|\\\\–|\\\\~|\\\\〜|bis(?:\\\\s+um)?|\\\\?)\\\\s*\" + \"(\\\\d{1,2})(?:h|:)?\" + \"(?:(\\\\d{1,2})(?:m|:)?)?\" + \"(?:(\\\\d{1,2})(?:s)?)?\" + \"(?:\\\\s*Uhr)?\" + \"(?:\\\\s*(morgens|vormittags|nachmittags|abends|nachts|am\\\\s+(?:Morgen|Vormittag|Nachmittag|Abend)|in\\\\s+der\\\\s+Nacht))?\" + \"(?=\\\\W|$)\", \"i\");\nconst HOUR_GROUP = 2;\nconst MINUTE_GROUP = 3;\nconst SECOND_GROUP = 4;\nconst AM_PM_HOUR_GROUP = 5;\n\nclass DESpecificTimeExpressionParser {\n pattern(context) {\n return FIRST_REG_PATTERN;\n }\n\n extract(context, match) {\n const result = context.createParsingResult(match.index + match[1].length, match[0].substring(match[1].length));\n\n if (result.text.match(/^\\d{4}$/)) {\n match.index += match[0].length;\n return null;\n }\n\n result.start = DESpecificTimeExpressionParser.extractTimeComponent(result.start.clone(), match);\n\n if (!result.start) {\n match.index += match[0].length;\n return null;\n }\n\n const remainingText = context.text.substring(match.index + match[0].length);\n const secondMatch = SECOND_REG_PATTERN.exec(remainingText);\n\n if (secondMatch) {\n result.end = DESpecificTimeExpressionParser.extractTimeComponent(result.start.clone(), secondMatch);\n\n if (result.end) {\n result.text += secondMatch[0];\n }\n }\n\n return result;\n }\n\n static extractTimeComponent(extractingComponents, match) {\n let hour = 0;\n let minute = 0;\n let meridiem = null;\n hour = parseInt(match[HOUR_GROUP]);\n\n if (match[MINUTE_GROUP] != null) {\n minute = parseInt(match[MINUTE_GROUP]);\n }\n\n if (minute >= 60 || hour > 24) {\n return null;\n }\n\n if (hour >= 12) {\n meridiem = index_1.Meridiem.PM;\n }\n\n if (match[AM_PM_HOUR_GROUP] != null) {\n if (hour > 12) return null;\n const ampm = match[AM_PM_HOUR_GROUP].toLowerCase();\n\n if (ampm.match(/morgen|vormittag/)) {\n meridiem = index_1.Meridiem.AM;\n\n if (hour == 12) {\n hour = 0;\n }\n }\n\n if (ampm.match(/nachmittag|abend/)) {\n meridiem = index_1.Meridiem.PM;\n\n if (hour != 12) {\n hour += 12;\n }\n }\n\n if (ampm.match(/nacht/)) {\n if (hour == 12) {\n meridiem = index_1.Meridiem.AM;\n hour = 0;\n } else if (hour < 6) {\n meridiem = index_1.Meridiem.AM;\n } else {\n meridiem = index_1.Meridiem.PM;\n hour += 12;\n }\n }\n }\n\n extractingComponents.assign(\"hour\", hour);\n extractingComponents.assign(\"minute\", minute);\n\n if (meridiem !== null) {\n extractingComponents.assign(\"meridiem\", meridiem);\n } else {\n if (hour < 12) {\n extractingComponents.imply(\"meridiem\", index_1.Meridiem.AM);\n } else {\n extractingComponents.imply(\"meridiem\", index_1.Meridiem.PM);\n }\n }\n\n if (match[SECOND_GROUP] != null) {\n const second = parseInt(match[SECOND_GROUP]);\n if (second >= 60) return null;\n extractingComponents.assign(\"second\", second);\n }\n\n return extractingComponents;\n }\n\n}\n\nexports.default = DESpecificTimeExpressionParser;","\"use strict\";\n\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nconst AbstractMergeDateRangeRefiner_1 = __importDefault(require(\"../../../common/refiners/AbstractMergeDateRangeRefiner\"));\n\nclass DEMergeDateRangeRefiner extends AbstractMergeDateRangeRefiner_1.default {\n patternBetween() {\n return /^\\s*(bis(?:\\s*(?:am|zum))?|-)\\s*$/i;\n }\n\n}\n\nexports.default = DEMergeDateRangeRefiner;","\"use strict\";\n\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nconst AbstractMergeDateTimeRefiner_1 = __importDefault(require(\"../../../common/refiners/AbstractMergeDateTimeRefiner\"));\n\nclass DEMergeDateTimeRefiner extends AbstractMergeDateTimeRefiner_1.default {\n patternBetween() {\n return new RegExp(\"^\\\\s*(T|um|am|,|-)?\\\\s*$\");\n }\n\n}\n\nexports.default = DEMergeDateTimeRefiner;","\"use strict\";\n\nvar __createBinding = this && this.__createBinding || (Object.create ? function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, {\n enumerable: true,\n get: function () {\n return m[k];\n }\n });\n} : function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nvar __setModuleDefault = this && this.__setModuleDefault || (Object.create ? function (o, v) {\n Object.defineProperty(o, \"default\", {\n enumerable: true,\n value: v\n });\n} : function (o, v) {\n o[\"default\"] = v;\n});\n\nvar __importStar = this && this.__importStar || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n\n __setModuleDefault(result, mod);\n\n return result;\n};\n\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nconst dayjs_1 = __importDefault(require(\"dayjs\"));\n\nconst AbstractParserWithWordBoundary_1 = require(\"../../../common/parsers/AbstractParserWithWordBoundary\");\n\nconst dayjs_2 = require(\"../../../utils/dayjs\");\n\nconst DECasualTimeParser_1 = __importDefault(require(\"./DECasualTimeParser\"));\n\nconst references = __importStar(require(\"../../../common/casualReferences\"));\n\nconst PATTERN = new RegExp(`(jetzt|heute|morgen|übermorgen|uebermorgen|gestern|vorgestern|letzte\\\\s*nacht)` + `(?:\\\\s*(morgen|vormittag|mittags?|nachmittag|abend|nacht|mitternacht))?` + `(?=\\\\W|$)`, \"i\");\nconst DATE_GROUP = 1;\nconst TIME_GROUP = 2;\n\nclass DECasualDateParser extends AbstractParserWithWordBoundary_1.AbstractParserWithWordBoundaryChecking {\n innerPattern(context) {\n return PATTERN;\n }\n\n innerExtract(context, match) {\n let targetDate = dayjs_1.default(context.refDate);\n const dateKeyword = (match[DATE_GROUP] || \"\").toLowerCase();\n const timeKeyword = (match[TIME_GROUP] || \"\").toLowerCase();\n let component = context.createParsingComponents();\n\n switch (dateKeyword) {\n case \"jetzt\":\n component = references.now(context.reference);\n break;\n\n case \"heute\":\n component = references.today(context.reference);\n break;\n\n case \"morgen\":\n dayjs_2.assignTheNextDay(component, targetDate);\n break;\n\n case \"übermorgen\":\n case \"uebermorgen\":\n targetDate = targetDate.add(1, \"day\");\n dayjs_2.assignTheNextDay(component, targetDate);\n break;\n\n case \"gestern\":\n targetDate = targetDate.add(-1, \"day\");\n dayjs_2.assignSimilarDate(component, targetDate);\n dayjs_2.implySimilarTime(component, targetDate);\n break;\n\n case \"vorgestern\":\n targetDate = targetDate.add(-2, \"day\");\n dayjs_2.assignSimilarDate(component, targetDate);\n dayjs_2.implySimilarTime(component, targetDate);\n break;\n\n default:\n if (dateKeyword.match(/letzte\\s*nacht/)) {\n if (targetDate.hour() > 6) {\n targetDate = targetDate.add(-1, \"day\");\n }\n\n dayjs_2.assignSimilarDate(component, targetDate);\n component.imply(\"hour\", 0);\n }\n\n break;\n }\n\n if (timeKeyword) {\n component = DECasualTimeParser_1.default.extractTimeComponents(component, timeKeyword);\n }\n\n return component;\n }\n\n}\n\nexports.default = DECasualDateParser;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nconst years_1 = require(\"../../../calculation/years\");\n\nconst constants_1 = require(\"../constants\");\n\nconst constants_2 = require(\"../constants\");\n\nconst pattern_1 = require(\"../../../utils/pattern\");\n\nconst AbstractParserWithWordBoundary_1 = require(\"../../../common/parsers/AbstractParserWithWordBoundary\");\n\nconst PATTERN = new RegExp(\"(?:am\\\\s*?)?\" + \"(?:den\\\\s*?)?\" + `([0-9]{1,2})\\\\.` + `(?:\\\\s*(?:bis(?:\\\\s*(?:am|zum))?|\\\\-|\\\\–|\\\\s)\\\\s*([0-9]{1,2})\\\\.?)?\\\\s*` + `(${pattern_1.matchAnyPattern(constants_1.MONTH_DICTIONARY)})` + `(?:(?:-|/|,?\\\\s*)(${constants_2.YEAR_PATTERN}(?![^\\\\s]\\\\d)))?` + `(?=\\\\W|$)`, \"i\");\nconst DATE_GROUP = 1;\nconst DATE_TO_GROUP = 2;\nconst MONTH_NAME_GROUP = 3;\nconst YEAR_GROUP = 4;\n\nclass DEMonthNameLittleEndianParser extends AbstractParserWithWordBoundary_1.AbstractParserWithWordBoundaryChecking {\n innerPattern() {\n return PATTERN;\n }\n\n innerExtract(context, match) {\n const result = context.createParsingResult(match.index, match[0]);\n const month = constants_1.MONTH_DICTIONARY[match[MONTH_NAME_GROUP].toLowerCase()];\n const day = parseInt(match[DATE_GROUP]);\n\n if (day > 31) {\n match.index = match.index + match[DATE_GROUP].length;\n return null;\n }\n\n result.start.assign(\"month\", month);\n result.start.assign(\"day\", day);\n\n if (match[YEAR_GROUP]) {\n const yearNumber = constants_2.parseYear(match[YEAR_GROUP]);\n result.start.assign(\"year\", yearNumber);\n } else {\n const year = years_1.findYearClosestToRef(context.refDate, day, month);\n result.start.imply(\"year\", year);\n }\n\n if (match[DATE_TO_GROUP]) {\n const endDate = parseInt(match[DATE_TO_GROUP]);\n result.end = result.start.clone();\n result.end.assign(\"day\", endDate);\n }\n\n return result;\n }\n\n}\n\nexports.default = DEMonthNameLittleEndianParser;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nconst constants_1 = require(\"../constants\");\n\nconst results_1 = require(\"../../../results\");\n\nconst AbstractParserWithWordBoundary_1 = require(\"../../../common/parsers/AbstractParserWithWordBoundary\");\n\nconst timeunits_1 = require(\"../../../utils/timeunits\");\n\nconst pattern_1 = require(\"../../../utils/pattern\");\n\nclass DETimeUnitAgoFormatParser extends AbstractParserWithWordBoundary_1.AbstractParserWithWordBoundaryChecking {\n constructor() {\n super();\n }\n\n innerPattern() {\n return new RegExp(`(?:\\\\s*((?:nächste|kommende|folgende|letzte|vergangene|vorige|vor(?:her|an)gegangene)(?:s|n|m|r)?|vor|in)\\\\s*)?` + `(${constants_1.NUMBER_PATTERN})?` + `(?:\\\\s*(nächste|kommende|folgende|letzte|vergangene|vorige|vor(?:her|an)gegangene)(?:s|n|m|r)?)?` + `\\\\s*(${pattern_1.matchAnyPattern(constants_1.TIME_UNIT_DICTIONARY)})`, \"i\");\n }\n\n innerExtract(context, match) {\n const num = match[2] ? constants_1.parseNumberPattern(match[2]) : 1;\n const unit = constants_1.TIME_UNIT_DICTIONARY[match[4].toLowerCase()];\n let timeUnits = {};\n timeUnits[unit] = num;\n let modifier = match[1] || match[3] || \"\";\n modifier = modifier.toLowerCase();\n\n if (!modifier) {\n return;\n }\n\n if (/vor/.test(modifier) || /letzte/.test(modifier) || /vergangen/.test(modifier)) {\n timeUnits = timeunits_1.reverseTimeUnits(timeUnits);\n }\n\n return results_1.ParsingComponents.createRelativeFromReference(context.reference, timeUnits);\n }\n\n}\n\nexports.default = DETimeUnitAgoFormatParser;","\"use strict\";\n\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.createConfiguration = exports.createCasualConfiguration = exports.parseDate = exports.parse = exports.strict = exports.casual = void 0;\n\nconst configurations_1 = require(\"../../configurations\");\n\nconst chrono_1 = require(\"../../chrono\");\n\nconst FRCasualDateParser_1 = __importDefault(require(\"./parsers/FRCasualDateParser\"));\n\nconst FRCasualTimeParser_1 = __importDefault(require(\"./parsers/FRCasualTimeParser\"));\n\nconst SlashDateFormatParser_1 = __importDefault(require(\"../../common/parsers/SlashDateFormatParser\"));\n\nconst FRTimeExpressionParser_1 = __importDefault(require(\"./parsers/FRTimeExpressionParser\"));\n\nconst FRMergeDateTimeRefiner_1 = __importDefault(require(\"./refiners/FRMergeDateTimeRefiner\"));\n\nconst FRMergeDateRangeRefiner_1 = __importDefault(require(\"./refiners/FRMergeDateRangeRefiner\"));\n\nconst FRWeekdayParser_1 = __importDefault(require(\"./parsers/FRWeekdayParser\"));\n\nconst FRSpecificTimeExpressionParser_1 = __importDefault(require(\"./parsers/FRSpecificTimeExpressionParser\"));\n\nconst FRMonthNameLittleEndianParser_1 = __importDefault(require(\"./parsers/FRMonthNameLittleEndianParser\"));\n\nconst FRTimeUnitAgoFormatParser_1 = __importDefault(require(\"./parsers/FRTimeUnitAgoFormatParser\"));\n\nconst FRTimeUnitWithinFormatParser_1 = __importDefault(require(\"./parsers/FRTimeUnitWithinFormatParser\"));\n\nconst FRTimeUnitRelativeFormatParser_1 = __importDefault(require(\"./parsers/FRTimeUnitRelativeFormatParser\"));\n\nexports.casual = new chrono_1.Chrono(createCasualConfiguration());\nexports.strict = new chrono_1.Chrono(createConfiguration(true));\n\nfunction parse(text, ref, option) {\n return exports.casual.parse(text, ref, option);\n}\n\nexports.parse = parse;\n\nfunction parseDate(text, ref, option) {\n return exports.casual.parseDate(text, ref, option);\n}\n\nexports.parseDate = parseDate;\n\nfunction createCasualConfiguration(littleEndian = true) {\n const option = createConfiguration(false, littleEndian);\n option.parsers.unshift(new FRCasualDateParser_1.default());\n option.parsers.unshift(new FRCasualTimeParser_1.default());\n option.parsers.unshift(new FRTimeUnitRelativeFormatParser_1.default());\n return option;\n}\n\nexports.createCasualConfiguration = createCasualConfiguration;\n\nfunction createConfiguration(strictMode = true, littleEndian = true) {\n return configurations_1.includeCommonConfiguration({\n parsers: [new SlashDateFormatParser_1.default(littleEndian), new FRMonthNameLittleEndianParser_1.default(), new FRTimeExpressionParser_1.default(), new FRSpecificTimeExpressionParser_1.default(), new FRTimeUnitAgoFormatParser_1.default(), new FRTimeUnitWithinFormatParser_1.default(), new FRWeekdayParser_1.default()],\n refiners: [new FRMergeDateTimeRefiner_1.default(), new FRMergeDateRangeRefiner_1.default()]\n }, strictMode);\n}\n\nexports.createConfiguration = createConfiguration;","\"use strict\";\n\nvar __createBinding = this && this.__createBinding || (Object.create ? function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, {\n enumerable: true,\n get: function () {\n return m[k];\n }\n });\n} : function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nvar __setModuleDefault = this && this.__setModuleDefault || (Object.create ? function (o, v) {\n Object.defineProperty(o, \"default\", {\n enumerable: true,\n value: v\n });\n} : function (o, v) {\n o[\"default\"] = v;\n});\n\nvar __importStar = this && this.__importStar || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n\n __setModuleDefault(result, mod);\n\n return result;\n};\n\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nconst dayjs_1 = __importDefault(require(\"dayjs\"));\n\nconst index_1 = require(\"../../../index\");\n\nconst AbstractParserWithWordBoundary_1 = require(\"../../../common/parsers/AbstractParserWithWordBoundary\");\n\nconst dayjs_2 = require(\"../../../utils/dayjs\");\n\nconst references = __importStar(require(\"../../../common/casualReferences\"));\n\nclass FRCasualDateParser extends AbstractParserWithWordBoundary_1.AbstractParserWithWordBoundaryChecking {\n innerPattern(context) {\n return /(maintenant|aujourd'hui|demain|hier|cette\\s*nuit|la\\s*veille)(?=\\W|$)/i;\n }\n\n innerExtract(context, match) {\n let targetDate = dayjs_1.default(context.refDate);\n const lowerText = match[0].toLowerCase();\n const component = context.createParsingComponents();\n\n switch (lowerText) {\n case \"maintenant\":\n return references.now(context.reference);\n\n case \"aujourd'hui\":\n return references.today(context.reference);\n\n case \"hier\":\n return references.yesterday(context.reference);\n\n case \"demain\":\n return references.tomorrow(context.reference);\n\n default:\n if (lowerText.match(/cette\\s*nuit/)) {\n dayjs_2.assignSimilarDate(component, targetDate);\n component.imply(\"hour\", 22);\n component.imply(\"meridiem\", index_1.Meridiem.PM);\n } else if (lowerText.match(/la\\s*veille/)) {\n targetDate = targetDate.add(-1, \"day\");\n dayjs_2.assignSimilarDate(component, targetDate);\n component.imply(\"hour\", 0);\n }\n\n }\n\n return component;\n }\n\n}\n\nexports.default = FRCasualDateParser;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nconst index_1 = require(\"../../../index\");\n\nconst AbstractParserWithWordBoundary_1 = require(\"../../../common/parsers/AbstractParserWithWordBoundary\");\n\nclass FRCasualTimeParser extends AbstractParserWithWordBoundary_1.AbstractParserWithWordBoundaryChecking {\n innerPattern(context) {\n return /(cet?)?\\s*(matin|soir|après-midi|aprem|a midi|à minuit)(?=\\W|$)/i;\n }\n\n innerExtract(context, match) {\n const suffixLower = match[2].toLowerCase();\n const component = context.createParsingComponents();\n\n switch (suffixLower) {\n case \"après-midi\":\n case \"aprem\":\n component.imply(\"hour\", 14);\n component.imply(\"minute\", 0);\n component.imply(\"meridiem\", index_1.Meridiem.PM);\n break;\n\n case \"soir\":\n component.imply(\"hour\", 18);\n component.imply(\"minute\", 0);\n component.imply(\"meridiem\", index_1.Meridiem.PM);\n break;\n\n case \"matin\":\n component.imply(\"hour\", 8);\n component.imply(\"minute\", 0);\n component.imply(\"meridiem\", index_1.Meridiem.AM);\n break;\n\n case \"a midi\":\n component.imply(\"hour\", 12);\n component.imply(\"minute\", 0);\n component.imply(\"meridiem\", index_1.Meridiem.AM);\n break;\n\n case \"à minuit\":\n component.imply(\"hour\", 0);\n component.imply(\"meridiem\", index_1.Meridiem.AM);\n break;\n }\n\n return component;\n }\n\n}\n\nexports.default = FRCasualTimeParser;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nconst AbstractTimeExpressionParser_1 = require(\"../../../common/parsers/AbstractTimeExpressionParser\");\n\nclass FRTimeExpressionParser extends AbstractTimeExpressionParser_1.AbstractTimeExpressionParser {\n primaryPrefix() {\n return \"(?:(?:[àa])\\\\s*)?\";\n }\n\n followingPhase() {\n return \"\\\\s*(?:\\\\-|\\\\–|\\\\~|\\\\〜|[àa]|\\\\?)\\\\s*\";\n }\n\n extractPrimaryTimeComponents(context, match) {\n if (match[0].match(/^\\s*\\d{4}\\s*$/)) {\n return null;\n }\n\n return super.extractPrimaryTimeComponents(context, match);\n }\n\n}\n\nexports.default = FRTimeExpressionParser;","\"use strict\";\n\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nconst AbstractMergeDateTimeRefiner_1 = __importDefault(require(\"../../../common/refiners/AbstractMergeDateTimeRefiner\"));\n\nclass FRMergeDateTimeRefiner extends AbstractMergeDateTimeRefiner_1.default {\n patternBetween() {\n return new RegExp(\"^\\\\s*(T|à|a|vers|de|,|-)?\\\\s*$\");\n }\n\n}\n\nexports.default = FRMergeDateTimeRefiner;","\"use strict\";\n\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nconst AbstractMergeDateRangeRefiner_1 = __importDefault(require(\"../../../common/refiners/AbstractMergeDateRangeRefiner\"));\n\nclass FRMergeDateRangeRefiner extends AbstractMergeDateRangeRefiner_1.default {\n patternBetween() {\n return /^\\s*(à|a|-)\\s*$/i;\n }\n\n}\n\nexports.default = FRMergeDateRangeRefiner;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nconst constants_1 = require(\"../constants\");\n\nconst pattern_1 = require(\"../../../utils/pattern\");\n\nconst AbstractParserWithWordBoundary_1 = require(\"../../../common/parsers/AbstractParserWithWordBoundary\");\n\nconst weekdays_1 = require(\"../../../common/calculation/weekdays\");\n\nconst PATTERN = new RegExp(\"(?:(?:\\\\,|\\\\(|\\\\()\\\\s*)?\" + \"(?:(?:ce)\\\\s*)?\" + `(${pattern_1.matchAnyPattern(constants_1.WEEKDAY_DICTIONARY)})` + \"(?:\\\\s*(?:\\\\,|\\\\)|\\\\)))?\" + \"(?:\\\\s*(dernier|prochain)\\\\s*)?\" + \"(?=\\\\W|\\\\d|$)\", \"i\");\nconst WEEKDAY_GROUP = 1;\nconst POSTFIX_GROUP = 2;\n\nclass FRWeekdayParser extends AbstractParserWithWordBoundary_1.AbstractParserWithWordBoundaryChecking {\n innerPattern() {\n return PATTERN;\n }\n\n innerExtract(context, match) {\n const dayOfWeek = match[WEEKDAY_GROUP].toLowerCase();\n const weekday = constants_1.WEEKDAY_DICTIONARY[dayOfWeek];\n\n if (weekday === undefined) {\n return null;\n }\n\n let suffix = match[POSTFIX_GROUP];\n suffix = suffix || \"\";\n suffix = suffix.toLowerCase();\n let modifier = null;\n\n if (suffix == \"dernier\") {\n modifier = \"last\";\n } else if (suffix == \"prochain\") {\n modifier = \"next\";\n }\n\n return weekdays_1.createParsingComponentsAtWeekday(context.reference, weekday, modifier);\n }\n\n}\n\nexports.default = FRWeekdayParser;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nconst index_1 = require(\"../../../index\");\n\nconst FIRST_REG_PATTERN = new RegExp(\"(^|\\\\s|T)\" + \"(?:(?:[àa])\\\\s*)?\" + \"(\\\\d{1,2})(?:h|:)?\" + \"(?:(\\\\d{1,2})(?:m|:)?)?\" + \"(?:(\\\\d{1,2})(?:s|:)?)?\" + \"(?:\\\\s*(A\\\\.M\\\\.|P\\\\.M\\\\.|AM?|PM?))?\" + \"(?=\\\\W|$)\", \"i\");\nconst SECOND_REG_PATTERN = new RegExp(\"^\\\\s*(\\\\-|\\\\–|\\\\~|\\\\〜|[àa]|\\\\?)\\\\s*\" + \"(\\\\d{1,2})(?:h|:)?\" + \"(?:(\\\\d{1,2})(?:m|:)?)?\" + \"(?:(\\\\d{1,2})(?:s|:)?)?\" + \"(?:\\\\s*(A\\\\.M\\\\.|P\\\\.M\\\\.|AM?|PM?))?\" + \"(?=\\\\W|$)\", \"i\");\nconst HOUR_GROUP = 2;\nconst MINUTE_GROUP = 3;\nconst SECOND_GROUP = 4;\nconst AM_PM_HOUR_GROUP = 5;\n\nclass FRSpecificTimeExpressionParser {\n pattern(context) {\n return FIRST_REG_PATTERN;\n }\n\n extract(context, match) {\n const result = context.createParsingResult(match.index + match[1].length, match[0].substring(match[1].length));\n\n if (result.text.match(/^\\d{4}$/)) {\n match.index += match[0].length;\n return null;\n }\n\n result.start = FRSpecificTimeExpressionParser.extractTimeComponent(result.start.clone(), match);\n\n if (!result.start) {\n match.index += match[0].length;\n return null;\n }\n\n const remainingText = context.text.substring(match.index + match[0].length);\n const secondMatch = SECOND_REG_PATTERN.exec(remainingText);\n\n if (secondMatch) {\n result.end = FRSpecificTimeExpressionParser.extractTimeComponent(result.start.clone(), secondMatch);\n\n if (result.end) {\n result.text += secondMatch[0];\n }\n }\n\n return result;\n }\n\n static extractTimeComponent(extractingComponents, match) {\n let hour = 0;\n let minute = 0;\n let meridiem = null;\n hour = parseInt(match[HOUR_GROUP]);\n\n if (match[MINUTE_GROUP] != null) {\n minute = parseInt(match[MINUTE_GROUP]);\n }\n\n if (minute >= 60 || hour > 24) {\n return null;\n }\n\n if (hour >= 12) {\n meridiem = index_1.Meridiem.PM;\n }\n\n if (match[AM_PM_HOUR_GROUP] != null) {\n if (hour > 12) return null;\n const ampm = match[AM_PM_HOUR_GROUP][0].toLowerCase();\n\n if (ampm == \"a\") {\n meridiem = index_1.Meridiem.AM;\n\n if (hour == 12) {\n hour = 0;\n }\n }\n\n if (ampm == \"p\") {\n meridiem = index_1.Meridiem.PM;\n\n if (hour != 12) {\n hour += 12;\n }\n }\n }\n\n extractingComponents.assign(\"hour\", hour);\n extractingComponents.assign(\"minute\", minute);\n\n if (meridiem !== null) {\n extractingComponents.assign(\"meridiem\", meridiem);\n } else {\n if (hour < 12) {\n extractingComponents.imply(\"meridiem\", index_1.Meridiem.AM);\n } else {\n extractingComponents.imply(\"meridiem\", index_1.Meridiem.PM);\n }\n }\n\n if (match[SECOND_GROUP] != null) {\n const second = parseInt(match[SECOND_GROUP]);\n if (second >= 60) return null;\n extractingComponents.assign(\"second\", second);\n }\n\n return extractingComponents;\n }\n\n}\n\nexports.default = FRSpecificTimeExpressionParser;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nconst years_1 = require(\"../../../calculation/years\");\n\nconst constants_1 = require(\"../constants\");\n\nconst constants_2 = require(\"../constants\");\n\nconst constants_3 = require(\"../constants\");\n\nconst pattern_1 = require(\"../../../utils/pattern\");\n\nconst AbstractParserWithWordBoundary_1 = require(\"../../../common/parsers/AbstractParserWithWordBoundary\");\n\nconst PATTERN = new RegExp(\"(?:on\\\\s*?)?\" + `(${constants_3.ORDINAL_NUMBER_PATTERN})` + `(?:\\\\s*(?:au|\\\\-|\\\\–|jusqu'au?|\\\\s)\\\\s*(${constants_3.ORDINAL_NUMBER_PATTERN}))?` + `(?:-|/|\\\\s*(?:de)?\\\\s*)` + `(${pattern_1.matchAnyPattern(constants_1.MONTH_DICTIONARY)})` + `(?:(?:-|/|,?\\\\s*)(${constants_2.YEAR_PATTERN}(?![^\\\\s]\\\\d)))?` + `(?=\\\\W|$)`, \"i\");\nconst DATE_GROUP = 1;\nconst DATE_TO_GROUP = 2;\nconst MONTH_NAME_GROUP = 3;\nconst YEAR_GROUP = 4;\n\nclass FRMonthNameLittleEndianParser extends AbstractParserWithWordBoundary_1.AbstractParserWithWordBoundaryChecking {\n innerPattern() {\n return PATTERN;\n }\n\n innerExtract(context, match) {\n const result = context.createParsingResult(match.index, match[0]);\n const month = constants_1.MONTH_DICTIONARY[match[MONTH_NAME_GROUP].toLowerCase()];\n const day = constants_3.parseOrdinalNumberPattern(match[DATE_GROUP]);\n\n if (day > 31) {\n match.index = match.index + match[DATE_GROUP].length;\n return null;\n }\n\n result.start.assign(\"month\", month);\n result.start.assign(\"day\", day);\n\n if (match[YEAR_GROUP]) {\n const yearNumber = constants_2.parseYear(match[YEAR_GROUP]);\n result.start.assign(\"year\", yearNumber);\n } else {\n const year = years_1.findYearClosestToRef(context.refDate, day, month);\n result.start.imply(\"year\", year);\n }\n\n if (match[DATE_TO_GROUP]) {\n const endDate = constants_3.parseOrdinalNumberPattern(match[DATE_TO_GROUP]);\n result.end = result.start.clone();\n result.end.assign(\"day\", endDate);\n }\n\n return result;\n }\n\n}\n\nexports.default = FRMonthNameLittleEndianParser;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nconst constants_1 = require(\"../constants\");\n\nconst results_1 = require(\"../../../results\");\n\nconst AbstractParserWithWordBoundary_1 = require(\"../../../common/parsers/AbstractParserWithWordBoundary\");\n\nconst timeunits_1 = require(\"../../../utils/timeunits\");\n\nclass FRTimeUnitAgoFormatParser extends AbstractParserWithWordBoundary_1.AbstractParserWithWordBoundaryChecking {\n constructor() {\n super();\n }\n\n innerPattern() {\n return new RegExp(`il y a\\\\s*(${constants_1.TIME_UNITS_PATTERN})(?=(?:\\\\W|$))`, \"i\");\n }\n\n innerExtract(context, match) {\n const timeUnits = constants_1.parseTimeUnits(match[1]);\n const outputTimeUnits = timeunits_1.reverseTimeUnits(timeUnits);\n return results_1.ParsingComponents.createRelativeFromReference(context.reference, outputTimeUnits);\n }\n\n}\n\nexports.default = FRTimeUnitAgoFormatParser;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nconst constants_1 = require(\"../constants\");\n\nconst results_1 = require(\"../../../results\");\n\nconst AbstractParserWithWordBoundary_1 = require(\"../../../common/parsers/AbstractParserWithWordBoundary\");\n\nclass FRTimeUnitWithinFormatParser extends AbstractParserWithWordBoundary_1.AbstractParserWithWordBoundaryChecking {\n innerPattern() {\n return new RegExp(`(?:dans|en|pour|pendant|de)\\\\s*(${constants_1.TIME_UNITS_PATTERN})(?=\\\\W|$)`, \"i\");\n }\n\n innerExtract(context, match) {\n const timeUnits = constants_1.parseTimeUnits(match[1]);\n return results_1.ParsingComponents.createRelativeFromReference(context.reference, timeUnits);\n }\n\n}\n\nexports.default = FRTimeUnitWithinFormatParser;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nconst constants_1 = require(\"../constants\");\n\nconst results_1 = require(\"../../../results\");\n\nconst AbstractParserWithWordBoundary_1 = require(\"../../../common/parsers/AbstractParserWithWordBoundary\");\n\nconst timeunits_1 = require(\"../../../utils/timeunits\");\n\nconst pattern_1 = require(\"../../../utils/pattern\");\n\nclass FRTimeUnitAgoFormatParser extends AbstractParserWithWordBoundary_1.AbstractParserWithWordBoundaryChecking {\n constructor() {\n super();\n }\n\n innerPattern() {\n return new RegExp(`(?:les?|la|l'|du|des?)\\\\s*` + `(${constants_1.NUMBER_PATTERN})?` + `(?:\\\\s*(prochaine?s?|derni[eè]re?s?|pass[ée]e?s?|pr[ée]c[ée]dents?|suivante?s?))?` + `\\\\s*(${pattern_1.matchAnyPattern(constants_1.TIME_UNIT_DICTIONARY)})` + `(?:\\\\s*(prochaine?s?|derni[eè]re?s?|pass[ée]e?s?|pr[ée]c[ée]dents?|suivante?s?))?`, \"i\");\n }\n\n innerExtract(context, match) {\n const num = match[1] ? constants_1.parseNumberPattern(match[1]) : 1;\n const unit = constants_1.TIME_UNIT_DICTIONARY[match[3].toLowerCase()];\n let timeUnits = {};\n timeUnits[unit] = num;\n let modifier = match[2] || match[4] || \"\";\n modifier = modifier.toLowerCase();\n\n if (!modifier) {\n return;\n }\n\n if (/derni[eè]re?s?/.test(modifier) || /pass[ée]e?s?/.test(modifier) || /pr[ée]c[ée]dents?/.test(modifier)) {\n timeUnits = timeunits_1.reverseTimeUnits(timeUnits);\n }\n\n return results_1.ParsingComponents.createRelativeFromReference(context.reference, timeUnits);\n }\n\n}\n\nexports.default = FRTimeUnitAgoFormatParser;","\"use strict\";\n\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.createConfiguration = exports.createCasualConfiguration = exports.parseDate = exports.parse = exports.strict = exports.casual = void 0;\n\nconst JPStandardParser_1 = __importDefault(require(\"./parsers/JPStandardParser\"));\n\nconst JPMergeDateRangeRefiner_1 = __importDefault(require(\"./refiners/JPMergeDateRangeRefiner\"));\n\nconst JPCasualDateParser_1 = __importDefault(require(\"./parsers/JPCasualDateParser\"));\n\nconst chrono_1 = require(\"../../chrono\");\n\nexports.casual = new chrono_1.Chrono(createCasualConfiguration());\nexports.strict = new chrono_1.Chrono(createConfiguration());\n\nfunction parse(text, ref, option) {\n return exports.casual.parse(text, ref, option);\n}\n\nexports.parse = parse;\n\nfunction parseDate(text, ref, option) {\n return exports.casual.parseDate(text, ref, option);\n}\n\nexports.parseDate = parseDate;\n\nfunction createCasualConfiguration() {\n const option = createConfiguration();\n option.parsers.unshift(new JPCasualDateParser_1.default());\n return option;\n}\n\nexports.createCasualConfiguration = createCasualConfiguration;\n\nfunction createConfiguration() {\n return {\n parsers: [new JPStandardParser_1.default()],\n refiners: [new JPMergeDateRangeRefiner_1.default()]\n };\n}\n\nexports.createConfiguration = createConfiguration;","\"use strict\";\n\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nconst constants_1 = require(\"../constants\");\n\nconst years_1 = require(\"../../../calculation/years\");\n\nconst dayjs_1 = __importDefault(require(\"dayjs\"));\n\nconst PATTERN = /(?:(?:([同今本])|((昭和|平成|令和)?([0-90-9]{1,4}|元)))年\\s*)?([0-90-9]{1,2})月\\s*([0-90-9]{1,2})日/i;\nconst SPECIAL_YEAR_GROUP = 1;\nconst TYPICAL_YEAR_GROUP = 2;\nconst ERA_GROUP = 3;\nconst YEAR_NUMBER_GROUP = 4;\nconst MONTH_GROUP = 5;\nconst DAY_GROUP = 6;\n\nclass JPStandardParser {\n pattern() {\n return PATTERN;\n }\n\n extract(context, match) {\n const month = parseInt(constants_1.toHankaku(match[MONTH_GROUP]));\n const day = parseInt(constants_1.toHankaku(match[DAY_GROUP]));\n const components = context.createParsingComponents({\n day: day,\n month: month\n });\n\n if (match[SPECIAL_YEAR_GROUP] && match[SPECIAL_YEAR_GROUP].match(\"同|今|本\")) {\n const moment = dayjs_1.default(context.refDate);\n components.assign(\"year\", moment.year());\n }\n\n if (match[TYPICAL_YEAR_GROUP]) {\n const yearNumText = match[YEAR_NUMBER_GROUP];\n let year = yearNumText == \"元\" ? 1 : parseInt(constants_1.toHankaku(yearNumText));\n\n if (match[ERA_GROUP] == \"令和\") {\n year += 2018;\n } else if (match[ERA_GROUP] == \"平成\") {\n year += 1988;\n } else if (match[ERA_GROUP] == \"昭和\") {\n year += 1925;\n }\n\n components.assign(\"year\", year);\n } else {\n const year = years_1.findYearClosestToRef(context.refDate, day, month);\n components.imply(\"year\", year);\n }\n\n return components;\n }\n\n}\n\nexports.default = JPStandardParser;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.toHankaku = void 0;\n\nfunction toHankaku(text) {\n return String(text).replace(/\\u2019/g, \"\\u0027\").replace(/\\u201D/g, \"\\u0022\").replace(/\\u3000/g, \"\\u0020\").replace(/\\uFFE5/g, \"\\u00A5\").replace(/[\\uFF01\\uFF03-\\uFF06\\uFF08\\uFF09\\uFF0C-\\uFF19\\uFF1C-\\uFF1F\\uFF21-\\uFF3B\\uFF3D\\uFF3F\\uFF41-\\uFF5B\\uFF5D\\uFF5E]/g, alphaNum);\n}\n\nexports.toHankaku = toHankaku;\n\nfunction alphaNum(token) {\n return String.fromCharCode(token.charCodeAt(0) - 65248);\n}","\"use strict\";\n\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nconst AbstractMergeDateRangeRefiner_1 = __importDefault(require(\"../../../common/refiners/AbstractMergeDateRangeRefiner\"));\n\nclass JPMergeDateRangeRefiner extends AbstractMergeDateRangeRefiner_1.default {\n patternBetween() {\n return /^\\s*(から|ー|-)\\s*$/i;\n }\n\n}\n\nexports.default = JPMergeDateRangeRefiner;","\"use strict\";\n\nvar __createBinding = this && this.__createBinding || (Object.create ? function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, {\n enumerable: true,\n get: function () {\n return m[k];\n }\n });\n} : function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nvar __setModuleDefault = this && this.__setModuleDefault || (Object.create ? function (o, v) {\n Object.defineProperty(o, \"default\", {\n enumerable: true,\n value: v\n });\n} : function (o, v) {\n o[\"default\"] = v;\n});\n\nvar __importStar = this && this.__importStar || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n\n __setModuleDefault(result, mod);\n\n return result;\n};\n\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nconst dayjs_1 = __importDefault(require(\"dayjs\"));\n\nconst index_1 = require(\"../../../index\");\n\nconst references = __importStar(require(\"../../../common/casualReferences\"));\n\nconst PATTERN = /今日|当日|昨日|明日|今夜|今夕|今晩|今朝/i;\n\nclass JPCasualDateParser {\n pattern() {\n return PATTERN;\n }\n\n extract(context, match) {\n const text = match[0];\n const date = dayjs_1.default(context.refDate);\n const components = context.createParsingComponents();\n\n switch (text) {\n case \"昨日\":\n return references.yesterday(context.reference);\n\n case \"明日\":\n return references.tomorrow(context.reference);\n\n case \"今日\":\n case \"当日\":\n return references.today(context.reference);\n }\n\n if (text == \"今夜\" || text == \"今夕\" || text == \"今晩\") {\n components.imply(\"hour\", 22);\n components.assign(\"meridiem\", index_1.Meridiem.PM);\n } else if (text.match(\"今朝\")) {\n components.imply(\"hour\", 6);\n components.assign(\"meridiem\", index_1.Meridiem.AM);\n }\n\n components.assign(\"day\", date.date());\n components.assign(\"month\", date.month() + 1);\n components.assign(\"year\", date.year());\n return components;\n }\n\n}\n\nexports.default = JPCasualDateParser;","\"use strict\";\n\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.createConfiguration = exports.createCasualConfiguration = exports.parseDate = exports.parse = exports.strict = exports.casual = void 0;\n\nconst configurations_1 = require(\"../../configurations\");\n\nconst chrono_1 = require(\"../../chrono\");\n\nconst SlashDateFormatParser_1 = __importDefault(require(\"../../common/parsers/SlashDateFormatParser\"));\n\nconst PTWeekdayParser_1 = __importDefault(require(\"./parsers/PTWeekdayParser\"));\n\nconst PTTimeExpressionParser_1 = __importDefault(require(\"./parsers/PTTimeExpressionParser\"));\n\nconst PTMergeDateTimeRefiner_1 = __importDefault(require(\"./refiners/PTMergeDateTimeRefiner\"));\n\nconst PTMergeDateRangeRefiner_1 = __importDefault(require(\"./refiners/PTMergeDateRangeRefiner\"));\n\nconst PTMonthNameLittleEndianParser_1 = __importDefault(require(\"./parsers/PTMonthNameLittleEndianParser\"));\n\nconst PTCasualDateParser_1 = __importDefault(require(\"./parsers/PTCasualDateParser\"));\n\nconst PTCasualTimeParser_1 = __importDefault(require(\"./parsers/PTCasualTimeParser\"));\n\nexports.casual = new chrono_1.Chrono(createCasualConfiguration());\nexports.strict = new chrono_1.Chrono(createConfiguration(true));\n\nfunction parse(text, ref, option) {\n return exports.casual.parse(text, ref, option);\n}\n\nexports.parse = parse;\n\nfunction parseDate(text, ref, option) {\n return exports.casual.parseDate(text, ref, option);\n}\n\nexports.parseDate = parseDate;\n\nfunction createCasualConfiguration(littleEndian = true) {\n const option = createConfiguration(false, littleEndian);\n option.parsers.push(new PTCasualDateParser_1.default());\n option.parsers.push(new PTCasualTimeParser_1.default());\n return option;\n}\n\nexports.createCasualConfiguration = createCasualConfiguration;\n\nfunction createConfiguration(strictMode = true, littleEndian = true) {\n return configurations_1.includeCommonConfiguration({\n parsers: [new SlashDateFormatParser_1.default(littleEndian), new PTWeekdayParser_1.default(), new PTTimeExpressionParser_1.default(), new PTMonthNameLittleEndianParser_1.default()],\n refiners: [new PTMergeDateTimeRefiner_1.default(), new PTMergeDateRangeRefiner_1.default()]\n }, strictMode);\n}\n\nexports.createConfiguration = createConfiguration;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nconst constants_1 = require(\"../constants\");\n\nconst pattern_1 = require(\"../../../utils/pattern\");\n\nconst AbstractParserWithWordBoundary_1 = require(\"../../../common/parsers/AbstractParserWithWordBoundary\");\n\nconst weekdays_1 = require(\"../../../common/calculation/weekdays\");\n\nconst PATTERN = new RegExp(\"(?:(?:\\\\,|\\\\(|\\\\()\\\\s*)?\" + \"(?:(este|esta|passado|pr[oó]ximo)\\\\s*)?\" + `(${pattern_1.matchAnyPattern(constants_1.WEEKDAY_DICTIONARY)})` + \"(?:\\\\s*(?:\\\\,|\\\\)|\\\\)))?\" + \"(?:\\\\s*(este|esta|passado|pr[óo]ximo)\\\\s*semana)?\" + \"(?=\\\\W|\\\\d|$)\", \"i\");\nconst PREFIX_GROUP = 1;\nconst WEEKDAY_GROUP = 2;\nconst POSTFIX_GROUP = 3;\n\nclass PTWeekdayParser extends AbstractParserWithWordBoundary_1.AbstractParserWithWordBoundaryChecking {\n innerPattern() {\n return PATTERN;\n }\n\n innerExtract(context, match) {\n const dayOfWeek = match[WEEKDAY_GROUP].toLowerCase();\n const weekday = constants_1.WEEKDAY_DICTIONARY[dayOfWeek];\n\n if (weekday === undefined) {\n return null;\n }\n\n const prefix = match[PREFIX_GROUP];\n const postfix = match[POSTFIX_GROUP];\n let norm = prefix || postfix || \"\";\n norm = norm.toLowerCase();\n let modifier = null;\n\n if (norm == \"passado\") {\n modifier = \"this\";\n } else if (norm == \"próximo\" || norm == \"proximo\") {\n modifier = \"next\";\n } else if (norm == \"este\") {\n modifier = \"this\";\n }\n\n return weekdays_1.createParsingComponentsAtWeekday(context.reference, weekday, modifier);\n }\n\n}\n\nexports.default = PTWeekdayParser;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nconst AbstractTimeExpressionParser_1 = require(\"../../../common/parsers/AbstractTimeExpressionParser\");\n\nclass PTTimeExpressionParser extends AbstractTimeExpressionParser_1.AbstractTimeExpressionParser {\n primaryPrefix() {\n return \"(?:(?:ao?|às?|das|da|de|do)\\\\s*)?\";\n }\n\n followingPhase() {\n return \"\\\\s*(?:\\\\-|\\\\–|\\\\~|\\\\〜|a(?:o)?|\\\\?)\\\\s*\";\n }\n\n}\n\nexports.default = PTTimeExpressionParser;","\"use strict\";\n\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nconst AbstractMergeDateTimeRefiner_1 = __importDefault(require(\"../../../common/refiners/AbstractMergeDateTimeRefiner\"));\n\nclass PTMergeDateTimeRefiner extends AbstractMergeDateTimeRefiner_1.default {\n patternBetween() {\n return new RegExp(\"^\\\\s*(?:,|à)?\\\\s*$\");\n }\n\n}\n\nexports.default = PTMergeDateTimeRefiner;","\"use strict\";\n\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nconst AbstractMergeDateRangeRefiner_1 = __importDefault(require(\"../../../common/refiners/AbstractMergeDateRangeRefiner\"));\n\nclass PTMergeDateRangeRefiner extends AbstractMergeDateRangeRefiner_1.default {\n patternBetween() {\n return /^\\s*(?:-)\\s*$/i;\n }\n\n}\n\nexports.default = PTMergeDateRangeRefiner;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nconst years_1 = require(\"../../../calculation/years\");\n\nconst constants_1 = require(\"../constants\");\n\nconst constants_2 = require(\"../constants\");\n\nconst pattern_1 = require(\"../../../utils/pattern\");\n\nconst AbstractParserWithWordBoundary_1 = require(\"../../../common/parsers/AbstractParserWithWordBoundary\");\n\nconst PATTERN = new RegExp(`([0-9]{1,2})(?:º|ª|°)?` + \"(?:\\\\s*(?:desde|de|\\\\-|\\\\–|ao?|\\\\s)\\\\s*([0-9]{1,2})(?:º|ª|°)?)?\\\\s*(?:de)?\\\\s*\" + `(?:-|/|\\\\s*(?:de|,)?\\\\s*)` + `(${pattern_1.matchAnyPattern(constants_1.MONTH_DICTIONARY)})` + `(?:\\\\s*(?:de|,)?\\\\s*(${constants_2.YEAR_PATTERN}))?` + `(?=\\\\W|$)`, \"i\");\nconst DATE_GROUP = 1;\nconst DATE_TO_GROUP = 2;\nconst MONTH_NAME_GROUP = 3;\nconst YEAR_GROUP = 4;\n\nclass PTMonthNameLittleEndianParser extends AbstractParserWithWordBoundary_1.AbstractParserWithWordBoundaryChecking {\n innerPattern() {\n return PATTERN;\n }\n\n innerExtract(context, match) {\n const result = context.createParsingResult(match.index, match[0]);\n const month = constants_1.MONTH_DICTIONARY[match[MONTH_NAME_GROUP].toLowerCase()];\n const day = parseInt(match[DATE_GROUP]);\n\n if (day > 31) {\n match.index = match.index + match[DATE_GROUP].length;\n return null;\n }\n\n result.start.assign(\"month\", month);\n result.start.assign(\"day\", day);\n\n if (match[YEAR_GROUP]) {\n const yearNumber = constants_2.parseYear(match[YEAR_GROUP]);\n result.start.assign(\"year\", yearNumber);\n } else {\n const year = years_1.findYearClosestToRef(context.refDate, day, month);\n result.start.imply(\"year\", year);\n }\n\n if (match[DATE_TO_GROUP]) {\n const endDate = parseInt(match[DATE_TO_GROUP]);\n result.end = result.start.clone();\n result.end.assign(\"day\", endDate);\n }\n\n return result;\n }\n\n}\n\nexports.default = PTMonthNameLittleEndianParser;","\"use strict\";\n\nvar __createBinding = this && this.__createBinding || (Object.create ? function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, {\n enumerable: true,\n get: function () {\n return m[k];\n }\n });\n} : function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nvar __setModuleDefault = this && this.__setModuleDefault || (Object.create ? function (o, v) {\n Object.defineProperty(o, \"default\", {\n enumerable: true,\n value: v\n });\n} : function (o, v) {\n o[\"default\"] = v;\n});\n\nvar __importStar = this && this.__importStar || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n\n __setModuleDefault(result, mod);\n\n return result;\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nconst AbstractParserWithWordBoundary_1 = require(\"../../../common/parsers/AbstractParserWithWordBoundary\");\n\nconst references = __importStar(require(\"../../../common/casualReferences\"));\n\nclass PTCasualDateParser extends AbstractParserWithWordBoundary_1.AbstractParserWithWordBoundaryChecking {\n innerPattern(context) {\n return /(agora|hoje|amanha|amanhã|ontem)(?=\\W|$)/i;\n }\n\n innerExtract(context, match) {\n const lowerText = match[0].toLowerCase();\n const component = context.createParsingComponents();\n\n switch (lowerText) {\n case \"agora\":\n return references.now(context.reference);\n\n case \"hoje\":\n return references.today(context.reference);\n\n case \"amanha\":\n case \"amanhã\":\n return references.tomorrow(context.reference);\n\n case \"ontem\":\n return references.yesterday(context.reference);\n }\n\n return component;\n }\n\n}\n\nexports.default = PTCasualDateParser;","\"use strict\";\n\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nconst index_1 = require(\"../../../index\");\n\nconst AbstractParserWithWordBoundary_1 = require(\"../../../common/parsers/AbstractParserWithWordBoundary\");\n\nconst dayjs_1 = require(\"../../../utils/dayjs\");\n\nconst dayjs_2 = __importDefault(require(\"dayjs\"));\n\nclass PTCasualTimeParser extends AbstractParserWithWordBoundary_1.AbstractParserWithWordBoundaryChecking {\n innerPattern() {\n return /(?:esta\\s*)?(manha|manhã|tarde|meia-noite|meio-dia|noite)(?=\\W|$)/i;\n }\n\n innerExtract(context, match) {\n const targetDate = dayjs_2.default(context.refDate);\n const component = context.createParsingComponents();\n\n switch (match[1].toLowerCase()) {\n case \"tarde\":\n component.imply(\"meridiem\", index_1.Meridiem.PM);\n component.imply(\"hour\", 15);\n break;\n\n case \"noite\":\n component.imply(\"meridiem\", index_1.Meridiem.PM);\n component.imply(\"hour\", 22);\n break;\n\n case \"manha\":\n case \"manhã\":\n component.imply(\"meridiem\", index_1.Meridiem.AM);\n component.imply(\"hour\", 6);\n break;\n\n case \"meia-noite\":\n dayjs_1.assignTheNextDay(component, targetDate);\n component.imply(\"hour\", 0);\n component.imply(\"minute\", 0);\n component.imply(\"second\", 0);\n break;\n\n case \"meio-dia\":\n component.imply(\"meridiem\", index_1.Meridiem.AM);\n component.imply(\"hour\", 12);\n break;\n }\n\n return component;\n }\n\n}\n\nexports.default = PTCasualTimeParser;","\"use strict\";\n\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.createConfiguration = exports.createCasualConfiguration = exports.parseDate = exports.parse = exports.strict = exports.casual = void 0;\n\nconst configurations_1 = require(\"../../configurations\");\n\nconst chrono_1 = require(\"../../chrono\");\n\nconst NLMergeDateRangeRefiner_1 = __importDefault(require(\"./refiners/NLMergeDateRangeRefiner\"));\n\nconst NLMergeDateTimeRefiner_1 = __importDefault(require(\"./refiners/NLMergeDateTimeRefiner\"));\n\nconst NLCasualDateParser_1 = __importDefault(require(\"./parsers/NLCasualDateParser\"));\n\nconst NLCasualTimeParser_1 = __importDefault(require(\"./parsers/NLCasualTimeParser\"));\n\nconst SlashDateFormatParser_1 = __importDefault(require(\"../../common/parsers/SlashDateFormatParser\"));\n\nconst NLTimeUnitWithinFormatParser_1 = __importDefault(require(\"./parsers/NLTimeUnitWithinFormatParser\"));\n\nconst NLWeekdayParser_1 = __importDefault(require(\"./parsers/NLWeekdayParser\"));\n\nconst NLMonthNameMiddleEndianParser_1 = __importDefault(require(\"./parsers/NLMonthNameMiddleEndianParser\"));\n\nconst NLMonthNameParser_1 = __importDefault(require(\"./parsers/NLMonthNameParser\"));\n\nconst NLSlashMonthFormatParser_1 = __importDefault(require(\"./parsers/NLSlashMonthFormatParser\"));\n\nconst NLTimeExpressionParser_1 = __importDefault(require(\"./parsers/NLTimeExpressionParser\"));\n\nconst NLCasualYearMonthDayParser_1 = __importDefault(require(\"./parsers/NLCasualYearMonthDayParser\"));\n\nconst NLCasualDateTimeParser_1 = __importDefault(require(\"./parsers/NLCasualDateTimeParser\"));\n\nconst NLTimeUnitCasualRelativeFormatParser_1 = __importDefault(require(\"./parsers/NLTimeUnitCasualRelativeFormatParser\"));\n\nconst NLRelativeDateFormatParser_1 = __importDefault(require(\"./parsers/NLRelativeDateFormatParser\"));\n\nconst NLTimeUnitAgoFormatParser_1 = __importDefault(require(\"./parsers/NLTimeUnitAgoFormatParser\"));\n\nconst NLTimeUnitLaterFormatParser_1 = __importDefault(require(\"./parsers/NLTimeUnitLaterFormatParser\"));\n\nexports.casual = new chrono_1.Chrono(createCasualConfiguration());\nexports.strict = new chrono_1.Chrono(createConfiguration(true));\n\nfunction parse(text, ref, option) {\n return exports.casual.parse(text, ref, option);\n}\n\nexports.parse = parse;\n\nfunction parseDate(text, ref, option) {\n return exports.casual.parseDate(text, ref, option);\n}\n\nexports.parseDate = parseDate;\n\nfunction createCasualConfiguration(littleEndian = true) {\n const option = createConfiguration(false, littleEndian);\n option.parsers.unshift(new NLCasualDateParser_1.default());\n option.parsers.unshift(new NLCasualTimeParser_1.default());\n option.parsers.unshift(new NLCasualDateTimeParser_1.default());\n option.parsers.unshift(new NLMonthNameParser_1.default());\n option.parsers.unshift(new NLRelativeDateFormatParser_1.default());\n option.parsers.unshift(new NLTimeUnitCasualRelativeFormatParser_1.default());\n return option;\n}\n\nexports.createCasualConfiguration = createCasualConfiguration;\n\nfunction createConfiguration(strictMode = true, littleEndian = true) {\n return configurations_1.includeCommonConfiguration({\n parsers: [new SlashDateFormatParser_1.default(littleEndian), new NLTimeUnitWithinFormatParser_1.default(), new NLMonthNameMiddleEndianParser_1.default(), new NLMonthNameParser_1.default(), new NLWeekdayParser_1.default(), new NLCasualYearMonthDayParser_1.default(), new NLSlashMonthFormatParser_1.default(), new NLTimeExpressionParser_1.default(strictMode), new NLTimeUnitAgoFormatParser_1.default(strictMode), new NLTimeUnitLaterFormatParser_1.default(strictMode)],\n refiners: [new NLMergeDateTimeRefiner_1.default(), new NLMergeDateRangeRefiner_1.default()]\n }, strictMode);\n}\n\nexports.createConfiguration = createConfiguration;","\"use strict\";\n\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nconst AbstractMergeDateRangeRefiner_1 = __importDefault(require(\"../../../common/refiners/AbstractMergeDateRangeRefiner\"));\n\nclass NLMergeDateRangeRefiner extends AbstractMergeDateRangeRefiner_1.default {\n patternBetween() {\n return /^\\s*(tot|-)\\s*$/i;\n }\n\n}\n\nexports.default = NLMergeDateRangeRefiner;","\"use strict\";\n\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nconst AbstractMergeDateTimeRefiner_1 = __importDefault(require(\"../../../common/refiners/AbstractMergeDateTimeRefiner\"));\n\nclass NLMergeDateTimeRefiner extends AbstractMergeDateTimeRefiner_1.default {\n patternBetween() {\n return new RegExp(\"^\\\\s*(om|na|voor|in de|,|-)?\\\\s*$\");\n }\n\n}\n\nexports.default = NLMergeDateTimeRefiner;","\"use strict\";\n\nvar __createBinding = this && this.__createBinding || (Object.create ? function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, {\n enumerable: true,\n get: function () {\n return m[k];\n }\n });\n} : function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nvar __setModuleDefault = this && this.__setModuleDefault || (Object.create ? function (o, v) {\n Object.defineProperty(o, \"default\", {\n enumerable: true,\n value: v\n });\n} : function (o, v) {\n o[\"default\"] = v;\n});\n\nvar __importStar = this && this.__importStar || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n\n __setModuleDefault(result, mod);\n\n return result;\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nconst AbstractParserWithWordBoundary_1 = require(\"../../../common/parsers/AbstractParserWithWordBoundary\");\n\nconst references = __importStar(require(\"../../../common/casualReferences\"));\n\nclass NLCasualDateParser extends AbstractParserWithWordBoundary_1.AbstractParserWithWordBoundaryChecking {\n innerPattern(context) {\n return /(nu|vandaag|morgen|morgend|gisteren)(?=\\W|$)/i;\n }\n\n innerExtract(context, match) {\n const lowerText = match[0].toLowerCase();\n const component = context.createParsingComponents();\n\n switch (lowerText) {\n case \"nu\":\n return references.now(context.reference);\n\n case \"vandaag\":\n return references.today(context.reference);\n\n case \"morgen\":\n case \"morgend\":\n return references.tomorrow(context.reference);\n\n case \"gisteren\":\n return references.yesterday(context.reference);\n }\n\n return component;\n }\n\n}\n\nexports.default = NLCasualDateParser;","\"use strict\";\n\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nconst index_1 = require(\"../../../index\");\n\nconst AbstractParserWithWordBoundary_1 = require(\"../../../common/parsers/AbstractParserWithWordBoundary\");\n\nconst dayjs_1 = __importDefault(require(\"dayjs\"));\n\nconst dayjs_2 = require(\"../../../utils/dayjs\");\n\nconst DAY_GROUP = 1;\nconst MOMENT_GROUP = 2;\n\nclass NLCasualTimeParser extends AbstractParserWithWordBoundary_1.AbstractParserWithWordBoundaryChecking {\n innerPattern() {\n return /(deze)?\\s*(namiddag|avond|middernacht|ochtend|middag|'s middags|'s avonds|'s ochtends)(?=\\W|$)/i;\n }\n\n innerExtract(context, match) {\n const targetDate = dayjs_1.default(context.refDate);\n const component = context.createParsingComponents();\n\n if (match[DAY_GROUP] === \"deze\") {\n component.assign(\"day\", context.refDate.getDate());\n component.assign(\"month\", context.refDate.getMonth() + 1);\n component.assign(\"year\", context.refDate.getFullYear());\n }\n\n switch (match[MOMENT_GROUP].toLowerCase()) {\n case \"namiddag\":\n case \"'s namiddags\":\n component.imply(\"meridiem\", index_1.Meridiem.PM);\n component.imply(\"hour\", 15);\n break;\n\n case \"avond\":\n case \"'s avonds'\":\n component.imply(\"meridiem\", index_1.Meridiem.PM);\n component.imply(\"hour\", 20);\n break;\n\n case \"middernacht\":\n dayjs_2.assignTheNextDay(component, targetDate);\n component.imply(\"hour\", 0);\n component.imply(\"minute\", 0);\n component.imply(\"second\", 0);\n break;\n\n case \"ochtend\":\n case \"'s ochtends\":\n component.imply(\"meridiem\", index_1.Meridiem.AM);\n component.imply(\"hour\", 6);\n break;\n\n case \"middag\":\n case \"'s middags\":\n component.imply(\"meridiem\", index_1.Meridiem.AM);\n component.imply(\"hour\", 12);\n break;\n }\n\n return component;\n }\n\n}\n\nexports.default = NLCasualTimeParser;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nconst constants_1 = require(\"../constants\");\n\nconst results_1 = require(\"../../../results\");\n\nconst AbstractParserWithWordBoundary_1 = require(\"../../../common/parsers/AbstractParserWithWordBoundary\");\n\nclass NLTimeUnitWithinFormatParser extends AbstractParserWithWordBoundary_1.AbstractParserWithWordBoundaryChecking {\n innerPattern() {\n return new RegExp(`(?:binnen|in|binnen de|voor)\\\\s*` + \"(\" + constants_1.TIME_UNITS_PATTERN + \")\" + `(?=\\\\W|$)`, \"i\");\n }\n\n innerExtract(context, match) {\n const timeUnits = constants_1.parseTimeUnits(match[1]);\n return results_1.ParsingComponents.createRelativeFromReference(context.reference, timeUnits);\n }\n\n}\n\nexports.default = NLTimeUnitWithinFormatParser;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nconst constants_1 = require(\"../../nl/constants\");\n\nconst pattern_1 = require(\"../../../utils/pattern\");\n\nconst AbstractParserWithWordBoundary_1 = require(\"../../../common/parsers/AbstractParserWithWordBoundary\");\n\nconst weekdays_1 = require(\"../../../common/calculation/weekdays\");\n\nconst PATTERN = new RegExp(\"(?:(?:\\\\,|\\\\(|\\\\()\\\\s*)?\" + \"(?:op\\\\s*?)?\" + \"(?:(deze|vorige|volgende)\\\\s*(?:week\\\\s*)?)?\" + `(${pattern_1.matchAnyPattern(constants_1.WEEKDAY_DICTIONARY)})` + \"(?=\\\\W|$)\", \"i\");\nconst PREFIX_GROUP = 1;\nconst WEEKDAY_GROUP = 2;\nconst POSTFIX_GROUP = 3;\n\nclass NLWeekdayParser extends AbstractParserWithWordBoundary_1.AbstractParserWithWordBoundaryChecking {\n innerPattern() {\n return PATTERN;\n }\n\n innerExtract(context, match) {\n const dayOfWeek = match[WEEKDAY_GROUP].toLowerCase();\n const weekday = constants_1.WEEKDAY_DICTIONARY[dayOfWeek];\n const prefix = match[PREFIX_GROUP];\n const postfix = match[POSTFIX_GROUP];\n let modifierWord = prefix || postfix;\n modifierWord = modifierWord || \"\";\n modifierWord = modifierWord.toLowerCase();\n let modifier = null;\n\n if (modifierWord == \"vorige\") {\n modifier = \"last\";\n } else if (modifierWord == \"volgende\") {\n modifier = \"next\";\n } else if (modifierWord == \"deze\") {\n modifier = \"this\";\n }\n\n return weekdays_1.createParsingComponentsAtWeekday(context.reference, weekday, modifier);\n }\n\n}\n\nexports.default = NLWeekdayParser;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nconst years_1 = require(\"../../../calculation/years\");\n\nconst constants_1 = require(\"../constants\");\n\nconst constants_2 = require(\"../constants\");\n\nconst constants_3 = require(\"../constants\");\n\nconst pattern_1 = require(\"../../../utils/pattern\");\n\nconst AbstractParserWithWordBoundary_1 = require(\"../../../common/parsers/AbstractParserWithWordBoundary\");\n\nconst PATTERN = new RegExp(\"(?:on\\\\s*?)?\" + `(${constants_2.ORDINAL_NUMBER_PATTERN})` + \"(?:\\\\s*\" + \"(?:tot|\\\\-|\\\\–|until|through|till|\\\\s)\\\\s*\" + `(${constants_2.ORDINAL_NUMBER_PATTERN})` + \")?\" + \"(?:-|/|\\\\s*(?:of)?\\\\s*)\" + \"(\" + pattern_1.matchAnyPattern(constants_1.MONTH_DICTIONARY) + \")\" + \"(?:\" + \"(?:-|/|,?\\\\s*)\" + `(${constants_3.YEAR_PATTERN}(?![^\\\\s]\\\\d))` + \")?\" + \"(?=\\\\W|$)\", \"i\");\nconst MONTH_NAME_GROUP = 3;\nconst DATE_GROUP = 1;\nconst DATE_TO_GROUP = 2;\nconst YEAR_GROUP = 4;\n\nclass NLMonthNameMiddleEndianParser extends AbstractParserWithWordBoundary_1.AbstractParserWithWordBoundaryChecking {\n innerPattern() {\n return PATTERN;\n }\n\n innerExtract(context, match) {\n const month = constants_1.MONTH_DICTIONARY[match[MONTH_NAME_GROUP].toLowerCase()];\n const day = constants_2.parseOrdinalNumberPattern(match[DATE_GROUP]);\n\n if (day > 31) {\n match.index = match.index + match[DATE_GROUP].length;\n return null;\n }\n\n const components = context.createParsingComponents({\n day: day,\n month: month\n });\n\n if (match[YEAR_GROUP]) {\n const year = constants_3.parseYear(match[YEAR_GROUP]);\n components.assign(\"year\", year);\n } else {\n const year = years_1.findYearClosestToRef(context.refDate, day, month);\n components.imply(\"year\", year);\n }\n\n if (!match[DATE_TO_GROUP]) {\n return components;\n }\n\n const endDate = constants_2.parseOrdinalNumberPattern(match[DATE_TO_GROUP]);\n const result = context.createParsingResult(match.index, match[0]);\n result.start = components;\n result.end = components.clone();\n result.end.assign(\"day\", endDate);\n return result;\n }\n\n}\n\nexports.default = NLMonthNameMiddleEndianParser;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nconst constants_1 = require(\"../constants\");\n\nconst years_1 = require(\"../../../calculation/years\");\n\nconst pattern_1 = require(\"../../../utils/pattern\");\n\nconst constants_2 = require(\"../constants\");\n\nconst AbstractParserWithWordBoundary_1 = require(\"../../../common/parsers/AbstractParserWithWordBoundary\");\n\nconst PATTERN = new RegExp(`(${pattern_1.matchAnyPattern(constants_1.MONTH_DICTIONARY)})` + `\\\\s*` + `(?:` + `[,-]?\\\\s*(${constants_2.YEAR_PATTERN})?` + \")?\" + \"(?=[^\\\\s\\\\w]|\\\\s+[^0-9]|\\\\s+$|$)\", \"i\");\nconst MONTH_NAME_GROUP = 1;\nconst YEAR_GROUP = 2;\n\nclass NLMonthNameParser extends AbstractParserWithWordBoundary_1.AbstractParserWithWordBoundaryChecking {\n innerPattern() {\n return PATTERN;\n }\n\n innerExtract(context, match) {\n const components = context.createParsingComponents();\n components.imply(\"day\", 1);\n const monthName = match[MONTH_NAME_GROUP];\n const month = constants_1.MONTH_DICTIONARY[monthName.toLowerCase()];\n components.assign(\"month\", month);\n\n if (match[YEAR_GROUP]) {\n const year = constants_2.parseYear(match[YEAR_GROUP]);\n components.assign(\"year\", year);\n } else {\n const year = years_1.findYearClosestToRef(context.refDate, 1, month);\n components.imply(\"year\", year);\n }\n\n return components;\n }\n\n}\n\nexports.default = NLMonthNameParser;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nconst AbstractParserWithWordBoundary_1 = require(\"../../../common/parsers/AbstractParserWithWordBoundary\");\n\nconst PATTERN = new RegExp(\"([0-9]|0[1-9]|1[012])/([0-9]{4})\" + \"\", \"i\");\nconst MONTH_GROUP = 1;\nconst YEAR_GROUP = 2;\n\nclass NLSlashMonthFormatParser extends AbstractParserWithWordBoundary_1.AbstractParserWithWordBoundaryChecking {\n innerPattern() {\n return PATTERN;\n }\n\n innerExtract(context, match) {\n const year = parseInt(match[YEAR_GROUP]);\n const month = parseInt(match[MONTH_GROUP]);\n return context.createParsingComponents().imply(\"day\", 1).assign(\"month\", month).assign(\"year\", year);\n }\n\n}\n\nexports.default = NLSlashMonthFormatParser;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nconst AbstractTimeExpressionParser_1 = require(\"../../../common/parsers/AbstractTimeExpressionParser\");\n\nclass NLTimeExpressionParser extends AbstractTimeExpressionParser_1.AbstractTimeExpressionParser {\n primaryPrefix() {\n return \"(?:(?:om)\\\\s*)?\";\n }\n\n followingPhase() {\n return \"\\\\s*(?:\\\\-|\\\\–|\\\\~|\\\\〜|om|\\\\?)\\\\s*\";\n }\n\n primarySuffix() {\n return \"(?:\\\\s*(?:uur))?(?!/)(?=\\\\W|$)\";\n }\n\n extractPrimaryTimeComponents(context, match) {\n if (match[0].match(/^\\s*\\d{4}\\s*$/)) {\n return null;\n }\n\n return super.extractPrimaryTimeComponents(context, match);\n }\n\n}\n\nexports.default = NLTimeExpressionParser;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nconst constants_1 = require(\"../constants\");\n\nconst pattern_1 = require(\"../../../utils/pattern\");\n\nconst AbstractParserWithWordBoundary_1 = require(\"../../../common/parsers/AbstractParserWithWordBoundary\");\n\nconst PATTERN = new RegExp(`([0-9]{4})[\\\\.\\\\/\\\\s]` + `(?:(${pattern_1.matchAnyPattern(constants_1.MONTH_DICTIONARY)})|([0-9]{1,2}))[\\\\.\\\\/\\\\s]` + `([0-9]{1,2})` + \"(?=\\\\W|$)\", \"i\");\nconst YEAR_NUMBER_GROUP = 1;\nconst MONTH_NAME_GROUP = 2;\nconst MONTH_NUMBER_GROUP = 3;\nconst DATE_NUMBER_GROUP = 4;\n\nclass NLCasualYearMonthDayParser extends AbstractParserWithWordBoundary_1.AbstractParserWithWordBoundaryChecking {\n innerPattern() {\n return PATTERN;\n }\n\n innerExtract(context, match) {\n const month = match[MONTH_NUMBER_GROUP] ? parseInt(match[MONTH_NUMBER_GROUP]) : constants_1.MONTH_DICTIONARY[match[MONTH_NAME_GROUP].toLowerCase()];\n\n if (month < 1 || month > 12) {\n return null;\n }\n\n const year = parseInt(match[YEAR_NUMBER_GROUP]);\n const day = parseInt(match[DATE_NUMBER_GROUP]);\n return {\n day: day,\n month: month,\n year: year\n };\n }\n\n}\n\nexports.default = NLCasualYearMonthDayParser;","\"use strict\";\n\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nconst AbstractParserWithWordBoundary_1 = require(\"../../../common/parsers/AbstractParserWithWordBoundary\");\n\nconst index_1 = require(\"../../../index\");\n\nconst dayjs_1 = require(\"../../../utils/dayjs\");\n\nconst dayjs_2 = __importDefault(require(\"dayjs\"));\n\nconst DATE_GROUP = 1;\nconst TIME_OF_DAY_GROUP = 2;\n\nclass NLCasualDateTimeParser extends AbstractParserWithWordBoundary_1.AbstractParserWithWordBoundaryChecking {\n innerPattern(context) {\n return /(gisteren|morgen|van)(ochtend|middag|namiddag|avond|nacht)(?=\\W|$)/i;\n }\n\n innerExtract(context, match) {\n const dateText = match[DATE_GROUP].toLowerCase();\n const timeText = match[TIME_OF_DAY_GROUP].toLowerCase();\n const component = context.createParsingComponents();\n const targetDate = dayjs_2.default(context.refDate);\n\n switch (dateText) {\n case \"gisteren\":\n dayjs_1.assignSimilarDate(component, targetDate.add(-1, \"day\"));\n break;\n\n case \"van\":\n dayjs_1.assignSimilarDate(component, targetDate);\n break;\n\n case \"morgen\":\n dayjs_1.assignTheNextDay(component, targetDate);\n break;\n }\n\n switch (timeText) {\n case \"ochtend\":\n component.imply(\"meridiem\", index_1.Meridiem.AM);\n component.imply(\"hour\", 6);\n break;\n\n case \"middag\":\n component.imply(\"meridiem\", index_1.Meridiem.AM);\n component.imply(\"hour\", 12);\n break;\n\n case \"namiddag\":\n component.imply(\"meridiem\", index_1.Meridiem.PM);\n component.imply(\"hour\", 15);\n break;\n\n case \"avond\":\n component.imply(\"meridiem\", index_1.Meridiem.PM);\n component.imply(\"hour\", 20);\n break;\n }\n\n return component;\n }\n\n}\n\nexports.default = NLCasualDateTimeParser;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nconst constants_1 = require(\"../constants\");\n\nconst results_1 = require(\"../../../results\");\n\nconst AbstractParserWithWordBoundary_1 = require(\"../../../common/parsers/AbstractParserWithWordBoundary\");\n\nconst timeunits_1 = require(\"../../../utils/timeunits\");\n\nconst PATTERN = new RegExp(`(deze|vorige|afgelopen|komende|over|\\\\+|-)\\\\s*(${constants_1.TIME_UNITS_PATTERN})(?=\\\\W|$)`, \"i\");\n\nclass NLTimeUnitCasualRelativeFormatParser extends AbstractParserWithWordBoundary_1.AbstractParserWithWordBoundaryChecking {\n innerPattern() {\n return PATTERN;\n }\n\n innerExtract(context, match) {\n const prefix = match[1].toLowerCase();\n let timeUnits = constants_1.parseTimeUnits(match[2]);\n\n switch (prefix) {\n case \"vorige\":\n case \"afgelopen\":\n case \"-\":\n timeUnits = timeunits_1.reverseTimeUnits(timeUnits);\n break;\n }\n\n return results_1.ParsingComponents.createRelativeFromReference(context.reference, timeUnits);\n }\n\n}\n\nexports.default = NLTimeUnitCasualRelativeFormatParser;","\"use strict\";\n\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nconst constants_1 = require(\"../constants\");\n\nconst results_1 = require(\"../../../results\");\n\nconst dayjs_1 = __importDefault(require(\"dayjs\"));\n\nconst AbstractParserWithWordBoundary_1 = require(\"../../../common/parsers/AbstractParserWithWordBoundary\");\n\nconst pattern_1 = require(\"../../../utils/pattern\");\n\nconst PATTERN = new RegExp(`(dit|deze|komende|volgend|volgende|afgelopen|vorige)\\\\s*(${pattern_1.matchAnyPattern(constants_1.TIME_UNIT_DICTIONARY)})(?=\\\\s*)` + \"(?=\\\\W|$)\", \"i\");\nconst MODIFIER_WORD_GROUP = 1;\nconst RELATIVE_WORD_GROUP = 2;\n\nclass NLRelativeDateFormatParser extends AbstractParserWithWordBoundary_1.AbstractParserWithWordBoundaryChecking {\n innerPattern() {\n return PATTERN;\n }\n\n innerExtract(context, match) {\n const modifier = match[MODIFIER_WORD_GROUP].toLowerCase();\n const unitWord = match[RELATIVE_WORD_GROUP].toLowerCase();\n const timeunit = constants_1.TIME_UNIT_DICTIONARY[unitWord];\n\n if (modifier == \"volgend\" || modifier == \"volgende\" || modifier == \"komende\") {\n const timeUnits = {};\n timeUnits[timeunit] = 1;\n return results_1.ParsingComponents.createRelativeFromReference(context.reference, timeUnits);\n }\n\n if (modifier == \"afgelopen\" || modifier == \"vorige\") {\n const timeUnits = {};\n timeUnits[timeunit] = -1;\n return results_1.ParsingComponents.createRelativeFromReference(context.reference, timeUnits);\n }\n\n const components = context.createParsingComponents();\n let date = dayjs_1.default(context.reference.instant);\n\n if (unitWord.match(/week/i)) {\n date = date.add(-date.get(\"d\"), \"d\");\n components.imply(\"day\", date.date());\n components.imply(\"month\", date.month() + 1);\n components.imply(\"year\", date.year());\n } else if (unitWord.match(/maand/i)) {\n date = date.add(-date.date() + 1, \"d\");\n components.imply(\"day\", date.date());\n components.assign(\"year\", date.year());\n components.assign(\"month\", date.month() + 1);\n } else if (unitWord.match(/jaar/i)) {\n date = date.add(-date.date() + 1, \"d\");\n date = date.add(-date.month(), \"month\");\n components.imply(\"day\", date.date());\n components.imply(\"month\", date.month() + 1);\n components.assign(\"year\", date.year());\n }\n\n return components;\n }\n\n}\n\nexports.default = NLRelativeDateFormatParser;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nconst constants_1 = require(\"../constants\");\n\nconst results_1 = require(\"../../../results\");\n\nconst AbstractParserWithWordBoundary_1 = require(\"../../../common/parsers/AbstractParserWithWordBoundary\");\n\nconst timeunits_1 = require(\"../../../utils/timeunits\");\n\nconst PATTERN = new RegExp(\"\" + \"(\" + constants_1.TIME_UNITS_PATTERN + \")\" + \"(?:geleden|voor|eerder)(?=(?:\\\\W|$))\", \"i\");\nconst STRICT_PATTERN = new RegExp(\"\" + \"(\" + constants_1.TIME_UNITS_PATTERN + \")\" + \"geleden(?=(?:\\\\W|$))\", \"i\");\n\nclass NLTimeUnitAgoFormatParser extends AbstractParserWithWordBoundary_1.AbstractParserWithWordBoundaryChecking {\n constructor(strictMode) {\n super();\n this.strictMode = strictMode;\n }\n\n innerPattern() {\n return this.strictMode ? STRICT_PATTERN : PATTERN;\n }\n\n innerExtract(context, match) {\n const timeUnits = constants_1.parseTimeUnits(match[1]);\n const outputTimeUnits = timeunits_1.reverseTimeUnits(timeUnits);\n return results_1.ParsingComponents.createRelativeFromReference(context.reference, outputTimeUnits);\n }\n\n}\n\nexports.default = NLTimeUnitAgoFormatParser;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nconst constants_1 = require(\"../constants\");\n\nconst results_1 = require(\"../../../results\");\n\nconst AbstractParserWithWordBoundary_1 = require(\"../../../common/parsers/AbstractParserWithWordBoundary\");\n\nconst PATTERN = new RegExp(\"\" + \"(\" + constants_1.TIME_UNITS_PATTERN + \")\" + \"(later|na|vanaf nu|voortaan|vooruit|uit)\" + \"(?=(?:\\\\W|$))\", \"i\");\nconst STRICT_PATTERN = new RegExp(\"\" + \"(\" + constants_1.TIME_UNITS_PATTERN + \")\" + \"(later|vanaf nu)\" + \"(?=(?:\\\\W|$))\", \"i\");\nconst GROUP_NUM_TIMEUNITS = 1;\n\nclass NLTimeUnitLaterFormatParser extends AbstractParserWithWordBoundary_1.AbstractParserWithWordBoundaryChecking {\n constructor(strictMode) {\n super();\n this.strictMode = strictMode;\n }\n\n innerPattern() {\n return this.strictMode ? STRICT_PATTERN : PATTERN;\n }\n\n innerExtract(context, match) {\n const fragments = constants_1.parseTimeUnits(match[GROUP_NUM_TIMEUNITS]);\n return results_1.ParsingComponents.createRelativeFromReference(context.reference, fragments);\n }\n\n}\n\nexports.default = NLTimeUnitLaterFormatParser;","\"use strict\";\n\nvar __createBinding = this && this.__createBinding || (Object.create ? function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, {\n enumerable: true,\n get: function () {\n return m[k];\n }\n });\n} : function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nvar __setModuleDefault = this && this.__setModuleDefault || (Object.create ? function (o, v) {\n Object.defineProperty(o, \"default\", {\n enumerable: true,\n value: v\n });\n} : function (o, v) {\n o[\"default\"] = v;\n});\n\nvar __exportStar = this && this.__exportStar || function (m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\n\nvar __importStar = this && this.__importStar || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n\n __setModuleDefault(result, mod);\n\n return result;\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.hans = void 0;\n\n__exportStar(require(\"./hant\"), exports);\n\nexports.hans = __importStar(require(\"./hans\"));","\"use strict\";\n\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.createConfiguration = exports.createCasualConfiguration = exports.parseDate = exports.parse = exports.strict = exports.casual = exports.hant = void 0;\n\nconst chrono_1 = require(\"../../../chrono\");\n\nconst ExtractTimezoneOffsetRefiner_1 = __importDefault(require(\"../../../common/refiners/ExtractTimezoneOffsetRefiner\"));\n\nconst configurations_1 = require(\"../../../configurations\");\n\nconst ZHHantCasualDateParser_1 = __importDefault(require(\"./parsers/ZHHantCasualDateParser\"));\n\nconst ZHHantDateParser_1 = __importDefault(require(\"./parsers/ZHHantDateParser\"));\n\nconst ZHHantDeadlineFormatParser_1 = __importDefault(require(\"./parsers/ZHHantDeadlineFormatParser\"));\n\nconst ZHHantRelationWeekdayParser_1 = __importDefault(require(\"./parsers/ZHHantRelationWeekdayParser\"));\n\nconst ZHHantTimeExpressionParser_1 = __importDefault(require(\"./parsers/ZHHantTimeExpressionParser\"));\n\nconst ZHHantWeekdayParser_1 = __importDefault(require(\"./parsers/ZHHantWeekdayParser\"));\n\nconst ZHHantMergeDateRangeRefiner_1 = __importDefault(require(\"./refiners/ZHHantMergeDateRangeRefiner\"));\n\nconst ZHHantMergeDateTimeRefiner_1 = __importDefault(require(\"./refiners/ZHHantMergeDateTimeRefiner\"));\n\nexports.hant = new chrono_1.Chrono(createCasualConfiguration());\nexports.casual = new chrono_1.Chrono(createCasualConfiguration());\nexports.strict = new chrono_1.Chrono(createConfiguration());\n\nfunction parse(text, ref, option) {\n return exports.casual.parse(text, ref, option);\n}\n\nexports.parse = parse;\n\nfunction parseDate(text, ref, option) {\n return exports.casual.parseDate(text, ref, option);\n}\n\nexports.parseDate = parseDate;\n\nfunction createCasualConfiguration() {\n const option = createConfiguration();\n option.parsers.unshift(new ZHHantCasualDateParser_1.default());\n return option;\n}\n\nexports.createCasualConfiguration = createCasualConfiguration;\n\nfunction createConfiguration() {\n const configuration = configurations_1.includeCommonConfiguration({\n parsers: [new ZHHantDateParser_1.default(), new ZHHantRelationWeekdayParser_1.default(), new ZHHantWeekdayParser_1.default(), new ZHHantTimeExpressionParser_1.default(), new ZHHantDeadlineFormatParser_1.default()],\n refiners: [new ZHHantMergeDateRangeRefiner_1.default(), new ZHHantMergeDateTimeRefiner_1.default()]\n });\n configuration.refiners = configuration.refiners.filter(refiner => !(refiner instanceof ExtractTimezoneOffsetRefiner_1.default));\n return configuration;\n}\n\nexports.createConfiguration = createConfiguration;","\"use strict\";\n\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nconst dayjs_1 = __importDefault(require(\"dayjs\"));\n\nconst AbstractParserWithWordBoundary_1 = require(\"../../../../common/parsers/AbstractParserWithWordBoundary\");\n\nconst NOW_GROUP = 1;\nconst DAY_GROUP_1 = 2;\nconst TIME_GROUP_1 = 3;\nconst TIME_GROUP_2 = 4;\nconst DAY_GROUP_3 = 5;\nconst TIME_GROUP_3 = 6;\n\nclass ZHHantCasualDateParser extends AbstractParserWithWordBoundary_1.AbstractParserWithWordBoundaryChecking {\n innerPattern(context) {\n return new RegExp(\"(而家|立(?:刻|即)|即刻)|\" + \"(今|明|前|大前|後|大後|聽|昨|尋|琴)(早|朝|晚)|\" + \"(上(?:午|晝)|朝(?:早)|早(?:上)|下(?:午|晝)|晏(?:晝)|晚(?:上)|夜(?:晚)?|中(?:午)|凌(?:晨))|\" + \"(今|明|前|大前|後|大後|聽|昨|尋|琴)(?:日|天)\" + \"(?:[\\\\s|,|,]*)\" + \"(?:(上(?:午|晝)|朝(?:早)|早(?:上)|下(?:午|晝)|晏(?:晝)|晚(?:上)|夜(?:晚)?|中(?:午)|凌(?:晨)))?\", \"i\");\n }\n\n innerExtract(context, match) {\n const index = match.index;\n const result = context.createParsingResult(index, match[0]);\n const refMoment = dayjs_1.default(context.refDate);\n let startMoment = refMoment;\n\n if (match[NOW_GROUP]) {\n result.start.imply(\"hour\", refMoment.hour());\n result.start.imply(\"minute\", refMoment.minute());\n result.start.imply(\"second\", refMoment.second());\n result.start.imply(\"millisecond\", refMoment.millisecond());\n } else if (match[DAY_GROUP_1]) {\n const day1 = match[DAY_GROUP_1];\n const time1 = match[TIME_GROUP_1];\n\n if (day1 == \"明\" || day1 == \"聽\") {\n if (refMoment.hour() > 1) {\n startMoment = startMoment.add(1, \"day\");\n }\n } else if (day1 == \"昨\" || day1 == \"尋\" || day1 == \"琴\") {\n startMoment = startMoment.add(-1, \"day\");\n } else if (day1 == \"前\") {\n startMoment = startMoment.add(-2, \"day\");\n } else if (day1 == \"大前\") {\n startMoment = startMoment.add(-3, \"day\");\n } else if (day1 == \"後\") {\n startMoment = startMoment.add(2, \"day\");\n } else if (day1 == \"大後\") {\n startMoment = startMoment.add(3, \"day\");\n }\n\n if (time1 == \"早\" || time1 == \"朝\") {\n result.start.imply(\"hour\", 6);\n } else if (time1 == \"晚\") {\n result.start.imply(\"hour\", 22);\n result.start.imply(\"meridiem\", 1);\n }\n } else if (match[TIME_GROUP_2]) {\n const timeString2 = match[TIME_GROUP_2];\n const time2 = timeString2[0];\n\n if (time2 == \"早\" || time2 == \"朝\" || time2 == \"上\") {\n result.start.imply(\"hour\", 6);\n } else if (time2 == \"下\" || time2 == \"晏\") {\n result.start.imply(\"hour\", 15);\n result.start.imply(\"meridiem\", 1);\n } else if (time2 == \"中\") {\n result.start.imply(\"hour\", 12);\n result.start.imply(\"meridiem\", 1);\n } else if (time2 == \"夜\" || time2 == \"晚\") {\n result.start.imply(\"hour\", 22);\n result.start.imply(\"meridiem\", 1);\n } else if (time2 == \"凌\") {\n result.start.imply(\"hour\", 0);\n }\n } else if (match[DAY_GROUP_3]) {\n const day3 = match[DAY_GROUP_3];\n\n if (day3 == \"明\" || day3 == \"聽\") {\n if (refMoment.hour() > 1) {\n startMoment = startMoment.add(1, \"day\");\n }\n } else if (day3 == \"昨\" || day3 == \"尋\" || day3 == \"琴\") {\n startMoment = startMoment.add(-1, \"day\");\n } else if (day3 == \"前\") {\n startMoment = startMoment.add(-2, \"day\");\n } else if (day3 == \"大前\") {\n startMoment = startMoment.add(-3, \"day\");\n } else if (day3 == \"後\") {\n startMoment = startMoment.add(2, \"day\");\n } else if (day3 == \"大後\") {\n startMoment = startMoment.add(3, \"day\");\n }\n\n const timeString3 = match[TIME_GROUP_3];\n\n if (timeString3) {\n const time3 = timeString3[0];\n\n if (time3 == \"早\" || time3 == \"朝\" || time3 == \"上\") {\n result.start.imply(\"hour\", 6);\n } else if (time3 == \"下\" || time3 == \"晏\") {\n result.start.imply(\"hour\", 15);\n result.start.imply(\"meridiem\", 1);\n } else if (time3 == \"中\") {\n result.start.imply(\"hour\", 12);\n result.start.imply(\"meridiem\", 1);\n } else if (time3 == \"夜\" || time3 == \"晚\") {\n result.start.imply(\"hour\", 22);\n result.start.imply(\"meridiem\", 1);\n } else if (time3 == \"凌\") {\n result.start.imply(\"hour\", 0);\n }\n }\n }\n\n result.start.assign(\"day\", startMoment.date());\n result.start.assign(\"month\", startMoment.month() + 1);\n result.start.assign(\"year\", startMoment.year());\n return result;\n }\n\n}\n\nexports.default = ZHHantCasualDateParser;","\"use strict\";\n\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nconst dayjs_1 = __importDefault(require(\"dayjs\"));\n\nconst AbstractParserWithWordBoundary_1 = require(\"../../../../common/parsers/AbstractParserWithWordBoundary\");\n\nconst constants_1 = require(\"../constants\");\n\nconst YEAR_GROUP = 1;\nconst MONTH_GROUP = 2;\nconst DAY_GROUP = 3;\n\nclass ZHHantDateParser extends AbstractParserWithWordBoundary_1.AbstractParserWithWordBoundaryChecking {\n innerPattern() {\n return new RegExp(\"(\" + \"\\\\d{2,4}|\" + \"[\" + Object.keys(constants_1.NUMBER).join(\"\") + \"]{4}|\" + \"[\" + Object.keys(constants_1.NUMBER).join(\"\") + \"]{2}\" + \")?\" + \"(?:\\\\s*)\" + \"(?:年)?\" + \"(?:[\\\\s|,|,]*)\" + \"(\" + \"\\\\d{1,2}|\" + \"[\" + Object.keys(constants_1.NUMBER).join(\"\") + \"]{1,2}\" + \")\" + \"(?:\\\\s*)\" + \"(?:月)\" + \"(?:\\\\s*)\" + \"(\" + \"\\\\d{1,2}|\" + \"[\" + Object.keys(constants_1.NUMBER).join(\"\") + \"]{1,2}\" + \")?\" + \"(?:\\\\s*)\" + \"(?:日|號)?\");\n }\n\n innerExtract(context, match) {\n const startMoment = dayjs_1.default(context.refDate);\n const result = context.createParsingResult(match.index, match[0]);\n let month = parseInt(match[MONTH_GROUP]);\n if (isNaN(month)) month = constants_1.zhStringToNumber(match[MONTH_GROUP]);\n result.start.assign(\"month\", month);\n\n if (match[DAY_GROUP]) {\n let day = parseInt(match[DAY_GROUP]);\n if (isNaN(day)) day = constants_1.zhStringToNumber(match[DAY_GROUP]);\n result.start.assign(\"day\", day);\n } else {\n result.start.imply(\"day\", startMoment.date());\n }\n\n if (match[YEAR_GROUP]) {\n let year = parseInt(match[YEAR_GROUP]);\n if (isNaN(year)) year = constants_1.zhStringToYear(match[YEAR_GROUP]);\n result.start.assign(\"year\", year);\n } else {\n result.start.imply(\"year\", startMoment.year());\n }\n\n return result;\n }\n\n}\n\nexports.default = ZHHantDateParser;","\"use strict\";\n\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nconst dayjs_1 = __importDefault(require(\"dayjs\"));\n\nconst AbstractParserWithWordBoundary_1 = require(\"../../../../common/parsers/AbstractParserWithWordBoundary\");\n\nconst constants_1 = require(\"../constants\");\n\nconst PATTERN = new RegExp(\"(\\\\d+|[\" + Object.keys(constants_1.NUMBER).join(\"\") + \"]+|半|幾)(?:\\\\s*)\" + \"(?:個)?\" + \"(秒(?:鐘)?|分鐘|小時|鐘|日|天|星期|禮拜|月|年)\" + \"(?:(?:之|過)?後|(?:之)?內)\", \"i\");\nconst NUMBER_GROUP = 1;\nconst UNIT_GROUP = 2;\n\nclass ZHHantDeadlineFormatParser extends AbstractParserWithWordBoundary_1.AbstractParserWithWordBoundaryChecking {\n innerPattern() {\n return PATTERN;\n }\n\n innerExtract(context, match) {\n const result = context.createParsingResult(match.index, match[0]);\n let number = parseInt(match[NUMBER_GROUP]);\n\n if (isNaN(number)) {\n number = constants_1.zhStringToNumber(match[NUMBER_GROUP]);\n }\n\n if (isNaN(number)) {\n const string = match[NUMBER_GROUP];\n\n if (string === \"幾\") {\n number = 3;\n } else if (string === \"半\") {\n number = 0.5;\n } else {\n return null;\n }\n }\n\n let date = dayjs_1.default(context.refDate);\n const unit = match[UNIT_GROUP];\n const unitAbbr = unit[0];\n\n if (unitAbbr.match(/[日天星禮月年]/)) {\n if (unitAbbr == \"日\" || unitAbbr == \"天\") {\n date = date.add(number, \"d\");\n } else if (unitAbbr == \"星\" || unitAbbr == \"禮\") {\n date = date.add(number * 7, \"d\");\n } else if (unitAbbr == \"月\") {\n date = date.add(number, \"month\");\n } else if (unitAbbr == \"年\") {\n date = date.add(number, \"year\");\n }\n\n result.start.assign(\"year\", date.year());\n result.start.assign(\"month\", date.month() + 1);\n result.start.assign(\"day\", date.date());\n return result;\n }\n\n if (unitAbbr == \"秒\") {\n date = date.add(number, \"second\");\n } else if (unitAbbr == \"分\") {\n date = date.add(number, \"minute\");\n } else if (unitAbbr == \"小\" || unitAbbr == \"鐘\") {\n date = date.add(number, \"hour\");\n }\n\n result.start.imply(\"year\", date.year());\n result.start.imply(\"month\", date.month() + 1);\n result.start.imply(\"day\", date.date());\n result.start.assign(\"hour\", date.hour());\n result.start.assign(\"minute\", date.minute());\n result.start.assign(\"second\", date.second());\n return result;\n }\n\n}\n\nexports.default = ZHHantDeadlineFormatParser;","\"use strict\";\n\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nconst dayjs_1 = __importDefault(require(\"dayjs\"));\n\nconst AbstractParserWithWordBoundary_1 = require(\"../../../../common/parsers/AbstractParserWithWordBoundary\");\n\nconst constants_1 = require(\"../constants\");\n\nconst PATTERN = new RegExp(\"(?上|今|下|這|呢)(?:個)?(?:星期|禮拜|週)(?\" + Object.keys(constants_1.WEEKDAY_OFFSET).join(\"|\") + \")\");\n\nclass ZHHantRelationWeekdayParser extends AbstractParserWithWordBoundary_1.AbstractParserWithWordBoundaryChecking {\n innerPattern() {\n return PATTERN;\n }\n\n innerExtract(context, match) {\n const result = context.createParsingResult(match.index, match[0]);\n const dayOfWeek = match.groups.weekday;\n const offset = constants_1.WEEKDAY_OFFSET[dayOfWeek];\n if (offset === undefined) return null;\n let modifier = null;\n const prefix = match.groups.prefix;\n\n if (prefix == \"上\") {\n modifier = \"last\";\n } else if (prefix == \"下\") {\n modifier = \"next\";\n } else if (prefix == \"今\" || prefix == \"這\" || prefix == \"呢\") {\n modifier = \"this\";\n }\n\n let startMoment = dayjs_1.default(context.refDate);\n let startMomentFixed = false;\n const refOffset = startMoment.day();\n\n if (modifier == \"last\" || modifier == \"past\") {\n startMoment = startMoment.day(offset - 7);\n startMomentFixed = true;\n } else if (modifier == \"next\") {\n startMoment = startMoment.day(offset + 7);\n startMomentFixed = true;\n } else if (modifier == \"this\") {\n startMoment = startMoment.day(offset);\n } else {\n if (Math.abs(offset - 7 - refOffset) < Math.abs(offset - refOffset)) {\n startMoment = startMoment.day(offset - 7);\n } else if (Math.abs(offset + 7 - refOffset) < Math.abs(offset - refOffset)) {\n startMoment = startMoment.day(offset + 7);\n } else {\n startMoment = startMoment.day(offset);\n }\n }\n\n result.start.assign(\"weekday\", offset);\n\n if (startMomentFixed) {\n result.start.assign(\"day\", startMoment.date());\n result.start.assign(\"month\", startMoment.month() + 1);\n result.start.assign(\"year\", startMoment.year());\n } else {\n result.start.imply(\"day\", startMoment.date());\n result.start.imply(\"month\", startMoment.month() + 1);\n result.start.imply(\"year\", startMoment.year());\n }\n\n return result;\n }\n\n}\n\nexports.default = ZHHantRelationWeekdayParser;","\"use strict\";\n\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nconst dayjs_1 = __importDefault(require(\"dayjs\"));\n\nconst AbstractParserWithWordBoundary_1 = require(\"../../../../common/parsers/AbstractParserWithWordBoundary\");\n\nconst constants_1 = require(\"../constants\");\n\nconst FIRST_REG_PATTERN = new RegExp(\"(?:由|從|自)?\" + \"(?:\" + \"(今|明|前|大前|後|大後|聽|昨|尋|琴)(早|朝|晚)|\" + \"(上(?:午|晝)|朝(?:早)|早(?:上)|下(?:午|晝)|晏(?:晝)|晚(?:上)|夜(?:晚)?|中(?:午)|凌(?:晨))|\" + \"(今|明|前|大前|後|大後|聽|昨|尋|琴)(?:日|天)\" + \"(?:[\\\\s,,]*)\" + \"(?:(上(?:午|晝)|朝(?:早)|早(?:上)|下(?:午|晝)|晏(?:晝)|晚(?:上)|夜(?:晚)?|中(?:午)|凌(?:晨)))?\" + \")?\" + \"(?:[\\\\s,,]*)\" + \"(?:(\\\\d+|[\" + Object.keys(constants_1.NUMBER).join(\"\") + \"]+)(?:\\\\s*)(?:點|時|:|:)\" + \"(?:\\\\s*)\" + \"(\\\\d+|半|正|整|[\" + Object.keys(constants_1.NUMBER).join(\"\") + \"]+)?(?:\\\\s*)(?:分|:|:)?\" + \"(?:\\\\s*)\" + \"(\\\\d+|[\" + Object.keys(constants_1.NUMBER).join(\"\") + \"]+)?(?:\\\\s*)(?:秒)?)\" + \"(?:\\\\s*(A.M.|P.M.|AM?|PM?))?\", \"i\");\nconst SECOND_REG_PATTERN = new RegExp(\"(?:^\\\\s*(?:到|至|\\\\-|\\\\–|\\\\~|\\\\〜)\\\\s*)\" + \"(?:\" + \"(今|明|前|大前|後|大後|聽|昨|尋|琴)(早|朝|晚)|\" + \"(上(?:午|晝)|朝(?:早)|早(?:上)|下(?:午|晝)|晏(?:晝)|晚(?:上)|夜(?:晚)?|中(?:午)|凌(?:晨))|\" + \"(今|明|前|大前|後|大後|聽|昨|尋|琴)(?:日|天)\" + \"(?:[\\\\s,,]*)\" + \"(?:(上(?:午|晝)|朝(?:早)|早(?:上)|下(?:午|晝)|晏(?:晝)|晚(?:上)|夜(?:晚)?|中(?:午)|凌(?:晨)))?\" + \")?\" + \"(?:[\\\\s,,]*)\" + \"(?:(\\\\d+|[\" + Object.keys(constants_1.NUMBER).join(\"\") + \"]+)(?:\\\\s*)(?:點|時|:|:)\" + \"(?:\\\\s*)\" + \"(\\\\d+|半|正|整|[\" + Object.keys(constants_1.NUMBER).join(\"\") + \"]+)?(?:\\\\s*)(?:分|:|:)?\" + \"(?:\\\\s*)\" + \"(\\\\d+|[\" + Object.keys(constants_1.NUMBER).join(\"\") + \"]+)?(?:\\\\s*)(?:秒)?)\" + \"(?:\\\\s*(A.M.|P.M.|AM?|PM?))?\", \"i\");\nconst DAY_GROUP_1 = 1;\nconst ZH_AM_PM_HOUR_GROUP_1 = 2;\nconst ZH_AM_PM_HOUR_GROUP_2 = 3;\nconst DAY_GROUP_3 = 4;\nconst ZH_AM_PM_HOUR_GROUP_3 = 5;\nconst HOUR_GROUP = 6;\nconst MINUTE_GROUP = 7;\nconst SECOND_GROUP = 8;\nconst AM_PM_HOUR_GROUP = 9;\n\nclass ZHHantTimeExpressionParser extends AbstractParserWithWordBoundary_1.AbstractParserWithWordBoundaryChecking {\n innerPattern() {\n return FIRST_REG_PATTERN;\n }\n\n innerExtract(context, match) {\n if (match.index > 0 && context.text[match.index - 1].match(/\\w/)) {\n return null;\n }\n\n const refMoment = dayjs_1.default(context.refDate);\n const result = context.createParsingResult(match.index, match[0]);\n let startMoment = refMoment.clone();\n\n if (match[DAY_GROUP_1]) {\n var day1 = match[DAY_GROUP_1];\n\n if (day1 == \"明\" || day1 == \"聽\") {\n if (refMoment.hour() > 1) {\n startMoment = startMoment.add(1, \"day\");\n }\n } else if (day1 == \"昨\" || day1 == \"尋\" || day1 == \"琴\") {\n startMoment = startMoment.add(-1, \"day\");\n } else if (day1 == \"前\") {\n startMoment = startMoment.add(-2, \"day\");\n } else if (day1 == \"大前\") {\n startMoment = startMoment.add(-3, \"day\");\n } else if (day1 == \"後\") {\n startMoment = startMoment.add(2, \"day\");\n } else if (day1 == \"大後\") {\n startMoment = startMoment.add(3, \"day\");\n }\n\n result.start.assign(\"day\", startMoment.date());\n result.start.assign(\"month\", startMoment.month() + 1);\n result.start.assign(\"year\", startMoment.year());\n } else if (match[DAY_GROUP_3]) {\n var day3 = match[DAY_GROUP_3];\n\n if (day3 == \"明\" || day3 == \"聽\") {\n startMoment = startMoment.add(1, \"day\");\n } else if (day3 == \"昨\" || day3 == \"尋\" || day3 == \"琴\") {\n startMoment = startMoment.add(-1, \"day\");\n } else if (day3 == \"前\") {\n startMoment = startMoment.add(-2, \"day\");\n } else if (day3 == \"大前\") {\n startMoment = startMoment.add(-3, \"day\");\n } else if (day3 == \"後\") {\n startMoment = startMoment.add(2, \"day\");\n } else if (day3 == \"大後\") {\n startMoment = startMoment.add(3, \"day\");\n }\n\n result.start.assign(\"day\", startMoment.date());\n result.start.assign(\"month\", startMoment.month() + 1);\n result.start.assign(\"year\", startMoment.year());\n } else {\n result.start.imply(\"day\", startMoment.date());\n result.start.imply(\"month\", startMoment.month() + 1);\n result.start.imply(\"year\", startMoment.year());\n }\n\n let hour = 0;\n let minute = 0;\n let meridiem = -1;\n\n if (match[SECOND_GROUP]) {\n var second = parseInt(match[SECOND_GROUP]);\n\n if (isNaN(second)) {\n second = constants_1.zhStringToNumber(match[SECOND_GROUP]);\n }\n\n if (second >= 60) return null;\n result.start.assign(\"second\", second);\n }\n\n hour = parseInt(match[HOUR_GROUP]);\n\n if (isNaN(hour)) {\n hour = constants_1.zhStringToNumber(match[HOUR_GROUP]);\n }\n\n if (match[MINUTE_GROUP]) {\n if (match[MINUTE_GROUP] == \"半\") {\n minute = 30;\n } else if (match[MINUTE_GROUP] == \"正\" || match[MINUTE_GROUP] == \"整\") {\n minute = 0;\n } else {\n minute = parseInt(match[MINUTE_GROUP]);\n\n if (isNaN(minute)) {\n minute = constants_1.zhStringToNumber(match[MINUTE_GROUP]);\n }\n }\n } else if (hour > 100) {\n minute = hour % 100;\n hour = Math.floor(hour / 100);\n }\n\n if (minute >= 60) {\n return null;\n }\n\n if (hour > 24) {\n return null;\n }\n\n if (hour >= 12) {\n meridiem = 1;\n }\n\n if (match[AM_PM_HOUR_GROUP]) {\n if (hour > 12) return null;\n var ampm = match[AM_PM_HOUR_GROUP][0].toLowerCase();\n\n if (ampm == \"a\") {\n meridiem = 0;\n if (hour == 12) hour = 0;\n }\n\n if (ampm == \"p\") {\n meridiem = 1;\n if (hour != 12) hour += 12;\n }\n } else if (match[ZH_AM_PM_HOUR_GROUP_1]) {\n var zhAMPMString1 = match[ZH_AM_PM_HOUR_GROUP_1];\n var zhAMPM1 = zhAMPMString1[0];\n\n if (zhAMPM1 == \"朝\" || zhAMPM1 == \"早\") {\n meridiem = 0;\n if (hour == 12) hour = 0;\n } else if (zhAMPM1 == \"晚\") {\n meridiem = 1;\n if (hour != 12) hour += 12;\n }\n } else if (match[ZH_AM_PM_HOUR_GROUP_2]) {\n var zhAMPMString2 = match[ZH_AM_PM_HOUR_GROUP_2];\n var zhAMPM2 = zhAMPMString2[0];\n\n if (zhAMPM2 == \"上\" || zhAMPM2 == \"朝\" || zhAMPM2 == \"早\" || zhAMPM2 == \"凌\") {\n meridiem = 0;\n if (hour == 12) hour = 0;\n } else if (zhAMPM2 == \"下\" || zhAMPM2 == \"晏\" || zhAMPM2 == \"晚\") {\n meridiem = 1;\n if (hour != 12) hour += 12;\n }\n } else if (match[ZH_AM_PM_HOUR_GROUP_3]) {\n var zhAMPMString3 = match[ZH_AM_PM_HOUR_GROUP_3];\n var zhAMPM3 = zhAMPMString3[0];\n\n if (zhAMPM3 == \"上\" || zhAMPM3 == \"朝\" || zhAMPM3 == \"早\" || zhAMPM3 == \"凌\") {\n meridiem = 0;\n if (hour == 12) hour = 0;\n } else if (zhAMPM3 == \"下\" || zhAMPM3 == \"晏\" || zhAMPM3 == \"晚\") {\n meridiem = 1;\n if (hour != 12) hour += 12;\n }\n }\n\n result.start.assign(\"hour\", hour);\n result.start.assign(\"minute\", minute);\n\n if (meridiem >= 0) {\n result.start.assign(\"meridiem\", meridiem);\n } else {\n if (hour < 12) {\n result.start.imply(\"meridiem\", 0);\n } else {\n result.start.imply(\"meridiem\", 1);\n }\n }\n\n match = SECOND_REG_PATTERN.exec(context.text.substring(result.index + result.text.length));\n\n if (!match) {\n if (result.text.match(/^\\d+$/)) {\n return null;\n }\n\n return result;\n }\n\n let endMoment = startMoment.clone();\n result.end = context.createParsingComponents();\n\n if (match[DAY_GROUP_1]) {\n var day1 = match[DAY_GROUP_1];\n\n if (day1 == \"明\" || day1 == \"聽\") {\n if (refMoment.hour() > 1) {\n endMoment = endMoment.add(1, \"day\");\n }\n } else if (day1 == \"昨\" || day1 == \"尋\" || day1 == \"琴\") {\n endMoment = endMoment.add(-1, \"day\");\n } else if (day1 == \"前\") {\n endMoment = endMoment.add(-2, \"day\");\n } else if (day1 == \"大前\") {\n endMoment = endMoment.add(-3, \"day\");\n } else if (day1 == \"後\") {\n endMoment = endMoment.add(2, \"day\");\n } else if (day1 == \"大後\") {\n endMoment = endMoment.add(3, \"day\");\n }\n\n result.end.assign(\"day\", endMoment.date());\n result.end.assign(\"month\", endMoment.month() + 1);\n result.end.assign(\"year\", endMoment.year());\n } else if (match[DAY_GROUP_3]) {\n var day3 = match[DAY_GROUP_3];\n\n if (day3 == \"明\" || day3 == \"聽\") {\n endMoment = endMoment.add(1, \"day\");\n } else if (day3 == \"昨\" || day3 == \"尋\" || day3 == \"琴\") {\n endMoment = endMoment.add(-1, \"day\");\n } else if (day3 == \"前\") {\n endMoment = endMoment.add(-2, \"day\");\n } else if (day3 == \"大前\") {\n endMoment = endMoment.add(-3, \"day\");\n } else if (day3 == \"後\") {\n endMoment = endMoment.add(2, \"day\");\n } else if (day3 == \"大後\") {\n endMoment = endMoment.add(3, \"day\");\n }\n\n result.end.assign(\"day\", endMoment.date());\n result.end.assign(\"month\", endMoment.month() + 1);\n result.end.assign(\"year\", endMoment.year());\n } else {\n result.end.imply(\"day\", endMoment.date());\n result.end.imply(\"month\", endMoment.month() + 1);\n result.end.imply(\"year\", endMoment.year());\n }\n\n hour = 0;\n minute = 0;\n meridiem = -1;\n\n if (match[SECOND_GROUP]) {\n var second = parseInt(match[SECOND_GROUP]);\n\n if (isNaN(second)) {\n second = constants_1.zhStringToNumber(match[SECOND_GROUP]);\n }\n\n if (second >= 60) return null;\n result.end.assign(\"second\", second);\n }\n\n hour = parseInt(match[HOUR_GROUP]);\n\n if (isNaN(hour)) {\n hour = constants_1.zhStringToNumber(match[HOUR_GROUP]);\n }\n\n if (match[MINUTE_GROUP]) {\n if (match[MINUTE_GROUP] == \"半\") {\n minute = 30;\n } else if (match[MINUTE_GROUP] == \"正\" || match[MINUTE_GROUP] == \"整\") {\n minute = 0;\n } else {\n minute = parseInt(match[MINUTE_GROUP]);\n\n if (isNaN(minute)) {\n minute = constants_1.zhStringToNumber(match[MINUTE_GROUP]);\n }\n }\n } else if (hour > 100) {\n minute = hour % 100;\n hour = Math.floor(hour / 100);\n }\n\n if (minute >= 60) {\n return null;\n }\n\n if (hour > 24) {\n return null;\n }\n\n if (hour >= 12) {\n meridiem = 1;\n }\n\n if (match[AM_PM_HOUR_GROUP]) {\n if (hour > 12) return null;\n var ampm = match[AM_PM_HOUR_GROUP][0].toLowerCase();\n\n if (ampm == \"a\") {\n meridiem = 0;\n if (hour == 12) hour = 0;\n }\n\n if (ampm == \"p\") {\n meridiem = 1;\n if (hour != 12) hour += 12;\n }\n\n if (!result.start.isCertain(\"meridiem\")) {\n if (meridiem == 0) {\n result.start.imply(\"meridiem\", 0);\n\n if (result.start.get(\"hour\") == 12) {\n result.start.assign(\"hour\", 0);\n }\n } else {\n result.start.imply(\"meridiem\", 1);\n\n if (result.start.get(\"hour\") != 12) {\n result.start.assign(\"hour\", result.start.get(\"hour\") + 12);\n }\n }\n }\n } else if (match[ZH_AM_PM_HOUR_GROUP_1]) {\n var zhAMPMString1 = match[ZH_AM_PM_HOUR_GROUP_1];\n var zhAMPM1 = zhAMPMString1[0];\n\n if (zhAMPM1 == \"朝\" || zhAMPM1 == \"早\") {\n meridiem = 0;\n if (hour == 12) hour = 0;\n } else if (zhAMPM1 == \"晚\") {\n meridiem = 1;\n if (hour != 12) hour += 12;\n }\n } else if (match[ZH_AM_PM_HOUR_GROUP_2]) {\n var zhAMPMString2 = match[ZH_AM_PM_HOUR_GROUP_2];\n var zhAMPM2 = zhAMPMString2[0];\n\n if (zhAMPM2 == \"上\" || zhAMPM2 == \"朝\" || zhAMPM2 == \"早\" || zhAMPM2 == \"凌\") {\n meridiem = 0;\n if (hour == 12) hour = 0;\n } else if (zhAMPM2 == \"下\" || zhAMPM2 == \"晏\" || zhAMPM2 == \"晚\") {\n meridiem = 1;\n if (hour != 12) hour += 12;\n }\n } else if (match[ZH_AM_PM_HOUR_GROUP_3]) {\n var zhAMPMString3 = match[ZH_AM_PM_HOUR_GROUP_3];\n var zhAMPM3 = zhAMPMString3[0];\n\n if (zhAMPM3 == \"上\" || zhAMPM3 == \"朝\" || zhAMPM3 == \"早\" || zhAMPM3 == \"凌\") {\n meridiem = 0;\n if (hour == 12) hour = 0;\n } else if (zhAMPM3 == \"下\" || zhAMPM3 == \"晏\" || zhAMPM3 == \"晚\") {\n meridiem = 1;\n if (hour != 12) hour += 12;\n }\n }\n\n result.text = result.text + match[0];\n result.end.assign(\"hour\", hour);\n result.end.assign(\"minute\", minute);\n\n if (meridiem >= 0) {\n result.end.assign(\"meridiem\", meridiem);\n } else {\n const startAtPM = result.start.isCertain(\"meridiem\") && result.start.get(\"meridiem\") == 1;\n\n if (startAtPM && result.start.get(\"hour\") > hour) {\n result.end.imply(\"meridiem\", 0);\n } else if (hour > 12) {\n result.end.imply(\"meridiem\", 1);\n }\n }\n\n if (result.end.date().getTime() < result.start.date().getTime()) {\n result.end.imply(\"day\", result.end.get(\"day\") + 1);\n }\n\n return result;\n }\n\n}\n\nexports.default = ZHHantTimeExpressionParser;","\"use strict\";\n\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nconst dayjs_1 = __importDefault(require(\"dayjs\"));\n\nconst AbstractParserWithWordBoundary_1 = require(\"../../../../common/parsers/AbstractParserWithWordBoundary\");\n\nconst constants_1 = require(\"../constants\");\n\nconst PATTERN = new RegExp(\"(?:星期|禮拜|週)(?\" + Object.keys(constants_1.WEEKDAY_OFFSET).join(\"|\") + \")\");\n\nclass ZHHantWeekdayParser extends AbstractParserWithWordBoundary_1.AbstractParserWithWordBoundaryChecking {\n innerPattern() {\n return PATTERN;\n }\n\n innerExtract(context, match) {\n const result = context.createParsingResult(match.index, match[0]);\n const dayOfWeek = match.groups.weekday;\n const offset = constants_1.WEEKDAY_OFFSET[dayOfWeek];\n if (offset === undefined) return null;\n let startMoment = dayjs_1.default(context.refDate);\n const startMomentFixed = false;\n const refOffset = startMoment.day();\n\n if (Math.abs(offset - 7 - refOffset) < Math.abs(offset - refOffset)) {\n startMoment = startMoment.day(offset - 7);\n } else if (Math.abs(offset + 7 - refOffset) < Math.abs(offset - refOffset)) {\n startMoment = startMoment.day(offset + 7);\n } else {\n startMoment = startMoment.day(offset);\n }\n\n result.start.assign(\"weekday\", offset);\n\n if (startMomentFixed) {\n result.start.assign(\"day\", startMoment.date());\n result.start.assign(\"month\", startMoment.month() + 1);\n result.start.assign(\"year\", startMoment.year());\n } else {\n result.start.imply(\"day\", startMoment.date());\n result.start.imply(\"month\", startMoment.month() + 1);\n result.start.imply(\"year\", startMoment.year());\n }\n\n return result;\n }\n\n}\n\nexports.default = ZHHantWeekdayParser;","\"use strict\";\n\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nconst AbstractMergeDateRangeRefiner_1 = __importDefault(require(\"../../../../common/refiners/AbstractMergeDateRangeRefiner\"));\n\nclass ZHHantMergeDateRangeRefiner extends AbstractMergeDateRangeRefiner_1.default {\n patternBetween() {\n return /^\\s*(至|到|\\-|\\~|~|-|ー)\\s*$/i;\n }\n\n}\n\nexports.default = ZHHantMergeDateRangeRefiner;","\"use strict\";\n\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nconst AbstractMergeDateTimeRefiner_1 = __importDefault(require(\"../../../../common/refiners/AbstractMergeDateTimeRefiner\"));\n\nclass ZHHantMergeDateTimeRefiner extends AbstractMergeDateTimeRefiner_1.default {\n patternBetween() {\n return /^\\s*$/i;\n }\n\n}\n\nexports.default = ZHHantMergeDateTimeRefiner;","\"use strict\";\n\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.createConfiguration = exports.createCasualConfiguration = exports.parseDate = exports.parse = exports.strict = exports.casual = exports.hans = void 0;\n\nconst chrono_1 = require(\"../../../chrono\");\n\nconst ExtractTimezoneOffsetRefiner_1 = __importDefault(require(\"../../../common/refiners/ExtractTimezoneOffsetRefiner\"));\n\nconst configurations_1 = require(\"../../../configurations\");\n\nconst ZHHansCasualDateParser_1 = __importDefault(require(\"./parsers/ZHHansCasualDateParser\"));\n\nconst ZHHansDateParser_1 = __importDefault(require(\"./parsers/ZHHansDateParser\"));\n\nconst ZHHansDeadlineFormatParser_1 = __importDefault(require(\"./parsers/ZHHansDeadlineFormatParser\"));\n\nconst ZHHansRelationWeekdayParser_1 = __importDefault(require(\"./parsers/ZHHansRelationWeekdayParser\"));\n\nconst ZHHansTimeExpressionParser_1 = __importDefault(require(\"./parsers/ZHHansTimeExpressionParser\"));\n\nconst ZHHansWeekdayParser_1 = __importDefault(require(\"./parsers/ZHHansWeekdayParser\"));\n\nconst ZHHansMergeDateRangeRefiner_1 = __importDefault(require(\"./refiners/ZHHansMergeDateRangeRefiner\"));\n\nconst ZHHansMergeDateTimeRefiner_1 = __importDefault(require(\"./refiners/ZHHansMergeDateTimeRefiner\"));\n\nexports.hans = new chrono_1.Chrono(createCasualConfiguration());\nexports.casual = new chrono_1.Chrono(createCasualConfiguration());\nexports.strict = new chrono_1.Chrono(createConfiguration());\n\nfunction parse(text, ref, option) {\n return exports.casual.parse(text, ref, option);\n}\n\nexports.parse = parse;\n\nfunction parseDate(text, ref, option) {\n return exports.casual.parseDate(text, ref, option);\n}\n\nexports.parseDate = parseDate;\n\nfunction createCasualConfiguration() {\n const option = createConfiguration();\n option.parsers.unshift(new ZHHansCasualDateParser_1.default());\n return option;\n}\n\nexports.createCasualConfiguration = createCasualConfiguration;\n\nfunction createConfiguration() {\n const configuration = configurations_1.includeCommonConfiguration({\n parsers: [new ZHHansDateParser_1.default(), new ZHHansRelationWeekdayParser_1.default(), new ZHHansWeekdayParser_1.default(), new ZHHansTimeExpressionParser_1.default(), new ZHHansDeadlineFormatParser_1.default()],\n refiners: [new ZHHansMergeDateRangeRefiner_1.default(), new ZHHansMergeDateTimeRefiner_1.default()]\n });\n configuration.refiners = configuration.refiners.filter(refiner => !(refiner instanceof ExtractTimezoneOffsetRefiner_1.default));\n return configuration;\n}\n\nexports.createConfiguration = createConfiguration;","\"use strict\";\n\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nconst dayjs_1 = __importDefault(require(\"dayjs\"));\n\nconst AbstractParserWithWordBoundary_1 = require(\"../../../../common/parsers/AbstractParserWithWordBoundary\");\n\nconst NOW_GROUP = 1;\nconst DAY_GROUP_1 = 2;\nconst TIME_GROUP_1 = 3;\nconst TIME_GROUP_2 = 4;\nconst DAY_GROUP_3 = 5;\nconst TIME_GROUP_3 = 6;\n\nclass ZHHansCasualDateParser extends AbstractParserWithWordBoundary_1.AbstractParserWithWordBoundaryChecking {\n innerPattern(context) {\n return new RegExp(\"(现在|立(?:刻|即)|即刻)|\" + \"(今|明|前|大前|后|大后|昨)(早|晚)|\" + \"(上(?:午)|早(?:上)|下(?:午)|晚(?:上)|夜(?:晚)?|中(?:午)|凌(?:晨))|\" + \"(今|明|前|大前|后|大后|昨)(?:日|天)\" + \"(?:[\\\\s|,|,]*)\" + \"(?:(上(?:午)|早(?:上)|下(?:午)|晚(?:上)|夜(?:晚)?|中(?:午)|凌(?:晨)))?\", \"i\");\n }\n\n innerExtract(context, match) {\n const index = match.index;\n const result = context.createParsingResult(index, match[0]);\n const refMoment = dayjs_1.default(context.refDate);\n let startMoment = refMoment;\n\n if (match[NOW_GROUP]) {\n result.start.imply(\"hour\", refMoment.hour());\n result.start.imply(\"minute\", refMoment.minute());\n result.start.imply(\"second\", refMoment.second());\n result.start.imply(\"millisecond\", refMoment.millisecond());\n } else if (match[DAY_GROUP_1]) {\n const day1 = match[DAY_GROUP_1];\n const time1 = match[TIME_GROUP_1];\n\n if (day1 == \"明\") {\n if (refMoment.hour() > 1) {\n startMoment = startMoment.add(1, \"day\");\n }\n } else if (day1 == \"昨\") {\n startMoment = startMoment.add(-1, \"day\");\n } else if (day1 == \"前\") {\n startMoment = startMoment.add(-2, \"day\");\n } else if (day1 == \"大前\") {\n startMoment = startMoment.add(-3, \"day\");\n } else if (day1 == \"后\") {\n startMoment = startMoment.add(2, \"day\");\n } else if (day1 == \"大后\") {\n startMoment = startMoment.add(3, \"day\");\n }\n\n if (time1 == \"早\") {\n result.start.imply(\"hour\", 6);\n } else if (time1 == \"晚\") {\n result.start.imply(\"hour\", 22);\n result.start.imply(\"meridiem\", 1);\n }\n } else if (match[TIME_GROUP_2]) {\n const timeString2 = match[TIME_GROUP_2];\n const time2 = timeString2[0];\n\n if (time2 == \"早\" || time2 == \"上\") {\n result.start.imply(\"hour\", 6);\n } else if (time2 == \"下\") {\n result.start.imply(\"hour\", 15);\n result.start.imply(\"meridiem\", 1);\n } else if (time2 == \"中\") {\n result.start.imply(\"hour\", 12);\n result.start.imply(\"meridiem\", 1);\n } else if (time2 == \"夜\" || time2 == \"晚\") {\n result.start.imply(\"hour\", 22);\n result.start.imply(\"meridiem\", 1);\n } else if (time2 == \"凌\") {\n result.start.imply(\"hour\", 0);\n }\n } else if (match[DAY_GROUP_3]) {\n const day3 = match[DAY_GROUP_3];\n\n if (day3 == \"明\") {\n if (refMoment.hour() > 1) {\n startMoment = startMoment.add(1, \"day\");\n }\n } else if (day3 == \"昨\") {\n startMoment = startMoment.add(-1, \"day\");\n } else if (day3 == \"前\") {\n startMoment = startMoment.add(-2, \"day\");\n } else if (day3 == \"大前\") {\n startMoment = startMoment.add(-3, \"day\");\n } else if (day3 == \"后\") {\n startMoment = startMoment.add(2, \"day\");\n } else if (day3 == \"大后\") {\n startMoment = startMoment.add(3, \"day\");\n }\n\n const timeString3 = match[TIME_GROUP_3];\n\n if (timeString3) {\n const time3 = timeString3[0];\n\n if (time3 == \"早\" || time3 == \"上\") {\n result.start.imply(\"hour\", 6);\n } else if (time3 == \"下\") {\n result.start.imply(\"hour\", 15);\n result.start.imply(\"meridiem\", 1);\n } else if (time3 == \"中\") {\n result.start.imply(\"hour\", 12);\n result.start.imply(\"meridiem\", 1);\n } else if (time3 == \"夜\" || time3 == \"晚\") {\n result.start.imply(\"hour\", 22);\n result.start.imply(\"meridiem\", 1);\n } else if (time3 == \"凌\") {\n result.start.imply(\"hour\", 0);\n }\n }\n }\n\n result.start.assign(\"day\", startMoment.date());\n result.start.assign(\"month\", startMoment.month() + 1);\n result.start.assign(\"year\", startMoment.year());\n return result;\n }\n\n}\n\nexports.default = ZHHansCasualDateParser;","\"use strict\";\n\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nconst dayjs_1 = __importDefault(require(\"dayjs\"));\n\nconst AbstractParserWithWordBoundary_1 = require(\"../../../../common/parsers/AbstractParserWithWordBoundary\");\n\nconst constants_1 = require(\"../constants\");\n\nconst YEAR_GROUP = 1;\nconst MONTH_GROUP = 2;\nconst DAY_GROUP = 3;\n\nclass ZHHansDateParser extends AbstractParserWithWordBoundary_1.AbstractParserWithWordBoundaryChecking {\n innerPattern() {\n return new RegExp(\"(\" + \"\\\\d{2,4}|\" + \"[\" + Object.keys(constants_1.NUMBER).join(\"\") + \"]{4}|\" + \"[\" + Object.keys(constants_1.NUMBER).join(\"\") + \"]{2}\" + \")?\" + \"(?:\\\\s*)\" + \"(?:年)?\" + \"(?:[\\\\s|,|,]*)\" + \"(\" + \"\\\\d{1,2}|\" + \"[\" + Object.keys(constants_1.NUMBER).join(\"\") + \"]{1,3}\" + \")\" + \"(?:\\\\s*)\" + \"(?:月)\" + \"(?:\\\\s*)\" + \"(\" + \"\\\\d{1,2}|\" + \"[\" + Object.keys(constants_1.NUMBER).join(\"\") + \"]{1,3}\" + \")?\" + \"(?:\\\\s*)\" + \"(?:日|号)?\");\n }\n\n innerExtract(context, match) {\n const startMoment = dayjs_1.default(context.refDate);\n const result = context.createParsingResult(match.index, match[0]);\n let month = parseInt(match[MONTH_GROUP]);\n if (isNaN(month)) month = constants_1.zhStringToNumber(match[MONTH_GROUP]);\n result.start.assign(\"month\", month);\n\n if (match[DAY_GROUP]) {\n let day = parseInt(match[DAY_GROUP]);\n if (isNaN(day)) day = constants_1.zhStringToNumber(match[DAY_GROUP]);\n result.start.assign(\"day\", day);\n } else {\n result.start.imply(\"day\", startMoment.date());\n }\n\n if (match[YEAR_GROUP]) {\n let year = parseInt(match[YEAR_GROUP]);\n if (isNaN(year)) year = constants_1.zhStringToYear(match[YEAR_GROUP]);\n result.start.assign(\"year\", year);\n } else {\n result.start.imply(\"year\", startMoment.year());\n }\n\n return result;\n }\n\n}\n\nexports.default = ZHHansDateParser;","\"use strict\";\n\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nconst dayjs_1 = __importDefault(require(\"dayjs\"));\n\nconst AbstractParserWithWordBoundary_1 = require(\"../../../../common/parsers/AbstractParserWithWordBoundary\");\n\nconst constants_1 = require(\"../constants\");\n\nconst PATTERN = new RegExp(\"(\\\\d+|[\" + Object.keys(constants_1.NUMBER).join(\"\") + \"]+|半|几)(?:\\\\s*)\" + \"(?:个)?\" + \"(秒(?:钟)?|分钟|小时|钟|日|天|星期|礼拜|月|年)\" + \"(?:(?:之|过)?后|(?:之)?内)\", \"i\");\nconst NUMBER_GROUP = 1;\nconst UNIT_GROUP = 2;\n\nclass ZHHansDeadlineFormatParser extends AbstractParserWithWordBoundary_1.AbstractParserWithWordBoundaryChecking {\n innerPattern() {\n return PATTERN;\n }\n\n innerExtract(context, match) {\n const result = context.createParsingResult(match.index, match[0]);\n let number = parseInt(match[NUMBER_GROUP]);\n\n if (isNaN(number)) {\n number = constants_1.zhStringToNumber(match[NUMBER_GROUP]);\n }\n\n if (isNaN(number)) {\n const string = match[NUMBER_GROUP];\n\n if (string === \"几\") {\n number = 3;\n } else if (string === \"半\") {\n number = 0.5;\n } else {\n return null;\n }\n }\n\n let date = dayjs_1.default(context.refDate);\n const unit = match[UNIT_GROUP];\n const unitAbbr = unit[0];\n\n if (unitAbbr.match(/[日天星礼月年]/)) {\n if (unitAbbr == \"日\" || unitAbbr == \"天\") {\n date = date.add(number, \"d\");\n } else if (unitAbbr == \"星\" || unitAbbr == \"礼\") {\n date = date.add(number * 7, \"d\");\n } else if (unitAbbr == \"月\") {\n date = date.add(number, \"month\");\n } else if (unitAbbr == \"年\") {\n date = date.add(number, \"year\");\n }\n\n result.start.assign(\"year\", date.year());\n result.start.assign(\"month\", date.month() + 1);\n result.start.assign(\"day\", date.date());\n return result;\n }\n\n if (unitAbbr == \"秒\") {\n date = date.add(number, \"second\");\n } else if (unitAbbr == \"分\") {\n date = date.add(number, \"minute\");\n } else if (unitAbbr == \"小\" || unitAbbr == \"钟\") {\n date = date.add(number, \"hour\");\n }\n\n result.start.imply(\"year\", date.year());\n result.start.imply(\"month\", date.month() + 1);\n result.start.imply(\"day\", date.date());\n result.start.assign(\"hour\", date.hour());\n result.start.assign(\"minute\", date.minute());\n result.start.assign(\"second\", date.second());\n return result;\n }\n\n}\n\nexports.default = ZHHansDeadlineFormatParser;","\"use strict\";\n\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nconst dayjs_1 = __importDefault(require(\"dayjs\"));\n\nconst AbstractParserWithWordBoundary_1 = require(\"../../../../common/parsers/AbstractParserWithWordBoundary\");\n\nconst constants_1 = require(\"../constants\");\n\nconst PATTERN = new RegExp(\"(?上|下|这)(?:个)?(?:星期|礼拜|周)(?\" + Object.keys(constants_1.WEEKDAY_OFFSET).join(\"|\") + \")\");\n\nclass ZHHansRelationWeekdayParser extends AbstractParserWithWordBoundary_1.AbstractParserWithWordBoundaryChecking {\n innerPattern() {\n return PATTERN;\n }\n\n innerExtract(context, match) {\n const result = context.createParsingResult(match.index, match[0]);\n const dayOfWeek = match.groups.weekday;\n const offset = constants_1.WEEKDAY_OFFSET[dayOfWeek];\n if (offset === undefined) return null;\n let modifier = null;\n const prefix = match.groups.prefix;\n\n if (prefix == \"上\") {\n modifier = \"last\";\n } else if (prefix == \"下\") {\n modifier = \"next\";\n } else if (prefix == \"这\") {\n modifier = \"this\";\n }\n\n let startMoment = dayjs_1.default(context.refDate);\n let startMomentFixed = false;\n const refOffset = startMoment.day();\n\n if (modifier == \"last\" || modifier == \"past\") {\n startMoment = startMoment.day(offset - 7);\n startMomentFixed = true;\n } else if (modifier == \"next\") {\n startMoment = startMoment.day(offset + 7);\n startMomentFixed = true;\n } else if (modifier == \"this\") {\n startMoment = startMoment.day(offset);\n } else {\n if (Math.abs(offset - 7 - refOffset) < Math.abs(offset - refOffset)) {\n startMoment = startMoment.day(offset - 7);\n } else if (Math.abs(offset + 7 - refOffset) < Math.abs(offset - refOffset)) {\n startMoment = startMoment.day(offset + 7);\n } else {\n startMoment = startMoment.day(offset);\n }\n }\n\n result.start.assign(\"weekday\", offset);\n\n if (startMomentFixed) {\n result.start.assign(\"day\", startMoment.date());\n result.start.assign(\"month\", startMoment.month() + 1);\n result.start.assign(\"year\", startMoment.year());\n } else {\n result.start.imply(\"day\", startMoment.date());\n result.start.imply(\"month\", startMoment.month() + 1);\n result.start.imply(\"year\", startMoment.year());\n }\n\n return result;\n }\n\n}\n\nexports.default = ZHHansRelationWeekdayParser;","\"use strict\";\n\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nconst dayjs_1 = __importDefault(require(\"dayjs\"));\n\nconst AbstractParserWithWordBoundary_1 = require(\"../../../../common/parsers/AbstractParserWithWordBoundary\");\n\nconst constants_1 = require(\"../constants\");\n\nconst FIRST_REG_PATTERN = new RegExp(\"(?:从|自)?\" + \"(?:\" + \"(今|明|前|大前|后|大后|昨)(早|朝|晚)|\" + \"(上(?:午)|早(?:上)|下(?:午)|晚(?:上)|夜(?:晚)?|中(?:午)|凌(?:晨))|\" + \"(今|明|前|大前|后|大后|昨)(?:日|天)\" + \"(?:[\\\\s,,]*)\" + \"(?:(上(?:午)|早(?:上)|下(?:午)|晚(?:上)|夜(?:晚)?|中(?:午)|凌(?:晨)))?\" + \")?\" + \"(?:[\\\\s,,]*)\" + \"(?:(\\\\d+|[\" + Object.keys(constants_1.NUMBER).join(\"\") + \"]+)(?:\\\\s*)(?:点|时|:|:)\" + \"(?:\\\\s*)\" + \"(\\\\d+|半|正|整|[\" + Object.keys(constants_1.NUMBER).join(\"\") + \"]+)?(?:\\\\s*)(?:分|:|:)?\" + \"(?:\\\\s*)\" + \"(\\\\d+|[\" + Object.keys(constants_1.NUMBER).join(\"\") + \"]+)?(?:\\\\s*)(?:秒)?)\" + \"(?:\\\\s*(A.M.|P.M.|AM?|PM?))?\", \"i\");\nconst SECOND_REG_PATTERN = new RegExp(\"(?:^\\\\s*(?:到|至|\\\\-|\\\\–|\\\\~|\\\\〜)\\\\s*)\" + \"(?:\" + \"(今|明|前|大前|后|大后|昨)(早|朝|晚)|\" + \"(上(?:午)|早(?:上)|下(?:午)|晚(?:上)|夜(?:晚)?|中(?:午)|凌(?:晨))|\" + \"(今|明|前|大前|后|大后|昨)(?:日|天)\" + \"(?:[\\\\s,,]*)\" + \"(?:(上(?:午)|早(?:上)|下(?:午)|晚(?:上)|夜(?:晚)?|中(?:午)|凌(?:晨)))?\" + \")?\" + \"(?:[\\\\s,,]*)\" + \"(?:(\\\\d+|[\" + Object.keys(constants_1.NUMBER).join(\"\") + \"]+)(?:\\\\s*)(?:点|时|:|:)\" + \"(?:\\\\s*)\" + \"(\\\\d+|半|正|整|[\" + Object.keys(constants_1.NUMBER).join(\"\") + \"]+)?(?:\\\\s*)(?:分|:|:)?\" + \"(?:\\\\s*)\" + \"(\\\\d+|[\" + Object.keys(constants_1.NUMBER).join(\"\") + \"]+)?(?:\\\\s*)(?:秒)?)\" + \"(?:\\\\s*(A.M.|P.M.|AM?|PM?))?\", \"i\");\nconst DAY_GROUP_1 = 1;\nconst ZH_AM_PM_HOUR_GROUP_1 = 2;\nconst ZH_AM_PM_HOUR_GROUP_2 = 3;\nconst DAY_GROUP_3 = 4;\nconst ZH_AM_PM_HOUR_GROUP_3 = 5;\nconst HOUR_GROUP = 6;\nconst MINUTE_GROUP = 7;\nconst SECOND_GROUP = 8;\nconst AM_PM_HOUR_GROUP = 9;\n\nclass ZHHansTimeExpressionParser extends AbstractParserWithWordBoundary_1.AbstractParserWithWordBoundaryChecking {\n innerPattern() {\n return FIRST_REG_PATTERN;\n }\n\n innerExtract(context, match) {\n if (match.index > 0 && context.text[match.index - 1].match(/\\w/)) {\n return null;\n }\n\n const refMoment = dayjs_1.default(context.refDate);\n const result = context.createParsingResult(match.index, match[0]);\n let startMoment = refMoment.clone();\n\n if (match[DAY_GROUP_1]) {\n const day1 = match[DAY_GROUP_1];\n\n if (day1 == \"明\") {\n if (refMoment.hour() > 1) {\n startMoment = startMoment.add(1, \"day\");\n }\n } else if (day1 == \"昨\") {\n startMoment = startMoment.add(-1, \"day\");\n } else if (day1 == \"前\") {\n startMoment = startMoment.add(-2, \"day\");\n } else if (day1 == \"大前\") {\n startMoment = startMoment.add(-3, \"day\");\n } else if (day1 == \"后\") {\n startMoment = startMoment.add(2, \"day\");\n } else if (day1 == \"大后\") {\n startMoment = startMoment.add(3, \"day\");\n }\n\n result.start.assign(\"day\", startMoment.date());\n result.start.assign(\"month\", startMoment.month() + 1);\n result.start.assign(\"year\", startMoment.year());\n } else if (match[DAY_GROUP_3]) {\n const day3 = match[DAY_GROUP_3];\n\n if (day3 == \"明\") {\n startMoment = startMoment.add(1, \"day\");\n } else if (day3 == \"昨\") {\n startMoment = startMoment.add(-1, \"day\");\n } else if (day3 == \"前\") {\n startMoment = startMoment.add(-2, \"day\");\n } else if (day3 == \"大前\") {\n startMoment = startMoment.add(-3, \"day\");\n } else if (day3 == \"后\") {\n startMoment = startMoment.add(2, \"day\");\n } else if (day3 == \"大后\") {\n startMoment = startMoment.add(3, \"day\");\n }\n\n result.start.assign(\"day\", startMoment.date());\n result.start.assign(\"month\", startMoment.month() + 1);\n result.start.assign(\"year\", startMoment.year());\n } else {\n result.start.imply(\"day\", startMoment.date());\n result.start.imply(\"month\", startMoment.month() + 1);\n result.start.imply(\"year\", startMoment.year());\n }\n\n let hour = 0;\n let minute = 0;\n let meridiem = -1;\n\n if (match[SECOND_GROUP]) {\n let second = parseInt(match[SECOND_GROUP]);\n\n if (isNaN(second)) {\n second = constants_1.zhStringToNumber(match[SECOND_GROUP]);\n }\n\n if (second >= 60) return null;\n result.start.assign(\"second\", second);\n }\n\n hour = parseInt(match[HOUR_GROUP]);\n\n if (isNaN(hour)) {\n hour = constants_1.zhStringToNumber(match[HOUR_GROUP]);\n }\n\n if (match[MINUTE_GROUP]) {\n if (match[MINUTE_GROUP] == \"半\") {\n minute = 30;\n } else if (match[MINUTE_GROUP] == \"正\" || match[MINUTE_GROUP] == \"整\") {\n minute = 0;\n } else {\n minute = parseInt(match[MINUTE_GROUP]);\n\n if (isNaN(minute)) {\n minute = constants_1.zhStringToNumber(match[MINUTE_GROUP]);\n }\n }\n } else if (hour > 100) {\n minute = hour % 100;\n hour = Math.floor(hour / 100);\n }\n\n if (minute >= 60) {\n return null;\n }\n\n if (hour > 24) {\n return null;\n }\n\n if (hour >= 12) {\n meridiem = 1;\n }\n\n if (match[AM_PM_HOUR_GROUP]) {\n if (hour > 12) return null;\n const ampm = match[AM_PM_HOUR_GROUP][0].toLowerCase();\n\n if (ampm == \"a\") {\n meridiem = 0;\n if (hour == 12) hour = 0;\n }\n\n if (ampm == \"p\") {\n meridiem = 1;\n if (hour != 12) hour += 12;\n }\n } else if (match[ZH_AM_PM_HOUR_GROUP_1]) {\n const zhAMPMString1 = match[ZH_AM_PM_HOUR_GROUP_1];\n const zhAMPM1 = zhAMPMString1[0];\n\n if (zhAMPM1 == \"早\") {\n meridiem = 0;\n if (hour == 12) hour = 0;\n } else if (zhAMPM1 == \"晚\") {\n meridiem = 1;\n if (hour != 12) hour += 12;\n }\n } else if (match[ZH_AM_PM_HOUR_GROUP_2]) {\n const zhAMPMString2 = match[ZH_AM_PM_HOUR_GROUP_2];\n const zhAMPM2 = zhAMPMString2[0];\n\n if (zhAMPM2 == \"上\" || zhAMPM2 == \"早\" || zhAMPM2 == \"凌\") {\n meridiem = 0;\n if (hour == 12) hour = 0;\n } else if (zhAMPM2 == \"下\" || zhAMPM2 == \"晚\") {\n meridiem = 1;\n if (hour != 12) hour += 12;\n }\n } else if (match[ZH_AM_PM_HOUR_GROUP_3]) {\n const zhAMPMString3 = match[ZH_AM_PM_HOUR_GROUP_3];\n const zhAMPM3 = zhAMPMString3[0];\n\n if (zhAMPM3 == \"上\" || zhAMPM3 == \"早\" || zhAMPM3 == \"凌\") {\n meridiem = 0;\n if (hour == 12) hour = 0;\n } else if (zhAMPM3 == \"下\" || zhAMPM3 == \"晚\") {\n meridiem = 1;\n if (hour != 12) hour += 12;\n }\n }\n\n result.start.assign(\"hour\", hour);\n result.start.assign(\"minute\", minute);\n\n if (meridiem >= 0) {\n result.start.assign(\"meridiem\", meridiem);\n } else {\n if (hour < 12) {\n result.start.imply(\"meridiem\", 0);\n } else {\n result.start.imply(\"meridiem\", 1);\n }\n }\n\n match = SECOND_REG_PATTERN.exec(context.text.substring(result.index + result.text.length));\n\n if (!match) {\n if (result.text.match(/^\\d+$/)) {\n return null;\n }\n\n return result;\n }\n\n let endMoment = startMoment.clone();\n result.end = context.createParsingComponents();\n\n if (match[DAY_GROUP_1]) {\n const day1 = match[DAY_GROUP_1];\n\n if (day1 == \"明\") {\n if (refMoment.hour() > 1) {\n endMoment = endMoment.add(1, \"day\");\n }\n } else if (day1 == \"昨\") {\n endMoment = endMoment.add(-1, \"day\");\n } else if (day1 == \"前\") {\n endMoment = endMoment.add(-2, \"day\");\n } else if (day1 == \"大前\") {\n endMoment = endMoment.add(-3, \"day\");\n } else if (day1 == \"后\") {\n endMoment = endMoment.add(2, \"day\");\n } else if (day1 == \"大后\") {\n endMoment = endMoment.add(3, \"day\");\n }\n\n result.end.assign(\"day\", endMoment.date());\n result.end.assign(\"month\", endMoment.month() + 1);\n result.end.assign(\"year\", endMoment.year());\n } else if (match[DAY_GROUP_3]) {\n const day3 = match[DAY_GROUP_3];\n\n if (day3 == \"明\") {\n endMoment = endMoment.add(1, \"day\");\n } else if (day3 == \"昨\") {\n endMoment = endMoment.add(-1, \"day\");\n } else if (day3 == \"前\") {\n endMoment = endMoment.add(-2, \"day\");\n } else if (day3 == \"大前\") {\n endMoment = endMoment.add(-3, \"day\");\n } else if (day3 == \"后\") {\n endMoment = endMoment.add(2, \"day\");\n } else if (day3 == \"大后\") {\n endMoment = endMoment.add(3, \"day\");\n }\n\n result.end.assign(\"day\", endMoment.date());\n result.end.assign(\"month\", endMoment.month() + 1);\n result.end.assign(\"year\", endMoment.year());\n } else {\n result.end.imply(\"day\", endMoment.date());\n result.end.imply(\"month\", endMoment.month() + 1);\n result.end.imply(\"year\", endMoment.year());\n }\n\n hour = 0;\n minute = 0;\n meridiem = -1;\n\n if (match[SECOND_GROUP]) {\n let second = parseInt(match[SECOND_GROUP]);\n\n if (isNaN(second)) {\n second = constants_1.zhStringToNumber(match[SECOND_GROUP]);\n }\n\n if (second >= 60) return null;\n result.end.assign(\"second\", second);\n }\n\n hour = parseInt(match[HOUR_GROUP]);\n\n if (isNaN(hour)) {\n hour = constants_1.zhStringToNumber(match[HOUR_GROUP]);\n }\n\n if (match[MINUTE_GROUP]) {\n if (match[MINUTE_GROUP] == \"半\") {\n minute = 30;\n } else if (match[MINUTE_GROUP] == \"正\" || match[MINUTE_GROUP] == \"整\") {\n minute = 0;\n } else {\n minute = parseInt(match[MINUTE_GROUP]);\n\n if (isNaN(minute)) {\n minute = constants_1.zhStringToNumber(match[MINUTE_GROUP]);\n }\n }\n } else if (hour > 100) {\n minute = hour % 100;\n hour = Math.floor(hour / 100);\n }\n\n if (minute >= 60) {\n return null;\n }\n\n if (hour > 24) {\n return null;\n }\n\n if (hour >= 12) {\n meridiem = 1;\n }\n\n if (match[AM_PM_HOUR_GROUP]) {\n if (hour > 12) return null;\n const ampm = match[AM_PM_HOUR_GROUP][0].toLowerCase();\n\n if (ampm == \"a\") {\n meridiem = 0;\n if (hour == 12) hour = 0;\n }\n\n if (ampm == \"p\") {\n meridiem = 1;\n if (hour != 12) hour += 12;\n }\n\n if (!result.start.isCertain(\"meridiem\")) {\n if (meridiem == 0) {\n result.start.imply(\"meridiem\", 0);\n\n if (result.start.get(\"hour\") == 12) {\n result.start.assign(\"hour\", 0);\n }\n } else {\n result.start.imply(\"meridiem\", 1);\n\n if (result.start.get(\"hour\") != 12) {\n result.start.assign(\"hour\", result.start.get(\"hour\") + 12);\n }\n }\n }\n } else if (match[ZH_AM_PM_HOUR_GROUP_1]) {\n const zhAMPMString1 = match[ZH_AM_PM_HOUR_GROUP_1];\n const zhAMPM1 = zhAMPMString1[0];\n\n if (zhAMPM1 == \"早\") {\n meridiem = 0;\n if (hour == 12) hour = 0;\n } else if (zhAMPM1 == \"晚\") {\n meridiem = 1;\n if (hour != 12) hour += 12;\n }\n } else if (match[ZH_AM_PM_HOUR_GROUP_2]) {\n const zhAMPMString2 = match[ZH_AM_PM_HOUR_GROUP_2];\n const zhAMPM2 = zhAMPMString2[0];\n\n if (zhAMPM2 == \"上\" || zhAMPM2 == \"早\" || zhAMPM2 == \"凌\") {\n meridiem = 0;\n if (hour == 12) hour = 0;\n } else if (zhAMPM2 == \"下\" || zhAMPM2 == \"晚\") {\n meridiem = 1;\n if (hour != 12) hour += 12;\n }\n } else if (match[ZH_AM_PM_HOUR_GROUP_3]) {\n const zhAMPMString3 = match[ZH_AM_PM_HOUR_GROUP_3];\n const zhAMPM3 = zhAMPMString3[0];\n\n if (zhAMPM3 == \"上\" || zhAMPM3 == \"早\" || zhAMPM3 == \"凌\") {\n meridiem = 0;\n if (hour == 12) hour = 0;\n } else if (zhAMPM3 == \"下\" || zhAMPM3 == \"晚\") {\n meridiem = 1;\n if (hour != 12) hour += 12;\n }\n }\n\n result.text = result.text + match[0];\n result.end.assign(\"hour\", hour);\n result.end.assign(\"minute\", minute);\n\n if (meridiem >= 0) {\n result.end.assign(\"meridiem\", meridiem);\n } else {\n const startAtPM = result.start.isCertain(\"meridiem\") && result.start.get(\"meridiem\") == 1;\n\n if (startAtPM && result.start.get(\"hour\") > hour) {\n result.end.imply(\"meridiem\", 0);\n } else if (hour > 12) {\n result.end.imply(\"meridiem\", 1);\n }\n }\n\n if (result.end.date().getTime() < result.start.date().getTime()) {\n result.end.imply(\"day\", result.end.get(\"day\") + 1);\n }\n\n return result;\n }\n\n}\n\nexports.default = ZHHansTimeExpressionParser;","\"use strict\";\n\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nconst dayjs_1 = __importDefault(require(\"dayjs\"));\n\nconst AbstractParserWithWordBoundary_1 = require(\"../../../../common/parsers/AbstractParserWithWordBoundary\");\n\nconst constants_1 = require(\"../constants\");\n\nconst PATTERN = new RegExp(\"(?:星期|礼拜|周)(?\" + Object.keys(constants_1.WEEKDAY_OFFSET).join(\"|\") + \")\");\n\nclass ZHHansWeekdayParser extends AbstractParserWithWordBoundary_1.AbstractParserWithWordBoundaryChecking {\n innerPattern() {\n return PATTERN;\n }\n\n innerExtract(context, match) {\n const result = context.createParsingResult(match.index, match[0]);\n const dayOfWeek = match.groups.weekday;\n const offset = constants_1.WEEKDAY_OFFSET[dayOfWeek];\n if (offset === undefined) return null;\n let startMoment = dayjs_1.default(context.refDate);\n const startMomentFixed = false;\n const refOffset = startMoment.day();\n\n if (Math.abs(offset - 7 - refOffset) < Math.abs(offset - refOffset)) {\n startMoment = startMoment.day(offset - 7);\n } else if (Math.abs(offset + 7 - refOffset) < Math.abs(offset - refOffset)) {\n startMoment = startMoment.day(offset + 7);\n } else {\n startMoment = startMoment.day(offset);\n }\n\n result.start.assign(\"weekday\", offset);\n\n if (startMomentFixed) {\n result.start.assign(\"day\", startMoment.date());\n result.start.assign(\"month\", startMoment.month() + 1);\n result.start.assign(\"year\", startMoment.year());\n } else {\n result.start.imply(\"day\", startMoment.date());\n result.start.imply(\"month\", startMoment.month() + 1);\n result.start.imply(\"year\", startMoment.year());\n }\n\n return result;\n }\n\n}\n\nexports.default = ZHHansWeekdayParser;","\"use strict\";\n\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nconst AbstractMergeDateRangeRefiner_1 = __importDefault(require(\"../../../../common/refiners/AbstractMergeDateRangeRefiner\"));\n\nclass ZHHansMergeDateRangeRefiner extends AbstractMergeDateRangeRefiner_1.default {\n patternBetween() {\n return /^\\s*(至|到|-|~|~|-|ー)\\s*$/i;\n }\n\n}\n\nexports.default = ZHHansMergeDateRangeRefiner;","\"use strict\";\n\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nconst AbstractMergeDateTimeRefiner_1 = __importDefault(require(\"../../../../common/refiners/AbstractMergeDateTimeRefiner\"));\n\nclass ZHHansMergeDateTimeRefiner extends AbstractMergeDateTimeRefiner_1.default {\n patternBetween() {\n return /^\\s*$/i;\n }\n\n}\n\nexports.default = ZHHansMergeDateTimeRefiner;","\"use strict\";\n\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.createConfiguration = exports.createCasualConfiguration = exports.parseDate = exports.parse = exports.strict = exports.casual = void 0;\n\nconst RUTimeUnitWithinFormatParser_1 = __importDefault(require(\"./parsers/RUTimeUnitWithinFormatParser\"));\n\nconst RUMonthNameLittleEndianParser_1 = __importDefault(require(\"./parsers/RUMonthNameLittleEndianParser\"));\n\nconst RUMonthNameParser_1 = __importDefault(require(\"./parsers/RUMonthNameParser\"));\n\nconst RUTimeExpressionParser_1 = __importDefault(require(\"./parsers/RUTimeExpressionParser\"));\n\nconst RUTimeUnitAgoFormatParser_1 = __importDefault(require(\"./parsers/RUTimeUnitAgoFormatParser\"));\n\nconst RUMergeDateRangeRefiner_1 = __importDefault(require(\"./refiners/RUMergeDateRangeRefiner\"));\n\nconst RUMergeDateTimeRefiner_1 = __importDefault(require(\"./refiners/RUMergeDateTimeRefiner\"));\n\nconst configurations_1 = require(\"../../configurations\");\n\nconst RUCasualDateParser_1 = __importDefault(require(\"./parsers/RUCasualDateParser\"));\n\nconst RUCasualTimeParser_1 = __importDefault(require(\"./parsers/RUCasualTimeParser\"));\n\nconst RUWeekdayParser_1 = __importDefault(require(\"./parsers/RUWeekdayParser\"));\n\nconst RURelativeDateFormatParser_1 = __importDefault(require(\"./parsers/RURelativeDateFormatParser\"));\n\nconst chrono_1 = require(\"../../chrono\");\n\nconst SlashDateFormatParser_1 = __importDefault(require(\"../../common/parsers/SlashDateFormatParser\"));\n\nconst RUTimeUnitCasualRelativeFormatParser_1 = __importDefault(require(\"./parsers/RUTimeUnitCasualRelativeFormatParser\"));\n\nexports.casual = new chrono_1.Chrono(createCasualConfiguration());\nexports.strict = new chrono_1.Chrono(createConfiguration(true));\n\nfunction parse(text, ref, option) {\n return exports.casual.parse(text, ref, option);\n}\n\nexports.parse = parse;\n\nfunction parseDate(text, ref, option) {\n return exports.casual.parseDate(text, ref, option);\n}\n\nexports.parseDate = parseDate;\n\nfunction createCasualConfiguration() {\n const option = createConfiguration(false);\n option.parsers.unshift(new RUCasualDateParser_1.default());\n option.parsers.unshift(new RUCasualTimeParser_1.default());\n option.parsers.unshift(new RUMonthNameParser_1.default());\n option.parsers.unshift(new RURelativeDateFormatParser_1.default());\n option.parsers.unshift(new RUTimeUnitCasualRelativeFormatParser_1.default());\n return option;\n}\n\nexports.createCasualConfiguration = createCasualConfiguration;\n\nfunction createConfiguration(strictMode = true) {\n return configurations_1.includeCommonConfiguration({\n parsers: [new SlashDateFormatParser_1.default(true), new RUTimeUnitWithinFormatParser_1.default(), new RUMonthNameLittleEndianParser_1.default(), new RUWeekdayParser_1.default(), new RUTimeExpressionParser_1.default(strictMode), new RUTimeUnitAgoFormatParser_1.default()],\n refiners: [new RUMergeDateTimeRefiner_1.default(), new RUMergeDateRangeRefiner_1.default()]\n }, strictMode);\n}\n\nexports.createConfiguration = createConfiguration;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nconst constants_1 = require(\"../constants\");\n\nconst results_1 = require(\"../../../results\");\n\nconst AbstractParserWithWordBoundary_1 = require(\"../../../common/parsers/AbstractParserWithWordBoundary\");\n\nconst PATTERN = `(?:(?:около|примерно)\\\\s*(?:~\\\\s*)?)?(${constants_1.TIME_UNITS_PATTERN})${constants_1.REGEX_PARTS.rightBoundary}`;\nconst PATTERN_WITH_PREFIX = new RegExp(`(?:в течение|в течении)\\\\s*${PATTERN}`, constants_1.REGEX_PARTS.flags);\nconst PATTERN_WITHOUT_PREFIX = new RegExp(PATTERN, \"i\");\n\nclass RUTimeUnitWithinFormatParser extends AbstractParserWithWordBoundary_1.AbstractParserWithWordBoundaryChecking {\n patternLeftBoundary() {\n return constants_1.REGEX_PARTS.leftBoundary;\n }\n\n innerPattern(context) {\n return context.option.forwardDate ? PATTERN_WITHOUT_PREFIX : PATTERN_WITH_PREFIX;\n }\n\n innerExtract(context, match) {\n const timeUnits = constants_1.parseTimeUnits(match[1]);\n return results_1.ParsingComponents.createRelativeFromReference(context.reference, timeUnits);\n }\n\n}\n\nexports.default = RUTimeUnitWithinFormatParser;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nconst years_1 = require(\"../../../calculation/years\");\n\nconst constants_1 = require(\"../constants\");\n\nconst constants_2 = require(\"../constants\");\n\nconst constants_3 = require(\"../constants\");\n\nconst pattern_1 = require(\"../../../utils/pattern\");\n\nconst AbstractParserWithWordBoundary_1 = require(\"../../../common/parsers/AbstractParserWithWordBoundary\");\n\nconst PATTERN = new RegExp(`(?:с)?\\\\s*(${constants_3.ORDINAL_NUMBER_PATTERN})` + `(?:` + `\\\\s{0,3}(?:по|-|–|до)?\\\\s{0,3}` + `(${constants_3.ORDINAL_NUMBER_PATTERN})` + `)?` + `(?:-|\\\\/|\\\\s{0,3}(?:of)?\\\\s{0,3})` + `(${pattern_1.matchAnyPattern(constants_1.MONTH_DICTIONARY)})` + `(?:` + `(?:-|\\\\/|,?\\\\s{0,3})` + `(${constants_2.YEAR_PATTERN}(?![^\\\\s]\\\\d))` + `)?` + `${constants_1.REGEX_PARTS.rightBoundary}`, constants_1.REGEX_PARTS.flags);\nconst DATE_GROUP = 1;\nconst DATE_TO_GROUP = 2;\nconst MONTH_NAME_GROUP = 3;\nconst YEAR_GROUP = 4;\n\nclass RUMonthNameLittleEndianParser extends AbstractParserWithWordBoundary_1.AbstractParserWithWordBoundaryChecking {\n patternLeftBoundary() {\n return constants_1.REGEX_PARTS.leftBoundary;\n }\n\n innerPattern() {\n return PATTERN;\n }\n\n innerExtract(context, match) {\n const result = context.createParsingResult(match.index, match[0]);\n const month = constants_1.MONTH_DICTIONARY[match[MONTH_NAME_GROUP].toLowerCase()];\n const day = constants_3.parseOrdinalNumberPattern(match[DATE_GROUP]);\n\n if (day > 31) {\n match.index = match.index + match[DATE_GROUP].length;\n return null;\n }\n\n result.start.assign(\"month\", month);\n result.start.assign(\"day\", day);\n\n if (match[YEAR_GROUP]) {\n const yearNumber = constants_2.parseYear(match[YEAR_GROUP]);\n result.start.assign(\"year\", yearNumber);\n } else {\n const year = years_1.findYearClosestToRef(context.refDate, day, month);\n result.start.imply(\"year\", year);\n }\n\n if (match[DATE_TO_GROUP]) {\n const endDate = constants_3.parseOrdinalNumberPattern(match[DATE_TO_GROUP]);\n result.end = result.start.clone();\n result.end.assign(\"day\", endDate);\n }\n\n return result;\n }\n\n}\n\nexports.default = RUMonthNameLittleEndianParser;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nconst constants_1 = require(\"../constants\");\n\nconst years_1 = require(\"../../../calculation/years\");\n\nconst pattern_1 = require(\"../../../utils/pattern\");\n\nconst constants_2 = require(\"../constants\");\n\nconst AbstractParserWithWordBoundary_1 = require(\"../../../common/parsers/AbstractParserWithWordBoundary\");\n\nconst PATTERN = new RegExp(`((?:в)\\\\s*)?` + `(${pattern_1.matchAnyPattern(constants_1.MONTH_DICTIONARY)})` + `\\\\s*` + `(?:` + `[,-]?\\\\s*(${constants_2.YEAR_PATTERN})?` + `)?` + `(?=[^\\\\s\\\\w]|\\\\s+[^0-9]|\\\\s+$|$)`, constants_1.REGEX_PARTS.flags);\nconst MONTH_NAME_GROUP = 2;\nconst YEAR_GROUP = 3;\n\nclass RUMonthNameParser extends AbstractParserWithWordBoundary_1.AbstractParserWithWordBoundaryChecking {\n patternLeftBoundary() {\n return constants_1.REGEX_PARTS.leftBoundary;\n }\n\n innerPattern() {\n return PATTERN;\n }\n\n innerExtract(context, match) {\n const monthName = match[MONTH_NAME_GROUP].toLowerCase();\n\n if (match[0].length <= 3 && !constants_1.FULL_MONTH_NAME_DICTIONARY[monthName]) {\n return null;\n }\n\n const result = context.createParsingResult(match.index, match.index + match[0].length);\n result.start.imply(\"day\", 1);\n const month = constants_1.MONTH_DICTIONARY[monthName];\n result.start.assign(\"month\", month);\n\n if (match[YEAR_GROUP]) {\n const year = constants_2.parseYear(match[YEAR_GROUP]);\n result.start.assign(\"year\", year);\n } else {\n const year = years_1.findYearClosestToRef(context.refDate, 1, month);\n result.start.imply(\"year\", year);\n }\n\n return result;\n }\n\n}\n\nexports.default = RUMonthNameParser;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nconst index_1 = require(\"../../../index\");\n\nconst AbstractTimeExpressionParser_1 = require(\"../../../common/parsers/AbstractTimeExpressionParser\");\n\nconst constants_1 = require(\"../constants\");\n\nclass RUTimeExpressionParser extends AbstractTimeExpressionParser_1.AbstractTimeExpressionParser {\n constructor(strictMode) {\n super(strictMode);\n }\n\n patternFlags() {\n return constants_1.REGEX_PARTS.flags;\n }\n\n primaryPatternLeftBoundary() {\n return `(^|\\\\s|T|(?:[^\\\\p{L}\\\\p{N}_]))`;\n }\n\n followingPhase() {\n return `\\\\s*(?:\\\\-|\\\\–|\\\\~|\\\\〜|до|и|по|\\\\?)\\\\s*`;\n }\n\n primaryPrefix() {\n return `(?:(?:в|с)\\\\s*)??`;\n }\n\n primarySuffix() {\n return `(?:\\\\s*(?:утра|вечера|после полудня))?(?!\\\\/)${constants_1.REGEX_PARTS.rightBoundary}`;\n }\n\n extractPrimaryTimeComponents(context, match) {\n const components = super.extractPrimaryTimeComponents(context, match);\n\n if (components) {\n if (match[0].endsWith(\"вечера\")) {\n const hour = components.get(\"hour\");\n\n if (hour >= 6 && hour < 12) {\n components.assign(\"hour\", components.get(\"hour\") + 12);\n components.assign(\"meridiem\", index_1.Meridiem.PM);\n } else if (hour < 6) {\n components.assign(\"meridiem\", index_1.Meridiem.AM);\n }\n }\n\n if (match[0].endsWith(\"после полудня\")) {\n components.assign(\"meridiem\", index_1.Meridiem.PM);\n const hour = components.get(\"hour\");\n\n if (hour >= 0 && hour <= 6) {\n components.assign(\"hour\", components.get(\"hour\") + 12);\n }\n }\n\n if (match[0].endsWith(\"утра\")) {\n components.assign(\"meridiem\", index_1.Meridiem.AM);\n const hour = components.get(\"hour\");\n\n if (hour < 12) {\n components.assign(\"hour\", components.get(\"hour\"));\n }\n }\n }\n\n return components;\n }\n\n}\n\nexports.default = RUTimeExpressionParser;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nconst constants_1 = require(\"../constants\");\n\nconst results_1 = require(\"../../../results\");\n\nconst AbstractParserWithWordBoundary_1 = require(\"../../../common/parsers/AbstractParserWithWordBoundary\");\n\nconst timeunits_1 = require(\"../../../utils/timeunits\");\n\nconst PATTERN = new RegExp(`(${constants_1.TIME_UNITS_PATTERN})\\\\s{0,5}назад(?=(?:\\\\W|$))`, constants_1.REGEX_PARTS.flags);\n\nclass RUTimeUnitAgoFormatParser extends AbstractParserWithWordBoundary_1.AbstractParserWithWordBoundaryChecking {\n patternLeftBoundary() {\n return constants_1.REGEX_PARTS.leftBoundary;\n }\n\n innerPattern() {\n return PATTERN;\n }\n\n innerExtract(context, match) {\n const timeUnits = constants_1.parseTimeUnits(match[1]);\n const outputTimeUnits = timeunits_1.reverseTimeUnits(timeUnits);\n return results_1.ParsingComponents.createRelativeFromReference(context.reference, outputTimeUnits);\n }\n\n}\n\nexports.default = RUTimeUnitAgoFormatParser;","\"use strict\";\n\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nconst AbstractMergeDateRangeRefiner_1 = __importDefault(require(\"../../../common/refiners/AbstractMergeDateRangeRefiner\"));\n\nclass RUMergeDateRangeRefiner extends AbstractMergeDateRangeRefiner_1.default {\n patternBetween() {\n return /^\\s*(и до|и по|до|по|-)\\s*$/i;\n }\n\n}\n\nexports.default = RUMergeDateRangeRefiner;","\"use strict\";\n\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nconst AbstractMergeDateTimeRefiner_1 = __importDefault(require(\"../../../common/refiners/AbstractMergeDateTimeRefiner\"));\n\nclass RUMergeDateTimeRefiner extends AbstractMergeDateTimeRefiner_1.default {\n patternBetween() {\n return new RegExp(`^\\\\s*(T|в|,|-)?\\\\s*$`);\n }\n\n}\n\nexports.default = RUMergeDateTimeRefiner;","\"use strict\";\n\nvar __createBinding = this && this.__createBinding || (Object.create ? function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, {\n enumerable: true,\n get: function () {\n return m[k];\n }\n });\n} : function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nvar __setModuleDefault = this && this.__setModuleDefault || (Object.create ? function (o, v) {\n Object.defineProperty(o, \"default\", {\n enumerable: true,\n value: v\n });\n} : function (o, v) {\n o[\"default\"] = v;\n});\n\nvar __importStar = this && this.__importStar || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n\n __setModuleDefault(result, mod);\n\n return result;\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nconst AbstractParserWithWordBoundary_1 = require(\"../../../common/parsers/AbstractParserWithWordBoundary\");\n\nconst references = __importStar(require(\"../../../common/casualReferences\"));\n\nconst constants_1 = require(\"../constants\");\n\nconst PATTERN = new RegExp(`(?:с|со)?\\\\s*(сегодня|вчера|завтра|послезавтра|позавчера)${constants_1.REGEX_PARTS.rightBoundary}`, constants_1.REGEX_PARTS.flags);\n\nclass RUCasualDateParser extends AbstractParserWithWordBoundary_1.AbstractParserWithWordBoundaryChecking {\n patternLeftBoundary() {\n return constants_1.REGEX_PARTS.leftBoundary;\n }\n\n innerPattern(context) {\n return PATTERN;\n }\n\n innerExtract(context, match) {\n const lowerText = match[1].toLowerCase();\n const component = context.createParsingComponents();\n\n switch (lowerText) {\n case \"сегодня\":\n return references.today(context.reference);\n\n case \"вчера\":\n return references.yesterday(context.reference);\n\n case \"завтра\":\n return references.tomorrow(context.reference);\n\n case \"послезавтра\":\n return references.theDayAfter(context.reference, 2);\n\n case \"позавчера\":\n return references.theDayBefore(context.reference, 2);\n }\n\n return component;\n }\n\n}\n\nexports.default = RUCasualDateParser;","\"use strict\";\n\nvar __createBinding = this && this.__createBinding || (Object.create ? function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, {\n enumerable: true,\n get: function () {\n return m[k];\n }\n });\n} : function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nvar __setModuleDefault = this && this.__setModuleDefault || (Object.create ? function (o, v) {\n Object.defineProperty(o, \"default\", {\n enumerable: true,\n value: v\n });\n} : function (o, v) {\n o[\"default\"] = v;\n});\n\nvar __importStar = this && this.__importStar || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n\n __setModuleDefault(result, mod);\n\n return result;\n};\n\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nconst AbstractParserWithWordBoundary_1 = require(\"../../../common/parsers/AbstractParserWithWordBoundary\");\n\nconst references = __importStar(require(\"../../../common/casualReferences\"));\n\nconst dayjs_1 = require(\"../../../utils/dayjs\");\n\nconst dayjs_2 = __importDefault(require(\"dayjs\"));\n\nconst constants_1 = require(\"../constants\");\n\nconst PATTERN = new RegExp(`(сейчас|прошлым\\\\s*вечером|прошлой\\\\s*ночью|следующей\\\\s*ночью|сегодня\\\\s*ночью|этой\\\\s*ночью|ночью|этим утром|утром|утра|в\\\\s*полдень|вечером|вечера|в\\\\s*полночь)` + `${constants_1.REGEX_PARTS.rightBoundary}`, constants_1.REGEX_PARTS.flags);\n\nclass RUCasualTimeParser extends AbstractParserWithWordBoundary_1.AbstractParserWithWordBoundaryChecking {\n patternLeftBoundary() {\n return constants_1.REGEX_PARTS.leftBoundary;\n }\n\n innerPattern() {\n return PATTERN;\n }\n\n innerExtract(context, match) {\n let targetDate = dayjs_2.default(context.refDate);\n const lowerText = match[0].toLowerCase();\n const component = context.createParsingComponents();\n\n if (lowerText === \"сейчас\") {\n return references.now(context.reference);\n }\n\n if (lowerText === \"вечером\" || lowerText === \"вечера\") {\n return references.evening(context.reference);\n }\n\n if (lowerText.endsWith(\"утром\") || lowerText.endsWith(\"утра\")) {\n return references.morning(context.reference);\n }\n\n if (lowerText.match(/в\\s*полдень/)) {\n return references.noon(context.reference);\n }\n\n if (lowerText.match(/прошлой\\s*ночью/)) {\n return references.lastNight(context.reference);\n }\n\n if (lowerText.match(/прошлым\\s*вечером/)) {\n return references.yesterdayEvening(context.reference);\n }\n\n if (lowerText.match(/следующей\\s*ночью/)) {\n const daysToAdd = targetDate.hour() < 22 ? 1 : 2;\n targetDate = targetDate.add(daysToAdd, \"day\");\n dayjs_1.assignSimilarDate(component, targetDate);\n component.imply(\"hour\", 0);\n }\n\n if (lowerText.match(/в\\s*полночь/) || lowerText.endsWith(\"ночью\")) {\n return references.midnight(context.reference);\n }\n\n return component;\n }\n\n}\n\nexports.default = RUCasualTimeParser;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nconst constants_1 = require(\"../constants\");\n\nconst pattern_1 = require(\"../../../utils/pattern\");\n\nconst AbstractParserWithWordBoundary_1 = require(\"../../../common/parsers/AbstractParserWithWordBoundary\");\n\nconst weekdays_1 = require(\"../../../common/calculation/weekdays\");\n\nconst PATTERN = new RegExp(`(?:(?:,|\\\\(|()\\\\s*)?` + `(?:в\\\\s*?)?` + `(?:(эту|этот|прошлый|прошлую|следующий|следующую|следующего)\\\\s*)?` + `(${pattern_1.matchAnyPattern(constants_1.WEEKDAY_DICTIONARY)})` + `(?:\\\\s*(?:,|\\\\)|)))?` + `(?:\\\\s*на\\\\s*(этой|прошлой|следующей)\\\\s*неделе)?` + `${constants_1.REGEX_PARTS.rightBoundary}`, constants_1.REGEX_PARTS.flags);\nconst PREFIX_GROUP = 1;\nconst WEEKDAY_GROUP = 2;\nconst POSTFIX_GROUP = 3;\n\nclass RUWeekdayParser extends AbstractParserWithWordBoundary_1.AbstractParserWithWordBoundaryChecking {\n innerPattern() {\n return PATTERN;\n }\n\n patternLeftBoundary() {\n return constants_1.REGEX_PARTS.leftBoundary;\n }\n\n innerExtract(context, match) {\n const dayOfWeek = match[WEEKDAY_GROUP].toLowerCase();\n const weekday = constants_1.WEEKDAY_DICTIONARY[dayOfWeek];\n const prefix = match[PREFIX_GROUP];\n const postfix = match[POSTFIX_GROUP];\n let modifierWord = prefix || postfix;\n modifierWord = modifierWord || \"\";\n modifierWord = modifierWord.toLowerCase();\n let modifier = null;\n\n if (modifierWord == \"прошлый\" || modifierWord == \"прошлую\" || modifierWord == \"прошлой\") {\n modifier = \"last\";\n } else if (modifierWord == \"следующий\" || modifierWord == \"следующую\" || modifierWord == \"следующей\" || modifierWord == \"следующего\") {\n modifier = \"next\";\n } else if (modifierWord == \"этот\" || modifierWord == \"эту\" || modifierWord == \"этой\") {\n modifier = \"this\";\n }\n\n return weekdays_1.createParsingComponentsAtWeekday(context.reference, weekday, modifier);\n }\n\n}\n\nexports.default = RUWeekdayParser;","\"use strict\";\n\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nconst constants_1 = require(\"../constants\");\n\nconst results_1 = require(\"../../../results\");\n\nconst dayjs_1 = __importDefault(require(\"dayjs\"));\n\nconst AbstractParserWithWordBoundary_1 = require(\"../../../common/parsers/AbstractParserWithWordBoundary\");\n\nconst pattern_1 = require(\"../../../utils/pattern\");\n\nconst PATTERN = new RegExp(`(в прошлом|на прошлой|на следующей|в следующем|на этой|в этом)\\\\s*(${pattern_1.matchAnyPattern(constants_1.TIME_UNIT_DICTIONARY)})(?=\\\\s*)${constants_1.REGEX_PARTS.rightBoundary}`, constants_1.REGEX_PARTS.flags);\nconst MODIFIER_WORD_GROUP = 1;\nconst RELATIVE_WORD_GROUP = 2;\n\nclass RURelativeDateFormatParser extends AbstractParserWithWordBoundary_1.AbstractParserWithWordBoundaryChecking {\n patternLeftBoundary() {\n return constants_1.REGEX_PARTS.leftBoundary;\n }\n\n innerPattern() {\n return PATTERN;\n }\n\n innerExtract(context, match) {\n const modifier = match[MODIFIER_WORD_GROUP].toLowerCase();\n const unitWord = match[RELATIVE_WORD_GROUP].toLowerCase();\n const timeunit = constants_1.TIME_UNIT_DICTIONARY[unitWord];\n\n if (modifier == \"на следующей\" || modifier == \"в следующем\") {\n const timeUnits = {};\n timeUnits[timeunit] = 1;\n return results_1.ParsingComponents.createRelativeFromReference(context.reference, timeUnits);\n }\n\n if (modifier == \"в прошлом\" || modifier == \"на прошлой\") {\n const timeUnits = {};\n timeUnits[timeunit] = -1;\n return results_1.ParsingComponents.createRelativeFromReference(context.reference, timeUnits);\n }\n\n const components = context.createParsingComponents();\n let date = dayjs_1.default(context.reference.instant);\n\n if (timeunit.match(/week/i)) {\n date = date.add(-date.get(\"d\"), \"d\");\n components.imply(\"day\", date.date());\n components.imply(\"month\", date.month() + 1);\n components.imply(\"year\", date.year());\n } else if (timeunit.match(/month/i)) {\n date = date.add(-date.date() + 1, \"d\");\n components.imply(\"day\", date.date());\n components.assign(\"year\", date.year());\n components.assign(\"month\", date.month() + 1);\n } else if (timeunit.match(/year/i)) {\n date = date.add(-date.date() + 1, \"d\");\n date = date.add(-date.month(), \"month\");\n components.imply(\"day\", date.date());\n components.imply(\"month\", date.month() + 1);\n components.assign(\"year\", date.year());\n }\n\n return components;\n }\n\n}\n\nexports.default = RURelativeDateFormatParser;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nconst constants_1 = require(\"../constants\");\n\nconst results_1 = require(\"../../../results\");\n\nconst AbstractParserWithWordBoundary_1 = require(\"../../../common/parsers/AbstractParserWithWordBoundary\");\n\nconst timeunits_1 = require(\"../../../utils/timeunits\");\n\nconst PATTERN = new RegExp(`(эти|последние|прошлые|следующие|после|через|\\\\+|-)\\\\s*(${constants_1.TIME_UNITS_PATTERN})${constants_1.REGEX_PARTS.rightBoundary}`, constants_1.REGEX_PARTS.flags);\n\nclass RUTimeUnitCasualRelativeFormatParser extends AbstractParserWithWordBoundary_1.AbstractParserWithWordBoundaryChecking {\n patternLeftBoundary() {\n return constants_1.REGEX_PARTS.leftBoundary;\n }\n\n innerPattern() {\n return PATTERN;\n }\n\n innerExtract(context, match) {\n const prefix = match[1].toLowerCase();\n let timeUnits = constants_1.parseTimeUnits(match[2]);\n\n switch (prefix) {\n case \"последние\":\n case \"прошлые\":\n case \"-\":\n timeUnits = timeunits_1.reverseTimeUnits(timeUnits);\n break;\n }\n\n return results_1.ParsingComponents.createRelativeFromReference(context.reference, timeUnits);\n }\n\n}\n\nexports.default = RUTimeUnitCasualRelativeFormatParser;","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static values = {\n count: Number,\n\n linkSample: String,\n optOutString: String,\n\n frenchMarketing: Boolean\n }\n\n static targets = [\n \"extraCharactersCheckbox\",\n \"textarea\",\n \"price\"\n ]\n\n connect() {\n this.initValues()\n this.calculateCharacters()\n }\n\n initValues() {\n this.possibleWarnings = [\n \"multiple-messages-error\",\n \"weird-chars-error\"\n ]\n\n this.currentWarnings = []\n this.messagesCount = 1\n\n this.frenchMessage = \"STOP au 36179\"\n }\n\n calculateCharacters() {\n const text = this.finalText\n\n if (text.length <= this.threshold) {\n this.currentWarnings = this.currentWarnings.filter(item => item !== \"multiple-messages-error\")\n this.messagesCount = 1\n } else {\n this.messagesCount = Math.ceil(text.length / this.thresholdIfMultipleSMS)\n if (!this.currentWarnings.includes(\"multiple-messages-error\")) { this.currentWarnings.push(\"multiple-messages-error\") }\n }\n\n if (this.anyNonGsmChars(this.finalText) == true) {\n if (!this.currentWarnings.includes(\"weird-chars-error\")) { this.currentWarnings.push(\"weird-chars-error\") }\n } else {\n this.currentWarnings = this.currentWarnings.filter(item => item !== \"weird-chars-error\")\n }\n\n this.processWarnings()\n }\n\n processWarnings() {\n this.possibleWarnings.forEach((warning) => {\n const el = document.getElementById(warning)\n\n if (!el) { return }\n\n if (this.currentWarnings.includes(warning)) {\n el.classList.remove(\"hidden\")\n } else {\n el.classList.add(\"hidden\")\n }\n })\n\n this.displayMessageCount()\n }\n\n displayMessageCount() {\n const messagesCountSelector = document.getElementById(\"multiple-messages-error\").querySelector(\".notification-banner__body\")\n const mask = document.getElementById(\"multiple-messages-error\").dataset.warningText\n\n messagesCountSelector.innerHTML = mask.replace(\"%{count}\", this.messagesCount)\n this.displaySmsPrice()\n }\n\n displaySmsPrice() {\n if (!this.hasPriceTarget) { return }\n\n const smsPrice = this.messagesCount * this.priceTarget.dataset.price\n const formatCurrency = Intl.NumberFormat(this.priceTarget.dataset.locale, {\n style: \"currency\",\n currency: this.priceTarget.dataset.currency,\n currencyDisplay: \"narrowSymbol\",\n })\n this.priceTarget.querySelector(\"#cancellation-sms-charge\").textContent = `${formatCurrency.format(smsPrice)}`\n }\n\n /* eslint-disable */\n anyNonGsmChars(str) {\n const regexp = new RegExp(\"([^A-Za-z0-9 \\r\\n@£\\$¥èéùìòÇØøÅå\\u0394_\\u03A6\\u0393\\u039B\\u03A9\\u03A0\\u03A8\\u03A3\\u0398\\u039EÆæßÉ!\\\"#$%&'()\\*\\+,\\\\\\-\\.\\/\\:;\\<\\=\\>\\?¡ÄÖÑܧ¿äöñüà^{}\\[~\\]|\\u20AC]*)\")\n\n return regexp.test(str)\n }\n /* eslint-enable */\n\n get finalText() {\n let text = this.textareaTarget.value\n\n const extraSettings = this.hasExtraCharactersCheckboxTarget && this.hasLinkSampleValue && this.hasOptOutStringValue\n if (!extraSettings) { return text }\n\n if (this.extraCharactersCheckboxTarget.checked == true) {\n text = text + \" \" + this.linkSampleValue\n } else {\n text = text + \"\\n\\n\" + this.optOutStringValue + \": \" + this.linkSampleValue\n }\n\n if (this.frenchMarketingValue == true) {\n text = text + \" \" + this.frenchMessage\n }\n\n return text\n }\n\n get threshold() {\n return (this.anyNonGsmChars(this.finalText) == true) ? this.nonGsmThreshold : this.gsmThreshold\n }\n\n get thresholdIfMultipleSMS() {\n return (this.anyNonGsmChars(this.finalText) == true) ? this.nonGsmThresholdIfMultipleSMS : this.gsmThresholdIfMultipleSMS\n }\n\n get gsmThreshold() { return 160 }\n\n get gsmThresholdIfMultipleSMS() { return 153 }\n\n get nonGsmThreshold() { return 70 }\n\n get nonGsmThresholdIfMultipleSMS() { return 67 }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nconst documentClick = _event => {\n document.body.dispatchEvent(new Event(\"click\", { bubbles: true, cancelable: true, composed: true }))\n}\n\n// ajax requests prevent the event propagation. Some of our components depend on `click@document` events.\n// So, we allow the clicks to propagate to the document. It is safer to directly propagate these to the\n// document.body as some existing code might depend on the event being stopped before reaching the parent.\nexport default class extends Controller {\n connect() {\n this.element.addEventListener(\"ajax:before\", documentClick)\n }\n\n disconnect() {\n this.element.removeEventListener(\"ajax:before\", documentClick)\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"target\"]\n\n click(_event) {\n if (!this.targetTarget) { return }\n\n this.targetTarget.click()\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\n \"source\",\n \"linkInputButton\"\n ]\n\n static values = {\n copyStr: String,\n copiedStr: String,\n primaryClass: String,\n secondaryClass: String\n }\n\n copy(event) {\n event.preventDefault()\n navigator.clipboard.writeText(this.sourceTarget.value || this.sourceTarget.innerText)\n this.animateButton()\n }\n\n animateButton() {\n const secondaryClass = this.secondaryClassValue || \"button--secondary\"\n const primaryClass = this.primaryClassValue || \"button--primary\"\n\n this.linkInputButtonTarget.innerHTML = this.copiedStrValue\n this.linkInputButtonTarget.classList.remove(primaryClass)\n this.linkInputButtonTarget.classList.add(secondaryClass)\n\n const timer = () => {\n this.linkInputButtonTarget.innerHTML = this.copyStrValue\n this.linkInputButtonTarget.classList.remove(secondaryClass)\n this.linkInputButtonTarget.classList.add(primaryClass)\n clearInterval(countdownTimer)\n }\n\n var countdownTimer = setInterval(timer, 1000)\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\nimport { Renderer } from \"models/schedule\"\n\nconst DATA = {\n \"2022-10-04\": [\n {\n startTime: \"2022-10-04T09:30:00+02:00\",\n endTime: \"2022-10-04T10:00:00+02:00\",\n referenceId: 1,\n title: \"Event 1\",\n color: \"#fbe8fc\"\n },\n {\n startTime: \"2022-10-04T10:30:00+02:00\",\n endTime: \"2022-10-04T11:30:00+02:00\",\n referenceId: 2,\n title: \"Event 2\",\n color: \"#fbe8fc\"\n },\n {\n startTime: \"2022-10-04T12:00:00+02:00\",\n endTime: \"2022-10-04T13:00:00+02:00\",\n referenceId: 3,\n title: \"Event 3\",\n color: \"#fbe8fc\"\n },\n {\n startTime: \"2022-10-04T12:45:00+02:00\",\n endTime: \"2022-10-04T13:45:00+02:00\",\n referenceId: 4,\n title: \"Event 4\",\n color: \"#fbe8fc\"\n },\n {\n startTime: \"2022-10-04T13:30:00+02:00\",\n endTime: \"2022-10-04T14:30:00+02:00\",\n referenceId: 5,\n title: \"Event 5\",\n color: \"#fbe8fc\"\n }\n ],\n \"2022-10-30\": [\n {\n startTime: \"2022-10-30T00:00:00+02:00\",\n endTime: \"2022-10-30T00:30:00+02:00\",\n referenceId: 1,\n title: \"Event 1\",\n color: \"#fbe8fc\"\n },\n {\n startTime: \"2022-10-30T01:00:00+02:00\",\n endTime: \"2022-10-30T01:30:00+02:00\",\n referenceId: 2,\n title: \"Event 2\",\n color: \"#fbe8fc\"\n },\n {\n startTime: \"2022-10-30T02:00:00+02:00\",\n endTime: \"2022-10-30T02:30:00+02:00\",\n referenceId: 3,\n title: \"Event 3\",\n color: \"#fbe8fc\"\n },\n {\n startTime: \"2022-10-30T02:00:00+01:00\",\n endTime: \"2022-10-30T02:30:00+01:00\",\n referenceId: 4,\n title: \"Event 4\",\n color: \"#fbe8fc\"\n },\n {\n startTime: \"2022-10-30T03:00:00+01:00\",\n endTime: \"2022-10-30T03:30:00+01:00\",\n referenceId: 5,\n title: \"Event 5\",\n color: \"#fbe8fc\"\n },\n {\n startTime: \"2022-10-30T04:00:00+01:00\",\n endTime: \"2022-10-29T04:30:00+01:00\",\n referenceId: 6,\n title: \"Event 6\",\n color: \"#fbe8fc\"\n }\n ]\n}\n\nexport default class extends Controller {\n connect() {\n if (this.data) {\n const renderer = new Renderer(this.data, { eventClass: this.eventClassName })\n renderer.render(element => this.element.appendChild(element))\n }\n }\n\n get date() {\n return this.element.dataset.date\n }\n\n get eventClassName() {\n return this.element.dataset.eventClassName\n }\n\n get data() {\n return DATA[this.date]\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"dateText\"]\n\n renderer = {\n set: (target, property, value) => {\n target[property] = value\n\n if (property === \"selection\") this.renderer.printText()\n\n return true\n },\n\n printText: () => {\n if (this.state.selection === null) return\n\n const start = global.moment(this.state.selection.start).format(\"LL\")\n const end = global.moment(this.state.selection.end).format(\"LL\")\n\n if (start === end) {\n this.dateTextTarget.innerText = start\n\n return\n }\n\n this.dateTextTarget.innerText = `${start} - ${end}`\n }\n }\n\n connect() {\n this.state = new Proxy({}, this.renderer)\n this.state.selection = null\n }\n\n select(event) {\n this.state.selection = event.detail.selection\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n pick(event) {\n const option = event.currentTarget.innerText.trim()\n console.log(`You've picked ${option}.`)\n event.preventDefault()\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\nimport * as chrono from \"chrono-node\"\n\nexport default class extends Controller {\n static targets = [\"calendar\", \"yearPicker\", \"monthPicker\"]\n\n static values = {\n date: String,\n rangeSelection: Boolean,\n extendYearDropdownBy: Number\n }\n\n renderer = {\n set: (target, property, value) => {\n target[property] = value\n\n if (property === \"date\" || property === \"page\") this.renderer.renderCalendar()\n if (property === \"highlight\") this.renderer.highlight()\n\n return true\n },\n\n renderCalendar: () => {\n const start = global.moment(this.state.date).add(this.state.page, \"month\").startOf(\"month\")\n const end = global.moment(this.state.date).add(this.state.page, \"month\").endOf(\"month\")\n\n // Calculate the first day of the grid (aligned to the new week start)\n const startDayOfWeek = (start.day() + 7 - this.weekStartDay) % 7 // Adjust to week start\n const firstGridDate = global.moment(start).subtract(startDayOfWeek, \"days\")\n const totalGridDays = 42 // 6 weeks * 7 days\n\n this.calendarTarget.querySelectorAll(\"tbody td\").forEach(element => {\n element.innerHTML = \"\"\n element.dataset.date = \"\"\n element.dataset.action = \"\"\n })\n\n // Fill the 6x7 grid\n for (let i = 0; i < totalGridDays; i++) {\n const date = global.moment(firstGridDate).add(i, \"days\")\n let monthType = \"current\"\n\n if (date.isBefore(start, \"month\")) {\n monthType = \"previous\"\n } else if (date.isAfter(end, \"month\")) {\n monthType = \"next\"\n }\n\n this.renderer.renderDay(date, monthType)\n }\n\n const yearStart = global.moment(start).startOf(\"year\").subtract(this.extendYearDropdownByValue, \"year\")\n const yearEnd = global.moment(start).endOf(\"year\").add(this.extendYearDropdownByValue, \"year\")\n const yearRange = global.moment.range(yearStart, yearEnd)\n const years = Array.from(yearRange.by(\"years\")).map(m => m.format(\"YYYY\"))\n\n this.yearPickerTarget.innerHTML = \"\"\n\n years.forEach(year => {\n const option = document.createElement(\"option\")\n option.value = year\n option.innerHTML = year\n\n this.yearPickerTarget.appendChild(option)\n })\n\n this.yearPickerTarget.value = global.moment(start).format(\"YYYY\")\n this.monthPickerTarget.value = global.moment(start).format(\"M\")\n\n if (this.state.highlight) this.renderer.highlight()\n },\n\n highlight: () => {\n const start = global.moment(this.state.highlight.start)\n const end = global.moment(this.state.highlight.end)\n\n this.calendarTarget.querySelectorAll(\".date-picker__day-button\").forEach( element => {\n element.classList.remove(\"date-picker__day-button--highlighted\")\n element.classList.remove(\"date-picker__day-button--highlighted-start\")\n element.classList.remove(\"date-picker__day-button--highlighted-end\")\n })\n\n const range = global.moment().range(start, end)\n const dates = Array.from(range.by(\"days\"))\n\n dates.forEach((date) => {\n if (!this.renderer.isVisible(date)) return\n\n const column = this.renderer.findDayColumn(date)\n const datePickerElement = column.querySelector(\".date-picker__day-button\")\n\n datePickerElement.classList.add(\"date-picker__day-button--highlighted\")\n })\n\n if (this.renderer.isVisible(start)) {\n const startColumn = this.renderer.findDayColumn(start)\n const startDatePickerElement = startColumn.querySelector(\".date-picker__day-button\")\n startDatePickerElement.classList.add(\"date-picker__day-button--highlighted-start\")\n }\n\n if (this.renderer.isVisible(end)) {\n const endColumn = this.renderer.findDayColumn(end)\n const endDatePickerElement = endColumn.querySelector(\".date-picker__day-button\")\n endDatePickerElement.classList.add(\"date-picker__day-button--highlighted-end\")\n }\n },\n\n renderDay: (date, monthType = \"current\") => {\n const currentDate = global.moment().format(this.dateFormat)\n const formattedDate = global.moment(date).format(this.dateFormat)\n const datasetDate = `${global.moment(date).format(this.dateFormat)}`\n const column = this.renderer.findDayColumn(date)\n const datePickerElement = document.createElement(\"button\")\n datePickerElement.classList.add(\"date-picker__day-button\")\n datePickerElement.innerText = global.moment(date).format(\"D\")\n datePickerElement.dataset.date = datasetDate\n datePickerElement.dataset.action = \"click->date-picker#select\"\n datePickerElement.classList.add(`date-picker__day-button--${monthType}-month`)\n\n if (currentDate == formattedDate) datePickerElement.classList.add(\"date-picker__day-button--today\")\n\n column.innerHTML = datePickerElement.outerHTML\n },\n\n findDayColumn: (date) => {\n const coordinates = this.getCoordinates(date)\n const row = this.element.querySelector(`[data-date-picker-row=\"${coordinates.row}\"]`)\n const column = row.querySelector(`[data-date-picker-column=\"${coordinates.column}\"]`)\n\n return column\n },\n\n isVisible: (date) => {\n const coordinates = this.getCoordinates(date)\n const row = this.element.querySelector(`[data-date-picker-row=\"${coordinates.row}\"]`)\n if (!row) return false\n\n const column = row.querySelector(`[data-date-picker-column=\"${coordinates.column}\"]`)\n\n return !!column\n }\n }\n\n connect() {\n this.state = new Proxy({}, this.renderer)\n this.state.date = this.parseDate(this.dateValue)\n this.state.page = 0\n this.state.years\n\n this.selectionStart = null\n this.emitEvent(\"connect\")\n }\n\n currentMonth() {\n this.state.date = new Date()\n this.state.page = 0\n this.emitEvent(\"navigate\")\n }\n\n nextMonth() {\n this.state.page += 1\n this.emitEvent(\"navigate\")\n }\n\n previousMonth() {\n this.state.page -= 1\n this.emitEvent(\"navigate\")\n }\n\n select(event) {\n if (this.isRangeSelection) return this.selectRange(event)\n\n this.selectSingle(event)\n }\n\n selectSingle(event) {\n this.selection = { start: event.currentTarget.dataset.date, end: event.currentTarget.dataset.date }\n this.emitEvent(\"select\")\n }\n\n selectRange(event) {\n if (this.selectionStart === null) {\n this.selectionStart = event.currentTarget.dataset.date\n this.selection = { start: this.selectionStart, end: this.selectionStart }\n\n return\n }\n\n const start = global.moment(this.selectionStart)\n const end = global.moment(event.currentTarget.dataset.date)\n\n if (start.isBefore(end)) {\n this.selection = { start: this.selectionStart, end: event.currentTarget.dataset.date }\n } else {\n this.selection = { start: event.currentTarget.dataset.date, end: this.selectionStart }\n }\n\n this.selectionStart = null\n this.emitEvent(\"select\")\n }\n\n navigate() {\n const month = String(this.monthPickerTarget.value).padStart(2, \"0\")\n const year = this.yearPickerTarget.value\n const date = `${year}-${month}-01`\n\n this.state.date = global.moment(date)\n this.state.page = 0\n this.emitEvent(\"navigate\")\n }\n\n getCoordinates(date) {\n // Calculate the first day of the grid\n const start = global.moment(this.state.date).add(this.state.page, \"month\").startOf(\"month\")\n const startDayOfWeek = (start.day() + 7 - this.weekStartDay) % 7 // Adjust to week start\n const firstGridDate = global.moment(start).subtract(startDayOfWeek, \"days\")\n\n // Calculate the offset from the first grid date\n const daysOffset = date.diff(firstGridDate, \"days\")\n\n // Calculate row and column\n const coordinates = {}\n coordinates.row = Math.floor(daysOffset / 7)\n coordinates.column = daysOffset % 7\n\n return coordinates\n }\n\n parseDate(date = null) {\n const parsedDate = chrono.parseDate(date)\n const parsedMoment = parsedDate ? global.moment(parsedDate) : global.moment()\n\n return parsedMoment.format(this.dateFormat)\n }\n\n emitEvent(eventType) {\n const customEvent = new CustomEvent(`date-picker:${eventType}`, {\n bubbles: false,\n detail: this.state\n })\n this.element.dispatchEvent(customEvent)\n }\n\n set selection(selection) {\n this.state.selection = selection\n this.state.highlight = this.state.selection\n }\n\n get selection() {\n return this.state.selection\n }\n\n set highlight(highlight) {\n this.state.highlight = highlight\n }\n\n get highlight() {\n return this.state.highlight\n }\n\n get dateFormat() {\n return \"YYYY-MM-DD\"\n }\n\n get isRangeSelection() {\n return this.rangeSelectionValue === true\n }\n\n get weekStartDay() {\n return 1 // 1 represents Monday\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"checkbox\", \"details\"]\n\n toggle(event) {\n this.checkboxTarget.checked = this.detailsTarget.value.trim() !== \"\"\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static values = {\n selector: String\n }\n\n present(event) {\n event.preventDefault()\n\n // We set it here because the presentation controller could call its connect before the\n // dialog controller is created.\n // Here checking on `undefined` is equivalend to `if defined?(@variable)` check in ruby as\n // undefined is returned when a field/variable is not set.\n if (this.dialogController === undefined) this.setDialogController()\n\n if (this.dialogController) this.dialogController.open()\n }\n\n setDialogController() {\n const dialog = this.hasSelectorValue ? this.dialogElement = document.querySelector(this.selectorValue) : null\n if (dialog) {\n this.dialogController = global.application.getControllerForElementAndIdentifier(\n dialog, \"dialog\"\n )\n }\n\n if (!this.dialogController) this.dialogController = null\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"header\", \"options\", \"description\"]\n static values = {\n state: String,\n swapIcon: Boolean,\n autoPositioning: Boolean,\n edgeBuffer: Number,\n alignment: String\n }\n\n renderer = {\n set: (target, property, value) => {\n target[property] = value\n\n if (property === \"state\") {\n this.element.classList.toggle(\"dropdown--disabled\", value === \"disabled\")\n }\n\n if (property === \"active\") {\n this.isActive ? this.renderer.present() : this.renderer.dismiss()\n\n this.emitEvent(\"toggle\")\n }\n\n if (property === \"alignment\") {\n this.element.classList.remove(...this.alignmentClasses)\n this.element.classList.add(`dropdown--${value}-alignment`)\n }\n\n if (property === \"currentOptionIndex\") {\n this.optionElements.forEach((optionElement, index) => {\n const linkElement = optionElement.querySelector(\".dropdown-option__link\")\n linkElement.classList.toggle(\"dropdown-option__link--highlighted\", index == value)\n })\n\n this.emitEvent(\"highlight\")\n }\n\n if (property === \"scrollToOptionIndex\") {\n const currentElement = this.optionsTarget.querySelector(\n `.dropdown-option[data-index=\"${this.state.scrollToOptionIndex}\"]`\n )\n global.helpers.scrollToOption(currentElement, this.optionsTarget)\n\n this.emitEvent(\"highlight\")\n }\n\n if (property === \"currentSelection\") {\n if (this.state.currentSelection) {\n this.optionElements.forEach(element => {\n element.querySelector(\".dropdown-option__link\")\n .classList.remove(\"dropdown-option__link--selected\")\n })\n this.state.currentSelection.classList.add(\"dropdown-option__link--selected\")\n\n if (this.hasDescriptionTarget) {\n this.descriptionTarget.innerText = this.state.currentSelection.innerText.trim()\n }\n\n if (this.swapIconValue) {\n const currentSelectionIconHTML = this.state.currentSelection.querySelector(\".dropdown-option__icon\")?.innerHTML\n if (this.iconElement && currentSelectionIconHTML) this.iconElement.innerHTML = currentSelectionIconHTML\n }\n\n this.emitEvent(\"change\")\n }\n }\n\n return true\n },\n\n present: () => {\n // Set an absolute max-height for the optionsTarget.\n const maxHeight = 500\n\n let maxHeightToSet = maxHeight\n\n if (this.autoPositioningValue) {\n // Check if we have more space at the top or the bottom.\n // If we have more space at the top, open the dropdown upwards.\n const windowHeight = window.innerHeight\n const middleOfWindow = windowHeight / 2\n const headerTop = this.headerTarget.getBoundingClientRect().top\n const openFromTop = headerTop > middleOfWindow\n\n if (openFromTop) {\n this.optionsTarget.classList.add(\"dropdown__options--open-from-top\")\n }\n\n // Prerender the optionsTarget to get the height.\n // This is necessary because the optionsTarget is hidden by default.\n this.optionsTarget.style.display = \"block\"\n this.optionsTarget.style.visibility = \"hidden\"\n\n const optionsTop = this.optionsTarget.getBoundingClientRect().top\n const optionsHeight = this.optionsTarget.offsetHeight\n const optionsBottom = optionsTop + optionsHeight\n\n this.optionsTarget.style.display = \"\"\n this.optionsTarget.style.visibility = \"\"\n\n // Get the fact that we scrolled past the top or the bottom of the optionsTarget.\n const scrolledPastTopBy = Math.abs(optionsTop)\n const scrolledPastBottomBy = optionsBottom - windowHeight\n const isScrolledPastTop = optionsTop < 0\n const isScrolledPastBottom = optionsBottom > windowHeight\n\n // Check the available space at the top and bottom, and set the max-height accordingly.\n if (openFromTop && isScrolledPastTop) {\n const currentMaxHeight = optionsHeight - scrolledPastTopBy - this.edgeBufferValue\n\n if (currentMaxHeight < maxHeight) maxHeightToSet = currentMaxHeight\n }\n\n if (!openFromTop && isScrolledPastBottom) {\n const currentMaxHeight = optionsHeight - scrolledPastBottomBy - this.edgeBufferValue\n\n if (currentMaxHeight < maxHeight) maxHeightToSet = currentMaxHeight\n }\n }\n\n if (this.contentElement) {\n const optionsPaddingTop = parseInt(window.getComputedStyle(this.optionsTarget).paddingTop)\n const optionsPaddingBottom = parseInt(window.getComputedStyle(this.optionsTarget).paddingBottom)\n const optionsPadding = optionsPaddingTop + optionsPaddingBottom\n const maxHeightToSetWithoutPadding = maxHeightToSet - optionsPadding\n\n this.optionsTarget.style.overflow = \"unset\"\n this.contentElement.style.maxHeight = `${maxHeightToSetWithoutPadding}px`\n this.contentElement.style.overflowY = \"auto\"\n }\n\n this.optionsTarget.style.maxHeight = `${maxHeightToSet}px`\n this.headerTarget.classList.add(\"dropdown__header--active\")\n this.optionsTarget.classList.add(\"element--on\")\n },\n\n dismiss: () => {\n this.headerTarget.classList.remove(\"dropdown__header--active\")\n this.optionsTarget.classList.remove(\"element--on\")\n this.optionsTarget.classList.remove(\"dropdown__options--open-from-top\")\n this.optionsTarget.style.maxHeight = \"\"\n\n if (this.contentElement) {\n this.optionsTarget.style.overflow = \"\"\n this.contentElement.style.maxHeight = \"\"\n this.contentElement.style.overflowY = \"\"\n }\n }\n }\n\n initialize() {\n this.state = new Proxy({}, this.renderer)\n this.state.state = this.stateValue\n this.state.active = false\n this.state.alignment = this.initialAlignment\n this.state.options = this.optionElements\n this.state.currentSelection = this.initialSelection\n this.indexOptions()\n this.resetCurrentOption()\n }\n\n indexOptions() {\n this.optionElements.forEach((optionElement, index) => optionElement.dataset.index = index)\n }\n\n highlight(event) {\n const optionElement = event.currentTarget.closest(\".dropdown-option\")\n const highlightedIndex = optionElement.dataset.index\n this.state.currentOptionIndex = highlightedIndex\n }\n\n resetCurrentOption(event) {\n this.state.currentOptionIndex = this.initialIndex\n }\n\n pick(event) {\n this.state.proposedSelection = event.currentTarget\n\n if (this.isProposedSelectionDisabled || this.isProposedSelectionInvalid) {\n event.preventDefault()\n return\n }\n\n if (this.isProposedSelectionDisabled) {\n event.stopImmediatePropagation()\n return\n }\n\n this.state.currentSelection = this.state.proposedSelection\n }\n\n toggle(event) {\n event.stopImmediatePropagation()\n event.preventDefault()\n\n if (this.isDisabled) return\n\n this.dismissOthers()\n this.resetCurrentOption()\n\n this.state.active = !this.state.active\n }\n\n dismiss(event) {\n if (event) {\n const clickedInside = this.optionsTarget.contains(event.target)\n const needsCustomDismissHandler = !this.isWithOptions\n\n if (clickedInside && needsCustomDismissHandler) return\n }\n\n this.state.active = false\n this.resetCurrentOption()\n }\n\n dismissOthers() {\n document.querySelectorAll(\".dropdown[data-controller~=\\\"dropdown\\\"]\").forEach((element) => {\n if (element !== this.element) {\n const dropdown = global.application.getControllerForElementAndIdentifier(element, \"dropdown\")\n dropdown.state.active = false\n }\n })\n }\n\n navigateOptions(event) {\n if (!this.isActive || !this.isWithOptions) return\n\n const currentOption = this.optionsTarget.querySelector(\n `li.dropdown-option[data-index=\"${this.state.currentOptionIndex}\"] .dropdown-option__link`\n )\n\n const { upKey, downKey, enterKey } = global.helpers.keyCodes\n\n switch (event.keyCode) {\n case upKey:\n event.preventDefault()\n\n if (this.state.currentOptionIndex == this.initialIndex) {\n this.state.currentOptionIndex = this.maxIndex\n } else if (this.state.currentOptionIndex > this.minIndex) {\n this.state.currentOptionIndex--\n }\n break\n case downKey:\n event.preventDefault()\n\n if (this.state.currentOptionIndex < this.maxIndex) {\n this.state.currentOptionIndex++\n }\n break\n case enterKey:\n if (this.state.currentOptionIndex != this.initialIndex) event.preventDefault()\n if (currentOption) {\n currentOption.click()\n return\n }\n break\n }\n\n this.state.scrollToOptionIndex = this.state.currentOptionIndex\n }\n\n emitEvent(eventType) {\n const customEvent = new CustomEvent(`dropdown:${eventType}`, {\n bubbles: false,\n detail: this.state\n })\n this.element.dispatchEvent(customEvent)\n }\n\n set alignment(value) {\n this.state.alignment = value\n }\n\n get optionElements() {\n return Array.from(this.optionsTarget.querySelectorAll(\".dropdown-option\"))\n }\n\n get iconElement() {\n return this.element.querySelector(\".dropdown__icon\")\n }\n\n get contentElement() {\n return this.optionsTarget.querySelector(\".dropdown__content\")\n }\n\n get isDisabled() {\n return this.state.state === \"disabled\"\n }\n\n get isActive() {\n return this.state.active === true\n }\n\n get alignment() {\n return this.state.alignment\n }\n\n get isProposedSelectionInvalid() {\n const emptyHrefs = [\"#\", \"\"]\n\n return emptyHrefs.includes(this.state.proposedSelection.getAttribute(\"href\"))\n }\n\n get isProposedSelectionDisabled() {\n return this.state.proposedSelection.classList.contains(\"dropdown-option__link--disabled\")\n }\n\n get initialSelection() {\n return this.optionsTarget.querySelector(\".dropdown-option__link--selected\")\n }\n\n get initialIndex() {\n return -1\n }\n\n get minIndex() {\n return 0\n }\n\n get maxIndex() {\n return this.state.options.length - 1\n }\n\n get isWithOptions() {\n return this.optionElements.length > 0\n }\n\n get initialAlignment() {\n return this.alignmentValue || \"left\"\n }\n\n get alignmentClasses() {\n return [\"dropdown--left-alignment\", \"dropdown--center-alignment\", \"dropdown--right-alignment\"]\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static values = {\n url: String,\n five: Boolean,\n }\n\n static targets = [\n \"seconds\"\n ]\n\n secondsTotal() {\n return 5\n }\n\n connect() {\n if (this.fiveValue != true) return\n if (this.urlValue == \"\") return\n\n let sec = this.secondsTotal()\n\n this.counter = setInterval(() => {\n sec = sec - 1\n\n if (sec <= 0) {\n clearInterval(this.counter)\n this.redirect(this.urlValue)\n return\n }\n\n this.secondsTarget.textContent = sec\n }, 1000)\n }\n\n disconnect() {\n clearTimeout(this.counter)\n }\n\n redirect(url) {\n window.location.href = url\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static values = {\n selectedView: String, // NOTE: will be useful after gallery view is also created\n files: Array,\n multiple: Boolean,\n max: Number,\n mimeTypes: String,\n maxFilesSelectedNotice: String,\n invalidFileTypeNotice: String,\n disabled: Boolean\n }\n static targets = [\n \"field\", \"container\", \"description\", \"selectedViewSimpleSingle\",\n \"selectedViewSimpleMultiple\"\n ]\n\n renderer = {\n set: (target, property, value) => {\n target[property] = value\n\n if (property === \"attachedFiles\") {\n this.renderer.showMaxFilesNotification(value)\n } else if (property === \"invalidFiles\") {\n this.renderer.showInvalidFilesNotification(value)\n } else if (property === \"files\") {\n this.renderer.updateSelectedView(value)\n }\n\n return true\n },\n showMaxFilesNotification: (files) => {\n if (files.length <= this.maxValue) return\n\n window.helpers.notify(this.maxFilesSelectedNoticeValue, {type: \"error\"})\n },\n showInvalidFilesNotification: (files) => {\n if (files.length === 0) return\n\n window.helpers.notify(this.invalidFileTypeNoticeValue, {type: \"error\"})\n },\n updateSelectedView: (files) => {\n switch (this.selectedViewValue) {\n case \"simple\":\n this.renderer.updateSelectedViewSimple(files.length)\n break\n // NOTE: A second case, which we know would definitely arise, would be a gallery view\n default:\n break\n }\n },\n updateSelectedViewSimple: (count) => {\n this.descriptionTarget.style.display = \"none\"\n this.selectedViewSimpleSingleTarget.style.display = \"none\"\n this.selectedViewSimpleMultipleTarget.style.display = \"none\"\n\n if (count === 0) {\n this.descriptionTarget.style.display = \"block\"\n } else if (count === 1) {\n this.selectedViewSimpleSingleTarget.style.display = \"block\"\n } else {\n this.selectedViewSimpleMultipleTarget.style.display = \"block\"\n this.selectedViewSimpleMultipleText.textContent =\n this.selectedViewSimpleMultipleText.textContent.replace(/\\d/g, count)\n }\n }\n }\n\n connect() {\n // Ref: https://developer.mozilla.org/en-US/docs/Web/API/HTML_Drag_and_Drop_API/Drag_operations#specifying_drop_targets\n // Ref: https://www.smashingmagazine.com/2018/01/drag-drop-file-uploader-vanilla-js/\n [\"dragenter\", \"dragover\", \"dragleave\", \"drop\"].forEach((eventName) => {\n this.containerTarget.addEventListener(eventName, (event) => {\n event.preventDefault()\n event.stopPropagation()\n })\n })\n\n // To disable the click event to propagate up to the containerTarget again\n // when it is programmatically called in the click handler below.\n this.fieldTarget.addEventListener(\"click\", (event) => event.stopPropagation())\n this.state = new Proxy({}, this.renderer)\n\n this.state.files = this.filesValue\n }\n\n attachDroppedFiles(event) {\n if (this.disabledValue) return\n\n const eventFiles = event.dataTransfer.files\n this.fieldTarget.files = eventFiles\n // Since we are programmatically changing the target's files, we should\n // manually send the \"change\" event for anyone else listening for it, along\n // with our own listener\n this.fieldTarget.dispatchEvent(new Event(\"change\"))\n }\n\n openFileBrowser() {\n if (this.disabledValue) return\n\n this.fieldTarget.click()\n }\n\n sanitizeAttachedFiles() {\n if (this.disabledValue) return\n\n const files = this.fieldTarget.files\n\n this.state.attachedFiles = files\n\n const dataTransfer = new DataTransfer()\n const invalidFiles = []\n for (const file of files) {\n if (!this.validType(file)) {\n invalidFiles.push(file)\n } else if (dataTransfer.items.length === this.maxValue) {\n continue\n } else {\n dataTransfer.items.add(file)\n }\n }\n this.state.invalidFiles = invalidFiles\n this.fieldTarget.files = dataTransfer.files\n\n this.state.files = dataTransfer.files\n }\n\n validType(file) {\n return this.mimeTypesValue === \"*/*\" || this.mimeTypes.includes(file.type)\n }\n\n get filesCount() {\n return this.fieldTarget.files.length\n }\n\n get mimeTypes() {\n return this.mimeTypesValue.split(\", \")\n }\n\n get selectedViewSimpleMultipleText() {\n return this.selectedViewSimpleMultipleTarget.getElementsByClassName(\"file-upload__description\")[0]\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\n \"list\",\n \"notificationTemplate\",\n \"iconsTemplate\",\n \"message\"\n ]\n\n static values = {\n defaultActionText: String,\n dialogFlashContainerClass: String\n }\n\n initialize() {\n this.queueMessages(false, 100)\n }\n\n handleFlashNotify = (event) => {\n const { text, options } = event.detail\n const clearExisting = options.clearExisting || false\n const messageId = options.id || global.helpers.unicodeHash(text)\n\n global.state.flashMessages.push({ id: messageId, body: text, ...options})\n this.queueMessages(clearExisting)\n }\n\n queueMessages(clearExisting, delay = 0) {\n this.clearExisting = clearExisting\n\n if (!this.hasMessageTarget) {\n this.presentMessages()\n return\n }\n\n setTimeout(() => {\n this.messageTargets.forEach((messageElement, index) => {\n const messageBody = messageElement.innerHTML\n const messageType = messageElement.dataset.messageType\n const messageId = messageElement.dataset.messageId || global.helpers.unicodeHash(messageBody)\n\n global.state.flashMessages.push({ id: messageId, body: messageBody, type: messageType })\n messageElement.remove()\n })\n\n this.presentMessages()\n }, delay)\n }\n\n presentMessages() {\n if (this.clearExisting) this.listContainer.innerHTML = \"\"\n\n global.state.flashMessages.forEach((messageHolder, index) => {\n const presentAfter = this.timeoutMessagePeriod * (index + 1)\n\n const options = { presentAfter, ...messageHolder }\n this.presentMessage(messageHolder.body, options)\n })\n }\n\n presentMessage(content, options = {}) {\n const notificationElement = this.buildMessage(content, options)\n\n setTimeout(() => {\n if (this.notificationExists(options.id)) return\n this.listContainer.appendChild(notificationElement)\n this.removeMessage(options.id)\n }, options.presentAfter || 0)\n }\n\n notificationExists(messageId) {\n if (!messageId) return false\n\n const notificationElement = this.listContainer.querySelector(`[data-id=\"${messageId}\"]`)\n return notificationElement != null\n }\n\n removeMessage(messageId) {\n const messageIndex = global.state.flashMessages.findIndex((message) => message.id === messageId)\n if (messageIndex === -1) return\n\n global.state.flashMessages.splice(messageIndex, 1)\n }\n\n buildMessage(content, options) {\n const template = this.notificationTemplateTarget\n const notificationNode = template.content.firstElementChild.cloneNode(true)\n const actionInfo = options.action || {}\n const replacementMap = {\n title: options.title,\n description: content,\n actionBody: actionInfo.text || this.defaultActionTextValue,\n actionUrl: actionInfo.path,\n }\n\n notificationNode.innerHTML = global.helpers.tagReplacements(notificationNode.innerHTML, replacementMap)\n this.prepareDataAttributes(notificationNode, options)\n this.prepareTitle(notificationNode, options.title)\n this.prepareAction(notificationNode, actionInfo)\n this.prepareIcon(notificationNode, options.type, options.icon)\n this.prepareVariant(notificationNode, options.type, options.variant || [])\n\n return notificationNode\n }\n\n prepareDataAttributes(notificationNode, options) {\n if (!options.id) return\n\n notificationNode.dataset.id = options.id\n }\n\n prepareTitle(notificationNode, title) {\n if (!title) {\n notificationNode.querySelector(\".notification-banner__title\").remove()\n }\n }\n\n prepareAction(notificationNode, actionInfo) {\n const actionTemplate = notificationNode.querySelector(\".notification-banner__action\")\n\n if(!actionInfo?.path) {\n actionTemplate.remove()\n return\n }\n\n Object.keys(actionInfo || {}).forEach((key) => {\n actionTemplate.dataset[key] = actionInfo[key]\n })\n }\n\n prepareVariant(notificationNode, messageType, variant) {\n let variants = Array.isArray(variant) ? variant : [variant]\n variants = variants.concat(this.standardVariants(messageType))\n const bannerVariants = variants.filter((variant) => variant)\n .map((variant) => `notification-banner--${variant}`)\n\n notificationNode.classList.add(...bannerVariants)\n }\n\n prepareIcon(notificationNode, messageType, icon) {\n if (!this.hasIconsTemplateTarget) return\n if (messageType === \"error\" || messageType === \"alert\") {\n icon = \"warning\"\n }\n\n if (!icon) {\n notificationNode.querySelector(\".notification-banner__image\").remove()\n return\n }\n\n const iconsElement = this.iconsTemplateTarget.content.firstElementChild.cloneNode(true)\n const iconClassName = `.icon--${icon.replace(/^\\//,\"\")}`\n const targetIconElement = iconsElement.querySelector(iconClassName)\n\n if (!targetIconElement) return\n\n const notificationImageElement = notificationNode.querySelector(\".notification-banner__image svg\")\n notificationImageElement.replaceWith(targetIconElement)\n }\n\n standardVariants(messageType) {\n if (messageType === \"custom\") return []\n\n const colorType = {\n notice: \"blue\",\n success: \"green\",\n error: \"red\",\n alert: \"yellow\"\n }[messageType]\n\n return [colorType, \"flash-message\"]\n }\n\n get timeoutMessagePeriod() {\n return 125\n }\n\n get listContainer() {\n // dialog opened as modal without both closing data attribute and closing class name\n const openedDialogSelector = \"dialog[data-opened-as-modal=\\\"true\\\"]:not([data-closing=\\\"true\\\"]):not(.dialog--closing)\"\n const modalDialogs = document.querySelectorAll(openedDialogSelector)\n if (modalDialogs.length > 0) {\n const topMostModalDialog = modalDialogs[modalDialogs.length - 1]\n return topMostModalDialog.querySelector(this.dialogFlashContainerClassValue)\n }\n\n return this.listTarget\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static values = {\n selector: String,\n focusOnConnect: Boolean,\n targetIsChild: Boolean // Let's us make the selector much simpler\n }\n\n connect() {\n if (this.focusOnConnectValue && this.targetElement) {\n this.focusTarget()\n }\n }\n\n focusTarget(_event) {\n if (!this.targetElement) { return }\n\n const el = this.targetElement\n el.focus()\n // This is to ensure that on focus the cursor is at the end of the text\n if (this.textInputType(el)) {\n const index = el.value.length\n el.setSelectionRange(index, index)\n }\n }\n\n textInputType(el) {\n return el.type === \"text\" || el.type === \"textarea\"\n }\n\n get targetElement() {\n const el = this.targetIsChildValue ? this.element : document\n return el.querySelector(this.selectorValue)\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static values = { id: String }\n static targets = [\"email\", \"phone\"]\n\n initialize() {\n this.gtag(\"js\", new Date())\n this.gtag(\"config\", this.idValue, {\"allow_enhanced_conversions\": true})\n }\n\n signup(event) {\n const [data, ,] = event.detail\n\n const isSuccess = typeof data === \"string\"\n if (isSuccess) {\n const signUpEvent = {\n email: this.emailTarget.value,\n \"phone_number\": this.phoneTarget.value\n }\n\n this.gtag(\"event\", \"conversion\", signUpEvent)\n }\n }\n\n gtag() {\n this.dataLayer.push(arguments)\n }\n\n get dataLayer() {\n window.dataLayer = window.dataLayer || []\n return window.dataLayer\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"result\"]\n\n greet() {\n this.resultTarget.textContent = \"Hello, Stimulus!\"\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"hide\", \"show\"]\n\n toggle(event) {\n event.preventDefault()\n\n this.hideTargets.forEach((target) => {\n target.classList.toggle(\"hidden\")\n })\n\n this.showTargets.forEach((target) => {\n target.classList.toggle(\"hidden\")\n })\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [ \"highlight\", \"toggler\" ]\n static classes = [ \"supported\" ]\n\n connect() {\n this.toggle()\n }\n\n toggle() {\n if (this.data.get(\"togglertype\") === \"check_box\") {\n if (this.togglerTarget.checked) {\n this.highlightTarget.classList.add(this.supportedClass)\n } else {\n this.highlightTarget.classList.remove(this.supportedClass)\n }\n }\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"content\", \"leftButton\", \"rightButton\"]\n static values = {\n scrollBy: String,\n displayScrollbars: Boolean\n }\n\n renderer = {\n set: (target, property, value) => {\n target[property] = value\n\n if (property === \"overflows\") {\n if (this.state.overflows) {\n this.contentTarget.classList.add(\"horizontal-scroller__content--navigation-visible\")\n this.leftButtonTarget.classList.add(\"horizontal-scroller__left-button--navigation-visible\")\n this.rightButtonTarget.classList.add(\"horizontal-scroller__right-button--navigation-visible\")\n } else {\n this.contentTarget.classList.remove(\"horizonal-scroller__content--navigation-visible\")\n this.leftButtonTarget.classList.remove(\"horizontal-scroller__left-button--navigation-visible\")\n this.rightButtonTarget.classList.remove(\"horizontal-scroller__right-button--navigation-visible\")\n }\n }\n\n return true\n }\n }\n\n connect() {\n if (\"IntersectionObserver\" in window) {\n const bindedHandleVisibilityChange = this.handleVisibilityChange.bind(this)\n this.visibilityObserver = new IntersectionObserver(bindedHandleVisibilityChange)\n this.visibilityObserver.observe(this.contentTarget)\n }\n }\n\n disconnect() {\n if (\"IntersectionObserver\" in window){\n this.visibilityObserver.disconnect()\n this.visibilityObserver = null\n }\n }\n\n initialize() {\n this.state = new Proxy({}, this.renderer)\n\n if (!this.displayScrollbars) {\n this.contentTarget.classList.add(\"horizontal-scroller__content\")\n }\n this.leftButtonTarget.classList.add(\"horizontal-scroller__left-button\")\n this.rightButtonTarget.classList.add(\"horizontal-scroller__right-button\")\n\n const action = this.contentTarget.dataset.action\n this.contentTarget.dataset.action = `${action} resize@window->horizontal-scroller#layout`\n\n this.layout()\n }\n\n handleVisibilityChange(entries, observer) {\n entries.forEach(entry => {\n if (entry.isIntersecting) {\n this.layout()\n }\n })\n }\n\n layout(event) {\n this.state.overflows = this.isOverflowing\n }\n\n scrollLeft(event) {\n event.preventDefault()\n\n this.contentTarget.scrollTo({\n left: this.contentTarget.scrollLeft - this.scrollAmount,\n behavior: \"smooth\"\n })\n }\n\n scrollRight(event) {\n event.preventDefault()\n\n this.contentTarget.scrollTo({\n left: this.contentTarget.scrollLeft + this.scrollAmount,\n behavior: \"smooth\"\n })\n }\n\n get isOverflowing() {\n return this.contentTarget.scrollHeight > this.contentTarget.clientHeight ||\n this.contentTarget.scrollWidth > this.contentTarget.clientWidth\n }\n\n get scrollAmount() {\n const scrollBy = parseInt(this.scrollBy)\n\n if (this.scrollByUnit === \"%\") return this.contentTarget.offsetWidth * (scrollBy / 100)\n\n return scrollBy\n }\n\n get scrollBy() {\n return this.scrollByValue || \"100\"\n }\n\n get displayScrollbars() {\n return this.displayScrollbarsValue || false\n }\n\n get scrollByUnit() {\n const scrollByUnit = this.scrollByUnits.find(unit => this.scrollBy.toString().endsWith(unit))\n\n if (scrollByUnit) return scrollByUnit\n\n return this.scrollByUnits[0]\n }\n\n get scrollByUnits() {\n return [\"px\", \"%\"]\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [ \"contentToReplace\" ]\n\n load() {\n Rails.ajax({\n type: \"get\",\n url: this.data.get(\"url\"),\n dataType: \"script\"\n })\n }\n\n fetch() {\n if (this.hasContentToReplaceTarget && (this.isVisible(this.contentToReplaceTarget) === true)) {\n this.load()\n this.contentToReplaceTarget.remove() //to stop extra requests\n }\n }\n\n isVisible(ele) {\n const { top, bottom } = ele.getBoundingClientRect()\n const vHeight = (window.innerHeight || document.documentElement.clientHeight)\n\n return (\n (top > 0 || bottom > 0) &&\n top < vHeight\n )\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\n \"latInput\",\n \"longInput\",\n\n \"container\",\n ]\n\n static values = {\n lat : String,\n long : String,\n }\n\n connect() {\n let zoom = 2\n let lat = 55.378051\n let lng = -3.435973\n\n if (this.latInputTarget.value !== \"\" && this.longInputTarget.value !== \"\") {\n lat = this.latInputTarget.value\n lng = this.longInputTarget.value\n zoom = 14\n }\n\n /* disabling eslint here due to mapboxgl not being bundled */\n /* eslint-disable */\n this.map = new mapboxgl.Map({\n container: \"edit_google_map\",\n center: new mapboxgl.LngLat(lng, lat),\n style: \"https://api.maptiler.com/maps/basic/style.json?key=AUqGbDDrd3lWF7lPdu0g\",\n zoom: zoom\n })\n\n const nav = new mapboxgl.NavigationControl({showCompass: false})\n\n this.map.addControl(nav, \"top-left\")\n this.map.on(\"click\", (evt) => this.addMarker(evt))\n\n this.marker = new mapboxgl.Marker({\n element: this.containerTarget,\n offset: {x: 0, y: -40}\n }).setLngLat([lng, lat])\n .addTo(this.map)\n\n /* eslint-enable */\n }\n\n addMarker(evt) {\n const ll = evt.lngLat\n\n this.latInputTarget.value = ll.lat\n this.longInputTarget.value = ll.lng\n\n this.marker.setLngLat(ll.toArray()).addTo(this.map)\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\nimport anime from \"animejs/lib/anime.es.js\"\n\nexport default class extends Controller {\n static targets = [\"closeProgress\"]\n static values = {\n closeAfter: Number\n }\n\n renderer = {\n set: (target, property, value) => {\n target[property] = value\n\n if (property === \"closed\") {\n if (this.state.closed === true) {\n anime({\n targets: this.element,\n height: \"0\",\n paddingTop: \"0\",\n paddingBottom: \"0\",\n marginTop: \"0\",\n marginBottom: \"0\",\n opacity: \"0\",\n scale: 0.5,\n easing: \"easeInOutQuad\",\n duration: 250,\n complete: (animation) => {\n this.element.remove()\n }\n })\n }\n }\n\n return true\n }\n }\n\n initialize() {\n this.state = new Proxy({}, this.renderer)\n this.state.closed = false\n this.scheduleClose()\n }\n\n close(event) {\n if (event) event.preventDefault()\n\n this.state.closed = true\n }\n\n scheduleClose() {\n if (!this.hasCloseAfterValue) return\n\n setTimeout(() => this.close(), this.closeAfterValue)\n\n if (this.hasCloseProgressTarget) {\n const progressAnimationDuration = this.closeAfterValue / 1000\n this.closeProgressTarget.style.animationDuration = `${progressAnimationDuration}s`\n }\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n connect() {\n this.element.addEventListener(\"wheel\", (e) => e.preventDefault())\n }\n\n preventSubmit(event) {\n if (event.key === \"Enter\") {\n event.preventDefault()\n }\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static values = { collapsed: Boolean, scrollContainerSelector: String }\n\n connect() {\n const lists = this.element.querySelectorAll(\"ul\")\n\n lists.forEach(list => list.classList.add(\"outline\"))\n\n if (this.collapsedValue) {\n this.element.querySelectorAll(\"[data-action='outline#toggle']\").forEach(toggle => {\n this.slideToggle(toggle, { duration: 0 })\n })\n }\n }\n\n toggle(event) {\n const element = event.currentTarget\n\n if (this.isTogglingWith(element)) {\n event.preventDefault()\n\n this.slideToggle(element)\n }\n }\n\n slideToggle(toggle, { duration = 200 } = {}) {\n const listItem = toggle.parentNode\n const list = listItem.querySelector(\"ul\")\n\n if (!list) return\n\n if (list.classList.contains(\"outline--collapsed\")) {\n toggle.classList.remove(\"outline__toggle--collapsed\")\n list.classList.remove(\"outline--collapsed\")\n listItem.classList.remove(\"outline__item--collapsed\")\n global.helpers.slide.down(list, duration)\n\n this.scrollItemToTopOfSection(toggle)\n } else {\n toggle.classList.add(\"outline__toggle--collapsed\")\n list.classList.add(\"outline--collapsed\")\n listItem.classList.add(\"outline__item--collapsed\")\n global.helpers.slide.up(list, duration)\n }\n }\n\n isTogglingWith(element) {\n return element.getAttribute(\"href\") === \"#\"\n }\n\n scrollItemToTopOfSection(element) {\n if (!this.scrollContainer(element)) return\n\n // Calculate the position to scroll to\n const menuTop = this.scrollContainer(element).getBoundingClientRect().top\n const itemTop = element.getBoundingClientRect().top\n\n // Scroll the menu container to make the list item top aligned with the menu top\n this.scrollContainer(element).scrollBy({\n top: itemTop - menuTop,\n behavior: \"smooth\"\n })\n }\n\n scrollContainer(element) {\n if (!this.scrollContainerSelectorValue) return\n\n return element.closest(this.scrollContainerSelectorValue)\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static values = {\n eventName: String,\n properties: Object,\n sendEventOnConnect: { type: Boolean, default: false }\n }\n\n connect() {\n if (this.sendEventOnConnectValue) this.captureEvent()\n }\n\n captureEvent() {\n if (!window.posthog) return\n\n window.posthog.capture(this.eventNameValue, this.propertiesValue || {})\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"label\"]\n static values = {\n disabledClassName: String,\n iconOnly: Boolean\n }\n\n connect() {\n const connectEvent = new CustomEvent(\"push-button:connect\", { detail: { controller: this } })\n\n this.element.dispatchEvent(connectEvent)\n }\n\n disable() {\n this.element.classList.add(this.disabledClassNameValue)\n }\n\n enable() {\n this.element.classList.remove(this.disabledClassNameValue)\n }\n\n toggleDisabled(statement = undefined) {\n if (statement === undefined) {\n this.element.classList.toggle(this.disabledClassNameValue)\n } else if (statement) {\n this.disable()\n } else {\n this.enable()\n }\n }\n\n set text(text) {\n if (!this.hasLabelTarget) return\n\n this.element.setAttribute(\"title\", text)\n this.labelTarget.textContent = text\n }\n\n get text() {\n if (!this.hasLabelTarget) return \"\"\n\n return this.labelTarget.textContent.trim()\n }\n\n get isIconOnly() {\n return this.iconOnlyValue\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"validationBannerTemplate\", \"validationBanners\"]\n\n renderer = {\n set: (target, property, value) => {\n target[property] = value\n\n if (property === \"errors\") {\n this.renderer.removeExistingValidationMessages()\n\n if (this.state.errors) {\n for (const [field, validationMessages] of Object.entries(this.state.errors)) {\n if (field === \"base\") {\n this.renderer.renderValidationBannerMessages(field, validationMessages)\n } else {\n this.renderer.renderFormFieldValidationMessages(field, validationMessages)\n }\n }\n }\n }\n\n return true\n },\n\n removeExistingValidationMessages: () => {\n this.validationBannersTarget.innerHTML = \"\"\n\n this.element.querySelectorAll(\".form-field__validation-messages\").forEach((validationMessagesNode) => {\n validationMessagesNode.innerHTML = \"\"\n })\n\n this.element.querySelectorAll(\".form-field\").forEach((formFieldNode) => {\n formFieldNode.classList.remove(\"form-field--error\")\n })\n },\n\n renderFormFieldValidationMessages: (field, validationMessages) => {\n const fieldNode = this.element.querySelector(`[name*=\"[${field}]\"]:not([type=\"hidden\"])`)\n\n const formFieldNode = fieldNode.closest(\".form-field\")\n const validationMessageTemplateNode = formFieldNode.querySelector(\"template.form-field__validation-message-template\")\n const validationMessagesNode = formFieldNode.querySelector(\".form-field__validation-messages\")\n\n validationMessages.forEach((validationMessage) => {\n const validationMessageNode = validationMessageTemplateNode.content.cloneNode(true)\n const validationMessageTextNode = validationMessageNode.querySelector(\".form-field__validation-message-text\")\n validationMessageTextNode.innerText = validationMessage\n validationMessagesNode.appendChild(validationMessageNode)\n })\n\n formFieldNode.classList.add(\"form-field--error\")\n\n },\n\n renderValidationBannerMessages: (field, validationMessages) => {\n validationMessages.forEach((validationMessage) => {\n const validationBannerNode = this.validationBannerTemplateTarget.content.cloneNode(true)\n const validationBannerBodyNode = validationBannerNode.querySelector(\".notification-banner__body\")\n validationBannerBodyNode.innerText = validationMessage\n this.validationBannersTarget.appendChild(validationBannerNode)\n })\n }\n }\n\n initialize() {\n this.state = new Proxy({}, this.renderer)\n\n this.clearErrors()\n }\n\n submit(event) {\n const [data, , ] = event.detail\n\n this.state.errors = data[\"errors\"] || []\n }\n\n clearErrors(event) {\n this.state.errors = []\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static values = { selector: String }\n\n remove(_event) {\n if (!this.targetElement) { return }\n\n this.targetElement.remove()\n }\n\n get targetElement() {\n return document.querySelector(this.selectorValue)\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [ \"source\" ]\n static values = {\n toggleClass: String,\n idTrigger: String\n }\n\n toggle() {\n if (event.currentTarget.getAttribute(\"id\") === this.idTriggerValue) {\n this.sourceTarget.classList.remove(this.toggleClassValue)\n } else {\n this.sourceTarget.classList.add(this.toggleClassValue)\n }\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static values = {\n selector: String\n }\n\n scrollIntoView(_event) {\n console.log(this.selectorValue)\n console.log(this.targetElement)\n if (!this.targetElement) { return }\n\n console.log(this.targetElement)\n\n this.targetElement.scrollIntoView()\n }\n\n get targetElement() {\n return this.element.querySelector(this.selectorValue)\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"option\", \"selectedCount\", \"selectedCountContainer\", \"selectedTagTemplate\", \"selectedTags\", \"emptySearch\", \"select\"]\n static classes = [\"optionHidden\"]\n\n connect() {\n this.optionTargets.forEach(el => {\n this.updateSelectedOption(this.checkboxFor(el))\n })\n }\n\n search(event) {\n const text = event.target.value.toLocaleLowerCase().trim()\n let empty = true\n\n this.optionTargets.forEach(el => {\n if (text === \"\" || this.labelFor(el).toLocaleLowerCase().search(text) !== -1) {\n el.classList.remove(this.optionHiddenClass)\n empty = false\n } else {\n el.classList.add(this.optionHiddenClass)\n }\n })\n\n if (this.hasEmptySearchTarget) {\n if (empty) {\n this.emptySearchTarget.style.display = \"flex\"\n } else {\n this.emptySearchTarget.style.display = \"none\"\n }\n }\n }\n\n toggleOptionSelection(event) {\n const checkbox = event.target\n this.updateSelectedOption(checkbox)\n }\n\n removeTag(event) {\n // Can use this since, tags are not something that will be created differently for different types of options\n const { selectFieldId } = event.target.parentElement.dataset\n const el = this.optionTargets.find(el => el.dataset.selectFieldId === selectFieldId)\n if (el) {\n this.checkboxFor(el).click()\n }\n }\n\n // count the number of selected options and update the selected count\n updateSelectedCount(checked) {\n const selectedOptions = this.optionTargets.filter(el => this.checkboxFor(el).checked)\n const newCount = selectedOptions.length\n if (newCount === 0) {\n this.selectedCountTarget.innerText = this.selectedCountTarget.dataset.selectedCountMessageZero\n } else if (newCount === 1) {\n this.selectedCountTarget.innerText = this.selectedCountTarget.dataset.selectedCountMessageOne\n } else {\n this.selectedCountTarget.innerText = this.selectedCountTarget.dataset.selectedCountMessageOther.replace(\"%{count}\", newCount)\n }\n\n if (newCount > 0) {\n this.selectedCountContainerTarget.style.display = \"flex\"\n } else {\n this.selectedCountContainerTarget.style.display = \"none\"\n }\n }\n\n updateSelectedTag(checkbox) {\n const { checked } = checkbox\n const { selectFieldId } = this.elementFor(checkbox).dataset\n if (checked) {\n const node = this.selectedTagTemplateTarget.content.cloneNode(true)\n const tag = node.firstElementChild\n tag.dataset.selectFieldId = selectFieldId\n\n const textNode = tag.querySelector(\".text\")\n textNode.innerText = this.labelFor(this.elementFor(checkbox))\n\n this.tagsRowThree.appendChild(node)\n } else {\n outer:\n for (const container of this.selectedTagsTargets) {\n for (const el of container.children) {\n if (el.dataset.selectFieldId === selectFieldId) {\n el.remove()\n break outer\n }\n }\n }\n }\n\n this.arrangeSelectedTags()\n }\n\n updateSelectedOption(checkbox) {\n // This might need to be updated if we want to create an option component which simply cannot\n // conform to the convention of having the value in the checkbox field\n const { checked, value } = checkbox\n this.selectTarget.querySelector(`option[value=\"${value}\"]`).selected = checked\n\n if (this.hasSelectedCountTarget) {\n this.updateSelectedCount(checkbox.checked)\n }\n if (this.hasSelectedTagsTarget) {\n this.updateSelectedTag(checkbox)\n }\n }\n\n arrangeSelectedTags() {\n this.tagsRowOne.style.display = \"none\"\n this.tagsRowTwo.style.display = \"none\"\n this.tagsRowThree.style.display = \"none\"\n\n if (this.selectedTagsTargets.length === 0) {\n return\n }\n\n const tags = this.selectedTagsTargets.reduce((acc, parent) => {\n for (const el of parent.children) {\n acc.push(el)\n }\n return acc\n }, [])\n\n let limit = 5\n let numRows = 1\n\n if (this.isMobile) {\n limit = 3\n }\n\n this.tagsRowOne.style.display = \"flex\"\n\n if (tags.length > limit) {\n this.tagsRowTwo.style.display = \"flex\"\n numRows = 2\n }\n\n if (tags.length > (limit * 2)) {\n this.tagsRowThree.style.display = \"flex\"\n numRows = 3\n }\n\n const hasThirdRow = numRows > 2\n\n if (numRows === 1) {\n tags.forEach(el => this.tagsRowOne.appendChild(el))\n } else {\n const rowTwoStart = Math.floor(tags.length / numRows)\n // This is required so that we evenly divide the tags\n const halfwayBetweenRemainingTags = Math.floor((tags.length - rowTwoStart) / 2)\n const rowThreeStart = hasThirdRow ? (rowTwoStart + halfwayBetweenRemainingTags) : tags.length\n tags.forEach((el, i) => {\n if (i < rowTwoStart) {\n this.tagsRowOne.appendChild(el)\n } else if (i < rowThreeStart) {\n this.tagsRowTwo.appendChild(el)\n } else {\n this.tagsRowThree.appendChild(el)\n }\n })\n }\n }\n\n labelFor(el) {\n return el.dataset.selectFieldLabel\n }\n\n checkboxFor(el) {\n return el.querySelector(\"input[type=\\\"checkbox\\\"]\")\n }\n\n elementFor(checkbox) {\n return checkbox.parentElement\n }\n\n get tagsRowOne() {\n return this.selectedTagsTargets[0]\n }\n\n get tagsRowTwo() {\n return this.selectedTagsTargets[1]\n }\n\n get tagsRowThree() {\n return this.selectedTagsTargets[2]\n }\n\n get isMobile() {\n return this.element.offsetWidth <= 420\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static values = {\n vapidPublicKey: String,\n requestNotificationPermission: Boolean\n }\n\n connect() {\n this.registrationHandlerBound = this.handleRegistrationEvent.bind(this)\n window.addEventListener(\"serviceworker:register\", this.registrationHandlerBound)\n this.startRegistration(\n { scope: \"/\" },\n registration => {\n this.handleRegistration(registration)\n },\n error => console.error(\"Service Worker registration failed:\", error)\n )\n }\n\n disconnect() {\n window.removeEventListener(\"serviceworker:register\", this.registrationHandlerBound)\n }\n\n\n // Handle service worker registration through dispatched event\n handleRegistrationEvent = (event) => {\n const { registrationDetails, onSuccess, onError } = event.detail\n\n this.startRegistration(registrationDetails, onSuccess, onError)\n }\n\n startRegistration(registrationDetails, onSuccess, onError) {\n if (!(\"serviceWorker\" in navigator)) {\n console.error(\"Service Worker not supported\")\n return\n }\n\n navigator.serviceWorker.register(\"/service-worker.js\", registrationDetails)\n .then((registration) => {\n onSuccess(registration)\n })\n .catch((error) => {\n onError(error)\n })\n }\n\n // We will only proceed with the notification subscription flow\n // if the requestNotificationPermissionValue is true\n // otherwise, we will not ask for permission\n handleRegistration(registration) {\n if (this.requestNotificationPermissionValue === true) {\n return Promise.all([\n this.handleNotificationSubscription(registration),\n this.registerBackgroundSync(registration)\n ])\n } else {\n return Promise.resolve()\n }\n }\n\n handleNotificationSubscription(registration) {\n return Notification.requestPermission()\n .then(permission => {\n if (permission !== \"granted\") {\n console.error(\"Notification permission denied\")\n return Promise.reject(\"Notification permission denied\")\n }\n return navigator.serviceWorker.ready\n })\n .then(registration => registration.pushManager.getSubscription())\n .then(subscription => {\n const subscribedInServer = window.localStorage.getItem(\"push-notifications-subscribed-in-server\")\n if (subscription && subscribedInServer) {\n return Promise.resolve(subscription)\n }\n return this.subscribeToPushNotifications(registration)\n })\n .catch(error => console.error(\"Subscription flow failed:\", error))\n }\n\n subscribeToPushNotifications(registration) {\n return registration.pushManager.subscribe({\n userVisibleOnly: true,\n applicationServerKey: window.helpers.urlBase64ToUint8Array(this.vapidPublicKeyValue)\n })\n .then(subscription => {\n this.sendSubscriptionToServer(subscription)\n })\n .catch(error => console.error(\"PushManager Subscription failed:\", error))\n }\n\n sendSubscriptionToServer(subscription) {\n const body = JSON.stringify(subscription)\n const csrfToken = document.querySelector(\"meta[name=\\\"csrf-token\\\"]\").content\n const headers = {\n \"Content-Type\": \"application/json\",\n \"X-CSRF-Token\": csrfToken\n }\n return fetch(\"/service-worker/subscribe\", { method: \"POST\", headers, body })\n .then(response => {\n if (response.ok) {\n window.localStorage.setItem(\"push-notifications-subscribed-in-server\", true)\n } else {\n console.error(\"Failed Subscription. Bad status code from server:\", response.status)\n }\n })\n }\n\n registerBackgroundSync(registration) {\n if (!(\"SyncManager\" in window)) {\n return Promise.reject(\"SyncManager not supported\")\n }\n\n return navigator.serviceWorker.ready\n .then(registration => registration.sync.getTags())\n .then(tags => {\n if (tags.includes(\"nearcut-sw\")) {\n return Promise.resolve()\n }\n return this.registerSync(registration)\n })\n .catch(error => console.error(\"Background Sync registration failed:\", error))\n }\n\n registerSync(registration) {\n return registration.sync.register(\"nearcut-sw\")\n .then(() => {\n console.log(\"Background Sync registered\")\n })\n .catch(error => console.error(\"Background Sync registration failed:\", error))\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static values = { extraSubmitParams: Object }\n\n static targets = [\n \"form\"\n ]\n\n connect() {\n this.setParamAfterHours()\n }\n\n setParamAfterHours() {\n if(!window.location.href.includes(\"calendar\")) { return }\n if(!this.formTarget || !this.extraSubmitParamsValue) { return }\n\n const formUrl = new URL(this.formTarget.action, global.location.origin)\n const newParams = this.extraSubmitParamsValue\n\n for (const key in newParams) {\n formUrl.searchParams.append(key, newParams[key])\n }\n\n this.formTarget.action = formUrl.toString()\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\nimport StackManager from \"models/stack_manager\"\nimport BreakpointChange from \"shared/breakpoint_change\"\n\nclass Sheet extends Controller {\n static targets = [\n \"desktopCloseButton\",\n \"mobileCloseButton\",\n \"closeButtonHolder\"\n ]\n\n connect() {\n this.element.addEventListener(\"sheet-update:pop\", this.onPop.bind(this))\n this._stackManager = this._stackManagerFor(this.element)\n this._buildCloseButtons()\n this._attachBreakpointListeners()\n }\n\n disconnect() {\n this.element.removeEventListener(\"sheet-update:pop\", this.onPop.bind(this))\n }\n\n pop(event) {\n event.preventDefault()\n event.stopImmediatePropagation()\n\n this._stackManager.pop()\n }\n\n popWithoutPrevent(event) {\n this._stackManager.pop()\n }\n\n // This in essence clear the stack (trigger all pop events which close all dialogs, including the primary one)\n // and then the primary sheet controller has a callback (i.e.: timetable__payment_sheet_controller#onSheetReload)\n // where the logic is applied to reload the primary sheet\n reloadPrimary(event) {\n event.stopImmediatePropagation()\n\n const element = event.target || event.currentTarget\n this._afterServerRequestIfAny(element, () => {\n const eventParams = event.params || {}\n this._stackManager.clear({ reloadPrimary: true, ...eventParams })\n })\n }\n\n close(event) {\n event.preventDefault()\n\n // TODO: Change this once we have a shared context between all dialogs\n this._closeStack = true\n this._stackManager.clear()\n }\n\n onPop(event) {\n event.preventDefault()\n\n this._closeDialog(this.element)\n }\n\n // We need to check if the element is a form or a button with remote: true\n // And then listen for the ajax:success event to reload the stack AFTER\n // the server request has been completed\n _afterServerRequestIfAny(element, reloadStackFn) {\n if (element.getAttribute(\"type\") === \"submit\") {\n this._hookSuccessAjaxEvent(element.closest(\"form\"), reloadStackFn)\n } else if (element.getAttribute(\"type\") === \"button\" && element.dataset.remote === \"true\") {\n this._hookSuccessAjaxEvent(element, reloadStackFn)\n } else {\n reloadStackFn()\n }\n }\n\n _hookSuccessAjaxEvent(element, reloadStackFn) {\n if (!element) return\n\n element.addEventListener(\"ajax:success\", (event) => {\n reloadStackFn()\n }, { once: true })\n }\n\n\n _closeDialog(dialog) {\n if (!dialog) return\n\n const dialogCtrl = this._loadControllerFor(dialog)\n if (dialogCtrl) {\n dialogCtrl.close({\n detail: { dialogCloseClassName: this.dialogCloseClassName }\n })\n }\n }\n\n _loadControllerFor(dialog) {\n let dialogCtrl = this.application.getControllerForElementAndIdentifier(dialog, \"dialog\")\n if (!dialogCtrl) {\n // We need to fallback to action-sheet\n dialogCtrl = this.application.getControllerForElementAndIdentifier(dialog, \"action-sheet\")\n }\n return dialogCtrl\n }\n\n _stackManagerFor(dialog) {\n let targetStackName = dialog.dataset.dialogStackNameValue\n if (!targetStackName) {\n targetStackName = dialog.dataset.actionSheetStackNameValue\n }\n return StackManager.loadFor(targetStackName)\n }\n\n _buildCloseButtons() {\n if (this.hasCloseButtonHolderTarget) {\n this._desktopCloseButton = this.desktopCloseButtonTarget.content.firstElementChild.cloneNode(true)\n this._mobileCloseButton = this.mobileCloseButtonTarget.content.firstElementChild.cloneNode(true)\n this.closeButtonHolderTarget.appendChild(this._desktopCloseButton)\n this.closeButtonHolderTarget.appendChild(this._mobileCloseButton)\n }\n }\n\n _attachBreakpointListeners() {\n const breakpointChange = BreakpointChange.buildFromGlobal()\n breakpointChange.triggerOnAddition = true\n\n // on tiny, small breakpoints, we show the mobile close button\n breakpointChange.on([\"tiny\", \"small\"], (mediaQueryMatches) => {\n if (mediaQueryMatches) {\n this._showMobileCloseButton()\n }\n })\n\n breakpointChange.on([\"medium\", \"large\", \"huge\"], (mediaQueryMatches) => {\n if (mediaQueryMatches) {\n this._showDesktopCloseButton()\n }\n })\n }\n\n _showMobileCloseButton() {\n if (!this.hasCloseButtonHolderTarget) {\n return\n }\n\n this._hideCloseButtons()\n this._mobileCloseButton.style.display = \"\"\n }\n\n _showDesktopCloseButton() {\n if (!this.hasCloseButtonHolderTarget) {\n return\n }\n\n this._hideCloseButtons()\n this._desktopCloseButton.style.display = \"\"\n }\n\n _hideCloseButtons() {\n this.closeButtonHolderTarget.querySelectorAll(\"a.button\").forEach((button) => {\n button.style.display = \"none\"\n })\n }\n\n get dialogCloseClassName() {\n if (this._closeStack) {\n return \"dialog--closing-stack\"\n } else {\n return \"dialog--closing\"\n }\n }\n}\n\nexport default Sheet\n","import { Controller } from \"@hotwired/stimulus\"\nimport StackManager from \"models/stack_manager\"\n\n// This acts as the high-level controller for the sheet stack\n// to intercept the openining of dialog (or action-sheet) and push it to the stack\nclass SheetStack extends Controller {\n static targets = [\"origin\"]\n\n initialize() {\n this._dialogOpenedBind = this.openedDialog.bind(this)\n }\n\n connect() {\n window.addEventListener(\"sheet-stack-dialog:present\", this._dialogOpenedBind)\n window.addEventListener(\"sheet-stack-action-sheet:present\", this._dialogOpenedBind)\n }\n\n disconnect() {\n window.removeEventListener(\"sheet-stack-dialog:present\", this._dialogOpenedBind)\n window.removeEventListener(\"sheet-stack-action-sheet:present\", this._dialogOpenedBind)\n }\n\n openedDialog(event) {\n const currentDialog = event.detail.targetDialog\n if (!currentDialog) return\n\n const stackManager = this._stackManagerFor(currentDialog)\n this._appendSheetController(currentDialog, stackManager)\n stackManager.push(currentDialog)\n }\n\n _appendSheetController(dialog, stackManager) {\n let dataControllers = dialog.dataset.controller || \"\"\n\n // We need to specifically check for sheet controller to prevent duplication\n if (dataControllers.split(\" \").includes(\"sheet\")) return\n\n dataControllers = `${dataControllers} sheet`\n dialog.dataset.sheetStackIndexValue = stackManager.length + 1\n dialog.dataset.controller = dataControllers\n }\n\n _stackManagerFor(dialog) {\n let targetStackName = dialog.dataset.dialogStackNameValue\n if (!targetStackName) {\n targetStackName = dialog.dataset.actionSheetStackNameValue\n }\n return StackManager.loadFor(targetStackName)\n }\n}\n\nexport default SheetStack\n","import { Controller } from \"@hotwired/stimulus\"\n\nconst VALID_MICH_HEREINLASSEN_VALUE = \"1\"\n\nexport default class extends Controller {\n static targets = [ \"michHereinlassen\" ]\n\n connect() {\n // We do this instead of setting the value directly because we need js\n // enabled for our onboarding process and anyone who doesn't have js\n // enabled is a bot\n if (this.hasMichHereinlassenTarget) {\n this.michHereinlassenTarget.value = VALID_MICH_HEREINLASSEN_VALUE\n }\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nconst upKey = 38\nconst downKey = 40\n\nexport default class extends Controller {\n static targets = [\"input\", \"decrease\", \"increase\"]\n\n renderer = {\n set: (target, property, value) => {\n target[property] = value\n\n if (property === \"value\") {\n this.inputTarget.value = this.state.value\n this.inputTarget.dispatchEvent(new Event(\"change\"))\n\n this.enableButtons()\n\n if (this.isReachedMin) this.disableDecreaseButton()\n if (this.isReachedMax) this.disableIncreaseButton()\n }\n\n return true\n }\n }\n\n initialize() {\n this.state = new Proxy({}, this.renderer)\n this.propose()\n this.commit()\n }\n\n commit(event) {\n this.state.value = this.state.proposedValue\n }\n\n decrease(event) {\n if (event) event.preventDefault()\n\n if (this.isDisabled) return\n if (this.isReachedMin) return\n\n this.proposeDecrease()\n this.commit()\n }\n\n increase(event) {\n if (event) event.preventDefault()\n\n if (this.isDisabled) return\n if (this.isReachedMax) return\n\n this.proposeIncrease()\n this.commit()\n }\n\n propose(event) {\n const proposedValue = this.parsedInputValue\n\n if (proposedValue !== undefined) this.state.proposedValue = proposedValue\n\n if (this.isReachedMax) this.state.proposedValue = this.max\n if (this.isReachedMin) this.state.proposedValue = this.min\n }\n\n vary(event) {\n switch (event.keyCode) {\n case upKey:\n event.preventDefault()\n\n this.propose()\n this.increase()\n\n break\n case downKey:\n event.preventDefault()\n\n this.propose()\n this.decrease()\n\n break\n }\n }\n\n proposeDecrease() {\n this.state.proposedValue -= this.step\n }\n\n proposeIncrease() {\n this.state.proposedValue += this.step\n }\n\n enableButtons() {\n [this.decreaseTarget, this.increaseTarget].forEach(el => el.classList.remove(\"button--disabled\"))\n }\n\n disableDecreaseButton() {\n this.decreaseTarget.classList.add(\"button--disabled\")\n }\n\n disableIncreaseButton() {\n this.increaseTarget.classList.add(\"button--disabled\")\n }\n\n get parsedInputValue() {\n return this.parseInt(this.inputTarget.value, 0)\n }\n\n get step() {\n return this.parseInt(this.inputTarget.getAttribute(\"step\"), 1)\n }\n\n get min() {\n return this.parseInt(this.inputTarget.getAttribute(\"min\"), null)\n }\n\n get max() {\n return this.parseInt(this.inputTarget.getAttribute(\"max\"), null)\n }\n\n get isReachedMin() {\n return this.min && this.nextDecreasedValue < this.min\n }\n\n get isReachedMax() {\n return this.max && this.nextIncreasedValue > this.max\n }\n\n get nextIncreasedValue() {\n return this.state.proposedValue + this.step\n }\n\n get nextDecreasedValue() {\n return this.state.proposedValue - this.step\n }\n\n get isDisabled() {\n return this.element.classList.contains(\"stepper-field--disabled\")\n }\n\n parseInt(originalValue, defaultValue) {\n if (originalValue == \"\") return\n\n const value = parseInt(originalValue?.match(/-?\\d+/g)?.join(\"\"))\n return Number.isNaN(value) ? defaultValue : value\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"cta\"]\n static values = {\n mainCtaSelector: String,\n showOnDesktop: Boolean\n }\n\n connect() {\n // With timeout we can be certain that any css/image loading stuff has happened and we are\n // at the correct scroll position.\n setTimeout(() => this.onScroll(), 100)\n }\n\n onScroll() {\n if (this.mainCta() === null) {\n console.log(\"Sticky CTA: cannot find mainCTA\")\n return\n }\n if (this.isScrolledIntoView(this.mainCta()) || this.hideOnDesktop()) {\n this.hideCTA()\n } else {\n this.showCTA()\n }\n }\n\n hideCTA() {\n this.ctaTarget.style.display = \"none\"\n }\n\n showCTA() {\n this.ctaTarget.style.display = \"block\"\n }\n\n mainCta() {\n return document.querySelector(this.mainCtaSelectorValue)\n }\n\n isScrolledIntoView(el) {\n var rect = el.getBoundingClientRect()\n var elemTop = rect.top\n var elemBottom = rect.bottom\n\n // Only completely visible elements return true:\n var isVisible = (elemTop >= 0) && (elemBottom <= window.innerHeight)\n // Partially visible elements return true:\n //isVisible = elemTop < window.innerHeight && elemBottom >= 0\n return isVisible\n }\n\n hideOnDesktop() {\n return this.desktopViewPort() && !this.showOnDesktopValue\n }\n\n desktopViewPort() {\n return window.innerWidth > 768\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"submit\", \"button\"]\n static classes = [\"hide\"]\n static values = {\n visible: Boolean,\n submitDisabled: Boolean\n }\n\n connect() {\n if (this.visibleValue) {\n this.show()\n }\n if (this.submitDisabledValue) {\n this.disableSubmit()\n }\n }\n\n toggle() {\n if (this.visible) {\n this.hide()\n } else {\n this.show()\n }\n }\n\n show() {\n this.submitTarget.classList.remove(this.hideClass)\n }\n\n hide() {\n this.submitTarget.classList.add(this.hideClass)\n }\n\n disableSubmit() {\n this.button.disabled = true\n this.button.classList.add(\"button--disabled\")\n }\n\n enableSubmit() {\n this.button.disabled = false\n this.button.classList.remove(\"button--disabled\")\n }\n\n get visible() {\n return !this.submitTarget.classList.contains(this.hideClass)\n }\n\n get button() {\n return this.element.querySelector(\".button\")\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static values = { initialSection: String }\n static targets = [\"tab\", \"section\"]\n static classes = [\"sectionToggle\", \"tabToggle\"]\n\n renderer = {\n set: (target, property, value) => {\n target[property] = value\n\n this.renderer.toggleCurrentSection(property)\n\n return true\n },\n toggleCurrentSection: (property) => {\n if (property !== \"currentSectionSelector\") return\n\n this.sectionTargets.forEach((section) => section.classList.remove(this.sectionToggleSelector))\n this.tabTargets.forEach((tab) => tab.classList.remove(this.tabToggleSelector))\n\n this.currentSectionElement.classList.add(this.sectionToggleSelector)\n this.currentTabElement.classList.add(this.tabToggleSelector)\n }\n }\n\n initialize() {\n this.hashChangeBind = this.loadTabFromAnchor.bind(this)\n this.state = new Proxy({}, this.renderer)\n if (this.hasInitialSectionValue) {\n this.state.currentSectionSelector = this.initialSectionValue\n }\n }\n\n connect() {\n window.addEventListener(\"hashchange\", this.hashChangeBind)\n // Check if the current anchor is a valid tab when connecting\n this.loadTabFromAnchor()\n }\n\n disconnect() {\n window.removeEventListener(\"hashchange\", this.hashChangeBind)\n }\n\n show(event) {\n event.preventDefault()\n const currentHref = event.currentTarget.getAttribute(\"href\")\n\n const hashPortion = currentHref.split(\"#\")[1]\n if (hashPortion) window.location.hash = hashPortion\n }\n\n loadTabFromAnchor(event) {\n const anchor = window.location.hash\n if (!anchor) return\n\n if (this.isTabAvailable(anchor)) {\n this.switchTab(anchor)\n }\n }\n\n isTabAvailable(tab) {\n if (!tab) return false\n\n return Array.from(this.tabTargets).some(tabElement => {\n return tabElement.hash.includes(tab)\n })\n }\n\n switchTab(tab) {\n this.state.currentSectionSelector = tab\n }\n\n get currentSectionElement() {\n return this.sectionTargets.find((el) => el.matches(this.state.currentSectionSelector))\n }\n\n get currentTabElement() {\n return this.tabTargets.find((el) => el.matches(`a[href=\"${this.state.currentSectionSelector}\"]`))\n }\n\n get sectionToggleSelector() {\n if (this.hasSectionToggleClass) {\n return this.sectionToggleClass\n } else {\n return \"element--on\"\n }\n }\n\n get tabToggleSelector() {\n if (this.hasTabToggleClass) {\n return this.tabToggleClass\n } else {\n return \"tab__link--active\"\n }\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"upload\", \"picker\"]\n static classes = [\"hideUpload\", \"hidePicker\"]\n\n hidePicker(event) {\n event.preventDefault()\n\n if (this.hasUploadTarget && this.hasPickerTarget) {\n this.pickerTarget.classList.add(this.hidePickerClass)\n this.uploadTarget.classList.remove(this.hideUploadClass)\n }\n }\n\n showPicker(event) {\n event.preventDefault()\n\n if (this.hasUploadTarget && this.hasPickerTarget) {\n this.pickerTarget.classList.remove(this.hidePickerClass)\n this.uploadTarget.classList.add(this.hideUploadClass)\n }\n }\n}\n","\nimport { Controller } from \"@hotwired/stimulus\"\n\n// Ref: https://github.com/STRML/textFit/blob/master/textFit.js\nexport default class extends Controller {\n static values = {\n alignVert: Boolean,\n alignHoriz: Boolean,\n multiLine: Boolean,\n detectMultiLine: Boolean,\n minFontSize: Number,\n maxFontSize: Number,\n reProcess: Boolean,\n widthOnly: Boolean,\n alignVertWithFlexbox: Boolean,\n observeResize: Boolean\n }\n\n initialize() {\n if (!this.hasObserveResizeValue) {\n this.observeResizeValue = true\n }\n\n if (this.observeResizeValue) {\n this.resizeObserver = new ResizeObserver(() => this.fitText())\n }\n }\n\n connect() {\n if (this.observeResizeValue) {\n this.resizeObserver.observe(this.element)\n }\n\n this.fitText()\n }\n\n disconnect() {\n if (this.observeResizeValue) {\n this.resizeObserver.unobserve(this.element)\n }\n }\n\n fitText() {\n // To understand them all, checkout `this.defaultSettings`\n const options = {\n alignVert: this.alignVertValue,\n alignHoriz: this.alignHorizValue,\n multiLine: this.multiLineValue,\n detectMultiLine: this.hasDetectMultilineValue ? this.detectMultiLineValue : true,\n minFontSize: this.minFontSizeValue,\n maxFontSize: this.maxFontSizeValue,\n reProcess: this.hasReProcessValue ? this.reProcessValue : true,\n widthOnly: this.widthOnlyValue,\n alignVertWithFlexbox: this.alignVertWithFlexboxValue,\n }\n\n this.textFit(this.element, options)\n this.dispatchTextFitEvent()\n }\n\n // I've kept the entire textFit code the same, except making it object oriented\n\n textFit(els, options) {\n if (!options) options = {}\n // Extend options.\n var settings = {}\n for (var key in this.defaultSettings) {\n if (options[key]) {\n settings[key] = options[key]\n } else {\n settings[key] = this.defaultSettings[key]\n }\n }\n\n // Convert jQuery objects into arrays\n if (typeof els.toArray === \"function\") {\n els = els.toArray()\n }\n\n // Support passing a single el\n var elType = Object.prototype.toString.call(els)\n if (elType !== \"[object Array]\" && elType !== \"[object NodeList]\" &&\n elType !== \"[object HTMLCollection]\") {\n els = [els]\n }\n\n // Process each el we\"ve passed.\n for (var i = 0; i < els.length; i++) {\n this.processItem(els[i], settings)\n }\n }\n\n /**\n * The meat. Given an el, make the text inside it fit its parent.\n * @param {DOMElement} el Child el.\n * @param {Object} settings Options for fit.\n */\n processItem(el, settings) {\n if (!this.isElement(el) || (!settings.reProcess && el.getAttribute(\"textFitted\"))) {\n return false\n }\n\n // Set textFitted attribute so we know this was processed.\n if (!settings.reProcess) {\n el.setAttribute(\"textFitted\", 1)\n }\n\n var innerSpan, originalHeight, originalHTML, originalWidth\n var low, mid, high\n // Get element data.\n originalHTML = el.innerHTML\n originalWidth = this.innerWidth(el)\n originalHeight = this.innerHeight(el)\n // Don\"t process if we can\"t find box dimensions\n if (!originalWidth || (!settings.widthOnly && !originalHeight)) {\n if (!settings.widthOnly) throw new Error(\"Set a static height and width on the target element \" + el.outerHTML + \" before using textFit!\")\n else throw new Error(\"Set a static width on the target element \" + el.outerHTML + \" before using textFit!\")\n }\n\n // Add textFitted span inside this container.\n if (originalHTML.indexOf(\"textFitted\") === -1) {\n innerSpan = document.createElement(\"span\")\n innerSpan.className = \"textFitted\"\n // Inline block ensure it takes on the size of its contents, even if they are enclosed\n // in other tags like

\n innerSpan.style[\"display\"] = \"inline-block\"\n innerSpan.innerHTML = originalHTML\n el.innerHTML = \"\"\n el.appendChild(innerSpan)\n } else {\n // Reprocessing.\n innerSpan = el.querySelector(\"span.textFitted\")\n // Remove vertical align if we\"re reprocessing.\n if (this.hasClass(innerSpan, \"textFitAlignVert\")) {\n innerSpan.className = innerSpan.className.replace(\"textFitAlignVert\", \"\")\n innerSpan.style[\"height\"] = \"\"\n el.className.replace(\"textFitAlignVertFlex\", \"\")\n }\n }\n\n // Prepare & set alignment\n if (settings.alignHoriz) {\n el.style[\"text-align\"] = \"center\"\n innerSpan.style[\"text-align\"] = \"center\"\n }\n\n // Check if this string is multiple lines\n // Not guaranteed to always work if you use wonky line-heights\n var multiLine = settings.multiLine\n if (settings.detectMultiLine && !multiLine &&\n innerSpan.getBoundingClientRect().height >= parseInt(window.getComputedStyle(innerSpan)[\"font-size\"], 10) * 2) {\n multiLine = true\n }\n\n // If we\"re not treating this as a multiline string, don\"t let it wrap.\n if (!multiLine) {\n el.style[\"white-space\"] = \"nowrap\"\n }\n\n low = settings.minFontSize\n high = settings.maxFontSize\n // Binary search for highest best fit\n var size = low\n while (low <= high) {\n mid = (high + low) >> 1\n innerSpan.style.fontSize = mid + \"px\"\n var innerSpanBoundingClientRect = innerSpan.getBoundingClientRect()\n if (\n innerSpanBoundingClientRect.width <= originalWidth\n && (settings.widthOnly || innerSpanBoundingClientRect.height <= originalHeight)\n ) {\n size = mid\n low = mid + 1\n } else {\n high = mid - 1\n }\n // await injection point\n }\n // found, updating font if differs:\n if (innerSpan.style.fontSize != size + \"px\") innerSpan.style.fontSize = size + \"px\"\n // Our height is finalized. If we are aligning vertically, set that up.\n if (settings.alignVert) {\n this.addStyleSheet()\n var height = innerSpan.scrollHeight\n if (window.getComputedStyle(el)[\"position\"] === \"static\") {\n el.style[\"position\"] = \"relative\"\n }\n if (!this.hasClass(innerSpan, \"textFitAlignVert\")) {\n innerSpan.className = innerSpan.className + \" textFitAlignVert\"\n }\n innerSpan.style[\"height\"] = height + \"px\"\n if (settings.alignVertWithFlexbox && !this.hasClass(el, \"textFitAlignVertFlex\")) {\n el.className = el.className + \" textFitAlignVertFlex\"\n }\n }\n }\n\n // Calculate height without padding.\n innerHeight(el) {\n var style = window.getComputedStyle(el, null)\n return el.getBoundingClientRect().height -\n parseInt(style.getPropertyValue(\"padding-top\"), 10) -\n parseInt(style.getPropertyValue(\"padding-bottom\"), 10)\n }\n\n // Calculate width without padding.\n innerWidth(el) {\n var style = window.getComputedStyle(el, null)\n return el.getBoundingClientRect().width -\n parseInt(style.getPropertyValue(\"padding-left\"), 10) -\n parseInt(style.getPropertyValue(\"padding-right\"), 10)\n }\n\n //Returns true if it is a DOM element\n isElement(o) {\n return (\n typeof HTMLElement === \"object\" ? o instanceof HTMLElement : //DOM2\n o && typeof o === \"object\" && o !== null && o.nodeType === 1 && typeof o.nodeName === \"string\"\n )\n }\n\n hasClass(element, cls) {\n return (\" \" + element.className + \" \").indexOf(\" \" + cls + \" \") > -1\n }\n\n // Better than a stylesheet dependency\n addStyleSheet() {\n if (document.getElementById(\"textFitStyleSheet\")) return\n var style = [\n \".textFitAlignVert{\",\n \"position: absolute;\",\n \"top: 0; right: 0; bottom: 0; left: 0;\",\n \"margin: auto;\",\n \"display: flex;\",\n \"justify-content: center;\",\n \"flex-direction: column;\",\n \"}\",\n \".textFitAlignVertFlex{\",\n \"display: flex;\",\n \"}\",\n \".textFitAlignVertFlex .textFitAlignVert{\",\n \"position: static;\",\n \"}\",].join(\"\")\n var css = document.createElement(\"style\")\n css.type = \"text/css\"\n css.id = \"textFitStyleSheet\"\n css.innerHTML = style\n document.body.appendChild(css)\n }\n\n dispatchTextFitEvent() {\n const event = new Event(\"text-fit\")\n this.element.dispatchEvent(event)\n }\n\n\n get defaultSettings() {\n return {\n alignVert: false, // if true, textFit will align vertically using css tables\n alignHoriz: false, // if true, textFit will set text-align: center\n multiLine: false, // if true, textFit will not set white-space: no-wrap\n detectMultiLine: true, // disable to turn off automatic multi-line sensing\n minFontSize: 6,\n maxFontSize: 80,\n reProcess: true, // if true, textFit will re-process already-fit nodes. Set to \"false\" for better performance\n widthOnly: false, // if true, textFit will fit text to element width, regardless of text height\n alignVertWithFlexbox: false, // if true, textFit will use flexbox for vertical alignment\n }\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static values = {\n selector: String\n }\n\n show(event) {\n if (!this.targetElement) { return }\n\n this.targetElement.classList.add(\"element--on\")\n }\n\n dismiss(event) {\n if (!this.targetElement) { return }\n\n this.targetElement.classList.remove(\"element--on\")\n }\n\n toggle(event) {\n event.preventDefault()\n\n if (!this.targetElement) { return }\n\n if (this.targetElement.classList.contains(\"element--on\")) {\n this.dismiss(event)\n } else {\n this.show(event)\n }\n }\n\n get targetElement() {\n return document.querySelector(this.selectorValue)\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"input\"]\n\n connect() {\n this.toggle()\n }\n\n toggle() {\n if (!this.inputTargets) { return }\n\n this.inputTargets.forEach(el => {\n const toggleTargets = this.toggleTargetsFor(el)\n if (el.checked) {\n toggleTargets.forEach(tgt => tgt.classList.add(\"element--on\"))\n } else {\n toggleTargets.forEach(tgt => tgt.classList.remove(\"element--on\"))\n }\n })\n }\n\n toggleTargetsFor(el) {\n return document.querySelectorAll(el.dataset.toggleTargets)\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static values = {\n automatic: Boolean\n }\n\n renderer = {\n set: (target, property, value) => {\n target[property] = value\n\n if (property === \"closestEdge\") {\n if (this.state.closestEdge === \"top\") this.renderer.positionWhenCloseToTop()\n if (this.state.closestEdge === \"bottom\") this.renderer.positionWhenCloseToBottom()\n if (this.state.closestEdge === \"none\") this.renderer.positionWhenCloseToTop()\n }\n\n if (property === \"arrowPosition\") {\n if (this.state.arrowPosition === \"left\") this.renderer.alignToLeft()\n if (this.state.arrowPosition === \"center\") this.renderer.alignToCenter()\n if (this.state.arrowPosition === \"right\") this.renderer.alignToRight()\n }\n\n return true\n },\n\n positionWhenCloseToTop: () => {\n this.element.classList.replace(\"tooltip--arrow-bottom-left\", \"tooltip--arrow-top-left\")\n this.element.classList.replace(\"tooltip--arrow-bottom-center\", \"tooltip--arrow-top-center\")\n this.element.classList.replace(\"tooltip--arrow-bottom-right\", \"tooltip--arrow-top-right\")\n\n this.element.style.top = `${this.togglerElement.offsetHeight + this.arrowSize}px`\n },\n\n positionWhenCloseToBottom: () => {\n this.element.classList.replace(\"tooltip--arrow-top-left\", \"tooltip--arrow-bottom-left\")\n this.element.classList.replace(\"tooltip--arrow-top-center\", \"tooltip--arrow-bottom-center\")\n this.element.classList.replace(\"tooltip--arrow-top-right\", \"tooltip--arrow-bottom-right\")\n\n this.element.style.top = `-${this.elementHeight + this.arrowSize}px`\n },\n\n alignToLeft: () => {\n this.element.style.left = `${this.togglerElement.offsetLeft}px`\n },\n\n alignToCenter: () => {\n const elementWidth = this.element.offsetWidth\n const togglerWidth = this.togglerElement.offsetWidth\n const togglerLeft = this.togglerElement.offsetLeft\n var leftPosition\n if (togglerWidth > elementWidth) {\n leftPosition = togglerLeft + parseInt((togglerWidth - elementWidth) / 2)\n } else {\n leftPosition = togglerLeft - parseInt((elementWidth - togglerWidth) / 2)\n }\n this.element.style.left = `${leftPosition}px`\n },\n\n alignToRight: () => {\n const elementWidth = this.element.offsetWidth\n const togglerWidth = this.togglerElement.offsetWidth\n const togglerLeft = this.togglerElement.offsetLeft\n\n var leftPosition = togglerLeft + togglerWidth - elementWidth\n\n this.element.style.left = `${leftPosition}px`\n }\n }\n\n initialize() {\n this.state = new Proxy({}, this.renderer)\n }\n\n connect() {\n this.setup()\n }\n\n setup(event) {\n if (!this.togglerElement || !this.isAutomatic) return\n\n if (this.distanceToTop < this.elementHeightWithBuffer) {\n this.state.closestEdge = \"top\"\n } else if (this.distanceToBottom < this.elementHeightWithBuffer) {\n this.state.closestEdge = \"bottom\"\n } else {\n this.state.closestEdge = \"none\"\n }\n\n this.state.arrowPosition = this.arrowPosition\n }\n\n get togglerElement() {\n if (this.elementID == undefined) return undefined\n\n return document.querySelector(`[data-toggle-selector-value~=\"#${this.elementID}\"]`)\n }\n\n get elementID() {\n return this.element.id\n }\n\n get elementHeight() {\n return this.element.offsetHeight\n }\n\n get distanceToBottom() {\n return window.innerHeight - this.togglerElement.getBoundingClientRect().bottom\n }\n\n get distanceToTop() {\n return this.togglerElement.getBoundingClientRect().top\n }\n\n get arrowPosition() {\n return this.element.getAttribute(\"class\").match(\"arrow-.*-(left|center|right)\")[1]\n }\n\n get arrowSize() {\n return 15\n }\n\n get elementHeightWithBuffer() {\n return this.elementHeight + 20\n }\n\n get isAutomatic() {\n return this.automaticValue == true\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n\n connect() {\n this.prepare()\n }\n\n disconnect() {\n this.destroyWidget()\n }\n\n prepare() {\n this.loadWidget(this.scriptUrl)\n .then(() => { this.initWidget() })\n .catch((error) => { console.error(\"Trustpilot load failed:\", error) })\n }\n\n loadWidget(url) {\n return new Promise((resolve, reject) => {\n const script = document.createElement(\"script\")\n script.src = url\n script.async = true\n script.onload = resolve\n script.onerror = reject\n document.head.appendChild(script)\n })\n }\n\n initWidget() {\n if (global.Trustpilot && typeof global.Trustpilot.loadFromElement === \"function\") {\n global.Trustpilot.loadFromElement(this.element)\n } else {\n console.error(\"Trustpilot init failed\")\n }\n }\n\n destroyWidget() {\n this.element.innerHTML = \"\"\n }\n\n get scriptUrl() {\n return \"//widget.trustpilot.com/bootstrap/v5/tp.widget.bootstrap.min.js\"\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n visit() {\n Turbolinks.visit(this.data.get(\"location\"))\n }\n\n skip() {\n event.stopPropagation()\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n connect() {\n // We have to manually manage the event listener because setting\n // data-action=\"usetiful-tour:visited@window->usetiful-tour#markAsVisited\"\n // breaks the layout at the -> character.\n // TODO: Investigate why the data-action is not working in the layout.\n this.markAsVisitedBind = this.markAsVisited.bind(this)\n\n window.addEventListener(\"usetiful-tour:visited\", this.markAsVisitedBind)\n }\n\n disconnect() {\n window.removeEventListener(\"usetiful-tour:visited\", this.markAsVisitedBind)\n }\n\n markAsVisited(event) {\n const tourName = event.detail.name\n const onSuccess = event.detail.onSuccess\n const method = \"POST\"\n const params = new URLSearchParams()\n params.append(\"visited_tour[tour_name]\", tourName)\n\n Rails.ajax({\n type: method,\n dataType: \"json\",\n url: \"/admin/usetiful/visited_tours\",\n data: params.toString(),\n success: onSuccess\n })\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"form\"]\n\n validate(event) {\n if (!this.formTarget.checkValidity()) {\n event.stopImmediatePropagation()\n }\n }\n}\n","// nb. This is for IE10 and lower _only_.\nvar supportCustomEvent = window.CustomEvent;\n\nif (!supportCustomEvent || typeof supportCustomEvent === 'object') {\n supportCustomEvent = function CustomEvent(event, x) {\n x = x || {};\n var ev = document.createEvent('CustomEvent');\n ev.initCustomEvent(event, !!x.bubbles, !!x.cancelable, x.detail || null);\n return ev;\n };\n\n supportCustomEvent.prototype = window.Event.prototype;\n}\n/**\n * Dispatches the passed event to both an \"on\" handler as well as via the\n * normal dispatch operation. Does not bubble.\n *\n * @param {!EventTarget} target\n * @param {!Event} event\n * @return {boolean}\n */\n\n\nfunction safeDispatchEvent(target, event) {\n var check = 'on' + event.type.toLowerCase();\n\n if (typeof target[check] === 'function') {\n target[check](event);\n }\n\n return target.dispatchEvent(event);\n}\n/**\n * @param {Element} el to check for stacking context\n * @return {boolean} whether this el or its parents creates a stacking context\n */\n\n\nfunction createsStackingContext(el) {\n while (el && el !== document.body) {\n var s = window.getComputedStyle(el);\n\n var invalid = function (k, ok) {\n return !(s[k] === undefined || s[k] === ok);\n };\n\n if (s.opacity < 1 || invalid('zIndex', 'auto') || invalid('transform', 'none') || invalid('mixBlendMode', 'normal') || invalid('filter', 'none') || invalid('perspective', 'none') || s['isolation'] === 'isolate' || s.position === 'fixed' || s.webkitOverflowScrolling === 'touch') {\n return true;\n }\n\n el = el.parentElement;\n }\n\n return false;\n}\n/**\n * Finds the nearest

from the passed element.\n *\n * @param {Element} el to search from\n * @return {HTMLDialogElement} dialog found\n */\n\n\nfunction findNearestDialog(el) {\n while (el) {\n if (el.localName === 'dialog') {\n return el;\n }\n\n if (el.parentElement) {\n el = el.parentElement;\n } else if (el.parentNode) {\n el = el.parentNode.host;\n } else {\n el = null;\n }\n }\n\n return null;\n}\n/**\n * Blur the specified element, as long as it's not the HTML body element.\n * This works around an IE9/10 bug - blurring the body causes Windows to\n * blur the whole application.\n *\n * @param {Element} el to blur\n */\n\n\nfunction safeBlur(el) {\n // Find the actual focused element when the active element is inside a shadow root\n while (el && el.shadowRoot && el.shadowRoot.activeElement) {\n el = el.shadowRoot.activeElement;\n }\n\n if (el && el.blur && el !== document.body) {\n el.blur();\n }\n}\n/**\n * @param {!NodeList} nodeList to search\n * @param {Node} node to find\n * @return {boolean} whether node is inside nodeList\n */\n\n\nfunction inNodeList(nodeList, node) {\n for (var i = 0; i < nodeList.length; ++i) {\n if (nodeList[i] === node) {\n return true;\n }\n }\n\n return false;\n}\n/**\n * @param {HTMLFormElement} el to check\n * @return {boolean} whether this form has method=\"dialog\"\n */\n\n\nfunction isFormMethodDialog(el) {\n if (!el || !el.hasAttribute('method')) {\n return false;\n }\n\n return el.getAttribute('method').toLowerCase() === 'dialog';\n}\n/**\n * @param {!DocumentFragment|!Element} hostElement\n * @return {?Element}\n */\n\n\nfunction findFocusableElementWithin(hostElement) {\n // Note that this is 'any focusable area'. This list is probably not exhaustive, but the\n // alternative involves stepping through and trying to focus everything.\n var opts = ['button', 'input', 'keygen', 'select', 'textarea'];\n var query = opts.map(function (el) {\n return el + ':not([disabled])';\n }); // TODO(samthor): tabindex values that are not numeric are not focusable.\n\n query.push('[tabindex]:not([disabled]):not([tabindex=\"\"])'); // tabindex != \"\", not disabled\n\n var target = hostElement.querySelector(query.join(', '));\n\n if (!target && 'attachShadow' in Element.prototype) {\n // If we haven't found a focusable target, see if the host element contains an element\n // which has a shadowRoot.\n // Recursively search for the first focusable item in shadow roots.\n var elems = hostElement.querySelectorAll('*');\n\n for (var i = 0; i < elems.length; i++) {\n if (elems[i].tagName && elems[i].shadowRoot) {\n target = findFocusableElementWithin(elems[i].shadowRoot);\n\n if (target) {\n break;\n }\n }\n }\n }\n\n return target;\n}\n/**\n * Determines if an element is attached to the DOM.\n * @param {Element} element to check\n * @return {boolean} whether the element is in DOM\n */\n\n\nfunction isConnected(element) {\n return element.isConnected || document.body.contains(element);\n}\n/**\n * @param {!Event} event\n * @return {?Element}\n */\n\n\nfunction findFormSubmitter(event) {\n if (event.submitter) {\n return event.submitter;\n }\n\n var form = event.target;\n\n if (!(form instanceof HTMLFormElement)) {\n return null;\n }\n\n var submitter = dialogPolyfill.formSubmitter;\n\n if (!submitter) {\n var target = event.target;\n var root = 'getRootNode' in target && target.getRootNode() || document;\n submitter = root.activeElement;\n }\n\n if (!submitter || submitter.form !== form) {\n return null;\n }\n\n return submitter;\n}\n/**\n * @param {!Event} event\n */\n\n\nfunction maybeHandleSubmit(event) {\n if (event.defaultPrevented) {\n return;\n }\n\n var form = event.target; // We'd have a value if we clicked on an imagemap.\n\n var value = dialogPolyfill.imagemapUseValue;\n var submitter = findFormSubmitter(event);\n\n if (value === null && submitter) {\n value = submitter.value;\n } // There should always be a dialog as this handler is added specifically on them, but check just\n // in case.\n\n\n var dialog = findNearestDialog(form);\n\n if (!dialog) {\n return;\n } // Prefer formmethod on the button.\n\n\n var formmethod = submitter && submitter.getAttribute('formmethod') || form.getAttribute('method');\n\n if (formmethod !== 'dialog') {\n return;\n }\n\n event.preventDefault();\n\n if (value != null) {\n // nb. we explicitly check against null/undefined\n dialog.close(value);\n } else {\n dialog.close();\n }\n}\n/**\n * @param {!HTMLDialogElement} dialog to upgrade\n * @constructor\n */\n\n\nfunction dialogPolyfillInfo(dialog) {\n this.dialog_ = dialog;\n this.replacedStyleTop_ = false;\n this.openAsModal_ = false; // Set a11y role. Browsers that support dialog implicitly know this already.\n\n if (!dialog.hasAttribute('role')) {\n dialog.setAttribute('role', 'dialog');\n }\n\n dialog.show = this.show.bind(this);\n dialog.showModal = this.showModal.bind(this);\n dialog.close = this.close.bind(this);\n dialog.addEventListener('submit', maybeHandleSubmit, false);\n\n if (!('returnValue' in dialog)) {\n dialog.returnValue = '';\n }\n\n if ('MutationObserver' in window) {\n var mo = new MutationObserver(this.maybeHideModal.bind(this));\n mo.observe(dialog, {\n attributes: true,\n attributeFilter: ['open']\n });\n } else {\n // IE10 and below support. Note that DOMNodeRemoved etc fire _before_ removal. They also\n // seem to fire even if the element was removed as part of a parent removal. Use the removed\n // events to force downgrade (useful if removed/immediately added).\n var removed = false;\n\n var cb = function () {\n removed ? this.downgradeModal() : this.maybeHideModal();\n removed = false;\n }.bind(this);\n\n var timeout;\n\n var delayModel = function (ev) {\n if (ev.target !== dialog) {\n return;\n } // not for a child element\n\n\n var cand = 'DOMNodeRemoved';\n removed |= ev.type.substr(0, cand.length) === cand;\n window.clearTimeout(timeout);\n timeout = window.setTimeout(cb, 0);\n };\n\n ['DOMAttrModified', 'DOMNodeRemoved', 'DOMNodeRemovedFromDocument'].forEach(function (name) {\n dialog.addEventListener(name, delayModel);\n });\n } // Note that the DOM is observed inside DialogManager while any dialog\n // is being displayed as a modal, to catch modal removal from the DOM.\n\n\n Object.defineProperty(dialog, 'open', {\n set: this.setOpen.bind(this),\n get: dialog.hasAttribute.bind(dialog, 'open')\n });\n this.backdrop_ = document.createElement('div');\n this.backdrop_.className = 'backdrop';\n this.backdrop_.addEventListener('mouseup', this.backdropMouseEvent_.bind(this));\n this.backdrop_.addEventListener('mousedown', this.backdropMouseEvent_.bind(this));\n this.backdrop_.addEventListener('click', this.backdropMouseEvent_.bind(this));\n}\n\ndialogPolyfillInfo.prototype = {\n get dialog() {\n return this.dialog_;\n },\n\n /**\n * Maybe remove this dialog from the modal top layer. This is called when\n * a modal dialog may no longer be tenable, e.g., when the dialog is no\n * longer open or is no longer part of the DOM.\n */\n maybeHideModal: function () {\n if (this.dialog_.hasAttribute('open') && isConnected(this.dialog_)) {\n return;\n }\n\n this.downgradeModal();\n },\n\n /**\n * Remove this dialog from the modal top layer, leaving it as a non-modal.\n */\n downgradeModal: function () {\n if (!this.openAsModal_) {\n return;\n }\n\n this.openAsModal_ = false;\n this.dialog_.style.zIndex = ''; // This won't match the native exactly because if the user set top on a centered\n // polyfill dialog, that top gets thrown away when the dialog is closed. Not sure it's\n // possible to polyfill this perfectly.\n\n if (this.replacedStyleTop_) {\n this.dialog_.style.top = '';\n this.replacedStyleTop_ = false;\n } // Clear the backdrop and remove from the manager.\n\n\n this.backdrop_.parentNode && this.backdrop_.parentNode.removeChild(this.backdrop_);\n dialogPolyfill.dm.removeDialog(this);\n },\n\n /**\n * @param {boolean} value whether to open or close this dialog\n */\n setOpen: function (value) {\n if (value) {\n this.dialog_.hasAttribute('open') || this.dialog_.setAttribute('open', '');\n } else {\n this.dialog_.removeAttribute('open');\n this.maybeHideModal(); // nb. redundant with MutationObserver\n }\n },\n\n /**\n * Handles mouse events ('mouseup', 'mousedown', 'click') on the fake .backdrop element, redirecting them as if\n * they were on the dialog itself.\n *\n * @param {!Event} e to redirect\n */\n backdropMouseEvent_: function (e) {\n if (!this.dialog_.hasAttribute('tabindex')) {\n // Clicking on the backdrop should move the implicit cursor, even if dialog cannot be\n // focused. Create a fake thing to focus on. If the backdrop was _before_ the dialog, this\n // would not be needed - clicks would move the implicit cursor there.\n var fake = document.createElement('div');\n this.dialog_.insertBefore(fake, this.dialog_.firstChild);\n fake.tabIndex = -1;\n fake.focus();\n this.dialog_.removeChild(fake);\n } else {\n this.dialog_.focus();\n }\n\n var redirectedEvent = document.createEvent('MouseEvents');\n redirectedEvent.initMouseEvent(e.type, e.bubbles, e.cancelable, window, e.detail, e.screenX, e.screenY, e.clientX, e.clientY, e.ctrlKey, e.altKey, e.shiftKey, e.metaKey, e.button, e.relatedTarget);\n this.dialog_.dispatchEvent(redirectedEvent);\n e.stopPropagation();\n },\n\n /**\n * Focuses on the first focusable element within the dialog. This will always blur the current\n * focus, even if nothing within the dialog is found.\n */\n focus_: function () {\n // Find element with `autofocus` attribute, or fall back to the first form/tabindex control.\n var target = this.dialog_.querySelector('[autofocus]:not([disabled])');\n\n if (!target && this.dialog_.tabIndex >= 0) {\n target = this.dialog_;\n }\n\n if (!target) {\n target = findFocusableElementWithin(this.dialog_);\n }\n\n safeBlur(document.activeElement);\n target && target.focus();\n },\n\n /**\n * Sets the zIndex for the backdrop and dialog.\n *\n * @param {number} dialogZ\n * @param {number} backdropZ\n */\n updateZIndex: function (dialogZ, backdropZ) {\n if (dialogZ < backdropZ) {\n throw new Error('dialogZ should never be < backdropZ');\n }\n\n this.dialog_.style.zIndex = dialogZ;\n this.backdrop_.style.zIndex = backdropZ;\n },\n\n /**\n * Shows the dialog. If the dialog is already open, this does nothing.\n */\n show: function () {\n if (!this.dialog_.open) {\n this.setOpen(true);\n this.focus_();\n }\n },\n\n /**\n * Show this dialog modally.\n */\n showModal: function () {\n if (this.dialog_.hasAttribute('open')) {\n throw new Error('Failed to execute \\'showModal\\' on dialog: The element is already open, and therefore cannot be opened modally.');\n }\n\n if (!isConnected(this.dialog_)) {\n throw new Error('Failed to execute \\'showModal\\' on dialog: The element is not in a Document.');\n }\n\n if (!dialogPolyfill.dm.pushDialog(this)) {\n throw new Error('Failed to execute \\'showModal\\' on dialog: There are too many open modal dialogs.');\n }\n\n if (createsStackingContext(this.dialog_.parentElement)) {\n console.warn('A dialog is being shown inside a stacking context. ' + 'This may cause it to be unusable. For more information, see this link: ' + 'https://github.com/GoogleChrome/dialog-polyfill/#stacking-context');\n }\n\n this.setOpen(true);\n this.openAsModal_ = true; // Optionally center vertically, relative to the current viewport.\n\n if (dialogPolyfill.needsCentering(this.dialog_)) {\n dialogPolyfill.reposition(this.dialog_);\n this.replacedStyleTop_ = true;\n } else {\n this.replacedStyleTop_ = false;\n } // Insert backdrop.\n\n\n this.dialog_.parentNode.insertBefore(this.backdrop_, this.dialog_.nextSibling); // Focus on whatever inside the dialog.\n\n this.focus_();\n },\n\n /**\n * Closes this HTMLDialogElement. This is optional vs clearing the open\n * attribute, however this fires a 'close' event.\n *\n * @param {string=} opt_returnValue to use as the returnValue\n */\n close: function (opt_returnValue) {\n if (!this.dialog_.hasAttribute('open')) {\n throw new Error('Failed to execute \\'close\\' on dialog: The element does not have an \\'open\\' attribute, and therefore cannot be closed.');\n }\n\n this.setOpen(false); // Leave returnValue untouched in case it was set directly on the element\n\n if (opt_returnValue !== undefined) {\n this.dialog_.returnValue = opt_returnValue;\n } // Triggering \"close\" event for any attached listeners on the .\n\n\n var closeEvent = new supportCustomEvent('close', {\n bubbles: false,\n cancelable: false\n });\n safeDispatchEvent(this.dialog_, closeEvent);\n }\n};\nvar dialogPolyfill = {};\n\ndialogPolyfill.reposition = function (element) {\n var scrollTop = document.body.scrollTop || document.documentElement.scrollTop;\n var topValue = scrollTop + (window.innerHeight - element.offsetHeight) / 2;\n element.style.top = Math.max(scrollTop, topValue) + 'px';\n};\n\ndialogPolyfill.isInlinePositionSetByStylesheet = function (element) {\n for (var i = 0; i < document.styleSheets.length; ++i) {\n var styleSheet = document.styleSheets[i];\n var cssRules = null; // Some browsers throw on cssRules.\n\n try {\n cssRules = styleSheet.cssRules;\n } catch (e) {}\n\n if (!cssRules) {\n continue;\n }\n\n for (var j = 0; j < cssRules.length; ++j) {\n var rule = cssRules[j];\n var selectedNodes = null; // Ignore errors on invalid selector texts.\n\n try {\n selectedNodes = document.querySelectorAll(rule.selectorText);\n } catch (e) {}\n\n if (!selectedNodes || !inNodeList(selectedNodes, element)) {\n continue;\n }\n\n var cssTop = rule.style.getPropertyValue('top');\n var cssBottom = rule.style.getPropertyValue('bottom');\n\n if (cssTop && cssTop !== 'auto' || cssBottom && cssBottom !== 'auto') {\n return true;\n }\n }\n }\n\n return false;\n};\n\ndialogPolyfill.needsCentering = function (dialog) {\n var computedStyle = window.getComputedStyle(dialog);\n\n if (computedStyle.position !== 'absolute') {\n return false;\n } // We must determine whether the top/bottom specified value is non-auto. In\n // WebKit/Blink, checking computedStyle.top == 'auto' is sufficient, but\n // Firefox returns the used value. So we do this crazy thing instead: check\n // the inline style and then go through CSS rules.\n\n\n if (dialog.style.top !== 'auto' && dialog.style.top !== '' || dialog.style.bottom !== 'auto' && dialog.style.bottom !== '') {\n return false;\n }\n\n return !dialogPolyfill.isInlinePositionSetByStylesheet(dialog);\n};\n/**\n * @param {!Element} element to force upgrade\n */\n\n\ndialogPolyfill.forceRegisterDialog = function (element) {\n if (window.HTMLDialogElement || element.showModal) {\n console.warn('This browser already supports , the polyfill ' + 'may not work correctly', element);\n }\n\n if (element.localName !== 'dialog') {\n throw new Error('Failed to register dialog: The element is not a dialog.');\n }\n\n new dialogPolyfillInfo(element);\n};\n/**\n * @param {!Element} element to upgrade, if necessary\n */\n\n\ndialogPolyfill.registerDialog = function (element) {\n if (!element.showModal) {\n dialogPolyfill.forceRegisterDialog(element);\n }\n};\n/**\n * @constructor\n */\n\n\ndialogPolyfill.DialogManager = function () {\n /** @type {!Array} */\n this.pendingDialogStack = [];\n var checkDOM = this.checkDOM_.bind(this); // The overlay is used to simulate how a modal dialog blocks the document.\n // The blocking dialog is positioned on top of the overlay, and the rest of\n // the dialogs on the pending dialog stack are positioned below it. In the\n // actual implementation, the modal dialog stacking is controlled by the\n // top layer, where z-index has no effect.\n\n this.overlay = document.createElement('div');\n this.overlay.className = '_dialog_overlay';\n this.overlay.addEventListener('click', function (e) {\n this.forwardTab_ = undefined;\n e.stopPropagation();\n checkDOM([]); // sanity-check DOM\n }.bind(this));\n this.handleKey_ = this.handleKey_.bind(this);\n this.handleFocus_ = this.handleFocus_.bind(this);\n this.zIndexLow_ = 100000;\n this.zIndexHigh_ = 100000 + 150;\n this.forwardTab_ = undefined;\n\n if ('MutationObserver' in window) {\n this.mo_ = new MutationObserver(function (records) {\n var removed = [];\n records.forEach(function (rec) {\n for (var i = 0, c; c = rec.removedNodes[i]; ++i) {\n if (!(c instanceof Element)) {\n continue;\n } else if (c.localName === 'dialog') {\n removed.push(c);\n }\n\n removed = removed.concat(c.querySelectorAll('dialog'));\n }\n });\n removed.length && checkDOM(removed);\n });\n }\n};\n/**\n * Called on the first modal dialog being shown. Adds the overlay and related\n * handlers.\n */\n\n\ndialogPolyfill.DialogManager.prototype.blockDocument = function () {\n document.documentElement.addEventListener('focus', this.handleFocus_, true);\n document.addEventListener('keydown', this.handleKey_);\n this.mo_ && this.mo_.observe(document, {\n childList: true,\n subtree: true\n });\n};\n/**\n * Called on the first modal dialog being removed, i.e., when no more modal\n * dialogs are visible.\n */\n\n\ndialogPolyfill.DialogManager.prototype.unblockDocument = function () {\n document.documentElement.removeEventListener('focus', this.handleFocus_, true);\n document.removeEventListener('keydown', this.handleKey_);\n this.mo_ && this.mo_.disconnect();\n};\n/**\n * Updates the stacking of all known dialogs.\n */\n\n\ndialogPolyfill.DialogManager.prototype.updateStacking = function () {\n var zIndex = this.zIndexHigh_;\n\n for (var i = 0, dpi; dpi = this.pendingDialogStack[i]; ++i) {\n dpi.updateZIndex(--zIndex, --zIndex);\n\n if (i === 0) {\n this.overlay.style.zIndex = --zIndex;\n }\n } // Make the overlay a sibling of the dialog itself.\n\n\n var last = this.pendingDialogStack[0];\n\n if (last) {\n var p = last.dialog.parentNode || document.body;\n p.appendChild(this.overlay);\n } else if (this.overlay.parentNode) {\n this.overlay.parentNode.removeChild(this.overlay);\n }\n};\n/**\n * @param {Element} candidate to check if contained or is the top-most modal dialog\n * @return {boolean} whether candidate is contained in top dialog\n */\n\n\ndialogPolyfill.DialogManager.prototype.containedByTopDialog_ = function (candidate) {\n while (candidate = findNearestDialog(candidate)) {\n for (var i = 0, dpi; dpi = this.pendingDialogStack[i]; ++i) {\n if (dpi.dialog === candidate) {\n return i === 0; // only valid if top-most\n }\n }\n\n candidate = candidate.parentElement;\n }\n\n return false;\n};\n\ndialogPolyfill.DialogManager.prototype.handleFocus_ = function (event) {\n var target = event.composedPath ? event.composedPath()[0] : event.target;\n\n if (this.containedByTopDialog_(target)) {\n return;\n }\n\n if (document.activeElement === document.documentElement) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n safeBlur(target);\n\n if (this.forwardTab_ === undefined) {\n return;\n } // move focus only from a tab key\n\n\n var dpi = this.pendingDialogStack[0];\n var dialog = dpi.dialog;\n var position = dialog.compareDocumentPosition(target);\n\n if (position & Node.DOCUMENT_POSITION_PRECEDING) {\n if (this.forwardTab_) {\n // forward\n dpi.focus_();\n } else if (target !== document.documentElement) {\n // backwards if we're not already focused on \n document.documentElement.focus();\n }\n }\n\n return false;\n};\n\ndialogPolyfill.DialogManager.prototype.handleKey_ = function (event) {\n this.forwardTab_ = undefined;\n\n if (event.keyCode === 27) {\n event.preventDefault();\n event.stopPropagation();\n var cancelEvent = new supportCustomEvent('cancel', {\n bubbles: false,\n cancelable: true\n });\n var dpi = this.pendingDialogStack[0];\n\n if (dpi && safeDispatchEvent(dpi.dialog, cancelEvent)) {\n dpi.dialog.close();\n }\n } else if (event.keyCode === 9) {\n this.forwardTab_ = !event.shiftKey;\n }\n};\n/**\n * Finds and downgrades any known modal dialogs that are no longer displayed. Dialogs that are\n * removed and immediately readded don't stay modal, they become normal.\n *\n * @param {!Array} removed that have definitely been removed\n */\n\n\ndialogPolyfill.DialogManager.prototype.checkDOM_ = function (removed) {\n // This operates on a clone because it may cause it to change. Each change also calls\n // updateStacking, which only actually needs to happen once. But who removes many modal dialogs\n // at a time?!\n var clone = this.pendingDialogStack.slice();\n clone.forEach(function (dpi) {\n if (removed.indexOf(dpi.dialog) !== -1) {\n dpi.downgradeModal();\n } else {\n dpi.maybeHideModal();\n }\n });\n};\n/**\n * @param {!dialogPolyfillInfo} dpi\n * @return {boolean} whether the dialog was allowed\n */\n\n\ndialogPolyfill.DialogManager.prototype.pushDialog = function (dpi) {\n var allowed = (this.zIndexHigh_ - this.zIndexLow_) / 2 - 1;\n\n if (this.pendingDialogStack.length >= allowed) {\n return false;\n }\n\n if (this.pendingDialogStack.unshift(dpi) === 1) {\n this.blockDocument();\n }\n\n this.updateStacking();\n return true;\n};\n/**\n * @param {!dialogPolyfillInfo} dpi\n */\n\n\ndialogPolyfill.DialogManager.prototype.removeDialog = function (dpi) {\n var index = this.pendingDialogStack.indexOf(dpi);\n\n if (index === -1) {\n return;\n }\n\n this.pendingDialogStack.splice(index, 1);\n\n if (this.pendingDialogStack.length === 0) {\n this.unblockDocument();\n }\n\n this.updateStacking();\n};\n\ndialogPolyfill.dm = new dialogPolyfill.DialogManager();\ndialogPolyfill.formSubmitter = null;\ndialogPolyfill.imagemapUseValue = null;\n/**\n * Installs global handlers, such as click listers and native method overrides. These are needed\n * even if a no dialog is registered, as they deal with
.\n */\n\nif (window.HTMLDialogElement === undefined) {\n /**\n * If HTMLFormElement translates method=\"DIALOG\" into 'get', then replace the descriptor with\n * one that returns the correct value.\n */\n var testForm = document.createElement('form');\n testForm.setAttribute('method', 'dialog');\n\n if (testForm.method !== 'dialog') {\n var methodDescriptor = Object.getOwnPropertyDescriptor(HTMLFormElement.prototype, 'method');\n\n if (methodDescriptor) {\n // nb. Some older iOS and older PhantomJS fail to return the descriptor. Don't do anything\n // and don't bother to update the element.\n var realGet = methodDescriptor.get;\n\n methodDescriptor.get = function () {\n if (isFormMethodDialog(this)) {\n return 'dialog';\n }\n\n return realGet.call(this);\n };\n\n var realSet = methodDescriptor.set;\n /** @this {HTMLElement} */\n\n methodDescriptor.set = function (v) {\n if (typeof v === 'string' && v.toLowerCase() === 'dialog') {\n return this.setAttribute('method', v);\n }\n\n return realSet.call(this, v);\n };\n\n Object.defineProperty(HTMLFormElement.prototype, 'method', methodDescriptor);\n }\n }\n /**\n * Global 'click' handler, to capture the or