mis-crystal-design-system 2.0.1 → 2.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/async-search-dropdown/async-dropdown.component.d.ts +60 -0
- package/async-search-dropdown/async-dropdown.module.d.ts +2 -0
- package/{src/datepicker/sub-components/chronos → async-search-dropdown}/index.d.ts +0 -0
- package/async-search-dropdown/mis-crystal-design-system-async-search-dropdown.d.ts +4 -0
- package/async-search-dropdown/mis-crystal-design-system-async-search-dropdown.metadata.json +1 -0
- package/async-search-dropdown/package.json +11 -0
- package/async-search-dropdown/public_api.d.ts +2 -0
- package/bundles/mis-crystal-design-system-async-search-dropdown.umd.js +211 -0
- package/bundles/mis-crystal-design-system-async-search-dropdown.umd.js.map +1 -0
- package/bundles/mis-crystal-design-system-async-search-dropdown.umd.min.js +2 -0
- package/bundles/mis-crystal-design-system-async-search-dropdown.umd.min.js.map +1 -0
- package/bundles/mis-crystal-design-system-button.umd.js +134 -0
- package/bundles/mis-crystal-design-system-button.umd.js.map +1 -0
- package/bundles/mis-crystal-design-system-button.umd.min.js +2 -0
- package/bundles/mis-crystal-design-system-button.umd.min.js.map +1 -0
- package/bundles/mis-crystal-design-system-checkbox.umd.js +128 -0
- package/bundles/mis-crystal-design-system-checkbox.umd.js.map +1 -0
- package/bundles/mis-crystal-design-system-checkbox.umd.min.js +2 -0
- package/bundles/mis-crystal-design-system-checkbox.umd.min.js.map +1 -0
- package/bundles/mis-crystal-design-system-chip.umd.js +65 -0
- package/bundles/mis-crystal-design-system-chip.umd.js.map +1 -0
- package/bundles/mis-crystal-design-system-chip.umd.min.js +2 -0
- package/bundles/mis-crystal-design-system-chip.umd.min.js.map +1 -0
- package/bundles/{mis-crystal-design-system-src-datepicker.umd.js → mis-crystal-design-system-datepicker.umd.js} +3 -3
- package/bundles/mis-crystal-design-system-datepicker.umd.js.map +1 -0
- package/bundles/{mis-crystal-design-system-src-datepicker.umd.min.js → mis-crystal-design-system-datepicker.umd.min.js} +2 -2
- package/bundles/{mis-crystal-design-system-src-datepicker.umd.min.js.map → mis-crystal-design-system-datepicker.umd.min.js.map} +1 -1
- package/bundles/mis-crystal-design-system-drawer.umd.js +172 -0
- package/bundles/mis-crystal-design-system-drawer.umd.js.map +1 -0
- package/bundles/mis-crystal-design-system-drawer.umd.min.js +2 -0
- package/bundles/mis-crystal-design-system-drawer.umd.min.js.map +1 -0
- package/bundles/mis-crystal-design-system-dropdown.umd.js +119 -0
- package/bundles/mis-crystal-design-system-dropdown.umd.js.map +1 -0
- package/bundles/mis-crystal-design-system-dropdown.umd.min.js +2 -0
- package/bundles/mis-crystal-design-system-dropdown.umd.min.js.map +1 -0
- package/bundles/mis-crystal-design-system-fab.umd.js +98 -0
- package/bundles/mis-crystal-design-system-fab.umd.js.map +1 -0
- package/bundles/mis-crystal-design-system-fab.umd.min.js +2 -0
- package/bundles/mis-crystal-design-system-fab.umd.min.js.map +1 -0
- package/bundles/mis-crystal-design-system-input.umd.js +111 -0
- package/bundles/mis-crystal-design-system-input.umd.js.map +1 -0
- package/bundles/mis-crystal-design-system-input.umd.min.js +2 -0
- package/bundles/mis-crystal-design-system-input.umd.min.js.map +1 -0
- package/bundles/mis-crystal-design-system-loader.umd.js +54 -0
- package/bundles/mis-crystal-design-system-loader.umd.js.map +1 -0
- package/bundles/mis-crystal-design-system-loader.umd.min.js +2 -0
- package/bundles/mis-crystal-design-system-loader.umd.min.js.map +1 -0
- package/bundles/mis-crystal-design-system-modal.umd.js +165 -0
- package/bundles/mis-crystal-design-system-modal.umd.js.map +1 -0
- package/bundles/mis-crystal-design-system-modal.umd.min.js +2 -0
- package/bundles/mis-crystal-design-system-modal.umd.min.js.map +1 -0
- package/bundles/mis-crystal-design-system-multi-select-dropdown.umd.js +523 -0
- package/bundles/mis-crystal-design-system-multi-select-dropdown.umd.js.map +1 -0
- package/bundles/mis-crystal-design-system-multi-select-dropdown.umd.min.js +16 -0
- package/bundles/mis-crystal-design-system-multi-select-dropdown.umd.min.js.map +1 -0
- package/bundles/mis-crystal-design-system-nested-multi-select-dropdown.umd.js +597 -0
- package/bundles/mis-crystal-design-system-nested-multi-select-dropdown.umd.js.map +1 -0
- package/bundles/mis-crystal-design-system-nested-multi-select-dropdown.umd.min.js +16 -0
- package/bundles/mis-crystal-design-system-nested-multi-select-dropdown.umd.min.js.map +1 -0
- package/bundles/mis-crystal-design-system-radio-button.umd.js +78 -0
- package/bundles/mis-crystal-design-system-radio-button.umd.js.map +1 -0
- package/bundles/mis-crystal-design-system-radio-button.umd.min.js +2 -0
- package/bundles/mis-crystal-design-system-radio-button.umd.min.js.map +1 -0
- package/bundles/mis-crystal-design-system-switch.umd.js +80 -0
- package/bundles/mis-crystal-design-system-switch.umd.js.map +1 -0
- package/bundles/mis-crystal-design-system-switch.umd.min.js +2 -0
- package/bundles/mis-crystal-design-system-switch.umd.min.js.map +1 -0
- package/bundles/mis-crystal-design-system-table.umd.js +791 -0
- package/bundles/mis-crystal-design-system-table.umd.js.map +1 -0
- package/bundles/mis-crystal-design-system-table.umd.min.js +16 -0
- package/bundles/mis-crystal-design-system-table.umd.min.js.map +1 -0
- package/bundles/mis-crystal-design-system-toast.umd.js +207 -0
- package/bundles/mis-crystal-design-system-toast.umd.js.map +1 -0
- package/bundles/mis-crystal-design-system-toast.umd.min.js +2 -0
- package/bundles/mis-crystal-design-system-toast.umd.min.js.map +1 -0
- package/bundles/mis-crystal-design-system-tooltip.umd.js +228 -0
- package/bundles/mis-crystal-design-system-tooltip.umd.js.map +1 -0
- package/bundles/mis-crystal-design-system-tooltip.umd.min.js +2 -0
- package/bundles/mis-crystal-design-system-tooltip.umd.min.js.map +1 -0
- package/bundles/mis-crystal-design-system.umd.js +28 -15960
- package/bundles/mis-crystal-design-system.umd.js.map +1 -1
- package/bundles/mis-crystal-design-system.umd.min.js +1 -67
- package/bundles/mis-crystal-design-system.umd.min.js.map +1 -1
- package/button/button.directive.d.ts +12 -0
- package/button/mis-crystal-design-system-button.d.ts +5 -0
- package/button/mis-crystal-design-system-button.metadata.json +1 -0
- package/button/package.json +11 -0
- package/checkbox/mis-crystal-design-system-checkbox.d.ts +4 -0
- package/checkbox/mis-crystal-design-system-checkbox.metadata.json +1 -0
- package/checkbox/package.json +11 -0
- package/chip/mis-crystal-design-system-chip.d.ts +4 -0
- package/chip/mis-crystal-design-system-chip.metadata.json +1 -0
- package/chip/package.json +11 -0
- package/{src/datepicker/mis-crystal-design-system-src-datepicker.d.ts → datepicker/mis-crystal-design-system-datepicker.d.ts} +1 -1
- package/{src/datepicker/mis-crystal-design-system-src-datepicker.metadata.json → datepicker/mis-crystal-design-system-datepicker.metadata.json} +1 -1
- package/datepicker/package.json +11 -0
- package/drawer/mis-crystal-design-system-drawer.d.ts +5 -0
- package/drawer/mis-crystal-design-system-drawer.metadata.json +1 -0
- package/drawer/package.json +11 -0
- package/dropdown/mis-crystal-design-system-dropdown.d.ts +4 -0
- package/dropdown/mis-crystal-design-system-dropdown.metadata.json +1 -0
- package/dropdown/package.json +11 -0
- package/esm2015/async-search-dropdown/async-dropdown.component.js +176 -0
- package/esm2015/async-search-dropdown/async-dropdown.module.js +15 -0
- package/esm2015/async-search-dropdown/index.js +2 -0
- package/esm2015/async-search-dropdown/mis-crystal-design-system-async-search-dropdown.js +5 -0
- package/esm2015/async-search-dropdown/public_api.js +3 -0
- package/esm2015/button/button.component.js +1 -1
- package/esm2015/button/button.directive.js +57 -0
- package/esm2015/button/button.module.js +4 -3
- package/esm2015/button/index.js +1 -1
- package/esm2015/button/mis-crystal-design-system-button.js +6 -0
- package/esm2015/button/public_api.js +1 -1
- package/esm2015/checkbox/checkbox.component.js +1 -1
- package/esm2015/checkbox/checkbox.module.js +1 -1
- package/esm2015/checkbox/index.js +1 -1
- package/esm2015/checkbox/mis-crystal-design-system-checkbox.js +5 -0
- package/esm2015/checkbox/public_api.js +1 -1
- package/esm2015/chip/chip.component.js +1 -1
- package/esm2015/chip/chip.module.js +1 -1
- package/esm2015/chip/index.js +1 -1
- package/esm2015/chip/mis-crystal-design-system-chip.js +5 -0
- package/esm2015/chip/public_api.js +1 -1
- package/esm2015/datepicker/base/bs-datepicker-container.js +1 -1
- package/esm2015/datepicker/bs-datepicker-inline.component.js +1 -1
- package/esm2015/datepicker/bs-datepicker-inline.config.js +1 -1
- package/esm2015/datepicker/bs-datepicker-input.directive.js +1 -1
- package/esm2015/datepicker/bs-datepicker.component.js +1 -1
- package/esm2015/datepicker/bs-datepicker.config.js +1 -1
- package/esm2015/datepicker/bs-datepicker.module.js +1 -1
- package/esm2015/datepicker/bs-daterangepicker-inline.component.js +1 -1
- package/esm2015/datepicker/bs-daterangepicker-inline.config.js +1 -1
- package/esm2015/datepicker/bs-daterangepicker-input.directive.js +1 -1
- package/esm2015/datepicker/bs-daterangepicker.component.js +1 -1
- package/esm2015/datepicker/bs-daterangepicker.config.js +1 -1
- package/esm2015/datepicker/bs-locale.service.js +1 -1
- package/esm2015/datepicker/date-formatter.js +1 -1
- package/esm2015/datepicker/datepicker-animations.js +1 -1
- package/esm2015/datepicker/datepicker-inner.component.js +1 -1
- package/esm2015/datepicker/datepicker.component.js +1 -1
- package/esm2015/datepicker/datepicker.config.js +1 -1
- package/esm2015/datepicker/datepicker.module.js +1 -1
- package/esm2015/datepicker/daypicker.component.js +1 -1
- package/esm2015/datepicker/engine/calc-days-calendar.js +1 -1
- package/esm2015/datepicker/engine/flag-days-calendar.js +1 -1
- package/esm2015/datepicker/engine/flag-months-calendar.js +1 -1
- package/esm2015/datepicker/engine/flag-years-calendar.js +1 -1
- package/esm2015/datepicker/engine/format-days-calendar.js +1 -1
- package/esm2015/datepicker/engine/format-months-calendar.js +1 -1
- package/esm2015/datepicker/engine/format-years-calendar.js +1 -1
- package/esm2015/datepicker/engine/view-mode.js +1 -1
- package/esm2015/datepicker/index.js +1 -1
- package/esm2015/datepicker/mis-crystal-design-system-datepicker.js +25 -0
- package/esm2015/datepicker/models/index.js +1 -1
- package/esm2015/datepicker/monthpicker.component.js +1 -1
- package/esm2015/datepicker/public_api.js +1 -1
- package/esm2015/datepicker/reducer/_defaults.js +1 -1
- package/esm2015/datepicker/reducer/bs-datepicker.actions.js +1 -1
- package/esm2015/datepicker/reducer/bs-datepicker.effects.js +1 -1
- package/esm2015/datepicker/reducer/bs-datepicker.reducer.js +1 -1
- package/esm2015/datepicker/reducer/bs-datepicker.state.js +1 -1
- package/esm2015/datepicker/reducer/bs-datepicker.store.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/create/check-overflow.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/create/clone.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/create/date-from-array.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/create/from-anything.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/create/from-array.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/create/from-object.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/create/from-string-and-array.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/create/from-string-and-format.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/create/from-string.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/create/local.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/create/parsing-flags.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/create/parsing.types.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/create/valid.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/duration/bubble.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/duration/constructor.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/duration/create.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/duration/humanize.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/duration/valid.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/format/format.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/format.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/i18n/ar.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/i18n/bg.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/i18n/ca.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/i18n/cs.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/i18n/da.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/i18n/de.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/i18n/en-gb.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/i18n/es-do.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/i18n/es-us.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/i18n/es.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/i18n/et.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/i18n/fi.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/i18n/fr.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/i18n/gl.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/i18n/he.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/i18n/hi.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/i18n/hr.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/i18n/hu.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/i18n/id.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/i18n/it.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/i18n/ja.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/i18n/ka.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/i18n/kk.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/i18n/ko.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/i18n/lt.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/i18n/lv.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/i18n/mn.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/i18n/nb.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/i18n/nl-be.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/i18n/nl.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/i18n/pl.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/i18n/pt-br.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/i18n/ro.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/i18n/ru.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/i18n/sk.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/i18n/sl.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/i18n/sq.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/i18n/sv.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/i18n/th-be.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/i18n/th.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/i18n/tr.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/i18n/uk.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/i18n/vi.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/i18n/zh-cn.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/index.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/locale/calendar.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/locale/locale.class.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/locale/locale.defaults.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/locale/locales.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/moment/add-subtract.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/moment/calendar.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/moment/diff.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/moment/min-max.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/parse/regex.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/parse/token.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/public_api.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/test/chain.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/types.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/units/aliases.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/units/constants.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/units/day-of-month.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/units/day-of-week.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/units/day-of-year.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/units/hour.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/units/index.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/units/millisecond.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/units/minute.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/units/month.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/units/offset.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/units/priorities.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/units/quarter.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/units/second.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/units/timestamp.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/units/timezone.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/units/week-calendar-utils.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/units/week-year.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/units/week.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/units/year.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/utils/abs-ceil.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/utils/abs-round.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/utils/compare-arrays.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/utils/date-compare.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/utils/date-getters.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/utils/date-setters.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/utils/defaults.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/utils/start-end-of.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/utils/type-checks.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/utils/zero-fill.js +1 -1
- package/esm2015/datepicker/sub-components/chronos/utils.js +1 -1
- package/esm2015/datepicker/sub-components/component-loader/bs-component-ref.class.js +1 -1
- package/esm2015/datepicker/sub-components/component-loader/component-loader.class.js +1 -1
- package/esm2015/datepicker/sub-components/component-loader/component-loader.factory.js +1 -1
- package/esm2015/datepicker/sub-components/component-loader/content-ref.class.js +1 -1
- package/esm2015/datepicker/sub-components/component-loader/index.js +1 -1
- package/esm2015/datepicker/sub-components/component-loader/listen-options.model.js +1 -1
- package/esm2015/datepicker/sub-components/component-loader/public_api.js +1 -1
- package/esm2015/datepicker/sub-components/mini-ngrx/index.js +1 -1
- package/esm2015/datepicker/sub-components/mini-ngrx/public_api.js +1 -1
- package/esm2015/datepicker/sub-components/mini-ngrx/state.class.js +1 -1
- package/esm2015/datepicker/sub-components/mini-ngrx/store.class.js +1 -1
- package/esm2015/datepicker/sub-components/positioning/index.js +1 -1
- package/esm2015/datepicker/sub-components/positioning/models/index.js +1 -1
- package/esm2015/datepicker/sub-components/positioning/modifiers/arrow.js +1 -1
- package/esm2015/datepicker/sub-components/positioning/modifiers/flip.js +1 -1
- package/esm2015/datepicker/sub-components/positioning/modifiers/index.js +1 -1
- package/esm2015/datepicker/sub-components/positioning/modifiers/initData.js +1 -1
- package/esm2015/datepicker/sub-components/positioning/modifiers/preventOverflow.js +1 -1
- package/esm2015/datepicker/sub-components/positioning/modifiers/shift.js +1 -1
- package/esm2015/datepicker/sub-components/positioning/ng-positioning.js +1 -1
- package/esm2015/datepicker/sub-components/positioning/positioning.service.js +1 -1
- package/esm2015/datepicker/sub-components/positioning/public_api.js +1 -1
- package/esm2015/datepicker/sub-components/positioning/utils/computeAutoPlacement.js +1 -1
- package/esm2015/datepicker/sub-components/positioning/utils/findCommonOffsetParent.js +1 -1
- package/esm2015/datepicker/sub-components/positioning/utils/getBordersSize.js +1 -1
- package/esm2015/datepicker/sub-components/positioning/utils/getBoundaries.js +1 -1
- package/esm2015/datepicker/sub-components/positioning/utils/getBoundingClientRect.js +1 -1
- package/esm2015/datepicker/sub-components/positioning/utils/getClientRect.js +1 -1
- package/esm2015/datepicker/sub-components/positioning/utils/getFixedPositionOffsetParent.js +1 -1
- package/esm2015/datepicker/sub-components/positioning/utils/getOffsetParent.js +1 -1
- package/esm2015/datepicker/sub-components/positioning/utils/getOffsetRectRelativeToArbitraryNode.js +1 -1
- package/esm2015/datepicker/sub-components/positioning/utils/getOffsets.js +1 -1
- package/esm2015/datepicker/sub-components/positioning/utils/getOppositePlacement.js +1 -1
- package/esm2015/datepicker/sub-components/positioning/utils/getOppositeVariation.js +1 -1
- package/esm2015/datepicker/sub-components/positioning/utils/getOuterSizes.js +1 -1
- package/esm2015/datepicker/sub-components/positioning/utils/getParentNode.js +1 -1
- package/esm2015/datepicker/sub-components/positioning/utils/getReferenceOffsets.js +1 -1
- package/esm2015/datepicker/sub-components/positioning/utils/getRoot.js +1 -1
- package/esm2015/datepicker/sub-components/positioning/utils/getScroll.js +1 -1
- package/esm2015/datepicker/sub-components/positioning/utils/getScrollParent.js +1 -1
- package/esm2015/datepicker/sub-components/positioning/utils/getStyleComputedProperty.js +1 -1
- package/esm2015/datepicker/sub-components/positioning/utils/getTargetOffsets.js +1 -1
- package/esm2015/datepicker/sub-components/positioning/utils/getViewportOffsetRectRelativeToArtbitraryNode.js +1 -1
- package/esm2015/datepicker/sub-components/positioning/utils/getWindowSizes.js +1 -1
- package/esm2015/datepicker/sub-components/positioning/utils/includeScroll.js +1 -1
- package/esm2015/datepicker/sub-components/positioning/utils/index.js +1 -1
- package/esm2015/datepicker/sub-components/positioning/utils/isBrowser.js +1 -1
- package/esm2015/datepicker/sub-components/positioning/utils/isFixed.js +1 -1
- package/esm2015/datepicker/sub-components/positioning/utils/isIE.js +1 -1
- package/esm2015/datepicker/sub-components/positioning/utils/isModifierEnabled.js +1 -1
- package/esm2015/datepicker/sub-components/positioning/utils/isNumeric.js +1 -1
- package/esm2015/datepicker/sub-components/positioning/utils/isOffsetContainer.js +1 -1
- package/esm2015/datepicker/sub-components/positioning/utils/setStyles.js +1 -1
- package/esm2015/datepicker/sub-components/positioning/utils/updateContainerClass.js +1 -1
- package/esm2015/datepicker/sub-components/tooltip/index.js +1 -1
- package/esm2015/datepicker/sub-components/tooltip/public_api.js +1 -1
- package/esm2015/datepicker/sub-components/tooltip/tooltip-container.component.js +1 -1
- package/esm2015/datepicker/sub-components/tooltip/tooltip.config.js +1 -1
- package/esm2015/datepicker/sub-components/tooltip/tooltip.directive.js +1 -1
- package/esm2015/datepicker/sub-components/tooltip/tooltip.module.js +1 -1
- package/esm2015/datepicker/sub-components/utils/decorators.js +1 -1
- package/esm2015/datepicker/sub-components/utils/facade/browser.js +1 -1
- package/esm2015/datepicker/sub-components/utils/index.js +1 -1
- package/esm2015/datepicker/sub-components/utils/linked-list.class.js +1 -1
- package/esm2015/datepicker/sub-components/utils/public_api.js +1 -1
- package/esm2015/datepicker/sub-components/utils/theme-provider.js +1 -1
- package/esm2015/datepicker/sub-components/utils/trigger.class.js +1 -1
- package/esm2015/datepicker/sub-components/utils/triggers.js +1 -1
- package/esm2015/datepicker/sub-components/utils/utils.class.js +1 -1
- package/esm2015/datepicker/sub-components/utils/warn-once.js +1 -1
- package/esm2015/datepicker/themes/bs/bs-calendar-layout.component.js +1 -1
- package/esm2015/datepicker/themes/bs/bs-current-date-view.component.js +1 -1
- package/esm2015/datepicker/themes/bs/bs-custom-dates-view.component.js +1 -1
- package/esm2015/datepicker/themes/bs/bs-datepicker-container.component.js +1 -1
- package/esm2015/datepicker/themes/bs/bs-datepicker-day-decorator.directive.js +1 -1
- package/esm2015/datepicker/themes/bs/bs-datepicker-inline-container.component.js +1 -1
- package/esm2015/datepicker/themes/bs/bs-datepicker-navigation-view.component.js +1 -1
- package/esm2015/datepicker/themes/bs/bs-daterangepicker-container.component.js +1 -1
- package/esm2015/datepicker/themes/bs/bs-daterangepicker-inline-container.component.js +1 -1
- package/esm2015/datepicker/themes/bs/bs-days-calendar-view.component.js +1 -1
- package/esm2015/datepicker/themes/bs/bs-months-calendar-view.component.js +1 -1
- package/esm2015/datepicker/themes/bs/bs-timepicker-view.component.js +1 -1
- package/esm2015/datepicker/themes/bs/bs-years-calendar-view.component.js +1 -1
- package/esm2015/datepicker/utils/bs-calendar-utils.js +1 -1
- package/esm2015/datepicker/utils/matrix-utils.js +1 -1
- package/esm2015/datepicker/yearpicker.component.js +1 -1
- package/esm2015/drawer/drawer-body/drawer-body.component.js +1 -1
- package/esm2015/drawer/drawer-constants.js +1 -1
- package/esm2015/drawer/drawer-ref.js +1 -1
- package/esm2015/drawer/drawer.module.js +1 -1
- package/esm2015/drawer/drawer.service.js +1 -1
- package/esm2015/drawer/index.js +1 -1
- package/esm2015/drawer/mis-crystal-design-system-drawer.js +6 -0
- package/esm2015/drawer/public_api.js +1 -1
- package/esm2015/dropdown/dropdown.component.js +1 -1
- package/esm2015/dropdown/dropdown.module.js +1 -1
- package/esm2015/dropdown/index.js +1 -1
- package/esm2015/dropdown/mis-crystal-design-system-dropdown.js +5 -0
- package/esm2015/dropdown/public_api.js +1 -1
- package/esm2015/fab/fab.component.js +1 -1
- package/esm2015/fab/fab.module.js +1 -1
- package/esm2015/fab/index.js +1 -1
- package/esm2015/fab/mis-crystal-design-system-fab.js +5 -0
- package/esm2015/fab/public_api.js +1 -1
- package/esm2015/index.js +2 -0
- package/esm2015/input/directives/input/input.directive.js +38 -0
- package/esm2015/input/index.js +2 -0
- package/esm2015/input/mis-crystal-design-system-input.js +5 -0
- package/esm2015/input/mis-input.component.js +40 -0
- package/esm2015/input/mis-input.module.js +15 -0
- package/esm2015/input/public_api.js +4 -0
- package/esm2015/loader/index.js +1 -1
- package/esm2015/loader/loader.component.js +1 -1
- package/esm2015/loader/loader.module.js +1 -1
- package/esm2015/loader/mis-crystal-design-system-loader.js +5 -0
- package/esm2015/loader/public_api.js +1 -1
- package/esm2015/mis-crystal-design-system.js +2 -2
- package/esm2015/modal/index.js +2 -0
- package/esm2015/modal/mis-crystal-design-system-modal.js +6 -0
- package/esm2015/modal/modal-constants.js +4 -0
- package/esm2015/modal/modal-ref.js +16 -0
- package/esm2015/modal/modal.module.js +32 -0
- package/esm2015/modal/modal.service.js +72 -0
- package/esm2015/modal/module-wrapper/module-wrapper.component.js +33 -0
- package/esm2015/modal/public_api.js +5 -0
- package/esm2015/multi-select-dropdown/index.js +1 -1
- package/esm2015/multi-select-dropdown/mis-crystal-design-system-multi-select-dropdown.js +5 -0
- package/esm2015/multi-select-dropdown/multi-select-dropdown.component.js +1 -1
- package/esm2015/multi-select-dropdown/multi-select-dropdown.module.js +3 -3
- package/esm2015/multi-select-dropdown/public_api.js +1 -1
- package/esm2015/nested-multi-select-dropdown/index.js +1 -1
- package/esm2015/nested-multi-select-dropdown/mis-crystal-design-system-nested-multi-select-dropdown.js +5 -0
- package/esm2015/nested-multi-select-dropdown/nested-multi-select-dropdown.component.js +1 -1
- package/esm2015/nested-multi-select-dropdown/nested-multi-select-dropdown.module.js +3 -3
- package/esm2015/nested-multi-select-dropdown/public_api.js +1 -1
- package/esm2015/public-api.js +17 -16
- package/esm2015/radio-button/index.js +1 -1
- package/esm2015/radio-button/mis-crystal-design-system-radio-button.js +5 -0
- package/esm2015/radio-button/public_api.js +1 -1
- package/esm2015/radio-button/radio-button.component.js +1 -1
- package/esm2015/radio-button/radio-button.module.js +1 -1
- package/esm2015/switch/index.js +1 -1
- package/esm2015/switch/mis-crystal-design-system-switch.js +5 -0
- package/esm2015/switch/public_api.js +1 -1
- package/esm2015/switch/switch.component.js +1 -1
- package/esm2015/switch/switch.module.js +1 -1
- package/esm2015/table/custom-table-cell.directive.js +3 -2
- package/esm2015/table/filter/filter.component.js +18 -22
- package/esm2015/table/index.js +1 -1
- package/esm2015/table/mis-crystal-design-system-table.js +6 -0
- package/esm2015/table/public_api.js +1 -2
- package/esm2015/table/sub-table/sub-table.component.js +3 -3
- package/esm2015/table/table.component.js +7 -10
- package/esm2015/table/table.module.js +4 -4
- package/esm2015/toast/index.js +1 -1
- package/esm2015/toast/mis-crystal-design-system-toast.js +7 -0
- package/esm2015/toast/public_api.js +1 -1
- package/esm2015/toast/toast.component.js +1 -1
- package/esm2015/toast/toast.data.service.js +1 -1
- package/esm2015/toast/toast.module.js +1 -1
- package/esm2015/toast/toast.service.js +1 -1
- package/esm2015/tooltip/index.js +1 -1
- package/esm2015/tooltip/mis-crystal-design-system-tooltip.js +5 -0
- package/esm2015/tooltip/public_api.js +1 -1
- package/esm2015/tooltip/tooltip.component.js +1 -1
- package/esm2015/tooltip/tooltip.directive.js +1 -1
- package/esm2015/tooltip/tooltip.module.js +1 -1
- package/fab/mis-crystal-design-system-fab.d.ts +4 -0
- package/fab/mis-crystal-design-system-fab.metadata.json +1 -0
- package/fab/package.json +11 -0
- package/fesm2015/mis-crystal-design-system-async-search-dropdown.js +194 -0
- package/fesm2015/mis-crystal-design-system-async-search-dropdown.js.map +1 -0
- package/fesm2015/mis-crystal-design-system-button.js +120 -0
- package/fesm2015/mis-crystal-design-system-button.js.map +1 -0
- package/fesm2015/mis-crystal-design-system-checkbox.js +101 -0
- package/fesm2015/mis-crystal-design-system-checkbox.js.map +1 -0
- package/fesm2015/mis-crystal-design-system-chip.js +53 -0
- package/fesm2015/mis-crystal-design-system-chip.js.map +1 -0
- package/fesm2015/{mis-crystal-design-system-src-datepicker.js → mis-crystal-design-system-datepicker.js} +1 -1
- package/fesm2015/mis-crystal-design-system-datepicker.js.map +1 -0
- package/fesm2015/mis-crystal-design-system-drawer.js +156 -0
- package/fesm2015/mis-crystal-design-system-drawer.js.map +1 -0
- package/fesm2015/mis-crystal-design-system-dropdown.js +108 -0
- package/fesm2015/mis-crystal-design-system-dropdown.js.map +1 -0
- package/fesm2015/mis-crystal-design-system-fab.js +87 -0
- package/fesm2015/mis-crystal-design-system-fab.js.map +1 -0
- package/fesm2015/mis-crystal-design-system-input.js +94 -0
- package/fesm2015/mis-crystal-design-system-input.js.map +1 -0
- package/fesm2015/mis-crystal-design-system-loader.js +42 -0
- package/fesm2015/mis-crystal-design-system-loader.js.map +1 -0
- package/fesm2015/mis-crystal-design-system-modal.js +151 -0
- package/fesm2015/mis-crystal-design-system-modal.js.map +1 -0
- package/fesm2015/mis-crystal-design-system-multi-select-dropdown.js +192 -0
- package/fesm2015/mis-crystal-design-system-multi-select-dropdown.js.map +1 -0
- package/fesm2015/mis-crystal-design-system-nested-multi-select-dropdown.js +246 -0
- package/fesm2015/mis-crystal-design-system-nested-multi-select-dropdown.js.map +1 -0
- package/fesm2015/mis-crystal-design-system-radio-button.js +67 -0
- package/fesm2015/mis-crystal-design-system-radio-button.js.map +1 -0
- package/fesm2015/mis-crystal-design-system-switch.js +61 -0
- package/fesm2015/mis-crystal-design-system-switch.js.map +1 -0
- package/fesm2015/mis-crystal-design-system-table.js +413 -0
- package/fesm2015/mis-crystal-design-system-table.js.map +1 -0
- package/fesm2015/mis-crystal-design-system-toast.js +179 -0
- package/fesm2015/mis-crystal-design-system-toast.js.map +1 -0
- package/fesm2015/mis-crystal-design-system-tooltip.js +186 -0
- package/fesm2015/mis-crystal-design-system-tooltip.js.map +1 -0
- package/fesm2015/mis-crystal-design-system.js +16 -15320
- package/fesm2015/mis-crystal-design-system.js.map +1 -1
- package/index.d.ts +1 -0
- package/input/directives/input/input.directive.d.ts +15 -0
- package/{src/datepicker/sub-components/component-loader → input}/index.d.ts +0 -0
- package/input/mis-crystal-design-system-input.d.ts +4 -0
- package/input/mis-crystal-design-system-input.metadata.json +1 -0
- package/input/mis-input.component.d.ts +15 -0
- package/input/mis-input.module.d.ts +2 -0
- package/input/package.json +11 -0
- package/input/public_api.d.ts +3 -0
- package/loader/mis-crystal-design-system-loader.d.ts +4 -0
- package/loader/mis-crystal-design-system-loader.metadata.json +1 -0
- package/loader/package.json +11 -0
- package/mis-crystal-design-system.d.ts +1 -1
- package/mis-crystal-design-system.metadata.json +1 -1
- package/{src/datepicker/sub-components/mini-ngrx → modal}/index.d.ts +0 -0
- package/modal/mis-crystal-design-system-modal.d.ts +5 -0
- package/modal/mis-crystal-design-system-modal.metadata.json +1 -0
- package/modal/modal-constants.d.ts +3 -0
- package/modal/modal-ref.d.ts +9 -0
- package/modal/modal.module.d.ts +5 -0
- package/modal/modal.service.d.ts +22 -0
- package/modal/module-wrapper/module-wrapper.component.d.ts +9 -0
- package/modal/package.json +11 -0
- package/modal/public_api.d.ts +4 -0
- package/multi-select-dropdown/mis-crystal-design-system-multi-select-dropdown.d.ts +4 -0
- package/multi-select-dropdown/mis-crystal-design-system-multi-select-dropdown.metadata.json +1 -0
- package/multi-select-dropdown/package.json +11 -0
- package/nested-multi-select-dropdown/mis-crystal-design-system-nested-multi-select-dropdown.d.ts +4 -0
- package/nested-multi-select-dropdown/mis-crystal-design-system-nested-multi-select-dropdown.metadata.json +1 -0
- package/nested-multi-select-dropdown/package.json +11 -0
- package/package.json +1 -1
- package/projects/mis-components/button/button.directive.scss +69 -0
- package/{drawer → projects/mis-components/drawer}/drawer.scss +0 -0
- package/projects/mis-components/modal/modal.scss +9 -0
- package/public-api.d.ts +2 -15
- package/radio-button/mis-crystal-design-system-radio-button.d.ts +4 -0
- package/radio-button/mis-crystal-design-system-radio-button.metadata.json +1 -0
- package/radio-button/package.json +11 -0
- package/switch/mis-crystal-design-system-switch.d.ts +4 -0
- package/switch/mis-crystal-design-system-switch.metadata.json +1 -0
- package/switch/package.json +11 -0
- package/table/filter/filter.component.d.ts +3 -5
- package/table/mis-crystal-design-system-table.d.ts +5 -0
- package/table/mis-crystal-design-system-table.metadata.json +1 -0
- package/table/package.json +11 -0
- package/table/public_api.d.ts +1 -1
- package/table/sub-table/sub-table.component.d.ts +1 -0
- package/table/table.component.d.ts +2 -5
- package/toast/mis-crystal-design-system-toast.d.ts +6 -0
- package/toast/mis-crystal-design-system-toast.metadata.json +1 -0
- package/toast/package.json +11 -0
- package/tooltip/mis-crystal-design-system-tooltip.d.ts +4 -0
- package/tooltip/mis-crystal-design-system-tooltip.metadata.json +1 -0
- package/tooltip/package.json +11 -0
- package/bundles/mis-crystal-design-system-src-datepicker.umd.js.map +0 -1
- package/esm2015/src/datepicker/base/bs-datepicker-container.js +0 -47
- package/esm2015/src/datepicker/bs-datepicker-inline.component.js +0 -132
- package/esm2015/src/datepicker/bs-datepicker-inline.config.js +0 -12
- package/esm2015/src/datepicker/bs-datepicker-input.directive.js +0 -159
- package/esm2015/src/datepicker/bs-datepicker.component.js +0 -238
- package/esm2015/src/datepicker/bs-datepicker.config.js +0 -85
- package/esm2015/src/datepicker/bs-datepicker.module.js +0 -97
- package/esm2015/src/datepicker/bs-daterangepicker-inline.component.js +0 -129
- package/esm2015/src/datepicker/bs-daterangepicker-inline.config.js +0 -19
- package/esm2015/src/datepicker/bs-daterangepicker-input.directive.js +0 -191
- package/esm2015/src/datepicker/bs-daterangepicker.component.js +0 -227
- package/esm2015/src/datepicker/bs-daterangepicker.config.js +0 -17
- package/esm2015/src/datepicker/bs-locale.service.js +0 -28
- package/esm2015/src/datepicker/date-formatter.js +0 -7
- package/esm2015/src/datepicker/datepicker-animations.js +0 -16
- package/esm2015/src/datepicker/datepicker-inner.component.js +0 -282
- package/esm2015/src/datepicker/datepicker.component.js +0 -140
- package/esm2015/src/datepicker/datepicker.config.js +0 -30
- package/esm2015/src/datepicker/datepicker.module.js +0 -35
- package/esm2015/src/datepicker/daypicker.component.js +0 -174
- package/esm2015/src/datepicker/engine/calc-days-calendar.js +0 -19
- package/esm2015/src/datepicker/engine/flag-days-calendar.js +0 -91
- package/esm2015/src/datepicker/engine/flag-months-calendar.js +0 -41
- package/esm2015/src/datepicker/engine/flag-years-calendar.js +0 -39
- package/esm2015/src/datepicker/engine/format-days-calendar.js +0 -29
- package/esm2015/src/datepicker/engine/format-months-calendar.js +0 -19
- package/esm2015/src/datepicker/engine/format-years-calendar.js +0 -35
- package/esm2015/src/datepicker/engine/view-mode.js +0 -4
- package/esm2015/src/datepicker/mis-crystal-design-system-src-datepicker.js +0 -25
- package/esm2015/src/datepicker/models/index.js +0 -9
- package/esm2015/src/datepicker/monthpicker.component.js +0 -87
- package/esm2015/src/datepicker/public_api.js +0 -26
- package/esm2015/src/datepicker/reducer/_defaults.js +0 -5
- package/esm2015/src/datepicker/reducer/bs-datepicker.actions.js +0 -132
- package/esm2015/src/datepicker/reducer/bs-datepicker.effects.js +0 -170
- package/esm2015/src/datepicker/reducer/bs-datepicker.reducer.js +0 -302
- package/esm2015/src/datepicker/reducer/bs-datepicker.state.js +0 -12
- package/esm2015/src/datepicker/reducer/bs-datepicker.store.js +0 -19
- package/esm2015/src/datepicker/sub-components/chronos/create/check-overflow.js +0 -30
- package/esm2015/src/datepicker/sub-components/chronos/create/clone.js +0 -6
- package/esm2015/src/datepicker/sub-components/chronos/create/date-from-array.js +0 -17
- package/esm2015/src/datepicker/sub-components/chronos/create/from-anything.js +0 -107
- package/esm2015/src/datepicker/sub-components/chronos/create/from-array.js +0 -136
- package/esm2015/src/datepicker/sub-components/chronos/create/from-object.js +0 -17
- package/esm2015/src/datepicker/sub-components/chronos/create/from-string-and-array.js +0 -38
- package/esm2015/src/datepicker/sub-components/chronos/create/from-string-and-format.js +0 -106
- package/esm2015/src/datepicker/sub-components/chronos/create/from-string.js +0 -227
- package/esm2015/src/datepicker/sub-components/chronos/create/local.js +0 -16
- package/esm2015/src/datepicker/sub-components/chronos/create/parsing-flags.js +0 -26
- package/esm2015/src/datepicker/sub-components/chronos/create/parsing.types.js +0 -2
- package/esm2015/src/datepicker/sub-components/chronos/create/valid.js +0 -42
- package/esm2015/src/datepicker/sub-components/chronos/duration/bubble.js +0 -47
- package/esm2015/src/datepicker/sub-components/chronos/duration/constructor.js +0 -130
- package/esm2015/src/datepicker/sub-components/chronos/duration/create.js +0 -113
- package/esm2015/src/datepicker/sub-components/chronos/duration/humanize.js +0 -80
- package/esm2015/src/datepicker/sub-components/chronos/duration/valid.js +0 -45
- package/esm2015/src/datepicker/sub-components/chronos/format/format.js +0 -51
- package/esm2015/src/datepicker/sub-components/chronos/format.js +0 -46
- package/esm2015/src/datepicker/sub-components/chronos/i18n/ar.js +0 -131
- package/esm2015/src/datepicker/sub-components/chronos/i18n/bg.js +0 -96
- package/esm2015/src/datepicker/sub-components/chronos/i18n/ca.js +0 -91
- package/esm2015/src/datepicker/sub-components/chronos/i18n/cs.js +0 -181
- package/esm2015/src/datepicker/sub-components/chronos/i18n/da.js +0 -50
- package/esm2015/src/datepicker/sub-components/chronos/i18n/de.js +0 -72
- package/esm2015/src/datepicker/sub-components/chronos/i18n/en-gb.js +0 -61
- package/esm2015/src/datepicker/sub-components/chronos/i18n/es-do.js +0 -85
- package/esm2015/src/datepicker/sub-components/chronos/i18n/es-us.js +0 -79
- package/esm2015/src/datepicker/sub-components/chronos/i18n/es.js +0 -84
- package/esm2015/src/datepicker/sub-components/chronos/i18n/et.js +0 -75
- package/esm2015/src/datepicker/sub-components/chronos/i18n/fi.js +0 -100
- package/esm2015/src/datepicker/sub-components/chronos/i18n/fr.js +0 -76
- package/esm2015/src/datepicker/sub-components/chronos/i18n/gl.js +0 -84
- package/esm2015/src/datepicker/sub-components/chronos/i18n/he.js +0 -98
- package/esm2015/src/datepicker/sub-components/chronos/i18n/hi.js +0 -124
- package/esm2015/src/datepicker/sub-components/chronos/i18n/hr.js +0 -62
- package/esm2015/src/datepicker/sub-components/chronos/i18n/hu.js +0 -104
- package/esm2015/src/datepicker/sub-components/chronos/i18n/id.js +0 -83
- package/esm2015/src/datepicker/sub-components/chronos/i18n/it.js +0 -65
- package/esm2015/src/datepicker/sub-components/chronos/i18n/ja.js +0 -75
- package/esm2015/src/datepicker/sub-components/chronos/i18n/ka.js +0 -87
- package/esm2015/src/datepicker/sub-components/chronos/i18n/kk.js +0 -76
- package/esm2015/src/datepicker/sub-components/chronos/i18n/ko.js +0 -77
- package/esm2015/src/datepicker/sub-components/chronos/i18n/lt.js +0 -116
- package/esm2015/src/datepicker/sub-components/chronos/i18n/lv.js +0 -56
- package/esm2015/src/datepicker/sub-components/chronos/i18n/mn.js +0 -99
- package/esm2015/src/datepicker/sub-components/chronos/i18n/nb.js +0 -53
- package/esm2015/src/datepicker/sub-components/chronos/i18n/nl-be.js +0 -81
- package/esm2015/src/datepicker/sub-components/chronos/i18n/nl.js +0 -80
- package/esm2015/src/datepicker/sub-components/chronos/i18n/pl.js +0 -126
- package/esm2015/src/datepicker/sub-components/chronos/i18n/pt-br.js +0 -56
- package/esm2015/src/datepicker/sub-components/chronos/i18n/ro.js +0 -66
- package/esm2015/src/datepicker/sub-components/chronos/i18n/ru.js +0 -181
- package/esm2015/src/datepicker/sub-components/chronos/i18n/sk.js +0 -157
- package/esm2015/src/datepicker/sub-components/chronos/i18n/sl.js +0 -184
- package/esm2015/src/datepicker/sub-components/chronos/i18n/sq.js +0 -54
- package/esm2015/src/datepicker/sub-components/chronos/i18n/sv.js +0 -63
- package/esm2015/src/datepicker/sub-components/chronos/i18n/th-be.js +0 -74
- package/esm2015/src/datepicker/sub-components/chronos/i18n/th.js +0 -59
- package/esm2015/src/datepicker/sub-components/chronos/i18n/tr.js +0 -82
- package/esm2015/src/datepicker/sub-components/chronos/i18n/uk.js +0 -147
- package/esm2015/src/datepicker/sub-components/chronos/i18n/vi.js +0 -74
- package/esm2015/src/datepicker/sub-components/chronos/i18n/zh-cn.js +0 -114
- package/esm2015/src/datepicker/sub-components/chronos/index.js +0 -2
- package/esm2015/src/datepicker/sub-components/chronos/locale/calendar.js +0 -9
- package/esm2015/src/datepicker/sub-components/chronos/locale/locale.class.js +0 -532
- package/esm2015/src/datepicker/sub-components/chronos/locale/locale.defaults.js +0 -40
- package/esm2015/src/datepicker/sub-components/chronos/locale/locales.js +0 -229
- package/esm2015/src/datepicker/sub-components/chronos/moment/add-subtract.js +0 -35
- package/esm2015/src/datepicker/sub-components/chronos/moment/calendar.js +0 -41
- package/esm2015/src/datepicker/sub-components/chronos/moment/diff.js +0 -70
- package/esm2015/src/datepicker/sub-components/chronos/moment/min-max.js +0 -38
- package/esm2015/src/datepicker/sub-components/chronos/parse/regex.js +0 -49
- package/esm2015/src/datepicker/sub-components/chronos/parse/token.js +0 -32
- package/esm2015/src/datepicker/sub-components/chronos/public_api.js +0 -56
- package/esm2015/src/datepicker/sub-components/chronos/test/chain.js +0 -711
- package/esm2015/src/datepicker/sub-components/chronos/types.js +0 -2
- package/esm2015/src/datepicker/sub-components/chronos/units/aliases.js +0 -35
- package/esm2015/src/datepicker/sub-components/chronos/units/constants.js +0 -11
- package/esm2015/src/datepicker/sub-components/chronos/units/day-of-month.js +0 -31
- package/esm2015/src/datepicker/sub-components/chronos/units/day-of-week.js +0 -129
- package/esm2015/src/datepicker/sub-components/chronos/units/day-of-year.js +0 -37
- package/esm2015/src/datepicker/sub-components/chronos/units/hour.js +0 -127
- package/esm2015/src/datepicker/sub-components/chronos/units/index.js +0 -19
- package/esm2015/src/datepicker/sub-components/chronos/units/millisecond.js +0 -60
- package/esm2015/src/datepicker/sub-components/chronos/units/minute.js +0 -23
- package/esm2015/src/datepicker/sub-components/chronos/units/month.js +0 -63
- package/esm2015/src/datepicker/sub-components/chronos/units/offset.js +0 -210
- package/esm2015/src/datepicker/sub-components/chronos/units/priorities.js +0 -21
- package/esm2015/src/datepicker/sub-components/chronos/units/quarter.js +0 -39
- package/esm2015/src/datepicker/sub-components/chronos/units/second.js +0 -23
- package/esm2015/src/datepicker/sub-components/chronos/units/timestamp.js +0 -28
- package/esm2015/src/datepicker/sub-components/chronos/units/timezone.js +0 -19
- package/esm2015/src/datepicker/sub-components/chronos/units/week-calendar-utils.js +0 -70
- package/esm2015/src/datepicker/sub-components/chronos/units/week-year.js +0 -101
- package/esm2015/src/datepicker/sub-components/chronos/units/week.js +0 -58
- package/esm2015/src/datepicker/sub-components/chronos/units/year.js +0 -60
- package/esm2015/src/datepicker/sub-components/chronos/utils/abs-ceil.js +0 -4
- package/esm2015/src/datepicker/sub-components/chronos/utils/abs-round.js +0 -4
- package/esm2015/src/datepicker/sub-components/chronos/utils/compare-arrays.js +0 -16
- package/esm2015/src/datepicker/sub-components/chronos/utils/date-compare.js +0 -55
- package/esm2015/src/datepicker/sub-components/chronos/utils/date-getters.js +0 -67
- package/esm2015/src/datepicker/sub-components/chronos/utils/date-setters.js +0 -75
- package/esm2015/src/datepicker/sub-components/chronos/utils/defaults.js +0 -11
- package/esm2015/src/datepicker/sub-components/chronos/utils/start-end-of.js +0 -57
- package/esm2015/src/datepicker/sub-components/chronos/utils/type-checks.js +0 -56
- package/esm2015/src/datepicker/sub-components/chronos/utils/zero-fill.js +0 -10
- package/esm2015/src/datepicker/sub-components/chronos/utils.js +0 -7
- package/esm2015/src/datepicker/sub-components/component-loader/bs-component-ref.class.js +0 -3
- package/esm2015/src/datepicker/sub-components/component-loader/component-loader.class.js +0 -272
- package/esm2015/src/datepicker/sub-components/component-loader/component-loader.factory.js +0 -32
- package/esm2015/src/datepicker/sub-components/component-loader/content-ref.class.js +0 -12
- package/esm2015/src/datepicker/sub-components/component-loader/index.js +0 -2
- package/esm2015/src/datepicker/sub-components/component-loader/listen-options.model.js +0 -2
- package/esm2015/src/datepicker/sub-components/component-loader/public_api.js +0 -5
- package/esm2015/src/datepicker/sub-components/mini-ngrx/index.js +0 -2
- package/esm2015/src/datepicker/sub-components/mini-ngrx/public_api.js +0 -3
- package/esm2015/src/datepicker/sub-components/mini-ngrx/state.class.js +0 -16
- package/esm2015/src/datepicker/sub-components/mini-ngrx/store.class.js +0 -43
- package/esm2015/src/datepicker/sub-components/positioning/index.js +0 -2
- package/esm2015/src/datepicker/sub-components/positioning/models/index.js +0 -2
- package/esm2015/src/datepicker/sub-components/positioning/modifiers/arrow.js +0 -56
- package/esm2015/src/datepicker/sub-components/positioning/modifiers/flip.js +0 -60
- package/esm2015/src/datepicker/sub-components/positioning/modifiers/index.js +0 -6
- package/esm2015/src/datepicker/sub-components/positioning/modifiers/initData.js +0 -42
- package/esm2015/src/datepicker/sub-components/positioning/modifiers/preventOverflow.js +0 -56
- package/esm2015/src/datepicker/sub-components/positioning/modifiers/shift.js +0 -22
- package/esm2015/src/datepicker/sub-components/positioning/ng-positioning.js +0 -30
- package/esm2015/src/datepicker/sub-components/positioning/positioning.service.js +0 -71
- package/esm2015/src/datepicker/sub-components/positioning/public_api.js +0 -3
- package/esm2015/src/datepicker/sub-components/positioning/utils/computeAutoPlacement.js +0 -53
- package/esm2015/src/datepicker/sub-components/positioning/utils/findCommonOffsetParent.js +0 -40
- package/esm2015/src/datepicker/sub-components/positioning/utils/getBordersSize.js +0 -10
- package/esm2015/src/datepicker/sub-components/positioning/utils/getBoundaries.js +0 -56
- package/esm2015/src/datepicker/sub-components/positioning/utils/getBoundingClientRect.js +0 -55
- package/esm2015/src/datepicker/sub-components/positioning/utils/getClientRect.js +0 -4
- package/esm2015/src/datepicker/sub-components/positioning/utils/getFixedPositionOffsetParent.js +0 -17
- package/esm2015/src/datepicker/sub-components/positioning/utils/getOffsetParent.js +0 -32
- package/esm2015/src/datepicker/sub-components/positioning/utils/getOffsetRectRelativeToArbitraryNode.js +0 -51
- package/esm2015/src/datepicker/sub-components/positioning/utils/getOffsets.js +0 -11
- package/esm2015/src/datepicker/sub-components/positioning/utils/getOppositePlacement.js +0 -8
- package/esm2015/src/datepicker/sub-components/positioning/utils/getOppositeVariation.js +0 -13
- package/esm2015/src/datepicker/sub-components/positioning/utils/getOuterSizes.js +0 -14
- package/esm2015/src/datepicker/sub-components/positioning/utils/getParentNode.js +0 -10
- package/esm2015/src/datepicker/sub-components/positioning/utils/getReferenceOffsets.js +0 -13
- package/esm2015/src/datepicker/sub-components/positioning/utils/getRoot.js +0 -10
- package/esm2015/src/datepicker/sub-components/positioning/utils/getScroll.js +0 -14
- package/esm2015/src/datepicker/sub-components/positioning/utils/getScrollParent.js +0 -26
- package/esm2015/src/datepicker/sub-components/positioning/utils/getStyleComputedProperty.js +0 -13
- package/esm2015/src/datepicker/sub-components/positioning/utils/getTargetOffsets.js +0 -30
- package/esm2015/src/datepicker/sub-components/positioning/utils/getViewportOffsetRectRelativeToArtbitraryNode.js +0 -19
- package/esm2015/src/datepicker/sub-components/positioning/utils/getWindowSizes.js +0 -18
- package/esm2015/src/datepicker/sub-components/positioning/utils/includeScroll.js +0 -15
- package/esm2015/src/datepicker/sub-components/positioning/utils/index.js +0 -24
- package/esm2015/src/datepicker/sub-components/positioning/utils/isBrowser.js +0 -2
- package/esm2015/src/datepicker/sub-components/positioning/utils/isFixed.js +0 -16
- package/esm2015/src/datepicker/sub-components/positioning/utils/isIE.js +0 -16
- package/esm2015/src/datepicker/sub-components/positioning/utils/isModifierEnabled.js +0 -10
- package/esm2015/src/datepicker/sub-components/positioning/utils/isNumeric.js +0 -7
- package/esm2015/src/datepicker/sub-components/positioning/utils/isOffsetContainer.js +0 -9
- package/esm2015/src/datepicker/sub-components/positioning/utils/setStyles.js +0 -17
- package/esm2015/src/datepicker/sub-components/positioning/utils/updateContainerClass.js +0 -22
- package/esm2015/src/datepicker/sub-components/tooltip/index.js +0 -2
- package/esm2015/src/datepicker/sub-components/tooltip/public_api.js +0 -5
- package/esm2015/src/datepicker/sub-components/tooltip/tooltip-container.component.js +0 -63
- package/esm2015/src/datepicker/sub-components/tooltip/tooltip.config.js +0 -23
- package/esm2015/src/datepicker/sub-components/tooltip/tooltip.directive.js +0 -282
- package/esm2015/src/datepicker/sub-components/tooltip/tooltip.module.js +0 -23
- package/esm2015/src/datepicker/sub-components/utils/decorators.js +0 -25
- package/esm2015/src/datepicker/sub-components/utils/facade/browser.js +0 -24
- package/esm2015/src/datepicker/sub-components/utils/index.js +0 -2
- package/esm2015/src/datepicker/sub-components/utils/linked-list.class.js +0 -240
- package/esm2015/src/datepicker/sub-components/utils/public_api.js +0 -11
- package/esm2015/src/datepicker/sub-components/utils/theme-provider.js +0 -35
- package/esm2015/src/datepicker/sub-components/utils/trigger.class.js +0 -10
- package/esm2015/src/datepicker/sub-components/utils/triggers.js +0 -110
- package/esm2015/src/datepicker/sub-components/utils/utils.class.js +0 -21
- package/esm2015/src/datepicker/sub-components/utils/warn-once.js +0 -12
- package/esm2015/src/datepicker/themes/bs/bs-calendar-layout.component.js +0 -25
- package/esm2015/src/datepicker/themes/bs/bs-current-date-view.component.js +0 -13
- package/esm2015/src/datepicker/themes/bs/bs-custom-dates-view.component.js +0 -44
- package/esm2015/src/datepicker/themes/bs/bs-datepicker-container.component.js +0 -152
- package/esm2015/src/datepicker/themes/bs/bs-datepicker-day-decorator.directive.js +0 -47
- package/esm2015/src/datepicker/themes/bs/bs-datepicker-inline-container.component.js +0 -36
- package/esm2015/src/datepicker/themes/bs/bs-datepicker-navigation-view.component.js +0 -63
- package/esm2015/src/datepicker/themes/bs/bs-daterangepicker-container.component.js +0 -195
- package/esm2015/src/datepicker/themes/bs/bs-daterangepicker-inline-container.component.js +0 -36
- package/esm2015/src/datepicker/themes/bs/bs-days-calendar-view.component.js +0 -162
- package/esm2015/src/datepicker/themes/bs/bs-months-calendar-view.component.js +0 -60
- package/esm2015/src/datepicker/themes/bs/bs-timepicker-view.component.js +0 -34
- package/esm2015/src/datepicker/themes/bs/bs-years-calendar-view.component.js +0 -61
- package/esm2015/src/datepicker/utils/bs-calendar-utils.js +0 -43
- package/esm2015/src/datepicker/utils/matrix-utils.js +0 -14
- package/esm2015/src/datepicker/yearpicker.component.js +0 -90
- package/fesm2015/mis-crystal-design-system-src-datepicker.js.map +0 -1
- package/src/datepicker/base/bs-datepicker-container.d.ts +0 -44
- package/src/datepicker/bs-datepicker-inline.component.d.ts +0 -61
- package/src/datepicker/bs-datepicker-inline.config.d.ts +0 -3
- package/src/datepicker/bs-datepicker-input.directive.d.ts +0 -30
- package/src/datepicker/bs-datepicker.component.d.ts +0 -123
- package/src/datepicker/bs-datepicker.config.d.ts +0 -140
- package/src/datepicker/bs-datepicker.module.d.ts +0 -4
- package/src/datepicker/bs-daterangepicker-inline.component.d.ts +0 -61
- package/src/datepicker/bs-daterangepicker-inline.config.d.ts +0 -6
- package/src/datepicker/bs-daterangepicker-input.directive.d.ts +0 -30
- package/src/datepicker/bs-daterangepicker.component.d.ts +0 -115
- package/src/datepicker/bs-daterangepicker.config.d.ts +0 -4
- package/src/datepicker/bs-locale.service.d.ts +0 -10
- package/src/datepicker/date-formatter.d.ts +0 -3
- package/src/datepicker/datepicker-animations.d.ts +0 -3
- package/src/datepicker/datepicker-inner.component.d.ts +0 -75
- package/src/datepicker/datepicker.component.d.ts +0 -78
- package/src/datepicker/datepicker.config.d.ts +0 -19
- package/src/datepicker/datepicker.module.d.ts +0 -4
- package/src/datepicker/daypicker.component.d.ts +0 -14
- package/src/datepicker/engine/calc-days-calendar.d.ts +0 -2
- package/src/datepicker/engine/flag-days-calendar.d.ts +0 -17
- package/src/datepicker/engine/flag-months-calendar.d.ts +0 -12
- package/src/datepicker/engine/flag-years-calendar.d.ts +0 -12
- package/src/datepicker/engine/format-days-calendar.d.ts +0 -4
- package/src/datepicker/engine/format-months-calendar.d.ts +0 -2
- package/src/datepicker/engine/format-years-calendar.d.ts +0 -4
- package/src/datepicker/engine/view-mode.d.ts +0 -2
- package/src/datepicker/models/index.d.ts +0 -102
- package/src/datepicker/monthpicker.component.d.ts +0 -11
- package/src/datepicker/package.json +0 -14
- package/src/datepicker/public_api.d.ts +0 -26
- package/src/datepicker/reducer/_defaults.d.ts +0 -2
- package/src/datepicker/reducer/bs-datepicker.actions.d.ts +0 -43
- package/src/datepicker/reducer/bs-datepicker.effects.d.ts +0 -38
- package/src/datepicker/reducer/bs-datepicker.reducer.d.ts +0 -3
- package/src/datepicker/reducer/bs-datepicker.state.d.ts +0 -43
- package/src/datepicker/reducer/bs-datepicker.store.d.ts +0 -5
- package/src/datepicker/sub-components/chronos/create/check-overflow.d.ts +0 -2
- package/src/datepicker/sub-components/chronos/create/clone.d.ts +0 -1
- package/src/datepicker/sub-components/chronos/create/date-from-array.d.ts +0 -2
- package/src/datepicker/sub-components/chronos/create/from-anything.d.ts +0 -4
- package/src/datepicker/sub-components/chronos/create/from-array.d.ts +0 -2
- package/src/datepicker/sub-components/chronos/create/from-object.d.ts +0 -2
- package/src/datepicker/sub-components/chronos/create/from-string-and-array.d.ts +0 -2
- package/src/datepicker/sub-components/chronos/create/from-string-and-format.d.ts +0 -4
- package/src/datepicker/sub-components/chronos/create/from-string.d.ts +0 -4
- package/src/datepicker/sub-components/chronos/create/local.d.ts +0 -3
- package/src/datepicker/sub-components/chronos/create/parsing-flags.d.ts +0 -2
- package/src/datepicker/sub-components/chronos/create/parsing.types.d.ts +0 -64
- package/src/datepicker/sub-components/chronos/create/valid.d.ts +0 -6
- package/src/datepicker/sub-components/chronos/duration/bubble.d.ts +0 -4
- package/src/datepicker/sub-components/chronos/duration/constructor.d.ts +0 -21
- package/src/datepicker/sub-components/chronos/duration/create.d.ts +0 -8
- package/src/datepicker/sub-components/chronos/duration/humanize.d.ts +0 -5
- package/src/datepicker/sub-components/chronos/duration/valid.d.ts +0 -2
- package/src/datepicker/sub-components/chronos/format/format.d.ts +0 -11
- package/src/datepicker/sub-components/chronos/format.d.ts +0 -5
- package/src/datepicker/sub-components/chronos/i18n/ar.d.ts +0 -2
- package/src/datepicker/sub-components/chronos/i18n/bg.d.ts +0 -2
- package/src/datepicker/sub-components/chronos/i18n/ca.d.ts +0 -2
- package/src/datepicker/sub-components/chronos/i18n/cs.d.ts +0 -2
- package/src/datepicker/sub-components/chronos/i18n/da.d.ts +0 -2
- package/src/datepicker/sub-components/chronos/i18n/de.d.ts +0 -2
- package/src/datepicker/sub-components/chronos/i18n/en-gb.d.ts +0 -2
- package/src/datepicker/sub-components/chronos/i18n/es-do.d.ts +0 -2
- package/src/datepicker/sub-components/chronos/i18n/es-us.d.ts +0 -2
- package/src/datepicker/sub-components/chronos/i18n/es.d.ts +0 -2
- package/src/datepicker/sub-components/chronos/i18n/et.d.ts +0 -2
- package/src/datepicker/sub-components/chronos/i18n/fi.d.ts +0 -2
- package/src/datepicker/sub-components/chronos/i18n/fr.d.ts +0 -2
- package/src/datepicker/sub-components/chronos/i18n/gl.d.ts +0 -2
- package/src/datepicker/sub-components/chronos/i18n/he.d.ts +0 -2
- package/src/datepicker/sub-components/chronos/i18n/hi.d.ts +0 -2
- package/src/datepicker/sub-components/chronos/i18n/hr.d.ts +0 -2
- package/src/datepicker/sub-components/chronos/i18n/hu.d.ts +0 -2
- package/src/datepicker/sub-components/chronos/i18n/id.d.ts +0 -2
- package/src/datepicker/sub-components/chronos/i18n/it.d.ts +0 -2
- package/src/datepicker/sub-components/chronos/i18n/ja.d.ts +0 -2
- package/src/datepicker/sub-components/chronos/i18n/ka.d.ts +0 -2
- package/src/datepicker/sub-components/chronos/i18n/kk.d.ts +0 -2
- package/src/datepicker/sub-components/chronos/i18n/ko.d.ts +0 -2
- package/src/datepicker/sub-components/chronos/i18n/lt.d.ts +0 -2
- package/src/datepicker/sub-components/chronos/i18n/lv.d.ts +0 -2
- package/src/datepicker/sub-components/chronos/i18n/mn.d.ts +0 -2
- package/src/datepicker/sub-components/chronos/i18n/nb.d.ts +0 -2
- package/src/datepicker/sub-components/chronos/i18n/nl-be.d.ts +0 -2
- package/src/datepicker/sub-components/chronos/i18n/nl.d.ts +0 -2
- package/src/datepicker/sub-components/chronos/i18n/pl.d.ts +0 -2
- package/src/datepicker/sub-components/chronos/i18n/pt-br.d.ts +0 -2
- package/src/datepicker/sub-components/chronos/i18n/ro.d.ts +0 -2
- package/src/datepicker/sub-components/chronos/i18n/ru.d.ts +0 -2
- package/src/datepicker/sub-components/chronos/i18n/sk.d.ts +0 -2
- package/src/datepicker/sub-components/chronos/i18n/sl.d.ts +0 -2
- package/src/datepicker/sub-components/chronos/i18n/sq.d.ts +0 -2
- package/src/datepicker/sub-components/chronos/i18n/sv.d.ts +0 -2
- package/src/datepicker/sub-components/chronos/i18n/th-be.d.ts +0 -2
- package/src/datepicker/sub-components/chronos/i18n/th.d.ts +0 -2
- package/src/datepicker/sub-components/chronos/i18n/tr.d.ts +0 -2
- package/src/datepicker/sub-components/chronos/i18n/uk.d.ts +0 -2
- package/src/datepicker/sub-components/chronos/i18n/vi.d.ts +0 -2
- package/src/datepicker/sub-components/chronos/i18n/zh-cn.d.ts +0 -2
- package/src/datepicker/sub-components/chronos/locale/calendar.d.ts +0 -8
- package/src/datepicker/sub-components/chronos/locale/locale.class.d.ts +0 -143
- package/src/datepicker/sub-components/chronos/locale/locale.defaults.d.ts +0 -11
- package/src/datepicker/sub-components/chronos/locale/locales.d.ts +0 -7
- package/src/datepicker/sub-components/chronos/moment/add-subtract.d.ts +0 -5
- package/src/datepicker/sub-components/chronos/moment/calendar.d.ts +0 -15
- package/src/datepicker/sub-components/chronos/moment/diff.d.ts +0 -3
- package/src/datepicker/sub-components/chronos/moment/min-max.d.ts +0 -2
- package/src/datepicker/sub-components/chronos/parse/regex.d.ts +0 -22
- package/src/datepicker/sub-components/chronos/parse/token.d.ts +0 -5
- package/src/datepicker/sub-components/chronos/public_api.d.ts +0 -57
- package/src/datepicker/sub-components/chronos/test/chain.d.ts +0 -214
- package/src/datepicker/sub-components/chronos/types.d.ts +0 -36
- package/src/datepicker/sub-components/chronos/units/aliases.d.ts +0 -7
- package/src/datepicker/sub-components/chronos/units/constants.d.ts +0 -9
- package/src/datepicker/sub-components/chronos/units/day-of-month.d.ts +0 -1
- package/src/datepicker/sub-components/chronos/units/day-of-week.d.ts +0 -20
- package/src/datepicker/sub-components/chronos/units/day-of-year.d.ts +0 -3
- package/src/datepicker/sub-components/chronos/units/hour.d.ts +0 -1
- package/src/datepicker/sub-components/chronos/units/index.d.ts +0 -18
- package/src/datepicker/sub-components/chronos/units/millisecond.d.ts +0 -1
- package/src/datepicker/sub-components/chronos/units/minute.d.ts +0 -1
- package/src/datepicker/sub-components/chronos/units/month.d.ts +0 -2
- package/src/datepicker/sub-components/chronos/units/offset.d.ts +0 -10
- package/src/datepicker/sub-components/chronos/units/priorities.d.ts +0 -1
- package/src/datepicker/sub-components/chronos/units/quarter.d.ts +0 -3
- package/src/datepicker/sub-components/chronos/units/second.d.ts +0 -1
- package/src/datepicker/sub-components/chronos/units/timestamp.d.ts +0 -1
- package/src/datepicker/sub-components/chronos/units/timezone.d.ts +0 -3
- package/src/datepicker/sub-components/chronos/units/week-calendar-utils.d.ts +0 -9
- package/src/datepicker/sub-components/chronos/units/week-year.d.ts +0 -8
- package/src/datepicker/sub-components/chronos/units/week.d.ts +0 -6
- package/src/datepicker/sub-components/chronos/units/year.d.ts +0 -4
- package/src/datepicker/sub-components/chronos/utils/abs-ceil.d.ts +0 -1
- package/src/datepicker/sub-components/chronos/utils/abs-round.d.ts +0 -1
- package/src/datepicker/sub-components/chronos/utils/compare-arrays.d.ts +0 -1
- package/src/datepicker/sub-components/chronos/utils/date-compare.d.ts +0 -9
- package/src/datepicker/sub-components/chronos/utils/date-getters.d.ts +0 -18
- package/src/datepicker/sub-components/chronos/utils/date-setters.d.ts +0 -12
- package/src/datepicker/sub-components/chronos/utils/defaults.d.ts +0 -1
- package/src/datepicker/sub-components/chronos/utils/start-end-of.d.ts +0 -3
- package/src/datepicker/sub-components/chronos/utils/type-checks.d.ts +0 -12
- package/src/datepicker/sub-components/chronos/utils/zero-fill.d.ts +0 -1
- package/src/datepicker/sub-components/chronos/utils.d.ts +0 -2
- package/src/datepicker/sub-components/component-loader/bs-component-ref.class.d.ts +0 -5
- package/src/datepicker/sub-components/component-loader/component-loader.class.d.ts +0 -75
- package/src/datepicker/sub-components/component-loader/component-loader.factory.d.ts +0 -18
- package/src/datepicker/sub-components/component-loader/content-ref.class.d.ts +0 -7
- package/src/datepicker/sub-components/component-loader/listen-options.model.d.ts +0 -11
- package/src/datepicker/sub-components/component-loader/public_api.d.ts +0 -4
- package/src/datepicker/sub-components/mini-ngrx/public_api.d.ts +0 -7
- package/src/datepicker/sub-components/mini-ngrx/state.class.d.ts +0 -8
- package/src/datepicker/sub-components/mini-ngrx/store.class.d.ts +0 -16
- package/src/datepicker/sub-components/positioning/index.d.ts +0 -1
- package/src/datepicker/sub-components/positioning/models/index.d.ts +0 -41
- package/src/datepicker/sub-components/positioning/modifiers/arrow.d.ts +0 -2
- package/src/datepicker/sub-components/positioning/modifiers/flip.d.ts +0 -2
- package/src/datepicker/sub-components/positioning/modifiers/index.d.ts +0 -5
- package/src/datepicker/sub-components/positioning/modifiers/initData.d.ts +0 -2
- package/src/datepicker/sub-components/positioning/modifiers/preventOverflow.d.ts +0 -2
- package/src/datepicker/sub-components/positioning/modifiers/shift.d.ts +0 -2
- package/src/datepicker/sub-components/positioning/ng-positioning.d.ts +0 -8
- package/src/datepicker/sub-components/positioning/positioning.service.d.ts +0 -45
- package/src/datepicker/sub-components/positioning/public_api.d.ts +0 -2
- package/src/datepicker/sub-components/positioning/utils/computeAutoPlacement.d.ts +0 -2
- package/src/datepicker/sub-components/positioning/utils/findCommonOffsetParent.d.ts +0 -1
- package/src/datepicker/sub-components/positioning/utils/getBordersSize.d.ts +0 -4
- package/src/datepicker/sub-components/positioning/utils/getBoundaries.d.ts +0 -1
- package/src/datepicker/sub-components/positioning/utils/getBoundingClientRect.d.ts +0 -2
- package/src/datepicker/sub-components/positioning/utils/getClientRect.d.ts +0 -5
- package/src/datepicker/sub-components/positioning/utils/getFixedPositionOffsetParent.d.ts +0 -4
- package/src/datepicker/sub-components/positioning/utils/getOffsetParent.d.ts +0 -1
- package/src/datepicker/sub-components/positioning/utils/getOffsetRectRelativeToArbitraryNode.d.ts +0 -2
- package/src/datepicker/sub-components/positioning/utils/getOffsets.d.ts +0 -2
- package/src/datepicker/sub-components/positioning/utils/getOppositePlacement.d.ts +0 -4
- package/src/datepicker/sub-components/positioning/utils/getOppositeVariation.d.ts +0 -4
- package/src/datepicker/sub-components/positioning/utils/getOuterSizes.d.ts +0 -7
- package/src/datepicker/sub-components/positioning/utils/getParentNode.d.ts +0 -4
- package/src/datepicker/sub-components/positioning/utils/getReferenceOffsets.d.ts +0 -2
- package/src/datepicker/sub-components/positioning/utils/getRoot.d.ts +0 -4
- package/src/datepicker/sub-components/positioning/utils/getScroll.d.ts +0 -4
- package/src/datepicker/sub-components/positioning/utils/getScrollParent.d.ts +0 -1
- package/src/datepicker/sub-components/positioning/utils/getStyleComputedProperty.d.ts +0 -4
- package/src/datepicker/sub-components/positioning/utils/getTargetOffsets.d.ts +0 -2
- package/src/datepicker/sub-components/positioning/utils/getViewportOffsetRectRelativeToArtbitraryNode.d.ts +0 -2
- package/src/datepicker/sub-components/positioning/utils/getWindowSizes.d.ts +0 -4
- package/src/datepicker/sub-components/positioning/utils/includeScroll.d.ts +0 -2
- package/src/datepicker/sub-components/positioning/utils/index.d.ts +0 -23
- package/src/datepicker/sub-components/positioning/utils/isBrowser.d.ts +0 -1
- package/src/datepicker/sub-components/positioning/utils/isFixed.d.ts +0 -1
- package/src/datepicker/sub-components/positioning/utils/isIE.d.ts +0 -1
- package/src/datepicker/sub-components/positioning/utils/isModifierEnabled.d.ts +0 -4
- package/src/datepicker/sub-components/positioning/utils/isNumeric.d.ts +0 -4
- package/src/datepicker/sub-components/positioning/utils/isOffsetContainer.d.ts +0 -1
- package/src/datepicker/sub-components/positioning/utils/setStyles.d.ts +0 -5
- package/src/datepicker/sub-components/positioning/utils/updateContainerClass.d.ts +0 -6
- package/src/datepicker/sub-components/tooltip/index.d.ts +0 -1
- package/src/datepicker/sub-components/tooltip/public_api.d.ts +0 -4
- package/src/datepicker/sub-components/tooltip/tooltip-container.component.d.ts +0 -14
- package/src/datepicker/sub-components/tooltip/tooltip.config.d.ts +0 -13
- package/src/datepicker/sub-components/tooltip/tooltip.directive.d.ts +0 -109
- package/src/datepicker/sub-components/tooltip/tooltip.module.d.ts +0 -4
- package/src/datepicker/sub-components/utils/decorators.d.ts +0 -1
- package/src/datepicker/sub-components/utils/facade/browser.d.ts +0 -23
- package/src/datepicker/sub-components/utils/index.d.ts +0 -1
- package/src/datepicker/sub-components/utils/linked-list.class.d.ts +0 -26
- package/src/datepicker/sub-components/utils/public_api.d.ts +0 -10
- package/src/datepicker/sub-components/utils/theme-provider.d.ts +0 -2
- package/src/datepicker/sub-components/utils/trigger.class.d.ts +0 -6
- package/src/datepicker/sub-components/utils/triggers.d.ts +0 -18
- package/src/datepicker/sub-components/utils/utils.class.d.ts +0 -4
- package/src/datepicker/sub-components/utils/warn-once.d.ts +0 -1
- package/src/datepicker/themes/bs/bs-calendar-layout.component.d.ts +0 -2
- package/src/datepicker/themes/bs/bs-current-date-view.component.d.ts +0 -3
- package/src/datepicker/themes/bs/bs-custom-dates-view.component.d.ts +0 -14
- package/src/datepicker/themes/bs/bs-datepicker-container.component.d.ts +0 -33
- package/src/datepicker/themes/bs/bs-datepicker-day-decorator.directive.d.ts +0 -11
- package/src/datepicker/themes/bs/bs-datepicker-inline-container.component.d.ts +0 -10
- package/src/datepicker/themes/bs/bs-datepicker-navigation-view.component.d.ts +0 -9
- package/src/datepicker/themes/bs/bs-daterangepicker-container.component.d.ts +0 -37
- package/src/datepicker/themes/bs/bs-daterangepicker-inline-container.component.d.ts +0 -10
- package/src/datepicker/themes/bs/bs-days-calendar-view.component.d.ts +0 -23
- package/src/datepicker/themes/bs/bs-months-calendar-view.component.d.ts +0 -13
- package/src/datepicker/themes/bs/bs-timepicker-view.component.d.ts +0 -5
- package/src/datepicker/themes/bs/bs-years-calendar-view.component.d.ts +0 -13
- package/src/datepicker/utils/bs-calendar-utils.d.ts +0 -10
- package/src/datepicker/utils/matrix-utils.d.ts +0 -9
- package/src/datepicker/yearpicker.component.d.ts +0 -11
|
@@ -1,711 +0,0 @@
|
|
|
1
|
-
// tslint:disable:max-line-length max-file-line-count
|
|
2
|
-
import { add, subtract } from '../index';
|
|
3
|
-
import { getDate, getFullYear, getHours, getMilliseconds, getMinutes, getMonth, getSeconds } from '../utils/date-getters';
|
|
4
|
-
import { setDate, setFullYear, setHours, setMilliseconds, setMinutes, setMonth, setSeconds } from '../utils/date-setters';
|
|
5
|
-
import { cloneDate } from '../create/clone';
|
|
6
|
-
import { isArray, isBoolean, isDate, isDateValid, isFunction, isNumber, isObject, isString, isUndefined } from '../utils/type-checks';
|
|
7
|
-
import { formatDate } from '../format';
|
|
8
|
-
import { ISO_8601, RFC_2822 } from '../create/from-string-and-format';
|
|
9
|
-
import { getDateOffset, getUTCOffset, hasAlignedHourOffset, isDaylightSavingTime, setOffsetToParsedOffset, setUTCOffset } from '../units/offset';
|
|
10
|
-
import { isLeapYear, parseTwoDigitYear } from '../units/year';
|
|
11
|
-
import { isAfter, isBefore, isBetween, isSame, isSameOrAfter, isSameOrBefore } from '../utils/date-compare';
|
|
12
|
-
import { daysInMonth } from '../units/month';
|
|
13
|
-
import { getDayOfWeek, getISODayOfWeek, getLocaleDayOfWeek, parseWeekday, setDayOfWeek, setISODayOfWeek, setLocaleDayOfWeek } from '../units/day-of-week';
|
|
14
|
-
import { getISOWeek, getWeek, setISOWeek, setWeek } from '../units/week';
|
|
15
|
-
import { getISOWeeksInYear, getISOWeekYear, getSetISOWeekYear, getSetWeekYear, getWeeksInYear, getWeekYear } from '../units/week-year';
|
|
16
|
-
import { endOf, startOf } from '../utils/start-end-of';
|
|
17
|
-
import { getQuarter, setQuarter } from '../units/quarter';
|
|
18
|
-
import { getDayOfYear, setDayOfYear } from '../units/day-of-year';
|
|
19
|
-
import { getZoneAbbr, getZoneName } from '../units/timezone';
|
|
20
|
-
import { diff } from '../moment/diff';
|
|
21
|
-
import { calendar } from '../moment/calendar';
|
|
22
|
-
import { defineLocale, getLocale, getSetGlobalLocale, listLocales } from '../locale/locales';
|
|
23
|
-
import { max, min } from '../moment/min-max';
|
|
24
|
-
import { isDuration } from '../duration/constructor';
|
|
25
|
-
import { createLocalOrUTC } from '../create/from-anything';
|
|
26
|
-
import { createDuration } from '../duration/create';
|
|
27
|
-
export const moment = _moment;
|
|
28
|
-
function _moment(input, format, localeKey, strict, isUTC) {
|
|
29
|
-
if (input instanceof Khronos) {
|
|
30
|
-
const _date = input.clone();
|
|
31
|
-
return isUTC ? _date.utc() : _date;
|
|
32
|
-
}
|
|
33
|
-
if (isBoolean(localeKey)) {
|
|
34
|
-
return new Khronos(input, format, null, localeKey, isUTC);
|
|
35
|
-
}
|
|
36
|
-
return new Khronos(input, format, localeKey, strict, isUTC);
|
|
37
|
-
}
|
|
38
|
-
moment.utc = (input, format, localeKey, strict) => {
|
|
39
|
-
return _moment(input, format, localeKey, strict, true);
|
|
40
|
-
};
|
|
41
|
-
moment.parseZone = (input, format, localeKey, strict) => {
|
|
42
|
-
return _moment(input, format, localeKey, strict, true).parseZone();
|
|
43
|
-
};
|
|
44
|
-
moment.locale = getSetGlobalLocale;
|
|
45
|
-
moment.localeData = (key) => {
|
|
46
|
-
if (key instanceof Khronos) {
|
|
47
|
-
return key.localeData();
|
|
48
|
-
}
|
|
49
|
-
return getLocale(key);
|
|
50
|
-
};
|
|
51
|
-
// moment.utc = createUTC;
|
|
52
|
-
moment.unix = (inp) => new Khronos(inp * 1000);
|
|
53
|
-
moment.ISO_8601 = ISO_8601;
|
|
54
|
-
moment.RFC_2822 = RFC_2822;
|
|
55
|
-
moment.defineLocale = defineLocale;
|
|
56
|
-
moment.parseTwoDigitYear = parseTwoDigitYear;
|
|
57
|
-
moment.isDate = isDate;
|
|
58
|
-
moment.invalid = function _invalid() {
|
|
59
|
-
return new Khronos(new Date(NaN));
|
|
60
|
-
};
|
|
61
|
-
// duration(inp?: Duration | DateInput | Khronos, unit?: MomentUnitOfTime): Duration;
|
|
62
|
-
moment.duration = (input, unit) => {
|
|
63
|
-
const _unit = mapUnitOfTime(unit);
|
|
64
|
-
if (isDate(input)) {
|
|
65
|
-
throw new Error('todo implement');
|
|
66
|
-
}
|
|
67
|
-
if (input == null) {
|
|
68
|
-
return createDuration();
|
|
69
|
-
}
|
|
70
|
-
if (isDuration(input)) {
|
|
71
|
-
return createDuration(input, _unit, { _locale: input._locale });
|
|
72
|
-
}
|
|
73
|
-
if (isString(input) || isNumber(input) || isDuration(input) || isObject(input)) {
|
|
74
|
-
return createDuration(input, _unit);
|
|
75
|
-
}
|
|
76
|
-
throw new Error('todo implement');
|
|
77
|
-
};
|
|
78
|
-
moment.min = function _min(...dates) {
|
|
79
|
-
const _firstArg = dates[0];
|
|
80
|
-
const _dates = (isArray(_firstArg) ? _firstArg : dates)
|
|
81
|
-
// tslint:disable-next-line
|
|
82
|
-
.map((date) => _moment(date))
|
|
83
|
-
.map(date => date.toDate());
|
|
84
|
-
const _date = min(..._dates);
|
|
85
|
-
return new Khronos(_date);
|
|
86
|
-
};
|
|
87
|
-
moment.max = function _max(...dates) {
|
|
88
|
-
const _firstArg = dates[0];
|
|
89
|
-
const _dates = (isArray(_firstArg) ? _firstArg : dates)
|
|
90
|
-
// tslint:disable-next-line
|
|
91
|
-
.map((date) => _moment(date))
|
|
92
|
-
.map(date => date.toDate());
|
|
93
|
-
const _date = max(..._dates);
|
|
94
|
-
return new Khronos(_date);
|
|
95
|
-
};
|
|
96
|
-
moment.locales = () => {
|
|
97
|
-
return listLocales();
|
|
98
|
-
};
|
|
99
|
-
const _unitsPriority = {
|
|
100
|
-
year: 1,
|
|
101
|
-
month: 8,
|
|
102
|
-
week: 5,
|
|
103
|
-
isoWeek: 5,
|
|
104
|
-
day: 11,
|
|
105
|
-
weekday: 11,
|
|
106
|
-
isoWeekday: 11,
|
|
107
|
-
hours: 13,
|
|
108
|
-
weekYear: 1,
|
|
109
|
-
isoWeekYear: 1,
|
|
110
|
-
quarter: 7,
|
|
111
|
-
date: 9,
|
|
112
|
-
dayOfYear: 4,
|
|
113
|
-
minutes: 14,
|
|
114
|
-
seconds: 15,
|
|
115
|
-
milliseconds: 16
|
|
116
|
-
};
|
|
117
|
-
// todo: do I need 2 mappers?
|
|
118
|
-
const _timeHashMap = {
|
|
119
|
-
y: 'year',
|
|
120
|
-
years: 'year',
|
|
121
|
-
year: 'year',
|
|
122
|
-
M: 'month',
|
|
123
|
-
months: 'month',
|
|
124
|
-
month: 'month',
|
|
125
|
-
w: 'week',
|
|
126
|
-
weeks: 'week',
|
|
127
|
-
week: 'week',
|
|
128
|
-
d: 'day',
|
|
129
|
-
days: 'day',
|
|
130
|
-
day: 'day',
|
|
131
|
-
date: 'date',
|
|
132
|
-
dates: 'date',
|
|
133
|
-
D: 'date',
|
|
134
|
-
h: 'hours',
|
|
135
|
-
hour: 'hours',
|
|
136
|
-
hours: 'hours',
|
|
137
|
-
m: 'minutes',
|
|
138
|
-
minute: 'minutes',
|
|
139
|
-
minutes: 'minutes',
|
|
140
|
-
s: 'seconds',
|
|
141
|
-
second: 'seconds',
|
|
142
|
-
seconds: 'seconds',
|
|
143
|
-
ms: 'milliseconds',
|
|
144
|
-
millisecond: 'milliseconds',
|
|
145
|
-
milliseconds: 'milliseconds',
|
|
146
|
-
quarter: 'quarter',
|
|
147
|
-
quarters: 'quarter',
|
|
148
|
-
q: 'quarter',
|
|
149
|
-
Q: 'quarter',
|
|
150
|
-
isoWeek: 'isoWeek',
|
|
151
|
-
isoWeeks: 'isoWeek',
|
|
152
|
-
W: 'isoWeek',
|
|
153
|
-
weekYear: 'weekYear',
|
|
154
|
-
weekYears: 'weekYear',
|
|
155
|
-
gg: 'weekYears',
|
|
156
|
-
isoWeekYear: 'isoWeekYear',
|
|
157
|
-
isoWeekYears: 'isoWeekYear',
|
|
158
|
-
GG: 'isoWeekYear',
|
|
159
|
-
dayOfYear: 'dayOfYear',
|
|
160
|
-
dayOfYears: 'dayOfYear',
|
|
161
|
-
DDD: 'dayOfYear',
|
|
162
|
-
weekday: 'weekday',
|
|
163
|
-
weekdays: 'weekday',
|
|
164
|
-
e: 'weekday',
|
|
165
|
-
isoWeekday: 'isoWeekday',
|
|
166
|
-
isoWeekdays: 'isoWeekday',
|
|
167
|
-
E: 'isoWeekday'
|
|
168
|
-
};
|
|
169
|
-
function mapUnitOfTime(period) {
|
|
170
|
-
return _timeHashMap[period];
|
|
171
|
-
}
|
|
172
|
-
function mapMomentInputObject(obj) {
|
|
173
|
-
const _res = {};
|
|
174
|
-
return Object.keys(obj)
|
|
175
|
-
.reduce((res, key) => {
|
|
176
|
-
res[mapUnitOfTime(key)] = obj[key];
|
|
177
|
-
return res;
|
|
178
|
-
}, _res);
|
|
179
|
-
}
|
|
180
|
-
export class Khronos {
|
|
181
|
-
constructor(input, format, localeKey, strict = false, isUTC = false, offset) {
|
|
182
|
-
this._date = new Date();
|
|
183
|
-
this._isUTC = false;
|
|
184
|
-
// locale will be needed to format invalid date message
|
|
185
|
-
this._locale = getLocale(localeKey);
|
|
186
|
-
// parse invalid input
|
|
187
|
-
if (input === '' || input === null || (isNumber(input) && isNaN(input))) {
|
|
188
|
-
this._date = new Date(NaN);
|
|
189
|
-
return this;
|
|
190
|
-
}
|
|
191
|
-
this._isUTC = isUTC;
|
|
192
|
-
if (this._isUTC) {
|
|
193
|
-
this._offset = 0;
|
|
194
|
-
}
|
|
195
|
-
if (offset || offset === 0) {
|
|
196
|
-
this._offset = offset;
|
|
197
|
-
}
|
|
198
|
-
this._isStrict = strict;
|
|
199
|
-
this._format = format;
|
|
200
|
-
if (!input && input !== 0 && !format) {
|
|
201
|
-
this._date = new Date();
|
|
202
|
-
return this;
|
|
203
|
-
}
|
|
204
|
-
if (isDate(input)) {
|
|
205
|
-
this._date = cloneDate(input);
|
|
206
|
-
return this;
|
|
207
|
-
}
|
|
208
|
-
// this._date = parseDate(input, format, localeKey, strict, isUTC);
|
|
209
|
-
const config = createLocalOrUTC(input, format, localeKey, strict, isUTC);
|
|
210
|
-
this._date = config._d;
|
|
211
|
-
this._offset = isNumber(config._offset) ? config._offset : this._offset;
|
|
212
|
-
this._isUTC = config._isUTC;
|
|
213
|
-
this._isStrict = config._strict;
|
|
214
|
-
this._format = config._f;
|
|
215
|
-
this._tzm = config._tzm;
|
|
216
|
-
}
|
|
217
|
-
_toConfig() {
|
|
218
|
-
return { _isUTC: this._isUTC, _locale: this._locale, _offset: this._offset, _tzm: this._tzm };
|
|
219
|
-
}
|
|
220
|
-
locale(localeKey) {
|
|
221
|
-
if (isUndefined(localeKey)) {
|
|
222
|
-
return this._locale._abbr;
|
|
223
|
-
}
|
|
224
|
-
if (localeKey instanceof Khronos) {
|
|
225
|
-
this._locale = localeKey._locale;
|
|
226
|
-
return this;
|
|
227
|
-
}
|
|
228
|
-
const newLocaleData = getLocale(localeKey);
|
|
229
|
-
if (newLocaleData != null) {
|
|
230
|
-
this._locale = newLocaleData;
|
|
231
|
-
}
|
|
232
|
-
return this;
|
|
233
|
-
}
|
|
234
|
-
localeData() {
|
|
235
|
-
return this._locale;
|
|
236
|
-
}
|
|
237
|
-
// Basic
|
|
238
|
-
add(val, period) {
|
|
239
|
-
if (isString(val)) {
|
|
240
|
-
this._date = add(this._date, parseInt(val, 10), mapUnitOfTime(period));
|
|
241
|
-
}
|
|
242
|
-
if (isNumber(val)) {
|
|
243
|
-
this._date = add(this._date, val, mapUnitOfTime(period));
|
|
244
|
-
}
|
|
245
|
-
if (isObject(val)) {
|
|
246
|
-
const _mapped = mapMomentInputObject(val);
|
|
247
|
-
Object.keys(_mapped)
|
|
248
|
-
.forEach((key) => add(this._date, _mapped[key], key));
|
|
249
|
-
}
|
|
250
|
-
return this;
|
|
251
|
-
}
|
|
252
|
-
// fixme: for some reason here 'null' for time is fine
|
|
253
|
-
calendar(time, formats) {
|
|
254
|
-
const _time = time instanceof Khronos ? time : new Khronos(time || new Date());
|
|
255
|
-
const _offset = (this._offset || 0) - (_time._offset || 0);
|
|
256
|
-
const _config = Object.assign(this._toConfig(), { _offset });
|
|
257
|
-
return calendar(this._date, _time._date, formats, this._locale, _config);
|
|
258
|
-
}
|
|
259
|
-
clone() {
|
|
260
|
-
const localeKey = this._locale && this._locale._abbr || 'en';
|
|
261
|
-
// return new Khronos(cloneDate(this._date), this._format, localeKey, this._isStrict, this._isUTC);
|
|
262
|
-
// fails if isUTC and offset
|
|
263
|
-
// return new Khronos(new Date(this.valueOf()),
|
|
264
|
-
return new Khronos(this._date, this._format, localeKey, this._isStrict, this._isUTC, this._offset);
|
|
265
|
-
}
|
|
266
|
-
diff(b, unitOfTime, precise) {
|
|
267
|
-
const unit = mapUnitOfTime(unitOfTime);
|
|
268
|
-
const _b = b instanceof Khronos ? b : new Khronos(b);
|
|
269
|
-
// const zoneDelta = (_b.utcOffset() - this.utcOffset());
|
|
270
|
-
// const config = Object.assign(this._toConfig(), {
|
|
271
|
-
// _offset: 0,
|
|
272
|
-
// _isUTC: true,
|
|
273
|
-
// _zoneDelta: zoneDelta
|
|
274
|
-
// });
|
|
275
|
-
// return diff(new Date(this.valueOf()), new Date(_b.valueOf()), unit, precise, config);
|
|
276
|
-
return diff(this._date, _b.toDate(), unit, precise, this._toConfig());
|
|
277
|
-
}
|
|
278
|
-
endOf(period) {
|
|
279
|
-
const _per = mapUnitOfTime(period);
|
|
280
|
-
this._date = endOf(this._date, _per, this._isUTC);
|
|
281
|
-
return this;
|
|
282
|
-
}
|
|
283
|
-
format(format) {
|
|
284
|
-
return formatDate(this._date, format, this._locale && this._locale._abbr, this._isUTC, this._offset);
|
|
285
|
-
}
|
|
286
|
-
// todo: implement
|
|
287
|
-
from(time, withoutSuffix) {
|
|
288
|
-
const _time = _moment(time);
|
|
289
|
-
if (this.isValid() && _time.isValid()) {
|
|
290
|
-
return createDuration({ to: this.toDate(), from: _time.toDate() })
|
|
291
|
-
.locale(this.locale())
|
|
292
|
-
.humanize(!withoutSuffix);
|
|
293
|
-
}
|
|
294
|
-
return this.localeData().invalidDate;
|
|
295
|
-
}
|
|
296
|
-
fromNow(withoutSuffix) {
|
|
297
|
-
return this.from(new Date(), withoutSuffix);
|
|
298
|
-
}
|
|
299
|
-
to(inp, suffix) {
|
|
300
|
-
throw new Error(`TODO: Implement`);
|
|
301
|
-
}
|
|
302
|
-
toNow(withoutPrefix) {
|
|
303
|
-
throw new Error(`TODO: Implement`);
|
|
304
|
-
}
|
|
305
|
-
subtract(val, period) {
|
|
306
|
-
if (isString(val)) {
|
|
307
|
-
this._date = subtract(this._date, parseInt(val, 10), mapUnitOfTime(period));
|
|
308
|
-
return this;
|
|
309
|
-
}
|
|
310
|
-
if (isNumber(val)) {
|
|
311
|
-
this._date = subtract(this._date, val, mapUnitOfTime(period));
|
|
312
|
-
}
|
|
313
|
-
if (isObject(val)) {
|
|
314
|
-
const _mapped = mapMomentInputObject(val);
|
|
315
|
-
Object.keys(_mapped)
|
|
316
|
-
.forEach((key) => subtract(this._date, _mapped[key], key));
|
|
317
|
-
}
|
|
318
|
-
return this;
|
|
319
|
-
}
|
|
320
|
-
get(period) {
|
|
321
|
-
if (period === 'dayOfYear') {
|
|
322
|
-
return this.dayOfYear();
|
|
323
|
-
}
|
|
324
|
-
const unit = mapUnitOfTime(period);
|
|
325
|
-
switch (unit) {
|
|
326
|
-
case 'year':
|
|
327
|
-
return this.year();
|
|
328
|
-
case 'month':
|
|
329
|
-
return this.month();
|
|
330
|
-
// | 'week'
|
|
331
|
-
case 'date':
|
|
332
|
-
return this.date();
|
|
333
|
-
case 'day':
|
|
334
|
-
return this.day();
|
|
335
|
-
case 'hours':
|
|
336
|
-
return this.hours();
|
|
337
|
-
case 'minutes':
|
|
338
|
-
return this.minutes();
|
|
339
|
-
case 'seconds':
|
|
340
|
-
return this.seconds();
|
|
341
|
-
case 'milliseconds':
|
|
342
|
-
return this.milliseconds();
|
|
343
|
-
case 'week':
|
|
344
|
-
return this.week();
|
|
345
|
-
case 'isoWeek':
|
|
346
|
-
return this.isoWeek();
|
|
347
|
-
case 'weekYear':
|
|
348
|
-
return this.weekYear();
|
|
349
|
-
case 'isoWeekYear':
|
|
350
|
-
return this.isoWeekYear();
|
|
351
|
-
case 'weekday':
|
|
352
|
-
return this.weekday();
|
|
353
|
-
case 'isoWeekday':
|
|
354
|
-
return this.isoWeekday();
|
|
355
|
-
case 'quarter':
|
|
356
|
-
return this.quarter();
|
|
357
|
-
default:
|
|
358
|
-
throw new Error(`Unknown moment.get('${period}')`);
|
|
359
|
-
}
|
|
360
|
-
}
|
|
361
|
-
set(period, input) {
|
|
362
|
-
if (isString(period)) {
|
|
363
|
-
const unit = mapUnitOfTime(period);
|
|
364
|
-
switch (unit) {
|
|
365
|
-
case 'year':
|
|
366
|
-
return this.year(input);
|
|
367
|
-
case 'month':
|
|
368
|
-
return this.month(input);
|
|
369
|
-
// | 'week'
|
|
370
|
-
case 'day':
|
|
371
|
-
return this.day(input);
|
|
372
|
-
case 'date':
|
|
373
|
-
return this.date(input);
|
|
374
|
-
case 'hours':
|
|
375
|
-
return this.hours(input);
|
|
376
|
-
case 'minutes':
|
|
377
|
-
return this.minutes(input);
|
|
378
|
-
case 'seconds':
|
|
379
|
-
return this.seconds(input);
|
|
380
|
-
case 'milliseconds':
|
|
381
|
-
return this.milliseconds(input);
|
|
382
|
-
case 'week':
|
|
383
|
-
return this.week(input);
|
|
384
|
-
case 'isoWeek':
|
|
385
|
-
return this.isoWeek(input);
|
|
386
|
-
case 'weekYear':
|
|
387
|
-
return this.weekYear(input);
|
|
388
|
-
case 'isoWeekYear':
|
|
389
|
-
return this.isoWeekYear(input);
|
|
390
|
-
case 'weekday':
|
|
391
|
-
return this.weekday(input);
|
|
392
|
-
case 'isoWeekday':
|
|
393
|
-
return this.isoWeekday(input);
|
|
394
|
-
case 'quarter':
|
|
395
|
-
return this.quarter(input);
|
|
396
|
-
default:
|
|
397
|
-
throw new Error(`Unknown moment.get('${period}')`);
|
|
398
|
-
}
|
|
399
|
-
}
|
|
400
|
-
if (isObject(period)) {
|
|
401
|
-
const _mapped = mapMomentInputObject(period);
|
|
402
|
-
Object.keys(_mapped)
|
|
403
|
-
.sort(function (a, b) {
|
|
404
|
-
return _unitsPriority[a] - _unitsPriority[b];
|
|
405
|
-
})
|
|
406
|
-
.forEach((key) => this.set(key, _mapped[key]));
|
|
407
|
-
}
|
|
408
|
-
return this;
|
|
409
|
-
}
|
|
410
|
-
toString() {
|
|
411
|
-
return this.format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');
|
|
412
|
-
}
|
|
413
|
-
toISOString() {
|
|
414
|
-
if (!this.isValid()) {
|
|
415
|
-
return null;
|
|
416
|
-
}
|
|
417
|
-
if (getFullYear(this._date, true) < 0 || getFullYear(this._date, true) > 9999) {
|
|
418
|
-
return this.format('YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]');
|
|
419
|
-
}
|
|
420
|
-
if (isFunction(Date.prototype.toISOString)) {
|
|
421
|
-
// native implementation is ~50x faster, use it when we can
|
|
422
|
-
return this.toDate().toISOString();
|
|
423
|
-
}
|
|
424
|
-
return this.format('YYYY-MM-DD[T]HH:mm:ss.SSS[Z]');
|
|
425
|
-
}
|
|
426
|
-
inspect() {
|
|
427
|
-
throw new Error('TODO: implement');
|
|
428
|
-
}
|
|
429
|
-
toJSON() {
|
|
430
|
-
return this.toISOString();
|
|
431
|
-
}
|
|
432
|
-
toDate() {
|
|
433
|
-
return new Date(this.valueOf());
|
|
434
|
-
}
|
|
435
|
-
toObject() {
|
|
436
|
-
return {
|
|
437
|
-
// years: getFullYear(this._date, this._isUTC),
|
|
438
|
-
// months: getMonth(this._date, this._isUTC),
|
|
439
|
-
year: getFullYear(this._date, this._isUTC),
|
|
440
|
-
month: getMonth(this._date, this._isUTC),
|
|
441
|
-
date: getDate(this._date, this._isUTC),
|
|
442
|
-
hours: getHours(this._date, this._isUTC),
|
|
443
|
-
minutes: getMinutes(this._date, this._isUTC),
|
|
444
|
-
seconds: getSeconds(this._date, this._isUTC),
|
|
445
|
-
milliseconds: getMilliseconds(this._date, this._isUTC)
|
|
446
|
-
};
|
|
447
|
-
}
|
|
448
|
-
toArray() {
|
|
449
|
-
return [this.year(), this.month(), this.date(), this.hour(), this.minute(), this.second(), this.millisecond()];
|
|
450
|
-
}
|
|
451
|
-
// Dates boolean algebra
|
|
452
|
-
isAfter(date, unit) {
|
|
453
|
-
const _unit = unit ? mapUnitOfTime(unit) : void 0;
|
|
454
|
-
return isAfter(this._date, date.toDate(), _unit);
|
|
455
|
-
}
|
|
456
|
-
isBefore(date, unit) {
|
|
457
|
-
const _unit = unit ? mapUnitOfTime(unit) : void 0;
|
|
458
|
-
return isBefore(this.toDate(), date.toDate(), _unit);
|
|
459
|
-
}
|
|
460
|
-
isBetween(from, to, unit, inclusivity) {
|
|
461
|
-
const _unit = unit ? mapUnitOfTime(unit) : void 0;
|
|
462
|
-
return isBetween(this.toDate(), from.toDate(), to.toDate(), _unit, inclusivity);
|
|
463
|
-
}
|
|
464
|
-
isSame(date, unit) {
|
|
465
|
-
const _unit = unit ? mapUnitOfTime(unit) : void 0;
|
|
466
|
-
return isSame(this._date, date.toDate(), _unit);
|
|
467
|
-
}
|
|
468
|
-
isSameOrAfter(date, unit) {
|
|
469
|
-
const _unit = unit ? mapUnitOfTime(unit) : void 0;
|
|
470
|
-
return isSameOrAfter(this._date, date.toDate(), _unit);
|
|
471
|
-
}
|
|
472
|
-
isSameOrBefore(date, unit) {
|
|
473
|
-
const _unit = unit ? mapUnitOfTime(unit) : void 0;
|
|
474
|
-
return isSameOrBefore(this._date, date.toDate(), _unit);
|
|
475
|
-
}
|
|
476
|
-
isValid() {
|
|
477
|
-
return isDateValid(this._date);
|
|
478
|
-
}
|
|
479
|
-
valueOf() {
|
|
480
|
-
return this._date.valueOf() - ((this._offset || 0) * 60000);
|
|
481
|
-
}
|
|
482
|
-
unix() {
|
|
483
|
-
// return getUnixTime(this._date);
|
|
484
|
-
return Math.floor(this.valueOf() / 1000);
|
|
485
|
-
}
|
|
486
|
-
utcOffset(b, keepLocalTime) {
|
|
487
|
-
const _config = this._toConfig();
|
|
488
|
-
if (!b && b !== 0) {
|
|
489
|
-
return getUTCOffset(this._date, _config);
|
|
490
|
-
}
|
|
491
|
-
this._date = setUTCOffset(this._date, b, keepLocalTime, false, _config);
|
|
492
|
-
this._offset = _config._offset;
|
|
493
|
-
this._isUTC = _config._isUTC;
|
|
494
|
-
return this;
|
|
495
|
-
}
|
|
496
|
-
utc(keepLocalTime) {
|
|
497
|
-
return this.utcOffset(0, keepLocalTime);
|
|
498
|
-
}
|
|
499
|
-
local(keepLocalTime) {
|
|
500
|
-
if (this._isUTC) {
|
|
501
|
-
this.utcOffset(0, keepLocalTime);
|
|
502
|
-
this._isUTC = false;
|
|
503
|
-
if (keepLocalTime) {
|
|
504
|
-
this.subtract(getDateOffset(this._date), 'm');
|
|
505
|
-
}
|
|
506
|
-
}
|
|
507
|
-
return this;
|
|
508
|
-
}
|
|
509
|
-
parseZone(input) {
|
|
510
|
-
const _config = this._toConfig();
|
|
511
|
-
this._date = setOffsetToParsedOffset(this._date, input, _config);
|
|
512
|
-
this._offset = _config._offset;
|
|
513
|
-
this._isUTC = _config._isUTC;
|
|
514
|
-
return this;
|
|
515
|
-
}
|
|
516
|
-
hasAlignedHourOffset(input) {
|
|
517
|
-
return hasAlignedHourOffset(this._date, input ? input._date : void 0);
|
|
518
|
-
}
|
|
519
|
-
isDST() {
|
|
520
|
-
return isDaylightSavingTime(this._date);
|
|
521
|
-
}
|
|
522
|
-
isLocal() {
|
|
523
|
-
return !this._isUTC;
|
|
524
|
-
}
|
|
525
|
-
isUtcOffset() {
|
|
526
|
-
return this._isUTC;
|
|
527
|
-
}
|
|
528
|
-
isUTC() {
|
|
529
|
-
return this.isUtc();
|
|
530
|
-
}
|
|
531
|
-
isUtc() {
|
|
532
|
-
return this._isUTC && this._offset === 0;
|
|
533
|
-
}
|
|
534
|
-
// Timezone
|
|
535
|
-
zoneAbbr() {
|
|
536
|
-
return getZoneAbbr(this._isUTC);
|
|
537
|
-
}
|
|
538
|
-
zoneName() {
|
|
539
|
-
return getZoneName(this._isUTC);
|
|
540
|
-
}
|
|
541
|
-
year(year) {
|
|
542
|
-
if (!year && year !== 0) {
|
|
543
|
-
return getFullYear(this._date, this._isUTC);
|
|
544
|
-
}
|
|
545
|
-
this._date = cloneDate(setFullYear(this._date, year));
|
|
546
|
-
return this;
|
|
547
|
-
}
|
|
548
|
-
weekYear(val) {
|
|
549
|
-
if (!val && val !== 0) {
|
|
550
|
-
return getWeekYear(this._date, this._locale, this.isUTC());
|
|
551
|
-
}
|
|
552
|
-
const date = getSetWeekYear(this._date, val, this._locale, this.isUTC());
|
|
553
|
-
if (isDate(date)) {
|
|
554
|
-
this._date = date;
|
|
555
|
-
}
|
|
556
|
-
return this;
|
|
557
|
-
}
|
|
558
|
-
isoWeekYear(val) {
|
|
559
|
-
if (!val && val !== 0) {
|
|
560
|
-
return getISOWeekYear(this._date, this.isUTC());
|
|
561
|
-
}
|
|
562
|
-
const date = getSetISOWeekYear(this._date, val, this.isUtc());
|
|
563
|
-
if (isDate(date)) {
|
|
564
|
-
this._date = date;
|
|
565
|
-
}
|
|
566
|
-
return this;
|
|
567
|
-
}
|
|
568
|
-
isLeapYear() {
|
|
569
|
-
return isLeapYear(getFullYear(this.toDate(), this.isUTC()));
|
|
570
|
-
}
|
|
571
|
-
month(month) {
|
|
572
|
-
if (!month && month !== 0) {
|
|
573
|
-
return getMonth(this._date, this._isUTC);
|
|
574
|
-
}
|
|
575
|
-
let _month = month;
|
|
576
|
-
if (isString(month)) {
|
|
577
|
-
const locale = this._locale || getLocale();
|
|
578
|
-
_month = locale.monthsParse(month);
|
|
579
|
-
}
|
|
580
|
-
if (isNumber(_month)) {
|
|
581
|
-
this._date = cloneDate(setMonth(this._date, _month, this._isUTC));
|
|
582
|
-
}
|
|
583
|
-
return this;
|
|
584
|
-
}
|
|
585
|
-
hour(hours) {
|
|
586
|
-
return this.hours(hours);
|
|
587
|
-
}
|
|
588
|
-
hours(hours) {
|
|
589
|
-
if (!hours && hours !== 0) {
|
|
590
|
-
return getHours(this._date, this._isUTC);
|
|
591
|
-
}
|
|
592
|
-
this._date = cloneDate(setHours(this._date, hours, this._isUTC));
|
|
593
|
-
return this;
|
|
594
|
-
}
|
|
595
|
-
minute(minutes) {
|
|
596
|
-
return this.minutes(minutes);
|
|
597
|
-
}
|
|
598
|
-
minutes(minutes) {
|
|
599
|
-
if (!minutes && minutes !== 0) {
|
|
600
|
-
return getMinutes(this._date, this._isUTC);
|
|
601
|
-
}
|
|
602
|
-
this._date = cloneDate(setMinutes(this._date, minutes, this._isUTC));
|
|
603
|
-
return this;
|
|
604
|
-
}
|
|
605
|
-
second(seconds) {
|
|
606
|
-
return this.seconds(seconds);
|
|
607
|
-
}
|
|
608
|
-
seconds(seconds) {
|
|
609
|
-
if (!seconds && seconds !== 0) {
|
|
610
|
-
return getSeconds(this._date, this._isUTC);
|
|
611
|
-
}
|
|
612
|
-
this._date = cloneDate(setSeconds(this._date, seconds, this._isUTC));
|
|
613
|
-
return this;
|
|
614
|
-
}
|
|
615
|
-
millisecond(ms) {
|
|
616
|
-
return this.milliseconds(ms);
|
|
617
|
-
}
|
|
618
|
-
milliseconds(seconds) {
|
|
619
|
-
if (!seconds && seconds !== 0) {
|
|
620
|
-
return getMilliseconds(this._date, this._isUTC);
|
|
621
|
-
}
|
|
622
|
-
this._date = cloneDate(setMilliseconds(this._date, seconds, this._isUTC));
|
|
623
|
-
return this;
|
|
624
|
-
}
|
|
625
|
-
date(date) {
|
|
626
|
-
if (!date && date !== 0) {
|
|
627
|
-
return getDate(this._date, this._isUTC);
|
|
628
|
-
}
|
|
629
|
-
this._date = cloneDate(setDate(this._date, date, this._isUTC));
|
|
630
|
-
return this;
|
|
631
|
-
}
|
|
632
|
-
day(input) {
|
|
633
|
-
if (!input && input !== 0) {
|
|
634
|
-
return getDayOfWeek(this._date, this._isUTC);
|
|
635
|
-
}
|
|
636
|
-
let _input = input;
|
|
637
|
-
if (isString(input)) {
|
|
638
|
-
_input = parseWeekday(input, this._locale);
|
|
639
|
-
}
|
|
640
|
-
if (isNumber(_input)) {
|
|
641
|
-
this._date = setDayOfWeek(this._date, _input, this._locale, this._isUTC);
|
|
642
|
-
}
|
|
643
|
-
return this;
|
|
644
|
-
}
|
|
645
|
-
weekday(val) {
|
|
646
|
-
if (!val && val !== 0) {
|
|
647
|
-
return getLocaleDayOfWeek(this._date, this._locale, this._isUTC);
|
|
648
|
-
}
|
|
649
|
-
this._date = setLocaleDayOfWeek(this._date, val, { locale: this._locale, isUTC: this._isUTC });
|
|
650
|
-
return this;
|
|
651
|
-
}
|
|
652
|
-
isoWeekday(val) {
|
|
653
|
-
if (!val && val !== 0) {
|
|
654
|
-
return getISODayOfWeek(this._date);
|
|
655
|
-
}
|
|
656
|
-
this._date = setISODayOfWeek(this._date, val);
|
|
657
|
-
return this;
|
|
658
|
-
}
|
|
659
|
-
dayOfYear(val) {
|
|
660
|
-
if (!val && val !== 0) {
|
|
661
|
-
return getDayOfYear(this._date);
|
|
662
|
-
}
|
|
663
|
-
this._date = setDayOfYear(this._date, val);
|
|
664
|
-
return this;
|
|
665
|
-
}
|
|
666
|
-
week(input) {
|
|
667
|
-
if (!input && input !== 0) {
|
|
668
|
-
return getWeek(this._date, this._locale);
|
|
669
|
-
}
|
|
670
|
-
this._date = setWeek(this._date, input, this._locale);
|
|
671
|
-
return this;
|
|
672
|
-
}
|
|
673
|
-
weeks(input) {
|
|
674
|
-
return this.week(input);
|
|
675
|
-
}
|
|
676
|
-
isoWeek(val) {
|
|
677
|
-
if (!val && val !== 0) {
|
|
678
|
-
return getISOWeek(this._date);
|
|
679
|
-
}
|
|
680
|
-
this._date = setISOWeek(this._date, val);
|
|
681
|
-
return this;
|
|
682
|
-
}
|
|
683
|
-
isoWeeks(val) {
|
|
684
|
-
return this.isoWeek(val);
|
|
685
|
-
}
|
|
686
|
-
weeksInYear() {
|
|
687
|
-
return getWeeksInYear(this._date, this._isUTC, this._locale);
|
|
688
|
-
}
|
|
689
|
-
isoWeeksInYear() {
|
|
690
|
-
return getISOWeeksInYear(this._date, this._isUTC);
|
|
691
|
-
}
|
|
692
|
-
daysInMonth() {
|
|
693
|
-
return daysInMonth(getFullYear(this._date, this._isUTC), getMonth(this._date, this._isUTC));
|
|
694
|
-
}
|
|
695
|
-
quarter(val) {
|
|
696
|
-
if (!val && val !== 0) {
|
|
697
|
-
return getQuarter(this._date, this._isUTC);
|
|
698
|
-
}
|
|
699
|
-
this._date = setQuarter(this._date, val, this._isUTC);
|
|
700
|
-
return this;
|
|
701
|
-
}
|
|
702
|
-
quarters(val) {
|
|
703
|
-
return this.quarter(val);
|
|
704
|
-
}
|
|
705
|
-
startOf(period) {
|
|
706
|
-
const _per = mapUnitOfTime(period);
|
|
707
|
-
this._date = startOf(this._date, _per, this._isUTC);
|
|
708
|
-
return this;
|
|
709
|
-
}
|
|
710
|
-
}
|
|
711
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9taXMtY29tcG9uZW50cy9zcmMvZGF0ZXBpY2tlci9zdWItY29tcG9uZW50cy9jaHJvbm9zL3Rlc3QvY2hhaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEscURBQXFEO0FBQ3JELE9BQU8sRUFBRSxHQUFHLEVBQWEsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRXBELE9BQU8sRUFDTCxPQUFPLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBRWxGLE1BQU0sdUJBQXVCLENBQUM7QUFDL0IsT0FBTyxFQUNMLE9BQU8sRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUNyRSxVQUFVLEVBQ1gsTUFBTSx1QkFBdUIsQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUMsT0FBTyxFQUNMLE9BQU8sRUFDUCxTQUFTLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQ3hFLFdBQVcsRUFDWixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDdkMsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUV0RSxPQUFPLEVBQ0wsYUFBYSxFQUNiLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxvQkFBb0IsRUFBRSx1QkFBdUIsRUFDakYsWUFBWSxFQUNiLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUFFLFVBQVUsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVEs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UUFDbkMsSUFBSSxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRXBELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztDQUVGIiwic291cmNlc0NvbnRlbnQiOlsiLy8gdHNsaW50OmRpc2FibGU6bWF4LWxpbmUtbGVuZ3RoIG1heC1maWxlLWxpbmUtY291bnRcbmltcG9ydCB7IGFkZCwgcGFyc2VEYXRlLCBzdWJ0cmFjdCB9IGZyb20gJy4uL2luZGV4JztcbmltcG9ydCB7IERhdGVBcnJheSwgRGF0ZU9iamVjdCwgVW5pdE9mVGltZSB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7XG4gIGdldERhdGUsIGdldEZ1bGxZZWFyLCBnZXRIb3VycywgZ2V0TWlsbGlzZWNvbmRzLCBnZXRNaW51dGVzLCBnZXRNb250aCwgZ2V0U2Vjb25kcyxcbiAgZ2V0VW5peFRpbWVcbn0gZnJvbSAnLi4vdXRpbHMvZGF0ZS1nZXR0ZXJzJztcbmltcG9ydCB7XG4gIHNldERhdGUsIHNldEZ1bGxZZWFyLCBzZXRIb3Vycywgc2V0TWlsbGlzZWNvbmRzLCBzZXRNaW51dGVzLCBzZXRNb250aCxcbiAgc2V0U2Vjb25kc1xufSBmcm9tICcuLi91dGlscy9kYXRlLXNldHRlcnMnO1xuaW1wb3J0IHsgY2xvbmVEYXRlIH0gZnJvbSAnLi4vY3JlYXRlL2Nsb25lJztcbmltcG9ydCB7XG4gIGlzQXJyYXksXG4gIGlzQm9vbGVhbiwgaXNEYXRlLCBpc0RhdGVWYWxpZCwgaXNGdW5jdGlvbiwgaXNOdW1iZXIsIGlzT2JqZWN0LCBpc1N0cmluZyxcbiAgaXNVbmRlZmluZWRcbn0gZnJvbSAnLi4vdXRpbHMvdHlwZS1jaGVja3MnO1xuaW1wb3J0IHsgZm9ybWF0RGF0ZSB9IGZyb20gJy4uL2Zvcm1hdCc7XG5pbXBvcnQgeyBJU09fODYwMSwgUkZDXzI4MjIgfSBmcm9tICcuLi9jcmVhdGUvZnJvbS1zdHJpbmctYW5kLWZvcm1hdCc7XG5pbXBvcnQgeyBMb2NhbGUsIExvY2FsZURhdGEgfSBmcm9tICcuLi9sb2NhbGUvbG9jYWxlLmNsYXNzJztcbmltcG9ydCB7XG4gIGdldERhdGVPZmZzZXQsXG4gIGdldFVUQ09mZnNldCwgaGFzQWxpZ25lZEhvdXJPZmZzZXQsIGlzRGF5bGlnaHRTYXZpbmdUaW1lLCBzZXRPZmZzZXRUb1BhcnNlZE9mZnNldCxcbiAgc2V0VVRDT2Zmc2V0XG59IGZyb20gJy4uL3VuaXRzL29mZnNldCc7XG5pbXBvcnQgeyBpc0xlYXBZZWFyLCBwYXJzZVR3b0RpZ2l0WWVhciB9IGZyb20gJy4uL3VuaXRzL3llYXInO1xuaW1wb3J0IHsgaXNBZnRlciwgaXNCZWZvcmUsIGlzQmV0d2VlbiwgaXNTYW1lLCBpc1NhbWVPckFmdGVyLCBpc1NhbWVPckJlZm9yZSB9IGZyb20gJy4uL3V0aWxzL2RhdGUtY29tcGFyZSc7XG5pbXBvcnQgeyBkYXlzSW5Nb250aCB9IGZyb20gJy4uL3VuaXRzL21vbnRoJztcbmltcG9ydCB7XG4gIGdldERheU9mV2VlaywgZ2V0SVNPRGF5T2ZXZWVrLCBnZXRMb2NhbGVEYXlPZldlZWssIHBhcnNlV2Vla2RheSwgc2V0RGF5T2ZXZWVrLCBzZXRJU09EYXlPZldlZWssXG4gIHNldExvY2FsZURheU9mV2Vla1xufSBmcm9tICcuLi91bml0cy9kYXktb2Ytd2Vlayc7XG5pbXBvcnQgeyBnZXRJU09XZWVrLCBnZXRXZWVrLCBzZXRJU09XZWVrLCBzZXRXZWVrIH0gZnJvbSAnLi4vdW5pdHMvd2Vlayc7XG5pbXBvcnQge1xuICBnZXRJU09XZWVrc0luWWVhciwgZ2V0SVNPV2Vla1llYXIsIGdldFNldElTT1dlZWtZZWFyLCBnZXRTZXRXZWVrWWVhciwgZ2V0V2Vla3NJblllYXIsXG4gIGdldFdlZWtZZWFyXG59IGZyb20gJy4uL3VuaXRzL3dlZWsteWVhcic7XG5pbXBvcnQgeyBlbmRPZiwgc3RhcnRPZiB9IGZyb20gJy4uL3V0aWxzL3N0YXJ0LWVuZC1vZic7XG5pbXBvcnQgeyBnZXRRdWFydGVyLCBzZXRRdWFydGVyIH0gZnJvbSAnLi4vdW5pdHMvcXVhcnRlcic7XG5pbXBvcnQgeyBnZXREYXlPZlllYXIsIHNldERheU9mWWVhciB9IGZyb20gJy4uL3VuaXRzL2RheS1vZi15ZWFyJztcbmltcG9ydCB7IGdldFpvbmVBYmJyLCBnZXRab25lTmFtZSB9IGZyb20gJy4uL3VuaXRzL3RpbWV6b25lJztcbmltcG9ydCB7IGRpZmYgfSBmcm9tICcuLi9tb21lbnQvZGlmZic7XG5pbXBvcnQgeyBEYXRlUGFyc2luZ0NvbmZpZyB9IGZyb20gJy4uL2NyZWF0ZS9wYXJzaW5nLnR5cGVzJztcbmltcG9ydCB7IGNhbGVuZGFyLCBDYWxlbmRhclNwZWMgfSBmcm9tICcuLi9tb21lbnQvY2FsZW5kYXInO1xuaW1wb3J0IHsgZGVmaW5lTG9jYWxlLCBnZXRMb2NhbGUsIGdldFNldEdsb2JhbExvY2FsZSwgbGlzdExvY2FsZXMgfSBmcm9tICcuLi9sb2NhbGUvbG9jYWxlcyc7XG5pbXBvcnQgeyBtYXgsIG1pbiB9IGZyb20gJy4uL21vbWVudC9taW4tbWF4JztcbmltcG9ydCB7IER1cmF0aW9uLCBpc0R1cmF0aW9uIH0gZnJvbSAnLi4vZHVyYXRpb24vY29uc3RydWN0b3InO1xuaW1wb3J0IHsgY3JlYXRlTG9jYWxPclVUQyB9IGZyb20gJy4uL2NyZWF0ZS9mcm9tLWFueXRoaW5nJztcbmltcG9ydCB7IGNyZWF0ZUR1cmF0aW9uIH0gZnJvbSAnLi4vZHVyYXRpb24vY3JlYXRlJztcblxuZXhwb3J0IHR5cGUgRGF0ZUlucHV0ID0gc3RyaW5nIHwgbnVtYmVyIHwgRGF0ZSB8IHN0cmluZ1tdIHwgRGF0ZUFycmF5IHwgTW9tZW50SW5wdXRPYmplY3Q7XG5cbmV4cG9ydCBjb25zdCBtb21lbnQ6IE1vbWVudEZuID0gKF9tb21lbnQgYXMgTW9tZW50Rm4pO1xuXG5leHBvcnQgaW50ZXJmYWNlIE1vbWVudEZuIHtcbiAgKGlucHV0PzogRGF0ZUlucHV0IHwgS2hyb25vcywgZm9ybWF0Pzogc3RyaW5nIHwgc3RyaW5nW10sIGxvY2FsZUtleT86IHN0cmluZyB8IGJvb2xlYW4sIHN0cmljdD86IGJvb2xlYW4sIGlzVVRDPzogYm9vbGVhbik6IEtocm9ub3M7XG5cbiAgSVNPXzg2MDE6IHN0cmluZztcbiAgUkZDXzI4MjI6IHN0cmluZztcblxuICB1dGMoaW5wdXQ/OiBEYXRlSW5wdXQgfCBLaHJvbm9zLCBmb3JtYXQ/OiBzdHJpbmcgfCBzdHJpbmdbXSwgbG9jYWxlS2V5Pzogc3RyaW5nIHwgYm9vbGVhbiwgc3RyaWN0PzogYm9vbGVhbik6IEtocm9ub3M7XG5cbiAgcGFyc2Vab25lKGlucHV0PzogRGF0ZUlucHV0IHwgS2hyb25vcywgZm9ybWF0Pzogc3RyaW5nIHwgc3RyaW5nW10sIGxvY2FsZUtleT86IHN0cmluZyB8IGJvb2xlYW4sIHN0cmljdD86IGJvb2xlYW4pOiBLaHJvbm9zO1xuXG4gIHVuaXgobnVtOiBudW1iZXIpOiBLaHJvbm9zO1xuXG4gIGxvY2FsZShrZXk/OiBzdHJpbmcgfCBzdHJpbmdbXSwgdmFsdWVzPzogTG9jYWxlRGF0YSk6IHN0cmluZztcblxuICBkdXJhdGlvbihpbnA/OiBEdXJhdGlvbiB8IERhdGVJbnB1dCB8IEtocm9ub3MsIHVuaXQ/OiBNb21lbnRVbml0T2ZUaW1lKTogRHVyYXRpb247XG5cbiAgZGVmaW5lTG9jYWxlKG5hbWU6IHN0cmluZywgY29uZmlnPzogTG9jYWxlRGF0YSk6IExvY2FsZTtcblxuICBwYXJzZVR3b0RpZ2l0WWVhcihpbnB1dDogc3RyaW5nKTogbnVtYmVyO1xuXG4gIGlzRGF0ZShpbnB1dD86IGFueSk6IGlucHV0IGlzIERhdGU7XG5cbiAgbW9udGhzKCk6IHN0cmluZ1tdO1xuXG4gIG1vbnRocyhpbmRleDogbnVtYmVyKTogc3RyaW5nO1xuXG4gIG1vbnRocyhmb3JtYXQ6IHN0cmluZyk6IHN0cmluZ1tdO1xuXG4gIG1vbnRocyhmb3JtYXQ6IHN0cmluZywgaW5kZXg6IG51bWJlcik6IHN0cmluZztcblxuICBtb250aHNTaG9ydCgpOiBzdHJpbmdbXTtcblxuICBtb250aHNTaG9ydChpbmRleDogbnVtYmVyKTogc3RyaW5nO1xuXG4gIG1vbnRoc1Nob3J0KGZvcm1hdDogc3RyaW5nKTogc3RyaW5nW107XG5cbiAgbW9udGhzU2hvcnQoZm9ybWF0OiBzdHJpbmcsIGluZGV4OiBudW1iZXIpOiBzdHJpbmc7XG5cbiAgd2Vla2RheXMoKTogc3RyaW5nW107XG5cbiAgd2Vla2RheXMoaW5kZXg6IG51bWJlcik6IHN0cmluZztcblxuICB3ZWVrZGF5cyhmb3JtYXQ6IHN0cmluZyk6IHN0cmluZ1tdO1xuXG4gIHdlZWtkYXlzKGZvcm1hdDogc3RyaW5nLCBpbmRleDogbnVtYmVyKTogc3RyaW5nO1xuXG4gIHdlZWtkYXlzKGxvY2FsZVNvcnRlZDogYm9vbGVhbik6IHN0cmluZ1tdO1xuXG4gIHdlZWtkYXlzKGxvY2FsZVNvcnRlZDogYm9vbGVhbiwgaW5kZXg6IG51bWJlcik6IHN0cmluZztcblxuICB3ZWVrZGF5cyhsb2NhbGVTb3J0ZWQ6IGJvb2xlYW4sIGZvcm1hdDogc3RyaW5nKTogc3RyaW5nW107XG5cbiAgd2Vla2RheXMobG9jYWxlU29ydGVkOiBib29sZWFuLCBmb3JtYXQ6IHN0cmluZywgaW5kZXg6IG51bWJlcik6IHN0cmluZztcblxuICB3ZWVrZGF5c1Nob3J0KCk6IHN0cmluZ1tdO1xuXG4gIHdlZWtkYXlzU2hvcnQoaW5kZXg6IG51bWJlcik6IHN0cmluZztcblxuICB3ZWVrZGF5c1Nob3J0KGZvcm1hdDogc3RyaW5nKTogc3RyaW5nW107XG5cbiAgd2Vla2RheXNTaG9ydChmb3JtYXQ6IHN0cmluZywgaW5kZXg6IG51bWJlcik6IHN0cmluZztcblxuICB3ZWVrZGF5c1Nob3J0KGxvY2FsZVNvcnRlZDogYm9vbGVhbik6IHN0cmluZ1tdO1xuXG4gIHdlZWtkYXlzU2hvcnQobG9jYWxlU29ydGVkOiBib29sZWFuLCBpbmRleDogbnVtYmVyKTogc3RyaW5nO1xuXG4gIHdlZWtkYXlzU2hvcnQobG9jYWxlU29ydGVkOiBib29sZWFuLCBmb3JtYXQ6IHN0cmluZyk6IHN0cmluZ1tdO1xuXG4gIHdlZWtkYXlzU2hvcnQobG9jYWxlU29ydGVkOiBib29sZWFuLCBmb3JtYXQ6IHN0cmluZywgaW5kZXg6IG51bWJlcik6IHN0cmluZztcblxuICB3ZWVrZGF5c01pbigpOiBzdHJpbmdbXTtcblxuICB3ZWVrZGF5c01pbihpbmRleDogbnVtYmVyKTogc3RyaW5nO1xuXG4gIHdlZWtkYXlzTWluKGZvcm1hdDogc3RyaW5nKTogc3RyaW5nW107XG5cbiAgd2Vla2RheXNNaW4oZm9ybWF0OiBzdHJpbmcsIGluZGV4OiBudW1iZXIpOiBzdHJpbmc7XG5cbiAgd2Vla2RheXNNaW4obG9jYWxlU29ydGVkOiBib29sZWFuKTogc3RyaW5nW107XG5cbiAgd2Vla2RheXNNaW4obG9jYWxlU29ydGVkOiBib29sZWFuLCBpbmRleDogbnVtYmVyKTogc3RyaW5nO1xuXG4gIHdlZWtkYXlzTWluKGxvY2FsZVNvcnRlZDogYm9vbGVhbiwgZm9ybWF0OiBzdHJpbmcpOiBzdHJpbmdbXTtcblxuICB3ZWVrZGF5c01pbihsb2NhbGVTb3J0ZWQ6IGJvb2xlYW4sIGZvcm1hdDogc3RyaW5nLCBpbmRleDogbnVtYmVyKTogc3RyaW5nO1xuXG4gIHJlbGF0aXZlVGltZVRocmVzaG9sZCh0aHJlc2hvbGQ6IHN0cmluZyk6IG51bWJlciB8IGJvb2xlYW47XG5cbiAgcmVsYXRpdmVUaW1lVGhyZXNob2xkKHRocmVzaG9sZDogc3RyaW5nLCBsaW1pdDogbnVtYmVyKTogYm9vbGVhbjtcblxuICBtaW4oLi4uZGF0ZXM6ICgoRGF0ZUlucHV0IHwgS2hyb25vcylbXSB8IChEYXRlSW5wdXQgfCBLaHJvbm9zKSlbXSk6IEtocm9ub3M7XG5cbiAgbWF4KC4uLmRhdGVzOiAoKERhdGVJbnB1dCB8IEtocm9ub3MpW10gfCAoRGF0ZUlucHV0IHwgS2hyb25vcykpW10pOiBLaHJvbm9zO1xuXG4gIGxvY2FsZURhdGEoa2V5Pzogc3RyaW5nIHwgc3RyaW5nW10gfCBLaHJvbm9zKTogTG9jYWxlO1xuXG4gIHVwZGF0ZUxvY2FsZShsYW5ndWFnZTogc3RyaW5nLCBsb2NhbGVTcGVjPzogTG9jYWxlRGF0YSk6IExvY2FsZTtcblxuICBjYWxlbmRhckZvcm1hdChtOiBEYXRlLCBub3c6IERhdGUpOiBzdHJpbmc7XG5cbiAgLy8gdG9kbzogcmVtb3ZlIHRoaXNcbiAgY2FsZW5kYXJGb3JtYXQobTogS2hyb25vcywgbm93OiBLaHJvbm9zKTogc3RyaW5nO1xuXG4gIC8vIHRvZG86IGltcGxlbWVudFxuICBpbnZhbGlkKCk6IEtocm9ub3M7XG5cbiAgbG9jYWxlcygpOiBzdHJpbmdbXTtcblxuICAvLyB0b2RvOiBpbXBsZW1lbnRcbiAgdXBkYXRlT2Zmc2V0KG06IEtocm9ub3MsIGtlZXBUaW1lPzogYm9vbGVhbik6IHZvaWQ7XG59XG5cbmZ1bmN0aW9uIF9tb21lbnQoaW5wdXQ/OiBEYXRlSW5wdXQgfCBLaHJvbm9zLCBmb3JtYXQ/OiBzdHJpbmcgfCBzdHJpbmdbXSwgbG9jYWxlS2V5Pzogc3RyaW5nIHwgYm9vbGVhbiwgc3RyaWN0PzogYm9vbGVhbiwgaXNVVEM/OiBib29sZWFuKTogS2hyb25vcyB7XG4gIGlmIChpbnB1dCBpbnN0YW5jZW9mIEtocm9ub3MpIHtcbiAgICBjb25zdCBfZGF0ZSA9IGlucHV0LmNsb25lKCk7XG5cbiAgICByZXR1cm4gaXNVVEMgPyBfZGF0ZS51dGMoKSA6IF9kYXRlO1xuICB9XG5cbiAgaWYgKGlzQm9vbGVhbihsb2NhbGVLZXkpKSB7XG4gICAgcmV0dXJuIG5ldyBLaHJvbm9zKGlucHV0LCBmb3JtYXQsIG51bGwsIGxvY2FsZUtleSwgaXNVVEMpO1xuICB9XG5cbiAgcmV0dXJuIG5ldyBLaHJvbm9zKGlucHV0LCBmb3JtYXQsIGxvY2FsZUtleSwgc3RyaWN0LCBpc1VUQyk7XG59XG5cbm1vbWVudC51dGMgPSAoaW5wdXQ/OiBEYXRlSW5wdXQgfCBLaHJvbm9zLCBmb3JtYXQ/OiBzdHJpbmcsIGxvY2FsZUtleT86IHN0cmluZyB8IGJvb2xlYW4sIHN0cmljdD86IGJvb2xlYW4pOiBLaHJvbm9zID0+IHtcbiAgcmV0dXJuIF9tb21lbnQoaW5wdXQsIGZvcm1hdCwgbG9jYWxlS2V5LCBzdHJpY3QsIHRydWUpO1xufTtcblxubW9tZW50LnBhcnNlWm9uZSA9IChpbnB1dD86IERhdGVJbnB1dCB8IEtocm9ub3MsIGZvcm1hdD86IHN0cmluZywgbG9jYWxlS2V5Pzogc3RyaW5nIHwgYm9vbGVhbiwgc3RyaWN0PzogYm9vbGVhbik6IEtocm9ub3MgPT4ge1xuICByZXR1cm4gX21vbWVudChpbnB1dCwgZm9ybWF0LCBsb2NhbGVLZXksIHN0cmljdCwgdHJ1ZSkucGFyc2Vab25lKCk7XG59O1xuXG5tb21lbnQubG9jYWxlID0gZ2V0U2V0R2xvYmFsTG9jYWxlO1xubW9tZW50LmxvY2FsZURhdGEgPSAoa2V5Pzogc3RyaW5nIHwgc3RyaW5nW10gfCBLaHJvbm9zKTogTG9jYWxlID0+IHtcbiAgaWYgKGtleSBpbnN0YW5jZW9mIEtocm9ub3MpIHtcbiAgICByZXR1cm4ga2V5LmxvY2FsZURhdGEoKTtcbiAgfVxuXG4gIHJldHVybiBnZXRMb2NhbGUoa2V5KTtcbn07XG5cbi8vIG1vbWVudC51dGMgPSBjcmVhdGVVVEM7XG5tb21lbnQudW5peCA9IChpbnA6IG51bWJlcikgPT4gbmV3IEtocm9ub3MoaW5wICogMTAwMCk7XG5tb21lbnQuSVNPXzg2MDEgPSBJU09fODYwMTtcbm1vbWVudC5SRkNfMjgyMiA9IFJGQ18yODIyO1xubW9tZW50LmRlZmluZUxvY2FsZSA9IGRlZmluZUxvY2FsZTtcbm1vbWVudC5wYXJzZVR3b0RpZ2l0WWVhciA9IHBhcnNlVHdvRGlnaXRZZWFyO1xubW9tZW50LmlzRGF0ZSA9IGlzRGF0ZTtcbm1vbWVudC5pbnZhbGlkID0gZnVuY3Rpb24gX2ludmFsaWQoKTogS2hyb25vcyB7XG4gIHJldHVybiBuZXcgS2hyb25vcyhuZXcgRGF0ZShOYU4pKTtcbn07XG5cbi8vIGR1cmF0aW9uKGlucD86IER1cmF0aW9uIHwgRGF0ZUlucHV0IHwgS2hyb25vcywgdW5pdD86IE1vbWVudFVuaXRPZlRpbWUpOiBEdXJhdGlvbjtcbm1vbWVudC5kdXJhdGlvbiA9IChpbnB1dD86IER1cmF0aW9uIHwgRGF0ZUlucHV0IHwgS2hyb25vcywgdW5pdD86IE1vbWVudFVuaXRPZlRpbWUpOiBEdXJhdGlvbiA9PiB7XG4gIGNvbnN0IF91bml0ID0gbWFwVW5pdE9mVGltZSh1bml0KTtcbiAgaWYgKGlzRGF0ZShpbnB1dCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3RvZG8gaW1wbGVtZW50Jyk7XG4gIH1cblxuICBpZiAoaW5wdXQgPT0gbnVsbCkge1xuICAgIHJldHVybiBjcmVhdGVEdXJhdGlvbigpO1xuICB9XG5cbiAgaWYgKGlzRHVyYXRpb24oaW5wdXQpKSB7XG4gICAgcmV0dXJuIGNyZWF0ZUR1cmF0aW9uKGlucHV0LCBfdW5pdCwgeyBfbG9jYWxlOiBpbnB1dC5fbG9jYWxlIH0pO1xuICB9XG5cbiAgaWYgKGlzU3RyaW5nKGlucHV0KSB8fCBpc051bWJlcihpbnB1dCkgfHwgaXNEdXJhdGlvbihpbnB1dCkgfHwgaXNPYmplY3Q8RGF0ZU9iamVjdD4oaW5wdXQpKSB7XG4gICAgcmV0dXJuIGNyZWF0ZUR1cmF0aW9uKGlucHV0LCBfdW5pdCk7XG4gIH1cblxuICB0aHJvdyBuZXcgRXJyb3IoJ3RvZG8gaW1wbGVtZW50Jyk7XG59O1xuXG5tb21lbnQubWluID0gZnVuY3Rpb24gX21pbiguLi5kYXRlczogKChEYXRlSW5wdXQgfCBLaHJvbm9zKVtdIHwgKERhdGVJbnB1dCB8IEtocm9ub3MpKVtdKTogS2hyb25vcyB7XG4gIGNvbnN0IF9maXJzdEFyZyA9IGRhdGVzWzBdO1xuICBjb25zdCBfZGF0ZXMgPSAoaXNBcnJheShfZmlyc3RBcmcpID8gX2ZpcnN0QXJnIDogZGF0ZXMpXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZVxuICAgIC5tYXAoKGRhdGU6IEtocm9ub3MpID0+IF9tb21lbnQoZGF0ZSkpXG4gICAgLm1hcChkYXRlID0+IGRhdGUudG9EYXRlKCkpO1xuXG4gIGNvbnN0IF9kYXRlID0gbWluKC4uLl9kYXRlcyk7XG5cbiAgcmV0dXJuIG5ldyBLaHJvbm9zKF9kYXRlKTtcbn07XG5cbm1vbWVudC5tYXggPSBmdW5jdGlvbiBfbWF4KC4uLmRhdGVzOiAoKERhdGVJbnB1dCB8IEtocm9ub3MpW10gfCAoRGF0ZUlucHV0IHwgS2hyb25vcykpW10pOiBLaHJvbm9zIHtcbiAgY29uc3QgX2ZpcnN0QXJnID0gZGF0ZXNbMF07XG4gIGNvbnN0IF9kYXRlcyA9IChpc0FycmF5KF9maXJzdEFyZykgPyBfZmlyc3RBcmcgOiBkYXRlcylcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lXG4gICAgLm1hcCgoZGF0ZTogS2hyb25vcykgPT4gX21vbWVudChkYXRlKSlcbiAgICAubWFwKGRhdGUgPT4gZGF0ZS50b0RhdGUoKSk7XG5cbiAgY29uc3QgX2RhdGUgPSBtYXgoLi4uX2RhdGVzKTtcblxuICByZXR1cm4gbmV3IEtocm9ub3MoX2RhdGUpO1xufTtcblxubW9tZW50LmxvY2FsZXMgPSAoKTogc3RyaW5nW10gPT4ge1xuICByZXR1cm4gbGlzdExvY2FsZXMoKTtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgTW9tZW50SW5wdXRPYmplY3Qge1xuICB5ZWFycz86IG51bWJlcjtcbiAgeWVhcj86IG51bWJlcjtcbiAgeT86IG51bWJlcjtcblxuICBtb250aHM/OiBudW1iZXI7XG4gIG1vbnRoPzogbnVtYmVyO1xuICBNPzogbnVtYmVyO1xuXG4gIGRheXM/OiBudW1iZXI7XG4gIGRheT86IG51bWJlcjtcbiAgZD86IG51bWJlcjtcblxuICBkYXRlcz86IG51bWJlcjtcbiAgZGF0ZT86IG51bWJlcjtcbiAgRD86IG51bWJlcjtcblxuICBob3Vycz86IG51bWJlcjtcbiAgaG91cj86IG51bWJlcjtcbiAgaD86IG51bWJlcjtcblxuICBtaW51dGVzPzogbnVtYmVyO1xuICBtaW51dGU/OiBudW1iZXI7XG4gIG0/OiBudW1iZXI7XG5cbiAgc2Vjb25kcz86IG51bWJlcjtcbiAgc2Vjb25kPzogbnVtYmVyO1xuICBzPzogbnVtYmVyO1xuXG4gIG1pbGxpc2Vjb25kcz86IG51bWJlcjtcbiAgbWlsbGlzZWNvbmQ/OiBudW1iZXI7XG4gIG1zPzogbnVtYmVyO1xuXG4gIHc/OiBudW1iZXI7XG4gIHdlZWs/OiBudW1iZXI7XG4gIHdlZWtzPzogbnVtYmVyO1xuXG4gIFE/OiBudW1iZXI7XG4gIHF1YXJ0ZXI/OiBudW1iZXI7XG4gIHF1YXJ0ZXJzPzogbnVtYmVyO1xuXG4gIHdlZWtZZWFyPzogbnVtYmVyO1xufVxuXG5leHBvcnQgdHlwZSBNb21lbnRVbml0T2ZUaW1lID0gKFxuICAneWVhcicgfCAneWVhcnMnIHwgJ3knIHxcbiAgJ21vbnRoJyB8ICdtb250aHMnIHwgJ00nIHxcbiAgJ3dlZWsnIHwgJ3dlZWtzJyB8ICd3JyB8XG4gICdkYXknIHwgJ2RheXMnIHwgJ2QnIHxcbiAgJ2hvdXInIHwgJ2hvdXJzJyB8ICdoJyB8XG4gICdtaW51dGUnIHwgJ21pbnV0ZXMnIHwgJ20nIHxcbiAgJ3NlY29uZCcgfCAnc2Vjb25kcycgfCAncycgfFxuICAnbWlsbGlzZWNvbmQnIHwgJ21pbGxpc2Vjb25kcycgfCAnbXMnIHxcbiAgJ3EnIHwgJ3F1YXJ0ZXInIHwgJ3F1YXJ0ZXJzJyB8ICdRJyB8XG4gICdpc29XZWVrJyB8ICdpc29XZWVrcycgfCAnVycgfFxuICAnZGF0ZScgfCAnZGF0ZXMnIHwgJ0QnXG4gICk7XG5cbmV4cG9ydCB0eXBlIE1vbWVudEFsbCA9IE1vbWVudFVuaXRPZlRpbWUgfFxuICAnd2Vla1llYXInIHwgJ3dlZWtZZWFycycgfCAnZ2cnIHxcbiAgJ2lzb1dlZWtZZWFyJyB8ICdpc29XZWVrWWVhcnMnIHwgJ0dHJyB8XG4gICdkYXlPZlllYXInIHwgJ2RheU9mWWVhcnMnIHwgJ0RERCcgfFxuICAnd2Vla2RheScgfCAnd2Vla2RheXMnIHwgJ2UnIHxcbiAgJ2lzb1dlZWtkYXknIHwgJ2lzb1dlZWtkYXlzJyB8ICdFJztcblxuY29uc3QgX3VuaXRzUHJpb3JpdHk6IHtba2V5IGluIFVuaXRPZlRpbWVdOiBudW1iZXJ9ID0ge1xuICB5ZWFyOiAxLFxuICBtb250aDogOCxcbiAgd2VlazogNSxcbiAgaXNvV2VlazogNSxcbiAgZGF5OiAxMSxcbiAgd2Vla2RheTogMTEsXG4gIGlzb1dlZWtkYXk6IDExLFxuICBob3VyczogMTMsXG4gIHdlZWtZZWFyOiAxLFxuICBpc29XZWVrWWVhcjogMSxcbiAgcXVhcnRlcjogNyxcbiAgZGF0ZTogOSxcbiAgZGF5T2ZZZWFyOiA0LFxuICBtaW51dGVzOiAxNCxcbiAgc2Vjb25kczogMTUsXG4gIG1pbGxpc2Vjb25kczogMTZcbn07XG5cbi8vIHRvZG86IGRvIEkgbmVlZCAyIG1hcHBlcnM/XG5jb25zdCBfdGltZUhhc2hNYXA6IHsgW2tleSBpbiBNb21lbnRBbGxdOiBVbml0T2ZUaW1lIHwgc3RyaW5nIH0gPSB7XG4gIHk6ICd5ZWFyJyxcbiAgeWVhcnM6ICd5ZWFyJyxcbiAgeWVhcjogJ3llYXInLFxuICBNOiAnbW9udGgnLFxuICBtb250aHM6ICdtb250aCcsXG4gIG1vbnRoOiAnbW9udGgnLFxuICB3OiAnd2VlaycsXG4gIHdlZWtzOiAnd2VlaycsXG4gIHdlZWs6ICd3ZWVrJyxcblxuICBkOiAnZGF5JyxcbiAgZGF5czogJ2RheScsXG4gIGRheTogJ2RheScsXG5cbiAgZGF0ZTogJ2RhdGUnLFxuICBkYXRlczogJ2RhdGUnLFxuICBEOiAnZGF0ZScsXG5cbiAgaDogJ2hvdXJzJyxcbiAgaG91cjogJ2hvdXJzJyxcbiAgaG91cnM6ICdob3VycycsXG4gIG06ICdtaW51dGVzJyxcbiAgbWludXRlOiAnbWludXRlcycsXG4gIG1pbnV0ZXM6ICdtaW51dGVzJyxcbiAgczogJ3NlY29uZHMnLFxuICBzZWNvbmQ6ICdzZWNvbmRzJyxcbiAgc2Vjb25kczogJ3NlY29uZHMnLFxuICBtczogJ21pbGxpc2Vjb25kcycsXG4gIG1pbGxpc2Vjb25kOiAnbWlsbGlzZWNvbmRzJyxcbiAgbWlsbGlzZWNvbmRzOiAnbWlsbGlzZWNvbmRzJyxcbiAgcXVhcnRlcjogJ3F1YXJ0ZXInLFxuICBxdWFydGVyczogJ3F1YXJ0ZXInLFxuICBxOiAncXVhcnRlcicsXG4gIFE6ICdxdWFydGVyJyxcbiAgaXNvV2VlazogJ2lzb1dlZWsnLFxuICBpc29XZWVrczogJ2lzb1dlZWsnLFxuICBXOiAnaXNvV2VlaycsXG4gIHdlZWtZZWFyOiAnd2Vla1llYXInLFxuICB3ZWVrWWVhcnM6ICd3ZWVrWWVhcicsXG4gIGdnOiAnd2Vla1llYXJzJyxcbiAgaXNvV2Vla1llYXI6ICdpc29XZWVrWWVhcicsXG4gIGlzb1dlZWtZZWFyczogJ2lzb1dlZWtZZWFyJyxcbiAgR0c6ICdpc29XZWVrWWVhcicsXG4gIGRheU9mWWVhcjogJ2RheU9mWWVhcicsXG4gIGRheU9mWWVhcnM6ICdkYXlPZlllYXInLFxuICBEREQ6ICdkYXlPZlllYXInLFxuICB3ZWVrZGF5OiAnd2Vla2RheScsXG4gIHdlZWtkYXlzOiAnd2Vla2RheScsXG4gIGU6ICd3ZWVrZGF5JyxcbiAgaXNvV2Vla2RheTogJ2lzb1dlZWtkYXknLFxuICBpc29XZWVrZGF5czogJ2lzb1dlZWtkYXknLFxuICBFOiAnaXNvV2Vla2RheSdcbn07XG5cbmZ1bmN0aW9uIG1hcFVuaXRPZlRpbWUocGVyaW9kOiBNb21lbnRBbGwpOiBVbml0T2ZUaW1lIHtcbiAgcmV0dXJuIF90aW1lSGFzaE1hcFtwZXJpb2RdIGFzIFVuaXRPZlRpbWU7XG59XG5cbmZ1bmN0aW9uIG1hcE1vbWVudElucHV0T2JqZWN0KG9iajogTW9tZW50SW5wdXRPYmplY3QpOiB7W2tleSBpbiBVbml0T2ZUaW1lXT86IG51bWJlcn0ge1xuICBjb25zdCBfcmVzOiB7W2tleSBpbiBVbml0T2ZUaW1lXT86IG51bWJlcn0gPSB7fTtcblxuICByZXR1cm4gT2JqZWN0LmtleXMob2JqKVxuICAgIC5yZWR1Y2UoKHJlcywga2V5OiBrZXlvZiBNb21lbnRJbnB1dE9iamVjdCkgPT4ge1xuICAgICAgcmVzW21hcFVuaXRPZlRpbWUoa2V5KV0gPSBvYmpba2V5XTtcblxuICAgICAgcmV0dXJuIHJlcztcbiAgICB9LCBfcmVzKTtcbn1cblxuZXhwb3J0IGNsYXNzIEtocm9ub3Mge1xuICBfZGF0ZTogRGF0ZSA9IG5ldyBEYXRlKCk7XG4gIF9pc1VUQyA9IGZhbHNlO1xuICBfaXNTdHJpY3Q6IGJvb2xlYW47XG4gIF9sb2NhbGU6IExvY2FsZTtcbiAgX2Zvcm1hdDogc3RyaW5nIHwgc3RyaW5nW107XG4gIF9vZmZzZXQ6IG51bWJlcjtcbiAgX3R6bTogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKGlucHV0PzogRGF0ZUlucHV0LFxuICAgICAgICAgICAgICBmb3JtYXQ/OiBzdHJpbmcgfCBzdHJpbmdbXSxcbiAgICAgICAgICAgICAgbG9jYWxlS2V5Pzogc3RyaW5nLFxuICAgICAgICAgICAgICBzdHJpY3QgPSBmYWxzZSxcbiAgICAgICAgICAgICAgaXNVVEMgPSBmYWxzZSxcbiAgICAgICAgICAgICAgb2Zmc2V0PzogbnVtYmVyKSB7XG4gICAgLy8gbG9jYWxlIHdpbGwgYmUgbmVlZGVkIHRvIGZvcm1hdCBpbnZhbGlkIGRhdGUgbWVzc2FnZVxuICAgIHRoaXMuX2xvY2FsZSA9IGdldExvY2FsZShsb2NhbGVLZXkpO1xuICAgIC8vIHBhcnNlIGludmFsaWQgaW5wdXRcbiAgICBpZiAoaW5wdXQgPT09ICcnIHx8IGlucHV0ID09PSBudWxsIHx8IChpc051bWJlcihpbnB1dCkgJiYgaXNOYU4oaW5wdXQpKSkge1xuICAgICAgdGhpcy5fZGF0ZSA9IG5ldyBEYXRlKE5hTik7XG5cbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHRoaXMuX2lzVVRDID0gaXNVVEM7XG4gICAgaWYgKHRoaXMuX2lzVVRDKSB7XG4gICAgICB0aGlzLl9vZmZzZXQgPSAwO1xuICAgIH1cbiAgICBpZiAob2Zmc2V0IHx8IG9mZnNldCA9PT0gMCkge1xuICAgICAgdGhpcy5fb2Zmc2V0ID0gb2Zmc2V0O1xuICAgIH1cbiAgICB0aGlzLl9pc1N0cmljdCA9IHN0cmljdDtcbiAgICB0aGlzLl9mb3JtYXQgPSBmb3JtYXQ7XG5cbiAgICBpZiAoIWlucHV0ICYmIGlucHV0ICE9PSAwICYmICFmb3JtYXQpIHtcbiAgICAgIHRoaXMuX2RhdGUgPSBuZXcgRGF0ZSgpO1xuXG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBpZiAoaXNEYXRlKGlucHV0KSkge1xuICAgICAgdGhpcy5fZGF0ZSA9IGNsb25lRGF0ZShpbnB1dCk7XG5cbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8vIHRoaXMuX2RhdGUgPSBwYXJzZURhdGUoaW5wdXQsIGZvcm1hdCwgbG9jYWxlS2V5LCBzdHJpY3QsIGlzVVRDKTtcbiAgICBjb25zdCBjb25maWcgPSBjcmVhdGVMb2NhbE9yVVRDKGlucHV0LCBmb3JtYXQsIGxvY2FsZUtleSwgc3RyaWN0LCBpc1VUQyk7XG4gICAgdGhpcy5fZGF0ZSA9IGNvbmZpZy5fZDtcbiAgICB0aGlzLl9vZmZzZXQgPSBpc051bWJlcihjb25maWcuX29mZnNldCkgPyBjb25maWcuX29mZnNldCA6IHRoaXMuX29mZnNldDtcbiAgICB0aGlzLl9pc1VUQyA9IGNvbmZpZy5faXNVVEM7XG4gICAgdGhpcy5faXNTdHJpY3QgPSBjb25maWcuX3N0cmljdDtcbiAgICB0aGlzLl9mb3JtYXQgPSBjb25maWcuX2Y7XG4gICAgdGhpcy5fdHptID0gY29uZmlnLl90em07XG4gIH1cblxuICBfdG9Db25maWcoKTogRGF0ZVBhcnNpbmdDb25maWcge1xuICAgIHJldHVybiB7IF9pc1VUQzogdGhpcy5faXNVVEMsIF9sb2NhbGU6IHRoaXMuX2xvY2FsZSwgX29mZnNldDogdGhpcy5fb2Zmc2V0LCBfdHptOiB0aGlzLl90em0gfTtcbiAgfVxuXG4gIC8vIExvY2FsZVxuICBsb2NhbGUoKTogc3RyaW5nO1xuICBsb2NhbGUobG9jYWxlS2V5OiBzdHJpbmcgfCBzdHJpbmdbXSB8IEtocm9ub3MpOiBLaHJvbm9zO1xuICBsb2NhbGUobG9jYWxlS2V5Pzogc3RyaW5nIHwgc3RyaW5nW10gfCBLaHJvbm9zKTogS2hyb25vcyB8IHN0cmluZyB7XG4gICAgaWYgKGlzVW5kZWZpbmVkKGxvY2FsZUtleSkpIHtcbiAgICAgIHJldHVybiB0aGlzLl9sb2NhbGUuX2FiYnI7XG4gICAgfVxuXG4gICAgaWYgKGxvY2FsZUtleSBpbnN0YW5jZW9mIEtocm9ub3MpIHtcbiAgICAgIHRoaXMuX2xvY2FsZSA9IGxvY2FsZUtleS5fbG9jYWxlO1xuXG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBjb25zdCBuZXdMb2NhbGVEYXRhID0gZ2V0TG9jYWxlKGxvY2FsZUtleSk7XG4gICAgaWYgKG5ld0xvY2FsZURhdGEgIT0gbnVsbCkge1xuICAgICAgdGhpcy5fbG9jYWxlID0gbmV3TG9jYWxlRGF0YTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGxvY2FsZURhdGEoKTogTG9jYWxlIHtcbiAgICByZXR1cm4gdGhpcy5fbG9jYWxlO1xuICB9XG5cbiAgLy8gQmFzaWNcblxuICBhZGQodmFsOiBudW1iZXIgfCBzdHJpbmcgfCBNb21lbnRJbnB1dE9iamVjdCwgcGVyaW9kPzogVW5pdE9mVGltZSB8IE1vbWVudFVuaXRPZlRpbWUpOiBLaHJvbm9zIHtcbiAgICBpZiAoaXNTdHJpbmcodmFsKSkge1xuICAgICAgdGhpcy5fZGF0ZSA9IGFkZCh0aGlzLl9kYXRlLCBwYXJzZUludCh2YWwsIDEwKSwgbWFwVW5pdE9mVGltZShwZXJpb2QpKTtcbiAgICB9XG5cbiAgICBpZiAoaXNOdW1iZXIodmFsKSkge1xuICAgICAgdGhpcy5fZGF0ZSA9IGFkZCh0aGlzLl9kYXRlLCB2YWwsIG1hcFVuaXRPZlRpbWUocGVyaW9kKSk7XG4gICAgfVxuXG4gICAgaWYgKGlzT2JqZWN0PE1vbWVudElucHV0T2JqZWN0Pih2YWwpKSB7XG4gICAgICBjb25zdCBfbWFwcGVkID0gbWFwTW9tZW50SW5wdXRPYmplY3QodmFsKTtcbiAgICAgIE9iamVjdC5rZXlzKF9tYXBwZWQpXG4gICAgICAgIC5mb3JFYWNoKChrZXk6IFVuaXRPZlRpbWUpID0+IGFkZCh0aGlzLl9kYXRlLCBfbWFwcGVkW2tleV0sIGtleSkpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLy8gZml4bWU6IGZvciBzb21lIHJlYXNvbiBoZXJlICdudWxsJyBmb3IgdGltZSBpcyBmaW5lXG4gIGNhbGVuZGFyKHRpbWU/OiBEYXRlSW5wdXQgfCBLaHJvbm9zLCBmb3JtYXRzPzogQ2FsZW5kYXJTcGVjKTogc3RyaW5nIHtcbiAgICBjb25zdCBfdGltZSA9IHRpbWUgaW5zdGFuY2VvZiBLaHJvbm9zID8gdGltZSA6IG5ldyBLaHJvbm9zKHRpbWUgfHwgbmV3IERhdGUoKSk7XG4gICAgY29uc3QgX29mZnNldCA9ICh0aGlzLl9vZmZzZXQgfHwgMCkgLSAoX3RpbWUuX29mZnNldCB8fCAwKTtcbiAgICBjb25zdCBfY29uZmlnID0gT2JqZWN0LmFzc2lnbih0aGlzLl90b0NvbmZpZygpLCB7IF9vZmZzZXQgfSk7XG5cbiAgICByZXR1cm4gY2FsZW5kYXIodGhpcy5fZGF0ZSwgX3RpbWUuX2RhdGUsXG4gICAgICBmb3JtYXRzLCB0aGlzLl9sb2NhbGUsIF9jb25maWcpO1xuICB9XG5cbiAgY2xvbmUoKTogS2hyb25vcyB7XG4gICAgY29uc3QgbG9jYWxlS2V5ID0gdGhpcy5fbG9jYWxlICYmIHRoaXMuX2xvY2FsZS5fYWJiciB8fCAnZW4nO1xuXG4gICAgLy8gcmV0dXJuIG5ldyBLaHJvbm9zKGNsb25lRGF0ZSh0aGlzLl9kYXRlKSwgdGhpcy5fZm9ybWF0LCBsb2NhbGVLZXksIHRoaXMuX2lzU3RyaWN0LCB0aGlzLl9pc1VUQyk7XG4gICAgLy8gZmFpbHMgaWYgaXNVVEMgYW5kIG9mZnNldFxuICAgIC8vIHJldHVybiBuZXcgS2hyb25vcyhuZXcgRGF0ZSh0aGlzLnZhbHVlT2YoKSksXG4gICAgcmV0dXJuIG5ldyBLaHJvbm9zKHRoaXMuX2RhdGUsXG4gICAgICB0aGlzLl9mb3JtYXQsXG4gICAgICBsb2NhbGVLZXksXG4gICAgICB0aGlzLl9pc1N0cmljdCxcbiAgICAgIHRoaXMuX2lzVVRDLFxuICAgICAgdGhpcy5fb2Zmc2V0KTtcbiAgfVxuXG4gIGRpZmYoYjogRGF0ZUlucHV0IHwgS2hyb25vcywgdW5pdE9mVGltZT86IE1vbWVudFVuaXRPZlRpbWUsIHByZWNpc2U/OiBib29sZWFuKTogbnVtYmVyIHtcbiAgICBjb25zdCB1bml0ID0gbWFwVW5pdE9mVGltZSh1bml0T2ZUaW1lKTtcbiAgICBjb25zdCBfYiA9IGIgaW5zdGFuY2VvZiBLaHJvbm9zID8gYiA6IG5ldyBLaHJvbm9zKGIpO1xuICAgIC8vIGNvbnN0IHpvbmVEZWx0YSA9IChfYi51dGNPZmZzZXQoKSAtIHRoaXMudXRjT2Zmc2V0KCkpO1xuICAgIC8vIGNvbnN0IGNvbmZpZyA9IE9iamVjdC5hc3NpZ24odGhpcy5fdG9Db25maWcoKSwge1xuICAgIC8vICAgX29mZnNldDogMCxcbiAgICAvLyAgIF9pc1VUQzogdHJ1ZSxcbiAgICAvLyAgIF96b25lRGVsdGE6IHpvbmVEZWx0YVxuICAgIC8vIH0pO1xuICAgIC8vIHJldHVybiBkaWZmKG5ldyBEYXRlKHRoaXMudmFsdWVPZigpKSwgbmV3IERhdGUoX2IudmFsdWVPZigpKSwgdW5pdCwgcHJlY2lzZSwgY29uZmlnKTtcblxuICAgIHJldHVybiBkaWZmKHRoaXMuX2RhdGUsIF9iLnRvRGF0ZSgpLCB1bml0LCBwcmVjaXNlLCB0aGlzLl90b0NvbmZpZygpKTtcbiAgfVxuXG4gIGVuZE9mKHBlcmlvZD86IE1vbWVudFVuaXRPZlRpbWUpOiBLaHJvbm9zIHtcbiAgICBjb25zdCBfcGVyID0gbWFwVW5pdE9mVGltZShwZXJpb2QpO1xuICAgIHRoaXMuX2RhdGUgPSBlbmRPZih0aGlzLl9kYXRlLCBfcGVyLCB0aGlzLl9pc1VUQyk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGZvcm1hdChmb3JtYXQ/OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBmb3JtYXREYXRlKHRoaXMuX2RhdGUsIGZvcm1hdCwgdGhpcy5fbG9jYWxlICYmIHRoaXMuX2xvY2FsZS5fYWJiciwgdGhpcy5faXNVVEMsIHRoaXMuX29mZnNldCk7XG4gIH1cblxuICAvLyB0b2RvOiBpbXBsZW1lbnRcbiAgZnJvbSh0aW1lPzogRGF0ZUlucHV0IHwgS2hyb25vcywgd2l0aG91dFN1ZmZpeD86IGJvb2xlYW4pOiBzdHJpbmcge1xuICAgIGNvbnN0IF90aW1lID0gX21vbWVudCh0aW1lKTtcbiAgICBpZiAodGhpcy5pc1ZhbGlkKCkgJiYgX3RpbWUuaXNWYWxpZCgpKSB7XG4gICAgICByZXR1cm4gY3JlYXRlRHVyYXRpb24oeyB0bzogdGhpcy50b0RhdGUoKSwgZnJvbTogX3RpbWUudG9EYXRlKCkgfSlcbiAgICAgICAgLmxvY2FsZSh0aGlzLmxvY2FsZSgpKVxuICAgICAgICAuaHVtYW5pemUoIXdpdGhvdXRTdWZmaXgpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmxvY2FsZURhdGEoKS5pbnZhbGlkRGF0ZTtcbiAgfVxuXG4gIGZyb21Ob3cod2l0aG91dFN1ZmZpeD86IGJvb2xlYW4pOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmZyb20obmV3IERhdGUoKSwgd2l0aG91dFN1ZmZpeCk7XG4gIH1cblxuICB0byhpbnA6IERhdGVJbnB1dCB8IEtocm9ub3MsIHN1ZmZpeD86IGJvb2xlYW4pOiBzdHJpbmcge1xuICAgIHRocm93IG5ldyBFcnJvcihgVE9ETzogSW1wbGVtZW50YCk7XG4gIH1cblxuICB0b05vdyh3aXRob3V0UHJlZml4PzogYm9vbGVhbik6IHN0cmluZyB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBUT0RPOiBJbXBsZW1lbnRgKTtcbiAgfVxuXG4gIHN1YnRyYWN0KHZhbDogbnVtYmVyIHwgc3RyaW5nIHwgTW9tZW50SW5wdXRPYmplY3QsIHBlcmlvZD86IFVuaXRPZlRpbWUgfCBNb21lbnRVbml0T2ZUaW1lKTogS2hyb25vcyB7XG4gICAgaWYgKGlzU3RyaW5nKHZhbCkpIHtcbiAgICAgIHRoaXMuX2RhdGUgPSBzdWJ0cmFjdCh0aGlzLl9kYXRlLCBwYXJzZUludCh2YWwsIDEwKSwgbWFwVW5pdE9mVGltZShwZXJpb2QpKTtcblxuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgaWYgKGlzTnVtYmVyKHZhbCkpIHtcbiAgICAgIHRoaXMuX2RhdGUgPSBzdWJ0cmFjdCh0aGlzLl9kYXRlLCB2YWwsIG1hcFVuaXRPZlRpbWUocGVyaW9kKSk7XG4gICAgfVxuXG4gICAgaWYgKGlzT2JqZWN0PE1vbWVudElucHV0T2JqZWN0Pih2YWwpKSB7XG4gICAgICBjb25zdCBfbWFwcGVkID0gbWFwTW9tZW50SW5wdXRPYmplY3QodmFsKTtcbiAgICAgIE9iamVjdC5rZXlzKF9tYXBwZWQpXG4gICAgICAgIC5mb3JFYWNoKChrZXk6IFVuaXRPZlRpbWUpID0+IHN1YnRyYWN0KHRoaXMuX2RhdGUsIF9tYXBwZWRba2V5XSwga2V5KSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBnZXQocGVyaW9kOiBNb21lbnRBbGwpOiBudW1iZXIge1xuICAgIGlmIChwZXJpb2QgPT09ICdkYXlPZlllYXInKSB7XG4gICAgICByZXR1cm4gdGhpcy5kYXlPZlllYXIoKTtcbiAgICB9XG5cbiAgICBjb25zdCB1bml0ID0gbWFwVW5pdE9mVGltZShwZXJpb2QpO1xuICAgIHN3aXRjaCAodW5pdCkge1xuICAgICAgY2FzZSAneWVhcic6XG4gICAgICAgIHJldHVybiB0aGlzLnllYXIoKTtcbiAgICAgIGNhc2UgJ21vbnRoJzpcbiAgICAgICAgcmV0dXJuIHRoaXMubW9udGgoKTtcbiAgICAgIC8vIHwgJ3dlZWsnXG4gICAgICBjYXNlICdkYXRlJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0ZSgpO1xuICAgICAgY2FzZSAnZGF5JzpcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF5KCk7XG4gICAgICBjYXNlICdob3Vycyc6XG4gICAgICAgIHJldHVybiB0aGlzLmhvdXJzKCk7XG4gICAgICBjYXNlICdtaW51dGVzJzpcbiAgICAgICAgcmV0dXJuIHRoaXMubWludXRlcygpO1xuICAgICAgY2FzZSAnc2Vjb25kcyc6XG4gICAgICAgIHJldHVybiB0aGlzLnNlY29uZHMoKTtcbiAgICAgIGNhc2UgJ21pbGxpc2Vjb25kcyc6XG4gICAgICAgIHJldHVybiB0aGlzLm1pbGxpc2Vjb25kcygpO1xuICAgICAgY2FzZSAnd2Vlayc6XG4gICAgICAgIHJldHVybiB0aGlzLndlZWsoKTtcbiAgICAgIGNhc2UgJ2lzb1dlZWsnOlxuICAgICAgICByZXR1cm4gdGhpcy5pc29XZWVrKCk7XG4gICAgICBjYXNlICd3ZWVrWWVhcic6XG4gICAgICAgIHJldHVybiB0aGlzLndlZWtZZWFyKCk7XG4gICAgICBjYXNlICdpc29XZWVrWWVhcic6XG4gICAgICAgIHJldHVybiB0aGlzLmlzb1dlZWtZZWFyKCk7XG4gICAgICBjYXNlICd3ZWVrZGF5JzpcbiAgICAgICAgcmV0dXJuIHRoaXMud2Vla2RheSgpO1xuICAgICAgY2FzZSAnaXNvV2Vla2RheSc6XG4gICAgICAgIHJldHVybiB0aGlzLmlzb1dlZWtkYXkoKTtcbiAgICAgIGNhc2UgJ3F1YXJ0ZXInOlxuICAgICAgICByZXR1cm4gdGhpcy5xdWFydGVyKCk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gbW9tZW50LmdldCgnJHtwZXJpb2R9JylgKTtcbiAgICB9XG4gIH1cblxuICBzZXQocGVyaW9kOiBNb21lbnRBbGwgfCBNb21lbnRJbnB1dE9iamVjdCwgaW5wdXQ/OiBudW1iZXIpOiBLaHJvbm9zIHtcblxuICAgIGlmIChpc1N0cmluZyhwZXJpb2QpKSB7XG4gICAgICBjb25zdCB1bml0ID0gbWFwVW5pdE9mVGltZShwZXJpb2QpO1xuICAgICAgc3dpdGNoICh1bml0KSB7XG4gICAgICAgIGNhc2UgJ3llYXInOlxuICAgICAgICAgIHJldHVybiB0aGlzLnllYXIoaW5wdXQpO1xuICAgICAgICBjYXNlICdtb250aCc6XG4gICAgICAgICAgcmV0dXJuIHRoaXMubW9udGgoaW5wdXQpO1xuICAgICAgICAvLyB8ICd3ZWVrJ1xuICAgICAgICBjYXNlICdkYXknOlxuICAgICAgICAgIHJldHVybiB0aGlzLmRheShpbnB1dCk7XG4gICAgICAgIGNhc2UgJ2RhdGUnOlxuICAgICAgICAgIHJldHVybiB0aGlzLmRhdGUoaW5wdXQpO1xuICAgICAgICBjYXNlICdob3Vycyc6XG4gICAgICAgICAgcmV0dXJuIHRoaXMuaG91cnMoaW5wdXQpO1xuICAgICAgICBjYXNlICdtaW51dGVzJzpcbiAgICAgICAgICByZXR1cm4gdGhpcy5taW51dGVzKGlucHV0KTtcbiAgICAgICAgY2FzZSAnc2Vjb25kcyc6XG4gICAgICAgICAgcmV0dXJuIHRoaXMuc2Vjb25kcyhpbnB1dCk7XG4gICAgICAgIGNhc2UgJ21pbGxpc2Vjb25kcyc6XG4gICAgICAgICAgcmV0dXJuIHRoaXMubWlsbGlzZWNvbmRzKGlucHV0KTtcbiAgICAgICAgY2FzZSAnd2Vlayc6XG4gICAgICAgICAgcmV0dXJuIHRoaXMud2VlayhpbnB1dCk7XG4gICAgICAgIGNhc2UgJ2lzb1dlZWsnOlxuICAgICAgICAgIHJldHVybiB0aGlzLmlzb1dlZWsoaW5wdXQpO1xuICAgICAgICBjYXNlICd3ZWVrWWVhcic6XG4gICAgICAgICAgcmV0dXJuIHRoaXMud2Vla1llYXIoaW5wdXQpO1xuICAgICAgICBjYXNlICdpc29XZWVrWWVhcic6XG4gICAgICAgICAgcmV0dXJuIHRoaXMuaXNvV2Vla1llYXIoaW5wdXQpO1xuICAgICAgICBjYXNlICd3ZWVrZGF5JzpcbiAgICAgICAgICByZXR1cm4gdGhpcy53ZWVrZGF5KGlucHV0KTtcbiAgICAgICAgY2FzZSAnaXNvV2Vla2RheSc6XG4gICAgICAgICAgcmV0dXJuIHRoaXMuaXNvV2Vla2RheShpbnB1dCk7XG4gICAgICAgIGNhc2UgJ3F1YXJ0ZXInOlxuICAgICAgICAgIHJldHVybiB0aGlzLnF1YXJ0ZXIoaW5wdXQpO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biBtb21lbnQuZ2V0KCcke3BlcmlvZH0nKWApO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChpc09iamVjdDxNb21lbnRJbnB1dE9iamVjdD4ocGVyaW9kKSkge1xuICAgICAgY29uc3QgX21hcHBlZCA9IG1hcE1vbWVudElucHV0T2JqZWN0KHBlcmlvZCk7XG4gICAgICBPYmplY3Qua2V5cyhfbWFwcGVkKVxuICAgICAgICAuc29ydChmdW5jdGlvbihhOiBVbml0T2ZUaW1lLCBiOiBVbml0T2ZUaW1lKTogbnVtYmVyIHtcbiAgICAgICAgICByZXR1cm4gX3VuaXRzUHJpb3JpdHlbYV0gLSBfdW5pdHNQcmlvcml0eVtiXTtcbiAgICAgICAgfSlcbiAgICAgICAgLmZvckVhY2goKGtleTogVW5pdE9mVGltZSkgPT4gdGhpcy5zZXQoa2V5LCBfbWFwcGVkW2tleV0pKTtcbiAgICB9XG5cblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgdG9TdHJpbmcoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtYXQoJ2RkZCBNTU0gREQgWVlZWSBISDptbTpzcyBbR01UXVpaJyk7XG4gIH1cblxuICB0b0lTT1N0cmluZygpOiBzdHJpbmcge1xuICAgIGlmICghdGhpcy5pc1ZhbGlkKCkpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmIChnZXRGdWxsWWVhcih0aGlzLl9kYXRlLCB0cnVlKSA8IDAgfHwgZ2V0RnVsbFllYXIodGhpcy5fZGF0ZSwgdHJ1ZSkgPiA5OTk5KSB7XG4gICAgICByZXR1cm4gdGhpcy5mb3JtYXQoJ1lZWVlZWS1NTS1ERFtUXUhIOm1tOnNzLlNTU1taXScpO1xuICAgIH1cblxuICAgIGlmIChpc0Z1bmN0aW9uKERhdGUucHJvdG90eXBlLnRvSVNPU3RyaW5nKSkge1xuICAgICAgLy8gbmF0aXZlIGltcGxlbWVudGF0aW9uIGlzIH41MHggZmFzdGVyLCB1c2UgaXQgd2hlbiB3ZSBjYW5cbiAgICAgIHJldHVybiB0aGlzLnRvRGF0ZSgpLnRvSVNPU3RyaW5nKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZm9ybWF0KCdZWVlZLU1NLUREW1RdSEg6bW06c3MuU1NTW1pdJyk7XG4gIH1cblxuICBpbnNwZWN0KCk6IHN0cmluZyB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdUT0RPOiBpbXBsZW1lbnQnKTtcbiAgfVxuXG4gIHRvSlNPTigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnRvSVNPU3RyaW5nKCk7XG4gIH1cblxuICB0b0RhdGUoKTogRGF0ZSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKHRoaXMudmFsdWVPZigpKTtcbiAgfVxuXG4gIHRvT2JqZWN0KCk6IHtba2V5IGluIE1vbWVudFVuaXRPZlRpbWVdPzogbnVtYmVyfSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC8vIHllYXJzOiBnZXRGdWxsWWVhcih0aGlzLl9kYXRlLCB0aGlzLl9pc1VUQyksXG4gICAgICAvLyBtb250aHM6IGdldE1vbnRoKHRoaXMuX2RhdGUsIHRoaXMuX2lzVVRDKSxcblxuICAgICAgeWVhcjogZ2V0RnVsbFllYXIodGhpcy5fZGF0ZSwgdGhpcy5faXNVVEMpLFxuICAgICAgbW9udGg6IGdldE1vbnRoKHRoaXMuX2RhdGUsIHRoaXMuX2lzVVRDKSxcbiAgICAgIGRhdGU6IGdldERhdGUodGhpcy5fZGF0ZSwgdGhpcy5faXNVVEMpLFxuICAgICAgaG91cnM6IGdldEhvdXJzKHRoaXMuX2RhdGUsIHRoaXMuX2lzVVRDKSxcbiAgICAgIG1pbnV0ZXM6IGdldE1pbnV0ZXModGhpcy5fZGF0ZSwgdGhpcy5faXNVVEMpLFxuICAgICAgc2Vjb25kczogZ2V0U2Vjb25kcyh0aGlzLl9kYXRlLCB0aGlzLl9pc1VUQyksXG4gICAgICBtaWxsaXNlY29uZHM6IGdldE1pbGxpc2Vjb25kcyh0aGlzLl9kYXRlLCB0aGlzLl9pc1VUQylcbiAgICB9O1xuICB9XG5cbiAgdG9BcnJheSgpOiBEYXRlQXJyYXkge1xuICAgIHJldHVybiBbdGhpcy55ZWFyKCksIHRoaXMubW9udGgoKSwgdGhpcy5kYXRlKCksIHRoaXMuaG91cigpLCB0aGlzLm1pbnV0ZSgpLCB0aGlzLnNlY29uZCgpLCB0aGlzLm1pbGxpc2Vjb25kKCldO1xuICB9XG5cblxuICAvLyBEYXRlcyBib29sZWFuIGFsZ2VicmFcblxuICBpc0FmdGVyKGRhdGU6IEtocm9ub3MsIHVuaXQ/OiBNb21lbnRVbml0T2ZUaW1lKTogYm9vbGVhbiB7XG4gICAgY29uc3QgX3VuaXQgPSB1bml0ID8gbWFwVW5pdE9mVGltZSh1bml0KSA6IHZvaWQgMDtcblxuICAgIHJldHVybiBpc0FmdGVyKHRoaXMuX2RhdGUsIGRhdGUudG9EYXRlKCksIF91bml0KTtcbiAgfVxuXG4gIGlzQmVmb3JlKGRhdGU6IEtocm9ub3MsIHVuaXQ/OiBNb21lbnRVbml0T2ZUaW1lKTogYm9vbGVhbiB7XG4gICAgY29uc3QgX3VuaXQgPSB1bml0ID8gbWFwVW5pdE9mVGltZSh1bml0KSA6IHZvaWQgMDtcblxuICAgIHJldHVybiBpc0JlZm9yZSh0aGlzLnRvRGF0ZSgpLCBkYXRlLnRvRGF0ZSgpLCBfdW5pdCk7XG4gIH1cblxuICBpc0JldHdlZW4oZnJvbTogS2hyb25vcywgdG86IEtocm9ub3MsIHVuaXQ/OiBNb21lbnRVbml0T2ZUaW1lLCBpbmNsdXNpdml0eT86IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IF91bml0ID0gdW5pdCA/IG1hcFVuaXRPZlRpbWUodW5pdCkgOiB2b2lkIDA7XG5cbiAgICByZXR1cm4gaXNCZXR3ZWVuKHRoaXMudG9EYXRlKCksIGZyb20udG9EYXRlKCksIHRvLnRvRGF0ZSgpLCBfdW5pdCwgaW5jbHVzaXZpdHkpO1xuICB9XG5cbiAgaXNTYW1lKGRhdGU6IEtocm9ub3MsIHVuaXQ/OiBNb21lbnRVbml0T2ZUaW1lKTogYm9vbGVhbiB7XG4gICAgY29uc3QgX3VuaXQgPSB1bml0ID8gbWFwVW5pdE9mVGltZSh1bml0KSA6IHZvaWQgMDtcblxuICAgIHJldHVybiBpc1NhbWUodGhpcy5fZGF0ZSwgZGF0ZS50b0RhdGUoKSwgX3VuaXQpO1xuICB9XG5cbiAgaXNTYW1lT3JBZnRlcihkYXRlOiBLaHJvbm9zLCB1bml0PzogTW9tZW50VW5pdE9mVGltZSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IF91bml0ID0gdW5pdCA/IG1hcFVuaXRPZlRpbWUodW5pdCkgOiB2b2lkIDA7XG5cbiAgICByZXR1cm4gaXNTYW1lT3JBZnRlcih0aGlzLl9kYXRlLCBkYXRlLnRvRGF0ZSgpLCBfdW5pdCk7XG4gIH1cblxuICBpc1NhbWVPckJlZm9yZShkYXRlOiBLaHJvbm9zLCB1bml0PzogTW9tZW50VW5pdE9mVGltZSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IF91bml0ID0gdW5pdCA/IG1hcFVuaXRPZlRpbWUodW5pdCkgOiB2b2lkIDA7XG5cbiAgICByZXR1cm4gaXNTYW1lT3JCZWZvcmUodGhpcy5fZGF0ZSwgZGF0ZS50b0RhdGUoKSwgX3VuaXQpO1xuICB9XG5cbiAgaXNWYWxpZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaXNEYXRlVmFsaWQodGhpcy5fZGF0ZSk7XG4gIH1cblxuICB2YWx1ZU9mKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2RhdGUudmFsdWVPZigpIC0gKCh0aGlzLl9vZmZzZXQgfHwgMCkgKiA2MDAwMCk7XG4gIH1cblxuICB1bml4KCk6IG51bWJlciB7XG4gICAgLy8gcmV0dXJuIGdldFVuaXhUaW1lKHRoaXMuX2RhdGUpO1xuICAgIHJldHVybiBNYXRoLmZsb29yKHRoaXMudmFsdWVPZigpIC8gMTAwMCk7XG4gIH1cblxuXG4gIC8vIE9mZnNldFxuXG4gIHV0Y09mZnNldCgpOiBudW1iZXI7XG4gIHV0Y09mZnNldChiOiBudW1iZXIgfCBzdHJpbmcsIGtlZXBMb2NhbFRpbWU/OiBib29sZWFuKTogS2hyb25vcztcbiAgdXRjT2Zmc2V0KGI/OiBudW1iZXIgfCBzdHJpbmcsIGtlZXBMb2NhbFRpbWU/OiBib29sZWFuKTogbnVtYmVyIHwgS2hyb25vcyB7XG4gICAgY29uc3QgX2NvbmZpZyA9IHRoaXMuX3RvQ29uZmlnKCk7XG5cbiAgICBpZiAoIWIgJiYgYiAhPT0gMCkge1xuICAgICAgcmV0dXJuIGdldFVUQ09mZnNldCh0aGlzLl9kYXRlLCBfY29uZmlnKTtcbiAgICB9XG5cbiAgICB0aGlzLl9kYXRlID0gc2V0VVRDT2Zmc2V0KHRoaXMuX2RhdGUsIGIsIGtlZXBMb2NhbFRpbWUsIGZhbHNlLCBfY29uZmlnKTtcblxuICAgIHRoaXMuX29mZnNldCA9IF9jb25maWcuX29mZnNldDtcbiAgICB0aGlzLl9pc1VUQyA9IF9jb25maWcuX2lzVVRDO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICB1dGMoa2VlcExvY2FsVGltZT86IGJvb2xlYW4pOiBLaHJvbm9zIHtcbiAgICByZXR1cm4gdGhpcy51dGNPZmZzZXQoMCwga2VlcExvY2FsVGltZSk7XG4gIH1cblxuICBsb2NhbChrZWVwTG9jYWxUaW1lPzogYm9vbGVhbik6IEtocm9ub3Mge1xuICAgIGlmICh0aGlzLl9pc1VUQykge1xuICAgICAgdGhpcy51dGNPZmZzZXQoMCwga2VlcExvY2FsVGltZSk7XG4gICAgICB0aGlzLl9pc1VUQyA9IGZhbHNlO1xuXG4gICAgICBpZiAoa2VlcExvY2FsVGltZSkge1xuICAgICAgICB0aGlzLnN1YnRyYWN0KGdldERhdGVPZmZzZXQodGhpcy5fZGF0ZSksICdtJyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwYXJzZVpvbmUoaW5wdXQ/OiBzdHJpbmcpOiBLaHJvbm9zIHtcbiAgICBjb25zdCBfY29uZmlnID0gdGhpcy5fdG9Db25maWcoKTtcbiAgICB0aGlzLl9kYXRlID0gc2V0T2Zmc2V0VG9QYXJzZWRPZmZzZXQodGhpcy5fZGF0ZSwgaW5wdXQsIF9jb25maWcpO1xuXG4gICAgdGhpcy5fb2Zmc2V0ID0gX2NvbmZpZy5fb2Zmc2V0O1xuICAgIHRoaXMuX2lzVVRDID0gX2NvbmZpZy5faXNVVEM7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGhhc0FsaWduZWRIb3VyT2Zmc2V0KGlucHV0PzogS2hyb25vcyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBoYXNBbGlnbmVkSG91ck9mZnNldCh0aGlzLl9kYXRlLCBpbnB1dCA/IGlucHV0Ll9kYXRlIDogdm9pZCAwKTtcbiAgfVxuXG4gIGlzRFNUKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBpc0RheWxpZ2h0U2F2aW5nVGltZSh0aGlzLl9kYXRlKTtcbiAgfVxuXG4gIGlzTG9jYWwoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLl9pc1VUQztcbiAgfVxuXG4gIGlzVXRjT2Zmc2V0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pc1VUQztcbiAgfVxuXG4gIGlzVVRDKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzVXRjKCk7XG4gIH1cblxuICBpc1V0YygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faXNVVEMgJiYgdGhpcy5fb2Zmc2V0ID09PSAwO1xuICB9XG5cbiAgLy8gVGltZXpvbmVcblxuICB6b25lQWJicigpOiBzdHJpbmcge1xuICAgIHJldHVybiBnZXRab25lQWJicih0aGlzLl9pc1VUQyk7XG4gIH1cblxuICB6b25lTmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBnZXRab25lTmFtZSh0aGlzLl9pc1VUQyk7XG4gIH1cblxuICAvLyBZZWFyXG5cbiAgeWVhcigpOiBudW1iZXI7XG4gIHllYXIoeWVhcjogbnVtYmVyKTogS2hyb25vcztcbiAgeWVhcih5ZWFyPzogbnVtYmVyKTogS2hyb25vcyB8IG51bWJlciB7XG4gICAgaWYgKCF5ZWFyICYmIHllYXIgIT09IDApIHtcbiAgICAgIHJldHVybiBnZXRGdWxsWWVhcih0aGlzLl9kYXRlLCB0aGlzLl9pc1VUQyk7XG4gICAgfVxuXG4gICAgdGhpcy5fZGF0ZSA9IGNsb25lRGF0ZShzZXRGdWxsWWVhcih0aGlzLl9kYXRlLCB5ZWFyKSk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHdlZWtZZWFyKCk6IG51bWJlcjtcbiAgd2Vla1llYXIodmFsOiBudW1iZXIpOiBLaHJvbm9zO1xuICB3ZWVrWWVhcih2YWw/OiBudW1iZXIpOiBLaHJvbm9zIHwgbnVtYmVyIHtcbiAgICBpZiAoIXZhbCAmJiB2YWwgIT09IDApIHtcbiAgICAgIHJldHVybiBnZXRXZWVrWWVhcih0aGlzLl9kYXRlLCB0aGlzLl9sb2NhbGUsIHRoaXMuaXNVVEMoKSk7XG4gICAgfVxuXG4gICAgY29uc3QgZGF0ZSA9IGdldFNldFdlZWtZZWFyKHRoaXMuX2RhdGUsIHZhbCwgdGhpcy5fbG9jYWxlLCB0aGlzLmlzVVRDKCkpO1xuICAgIGlmIChpc0RhdGUoZGF0ZSkpIHtcbiAgICAgIHRoaXMuX2RhdGUgPSBkYXRlO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgaXNvV2Vla1llYXIoKTogbnVtYmVyIDtcbiAgaXNvV2Vla1llYXIodmFsOiBudW1iZXIpOiBLaHJvbm9zIDtcbiAgaXNvV2Vla1llYXIodmFsPzogbnVtYmVyKTogS2hyb25vcyB8IG51bWJlciB7XG4gICAgaWYgKCF2YWwgJiYgdmFsICE9PSAwKSB7XG4gICAgICByZXR1cm4gZ2V0SVNPV2Vla1llYXIodGhpcy5fZGF0ZSwgdGhpcy5pc1VUQygpKTtcbiAgICB9XG5cbiAgICBjb25zdCBkYXRlID0gZ2V0U2V0SVNPV2Vla1llYXIodGhpcy5fZGF0ZSwgdmFsLCB0aGlzLmlzVXRjKCkpO1xuXG4gICAgaWYgKGlzRGF0ZShkYXRlKSkge1xuICAgICAgdGhpcy5fZGF0ZSA9IGRhdGU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBpc0xlYXBZZWFyKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBpc0xlYXBZZWFyKGdldEZ1bGxZZWFyKHRoaXMudG9EYXRlKCksIHRoaXMuaXNVVEMoKSkpO1xuICB9XG5cbiAgLy8gTW9udGhcblxuICBtb250aCgpOiBudW1iZXI7XG4gIG1vbnRoKG1vbnRoOiBudW1iZXIgfCBzdHJpbmcpOiBLaHJvbm9zO1xuICBtb250aChtb250aD86IG51bWJlciB8IHN0cmluZyk6IEtocm9ub3MgfCBudW1iZXIge1xuICAgIGlmICghbW9udGggJiYgbW9udGggIT09IDApIHtcbiAgICAgIHJldHVybiBnZXRNb250aCh0aGlzLl9kYXRlLCB0aGlzLl9pc1VUQyk7XG4gICAgfVxuXG4gICAgbGV0IF9tb250aCA9IG1vbnRoO1xuXG4gICAgaWYgKGlzU3RyaW5nKG1vbnRoKSkge1xuICAgICAgY29uc3QgbG9jYWxlID0gdGhpcy5fbG9jYWxlIHx8IGdldExvY2FsZSgpO1xuICAgICAgX21vbnRoID0gbG9jYWxlLm1vbnRoc1BhcnNlKG1vbnRoKTtcbiAgICB9XG5cbiAgICBpZiAoaXNOdW1iZXIoX21vbnRoKSkge1xuICAgICAgdGhpcy5fZGF0ZSA9IGNsb25lRGF0ZShzZXRNb250aCh0aGlzLl9kYXRlLCBfbW9udGgsIHRoaXMuX2lzVVRDKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKiogQGRlcHJlY2F0ZWQgKi9cbiAgaG91cigpOiBudW1iZXI7XG4gIGhvdXIoaG91cnM6IG51bWJlcik6IEtocm9ub3M7XG4gIGhvdXIoaG91cnM/OiBudW1iZXIpOiBLaHJvbm9zIHwgbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5ob3Vycyhob3Vycyk7XG4gIH1cblxuICBob3VycygpOiBudW1iZXI7XG4gIGhvdXJzKGhvdXJzOiBudW1iZXIpOiBLaHJvbm9zO1xuICBob3Vycyhob3Vycz86IG51bWJlcik6IEtocm9ub3MgfCBudW1iZXIge1xuICAgIGlmICghaG91cnMgJiYgaG91cnMgIT09IDApIHtcbiAgICAgIHJldHVybiBnZXRIb3Vycyh0aGlzLl9kYXRlLCB0aGlzLl9pc1VUQyk7XG4gICAgfVxuXG4gICAgdGhpcy5fZGF0ZSA9IGNsb25lRGF0ZShzZXRIb3Vycyh0aGlzLl9kYXRlLCBob3VycywgdGhpcy5faXNVVEMpKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqIEBkZXByZWNhdGVkICovXG4gIG1pbnV0ZSgpOiBudW1iZXI7XG4gIG1pbnV0ZShtaW51dGVzOiBudW1iZXIpOiBLaHJvbm9zO1xuICBtaW51dGUobWludXRlcz86IG51bWJlcik6IEtocm9ub3MgfCBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLm1pbnV0ZXMobWludXRlcyk7XG4gIH1cblxuICBtaW51dGVzKCk6IG51bWJlcjtcbiAgbWludXRlcyhtaW51dGVzOiBudW1iZXIpOiBLaHJvbm9zO1xuICBtaW51dGVzKG1pbnV0ZXM/OiBudW1iZXIpOiBLaHJvbm9zIHwgbnVtYmVyIHtcbiAgICBpZiAoIW1pbnV0ZXMgJiYgbWludXRlcyAhPT0gMCkge1xuICAgICAgcmV0dXJuIGdldE1pbnV0ZXModGhpcy5fZGF0ZSwgdGhpcy5faXNVVEMpO1xuICAgIH1cblxuICAgIHRoaXMuX2RhdGUgPSBjbG9uZURhdGUoc2V0TWludXRlcyh0aGlzLl9kYXRlLCBtaW51dGVzLCB0aGlzLl9pc1VUQykpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKiogQGRlcHJlY2F0ZWQgKi9cbiAgc2Vjb25kKCk6IG51bWJlcjtcbiAgc2Vjb25kKHNlY29uZHM6IG51bWJlcik6IEtocm9ub3M7XG4gIHNlY29uZChzZWNvbmRzPzogbnVtYmVyKTogS2hyb25vcyB8IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuc2Vjb25kcyhzZWNvbmRzKTtcbiAgfVxuXG4gIHNlY29uZHMoKTogbnVtYmVyO1xuICBzZWNvbmRzKHNlY29uZHM6IG51bWJlcik6IEtocm9ub3M7XG4gIHNlY29uZHMoc2Vjb25kcz86IG51bWJlcik6IEtocm9ub3MgfCBudW1iZXIge1xuICAgIGlmICghc2Vjb25kcyAmJiBzZWNvbmRzICE9PSAwKSB7XG4gICAgICByZXR1cm4gZ2V0U2Vjb25kcyh0aGlzLl9kYXRlLCB0aGlzLl9pc1VUQyk7XG4gICAgfVxuXG4gICAgdGhpcy5fZGF0ZSA9IGNsb25lRGF0ZShzZXRTZWNvbmRzKHRoaXMuX2RhdGUsIHNlY29uZHMsIHRoaXMuX2lzVVRDKSk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKiBAZGVwcmVjYXRlZCAqL1xuICBtaWxsaXNlY29uZCgpOiBudW1iZXI7XG4gIG1pbGxpc2Vjb25kKG1zOiBudW1iZXIpOiBLaHJvbm9zO1xuICBtaWxsaXNlY29uZChtcz86IG51bWJlcik6IEtocm9ub3MgfCBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLm1pbGxpc2Vjb25kcyhtcyk7XG4gIH1cblxuICBtaWxsaXNlY29uZHMoKTogbnVtYmVyO1xuICBtaWxsaXNlY29uZHMoc2Vjb25kczogbnVtYmVyKTogS2hyb25vcztcbiAgbWlsbGlzZWNvbmRzKHNlY29uZHM/OiBudW1iZXIpOiBLaHJvbm9zIHwgbnVtYmVyIHtcbiAgICBpZiAoIXNlY29uZHMgJiYgc2Vjb25kcyAhPT0gMCkge1xuICAgICAgcmV0dXJuIGdldE1pbGxpc2Vjb25kcyh0aGlzLl9kYXRlLCB0aGlzLl9pc1VUQyk7XG4gICAgfVxuXG4gICAgdGhpcy5fZGF0ZSA9IGNsb25lRGF0ZShzZXRNaWxsaXNlY29uZHModGhpcy5fZGF0ZSwgc2Vjb25kcywgdGhpcy5faXNVVEMpKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLy8gRGF5XG5cbiAgZGF0ZSgpOiBudW1iZXI7XG4gIGRhdGUoZGF0ZTogbnVtYmVyKTogS2hyb25vcztcbiAgZGF0ZShkYXRlPzogbnVtYmVyKTogS2hyb25vcyB8IG51bWJlciB7XG4gICAgaWYgKCFkYXRlICYmIGRhdGUgIT09IDApIHtcbiAgICAgIHJldHVybiBnZXREYXRlKHRoaXMuX2RhdGUsIHRoaXMuX2lzVVRDKTtcbiAgICB9XG5cbiAgICB0aGlzLl9kYXRlID0gY2xvbmVEYXRlKHNldERhdGUodGhpcy5fZGF0ZSwgZGF0ZSwgdGhpcy5faXNVVEMpKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgZGF5KCk6IG51bWJlciA7XG4gIGRheShpbnB1dDogbnVtYmVyIHwgc3RyaW5nKTogS2hyb25vcyA7XG4gIGRheShpbnB1dD86IG51bWJlciB8IHN0cmluZyk6IEtocm9ub3MgfCBudW1iZXIge1xuICAgIGlmICghaW5wdXQgJiYgaW5wdXQgIT09IDApIHtcbiAgICAgIHJldHVybiBnZXREYXlPZldlZWsodGhpcy5fZGF0ZSwgdGhpcy5faXNVVEMpO1xuICAgIH1cblxuICAgIGxldCBfaW5wdXQgPSBpbnB1dDtcblxuICAgIGlmIChpc1N0cmluZyhpbnB1dCkpIHtcbiAgICAgIF9pbnB1dCA9IHBhcnNlV2Vla2RheShpbnB1dCwgdGhpcy5fbG9jYWxlKTtcbiAgICB9XG5cbiAgICBpZiAoaXNOdW1iZXIoX2lucHV0KSkge1xuICAgICAgdGhpcy5fZGF0ZSA9IHNldERheU9mV2Vlayh0aGlzLl9kYXRlLCBfaW5wdXQsIHRoaXMuX2xvY2FsZSwgdGhpcy5faXNVVEMpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgd2Vla2RheSgpOiBudW1iZXIgO1xuICB3ZWVrZGF5KHZhbDogbnVtYmVyKTogS2hyb25vcyA7XG4gIHdlZWtkYXkodmFsPzogbnVtYmVyKTogS2hyb25vcyB8IG51bWJlciB7XG4gICAgaWYgKCF2YWwgJiYgdmFsICE9PSAwKSB7XG4gICAgICByZXR1cm4gZ2V0TG9jYWxlRGF5T2ZXZWVrKHRoaXMuX2RhdGUsIHRoaXMuX2xvY2FsZSwgdGhpcy5faXNVVEMpO1xuICAgIH1cblxuICAgIHRoaXMuX2RhdGUgPSBzZXRMb2NhbGVEYXlPZldlZWsodGhpcy5fZGF0ZSwgdmFsLCB7IGxvY2FsZTogdGhpcy5fbG9jYWxlLCBpc1VUQzogdGhpcy5faXNVVEMgfSk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGlzb1dlZWtkYXkoKTogbnVtYmVyIDtcbiAgaXNvV2Vla2RheSh2YWw6IG51bWJlciB8IHN0cmluZyk6IEtocm9ub3MgO1xuICBpc29XZWVrZGF5KHZhbD86IG51bWJlciB8IHN0cmluZyk6IEtocm9ub3MgfCBudW1iZXIge1xuICAgIGlmICghdmFsICYmIHZhbCAhPT0gMCkge1xuICAgICAgcmV0dXJuIGdldElTT0RheU9mV2Vlayh0aGlzLl9kYXRlKTtcbiAgICB9XG5cbiAgICB0aGlzLl9kYXRlID0gc2V0SVNPRGF5T2ZXZWVrKHRoaXMuX2RhdGUsIHZhbCk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGRheU9mWWVhcigpOiBudW1iZXI7XG4gIGRheU9mWWVhcih2YWw6IG51bWJlcik6IEtocm9ub3M7XG4gIGRheU9mWWVhcih2YWw/OiBudW1iZXIpOiBLaHJvbm9zIHwgbnVtYmVyIHtcbiAgICBpZiAoIXZhbCAmJiB2YWwgIT09IDApIHtcbiAgICAgIHJldHVybiBnZXREYXlPZlllYXIodGhpcy5fZGF0ZSk7XG4gICAgfVxuXG4gICAgdGhpcy5fZGF0ZSA9IHNldERheU9mWWVhcih0aGlzLl9kYXRlLCB2YWwpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvLyBXZWVrXG5cbiAgd2VlaygpOiBudW1iZXI7XG4gIHdlZWsoaW5wdXQ6IG51bWJlcik6IEtocm9ub3M7XG4gIHdlZWsoaW5wdXQ/OiBudW1iZXIpOiBLaHJvbm9zIHwgbnVtYmVyIHtcbiAgICBpZiAoIWlucHV0ICYmIGlucHV0ICE9PSAwKSB7XG4gICAgICByZXR1cm4gZ2V0V2Vlayh0aGlzLl9kYXRlLCB0aGlzLl9sb2NhbGUpO1xuICAgIH1cblxuICAgIHRoaXMuX2RhdGUgPSBzZXRXZWVrKHRoaXMuX2RhdGUsIGlucHV0LCB0aGlzLl9sb2NhbGUpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKiogQGRlcHJlY2F0ZWQgKi9cbiAgd2Vla3MoKTogbnVtYmVyO1xuICB3ZWVrcyhpbnB1dDogbnVtYmVyKTogS2hyb25vcztcbiAgd2Vla3MoaW5wdXQ/OiBudW1iZXIpOiBLaHJvbm9zIHwgbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy53ZWVrKGlucHV0KTtcbiAgfVxuXG4gIGlzb1dlZWsoKTogbnVtYmVyIDtcbiAgaXNvV2Vlayh2YWw6IG51bWJlcik6IEtocm9ub3MgO1xuICBpc29XZWVrKHZhbD86IG51bWJlcik6IEtocm9ub3MgfCBudW1iZXIge1xuICAgIGlmICghdmFsICYmIHZhbCAhPT0gMCkge1xuICAgICAgcmV0dXJuIGdldElTT1dlZWsodGhpcy5fZGF0ZSk7XG4gICAgfVxuXG4gICAgdGhpcy5fZGF0ZSA9IHNldElTT1dlZWsodGhpcy5fZGF0ZSwgdmFsKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqIEBkZXByZWNhdGVkICovXG4gIGlzb1dlZWtzKCk6IG51bWJlciA7XG4gIGlzb1dlZWtzKHZhbDogbnVtYmVyKTogS2hyb25vcyA7XG4gIGlzb1dlZWtzKHZhbD86IG51bWJlcik6IEtocm9ub3MgfCBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmlzb1dlZWsodmFsKTtcbiAgfVxuXG4gIHdlZWtzSW5ZZWFyKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIGdldFdlZWtzSW5ZZWFyKHRoaXMuX2RhdGUsIHRoaXMuX2lzVVRDLCB0aGlzLl9sb2NhbGUpO1xuICB9XG5cbiAgaXNvV2Vla3NJblllYXIoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gZ2V0SVNPV2Vla3NJblllYXIodGhpcy5fZGF0ZSwgdGhpcy5faXNVVEMpO1xuICB9XG5cblxuICBkYXlzSW5Nb250aCgpOiBudW1iZXIge1xuICAgIHJldHVybiBkYXlzSW5Nb250aChnZXRGdWxsWWVhcih0aGlzLl9kYXRlLCB0aGlzLl9pc1VUQyksIGdldE1vbnRoKHRoaXMuX2RhdGUsIHRoaXMuX2lzVVRDKSk7XG4gIH1cblxuXG4gIHF1YXJ0ZXIoKTogbnVtYmVyO1xuICBxdWFydGVyKHZhbDogbnVtYmVyKTogS2hyb25vcztcbiAgcXVhcnRlcih2YWw/OiBudW1iZXIpOiBLaHJvbm9zIHwgbnVtYmVyIHtcbiAgICBpZiAoIXZhbCAmJiB2YWwgIT09IDApIHtcbiAgICAgIHJldHVybiBnZXRRdWFydGVyKHRoaXMuX2RhdGUsIHRoaXMuX2lzVVRDKTtcbiAgICB9XG5cbiAgICB0aGlzLl9kYXRlID0gc2V0UXVhcnRlcih0aGlzLl9kYXRlLCB2YWwsIHRoaXMuX2lzVVRDKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqIEBkZXByZWNhdGVkICovXG4gIHF1YXJ0ZXJzKCk6IG51bWJlcjtcbiAgcXVhcnRlcnModmFsOiBudW1iZXIpOiBLaHJvbm9zO1xuICBxdWFydGVycyh2YWw/OiBudW1iZXIpOiBLaHJvbm9zIHwgbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5xdWFydGVyKHZhbCk7XG4gIH1cblxuICBzdGFydE9mKHBlcmlvZD86IE1vbWVudFVuaXRPZlRpbWUpOiBLaHJvbm9zIHtcbiAgICBjb25zdCBfcGVyID0gbWFwVW5pdE9mVGltZShwZXJpb2QpO1xuICAgIHRoaXMuX2RhdGUgPSBzdGFydE9mKHRoaXMuX2RhdGUsIF9wZXIsIHRoaXMuX2lzVVRDKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbn1cbiJdfQ==
|