@mitre/hdf-converters 2.12.6 → 3.0.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/README.md +139 -56
- package/dist/converters/aws-config-to-hdf/typescript/converter.d.ts +9 -0
- package/dist/converters/aws-config-to-hdf/typescript/converter.d.ts.map +1 -0
- package/dist/converters/aws-config-to-hdf/typescript/converter.js +132 -0
- package/dist/converters/aws-config-to-hdf/typescript/converter.js.map +1 -0
- package/dist/converters/aws-config-to-hdf/typescript/fingerprint.d.ts +10 -0
- package/dist/converters/aws-config-to-hdf/typescript/fingerprint.d.ts.map +1 -0
- package/dist/converters/aws-config-to-hdf/typescript/fingerprint.js +32 -0
- package/dist/converters/aws-config-to-hdf/typescript/fingerprint.js.map +1 -0
- package/dist/converters/aws-config-to-hdf/typescript/index.d.ts +2 -0
- package/dist/converters/aws-config-to-hdf/typescript/index.d.ts.map +1 -0
- package/dist/converters/aws-config-to-hdf/typescript/index.js +2 -0
- package/dist/converters/aws-config-to-hdf/typescript/index.js.map +1 -0
- package/dist/converters/burpsuite-to-hdf/typescript/converter.d.ts +11 -0
- package/dist/converters/burpsuite-to-hdf/typescript/converter.d.ts.map +1 -0
- package/dist/converters/burpsuite-to-hdf/typescript/converter.js +169 -0
- package/dist/converters/burpsuite-to-hdf/typescript/converter.js.map +1 -0
- package/dist/converters/burpsuite-to-hdf/typescript/fingerprint.d.ts +9 -0
- package/dist/converters/burpsuite-to-hdf/typescript/fingerprint.d.ts.map +1 -0
- package/dist/converters/burpsuite-to-hdf/typescript/fingerprint.js +33 -0
- package/dist/converters/burpsuite-to-hdf/typescript/fingerprint.js.map +1 -0
- package/dist/converters/burpsuite-to-hdf/typescript/index.d.ts +2 -0
- package/dist/converters/burpsuite-to-hdf/typescript/index.d.ts.map +1 -0
- package/dist/converters/burpsuite-to-hdf/typescript/index.js +2 -0
- package/dist/converters/burpsuite-to-hdf/typescript/index.js.map +1 -0
- package/dist/converters/conveyor-to-hdf/typescript/converter.d.ts +9 -0
- package/dist/converters/conveyor-to-hdf/typescript/converter.d.ts.map +1 -0
- package/dist/converters/conveyor-to-hdf/typescript/converter.js +206 -0
- package/dist/converters/conveyor-to-hdf/typescript/converter.js.map +1 -0
- package/dist/converters/conveyor-to-hdf/typescript/fingerprint.d.ts +10 -0
- package/dist/converters/conveyor-to-hdf/typescript/fingerprint.d.ts.map +1 -0
- package/dist/converters/conveyor-to-hdf/typescript/fingerprint.js +37 -0
- package/dist/converters/conveyor-to-hdf/typescript/fingerprint.js.map +1 -0
- package/dist/converters/conveyor-to-hdf/typescript/index.d.ts +2 -0
- package/dist/converters/conveyor-to-hdf/typescript/index.d.ts.map +1 -0
- package/dist/converters/conveyor-to-hdf/typescript/index.js +2 -0
- package/dist/converters/conveyor-to-hdf/typescript/index.js.map +1 -0
- package/dist/converters/cyclonedx-to-hdf/typescript/converter.d.ts +8 -0
- package/dist/converters/cyclonedx-to-hdf/typescript/converter.d.ts.map +1 -0
- package/dist/converters/cyclonedx-to-hdf/typescript/converter.js +199 -0
- package/dist/converters/cyclonedx-to-hdf/typescript/converter.js.map +1 -0
- package/dist/converters/cyclonedx-to-hdf/typescript/fingerprint.d.ts +10 -0
- package/dist/converters/cyclonedx-to-hdf/typescript/fingerprint.d.ts.map +1 -0
- package/dist/converters/cyclonedx-to-hdf/typescript/fingerprint.js +34 -0
- package/dist/converters/cyclonedx-to-hdf/typescript/fingerprint.js.map +1 -0
- package/dist/converters/cyclonedx-to-hdf/typescript/index.d.ts +2 -0
- package/dist/converters/cyclonedx-to-hdf/typescript/index.d.ts.map +1 -0
- package/dist/converters/cyclonedx-to-hdf/typescript/index.js +2 -0
- package/dist/converters/cyclonedx-to-hdf/typescript/index.js.map +1 -0
- package/dist/converters/dbprotect-to-hdf/typescript/converter.d.ts +10 -0
- package/dist/converters/dbprotect-to-hdf/typescript/converter.d.ts.map +1 -0
- package/dist/converters/dbprotect-to-hdf/typescript/converter.js +171 -0
- package/dist/converters/dbprotect-to-hdf/typescript/converter.js.map +1 -0
- package/dist/converters/dbprotect-to-hdf/typescript/fingerprint.d.ts +10 -0
- package/dist/converters/dbprotect-to-hdf/typescript/fingerprint.d.ts.map +1 -0
- package/dist/converters/dbprotect-to-hdf/typescript/fingerprint.js +35 -0
- package/dist/converters/dbprotect-to-hdf/typescript/fingerprint.js.map +1 -0
- package/dist/converters/dbprotect-to-hdf/typescript/index.d.ts +2 -0
- package/dist/converters/dbprotect-to-hdf/typescript/index.d.ts.map +1 -0
- package/dist/converters/dbprotect-to-hdf/typescript/index.js +2 -0
- package/dist/converters/dbprotect-to-hdf/typescript/index.js.map +1 -0
- package/dist/converters/deptrack-to-hdf/typescript/converter.d.ts +8 -0
- package/dist/converters/deptrack-to-hdf/typescript/converter.d.ts.map +1 -0
- package/dist/converters/deptrack-to-hdf/typescript/converter.js +120 -0
- package/dist/converters/deptrack-to-hdf/typescript/converter.js.map +1 -0
- package/dist/converters/deptrack-to-hdf/typescript/fingerprint.d.ts +10 -0
- package/dist/converters/deptrack-to-hdf/typescript/fingerprint.d.ts.map +1 -0
- package/dist/converters/deptrack-to-hdf/typescript/fingerprint.js +46 -0
- package/dist/converters/deptrack-to-hdf/typescript/fingerprint.js.map +1 -0
- package/dist/converters/deptrack-to-hdf/typescript/index.d.ts +2 -0
- package/dist/converters/deptrack-to-hdf/typescript/index.d.ts.map +1 -0
- package/dist/converters/deptrack-to-hdf/typescript/index.js +2 -0
- package/dist/converters/deptrack-to-hdf/typescript/index.js.map +1 -0
- package/dist/converters/fortify-to-hdf/typescript/converter.d.ts +12 -0
- package/dist/converters/fortify-to-hdf/typescript/converter.d.ts.map +1 -0
- package/dist/converters/fortify-to-hdf/typescript/converter.js +211 -0
- package/dist/converters/fortify-to-hdf/typescript/converter.js.map +1 -0
- package/dist/converters/fortify-to-hdf/typescript/fingerprint.d.ts +11 -0
- package/dist/converters/fortify-to-hdf/typescript/fingerprint.d.ts.map +1 -0
- package/dist/converters/fortify-to-hdf/typescript/fingerprint.js +42 -0
- package/dist/converters/fortify-to-hdf/typescript/fingerprint.js.map +1 -0
- package/dist/converters/fortify-to-hdf/typescript/index.d.ts +2 -0
- package/dist/converters/fortify-to-hdf/typescript/index.d.ts.map +1 -0
- package/dist/converters/fortify-to-hdf/typescript/index.js +2 -0
- package/dist/converters/fortify-to-hdf/typescript/index.js.map +1 -0
- package/dist/converters/gitlab-to-hdf/typescript/converter.d.ts +2 -0
- package/dist/converters/gitlab-to-hdf/typescript/converter.d.ts.map +1 -0
- package/dist/converters/gitlab-to-hdf/typescript/converter.js +222 -0
- package/dist/converters/gitlab-to-hdf/typescript/converter.js.map +1 -0
- package/dist/converters/gitlab-to-hdf/typescript/fingerprint.d.ts +10 -0
- package/dist/converters/gitlab-to-hdf/typescript/fingerprint.d.ts.map +1 -0
- package/dist/converters/gitlab-to-hdf/typescript/fingerprint.js +37 -0
- package/dist/converters/gitlab-to-hdf/typescript/fingerprint.js.map +1 -0
- package/dist/converters/gitlab-to-hdf/typescript/index.d.ts +2 -0
- package/dist/converters/gitlab-to-hdf/typescript/index.d.ts.map +1 -0
- package/dist/converters/gitlab-to-hdf/typescript/index.js +2 -0
- package/dist/converters/gitlab-to-hdf/typescript/index.js.map +1 -0
- package/dist/converters/gosec-to-hdf/typescript/converter.d.ts +10 -0
- package/dist/converters/gosec-to-hdf/typescript/converter.d.ts.map +1 -0
- package/dist/converters/gosec-to-hdf/typescript/converter.js +126 -0
- package/dist/converters/gosec-to-hdf/typescript/converter.js.map +1 -0
- package/dist/converters/gosec-to-hdf/typescript/fingerprint.d.ts +10 -0
- package/dist/converters/gosec-to-hdf/typescript/fingerprint.d.ts.map +1 -0
- package/dist/converters/gosec-to-hdf/typescript/fingerprint.js +32 -0
- package/dist/converters/gosec-to-hdf/typescript/fingerprint.js.map +1 -0
- package/dist/converters/gosec-to-hdf/typescript/index.d.ts +2 -0
- package/dist/converters/gosec-to-hdf/typescript/index.d.ts.map +1 -0
- package/dist/converters/gosec-to-hdf/typescript/index.js +2 -0
- package/dist/converters/gosec-to-hdf/typescript/index.js.map +1 -0
- package/dist/converters/grype-to-hdf/typescript/converter.d.ts +2 -0
- package/dist/converters/grype-to-hdf/typescript/converter.d.ts.map +1 -0
- package/dist/converters/grype-to-hdf/typescript/converter.js +222 -0
- package/dist/converters/grype-to-hdf/typescript/converter.js.map +1 -0
- package/dist/converters/grype-to-hdf/typescript/fingerprint.d.ts +10 -0
- package/dist/converters/grype-to-hdf/typescript/fingerprint.d.ts.map +1 -0
- package/dist/converters/grype-to-hdf/typescript/fingerprint.js +38 -0
- package/dist/converters/grype-to-hdf/typescript/fingerprint.js.map +1 -0
- package/dist/converters/grype-to-hdf/typescript/index.d.ts +2 -0
- package/dist/converters/grype-to-hdf/typescript/index.d.ts.map +1 -0
- package/dist/converters/grype-to-hdf/typescript/index.js +2 -0
- package/dist/converters/grype-to-hdf/typescript/index.js.map +1 -0
- package/dist/converters/hdf-to-csv/typescript/converter.d.ts +7 -0
- package/dist/converters/hdf-to-csv/typescript/converter.d.ts.map +1 -0
- package/dist/converters/hdf-to-csv/typescript/converter.js +108 -0
- package/dist/converters/hdf-to-csv/typescript/converter.js.map +1 -0
- package/dist/converters/hdf-to-csv/typescript/fingerprint.d.ts +10 -0
- package/dist/converters/hdf-to-csv/typescript/fingerprint.d.ts.map +1 -0
- package/dist/converters/hdf-to-csv/typescript/fingerprint.js +28 -0
- package/dist/converters/hdf-to-csv/typescript/fingerprint.js.map +1 -0
- package/dist/converters/hdf-to-csv/typescript/index.d.ts +2 -0
- package/dist/converters/hdf-to-csv/typescript/index.d.ts.map +1 -0
- package/dist/converters/hdf-to-csv/typescript/index.js +2 -0
- package/dist/converters/hdf-to-csv/typescript/index.js.map +1 -0
- package/dist/converters/hdf-to-oscal-poam/typescript/converter.d.ts +13 -0
- package/dist/converters/hdf-to-oscal-poam/typescript/converter.d.ts.map +1 -0
- package/dist/converters/hdf-to-oscal-poam/typescript/converter.js +156 -0
- package/dist/converters/hdf-to-oscal-poam/typescript/converter.js.map +1 -0
- package/dist/converters/hdf-to-oscal-poam/typescript/fingerprint.d.ts +10 -0
- package/dist/converters/hdf-to-oscal-poam/typescript/fingerprint.d.ts.map +1 -0
- package/dist/converters/hdf-to-oscal-poam/typescript/fingerprint.js +28 -0
- package/dist/converters/hdf-to-oscal-poam/typescript/fingerprint.js.map +1 -0
- package/dist/converters/hdf-to-oscal-poam/typescript/index.d.ts +2 -0
- package/dist/converters/hdf-to-oscal-poam/typescript/index.d.ts.map +1 -0
- package/dist/converters/hdf-to-oscal-poam/typescript/index.js +2 -0
- package/dist/converters/hdf-to-oscal-poam/typescript/index.js.map +1 -0
- package/dist/converters/hdf-to-oscal-sar/typescript/converter.d.ts +22 -0
- package/dist/converters/hdf-to-oscal-sar/typescript/converter.d.ts.map +1 -0
- package/dist/converters/hdf-to-oscal-sar/typescript/converter.js +276 -0
- package/dist/converters/hdf-to-oscal-sar/typescript/converter.js.map +1 -0
- package/dist/converters/hdf-to-oscal-sar/typescript/fingerprint.d.ts +10 -0
- package/dist/converters/hdf-to-oscal-sar/typescript/fingerprint.d.ts.map +1 -0
- package/dist/converters/hdf-to-oscal-sar/typescript/fingerprint.js +28 -0
- package/dist/converters/hdf-to-oscal-sar/typescript/fingerprint.js.map +1 -0
- package/dist/converters/hdf-to-oscal-sar/typescript/index.d.ts +2 -0
- package/dist/converters/hdf-to-oscal-sar/typescript/index.d.ts.map +1 -0
- package/dist/converters/hdf-to-oscal-sar/typescript/index.js +2 -0
- package/dist/converters/hdf-to-oscal-sar/typescript/index.js.map +1 -0
- package/dist/converters/hdf-to-xccdf/typescript/converter.d.ts +8 -0
- package/dist/converters/hdf-to-xccdf/typescript/converter.d.ts.map +1 -0
- package/dist/converters/hdf-to-xccdf/typescript/converter.js +186 -0
- package/dist/converters/hdf-to-xccdf/typescript/converter.js.map +1 -0
- package/dist/converters/hdf-to-xccdf/typescript/index.d.ts +2 -0
- package/dist/converters/hdf-to-xccdf/typescript/index.d.ts.map +1 -0
- package/dist/converters/hdf-to-xccdf/typescript/index.js +2 -0
- package/dist/converters/hdf-to-xccdf/typescript/index.js.map +1 -0
- package/dist/converters/hdf-to-xml/typescript/converter.d.ts +7 -0
- package/dist/converters/hdf-to-xml/typescript/converter.d.ts.map +1 -0
- package/dist/converters/hdf-to-xml/typescript/converter.js +140 -0
- package/dist/converters/hdf-to-xml/typescript/converter.js.map +1 -0
- package/dist/converters/hdf-to-xml/typescript/fingerprint.d.ts +10 -0
- package/dist/converters/hdf-to-xml/typescript/fingerprint.d.ts.map +1 -0
- package/dist/converters/hdf-to-xml/typescript/fingerprint.js +28 -0
- package/dist/converters/hdf-to-xml/typescript/fingerprint.js.map +1 -0
- package/dist/converters/hdf-to-xml/typescript/index.d.ts +2 -0
- package/dist/converters/hdf-to-xml/typescript/index.d.ts.map +1 -0
- package/dist/converters/hdf-to-xml/typescript/index.js +2 -0
- package/dist/converters/hdf-to-xml/typescript/index.js.map +1 -0
- package/dist/converters/hdf-v2-passthrough/typescript/fingerprint.d.ts +15 -0
- package/dist/converters/hdf-v2-passthrough/typescript/fingerprint.d.ts.map +1 -0
- package/dist/converters/hdf-v2-passthrough/typescript/fingerprint.js +33 -0
- package/dist/converters/hdf-v2-passthrough/typescript/fingerprint.js.map +1 -0
- package/dist/converters/ionchannel-to-hdf/typescript/converter.d.ts +2 -0
- package/dist/converters/ionchannel-to-hdf/typescript/converter.d.ts.map +1 -0
- package/dist/converters/ionchannel-to-hdf/typescript/converter.js +150 -0
- package/dist/converters/ionchannel-to-hdf/typescript/converter.js.map +1 -0
- package/dist/converters/ionchannel-to-hdf/typescript/fingerprint.d.ts +11 -0
- package/dist/converters/ionchannel-to-hdf/typescript/fingerprint.d.ts.map +1 -0
- package/dist/converters/ionchannel-to-hdf/typescript/fingerprint.js +41 -0
- package/dist/converters/ionchannel-to-hdf/typescript/fingerprint.js.map +1 -0
- package/dist/converters/ionchannel-to-hdf/typescript/index.d.ts +2 -0
- package/dist/converters/ionchannel-to-hdf/typescript/index.d.ts.map +1 -0
- package/dist/converters/ionchannel-to-hdf/typescript/index.js +2 -0
- package/dist/converters/ionchannel-to-hdf/typescript/index.js.map +1 -0
- package/dist/converters/jfrog-xray-to-hdf/typescript/converter.d.ts +8 -0
- package/dist/converters/jfrog-xray-to-hdf/typescript/converter.d.ts.map +1 -0
- package/dist/converters/jfrog-xray-to-hdf/typescript/converter.js +149 -0
- package/dist/converters/jfrog-xray-to-hdf/typescript/converter.js.map +1 -0
- package/dist/converters/jfrog-xray-to-hdf/typescript/fingerprint.d.ts +10 -0
- package/dist/converters/jfrog-xray-to-hdf/typescript/fingerprint.d.ts.map +1 -0
- package/dist/converters/jfrog-xray-to-hdf/typescript/fingerprint.js +28 -0
- package/dist/converters/jfrog-xray-to-hdf/typescript/fingerprint.js.map +1 -0
- package/dist/converters/jfrog-xray-to-hdf/typescript/index.d.ts +2 -0
- package/dist/converters/jfrog-xray-to-hdf/typescript/index.d.ts.map +1 -0
- package/dist/converters/jfrog-xray-to-hdf/typescript/index.js +2 -0
- package/dist/converters/jfrog-xray-to-hdf/typescript/index.js.map +1 -0
- package/dist/converters/junit-to-hdf/typescript/converter.d.ts +5 -0
- package/dist/converters/junit-to-hdf/typescript/converter.d.ts.map +1 -0
- package/dist/converters/junit-to-hdf/typescript/converter.js +142 -0
- package/dist/converters/junit-to-hdf/typescript/converter.js.map +1 -0
- package/dist/converters/junit-to-hdf/typescript/fingerprint.d.ts +9 -0
- package/dist/converters/junit-to-hdf/typescript/fingerprint.d.ts.map +1 -0
- package/dist/converters/junit-to-hdf/typescript/fingerprint.js +28 -0
- package/dist/converters/junit-to-hdf/typescript/fingerprint.js.map +1 -0
- package/dist/converters/junit-to-hdf/typescript/index.d.ts +2 -0
- package/dist/converters/junit-to-hdf/typescript/index.d.ts.map +1 -0
- package/dist/converters/junit-to-hdf/typescript/index.js +2 -0
- package/dist/converters/junit-to-hdf/typescript/index.js.map +1 -0
- package/dist/converters/legacyhdf-to-hdf/typescript/converter.d.ts +232 -0
- package/dist/converters/legacyhdf-to-hdf/typescript/converter.d.ts.map +1 -0
- package/dist/converters/legacyhdf-to-hdf/typescript/converter.js +418 -0
- package/dist/converters/legacyhdf-to-hdf/typescript/converter.js.map +1 -0
- package/dist/converters/legacyhdf-to-hdf/typescript/fingerprint.d.ts +17 -0
- package/dist/converters/legacyhdf-to-hdf/typescript/fingerprint.d.ts.map +1 -0
- package/dist/converters/legacyhdf-to-hdf/typescript/fingerprint.js +49 -0
- package/dist/converters/legacyhdf-to-hdf/typescript/fingerprint.js.map +1 -0
- package/dist/converters/legacyhdf-to-hdf/typescript/index.d.ts +8 -0
- package/dist/converters/legacyhdf-to-hdf/typescript/index.d.ts.map +1 -0
- package/dist/converters/legacyhdf-to-hdf/typescript/index.js +8 -0
- package/dist/converters/legacyhdf-to-hdf/typescript/index.js.map +1 -0
- package/dist/converters/msft-defender-cloud-to-hdf/typescript/converter.d.ts +8 -0
- package/dist/converters/msft-defender-cloud-to-hdf/typescript/converter.d.ts.map +1 -0
- package/dist/converters/msft-defender-cloud-to-hdf/typescript/converter.js +153 -0
- package/dist/converters/msft-defender-cloud-to-hdf/typescript/converter.js.map +1 -0
- package/dist/converters/msft-defender-cloud-to-hdf/typescript/fingerprint.d.ts +11 -0
- package/dist/converters/msft-defender-cloud-to-hdf/typescript/fingerprint.d.ts.map +1 -0
- package/dist/converters/msft-defender-cloud-to-hdf/typescript/fingerprint.js +37 -0
- package/dist/converters/msft-defender-cloud-to-hdf/typescript/fingerprint.js.map +1 -0
- package/dist/converters/msft-defender-cloud-to-hdf/typescript/index.d.ts +2 -0
- package/dist/converters/msft-defender-cloud-to-hdf/typescript/index.d.ts.map +1 -0
- package/dist/converters/msft-defender-cloud-to-hdf/typescript/index.js +2 -0
- package/dist/converters/msft-defender-cloud-to-hdf/typescript/index.js.map +1 -0
- package/dist/converters/msft-defender-devops-to-hdf/typescript/converter.d.ts +7 -0
- package/dist/converters/msft-defender-devops-to-hdf/typescript/converter.d.ts.map +1 -0
- package/dist/converters/msft-defender-devops-to-hdf/typescript/converter.js +126 -0
- package/dist/converters/msft-defender-devops-to-hdf/typescript/converter.js.map +1 -0
- package/dist/converters/msft-defender-devops-to-hdf/typescript/fingerprint.d.ts +13 -0
- package/dist/converters/msft-defender-devops-to-hdf/typescript/fingerprint.d.ts.map +1 -0
- package/dist/converters/msft-defender-devops-to-hdf/typescript/fingerprint.js +62 -0
- package/dist/converters/msft-defender-devops-to-hdf/typescript/fingerprint.js.map +1 -0
- package/dist/converters/msft-defender-devops-to-hdf/typescript/index.d.ts +2 -0
- package/dist/converters/msft-defender-devops-to-hdf/typescript/index.d.ts.map +1 -0
- package/dist/converters/msft-defender-devops-to-hdf/typescript/index.js +2 -0
- package/dist/converters/msft-defender-devops-to-hdf/typescript/index.js.map +1 -0
- package/dist/converters/msft-defender-endpoint-to-hdf/typescript/converter.d.ts +9 -0
- package/dist/converters/msft-defender-endpoint-to-hdf/typescript/converter.d.ts.map +1 -0
- package/dist/converters/msft-defender-endpoint-to-hdf/typescript/converter.js +194 -0
- package/dist/converters/msft-defender-endpoint-to-hdf/typescript/converter.js.map +1 -0
- package/dist/converters/msft-defender-endpoint-to-hdf/typescript/fingerprint.d.ts +11 -0
- package/dist/converters/msft-defender-endpoint-to-hdf/typescript/fingerprint.d.ts.map +1 -0
- package/dist/converters/msft-defender-endpoint-to-hdf/typescript/fingerprint.js +39 -0
- package/dist/converters/msft-defender-endpoint-to-hdf/typescript/fingerprint.js.map +1 -0
- package/dist/converters/msft-defender-endpoint-to-hdf/typescript/index.d.ts +2 -0
- package/dist/converters/msft-defender-endpoint-to-hdf/typescript/index.d.ts.map +1 -0
- package/dist/converters/msft-defender-endpoint-to-hdf/typescript/index.js +2 -0
- package/dist/converters/msft-defender-endpoint-to-hdf/typescript/index.js.map +1 -0
- package/dist/converters/msft-secure-score-to-hdf/typescript/converter.d.ts +11 -0
- package/dist/converters/msft-secure-score-to-hdf/typescript/converter.d.ts.map +1 -0
- package/dist/converters/msft-secure-score-to-hdf/typescript/converter.js +160 -0
- package/dist/converters/msft-secure-score-to-hdf/typescript/converter.js.map +1 -0
- package/dist/converters/msft-secure-score-to-hdf/typescript/fingerprint.d.ts +11 -0
- package/dist/converters/msft-secure-score-to-hdf/typescript/fingerprint.d.ts.map +1 -0
- package/dist/converters/msft-secure-score-to-hdf/typescript/fingerprint.js +41 -0
- package/dist/converters/msft-secure-score-to-hdf/typescript/fingerprint.js.map +1 -0
- package/dist/converters/msft-secure-score-to-hdf/typescript/index.d.ts +2 -0
- package/dist/converters/msft-secure-score-to-hdf/typescript/index.d.ts.map +1 -0
- package/dist/converters/msft-secure-score-to-hdf/typescript/index.js +2 -0
- package/dist/converters/msft-secure-score-to-hdf/typescript/index.js.map +1 -0
- package/dist/converters/nessus-to-hdf/typescript/converter.d.ts +6 -0
- package/dist/converters/nessus-to-hdf/typescript/converter.d.ts.map +1 -0
- package/dist/converters/nessus-to-hdf/typescript/converter.js +329 -0
- package/dist/converters/nessus-to-hdf/typescript/converter.js.map +1 -0
- package/dist/converters/nessus-to-hdf/typescript/fingerprint.d.ts +9 -0
- package/dist/converters/nessus-to-hdf/typescript/fingerprint.d.ts.map +1 -0
- package/dist/converters/nessus-to-hdf/typescript/fingerprint.js +34 -0
- package/dist/converters/nessus-to-hdf/typescript/fingerprint.js.map +1 -0
- package/dist/converters/nessus-to-hdf/typescript/index.d.ts +2 -0
- package/dist/converters/nessus-to-hdf/typescript/index.d.ts.map +1 -0
- package/dist/converters/nessus-to-hdf/typescript/index.js +2 -0
- package/dist/converters/nessus-to-hdf/typescript/index.js.map +1 -0
- package/dist/converters/netsparker-to-hdf/typescript/converter.d.ts +9 -0
- package/dist/converters/netsparker-to-hdf/typescript/converter.d.ts.map +1 -0
- package/dist/converters/netsparker-to-hdf/typescript/converter.js +211 -0
- package/dist/converters/netsparker-to-hdf/typescript/converter.js.map +1 -0
- package/dist/converters/netsparker-to-hdf/typescript/fingerprint.d.ts +10 -0
- package/dist/converters/netsparker-to-hdf/typescript/fingerprint.d.ts.map +1 -0
- package/dist/converters/netsparker-to-hdf/typescript/fingerprint.js +29 -0
- package/dist/converters/netsparker-to-hdf/typescript/fingerprint.js.map +1 -0
- package/dist/converters/netsparker-to-hdf/typescript/index.d.ts +2 -0
- package/dist/converters/netsparker-to-hdf/typescript/index.d.ts.map +1 -0
- package/dist/converters/netsparker-to-hdf/typescript/index.js +2 -0
- package/dist/converters/netsparker-to-hdf/typescript/index.js.map +1 -0
- package/dist/converters/neuvector-to-hdf/typescript/converter.d.ts +16 -0
- package/dist/converters/neuvector-to-hdf/typescript/converter.d.ts.map +1 -0
- package/dist/converters/neuvector-to-hdf/typescript/converter.js +148 -0
- package/dist/converters/neuvector-to-hdf/typescript/converter.js.map +1 -0
- package/dist/converters/neuvector-to-hdf/typescript/fingerprint.d.ts +11 -0
- package/dist/converters/neuvector-to-hdf/typescript/fingerprint.d.ts.map +1 -0
- package/dist/converters/neuvector-to-hdf/typescript/fingerprint.js +37 -0
- package/dist/converters/neuvector-to-hdf/typescript/fingerprint.js.map +1 -0
- package/dist/converters/neuvector-to-hdf/typescript/index.d.ts +2 -0
- package/dist/converters/neuvector-to-hdf/typescript/index.d.ts.map +1 -0
- package/dist/converters/neuvector-to-hdf/typescript/index.js +2 -0
- package/dist/converters/neuvector-to-hdf/typescript/index.js.map +1 -0
- package/dist/converters/nikto-to-hdf/typescript/converter.d.ts +2 -0
- package/dist/converters/nikto-to-hdf/typescript/converter.d.ts.map +1 -0
- package/dist/converters/nikto-to-hdf/typescript/converter.js +111 -0
- package/dist/converters/nikto-to-hdf/typescript/converter.js.map +1 -0
- package/dist/converters/nikto-to-hdf/typescript/fingerprint.d.ts +10 -0
- package/dist/converters/nikto-to-hdf/typescript/fingerprint.d.ts.map +1 -0
- package/dist/converters/nikto-to-hdf/typescript/fingerprint.js +33 -0
- package/dist/converters/nikto-to-hdf/typescript/fingerprint.js.map +1 -0
- package/dist/converters/nikto-to-hdf/typescript/index.d.ts +2 -0
- package/dist/converters/nikto-to-hdf/typescript/index.d.ts.map +1 -0
- package/dist/converters/nikto-to-hdf/typescript/index.js +2 -0
- package/dist/converters/nikto-to-hdf/typescript/index.js.map +1 -0
- package/dist/converters/oscal-to-hdf/typescript/converter-catalog.d.ts +20 -0
- package/dist/converters/oscal-to-hdf/typescript/converter-catalog.d.ts.map +1 -0
- package/dist/converters/oscal-to-hdf/typescript/converter-catalog.js +134 -0
- package/dist/converters/oscal-to-hdf/typescript/converter-catalog.js.map +1 -0
- package/dist/converters/oscal-to-hdf/typescript/converter-component.d.ts +13 -0
- package/dist/converters/oscal-to-hdf/typescript/converter-component.d.ts.map +1 -0
- package/dist/converters/oscal-to-hdf/typescript/converter-component.js +92 -0
- package/dist/converters/oscal-to-hdf/typescript/converter-component.js.map +1 -0
- package/dist/converters/oscal-to-hdf/typescript/converter-poam.d.ts +13 -0
- package/dist/converters/oscal-to-hdf/typescript/converter-poam.d.ts.map +1 -0
- package/dist/converters/oscal-to-hdf/typescript/converter-poam.js +196 -0
- package/dist/converters/oscal-to-hdf/typescript/converter-poam.js.map +1 -0
- package/dist/converters/oscal-to-hdf/typescript/converter-profile.d.ts +26 -0
- package/dist/converters/oscal-to-hdf/typescript/converter-profile.d.ts.map +1 -0
- package/dist/converters/oscal-to-hdf/typescript/converter-profile.js +239 -0
- package/dist/converters/oscal-to-hdf/typescript/converter-profile.js.map +1 -0
- package/dist/converters/oscal-to-hdf/typescript/converter-sap.d.ts +13 -0
- package/dist/converters/oscal-to-hdf/typescript/converter-sap.d.ts.map +1 -0
- package/dist/converters/oscal-to-hdf/typescript/converter-sap.js +196 -0
- package/dist/converters/oscal-to-hdf/typescript/converter-sap.js.map +1 -0
- package/dist/converters/oscal-to-hdf/typescript/converter-sar.d.ts +13 -0
- package/dist/converters/oscal-to-hdf/typescript/converter-sar.d.ts.map +1 -0
- package/dist/converters/oscal-to-hdf/typescript/converter-sar.js +270 -0
- package/dist/converters/oscal-to-hdf/typescript/converter-sar.js.map +1 -0
- package/dist/converters/oscal-to-hdf/typescript/converter-ssp.d.ts +13 -0
- package/dist/converters/oscal-to-hdf/typescript/converter-ssp.d.ts.map +1 -0
- package/dist/converters/oscal-to-hdf/typescript/converter-ssp.js +246 -0
- package/dist/converters/oscal-to-hdf/typescript/converter-ssp.js.map +1 -0
- package/dist/converters/oscal-to-hdf/typescript/detect.d.ts +15 -0
- package/dist/converters/oscal-to-hdf/typescript/detect.d.ts.map +1 -0
- package/dist/converters/oscal-to-hdf/typescript/detect.js +33 -0
- package/dist/converters/oscal-to-hdf/typescript/detect.js.map +1 -0
- package/dist/converters/oscal-to-hdf/typescript/fingerprint.d.ts +12 -0
- package/dist/converters/oscal-to-hdf/typescript/fingerprint.d.ts.map +1 -0
- package/dist/converters/oscal-to-hdf/typescript/fingerprint.js +57 -0
- package/dist/converters/oscal-to-hdf/typescript/fingerprint.js.map +1 -0
- package/dist/converters/oscal-to-hdf/typescript/index.d.ts +9 -0
- package/dist/converters/oscal-to-hdf/typescript/index.d.ts.map +1 -0
- package/dist/converters/oscal-to-hdf/typescript/index.js +9 -0
- package/dist/converters/oscal-to-hdf/typescript/index.js.map +1 -0
- package/dist/converters/oscal-to-hdf/typescript/shared.d.ts +85 -0
- package/dist/converters/oscal-to-hdf/typescript/shared.d.ts.map +1 -0
- package/dist/converters/oscal-to-hdf/typescript/shared.js +251 -0
- package/dist/converters/oscal-to-hdf/typescript/shared.js.map +1 -0
- package/dist/converters/oscal-to-hdf/typescript/types.d.ts +5372 -0
- package/dist/converters/oscal-to-hdf/typescript/types.d.ts.map +1 -0
- package/dist/converters/oscal-to-hdf/typescript/types.js +2340 -0
- package/dist/converters/oscal-to-hdf/typescript/types.js.map +1 -0
- package/dist/converters/prisma-to-hdf/typescript/converter.d.ts +16 -0
- package/dist/converters/prisma-to-hdf/typescript/converter.d.ts.map +1 -0
- package/dist/converters/prisma-to-hdf/typescript/converter.js +197 -0
- package/dist/converters/prisma-to-hdf/typescript/converter.js.map +1 -0
- package/dist/converters/prisma-to-hdf/typescript/fingerprint.d.ts +10 -0
- package/dist/converters/prisma-to-hdf/typescript/fingerprint.d.ts.map +1 -0
- package/dist/converters/prisma-to-hdf/typescript/fingerprint.js +39 -0
- package/dist/converters/prisma-to-hdf/typescript/fingerprint.js.map +1 -0
- package/dist/converters/prisma-to-hdf/typescript/index.d.ts +2 -0
- package/dist/converters/prisma-to-hdf/typescript/index.d.ts.map +1 -0
- package/dist/converters/prisma-to-hdf/typescript/index.js +2 -0
- package/dist/converters/prisma-to-hdf/typescript/index.js.map +1 -0
- package/dist/converters/sarif-to-hdf/typescript/converter.d.ts +2 -0
- package/dist/converters/sarif-to-hdf/typescript/converter.d.ts.map +1 -0
- package/dist/converters/sarif-to-hdf/typescript/converter.js +406 -0
- package/dist/converters/sarif-to-hdf/typescript/converter.js.map +1 -0
- package/dist/converters/sarif-to-hdf/typescript/fingerprint.d.ts +10 -0
- package/dist/converters/sarif-to-hdf/typescript/fingerprint.d.ts.map +1 -0
- package/dist/converters/sarif-to-hdf/typescript/fingerprint.js +34 -0
- package/dist/converters/sarif-to-hdf/typescript/fingerprint.js.map +1 -0
- package/dist/converters/sarif-to-hdf/typescript/index.d.ts +2 -0
- package/dist/converters/sarif-to-hdf/typescript/index.d.ts.map +1 -0
- package/dist/converters/sarif-to-hdf/typescript/index.js +2 -0
- package/dist/converters/sarif-to-hdf/typescript/index.js.map +1 -0
- package/dist/converters/scoutsuite-to-hdf/typescript/converter.d.ts +9 -0
- package/dist/converters/scoutsuite-to-hdf/typescript/converter.d.ts.map +1 -0
- package/dist/converters/scoutsuite-to-hdf/typescript/converter.js +173 -0
- package/dist/converters/scoutsuite-to-hdf/typescript/converter.js.map +1 -0
- package/dist/converters/scoutsuite-to-hdf/typescript/fingerprint.d.ts +10 -0
- package/dist/converters/scoutsuite-to-hdf/typescript/fingerprint.d.ts.map +1 -0
- package/dist/converters/scoutsuite-to-hdf/typescript/fingerprint.js +29 -0
- package/dist/converters/scoutsuite-to-hdf/typescript/fingerprint.js.map +1 -0
- package/dist/converters/scoutsuite-to-hdf/typescript/index.d.ts +2 -0
- package/dist/converters/scoutsuite-to-hdf/typescript/index.d.ts.map +1 -0
- package/dist/converters/scoutsuite-to-hdf/typescript/index.js +2 -0
- package/dist/converters/scoutsuite-to-hdf/typescript/index.js.map +1 -0
- package/dist/converters/snyk-to-hdf/typescript/converter.d.ts +11 -0
- package/dist/converters/snyk-to-hdf/typescript/converter.d.ts.map +1 -0
- package/dist/converters/snyk-to-hdf/typescript/converter.js +131 -0
- package/dist/converters/snyk-to-hdf/typescript/converter.js.map +1 -0
- package/dist/converters/snyk-to-hdf/typescript/fingerprint.d.ts +12 -0
- package/dist/converters/snyk-to-hdf/typescript/fingerprint.d.ts.map +1 -0
- package/dist/converters/snyk-to-hdf/typescript/fingerprint.js +44 -0
- package/dist/converters/snyk-to-hdf/typescript/fingerprint.js.map +1 -0
- package/dist/converters/snyk-to-hdf/typescript/index.d.ts +2 -0
- package/dist/converters/snyk-to-hdf/typescript/index.d.ts.map +1 -0
- package/dist/converters/snyk-to-hdf/typescript/index.js +2 -0
- package/dist/converters/snyk-to-hdf/typescript/index.js.map +1 -0
- package/dist/converters/sonarqube-to-hdf/typescript/converter.d.ts +8 -0
- package/dist/converters/sonarqube-to-hdf/typescript/converter.d.ts.map +1 -0
- package/dist/converters/sonarqube-to-hdf/typescript/converter.js +266 -0
- package/dist/converters/sonarqube-to-hdf/typescript/converter.js.map +1 -0
- package/dist/converters/sonarqube-to-hdf/typescript/fingerprint.d.ts +10 -0
- package/dist/converters/sonarqube-to-hdf/typescript/fingerprint.d.ts.map +1 -0
- package/dist/converters/sonarqube-to-hdf/typescript/fingerprint.js +35 -0
- package/dist/converters/sonarqube-to-hdf/typescript/fingerprint.js.map +1 -0
- package/dist/converters/sonarqube-to-hdf/typescript/index.d.ts +2 -0
- package/dist/converters/sonarqube-to-hdf/typescript/index.d.ts.map +1 -0
- package/dist/converters/sonarqube-to-hdf/typescript/index.js +2 -0
- package/dist/converters/sonarqube-to-hdf/typescript/index.js.map +1 -0
- package/dist/converters/splunk-to-hdf/typescript/converter.d.ts +13 -0
- package/dist/converters/splunk-to-hdf/typescript/converter.d.ts.map +1 -0
- package/dist/converters/splunk-to-hdf/typescript/converter.js +165 -0
- package/dist/converters/splunk-to-hdf/typescript/converter.js.map +1 -0
- package/dist/converters/splunk-to-hdf/typescript/fingerprint.d.ts +11 -0
- package/dist/converters/splunk-to-hdf/typescript/fingerprint.d.ts.map +1 -0
- package/dist/converters/splunk-to-hdf/typescript/fingerprint.js +36 -0
- package/dist/converters/splunk-to-hdf/typescript/fingerprint.js.map +1 -0
- package/dist/converters/splunk-to-hdf/typescript/index.d.ts +2 -0
- package/dist/converters/splunk-to-hdf/typescript/index.d.ts.map +1 -0
- package/dist/converters/splunk-to-hdf/typescript/index.js +2 -0
- package/dist/converters/splunk-to-hdf/typescript/index.js.map +1 -0
- package/dist/converters/trufflehog-to-hdf/typescript/converter.d.ts +9 -0
- package/dist/converters/trufflehog-to-hdf/typescript/converter.d.ts.map +1 -0
- package/dist/converters/trufflehog-to-hdf/typescript/converter.js +189 -0
- package/dist/converters/trufflehog-to-hdf/typescript/converter.js.map +1 -0
- package/dist/converters/trufflehog-to-hdf/typescript/fingerprint.d.ts +18 -0
- package/dist/converters/trufflehog-to-hdf/typescript/fingerprint.d.ts.map +1 -0
- package/dist/converters/trufflehog-to-hdf/typescript/fingerprint.js +50 -0
- package/dist/converters/trufflehog-to-hdf/typescript/fingerprint.js.map +1 -0
- package/dist/converters/trufflehog-to-hdf/typescript/index.d.ts +2 -0
- package/dist/converters/trufflehog-to-hdf/typescript/index.d.ts.map +1 -0
- package/dist/converters/trufflehog-to-hdf/typescript/index.js +2 -0
- package/dist/converters/trufflehog-to-hdf/typescript/index.js.map +1 -0
- package/dist/converters/twistlock-to-hdf/typescript/converter.d.ts +11 -0
- package/dist/converters/twistlock-to-hdf/typescript/converter.d.ts.map +1 -0
- package/dist/converters/twistlock-to-hdf/typescript/converter.js +153 -0
- package/dist/converters/twistlock-to-hdf/typescript/converter.js.map +1 -0
- package/dist/converters/twistlock-to-hdf/typescript/fingerprint.d.ts +18 -0
- package/dist/converters/twistlock-to-hdf/typescript/fingerprint.d.ts.map +1 -0
- package/dist/converters/twistlock-to-hdf/typescript/fingerprint.js +49 -0
- package/dist/converters/twistlock-to-hdf/typescript/fingerprint.js.map +1 -0
- package/dist/converters/twistlock-to-hdf/typescript/index.d.ts +2 -0
- package/dist/converters/twistlock-to-hdf/typescript/index.d.ts.map +1 -0
- package/dist/converters/twistlock-to-hdf/typescript/index.js +2 -0
- package/dist/converters/twistlock-to-hdf/typescript/index.js.map +1 -0
- package/dist/converters/veracode-to-hdf/typescript/converter.d.ts +20 -0
- package/dist/converters/veracode-to-hdf/typescript/converter.d.ts.map +1 -0
- package/dist/converters/veracode-to-hdf/typescript/converter.js +350 -0
- package/dist/converters/veracode-to-hdf/typescript/converter.js.map +1 -0
- package/dist/converters/veracode-to-hdf/typescript/fingerprint.d.ts +16 -0
- package/dist/converters/veracode-to-hdf/typescript/fingerprint.d.ts.map +1 -0
- package/dist/converters/veracode-to-hdf/typescript/fingerprint.js +35 -0
- package/dist/converters/veracode-to-hdf/typescript/fingerprint.js.map +1 -0
- package/dist/converters/veracode-to-hdf/typescript/index.d.ts +2 -0
- package/dist/converters/veracode-to-hdf/typescript/index.d.ts.map +1 -0
- package/dist/converters/veracode-to-hdf/typescript/index.js +2 -0
- package/dist/converters/veracode-to-hdf/typescript/index.js.map +1 -0
- package/dist/converters/xccdf-results-to-hdf/typescript/converter.d.ts +29 -0
- package/dist/converters/xccdf-results-to-hdf/typescript/converter.d.ts.map +1 -0
- package/dist/converters/xccdf-results-to-hdf/typescript/converter.js +604 -0
- package/dist/converters/xccdf-results-to-hdf/typescript/converter.js.map +1 -0
- package/dist/converters/xccdf-results-to-hdf/typescript/fingerprint.d.ts +12 -0
- package/dist/converters/xccdf-results-to-hdf/typescript/fingerprint.d.ts.map +1 -0
- package/dist/converters/xccdf-results-to-hdf/typescript/fingerprint.js +33 -0
- package/dist/converters/xccdf-results-to-hdf/typescript/fingerprint.js.map +1 -0
- package/dist/converters/xccdf-results-to-hdf/typescript/index.d.ts +2 -0
- package/dist/converters/xccdf-results-to-hdf/typescript/index.d.ts.map +1 -0
- package/dist/converters/xccdf-results-to-hdf/typescript/index.js +2 -0
- package/dist/converters/xccdf-results-to-hdf/typescript/index.js.map +1 -0
- package/dist/converters/zap-to-hdf/typescript/converter.d.ts +2 -0
- package/dist/converters/zap-to-hdf/typescript/converter.d.ts.map +1 -0
- package/dist/converters/zap-to-hdf/typescript/converter.js +237 -0
- package/dist/converters/zap-to-hdf/typescript/converter.js.map +1 -0
- package/dist/converters/zap-to-hdf/typescript/fingerprint.d.ts +11 -0
- package/dist/converters/zap-to-hdf/typescript/fingerprint.d.ts.map +1 -0
- package/dist/converters/zap-to-hdf/typescript/fingerprint.js +34 -0
- package/dist/converters/zap-to-hdf/typescript/fingerprint.js.map +1 -0
- package/dist/converters/zap-to-hdf/typescript/index.d.ts +2 -0
- package/dist/converters/zap-to-hdf/typescript/index.d.ts.map +1 -0
- package/dist/converters/zap-to-hdf/typescript/index.js +2 -0
- package/dist/converters/zap-to-hdf/typescript/index.js.map +1 -0
- package/dist/package.json +71 -0
- package/dist/shared/typescript/compare.d.ts +14 -0
- package/dist/shared/typescript/compare.d.ts.map +1 -0
- package/dist/shared/typescript/compare.js +91 -0
- package/dist/shared/typescript/compare.js.map +1 -0
- package/dist/shared/typescript/converter-contract.d.ts +20 -0
- package/dist/shared/typescript/converter-contract.d.ts.map +1 -0
- package/dist/shared/typescript/converter-contract.js +35 -0
- package/dist/shared/typescript/converter-contract.js.map +1 -0
- package/dist/shared/typescript/converterutil.d.ts +166 -0
- package/dist/shared/typescript/converterutil.d.ts.map +1 -0
- package/dist/shared/typescript/converterutil.js +230 -0
- package/dist/shared/typescript/converterutil.js.map +1 -0
- package/dist/shared/typescript/fingerprint.d.ts +17 -0
- package/dist/shared/typescript/fingerprint.d.ts.map +1 -0
- package/dist/shared/typescript/fingerprint.js +85 -0
- package/dist/shared/typescript/fingerprint.js.map +1 -0
- package/dist/shared/typescript/fptest.d.ts +40 -0
- package/dist/shared/typescript/fptest.d.ts.map +1 -0
- package/dist/shared/typescript/fptest.js +70 -0
- package/dist/shared/typescript/fptest.js.map +1 -0
- package/dist/shared/typescript/hdf-version.d.ts +20 -0
- package/dist/shared/typescript/hdf-version.d.ts.map +1 -0
- package/dist/shared/typescript/hdf-version.js +206 -0
- package/dist/shared/typescript/hdf-version.js.map +1 -0
- package/dist/shared/typescript/register-all.d.ts +12 -0
- package/dist/shared/typescript/register-all.d.ts.map +1 -0
- package/dist/shared/typescript/register-all.js +111 -0
- package/dist/shared/typescript/register-all.js.map +1 -0
- package/dist/shared/typescript/registry.d.ts +35 -0
- package/dist/shared/typescript/registry.d.ts.map +1 -0
- package/dist/shared/typescript/registry.js +27 -0
- package/dist/shared/typescript/registry.js.map +1 -0
- package/dist/shared/typescript/xml-utils.d.ts +16 -0
- package/dist/shared/typescript/xml-utils.d.ts.map +1 -0
- package/dist/shared/typescript/xml-utils.js +66 -0
- package/dist/shared/typescript/xml-utils.js.map +1 -0
- package/dist/src/detect.d.ts +15 -0
- package/dist/src/detect.d.ts.map +1 -0
- package/dist/src/detect.js +15 -0
- package/dist/src/detect.js.map +1 -0
- package/dist/src/index.d.ts +52 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +91 -0
- package/dist/src/index.js.map +1 -0
- package/package.json +60 -86
- package/LICENSE.md +0 -9
- package/lib/data/converters/csv2json.d.ts +0 -1
- package/lib/data/converters/csv2json.js +0 -36
- package/lib/data/converters/csv2json.js.map +0 -1
- package/lib/data/converters/csv2json.ts +0 -36
- package/lib/data/converters/xml2json.d.ts +0 -14
- package/lib/data/converters/xml2json.js +0 -65
- package/lib/data/converters/xml2json.js.map +0 -1
- package/lib/data/converters/xml2json.ts +0 -57
- package/lib/index.d.ts +0 -48
- package/lib/index.js +0 -79
- package/lib/index.js.map +0 -1
- package/lib/package.json +0 -97
- package/lib/src/anchore-grype-mapper.d.ts +0 -11
- package/lib/src/anchore-grype-mapper.js +0 -172
- package/lib/src/anchore-grype-mapper.js.map +0 -1
- package/lib/src/asff-mapper/asff-mapper.d.ts +0 -111
- package/lib/src/asff-mapper/asff-mapper.js +0 -512
- package/lib/src/asff-mapper/asff-mapper.js.map +0 -1
- package/lib/src/asff-mapper/case-cms-inspec.d.ts +0 -1
- package/lib/src/asff-mapper/case-cms-inspec.js +0 -74
- package/lib/src/asff-mapper/case-cms-inspec.js.map +0 -1
- package/lib/src/asff-mapper/case-firewall-manager.d.ts +0 -1
- package/lib/src/asff-mapper/case-firewall-manager.js +0 -47
- package/lib/src/asff-mapper/case-firewall-manager.js.map +0 -1
- package/lib/src/asff-mapper/case-guardduty.d.ts +0 -1
- package/lib/src/asff-mapper/case-guardduty.js +0 -38
- package/lib/src/asff-mapper/case-guardduty.js.map +0 -1
- package/lib/src/asff-mapper/case-inspector.d.ts +0 -1
- package/lib/src/asff-mapper/case-inspector.js +0 -38
- package/lib/src/asff-mapper/case-inspector.js.map +0 -1
- package/lib/src/asff-mapper/case-previously-hdf.d.ts +0 -1
- package/lib/src/asff-mapper/case-previously-hdf.js +0 -228
- package/lib/src/asff-mapper/case-previously-hdf.js.map +0 -1
- package/lib/src/asff-mapper/case-prowler.d.ts +0 -1
- package/lib/src/asff-mapper/case-prowler.js +0 -59
- package/lib/src/asff-mapper/case-prowler.js.map +0 -1
- package/lib/src/asff-mapper/case-security-hub.d.ts +0 -1
- package/lib/src/asff-mapper/case-security-hub.js +0 -158
- package/lib/src/asff-mapper/case-security-hub.js.map +0 -1
- package/lib/src/asff-mapper/case-trivy.d.ts +0 -1
- package/lib/src/asff-mapper/case-trivy.js +0 -92
- package/lib/src/asff-mapper/case-trivy.js.map +0 -1
- package/lib/src/aws-config-mapper.d.ts +0 -26
- package/lib/src/aws-config-mapper.js +0 -373
- package/lib/src/aws-config-mapper.js.map +0 -1
- package/lib/src/base-converter.d.ts +0 -39
- package/lib/src/base-converter.js +0 -315
- package/lib/src/base-converter.js.map +0 -1
- package/lib/src/burpsuite-mapper.d.ts +0 -9
- package/lib/src/burpsuite-mapper.js +0 -168
- package/lib/src/burpsuite-mapper.js.map +0 -1
- package/lib/src/ckl-mapper/checklist-jsonix-converter.d.ts +0 -114
- package/lib/src/ckl-mapper/checklist-jsonix-converter.js +0 -570
- package/lib/src/ckl-mapper/checklist-jsonix-converter.js.map +0 -1
- package/lib/src/ckl-mapper/checklist-mapper.d.ts +0 -22
- package/lib/src/ckl-mapper/checklist-mapper.js +0 -407
- package/lib/src/ckl-mapper/checklist-mapper.js.map +0 -1
- package/lib/src/ckl-mapper/checklist-metadata-utils.d.ts +0 -19
- package/lib/src/ckl-mapper/checklist-metadata-utils.js +0 -164
- package/lib/src/ckl-mapper/checklist-metadata-utils.js.map +0 -1
- package/lib/src/ckl-mapper/checklistJsonix.d.ts +0 -204
- package/lib/src/ckl-mapper/checklistJsonix.js +0 -131
- package/lib/src/ckl-mapper/checklistJsonix.js.map +0 -1
- package/lib/src/ckl-mapper/jsonixMapping.d.ts +0 -110
- package/lib/src/ckl-mapper/jsonixMapping.js +0 -586
- package/lib/src/ckl-mapper/jsonixMapping.js.map +0 -1
- package/lib/src/converters-from-hdf/asff/asff-types.d.ts +0 -89
- package/lib/src/converters-from-hdf/asff/asff-types.js +0 -3
- package/lib/src/converters-from-hdf/asff/asff-types.js.map +0 -1
- package/lib/src/converters-from-hdf/asff/reverse-asff-mapper.d.ts +0 -38
- package/lib/src/converters-from-hdf/asff/reverse-asff-mapper.js +0 -267
- package/lib/src/converters-from-hdf/asff/reverse-asff-mapper.js.map +0 -1
- package/lib/src/converters-from-hdf/asff/transformers.d.ts +0 -43
- package/lib/src/converters-from-hdf/asff/transformers.js +0 -483
- package/lib/src/converters-from-hdf/asff/transformers.js.map +0 -1
- package/lib/src/converters-from-hdf/caat/reverse-caat-mapper.d.ts +0 -31
- package/lib/src/converters-from-hdf/caat/reverse-caat-mapper.js +0 -201
- package/lib/src/converters-from-hdf/caat/reverse-caat-mapper.js.map +0 -1
- package/lib/src/converters-from-hdf/html/html-types.d.ts +0 -74
- package/lib/src/converters-from-hdf/html/html-types.js +0 -3
- package/lib/src/converters-from-hdf/html/html-types.js.map +0 -1
- package/lib/src/converters-from-hdf/html/reverse-html-mapper.d.ts +0 -41
- package/lib/src/converters-from-hdf/html/reverse-html-mapper.js +0 -394
- package/lib/src/converters-from-hdf/html/reverse-html-mapper.js.map +0 -1
- package/lib/src/converters-from-hdf/reverse-any-base-converter.d.ts +0 -10
- package/lib/src/converters-from-hdf/reverse-any-base-converter.js +0 -17
- package/lib/src/converters-from-hdf/reverse-any-base-converter.js.map +0 -1
- package/lib/src/converters-from-hdf/reverse-base-converter.d.ts +0 -25
- package/lib/src/converters-from-hdf/reverse-base-converter.js +0 -139
- package/lib/src/converters-from-hdf/reverse-base-converter.js.map +0 -1
- package/lib/src/converters-from-hdf/splunk/reverse-splunk-mapper.d.ts +0 -42
- package/lib/src/converters-from-hdf/splunk/reverse-splunk-mapper.js +0 -334
- package/lib/src/converters-from-hdf/splunk/reverse-splunk-mapper.js.map +0 -1
- package/lib/src/converters-from-hdf/xccdf/reverse-xccdf-mapper.d.ts +0 -36
- package/lib/src/converters-from-hdf/xccdf/reverse-xccdf-mapper.js +0 -262
- package/lib/src/converters-from-hdf/xccdf/reverse-xccdf-mapper.js.map +0 -1
- package/lib/src/conveyor-mapper.d.ts +0 -14
- package/lib/src/conveyor-mapper.js +0 -210
- package/lib/src/conveyor-mapper.js.map +0 -1
- package/lib/src/cyclonedx-sbom-mapper.d.ts +0 -34
- package/lib/src/cyclonedx-sbom-mapper.js +0 -449
- package/lib/src/cyclonedx-sbom-mapper.js.map +0 -1
- package/lib/src/dbprotect-mapper.d.ts +0 -9
- package/lib/src/dbprotect-mapper.js +0 -174
- package/lib/src/dbprotect-mapper.js.map +0 -1
- package/lib/src/dependency-track-mapper.d.ts +0 -9
- package/lib/src/dependency-track-mapper.js +0 -197
- package/lib/src/dependency-track-mapper.js.map +0 -1
- package/lib/src/fortify-mapper.d.ts +0 -10
- package/lib/src/fortify-mapper.js +0 -209
- package/lib/src/fortify-mapper.js.map +0 -1
- package/lib/src/gosec-mapper.d.ts +0 -9
- package/lib/src/gosec-mapper.js +0 -141
- package/lib/src/gosec-mapper.js.map +0 -1
- package/lib/src/ionchannel-mapper.d.ts +0 -26
- package/lib/src/ionchannel-mapper.js +0 -291
- package/lib/src/ionchannel-mapper.js.map +0 -1
- package/lib/src/jfrog-xray-mapper.d.ts +0 -9
- package/lib/src/jfrog-xray-mapper.js +0 -189
- package/lib/src/jfrog-xray-mapper.js.map +0 -1
- package/lib/src/jsonix-converter.d.ts +0 -7
- package/lib/src/jsonix-converter.js +0 -19
- package/lib/src/jsonix-converter.js.map +0 -1
- package/lib/src/jsonix-intermediate-converter.d.ts +0 -5
- package/lib/src/jsonix-intermediate-converter.js +0 -8
- package/lib/src/jsonix-intermediate-converter.js.map +0 -1
- package/lib/src/mappings/AwsConfigMapping.d.ts +0 -6
- package/lib/src/mappings/AwsConfigMapping.js +0 -66
- package/lib/src/mappings/AwsConfigMapping.js.map +0 -1
- package/lib/src/mappings/AwsConfigMappingData.d.ts +0 -6
- package/lib/src/mappings/AwsConfigMappingData.js +0 -642
- package/lib/src/mappings/AwsConfigMappingData.js.map +0 -1
- package/lib/src/mappings/CciNistMapping.d.ts +0 -55
- package/lib/src/mappings/CciNistMapping.js +0 -123
- package/lib/src/mappings/CciNistMapping.js.map +0 -1
- package/lib/src/mappings/CciNistMappingData.d.ts +0 -5100
- package/lib/src/mappings/CciNistMappingData.js +0 -5104
- package/lib/src/mappings/CciNistMappingData.js.map +0 -1
- package/lib/src/mappings/CciNistMappingItem.d.ts +0 -5
- package/lib/src/mappings/CciNistMappingItem.js +0 -11
- package/lib/src/mappings/CciNistMappingItem.js.map +0 -1
- package/lib/src/mappings/CweNistMapping.d.ts +0 -13
- package/lib/src/mappings/CweNistMapping.js +0 -48
- package/lib/src/mappings/CweNistMapping.js.map +0 -1
- package/lib/src/mappings/CweNistMappingData.d.ts +0 -7
- package/lib/src/mappings/CweNistMappingData.js +0 -1420
- package/lib/src/mappings/CweNistMappingData.js.map +0 -1
- package/lib/src/mappings/CweNistMappingItem.d.ts +0 -9
- package/lib/src/mappings/CweNistMappingItem.js +0 -34
- package/lib/src/mappings/CweNistMappingItem.js.map +0 -1
- package/lib/src/mappings/NessusPluginNistMappingData.d.ts +0 -9
- package/lib/src/mappings/NessusPluginNistMappingData.js +0 -436
- package/lib/src/mappings/NessusPluginNistMappingData.js.map +0 -1
- package/lib/src/mappings/NessusPluginsNistMapping.d.ts +0 -11
- package/lib/src/mappings/NessusPluginsNistMapping.js +0 -38
- package/lib/src/mappings/NessusPluginsNistMapping.js.map +0 -1
- package/lib/src/mappings/NessusPluginsNistMappingItem.d.ts +0 -7
- package/lib/src/mappings/NessusPluginsNistMappingItem.js +0 -27
- package/lib/src/mappings/NessusPluginsNistMappingItem.js.map +0 -1
- package/lib/src/mappings/NiktoNistMapping.d.ts +0 -9
- package/lib/src/mappings/NiktoNistMapping.js +0 -22
- package/lib/src/mappings/NiktoNistMapping.js.map +0 -1
- package/lib/src/mappings/NiktoNistMappingData.d.ts +0 -8943
- package/lib/src/mappings/NiktoNistMappingData.js +0 -8947
- package/lib/src/mappings/NiktoNistMappingData.js.map +0 -1
- package/lib/src/mappings/NiktoNistMappingItem.d.ts +0 -8
- package/lib/src/mappings/NiktoNistMappingItem.js +0 -28
- package/lib/src/mappings/NiktoNistMappingItem.js.map +0 -1
- package/lib/src/mappings/NistCciMappingData.d.ts +0 -1
- package/lib/src/mappings/NistCciMappingData.js +0 -27
- package/lib/src/mappings/NistCciMappingData.js.map +0 -1
- package/lib/src/mappings/OwaspNistMapping.d.ts +0 -13
- package/lib/src/mappings/OwaspNistMapping.js +0 -46
- package/lib/src/mappings/OwaspNistMapping.js.map +0 -1
- package/lib/src/mappings/OwaspNistMappingData.d.ts +0 -7
- package/lib/src/mappings/OwaspNistMappingData.js +0 -76
- package/lib/src/mappings/OwaspNistMappingData.js.map +0 -1
- package/lib/src/mappings/OwaspNistMappingItem.d.ts +0 -9
- package/lib/src/mappings/OwaspNistMappingItem.js +0 -34
- package/lib/src/mappings/OwaspNistMappingItem.js.map +0 -1
- package/lib/src/mappings/ScoutsuiteNistMapping.d.ts +0 -10
- package/lib/src/mappings/ScoutsuiteNistMapping.js +0 -30
- package/lib/src/mappings/ScoutsuiteNistMapping.js.map +0 -1
- package/lib/src/mappings/ScoutsuiteNistMappingData.d.ts +0 -4
- package/lib/src/mappings/ScoutsuiteNistMappingData.js +0 -562
- package/lib/src/mappings/ScoutsuiteNistMappingData.js.map +0 -1
- package/lib/src/mappings/ScoutsuiteNistMappingItem.d.ts +0 -6
- package/lib/src/mappings/ScoutsuiteNistMappingItem.js +0 -21
- package/lib/src/mappings/ScoutsuiteNistMappingItem.js.map +0 -1
- package/lib/src/msft-secure-score-mapper.d.ts +0 -33
- package/lib/src/msft-secure-score-mapper.js +0 -254
- package/lib/src/msft-secure-score-mapper.js.map +0 -1
- package/lib/src/nessus-mapper.d.ts +0 -16
- package/lib/src/nessus-mapper.js +0 -353
- package/lib/src/nessus-mapper.js.map +0 -1
- package/lib/src/netsparker-mapper.d.ts +0 -9
- package/lib/src/netsparker-mapper.js +0 -260
- package/lib/src/netsparker-mapper.js.map +0 -1
- package/lib/src/neuvector-mapper.d.ts +0 -13
- package/lib/src/neuvector-mapper.js +0 -167
- package/lib/src/neuvector-mapper.js.map +0 -1
- package/lib/src/nikto-mapper.d.ts +0 -9
- package/lib/src/nikto-mapper.js +0 -122
- package/lib/src/nikto-mapper.js.map +0 -1
- package/lib/src/prisma-mapper.d.ts +0 -24
- package/lib/src/prisma-mapper.js +0 -201
- package/lib/src/prisma-mapper.js.map +0 -1
- package/lib/src/sarif-mapper.d.ts +0 -9
- package/lib/src/sarif-mapper.js +0 -179
- package/lib/src/sarif-mapper.js.map +0 -1
- package/lib/src/scoutsuite-mapper.d.ts +0 -9
- package/lib/src/scoutsuite-mapper.js +0 -291
- package/lib/src/scoutsuite-mapper.js.map +0 -1
- package/lib/src/snyk-mapper.d.ts +0 -14
- package/lib/src/snyk-mapper.js +0 -185
- package/lib/src/snyk-mapper.js.map +0 -1
- package/lib/src/sonarqube-mapper.d.ts +0 -263
- package/lib/src/sonarqube-mapper.js +0 -572
- package/lib/src/sonarqube-mapper.js.map +0 -1
- package/lib/src/splunk-mapper.d.ts +0 -48
- package/lib/src/splunk-mapper.js +0 -260
- package/lib/src/splunk-mapper.js.map +0 -1
- package/lib/src/trufflehog-mapper.d.ts +0 -15
- package/lib/src/trufflehog-mapper.js +0 -112
- package/lib/src/trufflehog-mapper.js.map +0 -1
- package/lib/src/twistlock-mapper.d.ts +0 -15
- package/lib/src/twistlock-mapper.js +0 -184
- package/lib/src/twistlock-mapper.js.map +0 -1
- package/lib/src/utils/CCI_List.d.ts +0 -1
- package/lib/src/utils/CCI_List.js +0 -56259
- package/lib/src/utils/CCI_List.js.map +0 -1
- package/lib/src/utils/attestations.d.ts +0 -11
- package/lib/src/utils/attestations.js +0 -219
- package/lib/src/utils/attestations.js.map +0 -1
- package/lib/src/utils/compliance.d.ts +0 -3
- package/lib/src/utils/compliance.js +0 -27
- package/lib/src/utils/compliance.js.map +0 -1
- package/lib/src/utils/fingerprinting.d.ts +0 -33
- package/lib/src/utils/fingerprinting.js +0 -203
- package/lib/src/utils/fingerprinting.js.map +0 -1
- package/lib/src/utils/global.d.ts +0 -14
- package/lib/src/utils/global.js +0 -92
- package/lib/src/utils/global.js.map +0 -1
- package/lib/src/utils/parseJson.d.ts +0 -5
- package/lib/src/utils/parseJson.js +0 -13
- package/lib/src/utils/parseJson.js.map +0 -1
- package/lib/src/utils/result.d.ts +0 -7
- package/lib/src/utils/result.js +0 -3
- package/lib/src/utils/result.js.map +0 -1
- package/lib/src/utils/splunk-tools.d.ts +0 -5
- package/lib/src/utils/splunk-tools.js +0 -96
- package/lib/src/utils/splunk-tools.js.map +0 -1
- package/lib/src/veracode-mapper.d.ts +0 -9
- package/lib/src/veracode-mapper.js +0 -448
- package/lib/src/veracode-mapper.js.map +0 -1
- package/lib/src/xccdf-results-mapper.d.ts +0 -9
- package/lib/src/xccdf-results-mapper.js +0 -474
- package/lib/src/xccdf-results-mapper.js.map +0 -1
- package/lib/src/zap-mapper.d.ts +0 -10
- package/lib/src/zap-mapper.js +0 -209
- package/lib/src/zap-mapper.js.map +0 -1
- package/lib/types/neuvector-types.d.ts +0 -104
- package/lib/types/neuvector-types.js +0 -3
- package/lib/types/neuvector-types.js.map +0 -1
- package/lib/types/splunk-config-types.d.ts +0 -13
- package/lib/types/splunk-config-types.js +0 -3
- package/lib/types/splunk-config-types.js.map +0 -1
- package/lib/types/splunk-control-types.d.ts +0 -43
- package/lib/types/splunk-control-types.js +0 -3
- package/lib/types/splunk-control-types.js.map +0 -1
- package/lib/types/splunk-profile-types.d.ts +0 -53
- package/lib/types/splunk-profile-types.js +0 -3
- package/lib/types/splunk-profile-types.js.map +0 -1
- package/lib/types/splunk-report-types.d.ts +0 -20
- package/lib/types/splunk-report-types.js +0 -3
- package/lib/types/splunk-report-types.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CCI_List.js","sourceRoot":"","sources":["../../../src/utils/CCI_List.ts"],"names":[],"mappings":";;;AAAa,QAAA,QAAQ,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YA87tDZ,CAAC"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { ExecJSON } from 'inspecjs';
|
|
2
|
-
import { AttestationData, ControlAttestationStatus } from 'inspecjs/src/generated_parsers/v_1_0/exec-json';
|
|
3
|
-
import moment from 'moment';
|
|
4
|
-
export type Attestation = Omit<AttestationData, 'status'> & {
|
|
5
|
-
status: `${ControlAttestationStatus}`;
|
|
6
|
-
};
|
|
7
|
-
export declare function advanceDate(date: moment.Moment, frequency: string): moment.Moment;
|
|
8
|
-
export declare function createAttestationMessage(attestation: Attestation, expired: boolean): string;
|
|
9
|
-
export declare function convertAttestationToSegment(attestation: Attestation): ExecJSON.ControlResult;
|
|
10
|
-
export declare function addAttestationToHDF(hdf: ExecJSON.Execution, attestations: Attestation[]): ExecJSON.Execution;
|
|
11
|
-
export declare function parseXLSXAttestations(attestationXLSX: Uint8Array): Promise<Attestation[]>;
|
|
@@ -1,219 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
-
};
|
|
28
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
exports.parseXLSXAttestations = exports.addAttestationToHDF = exports.convertAttestationToSegment = exports.createAttestationMessage = exports.advanceDate = void 0;
|
|
30
|
-
const XLSX = __importStar(require("@e965/xlsx"));
|
|
31
|
-
const inspecjs_1 = require("inspecjs");
|
|
32
|
-
const _ = __importStar(require("lodash"));
|
|
33
|
-
const moment_1 = __importDefault(require("moment"));
|
|
34
|
-
function advanceDate(date, frequency) {
|
|
35
|
-
switch (frequency) {
|
|
36
|
-
case 'annually':
|
|
37
|
-
date.add(1, 'year');
|
|
38
|
-
break;
|
|
39
|
-
case 'semiannually':
|
|
40
|
-
date.add(6, 'months');
|
|
41
|
-
break;
|
|
42
|
-
case 'quarterly':
|
|
43
|
-
date.add(3, 'months');
|
|
44
|
-
break;
|
|
45
|
-
case 'monthly':
|
|
46
|
-
date.add(1, 'month');
|
|
47
|
-
break;
|
|
48
|
-
case 'every2weeks':
|
|
49
|
-
date.add(2, 'weeks');
|
|
50
|
-
break;
|
|
51
|
-
case 'fortnightly':
|
|
52
|
-
date.add(2, 'weeks');
|
|
53
|
-
break;
|
|
54
|
-
case 'weekly':
|
|
55
|
-
date.add(1, 'week');
|
|
56
|
-
break;
|
|
57
|
-
case 'every3days':
|
|
58
|
-
date.add(3, 'day');
|
|
59
|
-
break;
|
|
60
|
-
case 'daily':
|
|
61
|
-
date.add(1, 'day');
|
|
62
|
-
break;
|
|
63
|
-
default: {
|
|
64
|
-
const re = /(\d{1,10}(?:.\d{0,10})?)(\s{0,10})([a-z])/;
|
|
65
|
-
const match = re.exec(frequency);
|
|
66
|
-
if (!match) {
|
|
67
|
-
throw new Error('Unknown date format: ' +
|
|
68
|
-
frequency +
|
|
69
|
-
'. Please use a number followed by d/w/m/y to indicate days, weeks, months, or years, e.g. 1d/2w/3m/1y/custom.');
|
|
70
|
-
}
|
|
71
|
-
const number = match[1];
|
|
72
|
-
const unit = match[3];
|
|
73
|
-
switch (unit) {
|
|
74
|
-
case 'd':
|
|
75
|
-
date.add(number, 'days');
|
|
76
|
-
break;
|
|
77
|
-
case 'w':
|
|
78
|
-
date.add(number, 'weeks');
|
|
79
|
-
break;
|
|
80
|
-
case 'm':
|
|
81
|
-
date.add(number, 'months');
|
|
82
|
-
break;
|
|
83
|
-
case 'y':
|
|
84
|
-
date.add(number, 'years');
|
|
85
|
-
break;
|
|
86
|
-
}
|
|
87
|
-
break;
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
return date;
|
|
91
|
-
}
|
|
92
|
-
exports.advanceDate = advanceDate;
|
|
93
|
-
function createAttestationMessage(attestation, expired) {
|
|
94
|
-
let message = '';
|
|
95
|
-
if (expired) {
|
|
96
|
-
message += 'Expired Attestation:\n';
|
|
97
|
-
message += `Expired Status: ${attestation.status}\n`;
|
|
98
|
-
message += `Expired Explanation: ${attestation.explanation}\n\n`;
|
|
99
|
-
}
|
|
100
|
-
else {
|
|
101
|
-
message += 'Attestation:\n';
|
|
102
|
-
message += `Status: ${attestation.status}\n`;
|
|
103
|
-
message += `Explanation: ${attestation.explanation}\n\n`;
|
|
104
|
-
}
|
|
105
|
-
message += `Updated: ${attestation.updated}\n`;
|
|
106
|
-
message += `Updated By: ${attestation.updated_by}\n`;
|
|
107
|
-
message += `Frequency: ${attestation.frequency}`;
|
|
108
|
-
return message;
|
|
109
|
-
}
|
|
110
|
-
exports.createAttestationMessage = createAttestationMessage;
|
|
111
|
-
function convertAttestationToSegment(attestation) {
|
|
112
|
-
const expirationDate = advanceDate((0, moment_1.default)(attestation.updated), attestation.frequency);
|
|
113
|
-
if (expirationDate.isBefore(new Date())) {
|
|
114
|
-
console.log(`Warning: Attestation Expired: ${attestation.control_id} (Expired at ${expirationDate.toString()})`);
|
|
115
|
-
return {
|
|
116
|
-
code_desc: 'Manual verification status provided through attestation has expired',
|
|
117
|
-
status: inspecjs_1.ExecJSON.ControlResultStatus.Skipped,
|
|
118
|
-
message: createAttestationMessage(attestation, true),
|
|
119
|
-
start_time: new Date().toISOString()
|
|
120
|
-
};
|
|
121
|
-
}
|
|
122
|
-
else {
|
|
123
|
-
return {
|
|
124
|
-
code_desc: 'Manually verified status provided through attestation',
|
|
125
|
-
status: attestation.status,
|
|
126
|
-
message: createAttestationMessage(attestation, false),
|
|
127
|
-
start_time: new Date().toISOString()
|
|
128
|
-
};
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
exports.convertAttestationToSegment = convertAttestationToSegment;
|
|
132
|
-
function addAttestationToHDF(hdf, attestations) {
|
|
133
|
-
for (const attestation of attestations) {
|
|
134
|
-
let found_control = false;
|
|
135
|
-
for (const profile of hdf.profiles) {
|
|
136
|
-
for (const control of profile.controls) {
|
|
137
|
-
if (attestationCanBeAdded(attestation, control)) {
|
|
138
|
-
found_control = true;
|
|
139
|
-
if (['passed', 'failed'].includes(attestation.status)) {
|
|
140
|
-
control.attestation_data =
|
|
141
|
-
attestation;
|
|
142
|
-
control.results.push(convertAttestationToSegment(attestation));
|
|
143
|
-
}
|
|
144
|
-
else {
|
|
145
|
-
console.error(`Invalid attestation status for Control ${control.id}: ${attestation.status} - Status must be passed or failed. To make this control 'not applicable', use a waiver.`);
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
if (!found_control) {
|
|
151
|
-
console.error(`Attestation cannot be added for control ${attestation.control_id}. Skipping attestation.`);
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
return hdf;
|
|
155
|
-
}
|
|
156
|
-
exports.addAttestationToHDF = addAttestationToHDF;
|
|
157
|
-
async function parseXLSXAttestations(attestationXLSX) {
|
|
158
|
-
return new Promise((resolve) => {
|
|
159
|
-
const workbook = XLSX.read(attestationXLSX, {
|
|
160
|
-
cellDates: true
|
|
161
|
-
});
|
|
162
|
-
const sheet = workbook.Sheets['attestations'];
|
|
163
|
-
const data = XLSX.utils.sheet_to_json(sheet);
|
|
164
|
-
const attestations = data.map((attestation) => {
|
|
165
|
-
const lowerAttestation = _.mapKeys(attestation, (_v, k) => {
|
|
166
|
-
return k.toLowerCase().replace(/\s/g, '_');
|
|
167
|
-
});
|
|
168
|
-
return {
|
|
169
|
-
control_id: getFirstPath(lowerAttestation, [
|
|
170
|
-
'control_id',
|
|
171
|
-
'id',
|
|
172
|
-
'control'
|
|
173
|
-
]),
|
|
174
|
-
explanation: getFirstPath(lowerAttestation, ['explanation', 'explain']),
|
|
175
|
-
frequency: getFirstPath(lowerAttestation, ['frequency']),
|
|
176
|
-
status: getFirstPath(lowerAttestation, ['status']),
|
|
177
|
-
updated: getFirstPath(lowerAttestation, ['updated', 'updated_at']),
|
|
178
|
-
updated_by: getFirstPath(lowerAttestation, ['updated_by'])
|
|
179
|
-
};
|
|
180
|
-
});
|
|
181
|
-
resolve(attestations);
|
|
182
|
-
});
|
|
183
|
-
}
|
|
184
|
-
exports.parseXLSXAttestations = parseXLSXAttestations;
|
|
185
|
-
function attestationCanBeAdded(attestation, control) {
|
|
186
|
-
if (attestation.control_id.toLowerCase() !== control.id.toLowerCase()) {
|
|
187
|
-
return false;
|
|
188
|
-
}
|
|
189
|
-
if (control.results.length === 0) {
|
|
190
|
-
return false;
|
|
191
|
-
}
|
|
192
|
-
if (control.results[0].status === 'skipped') {
|
|
193
|
-
return true;
|
|
194
|
-
}
|
|
195
|
-
console.error('Invalid control selected: The control must have "skipped" status to be attested');
|
|
196
|
-
return false;
|
|
197
|
-
}
|
|
198
|
-
function getFirstPath(object, paths) {
|
|
199
|
-
const index = _.findIndex(paths, (p) => hasPath(object, p));
|
|
200
|
-
if (index === -1) {
|
|
201
|
-
throw new Error(`Attestation is missing one of these paths: ${paths.join(', ')}`);
|
|
202
|
-
}
|
|
203
|
-
const stringOrDate = _.get(object, paths[index]);
|
|
204
|
-
if (_.isString(stringOrDate)) {
|
|
205
|
-
return stringOrDate;
|
|
206
|
-
}
|
|
207
|
-
return `${stringOrDate.getFullYear()}-${String(stringOrDate.getMonth() + 1).padStart(2, '0')}-${String(stringOrDate.getDate()).padStart(2, '0')}`;
|
|
208
|
-
}
|
|
209
|
-
function hasPath(file, path) {
|
|
210
|
-
let pathArray;
|
|
211
|
-
if (typeof path === 'string') {
|
|
212
|
-
pathArray = [path];
|
|
213
|
-
}
|
|
214
|
-
else {
|
|
215
|
-
pathArray = path;
|
|
216
|
-
}
|
|
217
|
-
return _.some(pathArray, (p) => _.has(file, p));
|
|
218
|
-
}
|
|
219
|
-
//# sourceMappingURL=attestations.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"attestations.js","sourceRoot":"","sources":["../../../src/utils/attestations.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.translateCompliance = exports.formatCompliance = exports.MAX_DECIMAL_PRECISION = void 0;
|
|
4
|
-
exports.MAX_DECIMAL_PRECISION = 2;
|
|
5
|
-
function formatCompliance(rawCompliance, showAsPercentage = true, maxDisplayPrecision = exports.MAX_DECIMAL_PRECISION) {
|
|
6
|
-
let truncatedCompliance = Math.trunc(Math.pow(10, exports.MAX_DECIMAL_PRECISION) * rawCompliance) /
|
|
7
|
-
Math.pow(10, exports.MAX_DECIMAL_PRECISION);
|
|
8
|
-
if (truncatedCompliance < 0) {
|
|
9
|
-
truncatedCompliance = 0;
|
|
10
|
-
}
|
|
11
|
-
return `${truncatedCompliance.toFixed(maxDisplayPrecision)}${showAsPercentage ? '%' : ''}`;
|
|
12
|
-
}
|
|
13
|
-
exports.formatCompliance = formatCompliance;
|
|
14
|
-
function translateCompliance(rawCompliance) {
|
|
15
|
-
const compliance = Number.parseFloat(rawCompliance.slice(0, -1));
|
|
16
|
-
if (compliance >= 90) {
|
|
17
|
-
return 'high';
|
|
18
|
-
}
|
|
19
|
-
else if (compliance >= 60) {
|
|
20
|
-
return 'medium';
|
|
21
|
-
}
|
|
22
|
-
else {
|
|
23
|
-
return 'low';
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
exports.translateCompliance = translateCompliance;
|
|
27
|
-
//# sourceMappingURL=compliance.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"compliance.js","sourceRoot":"","sources":["../../../src/utils/compliance.ts"],"names":[],"mappings":";;;AAEa,QAAA,qBAAqB,GAAG,CAAC,CAAC;AAIvC,SAAgB,gBAAgB,CAC9B,aAAqB,EACrB,gBAAgB,GAAG,IAAI,EACvB,mBAAmB,GAAG,6BAAqB;IAE3C,IAAI,mBAAmB,GACrB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,6BAAqB,CAAC,GAAG,aAAa,CAAC;QAC/D,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,6BAAqB,CAAC,CAAC;IAGtC,IAAI,mBAAmB,GAAG,CAAC,EAAE;QAC3B,mBAAmB,GAAG,CAAC,CAAC;KACzB;IAGD,OAAO,GAAG,mBAAmB,CAAC,OAAO,CAAC,mBAAmB,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AAC7F,CAAC;AAhBD,4CAgBC;AAKD,SAAgB,mBAAmB,CAAC,aAAqB;IACvD,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAEjE,IAAI,UAAU,IAAI,EAAE,EAAE;QACpB,OAAO,MAAM,CAAC;KACf;SAAM,IAAI,UAAU,IAAI,EAAE,EAAE;QAC3B,OAAO,QAAQ,CAAC;KACjB;SAAM;QACL,OAAO,KAAK,CAAC;KACd;AACH,CAAC;AAVD,kDAUC"}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
export declare enum INPUT_TYPES {
|
|
2
|
-
ASFF = "asff",
|
|
3
|
-
BURP = "burp",
|
|
4
|
-
CHECKLIST = "checklist",
|
|
5
|
-
CONVEYOR = "conveyor",
|
|
6
|
-
DEPENDENCY_TRACK = "dependencyTrack",
|
|
7
|
-
FORTIFY = "fortify",
|
|
8
|
-
GOSEC = "gosec",
|
|
9
|
-
GRYPE = "grype",
|
|
10
|
-
IONCHANNEL = "ionchannel",
|
|
11
|
-
JFROG = "jfrog",
|
|
12
|
-
MSFT_SEC_SCORE = "msft_secure_score",
|
|
13
|
-
NIKTO = "nikto",
|
|
14
|
-
SARIF = "sarif",
|
|
15
|
-
CYCLONEDX_SBOM = "cyclonedx_sbom",
|
|
16
|
-
SNYK = "snyk",
|
|
17
|
-
TRUFFLEHOG = "trufflehog",
|
|
18
|
-
TWISTLOCK = "twistlock",
|
|
19
|
-
ZAP = "zap",
|
|
20
|
-
NESSUS = "nessus",
|
|
21
|
-
NEUVECTOR = "neuvector",
|
|
22
|
-
XCCDF = "xccdf",
|
|
23
|
-
NETSPARKER = "netsparker",
|
|
24
|
-
SCOUTSUITE = "scoutsuite",
|
|
25
|
-
DB_PROTECT = "dbProtect",
|
|
26
|
-
PRISMA = "prisma",
|
|
27
|
-
VERACODE = "veracode",
|
|
28
|
-
NOT_FOUND = ""
|
|
29
|
-
}
|
|
30
|
-
export declare function fingerprint(guessOptions: {
|
|
31
|
-
data: string;
|
|
32
|
-
filename: string;
|
|
33
|
-
}): INPUT_TYPES;
|
|
@@ -1,203 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.fingerprint = exports.INPUT_TYPES = void 0;
|
|
27
|
-
const _ = __importStar(require("lodash"));
|
|
28
|
-
var INPUT_TYPES;
|
|
29
|
-
(function (INPUT_TYPES) {
|
|
30
|
-
INPUT_TYPES["ASFF"] = "asff";
|
|
31
|
-
INPUT_TYPES["BURP"] = "burp";
|
|
32
|
-
INPUT_TYPES["CHECKLIST"] = "checklist";
|
|
33
|
-
INPUT_TYPES["CONVEYOR"] = "conveyor";
|
|
34
|
-
INPUT_TYPES["DEPENDENCY_TRACK"] = "dependencyTrack";
|
|
35
|
-
INPUT_TYPES["FORTIFY"] = "fortify";
|
|
36
|
-
INPUT_TYPES["GOSEC"] = "gosec";
|
|
37
|
-
INPUT_TYPES["GRYPE"] = "grype";
|
|
38
|
-
INPUT_TYPES["IONCHANNEL"] = "ionchannel";
|
|
39
|
-
INPUT_TYPES["JFROG"] = "jfrog";
|
|
40
|
-
INPUT_TYPES["MSFT_SEC_SCORE"] = "msft_secure_score";
|
|
41
|
-
INPUT_TYPES["NIKTO"] = "nikto";
|
|
42
|
-
INPUT_TYPES["SARIF"] = "sarif";
|
|
43
|
-
INPUT_TYPES["CYCLONEDX_SBOM"] = "cyclonedx_sbom";
|
|
44
|
-
INPUT_TYPES["SNYK"] = "snyk";
|
|
45
|
-
INPUT_TYPES["TRUFFLEHOG"] = "trufflehog";
|
|
46
|
-
INPUT_TYPES["TWISTLOCK"] = "twistlock";
|
|
47
|
-
INPUT_TYPES["ZAP"] = "zap";
|
|
48
|
-
INPUT_TYPES["NESSUS"] = "nessus";
|
|
49
|
-
INPUT_TYPES["NEUVECTOR"] = "neuvector";
|
|
50
|
-
INPUT_TYPES["XCCDF"] = "xccdf";
|
|
51
|
-
INPUT_TYPES["NETSPARKER"] = "netsparker";
|
|
52
|
-
INPUT_TYPES["SCOUTSUITE"] = "scoutsuite";
|
|
53
|
-
INPUT_TYPES["DB_PROTECT"] = "dbProtect";
|
|
54
|
-
INPUT_TYPES["PRISMA"] = "prisma";
|
|
55
|
-
INPUT_TYPES["VERACODE"] = "veracode";
|
|
56
|
-
INPUT_TYPES["NOT_FOUND"] = "";
|
|
57
|
-
})(INPUT_TYPES = exports.INPUT_TYPES || (exports.INPUT_TYPES = {}));
|
|
58
|
-
const fileTypeFingerprints = {
|
|
59
|
-
[INPUT_TYPES.ASFF]: ['Findings', 'AwsAccountId', 'ProductArn'],
|
|
60
|
-
[INPUT_TYPES.CONVEYOR]: ['api_error_message', 'api_response'],
|
|
61
|
-
[INPUT_TYPES.CYCLONEDX_SBOM]: ['bomFormat', 'metadata', 'specVersion'],
|
|
62
|
-
[INPUT_TYPES.DEPENDENCY_TRACK]: ['version', 'meta', 'project', 'findings'],
|
|
63
|
-
[INPUT_TYPES.FORTIFY]: ['FVDL', 'FVDL.EngineData.EngineVersion', 'FVDL.UUID'],
|
|
64
|
-
[INPUT_TYPES.GOSEC]: ['Golang errors', 'Issues'],
|
|
65
|
-
[INPUT_TYPES.GRYPE]: [
|
|
66
|
-
'matches.vulnerability',
|
|
67
|
-
'matches.relatedVulnerabilities',
|
|
68
|
-
'matches.matchDetails',
|
|
69
|
-
'matches.artifact',
|
|
70
|
-
'distro',
|
|
71
|
-
'descriptor'
|
|
72
|
-
],
|
|
73
|
-
[INPUT_TYPES.IONCHANNEL]: [
|
|
74
|
-
'analysis_id',
|
|
75
|
-
'team_id',
|
|
76
|
-
'source',
|
|
77
|
-
'trigger_hash'
|
|
78
|
-
],
|
|
79
|
-
[INPUT_TYPES.JFROG]: ['total_count', 'data'],
|
|
80
|
-
[INPUT_TYPES.MSFT_SEC_SCORE]: ['secureScore', 'profiles'],
|
|
81
|
-
[INPUT_TYPES.NEUVECTOR]: [
|
|
82
|
-
'report.base_os',
|
|
83
|
-
'report.cvedb_create_time',
|
|
84
|
-
'report.cvedb_version',
|
|
85
|
-
'report.modules',
|
|
86
|
-
'report.repository',
|
|
87
|
-
'report.signature_data',
|
|
88
|
-
'report.vulnerabilities'
|
|
89
|
-
],
|
|
90
|
-
[INPUT_TYPES.NIKTO]: ['banner', 'host', 'ip', 'port', 'vulnerabilities'],
|
|
91
|
-
[INPUT_TYPES.SARIF]: ['$schema', 'version', 'runs'],
|
|
92
|
-
[INPUT_TYPES.SNYK]: [
|
|
93
|
-
'projectName',
|
|
94
|
-
'policy',
|
|
95
|
-
'summary',
|
|
96
|
-
'vulnerabilities',
|
|
97
|
-
'vulnerabilities[0].identifiers'
|
|
98
|
-
],
|
|
99
|
-
[INPUT_TYPES.TRUFFLEHOG]: [
|
|
100
|
-
'SourceName',
|
|
101
|
-
'DetectorType',
|
|
102
|
-
'DetectorName',
|
|
103
|
-
'DecoderName'
|
|
104
|
-
],
|
|
105
|
-
[INPUT_TYPES.TWISTLOCK]: [
|
|
106
|
-
'results[0].complianceDistribution',
|
|
107
|
-
'results[0].vulnerabilityDistribution',
|
|
108
|
-
'results[0].collections',
|
|
109
|
-
'results[0].digest',
|
|
110
|
-
'packages',
|
|
111
|
-
'complianceDistribution',
|
|
112
|
-
'vulnerabilityDistribution'
|
|
113
|
-
],
|
|
114
|
-
[INPUT_TYPES.ZAP]: ['@generated', '@version', 'site'],
|
|
115
|
-
[INPUT_TYPES.BURP]: [],
|
|
116
|
-
[INPUT_TYPES.CHECKLIST]: [],
|
|
117
|
-
[INPUT_TYPES.DB_PROTECT]: [],
|
|
118
|
-
[INPUT_TYPES.NESSUS]: [],
|
|
119
|
-
[INPUT_TYPES.NETSPARKER]: [],
|
|
120
|
-
[INPUT_TYPES.PRISMA]: [],
|
|
121
|
-
[INPUT_TYPES.SCOUTSUITE]: [],
|
|
122
|
-
[INPUT_TYPES.VERACODE]: [],
|
|
123
|
-
[INPUT_TYPES.XCCDF]: [],
|
|
124
|
-
[INPUT_TYPES.NOT_FOUND]: []
|
|
125
|
-
};
|
|
126
|
-
function fingerprint(guessOptions) {
|
|
127
|
-
try {
|
|
128
|
-
const parsed = JSON.parse(guessOptions.data);
|
|
129
|
-
const object = Array.isArray(parsed) ? parsed[0] : parsed;
|
|
130
|
-
const fingerprinted = Object.entries(fileTypeFingerprints).reduce((a, b) => {
|
|
131
|
-
return a[1].filter((value) => _.get(object, value)).length >
|
|
132
|
-
b[1].filter((value) => _.get(object, value)).length
|
|
133
|
-
? { ...a, count: a[1].filter((value) => _.get(object, value)).length }
|
|
134
|
-
: {
|
|
135
|
-
...b,
|
|
136
|
-
count: b[1].filter((value) => _.get(object, value)).length
|
|
137
|
-
};
|
|
138
|
-
});
|
|
139
|
-
const result = fingerprinted[0];
|
|
140
|
-
if (fingerprinted.count !== 0) {
|
|
141
|
-
return result;
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
catch {
|
|
145
|
-
const splitLines = guessOptions.data.trim().split('\n');
|
|
146
|
-
if (guessOptions.filename.toLowerCase().endsWith('.nessus')) {
|
|
147
|
-
return INPUT_TYPES.NESSUS;
|
|
148
|
-
}
|
|
149
|
-
else if (guessOptions.data.match(/xmlns.*http.*\/xccdf/) ||
|
|
150
|
-
guessOptions.filename.toLowerCase().indexOf('xccdf') !== -1) {
|
|
151
|
-
return INPUT_TYPES.XCCDF;
|
|
152
|
-
}
|
|
153
|
-
else if (guessOptions.data.match(/<netsparker-.*generated.*>/) ||
|
|
154
|
-
guessOptions.data.match(/<invicti-.*generated.*>/)) {
|
|
155
|
-
return INPUT_TYPES.NETSPARKER;
|
|
156
|
-
}
|
|
157
|
-
else if (guessOptions.filename.toLowerCase().endsWith('.fvdl')) {
|
|
158
|
-
return INPUT_TYPES.FORTIFY;
|
|
159
|
-
}
|
|
160
|
-
else if (guessOptions.data.indexOf('"AwsAccountId"') !== -1 &&
|
|
161
|
-
guessOptions.data.indexOf('"SchemaVersion"') !== -1) {
|
|
162
|
-
return INPUT_TYPES.ASFF;
|
|
163
|
-
}
|
|
164
|
-
else if (guessOptions.data.indexOf('issues burpVersion') !== -1) {
|
|
165
|
-
return INPUT_TYPES.BURP;
|
|
166
|
-
}
|
|
167
|
-
else if (guessOptions.data.indexOf('scoutsuite_results') !== -1) {
|
|
168
|
-
return INPUT_TYPES.SCOUTSUITE;
|
|
169
|
-
}
|
|
170
|
-
else if (guessOptions.data.indexOf('Policy') !== -1 &&
|
|
171
|
-
guessOptions.data.indexOf('Job Name') !== -1 &&
|
|
172
|
-
guessOptions.data.indexOf('Check ID') !== -1 &&
|
|
173
|
-
guessOptions.data.indexOf('Result Status')) {
|
|
174
|
-
return INPUT_TYPES.DB_PROTECT;
|
|
175
|
-
}
|
|
176
|
-
else if (splitLines[0].includes('Hostname') &&
|
|
177
|
-
splitLines[0].includes('Distro') &&
|
|
178
|
-
splitLines[0].includes('CVE ID') &&
|
|
179
|
-
splitLines[0].includes('Compliance ID') &&
|
|
180
|
-
splitLines[0].includes('Type') &&
|
|
181
|
-
splitLines[0].includes('Severity')) {
|
|
182
|
-
return INPUT_TYPES.PRISMA;
|
|
183
|
-
}
|
|
184
|
-
else if (splitLines[0].includes('SourceName') &&
|
|
185
|
-
splitLines[0].includes('DetectorType') &&
|
|
186
|
-
splitLines[0].includes('DetectorName') &&
|
|
187
|
-
splitLines[0].includes('DecoderName')) {
|
|
188
|
-
return INPUT_TYPES.TRUFFLEHOG;
|
|
189
|
-
}
|
|
190
|
-
else if (guessOptions.data.indexOf('veracode') !== -1 &&
|
|
191
|
-
guessOptions.data.indexOf('detailedreport') !== -1) {
|
|
192
|
-
return INPUT_TYPES.VERACODE;
|
|
193
|
-
}
|
|
194
|
-
else if (guessOptions.data.indexOf('<CHECKLIST>') !== -1 &&
|
|
195
|
-
guessOptions.data.indexOf('<STIGS>') !== -1 &&
|
|
196
|
-
guessOptions.data.indexOf('<STIG_INFO>') !== -1) {
|
|
197
|
-
return INPUT_TYPES.CHECKLIST;
|
|
198
|
-
}
|
|
199
|
-
}
|
|
200
|
-
return INPUT_TYPES.NOT_FOUND;
|
|
201
|
-
}
|
|
202
|
-
exports.fingerprint = fingerprint;
|
|
203
|
-
//# sourceMappingURL=fingerprinting.js.map
|