@fad-producto-portal/ng-fad-signature-fea 1.0.0-alpha.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 +24 -0
- package/assets/images/fad-signature-fea/document-approval-list/activeApprove.png +0 -0
- package/assets/images/fad-signature-fea/document-approval-list/activeReject.png +0 -0
- package/assets/images/fad-signature-fea/document-approval-list/inactiveApprove.png +0 -0
- package/assets/images/fad-signature-fea/document-approval-list/inactiveReject.png +0 -0
- package/assets/images/fad-signature-fea/generic-error-fea/error.svg +41 -0
- package/assets/images/fad-signature-fea/upload-e-signature/check-off.svg +20 -0
- package/assets/images/fad-signature-fea/upload-e-signature/check-on.svg +12 -0
- package/assets/images/fad-signature-fea/upload-e-signature/file.svg +1 -0
- package/assets/images/fad-signature-fea/upload-e-signature/upload.svg +1 -0
- package/esm2022/fad-producto-portal-ng-fad-signature-fea.mjs +5 -0
- package/esm2022/lib/components/document-approval-list/document-approval-list.component.mjs +237 -0
- package/esm2022/lib/components/generic-error-fea/generic-error-fea.component.mjs +28 -0
- package/esm2022/lib/components/upload-e-signature/upload-e-signature.component.mjs +252 -0
- package/esm2022/lib/components/validate-rfc/validate-rfc.component.mjs +91 -0
- package/esm2022/lib/components/validate-signature/validate-signature.component.mjs +76 -0
- package/esm2022/lib/constants/configuration/document-approval-list/document-approval-lis-tconfiguration.const.mjs +18 -0
- package/esm2022/lib/constants/configuration/document-approval-list/index.mjs +2 -0
- package/esm2022/lib/constants/configuration/generic-error-fea/configuration-generic-error-fea.const.mjs +15 -0
- package/esm2022/lib/constants/configuration/generic-error-fea/index.mjs +2 -0
- package/esm2022/lib/constants/configuration/index.mjs +6 -0
- package/esm2022/lib/constants/configuration/upload-e-signature/configuration-upload-e-signature.const.mjs +93 -0
- package/esm2022/lib/constants/configuration/upload-e-signature/index.mjs +2 -0
- package/esm2022/lib/constants/configuration/validate-rfc/configuration-validate-rfc.const.mjs +18 -0
- package/esm2022/lib/constants/configuration/validate-rfc/index.mjs +2 -0
- package/esm2022/lib/constants/configuration/validate-signature/index.mjs +2 -0
- package/esm2022/lib/constants/configuration/validate-signature/validate-signature.const.mjs +15 -0
- package/esm2022/lib/constants/errors/document-approval-list/document-approval-list-error-code.mjs +7 -0
- package/esm2022/lib/constants/errors/document-approval-list/document-approval-list-error-description.mjs +13 -0
- package/esm2022/lib/constants/errors/document-approval-list/index.mjs +3 -0
- package/esm2022/lib/constants/errors/generic-error-fea/generic-error-fea-error-code.mjs +4 -0
- package/esm2022/lib/constants/errors/generic-error-fea/generic-error-fea-error-description.mjs +7 -0
- package/esm2022/lib/constants/errors/generic-error-fea/index.mjs +3 -0
- package/esm2022/lib/constants/errors/index.mjs +6 -0
- package/esm2022/lib/constants/errors/upload-e-signature/index.mjs +3 -0
- package/esm2022/lib/constants/errors/upload-e-signature/upload-e-signature-error-code.mjs +13 -0
- package/esm2022/lib/constants/errors/upload-e-signature/upload-e-signature-error-description.mjs +25 -0
- package/esm2022/lib/constants/errors/validate-rfc/index.mjs +3 -0
- package/esm2022/lib/constants/errors/validate-rfc/validate-rfc-error-code.mjs +6 -0
- package/esm2022/lib/constants/errors/validate-rfc/validate-rfc-error-description.mjs +11 -0
- package/esm2022/lib/constants/errors/validate-signature/index.mjs +3 -0
- package/esm2022/lib/constants/errors/validate-signature/validate-signature-error-code.mjs +8 -0
- package/esm2022/lib/constants/errors/validate-signature/validate-signature-error-description.mjs +15 -0
- package/esm2022/lib/constants/index.mjs +3 -0
- package/esm2022/lib/models/components/document-approval-list/document-approval-fea.interface.mjs +2 -0
- package/esm2022/lib/models/components/document-approval-list/index.mjs +2 -0
- package/esm2022/lib/models/components/index.mjs +3 -0
- package/esm2022/lib/models/components/upload-e-signature/certificate.interface.mjs +2 -0
- package/esm2022/lib/models/components/upload-e-signature/index.mjs +3 -0
- package/esm2022/lib/models/components/upload-e-signature/upload-e-signature-complete.interface.mjs +2 -0
- package/esm2022/lib/models/configuration/document-approval-list/document-approval-list.interface.mjs +2 -0
- package/esm2022/lib/models/configuration/document-approval-list/index.mjs +2 -0
- package/esm2022/lib/models/configuration/generic-error-fea/generic-error-fea-configuration.interface.mjs +2 -0
- package/esm2022/lib/models/configuration/generic-error-fea/index.mjs +2 -0
- package/esm2022/lib/models/configuration/index.mjs +6 -0
- package/esm2022/lib/models/configuration/upload-e-signature/index.mjs +2 -0
- package/esm2022/lib/models/configuration/upload-e-signature/upload-e-signature-configuration.interface.mjs +2 -0
- package/esm2022/lib/models/configuration/validate-rfc/index.mjs +2 -0
- package/esm2022/lib/models/configuration/validate-rfc/validate-rfc-configuration.interface.mjs +2 -0
- package/esm2022/lib/models/configuration/validate-signature/index.mjs +2 -0
- package/esm2022/lib/models/configuration/validate-signature/validate-signature-configuration.interface.mjs +2 -0
- package/esm2022/lib/models/customization/index.mjs +3 -0
- package/esm2022/lib/models/customization/legends/document-approval-list/document-approval-list-legends.interface.mjs +2 -0
- package/esm2022/lib/models/customization/legends/document-approval-list/index.mjs +2 -0
- package/esm2022/lib/models/customization/legends/generic-error-fea/generic-error-fea-legends.interface.mjs +2 -0
- package/esm2022/lib/models/customization/legends/generic-error-fea/index.mjs +2 -0
- package/esm2022/lib/models/customization/legends/index.mjs +6 -0
- package/esm2022/lib/models/customization/legends/upload-e-signature/index.mjs +2 -0
- package/esm2022/lib/models/customization/legends/upload-e-signature/upload-e-signature-legends.interface.mjs +2 -0
- package/esm2022/lib/models/customization/legends/validate-rfc/index.mjs +2 -0
- package/esm2022/lib/models/customization/legends/validate-rfc/validate-rfc-legends.interface.mjs +2 -0
- package/esm2022/lib/models/customization/legends/validate-signature/index.mjs +2 -0
- package/esm2022/lib/models/customization/legends/validate-signature/validate-signature-legends.interface.mjs +2 -0
- package/esm2022/lib/models/customization/style/document-approval-list/document-approval-list-style.interface.mjs +2 -0
- package/esm2022/lib/models/customization/style/document-approval-list/index.mjs +2 -0
- package/esm2022/lib/models/customization/style/generic-error-fea/generic-error-fea-style.interface.mjs +2 -0
- package/esm2022/lib/models/customization/style/generic-error-fea/index.mjs +2 -0
- package/esm2022/lib/models/customization/style/index.mjs +6 -0
- package/esm2022/lib/models/customization/style/upload-e-signature/index.mjs +2 -0
- package/esm2022/lib/models/customization/style/upload-e-signature/upload-e-signature-style.interface.mjs +2 -0
- package/esm2022/lib/models/customization/style/validate-rfc/index.mjs +2 -0
- package/esm2022/lib/models/customization/style/validate-rfc/validate-rfc-style.interface.mjs +2 -0
- package/esm2022/lib/models/customization/style/validate-signature/index.mjs +2 -0
- package/esm2022/lib/models/customization/style/validate-signature/validate-signature-style.interface.mjs +2 -0
- package/esm2022/lib/models/index.mjs +6 -0
- package/esm2022/lib/models/path-dependencies/document-approval-list/document-approval-list-dependencies.interface.mjs +2 -0
- package/esm2022/lib/models/path-dependencies/document-approval-list/index.mjs +2 -0
- package/esm2022/lib/models/path-dependencies/generic-error-fea/generic-error-fea-dependencies.interface.mjs +2 -0
- package/esm2022/lib/models/path-dependencies/generic-error-fea/index.mjs +2 -0
- package/esm2022/lib/models/path-dependencies/index.mjs +6 -0
- package/esm2022/lib/models/path-dependencies/upload-e-signature/index.mjs +2 -0
- package/esm2022/lib/models/path-dependencies/upload-e-signature/upload-e-signature-dependencies.interface.mjs +2 -0
- package/esm2022/lib/models/path-dependencies/validate-rfc/index.mjs +2 -0
- package/esm2022/lib/models/path-dependencies/validate-rfc/validate-rfc-dependencies.interface.mjs +2 -0
- package/esm2022/lib/models/path-dependencies/validate-signature/index.mjs +2 -0
- package/esm2022/lib/models/path-dependencies/validate-signature/validate-signature-dependencies.interface.mjs +2 -0
- package/esm2022/lib/ng-fad-signature-fea.module.mjs +61 -0
- package/esm2022/public-api.mjs +15 -0
- package/fesm2022/fad-producto-portal-ng-fad-signature-fea.mjs +976 -0
- package/fesm2022/fad-producto-portal-ng-fad-signature-fea.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/components/document-approval-list/document-approval-list.component.d.ts +62 -0
- package/lib/components/generic-error-fea/generic-error-fea.component.d.ts +13 -0
- package/lib/components/upload-e-signature/upload-e-signature.component.d.ts +52 -0
- package/lib/components/validate-rfc/validate-rfc.component.d.ts +29 -0
- package/lib/components/validate-signature/validate-signature.component.d.ts +22 -0
- package/lib/constants/configuration/document-approval-list/document-approval-lis-tconfiguration.const.d.ts +2 -0
- package/lib/constants/configuration/document-approval-list/index.d.ts +1 -0
- package/lib/constants/configuration/generic-error-fea/configuration-generic-error-fea.const.d.ts +2 -0
- package/lib/constants/configuration/generic-error-fea/index.d.ts +1 -0
- package/lib/constants/configuration/index.d.ts +5 -0
- package/lib/constants/configuration/upload-e-signature/configuration-upload-e-signature.const.d.ts +2 -0
- package/lib/constants/configuration/upload-e-signature/index.d.ts +1 -0
- package/lib/constants/configuration/validate-rfc/configuration-validate-rfc.const.d.ts +2 -0
- package/lib/constants/configuration/validate-rfc/index.d.ts +1 -0
- package/lib/constants/configuration/validate-signature/index.d.ts +1 -0
- package/lib/constants/configuration/validate-signature/validate-signature.const.d.ts +2 -0
- package/lib/constants/errors/document-approval-list/document-approval-list-error-code.d.ts +5 -0
- package/lib/constants/errors/document-approval-list/document-approval-list-error-description.d.ts +2 -0
- package/lib/constants/errors/document-approval-list/index.d.ts +2 -0
- package/lib/constants/errors/generic-error-fea/generic-error-fea-error-code.d.ts +2 -0
- package/lib/constants/errors/generic-error-fea/generic-error-fea-error-description.d.ts +2 -0
- package/lib/constants/errors/generic-error-fea/index.d.ts +2 -0
- package/lib/constants/errors/index.d.ts +5 -0
- package/lib/constants/errors/upload-e-signature/index.d.ts +2 -0
- package/lib/constants/errors/upload-e-signature/upload-e-signature-error-code.d.ts +11 -0
- package/lib/constants/errors/upload-e-signature/upload-e-signature-error-description.d.ts +2 -0
- package/lib/constants/errors/validate-rfc/index.d.ts +2 -0
- package/lib/constants/errors/validate-rfc/validate-rfc-error-code.d.ts +4 -0
- package/lib/constants/errors/validate-rfc/validate-rfc-error-description.d.ts +2 -0
- package/lib/constants/errors/validate-signature/index.d.ts +2 -0
- package/lib/constants/errors/validate-signature/validate-signature-error-code.d.ts +6 -0
- package/lib/constants/errors/validate-signature/validate-signature-error-description.d.ts +2 -0
- package/lib/constants/index.d.ts +2 -0
- package/lib/models/components/document-approval-list/document-approval-fea.interface.d.ts +8 -0
- package/lib/models/components/document-approval-list/index.d.ts +1 -0
- package/lib/models/components/index.d.ts +2 -0
- package/lib/models/components/upload-e-signature/certificate.interface.d.ts +5 -0
- package/lib/models/components/upload-e-signature/index.d.ts +2 -0
- package/lib/models/components/upload-e-signature/upload-e-signature-complete.interface.d.ts +4 -0
- package/lib/models/configuration/document-approval-list/document-approval-list.interface.d.ts +8 -0
- package/lib/models/configuration/document-approval-list/index.d.ts +1 -0
- package/lib/models/configuration/generic-error-fea/generic-error-fea-configuration.interface.d.ts +5 -0
- package/lib/models/configuration/generic-error-fea/index.d.ts +1 -0
- package/lib/models/configuration/index.d.ts +5 -0
- package/lib/models/configuration/upload-e-signature/index.d.ts +1 -0
- package/lib/models/configuration/upload-e-signature/upload-e-signature-configuration.interface.d.ts +14 -0
- package/lib/models/configuration/validate-rfc/index.d.ts +1 -0
- package/lib/models/configuration/validate-rfc/validate-rfc-configuration.interface.d.ts +9 -0
- package/lib/models/configuration/validate-signature/index.d.ts +1 -0
- package/lib/models/configuration/validate-signature/validate-signature-configuration.interface.d.ts +9 -0
- package/lib/models/customization/index.d.ts +2 -0
- package/lib/models/customization/legends/document-approval-list/document-approval-list-legends.interface.d.ts +8 -0
- package/lib/models/customization/legends/document-approval-list/index.d.ts +1 -0
- package/lib/models/customization/legends/generic-error-fea/generic-error-fea-legends.interface.d.ts +5 -0
- package/lib/models/customization/legends/generic-error-fea/index.d.ts +1 -0
- package/lib/models/customization/legends/index.d.ts +5 -0
- package/lib/models/customization/legends/upload-e-signature/index.d.ts +1 -0
- package/lib/models/customization/legends/upload-e-signature/upload-e-signature-legends.interface.d.ts +54 -0
- package/lib/models/customization/legends/validate-rfc/index.d.ts +1 -0
- package/lib/models/customization/legends/validate-rfc/validate-rfc-legends.interface.d.ts +6 -0
- package/lib/models/customization/legends/validate-signature/index.d.ts +1 -0
- package/lib/models/customization/legends/validate-signature/validate-signature-legends.interface.d.ts +3 -0
- package/lib/models/customization/style/document-approval-list/document-approval-list-style.interface.d.ts +2 -0
- package/lib/models/customization/style/document-approval-list/index.d.ts +1 -0
- package/lib/models/customization/style/generic-error-fea/generic-error-fea-style.interface.d.ts +2 -0
- package/lib/models/customization/style/generic-error-fea/index.d.ts +1 -0
- package/lib/models/customization/style/index.d.ts +5 -0
- package/lib/models/customization/style/upload-e-signature/index.d.ts +1 -0
- package/lib/models/customization/style/upload-e-signature/upload-e-signature-style.interface.d.ts +22 -0
- package/lib/models/customization/style/validate-rfc/index.d.ts +1 -0
- package/lib/models/customization/style/validate-rfc/validate-rfc-style.interface.d.ts +2 -0
- package/lib/models/customization/style/validate-signature/index.d.ts +1 -0
- package/lib/models/customization/style/validate-signature/validate-signature-style.interface.d.ts +2 -0
- package/lib/models/index.d.ts +5 -0
- package/lib/models/path-dependencies/document-approval-list/document-approval-list-dependencies.interface.d.ts +9 -0
- package/lib/models/path-dependencies/document-approval-list/index.d.ts +1 -0
- package/lib/models/path-dependencies/generic-error-fea/generic-error-fea-dependencies.interface.d.ts +6 -0
- package/lib/models/path-dependencies/generic-error-fea/index.d.ts +1 -0
- package/lib/models/path-dependencies/index.d.ts +5 -0
- package/lib/models/path-dependencies/upload-e-signature/index.d.ts +1 -0
- package/lib/models/path-dependencies/upload-e-signature/upload-e-signature-dependencies.interface.d.ts +9 -0
- package/lib/models/path-dependencies/validate-rfc/index.d.ts +1 -0
- package/lib/models/path-dependencies/validate-rfc/validate-rfc-dependencies.interface.d.ts +4 -0
- package/lib/models/path-dependencies/validate-signature/index.d.ts +1 -0
- package/lib/models/path-dependencies/validate-signature/validate-signature-dependencies.interface.d.ts +4 -0
- package/lib/ng-fad-signature-fea.module.d.ts +16 -0
- package/package.json +31 -0
- package/public-api.d.ts +8 -0
package/README.md
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# NgFadSignatureFea
|
|
2
|
+
|
|
3
|
+
This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 16.2.0.
|
|
4
|
+
|
|
5
|
+
## Code scaffolding
|
|
6
|
+
|
|
7
|
+
Run `ng generate component component-name --project ng-fad-signature-fea` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project ng-fad-signature-fea`.
|
|
8
|
+
> Note: Don't forget to add `--project ng-fad-signature-fea` or else it will be added to the default project in your `angular.json` file.
|
|
9
|
+
|
|
10
|
+
## Build
|
|
11
|
+
|
|
12
|
+
Run `ng build ng-fad-signature-fea` to build the project. The build artifacts will be stored in the `dist/` directory.
|
|
13
|
+
|
|
14
|
+
## Publishing
|
|
15
|
+
|
|
16
|
+
After building your library with `ng build ng-fad-signature-fea`, go to the dist folder `cd dist/ng-fad-signature-fea` and run `npm publish`.
|
|
17
|
+
|
|
18
|
+
## Running unit tests
|
|
19
|
+
|
|
20
|
+
Run `ng test ng-fad-signature-fea` to execute the unit tests via [Karma](https://karma-runner.github.io).
|
|
21
|
+
|
|
22
|
+
## Further help
|
|
23
|
+
|
|
24
|
+
To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page.
|
|
Binary file
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<svg width="367px" height="173px" viewBox="0 0 367 173" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
|
3
|
+
<title>57B702BB-92AD-419C-A524-69AD2E32C9AF@1x</title>
|
|
4
|
+
<g id="Multidocumentos" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
|
5
|
+
<g id="Assets" transform="translate(-1020.000000, -362.000000)">
|
|
6
|
+
<g id="Group-2" transform="translate(1020.000000, 362.000000)">
|
|
7
|
+
<path d="M3.63637634,104.703494 L94.2611749,104.703494 C96.2694901,104.703494 97.8975512,103.084773 97.8975512,101.08798 C97.8975512,99.0911866 96.2694901,97.4724658 94.2611749,97.4724658 L3.63637634,97.4724658 C1.62806114,97.4724658 0,99.0911866 0,101.08798 C0,103.084773 1.62806114,104.703494 3.63637634,104.703494 Z" id="Path-30-Copy-2" fill="#F5F5F5" fill-rule="nonzero"></path>
|
|
8
|
+
<path d="M257.436376,112.988186 L348.061175,112.988186 C350.06949,112.988186 351.697551,111.369465 351.697551,109.372672 C351.697551,107.375879 350.06949,105.757158 348.061175,105.757158 L257.436376,105.757158 C255.428061,105.757158 253.8,107.375879 253.8,109.372672 C253.8,111.369465 255.428061,112.988186 257.436376,112.988186 Z" id="Path-30-Copy" fill="#F5F5F5" fill-rule="nonzero"></path>
|
|
9
|
+
<path d="M271.836376,69.6020181 L362.461175,69.6020181 C364.46949,69.6020181 366.097551,67.9832973 366.097551,65.9865041 C366.097551,63.9897109 364.46949,62.3709901 362.461175,62.3709901 L271.836376,62.3709901 C269.828061,62.3709901 268.2,63.9897109 268.2,65.9865041 C268.2,67.9832973 269.828061,69.6020181 271.836376,69.6020181 Z" id="Path-30-Copy-3" fill="#F5F5F5" fill-rule="nonzero"></path>
|
|
10
|
+
<path d="M63.4063959,61.8 L118.393604,61.8 C119.612163,61.8 120.6,60.1882251 120.6,58.2 C120.6,56.2117749 119.612163,54.6 118.393604,54.6 L63.4063959,54.6 C62.1878371,54.6 61.2,56.2117749 61.2,58.2 C61.2,60.1882251 62.1878371,61.8 63.4063959,61.8 Z" id="Path-30" fill="#F5F5F5" fill-rule="nonzero"></path>
|
|
11
|
+
<path d="M249.207559,20.4 L314.192441,20.4 C315.632556,20.4 316.8,18.7882251 316.8,16.8 C316.8,14.8117749 315.632556,13.2 314.192441,13.2 L249.207559,13.2 C247.767444,13.2 246.6,14.8117749 246.6,16.8 C246.6,18.7882251 247.767444,20.4 249.207559,20.4 Z" id="Path-30-Copy-4" fill="#F5F5F5" fill-rule="nonzero"></path>
|
|
12
|
+
<path d="M25.2363763,20.431028 L115.861175,20.431028 C117.86949,20.431028 119.497551,18.8123072 119.497551,16.815514 C119.497551,14.8187207 117.86949,13.2 115.861175,13.2 L25.2363763,13.2 C23.2280611,13.2 21.6,14.8187207 21.6,16.815514 C21.6,18.8123072 23.2280611,20.431028 25.2363763,20.431028 Z" id="Path-30-Copy-5" fill="#F5F5F5" fill-rule="nonzero"></path>
|
|
13
|
+
<g id="Group" transform="translate(119.800000, 0.000000)" stroke="#DADADA" stroke-width="1.8">
|
|
14
|
+
<g id="Group-11" transform="translate(63.499091, 86.095455) rotate(-270.000000) translate(-63.499091, -86.095455) translate(-22.500909, 22.595455)">
|
|
15
|
+
<rect id="Rectangle" x="1.40454545" y="1.81909091" width="169.2" height="124.2" rx="7.56"></rect>
|
|
16
|
+
</g>
|
|
17
|
+
</g>
|
|
18
|
+
<g id="Group-3" transform="translate(257.400000, 128.400000)">
|
|
19
|
+
<g id="Group-6" transform="translate(10.800000, 6.600000)" fill="#D8D8D8">
|
|
20
|
+
<path d="M26.5227242,26.264189 L27.6788759,33.4085779 L0,33.4085779 L1.64834101,26.264189 L26.5227242,26.264189 Z M23.8525587,13.404289 L24.76531,20.5486779 L2.91356588,20.5486779 L4.21488773,13.404289 L23.8525587,13.404289 Z M20.1255399,0.544388914 L21.8517441,7.68877783 L5.82713177,7.68877783 L7.43179808,0.544388914 L20.1255399,0.544388914 Z" id="Combined-Shape"></path>
|
|
21
|
+
</g>
|
|
22
|
+
<path d="M29.4751229,0.9 L40.2361581,42.3 L10.143976,42.3 L20.1701174,0.9 L29.4751229,0.9 Z" id="Rectangle" stroke="#DADADA" stroke-width="1.8"></path>
|
|
23
|
+
<line x1="0" y1="42.3" x2="50.7401367" y2="42.3" id="Path-18" stroke="#DADADA" stroke-width="1.8"></line>
|
|
24
|
+
</g>
|
|
25
|
+
<g id="Group-3-Copy" transform="translate(59.400000, 128.400000)">
|
|
26
|
+
<g id="Group-6" transform="translate(10.800000, 6.600000)" fill="#D8D8D8">
|
|
27
|
+
<path d="M26.5227242,26.264189 L27.6788759,33.4085779 L0,33.4085779 L1.64834101,26.264189 L26.5227242,26.264189 Z M23.8525587,13.404289 L24.76531,20.5486779 L2.91356588,20.5486779 L4.21488773,13.404289 L23.8525587,13.404289 Z M20.1255399,0.544388914 L21.8517441,7.68877783 L5.82713177,7.68877783 L7.43179808,0.544388914 L20.1255399,0.544388914 Z" id="Combined-Shape"></path>
|
|
28
|
+
</g>
|
|
29
|
+
<path d="M29.4751229,0.9 L40.2361581,42.3 L10.143976,42.3 L20.1701174,0.9 L29.4751229,0.9 Z" id="Rectangle" stroke="#DADADA" stroke-width="1.8"></path>
|
|
30
|
+
<line x1="0" y1="42.3" x2="50.7401367" y2="42.3" id="Path-18" stroke="#DADADA" stroke-width="1.8"></line>
|
|
31
|
+
</g>
|
|
32
|
+
<path d="M233.64,6 C237.815273,6 241.2,9.38472729 241.2,13.56 L241.2,158.64 C241.2,162.815273 237.815273,166.2 233.64,166.2 L131.76,166.2 C127.584727,166.2 124.2,162.815273 124.2,158.64 L124.2,13.56 C124.2,9.38472729 127.584727,6 131.76,6 L233.64,6 Z M184.5,67.2 C174.061818,67.2 165.6,75.6618182 165.6,86.1 C165.6,96.5381818 174.061818,105 184.5,105 C194.938182,105 203.4,96.5381818 203.4,86.1 C203.4,75.6618182 194.938182,67.2 184.5,67.2 Z" id="Combined-Shape" fill="#F5F5F5"></path>
|
|
33
|
+
<g id="Group-4" transform="translate(165.600000, 67.200000)"></g>
|
|
34
|
+
<g id="Group-4" transform="translate(165.600000, 67.200000)">
|
|
35
|
+
<circle id="Oval" fill="#AEAEAE" cx="18.9" cy="18.9" r="18.9"></circle>
|
|
36
|
+
<path d="M18.8994403,9.33362679 C19.8048055,9.33362679 20.5387489,10.0675703 20.5387489,10.9729354 C20.5387489,10.9819037 20.5386753,10.9908718 20.5385281,10.9998389 L20.3501712,22.4754363 C20.3371726,23.2673702 19.691481,23.9025507 18.8994403,23.9025507 C18.1073997,23.9025507 17.461708,23.2673702 17.4487095,22.4754363 L17.2603525,10.9998389 C17.2454941,10.0945957 17.9672936,9.34870596 18.8725368,9.33384757 C18.8815039,9.33370038 18.890472,9.33362679 18.8994403,9.33362679 Z M18.8919675,29.7376689 C17.8009373,29.7376689 16.9340914,28.8922184 16.9340914,27.7901133 C16.9340914,26.6880081 17.8009373,25.8425576 18.8919675,25.8425576 C20.0128889,25.8425576 20.8647892,26.6880081 20.8647892,27.7901133 C20.8647892,28.8922184 20.0128889,29.7376689 18.8919675,29.7376689 Z" id="!" fill="#FFFFFF" fill-rule="nonzero"></path>
|
|
37
|
+
</g>
|
|
38
|
+
</g>
|
|
39
|
+
</g>
|
|
40
|
+
</g>
|
|
41
|
+
</svg>
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<svg width="25px" height="25px" viewBox="0 0 25 25" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
|
3
|
+
<title>85D10348-4EC3-4F26-A37C-C2559DA5A38F@1x</title>
|
|
4
|
+
<defs>
|
|
5
|
+
<path d="M2.27272727,0 L22.7272727,0 C23.9824653,0 25,1.01753466 25,2.27272727 L25,22.7272727 C25,23.9824653 23.9824653,25 22.7272727,25 L2.27272727,25 C1.01753466,25 0,23.9824653 0,22.7272727 L0,2.27272727 C0,1.01753466 1.01753466,0 2.27272727,0 Z M2.27272727,1.70454545 C1.95892912,1.70454545 1.70454545,1.95892912 1.70454545,2.27272727 L1.70454545,22.7272727 C1.70454545,23.0410709 1.95892912,23.2954545 2.27272727,23.2954545 L22.7272727,23.2954545 C23.0410709,23.2954545 23.2954545,23.0410709 23.2954545,22.7272727 L23.2954545,2.27272727 C23.2954545,1.95892912 23.0410709,1.70454545 22.7272727,1.70454545 L2.27272727,1.70454545 Z" id="path-1"></path>
|
|
6
|
+
</defs>
|
|
7
|
+
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
|
8
|
+
<g id="Hoja-de-assets" transform="translate(-41, -486)">
|
|
9
|
+
<g id="check-/-cuadrado-/-off" transform="translate(41, 486)">
|
|
10
|
+
<mask id="mask-2" fill="white">
|
|
11
|
+
<use xlink:href="#path-1"></use>
|
|
12
|
+
</mask>
|
|
13
|
+
<use id="Rectangle" fill="var(--fad-portal-common-image-color)" fill-rule="nonzero" xlink:href="#path-1"></use>
|
|
14
|
+
<g id="color-/-rojo-/-1" mask="url(#mask-2)" fill="var(--fad-portal-common-image-color)">
|
|
15
|
+
<rect id="Rectangle" x="0" y="0" width="25" height="25"></rect>
|
|
16
|
+
</g>
|
|
17
|
+
</g>
|
|
18
|
+
</g>
|
|
19
|
+
</g>
|
|
20
|
+
</svg>
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<svg width="25px" height="25px" viewBox="0 0 25 25" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
|
3
|
+
<title>FC694A12-D705-4652-ADE3-F51A6224C25D@1x</title>
|
|
4
|
+
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
|
5
|
+
<g id="Hoja-de-assets" transform="translate(-79, -486)">
|
|
6
|
+
<g id="check-/-cuadrado-/-on" transform="translate(79, 486)">
|
|
7
|
+
<rect id="Rectangle" stroke="var(--fad-portal-common-image-color)" stroke-width="1.5" fill="var(--fad-portal-common-image-color)" x="0.75" y="0.75" width="23.5" height="23.5" rx="2"></rect>
|
|
8
|
+
<path d="M13.7492318,18.2623719 C13.2436573,18.5476571 13.0699962,19.1802402 13.3613491,19.6752858 C13.652702,20.1703314 14.2987393,20.3403758 14.8043139,20.0550906 L18.6388878,17.8913203 C19.1794491,17.5862929 19.3337932,16.8914594 18.9714586,16.3941374 L10.6302658,4.9454391 C10.2913826,4.48030522 9.6315783,4.37223758 9.15655163,4.70406326 C8.68152495,5.03588895 8.57115885,5.68195233 8.91004204,6.14708621 L16.5751192,16.6677824 L13.7492318,18.2623719 Z" id="Path-7" fill="#FFFFFF" fill-rule="nonzero" transform="translate(13.9408, 12.3525) rotate(-285) translate(-13.9408, -12.3525)"></path>
|
|
9
|
+
</g>
|
|
10
|
+
</g>
|
|
11
|
+
</g>
|
|
12
|
+
</svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<?xml version="1.0" ?><!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'><svg enable-background="new 0 0 48 48" height="48px" id="Layer_1" version="1.1" viewBox="0 0 48 48" width="48px" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><path clip-rule="evenodd" d="M37,47H11c-2.209,0-4-1.791-4-4V5c0-2.209,1.791-4,4-4h18.973 c0.002,0,0.005,0,0.007,0h0.02H30c0.32,0,0.593,0.161,0.776,0.395l9.829,9.829C40.84,11.407,41,11.68,41,12l0,0v0.021 c0,0.002,0,0.003,0,0.005V43C41,45.209,39.209,47,37,47z M31,4.381V11h6.619L31,4.381z M39,13h-9c-0.553,0-1-0.448-1-1V3H11 C9.896,3,9,3.896,9,5v38c0,1.104,0.896,2,2,2h26c1.104,0,2-0.896,2-2V13z M33,39H15c-0.553,0-1-0.447-1-1c0-0.552,0.447-1,1-1h18 c0.553,0,1,0.448,1,1C34,38.553,33.553,39,33,39z M33,31H15c-0.553,0-1-0.447-1-1c0-0.552,0.447-1,1-1h18c0.553,0,1,0.448,1,1 C34,30.553,33.553,31,33,31z M33,23H15c-0.553,0-1-0.447-1-1c0-0.552,0.447-1,1-1h18c0.553,0,1,0.448,1,1C34,22.553,33.553,23,33,23 z" fill-rule="evenodd"/></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<?xml version="1.0" ?><svg height="32px" version="1.1" viewBox="0 0 32 32" width="32px" xmlns="http://www.w3.org/2000/svg" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns" xmlns:xlink="http://www.w3.org/1999/xlink"><title/><desc/><defs/><g fill="none" fill-rule="evenodd" id="Page-1" stroke="none" stroke-width="1"><g fill="var(--fad-portal-common-legends-tertiary)" id="icon-130-cloud-upload"><path d="M16,16 L12.75,19.25 L12,18.5 L16.5,14 L21,18.5 L20.25,19.25 L17,16 L17,27 L16,27 L16,16 L16,16 Z M15,21 L8.00281647,21 C5.79793835,21 4,19.209139 4,17 C4,15.1046097 5.32460991,13.5117359 7.10100919,13.1021544 L7.10100919,13.1021544 C7.03467626,12.7448817 7,12.3764904 7,12 C7,8.68629134 9.68629134,6 13,6 C15.6154416,6 17.8400262,7.67345685 18.6614243,10.0080411 C19.435776,9.37781236 20.4237666,9 21.5,9 C23.8583427,9 25.7929639,10.814166 25.9844379,13.1230721 L25.9844379,13.1230721 C27.7144917,13.5630972 29,15.1320162 29,17 C29,19.2046438 27.207878,21 24.9971835,21 L18,21 L18,22 L25.0005601,22 C27.7616745,22 30,19.7558048 30,17 C30,14.9035809 28.7132907,13.1085075 26.8828633,12.3655101 L26.8828633,12.3655101 C26.3600217,9.87224935 24.1486546,8 21.5,8 C20.6371017,8 19.8206159,8.19871575 19.0938083,8.55288165 C17.8911816,6.43144875 15.6127573,5 13,5 C9.13400656,5 6,8.13400656 6,12 C6,12.1381509 6.00400207,12.275367 6.01189661,12.4115388 L6.01189661,12.4115388 C4.23965876,13.1816085 3,14.9491311 3,17 C3,19.7614237 5.23249418,22 7.99943992,22 L15,22 L15,21 L15,21 L15,21 Z" id="cloud-upload"/></g></g></svg>
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './public-api';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFkLXByb2R1Y3RvLXBvcnRhbC1uZy1mYWQtc2lnbmF0dXJlLWZlYS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2ZhZC1wcm9kdWN0by1wb3J0YWwvbmctZmFkLXNpZ25hdHVyZS1mZWEvc3JjL2ZhZC1wcm9kdWN0by1wb3J0YWwtbmctZmFkLXNpZ25hdHVyZS1mZWEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
|
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
|
|
2
|
+
import { Utils } from '@fad-producto-portal/fad-common/utils/utils';
|
|
3
|
+
import { Configuration } from '@fad-producto-portal/fad-common/models/core';
|
|
4
|
+
import { DOCUMENT_APPROVAL_LIST_DEFAULT, getDocumentApprovalListErrorDescription } from '../../constants';
|
|
5
|
+
import { GeneralPdfViewerComponent as GeneralPdfViewerComponentModule } from '@fad-producto-portal/ng-fad-viewer';
|
|
6
|
+
import { finalize } from 'rxjs';
|
|
7
|
+
import { NgFadPdfReaderService } from '@fad-producto/ng-fad-pdf-reader';
|
|
8
|
+
import { ResponseError, SharedUtils } from '@fad-producto-portal/ng-fad-shared';
|
|
9
|
+
import { DocumentApprovalListErrorCode } from '../../constants';
|
|
10
|
+
import * as i0 from "@angular/core";
|
|
11
|
+
import * as i1 from "@fad-producto-portal/ng-fad-services";
|
|
12
|
+
import * as i2 from "@fad-producto/ng-fad-pdf-reader";
|
|
13
|
+
import * as i3 from "@angular/common";
|
|
14
|
+
import * as i4 from "@fad-producto/ng-fad-image-inline";
|
|
15
|
+
import * as i5 from "@fad-producto-portal/ng-fad-viewer";
|
|
16
|
+
export class DocumentApprovalListComponent {
|
|
17
|
+
constructor(hostContext, fad, cdr, pdfService) {
|
|
18
|
+
this.hostContext = hostContext;
|
|
19
|
+
this.fad = fad;
|
|
20
|
+
this.cdr = cdr;
|
|
21
|
+
this.pdfService = pdfService;
|
|
22
|
+
this.onloader = new EventEmitter();
|
|
23
|
+
this.onevent = new EventEmitter();
|
|
24
|
+
this.onerror = new EventEmitter();
|
|
25
|
+
this.pagesMap = new Map();
|
|
26
|
+
this.requisitionsFea = [];
|
|
27
|
+
this.documentsApprovalList = [];
|
|
28
|
+
this.approveAll = false;
|
|
29
|
+
this.images = {
|
|
30
|
+
inactive: {
|
|
31
|
+
reject: '',
|
|
32
|
+
approve: ''
|
|
33
|
+
},
|
|
34
|
+
active: {
|
|
35
|
+
reject: '',
|
|
36
|
+
approve: ''
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
this.pdfSrc = 'assets/pdf/one-drive.pdf';
|
|
40
|
+
this.pages = [];
|
|
41
|
+
this.page = 1;
|
|
42
|
+
this.height = '500px';
|
|
43
|
+
this.miniView = {
|
|
44
|
+
scrollIntoView: false
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
ngOnInit() {
|
|
48
|
+
console.log(this.configuration, this.rfc);
|
|
49
|
+
this.setCustomizationStyle(this.hostContext.nativeElement);
|
|
50
|
+
if (this.configuration?.pathDependencies?.imageDirectory) {
|
|
51
|
+
this.images.inactive.reject = this.configuration.pathDependencies?.images?.inactiveReject ?? `${this.configuration.pathDependencies.imageDirectory}/inactiveReject.png`;
|
|
52
|
+
this.images.inactive.approve = this.configuration.pathDependencies?.images?.inactiveApprove ?? `${this.configuration.pathDependencies.imageDirectory}/inactiveApprove.png`;
|
|
53
|
+
this.images.active.reject = this.configuration.pathDependencies?.images?.activeReject ?? `${this.configuration.pathDependencies.imageDirectory}/activeReject.png`;
|
|
54
|
+
this.images.active.approve = this.configuration.pathDependencies?.images?.activeApprove ?? `${this.configuration.pathDependencies.imageDirectory}/activeApprove.png`;
|
|
55
|
+
this.cdr.detectChanges();
|
|
56
|
+
}
|
|
57
|
+
this.getRequisitionsRfc();
|
|
58
|
+
}
|
|
59
|
+
getRequisitionsRfc() {
|
|
60
|
+
this.onloader.emit(true);
|
|
61
|
+
this.fad.getRequisitionsRfc(this.rfc)
|
|
62
|
+
.pipe(finalize(() => this.onloader.emit(false)))
|
|
63
|
+
.subscribe({
|
|
64
|
+
next: (res) => {
|
|
65
|
+
if (res.success) {
|
|
66
|
+
this.requisitionsFea = res.data.requisitions;
|
|
67
|
+
this.documentsApprovalList = this.requisitionsFea.flatMap(requisition => requisition.documents.map(doc => ({
|
|
68
|
+
doc: doc,
|
|
69
|
+
id: doc.documentId,
|
|
70
|
+
idRequisition: requisition.requisitionId,
|
|
71
|
+
approved: undefined,
|
|
72
|
+
isVisible: false
|
|
73
|
+
})));
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
this.onerror.emit(new ResponseError(DocumentApprovalListErrorCode.SERVICE, getDocumentApprovalListErrorDescription(DocumentApprovalListErrorCode.SERVICE), 'ng-fad-portal-signature-fea-document-approval-list'));
|
|
77
|
+
}
|
|
78
|
+
},
|
|
79
|
+
error: (error) => {
|
|
80
|
+
this.onerror.emit(new ResponseError(DocumentApprovalListErrorCode.HTTP, getDocumentApprovalListErrorDescription(DocumentApprovalListErrorCode.HTTP), 'ng-fad-portal-signature-fea-document-approval-list'));
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
toggleApproval(document) {
|
|
85
|
+
document.approved = document.approved === true ? undefined : true;
|
|
86
|
+
this.updateApproveAllState();
|
|
87
|
+
}
|
|
88
|
+
toggleRejection(document) {
|
|
89
|
+
document.approved = document.approved === false ? undefined : false;
|
|
90
|
+
this.updateApproveAllState();
|
|
91
|
+
}
|
|
92
|
+
updateApproveAllState() {
|
|
93
|
+
this.approveAll = this.documentsApprovalList.every(doc => doc.approved === true);
|
|
94
|
+
}
|
|
95
|
+
approveAllDocuments() {
|
|
96
|
+
this.approveAll = !this.approveAll;
|
|
97
|
+
this.documentsApprovalList.forEach(doc => doc.approved = this.approveAll ? true : undefined);
|
|
98
|
+
}
|
|
99
|
+
getApprovedCount() {
|
|
100
|
+
return this.documentsApprovalList.filter(doc => doc.approved === true).length;
|
|
101
|
+
}
|
|
102
|
+
getRejectedCount() {
|
|
103
|
+
return this.documentsApprovalList.filter(doc => doc.approved === false).length;
|
|
104
|
+
}
|
|
105
|
+
emitApprovedDocuments() {
|
|
106
|
+
const approvedDocuments = this.documentsApprovalList.filter(doc => doc.approved !== undefined);
|
|
107
|
+
console.log(approvedDocuments);
|
|
108
|
+
this.onevent.emit(approvedDocuments);
|
|
109
|
+
}
|
|
110
|
+
seeDocumentFea(document) {
|
|
111
|
+
document.isVisible = !document.isVisible;
|
|
112
|
+
if (document.isVisible) {
|
|
113
|
+
this.onloader.emit(true);
|
|
114
|
+
this.fad.getDocumentFea(document.id, { loader: true, error: true })
|
|
115
|
+
.pipe(finalize(() => this.onloader.emit(false)))
|
|
116
|
+
.subscribe({
|
|
117
|
+
next: (res) => {
|
|
118
|
+
if (document.doc) {
|
|
119
|
+
const byteCharacters = atob(res.data.file);
|
|
120
|
+
const byteNumbers = new Array(byteCharacters.length).fill(0).map((_, i) => byteCharacters.charCodeAt(i));
|
|
121
|
+
const byteArray = new Uint8Array(byteNumbers);
|
|
122
|
+
const blob = new Blob([byteArray], { type: 'application/pdf' });
|
|
123
|
+
this.getBase64(blob, document);
|
|
124
|
+
}
|
|
125
|
+
else {
|
|
126
|
+
this.onerror.emit(new ResponseError(DocumentApprovalListErrorCode.SERVICE, getDocumentApprovalListErrorDescription(DocumentApprovalListErrorCode.SERVICE), 'ng-fad-portal-signature-fea-document-approval-list'));
|
|
127
|
+
}
|
|
128
|
+
},
|
|
129
|
+
error: (error) => {
|
|
130
|
+
this.onerror.emit(new ResponseError(DocumentApprovalListErrorCode.HTTP, getDocumentApprovalListErrorDescription(DocumentApprovalListErrorCode.HTTP), 'ng-fad-portal-signature-fea-document-approval-list'));
|
|
131
|
+
}
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
downloadDocumentFea(document) {
|
|
136
|
+
this.onloader.emit(true);
|
|
137
|
+
this.fad.getDocumentFea(document.id)
|
|
138
|
+
.pipe(finalize(() => this.onloader.emit(false)))
|
|
139
|
+
.subscribe({
|
|
140
|
+
next: (res) => {
|
|
141
|
+
if (res.success && res.data.file) {
|
|
142
|
+
const byteCharacters = atob(res.data.file);
|
|
143
|
+
const byteNumbers = new Array(byteCharacters.length).fill(0).map((_, i) => byteCharacters.charCodeAt(i));
|
|
144
|
+
const byteArray = new Uint8Array(byteNumbers);
|
|
145
|
+
const blob = new Blob([byteArray], { type: 'application/pdf' });
|
|
146
|
+
const link = window.document.createElement('a');
|
|
147
|
+
link.href = URL.createObjectURL(blob);
|
|
148
|
+
link.download = document.doc?.name || 'document.pdf';
|
|
149
|
+
window.document.body.appendChild(link);
|
|
150
|
+
link.click();
|
|
151
|
+
window.document.body.removeChild(link);
|
|
152
|
+
}
|
|
153
|
+
else {
|
|
154
|
+
this.onerror.emit(new ResponseError(DocumentApprovalListErrorCode.SERVICE, getDocumentApprovalListErrorDescription(DocumentApprovalListErrorCode.SERVICE), 'ng-fad-portal-signature-fea-document-approval-list'));
|
|
155
|
+
}
|
|
156
|
+
},
|
|
157
|
+
error: (error) => {
|
|
158
|
+
this.onerror.emit(new ResponseError(DocumentApprovalListErrorCode.HTTP, getDocumentApprovalListErrorDescription(DocumentApprovalListErrorCode.HTTP), 'ng-fad-portal-signature-fea-document-approval-list'));
|
|
159
|
+
}
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
async getBase64(blob, document) {
|
|
163
|
+
console.log(blob);
|
|
164
|
+
const data = new File([blob], 'file.pdf', { type: 'application/pdf' });
|
|
165
|
+
const base64 = await SharedUtils.fileToBase64(data);
|
|
166
|
+
if (base64) {
|
|
167
|
+
this.initializePdf(base64, document);
|
|
168
|
+
}
|
|
169
|
+
else {
|
|
170
|
+
this.onerror.emit(new ResponseError(DocumentApprovalListErrorCode.ERROR_PDF, getDocumentApprovalListErrorDescription(DocumentApprovalListErrorCode.HTTP), 'ng-fad-portal-signature-fea-document-approval-list'));
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
initializePdf(pdf, document) {
|
|
174
|
+
if (!this.pagesMap.has(document.id)) {
|
|
175
|
+
this.pagesMap.set(document.id, []);
|
|
176
|
+
}
|
|
177
|
+
else {
|
|
178
|
+
this.pagesMap.get(document.id).length = 0;
|
|
179
|
+
}
|
|
180
|
+
this.pdfService.initialize(pdf, SharedUtils.generateUUID());
|
|
181
|
+
this.getPages(document);
|
|
182
|
+
}
|
|
183
|
+
getPages(document) {
|
|
184
|
+
if (!this.pagesMap.has(document.id)) {
|
|
185
|
+
this.pagesMap.set(document.id, []);
|
|
186
|
+
}
|
|
187
|
+
else {
|
|
188
|
+
this.pagesMap.get(document.id).length = 0;
|
|
189
|
+
}
|
|
190
|
+
if (this.pdfLibrary) {
|
|
191
|
+
this.pdfLibrary.unsubscribe();
|
|
192
|
+
}
|
|
193
|
+
this.pdfLibrary = this.pdfService.pages.subscribe(res => {
|
|
194
|
+
const docPages = this.pagesMap.get(document.id);
|
|
195
|
+
docPages.push(res);
|
|
196
|
+
this.cdr.detectChanges();
|
|
197
|
+
});
|
|
198
|
+
}
|
|
199
|
+
//PDF General viewer methods
|
|
200
|
+
onpagechange(page) {
|
|
201
|
+
this.page = page;
|
|
202
|
+
}
|
|
203
|
+
scrollToPage(page) {
|
|
204
|
+
this.generalPdfViewerComponent.scrollToPage(page);
|
|
205
|
+
}
|
|
206
|
+
onloadpage(data) {
|
|
207
|
+
if (data.page == 1) {
|
|
208
|
+
const id = "fad-viewer-page-v1-1";
|
|
209
|
+
const dynamicDiv = document.getElementById(id);
|
|
210
|
+
;
|
|
211
|
+
this.height = dynamicDiv.clientHeight + 'px';
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
setCustomizationStyle(targetElement = document.documentElement) {
|
|
215
|
+
this.configuration = Utils.mergeConfiguration(new Configuration(), DOCUMENT_APPROVAL_LIST_DEFAULT, this.configuration);
|
|
216
|
+
}
|
|
217
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DocumentApprovalListComponent, deps: [{ token: i0.ElementRef }, { token: i1.FadService }, { token: i0.ChangeDetectorRef }, { token: i2.NgFadPdfReaderService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
218
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DocumentApprovalListComponent, selector: "ng-fad-signature-fea-document-approval-list", inputs: { configuration: "configuration", rfc: "rfc" }, outputs: { onloader: "onloader", onevent: "onevent", onerror: "onerror" }, providers: [NgFadPdfReaderService], viewQueries: [{ propertyName: "generalPdfViewerComponent", first: true, predicate: GeneralPdfViewerComponentModule, descendants: true }], ngImport: i0, template: "\r\n <ng-container *ngFor=\"let requisition of requisitionsFea\">\r\n <div class=\"fad-portal-content\" >\r\n <div class=\"header\" >\r\n <div>\r\n <div class=\"fad-portal-title\">\r\n {{ requisition.name }} ({{requisition.documents.length}})\r\n </div>\r\n <div class=\"info\">\r\n {{configuration.customization?.moduleCustomization?.legends?.sendTo}} Alfredo Villanueva {{ requisition.sendBy }}\r\n </div>\r\n <div class=\"info\">\r\n {{ requisition.sendByEmail }}\r\n </div>\r\n </div>\r\n <div class=\"requisition-id\">\r\n <div class=\"fad-portal-subtitle-bold\">ID {{ requisition.requisitionId }}</div>\r\n </div>\r\n </div>\r\n <div class=\"documents-container\">\r\n <ng-container *ngFor=\"let document of documentsApprovalList\">\r\n <ng-container *ngIf=\"document.idRequisition === requisition.requisitionId\" >\r\n <div class=\"document\" >\r\n <div class=\"information\" >\r\n <div class=\"document-name fad-portal-subtitle-bold\" >\r\n {{ document.doc?.name }}\r\n </div>\r\n <div class=\"validate\">\r\n \r\n <ng-fad-image-inline \r\n [src]=\"document.approved === false ? images.active.reject : images.inactive.reject\"\r\n (click)=\"toggleRejection(document)\">\r\n </ng-fad-image-inline>\r\n \r\n \r\n <ng-fad-image-inline \r\n [src]=\"document.approved === true ? images.active.approve : images.inactive.approve\"\r\n (click)=\"toggleApproval(document)\">\r\n </ng-fad-image-inline>\r\n </div>\r\n \r\n </div>\r\n <div class=\"actions\">\r\n <div>\r\n <div class=\"fad-portal-subtitle-bold\" (click)=\"seeDocumentFea(document)\">\r\n {{ document.isVisible ? 'Ocultar documento' : 'Ver documento' }}\r\n </div>\r\n <div class=\"fad-portal-subtitle-bold\" (click)=\"downloadDocumentFea(document)\">{{configuration.customization?.moduleCustomization?.legends?.download}}</div>\r\n </div>\r\n <div>\r\n {{ document.doc?.pages }} {{configuration.customization?.moduleCustomization?.legends?.pages}}\r\n </div>\r\n </div>\r\n <div class=\"pdf-viewer\" *ngIf=\"document.isVisible\" [style.height.px]=\"1000\">\r\n <ng-fad-viewer-general-pdf-viewer\r\n [pages]=\"pagesMap.get(document.id!) ?? []\"\r\n (onpagechange)=\"onpagechange($event)\"\r\n (onloadpage)=\"onloadpage($event)\">\r\n \r\n <ng-fad-viewer-pdf-mini-view\r\n miniView\r\n [configuration]=\"miniView\"\r\n [pages]=\"pagesMap.get(document.id!) ?? []\"\r\n [page]=\"page\"\r\n (onpagechange)=\"scrollToPage($event)\">\r\n </ng-fad-viewer-pdf-mini-view>\r\n \r\n </ng-fad-viewer-general-pdf-viewer>\r\n </div>\r\n \r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n \r\n </div>\r\n \r\n </div>\r\n </ng-container>\r\n <div class=\"fad-portal-content selector-document\">\r\n <div class=\"document-status-bar\">\r\n \r\n <div *ngIf=\"getApprovedCount() === 0 && getRejectedCount() === 0\" class=\"document-status-message \">\r\n Aprueba los documentos para firmarlos con tu e.firma\r\n </div>\r\n \r\n \r\n <div *ngIf=\"getApprovedCount() > 0 || getRejectedCount() > 0\" class=\"document-status-content\">\r\n <div class=\"approve-all\">\r\n <ng-fad-image-inline \r\n [src]=\"approveAll ? images.active.approve : images.inactive.approve\"\r\n (click)=\"approveAllDocuments()\">\r\n </ng-fad-image-inline>\r\n <span (click)=\"approveAllDocuments()\">Aprobar todos los documentos ({{ documentsApprovalList.length }})</span>\r\n </div>\r\n \r\n \r\n <div class=\"document-counts\">\r\n <span *ngIf=\"getApprovedCount() > 0 && getRejectedCount() === 0\" class=\"fad-portal-informative-bold\">\r\n {{ getApprovedCount() }} documentos aprobados\r\n </span>\r\n <span *ngIf=\"getRejectedCount() > 0 && getApprovedCount() === 0\" class=\"fad-portal-informative-bold\">\r\n {{ getRejectedCount() }} documentos rechazados\r\n </span>\r\n \r\n <ng-container *ngIf=\"getApprovedCount() > 0 && getRejectedCount() > 0\" >\r\n <span class=\"fad-portal-informative-bold\">\r\n {{ getApprovedCount() }} documentos aprobados\r\n </span>\r\n <span class=\"fad-portal-informative-bold\">\r\n {{ getRejectedCount() }} documentos rechazados\r\n </span>\r\n </ng-container>\r\n </div>\r\n \r\n \r\n <button class=\"fad-portal-primary\" (click)=\"emitApprovedDocuments()\">Continuar</button>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n\r\n", styles: [":host{box-sizing:border-box}:host .fad-portal-content{display:flex;flex-direction:column;justify-content:center;width:100%;box-sizing:border-box;margin-top:var(--fad-portal-common-separation-lg)}:host .fad-portal-content .header{display:flex;align-items:center;justify-content:space-between;width:100%;background-color:#f5f5f5;border-radius:var(--fad-portal-common-input-border-radius);padding:var(--fad-portal-common-separation-md);overflow:hidden;box-sizing:border-box}:host .fad-portal-content .header div:nth-child(1){display:flex;flex-direction:column;row-gap:var(--fad-portal-common-separation-xs)}:host .fad-portal-content .header .info{color:var(--fad-portal-common-tertiary-color)}@media (max-width: 992px){:host .fad-portal-content .header{flex-direction:column;align-items:start;justify-content:center;row-gap:var(--fad-portal-common-separation-xs);margin-bottom:var(--fad-portal-common-separation-md)}}:host .fad-portal-content .documents-container{box-sizing:border-box}:host .fad-portal-content .documents-container .document{display:flex;align-items:center;flex-direction:column;width:100%;margin-top:var(--fad-portal-common-separation-md);border-radius:var(--fad-portal-common-input-border-radius);border:1px solid #f5f5f5}:host .fad-portal-content .documents-container .document .information{padding:var(--fad-portal-common-separation-md);display:flex;align-items:center;justify-content:space-between;width:100%}:host .fad-portal-content .documents-container .document .information .validate{padding-left:var(--fad-portal-common-separation-md);padding-right:var(--fad-portal-common-separation-md);display:flex;column-gap:var(--fad-portal-common-separation-md)}:host .fad-portal-content .documents-container .document .information .document-name{padding-left:var(--fad-portal-common-separation-md);padding-right:var(--fad-portal-common-separation-md)}:host .fad-portal-content .documents-container .document .actions{display:flex;align-items:center;justify-content:space-between;width:100%;background-color:#f5f5f5;padding:var(--fad-portal-common-separation-md);box-sizing:border-box;border-radius:var(--fad-portal-common-input-border-radius);border-top-left-radius:0;border-top-right-radius:0}:host .fad-portal-content .documents-container .document .actions div:nth-child(1){display:flex;align-items:center;gap:var(--fad-portal-common-separation-md)}:host .fad-portal-content .documents-container .document .actions div:nth-child(1) div{color:var(--fad-portal-common-primary-color)!important;cursor:pointer}:host .selector-document{width:100%;background-color:#262626;color:#fff;padding:var(--fad-portal-common-separation-md);margin-top:var(--fad-portal-common-separation-md);display:flex;align-items:center;justify-content:space-between;border-radius:var(--fad-portal-common-input-border-radius);box-sizing:border-box}:host .selector-document .document-status-message{display:flex;align-items:center;justify-content:center;width:100%;gap:var(--fad-portal-common-separation-md)}:host .selector-document .document-status-bar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;width:100%;font-size:14px;box-sizing:border-box}:host .selector-document .document-status-bar .document-status-content{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;width:100%;font-size:14px;box-sizing:border-box}:host .selector-document .document-status-bar .approve-all{display:flex;align-items:center;gap:10px;cursor:pointer;box-sizing:border-box}:host .selector-document .document-status-bar .approve-all span{cursor:pointer;-webkit-user-select:none;user-select:none}:host .selector-document .document-status-bar .document-counts{display:flex;flex-direction:column;gap:var(--fad-portal-common-separation-xs);box-sizing:border-box}:host .selector-document .document-status-bar .document-counts span{color:#fff}:host .selector-document .document-status-bar .fad-portal-primary{min-width:0px;width:50%}@media (max-width: 992px){:host .selector-document .document-status-bar .fad-portal-primary{width:100%;margin-top:var(--fad-portal-common-separation-md)}}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.NgFadImageInlineComponent, selector: "ng-fad-image-inline", inputs: ["src"] }, { kind: "component", type: i5.GeneralPdfViewerComponent, selector: "ng-fad-viewer-general-pdf-viewer", inputs: ["configuration", "onerror", "pages"], outputs: ["onpagechange", "onloadpage"] }, { kind: "component", type: i5.PdfMiniViewComponent, selector: "ng-fad-viewer-pdf-mini-view", inputs: ["configuration", "pages", "page"], outputs: ["onpagechange"] }] }); }
|
|
219
|
+
}
|
|
220
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DocumentApprovalListComponent, decorators: [{
|
|
221
|
+
type: Component,
|
|
222
|
+
args: [{ selector: 'ng-fad-signature-fea-document-approval-list', providers: [NgFadPdfReaderService], template: "\r\n <ng-container *ngFor=\"let requisition of requisitionsFea\">\r\n <div class=\"fad-portal-content\" >\r\n <div class=\"header\" >\r\n <div>\r\n <div class=\"fad-portal-title\">\r\n {{ requisition.name }} ({{requisition.documents.length}})\r\n </div>\r\n <div class=\"info\">\r\n {{configuration.customization?.moduleCustomization?.legends?.sendTo}} Alfredo Villanueva {{ requisition.sendBy }}\r\n </div>\r\n <div class=\"info\">\r\n {{ requisition.sendByEmail }}\r\n </div>\r\n </div>\r\n <div class=\"requisition-id\">\r\n <div class=\"fad-portal-subtitle-bold\">ID {{ requisition.requisitionId }}</div>\r\n </div>\r\n </div>\r\n <div class=\"documents-container\">\r\n <ng-container *ngFor=\"let document of documentsApprovalList\">\r\n <ng-container *ngIf=\"document.idRequisition === requisition.requisitionId\" >\r\n <div class=\"document\" >\r\n <div class=\"information\" >\r\n <div class=\"document-name fad-portal-subtitle-bold\" >\r\n {{ document.doc?.name }}\r\n </div>\r\n <div class=\"validate\">\r\n \r\n <ng-fad-image-inline \r\n [src]=\"document.approved === false ? images.active.reject : images.inactive.reject\"\r\n (click)=\"toggleRejection(document)\">\r\n </ng-fad-image-inline>\r\n \r\n \r\n <ng-fad-image-inline \r\n [src]=\"document.approved === true ? images.active.approve : images.inactive.approve\"\r\n (click)=\"toggleApproval(document)\">\r\n </ng-fad-image-inline>\r\n </div>\r\n \r\n </div>\r\n <div class=\"actions\">\r\n <div>\r\n <div class=\"fad-portal-subtitle-bold\" (click)=\"seeDocumentFea(document)\">\r\n {{ document.isVisible ? 'Ocultar documento' : 'Ver documento' }}\r\n </div>\r\n <div class=\"fad-portal-subtitle-bold\" (click)=\"downloadDocumentFea(document)\">{{configuration.customization?.moduleCustomization?.legends?.download}}</div>\r\n </div>\r\n <div>\r\n {{ document.doc?.pages }} {{configuration.customization?.moduleCustomization?.legends?.pages}}\r\n </div>\r\n </div>\r\n <div class=\"pdf-viewer\" *ngIf=\"document.isVisible\" [style.height.px]=\"1000\">\r\n <ng-fad-viewer-general-pdf-viewer\r\n [pages]=\"pagesMap.get(document.id!) ?? []\"\r\n (onpagechange)=\"onpagechange($event)\"\r\n (onloadpage)=\"onloadpage($event)\">\r\n \r\n <ng-fad-viewer-pdf-mini-view\r\n miniView\r\n [configuration]=\"miniView\"\r\n [pages]=\"pagesMap.get(document.id!) ?? []\"\r\n [page]=\"page\"\r\n (onpagechange)=\"scrollToPage($event)\">\r\n </ng-fad-viewer-pdf-mini-view>\r\n \r\n </ng-fad-viewer-general-pdf-viewer>\r\n </div>\r\n \r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n \r\n </div>\r\n \r\n </div>\r\n </ng-container>\r\n <div class=\"fad-portal-content selector-document\">\r\n <div class=\"document-status-bar\">\r\n \r\n <div *ngIf=\"getApprovedCount() === 0 && getRejectedCount() === 0\" class=\"document-status-message \">\r\n Aprueba los documentos para firmarlos con tu e.firma\r\n </div>\r\n \r\n \r\n <div *ngIf=\"getApprovedCount() > 0 || getRejectedCount() > 0\" class=\"document-status-content\">\r\n <div class=\"approve-all\">\r\n <ng-fad-image-inline \r\n [src]=\"approveAll ? images.active.approve : images.inactive.approve\"\r\n (click)=\"approveAllDocuments()\">\r\n </ng-fad-image-inline>\r\n <span (click)=\"approveAllDocuments()\">Aprobar todos los documentos ({{ documentsApprovalList.length }})</span>\r\n </div>\r\n \r\n \r\n <div class=\"document-counts\">\r\n <span *ngIf=\"getApprovedCount() > 0 && getRejectedCount() === 0\" class=\"fad-portal-informative-bold\">\r\n {{ getApprovedCount() }} documentos aprobados\r\n </span>\r\n <span *ngIf=\"getRejectedCount() > 0 && getApprovedCount() === 0\" class=\"fad-portal-informative-bold\">\r\n {{ getRejectedCount() }} documentos rechazados\r\n </span>\r\n \r\n <ng-container *ngIf=\"getApprovedCount() > 0 && getRejectedCount() > 0\" >\r\n <span class=\"fad-portal-informative-bold\">\r\n {{ getApprovedCount() }} documentos aprobados\r\n </span>\r\n <span class=\"fad-portal-informative-bold\">\r\n {{ getRejectedCount() }} documentos rechazados\r\n </span>\r\n </ng-container>\r\n </div>\r\n \r\n \r\n <button class=\"fad-portal-primary\" (click)=\"emitApprovedDocuments()\">Continuar</button>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n\r\n", styles: [":host{box-sizing:border-box}:host .fad-portal-content{display:flex;flex-direction:column;justify-content:center;width:100%;box-sizing:border-box;margin-top:var(--fad-portal-common-separation-lg)}:host .fad-portal-content .header{display:flex;align-items:center;justify-content:space-between;width:100%;background-color:#f5f5f5;border-radius:var(--fad-portal-common-input-border-radius);padding:var(--fad-portal-common-separation-md);overflow:hidden;box-sizing:border-box}:host .fad-portal-content .header div:nth-child(1){display:flex;flex-direction:column;row-gap:var(--fad-portal-common-separation-xs)}:host .fad-portal-content .header .info{color:var(--fad-portal-common-tertiary-color)}@media (max-width: 992px){:host .fad-portal-content .header{flex-direction:column;align-items:start;justify-content:center;row-gap:var(--fad-portal-common-separation-xs);margin-bottom:var(--fad-portal-common-separation-md)}}:host .fad-portal-content .documents-container{box-sizing:border-box}:host .fad-portal-content .documents-container .document{display:flex;align-items:center;flex-direction:column;width:100%;margin-top:var(--fad-portal-common-separation-md);border-radius:var(--fad-portal-common-input-border-radius);border:1px solid #f5f5f5}:host .fad-portal-content .documents-container .document .information{padding:var(--fad-portal-common-separation-md);display:flex;align-items:center;justify-content:space-between;width:100%}:host .fad-portal-content .documents-container .document .information .validate{padding-left:var(--fad-portal-common-separation-md);padding-right:var(--fad-portal-common-separation-md);display:flex;column-gap:var(--fad-portal-common-separation-md)}:host .fad-portal-content .documents-container .document .information .document-name{padding-left:var(--fad-portal-common-separation-md);padding-right:var(--fad-portal-common-separation-md)}:host .fad-portal-content .documents-container .document .actions{display:flex;align-items:center;justify-content:space-between;width:100%;background-color:#f5f5f5;padding:var(--fad-portal-common-separation-md);box-sizing:border-box;border-radius:var(--fad-portal-common-input-border-radius);border-top-left-radius:0;border-top-right-radius:0}:host .fad-portal-content .documents-container .document .actions div:nth-child(1){display:flex;align-items:center;gap:var(--fad-portal-common-separation-md)}:host .fad-portal-content .documents-container .document .actions div:nth-child(1) div{color:var(--fad-portal-common-primary-color)!important;cursor:pointer}:host .selector-document{width:100%;background-color:#262626;color:#fff;padding:var(--fad-portal-common-separation-md);margin-top:var(--fad-portal-common-separation-md);display:flex;align-items:center;justify-content:space-between;border-radius:var(--fad-portal-common-input-border-radius);box-sizing:border-box}:host .selector-document .document-status-message{display:flex;align-items:center;justify-content:center;width:100%;gap:var(--fad-portal-common-separation-md)}:host .selector-document .document-status-bar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;width:100%;font-size:14px;box-sizing:border-box}:host .selector-document .document-status-bar .document-status-content{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;width:100%;font-size:14px;box-sizing:border-box}:host .selector-document .document-status-bar .approve-all{display:flex;align-items:center;gap:10px;cursor:pointer;box-sizing:border-box}:host .selector-document .document-status-bar .approve-all span{cursor:pointer;-webkit-user-select:none;user-select:none}:host .selector-document .document-status-bar .document-counts{display:flex;flex-direction:column;gap:var(--fad-portal-common-separation-xs);box-sizing:border-box}:host .selector-document .document-status-bar .document-counts span{color:#fff}:host .selector-document .document-status-bar .fad-portal-primary{min-width:0px;width:50%}@media (max-width: 992px){:host .selector-document .document-status-bar .fad-portal-primary{width:100%;margin-top:var(--fad-portal-common-separation-md)}}\n"] }]
|
|
223
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.FadService }, { type: i0.ChangeDetectorRef }, { type: i2.NgFadPdfReaderService }]; }, propDecorators: { configuration: [{
|
|
224
|
+
type: Input
|
|
225
|
+
}], rfc: [{
|
|
226
|
+
type: Input
|
|
227
|
+
}], onloader: [{
|
|
228
|
+
type: Output
|
|
229
|
+
}], onevent: [{
|
|
230
|
+
type: Output
|
|
231
|
+
}], onerror: [{
|
|
232
|
+
type: Output
|
|
233
|
+
}], generalPdfViewerComponent: [{
|
|
234
|
+
type: ViewChild,
|
|
235
|
+
args: [GeneralPdfViewerComponentModule]
|
|
236
|
+
}] } });
|
|
237
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnQtYXBwcm92YWwtbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mYWQtcHJvZHVjdG8tcG9ydGFsL25nLWZhZC1zaWduYXR1cmUtZmVhL3NyYy9saWIvY29tcG9uZW50cy9kb2N1bWVudC1hcHByb3ZhbC1saXN0L2RvY3VtZW50LWFwcHJvdmFsLWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZmFkLXByb2R1Y3RvLXBvcnRhbC9uZy1mYWQtc2lnbmF0dXJlLWZlYS9zcmMvbGliL2NvbXBvbmVudHMvZG9jdW1lbnQtYXBwcm92YWwtbGlzdC9kb2N1bWVudC1hcHByb3ZhbC1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUIsU0FBUyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqSCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDcEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBRTVFLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSx1Q0FBdUMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRzFHLE9BQU8sRUFBRSx5QkFBeUIsSUFBSSwrQkFBK0IsRUFBNkIsTUFBTSxvQ0FBb0MsQ0FBQTtBQUM1SSxPQUFPLEVBQUUsUUFBUSxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUM5QyxPQUFPLEVBQUUscUJBQXFCLEVBQW1CLE1BQU0saUNBQWlDLENBQUM7QUFFekYsT0FBTyxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNoRixPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7OztBQVNoRSxNQUFNLE9B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WUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRCxVQUFVLENBQUMsSUFBcUI7UUFDOUIsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsRUFBRTtZQUNsQixNQUFNLEVBQUUsR0FBRyxzQkFBc0IsQ0FBQztZQUNsQyxNQUFNLFVBQVUsR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQUEsQ0FBQztZQUNoRCxJQUFJLENBQUMsTUFBTSxHQUFHLFVBQVcsQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1NBRS9DO0lBQ0gsQ0FBQztJQUVELHFCQUFxQixDQUFDLGFBQWEsR0FBRyxRQUFRLENBQUMsZUFBZTtRQUMxRCxJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQyxrQkFBa0IsQ0FDM0MsSUFBSSxhQUFhLEVBQUUsRUFDbkIsOEJBQThCLEVBQzlCLElBQUksQ0FBQyxhQUFhLENBQ25CLENBQUM7SUFDSixDQUFDOytHQXZRUSw2QkFBNkI7bUdBQTdCLDZCQUE2Qix5TUFGN0IsQ0FBQyxxQkFBcUIsQ0FBQyxxRkEyQnZCLCtCQUErQixnREM5QzVDLDhyTkF5SEE7OzRGRHBHYSw2QkFBNkI7a0JBTnpDLFNBQVM7K0JBQ0UsNkNBQTZDLGFBRzVDLENBQUMscUJBQXFCLENBQUM7OExBSXpCLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csR0FBRztzQkFBWCxLQUFLO2dCQUNJLFFBQVE7c0JBQWpCLE1BQU07Z0JBQ0csT0FBTztzQkFBaEIsTUFBTTtnQkFDRyxPQUFPO3NCQUFoQixNQUFNO2dCQW1CcUMseUJBQXlCO3NCQUFwRSxTQUFTO3VCQUFDLCtCQUErQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFV0aWxzIH0gZnJvbSAnQGZhZC1wcm9kdWN0by1wb3J0YWwvZmFkLWNvbW1vbi91dGlscy91dGlscyc7XHJcbmltcG9ydCB7IENvbmZpZ3VyYXRpb24gfSBmcm9tICdAZmFkLXByb2R1Y3RvLXBvcnRhbC9mYWQtY29tbW9uL21vZGVscy9jb3JlJztcclxuaW1wb3J0IHsgRG9jdW1lbnRBcHByb3ZhbEZlYSwgSURvY3VtZW50QXBwcm92YWxMaXN0Q29uZmlndXJhdGlvbiB9IGZyb20gJy4uLy4uL21vZGVscyc7XHJcbmltcG9ydCB7IERPQ1VNRU5UX0FQUFJPVkFMX0xJU1RfREVGQVVMVCwgZ2V0RG9jdW1lbnRBcHByb3ZhbExpc3RFcnJvckRlc2NyaXB0aW9uIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcclxuaW1wb3J0IHsgRmFkU2VydmljZSwgUmVxdWlzaXRpb25zRmVhLCBSZXNwb25zZURhdGEsICBSZXF1aXNpdGlvbkZlYURhdGEsIERvY3VtZW50RmVhIH0gZnJvbSAnQGZhZC1wcm9kdWN0by1wb3J0YWwvbmctZmFkLXNlcnZpY2VzJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBHZW5lcmFsUGRmVmlld2VyQ29tcG9uZW50IGFzIEdlbmVyYWxQZGZWaWV3ZXJDb21wb25lbnRNb2R1bGUsIElQZGZNaW5pVmlld0NvbmZpZ3VyYXRpb24gfSBmcm9tICdAZmFkLXByb2R1Y3RvLXBvcnRhbC9uZy1mYWQtdmlld2VyJ1xyXG5pbXBvcnQgeyBmaW5hbGl6ZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IE5nRmFkUGRmUmVhZGVyU2VydmljZSwgUmVzcG9uc2VTdWNjZXNzIH0gZnJvbSAnQGZhZC1wcm9kdWN0by9uZy1mYWQtcGRmLXJlYWRlcic7XHJcbmltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBSZXNwb25zZUVycm9yLCBTaGFyZWRVdGlscyB9IGZyb20gJ0BmYWQtcHJvZHVjdG8tcG9ydGFsL25nLWZhZC1zaGFyZWQnO1xyXG5pbXBvcnQgeyBEb2N1bWVudEFwcHJvdmFsTGlzdEVycm9yQ29kZSB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICduZy1mYWQtc2lnbmF0dXJlLWZlYS1kb2N1bWVudC1hcHByb3ZhbC1saXN0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZG9jdW1lbnQtYXBwcm92YWwtbGlzdC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZG9jdW1lbnQtYXBwcm92YWwtbGlzdC5jb21wb25lbnQuc2NzcyddLFxyXG4gIHByb3ZpZGVyczogW05nRmFkUGRmUmVhZGVyU2VydmljZV1cclxufSlcclxuZXhwb3J0IGNsYXNzIERvY3VtZW50QXBwcm92YWxMaXN0Q29tcG9uZW50IHtcclxuICBcclxuICBASW5wdXQoKSBjb25maWd1cmF0aW9uITogSURvY3VtZW50QXBwcm92YWxMaXN0Q29uZmlndXJhdGlvbjtcclxuICBASW5wdXQoKSByZmMhOiBzdHJpbmc7XHJcbiAgQE91dHB1dCgpIG9ubG9hZGVyID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG4gIEBPdXRwdXQoKSBvbmV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxEb2N1bWVudEFwcHJvdmFsRmVhW10+KCk7XHJcbiAgQE91dHB1dCgpIG9uZXJyb3I6IEV2ZW50RW1pdHRlcjxSZXNwb25zZUVycm9yPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBwYWdlc01hcDogTWFwPHN0cmluZywgUmVzcG9uc2VTdWNjZXNzW10+ID0gbmV3IE1hcCgpO1xyXG4gIHJlcXVpc2l0aW9uc0ZlYTogUmVxdWlzaXRpb25GZWFEYXRhW10gPSBbXTtcclxuICBkb2N1bWVudHNBcHByb3ZhbExpc3Q6IERvY3VtZW50QXBwcm92YWxGZWFbXSA9IFtdO1xyXG4gIGFwcHJvdmVBbGw6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBcclxuICBpbWFnZXMgPSB7XHJcbiAgICBpbmFjdGl2ZTp7XHJcbiAgICAgIHJlamVjdDogJycsXHJcbiAgICAgIGFwcHJvdmU6ICcnXHJcbiAgICB9LFxyXG4gICAgYWN0aXZlOntcclxuICAgICAgcmVqZWN0OiAnJyxcclxuICAgICAgYXBwcm92ZTogJycgXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcblxyXG4gIEBWaWV3Q2hpbGQoR2VuZXJhbFBkZlZpZXdlckNvbXBvbmVudE1vZHVsZSkgZ2VuZXJhbFBkZlZpZXdlckNvbXBvbmVudCE6IEdlbmVyYWxQZGZWaWV3ZXJDb21wb25lbnRNb2R1bGU7XHJcbiAgcGRmU3JjOiBzdHJpbmcgPSAnYXNzZXRzL3BkZi9vbmUtZHJpdmUucGRmJztcclxuICBwZGZFcnJvciE6IFN1YnNjcmlwdGlvbjtcclxuICBwZGZMaWJyYXJ5ITogU3Vic2NyaXB0aW9uO1xyXG4gIHBhZ2VzOiBSZXNwb25zZVN1Y2Nlc3NbXSA9IFtdO1xyXG4gIHBhZ2UgPSAxO1xyXG4gIGhlaWdodCA9ICc1MDBweCc7XHJcblxyXG4gIG1pbmlWaWV3OiBJUGRmTWluaVZpZXdDb25maWd1cmF0aW9uID0ge1xyXG4gICAgc2Nyb2xsSW50b1ZpZXc6IGZhbHNlXHJcbiAgIH1cclxuXHJcbiAgY29uc3RydWN0b3IoIHByaXZhdGUgaG9zdENvbnRleHQ6IEVsZW1lbnRSZWYsIHByaXZhdGUgZmFkOiBGYWRTZXJ2aWNlLHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixwcml2YXRlIHBkZlNlcnZpY2U6IE5nRmFkUGRmUmVhZGVyU2VydmljZSApIHt9XHJcbiAgXHJcbiAgXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBjb25zb2xlLmxvZyh0aGlzLmNvbmZpZ3VyYXRpb24sdGhpcy5yZmMpXHJcbiAgICB0aGlzLnNldEN1c3RvbWl6YXRpb25TdHlsZSh0aGlzLmhvc3RDb250ZXh0Lm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgaWYgKHRoaXMuY29uZmlndXJhdGlvbj8ucGF0aERlcGVuZGVuY2llcz8uaW1hZ2VEaXJlY3RvcnkpIHtcclxuICAgICAgdGhpcy5pbWFnZXMuaW5hY3RpdmUucmVqZWN0ID0gdGhpcy5jb25maWd1cmF0aW9uLnBhdGhEZXBlbmRlbmNpZXM/LmltYWdlcz8uaW5hY3RpdmVSZWplY3QgPz8gYCR7dGhpcy5jb25maWd1cmF0aW9uLnBhdGhEZXBlbmRlbmNpZXMuaW1hZ2VEaXJlY3Rvcnl9L2luYWN0aXZlUmVqZWN0LnBuZ2A7XHJcbiAgICAgIHRoaXMuaW1hZ2VzLmluYWN0aXZlLmFwcHJvdmUgPSB0aGlzLmNvbmZpZ3VyYXRpb24ucGF0aERlcGVuZGVuY2llcz8uaW1hZ2VzPy5pbmFjdGl2ZUFwcHJvdmUgPz8gYCR7dGhpcy5jb25maWd1cmF0aW9uLnBhdGhEZXBlbmRlbmNpZXMuaW1hZ2VEaXJlY3Rvcnl9L2luYWN0aXZlQXBwcm92ZS5wbmdgO1xyXG4gICAgICB0aGlzLmltYWdlcy5hY3RpdmUucmVqZWN0ID0gdGhpcy5jb25maWd1cmF0aW9uLnBhdGhEZXBlbmRlbmNpZXM/LmltYWdlcz8uYWN0aXZlUmVqZWN0ID8/IGAke3RoaXMuY29uZmlndXJhdGlvbi5wYXRoRGVwZW5kZW5jaWVzLmltYWdlRGlyZWN0b3J5fS9hY3RpdmVSZWplY3QucG5nYDtcclxuICAgICAgdGhpcy5pbWFnZXMuYWN0aXZlLmFwcHJvdmUgPSB0aGlzLmNvbmZpZ3VyYXRpb24ucGF0aERlcGVuZGVuY2llcz8uaW1hZ2VzPy5hY3RpdmVBcHByb3ZlID8/IGAke3RoaXMuY29uZmlndXJhdGlvbi5wYXRoRGVwZW5kZW5jaWVzLmltYWdlRGlyZWN0b3J5fS9hY3RpdmVBcHByb3ZlLnBuZ2A7XHJcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuXHJcbiAgICBcclxuICAgIHRoaXMuZ2V0UmVxdWlzaXRpb25zUmZjKCk7XHJcbiAgfVxyXG5cclxuICBnZXRSZXF1aXNpdGlvbnNSZmMoKSB7XHJcbiAgICB0aGlzLm9ubG9hZGVyLmVtaXQodHJ1ZSk7IFxyXG4gICAgXHJcbiAgICB0aGlzLmZhZC5nZXRSZXF1aXNpdGlvbnNSZmModGhpcy5yZmMpXHJcbiAgICAgIC5waXBlKGZpbmFsaXplKCgpID0+IHRoaXMub25sb2FkZXIuZW1pdChmYWxzZSkpKSBcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlcykgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlcy5zdWNjZXNzKSB7IFxyXG4gICAgICAgICAgICB0aGlzLnJlcXVpc2l0aW9uc0ZlYSA9IHJlcy5kYXRhLnJlcXVpc2l0aW9ucztcclxuICAgICAgICAgICAgdGhpcy5kb2N1bWVudHNBcHByb3ZhbExpc3QgPSB0aGlzLnJlcXVpc2l0aW9uc0ZlYS5mbGF0TWFwKHJlcXVpc2l0aW9uID0+IFxyXG4gICAgICAgICAgICAgIHJlcXVpc2l0aW9uLmRvY3VtZW50cy5tYXAoZG9jID0+ICh7XHJcbiAgICAgICAgICAgICAgICBkb2M6IGRvYyxcclxuICAgICAgICAgICAgICAgIGlkOiBkb2MuZG9jdW1lbnRJZCxcclxuICAgICAgICAgICAgICAgIGlkUmVxdWlzaXRpb246IHJlcXVpc2l0aW9uLnJlcXVpc2l0aW9uSWQsXHJcbiAgICAgICAgICAgICAgICBhcHByb3ZlZDogdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICAgICAgaXNWaXNpYmxlOiBmYWxzZVxyXG4gICAgICAgICAgICAgIH0pKVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5vbmVycm9yLmVtaXQobmV3IFJlc3BvbnNlRXJyb3IoXHJcbiAgICAgICAgICAgICAgRG9jdW1lbnRBcHByb3ZhbExpc3RFcnJvckNvZGUuU0VSVklDRSxcclxuICAgICAgICAgICAgICBnZXREb2N1bWVudEFwcHJvdmFsTGlzdEVycm9yRGVzY3JpcHRpb24oRG9jdW1lbnRBcHByb3ZhbExpc3RFcnJvckNvZGUuU0VSVklDRSksXHJcbiAgICAgICAgICAgICAgJ25nLWZhZC1wb3J0YWwtc2lnbmF0dXJlLWZlYS1kb2N1bWVudC1hcHByb3ZhbC1saXN0J1xyXG4gICAgICAgICAgICApKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLm9uZXJyb3IuZW1pdChuZXcgUmVzcG9uc2VFcnJvcihcclxuICAgICAgICAgICAgRG9jdW1lbnRBcHByb3ZhbExpc3RFcnJvckNvZGUuSFRUUCxcclxuICAgICAgICAgICAgZ2V0RG9jdW1lbnRBcHByb3ZhbExpc3RFcnJvckRlc2NyaXB0aW9uKERvY3VtZW50QXBwcm92YWxMaXN0RXJyb3JDb2RlLkhUVFApLFxyXG4gICAgICAgICAgICAnbmctZmFkLXBvcnRhbC1zaWduYXR1cmUtZmVhLWRvY3VtZW50LWFwcHJvdmFsLWxpc3QnXHJcbiAgICAgICAgICApKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlQXBwcm92YWwoZG9jdW1lbnQ6IERvY3VtZW50QXBwcm92YWxGZWEpIHtcclxuICAgIGRvY3VtZW50LmFwcHJvdmVkID0gZG9jdW1lbnQuYXBwcm92ZWQgPT09IHRydWUgPyB1bmRlZmluZWQgOiB0cnVlO1xyXG4gICAgdGhpcy51cGRhdGVBcHByb3ZlQWxsU3RhdGUoKTtcclxuICB9XHJcbiAgXHJcbiAgdG9nZ2xlUmVqZWN0aW9uKGRvY3VtZW50OiBEb2N1bWVudEFwcHJvdmFsRmVhKSB7XHJcbiAgICBkb2N1bWVudC5hcHByb3ZlZCA9IGRvY3VtZW50LmFwcHJvdmVkID09PSBmYWxzZSA/IHVuZGVmaW5lZCA6IGZhbHNlO1xyXG4gICAgdGhpcy51cGRhdGVBcHByb3ZlQWxsU3RhdGUoKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZUFwcHJvdmVBbGxTdGF0ZSgpIHtcclxuICAgIHRoaXMuYXBwcm92ZUFsbCA9IHRoaXMuZG9jdW1lbnRzQXBwcm92YWxMaXN0LmV2ZXJ5KGRvYyA9PiBkb2MuYXBwcm92ZWQgPT09IHRydWUpO1xyXG4gIH1cclxuXHJcbiAgYXBwcm92ZUFsbERvY3VtZW50cygpIHtcclxuICAgIHRoaXMuYXBwcm92ZUFsbCA9ICF0aGlzLmFwcHJvdmVBbGw7XHJcbiAgICB0aGlzLmRvY3VtZW50c0FwcHJvdmFsTGlzdC5mb3JFYWNoKGRvYyA9PiBkb2MuYXBwcm92ZWQgPSB0aGlzLmFwcHJvdmVBbGwgPyB0cnVlIDogdW5kZWZpbmVkKTtcclxuICB9XHJcblxyXG4gIGdldEFwcHJvdmVkQ291bnQoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLmRvY3VtZW50c0FwcHJvdmFsTGlzdC5maWx0ZXIoZG9jID0+IGRvYy5hcHByb3ZlZCA9PT0gdHJ1ZSkubGVuZ3RoO1xyXG4gIH1cclxuXHJcbiAgZ2V0UmVqZWN0ZWRDb3VudCgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuZG9jdW1lbnRzQXBwcm92YWxMaXN0LmZpbHRlcihkb2MgPT4gZG9jLmFwcHJvdmVkID09PSBmYWxzZSkubGVuZ3RoO1xyXG4gIH1cclxuXHJcbiAgZW1pdEFwcHJvdmVkRG9jdW1lbnRzKCkge1xyXG4gICAgY29uc3QgYXBwcm92ZWREb2N1bWVudHMgPSB0aGlzLmRvY3VtZW50c0FwcHJvdmFsTGlzdC5maWx0ZXIoZG9jID0+IGRvYy5hcHByb3ZlZCAhPT0gdW5kZWZpbmVkKTtcclxuICAgIGNvbnNvbGUubG9nKGFwcHJvdmVkRG9jdW1lbnRzKTtcclxuICAgIHRoaXMub25ldmVudC5lbWl0KGFwcHJvdmVkRG9jdW1lbnRzKTtcclxuICB9XHJcblxyXG5cclxuXHJcbiAgc2VlRG9jdW1lbnRGZWEoZG9jdW1lbnQ6IERvY3VtZW50QXBwcm92YWxGZWEpIHtcclxuICAgIGRvY3VtZW50LmlzVmlzaWJsZSA9ICFkb2N1bWVudC5pc1Zpc2libGU7XHJcbiAgICBpZiAoZG9jdW1lbnQuaXNWaXNpYmxlKSB7XHJcbiAgICAgIHRoaXMub25sb2FkZXIuZW1pdCh0cnVlKTsgXHJcbiAgICAgIHRoaXMuZmFkLmdldERvY3VtZW50RmVhKGRvY3VtZW50LmlkISAsIHsgbG9hZGVyOiB0cnVlLCBlcnJvcjogdHJ1ZSB9KVxyXG4gICAgICAgIC5waXBlKGZpbmFsaXplKCgpID0+IHRoaXMub25sb2FkZXIuZW1pdChmYWxzZSkpKSBcclxuICAgICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICAgIG5leHQ6IChyZXMpID0+IHtcclxuICAgICAgICAgICAgaWYgKGRvY3VtZW50LmRvYykge1xyXG4gICAgICAgICAgICAgIGNvbnN0IGJ5dGVDaGFyYWN0ZXJzID0gYXRvYihyZXMuZGF0YS5maWxlKTtcclxuICAgICAgICAgICAgICBjb25zdCBieXRlTnVtYmVycyA9IG5ldyBBcnJheShieXRlQ2hhcmFjdGVycy5sZW5ndGgpLmZpbGwoMCkubWFwKChfLCBpKSA9PiBieXRlQ2hhcmFjdGVycy5jaGFyQ29kZUF0KGkpKTtcclxuICAgICAgICAgICAgICBjb25zdCBieXRlQXJyYXkgPSBuZXcgVWludDhBcnJheShieXRlTnVtYmVycyk7XHJcbiAgICAgICAgICAgICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtieXRlQXJyYXldLCB7IHR5cGU6ICdhcHBsaWNhdGlvbi9wZGYnIH0pO1xyXG4gICAgICAgICAgICAgIHRoaXMuZ2V0QmFzZTY0KGJsb2IsIGRvY3VtZW50KTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLm9uZXJyb3IuZW1pdChuZXcgUmVzcG9uc2VFcnJvcihcclxuICAgICAgICAgICAgICAgIERvY3VtZW50QXBwcm92YWxMaXN0RXJyb3JDb2RlLlNFUlZJQ0UsXHJcbiAgICAgICAgICAgICAgICBnZXREb2N1bWVudEFwcHJvdmFsTGlzdEVycm9yRGVzY3JpcHRpb24oRG9jdW1lbnRBcHByb3ZhbExpc3RFcnJvckNvZGUuU0VSVklDRSksXHJcbiAgICAgICAgICAgICAgICAnbmctZmFkLXBvcnRhbC1zaWduYXR1cmUtZmVhLWRvY3VtZW50LWFwcHJvdmFsLWxpc3QnXHJcbiAgICAgICAgICAgICAgKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBlcnJvcjogKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLm9uZXJyb3IuZW1pdChuZXcgUmVzcG9uc2VFcnJvcihcclxuICAgICAgICAgICAgICBEb2N1bWVudEFwcHJvdmFsTGlzdEVycm9yQ29kZS5IVFRQLFxyXG4gICAgICAgICAgICAgIGdldERvY3VtZW50QXBwcm92YWxMaXN0RXJyb3JEZXNjcmlwdGlvbihEb2N1bWVudEFwcHJvdmFsTGlzdEVycm9yQ29kZS5IVFRQKSxcclxuICAgICAgICAgICAgICAnbmctZmFkLXBvcnRhbC1zaWduYXR1cmUtZmVhLWRvY3VtZW50LWFwcHJvdmFsLWxpc3QnXHJcbiAgICAgICAgICAgICkpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZG93bmxvYWREb2N1bWVudEZlYShkb2N1bWVudDogRG9jdW1lbnRBcHByb3ZhbEZlYSkge1xyXG4gICAgdGhpcy5vbmxvYWRlci5lbWl0KHRydWUpOyBcclxuICAgIHRoaXMuZmFkLmdldERvY3VtZW50RmVhKGRvY3VtZW50LmlkISlcclxuICAgICAgLnBpcGUoZmluYWxpemUoKCkgPT4gdGhpcy5vbmxvYWRlci5lbWl0KGZhbHNlKSkpIFxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzKSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzLnN1Y2Nlc3MgJiYgcmVzLmRhdGEuZmlsZSkge1xyXG4gICAgICAgICAgICBjb25zdCBieXRlQ2hhcmFjdGVycyA9IGF0b2IocmVzLmRhdGEuZmlsZSk7XHJcbiAgICAgICAgICAgIGNvbnN0IGJ5dGVOdW1iZXJzID0gbmV3IEFycmF5KGJ5dGVDaGFyYWN0ZXJzLmxlbmd0aCkuZmlsbCgwKS5tYXAoKF8sIGkpID0+IGJ5dGVDaGFyYWN0ZXJzLmNoYXJDb2RlQXQoaSkpO1xyXG4gICAgICAgICAgICBjb25zdCBieXRlQXJyYXkgPSBuZXcgVWludDhBcnJheShieXRlTnVtYmVycyk7XHJcbiAgICAgICAgICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbYnl0ZUFycmF5XSwgeyB0eXBlOiAnYXBwbGljYXRpb24vcGRmJyB9KTtcclxuICAgICAgICAgICAgY29uc3QgbGluayA9IHdpbmRvdy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XHJcbiAgICAgICAgICAgIGxpbmsuaHJlZiA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XHJcbiAgICAgICAgICAgIGxpbmsuZG93bmxvYWQgPSBkb2N1bWVudC5kb2M/Lm5hbWUgfHwgJ2RvY3VtZW50LnBkZic7XHJcbiAgICAgICAgICAgIHdpbmRvdy5kb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGxpbmspO1xyXG4gICAgICAgICAgICBsaW5rLmNsaWNrKCk7XHJcbiAgICAgICAgICAgIHdpbmRvdy5kb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGxpbmspO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5vbmVycm9yLmVtaXQobmV3IFJlc3BvbnNlRXJyb3IoXHJcbiAgICAgICAgICAgICAgRG9jdW1lbnRBcHByb3ZhbExpc3RFcnJvckNvZGUuU0VSVklDRSxcclxuICAgICAgICAgICAgICBnZXREb2N1bWVudEFwcHJvdmFsTGlzdEVycm9yRGVzY3JpcHRpb24oRG9jdW1lbnRBcHByb3ZhbExpc3RFcnJvckNvZGUuU0VSVklDRSksXHJcbiAgICAgICAgICAgICAgJ25nLWZhZC1wb3J0YWwtc2lnbmF0dXJlLWZlYS1kb2N1bWVudC1hcHByb3ZhbC1saXN0J1xyXG4gICAgICAgICAgICApKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLm9uZXJyb3IuZW1pdChuZXcgUmVzcG9uc2VFcnJvcihcclxuICAgICAgICAgICAgRG9jdW1lbnRBcHByb3ZhbExpc3RFcnJvckNvZGUuSFRUUCxcclxuICAgICAgICAgICAgZ2V0RG9jdW1lbnRBcHByb3ZhbExpc3RFcnJvckRlc2NyaXB0aW9uKERvY3VtZW50QXBwcm92YWxMaXN0RXJyb3JDb2RlLkhUVFApLFxyXG4gICAgICAgICAgICAnbmctZmFkLXBvcnRhbC1zaWduYXR1cmUtZmVhLWRvY3VtZW50LWFwcHJvdmFsLWxpc3QnXHJcbiAgICAgICAgICApKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuICBcclxuICBhc3luYyBnZXRCYXNlNjQoYmxvYjogQmxvYixkb2N1bWVudDogRG9jdW1lbnRBcHByb3ZhbEZlYSkge1xyXG4gICBjb25zb2xlLmxvZyhibG9iKVxyXG4gICAgY29uc3QgZGF0YSA9IG5ldyBGaWxlKFtibG9iXSwgJ2ZpbGUucGRmJywgeyB0eXBlOiAnYXBwbGljYXRpb24vcGRmJyB9KTtcclxuICAgIGNvbnN0IGJhc2U2NCA9ICBhd2FpdCBTaGFyZWRVdGlscy5maWxlVG9CYXNlNjQoZGF0YSk7XHJcbiAgICBpZiAoYmFzZTY0KSB7XHJcbiAgICAgIHRoaXMuaW5pdGlhbGl6ZVBkZihiYXNlNjQgYXMgc3RyaW5nLGRvY3VtZW50KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMub25lcnJvci5lbWl0KG5ldyBSZXNwb25zZUVycm9yKERvY3VtZW50QXBwcm92YWxMaXN0RXJyb3JDb2RlLkVSUk9SX1BERiwgZ2V0RG9jdW1lbnRBcHByb3ZhbExpc3RFcnJvckRlc2NyaXB0aW9uKERvY3VtZW50QXBwcm92YWxMaXN0RXJyb3JDb2RlLkhUVFApLCAnbmctZmFkLXBvcnRhbC1zaWduYXR1cmUtZmVhLWRvY3VtZW50LWFwcHJvdmFsLWxpc3QnKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpbml0aWFsaXplUGRmKHBkZjogc3RyaW5nLCBkb2N1bWVudDogRG9jdW1lbnRBcHByb3ZhbEZlYSkge1xyXG4gICAgaWYgKCF0aGlzLnBhZ2VzTWFwLmhhcyhkb2N1bWVudC5pZCEpKSB7XHJcbiAgICAgIHRoaXMucGFnZXNNYXAuc2V0KGRvY3VtZW50LmlkISwgW10pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5wYWdlc01hcC5nZXQoZG9jdW1lbnQuaWQhKSEubGVuZ3RoID0gMDtcclxuICAgIH1cclxuICBcclxuICAgIHRoaXMucGRmU2VydmljZS5pbml0aWFsaXplKHBkZiwgU2hhcmVkVXRpbHMuZ2VuZXJhdGVVVUlEKCkpO1xyXG4gICAgdGhpcy5nZXRQYWdlcyhkb2N1bWVudCk7XHJcbiAgfVxyXG4gIFxyXG4gIGdldFBhZ2VzKGRvY3VtZW50OiBEb2N1bWVudEFwcHJvdmFsRmVhKSB7XHJcbiAgICBpZiAoIXRoaXMucGFnZXNNYXAuaGFzKGRvY3VtZW50LmlkISkpIHtcclxuICAgICAgdGhpcy5wYWdlc01hcC5zZXQoZG9jdW1lbnQuaWQhLCBbXSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnBhZ2VzTWFwLmdldChkb2N1bWVudC5pZCEpIS5sZW5ndGggPSAwOyBcclxuICAgIH1cclxuICBcclxuICAgIGlmICh0aGlzLnBkZkxpYnJhcnkpIHtcclxuICAgICAgdGhpcy5wZGZMaWJyYXJ5LnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgXHJcbiAgICB0aGlzLnBkZkxpYnJhcnkgPSB0aGlzLnBkZlNlcnZpY2UucGFnZXMuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgIGNvbnN0IGRvY1BhZ2VzID0gdGhpcy5wYWdlc01hcC5nZXQoZG9jdW1lbnQuaWQhKSE7XHJcbiAgICAgIGRvY1BhZ2VzLnB1c2gocmVzKTtcclxuICBcclxuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cclxuICAgIH0pO1xyXG4gIFxyXG4gIH1cclxuICBcclxuXHJcbiAgLy9QREYgR2VuZXJhbCB2aWV3ZXIgbWV0aG9kc1xyXG5cclxuICBvbnBhZ2VjaGFuZ2UocGFnZTogbnVtYmVyKSB7XHJcbiAgICB0aGlzLnBhZ2UgPSBwYWdlO1xyXG4gIH1cclxuXHJcbiAgc2Nyb2xsVG9QYWdlKHBhZ2U6IG51bWJlcikge1xyXG4gICAgdGhpcy5nZW5lcmFsUGRmVmlld2VyQ29tcG9uZW50LnNjcm9sbFRvUGFnZShwYWdlKTtcclxuICB9XHJcblxyXG4gIG9ubG9hZHBhZ2UoZGF0YTogUmVzcG9uc2VTdWNjZXNzKSB7XHJcbiAgICBpZiAoZGF0YS5wYWdlID09IDEpIHtcclxuICAgICAgY29uc3QgaWQgPSBcImZhZC12aWV3ZXItcGFnZS12MS0xXCI7XHJcbiAgICAgIGNvbnN0IGR5bmFtaWNEaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCk7O1xyXG4gICAgICB0aGlzLmhlaWdodCA9IGR5bmFtaWNEaXYhLmNsaWVudEhlaWdodCArICdweCc7XHJcblxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0Q3VzdG9taXphdGlvblN0eWxlKHRhcmdldEVsZW1lbnQgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpOiB2b2lkIHtcclxuICAgICAgdGhpcy5jb25maWd1cmF0aW9uID0gVXRpbHMubWVyZ2VDb25maWd1cmF0aW9uKFxyXG4gICAgICAgIG5ldyBDb25maWd1cmF0aW9uKCksXHJcbiAgICAgICAgRE9DVU1FTlRfQVBQUk9WQUxfTElTVF9ERUZBVUxULFxyXG4gICAgICAgIHRoaXMuY29uZmlndXJhdGlvblxyXG4gICAgICApO1xyXG4gICAgfVxyXG59XHJcbiIsIlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcmVxdWlzaXRpb24gb2YgcmVxdWlzaXRpb25zRmVhXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZhZC1wb3J0YWwtY29udGVudFwiID5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRlclwiID5cclxuICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZhZC1wb3J0YWwtdGl0bGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgcmVxdWlzaXRpb24ubmFtZSB9fSAoe3tyZXF1aXNpdGlvbi5kb2N1bWVudHMubGVuZ3RofX0pXHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImluZm9cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3tjb25maWd1cmF0aW9uLmN1c3RvbWl6YXRpb24/Lm1vZHVsZUN1c3RvbWl6YXRpb24/LmxlZ2VuZHM/LnNlbmRUb319IEFsZnJlZG8gVmlsbGFudWV2YSAge3sgcmVxdWlzaXRpb24uc2VuZEJ5IH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImluZm9cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgcmVxdWlzaXRpb24uc2VuZEJ5RW1haWwgfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlcXVpc2l0aW9uLWlkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZhZC1wb3J0YWwtc3VidGl0bGUtYm9sZFwiPklEIHt7IHJlcXVpc2l0aW9uLnJlcXVpc2l0aW9uSWQgfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRvY3VtZW50cy1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGRvY3VtZW50IG9mIGRvY3VtZW50c0FwcHJvdmFsTGlzdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkb2N1bWVudC5pZFJlcXVpc2l0aW9uID09PSByZXF1aXNpdGlvbi5yZXF1aXNpdGlvbklkXCIgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZG9jdW1lbnRcIiAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImluZm9ybWF0aW9uXCIgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkb2N1bWVudC1uYW1lIGZhZC1wb3J0YWwtc3VidGl0bGUtYm9sZFwiID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZG9jdW1lbnQuZG9jPy5uYW1lIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZhbGlkYXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctZmFkLWltYWdlLWlubGluZSBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3JjXT1cImRvY3VtZW50LmFwcHJvdmVkID09PSBmYWxzZSA/IGltYWdlcy5hY3RpdmUucmVqZWN0IDogaW1hZ2VzLmluYWN0aXZlLnJlamVjdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVJlamVjdGlvbihkb2N1bWVudClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1mYWQtaW1hZ2UtaW5saW5lPlxyXG4gICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWZhZC1pbWFnZS1pbmxpbmUgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJkb2N1bWVudC5hcHByb3ZlZCA9PT0gdHJ1ZSA/IGltYWdlcy5hY3RpdmUuYXBwcm92ZSA6IGltYWdlcy5pbmFjdGl2ZS5hcHByb3ZlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlQXBwcm92YWwoZG9jdW1lbnQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctZmFkLWltYWdlLWlubGluZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFjdGlvbnNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmFkLXBvcnRhbC1zdWJ0aXRsZS1ib2xkXCIgKGNsaWNrKT1cInNlZURvY3VtZW50RmVhKGRvY3VtZW50KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZG9jdW1lbnQuaXNWaXNpYmxlID8gJ09jdWx0YXIgZG9jdW1lbnRvJyA6ICdWZXIgZG9jdW1lbnRvJyB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZhZC1wb3J0YWwtc3VidGl0bGUtYm9sZFwiIChjbGljayk9XCJkb3dubG9hZERvY3VtZW50RmVhKGRvY3VtZW50KVwiPnt7Y29uZmlndXJhdGlvbi5jdXN0b21pemF0aW9uPy5tb2R1bGVDdXN0b21pemF0aW9uPy5sZWdlbmRzPy5kb3dubG9hZH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZG9jdW1lbnQuZG9jPy5wYWdlcyB9fSB7e2NvbmZpZ3VyYXRpb24uY3VzdG9taXphdGlvbj8ubW9kdWxlQ3VzdG9taXphdGlvbj8ubGVnZW5kcz8ucGFnZXN9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGRmLXZpZXdlclwiICpuZ0lmPVwiZG9jdW1lbnQuaXNWaXNpYmxlXCIgICBbc3R5bGUuaGVpZ2h0LnB4XT1cIjEwMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctZmFkLXZpZXdlci1nZW5lcmFsLXBkZi12aWV3ZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwYWdlc109XCJwYWdlc01hcC5nZXQoZG9jdW1lbnQuaWQhKSA/PyBbXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25wYWdlY2hhbmdlKT1cIm9ucGFnZWNoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvbmxvYWRwYWdlKT1cIm9ubG9hZHBhZ2UoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWZhZC12aWV3ZXItcGRmLW1pbmktdmlld1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5pVmlld1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29uZmlndXJhdGlvbl09XCJtaW5pVmlld1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwYWdlc109XCJwYWdlc01hcC5nZXQoZG9jdW1lbnQuaWQhKSA/PyBbXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwYWdlXT1cInBhZ2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25wYWdlY2hhbmdlKT1cInNjcm9sbFRvUGFnZSgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWZhZC12aWV3ZXItcGRmLW1pbmktdmlldz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctZmFkLXZpZXdlci1nZW5lcmFsLXBkZi12aWV3ZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDxkaXYgY2xhc3M9XCJmYWQtcG9ydGFsLWNvbnRlbnQgc2VsZWN0b3ItZG9jdW1lbnRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZG9jdW1lbnQtc3RhdHVzLWJhclwiPlxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cImdldEFwcHJvdmVkQ291bnQoKSA9PT0gMCAmJiBnZXRSZWplY3RlZENvdW50KCkgPT09IDBcIiBjbGFzcz1cImRvY3VtZW50LXN0YXR1cy1tZXNzYWdlIFwiPlxyXG4gICAgICAgICAgICAgICAgQXBydWViYSBsb3MgZG9jdW1lbnRvcyBwYXJhIGZpcm1hcmxvcyBjb24gdHUgZS5maXJtYVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgIFxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJnZXRBcHByb3ZlZENvdW50KCkgPiAwIHx8IGdldFJlamVjdGVkQ291bnQoKSA+IDBcIiBjbGFzcz1cImRvY3VtZW50LXN0YXR1cy1jb250ZW50XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXBwcm92ZS1hbGxcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctZmFkLWltYWdlLWlubGluZSBcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJhcHByb3ZlQWxsID8gaW1hZ2VzLmFjdGl2ZS5hcHByb3ZlIDogaW1hZ2VzLmluYWN0aXZlLmFwcHJvdmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYXBwcm92ZUFsbERvY3VtZW50cygpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1mYWQtaW1hZ2UtaW5saW5lPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIChjbGljayk9XCJhcHByb3ZlQWxsRG9jdW1lbnRzKClcIj5BcHJvYmFyIHRvZG9zIGxvcyBkb2N1bWVudG9zICh7eyBkb2N1bWVudHNBcHByb3ZhbExpc3QubGVuZ3RoIH19KTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgXHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkb2N1bWVudC1jb3VudHNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImdldEFwcHJvdmVkQ291bnQoKSA+IDAgJiYgZ2V0UmVqZWN0ZWRDb3VudCgpID09PSAwXCIgY2xhc3M9XCJmYWQtcG9ydGFsLWluZm9ybWF0aXZlLWJvbGRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgZ2V0QXBwcm92ZWRDb3VudCgpIH19IGRvY3VtZW50b3MgYXByb2JhZG9zXHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZ2V0UmVqZWN0ZWRDb3VudCgpID4gMCAmJiBnZXRBcHByb3ZlZENvdW50KCkgPT09IDBcIiBjbGFzcz1cImZhZC1wb3J0YWwtaW5mb3JtYXRpdmUtYm9sZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBnZXRSZWplY3RlZENvdW50KCkgfX0gZG9jdW1lbnRvcyByZWNoYXphZG9zXHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJnZXRBcHByb3ZlZENvdW50KCkgPiAwICYmIGdldFJlamVjdGVkQ291bnQoKSA+IDBcIiA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICBjbGFzcz1cImZhZC1wb3J0YWwtaW5mb3JtYXRpdmUtYm9sZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZ2V0QXBwcm92ZWRDb3VudCgpIH19IGRvY3VtZW50b3MgYXByb2JhZG9zXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gIGNsYXNzPVwiZmFkLXBvcnRhbC1pbmZvcm1hdGl2ZS1ib2xkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBnZXRSZWplY3RlZENvdW50KCkgfX0gZG9jdW1lbnRvcyByZWNoYXphZG9zXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgXHJcbiAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImZhZC1wb3J0YWwtcHJpbWFyeVwiIChjbGljayk9XCJlbWl0QXBwcm92ZWREb2N1bWVudHMoKVwiPkNvbnRpbnVhcjwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgXHJcblxyXG4iXX0=
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Component, Input } from '@angular/core';
|
|
2
|
+
import { GENERIC_ERROR_FEA_CONFIGURATION_DEFAULT } from '../../constants';
|
|
3
|
+
import { Utils } from '@fad-producto-portal/fad-common/utils/utils';
|
|
4
|
+
import { Configuration } from '@fad-producto-portal/fad-common/models/core';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@fad-producto/ng-fad-image-inline";
|
|
7
|
+
export class GenericErrorFeaComponent {
|
|
8
|
+
ngOnInit() {
|
|
9
|
+
this.setCustomizationStyle();
|
|
10
|
+
this.errorIgm = this.configuration.pathDependencies?.images?.error || `${this.configuration.pathDependencies?.imageDirectory}error.svg`;
|
|
11
|
+
}
|
|
12
|
+
setCustomizationStyle(targetElement = document.documentElement) {
|
|
13
|
+
this.configuration = Utils.mergeConfiguration(new Configuration(), GENERIC_ERROR_FEA_CONFIGURATION_DEFAULT, this.configuration);
|
|
14
|
+
}
|
|
15
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GenericErrorFeaComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
16
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: GenericErrorFeaComponent, selector: "ng-fad-signature-fea-generic-error-fea", inputs: { configuration: "configuration", title: "title", instruction: "instruction" }, ngImport: i0, template: "<ng-fad-image-inline [src]=\"errorIgm\"></ng-fad-image-inline>\n<div class=\"fad-portal-title-bold\">{{ title ? title : configuration.customization?.moduleCustomization?.legends?.title }}</div>\n<div class=\"fad-portal-content\">{{ instruction ? instruction : configuration.customization?.moduleCustomization?.legends?.instruction }}</div>\n", styles: [":host{display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;gap:var(--fad-portal-common-separation-md)}\n"], dependencies: [{ kind: "component", type: i1.NgFadImageInlineComponent, selector: "ng-fad-image-inline", inputs: ["src"] }] }); }
|
|
17
|
+
}
|
|
18
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GenericErrorFeaComponent, decorators: [{
|
|
19
|
+
type: Component,
|
|
20
|
+
args: [{ selector: 'ng-fad-signature-fea-generic-error-fea', template: "<ng-fad-image-inline [src]=\"errorIgm\"></ng-fad-image-inline>\n<div class=\"fad-portal-title-bold\">{{ title ? title : configuration.customization?.moduleCustomization?.legends?.title }}</div>\n<div class=\"fad-portal-content\">{{ instruction ? instruction : configuration.customization?.moduleCustomization?.legends?.instruction }}</div>\n", styles: [":host{display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;gap:var(--fad-portal-common-separation-md)}\n"] }]
|
|
21
|
+
}], propDecorators: { configuration: [{
|
|
22
|
+
type: Input
|
|
23
|
+
}], title: [{
|
|
24
|
+
type: Input
|
|
25
|
+
}], instruction: [{
|
|
26
|
+
type: Input
|
|
27
|
+
}] } });
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy1lcnJvci1mZWEuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZmFkLXByb2R1Y3RvLXBvcnRhbC9uZy1mYWQtc2lnbmF0dXJlLWZlYS9zcmMvbGliL2NvbXBvbmVudHMvZ2VuZXJpYy1lcnJvci1mZWEvZ2VuZXJpYy1lcnJvci1mZWEuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZmFkLXByb2R1Y3RvLXBvcnRhbC9uZy1mYWQtc2lnbmF0dXJlLWZlYS9zcmMvbGliL2NvbXBvbmVudHMvZ2VuZXJpYy1lcnJvci1mZWEvZ2VuZXJpYy1lcnJvci1mZWEuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUFFLHVDQUF1QyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFMUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQzs7O0FBTzVFLE1BQU0sT0FBTyx3QkFBd0I7SUFNbkMsUUFBUTtRQUNOLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsRUFBRSxNQUFNLEVBQUUsS0FBSyxJQUFJLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsRUFBRSxjQUFjLFdBQVcsQ0FBQztJQUMxSSxDQUFDO0lBRUQscUJBQXFCLENBQUMsYUFBYSxHQUFHLFFBQVEsQ0FBQyxlQUFlO1FBQzVELElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDLGtCQUFrQixDQUFDLElBQUksYUFBYSxFQUFFLEVBQUUsdUNBQXVDLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ2xJLENBQUM7K0dBYlUsd0JBQXdCO21HQUF4Qix3QkFBd0Isc0tDWHJDLHVWQUdBOzs0RkRRYSx3QkFBd0I7a0JBTHBDLFNBQVM7K0JBQ0Usd0NBQXdDOzhCQUt6QyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBHRU5FUklDX0VSUk9SX0ZFQV9DT05GSUdVUkFUSU9OX0RFRkFVTFQgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgSUdlbmVyaWNFcnJvckZlYUNvbmZpZ3VyYXRpb24gfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHsgVXRpbHMgfSBmcm9tICdAZmFkLXByb2R1Y3RvLXBvcnRhbC9mYWQtY29tbW9uL3V0aWxzL3V0aWxzJztcbmltcG9ydCB7IENvbmZpZ3VyYXRpb24gfSBmcm9tICdAZmFkLXByb2R1Y3RvLXBvcnRhbC9mYWQtY29tbW9uL21vZGVscy9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmctZmFkLXNpZ25hdHVyZS1mZWEtZ2VuZXJpYy1lcnJvci1mZWEnLFxuICB0ZW1wbGF0ZVVybDogJy4vZ2VuZXJpYy1lcnJvci1mZWEuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9nZW5lcmljLWVycm9yLWZlYS5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIEdlbmVyaWNFcnJvckZlYUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIGNvbmZpZ3VyYXRpb24hOiBJR2VuZXJpY0Vycm9yRmVhQ29uZmlndXJhdGlvbjtcbiAgQElucHV0KCkgdGl0bGUhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGluc3RydWN0aW9uITogc3RyaW5nO1xuICBlcnJvcklnbSE6IHN0cmluZztcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNldEN1c3RvbWl6YXRpb25TdHlsZSgpO1xuICAgIHRoaXMuZXJyb3JJZ20gPSB0aGlzLmNvbmZpZ3VyYXRpb24ucGF0aERlcGVuZGVuY2llcz8uaW1hZ2VzPy5lcnJvciB8fCBgJHt0aGlzLmNvbmZpZ3VyYXRpb24ucGF0aERlcGVuZGVuY2llcz8uaW1hZ2VEaXJlY3Rvcnl9ZXJyb3Iuc3ZnYDtcbiAgfVxuXG4gIHNldEN1c3RvbWl6YXRpb25TdHlsZSh0YXJnZXRFbGVtZW50ID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KTogdm9pZCB7XG4gICAgdGhpcy5jb25maWd1cmF0aW9uID0gVXRpbHMubWVyZ2VDb25maWd1cmF0aW9uKG5ldyBDb25maWd1cmF0aW9uKCksIEdFTkVSSUNfRVJST1JfRkVBX0NPTkZJR1VSQVRJT05fREVGQVVMVCwgdGhpcy5jb25maWd1cmF0aW9uKTtcbiAgfVxufVxuIiwiPG5nLWZhZC1pbWFnZS1pbmxpbmUgW3NyY109XCJlcnJvcklnbVwiPjwvbmctZmFkLWltYWdlLWlubGluZT5cbjxkaXYgY2xhc3M9XCJmYWQtcG9ydGFsLXRpdGxlLWJvbGRcIj57eyB0aXRsZSA/IHRpdGxlIDogY29uZmlndXJhdGlvbi5jdXN0b21pemF0aW9uPy5tb2R1bGVDdXN0b21pemF0aW9uPy5sZWdlbmRzPy50aXRsZSB9fTwvZGl2PlxuPGRpdiBjbGFzcz1cImZhZC1wb3J0YWwtY29udGVudFwiPnt7IGluc3RydWN0aW9uID8gaW5zdHJ1Y3Rpb24gOiBjb25maWd1cmF0aW9uLmN1c3RvbWl6YXRpb24/Lm1vZHVsZUN1c3RvbWl6YXRpb24/LmxlZ2VuZHM/Lmluc3RydWN0aW9uIH19PC9kaXY+XG4iXX0=
|