@ironcode/vas-lib 1.0.0 → 1.0.1
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/README.md +24 -0
- package/cjs/lib/control-value/index.d.ts +2 -0
- package/cjs/lib/control-value/index.d.ts.map +1 -0
- package/cjs/lib/control-value/index.js +5 -0
- package/cjs/lib/control-value/index.js.map +1 -0
- package/cjs/lib/control-value/vas-camera-control-value.model.d.ts +8 -0
- package/cjs/lib/control-value/vas-camera-control-value.model.d.ts.map +1 -0
- package/cjs/lib/control-value/vas-camera-control-value.model.js +12 -0
- package/cjs/lib/control-value/vas-camera-control-value.model.js.map +1 -0
- package/cjs/lib/controls-config/index.d.ts +4 -0
- package/cjs/lib/controls-config/index.d.ts.map +1 -0
- package/cjs/lib/controls-config/index.js +7 -0
- package/cjs/lib/controls-config/index.js.map +1 -0
- package/cjs/lib/controls-config/vas-control-config-direction.enum.d.ts +5 -0
- package/cjs/lib/controls-config/vas-control-config-direction.enum.d.ts.map +1 -0
- package/cjs/lib/controls-config/vas-control-config-direction.enum.js +11 -0
- package/cjs/lib/controls-config/vas-control-config-direction.enum.js.map +1 -0
- package/cjs/lib/controls-config/vas-control-config.model.d.ts +8 -0
- package/cjs/lib/controls-config/vas-control-config.model.d.ts.map +1 -0
- package/cjs/lib/controls-config/vas-control-config.model.js +3 -0
- package/cjs/lib/controls-config/vas-control-config.model.js.map +1 -0
- package/cjs/lib/controls-config/vas-select-control-config.model.d.ts +10 -0
- package/cjs/lib/controls-config/vas-select-control-config.model.d.ts.map +1 -0
- package/cjs/lib/controls-config/vas-select-control-config.model.js +3 -0
- package/cjs/lib/controls-config/vas-select-control-config.model.js.map +1 -0
- package/cjs/lib/entity/index.d.ts +60 -0
- package/cjs/lib/entity/index.d.ts.map +1 -0
- package/cjs/lib/entity/index.js +63 -0
- package/cjs/lib/entity/index.js.map +1 -0
- package/cjs/lib/entity/vas-access-group.dto.d.ts +7 -0
- package/cjs/lib/entity/vas-access-group.dto.d.ts.map +1 -0
- package/cjs/lib/entity/vas-access-group.dto.js +3 -0
- package/cjs/lib/entity/vas-access-group.dto.js.map +1 -0
- package/cjs/lib/entity/vas-account-config.dto.d.ts +8 -0
- package/cjs/lib/entity/vas-account-config.dto.d.ts.map +1 -0
- package/cjs/lib/entity/vas-account-config.dto.js +3 -0
- package/cjs/lib/entity/vas-account-config.dto.js.map +1 -0
- package/{lib → cjs/lib/entity}/vas-account-object.dto.d.ts +1 -0
- package/cjs/lib/entity/vas-account-object.dto.d.ts.map +1 -0
- package/cjs/lib/entity/vas-account-object.dto.js +3 -0
- package/cjs/lib/entity/vas-account-object.dto.js.map +1 -0
- package/cjs/lib/entity/vas-account-object.model.d.ts +16 -0
- package/cjs/lib/entity/vas-account-object.model.d.ts.map +1 -0
- package/cjs/lib/entity/vas-account-object.model.js +28 -0
- package/cjs/lib/entity/vas-account-object.model.js.map +1 -0
- package/cjs/lib/entity/vas-account.dto.d.ts +55 -0
- package/cjs/lib/entity/vas-account.dto.d.ts.map +1 -0
- package/cjs/lib/entity/vas-account.dto.js +10 -0
- package/cjs/lib/entity/vas-account.dto.js.map +1 -0
- package/{lib → cjs/lib/entity}/vas-base.dto.d.ts +3 -0
- package/cjs/lib/entity/vas-base.dto.d.ts.map +1 -0
- package/cjs/lib/entity/vas-base.dto.js +3 -0
- package/cjs/lib/entity/vas-base.dto.js.map +1 -0
- package/{lib → cjs/lib/entity}/vas-base.model.d.ts +4 -10
- package/cjs/lib/entity/vas-base.model.d.ts.map +1 -0
- package/cjs/lib/entity/vas-base.model.js +21 -0
- package/cjs/lib/entity/vas-base.model.js.map +1 -0
- package/cjs/lib/entity/vas-branch.dto.d.ts +22 -0
- package/cjs/lib/entity/vas-branch.dto.d.ts.map +1 -0
- package/cjs/lib/entity/vas-branch.dto.js +3 -0
- package/cjs/lib/entity/vas-branch.dto.js.map +1 -0
- package/cjs/lib/entity/vas-branch.model.d.ts +37 -0
- package/cjs/lib/entity/vas-branch.model.d.ts.map +1 -0
- package/cjs/lib/entity/vas-branch.model.js +72 -0
- package/cjs/lib/entity/vas-branch.model.js.map +1 -0
- package/cjs/lib/entity/vas-contact-type.dto.d.ts +8 -0
- package/cjs/lib/entity/vas-contact-type.dto.d.ts.map +1 -0
- package/cjs/lib/entity/vas-contact-type.dto.js +3 -0
- package/cjs/lib/entity/vas-contact-type.dto.js.map +1 -0
- package/cjs/lib/entity/vas-contact.dto.d.ts +17 -0
- package/cjs/lib/entity/vas-contact.dto.d.ts.map +1 -0
- package/cjs/lib/entity/vas-contact.dto.js +3 -0
- package/cjs/lib/entity/vas-contact.dto.js.map +1 -0
- package/cjs/lib/entity/vas-contact.model.d.ts +33 -0
- package/cjs/lib/entity/vas-contact.model.d.ts.map +1 -0
- package/cjs/lib/entity/vas-contact.model.js +69 -0
- package/cjs/lib/entity/vas-contact.model.js.map +1 -0
- package/{lib → cjs/lib/entity}/vas-control-type.dto.d.ts +1 -0
- package/cjs/lib/entity/vas-control-type.dto.d.ts.map +1 -0
- package/cjs/lib/entity/vas-control-type.dto.js +3 -0
- package/cjs/lib/entity/vas-control-type.dto.js.map +1 -0
- package/{lib → cjs/lib/entity}/vas-control-type.model.d.ts +6 -9
- package/cjs/lib/entity/vas-control-type.model.d.ts.map +1 -0
- package/cjs/lib/entity/vas-control-type.model.js +57 -0
- package/cjs/lib/entity/vas-control-type.model.js.map +1 -0
- package/{lib → cjs/lib/entity}/vas-control.dto.d.ts +5 -1
- package/cjs/lib/entity/vas-control.dto.d.ts.map +1 -0
- package/cjs/lib/entity/vas-control.dto.js +3 -0
- package/cjs/lib/entity/vas-control.dto.js.map +1 -0
- package/{lib → cjs/lib/entity}/vas-control.model.d.ts +19 -32
- package/cjs/lib/entity/vas-control.model.d.ts.map +1 -0
- package/cjs/lib/entity/vas-control.model.js +163 -0
- package/cjs/lib/entity/vas-control.model.js.map +1 -0
- package/cjs/lib/entity/vas-field.dto.d.ts +11 -0
- package/cjs/lib/entity/vas-field.dto.d.ts.map +1 -0
- package/cjs/lib/entity/vas-field.dto.js +3 -0
- package/cjs/lib/entity/vas-field.dto.js.map +1 -0
- package/cjs/lib/entity/vas-field.model.d.ts +46 -0
- package/cjs/lib/entity/vas-field.model.d.ts.map +1 -0
- package/cjs/lib/entity/vas-field.model.js +92 -0
- package/cjs/lib/entity/vas-field.model.js.map +1 -0
- package/cjs/lib/entity/vas-file.dto.d.ts +23 -0
- package/cjs/lib/entity/vas-file.dto.d.ts.map +1 -0
- package/cjs/lib/entity/vas-file.dto.js +13 -0
- package/cjs/lib/entity/vas-file.dto.js.map +1 -0
- package/cjs/lib/entity/vas-file.model.d.ts +43 -0
- package/cjs/lib/entity/vas-file.model.d.ts.map +1 -0
- package/cjs/lib/entity/vas-file.model.js +124 -0
- package/cjs/lib/entity/vas-file.model.js.map +1 -0
- package/cjs/lib/entity/vas-fire-user.dto.d.ts +16 -0
- package/cjs/lib/entity/vas-fire-user.dto.d.ts.map +1 -0
- package/cjs/lib/entity/vas-fire-user.dto.js +3 -0
- package/cjs/lib/entity/vas-fire-user.dto.js.map +1 -0
- package/cjs/lib/entity/vas-fire-user.model.d.ts +56 -0
- package/cjs/lib/entity/vas-fire-user.model.d.ts.map +1 -0
- package/cjs/lib/entity/vas-fire-user.model.js +107 -0
- package/cjs/lib/entity/vas-fire-user.model.js.map +1 -0
- package/cjs/lib/entity/vas-form-config.dto.d.ts +9 -0
- package/cjs/lib/entity/vas-form-config.dto.d.ts.map +1 -0
- package/cjs/lib/entity/vas-form-config.dto.js +3 -0
- package/cjs/lib/entity/vas-form-config.dto.js.map +1 -0
- package/{lib → cjs/lib/entity}/vas-form.dto.d.ts +7 -0
- package/cjs/lib/entity/vas-form.dto.d.ts.map +1 -0
- package/cjs/lib/entity/vas-form.dto.js +3 -0
- package/cjs/lib/entity/vas-form.dto.js.map +1 -0
- package/{lib → cjs/lib/entity}/vas-form.model.d.ts +28 -19
- package/cjs/lib/entity/vas-form.model.d.ts.map +1 -0
- package/cjs/lib/entity/vas-form.model.js +189 -0
- package/cjs/lib/entity/vas-form.model.js.map +1 -0
- package/{lib → cjs/lib/entity}/vas-group.dto.d.ts +2 -1
- package/cjs/lib/entity/vas-group.dto.d.ts.map +1 -0
- package/cjs/lib/entity/vas-group.dto.js +3 -0
- package/cjs/lib/entity/vas-group.dto.js.map +1 -0
- package/{lib → cjs/lib/entity}/vas-group.model.d.ts +5 -23
- package/cjs/lib/entity/vas-group.model.d.ts.map +1 -0
- package/{lib → cjs/lib}/entity/vas-group.model.js +19 -31
- package/cjs/lib/entity/vas-group.model.js.map +1 -0
- package/cjs/lib/entity/vas-instruction-job-field.dto.d.ts +6 -0
- package/cjs/lib/entity/vas-instruction-job-field.dto.d.ts.map +1 -0
- package/cjs/lib/entity/vas-instruction-job-field.dto.js +3 -0
- package/cjs/lib/entity/vas-instruction-job-field.dto.js.map +1 -0
- package/cjs/lib/entity/vas-instruction-job-field.model.d.ts +23 -0
- package/cjs/lib/entity/vas-instruction-job-field.model.d.ts.map +1 -0
- package/cjs/lib/entity/vas-instruction-job-field.model.js +46 -0
- package/cjs/lib/entity/vas-instruction-job-field.model.js.map +1 -0
- package/cjs/lib/entity/vas-instruction-job.dto.d.ts +16 -0
- package/cjs/lib/entity/vas-instruction-job.dto.d.ts.map +1 -0
- package/cjs/lib/entity/vas-instruction-job.dto.js +3 -0
- package/cjs/lib/entity/vas-instruction-job.dto.js.map +1 -0
- package/cjs/lib/entity/vas-instruction-job.model.d.ts +58 -0
- package/cjs/lib/entity/vas-instruction-job.model.d.ts.map +1 -0
- package/cjs/lib/entity/vas-instruction-job.model.js +85 -0
- package/cjs/lib/entity/vas-instruction-job.model.js.map +1 -0
- package/cjs/lib/entity/vas-instruction-provider.dto.d.ts +9 -0
- package/cjs/lib/entity/vas-instruction-provider.dto.d.ts.map +1 -0
- package/cjs/lib/entity/vas-instruction-provider.dto.js +3 -0
- package/cjs/lib/entity/vas-instruction-provider.dto.js.map +1 -0
- package/cjs/lib/entity/vas-instruction-provider.model.d.ts +34 -0
- package/cjs/lib/entity/vas-instruction-provider.model.d.ts.map +1 -0
- package/cjs/lib/entity/vas-instruction-provider.model.js +62 -0
- package/cjs/lib/entity/vas-instruction-provider.model.js.map +1 -0
- package/cjs/lib/entity/vas-instruction.dto.d.ts +6 -0
- package/cjs/lib/entity/vas-instruction.dto.d.ts.map +1 -0
- package/cjs/lib/entity/vas-instruction.dto.js +3 -0
- package/cjs/lib/entity/vas-instruction.dto.js.map +1 -0
- package/cjs/lib/entity/vas-instruction.model.d.ts +30 -0
- package/cjs/lib/entity/vas-instruction.model.d.ts.map +1 -0
- package/cjs/lib/entity/vas-instruction.model.js +53 -0
- package/cjs/lib/entity/vas-instruction.model.js.map +1 -0
- package/cjs/lib/entity/vas-invitation.d.ts +53 -0
- package/cjs/lib/entity/vas-invitation.d.ts.map +1 -0
- package/cjs/lib/entity/vas-invitation.js +89 -0
- package/cjs/lib/entity/vas-invitation.js.map +1 -0
- package/{lib → cjs/lib/entity}/vas-job-data.dto.d.ts +1 -0
- package/cjs/lib/entity/vas-job-data.dto.d.ts.map +1 -0
- package/cjs/lib/entity/vas-job-data.dto.js +3 -0
- package/cjs/lib/entity/vas-job-data.dto.js.map +1 -0
- package/cjs/lib/entity/vas-job-data.model.d.ts +19 -0
- package/cjs/lib/entity/vas-job-data.model.d.ts.map +1 -0
- package/cjs/lib/entity/vas-job-data.model.js +25 -0
- package/cjs/lib/entity/vas-job-data.model.js.map +1 -0
- package/cjs/lib/entity/vas-job-status.dto.d.ts +8 -0
- package/cjs/lib/entity/vas-job-status.dto.d.ts.map +1 -0
- package/cjs/lib/entity/vas-job-status.dto.js +3 -0
- package/cjs/lib/entity/vas-job-status.dto.js.map +1 -0
- package/cjs/lib/entity/vas-job-type.dto.d.ts +8 -0
- package/cjs/lib/entity/vas-job-type.dto.d.ts.map +1 -0
- package/cjs/lib/entity/vas-job-type.dto.js +3 -0
- package/cjs/lib/entity/vas-job-type.dto.js.map +1 -0
- package/cjs/lib/entity/vas-job.dto.d.ts +23 -0
- package/cjs/lib/entity/vas-job.dto.d.ts.map +1 -0
- package/cjs/lib/entity/vas-job.dto.js +3 -0
- package/cjs/lib/entity/vas-job.dto.js.map +1 -0
- package/cjs/lib/entity/vas-job.model.d.ts +232 -0
- package/cjs/lib/entity/vas-job.model.d.ts.map +1 -0
- package/cjs/lib/entity/vas-job.model.js +465 -0
- package/cjs/lib/entity/vas-job.model.js.map +1 -0
- package/cjs/lib/entity/vas-job.model.spec-data.d.ts +2 -0
- package/cjs/lib/entity/vas-job.model.spec-data.d.ts.map +1 -0
- package/cjs/lib/entity/vas-job.model.spec-data.js +29 -0
- package/cjs/lib/entity/vas-job.model.spec-data.js.map +1 -0
- package/cjs/lib/entity/vas-lookup-type.dto.d.ts +7 -0
- package/cjs/lib/entity/vas-lookup-type.dto.d.ts.map +1 -0
- package/cjs/lib/entity/vas-lookup-type.dto.js +3 -0
- package/cjs/lib/entity/vas-lookup-type.dto.js.map +1 -0
- package/cjs/lib/entity/vas-lookup.dto.d.ts +16 -0
- package/cjs/lib/entity/vas-lookup.dto.d.ts.map +1 -0
- package/cjs/lib/entity/vas-lookup.dto.js +3 -0
- package/cjs/lib/entity/vas-lookup.dto.js.map +1 -0
- package/cjs/lib/entity/vas-membership.dto.d.ts +12 -0
- package/cjs/lib/entity/vas-membership.dto.d.ts.map +1 -0
- package/cjs/lib/entity/vas-membership.dto.js +3 -0
- package/cjs/lib/entity/vas-membership.dto.js.map +1 -0
- package/cjs/lib/entity/vas-membership.model.d.ts +30 -0
- package/cjs/lib/entity/vas-membership.model.d.ts.map +1 -0
- package/cjs/lib/entity/vas-membership.model.js +66 -0
- package/cjs/lib/entity/vas-membership.model.js.map +1 -0
- package/cjs/lib/entity/vas-note.dto.d.ts +7 -0
- package/cjs/lib/entity/vas-note.dto.d.ts.map +1 -0
- package/cjs/lib/entity/vas-note.dto.js +3 -0
- package/cjs/lib/entity/vas-note.dto.js.map +1 -0
- package/cjs/lib/entity/vas-note.model.d.ts +31 -0
- package/cjs/lib/entity/vas-note.model.d.ts.map +1 -0
- package/cjs/lib/entity/vas-note.model.js +54 -0
- package/cjs/lib/entity/vas-note.model.js.map +1 -0
- package/{lib → cjs/lib/entity}/vas-report-layout.dto.d.ts +1 -0
- package/cjs/lib/entity/vas-report-layout.dto.d.ts.map +1 -0
- package/cjs/lib/entity/vas-report-layout.dto.js +3 -0
- package/cjs/lib/entity/vas-report-layout.dto.js.map +1 -0
- package/cjs/lib/entity/vas-report-layout.model.d.ts +20 -0
- package/cjs/lib/entity/vas-report-layout.model.d.ts.map +1 -0
- package/cjs/lib/entity/vas-report-layout.model.js +26 -0
- package/cjs/lib/entity/vas-report-layout.model.js.map +1 -0
- package/cjs/lib/entity/vas-report-request.dto.d.ts +9 -0
- package/cjs/lib/entity/vas-report-request.dto.d.ts.map +1 -0
- package/cjs/lib/entity/vas-report-request.dto.js +3 -0
- package/cjs/lib/entity/vas-report-request.dto.js.map +1 -0
- package/cjs/lib/entity/vas-report-request.model.d.ts +23 -0
- package/cjs/lib/entity/vas-report-request.model.d.ts.map +1 -0
- package/cjs/lib/entity/vas-report-request.model.js +51 -0
- package/cjs/lib/entity/vas-report-request.model.js.map +1 -0
- package/cjs/lib/entity/vas-report.dto.d.ts +13 -0
- package/cjs/lib/entity/vas-report.dto.d.ts.map +1 -0
- package/cjs/lib/entity/vas-report.dto.js +3 -0
- package/cjs/lib/entity/vas-report.dto.js.map +1 -0
- package/cjs/lib/entity/vas-report.model.d.ts +29 -0
- package/cjs/lib/entity/vas-report.model.d.ts.map +1 -0
- package/cjs/lib/entity/vas-report.model.js +61 -0
- package/cjs/lib/entity/vas-report.model.js.map +1 -0
- package/{lib → cjs/lib/entity}/vas-restricted-account-object.dto.d.ts +1 -0
- package/cjs/lib/entity/vas-restricted-account-object.dto.d.ts.map +1 -0
- package/cjs/lib/entity/vas-restricted-account-object.dto.js +3 -0
- package/cjs/lib/entity/vas-restricted-account-object.dto.js.map +1 -0
- package/cjs/lib/entity/vas-restricted-account-object.model.d.ts +16 -0
- package/cjs/lib/entity/vas-restricted-account-object.model.d.ts.map +1 -0
- package/cjs/lib/entity/vas-restricted-account-object.model.js +22 -0
- package/cjs/lib/entity/vas-restricted-account-object.model.js.map +1 -0
- package/cjs/lib/entity/vas-task-type.dto.d.ts +7 -0
- package/cjs/lib/entity/vas-task-type.dto.d.ts.map +1 -0
- package/cjs/lib/entity/vas-task-type.dto.js +3 -0
- package/cjs/lib/entity/vas-task-type.dto.js.map +1 -0
- package/cjs/lib/entity/vas-user.dto.d.ts +9 -0
- package/cjs/lib/entity/vas-user.dto.d.ts.map +1 -0
- package/cjs/lib/entity/vas-user.dto.js +3 -0
- package/cjs/lib/entity/vas-user.dto.js.map +1 -0
- package/{lib → cjs/lib/entity}/vas-user.model.d.ts +8 -3
- package/cjs/lib/entity/vas-user.model.d.ts.map +1 -0
- package/cjs/lib/entity/vas-user.model.js +46 -0
- package/cjs/lib/entity/vas-user.model.js.map +1 -0
- package/cjs/lib/model/geo-location.d.ts +13 -0
- package/cjs/lib/model/geo-location.d.ts.map +1 -0
- package/cjs/lib/model/geo-location.js +16 -0
- package/cjs/lib/model/geo-location.js.map +1 -0
- package/cjs/lib/model/index.d.ts +3 -0
- package/cjs/lib/model/index.d.ts.map +1 -0
- package/cjs/lib/model/index.js +6 -0
- package/cjs/lib/model/index.js.map +1 -0
- package/cjs/lib/model/vas-time-range.model.d.ts +5 -0
- package/cjs/lib/model/vas-time-range.model.d.ts.map +1 -0
- package/cjs/lib/model/vas-time-range.model.js +3 -0
- package/cjs/lib/model/vas-time-range.model.js.map +1 -0
- package/{lib → cjs/lib}/utils/find-form-control.d.ts +1 -0
- package/cjs/lib/utils/find-form-control.d.ts.map +1 -0
- package/cjs/lib/utils/find-form-control.js +25 -0
- package/cjs/lib/utils/find-form-control.js.map +1 -0
- package/cjs/lib/utils/get-value-by-path.d.ts +20 -0
- package/cjs/lib/utils/get-value-by-path.d.ts.map +1 -0
- package/cjs/lib/utils/get-value-by-path.js +68 -0
- package/cjs/lib/utils/get-value-by-path.js.map +1 -0
- package/cjs/lib/utils/is-array-string.d.ts +2 -0
- package/cjs/lib/utils/is-array-string.d.ts.map +1 -0
- package/cjs/lib/utils/is-array-string.js +8 -0
- package/cjs/lib/utils/is-array-string.js.map +1 -0
- package/cjs/package.json +61 -0
- package/cjs/public-api.d.ts +5 -0
- package/cjs/public-api.d.ts.map +1 -0
- package/cjs/public-api.js +8 -0
- package/cjs/public-api.js.map +1 -0
- package/esm2020/ironcode-vas-lib.mjs +5 -0
- package/esm2020/lib/control-value/index.mjs +2 -0
- package/esm2020/lib/control-value/vas-camera-control-value.model.mjs +8 -0
- package/esm2020/lib/controls-config/index.mjs +4 -0
- package/esm2020/lib/controls-config/vas-control-config-direction.enum.mjs +8 -0
- package/esm2020/lib/controls-config/vas-control-config.model.mjs +2 -0
- package/esm2020/lib/controls-config/vas-select-control-config.model.mjs +2 -0
- package/esm2020/lib/entity/index.mjs +60 -0
- package/esm2020/lib/entity/vas-access-group.dto.mjs +2 -0
- package/esm2020/lib/entity/vas-account-config.dto.mjs +2 -0
- package/esm2020/lib/entity/vas-account-object.dto.mjs +2 -0
- package/esm2020/lib/entity/vas-account-object.model.mjs +24 -0
- package/esm2020/lib/entity/vas-account.dto.mjs +7 -0
- package/esm2020/lib/entity/vas-base.dto.mjs +2 -0
- package/esm2020/lib/entity/vas-base.model.mjs +17 -0
- package/esm2020/lib/entity/vas-branch.dto.mjs +2 -0
- package/esm2020/lib/entity/vas-branch.model.mjs +68 -0
- package/esm2020/lib/entity/vas-contact-type.dto.mjs +2 -0
- package/esm2020/lib/entity/vas-contact.dto.mjs +2 -0
- package/esm2020/lib/entity/vas-contact.model.mjs +84 -0
- package/esm2020/lib/entity/vas-control-type.dto.mjs +2 -0
- package/esm2020/lib/entity/vas-control-type.model.mjs +53 -0
- package/esm2020/lib/entity/vas-control.dto.mjs +2 -0
- package/esm2020/lib/entity/vas-control.model.mjs +163 -0
- package/esm2020/lib/entity/vas-field.dto.mjs +2 -0
- package/esm2020/lib/entity/vas-field.model.mjs +92 -0
- package/esm2020/lib/entity/vas-file.dto.mjs +9 -0
- package/esm2020/lib/entity/vas-file.model.mjs +126 -0
- package/esm2020/lib/entity/vas-fire-user.dto.mjs +2 -0
- package/esm2020/lib/entity/vas-fire-user.model.mjs +102 -0
- package/esm2020/lib/entity/vas-form-config.dto.mjs +2 -0
- package/esm2020/lib/entity/vas-form.dto.mjs +2 -0
- package/esm2020/lib/entity/vas-form.model.mjs +185 -0
- package/esm2020/lib/entity/vas-group.dto.mjs +2 -0
- package/esm2020/lib/entity/vas-group.model.mjs +89 -0
- package/esm2020/lib/entity/vas-instruction-job-field.dto.mjs +2 -0
- package/esm2020/lib/entity/vas-instruction-job-field.model.mjs +42 -0
- package/esm2020/lib/entity/vas-instruction-job.dto.mjs +2 -0
- package/esm2020/lib/entity/vas-instruction-job.model.mjs +81 -0
- package/esm2020/lib/entity/vas-instruction-provider.dto.mjs +2 -0
- package/esm2020/lib/entity/vas-instruction-provider.model.mjs +63 -0
- package/esm2020/lib/entity/vas-instruction.dto.mjs +2 -0
- package/esm2020/lib/entity/vas-instruction.model.mjs +49 -0
- package/esm2020/lib/entity/vas-invitation.mjs +88 -0
- package/esm2020/lib/entity/vas-job-data.dto.mjs +2 -0
- package/esm2020/lib/entity/vas-job-data.model.mjs +21 -0
- package/esm2020/lib/entity/vas-job-status.dto.mjs +2 -0
- package/esm2020/lib/entity/vas-job-type.dto.mjs +2 -0
- package/esm2020/lib/entity/vas-job.dto.mjs +2 -0
- package/esm2020/lib/entity/vas-job.model.mjs +471 -0
- package/esm2020/lib/entity/vas-lookup-type.dto.mjs +2 -0
- package/esm2020/lib/entity/vas-lookup.dto.mjs +2 -0
- package/esm2020/lib/entity/vas-membership.dto.mjs +2 -0
- package/esm2020/lib/entity/vas-membership.model.mjs +62 -0
- package/esm2020/lib/entity/vas-note.dto.mjs +2 -0
- package/esm2020/lib/entity/vas-note.model.mjs +50 -0
- package/esm2020/lib/entity/vas-report-layout.dto.mjs +2 -0
- package/esm2020/lib/entity/vas-report-layout.model.mjs +22 -0
- package/esm2020/lib/entity/vas-report-request.dto.mjs +2 -0
- package/esm2020/lib/entity/vas-report-request.model.mjs +46 -0
- package/esm2020/lib/entity/vas-report.dto.mjs +2 -0
- package/esm2020/lib/entity/vas-report.model.mjs +57 -0
- package/esm2020/lib/entity/vas-restricted-account-object.dto.mjs +2 -0
- package/esm2020/lib/entity/vas-restricted-account-object.model.mjs +18 -0
- package/esm2020/lib/entity/vas-task-type.dto.mjs +2 -0
- package/esm2020/lib/entity/vas-user.dto.mjs +2 -0
- package/esm2020/lib/entity/vas-user.model.mjs +42 -0
- package/esm2020/lib/model/geo-location.mjs +12 -0
- package/esm2020/lib/model/index.mjs +3 -0
- package/esm2020/lib/model/vas-time-range.model.mjs +2 -0
- package/esm2020/lib/utils/get-value-by-path.mjs +64 -0
- package/esm2020/lib/utils/is-array-string.mjs +4 -0
- package/esm2020/public-api.mjs +5 -0
- package/fesm2015/ironcode-vas-lib.mjs +2134 -0
- package/fesm2015/ironcode-vas-lib.mjs.map +1 -0
- package/fesm2020/ironcode-vas-lib.mjs +2186 -0
- package/fesm2020/ironcode-vas-lib.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/control-value/index.d.ts +1 -0
- package/lib/control-value/vas-camera-control-value.model.d.ts +7 -0
- package/lib/controls-config/index.d.ts +3 -0
- package/lib/controls-config/vas-control-config-direction.enum.d.ts +4 -0
- package/lib/controls-config/vas-control-config.model.d.ts +7 -0
- package/lib/controls-config/vas-select-control-config.model.d.ts +9 -0
- package/lib/entity/index.d.ts +59 -0
- package/lib/entity/vas-access-group.dto.d.ts +6 -0
- package/lib/entity/vas-account-config.dto.d.ts +7 -0
- package/lib/entity/vas-account-object.model.d.ts +15 -0
- package/lib/entity/vas-account.dto.d.ts +54 -0
- package/lib/entity/vas-base.dto.d.ts +2 -0
- package/lib/entity/vas-base.model.d.ts +3 -10
- package/lib/entity/vas-branch.dto.d.ts +21 -0
- package/lib/entity/vas-branch.model.d.ts +36 -0
- package/lib/entity/vas-contact-type.dto.d.ts +7 -0
- package/lib/entity/vas-contact.dto.d.ts +16 -0
- package/lib/entity/vas-contact.model.d.ts +32 -0
- package/lib/entity/vas-control-type.model.d.ts +5 -9
- package/lib/entity/vas-control.dto.d.ts +4 -1
- package/lib/entity/vas-control.model.d.ts +18 -32
- package/lib/entity/vas-field.dto.d.ts +4 -2
- package/lib/entity/vas-field.model.d.ts +45 -0
- package/lib/entity/vas-file.dto.d.ts +16 -7
- package/lib/entity/vas-file.model.d.ts +42 -0
- package/lib/entity/vas-fire-user.dto.d.ts +15 -0
- package/lib/entity/vas-fire-user.model.d.ts +55 -0
- package/lib/entity/vas-form-config.dto.d.ts +8 -0
- package/lib/entity/vas-form.dto.d.ts +6 -0
- package/lib/entity/vas-form.model.d.ts +27 -19
- package/lib/entity/vas-group.dto.d.ts +1 -1
- package/lib/entity/vas-group.model.d.ts +4 -23
- package/lib/entity/vas-instruction-job-field.dto.d.ts +5 -0
- package/lib/entity/vas-instruction-job-field.model.d.ts +22 -0
- package/lib/entity/vas-instruction-job.dto.d.ts +15 -0
- package/lib/entity/vas-instruction-job.model.d.ts +57 -0
- package/lib/entity/vas-instruction-provider.dto.d.ts +8 -0
- package/lib/entity/vas-instruction-provider.model.d.ts +33 -0
- package/lib/entity/vas-instruction.dto.d.ts +5 -0
- package/lib/entity/vas-instruction.model.d.ts +29 -0
- package/lib/entity/vas-invitation.d.ts +52 -0
- package/lib/entity/vas-job-data.model.d.ts +18 -0
- package/lib/entity/vas-job-status.dto.d.ts +7 -0
- package/lib/entity/vas-job-type.dto.d.ts +7 -0
- package/lib/entity/vas-job.dto.d.ts +13 -2
- package/lib/entity/vas-job.model.d.ts +169 -40
- package/lib/entity/vas-lookup-type.dto.d.ts +6 -0
- package/lib/entity/vas-lookup.dto.d.ts +15 -0
- package/lib/entity/vas-membership.dto.d.ts +11 -0
- package/lib/entity/vas-membership.model.d.ts +29 -0
- package/lib/entity/vas-note.dto.d.ts +6 -0
- package/lib/entity/vas-note.model.d.ts +30 -0
- package/lib/entity/vas-report-layout.model.d.ts +19 -0
- package/lib/entity/vas-report-request.dto.d.ts +8 -0
- package/lib/entity/vas-report-request.model.d.ts +22 -0
- package/lib/entity/vas-report.dto.d.ts +12 -0
- package/lib/entity/vas-report.model.d.ts +28 -0
- package/lib/entity/vas-restricted-account-object.model.d.ts +15 -0
- package/lib/entity/vas-task-type.dto.d.ts +6 -0
- package/lib/entity/vas-user.dto.d.ts +4 -1
- package/lib/entity/vas-user.model.d.ts +7 -3
- package/lib/model/geo-location.d.ts +12 -0
- package/lib/model/index.d.ts +2 -0
- package/lib/model/vas-time-range.model.d.ts +4 -0
- package/lib/utils/get-value-by-path.d.ts +19 -0
- package/lib/utils/is-array-string.d.ts +1 -0
- package/package.json +25 -26
- package/public-api.d.ts +4 -0
- package/lib/entity/report-request.model.d.ts +0 -8
- package/lib/entity/report-request.model.js +0 -2
- package/lib/entity/report-request.model.js.map +0 -1
- package/lib/entity/vas-account-object.dto.js +0 -2
- package/lib/entity/vas-account-object.dto.js.map +0 -1
- package/lib/entity/vas-base.dto.js +0 -2
- package/lib/entity/vas-base.dto.js.map +0 -1
- package/lib/entity/vas-base.model.js +0 -24
- package/lib/entity/vas-base.model.js.map +0 -1
- package/lib/entity/vas-control-type.dto.js +0 -2
- package/lib/entity/vas-control-type.dto.js.map +0 -1
- package/lib/entity/vas-control-type.model.js +0 -53
- package/lib/entity/vas-control-type.model.js.map +0 -1
- package/lib/entity/vas-control.dto.js +0 -2
- package/lib/entity/vas-control.dto.js.map +0 -1
- package/lib/entity/vas-control.model.js +0 -132
- package/lib/entity/vas-control.model.js.map +0 -1
- package/lib/entity/vas-field.dto.js +0 -2
- package/lib/entity/vas-field.dto.js.map +0 -1
- package/lib/entity/vas-file.dto.js +0 -2
- package/lib/entity/vas-file.dto.js.map +0 -1
- package/lib/entity/vas-form.dto.js +0 -2
- package/lib/entity/vas-form.dto.js.map +0 -1
- package/lib/entity/vas-form.model.js +0 -144
- package/lib/entity/vas-form.model.js.map +0 -1
- package/lib/entity/vas-group.dto.js +0 -2
- package/lib/entity/vas-group.dto.js.map +0 -1
- package/lib/entity/vas-group.model.js.map +0 -1
- package/lib/entity/vas-job-data.dto.js +0 -2
- package/lib/entity/vas-job-data.dto.js.map +0 -1
- package/lib/entity/vas-job.dto.js +0 -2
- package/lib/entity/vas-job.dto.js.map +0 -1
- package/lib/entity/vas-job.model.js +0 -170
- package/lib/entity/vas-job.model.js.map +0 -1
- package/lib/entity/vas-report-layout.dto.js +0 -2
- package/lib/entity/vas-report-layout.dto.js.map +0 -1
- package/lib/entity/vas-restricted-account-object.dto.js +0 -2
- package/lib/entity/vas-restricted-account-object.dto.js.map +0 -1
- package/lib/entity/vas-user.dto.js +0 -2
- package/lib/entity/vas-user.dto.js.map +0 -1
- package/lib/entity/vas-user.model.js +0 -46
- package/lib/entity/vas-user.model.js.map +0 -1
- package/lib/ng-models/ng-control.model.d.ts +0 -14
- package/lib/ng-models/ng-control.model.js +0 -14
- package/lib/ng-models/ng-control.model.js.map +0 -1
- package/lib/ng-models/ng-form.model.d.ts +0 -27
- package/lib/ng-models/ng-form.model.js +0 -54
- package/lib/ng-models/ng-form.model.js.map +0 -1
- package/lib/ng-models/ng-group.model.d.ts +0 -36
- package/lib/ng-models/ng-group.model.js +0 -59
- package/lib/ng-models/ng-group.model.js.map +0 -1
- package/lib/report-request.model.d.ts +0 -8
- package/lib/report-request.model.js +0 -2
- package/lib/report-request.model.js.map +0 -1
- package/lib/utils/find-form-control.js +0 -20
- package/lib/utils/find-form-control.js.map +0 -1
- package/lib/vas-account-object.dto.js +0 -2
- package/lib/vas-account-object.dto.js.map +0 -1
- package/lib/vas-base.dto.js +0 -2
- package/lib/vas-base.dto.js.map +0 -1
- package/lib/vas-base.model.js +0 -24
- package/lib/vas-base.model.js.map +0 -1
- package/lib/vas-control-type.dto.js +0 -2
- package/lib/vas-control-type.dto.js.map +0 -1
- package/lib/vas-control-type.model.js +0 -53
- package/lib/vas-control-type.model.js.map +0 -1
- package/lib/vas-control.dto.js +0 -2
- package/lib/vas-control.dto.js.map +0 -1
- package/lib/vas-control.model.js +0 -132
- package/lib/vas-control.model.js.map +0 -1
- package/lib/vas-field.dto.d.ts +0 -8
- package/lib/vas-field.dto.js +0 -2
- package/lib/vas-field.dto.js.map +0 -1
- package/lib/vas-file.dto.d.ts +0 -13
- package/lib/vas-file.dto.js +0 -2
- package/lib/vas-file.dto.js.map +0 -1
- package/lib/vas-form.dto.js +0 -2
- package/lib/vas-form.dto.js.map +0 -1
- package/lib/vas-form.model.js +0 -144
- package/lib/vas-form.model.js.map +0 -1
- package/lib/vas-group.dto.js +0 -2
- package/lib/vas-group.dto.js.map +0 -1
- package/lib/vas-group.model.js +0 -105
- package/lib/vas-group.model.js.map +0 -1
- package/lib/vas-job-data.dto.js +0 -2
- package/lib/vas-job-data.dto.js.map +0 -1
- package/lib/vas-job.dto.d.ts +0 -11
- package/lib/vas-job.dto.js +0 -2
- package/lib/vas-job.dto.js.map +0 -1
- package/lib/vas-job.model.d.ts +0 -102
- package/lib/vas-job.model.js +0 -170
- package/lib/vas-job.model.js.map +0 -1
- package/lib/vas-job.model.spec.d.ts +0 -1
- package/lib/vas-job.model.spec.js +0 -18
- package/lib/vas-report-layout.dto.js +0 -2
- package/lib/vas-report-layout.dto.js.map +0 -1
- package/lib/vas-restricted-account-object.dto.js +0 -2
- package/lib/vas-restricted-account-object.dto.js.map +0 -1
- package/lib/vas-user.dto.d.ts +0 -5
- package/lib/vas-user.dto.js +0 -2
- package/lib/vas-user.dto.js.map +0 -1
- package/lib/vas-user.model.js +0 -46
- package/lib/vas-user.model.js.map +0 -1
|
@@ -0,0 +1,471 @@
|
|
|
1
|
+
import { isFileDto } from './vas-file.dto';
|
|
2
|
+
import { UUID } from 'angular2-uuid';
|
|
3
|
+
import moment from 'moment';
|
|
4
|
+
import { getValueByPath } from '../utils/get-value-by-path';
|
|
5
|
+
import { VasFieldModel } from './vas-field.model';
|
|
6
|
+
import { VasRestrictedAccountObjectModel } from './vas-restricted-account-object.model';
|
|
7
|
+
import { getEmptyGeoLocation } from '../model/geo-location';
|
|
8
|
+
import { isCameraControlValueV1 } from '../control-value/vas-camera-control-value.model';
|
|
9
|
+
import { isArrayString } from '../utils/is-array-string';
|
|
10
|
+
/**
|
|
11
|
+
* JobModel
|
|
12
|
+
*/
|
|
13
|
+
export class VasJobModel extends VasRestrictedAccountObjectModel {
|
|
14
|
+
constructor(id, created, serverCreated, createdBy, modified, serverModified, modifiedBy, createdByName, modifiedByName, account, accessGroup, reference, jobDate, jobStatus, jobType, assigneeId, formId, timeZoneOffset, pendingFields, childModified, version, fields, files, createdByDisplayName, modifiedByDisplayName, geoLocation) {
|
|
15
|
+
super(id, created, serverCreated, createdBy, modified, serverModified, modifiedBy, createdByName, modifiedByName, account, accessGroup);
|
|
16
|
+
this.id = id;
|
|
17
|
+
this.created = created;
|
|
18
|
+
this.serverCreated = serverCreated;
|
|
19
|
+
this.createdBy = createdBy;
|
|
20
|
+
this.modified = modified;
|
|
21
|
+
this.serverModified = serverModified;
|
|
22
|
+
this.modifiedBy = modifiedBy;
|
|
23
|
+
this.createdByName = createdByName;
|
|
24
|
+
this.modifiedByName = modifiedByName;
|
|
25
|
+
this.account = account;
|
|
26
|
+
this.accessGroup = accessGroup;
|
|
27
|
+
this.reference = reference;
|
|
28
|
+
this.jobDate = jobDate;
|
|
29
|
+
this.jobStatus = jobStatus;
|
|
30
|
+
this.jobType = jobType;
|
|
31
|
+
this.assigneeId = assigneeId;
|
|
32
|
+
this.formId = formId;
|
|
33
|
+
this.timeZoneOffset = timeZoneOffset;
|
|
34
|
+
this.pendingFields = pendingFields;
|
|
35
|
+
this.childModified = childModified;
|
|
36
|
+
this.version = version;
|
|
37
|
+
this.fields = fields;
|
|
38
|
+
this.files = files;
|
|
39
|
+
this.createdByDisplayName = createdByDisplayName;
|
|
40
|
+
this.modifiedByDisplayName = modifiedByDisplayName;
|
|
41
|
+
this.geoLocation = geoLocation;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Returns this with the dynamic interface
|
|
45
|
+
* @return {VasJobModelDynamicInterface}
|
|
46
|
+
*/
|
|
47
|
+
get $this() {
|
|
48
|
+
return this;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Returns a list of Job dynamic properties i.e. those that are added by the
|
|
52
|
+
* dynamic forms
|
|
53
|
+
*/
|
|
54
|
+
get dynamicProperties() {
|
|
55
|
+
const nativeProps = this.staticProperties;
|
|
56
|
+
return Object
|
|
57
|
+
.getOwnPropertyNames(this)
|
|
58
|
+
.filter(prop => !nativeProps.includes(prop));
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Returns a list of Job static properties i.e. those that are declared by
|
|
62
|
+
* the type
|
|
63
|
+
*/
|
|
64
|
+
get staticProperties() {
|
|
65
|
+
return Object.getOwnPropertyNames(VasJobModel.empty());
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* @return {VasJobModel}
|
|
69
|
+
*/
|
|
70
|
+
static empty() {
|
|
71
|
+
return new VasJobModel('', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', moment().utcOffset(), 0, '', 0, [], [], '', '', getEmptyGeoLocation());
|
|
72
|
+
}
|
|
73
|
+
static fromDto(dto) {
|
|
74
|
+
const model = new VasJobModel(dto.id || '', dto.created || '', dto.serverCreated || '', dto.createdBy || '', dto.modified || '', dto.serverModified || '', dto.modifiedBy || '', dto.createdByName || '', dto.modifiedByName || '', dto.account || '', dto.accessGroup || '', dto.reference || '', dto.jobDate || '', dto.jobStatus || '', dto.jobType || '', dto.assigneeId || '', dto.formId || '', dto.timeZoneOffset || moment().utcOffset(), dto.pendingFields || 0, dto.childModified || '', dto.version || 0, dto.fields || [], dto.files || [], dto.createdByDisplayName || '', dto.modifiedByDisplayName || '', dto.geoLocation || getEmptyGeoLocation());
|
|
75
|
+
const emptyKeys = model.staticProperties;
|
|
76
|
+
Object
|
|
77
|
+
.keys(dto)
|
|
78
|
+
.filter(key => emptyKeys.indexOf(key) === -1)
|
|
79
|
+
.forEach((key) => model.$this[key] = dto[key]);
|
|
80
|
+
return model;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* @param {VasFormModel} formModel
|
|
84
|
+
* @return {Record<string, VasFieldDtoValue>}
|
|
85
|
+
*/
|
|
86
|
+
getFields(formModel) {
|
|
87
|
+
const fields = {};
|
|
88
|
+
formModel.groups
|
|
89
|
+
.forEach(group => {
|
|
90
|
+
group.controls.forEach(control => {
|
|
91
|
+
(fields)[control.reportTemplateName] =
|
|
92
|
+
this.getValueByPath([group.name, control.name]);
|
|
93
|
+
});
|
|
94
|
+
});
|
|
95
|
+
return fields;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Will return an object whose keys are the names of all fields in the job.
|
|
99
|
+
* This method is similar to `getFields` except that this method will only
|
|
100
|
+
* return values where a value was set, as opposed to `getFields` which
|
|
101
|
+
* return a property regardless (because it uses the form to drive the logic)
|
|
102
|
+
* @return {Record<string, VasFieldDtoValue>}
|
|
103
|
+
*/
|
|
104
|
+
getFields2() {
|
|
105
|
+
let fields = {};
|
|
106
|
+
this.dynamicProperties
|
|
107
|
+
.forEach((groupName) => {
|
|
108
|
+
Object
|
|
109
|
+
.keys(this.$this[groupName])
|
|
110
|
+
.forEach(controlName => {
|
|
111
|
+
fields[controlName] = this.getValueByPath([groupName, controlName]);
|
|
112
|
+
});
|
|
113
|
+
}, {});
|
|
114
|
+
return fields;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Returns an object describing how many attachments were added to this job
|
|
118
|
+
* (camera controls and files), and how many have not been uploaded yet.
|
|
119
|
+
*
|
|
120
|
+
* @param formModel instance of {@link VasFormModel} that was used when the
|
|
121
|
+
* job was created
|
|
122
|
+
*/
|
|
123
|
+
getFilesUploadStatus(formModel) {
|
|
124
|
+
const pathsWithValue = formModel
|
|
125
|
+
.getCameraControlPaths()
|
|
126
|
+
.map(path => {
|
|
127
|
+
const value = this.getValueByPath(path);
|
|
128
|
+
if (value && !!value.id) {
|
|
129
|
+
return path;
|
|
130
|
+
}
|
|
131
|
+
return null;
|
|
132
|
+
})
|
|
133
|
+
.filter(path => path !== null ? path : null)
|
|
134
|
+
.filter(isArrayString);
|
|
135
|
+
let total = pathsWithValue.length;
|
|
136
|
+
total += this.files.length;
|
|
137
|
+
// calculate the number of camera images still to upload
|
|
138
|
+
let pending = pathsWithValue
|
|
139
|
+
.map(path => this.getValueByPath(path))
|
|
140
|
+
.map((value) => {
|
|
141
|
+
if (isFileDto(value)) {
|
|
142
|
+
return value.id && value.status !== 'COMPLETE';
|
|
143
|
+
}
|
|
144
|
+
else if (isCameraControlValueV1(value)) {
|
|
145
|
+
// if url is not set, it hasn't been uploaded
|
|
146
|
+
return value.id && !value.url;
|
|
147
|
+
}
|
|
148
|
+
return false;
|
|
149
|
+
})
|
|
150
|
+
.filter(hasUploaded => hasUploaded)
|
|
151
|
+
.length;
|
|
152
|
+
// add total from files that are pending
|
|
153
|
+
pending += this.files
|
|
154
|
+
.filter(value => value.status !== 'COMPLETED')
|
|
155
|
+
.length;
|
|
156
|
+
return {
|
|
157
|
+
pending,
|
|
158
|
+
total
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* This method will hydrate the `fields` property of the model. The reason for
|
|
163
|
+
* this is that we have different ways to store the field data. One way, is
|
|
164
|
+
* we store them as dynamic properties of the job. For example job.foo.bar,
|
|
165
|
+
* where `foo` is the name of a Group, and `bar` is the name of a control.
|
|
166
|
+
* Thus, when we create a job using a form in the client, the job object will
|
|
167
|
+
* have its static properties (id, account, reference etc), and also a number
|
|
168
|
+
* of dynamic properties determined by the Groups and Controls. This kind of
|
|
169
|
+
* object is nice to work with in certain circumstances. However, the api
|
|
170
|
+
* works differently. In the API a Job is a record, and references a number of
|
|
171
|
+
* Field records. Each Field stores the value. Comparing these two models we
|
|
172
|
+
* have:
|
|
173
|
+
* A) job with dynamic properties, e.g.
|
|
174
|
+
* {
|
|
175
|
+
* id: <guid>,
|
|
176
|
+
* reference: "something"
|
|
177
|
+
* <other static job properties>...
|
|
178
|
+
* foo: {
|
|
179
|
+
* bar: "value"
|
|
180
|
+
* }
|
|
181
|
+
* }
|
|
182
|
+
*
|
|
183
|
+
* B) job with fields
|
|
184
|
+
* {
|
|
185
|
+
* id: <guid>,
|
|
186
|
+
* reference: "something"
|
|
187
|
+
* <other static job properties>...
|
|
188
|
+
* <will not have dynamic properties>...
|
|
189
|
+
* fields: [
|
|
190
|
+
* {
|
|
191
|
+
* id: <guid>,
|
|
192
|
+
* <other field properties>,
|
|
193
|
+
* value: "value"
|
|
194
|
+
* }
|
|
195
|
+
* ]
|
|
196
|
+
* }
|
|
197
|
+
*
|
|
198
|
+
* So, what this method does is given a JobModel in the form of A, read all
|
|
199
|
+
* of those dynamic properties and set them into `fields`. Doing this requires
|
|
200
|
+
* knowledge of the Form that was used to create the job. Moreover, since the
|
|
201
|
+
* dynamic properties do not contain the ids of the fields, we also allow to
|
|
202
|
+
* pass in a `controlFieldIdMap`. This map stores the mapping between Control
|
|
203
|
+
* and the Field that was created in the Job to store the value for that
|
|
204
|
+
* Control. This is useful, if for example you want to compare a Job in form A
|
|
205
|
+
* with a Job in form B, for example if you want to update the Job on the API
|
|
206
|
+
* with a Job that was saved by a client in form A.
|
|
207
|
+
*
|
|
208
|
+
* E.g.
|
|
209
|
+
* Client -> API: client requests form
|
|
210
|
+
* User -> Client: user fills in the form and submits
|
|
211
|
+
* Client -> Firestore: client saves the Job in form A i.e. dynamic props
|
|
212
|
+
* Firestore -> Function: A function is triggered to sync the job to the API
|
|
213
|
+
* Function -> API: Function checks if job already exists, it receives 404
|
|
214
|
+
* Function -> Function: The function calls `hydrateFields(...)`
|
|
215
|
+
* Function -> API: The function POST the Job to /jobs
|
|
216
|
+
* Function -> API: The function POST each field to /fields
|
|
217
|
+
*
|
|
218
|
+
* Similarly, if the user updates the job
|
|
219
|
+
* Client -> API: client requests form
|
|
220
|
+
* User -> Client: user fills in the form and submits an update
|
|
221
|
+
* Client -> Firestore: client saves the Job in form A i.e. dynamic props
|
|
222
|
+
* Firestore -> Function: A function is triggered to sync the job to the API
|
|
223
|
+
* Function -> API: Function checks if job already exists, it receives 200
|
|
224
|
+
* Function -> Function: The function calls `hydrateFields(...)` passing in
|
|
225
|
+
* the map is made by iterating over the fields it
|
|
226
|
+
* received from the API and storing the mappings
|
|
227
|
+
* between controlId and fieldId for each field
|
|
228
|
+
* Function -> API: The function PATCH the Job to /jobs
|
|
229
|
+
* Function -> API: The function POST/PATCH each field to /fields
|
|
230
|
+
* treated as new
|
|
231
|
+
*
|
|
232
|
+
* @param {VasFormModel} formModel the VasFormModel that was used to create
|
|
233
|
+
* the job
|
|
234
|
+
* @param {Map<string, string>} controlFieldIdMap a mapping of control to
|
|
235
|
+
* field ids. This is used to determine whether a new id for the field should
|
|
236
|
+
* be generated, or to reuse an existing one from the map.
|
|
237
|
+
* @param {Array<string>} controlNames if a value is provided, it will be used
|
|
238
|
+
* to filter the fields that are returned.
|
|
239
|
+
* @return {Array<VasFieldDto>}
|
|
240
|
+
*/
|
|
241
|
+
hydrateFields(formModel, controlFieldIdMap = new Map(), controlNames) {
|
|
242
|
+
const fields = [];
|
|
243
|
+
formModel.groups
|
|
244
|
+
.forEach(group => {
|
|
245
|
+
group.controls.forEach(control => {
|
|
246
|
+
if (!control.name.startsWith('fields.')) {
|
|
247
|
+
return;
|
|
248
|
+
}
|
|
249
|
+
if (controlNames && !controlNames.includes(control.name)) {
|
|
250
|
+
return;
|
|
251
|
+
}
|
|
252
|
+
fields.push(VasFieldModel.fromDto({
|
|
253
|
+
// if the controlId exists in the map, use the associated fieldId,
|
|
254
|
+
// otherwise generate a new id for the field.
|
|
255
|
+
id: controlFieldIdMap.get(control.id) || UUID.UUID(),
|
|
256
|
+
account: this.account,
|
|
257
|
+
job: this.id,
|
|
258
|
+
createdBy: this.createdBy,
|
|
259
|
+
created: this.created,
|
|
260
|
+
modifiedBy: this.modifiedBy,
|
|
261
|
+
modified: this.modified,
|
|
262
|
+
control: control.id,
|
|
263
|
+
value: this.getValueByPath([group.name, control.name])
|
|
264
|
+
}));
|
|
265
|
+
});
|
|
266
|
+
});
|
|
267
|
+
this.fields = fields;
|
|
268
|
+
}
|
|
269
|
+
/**
|
|
270
|
+
* @param {string[]} path path segments
|
|
271
|
+
* @return {void}
|
|
272
|
+
*/
|
|
273
|
+
getValueByPath(path = []) {
|
|
274
|
+
return getValueByPath(path, this.$this);
|
|
275
|
+
}
|
|
276
|
+
/**
|
|
277
|
+
* A very non sophisticated way to set values in the job via paths
|
|
278
|
+
*
|
|
279
|
+
* For example:
|
|
280
|
+
*
|
|
281
|
+
* setValueByPath('value', ['foo', 'bar']);
|
|
282
|
+
*
|
|
283
|
+
* will make results in job
|
|
284
|
+
* {
|
|
285
|
+
* foo: {
|
|
286
|
+
* bar: 'value'
|
|
287
|
+
* }
|
|
288
|
+
* }
|
|
289
|
+
*
|
|
290
|
+
* @param {any} value the value to set
|
|
291
|
+
* @param {string[]} path path segments
|
|
292
|
+
*/
|
|
293
|
+
setValueByPath(value, path = []) {
|
|
294
|
+
switch (path.length) {
|
|
295
|
+
case 0: {
|
|
296
|
+
return;
|
|
297
|
+
}
|
|
298
|
+
case 1: {
|
|
299
|
+
this[path[0]] = value;
|
|
300
|
+
return;
|
|
301
|
+
}
|
|
302
|
+
case 2: {
|
|
303
|
+
// eslint-disable-next-line max-len
|
|
304
|
+
this.$this[path[0]][path[1]] = value;
|
|
305
|
+
return;
|
|
306
|
+
}
|
|
307
|
+
case 3: {
|
|
308
|
+
// eslint-disable-next-line max-len
|
|
309
|
+
this.$this[path[0]][path[1]][path[2]] = value;
|
|
310
|
+
return;
|
|
311
|
+
}
|
|
312
|
+
default: {
|
|
313
|
+
throw Error('path has too many segments');
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
/**
|
|
318
|
+
* @param {boolean} staticOnly if true, will only output values for the static
|
|
319
|
+
* properties in the dto
|
|
320
|
+
* @return {VasJobDto}
|
|
321
|
+
*/
|
|
322
|
+
toDto(staticOnly = false) {
|
|
323
|
+
if (staticOnly) {
|
|
324
|
+
return {
|
|
325
|
+
id: this.id,
|
|
326
|
+
created: this.created,
|
|
327
|
+
createdBy: this.createdBy,
|
|
328
|
+
modified: this.modified,
|
|
329
|
+
modifiedBy: this.modifiedBy,
|
|
330
|
+
serverCreated: this.serverCreated,
|
|
331
|
+
serverModified: this.serverModified,
|
|
332
|
+
createdByName: this.createdByName,
|
|
333
|
+
modifiedByName: this.modifiedByName,
|
|
334
|
+
account: this.account,
|
|
335
|
+
accessGroup: this.accessGroup,
|
|
336
|
+
reference: this.reference,
|
|
337
|
+
jobDate: this.jobDate,
|
|
338
|
+
jobStatus: this.jobStatus,
|
|
339
|
+
jobType: this.jobType,
|
|
340
|
+
assigneeId: this.assigneeId,
|
|
341
|
+
formId: this.formId,
|
|
342
|
+
timeZoneOffset: this.timeZoneOffset,
|
|
343
|
+
pendingFields: this.pendingFields,
|
|
344
|
+
childModified: this.childModified,
|
|
345
|
+
version: this.version,
|
|
346
|
+
fields: this.fields,
|
|
347
|
+
files: this.files,
|
|
348
|
+
createdByDisplayName: this.createdByDisplayName,
|
|
349
|
+
modifiedByDisplayName: this.modifiedByDisplayName,
|
|
350
|
+
geoLocation: this.geoLocation
|
|
351
|
+
};
|
|
352
|
+
}
|
|
353
|
+
const dto = {};
|
|
354
|
+
[...this.staticProperties, ...this.dynamicProperties]
|
|
355
|
+
.forEach(prop => (dto)[prop] = this.$this[prop]);
|
|
356
|
+
return dto;
|
|
357
|
+
}
|
|
358
|
+
/**
|
|
359
|
+
* This method will parse a syntax that allows us to build strings from the
|
|
360
|
+
* values of from the job model. For example if the job model was:
|
|
361
|
+
*
|
|
362
|
+
* {
|
|
363
|
+
* foo: 'bar'
|
|
364
|
+
* }
|
|
365
|
+
*
|
|
366
|
+
* and we pass "i am foo {foo}", the result would be:
|
|
367
|
+
*
|
|
368
|
+
* "i am foo bar"
|
|
369
|
+
*
|
|
370
|
+
* we can also use moment to parse dates, for example if the job model was:
|
|
371
|
+
*
|
|
372
|
+
* {
|
|
373
|
+
* created: "2022-01-01T00:00:00+0000"
|
|
374
|
+
* }
|
|
375
|
+
*
|
|
376
|
+
* and we pass "{created|date:YY-MM-DD}", the result would be:
|
|
377
|
+
*
|
|
378
|
+
* "2022-01-01"
|
|
379
|
+
*
|
|
380
|
+
* @param {string} value a string with the syntax
|
|
381
|
+
* @param {ParseSyntaxOptions} options
|
|
382
|
+
* @return {string} the results of parsing the syntax on this job
|
|
383
|
+
*/
|
|
384
|
+
parseSyntax(value, options = {
|
|
385
|
+
timeZoneOffset: 0
|
|
386
|
+
}) {
|
|
387
|
+
if (!value || typeof value !== 'string') {
|
|
388
|
+
return '';
|
|
389
|
+
}
|
|
390
|
+
return value.replace(/({[^}]*})/g, (match, token) => {
|
|
391
|
+
const syntax = token.substring(1, token.length - 1);
|
|
392
|
+
let [key, filter] = syntax.split('|');
|
|
393
|
+
key = (key || '').trim();
|
|
394
|
+
filter = (filter || '').trim();
|
|
395
|
+
let filterName, filterArg = '';
|
|
396
|
+
if (filter) {
|
|
397
|
+
const splitIndex = filter.indexOf(':');
|
|
398
|
+
if (splitIndex !== -1) {
|
|
399
|
+
filterName = filter.substring(0, splitIndex);
|
|
400
|
+
filterArg = filter.substring(splitIndex + 1);
|
|
401
|
+
}
|
|
402
|
+
else {
|
|
403
|
+
filterName = filter;
|
|
404
|
+
filterArg = '';
|
|
405
|
+
}
|
|
406
|
+
filterName = (filterName || '').trim();
|
|
407
|
+
filterArg = (filterArg || '').trim();
|
|
408
|
+
}
|
|
409
|
+
const path = key.split('.');
|
|
410
|
+
const objectKey = path.shift() || '';
|
|
411
|
+
let result = '';
|
|
412
|
+
if (objectKey === 'job') {
|
|
413
|
+
result = (this.getValueByPath(path) || '').toString();
|
|
414
|
+
}
|
|
415
|
+
else if (objectKey === 'fields') {
|
|
416
|
+
result = (getValueByPath(path, this.getFields2()) || '').toString();
|
|
417
|
+
}
|
|
418
|
+
else if (objectKey.length) {
|
|
419
|
+
if (options.objects) {
|
|
420
|
+
if (options.objects[objectKey] === undefined) {
|
|
421
|
+
console.debug(`objectKey ${objectKey} is not present in options.object`);
|
|
422
|
+
result = '';
|
|
423
|
+
}
|
|
424
|
+
else {
|
|
425
|
+
result = (getValueByPath(path, options.objects[objectKey]) || '')
|
|
426
|
+
.toString();
|
|
427
|
+
}
|
|
428
|
+
}
|
|
429
|
+
else {
|
|
430
|
+
console.debug(`objectKey ${objectKey} was used but options.object is not set`);
|
|
431
|
+
return '';
|
|
432
|
+
}
|
|
433
|
+
}
|
|
434
|
+
else {
|
|
435
|
+
return '';
|
|
436
|
+
}
|
|
437
|
+
if (filterName && result) {
|
|
438
|
+
switch (filterName) {
|
|
439
|
+
case 'date': {
|
|
440
|
+
return moment(result)
|
|
441
|
+
.utcOffset(options.timeZoneOffset)
|
|
442
|
+
.format(filterArg || '');
|
|
443
|
+
}
|
|
444
|
+
default: {
|
|
445
|
+
console.warn('unknown filter %s', filterName);
|
|
446
|
+
}
|
|
447
|
+
}
|
|
448
|
+
}
|
|
449
|
+
return result;
|
|
450
|
+
}).trim();
|
|
451
|
+
}
|
|
452
|
+
;
|
|
453
|
+
/**
|
|
454
|
+
* @return {object}
|
|
455
|
+
*/
|
|
456
|
+
toApiDto() {
|
|
457
|
+
return {
|
|
458
|
+
...super.toApiDto(),
|
|
459
|
+
reference: this.reference || '~',
|
|
460
|
+
jobDate: this.jobDate || '~',
|
|
461
|
+
jobType: this.jobType || '~',
|
|
462
|
+
accessGroup: this.accessGroup || '~',
|
|
463
|
+
jobStatus: this.jobStatus || '~',
|
|
464
|
+
assigneeId: this.assigneeId || '~',
|
|
465
|
+
timeZoneOffset: this.timeZoneOffset || 0,
|
|
466
|
+
pendingFields: this.pendingFields || 0,
|
|
467
|
+
lastForm: this.formId || '~'
|
|
468
|
+
};
|
|
469
|
+
}
|
|
470
|
+
}
|
|
471
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFzLWpvYi5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Zhcy1saWIvc3JjL2xpYi9lbnRpdHkvdmFzLWpvYi5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyQyxPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFDNUIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRzVELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUdsRCxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN4RixPQUFPLEVBQWUsbUJBQW1CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsc0JBQXNCLEVBQThCLE1BQU0saURBQWlELENBQUM7QUFDckgsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBb0J6RDs7R0FFRztBQUNILE1BQU0sT0FBTyxXQUFZLFNBQVEsK0JBQStCO0lBRTlELFlBQ2tCLEVBQVUsRUFDVixPQUFlLEVBQ2YsYUFBcUIsRUFDckIsU0FBaUIsRUFDakIsUUFBZ0IsRUFDaEIsY0FBc0IsRUFDdEIsVUFBa0IsRUFDbEIsYUFBcUIsRUFDckIsY0FBc0IsRUFDdEIsT0FBZSxFQUNmLFdBQW1CLEVBQzVCLFNBQWlCLEVBQ2pCLE9BQWUsRUFDZixTQUFpQixFQUNqQixPQUFlLEVBQ2YsVUFBa0IsRUFDbEIsTUFBYyxFQUNkLGNBQXNCLEVBQ3RCLGFBQXFCLEVBQ3JCLGFBQXFCLEVBQ3JCLE9BQWUsRUFDZixNQUEwQixFQUMxQixLQUF3QixFQUN4QixvQkFBNEIsRUFDNUIscUJBQTZCLEVBQzdCLFdBQXdCO1FBRS9CLEtBQUssQ0FD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RSxJQUFJLENBQUMsU0FBUyxJQUFJLEdBQUc7WUFDaEMsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLElBQUksR0FBRztZQUM1QixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sSUFBSSxHQUFHO1lBQzVCLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVyxJQUFJLEdBQUc7WUFDcEMsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLElBQUksR0FBRztZQUNoQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVUsSUFBSSxHQUFHO1lBQ2xDLGNBQWMsRUFBRSxJQUFJLENBQUMsY0FBYyxJQUFJLENBQUM7WUFDeEMsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhLElBQUksQ0FBQztZQUN0QyxRQUFRLEVBQUUsSUFBSSxDQUFDLE1BQU0sSUFBSSxHQUFHO1NBQzdCLENBQUM7SUFDSixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc0ZpbGVEdG8sIFZhc0ZpbGVEdG8gfSBmcm9tICcuL3Zhcy1maWxlLmR0byc7XG5pbXBvcnQgeyBVVUlEIH0gZnJvbSAnYW5ndWxhcjItdXVpZCc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyBnZXRWYWx1ZUJ5UGF0aCB9IGZyb20gJy4uL3V0aWxzL2dldC12YWx1ZS1ieS1wYXRoJztcbmltcG9ydCB7IFZhc0Jhc2VEdG8gfSBmcm9tICcuL3Zhcy1iYXNlLmR0byc7XG5pbXBvcnQgeyBWYXNGaWVsZER0bywgVmFzRmllbGREdG9WYWx1ZSB9IGZyb20gJy4vdmFzLWZpZWxkLmR0byc7XG5pbXBvcnQgeyBWYXNGaWVsZE1vZGVsIH0gZnJvbSAnLi92YXMtZmllbGQubW9kZWwnO1xuaW1wb3J0IHsgVmFzRm9ybU1vZGVsIH0gZnJvbSAnLi92YXMtZm9ybS5tb2RlbCc7XG5pbXBvcnQgeyBWYXNKb2JEdG8gfSBmcm9tICcuL3Zhcy1qb2IuZHRvJztcbmltcG9ydCB7IFZhc1Jlc3RyaWN0ZWRBY2NvdW50T2JqZWN0TW9kZWwgfSBmcm9tICcuL3Zhcy1yZXN0cmljdGVkLWFjY291bnQtb2JqZWN0Lm1vZGVsJztcbmltcG9ydCB7IEdlb0xvY2F0aW9uLCBnZXRFbXB0eUdlb0xvY2F0aW9uIH0gZnJvbSAnLi4vbW9kZWwvZ2VvLWxvY2F0aW9uJztcbmltcG9ydCB7IGlzQ2FtZXJhQ29udHJvbFZhbHVlVjEsIFZhc0NhbWVyYUNvbnRyb2xWYWx1ZU1vZGVsIH0gZnJvbSAnLi4vY29udHJvbC12YWx1ZS92YXMtY2FtZXJhLWNvbnRyb2wtdmFsdWUubW9kZWwnO1xuaW1wb3J0IHsgaXNBcnJheVN0cmluZyB9IGZyb20gJy4uL3V0aWxzL2lzLWFycmF5LXN0cmluZyc7XG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWYXNKb2JNb2RlbER5bmFtaWNJbnRlcmZhY2Uge1xuICBbczogc3RyaW5nXTogc3RyaW5nIHwgbnVtYmVyIHwgUmVjb3JkPHN0cmluZywgVmFzRmllbGREdG9WYWx1ZT47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFyc2VTeW50YXhPcHRpb25zIHtcbiAgLy8gVGhpcyB2YWx1ZSB3aWxsIGJlIHVzZWQgdG8gYWRqdXN0IGFueSBkYXRldGltZSB2YWx1ZXMgdGhhdCBhcmUgcmVmZXJlbmNlZFxuICAvLyBpbiB0aGUgc3ludGF4IHN0cmluZy4gU2VlXG4gIC8vIGh0dHBzOi8vbW9tZW50anNjb20ucmVhZHRoZWRvY3MuaW8vZW4vbGF0ZXN0L21vbWVudC8wMy1tYW5pcHVsYXRpbmcvMDktdXRjLW9mZnNldC9cbiAgLy8gZm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgaG93IGBtb21lbnRgIHdpbGwgaGFuZGxlIHRoZSB2YWx1ZS5cbiAgdGltZVpvbmVPZmZzZXQ6IG51bWJlcixcbiAgLy8gdGhpcyBkaWN0aW9uYXJ5IGNhbiBiZSBwYXNzZWQgaW4gdG8gY29udGFpbiBvdGhlciBvYmplY3RzIHRvIGJlIHJlZmVyZW5jZWRcbiAgLy8gaW4gdGhlIHN5bnRheC4gRm9yIGV4YW1wbGUgaWYgd2UgaGF2ZSB7am9iLmZvb30gdGhpcyB3aWxsIHJlZmVyZW5jZSB0aGVcbiAgLy8gam9iJ3MgYGZvb2AgcHJvcGVydHksIGhvd2V2ZXIgaWYgd2UgaGF2ZSBcInJlcG9ydExheW91dC50aXRsZVwiIHRoaXMgd2lsbFxuICAvLyBleHBlY3QgdG8gZmluZCBhIHByb3BlcnR5IG9mIGBvYmplY3RzYCBjYWxsZWQgYHJlcG9ydExheW91dGAgd2hpY2ggd2lsbFxuICAvLyBoYXZlIGEgcHJvcGVydHkgY2FsbGVkIGB0aXRsZWBcbiAgb2JqZWN0cz86IFJlY29yZDxzdHJpbmcsIFBhcnRpYWw8VmFzQmFzZUR0bz4gfCBSZWNvcmQ8c3RyaW5nLCBWYXNGaWVsZER0b1ZhbHVlPj47XG59XG5cbi8qKlxuICogSm9iTW9kZWxcbiAqL1xuZXhwb3J0IGNsYXNzIFZhc0pvYk1vZGVsIGV4dGVuZHMgVmFzUmVzdHJpY3RlZEFjY291bnRPYmplY3RNb2RlbCB7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIG92ZXJyaWRlIGlkOiBzdHJpbmcsXG4gICAgcHVibGljIG92ZXJyaWRlIGNyZWF0ZWQ6IHN0cmluZyxcbiAgICBwdWJsaWMgb3ZlcnJpZGUgc2VydmVyQ3JlYXRlZDogc3RyaW5nLFxuICAgIHB1YmxpYyBvdmVycmlkZSBjcmVhdGVkQnk6IHN0cmluZyxcbiAgICBwdWJsaWMgb3ZlcnJpZGUgbW9kaWZpZWQ6IHN0cmluZyxcbiAgICBwdWJsaWMgb3ZlcnJpZGUgc2VydmVyTW9kaWZpZWQ6IHN0cmluZyxcbiAgICBwdWJsaWMgb3ZlcnJpZGUgbW9kaWZpZWRCeTogc3RyaW5nLFxuICAgIHB1YmxpYyBvdmVycmlkZSBjcmVhdGVkQnlOYW1lOiBzdHJpbmcsXG4gICAgcHVibGljIG92ZXJyaWRlIG1vZGlmaWVkQnlOYW1lOiBzdHJpbmcsXG4gICAgcHVibGljIG92ZXJyaWRlIGFjY291bnQ6IHN0cmluZyxcbiAgICBwdWJsaWMgb3ZlcnJpZGUgYWNjZXNzR3JvdXA6IHN0cmluZyxcbiAgICBwdWJsaWMgcmVmZXJlbmNlOiBzdHJpbmcsXG4gICAgcHVibGljIGpvYkRhdGU6IHN0cmluZyxcbiAgICBwdWJsaWMgam9iU3RhdHVzOiBzdHJpbmcsXG4gICAgcHVibGljIGpvYlR5cGU6IHN0cmluZyxcbiAgICBwdWJsaWMgYXNzaWduZWVJZDogc3RyaW5nLFxuICAgIHB1YmxpYyBmb3JtSWQ6IHN0cmluZyxcbiAgICBwdWJsaWMgdGltZVpvbmVPZmZzZXQ6IG51bWJlcixcbiAgICBwdWJsaWMgcGVuZGluZ0ZpZWxkczogbnVtYmVyLFxuICAgIHB1YmxpYyBjaGlsZE1vZGlmaWVkOiBzdHJpbmcsXG4gICAgcHVibGljIHZlcnNpb246IG51bWJlcixcbiAgICBwdWJsaWMgZmllbGRzOiBBcnJheTxWYXNGaWVsZER0bz4sXG4gICAgcHVibGljIGZpbGVzOiBBcnJheTxWYXNGaWxlRHRvPixcbiAgICBwdWJsaWMgY3JlYXRlZEJ5RGlzcGxheU5hbWU6IHN0cmluZyxcbiAgICBwdWJsaWMgbW9kaWZpZWRCeURpc3BsYXlOYW1lOiBzdHJpbmcsXG4gICAgcHVibGljIGdlb0xvY2F0aW9uOiBHZW9Mb2NhdGlvblxuICApIHtcbiAgICBzdXBlcihcbiAgICAgIGlkLFxuICAgICAgY3JlYXRlZCxcbiAgICAgIHNlcnZlckNyZWF0ZWQsXG4gICAgICBjcmVhdGVkQnksXG4gICAgICBtb2RpZmllZCxcbiAgICAgIHNlcnZlck1vZGlmaWVkLFxuICAgICAgbW9kaWZpZWRCeSxcbiAgICAgIGNyZWF0ZWRCeU5hbWUsXG4gICAgICBtb2RpZmllZEJ5TmFtZSxcbiAgICAgIGFjY291bnQsXG4gICAgICBhY2Nlc3NHcm91cFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGlzIHdpdGggdGhlIGR5bmFtaWMgaW50ZXJmYWNlXG4gICAqIEByZXR1cm4ge1Zhc0pvYk1vZGVsRHluYW1pY0ludGVyZmFjZX1cbiAgICovXG4gIGdldCAkdGhpcygpOiBWYXNKb2JNb2RlbER5bmFtaWNJbnRlcmZhY2Uge1xuICAgIHJldHVybiB0aGlzIGFzIGFueTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgbGlzdCBvZiBKb2IgZHluYW1pYyBwcm9wZXJ0aWVzIGkuZS4gdGhvc2UgdGhhdCBhcmUgYWRkZWQgYnkgdGhlXG4gICAqIGR5bmFtaWMgZm9ybXNcbiAgICovXG4gIGdldCBkeW5hbWljUHJvcGVydGllcygpOiBBcnJheTxzdHJpbmc+IHtcbiAgICBjb25zdCBuYXRpdmVQcm9wcyA9IHRoaXMuc3RhdGljUHJvcGVydGllcztcbiAgICByZXR1cm4gT2JqZWN0XG4gICAgICAuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzKVxuICAgICAgLmZpbHRlcihwcm9wID0+ICFuYXRpdmVQcm9wcy5pbmNsdWRlcyhwcm9wKSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIGxpc3Qgb2YgSm9iIHN0YXRpYyBwcm9wZXJ0aWVzIGkuZS4gdGhvc2UgdGhhdCBhcmUgZGVjbGFyZWQgYnlcbiAgICogdGhlIHR5cGVcbiAgICovXG4gIGdldCBzdGF0aWNQcm9wZXJ0aWVzKCk6IEFycmF5PHN0cmluZz4ge1xuICAgIHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhWYXNKb2JNb2RlbC5lbXB0eSgpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJuIHtWYXNKb2JNb2RlbH1cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZW1wdHkoKTogVmFzSm9iTW9kZWwge1xuICAgIHJldHVybiBuZXcgVmFzSm9iTW9kZWwoXG4gICAgICAnJyxcbiAgICAgICcnLFxuICAgICAgJycsXG4gICAgICAnJyxcbiAgICAgICcnLFxuICAgICAgJycsXG4gICAgICAnJyxcbiAgICAgICcnLFxuICAgICAgJycsXG4gICAgICAnJyxcbiAgICAgICcnLFxuICAgICAgJycsXG4gICAgICAnJyxcbiAgICAgICcnLFxuICAgICAgJycsXG4gICAgICAnJyxcbiAgICAgICcnLFxuICAgICAgbW9tZW50KCkudXRjT2Zmc2V0KCksXG4gICAgICAwLFxuICAgICAgJycsXG4gICAgICAwLFxuICAgICAgW10sXG4gICAgICBbXSxcbiAgICAgICcnLFxuICAgICAgJycsXG4gICAgICBnZXRFbXB0eUdlb0xvY2F0aW9uKClcbiAgICApO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBmcm9tRHRvKGR0bzogUGFydGlhbDxWYXNKb2JEdG8+KTogVmFzSm9iTW9kZWwge1xuICAgIGNvbnN0IG1vZGVsID0gbmV3IFZhc0pvYk1vZGVsKFxuICAgICAgZHRvLmlkIHx8ICcnLFxuICAgICAgZHRvLmNyZWF0ZWQgfHwgJycsXG4gICAgICBkdG8uc2VydmVyQ3JlYXRlZCB8fCAnJyxcbiAgICAgIGR0by5jcmVhdGVkQnkgfHwgJycsXG4gICAgICBkdG8ubW9kaWZpZWQgfHwgJycsXG4gICAgICBkdG8uc2VydmVyTW9kaWZpZWQgfHwgJycsXG4gICAgICBkdG8ubW9kaWZpZWRCeSB8fCAnJyxcbiAgICAgIGR0by5jcmVhdGVkQnlOYW1lIHx8ICcnLFxuICAgICAgZHRvLm1vZGlmaWVkQnlOYW1lIHx8ICcnLFxuICAgICAgZHRvLmFjY291bnQgfHwgJycsXG4gICAgICBkdG8uYWNjZXNzR3JvdXAgfHwgJycsXG4gICAgICBkdG8ucmVmZXJlbmNlIHx8ICcnLFxuICAgICAgZHRvLmpvYkRhdGUgfHwgJycsXG4gICAgICBkdG8uam9iU3RhdHVzIHx8ICcnLFxuICAgICAgZHRvLmpvYlR5cGUgfHwgJycsXG4gICAgICBkdG8uYXNzaWduZWVJZCB8fCAnJyxcbiAgICAgIGR0by5mb3JtSWQgfHwgJycsXG4gICAgICBkdG8udGltZVpvbmVPZmZzZXQgfHwgbW9tZW50KCkudXRjT2Zmc2V0KCksXG4gICAgICBkdG8ucGVuZGluZ0ZpZWxkcyB8fCAwLFxuICAgICAgZHRvLmNoaWxkTW9kaWZpZWQgfHwgJycsXG4gICAgICBkdG8udmVyc2lvbiB8fCAwLFxuICAgICAgZHRvLmZpZWxkcyB8fCBbXSxcbiAgICAgIGR0by5maWxlcyB8fCBbXSxcbiAgICAgIGR0by5jcmVhdGVkQnlEaXNwbGF5TmFtZSB8fCAnJyxcbiAgICAgIGR0by5tb2RpZmllZEJ5RGlzcGxheU5hbWUgfHwgJycsXG4gICAgICBkdG8uZ2VvTG9jYXRpb24gfHwgZ2V0RW1wdHlHZW9Mb2NhdGlvbigpXG4gICAgKTtcbiAgICBjb25zdCBlbXB0eUtleXMgPSBtb2RlbC5zdGF0aWNQcm9wZXJ0aWVzO1xuICAgIE9iamVjdFxuICAgICAgLmtleXMoZHRvKVxuICAgICAgLmZpbHRlcihrZXkgPT4gZW1wdHlLZXlzLmluZGV4T2Yoa2V5KSA9PT0gLTEpXG4gICAgICAuZm9yRWFjaCgoa2V5OiBzdHJpbmcpID0+XG4gICAgICAgIG1vZGVsLiR0aGlzW2tleV0gPSAoZHRvIGFzIFZhc0pvYk1vZGVsRHluYW1pY0ludGVyZmFjZSlba2V5XVxuICAgICAgKTtcbiAgICByZXR1cm4gbW9kZWw7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtWYXNGb3JtTW9kZWx9IGZvcm1Nb2RlbFxuICAgKiBAcmV0dXJuIHtSZWNvcmQ8c3RyaW5nLCBWYXNGaWVsZER0b1ZhbHVlPn1cbiAgICovXG4gIGdldEZpZWxkcyhmb3JtTW9kZWw6IFZhc0Zvcm1Nb2RlbCk6IFJlY29yZDxzdHJpbmcsIFZhc0ZpZWxkRHRvVmFsdWU+IHtcbiAgICBjb25zdCBmaWVsZHM6IHsgW2tleTogc3RyaW5nXTogVmFzRmllbGREdG9WYWx1ZSB9ID0ge307XG4gICAgZm9ybU1vZGVsLmdyb3Vwc1xuICAgICAgLmZvckVhY2goZ3JvdXAgPT4ge1xuICAgICAgICBncm91cC5jb250cm9scy5mb3JFYWNoKGNvbnRyb2wgPT4ge1xuICAgICAgICAgIChmaWVsZHMpW2NvbnRyb2wucmVwb3J0VGVtcGxhdGVOYW1lXSA9XG4gICAgICAgICAgICB0aGlzLmdldFZhbHVlQnlQYXRoKFtncm91cC5uYW1lLCBjb250cm9sLm5hbWVdKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICByZXR1cm4gZmllbGRzO1xuICB9XG5cbiAgLyoqXG4gICAqIFdpbGwgcmV0dXJuIGFuIG9iamVjdCB3aG9zZSBrZXlzIGFyZSB0aGUgbmFtZXMgb2YgYWxsIGZpZWxkcyBpbiB0aGUgam9iLlxuICAgKiBUaGlzIG1ldGhvZCBpcyBzaW1pbGFyIHRvIGBnZXRGaWVsZHNgIGV4Y2VwdCB0aGF0IHRoaXMgbWV0aG9kIHdpbGwgb25seVxuICAgKiByZXR1cm4gdmFsdWVzIHdoZXJlIGEgdmFsdWUgd2FzIHNldCwgYXMgb3Bwb3NlZCB0byBgZ2V0RmllbGRzYCB3aGljaFxuICAgKiByZXR1cm4gYSBwcm9wZXJ0eSByZWdhcmRsZXNzIChiZWNhdXNlIGl0IHVzZXMgdGhlIGZvcm0gdG8gZHJpdmUgdGhlIGxvZ2ljKVxuICAgKiBAcmV0dXJuIHtSZWNvcmQ8c3RyaW5nLCBWYXNGaWVsZER0b1ZhbHVlPn1cbiAgICovXG4gIGdldEZpZWxkczIoKTogUmVjb3JkPHN0cmluZywgVmFzRmllbGREdG9WYWx1ZT4ge1xuICAgIGxldCBmaWVsZHM6IHsgW2tleTogc3RyaW5nXTogVmFzRmllbGREdG9WYWx1ZSB9ID0ge307XG4gICAgdGhpcy5keW5hbWljUHJvcGVydGllc1xuICAgICAgLmZvckVhY2goKGdyb3VwTmFtZSkgPT4ge1xuICAgICAgICBPYmplY3RcbiAgICAgICAgICAua2V5cyh0aGlzLiR0aGlzW2dyb3VwTmFtZV0pXG4gICAgICAgICAgLmZvckVhY2goY29udHJvbE5hbWUgPT4ge1xuICAgICAgICAgICAgZmllbGRzW2NvbnRyb2xOYW1lXSA9IHRoaXMuZ2V0VmFsdWVCeVBhdGgoW2dyb3VwTmFtZSwgY29udHJvbE5hbWVdKTtcbiAgICAgICAgICB9KTtcbiAgICAgIH0sIHt9KTtcbiAgICByZXR1cm4gZmllbGRzO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYW4gb2JqZWN0IGRlc2NyaWJpbmcgaG93IG1hbnkgYXR0YWNobWVudHMgd2VyZSBhZGRlZCB0byB0aGlzIGpvYlxuICAgKiAoY2FtZXJhIGNvbnRyb2xzIGFuZCBmaWxlcyksIGFuZCBob3cgbWFueSBoYXZlIG5vdCBiZWVuIHVwbG9hZGVkIHlldC5cbiAgICpcbiAgICogQHBhcmFtIGZvcm1Nb2RlbCBpbnN0YW5jZSBvZiB7QGxpbmsgVmFzRm9ybU1vZGVsfSB0aGF0IHdhcyB1c2VkIHdoZW4gdGhlXG4gICAqIGpvYiB3YXMgY3JlYXRlZFxuICAgKi9cbiAgZ2V0RmlsZXNVcGxvYWRTdGF0dXMoXG4gICAgZm9ybU1vZGVsOiBWYXNGb3JtTW9kZWxcbiAgKTogeyBwZW5kaW5nOiBudW1iZXI7IHRvdGFsOiBudW1iZXIgfSB7XG5cbiAgICBjb25zdCBwYXRoc1dpdGhWYWx1ZTogQXJyYXk8QXJyYXk8c3RyaW5nPj4gPSBmb3JtTW9kZWxcbiAgICAgIC5nZXRDYW1lcmFDb250cm9sUGF0aHMoKVxuICAgICAgLm1hcChwYXRoID0+IHtcbiAgICAgICAgY29uc3QgdmFsdWU6IFZhc0ZpbGVEdG8gfCBWYXNDYW1lcmFDb250cm9sVmFsdWVNb2RlbCA9XG4gICAgICAgICAgdGhpcy5nZXRWYWx1ZUJ5UGF0aChwYXRoKSBhcyBhbnk7XG4gICAgICAgIGlmICh2YWx1ZSAmJiAhIXZhbHVlLmlkKSB7XG4gICAgICAgICAgcmV0dXJuIHBhdGg7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9KVxuICAgICAgLmZpbHRlcihwYXRoID0+IHBhdGggIT09IG51bGwgPyBwYXRoIDogbnVsbClcbiAgICAgIC5maWx0ZXIoaXNBcnJheVN0cmluZyk7XG5cbiAgICBsZXQgdG90YWwgPSBwYXRoc1dpdGhWYWx1ZS5sZW5ndGg7XG5cbiAgICB0b3RhbCArPSB0aGlzLmZpbGVzLmxlbmd0aDtcblxuICAgIC8vIGNhbGN1bGF0ZSB0aGUgbnVtYmVyIG9mIGNhbWVyYSBpbWFnZXMgc3RpbGwgdG8gdXBsb2FkXG4gICAgbGV0IHBlbmRpbmcgPSBwYXRoc1dpdGhWYWx1ZVxuICAgICAgLm1hcChwYXRoID0+IHRoaXMuZ2V0VmFsdWVCeVBhdGgocGF0aCkgYXMgYW55KVxuICAgICAgLm1hcCgodmFsdWU6IFZhc0ZpbGVEdG8gfCBWYXNDYW1lcmFDb250cm9sVmFsdWVNb2RlbCkgPT4ge1xuICAgICAgICBpZiAoaXNGaWxlRHRvKHZhbHVlKSkge1xuICAgICAgICAgIHJldHVybiB2YWx1ZS5pZCAmJiB2YWx1ZS5zdGF0dXMgIT09ICdDT01QTEVURSc7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNDYW1lcmFDb250cm9sVmFsdWVWMSh2YWx1ZSkpIHtcbiAgICAgICAgICAvLyBpZiB1cmwgaXMgbm90IHNldCwgaXQgaGFzbid0IGJlZW4gdXBsb2FkZWRcbiAgICAgICAgICByZXR1cm4gdmFsdWUuaWQgJiYgIXZhbHVlLnVybDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9KVxuICAgICAgLmZpbHRlcihoYXNVcGxvYWRlZCA9PiBoYXNVcGxvYWRlZClcbiAgICAgIC5sZW5ndGg7XG5cbiAgICAvLyBhZGQgdG90YWwgZnJvbSBmaWxlcyB0aGF0IGFyZSBwZW5kaW5nXG4gICAgcGVuZGluZyArPSB0aGlzLmZpbGVzXG4gICAgICAuZmlsdGVyKHZhbHVlID0+IHZhbHVlLnN0YXR1cyAhPT0gJ0NPTVBMRVRFRCcpXG4gICAgICAubGVuZ3RoO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHBlbmRpbmcsXG4gICAgICB0b3RhbFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogVGhpcyBtZXRob2Qgd2lsbCBoeWRyYXRlIHRoZSBgZmllbGRzYCBwcm9wZXJ0eSBvZiB0aGUgbW9kZWwuIFRoZSByZWFzb24gZm9yXG4gICAqIHRoaXMgaXMgdGhhdCB3ZSBoYXZlIGRpZmZlcmVudCB3YXlzIHRvIHN0b3JlIHRoZSBmaWVsZCBkYXRhLiBPbmUgd2F5LCBpc1xuICAgKiB3ZSBzdG9yZSB0aGVtIGFzIGR5bmFtaWMgcHJvcGVydGllcyBvZiB0aGUgam9iLiBGb3IgZXhhbXBsZSBqb2IuZm9vLmJhcixcbiAgICogd2hlcmUgYGZvb2AgaXMgdGhlIG5hbWUgb2YgYSBHcm91cCwgYW5kIGBiYXJgIGlzIHRoZSBuYW1lIG9mIGEgY29udHJvbC5cbiAgICogVGh1cywgd2hlbiB3ZSBjcmVhdGUgYSBqb2IgdXNpbmcgYSBmb3JtIGluIHRoZSBjbGllbnQsIHRoZSBqb2Igb2JqZWN0IHdpbGxcbiAgICogaGF2ZSBpdHMgc3RhdGljIHByb3BlcnRpZXMgKGlkLCBhY2NvdW50LCByZWZlcmVuY2UgZXRjKSwgYW5kIGFsc28gYSBudW1iZXJcbiAgICogb2YgZHluYW1pYyBwcm9wZXJ0aWVzIGRldGVybWluZWQgYnkgdGhlIEdyb3VwcyBhbmQgQ29udHJvbHMuIFRoaXMga2luZCBvZlxuICAgKiBvYmplY3QgaXMgbmljZSB0byB3b3JrIHdpdGggaW4gY2VydGFpbiBjaXJjdW1zdGFuY2VzLiBIb3dldmVyLCB0aGUgYXBpXG4gICAqIHdvcmtzIGRpZmZlcmVudGx5LiBJbiB0aGUgQVBJIGEgSm9iIGlzIGEgcmVjb3JkLCBhbmQgcmVmZXJlbmNlcyBhIG51bWJlciBvZlxuICAgKiBGaWVsZCByZWNvcmRzLiBFYWNoIEZpZWxkIHN0b3JlcyB0aGUgdmFsdWUuIENvbXBhcmluZyB0aGVzZSB0d28gbW9kZWxzIHdlXG4gICAqIGhhdmU6XG4gICAqIEEpIGpvYiB3aXRoIGR5bmFtaWMgcHJvcGVydGllcywgZS5nLlxuICAgKiB7XG4gICAqICAgaWQ6IDxndWlkPixcbiAgICogICByZWZlcmVuY2U6IFwic29tZXRoaW5nXCJcbiAgICogICA8b3RoZXIgc3RhdGljIGpvYiBwcm9wZXJ0aWVzPi4uLlxuICAgKiAgIGZvbzoge1xuICAgKiAgICAgYmFyOiBcInZhbHVlXCJcbiAgICogICB9XG4gICAqIH1cbiAgICpcbiAgICogQikgam9iIHdpdGggZmllbGRzXG4gICAqIHtcbiAgICogICBpZDogPGd1aWQ+LFxuICAgKiAgIHJlZmVyZW5jZTogXCJzb21ldGhpbmdcIlxuICAgKiAgIDxvdGhlciBzdGF0aWMgam9iIHByb3BlcnRpZXM+Li4uXG4gICAqICAgPHdpbGwgbm90IGhhdmUgZHluYW1pYyBwcm9wZXJ0aWVzPi4uLlxuICAgKiAgIGZpZWxkczogW1xuICAgKiAgICAge1xuICAgKiAgICAgICBpZDogPGd1aWQ+LFxuICAgKiAgICAgICA8b3RoZXIgZmllbGQgcHJvcGVydGllcz4sXG4gICAqICAgICAgIHZhbHVlOiBcInZhbHVlXCJcbiAgICogICAgIH1cbiAgICogICBdXG4gICAqIH1cbiAgICpcbiAgICogU28sIHdoYXQgdGhpcyBtZXRob2QgZG9lcyBpcyBnaXZlbiBhIEpvYk1vZGVsIGluIHRoZSBmb3JtIG9mIEEsIHJlYWQgYWxsXG4gICAqIG9mIHRob3NlIGR5bmFtaWMgcHJvcGVydGllcyBhbmQgc2V0IHRoZW0gaW50byBgZmllbGRzYC4gRG9pbmcgdGhpcyByZXF1aXJlc1xuICAgKiBrbm93bGVkZ2Ugb2YgdGhlIEZvcm0gdGhhdCB3YXMgdXNlZCB0byBjcmVhdGUgdGhlIGpvYi4gTW9yZW92ZXIsIHNpbmNlIHRoZVxuICAgKiBkeW5hbWljIHByb3BlcnRpZXMgZG8gbm90IGNvbnRhaW4gdGhlIGlkcyBvZiB0aGUgZmllbGRzLCB3ZSBhbHNvIGFsbG93IHRvXG4gICAqIHBhc3MgaW4gYSBgY29udHJvbEZpZWxkSWRNYXBgLiBUaGlzIG1hcCBzdG9yZXMgdGhlIG1hcHBpbmcgYmV0d2VlbiBDb250cm9sXG4gICAqIGFuZCB0aGUgRmllbGQgdGhhdCB3YXMgY3JlYXRlZCBpbiB0aGUgSm9iIHRvIHN0b3JlIHRoZSB2YWx1ZSBmb3IgdGhhdFxuICAgKiBDb250cm9sLiBUaGlzIGlzIHVzZWZ1bCwgaWYgZm9yIGV4YW1wbGUgeW91IHdhbnQgdG8gY29tcGFyZSBhIEpvYiBpbiBmb3JtIEFcbiAgICogd2l0aCBhIEpvYiBpbiBmb3JtIEIsIGZvciBleGFtcGxlIGlmIHlvdSB3YW50IHRvIHVwZGF0ZSB0aGUgSm9iIG9uIHRoZSBBUElcbiAgICogd2l0aCBhIEpvYiB0aGF0IHdhcyBzYXZlZCBieSBhIGNsaWVudCBpbiBmb3JtIEEuXG4gICAqXG4gICAqIEUuZy5cbiAgICogQ2xpZW50IC0+IEFQSTogY2xpZW50IHJlcXVlc3RzIGZvcm1cbiAgICogVXNlciAtPiBDbGllbnQ6IHVzZXIgZmlsbHMgaW4gdGhlIGZvcm0gYW5kIHN1Ym1pdHNcbiAgICogQ2xpZW50IC0+IEZpcmVzdG9yZTogY2xpZW50IHNhdmVzIHRoZSBKb2IgaW4gZm9ybSBBIGkuZS4gZHluYW1pYyBwcm9wc1xuICAgKiBGaXJlc3RvcmUgLT4gRnVuY3Rpb246IEEgZnVuY3Rpb24gaXMgdHJpZ2dlcmVkIHRvIHN5bmMgdGhlIGpvYiB0byB0aGUgQVBJXG4gICAqIEZ1bmN0aW9uIC0+IEFQSTogRnVuY3Rpb24gY2hlY2tzIGlmIGpvYiBhbHJlYWR5IGV4aXN0cywgaXQgcmVjZWl2ZXMgNDA0XG4gICAqIEZ1bmN0aW9uIC0+IEZ1bmN0aW9uOiBUaGUgZnVuY3Rpb24gY2FsbHMgYGh5ZHJhdGVGaWVsZHMoLi4uKWBcbiAgICogRnVuY3Rpb24gLT4gQVBJOiBUaGUgZnVuY3Rpb24gUE9TVCB0aGUgSm9iIHRvIC9qb2JzXG4gICAqIEZ1bmN0aW9uIC0+IEFQSTogVGhlIGZ1bmN0aW9uIFBPU1QgZWFjaCBmaWVsZCB0byAvZmllbGRzXG4gICAqXG4gICAqIFNpbWlsYXJseSwgaWYgdGhlIHVzZXIgdXBkYXRlcyB0aGUgam9iXG4gICAqIENsaWVudCAtPiBBUEk6IGNsaWVudCByZXF1ZXN0cyBmb3JtXG4gICAqIFVzZXIgLT4gQ2xpZW50OiB1c2VyIGZpbGxzIGluIHRoZSBmb3JtIGFuZCBzdWJtaXRzIGFuIHVwZGF0ZVxuICAgKiBDbGllbnQgLT4gRmlyZXN0b3JlOiBjbGllbnQgc2F2ZXMgdGhlIEpvYiBpbiBmb3JtIEEgaS5lLiBkeW5hbWljIHByb3BzXG4gICAqIEZpcmVzdG9yZSAtPiBGdW5jdGlvbjogQSBmdW5jdGlvbiBpcyB0cmlnZ2VyZWQgdG8gc3luYyB0aGUgam9iIHRvIHRoZSBBUElcbiAgICogRnVuY3Rpb24gLT4gQVBJOiBGdW5jdGlvbiBjaGVja3MgaWYgam9iIGFscmVhZHkgZXhpc3RzLCBpdCByZWNlaXZlcyAyMDBcbiAgICogRnVuY3Rpb24gLT4gRnVuY3Rpb246IFRoZSBmdW5jdGlvbiBjYWxscyBgaHlkcmF0ZUZpZWxkcyguLi4pYCBwYXNzaW5nIGluXG4gICAqICAgICAgICAgICAgICAgICAgICAgICB0aGUgbWFwIGlzIG1hZGUgYnkgaXRlcmF0aW5nIG92ZXIgdGhlIGZpZWxkcyBpdFxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgcmVjZWl2ZWQgZnJvbSB0aGUgQVBJIGFuZCBzdG9yaW5nIHRoZSBtYXBwaW5nc1xuICAgKiAgICAgICAgICAgICAgICAgICAgICAgYmV0d2VlbiBjb250cm9sSWQgYW5kIGZpZWxkSWQgZm9yIGVhY2ggZmllbGRcbiAgICogRnVuY3Rpb24gLT4gQVBJOiBUaGUgZnVuY3Rpb24gUEFUQ0ggdGhlIEpvYiB0byAvam9ic1xuICAgKiBGdW5jdGlvbiAtPiBBUEk6IFRoZSBmdW5jdGlvbiBQT1NUL1BBVENIIGVhY2ggZmllbGQgdG8gL2ZpZWxkc1xuICAgKiB0cmVhdGVkIGFzIG5ld1xuICAgKlxuICAgKiBAcGFyYW0ge1Zhc0Zvcm1Nb2RlbH0gZm9ybU1vZGVsIHRoZSBWYXNGb3JtTW9kZWwgdGhhdCB3YXMgdXNlZCB0byBjcmVhdGVcbiAgICogdGhlIGpvYlxuICAgKiBAcGFyYW0ge01hcDxzdHJpbmcsIHN0cmluZz59IGNvbnRyb2xGaWVsZElkTWFwIGEgbWFwcGluZyBvZiBjb250cm9sIHRvXG4gICAqIGZpZWxkIGlkcy4gVGhpcyBpcyB1c2VkIHRvIGRldGVybWluZSB3aGV0aGVyIGEgbmV3IGlkIGZvciB0aGUgZmllbGQgc2hvdWxkXG4gICAqIGJlIGdlbmVyYXRlZCwgb3IgdG8gcmV1c2UgYW4gZXhpc3Rpbmcgb25lIGZyb20gdGhlIG1hcC5cbiAgICogQHBhcmFtIHtBcnJheTxzdHJpbmc+fSBjb250cm9sTmFtZXMgaWYgYSB2YWx1ZSBpcyBwcm92aWRlZCwgaXQgd2lsbCBiZSB1c2VkXG4gICAqIHRvIGZpbHRlciB0aGUgZmllbGRzIHRoYXQgYXJlIHJldHVybmVkLlxuICAgKiBAcmV0dXJuIHtBcnJheTxWYXNGaWVsZER0bz59XG4gICAqL1xuICBoeWRyYXRlRmllbGRzKFxuICAgIGZvcm1Nb2RlbDogVmFzRm9ybU1vZGVsLFxuICAgIGNvbnRyb2xGaWVsZElkTWFwOiBNYXA8c3RyaW5nLCBzdHJpbmc+ID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKSxcbiAgICBjb250cm9sTmFtZXM/OiBBcnJheTxzdHJpbmc+XG4gICk6IHZvaWQge1xuICAgIGNvbnN0IGZpZWxkczogQXJyYXk8VmFzRmllbGREdG8+ID0gW107XG4gICAgZm9ybU1vZGVsLmdyb3Vwc1xuICAgICAgLmZvckVhY2goZ3JvdXAgPT4ge1xuICAgICAgICBncm91cC5jb250cm9scy5mb3JFYWNoKGNvbnRyb2wgPT4ge1xuXG4gICAgICAgICAgaWYgKCFjb250cm9sLm5hbWUuc3RhcnRzV2l0aCgnZmllbGRzLicpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGNvbnRyb2xOYW1lcyAmJiAhY29udHJvbE5hbWVzLmluY2x1ZGVzKGNvbnRyb2wubmFtZSkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBmaWVsZHMucHVzaChWYXNGaWVsZE1vZGVsLmZyb21EdG8oe1xuICAgICAgICAgICAgLy8gaWYgdGhlIGNvbnRyb2xJZCBleGlzdHMgaW4gdGhlIG1hcCwgdXNlIHRoZSBhc3NvY2lhdGVkIGZpZWxkSWQsXG4gICAgICAgICAgICAvLyBvdGhlcndpc2UgZ2VuZXJhdGUgYSBuZXcgaWQgZm9yIHRoZSBmaWVsZC5cbiAgICAgICAgICAgIGlkOiBjb250cm9sRmllbGRJZE1hcC5nZXQoY29udHJvbC5pZCkgfHwgVVVJRC5VVUlEKCksXG4gICAgICAgICAgICBhY2NvdW50OiB0aGlzLmFjY291bnQsXG4gICAgICAgICAgICBqb2I6IHRoaXMuaWQsXG4gICAgICAgICAgICBjcmVhdGVkQnk6IHRoaXMuY3JlYXRlZEJ5LFxuICAgICAgICAgICAgY3JlYXRlZDogdGhpcy5jcmVhdGVkLFxuICAgICAgICAgICAgbW9kaWZpZWRCeTogdGhpcy5tb2RpZmllZEJ5LFxuICAgICAgICAgICAgbW9kaWZpZWQ6IHRoaXMubW9kaWZpZWQsXG4gICAgICAgICAgICBjb250cm9sOiBjb250cm9sLmlkLFxuICAgICAgICAgICAgdmFsdWU6IHRoaXMuZ2V0VmFsdWVCeVBhdGgoXG4gICAgICAgICAgICAgIFtncm91cC5uYW1lLCBjb250cm9sLm5hbWVdXG4gICAgICAgICAgICApXG4gICAgICAgICAgfSkpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIHRoaXMuZmllbGRzID0gZmllbGRzO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nW119IHBhdGggcGF0aCBzZWdtZW50c1xuICAgKiBAcmV0dXJuIHt2b2lkfVxuICAgKi9cbiAgZ2V0VmFsdWVCeVBhdGg8VCBleHRlbmRzIFZhc0ZpZWxkRHRvVmFsdWU+KFxuICAgIHBhdGg6IHN0cmluZ1tdID0gW11cbiAgKTogVCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIGdldFZhbHVlQnlQYXRoKHBhdGgsIHRoaXMuJHRoaXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEEgdmVyeSBub24gc29waGlzdGljYXRlZCB3YXkgdG8gc2V0IHZhbHVlcyBpbiB0aGUgam9iIHZpYSBwYXRoc1xuICAgKlxuICAgKiBGb3IgZXhhbXBsZTpcbiAgICpcbiAgICogc2V0VmFsdWVCeVBhdGgoJ3ZhbHVlJywgWydmb28nLCAnYmFyJ10pO1xuICAgKlxuICAgKiB3aWxsIG1ha2UgcmVzdWx0cyBpbiBqb2JcbiAgICoge1xuICAgKiAgIGZvbzoge1xuICAgKiAgICAgYmFyOiAndmFsdWUnXG4gICAqICAgfVxuICAgKiB9XG4gICAqXG4gICAqIEBwYXJhbSB7YW55fSB2YWx1ZSB0aGUgdmFsdWUgdG8gc2V0XG4gICAqIEBwYXJhbSB7c3RyaW5nW119IHBhdGggcGF0aCBzZWdtZW50c1xuICAgKi9cbiAgc2V0VmFsdWVCeVBhdGgodmFsdWU6IFZhc0ZpZWxkRHRvVmFsdWUsIHBhdGg6IHN0cmluZ1tdID0gW10pOiB2b2lkIHtcbiAgICBzd2l0Y2ggKHBhdGgubGVuZ3RoKSB7XG4gICAgICBjYXNlIDA6IHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY2FzZSAxOiB7XG4gICAgICAgICh0aGlzIGFzIGFueSlbcGF0aFswXV0gPSB2YWx1ZTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY2FzZSAyOiB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBtYXgtbGVuXG4gICAgICAgICh0aGlzLiR0aGlzW3BhdGhbMF1dIGFzIFJlY29yZDxzdHJpbmcsIFZhc0ZpZWxkRHRvVmFsdWU+KVtwYXRoWzFdXSA9IHZhbHVlO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjYXNlIDM6IHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1sZW5cbiAgICAgICAgKCh0aGlzLiR0aGlzW3BhdGhbMF1dIGFzIFJlY29yZDxzdHJpbmcsIFZhc0ZpZWxkRHRvVmFsdWU+KVtwYXRoWzFdXSBhcyBSZWNvcmQ8c3RyaW5nLCBWYXNGaWVsZER0b1ZhbHVlPilbcGF0aFsyXV0gPSB2YWx1ZTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgZGVmYXVsdDoge1xuICAgICAgICB0aHJvdyBFcnJvcigncGF0aCBoYXMgdG9vIG1hbnkgc2VnbWVudHMnKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtib29sZWFufSBzdGF0aWNPbmx5IGlmIHRydWUsIHdpbGwgb25seSBvdXRwdXQgdmFsdWVzIGZvciB0aGUgc3RhdGljXG4gICAqIHByb3BlcnRpZXMgaW4gdGhlIGR0b1xuICAgKiBAcmV0dXJuIHtWYXNKb2JEdG99XG4gICAqL1xuICBwdWJsaWMgdG9EdG8oc3RhdGljT25seSA9IGZhbHNlKTogVmFzSm9iRHRvIHtcblxuICAgIGlmIChzdGF0aWNPbmx5KSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBpZDogdGhpcy5pZCxcbiAgICAgICAgY3JlYXRlZDogdGhpcy5jcmVhdGVkLFxuICAgICAgICBjcmVhdGVkQnk6IHRoaXMuY3JlYXRlZEJ5LFxuICAgICAgICBtb2RpZmllZDogdGhpcy5tb2RpZmllZCxcbiAgICAgICAgbW9kaWZpZWRCeTogdGhpcy5tb2RpZmllZEJ5LFxuICAgICAgICBzZXJ2ZXJDcmVhdGVkOiB0aGlzLnNlcnZlckNyZWF0ZWQsXG4gICAgICAgIHNlcnZlck1vZGlmaWVkOiB0aGlzLnNlcnZlck1vZGlmaWVkLFxuICAgICAgICBjcmVhdGVkQnlOYW1lOiB0aGlzLmNyZWF0ZWRCeU5hbWUsXG4gICAgICAgIG1vZGlmaWVkQnlOYW1lOiB0aGlzLm1vZGlmaWVkQnlOYW1lLFxuICAgICAgICBhY2NvdW50OiB0aGlzLmFjY291bnQsXG4gICAgICAgIGFjY2Vzc0dyb3VwOiB0aGlzLmFjY2Vzc0dyb3VwLFxuICAgICAgICByZWZlcmVuY2U6IHRoaXMucmVmZXJlbmNlLFxuICAgICAgICBqb2JEYXRlOiB0aGlzLmpvYkRhdGUsXG4gICAgICAgIGpvYlN0YXR1czogdGhpcy5qb2JTdGF0dXMsXG4gICAgICAgIGpvYlR5cGU6IHRoaXMuam9iVHlwZSxcbiAgICAgICAgYXNzaWduZWVJZDogdGhpcy5hc3NpZ25lZUlkLFxuICAgICAgICBmb3JtSWQ6IHRoaXMuZm9ybUlkLFxuICAgICAgICB0aW1lWm9uZU9mZnNldDogdGhpcy50aW1lWm9uZU9mZnNldCxcbiAgICAgICAgcGVuZGluZ0ZpZWxkczogdGhpcy5wZW5kaW5nRmllbGRzLFxuICAgICAgICBjaGlsZE1vZGlmaWVkOiB0aGlzLmNoaWxkTW9kaWZpZWQsXG4gICAgICAgIHZlcnNpb246IHRoaXMudmVyc2lvbixcbiAgICAgICAgZmllbGRzOiB0aGlzLmZpZWxkcyxcbiAgICAgICAgZmlsZXM6IHRoaXMuZmlsZXMsXG4gICAgICAgIGNyZWF0ZWRCeURpc3BsYXlOYW1lOiB0aGlzLmNyZWF0ZWRCeURpc3BsYXlOYW1lLFxuICAgICAgICBtb2RpZmllZEJ5RGlzcGxheU5hbWU6IHRoaXMubW9kaWZpZWRCeURpc3BsYXlOYW1lLFxuICAgICAgICBnZW9Mb2NhdGlvbjogdGhpcy5nZW9Mb2NhdGlvblxuICAgICAgfTtcbiAgICB9XG5cbiAgICBjb25zdCBkdG8gPSB7fSBhcyBWYXNKb2JNb2RlbER5bmFtaWNJbnRlcmZhY2U7XG4gICAgWy4uLnRoaXMuc3RhdGljUHJvcGVydGllcywgLi4udGhpcy5keW5hbWljUHJvcGVydGllc11cbiAgICAgIC5mb3JFYWNoKHByb3AgPT5cbiAgICAgICAgKGR0bylbcHJvcF0gPSB0aGlzLiR0aGlzW3Byb3BdKTtcblxuICAgIHJldHVybiBkdG8gYXMgYW55O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgbWV0aG9kIHdpbGwgcGFyc2UgYSBzeW50YXggdGhhdCBhbGxvd3MgdXMgdG8gYnVpbGQgc3RyaW5ncyBmcm9tIHRoZVxuICAgKiB2YWx1ZXMgb2YgZnJvbSB0aGUgam9iIG1vZGVsLiBGb3IgZXhhbXBsZSBpZiB0aGUgam9iIG1vZGVsIHdhczpcbiAgICpcbiAgICoge1xuICAgKiAgIGZvbzogJ2JhcidcbiAgICogfVxuICAgKlxuICAgKiBhbmQgd2UgcGFzcyBcImkgYW0gZm9vIHtmb299XCIsIHRoZSByZXN1bHQgd291bGQgYmU6XG4gICAqXG4gICAqIFwiaSBhbSBmb28gYmFyXCJcbiAgICpcbiAgICogd2UgY2FuIGFsc28gdXNlIG1vbWVudCB0byBwYXJzZSBkYXRlcywgZm9yIGV4YW1wbGUgaWYgdGhlIGpvYiBtb2RlbCB3YXM6XG4gICAqXG4gICAqIHtcbiAgICogICBjcmVhdGVkOiBcIjIwMjItMDEtMDFUMDA6MDA6MDArMDAwMFwiXG4gICAqIH1cbiAgICpcbiAgICogYW5kIHdlIHBhc3MgXCJ7Y3JlYXRlZHxkYXRlOllZLU1NLUREfVwiLCB0aGUgcmVzdWx0IHdvdWxkIGJlOlxuICAgKlxuICAgKiBcIjIwMjItMDEtMDFcIlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdmFsdWUgYSBzdHJpbmcgd2l0aCB0aGUgc3ludGF4XG4gICAqIEBwYXJhbSB7UGFyc2VTeW50YXhPcHRpb25zfSBvcHRpb25zXG4gICAqIEByZXR1cm4ge3N0cmluZ30gdGhlIHJlc3VsdHMgb2YgcGFyc2luZyB0aGUgc3ludGF4IG9uIHRoaXMgam9iXG4gICAqL1xuICBwYXJzZVN5bnRheChcbiAgICB2YWx1ZTogc3RyaW5nLFxuICAgIG9wdGlvbnM6IFBhcnNlU3ludGF4T3B0aW9ucyA9IHtcbiAgICAgIHRpbWVab25lT2Zmc2V0OiAwXG4gICAgfVxuICApOiBzdHJpbmcge1xuXG4gICAgaWYgKCF2YWx1ZSB8fCB0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZS5yZXBsYWNlKC8oe1tefV0qfSkvZywgKG1hdGNoOiBzdHJpbmcsIHRva2VuOiBzdHJpbmcpID0+IHtcbiAgICAgIGNvbnN0IHN5bnRheCA9IHRva2VuLnN1YnN0cmluZygxLCB0b2tlbi5sZW5ndGggLSAxKTtcblxuICAgICAgbGV0IFtrZXksIGZpbHRlcl0gPSBzeW50YXguc3BsaXQoJ3wnKTtcbiAgICAgIGtleSA9IChrZXkgfHwgJycpLnRyaW0oKTtcbiAgICAgIGZpbHRlciA9IChmaWx0ZXIgfHwgJycpLnRyaW0oKTtcblxuICAgICAgbGV0IGZpbHRlck5hbWUsIGZpbHRlckFyZzogc3RyaW5nID0gJyc7XG4gICAgICBpZiAoZmlsdGVyKSB7XG4gICAgICAgIGNvbnN0IHNwbGl0SW5kZXggPSBmaWx0ZXIuaW5kZXhPZignOicpO1xuICAgICAgICBpZiAoc3BsaXRJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICBmaWx0ZXJOYW1lID0gZmlsdGVyLnN1YnN0cmluZygwLCBzcGxpdEluZGV4KTtcbiAgICAgICAgICBmaWx0ZXJBcmcgPSBmaWx0ZXIuc3Vic3RyaW5nKHNwbGl0SW5kZXggKyAxKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBmaWx0ZXJOYW1lID0gZmlsdGVyO1xuICAgICAgICAgIGZpbHRlckFyZyA9ICcnO1xuICAgICAgICB9XG4gICAgICAgIGZpbHRlck5hbWUgPSAoZmlsdGVyTmFtZSB8fCAnJykudHJpbSgpO1xuICAgICAgICBmaWx0ZXJBcmcgPSAoZmlsdGVyQXJnIHx8ICcnKS50cmltKCk7XG4gICAgICB9XG4gICAgICBjb25zdCBwYXRoID0ga2V5LnNwbGl0KCcuJyk7XG4gICAgICBjb25zdCBvYmplY3RLZXkgPSBwYXRoLnNoaWZ0KCkgfHwgJyc7XG4gICAgICBsZXQgcmVzdWx0ID0gJyc7XG4gICAgICBpZiAob2JqZWN0S2V5ID09PSAnam9iJykge1xuICAgICAgICByZXN1bHQgPSAodGhpcy5nZXRWYWx1ZUJ5UGF0aChwYXRoKSB8fCAnJykudG9TdHJpbmcoKTtcbiAgICAgIH0gZWxzZSBpZiAob2JqZWN0S2V5ID09PSAnZmllbGRzJykge1xuICAgICAgICByZXN1bHQgPSAoZ2V0VmFsdWVCeVBhdGgocGF0aCwgdGhpcy5nZXRGaWVsZHMyKCkpIHx8ICcnKS50b1N0cmluZygpO1xuICAgICAgfSBlbHNlIGlmIChvYmplY3RLZXkubGVuZ3RoKSB7XG4gICAgICAgIGlmIChvcHRpb25zLm9iamVjdHMpIHtcbiAgICAgICAgICBpZiAob3B0aW9ucy5vYmplY3RzW29iamVjdEtleV0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgY29uc29sZS5kZWJ1ZyhcbiAgICAgICAgICAgICAgYG9iamVjdEtleSAke29iamVjdEtleX0gaXMgbm90IHByZXNlbnQgaW4gb3B0aW9ucy5vYmplY3RgXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgcmVzdWx0ID0gJyc7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlc3VsdCA9IChnZXRWYWx1ZUJ5UGF0aChwYXRoLCBvcHRpb25zLm9iamVjdHNbb2JqZWN0S2V5XSkgfHwgJycpXG4gICAgICAgICAgICAgIC50b1N0cmluZygpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zb2xlLmRlYnVnKFxuICAgICAgICAgICAgYG9iamVjdEtleSAke29iamVjdEtleX0gd2FzIHVzZWQgYnV0IG9wdGlvbnMub2JqZWN0IGlzIG5vdCBzZXRgXG4gICAgICAgICAgKTtcbiAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiAnJztcbiAgICAgIH1cblxuXG4gICAgICBpZiAoZmlsdGVyTmFtZSAmJiByZXN1bHQpIHtcbiAgICAgICAgc3dpdGNoIChmaWx0ZXJOYW1lKSB7XG4gICAgICAgICAgY2FzZSAnZGF0ZSc6IHtcbiAgICAgICAgICAgIHJldHVybiBtb21lbnQocmVzdWx0KVxuICAgICAgICAgICAgICAudXRjT2Zmc2V0KG9wdGlvbnMudGltZVpvbmVPZmZzZXQpXG4gICAgICAgICAgICAgIC5mb3JtYXQoZmlsdGVyQXJnIHx8ICcnKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKCd1bmtub3duIGZpbHRlciAlcycsIGZpbHRlck5hbWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0pLnRyaW0oKTtcbiAgfTtcblxuICAvKipcbiAgICogQHJldHVybiB7b2JqZWN0fVxuICAgKi9cbiAgb3ZlcnJpZGUgdG9BcGlEdG8oKTogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbj4ge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5zdXBlci50b0FwaUR0bygpLFxuICAgICAgcmVmZXJlbmNlOiB0aGlzLnJlZmVyZW5jZSB8fCAnficsXG4gICAgICBqb2JEYXRlOiB0aGlzLmpvYkRhdGUgfHwgJ34nLFxuICAgICAgam9iVHlwZTogdGhpcy5qb2JUeXBlIHx8ICd+JyxcbiAgICAgIGFjY2Vzc0dyb3VwOiB0aGlzLmFjY2Vzc0dyb3VwIHx8ICd+JyxcbiAgICAgIGpvYlN0YXR1czogdGhpcy5qb2JTdGF0dXMgfHwgJ34nLFxuICAgICAgYXNzaWduZWVJZDogdGhpcy5hc3NpZ25lZUlkIHx8ICd+JyxcbiAgICAgIHRpbWVab25lT2Zmc2V0OiB0aGlzLnRpbWVab25lT2Zmc2V0IHx8IDAsXG4gICAgICBwZW5kaW5nRmllbGRzOiB0aGlzLnBlbmRpbmdGaWVsZHMgfHwgMCxcbiAgICAgIGxhc3RGb3JtOiB0aGlzLmZvcm1JZCB8fCAnfidcbiAgICB9O1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFzLWxvb2t1cC10eXBlLmR0by5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Zhcy1saWIvc3JjL2xpYi9lbnRpdHkvdmFzLWxvb2t1cC10eXBlLmR0by50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVmFzQWNjb3VudE9iamVjdER0byB9IGZyb20gJy4vdmFzLWFjY291bnQtb2JqZWN0LmR0byc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmFzTG9va3VwVHlwZUR0byBleHRlbmRzIFZhc0FjY291bnRPYmplY3REdG8ge1xuICB0aXRsZTogc3RyaW5nO1xuICBzZXF1ZW5jZTogbnVtYmVyO1xuICBjYXRlZ29yeUdyb3VwczogQXJyYXk8c3RyaW5nPjtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFzLWxvb2t1cC5kdG8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YXMtbGliL3NyYy9saWIvZW50aXR5L3Zhcy1sb29rdXAuZHRvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBWYXNBY2NvdW50T2JqZWN0RHRvIH0gZnJvbSAnLi92YXMtYWNjb3VudC1vYmplY3QuZHRvJztcblxuZXhwb3J0IGludGVyZmFjZSBWYXNMb29rdXBEdG8gZXh0ZW5kcyBWYXNBY2NvdW50T2JqZWN0RHRvIHtcbiAgaWQ6IHN0cmluZztcbiAgY3JlYXRlZDogc3RyaW5nO1xuICBzZXJ2ZXJDcmVhdGVkOiBzdHJpbmc7XG4gIGNyZWF0ZWRCeTogc3RyaW5nO1xuICBzZXJ2ZXJNb2RpZmllZDogc3RyaW5nO1xuICBtb2RpZmllZEJ5OiBzdHJpbmc7XG4gIGFjY291bnQ6IHN0cmluZztcbiAgYWNjZXNzR3JvdXA6IHN0cmluZztcbiAgbG9va3VwVHlwZTogc3RyaW5nO1xuICB0aXRsZTogc3RyaW5nO1xuICBjb250ZW50OiBzdHJpbmc7XG4gIHNlcXVlbmNlOiBudW1iZXI7XG59XG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFzLW1lbWJlcnNoaXAuZHRvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFzLWxpYi9zcmMvbGliL2VudGl0eS92YXMtbWVtYmVyc2hpcC5kdG8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFZhc0FjY291bnRPYmplY3REdG8gfSBmcm9tICcuL3Zhcy1hY2NvdW50LW9iamVjdC5kdG8nO1xuXG5leHBvcnQgaW50ZXJmYWNlIFZhc01lbWJlcnNoaXBEdG8gZXh0ZW5kcyBWYXNBY2NvdW50T2JqZWN0RHRvIHtcbiAgdXNlcjogc3RyaW5nO1xuICBhZG1pbjogYm9vbGVhbjtcbiAgbG9va3VwVHlwZXM6IEFycmF5PHN0cmluZz47XG4gIGNvbnRhY3RUeXBlczogQXJyYXk8c3RyaW5nPjtcbiAgYWNjZXNzR3JvdXBzOiBBcnJheTxzdHJpbmc+O1xuICBqb2JTdGF0dXNlczogQXJyYXk8c3RyaW5nPjtcbiAgam9iVHlwZXM6IEFycmF5PHN0cmluZz47XG4gIHRhc2tUeXBlczogQXJyYXk8c3RyaW5nPjtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { UUID } from 'angular2-uuid';
|
|
2
|
+
import { VasAccountObjectModel } from './vas-account-object.model';
|
|
3
|
+
/**
|
|
4
|
+
* VasMembershipModel
|
|
5
|
+
*/
|
|
6
|
+
export class VasMembershipModel extends VasAccountObjectModel {
|
|
7
|
+
constructor(id, created, serverCreated, createdBy, modified, serverModified, modifiedBy, createdByName, modifiedByName, account, user, admin, lookupTypes, contactTypes, accessGroups, jobStatuses, jobTypes, taskTypes) {
|
|
8
|
+
super(id, created, serverCreated, createdBy, modified, serverModified, modifiedBy, createdByName, modifiedByName, account);
|
|
9
|
+
this.id = id;
|
|
10
|
+
this.created = created;
|
|
11
|
+
this.serverCreated = serverCreated;
|
|
12
|
+
this.createdBy = createdBy;
|
|
13
|
+
this.modified = modified;
|
|
14
|
+
this.serverModified = serverModified;
|
|
15
|
+
this.modifiedBy = modifiedBy;
|
|
16
|
+
this.createdByName = createdByName;
|
|
17
|
+
this.modifiedByName = modifiedByName;
|
|
18
|
+
this.account = account;
|
|
19
|
+
this.user = user;
|
|
20
|
+
this.admin = admin;
|
|
21
|
+
this.lookupTypes = lookupTypes;
|
|
22
|
+
this.contactTypes = contactTypes;
|
|
23
|
+
this.accessGroups = accessGroups;
|
|
24
|
+
this.jobStatuses = jobStatuses;
|
|
25
|
+
this.jobTypes = jobTypes;
|
|
26
|
+
this.taskTypes = taskTypes;
|
|
27
|
+
}
|
|
28
|
+
static empty() {
|
|
29
|
+
return VasMembershipModel.fromDto({
|
|
30
|
+
// eslint-disable-next-line new-cap
|
|
31
|
+
id: UUID.UUID()
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
static fromDto(dto) {
|
|
35
|
+
return new VasMembershipModel(
|
|
36
|
+
// eslint-disable-next-line new-cap
|
|
37
|
+
dto.id || UUID.UUID(), dto.created || '', dto.serverCreated || '', dto.createdBy || '', dto.modified || '', dto.serverModified || '', dto.modifiedBy || '', dto.createdByName || '', dto.modifiedByName || '', dto.account || '', dto.user || '', dto.admin || false, dto.lookupTypes || [], dto.contactTypes || [], dto.accessGroups || [], dto.jobStatuses || [], dto.jobTypes || [], dto.taskTypes || []);
|
|
38
|
+
}
|
|
39
|
+
toDto() {
|
|
40
|
+
return {
|
|
41
|
+
id: this.id,
|
|
42
|
+
created: this.created,
|
|
43
|
+
serverCreated: this.serverCreated,
|
|
44
|
+
createdBy: this.createdBy,
|
|
45
|
+
modified: this.modified,
|
|
46
|
+
serverModified: this.serverModified,
|
|
47
|
+
modifiedBy: this.modifiedBy,
|
|
48
|
+
createdByName: this.createdByName,
|
|
49
|
+
modifiedByName: this.modifiedByName,
|
|
50
|
+
account: this.account,
|
|
51
|
+
user: this.user,
|
|
52
|
+
admin: this.admin,
|
|
53
|
+
lookupTypes: this.lookupTypes,
|
|
54
|
+
contactTypes: this.contactTypes,
|
|
55
|
+
accessGroups: this.accessGroups,
|
|
56
|
+
jobStatuses: this.jobStatuses,
|
|
57
|
+
jobTypes: this.jobTypes,
|
|
58
|
+
taskTypes: this.taskTypes
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFzLW1lbWJlcnNoaXAubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YXMtbGliL3NyYy9saWIvZW50aXR5L3Zhcy1tZW1iZXJzaGlwLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckMsT0FBTyxFQUFFLHFCQUFxQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFFbEU7O0dBRUc7QUFDSCxNQUFNLE9BQU8sa0JBQW1CLFNBQVEscUJBQXFCO0lBQzNELFlBQ2tCLEVBQVUsRUFDVixPQUFlLEVBQ2YsYUFBcUIsRUFDckIsU0FBaUIsRUFDakIsUUFBZ0IsRUFDaEIsY0FBc0IsRUFDdEIsVUFBa0IsRUFDbEIsYUFBcUIsRUFDckIsY0FBc0IsRUFDdEIsT0FBZSxFQUN4QixJQUFZLEVBQ1osS0FBYyxFQUNkLFdBQTBCLEVBQzFCLFlBQTJCLEVBQzNCLFlBQTJCLEVBQzNCLFdBQTBCLEVBQzFCLFFBQXVCLEVBQ3ZCLFNBQXdCO1FBRS9CLEtBQUssQ0FDSCxFQUFFLEVBQ0YsT0FBTyxFQUNQLGFBQWEsRUFDYixTQUFTLEVBQ1QsUUFBUSxFQUNSLGNBQWMsRUFDZCxVQUFVLEVBQ1YsYUFBYSxFQUNiLGNBQWMsRUFDZCxPQUFPLENBQ1IsQ0FBQztRQTlCYyxPQUFFLEdBQUYsRUFBRSxDQUFRO1FBQ1YsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQUNmLGtCQUFhLEdBQWIsYUFBYSxDQUFRO1FBQ3JCLGNBQVMsR0FBVCxTQUFTLENBQVE7UUFDakIsYUFBUSxHQUFSLFFBQVEsQ0FBUTtRQUNoQixtQkFBYyxHQUFkLGNBQWMsQ0FBUTtRQUN0QixlQUFVLEdBQVYsVUFBVSxDQUFRO1FBQ2xCLGtCQUFhLEdBQWIsYUFBYSxDQUFRO1FBQ3JCLG1CQUFjLEdBQWQsY0FBYyxDQUFRO1FBQ3RCLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFDeEIsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUNaLFVBQUssR0FBTCxLQUFLLENBQVM7UUFDZCxnQkFBVyxHQUFYLFdBQVcsQ0FBZTtRQUMxQixpQkFBWSxHQUFaLFlBQVksQ0FBZTtRQUMzQixpQkFBWSxHQUFaLFlBQVksQ0FBZTtRQUMzQixnQkFBVyxHQUFYLFdBQVcsQ0FBZTtRQUMxQixhQUFRLEdBQVIsUUFBUSxDQUFlO1FBQ3ZCLGNBQVMsR0FBVCxTQUFTLENBQWU7SUFjakMsQ0FBQztJQUVNLE1BQU0sQ0FBQyxLQUFLO1FBQ2pCLE9BQU8sa0JBQWtCLENBQUMsT0FBTyxDQUFDO1lBQ2hDLG1DQUFtQztZQUNuQyxFQUFFLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRTtTQUNoQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sTUFBTSxDQUFDLE9BQU8sQ0FDbkIsR0FBOEI7UUFFOUIsT0FBTyxJQUFJLGtCQUFrQjtRQUMzQixtQ0FBbUM7UUFDbkMsR0FBRyxDQUFDLEVBQUUsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQ3JCLEdBQUcsQ0FBQyxPQUFPLElBQUksRUFBRSxFQUNqQixHQUFHLENBQUMsYUFBYSxJQUFJLEVBQUUsRUFDdkIsR0FBRyxDQUFDLFNBQVMsSUFBSSxFQUFFLEVBQ25CLEdBQUcsQ0FBQyxRQUFRLElBQUksRUFBRSxFQUNsQixHQUFHLENBQUMsY0FBYyxJQUFJLEVBQUUsRUFDeEIsR0FBRyxDQUFDLFVBQVUsSUFBSSxFQUFFLEVBQ3BCLEdBQUcsQ0FBQyxhQUFhLElBQUksRUFBRSxFQUN2QixHQUFHLENBQUMsY0FBYyxJQUFJLEVBQUUsRUFDeEIsR0FBRyxDQUFDLE9BQU8sSUFBSSxFQUFFLEVBQ2pCLEdBQUcsQ0FBQyxJQUFJLElBQUksRUFBRSxFQUNkLEdBQUcsQ0FBQyxLQUFLLElBQUksS0FBSyxFQUNsQixHQUFHLENBQUMsV0FBVyxJQUFJLEVBQUUsRUFDckIsR0FBRyxDQUFDLFlBQVksSUFBSSxFQUFFLEVBQ3RCLEdBQUcsQ0FBQyxZQUFZLElBQUksRUFBRSxFQUN0QixHQUFHLENBQUMsV0FBVyxJQUFJLEVBQUUsRUFDckIsR0FBRyxDQUFDLFFBQVEsSUFBSSxFQUFFLEVBQ2xCLEdBQUcsQ0FBQyxTQUFTLElBQUksRUFBRSxDQUNwQixDQUFDO0lBQ0osQ0FBQztJQUVELEtBQUs7UUFDSCxPQUFPO1lBQ0wsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFO1lBQ1gsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO1lBQ3JCLGFBQWEsRUFBRSxJQUFJLENBQUMsYUFBYTtZQUNqQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7WUFDekIsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQ3ZCLGNBQWMsRUFBRSxJQUFJLENBQUMsY0FBYztZQUNuQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7WUFDM0IsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhO1lBQ2pDLGNBQWMsRUFBRSxJQUFJLENBQUMsY0FBYztZQUNuQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87WUFDckIsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2YsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO1lBQ2pCLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVztZQUM3QixZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVk7WUFDL0IsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZO1lBQy9CLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVztZQUM3QixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7WUFDdkIsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO1NBQzFCLENBQUM7SUFDSixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBWYXNNZW1iZXJzaGlwRHRvIH0gZnJvbSAnLi92YXMtbWVtYmVyc2hpcC5kdG8nO1xuaW1wb3J0IHsgVVVJRCB9IGZyb20gJ2FuZ3VsYXIyLXV1aWQnO1xuaW1wb3J0IHsgVmFzQWNjb3VudE9iamVjdE1vZGVsfSBmcm9tICcuL3Zhcy1hY2NvdW50LW9iamVjdC5tb2RlbCc7XG5cbi8qKlxuICogVmFzTWVtYmVyc2hpcE1vZGVsXG4gKi9cbmV4cG9ydCBjbGFzcyBWYXNNZW1iZXJzaGlwTW9kZWwgZXh0ZW5kcyBWYXNBY2NvdW50T2JqZWN0TW9kZWwge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgb3ZlcnJpZGUgaWQ6IHN0cmluZyxcbiAgICBwdWJsaWMgb3ZlcnJpZGUgY3JlYXRlZDogc3RyaW5nLFxuICAgIHB1YmxpYyBvdmVycmlkZSBzZXJ2ZXJDcmVhdGVkOiBzdHJpbmcsXG4gICAgcHVibGljIG92ZXJyaWRlIGNyZWF0ZWRCeTogc3RyaW5nLFxuICAgIHB1YmxpYyBvdmVycmlkZSBtb2RpZmllZDogc3RyaW5nLFxuICAgIHB1YmxpYyBvdmVycmlkZSBzZXJ2ZXJNb2RpZmllZDogc3RyaW5nLFxuICAgIHB1YmxpYyBvdmVycmlkZSBtb2RpZmllZEJ5OiBzdHJpbmcsXG4gICAgcHVibGljIG92ZXJyaWRlIGNyZWF0ZWRCeU5hbWU6IHN0cmluZyxcbiAgICBwdWJsaWMgb3ZlcnJpZGUgbW9kaWZpZWRCeU5hbWU6IHN0cmluZyxcbiAgICBwdWJsaWMgb3ZlcnJpZGUgYWNjb3VudDogc3RyaW5nLFxuICAgIHB1YmxpYyB1c2VyOiBzdHJpbmcsXG4gICAgcHVibGljIGFkbWluOiBib29sZWFuLFxuICAgIHB1YmxpYyBsb29rdXBUeXBlczogQXJyYXk8c3RyaW5nPixcbiAgICBwdWJsaWMgY29udGFjdFR5cGVzOiBBcnJheTxzdHJpbmc+LFxuICAgIHB1YmxpYyBhY2Nlc3NHcm91cHM6IEFycmF5PHN0cmluZz4sXG4gICAgcHVibGljIGpvYlN0YXR1c2VzOiBBcnJheTxzdHJpbmc+LFxuICAgIHB1YmxpYyBqb2JUeXBlczogQXJyYXk8c3RyaW5nPixcbiAgICBwdWJsaWMgdGFza1R5cGVzOiBBcnJheTxzdHJpbmc+LFxuICApIHtcbiAgICBzdXBlcihcbiAgICAgIGlkLFxuICAgICAgY3JlYXRlZCxcbiAgICAgIHNlcnZlckNyZWF0ZWQsXG4gICAgICBjcmVhdGVkQnksXG4gICAgICBtb2RpZmllZCxcbiAgICAgIHNlcnZlck1vZGlmaWVkLFxuICAgICAgbW9kaWZpZWRCeSxcbiAgICAgIGNyZWF0ZWRCeU5hbWUsXG4gICAgICBtb2RpZmllZEJ5TmFtZSxcbiAgICAgIGFjY291bnRcbiAgICApO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBlbXB0eSgpOiBWYXNNZW1iZXJzaGlwTW9kZWwge1xuICAgIHJldHVybiBWYXNNZW1iZXJzaGlwTW9kZWwuZnJvbUR0byh7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbmV3LWNhcFxuICAgICAgaWQ6IFVVSUQuVVVJRCgpXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGZyb21EdG8oXG4gICAgZHRvOiBQYXJ0aWFsPFZhc01lbWJlcnNoaXBEdG8+XG4gICk6IFZhc01lbWJlcnNoaXBNb2RlbCB7XG4gICAgcmV0dXJuIG5ldyBWYXNNZW1iZXJzaGlwTW9kZWwoXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbmV3LWNhcFxuICAgICAgZHRvLmlkIHx8IFVVSUQuVVVJRCgpLFxuICAgICAgZHRvLmNyZWF0ZWQgfHwgJycsXG4gICAgICBkdG8uc2VydmVyQ3JlYXRlZCB8fCAnJyxcbiAgICAgIGR0by5jcmVhdGVkQnkgfHwgJycsXG4gICAgICBkdG8ubW9kaWZpZWQgfHwgJycsXG4gICAgICBkdG8uc2VydmVyTW9kaWZpZWQgfHwgJycsXG4gICAgICBkdG8ubW9kaWZpZWRCeSB8fCAnJyxcbiAgICAgIGR0by5jcmVhdGVkQnlOYW1lIHx8ICcnLFxuICAgICAgZHRvLm1vZGlmaWVkQnlOYW1lIHx8ICcnLFxuICAgICAgZHRvLmFjY291bnQgfHwgJycsXG4gICAgICBkdG8udXNlciB8fCAnJyxcbiAgICAgIGR0by5hZG1pbiB8fCBmYWxzZSxcbiAgICAgIGR0by5sb29rdXBUeXBlcyB8fCBbXSxcbiAgICAgIGR0by5jb250YWN0VHlwZXMgfHwgW10sXG4gICAgICBkdG8uYWNjZXNzR3JvdXBzIHx8IFtdLFxuICAgICAgZHRvLmpvYlN0YXR1c2VzIHx8IFtdLFxuICAgICAgZHRvLmpvYlR5cGVzIHx8IFtdLFxuICAgICAgZHRvLnRhc2tUeXBlcyB8fCBbXVxuICAgICk7XG4gIH1cblxuICB0b0R0bygpOiBWYXNNZW1iZXJzaGlwRHRvIHtcbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IHRoaXMuaWQsXG4gICAgICBjcmVhdGVkOiB0aGlzLmNyZWF0ZWQsXG4gICAgICBzZXJ2ZXJDcmVhdGVkOiB0aGlzLnNlcnZlckNyZWF0ZWQsXG4gICAgICBjcmVhdGVkQnk6IHRoaXMuY3JlYXRlZEJ5LFxuICAgICAgbW9kaWZpZWQ6IHRoaXMubW9kaWZpZWQsXG4gICAgICBzZXJ2ZXJNb2RpZmllZDogdGhpcy5zZXJ2ZXJNb2RpZmllZCxcbiAgICAgIG1vZGlmaWVkQnk6IHRoaXMubW9kaWZpZWRCeSxcbiAgICAgIGNyZWF0ZWRCeU5hbWU6IHRoaXMuY3JlYXRlZEJ5TmFtZSxcbiAgICAgIG1vZGlmaWVkQnlOYW1lOiB0aGlzLm1vZGlmaWVkQnlOYW1lLFxuICAgICAgYWNjb3VudDogdGhpcy5hY2NvdW50LFxuICAgICAgdXNlcjogdGhpcy51c2VyLFxuICAgICAgYWRtaW46IHRoaXMuYWRtaW4sXG4gICAgICBsb29rdXBUeXBlczogdGhpcy5sb29rdXBUeXBlcyxcbiAgICAgIGNvbnRhY3RUeXBlczogdGhpcy5jb250YWN0VHlwZXMsXG4gICAgICBhY2Nlc3NHcm91cHM6IHRoaXMuYWNjZXNzR3JvdXBzLFxuICAgICAgam9iU3RhdHVzZXM6IHRoaXMuam9iU3RhdHVzZXMsXG4gICAgICBqb2JUeXBlczogdGhpcy5qb2JUeXBlcyxcbiAgICAgIHRhc2tUeXBlczogdGhpcy50YXNrVHlwZXNcbiAgICB9O1xuICB9XG59XG5cbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFzLW5vdGUuZHRvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFzLWxpYi9zcmMvbGliL2VudGl0eS92YXMtbm90ZS5kdG8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFZhc0FjY291bnRPYmplY3REdG8gfSBmcm9tICcuL3Zhcy1hY2NvdW50LW9iamVjdC5kdG8nO1xuXG5leHBvcnQgaW50ZXJmYWNlIFZhc05vdGVEdG8gZXh0ZW5kcyBWYXNBY2NvdW50T2JqZWN0RHRvIHtcbiAgam9iOiBzdHJpbmc7XG4gIGNvbnRlbnQ6IHN0cmluZztcbiAgc2Vuc2l0aXZlOiBib29sZWFuO1xufVxuIl19
|