ngx-bootstrap 3.0.1 → 3.1.4
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/CHANGELOG.md +298 -0
- package/CONTRIBUTING.md +1 -1
- package/README.md +24 -8
- package/accordion/accordion-group.component.d.ts +3 -3
- package/accordion/bundles/ngx-bootstrap-accordion.umd.js +264 -0
- package/accordion/bundles/ngx-bootstrap-accordion.umd.js.map +1 -0
- package/accordion/bundles/ngx-bootstrap-accordion.umd.min.js +2 -0
- package/accordion/bundles/ngx-bootstrap-accordion.umd.min.js.map +1 -0
- package/accordion/esm2015/accordion-group.component.js +140 -0
- package/accordion/esm2015/accordion.component.js +88 -0
- package/accordion/esm2015/accordion.config.js +35 -0
- package/accordion/esm2015/accordion.module.js +36 -0
- package/accordion/esm2015/ngx-bootstrap-accordion.js +10 -0
- package/accordion/esm2015/public_api.js +10 -0
- package/accordion/esm5/accordion-group.component.js +157 -0
- package/accordion/esm5/accordion.component.js +99 -0
- package/accordion/esm5/accordion.config.js +37 -0
- package/accordion/esm5/accordion.module.js +43 -0
- package/accordion/esm5/ngx-bootstrap-accordion.js +10 -0
- package/accordion/esm5/public_api.js +10 -0
- package/accordion/fesm2015/ngx-bootstrap-accordion.js +222 -0
- package/accordion/fesm2015/ngx-bootstrap-accordion.js.map +1 -0
- package/accordion/fesm5/ngx-bootstrap-accordion.js +255 -0
- package/accordion/fesm5/ngx-bootstrap-accordion.js.map +1 -0
- package/accordion/ngx-bootstrap-accordion.d.ts +4 -0
- package/accordion/ngx-bootstrap-accordion.metadata.json +1 -0
- package/accordion/package.json +19 -0
- package/accordion/{index.d.ts → public_api.d.ts} +0 -0
- package/alert/bundles/ngx-bootstrap-alert.umd.js +209 -0
- package/alert/bundles/ngx-bootstrap-alert.umd.js.map +1 -0
- package/alert/bundles/ngx-bootstrap-alert.umd.min.js +2 -0
- package/alert/bundles/ngx-bootstrap-alert.umd.min.js.map +1 -0
- package/alert/esm2015/alert.component.js +145 -0
- package/alert/esm2015/alert.config.js +50 -0
- package/alert/esm2015/alert.module.js +35 -0
- package/alert/esm2015/ngx-bootstrap-alert.js +10 -0
- package/alert/esm2015/public_api.js +9 -0
- package/alert/esm5/alert.component.js +157 -0
- package/alert/esm5/alert.config.js +52 -0
- package/alert/esm5/alert.module.js +42 -0
- package/alert/esm5/ngx-bootstrap-alert.js +10 -0
- package/alert/esm5/public_api.js +9 -0
- package/alert/fesm2015/ngx-bootstrap-alert.js +153 -0
- package/alert/fesm2015/ngx-bootstrap-alert.js.map +1 -0
- package/alert/fesm5/ngx-bootstrap-alert.js +171 -0
- package/alert/fesm5/ngx-bootstrap-alert.js.map +1 -0
- package/alert/ngx-bootstrap-alert.d.ts +4 -0
- package/alert/ngx-bootstrap-alert.metadata.json +1 -0
- package/alert/package.json +19 -0
- package/alert/{index.d.ts → public_api.d.ts} +0 -0
- package/bundles/ngx-bootstrap.es2015.js +20178 -12836
- package/bundles/ngx-bootstrap.es2015.js.map +1 -1
- package/bundles/ngx-bootstrap.umd.js +179 -21213
- package/bundles/ngx-bootstrap.umd.js.map +1 -1
- package/bundles/ngx-bootstrap.umd.min.js +1 -64
- package/bundles/ngx-bootstrap.umd.min.js.map +1 -1
- package/buttons/bundles/ngx-bootstrap-buttons.umd.js +479 -0
- package/buttons/bundles/ngx-bootstrap-buttons.umd.js.map +1 -0
- package/buttons/bundles/ngx-bootstrap-buttons.umd.min.js +2 -0
- package/buttons/bundles/ngx-bootstrap-buttons.umd.min.js.map +1 -0
- package/buttons/button-checkbox.directive.d.ts +10 -10
- package/buttons/button-radio-group.directive.d.ts +9 -10
- package/buttons/button-radio.directive.d.ts +12 -12
- package/buttons/esm2015/button-checkbox.directive.js +146 -0
- package/buttons/esm2015/button-radio-group.directive.js +90 -0
- package/buttons/esm2015/button-radio.directive.js +200 -0
- package/buttons/esm2015/buttons.module.js +33 -0
- package/buttons/esm2015/ngx-bootstrap-buttons.js +13 -0
- package/buttons/esm2015/public_api.js +10 -0
- package/buttons/esm5/button-checkbox.directive.js +184 -0
- package/buttons/esm5/button-radio-group.directive.js +105 -0
- package/buttons/esm5/button-radio.directive.js +239 -0
- package/buttons/esm5/buttons.module.js +40 -0
- package/buttons/esm5/ngx-bootstrap-buttons.js +13 -0
- package/buttons/esm5/public_api.js +10 -0
- package/buttons/fesm2015/ngx-bootstrap-buttons.js +376 -0
- package/buttons/fesm2015/ngx-bootstrap-buttons.js.map +1 -0
- package/buttons/fesm5/ngx-bootstrap-buttons.js +471 -0
- package/buttons/fesm5/ngx-bootstrap-buttons.js.map +1 -0
- package/buttons/ngx-bootstrap-buttons.d.ts +7 -0
- package/buttons/ngx-bootstrap-buttons.metadata.json +1 -0
- package/buttons/package.json +19 -0
- package/buttons/{index.d.ts → public_api.d.ts} +0 -0
- package/carousel/bundles/ngx-bootstrap-carousel.umd.js +567 -0
- package/carousel/bundles/ngx-bootstrap-carousel.umd.js.map +1 -0
- package/carousel/bundles/ngx-bootstrap-carousel.umd.min.js +2 -0
- package/carousel/bundles/ngx-bootstrap-carousel.umd.min.js.map +1 -0
- package/carousel/carousel.component.d.ts +3 -7
- package/carousel/esm2015/carousel.component.js +372 -0
- package/carousel/esm2015/carousel.config.js +59 -0
- package/carousel/esm2015/carousel.module.js +36 -0
- package/carousel/esm2015/ngx-bootstrap-carousel.js +10 -0
- package/carousel/esm2015/public_api.js +10 -0
- package/carousel/esm2015/slide.component.js +81 -0
- package/carousel/esm5/carousel.component.js +495 -0
- package/carousel/esm5/carousel.config.js +61 -0
- package/carousel/esm5/carousel.module.js +43 -0
- package/carousel/esm5/ngx-bootstrap-carousel.js +10 -0
- package/carousel/esm5/public_api.js +10 -0
- package/carousel/esm5/slide.component.js +86 -0
- package/carousel/fesm2015/ngx-bootstrap-carousel.js +423 -0
- package/carousel/fesm2015/ngx-bootstrap-carousel.js.map +1 -0
- package/carousel/fesm5/ngx-bootstrap-carousel.js +556 -0
- package/carousel/fesm5/ngx-bootstrap-carousel.js.map +1 -0
- package/carousel/ngx-bootstrap-carousel.d.ts +4 -0
- package/carousel/ngx-bootstrap-carousel.metadata.json +1 -0
- package/carousel/package.json +19 -0
- package/carousel/{index.d.ts → public_api.d.ts} +0 -0
- package/chronos/bundles/ngx-bootstrap-chronos.umd.js +8428 -0
- package/chronos/bundles/ngx-bootstrap-chronos.umd.js.map +1 -0
- package/chronos/bundles/ngx-bootstrap-chronos.umd.min.js +2 -0
- package/chronos/bundles/ngx-bootstrap-chronos.umd.min.js.map +1 -0
- package/chronos/esm2015/create/check-overflow.js +39 -0
- package/chronos/esm2015/create/clone.js +13 -0
- package/chronos/esm2015/create/date-from-array.js +38 -0
- package/chronos/esm2015/create/from-anything.js +131 -0
- package/chronos/esm2015/create/from-array.js +149 -0
- package/chronos/esm2015/create/from-object.js +25 -0
- package/chronos/esm2015/create/from-string-and-array.js +46 -0
- package/chronos/esm2015/create/from-string-and-format.js +120 -0
- package/chronos/esm2015/create/from-string.js +268 -0
- package/chronos/esm2015/create/local.js +23 -0
- package/chronos/esm2015/create/parsing-flags.js +38 -0
- package/chronos/esm2015/create/parsing.types.js +146 -0
- package/chronos/esm2015/create/valid.js +60 -0
- package/chronos/esm2015/duration/bubble.js +64 -0
- package/chronos/esm2015/duration/constructor.js +182 -0
- package/chronos/esm2015/duration/create.js +141 -0
- package/chronos/esm2015/duration/humanize.js +109 -0
- package/chronos/esm2015/duration/valid.js +54 -0
- package/chronos/esm2015/format/format.js +67 -0
- package/chronos/esm2015/format.js +71 -0
- package/chronos/esm2015/i18n/ar.js +155 -0
- package/chronos/esm2015/i18n/bg.js +101 -0
- package/chronos/esm2015/i18n/cs.js +215 -0
- package/chronos/esm2015/i18n/da.js +56 -0
- package/chronos/esm2015/i18n/de.js +80 -0
- package/chronos/esm2015/i18n/en-gb.js +72 -0
- package/chronos/esm2015/i18n/es-do.js +118 -0
- package/chronos/esm2015/i18n/es-us.js +111 -0
- package/chronos/esm2015/i18n/es.js +117 -0
- package/chronos/esm2015/i18n/fi.js +119 -0
- package/chronos/esm2015/i18n/fr.js +87 -0
- package/chronos/esm2015/i18n/gl.js +117 -0
- package/chronos/esm2015/i18n/he.js +129 -0
- package/chronos/esm2015/i18n/hi.js +150 -0
- package/chronos/esm2015/i18n/hu.js +140 -0
- package/chronos/esm2015/i18n/id.js +100 -0
- package/chronos/esm2015/i18n/it.js +79 -0
- package/chronos/esm2015/i18n/ja.js +95 -0
- package/chronos/esm2015/i18n/ko.js +82 -0
- package/chronos/esm2015/i18n/lt.js +155 -0
- package/chronos/esm2015/i18n/mn.js +108 -0
- package/chronos/esm2015/i18n/nb.js +59 -0
- package/chronos/esm2015/i18n/nl-be.js +97 -0
- package/chronos/esm2015/i18n/nl.js +97 -0
- package/chronos/esm2015/i18n/pl.js +156 -0
- package/chronos/esm2015/i18n/pt-br.js +65 -0
- package/chronos/esm2015/i18n/ro.js +73 -0
- package/chronos/esm2015/i18n/ru.js +218 -0
- package/chronos/esm2015/i18n/sk.js +193 -0
- package/chronos/esm2015/i18n/sl.js +202 -0
- package/chronos/esm2015/i18n/sv.js +74 -0
- package/chronos/esm2015/i18n/th.js +75 -0
- package/chronos/esm2015/i18n/tr.js +95 -0
- package/chronos/esm2015/i18n/zh-cn.js +136 -0
- package/chronos/esm2015/index.js +7 -0
- package/chronos/esm2015/locale/calendar.js +14 -0
- package/chronos/esm2015/locale/locale.class.js +841 -0
- package/chronos/esm2015/locale/locale.defaults.js +46 -0
- package/chronos/esm2015/locale/locales.js +272 -0
- package/chronos/esm2015/moment/add-subtract.js +61 -0
- package/chronos/esm2015/moment/calendar.js +81 -0
- package/chronos/esm2015/moment/diff.js +88 -0
- package/chronos/esm2015/moment/min-max.js +50 -0
- package/chronos/esm2015/ngx-bootstrap-chronos.js +11 -0
- package/chronos/esm2015/parse/regex.js +72 -0
- package/chronos/esm2015/parse/token.js +52 -0
- package/chronos/esm2015/public_api.js +50 -0
- package/chronos/esm2015/test/chain.js +1212 -0
- package/chronos/esm2015/types.js +76 -0
- package/chronos/esm2015/units/aliases.js +53 -0
- package/chronos/esm2015/units/constants.js +16 -0
- package/chronos/esm2015/units/day-of-month.js +39 -0
- package/chronos/esm2015/units/day-of-week.js +183 -0
- package/chronos/esm2015/units/day-of-year.js +55 -0
- package/chronos/esm2015/units/hour.js +153 -0
- package/chronos/esm2015/units/index.js +24 -0
- package/chronos/esm2015/units/millisecond.js +74 -0
- package/chronos/esm2015/units/minute.js +31 -0
- package/chronos/esm2015/units/month.js +75 -0
- package/chronos/esm2015/units/offset.js +227 -0
- package/chronos/esm2015/units/priorities.js +31 -0
- package/chronos/esm2015/units/quarter.js +57 -0
- package/chronos/esm2015/units/second.js +31 -0
- package/chronos/esm2015/units/timestamp.js +36 -0
- package/chronos/esm2015/units/timezone.js +33 -0
- package/chronos/esm2015/units/week-calendar-utils.js +94 -0
- package/chronos/esm2015/units/week-year.js +175 -0
- package/chronos/esm2015/units/week.js +83 -0
- package/chronos/esm2015/units/year.js +81 -0
- package/chronos/esm2015/utils/abs-ceil.js +13 -0
- package/chronos/esm2015/utils/abs-round.js +13 -0
- package/chronos/esm2015/utils/compare-arrays.js +27 -0
- package/chronos/esm2015/utils/date-compare.js +108 -0
- package/chronos/esm2015/utils/date-getters.js +157 -0
- package/chronos/esm2015/utils/date-setters.js +147 -0
- package/chronos/esm2015/utils/defaults.js +22 -0
- package/chronos/esm2015/utils/start-end-of.js +74 -0
- package/chronos/esm2015/utils/type-checks.js +114 -0
- package/chronos/esm2015/utils/zero-fill.js +21 -0
- package/chronos/esm2015/utils.js +21 -0
- package/chronos/esm5/create/check-overflow.js +39 -0
- package/chronos/esm5/create/clone.js +13 -0
- package/chronos/esm5/create/date-from-array.js +44 -0
- package/chronos/esm5/create/from-anything.js +131 -0
- package/chronos/esm5/create/from-array.js +149 -0
- package/chronos/esm5/create/from-object.js +25 -0
- package/chronos/esm5/create/from-string-and-array.js +46 -0
- package/chronos/esm5/create/from-string-and-format.js +120 -0
- package/chronos/esm5/create/from-string.js +268 -0
- package/chronos/esm5/create/local.js +23 -0
- package/chronos/esm5/create/parsing-flags.js +38 -0
- package/chronos/esm5/create/parsing.types.js +146 -0
- package/chronos/esm5/create/valid.js +60 -0
- package/chronos/esm5/duration/bubble.js +64 -0
- package/chronos/esm5/duration/constructor.js +205 -0
- package/chronos/esm5/duration/create.js +143 -0
- package/chronos/esm5/duration/humanize.js +109 -0
- package/chronos/esm5/duration/valid.js +54 -0
- package/chronos/esm5/format/format.js +68 -0
- package/chronos/esm5/format.js +73 -0
- package/chronos/esm5/i18n/ar.js +155 -0
- package/chronos/esm5/i18n/bg.js +101 -0
- package/chronos/esm5/i18n/cs.js +215 -0
- package/chronos/esm5/i18n/da.js +56 -0
- package/chronos/esm5/i18n/de.js +80 -0
- package/chronos/esm5/i18n/en-gb.js +72 -0
- package/chronos/esm5/i18n/es-do.js +118 -0
- package/chronos/esm5/i18n/es-us.js +111 -0
- package/chronos/esm5/i18n/es.js +117 -0
- package/chronos/esm5/i18n/fi.js +119 -0
- package/chronos/esm5/i18n/fr.js +87 -0
- package/chronos/esm5/i18n/gl.js +117 -0
- package/chronos/esm5/i18n/he.js +129 -0
- package/chronos/esm5/i18n/hi.js +150 -0
- package/chronos/esm5/i18n/hu.js +140 -0
- package/chronos/esm5/i18n/id.js +100 -0
- package/chronos/esm5/i18n/it.js +79 -0
- package/chronos/esm5/i18n/ja.js +95 -0
- package/chronos/esm5/i18n/ko.js +82 -0
- package/chronos/esm5/i18n/lt.js +155 -0
- package/chronos/esm5/i18n/mn.js +108 -0
- package/chronos/esm5/i18n/nb.js +59 -0
- package/chronos/esm5/i18n/nl-be.js +97 -0
- package/chronos/esm5/i18n/nl.js +97 -0
- package/chronos/esm5/i18n/pl.js +156 -0
- package/chronos/esm5/i18n/pt-br.js +65 -0
- package/chronos/esm5/i18n/ro.js +73 -0
- package/chronos/esm5/i18n/ru.js +218 -0
- package/chronos/esm5/i18n/sk.js +193 -0
- package/chronos/esm5/i18n/sl.js +202 -0
- package/chronos/esm5/i18n/sv.js +74 -0
- package/chronos/esm5/i18n/th.js +75 -0
- package/chronos/esm5/i18n/tr.js +95 -0
- package/chronos/esm5/i18n/zh-cn.js +136 -0
- package/chronos/esm5/index.js +7 -0
- package/chronos/esm5/locale/calendar.js +14 -0
- package/chronos/esm5/locale/locale.class.js +996 -0
- package/chronos/esm5/locale/locale.defaults.js +46 -0
- package/chronos/esm5/locale/locales.js +272 -0
- package/chronos/esm5/moment/add-subtract.js +61 -0
- package/chronos/esm5/moment/calendar.js +83 -0
- package/chronos/esm5/moment/diff.js +89 -0
- package/chronos/esm5/moment/min-max.js +58 -0
- package/chronos/esm5/ngx-bootstrap-chronos.js +11 -0
- package/chronos/esm5/parse/regex.js +72 -0
- package/chronos/esm5/parse/token.js +52 -0
- package/chronos/esm5/public_api.js +50 -0
- package/chronos/esm5/test/chain.js +1506 -0
- package/chronos/esm5/types.js +76 -0
- package/chronos/esm5/units/aliases.js +53 -0
- package/chronos/esm5/units/constants.js +16 -0
- package/chronos/esm5/units/day-of-month.js +39 -0
- package/chronos/esm5/units/day-of-week.js +188 -0
- package/chronos/esm5/units/day-of-year.js +55 -0
- package/chronos/esm5/units/hour.js +153 -0
- package/chronos/esm5/units/index.js +24 -0
- package/chronos/esm5/units/millisecond.js +74 -0
- package/chronos/esm5/units/minute.js +31 -0
- package/chronos/esm5/units/month.js +75 -0
- package/chronos/esm5/units/offset.js +231 -0
- package/chronos/esm5/units/priorities.js +31 -0
- package/chronos/esm5/units/quarter.js +58 -0
- package/chronos/esm5/units/second.js +31 -0
- package/chronos/esm5/units/timestamp.js +36 -0
- package/chronos/esm5/units/timezone.js +33 -0
- package/chronos/esm5/units/week-calendar-utils.js +94 -0
- package/chronos/esm5/units/week-year.js +178 -0
- package/chronos/esm5/units/week.js +85 -0
- package/chronos/esm5/units/year.js +81 -0
- package/chronos/esm5/utils/abs-ceil.js +13 -0
- package/chronos/esm5/utils/abs-round.js +13 -0
- package/chronos/esm5/utils/compare-arrays.js +27 -0
- package/chronos/esm5/utils/date-compare.js +112 -0
- package/chronos/esm5/utils/date-getters.js +165 -0
- package/chronos/esm5/utils/date-setters.js +147 -0
- package/chronos/esm5/utils/defaults.js +22 -0
- package/chronos/esm5/utils/start-end-of.js +74 -0
- package/chronos/esm5/utils/type-checks.js +114 -0
- package/chronos/esm5/utils/zero-fill.js +21 -0
- package/chronos/esm5/utils.js +21 -0
- package/chronos/fesm2015/ngx-bootstrap-chronos.js +8176 -0
- package/chronos/fesm2015/ngx-bootstrap-chronos.js.map +1 -0
- package/chronos/fesm5/ngx-bootstrap-chronos.js +8383 -0
- package/chronos/fesm5/ngx-bootstrap-chronos.js.map +1 -0
- package/chronos/i18n/bg.d.ts +2 -0
- package/chronos/i18n/lt.d.ts +2 -0
- package/chronos/i18n/nb.d.ts +2 -0
- package/chronos/i18n/sk.d.ts +2 -0
- package/chronos/index.d.ts +1 -7
- package/chronos/ngx-bootstrap-chronos.d.ts +5 -0
- package/chronos/ngx-bootstrap-chronos.metadata.json +1 -0
- package/chronos/package.json +19 -0
- package/chronos/public_api.d.ts +46 -0
- package/chronos/units/day-of-month.d.ts +1 -1
- package/chronos/units/day-of-week.d.ts +1 -0
- package/chronos/units/day-of-year.d.ts +1 -0
- package/chronos/units/hour.d.ts +1 -1
- package/chronos/units/millisecond.d.ts +1 -1
- package/chronos/units/minute.d.ts +1 -1
- package/chronos/units/month.d.ts +1 -0
- package/chronos/units/offset.d.ts +1 -0
- package/chronos/units/quarter.d.ts +1 -0
- package/chronos/units/second.d.ts +1 -1
- package/chronos/units/timestamp.d.ts +1 -1
- package/chronos/units/timezone.d.ts +1 -0
- package/chronos/units/week-year.d.ts +1 -0
- package/chronos/units/week.d.ts +1 -0
- package/chronos/units/year.d.ts +1 -0
- package/chronos/utils/date-compare.d.ts +2 -0
- package/chronos/utils/type-checks.d.ts +1 -1
- package/collapse/bundles/ngx-bootstrap-collapse.umd.js +178 -0
- package/collapse/bundles/ngx-bootstrap-collapse.umd.js.map +1 -0
- package/collapse/bundles/ngx-bootstrap-collapse.umd.min.js +2 -0
- package/collapse/bundles/ngx-bootstrap-collapse.umd.min.js.map +1 -0
- package/collapse/esm2015/collapse.directive.js +150 -0
- package/collapse/esm2015/collapse.module.js +31 -0
- package/collapse/esm2015/ngx-bootstrap-collapse.js +10 -0
- package/collapse/esm2015/public_api.js +8 -0
- package/collapse/esm5/collapse.directive.js +167 -0
- package/collapse/esm5/collapse.module.js +38 -0
- package/collapse/esm5/ngx-bootstrap-collapse.js +10 -0
- package/collapse/esm5/public_api.js +8 -0
- package/collapse/fesm2015/ngx-bootstrap-collapse.js +147 -0
- package/collapse/fesm2015/ngx-bootstrap-collapse.js.map +1 -0
- package/collapse/fesm5/ngx-bootstrap-collapse.js +169 -0
- package/collapse/fesm5/ngx-bootstrap-collapse.js.map +1 -0
- package/collapse/ngx-bootstrap-collapse.d.ts +4 -0
- package/collapse/ngx-bootstrap-collapse.metadata.json +1 -0
- package/collapse/package.json +19 -0
- package/collapse/{index.d.ts → public_api.d.ts} +0 -0
- package/component-loader/bundles/ngx-bootstrap-component-loader.umd.js +508 -0
- package/component-loader/bundles/ngx-bootstrap-component-loader.umd.js.map +1 -0
- package/component-loader/bundles/ngx-bootstrap-component-loader.umd.min.js +2 -0
- package/component-loader/bundles/ngx-bootstrap-component-loader.umd.min.js.map +1 -0
- package/component-loader/component-loader.class.d.ts +11 -5
- package/component-loader/component-loader.factory.d.ts +1 -2
- package/component-loader/esm2015/bs-component-ref.class.js +17 -0
- package/component-loader/esm2015/component-loader.class.js +402 -0
- package/component-loader/esm2015/component-loader.factory.js +66 -0
- package/component-loader/esm2015/content-ref.class.js +34 -0
- package/component-loader/esm2015/listen-options.model.js +28 -0
- package/component-loader/esm2015/ngx-bootstrap-component-loader.js +10 -0
- package/component-loader/esm2015/public_api.js +10 -0
- package/component-loader/esm5/bs-component-ref.class.js +27 -0
- package/component-loader/esm5/component-loader.class.js +468 -0
- package/component-loader/esm5/component-loader.factory.js +75 -0
- package/component-loader/esm5/content-ref.class.js +31 -0
- package/component-loader/esm5/listen-options.model.js +28 -0
- package/component-loader/esm5/ngx-bootstrap-component-loader.js +10 -0
- package/component-loader/esm5/public_api.js +10 -0
- package/component-loader/fesm2015/ngx-bootstrap-component-loader.js +426 -0
- package/component-loader/fesm2015/ngx-bootstrap-component-loader.js.map +1 -0
- package/component-loader/fesm5/ngx-bootstrap-component-loader.js +498 -0
- package/component-loader/fesm5/ngx-bootstrap-component-loader.js.map +1 -0
- package/component-loader/listen-options.model.d.ts +1 -0
- package/component-loader/ngx-bootstrap-component-loader.d.ts +4 -0
- package/component-loader/ngx-bootstrap-component-loader.metadata.json +1 -0
- package/component-loader/package.json +19 -0
- package/component-loader/public_api.d.ts +4 -0
- package/datepicker/base/bs-datepicker-container.d.ts +3 -1
- package/datepicker/bs-datepicker-input.directive.d.ts +3 -3
- package/datepicker/bs-datepicker.component.d.ts +13 -3
- package/datepicker/bs-datepicker.config.d.ts +14 -1
- package/datepicker/bs-datepicker.css +14 -5
- package/datepicker/bs-datepicker.css.map +2 -2
- package/datepicker/bs-datepicker.module.d.ts +0 -1
- package/datepicker/bs-datepicker.scss +23 -10
- package/datepicker/bs-daterangepicker-input.directive.d.ts +3 -3
- package/datepicker/bs-daterangepicker.component.d.ts +4 -3
- package/datepicker/bundles/ngx-bootstrap-datepicker.umd.js +4334 -0
- package/datepicker/bundles/ngx-bootstrap-datepicker.umd.js.map +1 -0
- package/datepicker/bundles/ngx-bootstrap-datepicker.umd.min.js +2 -0
- package/datepicker/bundles/ngx-bootstrap-datepicker.umd.min.js.map +1 -0
- package/datepicker/datepicker.component.d.ts +5 -5
- package/datepicker/engine/calc-days-calendar.d.ts +1 -1
- package/datepicker/engine/flag-days-calendar.d.ts +2 -1
- package/datepicker/engine/flag-months-calendar.d.ts +1 -1
- package/datepicker/engine/flag-years-calendar.d.ts +1 -1
- package/datepicker/engine/format-days-calendar.d.ts +1 -1
- package/datepicker/engine/format-months-calendar.d.ts +1 -1
- package/datepicker/engine/format-years-calendar.d.ts +1 -1
- package/datepicker/engine/view-mode.d.ts +2 -2
- package/datepicker/esm2015/base/bs-datepicker-container.js +109 -0
- package/datepicker/esm2015/bs-datepicker-input.directive.js +208 -0
- package/datepicker/esm2015/bs-datepicker.component.js +307 -0
- package/datepicker/esm2015/bs-datepicker.config.js +117 -0
- package/datepicker/esm2015/bs-datepicker.module.js +90 -0
- package/datepicker/esm2015/bs-daterangepicker-input.directive.js +224 -0
- package/datepicker/esm2015/bs-daterangepicker.component.js +293 -0
- package/datepicker/esm2015/bs-daterangepicker.config.js +29 -0
- package/datepicker/esm2015/bs-locale.service.js +61 -0
- package/datepicker/esm2015/date-formatter.js +18 -0
- package/datepicker/esm2015/datepicker-inner.component.js +451 -0
- package/datepicker/esm2015/datepicker.component.js +326 -0
- package/datepicker/esm2015/datepicker.config.js +74 -0
- package/datepicker/esm2015/datepicker.module.js +52 -0
- package/datepicker/esm2015/daypicker.component.js +212 -0
- package/datepicker/esm2015/engine/calc-days-calendar.js +29 -0
- package/datepicker/esm2015/engine/flag-days-calendar.js +115 -0
- package/datepicker/esm2015/engine/flag-months-calendar.js +57 -0
- package/datepicker/esm2015/engine/flag-years-calendar.js +56 -0
- package/datepicker/esm2015/engine/format-days-calendar.js +50 -0
- package/datepicker/esm2015/engine/format-months-calendar.js +29 -0
- package/datepicker/esm2015/engine/format-years-calendar.js +42 -0
- package/datepicker/esm2015/engine/view-mode.js +14 -0
- package/datepicker/esm2015/models/index.js +199 -0
- package/datepicker/esm2015/monthpicker.component.js +118 -0
- package/datepicker/esm2015/ngx-bootstrap-datepicker.js +29 -0
- package/datepicker/esm2015/public_api.js +19 -0
- package/datepicker/esm2015/reducer/_defaults.js +10 -0
- package/datepicker/esm2015/reducer/bs-datepicker.actions.js +204 -0
- package/datepicker/esm2015/reducer/bs-datepicker.effects.js +249 -0
- package/datepicker/esm2015/reducer/bs-datepicker.reducer.js +289 -0
- package/datepicker/esm2015/reducer/bs-datepicker.state.js +87 -0
- package/datepicker/esm2015/reducer/bs-datepicker.store.js +34 -0
- package/datepicker/esm2015/themes/bs/bs-calendar-layout.component.js +39 -0
- package/datepicker/esm2015/themes/bs/bs-current-date-view.component.js +32 -0
- package/datepicker/esm2015/themes/bs/bs-custom-dates-view.component.js +51 -0
- package/datepicker/esm2015/themes/bs/bs-datepicker-container.component.js +113 -0
- package/datepicker/esm2015/themes/bs/bs-datepicker-day-decorator.directive.js +73 -0
- package/datepicker/esm2015/themes/bs/bs-datepicker-navigation-view.component.js +88 -0
- package/datepicker/esm2015/themes/bs/bs-daterangepicker-container.component.js +133 -0
- package/datepicker/esm2015/themes/bs/bs-days-calendar-view.component.js +134 -0
- package/datepicker/esm2015/themes/bs/bs-months-calendar-view.component.js +104 -0
- package/datepicker/esm2015/themes/bs/bs-timepicker-view.component.js +53 -0
- package/datepicker/esm2015/themes/bs/bs-years-calendar-view.component.js +105 -0
- package/datepicker/esm2015/utils/bs-calendar-utils.js +54 -0
- package/datepicker/esm2015/utils/matrix-utils.js +39 -0
- package/datepicker/esm2015/yearpicker.component.js +122 -0
- package/datepicker/esm5/base/bs-datepicker-container.js +170 -0
- package/datepicker/esm5/bs-datepicker-input.directive.js +242 -0
- package/datepicker/esm5/bs-datepicker.component.js +368 -0
- package/datepicker/esm5/bs-datepicker.config.js +119 -0
- package/datepicker/esm5/bs-datepicker.module.js +97 -0
- package/datepicker/esm5/bs-daterangepicker-input.directive.js +263 -0
- package/datepicker/esm5/bs-daterangepicker.component.js +354 -0
- package/datepicker/esm5/bs-daterangepicker.config.js +34 -0
- package/datepicker/esm5/bs-locale.service.js +79 -0
- package/datepicker/esm5/date-formatter.js +28 -0
- package/datepicker/esm5/datepicker-inner.component.js +547 -0
- package/datepicker/esm5/datepicker.component.js +325 -0
- package/datepicker/esm5/datepicker.config.js +76 -0
- package/datepicker/esm5/datepicker.module.js +59 -0
- package/datepicker/esm5/daypicker.component.js +157 -0
- package/datepicker/esm5/engine/calc-days-calendar.js +29 -0
- package/datepicker/esm5/engine/flag-days-calendar.js +115 -0
- package/datepicker/esm5/engine/flag-months-calendar.js +57 -0
- package/datepicker/esm5/engine/flag-years-calendar.js +56 -0
- package/datepicker/esm5/engine/format-days-calendar.js +55 -0
- package/datepicker/esm5/engine/format-months-calendar.js +31 -0
- package/datepicker/esm5/engine/format-years-calendar.js +44 -0
- package/datepicker/esm5/engine/view-mode.js +14 -0
- package/datepicker/esm5/models/index.js +199 -0
- package/datepicker/esm5/monthpicker.component.js +85 -0
- package/datepicker/esm5/ngx-bootstrap-datepicker.js +29 -0
- package/datepicker/esm5/public_api.js +19 -0
- package/datepicker/esm5/reducer/_defaults.js +10 -0
- package/datepicker/esm5/reducer/bs-datepicker.actions.js +266 -0
- package/datepicker/esm5/reducer/bs-datepicker.effects.js +314 -0
- package/datepicker/esm5/reducer/bs-datepicker.reducer.js +298 -0
- package/datepicker/esm5/reducer/bs-datepicker.state.js +91 -0
- package/datepicker/esm5/reducer/bs-datepicker.store.js +40 -0
- package/datepicker/esm5/themes/bs/bs-calendar-layout.component.js +28 -0
- package/datepicker/esm5/themes/bs/bs-current-date-view.component.js +36 -0
- package/datepicker/esm5/themes/bs/bs-custom-dates-view.component.js +50 -0
- package/datepicker/esm5/themes/bs/bs-datepicker-container.component.js +138 -0
- package/datepicker/esm5/themes/bs/bs-datepicker-day-decorator.directive.js +73 -0
- package/datepicker/esm5/themes/bs/bs-datepicker-navigation-view.component.js +68 -0
- package/datepicker/esm5/themes/bs/bs-daterangepicker-container.component.js +158 -0
- package/datepicker/esm5/themes/bs/bs-days-calendar-view.component.js +114 -0
- package/datepicker/esm5/themes/bs/bs-months-calendar-view.component.js +100 -0
- package/datepicker/esm5/themes/bs/bs-timepicker-view.component.js +37 -0
- package/datepicker/esm5/themes/bs/bs-years-calendar-view.component.js +101 -0
- package/datepicker/esm5/utils/bs-calendar-utils.js +54 -0
- package/datepicker/esm5/utils/matrix-utils.js +39 -0
- package/datepicker/esm5/yearpicker.component.js +92 -0
- package/datepicker/fesm2015/ngx-bootstrap-datepicker.js +3827 -0
- package/datepicker/fesm2015/ngx-bootstrap-datepicker.js.map +1 -0
- package/datepicker/fesm5/ngx-bootstrap-datepicker.js +4198 -0
- package/datepicker/fesm5/ngx-bootstrap-datepicker.js.map +1 -0
- package/datepicker/models/index.d.ts +3 -1
- package/datepicker/ngx-bootstrap-datepicker.d.ts +23 -0
- package/datepicker/ngx-bootstrap-datepicker.metadata.json +1 -0
- package/datepicker/package.json +19 -0
- package/datepicker/public_api.d.ts +14 -0
- package/datepicker/reducer/_defaults.d.ts +1 -1
- package/datepicker/reducer/bs-datepicker.actions.d.ts +5 -3
- package/datepicker/reducer/bs-datepicker.effects.d.ts +3 -2
- package/datepicker/reducer/bs-datepicker.reducer.d.ts +1 -1
- package/datepicker/reducer/bs-datepicker.state.d.ts +4 -1
- package/datepicker/reducer/bs-datepicker.store.d.ts +1 -1
- package/datepicker/themes/bs/bs-datepicker-container.component.d.ts +1 -1
- package/datepicker/themes/bs/bs-datepicker-day-decorator.directive.d.ts +9 -2
- package/datepicker/themes/bs/bs-datepicker-navigation-view.component.d.ts +1 -1
- package/datepicker/themes/bs/bs-daterangepicker-container.component.d.ts +1 -1
- package/datepicker/themes/bs/bs-days-calendar-view.component.d.ts +4 -1
- package/datepicker/themes/bs/bs-months-calendar-view.component.d.ts +1 -1
- package/datepicker/themes/bs/bs-years-calendar-view.component.d.ts +1 -1
- package/datepicker/utils/matrix-utils.d.ts +1 -1
- package/dropdown/bs-dropdown-container.component.d.ts +3 -0
- package/dropdown/bs-dropdown-toggle.directive.d.ts +4 -2
- package/dropdown/bs-dropdown.config.d.ts +2 -0
- package/dropdown/bs-dropdown.directive.d.ts +12 -6
- package/dropdown/bs-dropdown.state.d.ts +2 -1
- package/dropdown/bundles/ngx-bootstrap-dropdown.umd.js +793 -0
- package/dropdown/bundles/ngx-bootstrap-dropdown.umd.js.map +1 -0
- package/dropdown/bundles/ngx-bootstrap-dropdown.umd.min.js +2 -0
- package/dropdown/bundles/ngx-bootstrap-dropdown.umd.min.js.map +1 -0
- package/dropdown/esm2015/bs-dropdown-container.component.js +104 -0
- package/dropdown/esm2015/bs-dropdown-menu.directive.js +42 -0
- package/dropdown/esm2015/bs-dropdown-toggle.directive.js +109 -0
- package/dropdown/esm2015/bs-dropdown.config.js +44 -0
- package/dropdown/esm2015/bs-dropdown.directive.js +408 -0
- package/dropdown/esm2015/bs-dropdown.module.js +60 -0
- package/dropdown/esm2015/bs-dropdown.state.js +51 -0
- package/dropdown/esm2015/index.js +7 -0
- package/dropdown/esm2015/ngx-bootstrap-dropdown.js +10 -0
- package/dropdown/esm2015/public_api.js +13 -0
- package/dropdown/esm5/bs-dropdown-container.component.js +109 -0
- package/dropdown/esm5/bs-dropdown-menu.directive.js +40 -0
- package/dropdown/esm5/bs-dropdown-toggle.directive.js +132 -0
- package/dropdown/esm5/bs-dropdown.config.js +46 -0
- package/dropdown/esm5/bs-dropdown.directive.js +501 -0
- package/dropdown/esm5/bs-dropdown.module.js +69 -0
- package/dropdown/esm5/bs-dropdown.state.js +54 -0
- package/dropdown/esm5/index.js +7 -0
- package/dropdown/esm5/ngx-bootstrap-dropdown.js +10 -0
- package/dropdown/esm5/public_api.js +13 -0
- package/dropdown/fesm2015/ngx-bootstrap-dropdown.js +623 -0
- package/dropdown/fesm2015/ngx-bootstrap-dropdown.js.map +1 -0
- package/dropdown/fesm5/ngx-bootstrap-dropdown.js +748 -0
- package/dropdown/fesm5/ngx-bootstrap-dropdown.js.map +1 -0
- package/dropdown/index.d.ts +1 -7
- package/dropdown/ngx-bootstrap-dropdown.d.ts +4 -0
- package/dropdown/ngx-bootstrap-dropdown.metadata.json +1 -0
- package/dropdown/package.json +19 -0
- package/dropdown/public_api.d.ts +7 -0
- package/esm2015/ngx-bootstrap.js +10 -0
- package/esm2015/public_api.js +31 -0
- package/esm5/ngx-bootstrap.js +10 -0
- package/esm5/public_api.js +31 -0
- package/fesm2015/ngx-bootstrap.js +35 -0
- package/fesm2015/ngx-bootstrap.js.map +1 -0
- package/fesm5/ngx-bootstrap.js +35 -0
- package/fesm5/ngx-bootstrap.js.map +1 -0
- package/locale/bundles/ngx-bootstrap-locale.umd.js +56 -0
- package/locale/bundles/ngx-bootstrap-locale.umd.js.map +1 -0
- package/locale/bundles/ngx-bootstrap-locale.umd.min.js +2 -0
- package/locale/bundles/ngx-bootstrap-locale.umd.min.js.map +1 -0
- package/locale/esm2015/ngx-bootstrap-locale.js +10 -0
- package/locale/esm2015/public_api.js +40 -0
- package/locale/esm5/ngx-bootstrap-locale.js +10 -0
- package/locale/esm5/public_api.js +40 -0
- package/locale/fesm2015/ngx-bootstrap-locale.js +13 -0
- package/locale/fesm2015/ngx-bootstrap-locale.js.map +1 -0
- package/locale/fesm5/ngx-bootstrap-locale.js +13 -0
- package/locale/fesm5/ngx-bootstrap-locale.js.map +1 -0
- package/locale/ngx-bootstrap-locale.d.ts +4 -0
- package/locale/ngx-bootstrap-locale.metadata.json +1 -0
- package/locale/package.json +19 -0
- package/locale/public_api.d.ts +34 -0
- package/mini-ngrx/bundles/ngx-bootstrap-mini-ngrx.umd.js +178 -0
- package/mini-ngrx/bundles/ngx-bootstrap-mini-ngrx.umd.js.map +1 -0
- package/mini-ngrx/bundles/ngx-bootstrap-mini-ngrx.umd.min.js +2 -0
- package/mini-ngrx/bundles/ngx-bootstrap-mini-ngrx.umd.min.js.map +1 -0
- package/mini-ngrx/esm2015/index.js +7 -0
- package/mini-ngrx/esm2015/ngx-bootstrap-mini-ngrx.js +10 -0
- package/mini-ngrx/esm2015/public_api.js +18 -0
- package/mini-ngrx/esm2015/state.class.js +29 -0
- package/mini-ngrx/esm2015/store.class.js +81 -0
- package/mini-ngrx/esm5/index.js +7 -0
- package/mini-ngrx/esm5/ngx-bootstrap-mini-ngrx.js +10 -0
- package/mini-ngrx/esm5/public_api.js +18 -0
- package/mini-ngrx/esm5/state.class.js +35 -0
- package/mini-ngrx/esm5/store.class.js +114 -0
- package/mini-ngrx/fesm2015/ngx-bootstrap-mini-ngrx.js +114 -0
- package/mini-ngrx/fesm2015/ngx-bootstrap-mini-ngrx.js.map +1 -0
- package/mini-ngrx/fesm5/ngx-bootstrap-mini-ngrx.js +144 -0
- package/mini-ngrx/fesm5/ngx-bootstrap-mini-ngrx.js.map +1 -0
- package/mini-ngrx/index.d.ts +1 -7
- package/mini-ngrx/ngx-bootstrap-mini-ngrx.d.ts +4 -0
- package/mini-ngrx/ngx-bootstrap-mini-ngrx.metadata.json +1 -0
- package/mini-ngrx/package.json +19 -0
- package/mini-ngrx/public_api.d.ts +7 -0
- package/modal/bs-modal-ref.service.d.ts +4 -0
- package/modal/bs-modal.service.d.ts +5 -1
- package/modal/bundles/ngx-bootstrap-modal.umd.js +1156 -0
- package/modal/bundles/ngx-bootstrap-modal.umd.js.map +1 -0
- package/modal/bundles/ngx-bootstrap-modal.umd.min.js +2 -0
- package/modal/bundles/ngx-bootstrap-modal.umd.min.js.map +1 -0
- package/modal/esm2015/bs-modal-ref.service.js +46 -0
- package/modal/esm2015/bs-modal.service.js +267 -0
- package/modal/esm2015/modal-backdrop.component.js +103 -0
- package/modal/esm2015/modal-backdrop.options.js +19 -0
- package/modal/esm2015/modal-container.component.js +160 -0
- package/modal/esm2015/modal-options.class.js +92 -0
- package/modal/esm2015/modal.directive.js +459 -0
- package/modal/esm2015/modal.module.js +44 -0
- package/modal/esm2015/models/index.js +58 -0
- package/modal/esm2015/ngx-bootstrap-modal.js +11 -0
- package/modal/esm2015/public_api.js +14 -0
- package/modal/esm5/bs-modal-ref.service.js +48 -0
- package/modal/esm5/bs-modal.service.js +333 -0
- package/modal/esm5/modal-backdrop.component.js +112 -0
- package/modal/esm5/modal-backdrop.options.js +18 -0
- package/modal/esm5/modal-container.component.js +170 -0
- package/modal/esm5/modal-options.class.js +96 -0
- package/modal/esm5/modal.directive.js +580 -0
- package/modal/esm5/modal.module.js +51 -0
- package/modal/esm5/models/index.js +58 -0
- package/modal/esm5/ngx-bootstrap-modal.js +11 -0
- package/modal/esm5/public_api.js +14 -0
- package/modal/fesm2015/ngx-bootstrap-modal.js +932 -0
- package/modal/fesm2015/ngx-bootstrap-modal.js.map +1 -0
- package/modal/fesm5/ngx-bootstrap-modal.js +1142 -0
- package/modal/fesm5/ngx-bootstrap-modal.js.map +1 -0
- package/modal/modal-container.component.d.ts +2 -2
- package/modal/modal-options.class.d.ts +5 -7
- package/modal/modal.directive.d.ts +25 -7
- package/modal/models/index.d.ts +22 -0
- package/modal/ngx-bootstrap-modal.d.ts +5 -0
- package/modal/ngx-bootstrap-modal.metadata.json +1 -0
- package/modal/package.json +19 -0
- package/modal/{index.d.ts → public_api.d.ts} +0 -0
- package/ngx-bootstrap.d.ts +4 -0
- package/ngx-bootstrap.metadata.json +1 -0
- package/package.json +30 -29
- package/pagination/bundles/ngx-bootstrap-pagination.umd.js +815 -0
- package/pagination/bundles/ngx-bootstrap-pagination.umd.js.map +1 -0
- package/pagination/bundles/ngx-bootstrap-pagination.umd.min.js +2 -0
- package/pagination/bundles/ngx-bootstrap-pagination.umd.min.js.map +1 -0
- package/pagination/esm2015/models/index.js +62 -0
- package/pagination/esm2015/ngx-bootstrap-pagination.js +12 -0
- package/pagination/esm2015/pager.component.js +412 -0
- package/pagination/esm2015/pagination.component.js +422 -0
- package/pagination/esm2015/pagination.config.js +49 -0
- package/pagination/esm2015/pagination.module.js +35 -0
- package/pagination/esm2015/public_api.js +10 -0
- package/pagination/esm5/models/index.js +62 -0
- package/pagination/esm5/ngx-bootstrap-pagination.js +12 -0
- package/pagination/esm5/pager.component.js +475 -0
- package/pagination/esm5/pagination.component.js +485 -0
- package/pagination/esm5/pagination.config.js +51 -0
- package/pagination/esm5/pagination.module.js +42 -0
- package/pagination/esm5/public_api.js +10 -0
- package/pagination/fesm2015/ngx-bootstrap-pagination.js +685 -0
- package/pagination/fesm2015/ngx-bootstrap-pagination.js.map +1 -0
- package/pagination/fesm5/ngx-bootstrap-pagination.js +816 -0
- package/pagination/fesm5/ngx-bootstrap-pagination.js.map +1 -0
- package/pagination/models/index.d.ts +25 -0
- package/pagination/ngx-bootstrap-pagination.d.ts +6 -0
- package/pagination/ngx-bootstrap-pagination.metadata.json +1 -0
- package/pagination/package.json +19 -0
- package/pagination/pager.component.d.ts +11 -11
- package/pagination/pagination.component.d.ts +12 -12
- package/pagination/pagination.config.d.ts +3 -2
- package/pagination/{index.d.ts → public_api.d.ts} +0 -0
- package/popover/bundles/ngx-bootstrap-popover.umd.js +317 -0
- package/popover/bundles/ngx-bootstrap-popover.umd.js.map +1 -0
- package/popover/bundles/ngx-bootstrap-popover.umd.min.js +2 -0
- package/popover/bundles/ngx-bootstrap-popover.umd.min.js.map +1 -0
- package/popover/esm2015/ngx-bootstrap-popover.js +10 -0
- package/popover/esm2015/popover-container.component.js +72 -0
- package/popover/esm2015/popover.config.js +58 -0
- package/popover/esm2015/popover.directive.js +227 -0
- package/popover/esm2015/popover.module.js +41 -0
- package/popover/esm2015/public_api.js +10 -0
- package/popover/esm5/ngx-bootstrap-popover.js +10 -0
- package/popover/esm5/popover-container.component.js +66 -0
- package/popover/esm5/popover.config.js +60 -0
- package/popover/esm5/popover.directive.js +260 -0
- package/popover/esm5/popover.module.js +48 -0
- package/popover/esm5/public_api.js +10 -0
- package/popover/fesm2015/ngx-bootstrap-popover.js +277 -0
- package/popover/fesm2015/ngx-bootstrap-popover.js.map +1 -0
- package/popover/fesm5/ngx-bootstrap-popover.js +309 -0
- package/popover/fesm5/ngx-bootstrap-popover.js.map +1 -0
- package/popover/ngx-bootstrap-popover.d.ts +4 -0
- package/popover/ngx-bootstrap-popover.metadata.json +1 -0
- package/popover/package.json +19 -0
- package/popover/popover.directive.d.ts +3 -3
- package/popover/{index.d.ts → public_api.d.ts} +0 -0
- package/positioning/bundles/ngx-bootstrap-positioning.umd.js +366 -0
- package/positioning/bundles/ngx-bootstrap-positioning.umd.js.map +1 -0
- package/positioning/bundles/ngx-bootstrap-positioning.umd.min.js +2 -0
- package/positioning/bundles/ngx-bootstrap-positioning.umd.min.js.map +1 -0
- package/positioning/esm2015/ng-positioning.js +253 -0
- package/positioning/esm2015/ngx-bootstrap-positioning.js +10 -0
- package/positioning/esm2015/positioning.service.js +91 -0
- package/positioning/esm2015/public_api.js +8 -0
- package/positioning/esm5/ng-positioning.js +300 -0
- package/positioning/esm5/ngx-bootstrap-positioning.js +10 -0
- package/positioning/esm5/positioning.service.js +99 -0
- package/positioning/esm5/public_api.js +8 -0
- package/positioning/fesm2015/ngx-bootstrap-positioning.js +299 -0
- package/positioning/fesm2015/ngx-bootstrap-positioning.js.map +1 -0
- package/positioning/fesm5/ngx-bootstrap-positioning.js +352 -0
- package/positioning/fesm5/ngx-bootstrap-positioning.js.map +1 -0
- package/positioning/ngx-bootstrap-positioning.d.ts +4 -0
- package/positioning/ngx-bootstrap-positioning.metadata.json +1 -0
- package/positioning/package.json +19 -0
- package/positioning/{index.d.ts → public_api.d.ts} +0 -0
- package/progressbar/bundles/ngx-bootstrap-progressbar.umd.js +319 -0
- package/progressbar/bundles/ngx-bootstrap-progressbar.umd.js.map +1 -0
- package/progressbar/bundles/ngx-bootstrap-progressbar.umd.min.js +2 -0
- package/progressbar/bundles/ngx-bootstrap-progressbar.umd.min.js.map +1 -0
- package/progressbar/esm2015/bar.component.js +129 -0
- package/progressbar/esm2015/ngx-bootstrap-progressbar.js +10 -0
- package/progressbar/esm2015/progressbar.component.js +148 -0
- package/progressbar/esm2015/progressbar.config.js +41 -0
- package/progressbar/esm2015/progressbar.module.js +35 -0
- package/progressbar/esm2015/public_api.js +10 -0
- package/progressbar/esm5/bar.component.js +149 -0
- package/progressbar/esm5/ngx-bootstrap-progressbar.js +10 -0
- package/progressbar/esm5/progressbar.component.js +170 -0
- package/progressbar/esm5/progressbar.config.js +43 -0
- package/progressbar/esm5/progressbar.module.js +42 -0
- package/progressbar/esm5/public_api.js +10 -0
- package/progressbar/fesm2015/ngx-bootstrap-progressbar.js +268 -0
- package/progressbar/fesm2015/ngx-bootstrap-progressbar.js.map +1 -0
- package/progressbar/fesm5/ngx-bootstrap-progressbar.js +315 -0
- package/progressbar/fesm5/ngx-bootstrap-progressbar.js.map +1 -0
- package/progressbar/ngx-bootstrap-progressbar.d.ts +4 -0
- package/progressbar/ngx-bootstrap-progressbar.metadata.json +1 -0
- package/progressbar/package.json +19 -0
- package/progressbar/progressbar.component.d.ts +4 -2
- package/progressbar/{index.d.ts → public_api.d.ts} +0 -0
- package/public_api.d.ts +25 -0
- package/rating/bundles/ngx-bootstrap-rating.umd.js +243 -0
- package/rating/bundles/ngx-bootstrap-rating.umd.js.map +1 -0
- package/rating/bundles/ngx-bootstrap-rating.umd.min.js +2 -0
- package/rating/bundles/ngx-bootstrap-rating.umd.min.js.map +1 -0
- package/rating/esm2015/models/index.js +28 -0
- package/rating/esm2015/ngx-bootstrap-rating.js +11 -0
- package/rating/esm2015/public_api.js +8 -0
- package/rating/esm2015/rating.component.js +210 -0
- package/rating/esm2015/rating.module.js +36 -0
- package/rating/esm5/models/index.js +28 -0
- package/rating/esm5/ngx-bootstrap-rating.js +11 -0
- package/rating/esm5/public_api.js +8 -0
- package/rating/esm5/rating.component.js +244 -0
- package/rating/esm5/rating.module.js +43 -0
- package/rating/fesm2015/ngx-bootstrap-rating.js +194 -0
- package/rating/fesm2015/ngx-bootstrap-rating.js.map +1 -0
- package/rating/fesm5/ngx-bootstrap-rating.js +233 -0
- package/rating/fesm5/ngx-bootstrap-rating.js.map +1 -0
- package/rating/models/index.d.ts +9 -0
- package/rating/ngx-bootstrap-rating.d.ts +5 -0
- package/rating/ngx-bootstrap-rating.metadata.json +1 -0
- package/rating/package.json +19 -0
- package/rating/{index.d.ts → public_api.d.ts} +0 -0
- package/rating/rating.component.d.ts +6 -5
- package/schematics/collection.json +10 -0
- package/schematics/ng-add/index.js +98 -0
- package/schematics/ng-add/index.js.map +1 -0
- package/schematics/ng-add/index.spec.js +37 -0
- package/schematics/ng-add/index.spec.js.map +1 -0
- package/schematics/ng-add/schema.js +10 -0
- package/schematics/ng-add/schema.js.map +1 -0
- package/schematics/ng-add/schema.json +16 -0
- package/schematics/utils/index.js +135 -0
- package/schematics/utils/index.js.map +1 -0
- package/schematics/utils/ng-module-imports.js +69 -0
- package/schematics/utils/ng-module-imports.js.map +1 -0
- package/schematics/utils/project-main-file.js +22 -0
- package/schematics/utils/project-main-file.js.map +1 -0
- package/schematics/utils/project-targets.js +25 -0
- package/schematics/utils/project-targets.js.map +1 -0
- package/sortable/bundles/ngx-bootstrap-sortable.umd.js +464 -0
- package/sortable/bundles/ngx-bootstrap-sortable.umd.js.map +1 -0
- package/sortable/bundles/ngx-bootstrap-sortable.umd.min.js +2 -0
- package/sortable/bundles/ngx-bootstrap-sortable.umd.min.js.map +1 -0
- package/sortable/esm2015/draggable-item.js +24 -0
- package/sortable/esm2015/draggable-item.service.js +65 -0
- package/sortable/esm2015/ngx-bootstrap-sortable.js +10 -0
- package/sortable/esm2015/public_api.js +9 -0
- package/sortable/esm2015/sortable.component.js +382 -0
- package/sortable/esm2015/sortable.module.js +34 -0
- package/sortable/esm5/draggable-item.js +24 -0
- package/sortable/esm5/draggable-item.service.js +82 -0
- package/sortable/esm5/ngx-bootstrap-sortable.js +10 -0
- package/sortable/esm5/public_api.js +9 -0
- package/sortable/esm5/sortable.component.js +398 -0
- package/sortable/esm5/sortable.module.js +41 -0
- package/sortable/fesm2015/ngx-bootstrap-sortable.js +377 -0
- package/sortable/fesm2015/ngx-bootstrap-sortable.js.map +1 -0
- package/sortable/fesm5/ngx-bootstrap-sortable.js +414 -0
- package/sortable/fesm5/ngx-bootstrap-sortable.js.map +1 -0
- package/sortable/ngx-bootstrap-sortable.d.ts +4 -0
- package/sortable/ngx-bootstrap-sortable.metadata.json +1 -0
- package/sortable/package.json +19 -0
- package/sortable/{index.d.ts → public_api.d.ts} +0 -0
- package/sortable/sortable.component.d.ts +1 -1
- package/tabs/bundles/ngx-bootstrap-tabs.umd.js +481 -0
- package/tabs/bundles/ngx-bootstrap-tabs.umd.js.map +1 -0
- package/tabs/bundles/ngx-bootstrap-tabs.umd.min.js +2 -0
- package/tabs/bundles/ngx-bootstrap-tabs.umd.min.js.map +1 -0
- package/tabs/esm2015/ng-transclude.directive.js +61 -0
- package/tabs/esm2015/ngx-bootstrap-tabs.js +10 -0
- package/tabs/esm2015/public_api.js +12 -0
- package/tabs/esm2015/tab-heading.directive.js +39 -0
- package/tabs/esm2015/tab.directive.js +181 -0
- package/tabs/esm2015/tabs.module.js +50 -0
- package/tabs/esm2015/tabset.component.js +195 -0
- package/tabs/esm2015/tabset.config.js +32 -0
- package/tabs/esm5/ng-transclude.directive.js +65 -0
- package/tabs/esm5/ngx-bootstrap-tabs.js +10 -0
- package/tabs/esm5/public_api.js +12 -0
- package/tabs/esm5/tab-heading.directive.js +38 -0
- package/tabs/esm5/tab.directive.js +194 -0
- package/tabs/esm5/tabs.module.js +57 -0
- package/tabs/esm5/tabset.component.js +231 -0
- package/tabs/esm5/tabset.config.js +34 -0
- package/tabs/fesm2015/ngx-bootstrap-tabs.js +415 -0
- package/tabs/fesm2015/ngx-bootstrap-tabs.js.map +1 -0
- package/tabs/fesm5/ngx-bootstrap-tabs.js +470 -0
- package/tabs/fesm5/ngx-bootstrap-tabs.js.map +1 -0
- package/tabs/ngx-bootstrap-tabs.d.ts +4 -0
- package/tabs/ngx-bootstrap-tabs.metadata.json +1 -0
- package/tabs/package.json +19 -0
- package/tabs/{index.d.ts → public_api.d.ts} +0 -0
- package/tabs/tabset.component.d.ts +3 -1
- package/timepicker/bundles/ngx-bootstrap-timepicker.umd.js +1183 -0
- package/timepicker/bundles/ngx-bootstrap-timepicker.umd.js.map +1 -0
- package/timepicker/bundles/ngx-bootstrap-timepicker.umd.min.js +2 -0
- package/timepicker/bundles/ngx-bootstrap-timepicker.umd.min.js.map +1 -0
- package/timepicker/esm2015/models/index.js +18 -0
- package/timepicker/esm2015/ngx-bootstrap-timepicker.js +11 -0
- package/timepicker/esm2015/public_api.js +11 -0
- package/timepicker/esm2015/reducer/timepicker.actions.js +99 -0
- package/timepicker/esm2015/reducer/timepicker.reducer.js +103 -0
- package/timepicker/esm2015/reducer/timepicker.store.js +33 -0
- package/timepicker/esm2015/timepicker-controls.util.js +156 -0
- package/timepicker/esm2015/timepicker.component.js +480 -0
- package/timepicker/esm2015/timepicker.config.js +144 -0
- package/timepicker/esm2015/timepicker.models.js +82 -0
- package/timepicker/esm2015/timepicker.module.js +39 -0
- package/timepicker/esm2015/timepicker.utils.js +224 -0
- package/timepicker/esm5/models/index.js +18 -0
- package/timepicker/esm5/ngx-bootstrap-timepicker.js +11 -0
- package/timepicker/esm5/public_api.js +11 -0
- package/timepicker/esm5/reducer/timepicker.actions.js +127 -0
- package/timepicker/esm5/reducer/timepicker.reducer.js +108 -0
- package/timepicker/esm5/reducer/timepicker.store.js +39 -0
- package/timepicker/esm5/timepicker-controls.util.js +156 -0
- package/timepicker/esm5/timepicker.component.js +564 -0
- package/timepicker/esm5/timepicker.config.js +146 -0
- package/timepicker/esm5/timepicker.models.js +82 -0
- package/timepicker/esm5/timepicker.module.js +46 -0
- package/timepicker/esm5/timepicker.utils.js +227 -0
- package/timepicker/fesm2015/ngx-bootstrap-timepicker.js +1006 -0
- package/timepicker/fesm2015/ngx-bootstrap-timepicker.js.map +1 -0
- package/timepicker/fesm5/ngx-bootstrap-timepicker.js +1132 -0
- package/timepicker/fesm5/ngx-bootstrap-timepicker.js.map +1 -0
- package/timepicker/models/index.d.ts +8 -0
- package/timepicker/ngx-bootstrap-timepicker.d.ts +5 -0
- package/timepicker/ngx-bootstrap-timepicker.metadata.json +1 -0
- package/timepicker/package.json +19 -0
- package/timepicker/{index.d.ts → public_api.d.ts} +0 -0
- package/timepicker/reducer/timepicker.actions.d.ts +1 -1
- package/timepicker/reducer/timepicker.reducer.d.ts +1 -1
- package/timepicker/reducer/timepicker.store.d.ts +1 -1
- package/timepicker/timepicker.component.d.ts +8 -7
- package/timepicker/timepicker.config.d.ts +1 -1
- package/timepicker/timepicker.utils.d.ts +1 -1
- package/tooltip/bundles/ngx-bootstrap-tooltip.umd.js +546 -0
- package/tooltip/bundles/ngx-bootstrap-tooltip.umd.js.map +1 -0
- package/tooltip/bundles/ngx-bootstrap-tooltip.umd.min.js +2 -0
- package/tooltip/bundles/ngx-bootstrap-tooltip.umd.min.js.map +1 -0
- package/tooltip/esm2015/ngx-bootstrap-tooltip.js +10 -0
- package/tooltip/esm2015/public_api.js +10 -0
- package/tooltip/esm2015/tooltip-container.component.js +92 -0
- package/tooltip/esm2015/tooltip.config.js +49 -0
- package/tooltip/esm2015/tooltip.directive.js +419 -0
- package/tooltip/esm2015/tooltip.module.js +41 -0
- package/tooltip/esm5/ngx-bootstrap-tooltip.js +10 -0
- package/tooltip/esm5/public_api.js +10 -0
- package/tooltip/esm5/tooltip-container.component.js +82 -0
- package/tooltip/esm5/tooltip.config.js +51 -0
- package/tooltip/esm5/tooltip.directive.js +490 -0
- package/tooltip/esm5/tooltip.module.js +48 -0
- package/tooltip/fesm2015/ngx-bootstrap-tooltip.js +456 -0
- package/tooltip/fesm2015/ngx-bootstrap-tooltip.js.map +1 -0
- package/tooltip/fesm5/ngx-bootstrap-tooltip.js +522 -0
- package/tooltip/fesm5/ngx-bootstrap-tooltip.js.map +1 -0
- package/tooltip/ngx-bootstrap-tooltip.d.ts +4 -0
- package/tooltip/ngx-bootstrap-tooltip.metadata.json +1 -0
- package/tooltip/package.json +19 -0
- package/tooltip/{index.d.ts → public_api.d.ts} +0 -0
- package/tooltip/tooltip-container.component.d.ts +4 -1
- package/tooltip/tooltip.directive.d.ts +10 -8
- package/typeahead/bundles/ngx-bootstrap-typeahead.umd.js +2029 -0
- package/typeahead/bundles/ngx-bootstrap-typeahead.umd.js.map +1 -0
- package/typeahead/bundles/ngx-bootstrap-typeahead.umd.min.js +2 -0
- package/typeahead/bundles/ngx-bootstrap-typeahead.umd.min.js.map +1 -0
- package/typeahead/esm2015/latin-map.js +833 -0
- package/typeahead/esm2015/ngx-bootstrap-typeahead.js +10 -0
- package/typeahead/esm2015/public_api.js +14 -0
- package/typeahead/esm2015/typeahead-container.component.js +336 -0
- package/typeahead/esm2015/typeahead-match.class.js +38 -0
- package/typeahead/esm2015/typeahead-options.class.js +22 -0
- package/typeahead/esm2015/typeahead-utils.js +80 -0
- package/typeahead/esm2015/typeahead.config.js +35 -0
- package/typeahead/esm2015/typeahead.directive.js +652 -0
- package/typeahead/esm2015/typeahead.module.js +41 -0
- package/typeahead/esm5/latin-map.js +833 -0
- package/typeahead/esm5/ngx-bootstrap-typeahead.js +10 -0
- package/typeahead/esm5/public_api.js +14 -0
- package/typeahead/esm5/typeahead-container.component.js +414 -0
- package/typeahead/esm5/typeahead-match.class.js +44 -0
- package/typeahead/esm5/typeahead-options.class.js +21 -0
- package/typeahead/esm5/typeahead-utils.js +94 -0
- package/typeahead/esm5/typeahead.config.js +37 -0
- package/typeahead/esm5/typeahead.directive.js +748 -0
- package/typeahead/esm5/typeahead.module.js +48 -0
- package/typeahead/fesm2015/ngx-bootstrap-typeahead.js +1780 -0
- package/typeahead/fesm2015/ngx-bootstrap-typeahead.js.map +1 -0
- package/typeahead/fesm5/ngx-bootstrap-typeahead.js +1975 -0
- package/typeahead/fesm5/ngx-bootstrap-typeahead.js.map +1 -0
- package/typeahead/ngx-bootstrap-typeahead.d.ts +4 -0
- package/typeahead/ngx-bootstrap-typeahead.metadata.json +1 -0
- package/typeahead/package.json +19 -0
- package/typeahead/public_api.d.ts +8 -0
- package/typeahead/typeahead-container.component.d.ts +2 -2
- package/typeahead/typeahead.config.d.ts +5 -0
- package/typeahead/typeahead.directive.d.ts +13 -10
- package/utils/bundles/ngx-bootstrap-utils.umd.js +792 -0
- package/utils/bundles/ngx-bootstrap-utils.umd.js.map +1 -0
- package/utils/bundles/ngx-bootstrap-utils.umd.min.js +10 -0
- package/utils/bundles/ngx-bootstrap-utils.umd.min.js.map +1 -0
- package/utils/esm2015/decorators.js +37 -0
- package/utils/esm2015/facade/browser.js +29 -0
- package/utils/esm2015/linked-list.class.js +324 -0
- package/utils/esm2015/ngx-bootstrap-utils.js +10 -0
- package/utils/esm2015/public_api.js +16 -0
- package/utils/esm2015/theme-provider.js +49 -0
- package/utils/esm2015/trigger.class.js +32 -0
- package/utils/esm2015/triggers.js +165 -0
- package/utils/esm2015/utils.class.js +31 -0
- package/utils/esm2015/warn-once.js +21 -0
- package/utils/esm5/decorators.js +39 -0
- package/utils/esm5/facade/browser.js +29 -0
- package/utils/esm5/linked-list.class.js +425 -0
- package/utils/esm5/ngx-bootstrap-utils.js +10 -0
- package/utils/esm5/public_api.js +16 -0
- package/utils/esm5/theme-provider.js +49 -0
- package/utils/esm5/trigger.class.js +33 -0
- package/utils/esm5/triggers.js +170 -0
- package/utils/esm5/utils.class.js +46 -0
- package/utils/esm5/warn-once.js +21 -0
- package/utils/facade/browser.d.ts +5 -5
- package/utils/fesm2015/ngx-bootstrap-utils.js +650 -0
- package/utils/fesm2015/ngx-bootstrap-utils.js.map +1 -0
- package/utils/fesm5/ngx-bootstrap-utils.js +768 -0
- package/utils/fesm5/ngx-bootstrap-utils.js.map +1 -0
- package/utils/ngx-bootstrap-utils.d.ts +4 -0
- package/utils/ngx-bootstrap-utils.metadata.json +1 -0
- package/utils/package.json +19 -0
- package/utils/public_api.d.ts +10 -0
- package/utils/triggers.d.ts +12 -1
- package/accordion/accordion-group.component.html +0 -19
- package/accordion/accordion-group.component.js +0 -82
- package/accordion/accordion-group.component.js.map +0 -1
- package/accordion/accordion-group.component.metadata.json +0 -1
- package/accordion/accordion-group.component.ngfactory.js.map +0 -1
- package/accordion/accordion.component.js +0 -50
- package/accordion/accordion.component.js.map +0 -1
- package/accordion/accordion.component.metadata.json +0 -1
- package/accordion/accordion.component.ngfactory.js.map +0 -1
- package/accordion/accordion.config.js +0 -16
- package/accordion/accordion.config.js.map +0 -1
- package/accordion/accordion.config.metadata.json +0 -1
- package/accordion/accordion.config.ngfactory.js.map +0 -1
- package/accordion/accordion.module.js +0 -23
- package/accordion/accordion.module.js.map +0 -1
- package/accordion/accordion.module.metadata.json +0 -1
- package/accordion/accordion.module.ngfactory.js.map +0 -1
- package/accordion/index.js +0 -5
- package/accordion/index.js.map +0 -1
- package/accordion/index.metadata.json +0 -1
- package/alert/alert.component.html +0 -11
- package/alert/alert.component.js +0 -99
- package/alert/alert.component.js.map +0 -1
- package/alert/alert.component.metadata.json +0 -1
- package/alert/alert.component.ngfactory.js.map +0 -1
- package/alert/alert.config.js +0 -17
- package/alert/alert.config.js.map +0 -1
- package/alert/alert.config.metadata.json +0 -1
- package/alert/alert.config.ngfactory.js.map +0 -1
- package/alert/alert.module.js +0 -22
- package/alert/alert.module.js.map +0 -1
- package/alert/alert.module.metadata.json +0 -1
- package/alert/alert.module.ngfactory.js.map +0 -1
- package/alert/index.js +0 -4
- package/alert/index.js.map +0 -1
- package/alert/index.metadata.json +0 -1
- package/buttons/button-checkbox.directive.js +0 -93
- package/buttons/button-checkbox.directive.js.map +0 -1
- package/buttons/button-checkbox.directive.metadata.json +0 -1
- package/buttons/button-checkbox.directive.ngfactory.js.map +0 -1
- package/buttons/button-radio-group.directive.js +0 -53
- package/buttons/button-radio-group.directive.js.map +0 -1
- package/buttons/button-radio-group.directive.metadata.json +0 -1
- package/buttons/button-radio-group.directive.ngfactory.js.map +0 -1
- package/buttons/button-radio.directive.js +0 -126
- package/buttons/button-radio.directive.js.map +0 -1
- package/buttons/button-radio.directive.metadata.json +0 -1
- package/buttons/button-radio.directive.ngfactory.js.map +0 -1
- package/buttons/buttons.module.js +0 -20
- package/buttons/buttons.module.js.map +0 -1
- package/buttons/buttons.module.metadata.json +0 -1
- package/buttons/buttons.module.ngfactory.js.map +0 -1
- package/buttons/index.js +0 -5
- package/buttons/index.js.map +0 -1
- package/buttons/index.metadata.json +0 -1
- package/carousel/carousel.component.html +0 -14
- package/carousel/carousel.component.js +0 -419
- package/carousel/carousel.component.js.map +0 -1
- package/carousel/carousel.component.metadata.json +0 -1
- package/carousel/carousel.component.ngfactory.js.map +0 -1
- package/carousel/carousel.config.js +0 -19
- package/carousel/carousel.config.js.map +0 -1
- package/carousel/carousel.config.metadata.json +0 -1
- package/carousel/carousel.config.ngfactory.js.map +0 -1
- package/carousel/carousel.module.js +0 -23
- package/carousel/carousel.module.js.map +0 -1
- package/carousel/carousel.module.metadata.json +0 -1
- package/carousel/carousel.module.ngfactory.js.map +0 -1
- package/carousel/index.js +0 -5
- package/carousel/index.js.map +0 -1
- package/carousel/index.metadata.json +0 -1
- package/carousel/slide.component.js +0 -41
- package/carousel/slide.component.js.map +0 -1
- package/carousel/slide.component.metadata.json +0 -1
- package/carousel/slide.component.ngfactory.js.map +0 -1
- package/chronos/create/check-overflow.js +0 -30
- package/chronos/create/check-overflow.js.map +0 -1
- package/chronos/create/check-overflow.metadata.json +0 -1
- package/chronos/create/clone.js +0 -6
- package/chronos/create/clone.js.map +0 -1
- package/chronos/create/clone.metadata.json +0 -1
- package/chronos/create/date-from-array.js +0 -23
- package/chronos/create/date-from-array.js.map +0 -1
- package/chronos/create/date-from-array.metadata.json +0 -1
- package/chronos/create/from-anything.js +0 -106
- package/chronos/create/from-anything.js.map +0 -1
- package/chronos/create/from-anything.metadata.json +0 -1
- package/chronos/create/from-array.js +0 -136
- package/chronos/create/from-array.js.map +0 -1
- package/chronos/create/from-array.metadata.json +0 -1
- package/chronos/create/from-object.js +0 -16
- package/chronos/create/from-object.js.map +0 -1
- package/chronos/create/from-object.metadata.json +0 -1
- package/chronos/create/from-string-and-array.js +0 -38
- package/chronos/create/from-string-and-array.js.map +0 -1
- package/chronos/create/from-string-and-array.metadata.json +0 -1
- package/chronos/create/from-string-and-format.js +0 -106
- package/chronos/create/from-string-and-format.js.map +0 -1
- package/chronos/create/from-string-and-format.metadata.json +0 -1
- package/chronos/create/from-string.js +0 -226
- package/chronos/create/from-string.js.map +0 -1
- package/chronos/create/from-string.metadata.json +0 -1
- package/chronos/create/local.js +0 -10
- package/chronos/create/local.js.map +0 -1
- package/chronos/create/local.metadata.json +0 -1
- package/chronos/create/parsing-flags.js +0 -26
- package/chronos/create/parsing-flags.js.map +0 -1
- package/chronos/create/parsing-flags.metadata.json +0 -1
- package/chronos/create/parsing.types.js +0 -1
- package/chronos/create/parsing.types.js.map +0 -1
- package/chronos/create/parsing.types.metadata.json +0 -1
- package/chronos/create/valid.js +0 -42
- package/chronos/create/valid.js.map +0 -1
- package/chronos/create/valid.metadata.json +0 -1
- package/chronos/duration/bubble.js +0 -47
- package/chronos/duration/bubble.js.map +0 -1
- package/chronos/duration/bubble.metadata.json +0 -1
- package/chronos/duration/constructor.js +0 -134
- package/chronos/duration/constructor.js.map +0 -1
- package/chronos/duration/constructor.metadata.json +0 -1
- package/chronos/duration/create.js +0 -114
- package/chronos/duration/create.js.map +0 -1
- package/chronos/duration/create.metadata.json +0 -1
- package/chronos/duration/humanize.js +0 -84
- package/chronos/duration/humanize.js.map +0 -1
- package/chronos/duration/humanize.metadata.json +0 -1
- package/chronos/duration/valid.js +0 -45
- package/chronos/duration/valid.js.map +0 -1
- package/chronos/duration/valid.metadata.json +0 -1
- package/chronos/format/format.js +0 -52
- package/chronos/format/format.js.map +0 -1
- package/chronos/format/format.metadata.json +0 -1
- package/chronos/format.js +0 -48
- package/chronos/format.js.map +0 -1
- package/chronos/format.metadata.json +0 -1
- package/chronos/i18n/ar.js +0 -132
- package/chronos/i18n/ar.js.map +0 -1
- package/chronos/i18n/ar.metadata.json +0 -1
- package/chronos/i18n/cs.js +0 -191
- package/chronos/i18n/cs.js.map +0 -1
- package/chronos/i18n/cs.metadata.json +0 -1
- package/chronos/i18n/da.js +0 -51
- package/chronos/i18n/da.js.map +0 -1
- package/chronos/i18n/da.metadata.json +0 -1
- package/chronos/i18n/de.js +0 -73
- package/chronos/i18n/de.js.map +0 -1
- package/chronos/i18n/de.metadata.json +0 -1
- package/chronos/i18n/en-gb.js +0 -62
- package/chronos/i18n/en-gb.js.map +0 -1
- package/chronos/i18n/en-gb.metadata.json +0 -1
- package/chronos/i18n/es-do.js +0 -86
- package/chronos/i18n/es-do.js.map +0 -1
- package/chronos/i18n/es-do.metadata.json +0 -1
- package/chronos/i18n/es-us.js +0 -80
- package/chronos/i18n/es-us.js.map +0 -1
- package/chronos/i18n/es-us.metadata.json +0 -1
- package/chronos/i18n/es.js +0 -85
- package/chronos/i18n/es.js.map +0 -1
- package/chronos/i18n/es.metadata.json +0 -1
- package/chronos/i18n/fi.js +0 -101
- package/chronos/i18n/fi.js.map +0 -1
- package/chronos/i18n/fi.metadata.json +0 -1
- package/chronos/i18n/fr.js +0 -77
- package/chronos/i18n/fr.js.map +0 -1
- package/chronos/i18n/fr.metadata.json +0 -1
- package/chronos/i18n/gl.js +0 -85
- package/chronos/i18n/gl.js.map +0 -1
- package/chronos/i18n/gl.metadata.json +0 -1
- package/chronos/i18n/he.js +0 -98
- package/chronos/i18n/he.js.map +0 -1
- package/chronos/i18n/he.metadata.json +0 -1
- package/chronos/i18n/hi.js +0 -125
- package/chronos/i18n/hi.js.map +0 -1
- package/chronos/i18n/hi.metadata.json +0 -1
- package/chronos/i18n/hu.js +0 -105
- package/chronos/i18n/hu.js.map +0 -1
- package/chronos/i18n/hu.metadata.json +0 -1
- package/chronos/i18n/id.js +0 -84
- package/chronos/i18n/id.js.map +0 -1
- package/chronos/i18n/id.metadata.json +0 -1
- package/chronos/i18n/it.js +0 -66
- package/chronos/i18n/it.js.map +0 -1
- package/chronos/i18n/it.metadata.json +0 -1
- package/chronos/i18n/ja.js +0 -75
- package/chronos/i18n/ja.js.map +0 -1
- package/chronos/i18n/ja.metadata.json +0 -1
- package/chronos/i18n/ko.js +0 -77
- package/chronos/i18n/ko.js.map +0 -1
- package/chronos/i18n/ko.metadata.json +0 -1
- package/chronos/i18n/mn.js +0 -99
- package/chronos/i18n/mn.js.map +0 -1
- package/chronos/i18n/mn.metadata.json +0 -1
- package/chronos/i18n/nl-be.js +0 -82
- package/chronos/i18n/nl-be.js.map +0 -1
- package/chronos/i18n/nl-be.metadata.json +0 -1
- package/chronos/i18n/nl.js +0 -81
- package/chronos/i18n/nl.js.map +0 -1
- package/chronos/i18n/nl.metadata.json +0 -1
- package/chronos/i18n/pl.js +0 -121
- package/chronos/i18n/pl.js.map +0 -1
- package/chronos/i18n/pl.metadata.json +0 -1
- package/chronos/i18n/pt-br.js +0 -56
- package/chronos/i18n/pt-br.js.map +0 -1
- package/chronos/i18n/pt-br.metadata.json +0 -1
- package/chronos/i18n/ro.js +0 -67
- package/chronos/i18n/ro.js.map +0 -1
- package/chronos/i18n/ro.metadata.json +0 -1
- package/chronos/i18n/ru.js +0 -182
- package/chronos/i18n/ru.js.map +0 -1
- package/chronos/i18n/ru.metadata.json +0 -1
- package/chronos/i18n/sl.js +0 -185
- package/chronos/i18n/sl.js.map +0 -1
- package/chronos/i18n/sl.metadata.json +0 -1
- package/chronos/i18n/sv.js +0 -64
- package/chronos/i18n/sv.js.map +0 -1
- package/chronos/i18n/sv.metadata.json +0 -1
- package/chronos/i18n/th.js +0 -60
- package/chronos/i18n/th.js.map +0 -1
- package/chronos/i18n/th.metadata.json +0 -1
- package/chronos/i18n/tr.js +0 -84
- package/chronos/i18n/tr.js.map +0 -1
- package/chronos/i18n/tr.metadata.json +0 -1
- package/chronos/i18n/zh-cn.js +0 -115
- package/chronos/i18n/zh-cn.js.map +0 -1
- package/chronos/i18n/zh-cn.metadata.json +0 -1
- package/chronos/index.js +0 -7
- package/chronos/index.js.map +0 -1
- package/chronos/index.metadata.json +0 -1
- package/chronos/locale/calendar.js +0 -9
- package/chronos/locale/calendar.js.map +0 -1
- package/chronos/locale/calendar.metadata.json +0 -1
- package/chronos/locale/locale.class.js +0 -550
- package/chronos/locale/locale.class.js.map +0 -1
- package/chronos/locale/locale.class.metadata.json +0 -1
- package/chronos/locale/locale.defaults.js +0 -41
- package/chronos/locale/locale.defaults.js.map +0 -1
- package/chronos/locale/locale.defaults.metadata.json +0 -1
- package/chronos/locale/locales.js +0 -194
- package/chronos/locale/locales.js.map +0 -1
- package/chronos/locale/locales.metadata.json +0 -1
- package/chronos/moment/add-subtract.js +0 -35
- package/chronos/moment/add-subtract.js.map +0 -1
- package/chronos/moment/add-subtract.metadata.json +0 -1
- package/chronos/moment/calendar.js +0 -43
- package/chronos/moment/calendar.js.map +0 -1
- package/chronos/moment/calendar.metadata.json +0 -1
- package/chronos/moment/diff.js +0 -71
- package/chronos/moment/diff.js.map +0 -1
- package/chronos/moment/diff.metadata.json +0 -1
- package/chronos/moment/min-max.js +0 -41
- package/chronos/moment/min-max.js.map +0 -1
- package/chronos/moment/min-max.metadata.json +0 -1
- package/chronos/parse/regex.js +0 -49
- package/chronos/parse/regex.js.map +0 -1
- package/chronos/parse/regex.metadata.json +0 -1
- package/chronos/parse/token.js +0 -31
- package/chronos/parse/token.js.map +0 -1
- package/chronos/parse/token.metadata.json +0 -1
- package/chronos/test/chain.js +0 -738
- package/chronos/test/chain.js.map +0 -1
- package/chronos/test/chain.metadata.json +0 -1
- package/chronos/types.js +0 -1
- package/chronos/types.js.map +0 -1
- package/chronos/types.metadata.json +0 -1
- package/chronos/units/aliases.js +0 -35
- package/chronos/units/aliases.js.map +0 -1
- package/chronos/units/aliases.metadata.json +0 -1
- package/chronos/units/constants.js +0 -11
- package/chronos/units/constants.js.map +0 -1
- package/chronos/units/constants.metadata.json +0 -1
- package/chronos/units/day-of-month.js +0 -28
- package/chronos/units/day-of-month.js.map +0 -1
- package/chronos/units/day-of-week.js +0 -129
- package/chronos/units/day-of-week.js.map +0 -1
- package/chronos/units/day-of-week.metadata.json +0 -1
- package/chronos/units/day-of-year.js +0 -34
- package/chronos/units/day-of-year.js.map +0 -1
- package/chronos/units/day-of-year.metadata.json +0 -1
- package/chronos/units/hour.js +0 -122
- package/chronos/units/hour.js.map +0 -1
- package/chronos/units/index.js +0 -19
- package/chronos/units/index.js.map +0 -1
- package/chronos/units/millisecond.js +0 -58
- package/chronos/units/millisecond.js.map +0 -1
- package/chronos/units/minute.js +0 -20
- package/chronos/units/minute.js.map +0 -1
- package/chronos/units/month.js +0 -61
- package/chronos/units/month.js.map +0 -1
- package/chronos/units/month.metadata.json +0 -1
- package/chronos/units/offset.js +0 -212
- package/chronos/units/offset.js.map +0 -1
- package/chronos/units/offset.metadata.json +0 -1
- package/chronos/units/priorities.js +0 -21
- package/chronos/units/priorities.js.map +0 -1
- package/chronos/units/priorities.metadata.json +0 -1
- package/chronos/units/quarter.js +0 -37
- package/chronos/units/quarter.js.map +0 -1
- package/chronos/units/quarter.metadata.json +0 -1
- package/chronos/units/second.js +0 -20
- package/chronos/units/second.js.map +0 -1
- package/chronos/units/timestamp.js +0 -24
- package/chronos/units/timestamp.js.map +0 -1
- package/chronos/units/timezone.js +0 -17
- package/chronos/units/timezone.js.map +0 -1
- package/chronos/units/timezone.metadata.json +0 -1
- package/chronos/units/week-calendar-utils.js +0 -63
- package/chronos/units/week-calendar-utils.js.map +0 -1
- package/chronos/units/week-calendar-utils.metadata.json +0 -1
- package/chronos/units/week-year.js +0 -102
- package/chronos/units/week-year.js.map +0 -1
- package/chronos/units/week-year.metadata.json +0 -1
- package/chronos/units/week.js +0 -56
- package/chronos/units/week.js.map +0 -1
- package/chronos/units/week.metadata.json +0 -1
- package/chronos/units/year.js +0 -55
- package/chronos/units/year.js.map +0 -1
- package/chronos/units/year.metadata.json +0 -1
- package/chronos/utils/abs-ceil.js +0 -4
- package/chronos/utils/abs-ceil.js.map +0 -1
- package/chronos/utils/abs-ceil.metadata.json +0 -1
- package/chronos/utils/abs-round.js +0 -4
- package/chronos/utils/abs-round.js.map +0 -1
- package/chronos/utils/abs-round.metadata.json +0 -1
- package/chronos/utils/compare-arrays.js +0 -15
- package/chronos/utils/compare-arrays.js.map +0 -1
- package/chronos/utils/compare-arrays.metadata.json +0 -1
- package/chronos/utils/date-compare.js +0 -50
- package/chronos/utils/date-compare.js.map +0 -1
- package/chronos/utils/date-compare.metadata.json +0 -1
- package/chronos/utils/date-getters.js +0 -75
- package/chronos/utils/date-getters.js.map +0 -1
- package/chronos/utils/date-getters.metadata.json +0 -1
- package/chronos/utils/date-setters.js +0 -74
- package/chronos/utils/date-setters.js.map +0 -1
- package/chronos/utils/date-setters.metadata.json +0 -1
- package/chronos/utils/defaults.js +0 -11
- package/chronos/utils/defaults.js.map +0 -1
- package/chronos/utils/defaults.metadata.json +0 -1
- package/chronos/utils/start-end-of.js +0 -57
- package/chronos/utils/start-end-of.js.map +0 -1
- package/chronos/utils/start-end-of.metadata.json +0 -1
- package/chronos/utils/type-checks.js +0 -56
- package/chronos/utils/type-checks.js.map +0 -1
- package/chronos/utils/type-checks.metadata.json +0 -1
- package/chronos/utils/zero-fill.js +0 -10
- package/chronos/utils/zero-fill.js.map +0 -1
- package/chronos/utils/zero-fill.metadata.json +0 -1
- package/chronos/utils.js +0 -7
- package/chronos/utils.js.map +0 -1
- package/chronos/utils.metadata.json +0 -1
- package/collapse/collapse.directive.js +0 -98
- package/collapse/collapse.directive.js.map +0 -1
- package/collapse/collapse.directive.metadata.json +0 -1
- package/collapse/collapse.directive.ngfactory.js.map +0 -1
- package/collapse/collapse.module.js +0 -18
- package/collapse/collapse.module.js.map +0 -1
- package/collapse/collapse.module.metadata.json +0 -1
- package/collapse/collapse.module.ngfactory.js.map +0 -1
- package/collapse/index.js +0 -3
- package/collapse/index.js.map +0 -1
- package/collapse/index.metadata.json +0 -1
- package/component-loader/bs-component-ref.class.js +0 -7
- package/component-loader/bs-component-ref.class.js.map +0 -1
- package/component-loader/bs-component-ref.class.metadata.json +0 -1
- package/component-loader/component-loader.class.js +0 -258
- package/component-loader/component-loader.class.js.map +0 -1
- package/component-loader/component-loader.class.metadata.json +0 -1
- package/component-loader/component-loader.factory.js +0 -50
- package/component-loader/component-loader.factory.js.map +0 -1
- package/component-loader/component-loader.factory.metadata.json +0 -1
- package/component-loader/component-loader.factory.ngfactory.js.map +0 -1
- package/component-loader/content-ref.class.js +0 -14
- package/component-loader/content-ref.class.js.map +0 -1
- package/component-loader/content-ref.class.metadata.json +0 -1
- package/component-loader/index.d.ts +0 -3
- package/component-loader/index.js +0 -4
- package/component-loader/index.js.map +0 -1
- package/component-loader/index.metadata.json +0 -1
- package/component-loader/listen-options.model.js +0 -1
- package/component-loader/listen-options.model.js.map +0 -1
- package/component-loader/listen-options.model.metadata.json +0 -1
- package/datepicker/base/bs-datepicker-container.js +0 -40
- package/datepicker/base/bs-datepicker-container.js.map +0 -1
- package/datepicker/base/bs-datepicker-container.metadata.json +0 -1
- package/datepicker/bs-datepicker-input.directive.js +0 -134
- package/datepicker/bs-datepicker-input.directive.js.map +0 -1
- package/datepicker/bs-datepicker-input.directive.metadata.json +0 -1
- package/datepicker/bs-datepicker-input.directive.ngfactory.js.map +0 -1
- package/datepicker/bs-datepicker.component.js +0 -217
- package/datepicker/bs-datepicker.component.js.map +0 -1
- package/datepicker/bs-datepicker.component.metadata.json +0 -1
- package/datepicker/bs-datepicker.component.ngfactory.js.map +0 -1
- package/datepicker/bs-datepicker.config.js +0 -39
- package/datepicker/bs-datepicker.config.js.map +0 -1
- package/datepicker/bs-datepicker.config.metadata.json +0 -1
- package/datepicker/bs-datepicker.config.ngfactory.js.map +0 -1
- package/datepicker/bs-datepicker.module.js +0 -80
- package/datepicker/bs-datepicker.module.js.map +0 -1
- package/datepicker/bs-datepicker.module.metadata.json +0 -1
- package/datepicker/bs-datepicker.module.ngfactory.js.map +0 -1
- package/datepicker/bs-daterangepicker-input.directive.js +0 -150
- package/datepicker/bs-daterangepicker-input.directive.js.map +0 -1
- package/datepicker/bs-daterangepicker-input.directive.metadata.json +0 -1
- package/datepicker/bs-daterangepicker-input.directive.ngfactory.js.map +0 -1
- package/datepicker/bs-daterangepicker.component.js +0 -220
- package/datepicker/bs-daterangepicker.component.js.map +0 -1
- package/datepicker/bs-daterangepicker.component.metadata.json +0 -1
- package/datepicker/bs-daterangepicker.component.ngfactory.js.map +0 -1
- package/datepicker/bs-daterangepicker.config.js +0 -27
- package/datepicker/bs-daterangepicker.config.js.map +0 -1
- package/datepicker/bs-daterangepicker.config.metadata.json +0 -1
- package/datepicker/bs-daterangepicker.config.ngfactory.js.map +0 -1
- package/datepicker/bs-locale.service.js +0 -42
- package/datepicker/bs-locale.service.js.map +0 -1
- package/datepicker/bs-locale.service.metadata.json +0 -1
- package/datepicker/bs-locale.service.ngfactory.js.map +0 -1
- package/datepicker/date-formatter.js +0 -11
- package/datepicker/date-formatter.js.map +0 -1
- package/datepicker/date-formatter.metadata.json +0 -1
- package/datepicker/datepicker-inner.component.js +0 -317
- package/datepicker/datepicker-inner.component.js.map +0 -1
- package/datepicker/datepicker-inner.component.metadata.json +0 -1
- package/datepicker/datepicker-inner.component.ngfactory.js.map +0 -1
- package/datepicker/datepicker.component.js +0 -114
- package/datepicker/datepicker.component.js.map +0 -1
- package/datepicker/datepicker.component.metadata.json +0 -1
- package/datepicker/datepicker.component.ngfactory.js.map +0 -1
- package/datepicker/datepicker.config.js +0 -28
- package/datepicker/datepicker.config.js.map +0 -1
- package/datepicker/datepicker.config.metadata.json +0 -1
- package/datepicker/datepicker.config.ngfactory.js.map +0 -1
- package/datepicker/datepicker.module.js +0 -39
- package/datepicker/datepicker.module.js.map +0 -1
- package/datepicker/datepicker.module.metadata.json +0 -1
- package/datepicker/datepicker.module.ngfactory.js.map +0 -1
- package/datepicker/daypicker.component.js +0 -116
- package/datepicker/daypicker.component.js.map +0 -1
- package/datepicker/daypicker.component.metadata.json +0 -1
- package/datepicker/daypicker.component.ngfactory.js.map +0 -1
- package/datepicker/engine/calc-days-calendar.js +0 -19
- package/datepicker/engine/calc-days-calendar.js.map +0 -1
- package/datepicker/engine/calc-days-calendar.metadata.json +0 -1
- package/datepicker/engine/flag-days-calendar.js +0 -72
- package/datepicker/engine/flag-days-calendar.js.map +0 -1
- package/datepicker/engine/flag-days-calendar.metadata.json +0 -1
- package/datepicker/engine/flag-months-calendar.js +0 -30
- package/datepicker/engine/flag-months-calendar.js.map +0 -1
- package/datepicker/engine/flag-months-calendar.metadata.json +0 -1
- package/datepicker/engine/flag-years-calendar.js +0 -29
- package/datepicker/engine/flag-years-calendar.js.map +0 -1
- package/datepicker/engine/flag-years-calendar.metadata.json +0 -1
- package/datepicker/engine/format-days-calendar.js +0 -34
- package/datepicker/engine/format-days-calendar.js.map +0 -1
- package/datepicker/engine/format-days-calendar.metadata.json +0 -1
- package/datepicker/engine/format-months-calendar.js +0 -22
- package/datepicker/engine/format-months-calendar.js.map +0 -1
- package/datepicker/engine/format-months-calendar.metadata.json +0 -1
- package/datepicker/engine/format-years-calendar.js +0 -30
- package/datepicker/engine/format-years-calendar.js.map +0 -1
- package/datepicker/engine/format-years-calendar.metadata.json +0 -1
- package/datepicker/engine/view-mode.js +0 -4
- package/datepicker/engine/view-mode.js.map +0 -1
- package/datepicker/engine/view-mode.metadata.json +0 -1
- package/datepicker/index.d.ts +0 -13
- package/datepicker/index.js +0 -14
- package/datepicker/index.js.map +0 -1
- package/datepicker/index.metadata.json +0 -1
- package/datepicker/models/index.js +0 -15
- package/datepicker/models/index.js.map +0 -1
- package/datepicker/models/index.metadata.json +0 -1
- package/datepicker/monthpicker.component.js +0 -56
- package/datepicker/monthpicker.component.js.map +0 -1
- package/datepicker/monthpicker.component.metadata.json +0 -1
- package/datepicker/monthpicker.component.ngfactory.js.map +0 -1
- package/datepicker/reducer/_defaults.js +0 -5
- package/datepicker/reducer/_defaults.js.map +0 -1
- package/datepicker/reducer/_defaults.metadata.json +0 -1
- package/datepicker/reducer/bs-datepicker.actions.js +0 -104
- package/datepicker/reducer/bs-datepicker.actions.js.map +0 -1
- package/datepicker/reducer/bs-datepicker.actions.metadata.json +0 -1
- package/datepicker/reducer/bs-datepicker.actions.ngfactory.js.map +0 -1
- package/datepicker/reducer/bs-datepicker.effects.js +0 -179
- package/datepicker/reducer/bs-datepicker.effects.js.map +0 -1
- package/datepicker/reducer/bs-datepicker.effects.metadata.json +0 -1
- package/datepicker/reducer/bs-datepicker.effects.ngfactory.js.map +0 -1
- package/datepicker/reducer/bs-datepicker.reducer.js +0 -261
- package/datepicker/reducer/bs-datepicker.reducer.js.map +0 -1
- package/datepicker/reducer/bs-datepicker.reducer.metadata.json +0 -1
- package/datepicker/reducer/bs-datepicker.state.js +0 -16
- package/datepicker/reducer/bs-datepicker.state.js.map +0 -1
- package/datepicker/reducer/bs-datepicker.state.metadata.json +0 -1
- package/datepicker/reducer/bs-datepicker.store.js +0 -36
- package/datepicker/reducer/bs-datepicker.store.js.map +0 -1
- package/datepicker/reducer/bs-datepicker.store.metadata.json +0 -1
- package/datepicker/reducer/bs-datepicker.store.ngfactory.js.map +0 -1
- package/datepicker/themes/bs/bs-calendar-layout.component.js +0 -14
- package/datepicker/themes/bs/bs-calendar-layout.component.js.map +0 -1
- package/datepicker/themes/bs/bs-calendar-layout.component.metadata.json +0 -1
- package/datepicker/themes/bs/bs-calendar-layout.component.ngfactory.js.map +0 -1
- package/datepicker/themes/bs/bs-current-date-view.component.js +0 -18
- package/datepicker/themes/bs/bs-current-date-view.component.js.map +0 -1
- package/datepicker/themes/bs/bs-current-date-view.component.metadata.json +0 -1
- package/datepicker/themes/bs/bs-current-date-view.component.ngfactory.js.map +0 -1
- package/datepicker/themes/bs/bs-custom-dates-view.component.js +0 -20
- package/datepicker/themes/bs/bs-custom-dates-view.component.js.map +0 -1
- package/datepicker/themes/bs/bs-custom-dates-view.component.metadata.json +0 -1
- package/datepicker/themes/bs/bs-custom-dates-view.component.ngfactory.js.map +0 -1
- package/datepicker/themes/bs/bs-datepicker-container.component.js +0 -87
- package/datepicker/themes/bs/bs-datepicker-container.component.js.map +0 -1
- package/datepicker/themes/bs/bs-datepicker-container.component.metadata.json +0 -1
- package/datepicker/themes/bs/bs-datepicker-container.component.ngfactory.js.map +0 -1
- package/datepicker/themes/bs/bs-datepicker-day-decorator.directive.js +0 -28
- package/datepicker/themes/bs/bs-datepicker-day-decorator.directive.js.map +0 -1
- package/datepicker/themes/bs/bs-datepicker-day-decorator.directive.metadata.json +0 -1
- package/datepicker/themes/bs/bs-datepicker-day-decorator.directive.ngfactory.js.map +0 -1
- package/datepicker/themes/bs/bs-datepicker-navigation-view.component.js +0 -30
- package/datepicker/themes/bs/bs-datepicker-navigation-view.component.js.map +0 -1
- package/datepicker/themes/bs/bs-datepicker-navigation-view.component.metadata.json +0 -1
- package/datepicker/themes/bs/bs-datepicker-navigation-view.component.ngfactory.js.map +0 -1
- package/datepicker/themes/bs/bs-datepicker-view.html +0 -61
- package/datepicker/themes/bs/bs-daterangepicker-container.component.js +0 -105
- package/datepicker/themes/bs/bs-daterangepicker-container.component.js.map +0 -1
- package/datepicker/themes/bs/bs-daterangepicker-container.component.metadata.json +0 -1
- package/datepicker/themes/bs/bs-daterangepicker-container.component.ngfactory.js.map +0 -1
- package/datepicker/themes/bs/bs-days-calendar-view.component.js +0 -42
- package/datepicker/themes/bs/bs-days-calendar-view.component.js.map +0 -1
- package/datepicker/themes/bs/bs-days-calendar-view.component.metadata.json +0 -1
- package/datepicker/themes/bs/bs-days-calendar-view.component.ngfactory.js.map +0 -1
- package/datepicker/themes/bs/bs-months-calendar-view.component.js +0 -40
- package/datepicker/themes/bs/bs-months-calendar-view.component.js.map +0 -1
- package/datepicker/themes/bs/bs-months-calendar-view.component.metadata.json +0 -1
- package/datepicker/themes/bs/bs-months-calendar-view.component.ngfactory.js.map +0 -1
- package/datepicker/themes/bs/bs-timepicker-view.component.js +0 -17
- package/datepicker/themes/bs/bs-timepicker-view.component.js.map +0 -1
- package/datepicker/themes/bs/bs-timepicker-view.component.metadata.json +0 -1
- package/datepicker/themes/bs/bs-timepicker-view.component.ngfactory.js.map +0 -1
- package/datepicker/themes/bs/bs-years-calendar-view.component.js +0 -41
- package/datepicker/themes/bs/bs-years-calendar-view.component.js.map +0 -1
- package/datepicker/themes/bs/bs-years-calendar-view.component.metadata.json +0 -1
- package/datepicker/themes/bs/bs-years-calendar-view.component.ngfactory.js.map +0 -1
- package/datepicker/utils/bs-calendar-utils.js +0 -30
- package/datepicker/utils/bs-calendar-utils.js.map +0 -1
- package/datepicker/utils/bs-calendar-utils.metadata.json +0 -1
- package/datepicker/utils/matrix-utils.js +0 -14
- package/datepicker/utils/matrix-utils.js.map +0 -1
- package/datepicker/utils/matrix-utils.metadata.json +0 -1
- package/datepicker/yearpicker.component.js +0 -57
- package/datepicker/yearpicker.component.js.map +0 -1
- package/datepicker/yearpicker.component.metadata.json +0 -1
- package/datepicker/yearpicker.component.ngfactory.js.map +0 -1
- package/dropdown/bs-dropdown-container.component.js +0 -59
- package/dropdown/bs-dropdown-container.component.js.map +0 -1
- package/dropdown/bs-dropdown-container.component.metadata.json +0 -1
- package/dropdown/bs-dropdown-container.component.ngfactory.js.map +0 -1
- package/dropdown/bs-dropdown-menu.directive.js +0 -25
- package/dropdown/bs-dropdown-menu.directive.js.map +0 -1
- package/dropdown/bs-dropdown-menu.directive.metadata.json +0 -1
- package/dropdown/bs-dropdown-menu.directive.ngfactory.js.map +0 -1
- package/dropdown/bs-dropdown-toggle.directive.js +0 -63
- package/dropdown/bs-dropdown-toggle.directive.js.map +0 -1
- package/dropdown/bs-dropdown-toggle.directive.metadata.json +0 -1
- package/dropdown/bs-dropdown-toggle.directive.ngfactory.js.map +0 -1
- package/dropdown/bs-dropdown.config.js +0 -14
- package/dropdown/bs-dropdown.config.js.map +0 -1
- package/dropdown/bs-dropdown.config.metadata.json +0 -1
- package/dropdown/bs-dropdown.config.ngfactory.js.map +0 -1
- package/dropdown/bs-dropdown.directive.js +0 -300
- package/dropdown/bs-dropdown.directive.js.map +0 -1
- package/dropdown/bs-dropdown.directive.metadata.json +0 -1
- package/dropdown/bs-dropdown.directive.ngfactory.js.map +0 -1
- package/dropdown/bs-dropdown.module.js +0 -46
- package/dropdown/bs-dropdown.module.js.map +0 -1
- package/dropdown/bs-dropdown.module.metadata.json +0 -1
- package/dropdown/bs-dropdown.module.ngfactory.js.map +0 -1
- package/dropdown/bs-dropdown.state.js +0 -21
- package/dropdown/bs-dropdown.state.js.map +0 -1
- package/dropdown/bs-dropdown.state.metadata.json +0 -1
- package/dropdown/bs-dropdown.state.ngfactory.js.map +0 -1
- package/dropdown/index.js +0 -8
- package/dropdown/index.js.map +0 -1
- package/dropdown/index.metadata.json +0 -1
- package/index.d.ts +0 -24
- package/index.js +0 -25
- package/index.js.map +0 -1
- package/index.metadata.json +0 -1
- package/locale.d.ts +0 -30
- package/locale.js +0 -31
- package/locale.js.map +0 -1
- package/locale.metadata.json +0 -1
- package/mini-ngrx/LICENCE +0 -21
- package/mini-ngrx/index.js +0 -3
- package/mini-ngrx/index.js.map +0 -1
- package/mini-ngrx/index.metadata.json +0 -1
- package/mini-ngrx/state.class.js +0 -30
- package/mini-ngrx/state.class.js.map +0 -1
- package/mini-ngrx/state.class.metadata.json +0 -1
- package/mini-ngrx/store.class.js +0 -46
- package/mini-ngrx/store.class.js.map +0 -1
- package/mini-ngrx/store.class.metadata.json +0 -1
- package/modal/bs-modal-ref.service.js +0 -15
- package/modal/bs-modal-ref.service.js.map +0 -1
- package/modal/bs-modal-ref.service.metadata.json +0 -1
- package/modal/bs-modal-ref.service.ngfactory.js.map +0 -1
- package/modal/bs-modal.service.js +0 -174
- package/modal/bs-modal.service.js.map +0 -1
- package/modal/bs-modal.service.metadata.json +0 -1
- package/modal/bs-modal.service.ngfactory.js.map +0 -1
- package/modal/index.js +0 -9
- package/modal/index.js.map +0 -1
- package/modal/index.metadata.json +0 -1
- package/modal/modal-backdrop.component.js +0 -69
- package/modal/modal-backdrop.component.js.map +0 -1
- package/modal/modal-backdrop.component.metadata.json +0 -1
- package/modal/modal-backdrop.component.ngfactory.js.map +0 -1
- package/modal/modal-backdrop.options.js +0 -9
- package/modal/modal-backdrop.options.js.map +0 -1
- package/modal/modal-backdrop.options.metadata.json +0 -1
- package/modal/modal-container.component.js +0 -103
- package/modal/modal-container.component.js.map +0 -1
- package/modal/modal-container.component.metadata.json +0 -1
- package/modal/modal-container.component.ngfactory.js.map +0 -1
- package/modal/modal-options.class.js +0 -44
- package/modal/modal-options.class.js.map +0 -1
- package/modal/modal-options.class.metadata.json +0 -1
- package/modal/modal-options.class.ngfactory.js.map +0 -1
- package/modal/modal.directive.js +0 -436
- package/modal/modal.directive.js.map +0 -1
- package/modal/modal.directive.metadata.json +0 -1
- package/modal/modal.directive.ngfactory.js.map +0 -1
- package/modal/modal.module.js +0 -31
- package/modal/modal.module.js.map +0 -1
- package/modal/modal.module.metadata.json +0 -1
- package/modal/modal.module.ngfactory.js.map +0 -1
- package/pagination/index.js +0 -5
- package/pagination/index.js.map +0 -1
- package/pagination/index.metadata.json +0 -1
- package/pagination/pager.component.html +0 -12
- package/pagination/pager.component.js +0 -249
- package/pagination/pager.component.js.map +0 -1
- package/pagination/pager.component.metadata.json +0 -1
- package/pagination/pager.component.ngfactory.js.map +0 -1
- package/pagination/pagination.component.html +0 -35
- package/pagination/pagination.component.js +0 -249
- package/pagination/pagination.component.js.map +0 -1
- package/pagination/pagination.component.metadata.json +0 -1
- package/pagination/pagination.component.ngfactory.js.map +0 -1
- package/pagination/pagination.config.js +0 -31
- package/pagination/pagination.config.js.map +0 -1
- package/pagination/pagination.config.metadata.json +0 -1
- package/pagination/pagination.config.ngfactory.js.map +0 -1
- package/pagination/pagination.module.js +0 -22
- package/pagination/pagination.module.js.map +0 -1
- package/pagination/pagination.module.metadata.json +0 -1
- package/pagination/pagination.module.ngfactory.js.map +0 -1
- package/popover/index.js +0 -5
- package/popover/index.js.map +0 -1
- package/popover/index.metadata.json +0 -1
- package/popover/popover-container.component.html +0 -5
- package/popover/popover-container.component.js +0 -43
- package/popover/popover-container.component.js.map +0 -1
- package/popover/popover-container.component.metadata.json +0 -1
- package/popover/popover-container.component.ngfactory.js.map +0 -1
- package/popover/popover.config.js +0 -27
- package/popover/popover.config.js.map +0 -1
- package/popover/popover.config.metadata.json +0 -1
- package/popover/popover.config.ngfactory.js.map +0 -1
- package/popover/popover.directive.js +0 -165
- package/popover/popover.directive.js.map +0 -1
- package/popover/popover.directive.metadata.json +0 -1
- package/popover/popover.directive.ngfactory.js.map +0 -1
- package/popover/popover.module.js +0 -28
- package/popover/popover.module.js.map +0 -1
- package/popover/popover.module.metadata.json +0 -1
- package/popover/popover.module.ngfactory.js.map +0 -1
- package/positioning/index.js +0 -3
- package/positioning/index.js.map +0 -1
- package/positioning/index.metadata.json +0 -1
- package/positioning/ng-positioning.js +0 -216
- package/positioning/ng-positioning.js.map +0 -1
- package/positioning/ng-positioning.metadata.json +0 -1
- package/positioning/positioning.service.js +0 -26
- package/positioning/positioning.service.js.map +0 -1
- package/positioning/positioning.service.metadata.json +0 -1
- package/positioning/positioning.service.ngfactory.js.map +0 -1
- package/progressbar/bar.component.html +0 -1
- package/progressbar/bar.component.js +0 -87
- package/progressbar/bar.component.js.map +0 -1
- package/progressbar/bar.component.metadata.json +0 -1
- package/progressbar/bar.component.ngfactory.js.map +0 -1
- package/progressbar/index.js +0 -5
- package/progressbar/index.js.map +0 -1
- package/progressbar/index.metadata.json +0 -1
- package/progressbar/progressbar.component.html +0 -6
- package/progressbar/progressbar.component.js +0 -76
- package/progressbar/progressbar.component.js.map +0 -1
- package/progressbar/progressbar.component.metadata.json +0 -1
- package/progressbar/progressbar.component.ngfactory.js.map +0 -1
- package/progressbar/progressbar.config.js +0 -15
- package/progressbar/progressbar.config.js.map +0 -1
- package/progressbar/progressbar.config.metadata.json +0 -1
- package/progressbar/progressbar.config.ngfactory.js.map +0 -1
- package/progressbar/progressbar.module.js +0 -22
- package/progressbar/progressbar.module.js.map +0 -1
- package/progressbar/progressbar.module.metadata.json +0 -1
- package/progressbar/progressbar.module.ngfactory.js.map +0 -1
- package/rating/index.js +0 -3
- package/rating/index.js.map +0 -1
- package/rating/index.metadata.json +0 -1
- package/rating/rating.component.html +0 -18
- package/rating/rating.component.js +0 -111
- package/rating/rating.component.js.map +0 -1
- package/rating/rating.component.metadata.json +0 -1
- package/rating/rating.component.ngfactory.js.map +0 -1
- package/rating/rating.module.js +0 -23
- package/rating/rating.module.js.map +0 -1
- package/rating/rating.module.metadata.json +0 -1
- package/rating/rating.module.ngfactory.js.map +0 -1
- package/sortable/draggable-item.js +0 -1
- package/sortable/draggable-item.js.map +0 -1
- package/sortable/draggable-item.metadata.json +0 -1
- package/sortable/draggable-item.service.js +0 -34
- package/sortable/draggable-item.service.js.map +0 -1
- package/sortable/draggable-item.service.metadata.json +0 -1
- package/sortable/draggable-item.service.ngfactory.js.map +0 -1
- package/sortable/index.js +0 -4
- package/sortable/index.js.map +0 -1
- package/sortable/index.metadata.json +0 -1
- package/sortable/sortable.component.js +0 -186
- package/sortable/sortable.component.js.map +0 -1
- package/sortable/sortable.component.metadata.json +0 -1
- package/sortable/sortable.component.ngfactory.js.map +0 -1
- package/sortable/sortable.module.js +0 -21
- package/sortable/sortable.module.js.map +0 -1
- package/sortable/sortable.module.metadata.json +0 -1
- package/sortable/sortable.module.ngfactory.js.map +0 -1
- package/spec/ng-bootstrap/license +0 -23
- package/tabs/index.js +0 -7
- package/tabs/index.js.map +0 -1
- package/tabs/index.metadata.json +0 -1
- package/tabs/ng-transclude.directive.js +0 -34
- package/tabs/ng-transclude.directive.js.map +0 -1
- package/tabs/ng-transclude.directive.metadata.json +0 -1
- package/tabs/ng-transclude.directive.ngfactory.js.map +0 -1
- package/tabs/tab-heading.directive.js +0 -19
- package/tabs/tab-heading.directive.js.map +0 -1
- package/tabs/tab-heading.directive.metadata.json +0 -1
- package/tabs/tab-heading.directive.ngfactory.js.map +0 -1
- package/tabs/tab.directive.js +0 -97
- package/tabs/tab.directive.js.map +0 -1
- package/tabs/tab.directive.metadata.json +0 -1
- package/tabs/tab.directive.ngfactory.js.map +0 -1
- package/tabs/tabs.module.js +0 -37
- package/tabs/tabs.module.js.map +0 -1
- package/tabs/tabs.module.metadata.json +0 -1
- package/tabs/tabs.module.ngfactory.js.map +0 -1
- package/tabs/tabset.component.html +0 -15
- package/tabs/tabset.component.js +0 -134
- package/tabs/tabset.component.js.map +0 -1
- package/tabs/tabset.component.metadata.json +0 -1
- package/tabs/tabset.component.ngfactory.js.map +0 -1
- package/tabs/tabset.config.js +0 -13
- package/tabs/tabset.config.js.map +0 -1
- package/tabs/tabset.config.metadata.json +0 -1
- package/tabs/tabset.config.ngfactory.js.map +0 -1
- package/timepicker/index.js +0 -6
- package/timepicker/index.js.map +0 -1
- package/timepicker/index.metadata.json +0 -1
- package/timepicker/reducer/timepicker.actions.js +0 -53
- package/timepicker/reducer/timepicker.actions.js.map +0 -1
- package/timepicker/reducer/timepicker.actions.metadata.json +0 -1
- package/timepicker/reducer/timepicker.actions.ngfactory.js.map +0 -1
- package/timepicker/reducer/timepicker.reducer.js +0 -90
- package/timepicker/reducer/timepicker.reducer.js.map +0 -1
- package/timepicker/reducer/timepicker.reducer.metadata.json +0 -1
- package/timepicker/reducer/timepicker.store.js +0 -34
- package/timepicker/reducer/timepicker.store.js.map +0 -1
- package/timepicker/reducer/timepicker.store.metadata.json +0 -1
- package/timepicker/reducer/timepicker.store.ngfactory.js.map +0 -1
- package/timepicker/timepicker-controls.util.js +0 -122
- package/timepicker/timepicker-controls.util.js.map +0 -1
- package/timepicker/timepicker-controls.util.metadata.json +0 -1
- package/timepicker/timepicker.component.html +0 -122
- package/timepicker/timepicker.component.js +0 -288
- package/timepicker/timepicker.component.js.map +0 -1
- package/timepicker/timepicker.component.metadata.json +0 -1
- package/timepicker/timepicker.component.ngfactory.js.map +0 -1
- package/timepicker/timepicker.config.js +0 -36
- package/timepicker/timepicker.config.js.map +0 -1
- package/timepicker/timepicker.config.metadata.json +0 -1
- package/timepicker/timepicker.config.ngfactory.js.map +0 -1
- package/timepicker/timepicker.models.js +0 -1
- package/timepicker/timepicker.models.js.map +0 -1
- package/timepicker/timepicker.models.metadata.json +0 -1
- package/timepicker/timepicker.module.js +0 -26
- package/timepicker/timepicker.module.js.map +0 -1
- package/timepicker/timepicker.module.metadata.json +0 -1
- package/timepicker/timepicker.module.ngfactory.js.map +0 -1
- package/timepicker/timepicker.utils.js +0 -141
- package/timepicker/timepicker.utils.js.map +0 -1
- package/timepicker/timepicker.utils.metadata.json +0 -1
- package/tooltip/index.js +0 -5
- package/tooltip/index.js.map +0 -1
- package/tooltip/index.metadata.json +0 -1
- package/tooltip/tooltip-container.component.js +0 -50
- package/tooltip/tooltip-container.component.js.map +0 -1
- package/tooltip/tooltip-container.component.metadata.json +0 -1
- package/tooltip/tooltip-container.component.ngfactory.js.map +0 -1
- package/tooltip/tooltip.config.js +0 -16
- package/tooltip/tooltip.config.js.map +0 -1
- package/tooltip/tooltip.config.metadata.json +0 -1
- package/tooltip/tooltip.config.ngfactory.js.map +0 -1
- package/tooltip/tooltip.directive.js +0 -315
- package/tooltip/tooltip.directive.js.map +0 -1
- package/tooltip/tooltip.directive.metadata.json +0 -1
- package/tooltip/tooltip.directive.ngfactory.js.map +0 -1
- package/tooltip/tooltip.module.js +0 -28
- package/tooltip/tooltip.module.js.map +0 -1
- package/tooltip/tooltip.module.metadata.json +0 -1
- package/tooltip/tooltip.module.ngfactory.js.map +0 -1
- package/tsconfig.spec.json +0 -41
- package/typeahead/index.d.ts +0 -7
- package/typeahead/index.js +0 -8
- package/typeahead/index.js.map +0 -1
- package/typeahead/index.metadata.json +0 -1
- package/typeahead/latin-map.js +0 -828
- package/typeahead/latin-map.js.map +0 -1
- package/typeahead/latin-map.metadata.json +0 -1
- package/typeahead/typeahead-container.component.html +0 -42
- package/typeahead/typeahead-container.component.js +0 -240
- package/typeahead/typeahead-container.component.js.map +0 -1
- package/typeahead/typeahead-container.component.metadata.json +0 -1
- package/typeahead/typeahead-container.component.ngfactory.js.map +0 -1
- package/typeahead/typeahead-match.class.js +0 -18
- package/typeahead/typeahead-match.class.js.map +0 -1
- package/typeahead/typeahead-match.class.metadata.json +0 -1
- package/typeahead/typeahead-options.class.js +0 -8
- package/typeahead/typeahead-options.class.js.map +0 -1
- package/typeahead/typeahead-options.class.metadata.json +0 -1
- package/typeahead/typeahead-utils.js +0 -60
- package/typeahead/typeahead-utils.js.map +0 -1
- package/typeahead/typeahead-utils.metadata.json +0 -1
- package/typeahead/typeahead.directive.js +0 -383
- package/typeahead/typeahead.directive.js.map +0 -1
- package/typeahead/typeahead.directive.metadata.json +0 -1
- package/typeahead/typeahead.directive.ngfactory.js.map +0 -1
- package/typeahead/typeahead.module.js +0 -27
- package/typeahead/typeahead.module.js.map +0 -1
- package/typeahead/typeahead.module.metadata.json +0 -1
- package/typeahead/typeahead.module.ngfactory.js.map +0 -1
- package/utils/decorators.js +0 -21
- package/utils/decorators.js.map +0 -1
- package/utils/decorators.metadata.json +0 -1
- package/utils/facade/browser.js +0 -25
- package/utils/facade/browser.js.map +0 -1
- package/utils/facade/browser.metadata.json +0 -1
- package/utils/index.d.ts +0 -6
- package/utils/index.js +0 -7
- package/utils/index.js.map +0 -1
- package/utils/index.metadata.json +0 -1
- package/utils/linked-list.class.js +0 -244
- package/utils/linked-list.class.js.map +0 -1
- package/utils/linked-list.class.metadata.json +0 -1
- package/utils/theme-provider.js +0 -35
- package/utils/theme-provider.js.map +0 -1
- package/utils/theme-provider.metadata.json +0 -1
- package/utils/trigger.class.js +0 -16
- package/utils/trigger.class.js.map +0 -1
- package/utils/trigger.class.metadata.json +0 -1
- package/utils/triggers.js +0 -94
- package/utils/triggers.js.map +0 -1
- package/utils/triggers.metadata.json +0 -1
- package/utils/utils.class.js +0 -25
- package/utils/utils.class.js.map +0 -1
- package/utils/utils.class.metadata.json +0 -1
- package/utils/warn-once.js +0 -12
- package/utils/warn-once.js.map +0 -1
- package/utils/warn-once.metadata.json +0 -1
@@ -0,0 +1,1506 @@
|
|
1
|
+
/**
|
2
|
+
* @fileoverview added by tsickle
|
3
|
+
* @suppress {checkTypes} checked by tsc
|
4
|
+
*/
|
5
|
+
import * as tslib_1 from "tslib";
|
6
|
+
import { add, subtract } from '../index';
|
7
|
+
import { getDate, getFullYear, getHours, getMilliseconds, getMinutes, getMonth, getSeconds } from '../utils/date-getters';
|
8
|
+
import { setDate, setFullYear, setHours, setMilliseconds, setMinutes, setMonth, setSeconds } from '../utils/date-setters';
|
9
|
+
import { cloneDate } from '../create/clone';
|
10
|
+
import { isArray, isBoolean, isDate, isDateValid, isFunction, isNumber, isObject, isString, isUndefined } from '../utils/type-checks';
|
11
|
+
import { formatDate } from '../format';
|
12
|
+
import { ISO_8601, RFC_2822 } from '../create/from-string-and-format';
|
13
|
+
import { getDateOffset, getUTCOffset, hasAlignedHourOffset, isDaylightSavingTime, setOffsetToParsedOffset, setUTCOffset } from '../units/offset';
|
14
|
+
import { isLeapYear, parseTwoDigitYear } from '../units/year';
|
15
|
+
import { isAfter, isBefore, isBetween, isSame, isSameOrAfter, isSameOrBefore } from '../utils/date-compare';
|
16
|
+
import { daysInMonth } from '../units/month';
|
17
|
+
import { getDayOfWeek, getISODayOfWeek, getLocaleDayOfWeek, parseWeekday, setDayOfWeek, setISODayOfWeek, setLocaleDayOfWeek } from '../units/day-of-week';
|
18
|
+
import { getISOWeek, getWeek, setISOWeek, setWeek } from '../units/week';
|
19
|
+
import { getISOWeeksInYear, getISOWeekYear, getSetISOWeekYear, getSetWeekYear, getWeeksInYear, getWeekYear } from '../units/week-year';
|
20
|
+
import { endOf, startOf } from '../utils/start-end-of';
|
21
|
+
import { getQuarter, setQuarter } from '../units/quarter';
|
22
|
+
import { getDayOfYear, setDayOfYear } from '../units/day-of-year';
|
23
|
+
import { getZoneAbbr, getZoneName } from '../units/timezone';
|
24
|
+
import { diff } from '../moment/diff';
|
25
|
+
import { calendar } from '../moment/calendar';
|
26
|
+
import { defineLocale, getLocale, getSetGlobalLocale, listLocales } from '../locale/locales';
|
27
|
+
import { max, min } from '../moment/min-max';
|
28
|
+
import { isDuration } from '../duration/constructor';
|
29
|
+
import { createLocalOrUTC } from '../create/from-anything';
|
30
|
+
import { createDuration } from '../duration/create';
|
31
|
+
export var /** @type {?} */ moment = (/** @type {?} */ (_moment));
|
32
|
+
/**
|
33
|
+
* @record
|
34
|
+
*/
|
35
|
+
export function MomentFn() { }
|
36
|
+
function MomentFn_tsickle_Closure_declarations() {
|
37
|
+
/* TODO: handle strange member:
|
38
|
+
(input?: DateInput | Khronos, format?: string | string[], localeKey?: string | boolean, strict?: boolean, isUTC?: boolean): Khronos;
|
39
|
+
*/
|
40
|
+
/** @type {?} */
|
41
|
+
MomentFn.prototype.ISO_8601;
|
42
|
+
/** @type {?} */
|
43
|
+
MomentFn.prototype.RFC_2822;
|
44
|
+
/** @type {?} */
|
45
|
+
MomentFn.prototype.utc;
|
46
|
+
/** @type {?} */
|
47
|
+
MomentFn.prototype.parseZone;
|
48
|
+
/** @type {?} */
|
49
|
+
MomentFn.prototype.unix;
|
50
|
+
/** @type {?} */
|
51
|
+
MomentFn.prototype.locale;
|
52
|
+
/** @type {?} */
|
53
|
+
MomentFn.prototype.duration;
|
54
|
+
/** @type {?} */
|
55
|
+
MomentFn.prototype.defineLocale;
|
56
|
+
/** @type {?} */
|
57
|
+
MomentFn.prototype.parseTwoDigitYear;
|
58
|
+
/** @type {?} */
|
59
|
+
MomentFn.prototype.isDate;
|
60
|
+
/** @type {?} */
|
61
|
+
MomentFn.prototype.months;
|
62
|
+
/** @type {?} */
|
63
|
+
MomentFn.prototype.months;
|
64
|
+
/** @type {?} */
|
65
|
+
MomentFn.prototype.months;
|
66
|
+
/** @type {?} */
|
67
|
+
MomentFn.prototype.months;
|
68
|
+
/** @type {?} */
|
69
|
+
MomentFn.prototype.monthsShort;
|
70
|
+
/** @type {?} */
|
71
|
+
MomentFn.prototype.monthsShort;
|
72
|
+
/** @type {?} */
|
73
|
+
MomentFn.prototype.monthsShort;
|
74
|
+
/** @type {?} */
|
75
|
+
MomentFn.prototype.monthsShort;
|
76
|
+
/** @type {?} */
|
77
|
+
MomentFn.prototype.weekdays;
|
78
|
+
/** @type {?} */
|
79
|
+
MomentFn.prototype.weekdays;
|
80
|
+
/** @type {?} */
|
81
|
+
MomentFn.prototype.weekdays;
|
82
|
+
/** @type {?} */
|
83
|
+
MomentFn.prototype.weekdays;
|
84
|
+
/** @type {?} */
|
85
|
+
MomentFn.prototype.weekdays;
|
86
|
+
/** @type {?} */
|
87
|
+
MomentFn.prototype.weekdays;
|
88
|
+
/** @type {?} */
|
89
|
+
MomentFn.prototype.weekdays;
|
90
|
+
/** @type {?} */
|
91
|
+
MomentFn.prototype.weekdays;
|
92
|
+
/** @type {?} */
|
93
|
+
MomentFn.prototype.weekdaysShort;
|
94
|
+
/** @type {?} */
|
95
|
+
MomentFn.prototype.weekdaysShort;
|
96
|
+
/** @type {?} */
|
97
|
+
MomentFn.prototype.weekdaysShort;
|
98
|
+
/** @type {?} */
|
99
|
+
MomentFn.prototype.weekdaysShort;
|
100
|
+
/** @type {?} */
|
101
|
+
MomentFn.prototype.weekdaysShort;
|
102
|
+
/** @type {?} */
|
103
|
+
MomentFn.prototype.weekdaysShort;
|
104
|
+
/** @type {?} */
|
105
|
+
MomentFn.prototype.weekdaysShort;
|
106
|
+
/** @type {?} */
|
107
|
+
MomentFn.prototype.weekdaysShort;
|
108
|
+
/** @type {?} */
|
109
|
+
MomentFn.prototype.weekdaysMin;
|
110
|
+
/** @type {?} */
|
111
|
+
MomentFn.prototype.weekdaysMin;
|
112
|
+
/** @type {?} */
|
113
|
+
MomentFn.prototype.weekdaysMin;
|
114
|
+
/** @type {?} */
|
115
|
+
MomentFn.prototype.weekdaysMin;
|
116
|
+
/** @type {?} */
|
117
|
+
MomentFn.prototype.weekdaysMin;
|
118
|
+
/** @type {?} */
|
119
|
+
MomentFn.prototype.weekdaysMin;
|
120
|
+
/** @type {?} */
|
121
|
+
MomentFn.prototype.weekdaysMin;
|
122
|
+
/** @type {?} */
|
123
|
+
MomentFn.prototype.weekdaysMin;
|
124
|
+
/** @type {?} */
|
125
|
+
MomentFn.prototype.relativeTimeThreshold;
|
126
|
+
/** @type {?} */
|
127
|
+
MomentFn.prototype.relativeTimeThreshold;
|
128
|
+
/** @type {?} */
|
129
|
+
MomentFn.prototype.min;
|
130
|
+
/** @type {?} */
|
131
|
+
MomentFn.prototype.max;
|
132
|
+
/** @type {?} */
|
133
|
+
MomentFn.prototype.localeData;
|
134
|
+
/** @type {?} */
|
135
|
+
MomentFn.prototype.updateLocale;
|
136
|
+
/** @type {?} */
|
137
|
+
MomentFn.prototype.calendarFormat;
|
138
|
+
/** @type {?} */
|
139
|
+
MomentFn.prototype.calendarFormat;
|
140
|
+
/** @type {?} */
|
141
|
+
MomentFn.prototype.invalid;
|
142
|
+
/** @type {?} */
|
143
|
+
MomentFn.prototype.locales;
|
144
|
+
/** @type {?} */
|
145
|
+
MomentFn.prototype.updateOffset;
|
146
|
+
}
|
147
|
+
/**
|
148
|
+
* @param {?=} input
|
149
|
+
* @param {?=} format
|
150
|
+
* @param {?=} localeKey
|
151
|
+
* @param {?=} strict
|
152
|
+
* @param {?=} isUTC
|
153
|
+
* @return {?}
|
154
|
+
*/
|
155
|
+
function _moment(input, format, localeKey, strict, isUTC) {
|
156
|
+
if (input instanceof Khronos) {
|
157
|
+
var /** @type {?} */ _date = input.clone();
|
158
|
+
return isUTC ? _date.utc() : _date;
|
159
|
+
}
|
160
|
+
if (isBoolean(localeKey)) {
|
161
|
+
return new Khronos(input, format, null, localeKey, isUTC);
|
162
|
+
}
|
163
|
+
return new Khronos(input, format, localeKey, strict, isUTC);
|
164
|
+
}
|
165
|
+
moment.utc = function (input, format, localeKey, strict) {
|
166
|
+
return _moment(input, format, localeKey, strict, true);
|
167
|
+
};
|
168
|
+
moment.parseZone = function (input, format, localeKey, strict) {
|
169
|
+
return _moment(input, format, localeKey, strict, true).parseZone();
|
170
|
+
};
|
171
|
+
moment.locale = getSetGlobalLocale;
|
172
|
+
moment.localeData = function (key) {
|
173
|
+
if (key instanceof Khronos) {
|
174
|
+
return key.localeData();
|
175
|
+
}
|
176
|
+
return getLocale(key);
|
177
|
+
};
|
178
|
+
// moment.utc = createUTC;
|
179
|
+
moment.unix = function (inp) { return new Khronos(inp * 1000); };
|
180
|
+
moment.ISO_8601 = ISO_8601;
|
181
|
+
moment.RFC_2822 = RFC_2822;
|
182
|
+
moment.defineLocale = defineLocale;
|
183
|
+
moment.parseTwoDigitYear = parseTwoDigitYear;
|
184
|
+
moment.isDate = isDate;
|
185
|
+
moment.invalid = function _invalid() {
|
186
|
+
return new Khronos(new Date(NaN));
|
187
|
+
};
|
188
|
+
// duration(inp?: Duration | DateInput | Khronos, unit?: MomentUnitOfTime): Duration;
|
189
|
+
moment.duration = function (input, unit) {
|
190
|
+
var /** @type {?} */ _unit = mapUnitOfTime(unit);
|
191
|
+
if (isDate(input)) {
|
192
|
+
throw new Error('todo implement');
|
193
|
+
}
|
194
|
+
if (input == null) {
|
195
|
+
return createDuration();
|
196
|
+
}
|
197
|
+
if (isDuration(input)) {
|
198
|
+
return createDuration(input, _unit, { _locale: input._locale });
|
199
|
+
}
|
200
|
+
if (isString(input) || isNumber(input) || isDuration(input) || isObject(input)) {
|
201
|
+
return createDuration(input, _unit);
|
202
|
+
}
|
203
|
+
throw new Error('todo implement');
|
204
|
+
};
|
205
|
+
moment.min = function _min() {
|
206
|
+
var dates = [];
|
207
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
208
|
+
dates[_i] = arguments[_i];
|
209
|
+
}
|
210
|
+
var /** @type {?} */ _firstArg = dates[0];
|
211
|
+
var /** @type {?} */ _dates = (isArray(_firstArg) ? _firstArg : dates)
|
212
|
+
.map(function (date) { return _moment(date); })
|
213
|
+
.map(function (date) { return date.toDate(); });
|
214
|
+
var /** @type {?} */ _date = min.apply(void 0, tslib_1.__spread(_dates));
|
215
|
+
return new Khronos(_date);
|
216
|
+
};
|
217
|
+
moment.max = function _max() {
|
218
|
+
var dates = [];
|
219
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
220
|
+
dates[_i] = arguments[_i];
|
221
|
+
}
|
222
|
+
var /** @type {?} */ _firstArg = dates[0];
|
223
|
+
var /** @type {?} */ _dates = (isArray(_firstArg) ? _firstArg : dates)
|
224
|
+
.map(function (date) { return _moment(date); })
|
225
|
+
.map(function (date) { return date.toDate(); });
|
226
|
+
var /** @type {?} */ _date = max.apply(void 0, tslib_1.__spread(_dates));
|
227
|
+
return new Khronos(_date);
|
228
|
+
};
|
229
|
+
moment.locales = function () {
|
230
|
+
return listLocales();
|
231
|
+
};
|
232
|
+
/**
|
233
|
+
* @record
|
234
|
+
*/
|
235
|
+
export function MomentInputObject() { }
|
236
|
+
function MomentInputObject_tsickle_Closure_declarations() {
|
237
|
+
/** @type {?|undefined} */
|
238
|
+
MomentInputObject.prototype.years;
|
239
|
+
/** @type {?|undefined} */
|
240
|
+
MomentInputObject.prototype.year;
|
241
|
+
/** @type {?|undefined} */
|
242
|
+
MomentInputObject.prototype.y;
|
243
|
+
/** @type {?|undefined} */
|
244
|
+
MomentInputObject.prototype.months;
|
245
|
+
/** @type {?|undefined} */
|
246
|
+
MomentInputObject.prototype.month;
|
247
|
+
/** @type {?|undefined} */
|
248
|
+
MomentInputObject.prototype.M;
|
249
|
+
/** @type {?|undefined} */
|
250
|
+
MomentInputObject.prototype.days;
|
251
|
+
/** @type {?|undefined} */
|
252
|
+
MomentInputObject.prototype.day;
|
253
|
+
/** @type {?|undefined} */
|
254
|
+
MomentInputObject.prototype.d;
|
255
|
+
/** @type {?|undefined} */
|
256
|
+
MomentInputObject.prototype.dates;
|
257
|
+
/** @type {?|undefined} */
|
258
|
+
MomentInputObject.prototype.date;
|
259
|
+
/** @type {?|undefined} */
|
260
|
+
MomentInputObject.prototype.D;
|
261
|
+
/** @type {?|undefined} */
|
262
|
+
MomentInputObject.prototype.hours;
|
263
|
+
/** @type {?|undefined} */
|
264
|
+
MomentInputObject.prototype.hour;
|
265
|
+
/** @type {?|undefined} */
|
266
|
+
MomentInputObject.prototype.h;
|
267
|
+
/** @type {?|undefined} */
|
268
|
+
MomentInputObject.prototype.minutes;
|
269
|
+
/** @type {?|undefined} */
|
270
|
+
MomentInputObject.prototype.minute;
|
271
|
+
/** @type {?|undefined} */
|
272
|
+
MomentInputObject.prototype.m;
|
273
|
+
/** @type {?|undefined} */
|
274
|
+
MomentInputObject.prototype.seconds;
|
275
|
+
/** @type {?|undefined} */
|
276
|
+
MomentInputObject.prototype.second;
|
277
|
+
/** @type {?|undefined} */
|
278
|
+
MomentInputObject.prototype.s;
|
279
|
+
/** @type {?|undefined} */
|
280
|
+
MomentInputObject.prototype.milliseconds;
|
281
|
+
/** @type {?|undefined} */
|
282
|
+
MomentInputObject.prototype.millisecond;
|
283
|
+
/** @type {?|undefined} */
|
284
|
+
MomentInputObject.prototype.ms;
|
285
|
+
/** @type {?|undefined} */
|
286
|
+
MomentInputObject.prototype.w;
|
287
|
+
/** @type {?|undefined} */
|
288
|
+
MomentInputObject.prototype.week;
|
289
|
+
/** @type {?|undefined} */
|
290
|
+
MomentInputObject.prototype.weeks;
|
291
|
+
/** @type {?|undefined} */
|
292
|
+
MomentInputObject.prototype.Q;
|
293
|
+
/** @type {?|undefined} */
|
294
|
+
MomentInputObject.prototype.quarter;
|
295
|
+
/** @type {?|undefined} */
|
296
|
+
MomentInputObject.prototype.quarters;
|
297
|
+
/** @type {?|undefined} */
|
298
|
+
MomentInputObject.prototype.weekYear;
|
299
|
+
}
|
300
|
+
var /** @type {?} */ _unitsPriority = {
|
301
|
+
year: 1,
|
302
|
+
month: 8,
|
303
|
+
week: 5,
|
304
|
+
isoWeek: 5,
|
305
|
+
day: 11,
|
306
|
+
weekday: 11,
|
307
|
+
isoWeekday: 11,
|
308
|
+
hours: 13,
|
309
|
+
weekYear: 1,
|
310
|
+
isoWeekYear: 1,
|
311
|
+
quarter: 7,
|
312
|
+
date: 9,
|
313
|
+
dayOfYear: 4,
|
314
|
+
minutes: 14,
|
315
|
+
seconds: 15,
|
316
|
+
milliseconds: 16
|
317
|
+
};
|
318
|
+
// todo: do I need 2 mappers?
|
319
|
+
var /** @type {?} */ _timeHashMap = {
|
320
|
+
y: 'year',
|
321
|
+
years: 'year',
|
322
|
+
year: 'year',
|
323
|
+
M: 'month',
|
324
|
+
months: 'month',
|
325
|
+
month: 'month',
|
326
|
+
w: 'week',
|
327
|
+
weeks: 'week',
|
328
|
+
week: 'week',
|
329
|
+
d: 'day',
|
330
|
+
days: 'day',
|
331
|
+
day: 'day',
|
332
|
+
date: 'date',
|
333
|
+
dates: 'date',
|
334
|
+
D: 'date',
|
335
|
+
h: 'hours',
|
336
|
+
hour: 'hours',
|
337
|
+
hours: 'hours',
|
338
|
+
m: 'minutes',
|
339
|
+
minute: 'minutes',
|
340
|
+
minutes: 'minutes',
|
341
|
+
s: 'seconds',
|
342
|
+
second: 'seconds',
|
343
|
+
seconds: 'seconds',
|
344
|
+
ms: 'milliseconds',
|
345
|
+
millisecond: 'milliseconds',
|
346
|
+
milliseconds: 'milliseconds',
|
347
|
+
quarter: 'quarter',
|
348
|
+
quarters: 'quarter',
|
349
|
+
q: 'quarter',
|
350
|
+
Q: 'quarter',
|
351
|
+
isoWeek: 'isoWeek',
|
352
|
+
isoWeeks: 'isoWeek',
|
353
|
+
W: 'isoWeek',
|
354
|
+
weekYear: 'weekYear',
|
355
|
+
weekYears: 'weekYear',
|
356
|
+
gg: 'weekYears',
|
357
|
+
isoWeekYear: 'isoWeekYear',
|
358
|
+
isoWeekYears: 'isoWeekYear',
|
359
|
+
GG: 'isoWeekYear',
|
360
|
+
dayOfYear: 'dayOfYear',
|
361
|
+
dayOfYears: 'dayOfYear',
|
362
|
+
DDD: 'dayOfYear',
|
363
|
+
weekday: 'weekday',
|
364
|
+
weekdays: 'weekday',
|
365
|
+
e: 'weekday',
|
366
|
+
isoWeekday: 'isoWeekday',
|
367
|
+
isoWeekdays: 'isoWeekday',
|
368
|
+
E: 'isoWeekday'
|
369
|
+
};
|
370
|
+
/**
|
371
|
+
* @param {?} period
|
372
|
+
* @return {?}
|
373
|
+
*/
|
374
|
+
function mapUnitOfTime(period) {
|
375
|
+
return /** @type {?} */ (_timeHashMap[period]);
|
376
|
+
}
|
377
|
+
/**
|
378
|
+
* @param {?} obj
|
379
|
+
* @return {?}
|
380
|
+
*/
|
381
|
+
function mapMomentInputObject(obj) {
|
382
|
+
var /** @type {?} */ _res = {};
|
383
|
+
return Object.keys(obj)
|
384
|
+
.reduce(function (res, key) {
|
385
|
+
res[mapUnitOfTime(key)] = obj[key];
|
386
|
+
return res;
|
387
|
+
}, _res);
|
388
|
+
}
|
389
|
+
var Khronos = /** @class */ (function () {
|
390
|
+
function Khronos(input, format, localeKey, strict, isUTC, offset) {
|
391
|
+
if (strict === void 0) { strict = false; }
|
392
|
+
if (isUTC === void 0) { isUTC = false; }
|
393
|
+
this._date = new Date();
|
394
|
+
this._isUTC = false;
|
395
|
+
// locale will be needed to format invalid date message
|
396
|
+
this._locale = getLocale(localeKey);
|
397
|
+
// parse invalid input
|
398
|
+
if (input === '' || input === null || (isNumber(input) && isNaN(input))) {
|
399
|
+
this._date = new Date(NaN);
|
400
|
+
return this;
|
401
|
+
}
|
402
|
+
this._isUTC = isUTC;
|
403
|
+
if (this._isUTC) {
|
404
|
+
this._offset = 0;
|
405
|
+
}
|
406
|
+
if (offset || offset === 0) {
|
407
|
+
this._offset = offset;
|
408
|
+
}
|
409
|
+
this._isStrict = strict;
|
410
|
+
this._format = format;
|
411
|
+
if (!input && input !== 0 && !format) {
|
412
|
+
this._date = new Date();
|
413
|
+
return this;
|
414
|
+
}
|
415
|
+
if (isDate(input)) {
|
416
|
+
this._date = cloneDate(input);
|
417
|
+
return this;
|
418
|
+
}
|
419
|
+
// this._date = parseDate(input, format, localeKey, strict, isUTC);
|
420
|
+
var /** @type {?} */ config = createLocalOrUTC(input, format, localeKey, strict, isUTC);
|
421
|
+
this._date = config._d;
|
422
|
+
this._offset = isNumber(config._offset) ? config._offset : this._offset;
|
423
|
+
this._isUTC = config._isUTC;
|
424
|
+
this._isStrict = config._strict;
|
425
|
+
this._format = config._f;
|
426
|
+
this._tzm = config._tzm;
|
427
|
+
}
|
428
|
+
/**
|
429
|
+
* @return {?}
|
430
|
+
*/
|
431
|
+
Khronos.prototype._toConfig = /**
|
432
|
+
* @return {?}
|
433
|
+
*/
|
434
|
+
function () {
|
435
|
+
return { _isUTC: this._isUTC, _locale: this._locale, _offset: this._offset, _tzm: this._tzm };
|
436
|
+
};
|
437
|
+
/**
|
438
|
+
* @param {?=} localeKey
|
439
|
+
* @return {?}
|
440
|
+
*/
|
441
|
+
Khronos.prototype.locale = /**
|
442
|
+
* @param {?=} localeKey
|
443
|
+
* @return {?}
|
444
|
+
*/
|
445
|
+
function (localeKey) {
|
446
|
+
if (isUndefined(localeKey)) {
|
447
|
+
return this._locale._abbr;
|
448
|
+
}
|
449
|
+
if (localeKey instanceof Khronos) {
|
450
|
+
this._locale = localeKey._locale;
|
451
|
+
return this;
|
452
|
+
}
|
453
|
+
var /** @type {?} */ newLocaleData = getLocale(localeKey);
|
454
|
+
if (newLocaleData != null) {
|
455
|
+
this._locale = newLocaleData;
|
456
|
+
}
|
457
|
+
return this;
|
458
|
+
};
|
459
|
+
/**
|
460
|
+
* @return {?}
|
461
|
+
*/
|
462
|
+
Khronos.prototype.localeData = /**
|
463
|
+
* @return {?}
|
464
|
+
*/
|
465
|
+
function () {
|
466
|
+
return this._locale;
|
467
|
+
};
|
468
|
+
// Basic
|
469
|
+
/**
|
470
|
+
* @param {?} val
|
471
|
+
* @param {?=} period
|
472
|
+
* @return {?}
|
473
|
+
*/
|
474
|
+
Khronos.prototype.add = /**
|
475
|
+
* @param {?} val
|
476
|
+
* @param {?=} period
|
477
|
+
* @return {?}
|
478
|
+
*/
|
479
|
+
function (val, period) {
|
480
|
+
var _this = this;
|
481
|
+
if (isString(val)) {
|
482
|
+
this._date = add(this._date, parseInt(val, 10), mapUnitOfTime(period));
|
483
|
+
}
|
484
|
+
if (isNumber(val)) {
|
485
|
+
this._date = add(this._date, val, mapUnitOfTime(period));
|
486
|
+
}
|
487
|
+
if (isObject(val)) {
|
488
|
+
var /** @type {?} */ _mapped_1 = mapMomentInputObject(val);
|
489
|
+
Object.keys(_mapped_1)
|
490
|
+
.forEach(function (key) { return add(_this._date, _mapped_1[key], key); });
|
491
|
+
}
|
492
|
+
return this;
|
493
|
+
};
|
494
|
+
// fixme: for some reason here 'null' for time is fine
|
495
|
+
/**
|
496
|
+
* @param {?=} time
|
497
|
+
* @param {?=} formats
|
498
|
+
* @return {?}
|
499
|
+
*/
|
500
|
+
Khronos.prototype.calendar = /**
|
501
|
+
* @param {?=} time
|
502
|
+
* @param {?=} formats
|
503
|
+
* @return {?}
|
504
|
+
*/
|
505
|
+
function (time, formats) {
|
506
|
+
var /** @type {?} */ _time = time instanceof Khronos ? time : new Khronos(time || new Date());
|
507
|
+
var /** @type {?} */ _offset = (this._offset || 0) - (_time._offset || 0);
|
508
|
+
var /** @type {?} */ _config = Object.assign(this._toConfig(), { _offset: _offset });
|
509
|
+
return calendar(this._date, _time._date, formats, this._locale, _config);
|
510
|
+
};
|
511
|
+
/**
|
512
|
+
* @return {?}
|
513
|
+
*/
|
514
|
+
Khronos.prototype.clone = /**
|
515
|
+
* @return {?}
|
516
|
+
*/
|
517
|
+
function () {
|
518
|
+
var /** @type {?} */ localeKey = this._locale && this._locale._abbr || 'en';
|
519
|
+
// return new Khronos(cloneDate(this._date), this._format, localeKey, this._isStrict, this._isUTC);
|
520
|
+
// fails if isUTC and offset
|
521
|
+
// return new Khronos(new Date(this.valueOf()),
|
522
|
+
return new Khronos(this._date, this._format, localeKey, this._isStrict, this._isUTC, this._offset);
|
523
|
+
};
|
524
|
+
/**
|
525
|
+
* @param {?} b
|
526
|
+
* @param {?=} unitOfTime
|
527
|
+
* @param {?=} precise
|
528
|
+
* @return {?}
|
529
|
+
*/
|
530
|
+
Khronos.prototype.diff = /**
|
531
|
+
* @param {?} b
|
532
|
+
* @param {?=} unitOfTime
|
533
|
+
* @param {?=} precise
|
534
|
+
* @return {?}
|
535
|
+
*/
|
536
|
+
function (b, unitOfTime, precise) {
|
537
|
+
var /** @type {?} */ unit = mapUnitOfTime(unitOfTime);
|
538
|
+
var /** @type {?} */ _b = b instanceof Khronos ? b : new Khronos(b);
|
539
|
+
// const zoneDelta = (_b.utcOffset() - this.utcOffset());
|
540
|
+
// const config = Object.assign(this._toConfig(), {
|
541
|
+
// _offset: 0,
|
542
|
+
// _isUTC: true,
|
543
|
+
// _zoneDelta: zoneDelta
|
544
|
+
// });
|
545
|
+
// return diff(new Date(this.valueOf()), new Date(_b.valueOf()), unit, precise, config);
|
546
|
+
return diff(this._date, _b.toDate(), unit, precise, this._toConfig());
|
547
|
+
};
|
548
|
+
/**
|
549
|
+
* @param {?=} period
|
550
|
+
* @return {?}
|
551
|
+
*/
|
552
|
+
Khronos.prototype.endOf = /**
|
553
|
+
* @param {?=} period
|
554
|
+
* @return {?}
|
555
|
+
*/
|
556
|
+
function (period) {
|
557
|
+
var /** @type {?} */ _per = mapUnitOfTime(period);
|
558
|
+
this._date = endOf(this._date, _per, this._isUTC);
|
559
|
+
return this;
|
560
|
+
};
|
561
|
+
/**
|
562
|
+
* @param {?=} format
|
563
|
+
* @return {?}
|
564
|
+
*/
|
565
|
+
Khronos.prototype.format = /**
|
566
|
+
* @param {?=} format
|
567
|
+
* @return {?}
|
568
|
+
*/
|
569
|
+
function (format) {
|
570
|
+
return formatDate(this._date, format, this._locale && this._locale._abbr, this._isUTC, this._offset);
|
571
|
+
};
|
572
|
+
// todo: implement
|
573
|
+
/**
|
574
|
+
* @param {?=} time
|
575
|
+
* @param {?=} withoutSuffix
|
576
|
+
* @return {?}
|
577
|
+
*/
|
578
|
+
Khronos.prototype.from = /**
|
579
|
+
* @param {?=} time
|
580
|
+
* @param {?=} withoutSuffix
|
581
|
+
* @return {?}
|
582
|
+
*/
|
583
|
+
function (time, withoutSuffix) {
|
584
|
+
var /** @type {?} */ _time = _moment(time);
|
585
|
+
if (this.isValid() && _time.isValid()) {
|
586
|
+
return createDuration({ to: this.toDate(), from: _time.toDate() })
|
587
|
+
.locale(this.locale())
|
588
|
+
.humanize(!withoutSuffix);
|
589
|
+
}
|
590
|
+
return this.localeData().invalidDate;
|
591
|
+
};
|
592
|
+
/**
|
593
|
+
* @param {?=} withoutSuffix
|
594
|
+
* @return {?}
|
595
|
+
*/
|
596
|
+
Khronos.prototype.fromNow = /**
|
597
|
+
* @param {?=} withoutSuffix
|
598
|
+
* @return {?}
|
599
|
+
*/
|
600
|
+
function (withoutSuffix) {
|
601
|
+
return this.from(new Date(), withoutSuffix);
|
602
|
+
};
|
603
|
+
/**
|
604
|
+
* @param {?} inp
|
605
|
+
* @param {?=} suffix
|
606
|
+
* @return {?}
|
607
|
+
*/
|
608
|
+
Khronos.prototype.to = /**
|
609
|
+
* @param {?} inp
|
610
|
+
* @param {?=} suffix
|
611
|
+
* @return {?}
|
612
|
+
*/
|
613
|
+
function (inp, suffix) {
|
614
|
+
throw new Error("TODO: Implement");
|
615
|
+
};
|
616
|
+
/**
|
617
|
+
* @param {?=} withoutPrefix
|
618
|
+
* @return {?}
|
619
|
+
*/
|
620
|
+
Khronos.prototype.toNow = /**
|
621
|
+
* @param {?=} withoutPrefix
|
622
|
+
* @return {?}
|
623
|
+
*/
|
624
|
+
function (withoutPrefix) {
|
625
|
+
throw new Error("TODO: Implement");
|
626
|
+
};
|
627
|
+
/**
|
628
|
+
* @param {?} val
|
629
|
+
* @param {?=} period
|
630
|
+
* @return {?}
|
631
|
+
*/
|
632
|
+
Khronos.prototype.subtract = /**
|
633
|
+
* @param {?} val
|
634
|
+
* @param {?=} period
|
635
|
+
* @return {?}
|
636
|
+
*/
|
637
|
+
function (val, period) {
|
638
|
+
var _this = this;
|
639
|
+
if (isString(val)) {
|
640
|
+
this._date = subtract(this._date, parseInt(val, 10), mapUnitOfTime(period));
|
641
|
+
return this;
|
642
|
+
}
|
643
|
+
if (isNumber(val)) {
|
644
|
+
this._date = subtract(this._date, val, mapUnitOfTime(period));
|
645
|
+
}
|
646
|
+
if (isObject(val)) {
|
647
|
+
var /** @type {?} */ _mapped_2 = mapMomentInputObject(val);
|
648
|
+
Object.keys(_mapped_2)
|
649
|
+
.forEach(function (key) { return subtract(_this._date, _mapped_2[key], key); });
|
650
|
+
}
|
651
|
+
return this;
|
652
|
+
};
|
653
|
+
/**
|
654
|
+
* @param {?} period
|
655
|
+
* @return {?}
|
656
|
+
*/
|
657
|
+
Khronos.prototype.get = /**
|
658
|
+
* @param {?} period
|
659
|
+
* @return {?}
|
660
|
+
*/
|
661
|
+
function (period) {
|
662
|
+
if (period === 'dayOfYear') {
|
663
|
+
return this.dayOfYear();
|
664
|
+
}
|
665
|
+
var /** @type {?} */ unit = mapUnitOfTime(period);
|
666
|
+
switch (unit) {
|
667
|
+
case 'year':
|
668
|
+
return this.year();
|
669
|
+
case 'month':
|
670
|
+
return this.month();
|
671
|
+
// | 'week'
|
672
|
+
case 'date':
|
673
|
+
return this.date();
|
674
|
+
case 'day':
|
675
|
+
return this.day();
|
676
|
+
case 'hours':
|
677
|
+
return this.hours();
|
678
|
+
case 'minutes':
|
679
|
+
return this.minutes();
|
680
|
+
case 'seconds':
|
681
|
+
return this.seconds();
|
682
|
+
case 'milliseconds':
|
683
|
+
return this.milliseconds();
|
684
|
+
case 'week':
|
685
|
+
return this.week();
|
686
|
+
case 'isoWeek':
|
687
|
+
return this.isoWeek();
|
688
|
+
case 'weekYear':
|
689
|
+
return this.weekYear();
|
690
|
+
case 'isoWeekYear':
|
691
|
+
return this.isoWeekYear();
|
692
|
+
case 'weekday':
|
693
|
+
return this.weekday();
|
694
|
+
case 'isoWeekday':
|
695
|
+
return this.isoWeekday();
|
696
|
+
case 'quarter':
|
697
|
+
return this.quarter();
|
698
|
+
default:
|
699
|
+
throw new Error("Unknown moment.get('" + period + "')");
|
700
|
+
}
|
701
|
+
};
|
702
|
+
/**
|
703
|
+
* @param {?} period
|
704
|
+
* @param {?=} input
|
705
|
+
* @return {?}
|
706
|
+
*/
|
707
|
+
Khronos.prototype.set = /**
|
708
|
+
* @param {?} period
|
709
|
+
* @param {?=} input
|
710
|
+
* @return {?}
|
711
|
+
*/
|
712
|
+
function (period, input) {
|
713
|
+
var _this = this;
|
714
|
+
if (isString(period)) {
|
715
|
+
var /** @type {?} */ unit = mapUnitOfTime(period);
|
716
|
+
switch (unit) {
|
717
|
+
case 'year':
|
718
|
+
return this.year(input);
|
719
|
+
case 'month':
|
720
|
+
return this.month(input);
|
721
|
+
// | 'week'
|
722
|
+
case 'day':
|
723
|
+
return this.day(input);
|
724
|
+
case 'date':
|
725
|
+
return this.date(input);
|
726
|
+
case 'hours':
|
727
|
+
return this.hours(input);
|
728
|
+
case 'minutes':
|
729
|
+
return this.minutes(input);
|
730
|
+
case 'seconds':
|
731
|
+
return this.seconds(input);
|
732
|
+
case 'milliseconds':
|
733
|
+
return this.milliseconds(input);
|
734
|
+
case 'week':
|
735
|
+
return this.week(input);
|
736
|
+
case 'isoWeek':
|
737
|
+
return this.isoWeek(input);
|
738
|
+
case 'weekYear':
|
739
|
+
return this.weekYear(input);
|
740
|
+
case 'isoWeekYear':
|
741
|
+
return this.isoWeekYear(input);
|
742
|
+
case 'weekday':
|
743
|
+
return this.weekday(input);
|
744
|
+
case 'isoWeekday':
|
745
|
+
return this.isoWeekday(input);
|
746
|
+
case 'quarter':
|
747
|
+
return this.quarter(input);
|
748
|
+
default:
|
749
|
+
throw new Error("Unknown moment.get('" + period + "')");
|
750
|
+
}
|
751
|
+
}
|
752
|
+
if (isObject(period)) {
|
753
|
+
var /** @type {?} */ _mapped_3 = mapMomentInputObject(period);
|
754
|
+
Object.keys(_mapped_3)
|
755
|
+
.sort(function (a, b) {
|
756
|
+
return _unitsPriority[a] - _unitsPriority[b];
|
757
|
+
})
|
758
|
+
.forEach(function (key) { return _this.set(key, _mapped_3[key]); });
|
759
|
+
}
|
760
|
+
return this;
|
761
|
+
};
|
762
|
+
/**
|
763
|
+
* @return {?}
|
764
|
+
*/
|
765
|
+
Khronos.prototype.toString = /**
|
766
|
+
* @return {?}
|
767
|
+
*/
|
768
|
+
function () {
|
769
|
+
return this.format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');
|
770
|
+
};
|
771
|
+
/**
|
772
|
+
* @return {?}
|
773
|
+
*/
|
774
|
+
Khronos.prototype.toISOString = /**
|
775
|
+
* @return {?}
|
776
|
+
*/
|
777
|
+
function () {
|
778
|
+
if (!this.isValid()) {
|
779
|
+
return null;
|
780
|
+
}
|
781
|
+
if (getFullYear(this._date, true) < 0 || getFullYear(this._date, true) > 9999) {
|
782
|
+
return this.format('YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]');
|
783
|
+
}
|
784
|
+
if (isFunction(Date.prototype.toISOString)) {
|
785
|
+
// native implementation is ~50x faster, use it when we can
|
786
|
+
return this.toDate().toISOString();
|
787
|
+
}
|
788
|
+
return this.format('YYYY-MM-DD[T]HH:mm:ss.SSS[Z]');
|
789
|
+
};
|
790
|
+
/**
|
791
|
+
* @return {?}
|
792
|
+
*/
|
793
|
+
Khronos.prototype.inspect = /**
|
794
|
+
* @return {?}
|
795
|
+
*/
|
796
|
+
function () {
|
797
|
+
throw new Error('TODO: implement');
|
798
|
+
};
|
799
|
+
/**
|
800
|
+
* @return {?}
|
801
|
+
*/
|
802
|
+
Khronos.prototype.toJSON = /**
|
803
|
+
* @return {?}
|
804
|
+
*/
|
805
|
+
function () {
|
806
|
+
return this.toISOString();
|
807
|
+
};
|
808
|
+
/**
|
809
|
+
* @return {?}
|
810
|
+
*/
|
811
|
+
Khronos.prototype.toDate = /**
|
812
|
+
* @return {?}
|
813
|
+
*/
|
814
|
+
function () {
|
815
|
+
return new Date(this.valueOf());
|
816
|
+
};
|
817
|
+
/**
|
818
|
+
* @return {?}
|
819
|
+
*/
|
820
|
+
Khronos.prototype.toObject = /**
|
821
|
+
* @return {?}
|
822
|
+
*/
|
823
|
+
function () {
|
824
|
+
return {
|
825
|
+
// years: getFullYear(this._date, this._isUTC),
|
826
|
+
// months: getMonth(this._date, this._isUTC),
|
827
|
+
year: getFullYear(this._date, this._isUTC),
|
828
|
+
month: getMonth(this._date, this._isUTC),
|
829
|
+
date: getDate(this._date, this._isUTC),
|
830
|
+
hours: getHours(this._date, this._isUTC),
|
831
|
+
minutes: getMinutes(this._date, this._isUTC),
|
832
|
+
seconds: getSeconds(this._date, this._isUTC),
|
833
|
+
milliseconds: getMilliseconds(this._date, this._isUTC)
|
834
|
+
};
|
835
|
+
};
|
836
|
+
/**
|
837
|
+
* @return {?}
|
838
|
+
*/
|
839
|
+
Khronos.prototype.toArray = /**
|
840
|
+
* @return {?}
|
841
|
+
*/
|
842
|
+
function () {
|
843
|
+
return [this.year(), this.month(), this.date(), this.hour(), this.minute(), this.second(), this.millisecond()];
|
844
|
+
};
|
845
|
+
// Dates boolean algebra
|
846
|
+
/**
|
847
|
+
* @param {?} date
|
848
|
+
* @param {?=} unit
|
849
|
+
* @return {?}
|
850
|
+
*/
|
851
|
+
Khronos.prototype.isAfter = /**
|
852
|
+
* @param {?} date
|
853
|
+
* @param {?=} unit
|
854
|
+
* @return {?}
|
855
|
+
*/
|
856
|
+
function (date, unit) {
|
857
|
+
var /** @type {?} */ _unit = unit ? mapUnitOfTime(unit) : void 0;
|
858
|
+
return isAfter(this._date, date.toDate(), _unit);
|
859
|
+
};
|
860
|
+
/**
|
861
|
+
* @param {?} date
|
862
|
+
* @param {?=} unit
|
863
|
+
* @return {?}
|
864
|
+
*/
|
865
|
+
Khronos.prototype.isBefore = /**
|
866
|
+
* @param {?} date
|
867
|
+
* @param {?=} unit
|
868
|
+
* @return {?}
|
869
|
+
*/
|
870
|
+
function (date, unit) {
|
871
|
+
var /** @type {?} */ _unit = unit ? mapUnitOfTime(unit) : void 0;
|
872
|
+
return isBefore(this.toDate(), date.toDate(), _unit);
|
873
|
+
};
|
874
|
+
/**
|
875
|
+
* @param {?} from
|
876
|
+
* @param {?} to
|
877
|
+
* @param {?=} unit
|
878
|
+
* @param {?=} inclusivity
|
879
|
+
* @return {?}
|
880
|
+
*/
|
881
|
+
Khronos.prototype.isBetween = /**
|
882
|
+
* @param {?} from
|
883
|
+
* @param {?} to
|
884
|
+
* @param {?=} unit
|
885
|
+
* @param {?=} inclusivity
|
886
|
+
* @return {?}
|
887
|
+
*/
|
888
|
+
function (from, to, unit, inclusivity) {
|
889
|
+
var /** @type {?} */ _unit = unit ? mapUnitOfTime(unit) : void 0;
|
890
|
+
return isBetween(this.toDate(), from.toDate(), to.toDate(), _unit, inclusivity);
|
891
|
+
};
|
892
|
+
/**
|
893
|
+
* @param {?} date
|
894
|
+
* @param {?=} unit
|
895
|
+
* @return {?}
|
896
|
+
*/
|
897
|
+
Khronos.prototype.isSame = /**
|
898
|
+
* @param {?} date
|
899
|
+
* @param {?=} unit
|
900
|
+
* @return {?}
|
901
|
+
*/
|
902
|
+
function (date, unit) {
|
903
|
+
var /** @type {?} */ _unit = unit ? mapUnitOfTime(unit) : void 0;
|
904
|
+
return isSame(this._date, date.toDate(), _unit);
|
905
|
+
};
|
906
|
+
/**
|
907
|
+
* @param {?} date
|
908
|
+
* @param {?=} unit
|
909
|
+
* @return {?}
|
910
|
+
*/
|
911
|
+
Khronos.prototype.isSameOrAfter = /**
|
912
|
+
* @param {?} date
|
913
|
+
* @param {?=} unit
|
914
|
+
* @return {?}
|
915
|
+
*/
|
916
|
+
function (date, unit) {
|
917
|
+
var /** @type {?} */ _unit = unit ? mapUnitOfTime(unit) : void 0;
|
918
|
+
return isSameOrAfter(this._date, date.toDate(), _unit);
|
919
|
+
};
|
920
|
+
/**
|
921
|
+
* @param {?} date
|
922
|
+
* @param {?=} unit
|
923
|
+
* @return {?}
|
924
|
+
*/
|
925
|
+
Khronos.prototype.isSameOrBefore = /**
|
926
|
+
* @param {?} date
|
927
|
+
* @param {?=} unit
|
928
|
+
* @return {?}
|
929
|
+
*/
|
930
|
+
function (date, unit) {
|
931
|
+
var /** @type {?} */ _unit = unit ? mapUnitOfTime(unit) : void 0;
|
932
|
+
return isSameOrBefore(this._date, date.toDate(), _unit);
|
933
|
+
};
|
934
|
+
/**
|
935
|
+
* @return {?}
|
936
|
+
*/
|
937
|
+
Khronos.prototype.isValid = /**
|
938
|
+
* @return {?}
|
939
|
+
*/
|
940
|
+
function () {
|
941
|
+
return isDateValid(this._date);
|
942
|
+
};
|
943
|
+
/**
|
944
|
+
* @return {?}
|
945
|
+
*/
|
946
|
+
Khronos.prototype.valueOf = /**
|
947
|
+
* @return {?}
|
948
|
+
*/
|
949
|
+
function () {
|
950
|
+
return this._date.valueOf() - ((this._offset || 0) * 60000);
|
951
|
+
};
|
952
|
+
/**
|
953
|
+
* @return {?}
|
954
|
+
*/
|
955
|
+
Khronos.prototype.unix = /**
|
956
|
+
* @return {?}
|
957
|
+
*/
|
958
|
+
function () {
|
959
|
+
// return getUnixTime(this._date);
|
960
|
+
return Math.floor(this.valueOf() / 1000);
|
961
|
+
};
|
962
|
+
/**
|
963
|
+
* @param {?=} b
|
964
|
+
* @param {?=} keepLocalTime
|
965
|
+
* @return {?}
|
966
|
+
*/
|
967
|
+
Khronos.prototype.utcOffset = /**
|
968
|
+
* @param {?=} b
|
969
|
+
* @param {?=} keepLocalTime
|
970
|
+
* @return {?}
|
971
|
+
*/
|
972
|
+
function (b, keepLocalTime) {
|
973
|
+
var /** @type {?} */ _config = this._toConfig();
|
974
|
+
if (!b && b !== 0) {
|
975
|
+
return getUTCOffset(this._date, _config);
|
976
|
+
}
|
977
|
+
this._date = setUTCOffset(this._date, b, keepLocalTime, false, _config);
|
978
|
+
this._offset = _config._offset;
|
979
|
+
this._isUTC = _config._isUTC;
|
980
|
+
return this;
|
981
|
+
};
|
982
|
+
/**
|
983
|
+
* @param {?=} keepLocalTime
|
984
|
+
* @return {?}
|
985
|
+
*/
|
986
|
+
Khronos.prototype.utc = /**
|
987
|
+
* @param {?=} keepLocalTime
|
988
|
+
* @return {?}
|
989
|
+
*/
|
990
|
+
function (keepLocalTime) {
|
991
|
+
return this.utcOffset(0, keepLocalTime);
|
992
|
+
};
|
993
|
+
/**
|
994
|
+
* @param {?=} keepLocalTime
|
995
|
+
* @return {?}
|
996
|
+
*/
|
997
|
+
Khronos.prototype.local = /**
|
998
|
+
* @param {?=} keepLocalTime
|
999
|
+
* @return {?}
|
1000
|
+
*/
|
1001
|
+
function (keepLocalTime) {
|
1002
|
+
if (this._isUTC) {
|
1003
|
+
this.utcOffset(0, keepLocalTime);
|
1004
|
+
this._isUTC = false;
|
1005
|
+
if (keepLocalTime) {
|
1006
|
+
this.subtract(getDateOffset(this._date), 'm');
|
1007
|
+
}
|
1008
|
+
}
|
1009
|
+
return this;
|
1010
|
+
};
|
1011
|
+
/**
|
1012
|
+
* @param {?=} input
|
1013
|
+
* @return {?}
|
1014
|
+
*/
|
1015
|
+
Khronos.prototype.parseZone = /**
|
1016
|
+
* @param {?=} input
|
1017
|
+
* @return {?}
|
1018
|
+
*/
|
1019
|
+
function (input) {
|
1020
|
+
var /** @type {?} */ _config = this._toConfig();
|
1021
|
+
this._date = setOffsetToParsedOffset(this._date, input, _config);
|
1022
|
+
this._offset = _config._offset;
|
1023
|
+
this._isUTC = _config._isUTC;
|
1024
|
+
return this;
|
1025
|
+
};
|
1026
|
+
/**
|
1027
|
+
* @param {?=} input
|
1028
|
+
* @return {?}
|
1029
|
+
*/
|
1030
|
+
Khronos.prototype.hasAlignedHourOffset = /**
|
1031
|
+
* @param {?=} input
|
1032
|
+
* @return {?}
|
1033
|
+
*/
|
1034
|
+
function (input) {
|
1035
|
+
return hasAlignedHourOffset(this._date, input ? input._date : void 0);
|
1036
|
+
};
|
1037
|
+
/**
|
1038
|
+
* @return {?}
|
1039
|
+
*/
|
1040
|
+
Khronos.prototype.isDST = /**
|
1041
|
+
* @return {?}
|
1042
|
+
*/
|
1043
|
+
function () {
|
1044
|
+
return isDaylightSavingTime(this._date);
|
1045
|
+
};
|
1046
|
+
/**
|
1047
|
+
* @return {?}
|
1048
|
+
*/
|
1049
|
+
Khronos.prototype.isLocal = /**
|
1050
|
+
* @return {?}
|
1051
|
+
*/
|
1052
|
+
function () {
|
1053
|
+
return !this._isUTC;
|
1054
|
+
};
|
1055
|
+
/**
|
1056
|
+
* @return {?}
|
1057
|
+
*/
|
1058
|
+
Khronos.prototype.isUtcOffset = /**
|
1059
|
+
* @return {?}
|
1060
|
+
*/
|
1061
|
+
function () {
|
1062
|
+
return this._isUTC;
|
1063
|
+
};
|
1064
|
+
/**
|
1065
|
+
* @return {?}
|
1066
|
+
*/
|
1067
|
+
Khronos.prototype.isUTC = /**
|
1068
|
+
* @return {?}
|
1069
|
+
*/
|
1070
|
+
function () {
|
1071
|
+
return this.isUtc();
|
1072
|
+
};
|
1073
|
+
/**
|
1074
|
+
* @return {?}
|
1075
|
+
*/
|
1076
|
+
Khronos.prototype.isUtc = /**
|
1077
|
+
* @return {?}
|
1078
|
+
*/
|
1079
|
+
function () {
|
1080
|
+
return this._isUTC && this._offset === 0;
|
1081
|
+
};
|
1082
|
+
// Timezone
|
1083
|
+
/**
|
1084
|
+
* @return {?}
|
1085
|
+
*/
|
1086
|
+
Khronos.prototype.zoneAbbr = /**
|
1087
|
+
* @return {?}
|
1088
|
+
*/
|
1089
|
+
function () {
|
1090
|
+
return getZoneAbbr(this._isUTC);
|
1091
|
+
};
|
1092
|
+
/**
|
1093
|
+
* @return {?}
|
1094
|
+
*/
|
1095
|
+
Khronos.prototype.zoneName = /**
|
1096
|
+
* @return {?}
|
1097
|
+
*/
|
1098
|
+
function () {
|
1099
|
+
return getZoneName(this._isUTC);
|
1100
|
+
};
|
1101
|
+
/**
|
1102
|
+
* @param {?=} year
|
1103
|
+
* @return {?}
|
1104
|
+
*/
|
1105
|
+
Khronos.prototype.year = /**
|
1106
|
+
* @param {?=} year
|
1107
|
+
* @return {?}
|
1108
|
+
*/
|
1109
|
+
function (year) {
|
1110
|
+
if (!year && year !== 0) {
|
1111
|
+
return getFullYear(this._date, this._isUTC);
|
1112
|
+
}
|
1113
|
+
this._date = cloneDate(setFullYear(this._date, year));
|
1114
|
+
return this;
|
1115
|
+
};
|
1116
|
+
/**
|
1117
|
+
* @param {?=} val
|
1118
|
+
* @return {?}
|
1119
|
+
*/
|
1120
|
+
Khronos.prototype.weekYear = /**
|
1121
|
+
* @param {?=} val
|
1122
|
+
* @return {?}
|
1123
|
+
*/
|
1124
|
+
function (val) {
|
1125
|
+
if (!val && val !== 0) {
|
1126
|
+
return getWeekYear(this._date, this._locale, this.isUTC());
|
1127
|
+
}
|
1128
|
+
var /** @type {?} */ date = getSetWeekYear(this._date, val, this._locale, this.isUTC());
|
1129
|
+
if (isDate(date)) {
|
1130
|
+
this._date = date;
|
1131
|
+
}
|
1132
|
+
return this;
|
1133
|
+
};
|
1134
|
+
/**
|
1135
|
+
* @param {?=} val
|
1136
|
+
* @return {?}
|
1137
|
+
*/
|
1138
|
+
Khronos.prototype.isoWeekYear = /**
|
1139
|
+
* @param {?=} val
|
1140
|
+
* @return {?}
|
1141
|
+
*/
|
1142
|
+
function (val) {
|
1143
|
+
if (!val && val !== 0) {
|
1144
|
+
return getISOWeekYear(this._date, this.isUTC());
|
1145
|
+
}
|
1146
|
+
var /** @type {?} */ date = getSetISOWeekYear(this._date, val, this.isUtc());
|
1147
|
+
if (isDate(date)) {
|
1148
|
+
this._date = date;
|
1149
|
+
}
|
1150
|
+
return this;
|
1151
|
+
};
|
1152
|
+
/**
|
1153
|
+
* @return {?}
|
1154
|
+
*/
|
1155
|
+
Khronos.prototype.isLeapYear = /**
|
1156
|
+
* @return {?}
|
1157
|
+
*/
|
1158
|
+
function () {
|
1159
|
+
return isLeapYear(getFullYear(this.toDate(), this.isUTC()));
|
1160
|
+
};
|
1161
|
+
/**
|
1162
|
+
* @param {?=} month
|
1163
|
+
* @return {?}
|
1164
|
+
*/
|
1165
|
+
Khronos.prototype.month = /**
|
1166
|
+
* @param {?=} month
|
1167
|
+
* @return {?}
|
1168
|
+
*/
|
1169
|
+
function (month) {
|
1170
|
+
if (!month && month !== 0) {
|
1171
|
+
return getMonth(this._date, this._isUTC);
|
1172
|
+
}
|
1173
|
+
var /** @type {?} */ _month = month;
|
1174
|
+
if (isString(month)) {
|
1175
|
+
var /** @type {?} */ locale = this._locale || getLocale();
|
1176
|
+
_month = locale.monthsParse(month);
|
1177
|
+
}
|
1178
|
+
if (isNumber(_month)) {
|
1179
|
+
this._date = cloneDate(setMonth(this._date, _month, this._isUTC));
|
1180
|
+
}
|
1181
|
+
return this;
|
1182
|
+
};
|
1183
|
+
/**
|
1184
|
+
* @param {?=} hours
|
1185
|
+
* @return {?}
|
1186
|
+
*/
|
1187
|
+
Khronos.prototype.hour = /**
|
1188
|
+
* @param {?=} hours
|
1189
|
+
* @return {?}
|
1190
|
+
*/
|
1191
|
+
function (hours) {
|
1192
|
+
return this.hours(hours);
|
1193
|
+
};
|
1194
|
+
/**
|
1195
|
+
* @param {?=} hours
|
1196
|
+
* @return {?}
|
1197
|
+
*/
|
1198
|
+
Khronos.prototype.hours = /**
|
1199
|
+
* @param {?=} hours
|
1200
|
+
* @return {?}
|
1201
|
+
*/
|
1202
|
+
function (hours) {
|
1203
|
+
if (!hours && hours !== 0) {
|
1204
|
+
return getHours(this._date, this._isUTC);
|
1205
|
+
}
|
1206
|
+
this._date = cloneDate(setHours(this._date, hours, this._isUTC));
|
1207
|
+
return this;
|
1208
|
+
};
|
1209
|
+
/**
|
1210
|
+
* @param {?=} minutes
|
1211
|
+
* @return {?}
|
1212
|
+
*/
|
1213
|
+
Khronos.prototype.minute = /**
|
1214
|
+
* @param {?=} minutes
|
1215
|
+
* @return {?}
|
1216
|
+
*/
|
1217
|
+
function (minutes) {
|
1218
|
+
return this.minutes(minutes);
|
1219
|
+
};
|
1220
|
+
/**
|
1221
|
+
* @param {?=} minutes
|
1222
|
+
* @return {?}
|
1223
|
+
*/
|
1224
|
+
Khronos.prototype.minutes = /**
|
1225
|
+
* @param {?=} minutes
|
1226
|
+
* @return {?}
|
1227
|
+
*/
|
1228
|
+
function (minutes) {
|
1229
|
+
if (!minutes && minutes !== 0) {
|
1230
|
+
return getMinutes(this._date, this._isUTC);
|
1231
|
+
}
|
1232
|
+
this._date = cloneDate(setMinutes(this._date, minutes, this._isUTC));
|
1233
|
+
return this;
|
1234
|
+
};
|
1235
|
+
/**
|
1236
|
+
* @param {?=} seconds
|
1237
|
+
* @return {?}
|
1238
|
+
*/
|
1239
|
+
Khronos.prototype.second = /**
|
1240
|
+
* @param {?=} seconds
|
1241
|
+
* @return {?}
|
1242
|
+
*/
|
1243
|
+
function (seconds) {
|
1244
|
+
return this.seconds(seconds);
|
1245
|
+
};
|
1246
|
+
/**
|
1247
|
+
* @param {?=} seconds
|
1248
|
+
* @return {?}
|
1249
|
+
*/
|
1250
|
+
Khronos.prototype.seconds = /**
|
1251
|
+
* @param {?=} seconds
|
1252
|
+
* @return {?}
|
1253
|
+
*/
|
1254
|
+
function (seconds) {
|
1255
|
+
if (!seconds && seconds !== 0) {
|
1256
|
+
return getSeconds(this._date, this._isUTC);
|
1257
|
+
}
|
1258
|
+
this._date = cloneDate(setSeconds(this._date, seconds, this._isUTC));
|
1259
|
+
return this;
|
1260
|
+
};
|
1261
|
+
/**
|
1262
|
+
* @param {?=} ms
|
1263
|
+
* @return {?}
|
1264
|
+
*/
|
1265
|
+
Khronos.prototype.millisecond = /**
|
1266
|
+
* @param {?=} ms
|
1267
|
+
* @return {?}
|
1268
|
+
*/
|
1269
|
+
function (ms) {
|
1270
|
+
return this.milliseconds(ms);
|
1271
|
+
};
|
1272
|
+
/**
|
1273
|
+
* @param {?=} seconds
|
1274
|
+
* @return {?}
|
1275
|
+
*/
|
1276
|
+
Khronos.prototype.milliseconds = /**
|
1277
|
+
* @param {?=} seconds
|
1278
|
+
* @return {?}
|
1279
|
+
*/
|
1280
|
+
function (seconds) {
|
1281
|
+
if (!seconds && seconds !== 0) {
|
1282
|
+
return getMilliseconds(this._date, this._isUTC);
|
1283
|
+
}
|
1284
|
+
this._date = cloneDate(setMilliseconds(this._date, seconds, this._isUTC));
|
1285
|
+
return this;
|
1286
|
+
};
|
1287
|
+
/**
|
1288
|
+
* @param {?=} date
|
1289
|
+
* @return {?}
|
1290
|
+
*/
|
1291
|
+
Khronos.prototype.date = /**
|
1292
|
+
* @param {?=} date
|
1293
|
+
* @return {?}
|
1294
|
+
*/
|
1295
|
+
function (date) {
|
1296
|
+
if (!date && date !== 0) {
|
1297
|
+
return getDate(this._date, this._isUTC);
|
1298
|
+
}
|
1299
|
+
this._date = cloneDate(setDate(this._date, date, this._isUTC));
|
1300
|
+
return this;
|
1301
|
+
};
|
1302
|
+
/**
|
1303
|
+
* @param {?=} input
|
1304
|
+
* @return {?}
|
1305
|
+
*/
|
1306
|
+
Khronos.prototype.day = /**
|
1307
|
+
* @param {?=} input
|
1308
|
+
* @return {?}
|
1309
|
+
*/
|
1310
|
+
function (input) {
|
1311
|
+
if (!input && input !== 0) {
|
1312
|
+
return getDayOfWeek(this._date, this._isUTC);
|
1313
|
+
}
|
1314
|
+
var /** @type {?} */ _input = input;
|
1315
|
+
if (isString(input)) {
|
1316
|
+
_input = parseWeekday(input, this._locale);
|
1317
|
+
}
|
1318
|
+
if (isNumber(_input)) {
|
1319
|
+
this._date = setDayOfWeek(this._date, _input, this._locale, this._isUTC);
|
1320
|
+
}
|
1321
|
+
return this;
|
1322
|
+
};
|
1323
|
+
/**
|
1324
|
+
* @param {?=} val
|
1325
|
+
* @return {?}
|
1326
|
+
*/
|
1327
|
+
Khronos.prototype.weekday = /**
|
1328
|
+
* @param {?=} val
|
1329
|
+
* @return {?}
|
1330
|
+
*/
|
1331
|
+
function (val) {
|
1332
|
+
if (!val && val !== 0) {
|
1333
|
+
return getLocaleDayOfWeek(this._date, this._locale, this._isUTC);
|
1334
|
+
}
|
1335
|
+
this._date = setLocaleDayOfWeek(this._date, val, { locale: this._locale, isUTC: this._isUTC });
|
1336
|
+
return this;
|
1337
|
+
};
|
1338
|
+
/**
|
1339
|
+
* @param {?=} val
|
1340
|
+
* @return {?}
|
1341
|
+
*/
|
1342
|
+
Khronos.prototype.isoWeekday = /**
|
1343
|
+
* @param {?=} val
|
1344
|
+
* @return {?}
|
1345
|
+
*/
|
1346
|
+
function (val) {
|
1347
|
+
if (!val && val !== 0) {
|
1348
|
+
return getISODayOfWeek(this._date);
|
1349
|
+
}
|
1350
|
+
this._date = setISODayOfWeek(this._date, val);
|
1351
|
+
return this;
|
1352
|
+
};
|
1353
|
+
/**
|
1354
|
+
* @param {?=} val
|
1355
|
+
* @return {?}
|
1356
|
+
*/
|
1357
|
+
Khronos.prototype.dayOfYear = /**
|
1358
|
+
* @param {?=} val
|
1359
|
+
* @return {?}
|
1360
|
+
*/
|
1361
|
+
function (val) {
|
1362
|
+
if (!val && val !== 0) {
|
1363
|
+
return getDayOfYear(this._date);
|
1364
|
+
}
|
1365
|
+
this._date = setDayOfYear(this._date, val);
|
1366
|
+
return this;
|
1367
|
+
};
|
1368
|
+
/**
|
1369
|
+
* @param {?=} input
|
1370
|
+
* @return {?}
|
1371
|
+
*/
|
1372
|
+
Khronos.prototype.week = /**
|
1373
|
+
* @param {?=} input
|
1374
|
+
* @return {?}
|
1375
|
+
*/
|
1376
|
+
function (input) {
|
1377
|
+
if (!input && input !== 0) {
|
1378
|
+
return getWeek(this._date, this._locale);
|
1379
|
+
}
|
1380
|
+
this._date = setWeek(this._date, input, this._locale);
|
1381
|
+
return this;
|
1382
|
+
};
|
1383
|
+
/**
|
1384
|
+
* @param {?=} input
|
1385
|
+
* @return {?}
|
1386
|
+
*/
|
1387
|
+
Khronos.prototype.weeks = /**
|
1388
|
+
* @param {?=} input
|
1389
|
+
* @return {?}
|
1390
|
+
*/
|
1391
|
+
function (input) {
|
1392
|
+
return this.week(input);
|
1393
|
+
};
|
1394
|
+
/**
|
1395
|
+
* @param {?=} val
|
1396
|
+
* @return {?}
|
1397
|
+
*/
|
1398
|
+
Khronos.prototype.isoWeek = /**
|
1399
|
+
* @param {?=} val
|
1400
|
+
* @return {?}
|
1401
|
+
*/
|
1402
|
+
function (val) {
|
1403
|
+
if (!val && val !== 0) {
|
1404
|
+
return getISOWeek(this._date);
|
1405
|
+
}
|
1406
|
+
this._date = setISOWeek(this._date, val);
|
1407
|
+
return this;
|
1408
|
+
};
|
1409
|
+
/**
|
1410
|
+
* @param {?=} val
|
1411
|
+
* @return {?}
|
1412
|
+
*/
|
1413
|
+
Khronos.prototype.isoWeeks = /**
|
1414
|
+
* @param {?=} val
|
1415
|
+
* @return {?}
|
1416
|
+
*/
|
1417
|
+
function (val) {
|
1418
|
+
return this.isoWeek(val);
|
1419
|
+
};
|
1420
|
+
/**
|
1421
|
+
* @return {?}
|
1422
|
+
*/
|
1423
|
+
Khronos.prototype.weeksInYear = /**
|
1424
|
+
* @return {?}
|
1425
|
+
*/
|
1426
|
+
function () {
|
1427
|
+
return getWeeksInYear(this._date, this._isUTC, this._locale);
|
1428
|
+
};
|
1429
|
+
/**
|
1430
|
+
* @return {?}
|
1431
|
+
*/
|
1432
|
+
Khronos.prototype.isoWeeksInYear = /**
|
1433
|
+
* @return {?}
|
1434
|
+
*/
|
1435
|
+
function () {
|
1436
|
+
return getISOWeeksInYear(this._date, this._isUTC);
|
1437
|
+
};
|
1438
|
+
/**
|
1439
|
+
* @return {?}
|
1440
|
+
*/
|
1441
|
+
Khronos.prototype.daysInMonth = /**
|
1442
|
+
* @return {?}
|
1443
|
+
*/
|
1444
|
+
function () {
|
1445
|
+
return daysInMonth(getFullYear(this._date, this._isUTC), getMonth(this._date, this._isUTC));
|
1446
|
+
};
|
1447
|
+
/**
|
1448
|
+
* @param {?=} val
|
1449
|
+
* @return {?}
|
1450
|
+
*/
|
1451
|
+
Khronos.prototype.quarter = /**
|
1452
|
+
* @param {?=} val
|
1453
|
+
* @return {?}
|
1454
|
+
*/
|
1455
|
+
function (val) {
|
1456
|
+
if (!val && val !== 0) {
|
1457
|
+
return getQuarter(this._date, this._isUTC);
|
1458
|
+
}
|
1459
|
+
this._date = setQuarter(this._date, val, this._isUTC);
|
1460
|
+
return this;
|
1461
|
+
};
|
1462
|
+
/**
|
1463
|
+
* @param {?=} val
|
1464
|
+
* @return {?}
|
1465
|
+
*/
|
1466
|
+
Khronos.prototype.quarters = /**
|
1467
|
+
* @param {?=} val
|
1468
|
+
* @return {?}
|
1469
|
+
*/
|
1470
|
+
function (val) {
|
1471
|
+
return this.quarter(val);
|
1472
|
+
};
|
1473
|
+
/**
|
1474
|
+
* @param {?=} period
|
1475
|
+
* @return {?}
|
1476
|
+
*/
|
1477
|
+
Khronos.prototype.startOf = /**
|
1478
|
+
* @param {?=} period
|
1479
|
+
* @return {?}
|
1480
|
+
*/
|
1481
|
+
function (period) {
|
1482
|
+
var /** @type {?} */ _per = mapUnitOfTime(period);
|
1483
|
+
this._date = startOf(this._date, _per, this._isUTC);
|
1484
|
+
return this;
|
1485
|
+
};
|
1486
|
+
return Khronos;
|
1487
|
+
}());
|
1488
|
+
export { Khronos };
|
1489
|
+
function Khronos_tsickle_Closure_declarations() {
|
1490
|
+
/** @type {?} */
|
1491
|
+
Khronos.prototype._date;
|
1492
|
+
/** @type {?} */
|
1493
|
+
Khronos.prototype._isUTC;
|
1494
|
+
/** @type {?} */
|
1495
|
+
Khronos.prototype._isStrict;
|
1496
|
+
/** @type {?} */
|
1497
|
+
Khronos.prototype._locale;
|
1498
|
+
/** @type {?} */
|
1499
|
+
Khronos.prototype._format;
|
1500
|
+
/** @type {?} */
|
1501
|
+
Khronos.prototype._offset;
|
1502
|
+
/** @type {?} */
|
1503
|
+
Khronos.prototype._tzm;
|
1504
|
+
}
|
1505
|
+
|
1506
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhaW4uanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtYm9vdHN0cmFwL2Nocm9ub3MvIiwic291cmNlcyI6WyJ0ZXN0L2NoYWluLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQ0EsT0FBTyxFQUFFLEdBQUcsRUFBYSxRQUFRLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFcEQsT0FBTyxFQUNMLE9BQU8sRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFFbEYsTUFBTSx1QkFBdUIsQ0FBQztBQUMvQixPQUFPLEVBQ0wsT0FBTyxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsZUFBZSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQ3JFLFVBQVUsRUFDWCxNQUFNLHVCQUF1QixDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1QyxPQUFPLEVBQ0wsT0FBTyxFQUNQLFNBQVMsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFDeEUsV0FBVyxFQUNaLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN2QyxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRXRFLE9BQU8sRUFDTCxhQUFhLEVBQ2IsWUFBWSxFQUFFLG9CQUFvQixFQUFFLG9CQUFvQixFQUFFLHVCQUF1QixFQUNqRixZQUFZLEVBQ2IsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBQUUsVUFBVSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzVH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Ozs7SUFLRCx5QkFBTzs7OztJQUFQLFVBQVEsR0FBWTtRQUNsQixFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN0QixNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQzVDO1FBRUQsSUFBSSxDQUFDLEtBQUssR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRXRELE1BQU0sQ0FBQyxJQUFJLENBQUM7S0FDYjs7Ozs7SUFLRCwwQkFBUTs7OztJQUFSLFVBQVMsR0FBWTtRQUNuQixNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztLQUMxQjs7Ozs7SUFFRCx5QkFBTzs7OztJQUFQLFVBQVEsTUFBeUI7UUFDL0IscUJBQU0sSUFBSSxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNuQyxJQUFJLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFcEQsTUFBTSxDQUFDLElBQUksQ0FBQztLQUNiO2tCQXRxQ0g7SUF3cUNDLENBQUE7QUEzd0JELG1CQTJ3QkMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyB0c2xpbnQ6ZGlzYWJsZTptYXgtbGluZS1sZW5ndGggbWF4LWZpbGUtbGluZS1jb3VudFxuaW1wb3J0IHsgYWRkLCBwYXJzZURhdGUsIHN1YnRyYWN0IH0gZnJvbSAnLi4vaW5kZXgnO1xuaW1wb3J0IHsgRGF0ZUFycmF5LCBEYXRlT2JqZWN0LCBVbml0T2ZUaW1lIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHtcbiAgZ2V0RGF0ZSwgZ2V0RnVsbFllYXIsIGdldEhvdXJzLCBnZXRNaWxsaXNlY29uZHMsIGdldE1pbnV0ZXMsIGdldE1vbnRoLCBnZXRTZWNvbmRzLFxuICBnZXRVbml4VGltZVxufSBmcm9tICcuLi91dGlscy9kYXRlLWdldHRlcnMnO1xuaW1wb3J0IHtcbiAgc2V0RGF0ZSwgc2V0RnVsbFllYXIsIHNldEhvdXJzLCBzZXRNaWxsaXNlY29uZHMsIHNldE1pbnV0ZXMsIHNldE1vbnRoLFxuICBzZXRTZWNvbmRzXG59IGZyb20gJy4uL3V0aWxzL2RhdGUtc2V0dGVycyc7XG5pbXBvcnQgeyBjbG9uZURhdGUgfSBmcm9tICcuLi9jcmVhdGUvY2xvbmUnO1xuaW1wb3J0IHtcbiAgaXNBcnJheSxcbiAgaXNCb29sZWFuLCBpc0RhdGUsIGlzRGF0ZVZhbGlkLCBpc0Z1bmN0aW9uLCBpc051bWJlciwgaXNPYmplY3QsIGlzU3RyaW5nLFxuICBpc1VuZGVmaW5lZFxufSBmcm9tICcuLi91dGlscy90eXBlLWNoZWNrcyc7XG5pbXBvcnQgeyBmb3JtYXREYXRlIH0gZnJvbSAnLi4vZm9ybWF0JztcbmltcG9ydCB7IElTT184NjAxLCBSRkNfMjgyMiB9IGZyb20gJy4uL2NyZWF0ZS9mcm9tLXN0cmluZy1hbmQtZm9ybWF0JztcbmltcG9ydCB7IExvY2FsZSwgTG9jYWxlRGF0YSB9IGZyb20gJy4uL2xvY2FsZS9sb2NhbGUuY2xhc3MnO1xuaW1wb3J0IHtcbiAgZ2V0RGF0ZU9mZnNldCxcbiAgZ2V0VVRDT2Zmc2V0LCBoYXNBbGlnbmVkSG91ck9mZnNldCwgaXNEYXlsaWdodFNhdmluZ1RpbWUsIHNldE9mZnNldFRvUGFyc2VkT2Zmc2V0LFxuICBzZXRVVENPZmZzZXRcbn0gZnJvbSAnLi4vdW5pdHMvb2Zmc2V0JztcbmltcG9ydCB7IGlzTGVhcFllYXIsIHBhcnNlVHdvRGlnaXRZZWFyIH0gZnJvbSAnLi4vdW5pdHMveWVhcic7XG5pbXBvcnQgeyBpc0FmdGVyLCBpc0JlZm9yZSwgaXNCZXR3ZWVuLCBpc1NhbWUsIGlzU2FtZU9yQWZ0ZXIsIGlzU2FtZU9yQmVmb3JlIH0gZnJvbSAnLi4vdXRpbHMvZGF0ZS1jb21wYXJlJztcbmltcG9ydCB7IGRheXNJbk1vbnRoIH0gZnJvbSAnLi4vdW5pdHMvbW9udGgnO1xuaW1wb3J0IHtcbiAgZ2V0RGF5T2ZXZWVrLCBnZXRJU09EYXlPZldlZWssIGdldExvY2FsZURheU9mV2VlaywgcGFyc2VXZWVrZGF5LCBzZXREYXlPZldlZWssIHNldElTT0RheU9mV2VlayxcbiAgc2V0TG9jYWxlRGF5T2ZXZWVrXG59IGZyb20gJy4uL3VuaXRzL2RheS1vZi13ZWVrJztcbmltcG9ydCB7IGdldElTT1dlZWssIGdldFdlZWssIHNldElTT1dlZWssIHNldFdlZWsgfSBmcm9tICcuLi91bml0cy93ZWVrJztcbmltcG9ydCB7XG4gIGdldElTT1dlZWtzSW5ZZWFyLCBnZXRJU09XZWVrWWVhciwgZ2V0U2V0SVNPV2Vla1llYXIsIGdldFNldFdlZWtZZWFyLCBnZXRXZWVrc0luWWVhcixcbiAgZ2V0V2Vla1llYXJcbn0gZnJvbSAnLi4vdW5pdHMvd2Vlay15ZWFyJztcbmltcG9ydCB7IGVuZE9mLCBzdGFydE9mIH0gZnJvbSAnLi4vdXRpbHMvc3RhcnQtZW5kLW9mJztcbmltcG9ydCB7IGdldFF1YXJ0ZXIsIHNldFF1YXJ0ZXIgfSBmcm9tICcuLi91bml0cy9xdWFydGVyJztcbmltcG9ydCB7IGdldERheU9mWWVhciwgc2V0RGF5T2ZZZWFyIH0gZnJvbSAnLi4vdW5pdHMvZGF5LW9mLXllYXInO1xuaW1wb3J0IHsgZ2V0Wm9uZUFiYnIsIGdldFpvbmVOYW1lIH0gZnJvbSAnLi4vdW5pdHMvdGltZXpvbmUnO1xuaW1wb3J0IHsgZGlmZiB9IGZyb20gJy4uL21vbWVudC9kaWZmJztcbmltcG9ydCB7IERhdGVQYXJzaW5nQ29uZmlnIH0gZnJvbSAnLi4vY3JlYXRlL3BhcnNpbmcudHlwZXMnO1xuaW1wb3J0IHsgY2FsZW5kYXIsIENhbGVuZGFyU3BlYyB9IGZyb20gJy4uL21vbWVudC9jYWxlbmRhcic7XG5pbXBvcnQgeyBkZWZpbmVMb2NhbGUsIGdldExvY2FsZSwgZ2V0U2V0R2xvYmFsTG9jYWxlLCBsaXN0TG9jYWxlcyB9IGZyb20gJy4uL2xvY2FsZS9sb2NhbGVzJztcbmltcG9ydCB7IG1heCwgbWluIH0gZnJvbSAnLi4vbW9tZW50L21pbi1tYXgnO1xuaW1wb3J0IHsgRHVyYXRpb24sIGlzRHVyYXRpb24gfSBmcm9tICcuLi9kdXJhdGlvbi9jb25zdHJ1Y3Rvcic7XG5pbXBvcnQgeyBjcmVhdGVMb2NhbE9yVVRDIH0gZnJvbSAnLi4vY3JlYXRlL2Zyb20tYW55dGhpbmcnO1xuaW1wb3J0IHsgY3JlYXRlRHVyYXRpb24gfSBmcm9tICcuLi9kdXJhdGlvbi9jcmVhdGUnO1xuXG5leHBvcnQgdHlwZSBEYXRlSW5wdXQgPSBzdHJpbmcgfCBudW1iZXIgfCBEYXRlIHwgc3RyaW5nW10gfCBEYXRlQXJyYXkgfCBNb21lbnRJbnB1dE9iamVjdDtcblxuZXhwb3J0IGNvbnN0IG1vbWVudDogTW9tZW50Rm4gPSAoX21vbWVudCBhcyBNb21lbnRGbik7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTW9tZW50Rm4ge1xuICAoaW5wdXQ/OiBEYXRlSW5wdXQgfCBLaHJvbm9zLCBmb3JtYXQ/OiBzdHJpbmcgfCBzdHJpbmdbXSwgbG9jYWxlS2V5Pzogc3RyaW5nIHwgYm9vbGVhbiwgc3RyaWN0PzogYm9vbGVhbiwgaXNVVEM/OiBib29sZWFuKTogS2hyb25vcztcblxuICBJU09fODYwMTogc3RyaW5nO1xuICBSRkNfMjgyMjogc3RyaW5nO1xuXG4gIHV0YyhpbnB1dD86IERhdGVJbnB1dCB8IEtocm9ub3MsIGZvcm1hdD86IHN0cmluZyB8IHN0cmluZ1tdLCBsb2NhbGVLZXk/OiBzdHJpbmcgfCBib29sZWFuLCBzdHJpY3Q/OiBib29sZWFuKTogS2hyb25vcztcblxuICBwYXJzZVpvbmUoaW5wdXQ/OiBEYXRlSW5wdXQgfCBLaHJvbm9zLCBmb3JtYXQ/OiBzdHJpbmcgfCBzdHJpbmdbXSwgbG9jYWxlS2V5Pzogc3RyaW5nIHwgYm9vbGVhbiwgc3RyaWN0PzogYm9vbGVhbik6IEtocm9ub3M7XG5cbiAgdW5peChudW06IG51bWJlcik6IEtocm9ub3M7XG5cbiAgbG9jYWxlKGtleT86IHN0cmluZyB8IHN0cmluZ1tdLCB2YWx1ZXM/OiBMb2NhbGVEYXRhKTogc3RyaW5nO1xuXG4gIGR1cmF0aW9uKGlucD86IER1cmF0aW9uIHwgRGF0ZUlucHV0IHwgS2hyb25vcywgdW5pdD86IE1vbWVudFVuaXRPZlRpbWUpOiBEdXJhdGlvbjtcblxuICBkZWZpbmVMb2NhbGUobmFtZTogc3RyaW5nLCBjb25maWc/OiBMb2NhbGVEYXRhKTogTG9jYWxlO1xuXG4gIHBhcnNlVHdvRGlnaXRZZWFyKGlucHV0OiBzdHJpbmcpOiBudW1iZXI7XG5cbiAgaXNEYXRlKGlucHV0PzogYW55KTogaW5wdXQgaXMgRGF0ZTtcblxuICBtb250aHMoKTogc3RyaW5nW107XG5cbiAgbW9udGhzKGluZGV4OiBudW1iZXIpOiBzdHJpbmc7XG5cbiAgbW9udGhzKGZvcm1hdDogc3RyaW5nKTogc3RyaW5nW107XG5cbiAgbW9udGhzKGZvcm1hdDogc3RyaW5nLCBpbmRleDogbnVtYmVyKTogc3RyaW5nO1xuXG4gIG1vbnRoc1Nob3J0KCk6IHN0cmluZ1tdO1xuXG4gIG1vbnRoc1Nob3J0KGluZGV4OiBudW1iZXIpOiBzdHJpbmc7XG5cbiAgbW9udGhzU2hvcnQoZm9ybWF0OiBzdHJpbmcpOiBzdHJpbmdbXTtcblxuICBtb250aHNTaG9ydChmb3JtYXQ6IHN0cmluZywgaW5kZXg6IG51bWJlcik6IHN0cmluZztcblxuICB3ZWVrZGF5cygpOiBzdHJpbmdbXTtcblxuICB3ZWVrZGF5cyhpbmRleDogbnVtYmVyKTogc3RyaW5nO1xuXG4gIHdlZWtkYXlzKGZvcm1hdDogc3RyaW5nKTogc3RyaW5nW107XG5cbiAgd2Vla2RheXMoZm9ybWF0OiBzdHJpbmcsIGluZGV4OiBudW1iZXIpOiBzdHJpbmc7XG5cbiAgd2Vla2RheXMobG9jYWxlU29ydGVkOiBib29sZWFuKTogc3RyaW5nW107XG5cbiAgd2Vla2RheXMobG9jYWxlU29ydGVkOiBib29sZWFuLCBpbmRleDogbnVtYmVyKTogc3RyaW5nO1xuXG4gIHdlZWtkYXlzKGxvY2FsZVNvcnRlZDogYm9vbGVhbiwgZm9ybWF0OiBzdHJpbmcpOiBzdHJpbmdbXTtcblxuICB3ZWVrZGF5cyhsb2NhbGVTb3J0ZWQ6IGJvb2xlYW4sIGZvcm1hdDogc3RyaW5nLCBpbmRleDogbnVtYmVyKTogc3RyaW5nO1xuXG4gIHdlZWtkYXlzU2hvcnQoKTogc3RyaW5nW107XG5cbiAgd2Vla2RheXNTaG9ydChpbmRleDogbnVtYmVyKTogc3RyaW5nO1xuXG4gIHdlZWtkYXlzU2hvcnQoZm9ybWF0OiBzdHJpbmcpOiBzdHJpbmdbXTtcblxuICB3ZWVrZGF5c1Nob3J0KGZvcm1hdDogc3RyaW5nLCBpbmRleDogbnVtYmVyKTogc3RyaW5nO1xuXG4gIHdlZWtkYXlzU2hvcnQobG9jYWxlU29ydGVkOiBib29sZWFuKTogc3RyaW5nW107XG5cbiAgd2Vla2RheXNTaG9ydChsb2NhbGVTb3J0ZWQ6IGJvb2xlYW4sIGluZGV4OiBudW1iZXIpOiBzdHJpbmc7XG5cbiAgd2Vla2RheXNTaG9ydChsb2NhbGVTb3J0ZWQ6IGJvb2xlYW4sIGZvcm1hdDogc3RyaW5nKTogc3RyaW5nW107XG5cbiAgd2Vla2RheXNTaG9ydChsb2NhbGVTb3J0ZWQ6IGJvb2xlYW4sIGZvcm1hdDogc3RyaW5nLCBpbmRleDogbnVtYmVyKTogc3RyaW5nO1xuXG4gIHdlZWtkYXlzTWluKCk6IHN0cmluZ1tdO1xuXG4gIHdlZWtkYXlzTWluKGluZGV4OiBudW1iZXIpOiBzdHJpbmc7XG5cbiAgd2Vla2RheXNNaW4oZm9ybWF0OiBzdHJpbmcpOiBzdHJpbmdbXTtcblxuICB3ZWVrZGF5c01pbihmb3JtYXQ6IHN0cmluZywgaW5kZXg6IG51bWJlcik6IHN0cmluZztcblxuICB3ZWVrZGF5c01pbihsb2NhbGVTb3J0ZWQ6IGJvb2xlYW4pOiBzdHJpbmdbXTtcblxuICB3ZWVrZGF5c01pbihsb2NhbGVTb3J0ZWQ6IGJvb2xlYW4sIGluZGV4OiBudW1iZXIpOiBzdHJpbmc7XG5cbiAgd2Vla2RheXNNaW4obG9jYWxlU29ydGVkOiBib29sZWFuLCBmb3JtYXQ6IHN0cmluZyk6IHN0cmluZ1tdO1xuXG4gIHdlZWtkYXlzTWluKGxvY2FsZVNvcnRlZDogYm9vbGVhbiwgZm9ybWF0OiBzdHJpbmcsIGluZGV4OiBudW1iZXIpOiBzdHJpbmc7XG5cbiAgcmVsYXRpdmVUaW1lVGhyZXNob2xkKHRocmVzaG9sZDogc3RyaW5nKTogbnVtYmVyIHwgYm9vbGVhbjtcblxuICByZWxhdGl2ZVRpbWVUaHJlc2hvbGQodGhyZXNob2xkOiBzdHJpbmcsIGxpbWl0OiBudW1iZXIpOiBib29sZWFuO1xuXG4gIG1pbiguLi5kYXRlczogKChEYXRlSW5wdXQgfCBLaHJvbm9zKVtdIHwgKERhdGVJbnB1dCB8IEtocm9ub3MpKVtdKTogS2hyb25vcztcblxuICBtYXgoLi4uZGF0ZXM6ICgoRGF0ZUlucHV0IHwgS2hyb25vcylbXSB8IChEYXRlSW5wdXQgfCBLaHJvbm9zKSlbXSk6IEtocm9ub3M7XG5cbiAgbG9jYWxlRGF0YShrZXk/OiBzdHJpbmcgfCBzdHJpbmdbXSB8IEtocm9ub3MpOiBMb2NhbGU7XG5cbiAgdXBkYXRlTG9jYWxlKGxhbmd1YWdlOiBzdHJpbmcsIGxvY2FsZVNwZWM/OiBMb2NhbGVEYXRhKTogTG9jYWxlO1xuXG4gIGNhbGVuZGFyRm9ybWF0KG06IERhdGUsIG5vdzogRGF0ZSk6IHN0cmluZztcblxuICAvLyB0b2RvOiByZW1vdmUgdGhpc1xuICBjYWxlbmRhckZvcm1hdChtOiBLaHJvbm9zLCBub3c6IEtocm9ub3MpOiBzdHJpbmc7XG5cbiAgLy8gdG9kbzogaW1wbGVtZW50XG4gIGludmFsaWQoKTogS2hyb25vcztcblxuICBsb2NhbGVzKCk6IHN0cmluZ1tdO1xuXG4gIC8vIHRvZG86IGltcGxlbWVudFxuICB1cGRhdGVPZmZzZXQobTogS2hyb25vcywga2VlcFRpbWU/OiBib29sZWFuKTogdm9pZDtcbn1cblxuZnVuY3Rpb24gX21vbWVudChpbnB1dD86IERhdGVJbnB1dCB8IEtocm9ub3MsIGZvcm1hdD86IHN0cmluZyB8IHN0cmluZ1tdLCBsb2NhbGVLZXk/OiBzdHJpbmcgfCBib29sZWFuLCBzdHJpY3Q/OiBib29sZWFuLCBpc1VUQz86IGJvb2xlYW4pOiBLaHJvbm9zIHtcbiAgaWYgKGlucHV0IGluc3RhbmNlb2YgS2hyb25vcykge1xuICAgIGNvbnN0IF9kYXRlID0gaW5wdXQuY2xvbmUoKTtcblxuICAgIHJldHVybiBpc1VUQyA/IF9kYXRlLnV0YygpIDogX2RhdGU7XG4gIH1cblxuICBpZiAoaXNCb29sZWFuKGxvY2FsZUtleSkpIHtcbiAgICByZXR1cm4gbmV3IEtocm9ub3MoaW5wdXQsIGZvcm1hdCwgbnVsbCwgbG9jYWxlS2V5LCBpc1VUQyk7XG4gIH1cblxuICByZXR1cm4gbmV3IEtocm9ub3MoaW5wdXQsIGZvcm1hdCwgbG9jYWxlS2V5LCBzdHJpY3QsIGlzVVRDKTtcbn1cblxubW9tZW50LnV0YyA9IChpbnB1dD86IERhdGVJbnB1dCB8IEtocm9ub3MsIGZvcm1hdD86IHN0cmluZywgbG9jYWxlS2V5Pzogc3RyaW5nIHwgYm9vbGVhbiwgc3RyaWN0PzogYm9vbGVhbik6IEtocm9ub3MgPT4ge1xuICByZXR1cm4gX21vbWVudChpbnB1dCwgZm9ybWF0LCBsb2NhbGVLZXksIHN0cmljdCwgdHJ1ZSk7XG59O1xuXG5tb21lbnQucGFyc2Vab25lID0gKGlucHV0PzogRGF0ZUlucHV0IHwgS2hyb25vcywgZm9ybWF0Pzogc3RyaW5nLCBsb2NhbGVLZXk/OiBzdHJpbmcgfCBib29sZWFuLCBzdHJpY3Q/OiBib29sZWFuKTogS2hyb25vcyA9PiB7XG4gIHJldHVybiBfbW9tZW50KGlucHV0LCBmb3JtYXQsIGxvY2FsZUtleSwgc3RyaWN0LCB0cnVlKS5wYXJzZVpvbmUoKTtcbn07XG5cbm1vbWVudC5sb2NhbGUgPSBnZXRTZXRHbG9iYWxMb2NhbGU7XG5tb21lbnQubG9jYWxlRGF0YSA9IChrZXk/OiBzdHJpbmcgfCBzdHJpbmdbXSB8IEtocm9ub3MpOiBMb2NhbGUgPT4ge1xuICBpZiAoa2V5IGluc3RhbmNlb2YgS2hyb25vcykge1xuICAgIHJldHVybiBrZXkubG9jYWxlRGF0YSgpO1xuICB9XG5cbiAgcmV0dXJuIGdldExvY2FsZShrZXkpO1xufTtcblxuLy8gbW9tZW50LnV0YyA9IGNyZWF0ZVVUQztcbm1vbWVudC51bml4ID0gKGlucDogbnVtYmVyKSA9PiBuZXcgS2hyb25vcyhpbnAgKiAxMDAwKTtcbm1vbWVudC5JU09fODYwMSA9IElTT184NjAxO1xubW9tZW50LlJGQ18yODIyID0gUkZDXzI4MjI7XG5tb21lbnQuZGVmaW5lTG9jYWxlID0gZGVmaW5lTG9jYWxlO1xubW9tZW50LnBhcnNlVHdvRGlnaXRZZWFyID0gcGFyc2VUd29EaWdpdFllYXI7XG5tb21lbnQuaXNEYXRlID0gaXNEYXRlO1xubW9tZW50LmludmFsaWQgPSBmdW5jdGlvbiBfaW52YWxpZCgpOiBLaHJvbm9zIHtcbiAgcmV0dXJuIG5ldyBLaHJvbm9zKG5ldyBEYXRlKE5hTikpO1xufTtcblxuLy8gZHVyYXRpb24oaW5wPzogRHVyYXRpb24gfCBEYXRlSW5wdXQgfCBLaHJvbm9zLCB1bml0PzogTW9tZW50VW5pdE9mVGltZSk6IER1cmF0aW9uO1xubW9tZW50LmR1cmF0aW9uID0gKGlucHV0PzogRHVyYXRpb24gfCBEYXRlSW5wdXQgfCBLaHJvbm9zLCB1bml0PzogTW9tZW50VW5pdE9mVGltZSk6IER1cmF0aW9uID0+IHtcbiAgY29uc3QgX3VuaXQgPSBtYXBVbml0T2ZUaW1lKHVuaXQpO1xuICBpZiAoaXNEYXRlKGlucHV0KSkge1xuICAgIHRocm93IG5ldyBFcnJvcigndG9kbyBpbXBsZW1lbnQnKTtcbiAgfVxuXG4gIGlmIChpbnB1dCA9PSBudWxsKSB7XG4gICAgcmV0dXJuIGNyZWF0ZUR1cmF0aW9uKCk7XG4gIH1cblxuICBpZiAoaXNEdXJhdGlvbihpbnB1dCkpIHtcbiAgICByZXR1cm4gY3JlYXRlRHVyYXRpb24oaW5wdXQsIF91bml0LCB7IF9sb2NhbGU6IGlucHV0Ll9sb2NhbGUgfSk7XG4gIH1cblxuICBpZiAoaXNTdHJpbmcoaW5wdXQpIHx8IGlzTnVtYmVyKGlucHV0KSB8fCBpc0R1cmF0aW9uKGlucHV0KSB8fCBpc09iamVjdDxEYXRlT2JqZWN0PihpbnB1dCkpIHtcbiAgICByZXR1cm4gY3JlYXRlRHVyYXRpb24oaW5wdXQsIF91bml0KTtcbiAgfVxuXG4gIHRocm93IG5ldyBFcnJvcigndG9kbyBpbXBsZW1lbnQnKTtcbn07XG5cbm1vbWVudC5taW4gPSBmdW5jdGlvbiBfbWluKC4uLmRhdGVzOiAoKERhdGVJbnB1dCB8IEtocm9ub3MpW10gfCAoRGF0ZUlucHV0IHwgS2hyb25vcykpW10pOiBLaHJvbm9zIHtcbiAgY29uc3QgX2ZpcnN0QXJnID0gZGF0ZXNbMF07XG4gIGNvbnN0IF9kYXRlcyA9IChpc0FycmF5KF9maXJzdEFyZykgPyBfZmlyc3RBcmcgOiBkYXRlcylcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lXG4gICAgLm1hcCgoZGF0ZTogS2hyb25vcykgPT4gX21vbWVudChkYXRlKSlcbiAgICAubWFwKGRhdGUgPT4gZGF0ZS50b0RhdGUoKSk7XG5cbiAgY29uc3QgX2RhdGUgPSBtaW4oLi4uX2RhdGVzKTtcblxuICByZXR1cm4gbmV3IEtocm9ub3MoX2RhdGUpO1xufTtcblxubW9tZW50Lm1heCA9IGZ1bmN0aW9uIF9tYXgoLi4uZGF0ZXM6ICgoRGF0ZUlucHV0IHwgS2hyb25vcylbXSB8IChEYXRlSW5wdXQgfCBLaHJvbm9zKSlbXSk6IEtocm9ub3Mge1xuICBjb25zdCBfZmlyc3RBcmcgPSBkYXRlc1swXTtcbiAgY29uc3QgX2RhdGVzID0gKGlzQXJyYXkoX2ZpcnN0QXJnKSA/IF9maXJzdEFyZyA6IGRhdGVzKVxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmVcbiAgICAubWFwKChkYXRlOiBLaHJvbm9zKSA9PiBfbW9tZW50KGRhdGUpKVxuICAgIC5tYXAoZGF0ZSA9PiBkYXRlLnRvRGF0ZSgpKTtcblxuICBjb25zdCBfZGF0ZSA9IG1heCguLi5fZGF0ZXMpO1xuXG4gIHJldHVybiBuZXcgS2hyb25vcyhfZGF0ZSk7XG59O1xuXG5tb21lbnQubG9jYWxlcyA9ICgpOiBzdHJpbmdbXSA9PiB7XG4gIHJldHVybiBsaXN0TG9jYWxlcygpO1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBNb21lbnRJbnB1dE9iamVjdCB7XG4gIHllYXJzPzogbnVtYmVyO1xuICB5ZWFyPzogbnVtYmVyO1xuICB5PzogbnVtYmVyO1xuXG4gIG1vbnRocz86IG51bWJlcjtcbiAgbW9udGg/OiBudW1iZXI7XG4gIE0/OiBudW1iZXI7XG5cbiAgZGF5cz86IG51bWJlcjtcbiAgZGF5PzogbnVtYmVyO1xuICBkPzogbnVtYmVyO1xuXG4gIGRhdGVzPzogbnVtYmVyO1xuICBkYXRlPzogbnVtYmVyO1xuICBEPzogbnVtYmVyO1xuXG4gIGhvdXJzPzogbnVtYmVyO1xuICBob3VyPzogbnVtYmVyO1xuICBoPzogbnVtYmVyO1xuXG4gIG1pbnV0ZXM/OiBudW1iZXI7XG4gIG1pbnV0ZT86IG51bWJlcjtcbiAgbT86IG51bWJlcjtcblxuICBzZWNvbmRzPzogbnVtYmVyO1xuICBzZWNvbmQ/OiBudW1iZXI7XG4gIHM/OiBudW1iZXI7XG5cbiAgbWlsbGlzZWNvbmRzPzogbnVtYmVyO1xuICBtaWxsaXNlY29uZD86IG51bWJlcjtcbiAgbXM/OiBudW1iZXI7XG5cbiAgdz86IG51bWJlcjtcbiAgd2Vlaz86IG51bWJlcjtcbiAgd2Vla3M/OiBudW1iZXI7XG5cbiAgUT86IG51bWJlcjtcbiAgcXVhcnRlcj86IG51bWJlcjtcbiAgcXVhcnRlcnM/OiBudW1iZXI7XG5cbiAgd2Vla1llYXI/OiBudW1iZXI7XG59XG5cbmV4cG9ydCB0eXBlIE1vbWVudFVuaXRPZlRpbWUgPSAoXG4gICd5ZWFyJyB8ICd5ZWFycycgfCAneScgfFxuICAnbW9udGgnIHwgJ21vbnRocycgfCAnTScgfFxuICAnd2VlaycgfCAnd2Vla3MnIHwgJ3cnIHxcbiAgJ2RheScgfCAnZGF5cycgfCAnZCcgfFxuICAnaG91cicgfCAnaG91cnMnIHwgJ2gnIHxcbiAgJ21pbnV0ZScgfCAnbWludXRlcycgfCAnbScgfFxuICAnc2Vjb25kJyB8ICdzZWNvbmRzJyB8ICdzJyB8XG4gICdtaWxsaXNlY29uZCcgfCAnbWlsbGlzZWNvbmRzJyB8ICdtcycgfFxuICAncScgfCAncXVhcnRlcicgfCAncXVhcnRlcnMnIHwgJ1EnIHxcbiAgJ2lzb1dlZWsnIHwgJ2lzb1dlZWtzJyB8ICdXJyB8XG4gICdkYXRlJyB8ICdkYXRlcycgfCAnRCdcbiAgKTtcblxuZXhwb3J0IHR5cGUgTW9tZW50QWxsID0gTW9tZW50VW5pdE9mVGltZSB8XG4gICd3ZWVrWWVhcicgfCAnd2Vla1llYXJzJyB8ICdnZycgfFxuICAnaXNvV2Vla1llYXInIHwgJ2lzb1dlZWtZZWFycycgfCAnR0cnIHxcbiAgJ2RheU9mWWVhcicgfCAnZGF5T2ZZZWFycycgfCAnREREJyB8XG4gICd3ZWVrZGF5JyB8ICd3ZWVrZGF5cycgfCAnZScgfFxuICAnaXNvV2Vla2RheScgfCAnaXNvV2Vla2RheXMnIHwgJ0UnO1xuXG5jb25zdCBfdW5pdHNQcmlvcml0eToge1trZXkgaW4gVW5pdE9mVGltZV06IG51bWJlcn0gPSB7XG4gIHllYXI6IDEsXG4gIG1vbnRoOiA4LFxuICB3ZWVrOiA1LFxuICBpc29XZWVrOiA1LFxuICBkYXk6IDExLFxuICB3ZWVrZGF5OiAxMSxcbiAgaXNvV2Vla2RheTogMTEsXG4gIGhvdXJzOiAxMyxcbiAgd2Vla1llYXI6IDEsXG4gIGlzb1dlZWtZZWFyOiAxLFxuICBxdWFydGVyOiA3LFxuICBkYXRlOiA5LFxuICBkYXlPZlllYXI6IDQsXG4gIG1pbnV0ZXM6IDE0LFxuICBzZWNvbmRzOiAxNSxcbiAgbWlsbGlzZWNvbmRzOiAxNlxufTtcblxuLy8gdG9kbzogZG8gSSBuZWVkIDIgbWFwcGVycz9cbmNvbnN0IF90aW1lSGFzaE1hcDogeyBba2V5IGluIE1vbWVudEFsbF06IFVuaXRPZlRpbWUgfCBzdHJpbmcgfSA9IHtcbiAgeTogJ3llYXInLFxuICB5ZWFyczogJ3llYXInLFxuICB5ZWFyOiAneWVhcicsXG4gIE06ICdtb250aCcsXG4gIG1vbnRoczogJ21vbnRoJyxcbiAgbW9udGg6ICdtb250aCcsXG4gIHc6ICd3ZWVrJyxcbiAgd2Vla3M6ICd3ZWVrJyxcbiAgd2VlazogJ3dlZWsnLFxuXG4gIGQ6ICdkYXknLFxuICBkYXlzOiAnZGF5JyxcbiAgZGF5OiAnZGF5JyxcblxuICBkYXRlOiAnZGF0ZScsXG4gIGRhdGVzOiAnZGF0ZScsXG4gIEQ6ICdkYXRlJyxcblxuICBoOiAnaG91cnMnLFxuICBob3VyOiAnaG91cnMnLFxuICBob3VyczogJ2hvdXJzJyxcbiAgbTogJ21pbnV0ZXMnLFxuICBtaW51dGU6ICdtaW51dGVzJyxcbiAgbWludXRlczogJ21pbnV0ZXMnLFxuICBzOiAnc2Vjb25kcycsXG4gIHNlY29uZDogJ3NlY29uZHMnLFxuICBzZWNvbmRzOiAnc2Vjb25kcycsXG4gIG1zOiAnbWlsbGlzZWNvbmRzJyxcbiAgbWlsbGlzZWNvbmQ6ICdtaWxsaXNlY29uZHMnLFxuICBtaWxsaXNlY29uZHM6ICdtaWxsaXNlY29uZHMnLFxuICBxdWFydGVyOiAncXVhcnRlcicsXG4gIHF1YXJ0ZXJzOiAncXVhcnRlcicsXG4gIHE6ICdxdWFydGVyJyxcbiAgUTogJ3F1YXJ0ZXInLFxuICBpc29XZWVrOiAnaXNvV2VlaycsXG4gIGlzb1dlZWtzOiAnaXNvV2VlaycsXG4gIFc6ICdpc29XZWVrJyxcbiAgd2Vla1llYXI6ICd3ZWVrWWVhcicsXG4gIHdlZWtZZWFyczogJ3dlZWtZZWFyJyxcbiAgZ2c6ICd3ZWVrWWVhcnMnLFxuICBpc29XZWVrWWVhcjogJ2lzb1dlZWtZZWFyJyxcbiAgaXNvV2Vla1llYXJzOiAnaXNvV2Vla1llYXInLFxuICBHRzogJ2lzb1dlZWtZZWFyJyxcbiAgZGF5T2ZZZWFyOiAnZGF5T2ZZZWFyJyxcbiAgZGF5T2ZZZWFyczogJ2RheU9mWWVhcicsXG4gIERERDogJ2RheU9mWWVhcicsXG4gIHdlZWtkYXk6ICd3ZWVrZGF5JyxcbiAgd2Vla2RheXM6ICd3ZWVrZGF5JyxcbiAgZTogJ3dlZWtkYXknLFxuICBpc29XZWVrZGF5OiAnaXNvV2Vla2RheScsXG4gIGlzb1dlZWtkYXlzOiAnaXNvV2Vla2RheScsXG4gIEU6ICdpc29XZWVrZGF5J1xufTtcblxuZnVuY3Rpb24gbWFwVW5pdE9mVGltZShwZXJpb2Q6IE1vbWVudEFsbCk6IFVuaXRPZlRpbWUge1xuICByZXR1cm4gX3RpbWVIYXNoTWFwW3BlcmlvZF0gYXMgVW5pdE9mVGltZTtcbn1cblxuZnVuY3Rpb24gbWFwTW9tZW50SW5wdXRPYmplY3Qob2JqOiBNb21lbnRJbnB1dE9iamVjdCk6IHtba2V5IGluIFVuaXRPZlRpbWVdPzogbnVtYmVyfSB7XG4gIGNvbnN0IF9yZXM6IHtba2V5IGluIFVuaXRPZlRpbWVdPzogbnVtYmVyfSA9IHt9O1xuXG4gIHJldHVybiBPYmplY3Qua2V5cyhvYmopXG4gICAgLnJlZHVjZSgocmVzLCBrZXk6IGtleW9mIE1vbWVudElucHV0T2JqZWN0KSA9PiB7XG4gICAgICByZXNbbWFwVW5pdE9mVGltZShrZXkpXSA9IG9ialtrZXldO1xuXG4gICAgICByZXR1cm4gcmVzO1xuICAgIH0sIF9yZXMpO1xufVxuXG5leHBvcnQgY2xhc3MgS2hyb25vcyB7XG4gIF9kYXRlOiBEYXRlID0gbmV3IERhdGUoKTtcbiAgX2lzVVRDID0gZmFsc2U7XG4gIF9pc1N0cmljdDogYm9vbGVhbjtcbiAgX2xvY2FsZTogTG9jYWxlO1xuICBfZm9ybWF0OiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgX29mZnNldDogbnVtYmVyO1xuICBfdHptOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IoaW5wdXQ/OiBEYXRlSW5wdXQsXG4gICAgICAgICAgICAgIGZvcm1hdD86IHN0cmluZyB8IHN0cmluZ1tdLFxuICAgICAgICAgICAgICBsb2NhbGVLZXk/OiBzdHJpbmcsXG4gICAgICAgICAgICAgIHN0cmljdCA9IGZhbHNlLFxuICAgICAgICAgICAgICBpc1VUQyA9IGZhbHNlLFxuICAgICAgICAgICAgICBvZmZzZXQ/OiBudW1iZXIpIHtcbiAgICAvLyBsb2NhbGUgd2lsbCBiZSBuZWVkZWQgdG8gZm9ybWF0IGludmFsaWQgZGF0ZSBtZXNzYWdlXG4gICAgdGhpcy5fbG9jYWxlID0gZ2V0TG9jYWxlKGxvY2FsZUtleSk7XG4gICAgLy8gcGFyc2UgaW52YWxpZCBpbnB1dFxuICAgIGlmIChpbnB1dCA9PT0gJycgfHwgaW5wdXQgPT09IG51bGwgfHwgKGlzTnVtYmVyKGlucHV0KSAmJiBpc05hTihpbnB1dCkpKSB7XG4gICAgICB0aGlzLl9kYXRlID0gbmV3IERhdGUoTmFOKTtcblxuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgdGhpcy5faXNVVEMgPSBpc1VUQztcbiAgICBpZiAodGhpcy5faXNVVEMpIHtcbiAgICAgIHRoaXMuX29mZnNldCA9IDA7XG4gICAgfVxuICAgIGlmIChvZmZzZXQgfHwgb2Zmc2V0ID09PSAwKSB7XG4gICAgICB0aGlzLl9vZmZzZXQgPSBvZmZzZXQ7XG4gICAgfVxuICAgIHRoaXMuX2lzU3RyaWN0ID0gc3RyaWN0O1xuICAgIHRoaXMuX2Zvcm1hdCA9IGZvcm1hdDtcblxuICAgIGlmICghaW5wdXQgJiYgaW5wdXQgIT09IDAgJiYgIWZvcm1hdCkge1xuICAgICAgdGhpcy5fZGF0ZSA9IG5ldyBEYXRlKCk7XG5cbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGlmIChpc0RhdGUoaW5wdXQpKSB7XG4gICAgICB0aGlzLl9kYXRlID0gY2xvbmVEYXRlKGlucHV0KTtcblxuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLy8gdGhpcy5fZGF0ZSA9IHBhcnNlRGF0ZShpbnB1dCwgZm9ybWF0LCBsb2NhbGVLZXksIHN0cmljdCwgaXNVVEMpO1xuICAgIGNvbnN0IGNvbmZpZyA9IGNyZWF0ZUxvY2FsT3JVVEMoaW5wdXQsIGZvcm1hdCwgbG9jYWxlS2V5LCBzdHJpY3QsIGlzVVRDKTtcbiAgICB0aGlzLl9kYXRlID0gY29uZmlnLl9kO1xuICAgIHRoaXMuX29mZnNldCA9IGlzTnVtYmVyKGNvbmZpZy5fb2Zmc2V0KSA/IGNvbmZpZy5fb2Zmc2V0IDogdGhpcy5fb2Zmc2V0O1xuICAgIHRoaXMuX2lzVVRDID0gY29uZmlnLl9pc1VUQztcbiAgICB0aGlzLl9pc1N0cmljdCA9IGNvbmZpZy5fc3RyaWN0O1xuICAgIHRoaXMuX2Zvcm1hdCA9IGNvbmZpZy5fZjtcbiAgICB0aGlzLl90em0gPSBjb25maWcuX3R6bTtcbiAgfVxuXG4gIF90b0NvbmZpZygpOiBEYXRlUGFyc2luZ0NvbmZpZyB7XG4gICAgcmV0dXJuIHsgX2lzVVRDOiB0aGlzLl9pc1VUQywgX2xvY2FsZTogdGhpcy5fbG9jYWxlLCBfb2Zmc2V0OiB0aGlzLl9vZmZzZXQsIF90em06IHRoaXMuX3R6bSB9O1xuICB9XG5cbiAgLy8gTG9jYWxlXG4gIGxvY2FsZSgpOiBzdHJpbmc7XG4gIGxvY2FsZShsb2NhbGVLZXk6IHN0cmluZyB8IHN0cmluZ1tdIHwgS2hyb25vcyk6IEtocm9ub3M7XG4gIGxvY2FsZShsb2NhbGVLZXk/OiBzdHJpbmcgfCBzdHJpbmdbXSB8IEtocm9ub3MpOiBLaHJvbm9zIHwgc3RyaW5nIHtcbiAgICBpZiAoaXNVbmRlZmluZWQobG9jYWxlS2V5KSkge1xuICAgICAgcmV0dXJuIHRoaXMuX2xvY2FsZS5fYWJicjtcbiAgICB9XG5cbiAgICBpZiAobG9jYWxlS2V5IGluc3RhbmNlb2YgS2hyb25vcykge1xuICAgICAgdGhpcy5fbG9jYWxlID0gbG9jYWxlS2V5Ll9sb2NhbGU7XG5cbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGNvbnN0IG5ld0xvY2FsZURhdGEgPSBnZXRMb2NhbGUobG9jYWxlS2V5KTtcbiAgICBpZiAobmV3TG9jYWxlRGF0YSAhPSBudWxsKSB7XG4gICAgICB0aGlzLl9sb2NhbGUgPSBuZXdMb2NhbGVEYXRhO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgbG9jYWxlRGF0YSgpOiBMb2NhbGUge1xuICAgIHJldHVybiB0aGlzLl9sb2NhbGU7XG4gIH1cblxuICAvLyBCYXNpY1xuXG4gIGFkZCh2YWw6IG51bWJlciB8IHN0cmluZyB8IE1vbWVudElucHV0T2JqZWN0LCBwZXJpb2Q/OiBVbml0T2ZUaW1lIHwgTW9tZW50VW5pdE9mVGltZSk6IEtocm9ub3Mge1xuICAgIGlmIChpc1N0cmluZyh2YWwpKSB7XG4gICAgICB0aGlzLl9kYXRlID0gYWRkKHRoaXMuX2RhdGUsIHBhcnNlSW50KHZhbCwgMTApLCBtYXBVbml0T2ZUaW1lKHBlcmlvZCkpO1xuICAgIH1cblxuICAgIGlmIChpc051bWJlcih2YWwpKSB7XG4gICAgICB0aGlzLl9kYXRlID0gYWRkKHRoaXMuX2RhdGUsIHZhbCwgbWFwVW5pdE9mVGltZShwZXJpb2QpKTtcbiAgICB9XG5cbiAgICBpZiAoaXNPYmplY3Q8TW9tZW50SW5wdXRPYmplY3Q+KHZhbCkpIHtcbiAgICAgIGNvbnN0IF9tYXBwZWQgPSBtYXBNb21lbnRJbnB1dE9iamVjdCh2YWwpO1xuICAgICAgT2JqZWN0LmtleXMoX21hcHBlZClcbiAgICAgICAgLmZvckVhY2goKGtleTogVW5pdE9mVGltZSkgPT4gYWRkKHRoaXMuX2RhdGUsIF9tYXBwZWRba2V5XSwga2V5KSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvLyBmaXhtZTogZm9yIHNvbWUgcmVhc29uIGhlcmUgJ251bGwnIGZvciB0aW1lIGlzIGZpbmVcbiAgY2FsZW5kYXIodGltZT86IERhdGVJbnB1dCB8IEtocm9ub3MsIGZvcm1hdHM/OiBDYWxlbmRhclNwZWMpOiBzdHJpbmcge1xuICAgIGNvbnN0IF90aW1lID0gdGltZSBpbnN0YW5jZW9mIEtocm9ub3MgPyB0aW1lIDogbmV3IEtocm9ub3ModGltZSB8fCBuZXcgRGF0ZSgpKTtcbiAgICBjb25zdCBfb2Zmc2V0ID0gKHRoaXMuX29mZnNldCB8fCAwKSAtIChfdGltZS5fb2Zmc2V0IHx8IDApO1xuICAgIGNvbnN0IF9jb25maWcgPSBPYmplY3QuYXNzaWduKHRoaXMuX3RvQ29uZmlnKCksIHsgX29mZnNldCB9KTtcblxuICAgIHJldHVybiBjYWxlbmRhcih0aGlzLl9kYXRlLCBfdGltZS5fZGF0ZSxcbiAgICAgIGZvcm1hdHMsIHRoaXMuX2xvY2FsZSwgX2NvbmZpZyk7XG4gIH1cblxuICBjbG9uZSgpOiBLaHJvbm9zIHtcbiAgICBjb25zdCBsb2NhbGVLZXkgPSB0aGlzLl9sb2NhbGUgJiYgdGhpcy5fbG9jYWxlLl9hYmJyIHx8ICdlbic7XG5cbiAgICAvLyByZXR1cm4gbmV3IEtocm9ub3MoY2xvbmVEYXRlKHRoaXMuX2RhdGUpLCB0aGlzLl9mb3JtYXQsIGxvY2FsZUtleSwgdGhpcy5faXNTdHJpY3QsIHRoaXMuX2lzVVRDKTtcbiAgICAvLyBmYWlscyBpZiBpc1VUQyBhbmQgb2Zmc2V0XG4gICAgLy8gcmV0dXJuIG5ldyBLaHJvbm9zKG5ldyBEYXRlKHRoaXMudmFsdWVPZigpKSxcbiAgICByZXR1cm4gbmV3IEtocm9ub3ModGhpcy5fZGF0ZSxcbiAgICAgIHRoaXMuX2Zvcm1hdCxcbiAgICAgIGxvY2FsZUtleSxcbiAgICAgIHRoaXMuX2lzU3RyaWN0LFxuICAgICAgdGhpcy5faXNVVEMsXG4gICAgICB0aGlzLl9vZmZzZXQpO1xuICB9XG5cbiAgZGlmZihiOiBEYXRlSW5wdXQgfCBLaHJvbm9zLCB1bml0T2ZUaW1lPzogTW9tZW50VW5pdE9mVGltZSwgcHJlY2lzZT86IGJvb2xlYW4pOiBudW1iZXIge1xuICAgIGNvbnN0IHVuaXQgPSBtYXBVbml0T2ZUaW1lKHVuaXRPZlRpbWUpO1xuICAgIGNvbnN0IF9iID0gYiBpbnN0YW5jZW9mIEtocm9ub3MgPyBiIDogbmV3IEtocm9ub3MoYik7XG4gICAgLy8gY29uc3Qgem9uZURlbHRhID0gKF9iLnV0Y09mZnNldCgpIC0gdGhpcy51dGNPZmZzZXQoKSk7XG4gICAgLy8gY29uc3QgY29uZmlnID0gT2JqZWN0LmFzc2lnbih0aGlzLl90b0NvbmZpZygpLCB7XG4gICAgLy8gICBfb2Zmc2V0OiAwLFxuICAgIC8vICAgX2lzVVRDOiB0cnVlLFxuICAgIC8vICAgX3pvbmVEZWx0YTogem9uZURlbHRhXG4gICAgLy8gfSk7XG4gICAgLy8gcmV0dXJuIGRpZmYobmV3IERhdGUodGhpcy52YWx1ZU9mKCkpLCBuZXcgRGF0ZShfYi52YWx1ZU9mKCkpLCB1bml0LCBwcmVjaXNlLCBjb25maWcpO1xuXG4gICAgcmV0dXJuIGRpZmYodGhpcy5fZGF0ZSwgX2IudG9EYXRlKCksIHVuaXQsIHByZWNpc2UsIHRoaXMuX3RvQ29uZmlnKCkpO1xuICB9XG5cbiAgZW5kT2YocGVyaW9kPzogTW9tZW50VW5pdE9mVGltZSk6IEtocm9ub3Mge1xuICAgIGNvbnN0IF9wZXIgPSBtYXBVbml0T2ZUaW1lKHBlcmlvZCk7XG4gICAgdGhpcy5fZGF0ZSA9IGVuZE9mKHRoaXMuX2RhdGUsIF9wZXIsIHRoaXMuX2lzVVRDKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgZm9ybWF0KGZvcm1hdD86IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGZvcm1hdERhdGUodGhpcy5fZGF0ZSwgZm9ybWF0LCB0aGlzLl9sb2NhbGUgJiYgdGhpcy5fbG9jYWxlLl9hYmJyLCB0aGlzLl9pc1VUQywgdGhpcy5fb2Zmc2V0KTtcbiAgfVxuXG4gIC8vIHRvZG86IGltcGxlbWVudFxuICBmcm9tKHRpbWU/OiBEYXRlSW5wdXQgfCBLaHJvbm9zLCB3aXRob3V0U3VmZml4PzogYm9vbGVhbik6IHN0cmluZyB7XG4gICAgY29uc3QgX3RpbWUgPSBfbW9tZW50KHRpbWUpO1xuICAgIGlmICh0aGlzLmlzVmFsaWQoKSAmJiBfdGltZS5pc1ZhbGlkKCkpIHtcbiAgICAgIHJldHVybiBjcmVhdGVEdXJhdGlvbih7IHRvOiB0aGlzLnRvRGF0ZSgpLCBmcm9tOiBfdGltZS50b0RhdGUoKSB9KVxuICAgICAgICAubG9jYWxlKHRoaXMubG9jYWxlKCkpXG4gICAgICAgIC5odW1hbml6ZSghd2l0aG91dFN1ZmZpeCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpLmludmFsaWREYXRlO1xuICB9XG5cbiAgZnJvbU5vdyh3aXRob3V0U3VmZml4PzogYm9vbGVhbik6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZnJvbShuZXcgRGF0ZSgpLCB3aXRob3V0U3VmZml4KTtcbiAgfVxuXG4gIHRvKGlucDogRGF0ZUlucHV0IHwgS2hyb25vcywgc3VmZml4PzogYm9vbGVhbik6IHN0cmluZyB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBUT0RPOiBJbXBsZW1lbnRgKTtcbiAgfVxuXG4gIHRvTm93KHdpdGhvdXRQcmVmaXg/OiBib29sZWFuKTogc3RyaW5nIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFRPRE86IEltcGxlbWVudGApO1xuICB9XG5cbiAgc3VidHJhY3QodmFsOiBudW1iZXIgfCBzdHJpbmcgfCBNb21lbnRJbnB1dE9iamVjdCwgcGVyaW9kPzogVW5pdE9mVGltZSB8IE1vbWVudFVuaXRPZlRpbWUpOiBLaHJvbm9zIHtcbiAgICBpZiAoaXNTdHJpbmcodmFsKSkge1xuICAgICAgdGhpcy5fZGF0ZSA9IHN1YnRyYWN0KHRoaXMuX2RhdGUsIHBhcnNlSW50KHZhbCwgMTApLCBtYXBVbml0T2ZUaW1lKHBlcmlvZCkpO1xuXG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBpZiAoaXNOdW1iZXIodmFsKSkge1xuICAgICAgdGhpcy5fZGF0ZSA9IHN1YnRyYWN0KHRoaXMuX2RhdGUsIHZhbCwgbWFwVW5pdE9mVGltZShwZXJpb2QpKTtcbiAgICB9XG5cbiAgICBpZiAoaXNPYmplY3Q8TW9tZW50SW5wdXRPYmplY3Q+KHZhbCkpIHtcbiAgICAgIGNvbnN0IF9tYXBwZWQgPSBtYXBNb21lbnRJbnB1dE9iamVjdCh2YWwpO1xuICAgICAgT2JqZWN0LmtleXMoX21hcHBlZClcbiAgICAgICAgLmZvckVhY2goKGtleTogVW5pdE9mVGltZSkgPT4gc3VidHJhY3QodGhpcy5fZGF0ZSwgX21hcHBlZFtrZXldLCBrZXkpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGdldChwZXJpb2Q6IE1vbWVudEFsbCk6IG51bWJlciB7XG4gICAgaWYgKHBlcmlvZCA9PT0gJ2RheU9mWWVhcicpIHtcbiAgICAgIHJldHVybiB0aGlzLmRheU9mWWVhcigpO1xuICAgIH1cblxuICAgIGNvbnN0IHVuaXQgPSBtYXBVbml0T2ZUaW1lKHBlcmlvZCk7XG4gICAgc3dpdGNoICh1bml0KSB7XG4gICAgICBjYXNlICd5ZWFyJzpcbiAgICAgICAgcmV0dXJuIHRoaXMueWVhcigpO1xuICAgICAgY2FzZSAnbW9udGgnOlxuICAgICAgICByZXR1cm4gdGhpcy5tb250aCgpO1xuICAgICAgLy8gfCAnd2VlaydcbiAgICAgIGNhc2UgJ2RhdGUnOlxuICAgICAgICByZXR1cm4gdGhpcy5kYXRlKCk7XG4gICAgICBjYXNlICdkYXknOlxuICAgICAgICByZXR1cm4gdGhpcy5kYXkoKTtcbiAgICAgIGNhc2UgJ2hvdXJzJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuaG91cnMoKTtcbiAgICAgIGNhc2UgJ21pbnV0ZXMnOlxuICAgICAgICByZXR1cm4gdGhpcy5taW51dGVzKCk7XG4gICAgICBjYXNlICdzZWNvbmRzJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuc2Vjb25kcygpO1xuICAgICAgY2FzZSAnbWlsbGlzZWNvbmRzJzpcbiAgICAgICAgcmV0dXJuIHRoaXMubWlsbGlzZWNvbmRzKCk7XG4gICAgICBjYXNlICd3ZWVrJzpcbiAgICAgICAgcmV0dXJuIHRoaXMud2VlaygpO1xuICAgICAgY2FzZSAnaXNvV2Vlayc6XG4gICAgICAgIHJldHVybiB0aGlzLmlzb1dlZWsoKTtcbiAgICAgIGNhc2UgJ3dlZWtZZWFyJzpcbiAgICAgICAgcmV0dXJuIHRoaXMud2Vla1llYXIoKTtcbiAgICAgIGNhc2UgJ2lzb1dlZWtZZWFyJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNvV2Vla1llYXIoKTtcbiAgICAgIGNhc2UgJ3dlZWtkYXknOlxuICAgICAgICByZXR1cm4gdGhpcy53ZWVrZGF5KCk7XG4gICAgICBjYXNlICdpc29XZWVrZGF5JzpcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNvV2Vla2RheSgpO1xuICAgICAgY2FzZSAncXVhcnRlcic6XG4gICAgICAgIHJldHVybiB0aGlzLnF1YXJ0ZXIoKTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biBtb21lbnQuZ2V0KCcke3BlcmlvZH0nKWApO1xuICAgIH1cbiAgfVxuXG4gIHNldChwZXJpb2Q6IE1vbWVudEFsbCB8IE1vbWVudElucHV0T2JqZWN0LCBpbnB1dD86IG51bWJlcik6IEtocm9ub3Mge1xuXG4gICAgaWYgKGlzU3RyaW5nKHBlcmlvZCkpIHtcbiAgICAgIGNvbnN0IHVuaXQgPSBtYXBVbml0T2ZUaW1lKHBlcmlvZCk7XG4gICAgICBzd2l0Y2ggKHVuaXQpIHtcbiAgICAgICAgY2FzZSAneWVhcic6XG4gICAgICAgICAgcmV0dXJuIHRoaXMueWVhcihpbnB1dCk7XG4gICAgICAgIGNhc2UgJ21vbnRoJzpcbiAgICAgICAgICByZXR1cm4gdGhpcy5tb250aChpbnB1dCk7XG4gICAgICAgIC8vIHwgJ3dlZWsnXG4gICAgICAgIGNhc2UgJ2RheSc6XG4gICAgICAgICAgcmV0dXJuIHRoaXMuZGF5KGlucHV0KTtcbiAgICAgICAgY2FzZSAnZGF0ZSc6XG4gICAgICAgICAgcmV0dXJuIHRoaXMuZGF0ZShpbnB1dCk7XG4gICAgICAgIGNhc2UgJ2hvdXJzJzpcbiAgICAgICAgICByZXR1cm4gdGhpcy5ob3VycyhpbnB1dCk7XG4gICAgICAgIGNhc2UgJ21pbnV0ZXMnOlxuICAgICAgICAgIHJldHVybiB0aGlzLm1pbnV0ZXMoaW5wdXQpO1xuICAgICAgICBjYXNlICdzZWNvbmRzJzpcbiAgICAgICAgICByZXR1cm4gdGhpcy5zZWNvbmRzKGlucHV0KTtcbiAgICAgICAgY2FzZSAnbWlsbGlzZWNvbmRzJzpcbiAgICAgICAgICByZXR1cm4gdGhpcy5taWxsaXNlY29uZHMoaW5wdXQpO1xuICAgICAgICBjYXNlICd3ZWVrJzpcbiAgICAgICAgICByZXR1cm4gdGhpcy53ZWVrKGlucHV0KTtcbiAgICAgICAgY2FzZSAnaXNvV2Vlayc6XG4gICAgICAgICAgcmV0dXJuIHRoaXMuaXNvV2VlayhpbnB1dCk7XG4gICAgICAgIGNhc2UgJ3dlZWtZZWFyJzpcbiAgICAgICAgICByZXR1cm4gdGhpcy53ZWVrWWVhcihpbnB1dCk7XG4gICAgICAgIGNhc2UgJ2lzb1dlZWtZZWFyJzpcbiAgICAgICAgICByZXR1cm4gdGhpcy5pc29XZWVrWWVhcihpbnB1dCk7XG4gICAgICAgIGNhc2UgJ3dlZWtkYXknOlxuICAgICAgICAgIHJldHVybiB0aGlzLndlZWtkYXkoaW5wdXQpO1xuICAgICAgICBjYXNlICdpc29XZWVrZGF5JzpcbiAgICAgICAgICByZXR1cm4gdGhpcy5pc29XZWVrZGF5KGlucHV0KTtcbiAgICAgICAgY2FzZSAncXVhcnRlcic6XG4gICAgICAgICAgcmV0dXJuIHRoaXMucXVhcnRlcihpbnB1dCk7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIG1vbWVudC5nZXQoJyR7cGVyaW9kfScpYCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGlzT2JqZWN0PE1vbWVudElucHV0T2JqZWN0PihwZXJpb2QpKSB7XG4gICAgICBjb25zdCBfbWFwcGVkID0gbWFwTW9tZW50SW5wdXRPYmplY3QocGVyaW9kKTtcbiAgICAgIE9iamVjdC5rZXlzKF9tYXBwZWQpXG4gICAgICAgIC5zb3J0KGZ1bmN0aW9uKGE6IFVuaXRPZlRpbWUsIGI6IFVuaXRPZlRpbWUpOiBudW1iZXIge1xuICAgICAgICAgIHJldHVybiBfdW5pdHNQcmlvcml0eVthXSAtIF91bml0c1ByaW9yaXR5W2JdO1xuICAgICAgICB9KVxuICAgICAgICAuZm9yRWFjaCgoa2V5OiBVbml0T2ZUaW1lKSA9PiB0aGlzLnNldChrZXksIF9tYXBwZWRba2V5XSkpO1xuICAgIH1cblxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICB0b1N0cmluZygpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmZvcm1hdCgnZGRkIE1NTSBERCBZWVlZIEhIOm1tOnNzIFtHTVRdWlonKTtcbiAgfVxuXG4gIHRvSVNPU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQoKSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKGdldEZ1bGxZZWFyKHRoaXMuX2RhdGUsIHRydWUpIDwgMCB8fCBnZXRGdWxsWWVhcih0aGlzLl9kYXRlLCB0cnVlKSA+IDk5OTkpIHtcbiAgICAgIHJldHVybiB0aGlzLmZvcm1hdCgnWVlZWVlZLU1NLUREW1RdSEg6bW06c3MuU1NTW1pdJyk7XG4gICAgfVxuXG4gICAgaWYgKGlzRnVuY3Rpb24oRGF0ZS5wcm90b3R5cGUudG9JU09TdHJpbmcpKSB7XG4gICAgICAvLyBuYXRpdmUgaW1wbGVtZW50YXRpb24gaXMgfjUweCBmYXN0ZXIsIHVzZSBpdCB3aGVuIHdlIGNhblxuICAgICAgcmV0dXJuIHRoaXMudG9EYXRlKCkudG9JU09TdHJpbmcoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5mb3JtYXQoJ1lZWVktTU0tRERbVF1ISDptbTpzcy5TU1NbWl0nKTtcbiAgfVxuXG4gIGluc3BlY3QoKTogc3RyaW5nIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1RPRE86IGltcGxlbWVudCcpO1xuICB9XG5cbiAgdG9KU09OKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudG9JU09TdHJpbmcoKTtcbiAgfVxuXG4gIHRvRGF0ZSgpOiBEYXRlIHtcbiAgICByZXR1cm4gbmV3IERhdGUodGhpcy52YWx1ZU9mKCkpO1xuICB9XG5cbiAgdG9PYmplY3QoKToge1trZXkgaW4gTW9tZW50VW5pdE9mVGltZV0/OiBudW1iZXJ9IHtcbiAgICByZXR1cm4ge1xuICAgICAgLy8geWVhcnM6IGdldEZ1bGxZZWFyKHRoaXMuX2RhdGUsIHRoaXMuX2lzVVRDKSxcbiAgICAgIC8vIG1vbnRoczogZ2V0TW9udGgodGhpcy5fZGF0ZSwgdGhpcy5faXNVVEMpLFxuXG4gICAgICB5ZWFyOiBnZXRGdWxsWWVhcih0aGlzLl9kYXRlLCB0aGlzLl9pc1VUQyksXG4gICAgICBtb250aDogZ2V0TW9udGgodGhpcy5fZGF0ZSwgdGhpcy5faXNVVEMpLFxuICAgICAgZGF0ZTogZ2V0RGF0ZSh0aGlzLl9kYXRlLCB0aGlzLl9pc1VUQyksXG4gICAgICBob3VyczogZ2V0SG91cnModGhpcy5fZGF0ZSwgdGhpcy5faXNVVEMpLFxuICAgICAgbWludXRlczogZ2V0TWludXRlcyh0aGlzLl9kYXRlLCB0aGlzLl9pc1VUQyksXG4gICAgICBzZWNvbmRzOiBnZXRTZWNvbmRzKHRoaXMuX2RhdGUsIHRoaXMuX2lzVVRDKSxcbiAgICAgIG1pbGxpc2Vjb25kczogZ2V0TWlsbGlzZWNvbmRzKHRoaXMuX2RhdGUsIHRoaXMuX2lzVVRDKVxuICAgIH07XG4gIH1cblxuICB0b0FycmF5KCk6IERhdGVBcnJheSB7XG4gICAgcmV0dXJuIFt0aGlzLnllYXIoKSwgdGhpcy5tb250aCgpLCB0aGlzLmRhdGUoKSwgdGhpcy5ob3VyKCksIHRoaXMubWludXRlKCksIHRoaXMuc2Vjb25kKCksIHRoaXMubWlsbGlzZWNvbmQoKV07XG4gIH1cblxuXG4gIC8vIERhdGVzIGJvb2xlYW4gYWxnZWJyYVxuXG4gIGlzQWZ0ZXIoZGF0ZTogS2hyb25vcywgdW5pdD86IE1vbWVudFVuaXRPZlRpbWUpOiBib29sZWFuIHtcbiAgICBjb25zdCBfdW5pdCA9IHVuaXQgPyBtYXBVbml0T2ZUaW1lKHVuaXQpIDogdm9pZCAwO1xuXG4gICAgcmV0dXJuIGlzQWZ0ZXIodGhpcy5fZGF0ZSwgZGF0ZS50b0RhdGUoKSwgX3VuaXQpO1xuICB9XG5cbiAgaXNCZWZvcmUoZGF0ZTogS2hyb25vcywgdW5pdD86IE1vbWVudFVuaXRPZlRpbWUpOiBib29sZWFuIHtcbiAgICBjb25zdCBfdW5pdCA9IHVuaXQgPyBtYXBVbml0T2ZUaW1lKHVuaXQpIDogdm9pZCAwO1xuXG4gICAgcmV0dXJuIGlzQmVmb3JlKHRoaXMudG9EYXRlKCksIGRhdGUudG9EYXRlKCksIF91bml0KTtcbiAgfVxuXG4gIGlzQmV0d2Vlbihmcm9tOiBLaHJvbm9zLCB0bzogS2hyb25vcywgdW5pdD86IE1vbWVudFVuaXRPZlRpbWUsIGluY2x1c2l2aXR5Pzogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgY29uc3QgX3VuaXQgPSB1bml0ID8gbWFwVW5pdE9mVGltZSh1bml0KSA6IHZvaWQgMDtcblxuICAgIHJldHVybiBpc0JldHdlZW4odGhpcy50b0RhdGUoKSwgZnJvbS50b0RhdGUoKSwgdG8udG9EYXRlKCksIF91bml0LCBpbmNsdXNpdml0eSk7XG4gIH1cblxuICBpc1NhbWUoZGF0ZTogS2hyb25vcywgdW5pdD86IE1vbWVudFVuaXRPZlRpbWUpOiBib29sZWFuIHtcbiAgICBjb25zdCBfdW5pdCA9IHVuaXQgPyBtYXBVbml0T2ZUaW1lKHVuaXQpIDogdm9pZCAwO1xuXG4gICAgcmV0dXJuIGlzU2FtZSh0aGlzLl9kYXRlLCBkYXRlLnRvRGF0ZSgpLCBfdW5pdCk7XG4gIH1cblxuICBpc1NhbWVPckFmdGVyKGRhdGU6IEtocm9ub3MsIHVuaXQ/OiBNb21lbnRVbml0T2ZUaW1lKTogYm9vbGVhbiB7XG4gICAgY29uc3QgX3VuaXQgPSB1bml0ID8gbWFwVW5pdE9mVGltZSh1bml0KSA6IHZvaWQgMDtcblxuICAgIHJldHVybiBpc1NhbWVPckFmdGVyKHRoaXMuX2RhdGUsIGRhdGUudG9EYXRlKCksIF91bml0KTtcbiAgfVxuXG4gIGlzU2FtZU9yQmVmb3JlKGRhdGU6IEtocm9ub3MsIHVuaXQ/OiBNb21lbnRVbml0T2ZUaW1lKTogYm9vbGVhbiB7XG4gICAgY29uc3QgX3VuaXQgPSB1bml0ID8gbWFwVW5pdE9mVGltZSh1bml0KSA6IHZvaWQgMDtcblxuICAgIHJldHVybiBpc1NhbWVPckJlZm9yZSh0aGlzLl9kYXRlLCBkYXRlLnRvRGF0ZSgpLCBfdW5pdCk7XG4gIH1cblxuICBpc1ZhbGlkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBpc0RhdGVWYWxpZCh0aGlzLl9kYXRlKTtcbiAgfVxuXG4gIHZhbHVlT2YoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fZGF0ZS52YWx1ZU9mKCkgLSAoKHRoaXMuX29mZnNldCB8fCAwKSAqIDYwMDAwKTtcbiAgfVxuXG4gIHVuaXgoKTogbnVtYmVyIHtcbiAgICAvLyByZXR1cm4gZ2V0VW5peFRpbWUodGhpcy5fZGF0ZSk7XG4gICAgcmV0dXJuIE1hdGguZmxvb3IodGhpcy52YWx1ZU9mKCkgLyAxMDAwKTtcbiAgfVxuXG5cbiAgLy8gT2Zmc2V0XG5cbiAgdXRjT2Zmc2V0KCk6IG51bWJlcjtcbiAgdXRjT2Zmc2V0KGI6IG51bWJlciB8IHN0cmluZywga2VlcExvY2FsVGltZT86IGJvb2xlYW4pOiBLaHJvbm9zO1xuICB1dGNPZmZzZXQoYj86IG51bWJlciB8IHN0cmluZywga2VlcExvY2FsVGltZT86IGJvb2xlYW4pOiBudW1iZXIgfCBLaHJvbm9zIHtcbiAgICBjb25zdCBfY29uZmlnID0gdGhpcy5fdG9Db25maWcoKTtcblxuICAgIGlmICghYiAmJiBiICE9PSAwKSB7XG4gICAgICByZXR1cm4gZ2V0VVRDT2Zmc2V0KHRoaXMuX2RhdGUsIF9jb25maWcpO1xuICAgIH1cblxuICAgIHRoaXMuX2RhdGUgPSBzZXRVVENPZmZzZXQodGhpcy5fZGF0ZSwgYiwga2VlcExvY2FsVGltZSwgZmFsc2UsIF9jb25maWcpO1xuXG4gICAgdGhpcy5fb2Zmc2V0ID0gX2NvbmZpZy5fb2Zmc2V0O1xuICAgIHRoaXMuX2lzVVRDID0gX2NvbmZpZy5faXNVVEM7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHV0YyhrZWVwTG9jYWxUaW1lPzogYm9vbGVhbik6IEtocm9ub3Mge1xuICAgIHJldHVybiB0aGlzLnV0Y09mZnNldCgwLCBrZWVwTG9jYWxUaW1lKTtcbiAgfVxuXG4gIGxvY2FsKGtlZXBMb2NhbFRpbWU/OiBib29sZWFuKTogS2hyb25vcyB7XG4gICAgaWYgKHRoaXMuX2lzVVRDKSB7XG4gICAgICB0aGlzLnV0Y09mZnNldCgwLCBrZWVwTG9jYWxUaW1lKTtcbiAgICAgIHRoaXMuX2lzVVRDID0gZmFsc2U7XG5cbiAgICAgIGlmIChrZWVwTG9jYWxUaW1lKSB7XG4gICAgICAgIHRoaXMuc3VidHJhY3QoZ2V0RGF0ZU9mZnNldCh0aGlzLl9kYXRlKSwgJ20nKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHBhcnNlWm9uZShpbnB1dD86IHN0cmluZyk6IEtocm9ub3Mge1xuICAgIGNvbnN0IF9jb25maWcgPSB0aGlzLl90b0NvbmZpZygpO1xuICAgIHRoaXMuX2RhdGUgPSBzZXRPZmZzZXRUb1BhcnNlZE9mZnNldCh0aGlzLl9kYXRlLCBpbnB1dCwgX2NvbmZpZyk7XG5cbiAgICB0aGlzLl9vZmZzZXQgPSBfY29uZmlnLl9vZmZzZXQ7XG4gICAgdGhpcy5faXNVVEMgPSBfY29uZmlnLl9pc1VUQztcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgaGFzQWxpZ25lZEhvdXJPZmZzZXQoaW5wdXQ/OiBLaHJvbm9zKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGhhc0FsaWduZWRIb3VyT2Zmc2V0KHRoaXMuX2RhdGUsIGlucHV0ID8gaW5wdXQuX2RhdGUgOiB2b2lkIDApO1xuICB9XG5cbiAgaXNEU1QoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGlzRGF5bGlnaHRTYXZpbmdUaW1lKHRoaXMuX2RhdGUpO1xuICB9XG5cbiAgaXNMb2NhbCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMuX2lzVVRDO1xuICB9XG5cbiAgaXNVdGNPZmZzZXQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2lzVVRDO1xuICB9XG5cbiAgaXNVVEMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXNVdGMoKTtcbiAgfVxuXG4gIGlzVXRjKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pc1VUQyAmJiB0aGlzLl9vZmZzZXQgPT09IDA7XG4gIH1cblxuICAvLyBUaW1lem9uZVxuXG4gIHpvbmVBYmJyKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGdldFpvbmVBYmJyKHRoaXMuX2lzVVRDKTtcbiAgfVxuXG4gIHpvbmVOYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGdldFpvbmVOYW1lKHRoaXMuX2lzVVRDKTtcbiAgfVxuXG4gIC8vIFllYXJcblxuICB5ZWFyKCk6IG51bWJlcjtcbiAgeWVhcih5ZWFyOiBudW1iZXIpOiBLaHJvbm9zO1xuICB5ZWFyKHllYXI/OiBudW1iZXIpOiBLaHJvbm9zIHwgbnVtYmVyIHtcbiAgICBpZiAoIXllYXIgJiYgeWVhciAhPT0gMCkge1xuICAgICAgcmV0dXJuIGdldEZ1bGxZZWFyKHRoaXMuX2RhdGUsIHRoaXMuX2lzVVRDKTtcbiAgICB9XG5cbiAgICB0aGlzLl9kYXRlID0gY2xvbmVEYXRlKHNldEZ1bGxZZWFyKHRoaXMuX2RhdGUsIHllYXIpKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgd2Vla1llYXIoKTogbnVtYmVyO1xuICB3ZWVrWWVhcih2YWw6IG51bWJlcik6IEtocm9ub3M7XG4gIHdlZWtZZWFyKHZhbD86IG51bWJlcik6IEtocm9ub3MgfCBudW1iZXIge1xuICAgIGlmICghdmFsICYmIHZhbCAhPT0gMCkge1xuICAgICAgcmV0dXJuIGdldFdlZWtZZWFyKHRoaXMuX2RhdGUsIHRoaXMuX2xvY2FsZSwgdGhpcy5pc1VUQygpKTtcbiAgICB9XG5cbiAgICBjb25zdCBkYXRlID0gZ2V0U2V0V2Vla1llYXIodGhpcy5fZGF0ZSwgdmFsLCB0aGlzLl9sb2NhbGUsIHRoaXMuaXNVVEMoKSk7XG4gICAgaWYgKGlzRGF0ZShkYXRlKSkge1xuICAgICAgdGhpcy5fZGF0ZSA9IGRhdGU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBpc29XZWVrWWVhcigpOiBudW1iZXIgO1xuICBpc29XZWVrWWVhcih2YWw6IG51bWJlcik6IEtocm9ub3MgO1xuICBpc29XZWVrWWVhcih2YWw/OiBudW1iZXIpOiBLaHJvbm9zIHwgbnVtYmVyIHtcbiAgICBpZiAoIXZhbCAmJiB2YWwgIT09IDApIHtcbiAgICAgIHJldHVybiBnZXRJU09XZWVrWWVhcih0aGlzLl9kYXRlLCB0aGlzLmlzVVRDKCkpO1xuICAgIH1cblxuICAgIGNvbnN0IGRhdGUgPSBnZXRTZXRJU09XZWVrWWVhcih0aGlzLl9kYXRlLCB2YWwsIHRoaXMuaXNVdGMoKSk7XG5cbiAgICBpZiAoaXNEYXRlKGRhdGUpKSB7XG4gICAgICB0aGlzLl9kYXRlID0gZGF0ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGlzTGVhcFllYXIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGlzTGVhcFllYXIoZ2V0RnVsbFllYXIodGhpcy50b0RhdGUoKSwgdGhpcy5pc1VUQygpKSk7XG4gIH1cblxuICAvLyBNb250aFxuXG4gIG1vbnRoKCk6IG51bWJlcjtcbiAgbW9udGgobW9udGg6IG51bWJlciB8IHN0cmluZyk6IEtocm9ub3M7XG4gIG1vbnRoKG1vbnRoPzogbnVtYmVyIHwgc3RyaW5nKTogS2hyb25vcyB8IG51bWJlciB7XG4gICAgaWYgKCFtb250aCAmJiBtb250aCAhPT0gMCkge1xuICAgICAgcmV0dXJuIGdldE1vbnRoKHRoaXMuX2RhdGUsIHRoaXMuX2lzVVRDKTtcbiAgICB9XG5cbiAgICBsZXQgX21vbnRoID0gbW9udGg7XG5cbiAgICBpZiAoaXNTdHJpbmcobW9udGgpKSB7XG4gICAgICBjb25zdCBsb2NhbGUgPSB0aGlzLl9sb2NhbGUgfHwgZ2V0TG9jYWxlKCk7XG4gICAgICBfbW9udGggPSBsb2NhbGUubW9udGhzUGFyc2UobW9udGgpO1xuICAgIH1cblxuICAgIGlmIChpc051bWJlcihfbW9udGgpKSB7XG4gICAgICB0aGlzLl9kYXRlID0gY2xvbmVEYXRlKHNldE1vbnRoKHRoaXMuX2RhdGUsIF9tb250aCwgdGhpcy5faXNVVEMpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKiBAZGVwcmVjYXRlZCAqL1xuICBob3VyKCk6IG51bWJlcjtcbiAgaG91cihob3VyczogbnVtYmVyKTogS2hyb25vcztcbiAgaG91cihob3Vycz86IG51bWJlcik6IEtocm9ub3MgfCBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmhvdXJzKGhvdXJzKTtcbiAgfVxuXG4gIGhvdXJzKCk6IG51bWJlcjtcbiAgaG91cnMoaG91cnM6IG51bWJlcik6IEtocm9ub3M7XG4gIGhvdXJzKGhvdXJzPzogbnVtYmVyKTogS2hyb25vcyB8IG51bWJlciB7XG4gICAgaWYgKCFob3VycyAmJiBob3VycyAhPT0gMCkge1xuICAgICAgcmV0dXJuIGdldEhvdXJzKHRoaXMuX2RhdGUsIHRoaXMuX2lzVVRDKTtcbiAgICB9XG5cbiAgICB0aGlzLl9kYXRlID0gY2xvbmVEYXRlKHNldEhvdXJzKHRoaXMuX2RhdGUsIGhvdXJzLCB0aGlzLl9pc1VUQykpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKiogQGRlcHJlY2F0ZWQgKi9cbiAgbWludXRlKCk6IG51bWJlcjtcbiAgbWludXRlKG1pbnV0ZXM6IG51bWJlcik6IEtocm9ub3M7XG4gIG1pbnV0ZShtaW51dGVzPzogbnVtYmVyKTogS2hyb25vcyB8IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMubWludXRlcyhtaW51dGVzKTtcbiAgfVxuXG4gIG1pbnV0ZXMoKTogbnVtYmVyO1xuICBtaW51dGVzKG1pbnV0ZXM6IG51bWJlcik6IEtocm9ub3M7XG4gIG1pbnV0ZXMobWludXRlcz86IG51bWJlcik6IEtocm9ub3MgfCBudW1iZXIge1xuICAgIGlmICghbWludXRlcyAmJiBtaW51dGVzICE9PSAwKSB7XG4gICAgICByZXR1cm4gZ2V0TWludXRlcyh0aGlzLl9kYXRlLCB0aGlzLl9pc1VUQyk7XG4gICAgfVxuXG4gICAgdGhpcy5fZGF0ZSA9IGNsb25lRGF0ZShzZXRNaW51dGVzKHRoaXMuX2RhdGUsIG1pbnV0ZXMsIHRoaXMuX2lzVVRDKSk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKiBAZGVwcmVjYXRlZCAqL1xuICBzZWNvbmQoKTogbnVtYmVyO1xuICBzZWNvbmQoc2Vjb25kczogbnVtYmVyKTogS2hyb25vcztcbiAgc2Vjb25kKHNlY29uZHM/OiBudW1iZXIpOiBLaHJvbm9zIHwgbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5zZWNvbmRzKHNlY29uZHMpO1xuICB9XG5cbiAgc2Vjb25kcygpOiBudW1iZXI7XG4gIHNlY29uZHMoc2Vjb25kczogbnVtYmVyKTogS2hyb25vcztcbiAgc2Vjb25kcyhzZWNvbmRzPzogbnVtYmVyKTogS2hyb25vcyB8IG51bWJlciB7XG4gICAgaWYgKCFzZWNvbmRzICYmIHNlY29uZHMgIT09IDApIHtcbiAgICAgIHJldHVybiBnZXRTZWNvbmRzKHRoaXMuX2RhdGUsIHRoaXMuX2lzVVRDKTtcbiAgICB9XG5cbiAgICB0aGlzLl9kYXRlID0gY2xvbmVEYXRlKHNldFNlY29uZHModGhpcy5fZGF0ZSwgc2Vjb25kcywgdGhpcy5faXNVVEMpKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqIEBkZXByZWNhdGVkICovXG4gIG1pbGxpc2Vjb25kKCk6IG51bWJlcjtcbiAgbWlsbGlzZWNvbmQobXM6IG51bWJlcik6IEtocm9ub3M7XG4gIG1pbGxpc2Vjb25kKG1zPzogbnVtYmVyKTogS2hyb25vcyB8IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMubWlsbGlzZWNvbmRzKG1zKTtcbiAgfVxuXG4gIG1pbGxpc2Vjb25kcygpOiBudW1iZXI7XG4gIG1pbGxpc2Vjb25kcyhzZWNvbmRzOiBudW1iZXIpOiBLaHJvbm9zO1xuICBtaWxsaXNlY29uZHMoc2Vjb25kcz86IG51bWJlcik6IEtocm9ub3MgfCBudW1iZXIge1xuICAgIGlmICghc2Vjb25kcyAmJiBzZWNvbmRzICE9PSAwKSB7XG4gICAgICByZXR1cm4gZ2V0TWlsbGlzZWNvbmRzKHRoaXMuX2RhdGUsIHRoaXMuX2lzVVRDKTtcbiAgICB9XG5cbiAgICB0aGlzLl9kYXRlID0gY2xvbmVEYXRlKHNldE1pbGxpc2Vjb25kcyh0aGlzLl9kYXRlLCBzZWNvbmRzLCB0aGlzLl9pc1VUQykpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvLyBEYXlcblxuICBkYXRlKCk6IG51bWJlcjtcbiAgZGF0ZShkYXRlOiBudW1iZXIpOiBLaHJvbm9zO1xuICBkYXRlKGRhdGU/OiBudW1iZXIpOiBLaHJvbm9zIHwgbnVtYmVyIHtcbiAgICBpZiAoIWRhdGUgJiYgZGF0ZSAhPT0gMCkge1xuICAgICAgcmV0dXJuIGdldERhdGUodGhpcy5fZGF0ZSwgdGhpcy5faXNVVEMpO1xuICAgIH1cblxuICAgIHRoaXMuX2RhdGUgPSBjbG9uZURhdGUoc2V0RGF0ZSh0aGlzLl9kYXRlLCBkYXRlLCB0aGlzLl9pc1VUQykpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBkYXkoKTogbnVtYmVyIDtcbiAgZGF5KGlucHV0OiBudW1iZXIgfCBzdHJpbmcpOiBLaHJvbm9zIDtcbiAgZGF5KGlucHV0PzogbnVtYmVyIHwgc3RyaW5nKTogS2hyb25vcyB8IG51bWJlciB7XG4gICAgaWYgKCFpbnB1dCAmJiBpbnB1dCAhPT0gMCkge1xuICAgICAgcmV0dXJuIGdldERheU9mV2Vlayh0aGlzLl9kYXRlLCB0aGlzLl9pc1VUQyk7XG4gICAgfVxuXG4gICAgbGV0IF9pbnB1dCA9IGlucHV0O1xuXG4gICAgaWYgKGlzU3RyaW5nKGlucHV0KSkge1xuICAgICAgX2lucHV0ID0gcGFyc2VXZWVrZGF5KGlucHV0LCB0aGlzLl9sb2NhbGUpO1xuICAgIH1cblxuICAgIGlmIChpc051bWJlcihfaW5wdXQpKSB7XG4gICAgICB0aGlzLl9kYXRlID0gc2V0RGF5T2ZXZWVrKHRoaXMuX2RhdGUsIF9pbnB1dCwgdGhpcy5fbG9jYWxlLCB0aGlzLl9pc1VUQyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICB3ZWVrZGF5KCk6IG51bWJlciA7XG4gIHdlZWtkYXkodmFsOiBudW1iZXIpOiBLaHJvbm9zIDtcbiAgd2Vla2RheSh2YWw/OiBudW1iZXIpOiBLaHJvbm9zIHwgbnVtYmVyIHtcbiAgICBpZiAoIXZhbCAmJiB2YWwgIT09IDApIHtcbiAgICAgIHJldHVybiBnZXRMb2NhbGVEYXlPZldlZWsodGhpcy5fZGF0ZSwgdGhpcy5fbG9jYWxlLCB0aGlzLl9pc1VUQyk7XG4gICAgfVxuXG4gICAgdGhpcy5fZGF0ZSA9IHNldExvY2FsZURheU9mV2Vlayh0aGlzLl9kYXRlLCB2YWwsIHsgbG9jYWxlOiB0aGlzLl9sb2NhbGUsIGlzVVRDOiB0aGlzLl9pc1VUQyB9KTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgaXNvV2Vla2RheSgpOiBudW1iZXIgO1xuICBpc29XZWVrZGF5KHZhbDogbnVtYmVyIHwgc3RyaW5nKTogS2hyb25vcyA7XG4gIGlzb1dlZWtkYXkodmFsPzogbnVtYmVyIHwgc3RyaW5nKTogS2hyb25vcyB8IG51bWJlciB7XG4gICAgaWYgKCF2YWwgJiYgdmFsICE9PSAwKSB7XG4gICAgICByZXR1cm4gZ2V0SVNPRGF5T2ZXZWVrKHRoaXMuX2RhdGUpO1xuICAgIH1cblxuICAgIHRoaXMuX2RhdGUgPSBzZXRJU09EYXlPZldlZWsodGhpcy5fZGF0ZSwgdmFsKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgZGF5T2ZZZWFyKCk6IG51bWJlcjtcbiAgZGF5T2ZZZWFyKHZhbDogbnVtYmVyKTogS2hyb25vcztcbiAgZGF5T2ZZZWFyKHZhbD86IG51bWJlcik6IEtocm9ub3MgfCBudW1iZXIge1xuICAgIGlmICghdmFsICYmIHZhbCAhPT0gMCkge1xuICAgICAgcmV0dXJuIGdldERheU9mWWVhcih0aGlzLl9kYXRlKTtcbiAgICB9XG5cbiAgICB0aGlzLl9kYXRlID0gc2V0RGF5T2ZZZWFyKHRoaXMuX2RhdGUsIHZhbCk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8vIFdlZWtcblxuICB3ZWVrKCk6IG51bWJlcjtcbiAgd2VlayhpbnB1dDogbnVtYmVyKTogS2hyb25vcztcbiAgd2VlayhpbnB1dD86IG51bWJlcik6IEtocm9ub3MgfCBudW1iZXIge1xuICAgIGlmICghaW5wdXQgJiYgaW5wdXQgIT09IDApIHtcbiAgICAgIHJldHVybiBnZXRXZWVrKHRoaXMuX2RhdGUsIHRoaXMuX2xvY2FsZSk7XG4gICAgfVxuXG4gICAgdGhpcy5fZGF0ZSA9IHNldFdlZWsodGhpcy5fZGF0ZSwgaW5wdXQsIHRoaXMuX2xvY2FsZSk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKiBAZGVwcmVjYXRlZCAqL1xuICB3ZWVrcygpOiBudW1iZXI7XG4gIHdlZWtzKGlucHV0OiBudW1iZXIpOiBLaHJvbm9zO1xuICB3ZWVrcyhpbnB1dD86IG51bWJlcik6IEtocm9ub3MgfCBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLndlZWsoaW5wdXQpO1xuICB9XG5cbiAgaXNvV2VlaygpOiBudW1iZXIgO1xuICBpc29XZWVrKHZhbDogbnVtYmVyKTogS2hyb25vcyA7XG4gIGlzb1dlZWsodmFsPzogbnVtYmVyKTogS2hyb25vcyB8IG51bWJlciB7XG4gICAgaWYgKCF2YWwgJiYgdmFsICE9PSAwKSB7XG4gICAgICByZXR1cm4gZ2V0SVNPV2Vlayh0aGlzLl9kYXRlKTtcbiAgICB9XG5cbiAgICB0aGlzLl9kYXRlID0gc2V0SVNPV2Vlayh0aGlzLl9kYXRlLCB2YWwpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKiogQGRlcHJlY2F0ZWQgKi9cbiAgaXNvV2Vla3MoKTogbnVtYmVyIDtcbiAgaXNvV2Vla3ModmFsOiBudW1iZXIpOiBLaHJvbm9zIDtcbiAgaXNvV2Vla3ModmFsPzogbnVtYmVyKTogS2hyb25vcyB8IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuaXNvV2Vlayh2YWwpO1xuICB9XG5cbiAgd2Vla3NJblllYXIoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gZ2V0V2Vla3NJblllYXIodGhpcy5fZGF0ZSwgdGhpcy5faXNVVEMsIHRoaXMuX2xvY2FsZSk7XG4gIH1cblxuICBpc29XZWVrc0luWWVhcigpOiBudW1iZXIge1xuICAgIHJldHVybiBnZXRJU09XZWVrc0luWWVhcih0aGlzLl9kYXRlLCB0aGlzLl9pc1VUQyk7XG4gIH1cblxuXG4gIGRheXNJbk1vbnRoKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIGRheXNJbk1vbnRoKGdldEZ1bGxZZWFyKHRoaXMuX2RhdGUsIHRoaXMuX2lzVVRDKSwgZ2V0TW9udGgodGhpcy5fZGF0ZSwgdGhpcy5faXNVVEMpKTtcbiAgfVxuXG5cbiAgcXVhcnRlcigpOiBudW1iZXI7XG4gIHF1YXJ0ZXIodmFsOiBudW1iZXIpOiBLaHJvbm9zO1xuICBxdWFydGVyKHZhbD86IG51bWJlcik6IEtocm9ub3MgfCBudW1iZXIge1xuICAgIGlmICghdmFsICYmIHZhbCAhPT0gMCkge1xuICAgICAgcmV0dXJuIGdldFF1YXJ0ZXIodGhpcy5fZGF0ZSwgdGhpcy5faXNVVEMpO1xuICAgIH1cblxuICAgIHRoaXMuX2RhdGUgPSBzZXRRdWFydGVyKHRoaXMuX2RhdGUsIHZhbCwgdGhpcy5faXNVVEMpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKiogQGRlcHJlY2F0ZWQgKi9cbiAgcXVhcnRlcnMoKTogbnVtYmVyO1xuICBxdWFydGVycyh2YWw6IG51bWJlcik6IEtocm9ub3M7XG4gIHF1YXJ0ZXJzKHZhbD86IG51bWJlcik6IEtocm9ub3MgfCBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnF1YXJ0ZXIodmFsKTtcbiAgfVxuXG4gIHN0YXJ0T2YocGVyaW9kPzogTW9tZW50VW5pdE9mVGltZSk6IEtocm9ub3Mge1xuICAgIGNvbnN0IF9wZXIgPSBtYXBVbml0T2ZUaW1lKHBlcmlvZCk7XG4gICAgdGhpcy5fZGF0ZSA9IHN0YXJ0T2YodGhpcy5fZGF0ZSwgX3BlciwgdGhpcy5faXNVVEMpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxufVxuIl19
|