@po-ui/ng-templates 18.23.0 → 19.0.0-next.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/po-ui-ng-templates.mjs +139 -122
- package/fesm2022/po-ui-ng-templates.mjs.map +1 -1
- package/lib/components/po-modal-password-recovery/po-modal-password-recovery-base.component.d.ts +1 -1
- package/lib/components/po-modal-password-recovery/po-modal-password-recovery.service.d.ts +1 -1
- package/lib/components/po-page-blocked-user/po-page-blocked-user-base.component.d.ts +1 -1
- package/lib/components/po-page-blocked-user/po-page-blocked-user.component.d.ts +1 -1
- package/lib/components/po-page-change-password/po-page-change-password-base.component.d.ts +1 -1
- package/lib/components/po-page-change-password/po-page-change-password.service.d.ts +1 -1
- package/lib/components/po-page-dynamic-search/po-advanced-filter/po-advanced-filter-base.component.d.ts +1 -1
- package/lib/components/po-page-dynamic-search/po-page-dynamic-search-base.component.d.ts +1 -1
- package/lib/components/po-page-dynamic-search/po-page-dynamic-search.component.d.ts +2 -2
- package/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-custom-action.interface.d.ts +1 -1
- package/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-custom-table-action.interface.d.ts +1 -1
- package/lib/components/po-page-dynamic-table/po-page-dynamic-list-base.component.d.ts +2 -2
- package/lib/components/po-page-dynamic-table/po-page-dynamic-table.component.d.ts +2 -2
- package/lib/components/po-page-job-scheduler/po-page-job-scheduler-base.component.d.ts +1 -1
- package/lib/components/po-page-job-scheduler/po-page-job-scheduler-execution/po-page-job-scheduler-execution.component.d.ts +2 -2
- package/lib/components/po-page-job-scheduler/po-page-job-scheduler-parameters/po-job-scheduler-parameters-template/po-job-scheduler-parameters-template.directive.d.ts +1 -1
- package/lib/components/po-page-job-scheduler/po-page-job-scheduler-summary/po-page-job-scheduler-summary.component.d.ts +1 -1
- package/lib/components/po-page-login/po-page-login-base.component.d.ts +1 -1
- package/lib/components/po-page-login/po-page-login.service.d.ts +1 -1
- package/package.json +13 -15
- package/po-ui-ng-templates-19.0.0-next.0.tgz +0 -0
- package/schematics/ng-add/index.js +2 -2
- package/schematics/ng-add/index.js.map +1 -1
- package/schematics/ng-generate/po-page-blocked-user/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +4 -2
- package/schematics/ng-generate/po-page-blocked-user/files/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +2 -1
- package/schematics/ng-generate/po-page-blocked-user/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +4 -3
- package/schematics/ng-generate/po-page-blocked-user/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +0 -1
- package/schematics/ng-generate/po-page-blocked-user/index.js +1 -1
- package/schematics/ng-generate/po-page-blocked-user/index.js.map +1 -1
- package/schematics/ng-generate/po-page-change-password/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +4 -2
- package/schematics/ng-generate/po-page-change-password/files/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +2 -1
- package/schematics/ng-generate/po-page-change-password/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +4 -3
- package/schematics/ng-generate/po-page-change-password/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +0 -1
- package/schematics/ng-generate/po-page-change-password/index.js +1 -1
- package/schematics/ng-generate/po-page-change-password/index.js.map +1 -1
- package/schematics/ng-generate/po-page-dynamic-detail/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +4 -2
- package/schematics/ng-generate/po-page-dynamic-detail/files/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +2 -1
- package/schematics/ng-generate/po-page-dynamic-detail/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +4 -3
- package/schematics/ng-generate/po-page-dynamic-detail/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +0 -1
- package/schematics/ng-generate/po-page-dynamic-detail/index.js +1 -1
- package/schematics/ng-generate/po-page-dynamic-detail/index.js.map +1 -1
- package/schematics/ng-generate/po-page-dynamic-edit/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +4 -2
- package/schematics/ng-generate/po-page-dynamic-edit/files/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +2 -1
- package/schematics/ng-generate/po-page-dynamic-edit/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +4 -3
- package/schematics/ng-generate/po-page-dynamic-edit/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +0 -1
- package/schematics/ng-generate/po-page-dynamic-edit/index.js +1 -1
- package/schematics/ng-generate/po-page-dynamic-edit/index.js.map +1 -1
- package/schematics/ng-generate/po-page-dynamic-search/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +4 -2
- package/schematics/ng-generate/po-page-dynamic-search/files/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +2 -1
- package/schematics/ng-generate/po-page-dynamic-search/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +4 -3
- package/schematics/ng-generate/po-page-dynamic-search/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +0 -1
- package/schematics/ng-generate/po-page-dynamic-search/index.js +1 -1
- package/schematics/ng-generate/po-page-dynamic-search/index.js.map +1 -1
- package/schematics/ng-generate/po-page-dynamic-table/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +4 -2
- package/schematics/ng-generate/po-page-dynamic-table/files/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +2 -1
- package/schematics/ng-generate/po-page-dynamic-table/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +4 -3
- package/schematics/ng-generate/po-page-dynamic-table/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +0 -1
- package/schematics/ng-generate/po-page-dynamic-table/index.js +1 -1
- package/schematics/ng-generate/po-page-dynamic-table/index.js.map +1 -1
- package/schematics/ng-generate/po-page-job-scheduler/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +4 -2
- package/schematics/ng-generate/po-page-job-scheduler/files/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +2 -1
- package/schematics/ng-generate/po-page-job-scheduler/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +4 -3
- package/schematics/ng-generate/po-page-job-scheduler/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +0 -1
- package/schematics/ng-generate/po-page-job-scheduler/index.js +1 -1
- package/schematics/ng-generate/po-page-job-scheduler/index.js.map +1 -1
- package/schematics/ng-generate/po-page-login/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +4 -2
- package/schematics/ng-generate/po-page-login/files/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +2 -1
- package/schematics/ng-generate/po-page-login/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +4 -3
- package/schematics/ng-generate/po-page-login/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +0 -1
- package/schematics/ng-generate/po-page-login/index.js +1 -1
- package/schematics/ng-generate/po-page-login/index.js.map +1 -1
- package/esm2022/lib/components/components.module.mjs +0 -84
- package/esm2022/lib/components/index.mjs +0 -12
- package/esm2022/lib/components/po-modal-password-recovery/enums/po-modal-password-recovery-modal-content.enum.mjs +0 -17
- package/esm2022/lib/components/po-modal-password-recovery/enums/po-modal-password-recovery-type.enum.mjs +0 -17
- package/esm2022/lib/components/po-modal-password-recovery/index.mjs +0 -8
- package/esm2022/lib/components/po-modal-password-recovery/interfaces/po-modal-password-recovery.interface.mjs +0 -2
- package/esm2022/lib/components/po-modal-password-recovery/literals/i18n/po-modal-password-recovery-literals.mjs +0 -119
- package/esm2022/lib/components/po-modal-password-recovery/po-modal-password-recovery-base.component.mjs +0 -293
- package/esm2022/lib/components/po-modal-password-recovery/po-modal-password-recovery-error-message/po-modal-password-recovery-error-message.component.mjs +0 -34
- package/esm2022/lib/components/po-modal-password-recovery/po-modal-password-recovery.component.mjs +0 -451
- package/esm2022/lib/components/po-modal-password-recovery/po-modal-password-recovery.module.mjs +0 -29
- package/esm2022/lib/components/po-modal-password-recovery/po-modal-password-recovery.service.mjs +0 -18
- package/esm2022/lib/components/po-page-background/index.mjs +0 -3
- package/esm2022/lib/components/po-page-background/po-page-background.component.mjs +0 -191
- package/esm2022/lib/components/po-page-background/po-page-background.module.mjs +0 -27
- package/esm2022/lib/components/po-page-blocked-user/enums/po-page-blocked-user-reason.enum.mjs +0 -17
- package/esm2022/lib/components/po-page-blocked-user/index.mjs +0 -8
- package/esm2022/lib/components/po-page-blocked-user/interfaces/po-page-blocked-user-reason-params.interface.mjs +0 -2
- package/esm2022/lib/components/po-page-blocked-user/literals/i18n/po-page-blocked-user-literals.mjs +0 -78
- package/esm2022/lib/components/po-page-blocked-user/po-page-blocked-user-base.component.mjs +0 -197
- package/esm2022/lib/components/po-page-blocked-user/po-page-blocked-user-contacts/po-page-blocked-user-contacts.component.mjs +0 -105
- package/esm2022/lib/components/po-page-blocked-user/po-page-blocked-user-reason/po-page-blocked-user-reason.component.mjs +0 -107
- package/esm2022/lib/components/po-page-blocked-user/po-page-blocked-user.component.mjs +0 -108
- package/esm2022/lib/components/po-page-blocked-user/po-page-blocked-user.module.mjs +0 -29
- package/esm2022/lib/components/po-page-change-password/index.mjs +0 -7
- package/esm2022/lib/components/po-page-change-password/interfaces/po-page-change-password-recovery.interface.mjs +0 -2
- package/esm2022/lib/components/po-page-change-password/interfaces/po-page-change-password-requirement.interface.mjs +0 -2
- package/esm2022/lib/components/po-page-change-password/interfaces/po-page-change-password.interface.mjs +0 -2
- package/esm2022/lib/components/po-page-change-password/literals/i18n/po-page-change-password-literals.mjs +0 -79
- package/esm2022/lib/components/po-page-change-password/po-page-change-password-base.component.mjs +0 -300
- package/esm2022/lib/components/po-page-change-password/po-page-change-password.component.mjs +0 -401
- package/esm2022/lib/components/po-page-change-password/po-page-change-password.module.mjs +0 -30
- package/esm2022/lib/components/po-page-change-password/po-page-change-password.service.mjs +0 -18
- package/esm2022/lib/components/po-page-dynamic-detail/index.mjs +0 -10
- package/esm2022/lib/components/po-page-dynamic-detail/interfaces/po-page-dynamic-detail-actions.interface.mjs +0 -2
- package/esm2022/lib/components/po-page-dynamic-detail/interfaces/po-page-dynamic-detail-before-back.interface.mjs +0 -2
- package/esm2022/lib/components/po-page-dynamic-detail/interfaces/po-page-dynamic-detail-before-edit.interface.mjs +0 -2
- package/esm2022/lib/components/po-page-dynamic-detail/interfaces/po-page-dynamic-detail-before-remove.interface.mjs +0 -2
- package/esm2022/lib/components/po-page-dynamic-detail/interfaces/po-page-dynamic-detail-field.interface.mjs +0 -2
- package/esm2022/lib/components/po-page-dynamic-detail/interfaces/po-page-dynamic-detail-metadata.interface.mjs +0 -2
- package/esm2022/lib/components/po-page-dynamic-detail/interfaces/po-page-dynamic-detail-options.interface.mjs +0 -2
- package/esm2022/lib/components/po-page-dynamic-detail/po-page-dynamic-detail-actions.service.mjs +0 -44
- package/esm2022/lib/components/po-page-dynamic-detail/po-page-dynamic-detail.component.mjs +0 -546
- package/esm2022/lib/components/po-page-dynamic-detail/po-page-dynamic-detail.module.mjs +0 -54
- package/esm2022/lib/components/po-page-dynamic-edit/index.mjs +0 -11
- package/esm2022/lib/components/po-page-dynamic-edit/interfaces/po-page-dynamic-edit-actions.interface.mjs +0 -2
- package/esm2022/lib/components/po-page-dynamic-edit/interfaces/po-page-dynamic-edit-before-cancel.interface.mjs +0 -2
- package/esm2022/lib/components/po-page-dynamic-edit/interfaces/po-page-dynamic-edit-before-save-new.interface.mjs +0 -2
- package/esm2022/lib/components/po-page-dynamic-edit/interfaces/po-page-dynamic-edit-before-save.interface.mjs +0 -2
- package/esm2022/lib/components/po-page-dynamic-edit/interfaces/po-page-dynamic-edit-field.interface.mjs +0 -2
- package/esm2022/lib/components/po-page-dynamic-edit/interfaces/po-page-dynamic-edit-literals.interface.mjs +0 -2
- package/esm2022/lib/components/po-page-dynamic-edit/interfaces/po-page-dynamic-edit-metadata.interface.mjs +0 -2
- package/esm2022/lib/components/po-page-dynamic-edit/interfaces/po-page-dynamic-edit-options.interface.mjs +0 -2
- package/esm2022/lib/components/po-page-dynamic-edit/po-page-dynamic-edit-actions.service.mjs +0 -44
- package/esm2022/lib/components/po-page-dynamic-edit/po-page-dynamic-edit.component.mjs +0 -889
- package/esm2022/lib/components/po-page-dynamic-edit/po-page-dynamic-edit.module.mjs +0 -60
- package/esm2022/lib/components/po-page-dynamic-search/index.mjs +0 -7
- package/esm2022/lib/components/po-page-dynamic-search/po-advanced-filter/po-advanced-filter-base.component.mjs +0 -133
- package/esm2022/lib/components/po-page-dynamic-search/po-advanced-filter/po-advanced-filter-literals.interface.mjs +0 -2
- package/esm2022/lib/components/po-page-dynamic-search/po-advanced-filter/po-advanced-filter.component.mjs +0 -76
- package/esm2022/lib/components/po-page-dynamic-search/po-page-dynamic-search-base.component.mjs +0 -365
- package/esm2022/lib/components/po-page-dynamic-search/po-page-dynamic-search-filters.interface.mjs +0 -2
- package/esm2022/lib/components/po-page-dynamic-search/po-page-dynamic-search-literals.interface.mjs +0 -2
- package/esm2022/lib/components/po-page-dynamic-search/po-page-dynamic-search-options.interface.mjs +0 -2
- package/esm2022/lib/components/po-page-dynamic-search/po-page-dynamic-search.component.mjs +0 -349
- package/esm2022/lib/components/po-page-dynamic-search/po-page-dynamic-search.interface.mjs +0 -2
- package/esm2022/lib/components/po-page-dynamic-search/po-page-dynamic-search.module.mjs +0 -52
- package/esm2022/lib/components/po-page-dynamic-table/index.mjs +0 -16
- package/esm2022/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-actions.interface.mjs +0 -2
- package/esm2022/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-before-detail.interface.mjs +0 -2
- package/esm2022/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-before-duplicate.interface.mjs +0 -2
- package/esm2022/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-before-edit.interface.mjs +0 -2
- package/esm2022/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-before-new.interface.mjs +0 -2
- package/esm2022/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-before-remove-all.interface.mjs +0 -2
- package/esm2022/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-before-remove.interface.mjs +0 -2
- package/esm2022/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-custom-action.interface.mjs +0 -2
- package/esm2022/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-custom-table-action.interface.mjs +0 -2
- package/esm2022/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-field.interface.mjs +0 -2
- package/esm2022/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-filters.interface.mjs +0 -2
- package/esm2022/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-metadata.interface.mjs +0 -2
- package/esm2022/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-options.interface.mjs +0 -2
- package/esm2022/lib/components/po-page-dynamic-table/po-page-dynamic-list-base.component.mjs +0 -271
- package/esm2022/lib/components/po-page-dynamic-table/po-page-dynamic-table-actions.service.mjs +0 -59
- package/esm2022/lib/components/po-page-dynamic-table/po-page-dynamic-table-literals.mjs +0 -63
- package/esm2022/lib/components/po-page-dynamic-table/po-page-dynamic-table.component.mjs +0 -1257
- package/esm2022/lib/components/po-page-dynamic-table/po-page-dynamic-table.module.mjs +0 -50
- package/esm2022/lib/components/po-page-job-scheduler/index.mjs +0 -6
- package/esm2022/lib/components/po-page-job-scheduler/interfaces/po-job-scheduler-internal.interface.mjs +0 -2
- package/esm2022/lib/components/po-page-job-scheduler/interfaces/po-job-scheduler.interface.mjs +0 -2
- package/esm2022/lib/components/po-page-job-scheduler/po-page-job-scheduler-base.component.mjs +0 -302
- package/esm2022/lib/components/po-page-job-scheduler/po-page-job-scheduler-execution/po-page-job-scheduler-execution.component.mjs +0 -393
- package/esm2022/lib/components/po-page-job-scheduler/po-page-job-scheduler-internal.mjs +0 -13
- package/esm2022/lib/components/po-page-job-scheduler/po-page-job-scheduler-literals.mjs +0 -195
- package/esm2022/lib/components/po-page-job-scheduler/po-page-job-scheduler-lookup.service.mjs +0 -22
- package/esm2022/lib/components/po-page-job-scheduler/po-page-job-scheduler-parameters/index.mjs +0 -2
- package/esm2022/lib/components/po-page-job-scheduler/po-page-job-scheduler-parameters/po-job-scheduler-parameters-template/index.mjs +0 -2
- package/esm2022/lib/components/po-page-job-scheduler/po-page-job-scheduler-parameters/po-job-scheduler-parameters-template/po-job-scheduler-parameters-template.directive.mjs +0 -92
- package/esm2022/lib/components/po-page-job-scheduler/po-page-job-scheduler-parameters/po-page-job-scheduler-parameters.component.mjs +0 -79
- package/esm2022/lib/components/po-page-job-scheduler/po-page-job-scheduler-summary/index.mjs +0 -2
- package/esm2022/lib/components/po-page-job-scheduler/po-page-job-scheduler-summary/po-job-scheduler-summary-template/index.mjs +0 -2
- package/esm2022/lib/components/po-page-job-scheduler/po-page-job-scheduler-summary/po-job-scheduler-summary-template/po-job-scheduler-summary-template.directive.mjs +0 -44
- package/esm2022/lib/components/po-page-job-scheduler/po-page-job-scheduler-summary/po-page-job-scheduler-summary.component.mjs +0 -211
- package/esm2022/lib/components/po-page-job-scheduler/po-page-job-scheduler.component.mjs +0 -418
- package/esm2022/lib/components/po-page-job-scheduler/po-page-job-scheduler.module.mjs +0 -85
- package/esm2022/lib/components/po-page-job-scheduler/po-page-job-scheduler.service.mjs +0 -224
- package/esm2022/lib/components/po-page-login/enums/po-page-login-authentication-type.enum.mjs +0 -15
- package/esm2022/lib/components/po-page-login/index.mjs +0 -8
- package/esm2022/lib/components/po-page-login/interfaces/po-page-login-custom-field.interface.mjs +0 -2
- package/esm2022/lib/components/po-page-login/interfaces/po-page-login-literals.interface.mjs +0 -2
- package/esm2022/lib/components/po-page-login/interfaces/po-page-login-recovery.interface.mjs +0 -2
- package/esm2022/lib/components/po-page-login/interfaces/po-page-login.interface.mjs +0 -2
- package/esm2022/lib/components/po-page-login/po-page-login-base.component.mjs +0 -1099
- package/esm2022/lib/components/po-page-login/po-page-login-popover/po-page-login-popover.component.mjs +0 -137
- package/esm2022/lib/components/po-page-login/po-page-login.component.mjs +0 -483
- package/esm2022/lib/components/po-page-login/po-page-login.module.mjs +0 -31
- package/esm2022/lib/components/po-page-login/po-page-login.service.mjs +0 -32
- package/esm2022/lib/index.mjs +0 -4
- package/esm2022/lib/po-templates.module.mjs +0 -18
- package/esm2022/lib/services/index.mjs +0 -4
- package/esm2022/lib/services/po-page-customization/index.mjs +0 -4
- package/esm2022/lib/services/po-page-customization/po-page-customization.module.mjs +0 -23
- package/esm2022/lib/services/po-page-customization/po-page-customization.service.mjs +0 -86
- package/esm2022/lib/services/po-page-customization/po-page-dynamic-options.interface.mjs +0 -2
- package/esm2022/lib/services/po-page-dynamic/index.mjs +0 -3
- package/esm2022/lib/services/po-page-dynamic/po-page-dynamic-literals.interface.mjs +0 -2
- package/esm2022/lib/services/po-page-dynamic/po-page-dynamic.module.mjs +0 -23
- package/esm2022/lib/services/po-page-dynamic/po-page-dynamic.service.mjs +0 -106
- package/esm2022/lib/services/services.module.mjs +0 -18
- package/esm2022/lib/utils/util.mjs +0 -428
- package/esm2022/po-ui-ng-templates.mjs +0 -5
- package/esm2022/public-api.mjs +0 -2
- package/po-ui-ng-templates-18.23.0.tgz +0 -0
|
@@ -1,428 +0,0 @@
|
|
|
1
|
-
import { poLocales, poLocaleDefault } from '@po-ui/ng-components';
|
|
2
|
-
/**
|
|
3
|
-
* Retorna o idioma atual do navegador
|
|
4
|
-
*/
|
|
5
|
-
export function getBrowserLanguage() {
|
|
6
|
-
// navigator.userLanguage is the value for IE10
|
|
7
|
-
return navigator.language || navigator['userLanguage'];
|
|
8
|
-
}
|
|
9
|
-
/**
|
|
10
|
-
* Retorna o idioma do navegador, com somente as duas primeiras letras. Por exemplo: "pt" ou "es".
|
|
11
|
-
*
|
|
12
|
-
* Caso o valor retornado pelo navegador não estiver dentro dos idiomas suportados pelo PO,
|
|
13
|
-
* será retornado a linguagem padrão (poLocaleDefault).
|
|
14
|
-
*/
|
|
15
|
-
export function getShortBrowserLanguage() {
|
|
16
|
-
const language = (getBrowserLanguage() || poLocaleDefault).toLowerCase().substring(0, 2);
|
|
17
|
-
if (!poLocales.includes(language)) {
|
|
18
|
-
return poLocaleDefault;
|
|
19
|
-
}
|
|
20
|
-
return language;
|
|
21
|
-
}
|
|
22
|
-
export function convertToBoolean(val) {
|
|
23
|
-
if (typeof val === 'string') {
|
|
24
|
-
val = val.toLowerCase().trim();
|
|
25
|
-
return val === 'true' || val === 'on' || val === '';
|
|
26
|
-
}
|
|
27
|
-
if (typeof val === 'number') {
|
|
28
|
-
return val === 1;
|
|
29
|
-
}
|
|
30
|
-
return !!val;
|
|
31
|
-
}
|
|
32
|
-
export function convertToInt(value, valueDefault) {
|
|
33
|
-
const validNumber = parseInt(value, 10);
|
|
34
|
-
const validDefaultValue = parseInt(valueDefault, 10);
|
|
35
|
-
const defaultValue = validDefaultValue || validDefaultValue === 0 ? validDefaultValue : undefined;
|
|
36
|
-
return validNumber || validNumber === 0 ? validNumber : defaultValue;
|
|
37
|
-
}
|
|
38
|
-
export function isTypeof(object, type) {
|
|
39
|
-
return typeof object === type;
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
*
|
|
43
|
-
* @param fn Função que será executada dentro do contexto. Podendo ser o nome da função
|
|
44
|
-
* ou a referência da mesma.
|
|
45
|
-
*
|
|
46
|
-
* @param context Contexto do qual a função será executada.
|
|
47
|
-
*/
|
|
48
|
-
export function callFunction(fn, context, param) {
|
|
49
|
-
if (isTypeof(fn, 'function')) {
|
|
50
|
-
fn.call(context, param);
|
|
51
|
-
}
|
|
52
|
-
else {
|
|
53
|
-
context[fn](param);
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
export function convertIsoToDate(value, start, end) {
|
|
57
|
-
if (value) {
|
|
58
|
-
const day = parseInt(value.substring(8, 10), 10);
|
|
59
|
-
const month = parseInt(value.substring(5, 7), 10);
|
|
60
|
-
const year = parseInt(value.substring(0, 4), 10);
|
|
61
|
-
if (start) {
|
|
62
|
-
const date = new Date(year, month - 1, day, 0, 0, 0);
|
|
63
|
-
setYearFrom0To100(date, year);
|
|
64
|
-
return date;
|
|
65
|
-
}
|
|
66
|
-
else if (end) {
|
|
67
|
-
const date = new Date(year, month - 1, day, 23, 59, 59);
|
|
68
|
-
setYearFrom0To100(date, year);
|
|
69
|
-
return date;
|
|
70
|
-
}
|
|
71
|
-
else {
|
|
72
|
-
const milliseconds = Date.parse(value);
|
|
73
|
-
const timezone = new Date().getTimezoneOffset() * 60000;
|
|
74
|
-
return new Date(milliseconds + timezone);
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
export function convertDateToISOExtended(date, time) {
|
|
79
|
-
if (date) {
|
|
80
|
-
const getMonth = date.getMonth() + 1;
|
|
81
|
-
const day = date.getDate() < 10 ? '0' + date.getDate() : date.getDate();
|
|
82
|
-
const month = getMonth < 10 ? '0' + getMonth : getMonth;
|
|
83
|
-
const year = formatYear(date.getFullYear());
|
|
84
|
-
const dateString = date.toString();
|
|
85
|
-
if (time) {
|
|
86
|
-
return year + '-' + month + '-' + day + time;
|
|
87
|
-
}
|
|
88
|
-
else {
|
|
89
|
-
return (year +
|
|
90
|
-
'-' +
|
|
91
|
-
month +
|
|
92
|
-
'-' +
|
|
93
|
-
day +
|
|
94
|
-
'T' +
|
|
95
|
-
dateString.substring(16, 24) +
|
|
96
|
-
dateString.substring(28, 31) +
|
|
97
|
-
':' +
|
|
98
|
-
dateString.substring(31, 33));
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
else {
|
|
102
|
-
return null;
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
/**
|
|
106
|
-
* Transforma o ano em uma string no formato yyyy e caso o ano seja menor que 1000 preenche com zeros a esquerda.
|
|
107
|
-
*
|
|
108
|
-
* @param year Ano
|
|
109
|
-
*/
|
|
110
|
-
export function formatYear(year) {
|
|
111
|
-
if (year >= 1000) {
|
|
112
|
-
return year.toString();
|
|
113
|
-
}
|
|
114
|
-
if (year > 99 && year < 1000) {
|
|
115
|
-
return `0${year}`;
|
|
116
|
-
}
|
|
117
|
-
if (year > 9 && year < 100) {
|
|
118
|
-
return `00${year}`;
|
|
119
|
-
}
|
|
120
|
-
if (year >= 0 && year < 10) {
|
|
121
|
-
return `000${year}`;
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
export function isEquals(value, comparedValue) {
|
|
125
|
-
return JSON.stringify(value) === JSON.stringify(comparedValue);
|
|
126
|
-
}
|
|
127
|
-
/**
|
|
128
|
-
* Caso o ano original da data seja entre 0 e 100 atribui esse valor ao ano, pois o `new Date` do javascript transforma o ano para 190X.
|
|
129
|
-
*
|
|
130
|
-
* @param date Data
|
|
131
|
-
* @param year Ano original
|
|
132
|
-
*/
|
|
133
|
-
export function setYearFrom0To100(date, year) {
|
|
134
|
-
if (year >= 0 && year < 100) {
|
|
135
|
-
date.setFullYear(year);
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
export function sortOptionsByProperty(options, property) {
|
|
139
|
-
options.sort((optionA, optionB) => {
|
|
140
|
-
optionA = optionA[property].toString().toLowerCase();
|
|
141
|
-
optionB = optionB[property].toString().toLowerCase();
|
|
142
|
-
if (optionA < optionB) {
|
|
143
|
-
return -1;
|
|
144
|
-
}
|
|
145
|
-
if (optionA > optionB) {
|
|
146
|
-
return 1;
|
|
147
|
-
}
|
|
148
|
-
return 0;
|
|
149
|
-
});
|
|
150
|
-
}
|
|
151
|
-
export function removeDuplicatedOptions(list) {
|
|
152
|
-
for (let i = 0; i < list.length; i++) {
|
|
153
|
-
if (i === 0) {
|
|
154
|
-
continue;
|
|
155
|
-
}
|
|
156
|
-
if (list.findIndex(op => op.value === list[i].value) !== i) {
|
|
157
|
-
list.splice(i, 1);
|
|
158
|
-
i--;
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
export function removeUndefinedAndNullOptions(list) {
|
|
163
|
-
for (let i = 0; i < list.length; i++) {
|
|
164
|
-
if (list[i].value === undefined || list[i].value === null) {
|
|
165
|
-
list.splice(i, 1);
|
|
166
|
-
i--;
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
export function validValue(value) {
|
|
171
|
-
return (value !== null && value !== undefined && value !== '') || value === false;
|
|
172
|
-
}
|
|
173
|
-
export function isExternalLink(url) {
|
|
174
|
-
return url ? url.startsWith('http') : false;
|
|
175
|
-
}
|
|
176
|
-
export function openExternalLink(url) {
|
|
177
|
-
window.open(url, '_blank');
|
|
178
|
-
}
|
|
179
|
-
export function getFormattedLink(link) {
|
|
180
|
-
let formattedLink = '';
|
|
181
|
-
// Retira todos os pontos no começo da URL.
|
|
182
|
-
if (link) {
|
|
183
|
-
formattedLink = link.replace(/^(\.)+/g, '');
|
|
184
|
-
}
|
|
185
|
-
// Verifica se foi utilizado uma rota que não comece com barra.
|
|
186
|
-
if (!formattedLink.startsWith('/')) {
|
|
187
|
-
formattedLink = '/'.concat(formattedLink);
|
|
188
|
-
}
|
|
189
|
-
return formattedLink;
|
|
190
|
-
}
|
|
191
|
-
/**
|
|
192
|
-
* Método responsável por ordenar dois valores.
|
|
193
|
-
*
|
|
194
|
-
* @param leftSide Primeiro valor a ser comparado.
|
|
195
|
-
* @param rightSide Segundo valor a ser comparado.
|
|
196
|
-
* @param ascending Determina se será em ordem ascendente ou descendente.
|
|
197
|
-
*/
|
|
198
|
-
export function sortValues(leftSide, rightSide, ascending = true) {
|
|
199
|
-
if (ascending) {
|
|
200
|
-
if (leftSide < rightSide) {
|
|
201
|
-
return -1;
|
|
202
|
-
}
|
|
203
|
-
else if (leftSide > rightSide) {
|
|
204
|
-
return 1;
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
else if (ascending === false) {
|
|
208
|
-
if (leftSide < rightSide) {
|
|
209
|
-
return 1;
|
|
210
|
-
}
|
|
211
|
-
else if (leftSide > rightSide) {
|
|
212
|
-
return -1;
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
|
-
return 0;
|
|
216
|
-
}
|
|
217
|
-
export function validateDateRange(date, dateStart, dateEnd) {
|
|
218
|
-
if (dateStart && dateEnd) {
|
|
219
|
-
return date >= dateStart && date <= dateEnd;
|
|
220
|
-
}
|
|
221
|
-
else if (dateStart && !dateEnd) {
|
|
222
|
-
return date >= dateStart;
|
|
223
|
-
}
|
|
224
|
-
else if (!dateStart && dateEnd) {
|
|
225
|
-
return date <= dateEnd;
|
|
226
|
-
}
|
|
227
|
-
else {
|
|
228
|
-
return true;
|
|
229
|
-
}
|
|
230
|
-
}
|
|
231
|
-
export function capitalizeFirstLetter(text) {
|
|
232
|
-
return `${text.charAt(0).toUpperCase()}${text.slice(1)}`;
|
|
233
|
-
}
|
|
234
|
-
/**
|
|
235
|
-
* Mapeia um novo array apenas com as propriedades definidas pelo desenvolvedor baseado em um array de
|
|
236
|
-
* origem.
|
|
237
|
-
*
|
|
238
|
-
* Exemplo:
|
|
239
|
-
*
|
|
240
|
-
* ```
|
|
241
|
-
* const people = [
|
|
242
|
-
* { id: 1, name: 'Fulano', birthdate: '1980-11-01', genre: 'Male', city: 'São Paulo', dependents: 2 },
|
|
243
|
-
* { id: 2, name: 'Beltrano', birthdate: '1997-01-21', genre: 'Female', city: 'Joinville', dependents: 0 },
|
|
244
|
-
* { id: 3, name: 'Siclano', birthdate: '1995-07-15', genre: 'Male', city: 'Joinville', dependents: 0 }
|
|
245
|
-
* ];
|
|
246
|
-
*
|
|
247
|
-
* const properties = ['id', 'name'];
|
|
248
|
-
*
|
|
249
|
-
* const idAndName = mapArrayByProperties(people, properties);
|
|
250
|
-
*
|
|
251
|
-
* console.log(idAndName); // [{ id: 1, name: 'Fulano' }, { id: 2, name: 'Beltrano' }, { id: 3, name: 'Siclano' }]
|
|
252
|
-
* ```
|
|
253
|
-
*
|
|
254
|
-
* Um outro uso para o método é "parear" todos os objetos do array com as mesmas propriedades.
|
|
255
|
-
*
|
|
256
|
-
* ```
|
|
257
|
-
* const customers = [
|
|
258
|
-
* { id: 1, name: 'Fulano', city: 'São Paulo', dependents: 2 }, // sem genre
|
|
259
|
-
* { id: 2, name: 'Beltrano', genre: 'Female', city: 'Joinville' }, // sem dependents
|
|
260
|
-
* { id: 3, name: 'Siclano', genre: 'Male', city: 'Joinville', dependents: 0 }
|
|
261
|
-
* ];
|
|
262
|
-
* const properties = ['id', 'name', 'city', 'genre', 'dependents'];
|
|
263
|
-
*
|
|
264
|
-
* const pattern = mapArrayByProperties(customers, properties);
|
|
265
|
-
* console.log(pattern);
|
|
266
|
-
*
|
|
267
|
-
* // [
|
|
268
|
-
* // { id: 1, name: 'Fulano', city: 'São Paulo', genre: undefined, dependents: 2 },
|
|
269
|
-
* // { id: 2, name: 'Beltrano', city: 'Joinville', genre: 'Female', dependents: undefined },
|
|
270
|
-
* // { id: 3, name: 'Siclano', city: 'Joinville', genre: 'Male', dependents: 0 }
|
|
271
|
-
* // ]
|
|
272
|
-
* ```
|
|
273
|
-
*
|
|
274
|
-
* @param items {Array<any>} Array de items original.
|
|
275
|
-
* @param properties {Array<string>} Array de string com a lista de propriedades que devem ser retornadas.
|
|
276
|
-
*
|
|
277
|
-
* @returns Array<any>
|
|
278
|
-
*/
|
|
279
|
-
export function mapArrayByProperties(items = [], properties = []) {
|
|
280
|
-
return items.map(item => mapObjectByProperties(item, properties));
|
|
281
|
-
}
|
|
282
|
-
/**
|
|
283
|
-
* Mapeia um novo objeto apenas com as propriedades definidas pelo desenvolvedor.
|
|
284
|
-
*
|
|
285
|
-
* Exemplo:
|
|
286
|
-
*
|
|
287
|
-
* ```
|
|
288
|
-
* const person = { id: 1, name: 'Fulano', birthdate: '1980-11-01', genre: 'Male', city: 'São Paulo', dependents: 2 };
|
|
289
|
-
*
|
|
290
|
-
* const properties = ['id', 'name'];
|
|
291
|
-
*
|
|
292
|
-
* const idAndName = mapObjectByProperties(person, properties);
|
|
293
|
-
*
|
|
294
|
-
* console.log(idAndName); // { id: 1, name: 'Fulano' }
|
|
295
|
-
* ```
|
|
296
|
-
*
|
|
297
|
-
* @param object {Array<any>} Array de items original.
|
|
298
|
-
* @param properties {Array<string>} Array de string com a lista de propriedades que devem ser retornadas.
|
|
299
|
-
*
|
|
300
|
-
* @returns Array<any>
|
|
301
|
-
*/
|
|
302
|
-
export function mapObjectByProperties(object = {}, properties = []) {
|
|
303
|
-
const getSelectedProperties = (selectedProperties, property) => ({
|
|
304
|
-
...selectedProperties,
|
|
305
|
-
[property]: object[property]
|
|
306
|
-
});
|
|
307
|
-
return properties.reduce(getSelectedProperties, {});
|
|
308
|
-
}
|
|
309
|
-
/**
|
|
310
|
-
* Retorna os valores de um objeto dentro de um array.
|
|
311
|
-
*
|
|
312
|
-
* > Simula o Object.values(obj), o mesmo deve ser removido assim que a versão typescrit for atualizada.
|
|
313
|
-
*
|
|
314
|
-
* @param object Objeto de onde será pego os valores.
|
|
315
|
-
*/
|
|
316
|
-
export function valuesFromObject(object = {}) {
|
|
317
|
-
return Object.keys(object).map(property => object[property]);
|
|
318
|
-
}
|
|
319
|
-
/**
|
|
320
|
-
* adiciona 0 no tempo informado, caso menor q 10
|
|
321
|
-
*
|
|
322
|
-
* @param time
|
|
323
|
-
*/
|
|
324
|
-
export function addZero(time) {
|
|
325
|
-
if (!time) {
|
|
326
|
-
return '00';
|
|
327
|
-
}
|
|
328
|
-
if (time < 10) {
|
|
329
|
-
return `0${time}`;
|
|
330
|
-
}
|
|
331
|
-
return time;
|
|
332
|
-
}
|
|
333
|
-
/**
|
|
334
|
-
* Remove do objeto as propriedades especificadas.
|
|
335
|
-
*
|
|
336
|
-
* Exemplo:
|
|
337
|
-
*
|
|
338
|
-
* ```
|
|
339
|
-
* key: ['id', 'cpf']
|
|
340
|
-
* newItemValue: { id: '123', cpf: '456', name: 'Test' }
|
|
341
|
-
* Resultado: { name: 'Test' }
|
|
342
|
-
* ```
|
|
343
|
-
*
|
|
344
|
-
* @param keys lista de propriedades para ser removida do objeto.
|
|
345
|
-
* @param newItemValue objeto que se deseja remover as propriedades.
|
|
346
|
-
* @returns objeto sem as propriedades especificadas.
|
|
347
|
-
*/
|
|
348
|
-
export function removeKeysProperties(keys, newItemValue) {
|
|
349
|
-
keys.forEach(key => delete newItemValue[key]);
|
|
350
|
-
return newItemValue;
|
|
351
|
-
}
|
|
352
|
-
/**
|
|
353
|
-
* Remove objetos duplicados.
|
|
354
|
-
*
|
|
355
|
-
* Exemplo:
|
|
356
|
-
*
|
|
357
|
-
* ```
|
|
358
|
-
* item: [{country: 'japao'}, {country: 'brasil'} , {country: 'china'}]
|
|
359
|
-
* item2: [{country: 'chile'}, {country: 'brasil'}, {country: 'canada'}]
|
|
360
|
-
* key: 'country'
|
|
361
|
-
* Resultado:
|
|
362
|
-
* item2 = [{country: 'chile'}, {country: 'canada'} ]
|
|
363
|
-
* ```
|
|
364
|
-
*
|
|
365
|
-
* @param item lista comparada.
|
|
366
|
-
* @param item2 lista para remover items duplicados.
|
|
367
|
-
* @param key propriedade que será utilizada para realizar a comparação.
|
|
368
|
-
*/
|
|
369
|
-
export function removeDuplicateItems(item, item2, key) {
|
|
370
|
-
const uniqueValues = new Set(item.map(entry => entry[key]));
|
|
371
|
-
item2.splice(0, item2.length, ...item2.filter(entry => !uniqueValues.has(entry[key])));
|
|
372
|
-
}
|
|
373
|
-
/**
|
|
374
|
-
* Recebe dois arrays de objetos e remove os itens duplicados utilizando uma propriedade(key) para comparação.
|
|
375
|
-
*
|
|
376
|
-
* Exemplo:
|
|
377
|
-
*
|
|
378
|
-
* ```
|
|
379
|
-
* item: [{country: 'japao'}, {country: 'brasil'} , {country: 'china'}]
|
|
380
|
-
* item2: [{country: 'chile'}, {country: 'brasil'}, {country: 'canada'}]
|
|
381
|
-
* key: '[country]'
|
|
382
|
-
* Resultado do retorno:
|
|
383
|
-
* [{country: 'chile'}, {country: 'canada'}, {country: 'japao'}, {country: 'china'}]
|
|
384
|
-
* ```
|
|
385
|
-
*
|
|
386
|
-
*
|
|
387
|
-
* @param item : primeira lista de itens.
|
|
388
|
-
* @param item2 : segunda lista de itens.
|
|
389
|
-
* @param key : um array de propriedades que vão ser utilizadas para a comparação.
|
|
390
|
-
*/
|
|
391
|
-
export function removeDuplicateItemsWithArrayKey(item, item2, keys) {
|
|
392
|
-
const newKey = keys.length ? keys : ['id'];
|
|
393
|
-
const combinedArray = item.concat(item2);
|
|
394
|
-
return combinedArray.filter((obj, index) => index === combinedArray.findIndex(innerObj => newKey.every(key => innerObj[key] === obj[key])));
|
|
395
|
-
}
|
|
396
|
-
/**
|
|
397
|
-
* Recebe um array de objetos para ordenação utilizando chave como comparativo e
|
|
398
|
-
* se a order é crescente(true) ou descrescente(false)
|
|
399
|
-
*
|
|
400
|
-
* Exemplo:
|
|
401
|
-
*
|
|
402
|
-
* ```
|
|
403
|
-
* items: [{country: 'japao'}, {country: 'brasil'} , {country: 'china'}]
|
|
404
|
-
* key: 'country'
|
|
405
|
-
* isAscendingOrder: true
|
|
406
|
-
* Resultado do retorno:
|
|
407
|
-
* [{country: 'brasil'}, {country: 'china'} , {country: 'japao'}]
|
|
408
|
-
* ```
|
|
409
|
-
*
|
|
410
|
-
*
|
|
411
|
-
* @param items : lista de itens.
|
|
412
|
-
* @param key : propriedade utilizada na comparação.
|
|
413
|
-
* @param isAscendingOrder : ordenação crescente ou descrescente.
|
|
414
|
-
*/
|
|
415
|
-
export function sortArrayOfObjects(items, key, isAscendingOrder) {
|
|
416
|
-
return items.sort((a, b) => {
|
|
417
|
-
const valueA = a[key];
|
|
418
|
-
const valueB = b[key];
|
|
419
|
-
if (typeof valueA === 'number' && typeof valueB === 'number') {
|
|
420
|
-
return isAscendingOrder ? valueA - valueB : valueB - valueA;
|
|
421
|
-
}
|
|
422
|
-
else {
|
|
423
|
-
const compareResult = valueA.toString().localeCompare(valueB.toString());
|
|
424
|
-
return isAscendingOrder ? compareResult : -compareResult;
|
|
425
|
-
}
|
|
426
|
-
});
|
|
427
|
-
}
|
|
428
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RlbXBsYXRlcy9zcmMvbGliL3V0aWxzL3V0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVsRTs7R0FFRztBQUNILE1BQU0sVUFBVSxrQkFBa0I7SUFDaEMsK0NBQStDO0lBQy9DLE9BQU8sU0FBUyxDQUFDLFFBQVEsSUFBSSxTQUFTLENBQUMsY0FBYyxDQUFDLENBQUM7QUFDekQsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLHVCQUF1QjtJQUNyQyxNQUFNLFFBQVEsR0FBRyxDQUFDLGtCQUFrQixFQUFFLElBQUksZUFBZSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUV6RixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1FBQ2xDLE9BQU8sZUFBZSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxPQUFPLFFBQVEsQ0FBQztBQUNsQixDQUFDO0FBRUQsTUFBTSxVQUFVLGdCQUFnQixDQUFDLEdBQVE7SUFDdkMsSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUM1QixHQUFHLEdBQUcsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQy9CLE9BQU8sR0FBRyxLQUFLLE1BQU0sSUFBSSxHQUFHLEtBQUssSUFBSSxJQUFJLEdBQUcsS0FBSyxFQUFFLENBQUM7SUFDdEQsQ0FBQztJQUVELElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDNUIsT0FBTyxHQUFHLEtBQUssQ0FBQyxDQUFDO0lBQ25CLENBQUM7SUFFRCxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUM7QUFDZixDQUFD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Q0QsSUFBSSxPQUFPLEdBQUcsT0FBTyxFQUFFLENBQUM7WUFDdEIsT0FBTyxDQUFDLENBQUM7UUFDWCxDQUFDO1FBQ0QsT0FBTyxDQUFDLENBQUM7SUFDWCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCxNQUFNLFVBQVUsdUJBQXVCLENBQUMsSUFBZ0I7SUFDdEQsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUNyQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNaLFNBQVM7UUFDWCxDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDM0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDbEIsQ0FBQyxFQUFFLENBQUM7UUFDTixDQUFDO0lBQ0gsQ0FBQztBQUNILENBQUM7QUFFRCxNQUFNLFVBQVUsNkJBQTZCLENBQUMsSUFBZ0I7SUFDNUQsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUNyQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEtBQUssU0FBUyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDMUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDbEIsQ0FBQyxFQUFFLENBQUM7UUFDTixDQUFDO0lBQ0gsQ0FBQztBQUNILENBQUM7QUFFRCxNQUFNLFVBQVUsVUFBVSxDQUFDLEtBQVU7SUFDbkMsT0FBTyxDQUFDLEtBQUssS0FBSyxJ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LENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO1FBQ3pCLE1BQU0sTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN0QixNQUFNLE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFdEIsSUFBSSxPQUFPLE1BQU0sS0FBSyxRQUFRLElBQUksT0FBTyxNQUFNLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDN0QsT0FBTyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUM5RCxDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7WUFDekUsT0FBTyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQztRQUMzRCxDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgcG9Mb2NhbGVzLCBwb0xvY2FsZURlZmF1bHQgfSBmcm9tICdAcG8tdWkvbmctY29tcG9uZW50cyc7XG5cbi8qKlxuICogUmV0b3JuYSBvIGlkaW9tYSBhdHVhbCBkbyBuYXZlZ2Fkb3JcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEJyb3dzZXJMYW5ndWFnZSgpOiBzdHJpbmcge1xuICAvLyBuYXZpZ2F0b3IudXNlckxhbmd1YWdlIGlzIHRoZSB2YWx1ZSBmb3IgSUUxMFxuICByZXR1cm4gbmF2aWdhdG9yLmxhbmd1YWdlIHx8IG5hdmlnYXRvclsndXNlckxhbmd1YWdlJ107XG59XG5cbi8qKlxuICogUmV0b3JuYSBvIGlkaW9tYSBkbyBuYXZlZ2Fkb3IsIGNvbSBzb21lbnRlIGFzIGR1YXMgcHJpbWVpcmFzIGxldHJhcy4gUG9yIGV4ZW1wbG86IFwicHRcIiBvdSBcImVzXCIuXG4gKlxuICogQ2FzbyBvIHZhbG9yIHJldG9ybmFkbyBwZWxvIG5hdmVnYWRvciBuw6NvIGVzdGl2ZXIgZGVudHJvIGRvcyBpZGlvbWFzIHN1cG9ydGFkb3MgcGVsbyBQTyxcbiAqIHNlcsOhIHJldG9ybmFkbyBhIGxpbmd1YWdlbSBwYWRyw6NvIChwb0xvY2FsZURlZmF1bHQpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2hvcnRCcm93c2VyTGFuZ3VhZ2UoKTogc3RyaW5nIHtcbiAgY29uc3QgbGFuZ3VhZ2UgPSAoZ2V0QnJvd3Nlckxhbmd1YWdlKCkgfHwgcG9Mb2NhbGVEZWZhdWx0KS50b0xvd2VyQ2FzZSgpLnN1YnN0cmluZygwLCAyKTtcblxuICBpZiAoIXBvTG9jYWxlcy5pbmNsdWRlcyhsYW5ndWFnZSkpIHtcbiAgICByZXR1cm4gcG9Mb2NhbGVEZWZhdWx0O1xuICB9XG5cbiAgcmV0dXJuIGxhbmd1YWdlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29udmVydFRvQm9vbGVhbih2YWw6IGFueSk6IGJvb2xlYW4ge1xuICBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycpIHtcbiAgICB2YWwgPSB2YWwudG9Mb3dlckNhc2UoKS50cmltKCk7XG4gICAgcmV0dXJuIHZhbCA9PT0gJ3RydWUnIHx8IHZhbCA9PT0gJ29uJyB8fCB2YWwgPT09ICcnO1xuICB9XG5cbiAgaWYgKHR5cGVvZiB2YWwgPT09ICdudW1iZXInKSB7XG4gICAgcmV0dXJuIHZhbCA9PT0gMTtcbiAgfVxuXG4gIHJldHVybiAhIXZhbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRUb0ludCh2YWx1ZTogYW55LCB2YWx1ZURlZmF1bHQ/OiBhbnkpOiBudW1iZXIge1xuICBjb25zdCB2YWxpZE51bWJlciA9IHBhcnNlSW50KHZhbHVlLCAxMCk7XG4gIGNvbnN0IHZhbGlkRGVmYXVsdFZhbHVlID0gcGFyc2VJbnQodmFsdWVEZWZhdWx0LCAxMCk7XG4gIGNvbnN0IGRlZmF1bHRWYWx1ZSA9IHZhbGlkRGVmYXVsdFZhbHVlIHx8IHZhbGlkRGVmYXVsdFZhbHVlID09PSAwID8gdmFsaWREZWZhdWx0VmFsdWUgOiB1bmRlZmluZWQ7XG5cbiAgcmV0dXJuIHZhbGlkTnVtYmVyIHx8IHZhbGlkTnVtYmVyID09PSAwID8gdmFsaWROdW1iZXIgOiBkZWZhdWx0VmFsdWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1R5cGVvZihvYmplY3Q6IGFueSwgdHlwZTogYW55KSB7XG4gIHJldHVybiB0eXBlb2Ygb2JqZWN0ID09PSB0eXBlO1xufVxuXG4vKipcbiAqXG4gKiBAcGFyYW0gZm4gRnVuw6fDo28gcXVlIHNlcsOhIGV4ZWN1dGFkYSBkZW50cm8gZG8gY29udGV4dG8uIFBvZGVuZG8gc2VyIG8gbm9tZSBkYSBmdW7Dp8Ojb1xuICogb3UgYSByZWZlcsOqbmNpYSBkYSBtZXNtYS5cbiAqXG4gKiBAcGFyYW0gY29udGV4dCBDb250ZXh0byBkbyBxdWFsIGEgZnVuw6fDo28gc2Vyw6EgZXhlY3V0YWRhLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2FsbEZ1bmN0aW9uKGZuOiBhbnksIGNvbnRleHQ6IGFueSwgcGFyYW0/KTogdm9pZCB7XG4gIGlmIChpc1R5cGVvZihmbiwgJ2Z1bmN0aW9uJykpIHtcbiAgICBmbi5jYWxsKGNvbnRleHQsIHBhcmFtKTtcbiAgfSBlbHNlIHtcbiAgICBjb250ZXh0W2ZuXShwYXJhbSk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRJc29Ub0RhdGUodmFsdWU6IHN0cmluZywgc3RhcnQ6IGJvb2xlYW4sIGVuZDogYm9vbGVhbikge1xuICBpZiAodmFsdWUpIHtcbiAgICBjb25zdCBkYXkgPSBwYXJzZUludCh2YWx1ZS5zdWJzdHJpbmcoOCwgMTApLCAxMCk7XG4gICAgY29uc3QgbW9udGggPSBwYXJzZUludCh2YWx1ZS5zdWJzdHJpbmcoNSwgNyksIDEwKTtcbiAgICBjb25zdCB5ZWFyID0gcGFyc2VJbnQodmFsdWUuc3Vic3RyaW5nKDAsIDQpLCAxMCk7XG4gICAgaWYgKHN0YXJ0KSB7XG4gICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoeWVhciwgbW9udGggLSAxLCBkYXksIDAsIDAsIDApO1xuXG4gICAgICBzZXRZZWFyRnJvbTBUbzEwMChkYXRlLCB5ZWFyKTtcblxuICAgICAgcmV0dXJuIGRhdGU7XG4gICAgfSBlbHNlIGlmIChlbmQpIHtcbiAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCAtIDEsIGRheSwgMjMsIDU5LCA1OSk7XG5cbiAgICAgIHNldFllYXJGcm9tMFRvMTAwKGRhdGUsIHllYXIpO1xuXG4gICAgICByZXR1cm4gZGF0ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgbWlsbGlzZWNvbmRzID0gRGF0ZS5wYXJzZSh2YWx1ZSk7XG4gICAgICBjb25zdCB0aW1lem9uZSA9IG5ldyBEYXRlKCkuZ2V0VGltZXpvbmVPZmZzZXQoKSAqIDYwMDAwO1xuICAgICAgcmV0dXJuIG5ldyBEYXRlKG1pbGxpc2Vjb25kcyArIHRpbWV6b25lKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnREYXRlVG9JU09FeHRlbmRlZChkYXRlOiBEYXRlLCB0aW1lPzogc3RyaW5nKSB7XG4gIGlmIChkYXRlKSB7XG4gICAgY29uc3QgZ2V0TW9udGggPSBkYXRlLmdldE1vbnRoKCkgKyAxO1xuICAgIGNvbnN0IGRheSA9IGRhdGUuZ2V0RGF0ZSgpIDwgMTAgPyAnMCcgKyBkYXRlLmdldERhdGUoKSA6IGRhdGUuZ2V0RGF0ZSgpO1xuICAgIGNvbnN0IG1vbnRoID0gZ2V0TW9udGggPCAxMCA/ICcwJyArIGdldE1vbnRoIDogZ2V0TW9udGg7XG4gICAgY29uc3QgeWVhciA9IGZvcm1hdFllYXIoZGF0ZS5nZXRGdWxsWWVhcigpKTtcblxuICAgIGNvbnN0IGRhdGVTdHJpbmcgPSBkYXRlLnRvU3RyaW5nKCk7XG5cbiAgICBpZiAodGltZSkge1xuICAgICAgcmV0dXJuIHllYXIgKyAnLScgKyBtb250aCArICctJyArIGRheSArIHRpbWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIHllYXIgK1xuICAgICAgICAnLScgK1xuICAgICAgICBtb250aCArXG4gICAgICAgICctJyArXG4gICAgICAgIGRheSArXG4gICAgICAgICdUJyArXG4gICAgICAgIGRhdGVTdHJpbmcuc3Vic3RyaW5nKDE2LCAyNCkgK1xuICAgICAgICBkYXRlU3RyaW5nLnN1YnN0cmluZygyOCwgMzEpICtcbiAgICAgICAgJzonICtcbiAgICAgICAgZGF0ZVN0cmluZy5zdWJzdHJpbmcoMzEsIDMzKVxuICAgICAgKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cblxuLyoqXG4gKiBUcmFuc2Zvcm1hIG8gYW5vIGVtIHVtYSBzdHJpbmcgbm8gZm9ybWF0byB5eXl5IGUgY2FzbyBvIGFubyBzZWphIG1lbm9yIHF1ZSAxMDAwIHByZWVuY2hlIGNvbSB6ZXJvcyBhIGVzcXVlcmRhLlxuICpcbiAqIEBwYXJhbSB5ZWFyIEFub1xuICovXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0WWVhcih5ZWFyOiBudW1iZXIpIHtcbiAgaWYgKHllYXIgPj0gMTAwMCkge1xuICAgIHJldHVybiB5ZWFyLnRvU3RyaW5nKCk7XG4gIH1cblxuICBpZiAoeWVhciA+IDk5ICYmIHllYXIgPCAxMDAwKSB7XG4gICAgcmV0dXJuIGAwJHt5ZWFyfWA7XG4gIH1cblxuICBpZiAoeWVhciA+IDkgJiYgeWVhciA8IDEwMCkge1xuICAgIHJldHVybiBgMDAke3llYXJ9YDtcbiAgfVxuXG4gIGlmICh5ZWFyID49IDAgJiYgeWVhciA8IDEwKSB7XG4gICAgcmV0dXJuIGAwMDAke3llYXJ9YDtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNFcXVhbHModmFsdWUsIGNvbXBhcmVkVmFsdWUpIHtcbiAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHZhbHVlKSA9PT0gSlNPTi5zdHJpbmdpZnkoY29tcGFyZWRWYWx1ZSk7XG59XG5cbi8qKlxuICogQ2FzbyBvIGFubyBvcmlnaW5hbCBkYSBkYXRhIHNlamEgZW50cmUgMCBlIDEwMCBhdHJpYnVpIGVzc2UgdmFsb3IgYW8gYW5vLCBwb2lzIG8gYG5ldyBEYXRlYCBkbyBqYXZhc2NyaXB0IHRyYW5zZm9ybWEgbyBhbm8gcGFyYSAxOTBYLlxuICpcbiAqIEBwYXJhbSBkYXRlIERhdGFcbiAqIEBwYXJhbSB5ZWFyIEFubyBvcmlnaW5hbFxuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0WWVhckZyb20wVG8xMDAoZGF0ZTogRGF0ZSwgeWVhcjogbnVtYmVyKSB7XG4gIGlmICh5ZWFyID49IDAgJiYgeWVhciA8IDEwMCkge1xuICAgIGRhdGUuc2V0RnVsbFllYXIoeWVhcik7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNvcnRPcHRpb25zQnlQcm9wZXJ0eShvcHRpb25zOiBBcnJheTxhbnk+LCBwcm9wZXJ0eTogc3RyaW5nKSB7XG4gIG9wdGlvbnMuc29ydCgob3B0aW9uQSwgb3B0aW9uQikgPT4ge1xuICAgIG9wdGlvbkEgPSBvcHRpb25BW3Byb3BlcnR5XS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCk7XG4gICAgb3B0aW9uQiA9IG9wdGlvbkJbcHJvcGVydHldLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKTtcblxuICAgIGlmIChvcHRpb25BIDwgb3B0aW9uQikge1xuICAgICAgcmV0dXJuIC0xO1xuICAgIH1cbiAgICBpZiAob3B0aW9uQSA+IG9wdGlvbkIpIHtcbiAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgICByZXR1cm4gMDtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVEdXBsaWNhdGVkT3B0aW9ucyhsaXN0OiBBcnJheTxhbnk+KSB7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7IGkrKykge1xuICAgIGlmIChpID09PSAwKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAobGlzdC5maW5kSW5kZXgob3AgPT4gb3AudmFsdWUgPT09IGxpc3RbaV0udmFsdWUpICE9PSBpKSB7XG4gICAgICBsaXN0LnNwbGljZShpLCAxKTtcbiAgICAgIGktLTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZVVuZGVmaW5lZEFuZE51bGxPcHRpb25zKGxpc3Q6IEFycmF5PGFueT4pIHtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKGxpc3RbaV0udmFsdWUgPT09IHVuZGVmaW5lZCB8fCBsaXN0W2ldLnZhbHVlID09PSBudWxsKSB7XG4gICAgICBsaXN0LnNwbGljZShpLCAxKTtcbiAgICAgIGktLTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkVmFsdWUodmFsdWU6IGFueSkge1xuICByZXR1cm4gKHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQgJiYgdmFsdWUgIT09ICcnKSB8fCB2YWx1ZSA9PT0gZmFsc2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0V4dGVybmFsTGluayh1cmwpOiBib29sZWFuIHtcbiAgcmV0dXJuIHVybCA/IHVybC5zdGFydHNXaXRoKCdodHRwJykgOiBmYWxzZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG9wZW5FeHRlcm5hbExpbmsodXJsKTogdm9pZCB7XG4gIHdpbmRvdy5vcGVuKHVybCwgJ19ibGFuaycpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Rm9ybWF0dGVkTGluayhsaW5rOiBzdHJpbmcpOiBzdHJpbmcge1xuICBsZXQgZm9ybWF0dGVkTGluayA9ICcnO1xuICAvLyBSZXRpcmEgdG9kb3Mgb3MgcG9udG9zIG5vIGNvbWXDp28gZGEgVVJMLlxuICBpZiAobGluaykge1xuICAgIGZvcm1hdHRlZExpbmsgPSBsaW5rLnJlcGxhY2UoL14oXFwuKSsvZywgJycpO1xuICB9XG4gIC8vIFZlcmlmaWNhIHNlIGZvaSB1dGlsaXphZG8gdW1hIHJvdGEgcXVlIG7Do28gY29tZWNlIGNvbSBiYXJyYS5cbiAgaWYgKCFmb3JtYXR0ZWRMaW5rLnN0YXJ0c1dpdGgoJy8nKSkge1xuICAgIGZvcm1hdHRlZExpbmsgPSAnLycuY29uY2F0KGZvcm1hdHRlZExpbmspO1xuICB9XG4gIHJldHVybiBmb3JtYXR0ZWRMaW5rO1xufVxuXG4vKipcbiAqIE3DqXRvZG8gcmVzcG9uc8OhdmVsIHBvciBvcmRlbmFyIGRvaXMgdmFsb3Jlcy5cbiAqXG4gKiBAcGFyYW0gbGVmdFNpZGUgUHJpbWVpcm8gdmFsb3IgYSBzZXIgY29tcGFyYWRvLlxuICogQHBhcmFtIHJpZ2h0U2lkZSBTZWd1bmRvIHZhbG9yIGEgc2VyIGNvbXBhcmFkby5cbiAqIEBwYXJhbSBhc2NlbmRpbmcgRGV0ZXJtaW5hIHNlIHNlcsOhIGVtIG9yZGVtIGFzY2VuZGVudGUgb3UgZGVzY2VuZGVudGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzb3J0VmFsdWVzKGxlZnRTaWRlOiBzdHJpbmcsIHJpZ2h0U2lkZTogc3RyaW5nLCBhc2NlbmRpbmc6IGJvb2xlYW4gPSB0cnVlKTogbnVtYmVyIHtcbiAgaWYgKGFzY2VuZGluZykge1xuICAgIGlmIChsZWZ0U2lkZSA8IHJpZ2h0U2lkZSkge1xuICAgICAgcmV0dXJuIC0xO1xuICAgIH0gZWxzZSBpZiAobGVmdFNpZGUgPiByaWdodFNpZGUpIHtcbiAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgfSBlbHNlIGlmIChhc2NlbmRpbmcgPT09IGZhbHNlKSB7XG4gICAgaWYgKGxlZnRTaWRlIDwgcmlnaHRTaWRlKSB7XG4gICAgICByZXR1cm4gMTtcbiAgICB9IGVsc2UgaWYgKGxlZnRTaWRlID4gcmlnaHRTaWRlKSB7XG4gICAgICByZXR1cm4gLTE7XG4gICAgfVxuICB9XG4gIHJldHVybiAwO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVEYXRlUmFuZ2UoZGF0ZTogRGF0ZSwgZGF0ZVN0YXJ0OiBEYXRlLCBkYXRlRW5kOiBEYXRlKSB7XG4gIGlmIChkYXRlU3RhcnQgJiYgZGF0ZUVuZCkge1xuICAgIHJldHVybiBkYXRlID49IGRhdGVTdGFydCAmJiBkYXRlIDw9IGRhdGVFbmQ7XG4gIH0gZWxzZSBpZiAoZGF0ZVN0YXJ0ICYmICFkYXRlRW5kKSB7XG4gICAgcmV0dXJuIGRhdGUgPj0gZGF0ZVN0YXJ0O1xuICB9IGVsc2UgaWYgKCFkYXRlU3RhcnQgJiYgZGF0ZUVuZCkge1xuICAgIHJldHVybiBkYXRlIDw9IGRhdGVFbmQ7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNhcGl0YWxpemVGaXJzdExldHRlcih0ZXh0OiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gYCR7dGV4dC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKX0ke3RleHQuc2xpY2UoMSl9YDtcbn1cblxuLyoqXG4gKiBNYXBlaWEgdW0gbm92byBhcnJheSBhcGVuYXMgY29tIGFzIHByb3ByaWVkYWRlcyBkZWZpbmlkYXMgcGVsbyBkZXNlbnZvbHZlZG9yIGJhc2VhZG8gZW0gdW0gYXJyYXkgZGVcbiAqIG9yaWdlbS5cbiAqXG4gKiBFeGVtcGxvOlxuICpcbiAqIGBgYFxuICogY29uc3QgcGVvcGxlID0gW1xuICogIHsgaWQ6IDEsIG5hbWU6ICdGdWxhbm8nLCBiaXJ0aGRhdGU6ICcxOTgwLTExLTAxJywgZ2VucmU6ICdNYWxlJywgY2l0eTogJ1PDo28gUGF1bG8nLCBkZXBlbmRlbnRzOiAyIH0sXG4gKiAgeyBpZDogMiwgbmFtZTogJ0JlbHRyYW5vJywgYmlydGhkYXRlOiAnMTk5Ny0wMS0yMScsIGdlbnJlOiAnRmVtYWxlJywgY2l0eTogJ0pvaW52aWxsZScsIGRlcGVuZGVudHM6IDAgfSxcbiAqICB7IGlkOiAzLCBuYW1lOiAnU2ljbGFubycsIGJpcnRoZGF0ZTogJzE5OTUtMDctMTUnLCBnZW5yZTogJ01hbGUnLCBjaXR5OiAnSm9pbnZpbGxlJywgZGVwZW5kZW50czogMCB9XG4gKiBdO1xuICpcbiAqIGNvbnN0IHByb3BlcnRpZXMgPSBbJ2lkJywgJ25hbWUnXTtcbiAqXG4gKiBjb25zdCBpZEFuZE5hbWUgPSBtYXBBcnJheUJ5UHJvcGVydGllcyhwZW9wbGUsIHByb3BlcnRpZXMpO1xuICpcbiAqIGNvbnNvbGUubG9nKGlkQW5kTmFtZSk7IC8vIFt7IGlkOiAxLCBuYW1lOiAnRnVsYW5vJyB9LCB7IGlkOiAyLCBuYW1lOiAnQmVsdHJhbm8nIH0sIHsgaWQ6IDMsIG5hbWU6ICdTaWNsYW5vJyB9XVxuICogYGBgXG4gKlxuICogVW0gb3V0cm8gdXNvIHBhcmEgbyBtw6l0b2RvIMOpIFwicGFyZWFyXCIgdG9kb3Mgb3Mgb2JqZXRvcyBkbyBhcnJheSBjb20gYXMgbWVzbWFzIHByb3ByaWVkYWRlcy5cbiAqXG4gKiBgYGBcbiAqIGNvbnN0IGN1c3RvbWVycyA9IFtcbiAqICB7IGlkOiAxLCBuYW1lOiAnRnVsYW5vJywgY2l0eTogJ1PDo28gUGF1bG8nLCBkZXBlbmRlbnRzOiAyIH0sIC8vIHNlbSBnZW5yZVxuICogIHsgaWQ6IDIsIG5hbWU6ICdCZWx0cmFubycsIGdlbnJlOiAnRmVtYWxlJywgY2l0eTogJ0pvaW52aWxsZScgfSwgLy8gc2VtIGRlcGVuZGVudHNcbiAqICB7IGlkOiAzLCBuYW1lOiAnU2ljbGFubycsIGdlbnJlOiAnTWFsZScsIGNpdHk6ICdKb2ludmlsbGUnLCBkZXBlbmRlbnRzOiAwIH1cbiAqIF07XG4gKiBjb25zdCBwcm9wZXJ0aWVzID0gWydpZCcsICduYW1lJywgJ2NpdHknLCAnZ2VucmUnLCAnZGVwZW5kZW50cyddO1xuICpcbiAqIGNvbnN0IHBhdHRlcm4gPSBtYXBBcnJheUJ5UHJvcGVydGllcyhjdXN0b21lcnMsIHByb3BlcnRpZXMpO1xuICogY29uc29sZS5sb2cocGF0dGVybik7XG4gKlxuICogLy8gW1xuICogLy8gICB7IGlkOiAxLCBuYW1lOiAnRnVsYW5vJywgY2l0eTogJ1PDo28gUGF1bG8nLCBnZW5yZTogdW5kZWZpbmVkLCBkZXBlbmRlbnRzOiAyIH0sXG4gKiAvLyAgIHsgaWQ6IDIsIG5hbWU6ICdCZWx0cmFubycsIGNpdHk6ICdKb2ludmlsbGUnLCBnZW5yZTogJ0ZlbWFsZScsIGRlcGVuZGVudHM6IHVuZGVmaW5lZCB9LFxuICogLy8gICB7IGlkOiAzLCBuYW1lOiAnU2ljbGFubycsIGNpdHk6ICdKb2ludmlsbGUnLCBnZW5yZTogJ01hbGUnLCBkZXBlbmRlbnRzOiAwIH1cbiAqIC8vIF1cbiAqIGBgYFxuICpcbiAqIEBwYXJhbSBpdGVtcyB7QXJyYXk8YW55Pn0gQXJyYXkgZGUgaXRlbXMgb3JpZ2luYWwuXG4gKiBAcGFyYW0gcHJvcGVydGllcyB7QXJyYXk8c3RyaW5nPn0gQXJyYXkgZGUgc3RyaW5nIGNvbSBhIGxpc3RhIGRlIHByb3ByaWVkYWRlcyBxdWUgZGV2ZW0gc2VyIHJldG9ybmFkYXMuXG4gKlxuICogQHJldHVybnMgQXJyYXk8YW55PlxuICovXG5leHBvcnQgZnVuY3Rpb24gbWFwQXJyYXlCeVByb3BlcnRpZXMoaXRlbXM6IEFycmF5PGFueT4gPSBbXSwgcHJvcGVydGllczogQXJyYXk8c3RyaW5nPiA9IFtdKTogQXJyYXk8YW55PiB7XG4gIHJldHVybiBpdGVtcy5tYXAoaXRlbSA9PiBtYXBPYmplY3RCeVByb3BlcnRpZXMoaXRlbSwgcHJvcGVydGllcykpO1xufVxuXG4vKipcbiAqIE1hcGVpYSB1bSBub3ZvIG9iamV0byBhcGVuYXMgY29tIGFzIHByb3ByaWVkYWRlcyBkZWZpbmlkYXMgcGVsbyBkZXNlbnZvbHZlZG9yLlxuICpcbiAqIEV4ZW1wbG86XG4gKlxuICogYGBgXG4gKiBjb25zdCBwZXJzb24gPSB7IGlkOiAxLCBuYW1lOiAnRnVsYW5vJywgYmlydGhkYXRlOiAnMTk4MC0xMS0wMScsIGdlbnJlOiAnTWFsZScsIGNpdHk6ICdTw6NvIFBhdWxvJywgZGVwZW5kZW50czogMiB9O1xuICpcbiAqIGNvbnN0IHByb3BlcnRpZXMgPSBbJ2lkJywgJ25hbWUnXTtcbiAqXG4gKiBjb25zdCBpZEFuZE5hbWUgPSBtYXBPYmplY3RCeVByb3BlcnRpZXMocGVyc29uLCBwcm9wZXJ0aWVzKTtcbiAqXG4gKiBjb25zb2xlLmxvZyhpZEFuZE5hbWUpOyAvLyB7IGlkOiAxLCBuYW1lOiAnRnVsYW5vJyB9XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gb2JqZWN0IHtBcnJheTxhbnk+fSBBcnJheSBkZSBpdGVtcyBvcmlnaW5hbC5cbiAqIEBwYXJhbSBwcm9wZXJ0aWVzIHtBcnJheTxzdHJpbmc+fSBBcnJheSBkZSBzdHJpbmcgY29tIGEgbGlzdGEgZGUgcHJvcHJpZWRhZGVzIHF1ZSBkZXZlbSBzZXIgcmV0b3JuYWRhcy5cbiAqXG4gKiBAcmV0dXJucyBBcnJheTxhbnk+XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYXBPYmplY3RCeVByb3BlcnRpZXMob2JqZWN0OiBhbnkgPSB7fSwgcHJvcGVydGllczogQXJyYXk8c3RyaW5nPiA9IFtdKSB7XG4gIGNvbnN0IGdldFNlbGVjdGVkUHJvcGVydGllcyA9IChzZWxlY3RlZFByb3BlcnRpZXMsIHByb3BlcnR5KSA9PiAoe1xuICAgIC4uLnNlbGVjdGVkUHJvcGVydGllcyxcbiAgICBbcHJvcGVydHldOiBvYmplY3RbcHJvcGVydHldXG4gIH0pO1xuXG4gIHJldHVybiBwcm9wZXJ0aWVzLnJlZHVjZShnZXRTZWxlY3RlZFByb3BlcnRpZXMsIHt9KTtcbn1cblxuLyoqXG4gKiBSZXRvcm5hIG9zIHZhbG9yZXMgZGUgdW0gb2JqZXRvIGRlbnRybyBkZSB1bSBhcnJheS5cbiAqXG4gKiA+IFNpbXVsYSBvIE9iamVjdC52YWx1ZXMob2JqKSwgbyBtZXNtbyBkZXZlIHNlciByZW1vdmlkbyBhc3NpbSBxdWUgYSB2ZXJzw6NvIHR5cGVzY3JpdCBmb3IgYXR1YWxpemFkYS5cbiAqXG4gKiBAcGFyYW0gb2JqZWN0IE9iamV0byBkZSBvbmRlIHNlcsOhIHBlZ28gb3MgdmFsb3Jlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbHVlc0Zyb21PYmplY3Qob2JqZWN0OiBhbnkgPSB7fSk6IEFycmF5PGFueT4ge1xuICByZXR1cm4gT2JqZWN0LmtleXMob2JqZWN0KS5tYXAocHJvcGVydHkgPT4gb2JqZWN0W3Byb3BlcnR5XSk7XG59XG5cbi8qKlxuICogYWRpY2lvbmEgMCBubyB0ZW1wbyBpbmZvcm1hZG8sIGNhc28gbWVub3IgcSAxMFxuICpcbiAqIEBwYXJhbSB0aW1lXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZGRaZXJvKHRpbWU6IG51bWJlcikge1xuICBpZiAoIXRpbWUpIHtcbiAgICByZXR1cm4gJzAwJztcbiAgfVxuXG4gIGlmICh0aW1lIDwgMTApIHtcbiAgICByZXR1cm4gYDAke3RpbWV9YDtcbiAgfVxuXG4gIHJldHVybiB0aW1lO1xufVxuXG4vKipcbiAqIFJlbW92ZSBkbyBvYmpldG8gYXMgcHJvcHJpZWRhZGVzIGVzcGVjaWZpY2FkYXMuXG4gKlxuICogRXhlbXBsbzpcbiAqXG4gKiBgYGBcbiAqIGtleTogWydpZCcsICdjcGYnXVxuICogbmV3SXRlbVZhbHVlOiB7IGlkOiAnMTIzJywgY3BmOiAnNDU2JywgbmFtZTogJ1Rlc3QnIH1cbiAqIFJlc3VsdGFkbzogeyBuYW1lOiAnVGVzdCcgfVxuICogYGBgXG4gKlxuICogQHBhcmFtIGtleXMgbGlzdGEgZGUgcHJvcHJpZWRhZGVzIHBhcmEgc2VyIHJlbW92aWRhIGRvIG9iamV0by5cbiAqIEBwYXJhbSBuZXdJdGVtVmFsdWUgb2JqZXRvIHF1ZSBzZSBkZXNlamEgcmVtb3ZlciBhcyBwcm9wcmllZGFkZXMuXG4gKiBAcmV0dXJucyBvYmpldG8gc2VtIGFzIHByb3ByaWVkYWRlcyBlc3BlY2lmaWNhZGFzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlS2V5c1Byb3BlcnRpZXMoa2V5czogQXJyYXk8YW55PiwgbmV3SXRlbVZhbHVlOiBhbnkpIHtcbiAga2V5cy5mb3JFYWNoKGtleSA9PiBkZWxldGUgbmV3SXRlbVZhbHVlW2tleV0pO1xuICByZXR1cm4gbmV3SXRlbVZhbHVlO1xufVxuXG4vKipcbiAqIFJlbW92ZSBvYmpldG9zIGR1cGxpY2Fkb3MuXG4gKlxuICogRXhlbXBsbzpcbiAqXG4gKiBgYGBcbiAqIGl0ZW06IFt7Y291bnRyeTogJ2phcGFvJ30sIHtjb3VudHJ5OiAnYnJhc2lsJ30gLCB7Y291bnRyeTogJ2NoaW5hJ31dXG4gKiBpdGVtMjogW3tjb3VudHJ5OiAnY2hpbGUnfSwge2NvdW50cnk6ICdicmFzaWwnfSwge2NvdW50cnk6ICdjYW5hZGEnfV1cbiAqIGtleTogJ2NvdW50cnknXG4gKiBSZXN1bHRhZG86XG4gKiAgICBpdGVtMiA9IFt7Y291bnRyeTogJ2NoaWxlJ30sIHtjb3VudHJ5OiAnY2FuYWRhJ30gXVxuICogYGBgXG4gKlxuICogQHBhcmFtIGl0ZW0gbGlzdGEgY29tcGFyYWRhLlxuICogQHBhcmFtIGl0ZW0yIGxpc3RhIHBhcmEgcmVtb3ZlciBpdGVtcyBkdXBsaWNhZG9zLlxuICogQHBhcmFtIGtleSBwcm9wcmllZGFkZSBxdWUgc2Vyw6EgdXRpbGl6YWRhIHBhcmEgcmVhbGl6YXIgYSBjb21wYXJhw6fDo28uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVEdXBsaWNhdGVJdGVtcyhpdGVtLCBpdGVtMiwga2V5KSB7XG4gIGNvbnN0IHVuaXF1ZVZhbHVlcyA9IG5ldyBTZXQoaXRlbS5tYXAoZW50cnkgPT4gZW50cnlba2V5XSkpO1xuICBpdGVtMi5zcGxpY2UoMCwgaXRlbTIubGVuZ3RoLCAuLi5pdGVtMi5maWx0ZXIoZW50cnkgPT4gIXVuaXF1ZVZhbHVlcy5oYXMoZW50cnlba2V5XSkpKTtcbn1cblxuLyoqXG4gKiBSZWNlYmUgZG9pcyBhcnJheXMgZGUgb2JqZXRvcyBlIHJlbW92ZSBvcyBpdGVucyBkdXBsaWNhZG9zIHV0aWxpemFuZG8gdW1hIHByb3ByaWVkYWRlKGtleSkgcGFyYSBjb21wYXJhw6fDo28uXG4gKlxuICogRXhlbXBsbzpcbiAqXG4gKiBgYGBcbiAqIGl0ZW06IFt7Y291bnRyeTogJ2phcGFvJ30sIHtjb3VudHJ5OiAnYnJhc2lsJ30gLCB7Y291bnRyeTogJ2NoaW5hJ31dXG4gKiBpdGVtMjogW3tjb3VudHJ5OiAnY2hpbGUnfSwge2NvdW50cnk6ICdicmFzaWwnfSwge2NvdW50cnk6ICdjYW5hZGEnfV1cbiAqIGtleTogJ1tjb3VudHJ5XSdcbiAqIFJlc3VsdGFkbyBkbyByZXRvcm5vOlxuICogICAgW3tjb3VudHJ5OiAnY2hpbGUnfSwge2NvdW50cnk6ICdjYW5hZGEnfSwge2NvdW50cnk6ICdqYXBhbyd9LCB7Y291bnRyeTogJ2NoaW5hJ31dXG4gKiBgYGBcbiAqXG4gKlxuICogQHBhcmFtIGl0ZW0gOiBwcmltZWlyYSBsaXN0YSBkZSBpdGVucy5cbiAqIEBwYXJhbSBpdGVtMiA6IHNlZ3VuZGEgbGlzdGEgZGUgaXRlbnMuXG4gKiBAcGFyYW0ga2V5IDogdW0gYXJyYXkgZGUgcHJvcHJpZWRhZGVzIHF1ZSB2w6NvIHNlciB1dGlsaXphZGFzIHBhcmEgYSBjb21wYXJhw6fDo28uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVEdXBsaWNhdGVJdGVtc1dpdGhBcnJheUtleShpdGVtLCBpdGVtMiwga2V5cykge1xuICBjb25zdCBuZXdLZXkgPSBrZXlzLmxlbmd0aCA/IGtleXMgOiBbJ2lkJ107XG5cbiAgY29uc3QgY29tYmluZWRBcnJheSA9IGl0ZW0uY29uY2F0KGl0ZW0yKTtcbiAgcmV0dXJuIGNvbWJpbmVkQXJyYXkuZmlsdGVyKFxuICAgIChvYmosIGluZGV4KSA9PiBpbmRleCA9PT0gY29tYmluZWRBcnJheS5maW5kSW5kZXgoaW5uZXJPYmogPT4gbmV3S2V5LmV2ZXJ5KGtleSA9PiBpbm5lck9ialtrZXldID09PSBvYmpba2V5XSkpXG4gICk7XG59XG5cbi8qKlxuICogUmVjZWJlIHVtIGFycmF5IGRlIG9iamV0b3MgcGFyYSBvcmRlbmHDp8OjbyB1dGlsaXphbmRvIGNoYXZlIGNvbW8gY29tcGFyYXRpdm8gZVxuICogc2UgYSBvcmRlciDDqSBjcmVzY2VudGUodHJ1ZSkgb3UgZGVzY3Jlc2NlbnRlKGZhbHNlKVxuICpcbiAqIEV4ZW1wbG86XG4gKlxuICogYGBgXG4gKiBpdGVtczogW3tjb3VudHJ5OiAnamFwYW8nfSwge2NvdW50cnk6ICdicmFzaWwnfSAsIHtjb3VudHJ5OiAnY2hpbmEnfV1cbiAqIGtleTogJ2NvdW50cnknXG4gKiBpc0FzY2VuZGluZ09yZGVyOiB0cnVlXG4gKiBSZXN1bHRhZG8gZG8gcmV0b3JubzpcbiAqICAgIFt7Y291bnRyeTogJ2JyYXNpbCd9LCB7Y291bnRyeTogJ2NoaW5hJ30gLCB7Y291bnRyeTogJ2phcGFvJ31dXG4gKiBgYGBcbiAqXG4gKlxuICogQHBhcmFtIGl0ZW1zIDogbGlzdGEgZGUgaXRlbnMuXG4gKiBAcGFyYW0ga2V5IDogcHJvcHJpZWRhZGUgdXRpbGl6YWRhIG5hIGNvbXBhcmHDp8Ojby5cbiAqIEBwYXJhbSBpc0FzY2VuZGluZ09yZGVyIDogb3JkZW5hw6fDo28gY3Jlc2NlbnRlIG91IGRlc2NyZXNjZW50ZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNvcnRBcnJheU9mT2JqZWN0cyhpdGVtcywga2V5LCBpc0FzY2VuZGluZ09yZGVyKSB7XG4gIHJldHVybiBpdGVtcy5zb3J0KChhLCBiKSA9PiB7XG4gICAgY29uc3QgdmFsdWVBID0gYVtrZXldO1xuICAgIGNvbnN0IHZhbHVlQiA9IGJba2V5XTtcblxuICAgIGlmICh0eXBlb2YgdmFsdWVBID09PSAnbnVtYmVyJyAmJiB0eXBlb2YgdmFsdWVCID09PSAnbnVtYmVyJykge1xuICAgICAgcmV0dXJuIGlzQXNjZW5kaW5nT3JkZXIgPyB2YWx1ZUEgLSB2YWx1ZUIgOiB2YWx1ZUIgLSB2YWx1ZUE7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGNvbXBhcmVSZXN1bHQgPSB2YWx1ZUEudG9TdHJpbmcoKS5sb2NhbGVDb21wYXJlKHZhbHVlQi50b1N0cmluZygpKTtcbiAgICAgIHJldHVybiBpc0FzY2VuZGluZ09yZGVyID8gY29tcGFyZVJlc3VsdCA6IC1jb21wYXJlUmVzdWx0O1xuICAgIH1cbiAgfSk7XG59XG4iXX0=
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Generated bundle index. Do not edit.
|
|
3
|
-
*/
|
|
4
|
-
export * from './public-api';
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tdWktbmctdGVtcGxhdGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcHJvamVjdHMvdGVtcGxhdGVzL3NyYy9wby11aS1uZy10ZW1wbGF0ZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
|
package/esm2022/public-api.mjs
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export * from './lib/index';
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL3RlbXBsYXRlcy9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGFBQWEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbGliL2luZGV4JztcbiJdfQ==
|
|
Binary file
|