@dsivd/prestations-ng 17.8.2-beta.2 → 17.9.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -6,6 +6,8 @@
6
6
 
7
7
  ---
8
8
 
9
+ ## [17.9.0] - should be aligned with prestations-be 17.9.0
10
+
9
11
  ## [17.8.2]
10
12
 
11
13
  ### Fixed
package/UPGRADING_V17.md CHANGED
@@ -251,16 +251,20 @@ If you have captcha cloudflare setup already, you need to remove `CAPTCHA_URL_TO
251
251
  })
252
252
  ```
253
253
 
254
- Else, you want to set it up by updating config keys (all environments)
254
+ #### Cloudflare turnstile verify delegated to Cybercache
255
255
 
256
- ```diff
257
- - recaptcha.secretkey=XXX
258
- - recaptcha.publickey=YYY
259
- + recaptcha.secretkey=<encrypted key>
260
- + recaptcha.publickey=0x4AAAAAAAOmGOIAyj2IGZdl (PR : 0x4AAAAAAAP2z-zwJP_3g-0T)
261
- ```
256
+ Verification of the captcha is now made by Cybercache and not by the application itself (through `prestations-be`). You should remove all properties like `recaptcha.XXX`.
257
+ All these properties are now stored in Cybercache's configuration.
258
+
259
+ Therefore, you can remove properties related to this configuration :
260
+
261
+ - `recaptcha.byPassUUID`
262
+ - `recaptcha.proxyUrl`
263
+ - `recaptcha.proxyPort`
264
+ - `recaptcha.secretkey`
265
+ - `recaptcha.publickey`
262
266
 
263
- You can obtain a Cloudflare Trunstile key by creating a free account on https://dash.cloudflare.com/sign-up or writing an e-mail to imt.portail[at]vd.ch
267
+ Cookie storage is kept as before, therefore you can keep cookie related properties that starts with `recaptcha.cookie.YYY` in your properties.
264
268
 
265
269
  ### gesdem-confirmation / foehn-feedback-notification
266
270
 
@@ -0,0 +1,21 @@
1
+ # PRESTAKIT : Upgrading from v17 to v18
2
+
3
+ For the commands in this guide, it is supposed that your are in the `front` folder of your project.
4
+
5
+ ## PRESTATIONS-BE
6
+
7
+ From here on, we are back in the root folder of your project
8
+
9
+ ### Captcha configuration
10
+
11
+ - As stated in the migration guide from v16 to v17, Cybercache is responsible of the captcha turnstile verify call.
12
+ - Therefore, you can remove properties related to this configuration :
13
+ - `recaptcha.byPassUUID`
14
+ - `recaptcha.proxyUrl`
15
+ - `recaptcha.proxyPort`
16
+ - `recaptcha.secretkey`
17
+ - `recaptcha.publickey`
18
+
19
+ Cookie storage is kept as before, therefore you can keep cookie related properties that starts with `recaptcha.cookie.YYY` in your properties.
20
+
21
+ See [Skeleton](https://dsigit.etat-de-vaud.ch/outils/git/projects/CYBSDK/repos/skeleton/pull-requests/708/overview) for a working example
@@ -19,4 +19,4 @@ export class Captcha {
19
19
  }
20
20
  export class Portail {
21
21
  }
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb24taW5mby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9zZGstYXBwaW5mby9hcHBsaWNhdGlvbi1pbmZvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHNDQUFzQztBQUN0QyxNQUFNLE9BQU8sZUFBZTtJQUE1QjtRQVFJLGtCQUFhLEdBQWtCLElBQUksYUFBYSxFQUFFLENBQUM7SUFFdkQsQ0FBQztDQUFBO0FBRUQsTUFBTSxPQUFPLFNBQVM7Q0FhckI7QUFFRCxNQUFNLE9BQU8sYUFBYTtJQUExQjtRQUVJLFlBQU8sR0FBWSxJQUFJLE9BQU8sRUFBRSxDQUFDO0lBR3JDLENBQUM7Q0FBQTtBQUVELE1BQU0sT0FBTyxPQUFPO0NBR25CO0FBRUQsTUFBTSxPQUFPLFFBQVE7Q0FLcEI7QUFFRCxNQUFNLE9BQU8sT0FBTztDQUVuQjtBQUVELE1BQU0sT0FBTyxPQUFPO0NBT25CIiwic291cmNlc0NvbnRlbnQiOlsiLy8gZXNsaW50LWRpc2FibGUgbWF4LWNsYXNzZXMtcGVyLWZpbGVcbmV4cG9ydCBjbGFzcyBBcHBsaWNhdGlvbkluZm8ge1xuICAgIHZlcnNpb246IHN0cmluZztcbiAgICBidWlsZHRpbWU6IHN0cmluZztcbiAgICBjb250ZXh0UGF0aDogc3RyaW5nO1xuICAgIGVudmlyb25tZW50OiBzdHJpbmc7XG4gICAgZW52aXJvbm1lbnRMYWJlbDogc3RyaW5nO1xuICAgIGFwcFByb3BlcnRpZXM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG4gICAgZXRhcGVJbmZvczogeyBba2V5OiBzdHJpbmddOiBFdGFwZUluZm8gfTtcbiAgICBjb25maWd1cmF0aW9uOiBDb25maWd1cmF0aW9uID0gbmV3IENvbmZpZ3VyYXRpb24oKTtcbiAgICBtb2NrZWRTZXJ2aWNlczogc3RyaW5nW107XG59XG5cbmV4cG9ydCBjbGFzcyBFdGFwZUluZm8ge1xuICAgIHRpdHJlRXRhcGU6IHN0cmluZztcbiAgICBpZE1ldGllckV0YXBlOiBzdHJpbmc7XG4gICAgcmVwcmlzZVBvc3NpYmxlOiBib29sZWFuO1xuICAgIHRpdHJlUHJlc3RhdGlvbjogc3RyaW5nO1xuICAgIGlkTWV0aWVyUHJlc3RhdGlvbjogc3RyaW5nO1xuICAgIHB1YmxpY0NpYmxlOiBzdHJpbmdbXTtcbiAgICBkZWNpc2lvbkVsZWN0cm9uaXF1ZUF2YWlsYWJsZTogYm9vbGVhbjtcbiAgICBkZXBsb3llZUN5YmVyOiBib29sZWFuO1xuICAgIGxpZW5BY2Nlczogc3RyaW5nO1xuICAgIGRyYWZ0RGVtUmV0ZW50aW9uRGF5c1B1YmxpYzogbnVtYmVyO1xuICAgIGRyYWZ0RGVtUmV0ZW50aW9uRGF5c0Nvbm5lY3RlZDogbnVtYmVyO1xuICAgIHVzZXJGZWVkYmFja1JlcXVlc3RlZD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjbGFzcyBDb25maWd1cmF0aW9uIHtcbiAgICBjYXB0Y2hhPzogQ2FwdGNoYTtcbiAgICBwb3J0YWlsOiBQb3J0YWlsID0gbmV3IFBvcnRhaWwoKTtcbiAgICBkb2N1bWVudD86IERvY3VtZW50O1xuICAgIHNlc3Npb24/OiBTZXNzaW9uO1xufVxuXG5leHBvcnQgY2xhc3MgU2Vzc2lvbiB7XG4gICAgc2Vzc2lvblRva2VuTWVzc2FnZURlbGF5SW5NaW51dGVzOiBudW1iZXI7XG4gICAgaWFtTWVzc2FnZURlbGF5SW5NaW51dGVzOiBudW1iZXI7XG59XG5cbmV4cG9ydCBjbGFzcyBEb2N1bWVudCB7XG4gICAgZmlsZU1heFNpemVJbkJ5dGVzQnlGb3JtS2V5OiB7IFtrZXk6IHN0cmluZ106IG51bWJlciB9O1xuICAgIG1heEZpbGVOYW1lTGVuZ3RoOiBzdHJpbmc7XG4gICAgZmlsZUV4dGVuc2lvbnM6IHN0cmluZztcbiAgICBpbGxlZ2FsQ2hhcmFjdGVyczogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgQ2FwdGNoYSB7XG4gICAgcHVibGlja2V5Pzogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgUG9ydGFpbCB7XG4gICAgYmFzZVZkQ2hVcmw/OiBzdHJpbmc7XG4gICAgY3liZXJMb2dpblVybD86IHN0cmluZztcbiAgICBzdXBwb3J0Rm9ybVVybD86IHN0cmluZztcbiAgICBlc3BhY2VTZWN1cmlzZVVybD86IHN0cmluZztcbiAgICBwb3J0YWlsVGl0bGVzQnlQcmVzdGFDb2RlPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcbiAgICBiYXNlVXJsPzogc3RyaW5nO1xufVxuIl19
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb24taW5mby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9zZGstYXBwaW5mby9hcHBsaWNhdGlvbi1pbmZvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHNDQUFzQztBQUN0QyxNQUFNLE9BQU8sZUFBZTtJQUE1QjtRQVFJLGtCQUFhLEdBQWtCLElBQUksYUFBYSxFQUFFLENBQUM7SUFFdkQsQ0FBQztDQUFBO0FBRUQsTUFBTSxPQUFPLFNBQVM7Q0FhckI7QUFFRCxNQUFNLE9BQU8sYUFBYTtJQUExQjtRQUVJLFlBQU8sR0FBWSxJQUFJLE9BQU8sRUFBRSxDQUFDO0lBR3JDLENBQUM7Q0FBQTtBQUVELE1BQU0sT0FBTyxPQUFPO0NBR25CO0FBRUQsTUFBTSxPQUFPLFFBQVE7Q0FLcEI7QUFFRCxNQUFNLE9BQU8sT0FBTztDQUduQjtBQUVELE1BQU0sT0FBTyxPQUFPO0NBT25CIiwic291cmNlc0NvbnRlbnQiOlsiLy8gZXNsaW50LWRpc2FibGUgbWF4LWNsYXNzZXMtcGVyLWZpbGVcbmV4cG9ydCBjbGFzcyBBcHBsaWNhdGlvbkluZm8ge1xuICAgIHZlcnNpb246IHN0cmluZztcbiAgICBidWlsZHRpbWU6IHN0cmluZztcbiAgICBjb250ZXh0UGF0aDogc3RyaW5nO1xuICAgIGVudmlyb25tZW50OiBzdHJpbmc7XG4gICAgZW52aXJvbm1lbnRMYWJlbDogc3RyaW5nO1xuICAgIGFwcFByb3BlcnRpZXM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG4gICAgZXRhcGVJbmZvczogeyBba2V5OiBzdHJpbmddOiBFdGFwZUluZm8gfTtcbiAgICBjb25maWd1cmF0aW9uOiBDb25maWd1cmF0aW9uID0gbmV3IENvbmZpZ3VyYXRpb24oKTtcbiAgICBtb2NrZWRTZXJ2aWNlczogc3RyaW5nW107XG59XG5cbmV4cG9ydCBjbGFzcyBFdGFwZUluZm8ge1xuICAgIHRpdHJlRXRhcGU6IHN0cmluZztcbiAgICBpZE1ldGllckV0YXBlOiBzdHJpbmc7XG4gICAgcmVwcmlzZVBvc3NpYmxlOiBib29sZWFuO1xuICAgIHRpdHJlUHJlc3RhdGlvbjogc3RyaW5nO1xuICAgIGlkTWV0aWVyUHJlc3RhdGlvbjogc3RyaW5nO1xuICAgIHB1YmxpY0NpYmxlOiBzdHJpbmdbXTtcbiAgICBkZWNpc2lvbkVsZWN0cm9uaXF1ZUF2YWlsYWJsZTogYm9vbGVhbjtcbiAgICBkZXBsb3llZUN5YmVyOiBib29sZWFuO1xuICAgIGxpZW5BY2Nlczogc3RyaW5nO1xuICAgIGRyYWZ0RGVtUmV0ZW50aW9uRGF5c1B1YmxpYzogbnVtYmVyO1xuICAgIGRyYWZ0RGVtUmV0ZW50aW9uRGF5c0Nvbm5lY3RlZDogbnVtYmVyO1xuICAgIHVzZXJGZWVkYmFja1JlcXVlc3RlZD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjbGFzcyBDb25maWd1cmF0aW9uIHtcbiAgICBjYXB0Y2hhPzogQ2FwdGNoYTtcbiAgICBwb3J0YWlsOiBQb3J0YWlsID0gbmV3IFBvcnRhaWwoKTtcbiAgICBkb2N1bWVudD86IERvY3VtZW50O1xuICAgIHNlc3Npb24/OiBTZXNzaW9uO1xufVxuXG5leHBvcnQgY2xhc3MgU2Vzc2lvbiB7XG4gICAgc2Vzc2lvblRva2VuTWVzc2FnZURlbGF5SW5NaW51dGVzOiBudW1iZXI7XG4gICAgaWFtTWVzc2FnZURlbGF5SW5NaW51dGVzOiBudW1iZXI7XG59XG5cbmV4cG9ydCBjbGFzcyBEb2N1bWVudCB7XG4gICAgZmlsZU1heFNpemVJbkJ5dGVzQnlGb3JtS2V5OiB7IFtrZXk6IHN0cmluZ106IG51bWJlciB9O1xuICAgIG1heEZpbGVOYW1lTGVuZ3RoOiBzdHJpbmc7XG4gICAgZmlsZUV4dGVuc2lvbnM6IHN0cmluZztcbiAgICBpbGxlZ2FsQ2hhcmFjdGVyczogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgQ2FwdGNoYSB7XG4gICAgcHVibGlja2V5Pzogc3RyaW5nO1xuICAgIGNhcHRjaGFVcmxUb2tlbj86IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIFBvcnRhaWwge1xuICAgIGJhc2VWZENoVXJsPzogc3RyaW5nO1xuICAgIGN5YmVyTG9naW5Vcmw/OiBzdHJpbmc7XG4gICAgc3VwcG9ydEZvcm1Vcmw/OiBzdHJpbmc7XG4gICAgZXNwYWNlU2VjdXJpc2VVcmw/OiBzdHJpbmc7XG4gICAgcG9ydGFpbFRpdGxlc0J5UHJlc3RhQ29kZT86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG4gICAgYmFzZVVybD86IHN0cmluZztcbn1cbiJdfQ==
@@ -46,13 +46,16 @@ export class GrecaptchaComponent {
46
46
  this.loaded.emit(true);
47
47
  }
48
48
  appendScriptTag() {
49
- const script = document.createElement('script');
50
- script.id = SCRIPT_ID;
51
- script.src = this.recaptchaService.getCaptchaScriptUrl();
52
- script.async = true;
53
- script.defer = true;
54
- script.onerror = () => this.scriptError.emit(true);
55
- this.recaptchaScriptContainer.nativeElement.appendChild(script);
49
+ // eslint-disable-next-line rxjs-angular/prefer-async-pipe
50
+ this.recaptchaService.getCaptchaScriptUrl().subscribe(url => {
51
+ const script = document.createElement('script');
52
+ script.id = SCRIPT_ID;
53
+ script.src = url;
54
+ script.async = true;
55
+ script.defer = true;
56
+ script.onerror = () => this.scriptError.emit(true);
57
+ this.recaptchaScriptContainer.nativeElement.appendChild(script);
58
+ });
56
59
  }
57
60
  removeScript() {
58
61
  this.scriptError.emit(false);
@@ -107,4 +110,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
107
110
  type: ViewChild,
108
111
  args: ['recaptchaScriptContainer', { static: true }]
109
112
  }] } });
110
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JlY2FwdGNoYS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzdGF0aW9ucy1uZy9zcmMvc2RrLXJlY2FwdGNoYS9ncmVjYXB0Y2hhL2dyZWNhcHRjaGEuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJlc3RhdGlvbnMtbmcvc3JjL3Nkay1yZWNhcHRjaGEvZ3JlY2FwdGNoYS9ncmVjYXB0Y2hhLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBQ04sU0FBUyxFQUNaLE1BQU0sZUFBZSxDQUFDOzs7QUFJdkIsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLCtCQUErQixDQUFDO0FBVXpEOzs7Ozs7R0FNRztBQU1ILE1BQU0sT0FBTyxtQkFBbUI7SUF3QjVCLFlBQW9CLGdCQUFrQztRQUFsQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBbkJ0RCxXQUFNLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUdyQyxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFHMUMsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBaUIsQ0FBQztRQUduRCxjQUFTLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztJQVVpQixDQUFDO0lBRTFELFFBQVE7UUFDSiwwRUFBMEU7UUFDMUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxLQUFLO1FBQ0QsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFFeEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJ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RUksZ0JBQWdCO3FGQUsxQixPQUFPO3NCQUROLEtBQUs7Z0JBSU4sTUFBTTtzQkFETCxNQUFNO2dCQUlQLFdBQVc7c0JBRFYsTUFBTTtnQkFJUCxjQUFjO3NCQURiLE1BQU07Z0JBSVAsU0FBUztzQkFEUixNQUFNO2dCQUlQLGtCQUFrQjtzQkFEakIsU0FBUzt1QkFBQyxvQkFBb0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBSWpELHdCQUF3QjtzQkFEdkIsU0FBUzt1QkFBQywwQkFBMEIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbnB1dCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFJlY2FwdGNoYVNlcnZpY2UgfSBmcm9tICcuLi9yZWNhcHRjaGEuc2VydmljZSc7XG5cbmV4cG9ydCBjb25zdCBTQ1JJUFRfSUQgPSAncHJlc3RhdGlvbnMtbmctY2FwdGNoYS1zY3JpcHQnO1xuXG5kZWNsYXJlIGdsb2JhbCB7XG4gICAgaW50ZXJmYWNlIFdpbmRvdyB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAgIGdyZWNhcHRjaGE6IGFueTtcbiAgICAgICAgcmVDYXB0Y2hhTG9hZDogKCkgPT4gdm9pZDtcbiAgICB9XG59XG5cbi8qKlxuICogSW50ZWdyYXRpb24gd2l0aCBHb29nbGUgUmVjYXB0Y2hhLlxuICpcbiAqIEFsbCB0aGUgcXVpcmtzIGFuZCB3ZWlyZG5lc3Mgb2YgdGhpcyBpbnRlZ3JhdGlvbiBzaG91bGQgYmUgZG9uZSBpbiB0aGlzXG4gKiBjb21wb25lbnQuXG4gKlxuICovXG5AQ29tcG9uZW50KHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvclxuICAgIHNlbGVjdG9yOiAnYXBwLWdyZWNhcHRjaGEnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9ncmVjYXB0Y2hhLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBHcmVjYXB0Y2hhQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIEBJbnB1dCgpXG4gICAgc2l0ZUtleTogc3RyaW5nO1xuXG4gICAgQE91dHB1dCgpXG4gICAgbG9hZGVkID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gICAgQE91dHB1dCgpXG4gICAgc2NyaXB0RXJyb3IgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgICBAT3V0cHV0KClcbiAgICB0b2tlbk9uU3VjY2VzcyA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nIHwgbnVsbD4oKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIGRlc3Ryb3llZCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAgIEBWaWV3Q2hpbGQoJ3JlY2FwdGNoYUNvbnRhaW5lcicsIHsgc3RhdGljOiB0cnVlIH0pXG4gICAgcmVjYXB0Y2hhQ29udGFpbmVyOiBFbGVtZW50UmVmO1xuXG4gICAgQFZpZXdDaGlsZCgncmVjYXB0Y2hhU2NyaXB0Q29udGFpbmVyJywgeyBzdGF0aWM6IHRydWUgfSlcbiAgICByZWNhcHRjaGFTY3JpcHRDb250YWluZXI6IEVsZW1lbnRSZWY7XG5cbiAgICBwcml2YXRlIHdpZGdldElkOiBudW1iZXI7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlY2FwdGNoYVNlcnZpY2U6IFJlY2FwdGNoYVNlcnZpY2UpIHt9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgLy8gSWYgdGhlIGNvbXBvbmVudCBpcyBpbiB0aGUgY29tcG9uZW50IHRyZWUsIGxvYWQgdGhlIGNhcHRjaGEgcmVnYXJkbGVzcy5cbiAgICAgICAgdGhpcy5sb2FkQ2FwdGNoYSgpO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRlc3Ryb3llZC5lbWl0KHRydWUpO1xuICAgICAgICB0aGlzLnJlbW92ZVNjcmlwdCgpO1xuICAgIH1cblxuICAgIHJlc2V0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNhZmVDYXB0Y2hhUmVzZXQoKTtcblxuICAgICAgICB0aGlzLnRva2VuT25TdWNjZXNzLmVtaXQobnVsbCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZW5kZXJDYXB0Y2hhKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuc2l0ZUtleSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIHNpdGVLZXkgb24gdGhlIGNvbXBvbmVudCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF3aW5kb3cuZ3JlY2FwdGNoYSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgY2FwdGNoYSBoYXMgbm90IGJlZW4gbG9hZGVkIHByb3Blcmx5Jyk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjb25maWcgPSB7XG4gICAgICAgICAgICBzaXRla2V5OiB0aGlzLnNpdGVLZXksXG4gICAgICAgICAgICB0aGVtZTogJ2xpZ2h0JyxcbiAgICAgICAgICAgIGNhbGxiYWNrOiAodG9rZW46IHN0cmluZykgPT4gdGhpcy50b2tlbk9uU3VjY2Vzcy5lbWl0KHRva2VuKSxcbiAgICAgICAgICAgICdleHBpcmVkLWNhbGxiYWNrJzogKCkgPT4gdGhpcy5yZXNldCgpXG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy53aWRnZXRJZCA9IHdpbmRvdy5ncmVjYXB0Y2hhLnJlbmRlcihcbiAgICAgICAgICAgIHRoaXMucmVjYXB0Y2hhQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgICBjb25maWdcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLmxvYWRlZC5lbWl0KHRydWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXBwZW5kU2NyaXB0VGFnKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBzY3JpcHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtcbiAgICAgICAgc2NyaXB0LmlkID0gU0NSSVBUX0lEO1xuICAgICAgICBzY3JpcHQuc3JjID0gdGhpcy5yZWNhcHRjaGFTZXJ2aWNlLmdldENhcHRjaGFTY3JpcHRVcmwoKTtcbiAgICAgICAgc2NyaXB0LmFzeW5jID0gdHJ1ZTtcbiAgICAgICAgc2NyaXB0LmRlZmVyID0gdHJ1ZTtcbiAgICAgICAgc2NyaXB0Lm9uZXJyb3IgPSAoKSA9PiB0aGlzLnNjcmlwdEVycm9yLmVtaXQodHJ1ZSk7XG4gICAgICAgIHRoaXMucmVjYXB0Y2hhU2NyaXB0Q29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuYXBwZW5kQ2hpbGQoc2NyaXB0KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlbW92ZVNjcmlwdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zY3JpcHRFcnJvci5lbWl0KGZhbHNlKTtcblxuICAgICAgICB3aW5kb3cucmVDYXB0Y2hhTG9hZCA9IG51bGw7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBsb2FkQ2FwdGNoYSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5sb2FkZWQuZW1pdChmYWxzZSk7XG5cbiAgICAgICAgLy8gSW4gY2FzZSB0aGUgc2NyaXB0IGlzIGFscmVhZHkgbG9hZGVkLlxuICAgICAgICBjb25zdCBleGlzdGluZ1RhZyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFNDUklQVF9JRCk7XG4gICAgICAgIGlmIChleGlzdGluZ1RhZykge1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJDYXB0Y2hhKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBUaGlzIHdpbGwgYmUgY2FsbGVkIGlmIHRoZSBjYXB0Y2hhIGxvYWRzLlxuICAgICAgICB3aW5kb3cucmVDYXB0Y2hhTG9hZCA9ICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyQ2FwdGNoYSgpO1xuICAgICAgICB9O1xuXG4gICAgICAgIC8vIEFkZCB0aGUgc2NyaXB0IHdpdGggdGhlIGByZUNhcHRjaGFMb2FkYCBmdW5jdGlvbiBhcyBhIGNhbGxiYWNrLlxuICAgICAgICB0aGlzLmFwcGVuZFNjcmlwdFRhZygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2FmZUNhcHRjaGFSZXNldCgpOiB2b2lkIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlmICghIXdpbmRvdy5ncmVjYXB0Y2hhKSB7XG4gICAgICAgICAgICAgICAgd2luZG93LmdyZWNhcHRjaGEucmVzZXQodGhpcy53aWRnZXRJZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIC8vIEluIGNhc2UgdGhlIHJlc2V0IG9mIHRoZSBHb29nbGUgQ2FwdGNoYSB0aHJvd3MgYW4gZXJyb3IuXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiPGRpdiAjcmVjYXB0Y2hhU2NyaXB0Q29udGFpbmVyPjwvZGl2PlxuPGRpdiAjcmVjYXB0Y2hhQ29udGFpbmVyPjwvZGl2PlxuIl19
113
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JlY2FwdGNoYS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzdGF0aW9ucy1uZy9zcmMvc2RrLXJlY2FwdGNoYS9ncmVjYXB0Y2hhL2dyZWNhcHRjaGEuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJlc3RhdGlvbnMtbmcvc3JjL3Nkay1yZWNhcHRjaGEvZ3JlY2FwdGNoYS9ncmVjYXB0Y2hhLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBQ04sU0FBUyxFQUNaLE1BQU0sZUFBZSxDQUFDOzs7QUFJdkIsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLCtCQUErQixDQUFDO0FBVXpEOzs7Ozs7R0FNRztBQU1ILE1BQU0sT0FBTyxtQkFBbUI7SUF3QjVCLFlBQW9CLGdCQUFrQztRQUFsQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBbkJ0RCxXQUFNLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUdyQyxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFHMUMsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBaUIsQ0FBQztRQUduRCxjQUFTLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztJQVVpQixDQUFDO0lBRTFELFFBQVE7UUFDSiwwRUFBMEU7UUFDMUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxLQUFLO1FBQ0QsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFFeEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJ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QzsrR0FqSFEsbUJBQW1CO21HQUFuQixtQkFBbUIsd2RDbkNoQywwRUFFQTs7NEZEaUNhLG1CQUFtQjtrQkFML0IsU0FBUzsrQkFFSSxnQkFBZ0I7cUZBSzFCLE9BQU87c0JBRE4sS0FBSztnQkFJTixNQUFNO3NCQURMLE1BQU07Z0JBSVAsV0FBVztzQkFEVixNQUFNO2dCQUlQLGNBQWM7c0JBRGIsTUFBTTtnQkFJUCxTQUFTO3NCQURSLE1BQU07Z0JBSVAsa0JBQWtCO3NCQURqQixTQUFTO3VCQUFDLG9CQUFvQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFJakQsd0JBQXdCO3NCQUR2QixTQUFTO3VCQUFDLDBCQUEwQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIElucHV0LFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgUmVjYXB0Y2hhU2VydmljZSB9IGZyb20gJy4uL3JlY2FwdGNoYS5zZXJ2aWNlJztcblxuZXhwb3J0IGNvbnN0IFNDUklQVF9JRCA9ICdwcmVzdGF0aW9ucy1uZy1jYXB0Y2hhLXNjcmlwdCc7XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgICBpbnRlcmZhY2UgV2luZG93IHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICAgICAgZ3JlY2FwdGNoYTogYW55O1xuICAgICAgICByZUNhcHRjaGFMb2FkOiAoKSA9PiB2b2lkO1xuICAgIH1cbn1cblxuLyoqXG4gKiBJbnRlZ3JhdGlvbiB3aXRoIEdvb2dsZSBSZWNhcHRjaGEuXG4gKlxuICogQWxsIHRoZSBxdWlya3MgYW5kIHdlaXJkbmVzcyBvZiB0aGlzIGludGVncmF0aW9uIHNob3VsZCBiZSBkb25lIGluIHRoaXNcbiAqIGNvbXBvbmVudC5cbiAqXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yXG4gICAgc2VsZWN0b3I6ICdhcHAtZ3JlY2FwdGNoYScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2dyZWNhcHRjaGEuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIEdyZWNhcHRjaGFDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgQElucHV0KClcbiAgICBzaXRlS2V5OiBzdHJpbmc7XG5cbiAgICBAT3V0cHV0KClcbiAgICBsb2FkZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgICBAT3V0cHV0KClcbiAgICBzY3JpcHRFcnJvciA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHRva2VuT25TdWNjZXNzID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmcgfCBudWxsPigpO1xuXG4gICAgQE91dHB1dCgpXG4gICAgZGVzdHJveWVkID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gICAgQFZpZXdDaGlsZCgncmVjYXB0Y2hhQ29udGFpbmVyJywgeyBzdGF0aWM6IHRydWUgfSlcbiAgICByZWNhcHRjaGFDb250YWluZXI6IEVsZW1lbnRSZWY7XG5cbiAgICBAVmlld0NoaWxkKCdyZWNhcHRjaGFTY3JpcHRDb250YWluZXInLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICAgIHJlY2FwdGNoYVNjcmlwdENvbnRhaW5lcjogRWxlbWVudFJlZjtcblxuICAgIHByaXZhdGUgd2lkZ2V0SWQ6IG51bWJlcjtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVjYXB0Y2hhU2VydmljZTogUmVjYXB0Y2hhU2VydmljZSkge31cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICAvLyBJZiB0aGUgY29tcG9uZW50IGlzIGluIHRoZSBjb21wb25lbnQgdHJlZSwgbG9hZCB0aGUgY2FwdGNoYSByZWdhcmRsZXNzLlxuICAgICAgICB0aGlzLmxvYWRDYXB0Y2hhKCk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGVzdHJveWVkLmVtaXQodHJ1ZSk7XG4gICAgICAgIHRoaXMucmVtb3ZlU2NyaXB0KCk7XG4gICAgfVxuXG4gICAgcmVzZXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2FmZUNhcHRjaGFSZXNldCgpO1xuXG4gICAgICAgIHRoaXMudG9rZW5PblN1Y2Nlc3MuZW1pdChudWxsKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlbmRlckNhcHRjaGEoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5zaXRlS2V5KSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ01pc3Npbmcgc2l0ZUtleSBvbiB0aGUgY29tcG9uZW50Jyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXdpbmRvdy5ncmVjYXB0Y2hhKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBjYXB0Y2hhIGhhcyBub3QgYmVlbiBsb2FkZWQgcHJvcGVybHknKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNvbmZpZyA9IHtcbiAgICAgICAgICAgIHNpdGVrZXk6IHRoaXMuc2l0ZUtleSxcbiAgICAgICAgICAgIHRoZW1lOiAnbGlnaHQnLFxuICAgICAgICAgICAgY2FsbGJhY2s6ICh0b2tlbjogc3RyaW5nKSA9PiB0aGlzLnRva2VuT25TdWNjZXNzLmVtaXQodG9rZW4pLFxuICAgICAgICAgICAgJ2V4cGlyZWQtY2FsbGJhY2snOiAoKSA9PiB0aGlzLnJlc2V0KClcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLndpZGdldElkID0gd2luZG93LmdyZWNhcHRjaGEucmVuZGVyKFxuICAgICAgICAgICAgdGhpcy5yZWNhcHRjaGFDb250YWluZXIubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICAgIGNvbmZpZ1xuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMubG9hZGVkLmVtaXQodHJ1ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhcHBlbmRTY3JpcHRUYWcoKTogdm9pZCB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByeGpzLWFuZ3VsYXIvcHJlZmVyLWFzeW5jLXBpcGVcbiAgICAgICAgdGhpcy5yZWNhcHRjaGFTZXJ2aWNlLmdldENhcHRjaGFTY3JpcHRVcmwoKS5zdWJzY3JpYmUodXJsID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNjcmlwdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO1xuICAgICAgICAgICAgc2NyaXB0LmlkID0gU0NSSVBUX0lEO1xuICAgICAgICAgICAgc2NyaXB0LnNyYyA9IHVybDtcbiAgICAgICAgICAgIHNjcmlwdC5hc3luYyA9IHRydWU7XG4gICAgICAgICAgICBzY3JpcHQuZGVmZXIgPSB0cnVlO1xuICAgICAgICAgICAgc2NyaXB0Lm9uZXJyb3IgPSAoKSA9PiB0aGlzLnNjcmlwdEVycm9yLmVtaXQodHJ1ZSk7XG4gICAgICAgICAgICB0aGlzLnJlY2FwdGNoYVNjcmlwdENvbnRhaW5lci5uYXRpdmVFbGVtZW50LmFwcGVuZENoaWxkKHNjcmlwdCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVtb3ZlU2NyaXB0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNjcmlwdEVycm9yLmVtaXQoZmFsc2UpO1xuXG4gICAgICAgIHdpbmRvdy5yZUNhcHRjaGFMb2FkID0gbnVsbDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGxvYWRDYXB0Y2hhKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmxvYWRlZC5lbWl0KGZhbHNlKTtcblxuICAgICAgICAvLyBJbiBjYXNlIHRoZSBzY3JpcHQgaXMgYWxyZWFkeSBsb2FkZWQuXG4gICAgICAgIGNvbnN0IGV4aXN0aW5nVGFnID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoU0NSSVBUX0lEKTtcbiAgICAgICAgaWYgKGV4aXN0aW5nVGFnKSB7XG4gICAgICAgICAgICB0aGlzLnJlbmRlckNhcHRjaGEoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFRoaXMgd2lsbCBiZSBjYWxsZWQgaWYgdGhlIGNhcHRjaGEgbG9hZHMuXG4gICAgICAgIHdpbmRvdy5yZUNhcHRjaGFMb2FkID0gKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJDYXB0Y2hhKCk7XG4gICAgICAgIH07XG5cbiAgICAgICAgLy8gQWRkIHRoZSBzY3JpcHQgd2l0aCB0aGUgYHJlQ2FwdGNoYUxvYWRgIGZ1bmN0aW9uIGFzIGEgY2FsbGJhY2suXG4gICAgICAgIHRoaXMuYXBwZW5kU2NyaXB0VGFnKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzYWZlQ2FwdGNoYVJlc2V0KCk6IHZvaWQge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKCEhd2luZG93LmdyZWNhcHRjaGEpIHtcbiAgICAgICAgICAgICAgICB3aW5kb3cuZ3JlY2FwdGNoYS5yZXNldCh0aGlzLndpZGdldElkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgLy8gSW4gY2FzZSB0aGUgcmVzZXQgb2YgdGhlIEdvb2dsZSBDYXB0Y2hhIHRocm93cyBhbiBlcnJvci5cbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8ZGl2ICNyZWNhcHRjaGFTY3JpcHRDb250YWluZXI+PC9kaXY+XG48ZGl2ICNyZWNhcHRjaGFDb250YWluZXI+PC9kaXY+XG4iXX0=
@@ -1,5 +1,5 @@
1
1
  import { HttpParams } from '@angular/common/http';
2
- import { Inject, Injectable, InjectionToken } from '@angular/core';
2
+ import { Injectable } from '@angular/core';
3
3
  import { BehaviorSubject, combineLatest, EMPTY, merge, of } from 'rxjs';
4
4
  import { catchError, debounceTime, map } from 'rxjs/operators';
5
5
  import * as i0 from "@angular/core";
@@ -12,12 +12,8 @@ import * as i6 from "../gesdem/gesdem-event.service";
12
12
  import * as i7 from "../sdk-appinfo/application-info.service";
13
13
  export const RECAPTCHA_API_URL = 'api/recaptcha';
14
14
  export const CAPTCHA_ERROR_NAME = 'recaptcha';
15
- export const CAPTCHA_URL_TOKEN = new InjectionToken('captchaScriptUrl', {
16
- providedIn: 'root',
17
- factory: () => 'https://challenges.cloudflare.com/turnstile/v0/api.js?onload=reCaptchaLoad&render=explicit&compat=recaptcha'
18
- });
19
15
  export class RecaptchaService {
20
- constructor(http, sessionInfo, route, validationHandlerService, gesdemService, gesdemEventService, applicationInfoService, captchaScriptUrl) {
16
+ constructor(http, sessionInfo, route, validationHandlerService, gesdemService, gesdemEventService, applicationInfoService) {
21
17
  this.http = http;
22
18
  this.sessionInfo = sessionInfo;
23
19
  this.route = route;
@@ -25,11 +21,11 @@ export class RecaptchaService {
25
21
  this.gesdemService = gesdemService;
26
22
  this.gesdemEventService = gesdemEventService;
27
23
  this.applicationInfoService = applicationInfoService;
28
- this.captchaScriptUrl = captchaScriptUrl;
29
24
  this.errorsSubject = new BehaviorSubject([]);
30
25
  this.errors = this.initErrorObservable(); // has to be first since it is used in initShouldDisplayObservable !
31
26
  this.shouldDisplay = this.initShouldDisplayObservable();
32
27
  this.publicKey = this.initPublicKeyObservable();
28
+ this.captchaScriptUrl = this.initCaptchaScriptUrlObservable();
33
29
  }
34
30
  onSuccess(token) {
35
31
  // To be accessed by the gesdem service and to avoid to have a circular
@@ -153,6 +149,9 @@ export class RecaptchaService {
153
149
  initPublicKeyObservable() {
154
150
  return this.applicationInfoService.data.pipe(map(applicationInfo => this.getPublicKeyOrNull(applicationInfo)));
155
151
  }
152
+ initCaptchaScriptUrlObservable() {
153
+ return this.applicationInfoService.data.pipe(map(applicationInfo => applicationInfo?.configuration?.captcha?.captchaUrlToken));
154
+ }
156
155
  getPublicKeyOrNull(applicationInfo) {
157
156
  // Replace this whole shenanigan with applicationInfo?.configuration?.captcha?.publickey when
158
157
  // Typescript supports it.
@@ -169,7 +168,7 @@ export class RecaptchaService {
169
168
  }
170
169
  return captcha.publickey || null;
171
170
  }
172
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: RecaptchaService, deps: [{ token: i1.HttpClient }, { token: i2.SessionInfo }, { token: i3.ActivatedRoute }, { token: i4.ValidationHandlerService }, { token: i5.GesdemHandlerService }, { token: i6.GesdemEventService }, { token: i7.ApplicationInfoService }, { token: CAPTCHA_URL_TOKEN }], target: i0.ɵɵFactoryTarget.Injectable }); }
171
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: RecaptchaService, deps: [{ token: i1.HttpClient }, { token: i2.SessionInfo }, { token: i3.ActivatedRoute }, { token: i4.ValidationHandlerService }, { token: i5.GesdemHandlerService }, { token: i6.GesdemEventService }, { token: i7.ApplicationInfoService }], target: i0.ɵɵFactoryTarget.Injectable }); }
173
172
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: RecaptchaService, providedIn: 'root' }); }
174
173
  }
175
174
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: RecaptchaService, decorators: [{
@@ -177,8 +176,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
177
176
  args: [{
178
177
  providedIn: 'root'
179
178
  }]
180
- }], ctorParameters: () => [{ type: i1.HttpClient }, { type: i2.SessionInfo }, { type: i3.ActivatedRoute }, { type: i4.ValidationHandlerService }, { type: i5.GesdemHandlerService }, { type: i6.GesdemEventService }, { type: i7.ApplicationInfoService }, { type: undefined, decorators: [{
181
- type: Inject,
182
- args: [CAPTCHA_URL_TOKEN]
183
- }] }] });
184
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjYXB0Y2hhLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzdGF0aW9ucy1uZy9zcmMvc2RrLXJlY2FwdGNoYS9yZWNhcHRjaGEuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDOUQsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5FLE9BQU8sRUFDSCxlQUFlLEVBQ2YsYUFBYSxFQUNiLEtBQUssRUFDTCxLQUFLLEVBRUwsRUFBRSxFQUNMLE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7OztBQVUvRCxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxlQUFlLENBQUM7QUFDakQsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsV0FBVyxDQUFDO0FBRTlDLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLElBQUksY0FBYyxDQUMvQyxrQkFBa0IsRUFDbEI7SUFDSSxVQUFVLEVBQUUsTUFBTTtJQUNsQixPQUFPLEVBQUUsR0FBRyxFQUFFLENBQ1YsNkdBQTZHO0NBQ3BILENBQ0osQ0FBQztBQUtGLE1BQU0sT0FBTyxnQkFBZ0I7SUFPekIsWUFDWSxJQUFnQixFQUNoQixXQUF3QixFQUN4QixLQUFxQixFQUNyQix3QkFBa0QsRUFDbEQsYUFBbUMsRUFDbkMsa0JBQXNDLEVBQ3RDLHNCQUE4QyxFQUNuQixnQkFBd0I7UUFQbkQsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNoQixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQUNyQiw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQTBCO1FBQ2xELGtCQUFhLEdB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bnQsIEh0dHBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge1xuICAgIEJlaGF2aW9yU3ViamVjdCxcbiAgICBjb21iaW5lTGF0ZXN0LFxuICAgIEVNUFRZLFxuICAgIG1lcmdlLFxuICAgIE9ic2VydmFibGUsXG4gICAgb2Zcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBkZWJvdW5jZVRpbWUsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgRm9ybUVycm9yIH0gZnJvbSAnLi4vZm9ybS1lcnJvcic7XG5pbXBvcnQgeyBHZXNkZW1FdmVudFNlcnZpY2UgfSBmcm9tICcuLi9nZXNkZW0vZ2VzZGVtLWV2ZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgR2VzZGVtSGFuZGxlclNlcnZpY2UgfSBmcm9tICcuLi9nZXNkZW0vZ2VzZGVtLWhhbmRsZXIuc2VydmljZSc7XG5pbXBvcnQgeyBBcHBsaWNhdGlvbkluZm8gfSBmcm9tICcuLi9zZGstYXBwaW5mby9hcHBsaWNhdGlvbi1pbmZvJztcbmltcG9ydCB7IEFwcGxpY2F0aW9uSW5mb1NlcnZpY2UgfSBmcm9tICcuLi9zZGstYXBwaW5mby9hcHBsaWNhdGlvbi1pbmZvLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2Vzc2lvbkluZm8gfSBmcm9tICcuLi9zZGstc2Vzc2lvbi1pbmZvL3Nlc3Npb24taW5mby5zZXJ2aWNlJztcbmltcG9ydCB7IFZhbGlkYXRpb25IYW5kbGVyU2VydmljZSB9IGZyb20gJy4uL3ZhbGlkYXRpb24vdmFsaWRhdGlvbi1oYW5kbGVyLnNlcnZpY2UnO1xuXG5leHBvcnQgY29uc3QgUkVDQVBUQ0hBX0FQSV9VUkwgPSAnYXBpL3JlY2FwdGNoYSc7XG5leHBvcnQgY29uc3QgQ0FQVENIQV9FUlJPUl9OQU1FID0gJ3JlY2FwdGNoYSc7XG5cbmV4cG9ydCBjb25zdCBDQVBUQ0hBX1VSTF9UT0tFTiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxzdHJpbmc+KFxuICAgICdjYXB0Y2hhU2NyaXB0VXJsJyxcbiAgICB7XG4gICAgICAgIHByb3ZpZGVkSW46ICdyb290JyxcbiAgICAgICAgZmFjdG9yeTogKCkgPT5cbiAgICAgICAgICAgICdodHRwczovL2NoYWxsZW5nZXMuY2xvdWRmbGFyZS5jb20vdHVybnN0aWxlL3YwL2FwaS5qcz9vbmxvYWQ9cmVDYXB0Y2hhTG9hZCZyZW5kZXI9ZXhwbGljaXQmY29tcGF0PXJlY2FwdGNoYSdcbiAgICB9XG4pO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFJlY2FwdGNoYVNlcnZpY2Uge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZXJyb3JzOiBPYnNlcnZhYmxlPEZvcm1FcnJvcltdPjtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGVycm9yc1N1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEZvcm1FcnJvcltdPihbXSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBzaG91bGREaXNwbGF5OiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcHVibGljS2V5OiBPYnNlcnZhYmxlPHN0cmluZz47XG4gICAgcHJpdmF0ZSB0b2tlbjogc3RyaW5nO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcbiAgICAgICAgcHJpdmF0ZSBzZXNzaW9uSW5mbzogU2Vzc2lvbkluZm8sXG4gICAgICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgICAgICBwcml2YXRlIHZhbGlkYXRpb25IYW5kbGVyU2VydmljZTogVmFsaWRhdGlvbkhhbmRsZXJTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGdlc2RlbVNlcnZpY2U6IEdlc2RlbUhhbmRsZXJTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGdlc2RlbUV2ZW50U2VydmljZTogR2VzZGVtRXZlbnRTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGFwcGxpY2F0aW9uSW5mb1NlcnZpY2U6IEFwcGxpY2F0aW9uSW5mb1NlcnZpY2UsXG4gICAgICAgIEBJbmplY3QoQ0FQVENIQV9VUkxfVE9LRU4pIHByaXZhdGUgY2FwdGNoYVNjcmlwdFVybDogc3RyaW5nXG4gICAgKSB7XG4gICAgICAgIHRoaXMuZXJyb3JzID0gdGhpcy5pbml0RXJyb3JPYnNlcnZhYmxlKCk7IC8vIGhhcyB0byBiZSBmaXJzdCBzaW5jZSBpdCBpcyB1c2VkIGluIGluaXRTaG91bGREaXNwbGF5T2JzZXJ2YWJsZSAhXG4gICAgICAgIHRoaXMuc2hvdWxkRGlzcGxheSA9IHRoaXMuaW5pdFNob3VsZERpc3BsYXlPYnNlcnZhYmxlKCk7XG4gICAgICAgIHRoaXMucHVibGljS2V5ID0gdGhpcy5pbml0UHVibGljS2V5T2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIG9uU3VjY2Vzcyh0b2tlbjogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIC8vIFRvIGJlIGFjY2Vzc2VkIGJ5IHRoZSBnZXNkZW0gc2VydmljZSBhbmQgdG8gYXZvaWQgdG8gaGF2ZSBhIGNpcmN1bGFyXG4gICAgICAgIC8vIGRlcGVuZGVuY3kgYmV0d2VlbiB0aGUgZ2VzZGVtSGFuZGxlclNlcnZpY2UgYW5kIHRoZSBjYXB0Y2hhIHNlcnZpY2UuXG4gICAgICAgIHRoaXMuZ2VzZGVtU2VydmljZS5zZXRDYXB0Y2hhVG9rZW4odG9rZW4pO1xuXG4gICAgICAgIHRoaXMudG9rZW4gPSB0b2tlbjtcblxuICAgICAgICBpZiAoISF0aGlzLnRva2VuKSB7XG4gICAgICAgICAgICB0aGlzLmNsZWFyRXJyb3JzKCk7XG4gICAgICAgICAgICB0aGlzLmh0dHBcbiAgICAgICAgICAgICAgICAucG9zdChSRUNBUFRDSEFfQVBJX1VSTCwgeyB0b2tlbjogdGhpcy50b2tlbiB9KVxuICAgICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlOiB1bmtub3duKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gNDA0LCB0aW1lb3V0IG9yIG5ldHdvcmsgaXNzdWUuIENvdWxkIGhhcHBlbi5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkRXJyb3IoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1VuZSBlcnJldXIgZXN0IHN1cnZlbnVlIGxvcnMgZGUgbGEgdmFsaWRhdGlvbiBkdSBjYXB0Y2hhLidcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRU1QVFk7XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAgICAgICAgICAgICAgIChkYXRhOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN1Y2Nlc3MgPSAhIWRhdGEuc3VjY2VzcztcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ2xlYXIgYW55IHBvdGVudGlhbCBlcnJvcnMgZnJvbSB0aGUgc2VydmVyLiBXZSBjYW4gZG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGF0IGJlY2F1c2UgdGhpcyBzaG91bGQgYmUgdGhlIG9ubHkgZXJyb3IgaW4gdGhlIHNldCBhc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBjYXB0Y2hhIG11c3QgYmUgdmFsaWQgdG8gaGF2ZSBhdCBsZWFzdCBvbmUgZm9ybSBlcnJvci5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRpb25IYW5kbGVyU2VydmljZS51cGRhdGVFcnJvcnMoW10pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGlzIGlzIHRocm93biwgdGhhdCdzIHByZXR0eSBiYWQgYmVjYXVzZSBpdCBtZWFuc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoYXQgR29vZ2xlIGNvdWxkbid0IHZlcmlmeSB0aGUgY2FwdGNoYSBrZXkuIFRoaXMgaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlaXRoZXIgYW4gYXR0YWNrIG9yIGEgbWlzY29uZmlndXJhdGlvbi5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZEVycm9yKCdWb3RyZSBjYXB0Y2hhIGVzdCBpbnZhbGlkZScpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFkZEVycm9yKG1lc3NhZ2U6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBjb25zdCBleGlzdGluZ0Vycm9ycyA9IHRoaXMuZXJyb3JzU3ViamVjdC5nZXRWYWx1ZSgpO1xuICAgICAgICBjb25zdCBuZXdFcnJvciA9IHtcbiAgICAgICAgICAgIG5hbWU6IENBUFRDSEFfRVJST1JfTkFNRSxcbiAgICAgICAgICAgIGNvZGU6IENBUFRDSEFfRVJST1JfTkFNRSxcbiAgICAgICAgICAgIG1lc3NhZ2VcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLmVycm9yc1N1YmplY3QubmV4dChbbmV3RXJyb3IsIC4uLmV4aXN0aW5nRXJyb3JzXSk7XG4gICAgfVxuXG4gICAgY2xlYXJFcnJvcnMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZXJyb3JzU3ViamVjdC5uZXh0KFtdKTtcbiAgICB9XG5cbiAgICBnZXRFcnJvcnMoKTogT2JzZXJ2YWJsZTxGb3JtRXJyb3JbXT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5lcnJvcnM7XG4gICAgfVxuXG4gICAgZ2V0U2hvdWxkRGlzcGxheSgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2hvdWxkRGlzcGxheTtcbiAgICB9XG5cbiAgICBnZXRQdWJsaWNLZXkoKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHVibGljS2V5O1xuICAgIH1cblxuICAgIGdldFRva2VuKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnRva2VuO1xuICAgIH1cblxuICAgIGdldENhcHRjaGFTY3JpcHRVcmwoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2FwdGNoYVNjcmlwdFVybDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRFcnJvck9ic2VydmFibGUoKTogT2JzZXJ2YWJsZTxGb3JtRXJyb3JbXT4ge1xuICAgICAgICBjb25zdCBtYXRjaGluZ0dlc2RlbUVycm9ycyA9IG1lcmdlKFxuICAgICAgICAgICAgLy8gRW5zdXJlcyB0aGF0IHRoZXJlJ3MgYW4gaW5pdGlhbCB2YWx1ZVxuICAgICAgICAgICAgb2YoW10pLFxuICAgICAgICAgICAgLy8gUmVhZCBmcm9tIHRoZSBnZXNkZW0gc2VydmljZSBhbGwgZXJyb3JzLlxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9uSGFuZGxlclNlcnZpY2UudmFsaWRhdGlvbkVycm9yc1N1YmplY3RcbiAgICAgICAgKS5waXBlKFxuICAgICAgICAgICAgLy8gRXJyb3JzIGZyb20gR2VzRGVtLCBvciBub3RoaW5nXG4gICAgICAgICAgICBtYXAoZXJyb3JzID0+IGVycm9ycy5maWx0ZXIoZXggPT4gQ0FQVENIQV9FUlJPUl9OQU1FID09PSBleC5jb2RlKSlcbiAgICAgICAgKTtcblxuICAgICAgICAvLyBCaW5kIGVycm9ycyB0byB0aGUgY29tcG9uZW50LCBlaXRoZXIgZnJvbSB0aGUgYmFja2VuZCBvZiBmcm9tIHRoaXMgY29tcG9uZW50XG4gICAgICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KFtcbiAgICAgICAgICAgIC8vIEVycm9ycyBmcm9tIGdlc2RlbSBtYXRjaGluZyB0aGUgbmFtZSBvZiB0aGUgY2FwdGNoYS5cbiAgICAgICAgICAgIG1hdGNoaW5nR2VzZGVtRXJyb3JzLFxuICAgICAgICAgICAgLy8gTWFudWFsIGVycm9yc1xuICAgICAgICAgICAgdGhpcy5lcnJvcnNTdWJqZWN0XG4gICAgICAgIF0pLnBpcGUoXG4gICAgICAgICAgICAvLyBNZXJnZSB0aGUgdHdvIGVycm9ycyBzZXRzXG4gICAgICAgICAgICBtYXAoKFtnZXNkZW1FcnJvcnMsIGxvY2FsRXJyb3JzXSkgPT4gW1xuICAgICAgICAgICAgICAgIC4uLmdlc2RlbUVycm9ycyxcbiAgICAgICAgICAgICAgICAuLi5sb2NhbEVycm9yc1xuICAgICAgICAgICAgXSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRTaG91bGREaXNwbGF5T2JzZXJ2YWJsZSgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICAgICAgY29uc3QgaXNDb25uZWN0ZWRPYnNlcnZhYmxlID0gdGhpcy5zZXNzaW9uSW5mby5kYXRhLnBpcGUoXG4gICAgICAgICAgICBtYXAoZGF0YSA9PiAhdGhpcy5zZXNzaW9uSW5mby5uZXZlckNvbm5lY3RlZCAmJiAhIWRhdGEpXG4gICAgICAgICk7XG5cbiAgICAgICAgY29uc3QgaGFzQnlwYXNzRW5hYmxlZE9ic2VydmFibGUgPSB0aGlzLmNoZWNrQnlwYXNzUHJvcGVydHkoKS5waXBlKFxuICAgICAgICAgICAgbWFwKGJ5cGFzcyA9PiAhIWJ5cGFzcy52YWx1ZSlcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCBoYXNSZWZlcmVuY2VPYnNlcnZhYmxlID0gbWVyZ2UoXG4gICAgICAgICAgICAvLyBUbyBoYXZlIGFuIGluaXRpYWwgdmFsdWUuIENhbiBiZSBudWxsIGlmIHRoZXJlIGlzIG5vIGZvcm0uXG4gICAgICAgICAgICBvZih0aGlzLmdlc2RlbVNlcnZpY2UubGFzdFJlc3BvbnNlKSxcbiAgICAgICAgICAgIC8vIFJlYWQgdGhlIGZvcm0gZnJvbSBHZXNEZW1cbiAgICAgICAgICAgIHRoaXMuZ2VzZGVtRXZlbnRTZXJ2aWNlLmZvcm1Jbml0aWFsaXphdGlvbk9ic2VydmFibGUoKVxuICAgICAgICApLnBpcGUoXG4gICAgICAgICAgICBtYXAoXG4gICAgICAgICAgICAgICAgZm9ybSA9PlxuICAgICAgICAgICAgICAgICAgICAhIWZvcm0gJiZcbiAgICAgICAgICAgICAgICAgICAgISF0aGlzLmdlc2RlbVNlcnZpY2UubGFzdFJlc3BvbnNlICYmXG4gICAgICAgICAgICAgICAgICAgICEhdGhpcy5nZXNkZW1TZXJ2aWNlLmxhc3RSZXNwb25zZS5tZXRhICYmXG4gICAgICAgICAgICAgICAgICAgICEhdGhpcy5nZXNkZW1TZXJ2aWNlLmxhc3RSZXNwb25zZS5tZXRhLnJlZmVyZW5jZVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuXG4gICAgICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KFtcbiAgICAgICAgICAgIGlzQ29ubmVjdGVkT2JzZXJ2YWJsZSxcbiAgICAgICAgICAgIGhhc0J5cGFzc0VuYWJsZWRPYnNlcnZhYmxlLFxuICAgICAgICAgICAgaGFzUmVmZXJlbmNlT2JzZXJ2YWJsZSxcbiAgICAgICAgICAgIHRoaXMuZXJyb3JzXG4gICAgICAgIF0pLnBpcGUoXG4gICAgICAgICAgICAvLyBUbyB3b3JrIGFyb3VuZCByYXBpZGx5IGNoYW5naW5nIG9ic2VydmFibGVzLCBzdWNoIGFzIHRoZSBmb3JtXG4gICAgICAgICAgICAvLyB3aGVuIHRoZSBwYWdlIGxvYWRzLlxuICAgICAgICAgICAgZGVib3VuY2VUaW1lKDApLFxuICAgICAgICAgICAgbWFwKFxuICAgICAgICAgICAgICAgIChbXG4gICAgICAgICAgICAgICAgICAgIGlzQ29ubmVjdGVkLFxuICAgICAgICAgICAgICAgICAgICBoYXNCeXBhc3NFbmFibGVkLFxuICAgICAgICAgICAgICAgICAgICBoYXNSZWZlcmVuY2UsXG4gICAgICAgICAgICAgICAgICAgIGNhcHRjaGFFcnJvcnNcbiAgICAgICAgICAgICAgICBdKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGhhc0NhcHRjaGFFcnJvciA9ICEhY2FwdGNoYUVycm9ycz8ubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaGFzQ2FwdGNoYUVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBhbHdheXMgZGlzcGxheSB0aGUgY29tcG9uZW50IGlmIGl0IGhhcyBhbiBlcnJvciwgdXNlciBjb3VsZCBoYXMgbG9nZ2VkIG91dCBpbiBhbm90aGVyIHdpbmRvd1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLy8gRG8gbm90IGRpc3BsYXkgdGhlIGNhcHRjaGEgaWYgdGhlIHVzZXIgaXMgY29ubmVjdGVkLCB0aGUgYXBwbGljYXRpb25cbiAgICAgICAgICAgICAgICAgICAgLy8gYWxyZWFkeSBoYXMgYSByZWZlcmVuY2Ugb3IgaWYgdGhlIGJ5cGFzcyBpcyBlbmFibGVkLlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gIWlzQ29ubmVjdGVkICYmICFoYXNCeXBhc3NFbmFibGVkICYmICFoYXNSZWZlcmVuY2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgcHJpdmF0ZSBjaGVja0J5cGFzc1Byb3BlcnR5KCk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgICAgIGNvbnN0IHBhcmFtcyA9ICEhdGhpcy5yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtcy5yZUNhcHRjaGFCeVBhc3NVVUlEXG4gICAgICAgICAgICA/IG5ldyBIdHRwUGFyYW1zKCkuc2V0KFxuICAgICAgICAgICAgICAgICAgJ3JlQ2FwdGNoYUJ5UGFzc1VVSUQnLFxuICAgICAgICAgICAgICAgICAgdGhpcy5yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtcy5yZUNhcHRjaGFCeVBhc3NVVUlEXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIDogbnVsbDtcblxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldChgJHtSRUNBUFRDSEFfQVBJX1VSTH0vYnlwYXNzYCwgeyBwYXJhbXMgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0UHVibGljS2V5T2JzZXJ2YWJsZSgpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gdGhpcy5hcHBsaWNhdGlvbkluZm9TZXJ2aWNlLmRhdGEucGlwZShcbiAgICAgICAgICAgIG1hcChhcHBsaWNhdGlvbkluZm8gPT4gdGhpcy5nZXRQdWJsaWNLZXlPck51bGwoYXBwbGljYXRpb25JbmZvKSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFB1YmxpY0tleU9yTnVsbChcbiAgICAgICAgYXBwbGljYXRpb25JbmZvOiBBcHBsaWNhdGlvbkluZm9cbiAgICApOiBzdHJpbmcgfCBudWxsIHtcbiAgICAgICAgLy8gUmVwbGFjZSB0aGlzIHdob2xlIHNoZW5hbmlnYW4gd2l0aCBhcHBsaWNhdGlvbkluZm8/LmNvbmZpZ3VyYXRpb24/LmNhcHRjaGE/LnB1YmxpY2tleSB3aGVuXG4gICAgICAgIC8vIFR5cGVzY3JpcHQgc3VwcG9ydHMgaXQuXG4gICAgICAgIGlmICghYXBwbGljYXRpb25JbmZvKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHsgY29uZmlndXJhdGlvbiB9ID0gYXBwbGljYXRpb25JbmZvO1xuXG4gICAgICAgIGlmICghY29uZmlndXJhdGlvbikge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgeyBjYXB0Y2hhIH0gPSBjb25maWd1cmF0aW9uO1xuXG4gICAgICAgIGlmICghY2FwdGNoYSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY2FwdGNoYS5wdWJsaWNrZXkgfHwgbnVsbDtcbiAgICB9XG59XG4iXX0=
179
+ }], ctorParameters: () => [{ type: i1.HttpClient }, { type: i2.SessionInfo }, { type: i3.ActivatedRoute }, { type: i4.ValidationHandlerService }, { type: i5.GesdemHandlerService }, { type: i6.GesdemEventService }, { type: i7.ApplicationInfoService }] });
180
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjYXB0Y2hhLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzdGF0aW9ucy1uZy9zcmMvc2RrLXJlY2FwdGNoYS9yZWNhcHRjaGEuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQ0gsZUFBZSxFQUNmLGFBQWEsRUFDYixLQUFLLEVBQ0wsS0FBSyxFQUVMLEVBQUUsRUFDTCxNQUFNLE1BQU0sQ0FBQztBQUNkLE9BQU8sRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7QUFVL0QsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsZUFBZSxDQUFDO0FBQ2pELE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLFdBQVcsQ0FBQztBQUs5QyxNQUFNLE9BQU8sZ0JBQWdCO0lBUXpCLFlBQ1ksSUFBZ0IsRUFDaEIsV0FBd0IsRUFDeEIsS0FBcUIsRUFDckIsd0JBQWtELEVBQ2xELGFBQW1DLEVBQ25DLGtCQUFzQyxFQUN0QyxzQkFBOEM7UUFOOUMsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNoQixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQUNyQiw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQTBCO1FBQ2xELGtCQUFhLEdBQWIsYUFBYSxDQUFzQjtRQUNuQyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQ3RDLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBd0I7UUFiekMsa0JBQWEsR0FBRyxJQUFJLGVBQWUsQ0FBYyxFQUFFLENBQUMsQ0FBQztRQWVsRSxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxtQkFBbUIs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Z3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtcbiAgICBCZWhhdmlvclN1YmplY3QsXG4gICAgY29tYmluZUxhdGVzdCxcbiAgICBFTVBUWSxcbiAgICBtZXJnZSxcbiAgICBPYnNlcnZhYmxlLFxuICAgIG9mXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZGVib3VuY2VUaW1lLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IEZvcm1FcnJvciB9IGZyb20gJy4uL2Zvcm0tZXJyb3InO1xuaW1wb3J0IHsgR2VzZGVtRXZlbnRTZXJ2aWNlIH0gZnJvbSAnLi4vZ2VzZGVtL2dlc2RlbS1ldmVudC5zZXJ2aWNlJztcbmltcG9ydCB7IEdlc2RlbUhhbmRsZXJTZXJ2aWNlIH0gZnJvbSAnLi4vZ2VzZGVtL2dlc2RlbS1oYW5kbGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQXBwbGljYXRpb25JbmZvIH0gZnJvbSAnLi4vc2RrLWFwcGluZm8vYXBwbGljYXRpb24taW5mbyc7XG5pbXBvcnQgeyBBcHBsaWNhdGlvbkluZm9TZXJ2aWNlIH0gZnJvbSAnLi4vc2RrLWFwcGluZm8vYXBwbGljYXRpb24taW5mby5zZXJ2aWNlJztcbmltcG9ydCB7IFNlc3Npb25JbmZvIH0gZnJvbSAnLi4vc2RrLXNlc3Npb24taW5mby9zZXNzaW9uLWluZm8uc2VydmljZSc7XG5pbXBvcnQgeyBWYWxpZGF0aW9uSGFuZGxlclNlcnZpY2UgfSBmcm9tICcuLi92YWxpZGF0aW9uL3ZhbGlkYXRpb24taGFuZGxlci5zZXJ2aWNlJztcblxuZXhwb3J0IGNvbnN0IFJFQ0FQVENIQV9BUElfVVJMID0gJ2FwaS9yZWNhcHRjaGEnO1xuZXhwb3J0IGNvbnN0IENBUFRDSEFfRVJST1JfTkFNRSA9ICdyZWNhcHRjaGEnO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFJlY2FwdGNoYVNlcnZpY2Uge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZXJyb3JzOiBPYnNlcnZhYmxlPEZvcm1FcnJvcltdPjtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGVycm9yc1N1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEZvcm1FcnJvcltdPihbXSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBzaG91bGREaXNwbGF5OiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcHVibGljS2V5OiBPYnNlcnZhYmxlPHN0cmluZz47XG4gICAgcHJpdmF0ZSByZWFkb25seSBjYXB0Y2hhU2NyaXB0VXJsOiBPYnNlcnZhYmxlPHN0cmluZz47XG4gICAgcHJpdmF0ZSB0b2tlbjogc3RyaW5nO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcbiAgICAgICAgcHJpdmF0ZSBzZXNzaW9uSW5mbzogU2Vzc2lvbkluZm8sXG4gICAgICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgICAgICBwcml2YXRlIHZhbGlkYXRpb25IYW5kbGVyU2VydmljZTogVmFsaWRhdGlvbkhhbmRsZXJTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGdlc2RlbVNlcnZpY2U6IEdlc2RlbUhhbmRsZXJTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGdlc2RlbUV2ZW50U2VydmljZTogR2VzZGVtRXZlbnRTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGFwcGxpY2F0aW9uSW5mb1NlcnZpY2U6IEFwcGxpY2F0aW9uSW5mb1NlcnZpY2VcbiAgICApIHtcbiAgICAgICAgdGhpcy5lcnJvcnMgPSB0aGlzLmluaXRFcnJvck9ic2VydmFibGUoKTsgLy8gaGFzIHRvIGJlIGZpcnN0IHNpbmNlIGl0IGlzIHVzZWQgaW4gaW5pdFNob3VsZERpc3BsYXlPYnNlcnZhYmxlICFcbiAgICAgICAgdGhpcy5zaG91bGREaXNwbGF5ID0gdGhpcy5pbml0U2hvdWxkRGlzcGxheU9ic2VydmFibGUoKTtcbiAgICAgICAgdGhpcy5wdWJsaWNLZXkgPSB0aGlzLmluaXRQdWJsaWNLZXlPYnNlcnZhYmxlKCk7XG4gICAgICAgIHRoaXMuY2FwdGNoYVNjcmlwdFVybCA9IHRoaXMuaW5pdENhcHRjaGFTY3JpcHRVcmxPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgb25TdWNjZXNzKHRva2VuOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgLy8gVG8gYmUgYWNjZXNzZWQgYnkgdGhlIGdlc2RlbSBzZXJ2aWNlIGFuZCB0byBhdm9pZCB0byBoYXZlIGEgY2lyY3VsYXJcbiAgICAgICAgLy8gZGVwZW5kZW5jeSBiZXR3ZWVuIHRoZSBnZXNkZW1IYW5kbGVyU2VydmljZSBhbmQgdGhlIGNhcHRjaGEgc2VydmljZS5cbiAgICAgICAgdGhpcy5nZXNkZW1TZXJ2aWNlLnNldENhcHRjaGFUb2tlbih0b2tlbik7XG5cbiAgICAgICAgdGhpcy50b2tlbiA9IHRva2VuO1xuXG4gICAgICAgIGlmICghIXRoaXMudG9rZW4pIHtcbiAgICAgICAgICAgIHRoaXMuY2xlYXJFcnJvcnMoKTtcbiAgICAgICAgICAgIHRoaXMuaHR0cFxuICAgICAgICAgICAgICAgIC5wb3N0KFJFQ0FQVENIQV9BUElfVVJMLCB7IHRva2VuOiB0aGlzLnRva2VuIH0pXG4gICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGU6IHVua25vd24pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyA0MDQsIHRpbWVvdXQgb3IgbmV0d29yayBpc3N1ZS4gQ291bGQgaGFwcGVuLlxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGRFcnJvcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnVW5lIGVycmV1ciBlc3Qgc3VydmVudWUgbG9ycyBkZSBsYSB2YWxpZGF0aW9uIGR1IGNhcHRjaGEuJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBFTVBUWTtcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICAgICAgICAgICAgICAgICAgKGRhdGE6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3VjY2VzcyA9ICEhZGF0YS5zdWNjZXNzO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDbGVhciBhbnkgcG90ZW50aWFsIGVycm9ycyBmcm9tIHRoZSBzZXJ2ZXIuIFdlIGNhbiBkb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoYXQgYmVjYXVzZSB0aGlzIHNob3VsZCBiZSB0aGUgb25seSBlcnJvciBpbiB0aGUgc2V0IGFzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIGNhcHRjaGEgbXVzdCBiZSB2YWxpZCB0byBoYXZlIGF0IGxlYXN0IG9uZSBmb3JtIGVycm9yLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbkhhbmRsZXJTZXJ2aWNlLnVwZGF0ZUVycm9ycyhbXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoaXMgaXMgdGhyb3duLCB0aGF0J3MgcHJldHR5IGJhZCBiZWNhdXNlIGl0IG1lYW5zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhhdCBHb29nbGUgY291bGRuJ3QgdmVyaWZ5IHRoZSBjYXB0Y2hhIGtleS4gVGhpcyBpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVpdGhlciBhbiBhdHRhY2sgb3IgYSBtaXNjb25maWd1cmF0aW9uLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkRXJyb3IoJ1ZvdHJlIGNhcHRjaGEgZXN0IGludmFsaWRlJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYWRkRXJyb3IobWVzc2FnZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGV4aXN0aW5nRXJyb3JzID0gdGhpcy5lcnJvcnNTdWJqZWN0LmdldFZhbHVlKCk7XG4gICAgICAgIGNvbnN0IG5ld0Vycm9yID0ge1xuICAgICAgICAgICAgbmFtZTogQ0FQVENIQV9FUlJPUl9OQU1FLFxuICAgICAgICAgICAgY29kZTogQ0FQVENIQV9FUlJPUl9OQU1FLFxuICAgICAgICAgICAgbWVzc2FnZVxuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMuZXJyb3JzU3ViamVjdC5uZXh0KFtuZXdFcnJvciwgLi4uZXhpc3RpbmdFcnJvcnNdKTtcbiAgICB9XG5cbiAgICBjbGVhckVycm9ycygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5lcnJvcnNTdWJqZWN0Lm5leHQoW10pO1xuICAgIH1cblxuICAgIGdldEVycm9ycygpOiBPYnNlcnZhYmxlPEZvcm1FcnJvcltdPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmVycm9ycztcbiAgICB9XG5cbiAgICBnZXRTaG91bGREaXNwbGF5KCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zaG91bGREaXNwbGF5O1xuICAgIH1cblxuICAgIGdldFB1YmxpY0tleSgpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gdGhpcy5wdWJsaWNLZXk7XG4gICAgfVxuXG4gICAgZ2V0VG9rZW4oKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudG9rZW47XG4gICAgfVxuXG4gICAgZ2V0Q2FwdGNoYVNjcmlwdFVybCgpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gdGhpcy5jYXB0Y2hhU2NyaXB0VXJsO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdEVycm9yT2JzZXJ2YWJsZSgpOiBPYnNlcnZhYmxlPEZvcm1FcnJvcltdPiB7XG4gICAgICAgIGNvbnN0IG1hdGNoaW5nR2VzZGVtRXJyb3JzID0gbWVyZ2UoXG4gICAgICAgICAgICAvLyBFbnN1cmVzIHRoYXQgdGhlcmUncyBhbiBpbml0aWFsIHZhbHVlXG4gICAgICAgICAgICBvZihbXSksXG4gICAgICAgICAgICAvLyBSZWFkIGZyb20gdGhlIGdlc2RlbSBzZXJ2aWNlIGFsbCBlcnJvcnMuXG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRpb25IYW5kbGVyU2VydmljZS52YWxpZGF0aW9uRXJyb3JzU3ViamVjdFxuICAgICAgICApLnBpcGUoXG4gICAgICAgICAgICAvLyBFcnJvcnMgZnJvbSBHZXNEZW0sIG9yIG5vdGhpbmdcbiAgICAgICAgICAgIG1hcChlcnJvcnMgPT4gZXJyb3JzLmZpbHRlcihleCA9PiBDQVBUQ0hBX0VSUk9SX05BTUUgPT09IGV4LmNvZGUpKVxuICAgICAgICApO1xuXG4gICAgICAgIC8vIEJpbmQgZXJyb3JzIHRvIHRoZSBjb21wb25lbnQsIGVpdGhlciBmcm9tIHRoZSBiYWNrZW5kIG9mIGZyb20gdGhpcyBjb21wb25lbnRcbiAgICAgICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICAgICAgLy8gRXJyb3JzIGZyb20gZ2VzZGVtIG1hdGNoaW5nIHRoZSBuYW1lIG9mIHRoZSBjYXB0Y2hhLlxuICAgICAgICAgICAgbWF0Y2hpbmdHZXNkZW1FcnJvcnMsXG4gICAgICAgICAgICAvLyBNYW51YWwgZXJyb3JzXG4gICAgICAgICAgICB0aGlzLmVycm9yc1N1YmplY3RcbiAgICAgICAgXSkucGlwZShcbiAgICAgICAgICAgIC8vIE1lcmdlIHRoZSB0d28gZXJyb3JzIHNldHNcbiAgICAgICAgICAgIG1hcCgoW2dlc2RlbUVycm9ycywgbG9jYWxFcnJvcnNdKSA9PiBbXG4gICAgICAgICAgICAgICAgLi4uZ2VzZGVtRXJyb3JzLFxuICAgICAgICAgICAgICAgIC4uLmxvY2FsRXJyb3JzXG4gICAgICAgICAgICBdKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdFNob3VsZERpc3BsYXlPYnNlcnZhYmxlKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgICAgICBjb25zdCBpc0Nvbm5lY3RlZE9ic2VydmFibGUgPSB0aGlzLnNlc3Npb25JbmZvLmRhdGEucGlwZShcbiAgICAgICAgICAgIG1hcChkYXRhID0+ICF0aGlzLnNlc3Npb25JbmZvLm5ldmVyQ29ubmVjdGVkICYmICEhZGF0YSlcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCBoYXNCeXBhc3NFbmFibGVkT2JzZXJ2YWJsZSA9IHRoaXMuY2hlY2tCeXBhc3NQcm9wZXJ0eSgpLnBpcGUoXG4gICAgICAgICAgICBtYXAoYnlwYXNzID0+ICEhYnlwYXNzLnZhbHVlKVxuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IGhhc1JlZmVyZW5jZU9ic2VydmFibGUgPSBtZXJnZShcbiAgICAgICAgICAgIC8vIFRvIGhhdmUgYW4gaW5pdGlhbCB2YWx1ZS4gQ2FuIGJlIG51bGwgaWYgdGhlcmUgaXMgbm8gZm9ybS5cbiAgICAgICAgICAgIG9mKHRoaXMuZ2VzZGVtU2VydmljZS5sYXN0UmVzcG9uc2UpLFxuICAgICAgICAgICAgLy8gUmVhZCB0aGUgZm9ybSBmcm9tIEdlc0RlbVxuICAgICAgICAgICAgdGhpcy5nZXNkZW1FdmVudFNlcnZpY2UuZm9ybUluaXRpYWxpemF0aW9uT2JzZXJ2YWJsZSgpXG4gICAgICAgICkucGlwZShcbiAgICAgICAgICAgIG1hcChcbiAgICAgICAgICAgICAgICBmb3JtID0+XG4gICAgICAgICAgICAgICAgICAgICEhZm9ybSAmJlxuICAgICAgICAgICAgICAgICAgICAhIXRoaXMuZ2VzZGVtU2VydmljZS5sYXN0UmVzcG9uc2UgJiZcbiAgICAgICAgICAgICAgICAgICAgISF0aGlzLmdlc2RlbVNlcnZpY2UubGFzdFJlc3BvbnNlLm1ldGEgJiZcbiAgICAgICAgICAgICAgICAgICAgISF0aGlzLmdlc2RlbVNlcnZpY2UubGFzdFJlc3BvbnNlLm1ldGEucmVmZXJlbmNlXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICAgICAgaXNDb25uZWN0ZWRPYnNlcnZhYmxlLFxuICAgICAgICAgICAgaGFzQnlwYXNzRW5hYmxlZE9ic2VydmFibGUsXG4gICAgICAgICAgICBoYXNSZWZlcmVuY2VPYnNlcnZhYmxlLFxuICAgICAgICAgICAgdGhpcy5lcnJvcnNcbiAgICAgICAgXSkucGlwZShcbiAgICAgICAgICAgIC8vIFRvIHdvcmsgYXJvdW5kIHJhcGlkbHkgY2hhbmdpbmcgb2JzZXJ2YWJsZXMsIHN1Y2ggYXMgdGhlIGZvcm1cbiAgICAgICAgICAgIC8vIHdoZW4gdGhlIHBhZ2UgbG9hZHMuXG4gICAgICAgICAgICBkZWJvdW5jZVRpbWUoMCksXG4gICAgICAgICAgICBtYXAoXG4gICAgICAgICAgICAgICAgKFtcbiAgICAgICAgICAgICAgICAgICAgaXNDb25uZWN0ZWQsXG4gICAgICAgICAgICAgICAgICAgIGhhc0J5cGFzc0VuYWJsZWQsXG4gICAgICAgICAgICAgICAgICAgIGhhc1JlZmVyZW5jZSxcbiAgICAgICAgICAgICAgICAgICAgY2FwdGNoYUVycm9yc1xuICAgICAgICAgICAgICAgIF0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaGFzQ2FwdGNoYUVycm9yID0gISFjYXB0Y2hhRXJyb3JzPy5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgIGlmIChoYXNDYXB0Y2hhRXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFsd2F5cyBkaXNwbGF5IHRoZSBjb21wb25lbnQgaWYgaXQgaGFzIGFuIGVycm9yLCB1c2VyIGNvdWxkIGhhcyBsb2dnZWQgb3V0IGluIGFub3RoZXIgd2luZG93XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyBEbyBub3QgZGlzcGxheSB0aGUgY2FwdGNoYSBpZiB0aGUgdXNlciBpcyBjb25uZWN0ZWQsIHRoZSBhcHBsaWNhdGlvblxuICAgICAgICAgICAgICAgICAgICAvLyBhbHJlYWR5IGhhcyBhIHJlZmVyZW5jZSBvciBpZiB0aGUgYnlwYXNzIGlzIGVuYWJsZWQuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAhaXNDb25uZWN0ZWQgJiYgIWhhc0J5cGFzc0VuYWJsZWQgJiYgIWhhc1JlZmVyZW5jZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBwcml2YXRlIGNoZWNrQnlwYXNzUHJvcGVydHkoKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgICAgY29uc3QgcGFyYW1zID0gISF0aGlzLnJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zLnJlQ2FwdGNoYUJ5UGFzc1VVSURcbiAgICAgICAgICAgID8gbmV3IEh0dHBQYXJhbXMoKS5zZXQoXG4gICAgICAgICAgICAgICAgICAncmVDYXB0Y2hhQnlQYXNzVVVJRCcsXG4gICAgICAgICAgICAgICAgICB0aGlzLnJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zLnJlQ2FwdGNoYUJ5UGFzc1VVSURcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgOiBudWxsO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGAke1JFQ0FQVENIQV9BUElfVVJMfS9ieXBhc3NgLCB7IHBhcmFtcyB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRQdWJsaWNLZXlPYnNlcnZhYmxlKCk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwcGxpY2F0aW9uSW5mb1NlcnZpY2UuZGF0YS5waXBlKFxuICAgICAgICAgICAgbWFwKGFwcGxpY2F0aW9uSW5mbyA9PiB0aGlzLmdldFB1YmxpY0tleU9yTnVsbChhcHBsaWNhdGlvbkluZm8pKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdENhcHRjaGFTY3JpcHRVcmxPYnNlcnZhYmxlKCk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwcGxpY2F0aW9uSW5mb1NlcnZpY2UuZGF0YS5waXBlKFxuICAgICAgICAgICAgbWFwKFxuICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uSW5mbyA9PlxuICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbkluZm8/LmNvbmZpZ3VyYXRpb24/LmNhcHRjaGE/LmNhcHRjaGFVcmxUb2tlblxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0UHVibGljS2V5T3JOdWxsKFxuICAgICAgICBhcHBsaWNhdGlvbkluZm86IEFwcGxpY2F0aW9uSW5mb1xuICAgICk6IHN0cmluZyB8IG51bGwge1xuICAgICAgICAvLyBSZXBsYWNlIHRoaXMgd2hvbGUgc2hlbmFuaWdhbiB3aXRoIGFwcGxpY2F0aW9uSW5mbz8uY29uZmlndXJhdGlvbj8uY2FwdGNoYT8ucHVibGlja2V5IHdoZW5cbiAgICAgICAgLy8gVHlwZXNjcmlwdCBzdXBwb3J0cyBpdC5cbiAgICAgICAgaWYgKCFhcHBsaWNhdGlvbkluZm8pIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgeyBjb25maWd1cmF0aW9uIH0gPSBhcHBsaWNhdGlvbkluZm87XG5cbiAgICAgICAgaWYgKCFjb25maWd1cmF0aW9uKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB7IGNhcHRjaGEgfSA9IGNvbmZpZ3VyYXRpb247XG5cbiAgICAgICAgaWYgKCFjYXB0Y2hhKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjYXB0Y2hhLnB1YmxpY2tleSB8fCBudWxsO1xuICAgIH1cbn1cbiJdfQ==
@@ -1,5 +1,5 @@
1
1
  import { Component, ViewChild } from '@angular/core';
2
- import { debounceTime } from 'rxjs/operators';
2
+ import { debounceTime, map } from 'rxjs/operators';
3
3
  import { GrecaptchaComponent } from './grecaptcha/grecaptcha.component';
4
4
  import * as i0 from "@angular/core";
5
5
  import * as i1 from "./recaptcha.service";
@@ -10,8 +10,12 @@ export class SdkRecaptchaComponent {
10
10
  this.recaptchaService = recaptchaService;
11
11
  this.cdr = cdr;
12
12
  this.hasLoadingError = false;
13
- const url = new URL(this.recaptchaService.getCaptchaScriptUrl());
14
- this.recaptchaUrlForUserError = `${url.protocol}//${url.hostname}`;
13
+ this.recaptchaUrlForUserError = this.recaptchaService
14
+ .getCaptchaScriptUrl()
15
+ .pipe(map(captchaScriptUrl => {
16
+ const url = new URL(captchaScriptUrl);
17
+ return `${url.protocol}//${url.hostname}`;
18
+ }));
15
19
  }
16
20
  ngOnInit() {
17
21
  this.recaptchaService.clearErrors();
@@ -59,13 +63,13 @@ export class SdkRecaptchaComponent {
59
63
  this.recaptchaService.onSuccess(token);
60
64
  }
61
65
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SdkRecaptchaComponent, deps: [{ token: i1.RecaptchaService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
62
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: SdkRecaptchaComponent, selector: "captcha", viewQueries: [{ propertyName: "grecaptcha", first: true, predicate: GrecaptchaComponent, descendants: true }], ngImport: i0, template: "<!-- Only display the content if the captcha should be displayed (user not connected for instance) -->\n<div id=\"foehn_recaptchaContainer\" *ngIf=\"shouldDisplay | async\">\n <!-- Manual error handling because errors can come from multiple sources -->\n <ng-container *ngIf=\"errors | async as err\">\n <div\n class=\"form-control-feedback text-danger\"\n *ngIf=\"err && err.length\"\n >\n <p *ngFor=\"let error of err\">{{ error.message }}</p>\n </div>\n </ng-container>\n\n <!-- While the captcha is being loaded -->\n <div class=\"alert alert-info\" *ngIf=\"!isLoaded && !hasLoadingError\">\n Chargement du captcha\n </div>\n\n <!-- In case google.com cannot be reached for instance -->\n <div class=\"alert alert-danger\" *ngIf=\"hasLoadingError\">\n <div class=\"mt-0 alert-heading h4\">\n Une erreur est survenue lors du chargement du captcha.\n </div>\n <p>\n Merci de v\u00E9rifier que votre navigateur peut acc\u00E9der \u00E0\n <a [href]=\"recaptchaUrlForUserError\" target=\"_blank\">\n {{ recaptchaUrlForUserError }}\n </a>\n .\n </p>\n </div>\n\n <ng-container *ngIf=\"publicKey | async as key\">\n <!-- The captcha itself is in a different container not to confused Angular change detection -->\n <app-grecaptcha\n [siteKey]=\"key\"\n (loaded)=\"setIsLoaded($event)\"\n (scriptError)=\"setScriptError($event)\"\n (tokenOnSuccess)=\"tokenOnSuccess($event)\"\n ></app-grecaptcha>\n </ng-container>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.GrecaptchaComponent, selector: "app-grecaptcha", inputs: ["siteKey"], outputs: ["loaded", "scriptError", "tokenOnSuccess", "destroyed"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }] }); }
66
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: SdkRecaptchaComponent, selector: "captcha", viewQueries: [{ propertyName: "grecaptcha", first: true, predicate: GrecaptchaComponent, descendants: true }], ngImport: i0, template: "<!-- Only display the content if the captcha should be displayed (user not connected for instance) -->\n<div id=\"foehn_recaptchaContainer\" *ngIf=\"shouldDisplay | async\">\n <!-- Manual error handling because errors can come from multiple sources -->\n <ng-container *ngIf=\"errors | async as err\">\n <div\n class=\"form-control-feedback text-danger\"\n *ngIf=\"err && err.length\"\n >\n <p *ngFor=\"let error of err\">{{ error.message }}</p>\n </div>\n </ng-container>\n\n <!-- While the captcha is being loaded -->\n <div class=\"alert alert-info\" *ngIf=\"!isLoaded && !hasLoadingError\">\n Chargement du captcha\n </div>\n\n <!-- In case google.com cannot be reached for instance -->\n <div class=\"alert alert-danger\" *ngIf=\"hasLoadingError\">\n <div class=\"mt-0 alert-heading h4\">\n Une erreur est survenue lors du chargement du captcha.\n </div>\n <p>\n Merci de v\u00E9rifier que votre navigateur peut acc\u00E9der \u00E0\n <a\n *ngIf=\"\n recaptchaUrlForUserError | async as recaptchaUrlUserError\n \"\n [href]=\"recaptchaUrlUserError\"\n target=\"_blank\"\n >\n {{ recaptchaUrlUserError }}\n </a>\n .\n </p>\n </div>\n\n <ng-container *ngIf=\"publicKey | async as key\">\n <!-- The captcha itself is in a different container not to confused Angular change detection -->\n <app-grecaptcha\n [siteKey]=\"key\"\n (loaded)=\"setIsLoaded($event)\"\n (scriptError)=\"setScriptError($event)\"\n (tokenOnSuccess)=\"tokenOnSuccess($event)\"\n ></app-grecaptcha>\n </ng-container>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.GrecaptchaComponent, selector: "app-grecaptcha", inputs: ["siteKey"], outputs: ["loaded", "scriptError", "tokenOnSuccess", "destroyed"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }] }); }
63
67
  }
64
68
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SdkRecaptchaComponent, decorators: [{
65
69
  type: Component,
66
- args: [{ selector: 'captcha', template: "<!-- Only display the content if the captcha should be displayed (user not connected for instance) -->\n<div id=\"foehn_recaptchaContainer\" *ngIf=\"shouldDisplay | async\">\n <!-- Manual error handling because errors can come from multiple sources -->\n <ng-container *ngIf=\"errors | async as err\">\n <div\n class=\"form-control-feedback text-danger\"\n *ngIf=\"err && err.length\"\n >\n <p *ngFor=\"let error of err\">{{ error.message }}</p>\n </div>\n </ng-container>\n\n <!-- While the captcha is being loaded -->\n <div class=\"alert alert-info\" *ngIf=\"!isLoaded && !hasLoadingError\">\n Chargement du captcha\n </div>\n\n <!-- In case google.com cannot be reached for instance -->\n <div class=\"alert alert-danger\" *ngIf=\"hasLoadingError\">\n <div class=\"mt-0 alert-heading h4\">\n Une erreur est survenue lors du chargement du captcha.\n </div>\n <p>\n Merci de v\u00E9rifier que votre navigateur peut acc\u00E9der \u00E0\n <a [href]=\"recaptchaUrlForUserError\" target=\"_blank\">\n {{ recaptchaUrlForUserError }}\n </a>\n .\n </p>\n </div>\n\n <ng-container *ngIf=\"publicKey | async as key\">\n <!-- The captcha itself is in a different container not to confused Angular change detection -->\n <app-grecaptcha\n [siteKey]=\"key\"\n (loaded)=\"setIsLoaded($event)\"\n (scriptError)=\"setScriptError($event)\"\n (tokenOnSuccess)=\"tokenOnSuccess($event)\"\n ></app-grecaptcha>\n </ng-container>\n</div>\n" }]
70
+ args: [{ selector: 'captcha', template: "<!-- Only display the content if the captcha should be displayed (user not connected for instance) -->\n<div id=\"foehn_recaptchaContainer\" *ngIf=\"shouldDisplay | async\">\n <!-- Manual error handling because errors can come from multiple sources -->\n <ng-container *ngIf=\"errors | async as err\">\n <div\n class=\"form-control-feedback text-danger\"\n *ngIf=\"err && err.length\"\n >\n <p *ngFor=\"let error of err\">{{ error.message }}</p>\n </div>\n </ng-container>\n\n <!-- While the captcha is being loaded -->\n <div class=\"alert alert-info\" *ngIf=\"!isLoaded && !hasLoadingError\">\n Chargement du captcha\n </div>\n\n <!-- In case google.com cannot be reached for instance -->\n <div class=\"alert alert-danger\" *ngIf=\"hasLoadingError\">\n <div class=\"mt-0 alert-heading h4\">\n Une erreur est survenue lors du chargement du captcha.\n </div>\n <p>\n Merci de v\u00E9rifier que votre navigateur peut acc\u00E9der \u00E0\n <a\n *ngIf=\"\n recaptchaUrlForUserError | async as recaptchaUrlUserError\n \"\n [href]=\"recaptchaUrlUserError\"\n target=\"_blank\"\n >\n {{ recaptchaUrlUserError }}\n </a>\n .\n </p>\n </div>\n\n <ng-container *ngIf=\"publicKey | async as key\">\n <!-- The captcha itself is in a different container not to confused Angular change detection -->\n <app-grecaptcha\n [siteKey]=\"key\"\n (loaded)=\"setIsLoaded($event)\"\n (scriptError)=\"setScriptError($event)\"\n (tokenOnSuccess)=\"tokenOnSuccess($event)\"\n ></app-grecaptcha>\n </ng-container>\n</div>\n" }]
67
71
  }], ctorParameters: () => [{ type: i1.RecaptchaService }, { type: i0.ChangeDetectorRef }], propDecorators: { grecaptcha: [{
68
72
  type: ViewChild,
69
73
  args: [GrecaptchaComponent]
70
74
  }] } });
71
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2RrLXJlY2FwdGNoYS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzdGF0aW9ucy1uZy9zcmMvc2RrLXJlY2FwdGNoYS9zZGstcmVjYXB0Y2hhLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9zZGstcmVjYXB0Y2hhL3Nkay1yZWNhcHRjaGEuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVILFNBQVMsRUFHVCxTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRzlDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDOzs7OztBQVF4RSxNQUFNLE9BQU8scUJBQXFCO0lBYzlCLFlBQ1ksZ0JBQWtDLEVBQ2xDLEdBQXNCO1FBRHRCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFWbEMsb0JBQWUsR0FBRyxLQUFLLENBQUM7UUFZcEIsTUFBTSxHQUFHLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLG1CQUFtQixFQUFFLENBQUMsQ0FBQztRQUNqRSxJQUFJLENBQUMsd0JBQXdCLEdBQUcsR0FBRyxHQUFHLENBQUMsUUFBUSxLQUFLLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUN2RSxDQUFDO0lBRUQsUUFBUTtRQUNKLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNwQyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQzlELElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ2hELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFlBQVksRUFBRSxDQUFDO1FBRXRELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsTUFBTTthQUNoQyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3hCLDBEQUEwRDthQUN6RCxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDaEIsOERBQThEO1lBQzlELElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7Z0JBQ3pCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQzdCLENBQUM7WUFDRCx5REFBeUQ7WUFDekQsY0FBYztZQUNkLElBQUksTUFBTSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQ25DLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDNUIsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRVAsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDNUQsQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQzFCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUMxQyxDQUFDO1FBRUQscUNBQXFDO1FBQ3JDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7SUFDbEMsQ0FBQztJQUVELFdBQVcsQ0FBQyxRQUFpQjtRQUN6QixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUV6Qiw2Q0FBNkM7UUFDN0MsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUN6QixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUM3QixDQUFDO0lBQ0wsQ0FBQztJQUVELGNBQWMsQ0FBQyxXQUFvQjtRQUMvQixJQUFJLENBQUMsZUFBZSxHQUFHLFdBQVcsQ0FBQztRQUVuQyw2Q0FBNkM7UUFDN0MsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUN6QixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUM3QixDQUFDO0lBQ0wsQ0FBQztJQUVELGNBQWMsQ0FBQyxLQUFhO1FBQ3hCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0MsQ0FBQzsrR0EzRVEscUJBQXFCO21HQUFyQixxQkFBcUIsMkZBQ25CLG1CQUFtQixnRENwQmxDLCtvREF5Q0E7OzRGRHRCYSxxQkFBcUI7a0JBTGpDLFNBQVM7K0JBRUksU0FBUztxSEFLbkIsVUFBVTtzQkFEVCxTQUFTO3VCQUFDLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IEZvcm1FcnJvciB9IGZyb20gJy4uL2Zvcm0tZXJyb3InO1xuaW1wb3J0IHsgR3JlY2FwdGNoYUNvbXBvbmVudCB9IGZyb20gJy4vZ3JlY2FwdGNoYS9ncmVjYXB0Y2hhLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBSZWNhcHRjaGFTZXJ2aWNlIH0gZnJvbSAnLi9yZWNhcHRjaGEuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSAgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvclxuICAgIHNlbGVjdG9yOiAnY2FwdGNoYScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3Nkay1yZWNhcHRjaGEuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFNka1JlY2FwdGNoYUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICBAVmlld0NoaWxkKEdyZWNhcHRjaGFDb21wb25lbnQpXG4gICAgZ3JlY2FwdGNoYTogR3JlY2FwdGNoYUNvbXBvbmVudDtcblxuICAgIHNob3VsZERpc3BsYXk6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gICAgaXNMb2FkZWQ6IGJvb2xlYW47XG4gICAgaGFzTG9hZGluZ0Vycm9yID0gZmFsc2U7XG4gICAgZXJyb3JzOiBPYnNlcnZhYmxlPEZvcm1FcnJvcltdPjtcbiAgICBwdWJsaWNLZXk6IE9ic2VydmFibGU8c3RyaW5nPjtcbiAgICByZWFkb25seSByZWNhcHRjaGFVcmxGb3JVc2VyRXJyb3I6IHN0cmluZztcblxuICAgIHByaXZhdGUgZXJyb3JzU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gICAgcHJpdmF0ZSBmb3JjZURldGVjdENoYW5nZTogKCkgPT4gdm9pZDtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlY2FwdGNoYVNlcnZpY2U6IFJlY2FwdGNoYVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZlxuICAgICkge1xuICAgICAgICBjb25zdCB1cmwgPSBuZXcgVVJMKHRoaXMucmVjYXB0Y2hhU2VydmljZS5nZXRDYXB0Y2hhU2NyaXB0VXJsKCkpO1xuICAgICAgICB0aGlzLnJlY2FwdGNoYVVybEZvclVzZXJFcnJvciA9IGAke3VybC5wcm90b2NvbH0vLyR7dXJsLmhvc3RuYW1lfWA7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMucmVjYXB0Y2hhU2VydmljZS5jbGVhckVycm9ycygpO1xuICAgICAgICB0aGlzLnNob3VsZERpc3BsYXkgPSB0aGlzLnJlY2FwdGNoYVNlcnZpY2UuZ2V0U2hvdWxkRGlzcGxheSgpO1xuICAgICAgICB0aGlzLmVycm9ycyA9IHRoaXMucmVjYXB0Y2hhU2VydmljZS5nZXRFcnJvcnMoKTtcbiAgICAgICAgdGhpcy5wdWJsaWNLZXkgPSB0aGlzLnJlY2FwdGNoYVNlcnZpY2UuZ2V0UHVibGljS2V5KCk7XG5cbiAgICAgICAgdGhpcy5lcnJvcnNTdWJzY3JpcHRpb24gPSB0aGlzLmVycm9yc1xuICAgICAgICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDUwMCkpXG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcnhqcy1hbmd1bGFyL3ByZWZlci1hc3luYy1waXBlXG4gICAgICAgICAgICAuc3Vic2NyaWJlKGVycm9ycyA9PiB7XG4gICAgICAgICAgICAgICAgLy8gSGFjayBiZWNhdXNlIHRoZSBjYXB0Y2hhIGNvbmZ1c2VzIEFuZ3VsYXIgZGV0ZWN0aW9uIGNoYW5nZS5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5mb3JjZURldGVjdENoYW5nZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcmNlRGV0ZWN0Q2hhbmdlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIEluIGNhc2Ugb2YgZXJyb3JzLCByZXNldCB0aGUgY2FwdGNoYSBmb3IgYSBiZXR0ZXIgdXNlclxuICAgICAgICAgICAgICAgIC8vIGV4cGVyaWVuY2UuXG4gICAgICAgICAgICAgICAgaWYgKGVycm9ycy5sZW5ndGggJiYgdGhpcy5ncmVjYXB0Y2hhKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ3JlY2FwdGNoYS5yZXNldCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuZm9yY2VEZXRlY3RDaGFuZ2UgPSAoKSA9PiB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmVycm9yc1N1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgdGhpcy5lcnJvcnNTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEF2b2lkIGNkciBvbiBkZXN0cm95ZWQgY29tcG9uZW50cy5cbiAgICAgICAgdGhpcy5mb3JjZURldGVjdENoYW5nZSA9IG51bGw7XG4gICAgfVxuXG4gICAgc2V0SXNMb2FkZWQoaXNMb2FkZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pc0xvYWRlZCA9IGlzTG9hZGVkO1xuXG4gICAgICAgIC8vIEFuZ3VsYXIgZG9lc24ndCBkZXRlY3QgdGhlIGNoYW5nZSBwcm9wZXJseVxuICAgICAgICBpZiAodGhpcy5mb3JjZURldGVjdENoYW5nZSkge1xuICAgICAgICAgICAgdGhpcy5mb3JjZURldGVjdENoYW5nZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2V0U2NyaXB0RXJyb3Ioc2NyaXB0RXJyb3I6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5oYXNMb2FkaW5nRXJyb3IgPSBzY3JpcHRFcnJvcjtcblxuICAgICAgICAvLyBBbmd1bGFyIGRvZXNuJ3QgZGV0ZWN0IHRoZSBjaGFuZ2UgcHJvcGVybHlcbiAgICAgICAgaWYgKHRoaXMuZm9yY2VEZXRlY3RDaGFuZ2UpIHtcbiAgICAgICAgICAgIHRoaXMuZm9yY2VEZXRlY3RDaGFuZ2UoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHRva2VuT25TdWNjZXNzKHRva2VuOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yZWNhcHRjaGFTZXJ2aWNlLm9uU3VjY2Vzcyh0b2tlbik7XG4gICAgfVxufVxuIiwiPCEtLSBPbmx5IGRpc3BsYXkgdGhlIGNvbnRlbnQgaWYgdGhlIGNhcHRjaGEgc2hvdWxkIGJlIGRpc3BsYXllZCAodXNlciBub3QgY29ubmVjdGVkIGZvciBpbnN0YW5jZSkgLS0+XG48ZGl2IGlkPVwiZm9laG5fcmVjYXB0Y2hhQ29udGFpbmVyXCIgKm5nSWY9XCJzaG91bGREaXNwbGF5IHwgYXN5bmNcIj5cbiAgICA8IS0tIE1hbnVhbCBlcnJvciBoYW5kbGluZyBiZWNhdXNlIGVycm9ycyBjYW4gY29tZSBmcm9tIG11bHRpcGxlIHNvdXJjZXMgLS0+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImVycm9ycyB8IGFzeW5jIGFzIGVyclwiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbC1mZWVkYmFjayB0ZXh0LWRhbmdlclwiXG4gICAgICAgICAgICAqbmdJZj1cImVyciAmJiBlcnIubGVuZ3RoXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPHAgKm5nRm9yPVwibGV0IGVycm9yIG9mIGVyclwiPnt7IGVycm9yLm1lc3NhZ2UgfX08L3A+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPCEtLSBXaGlsZSB0aGUgY2FwdGNoYSBpcyBiZWluZyBsb2FkZWQgLS0+XG4gICAgPGRpdiBjbGFzcz1cImFsZXJ0IGFsZXJ0LWluZm9cIiAqbmdJZj1cIiFpc0xvYWRlZCAmJiAhaGFzTG9hZGluZ0Vycm9yXCI+XG4gICAgICAgIENoYXJnZW1lbnQgZHUgY2FwdGNoYVxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBJbiBjYXNlIGdvb2dsZS5jb20gY2Fubm90IGJlIHJlYWNoZWQgZm9yIGluc3RhbmNlIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJhbGVydCBhbGVydC1kYW5nZXJcIiAqbmdJZj1cImhhc0xvYWRpbmdFcnJvclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMCBhbGVydC1oZWFkaW5nIGg0XCI+XG4gICAgICAgICAgICBVbmUgZXJyZXVyIGVzdCBzdXJ2ZW51ZSBsb3JzIGR1IGNoYXJnZW1lbnQgZHUgY2FwdGNoYS5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxwPlxuICAgICAgICAgICAgTWVyY2kgZGUgdsOpcmlmaWVyIHF1ZSB2b3RyZSBuYXZpZ2F0ZXVyIHBldXQgYWNjw6lkZXIgw6BcbiAgICAgICAgICAgIDxhIFtocmVmXT1cInJlY2FwdGNoYVVybEZvclVzZXJFcnJvclwiIHRhcmdldD1cIl9ibGFua1wiPlxuICAgICAgICAgICAgICAgIHt7IHJlY2FwdGNoYVVybEZvclVzZXJFcnJvciB9fVxuICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgLlxuICAgICAgICA8L3A+XG4gICAgPC9kaXY+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicHVibGljS2V5IHwgYXN5bmMgYXMga2V5XCI+XG4gICAgICAgIDwhLS0gVGhlIGNhcHRjaGEgaXRzZWxmIGlzIGluIGEgZGlmZmVyZW50IGNvbnRhaW5lciBub3QgdG8gY29uZnVzZWQgQW5ndWxhciBjaGFuZ2UgZGV0ZWN0aW9uIC0tPlxuICAgICAgICA8YXBwLWdyZWNhcHRjaGFcbiAgICAgICAgICAgIFtzaXRlS2V5XT1cImtleVwiXG4gICAgICAgICAgICAobG9hZGVkKT1cInNldElzTG9hZGVkKCRldmVudClcIlxuICAgICAgICAgICAgKHNjcmlwdEVycm9yKT1cInNldFNjcmlwdEVycm9yKCRldmVudClcIlxuICAgICAgICAgICAgKHRva2VuT25TdWNjZXNzKT1cInRva2VuT25TdWNjZXNzKCRldmVudClcIlxuICAgICAgICA+PC9hcHAtZ3JlY2FwdGNoYT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuIl19
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2RrLXJlY2FwdGNoYS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzdGF0aW9ucy1uZy9zcmMvc2RrLXJlY2FwdGNoYS9zZGstcmVjYXB0Y2hhLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9zZGstcmVjYXB0Y2hhL3Nkay1yZWNhcHRjaGEuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVILFNBQVMsRUFHVCxTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUduRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7Ozs7QUFReEUsTUFBTSxPQUFPLHFCQUFxQjtJQWM5QixZQUNZLGdCQUFrQyxFQUNsQyxHQUFzQjtRQUR0QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBVmxDLG9CQUFlLEdBQUcsS0FBSyxDQUFDO1FBWXBCLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxJQUFJLENBQUMsZ0JBQWdCO2FBQ2hELG1CQUFtQixFQUFFO2FBQ3JCLElBQUksQ0FDRCxHQUFHLENBQUMsZ0JBQWdCLENBQUMsRUFBRTtZQUNuQixNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1lBQ3RDLE9BQU8sR0FBRyxHQUFHLENBQUMsUUFBUSxLQUFLLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUM5QyxDQUFDLENBQUMsQ0FDTCxDQUFDO0lBQ1YsQ0FBQztJQUVELFFBQVE7UUFDSixJQUFJLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDcEMsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUM5RCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNoRCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUV0RCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLE1BQU07YUFDaEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN4QiwwREFBMEQ7YUFDekQsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ2hCLDhEQUE4RDtZQUM5RCxJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO2dCQUN6QixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUM3QixDQUFDO1lBQ0QseURBQXlEO1lBQ3pELGNBQWM7WUFDZCxJQUFJLE1BQU0sQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUNuQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzVCLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVQLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzVELENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsa0JBQWtCLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDMUMsQ0FBQztRQUVELHFDQUFxQztRQUNyQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO0lBQ2xDLENBQUM7SUFFRCxXQUFXLENBQUMsUUFBaUI7UUFDekIsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFFekIsNkNBQTZDO1FBQzdDLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDekIsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDN0IsQ0FBQztJQUNMLENBQUM7SUFFRCxjQUFjLENBQUMsV0FBb0I7UUFDL0IsSUFBSSxDQUFDLGVBQWUsR0FBRyxXQUFXLENBQUM7UUFFbkMsNkNBQTZDO1FBQzdDLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDekIsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDN0IsQ0FBQztJQUNMLENBQUM7SUFFRCxjQUFjLENBQUMsS0FBYTtRQUN4QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNDLENBQUM7K0dBakZRLHFCQUFxQjttR0FBckIscUJBQXFCLDJGQUNuQixtQkFBbUIsZ0RDcEJsQyxzekRBK0NBOzs0RkQ1QmEscUJBQXFCO2tCQUxqQyxTQUFTOytCQUVJLFNBQVM7cUhBS25CLFVBQVU7c0JBRFQsU0FBUzt1QkFBQyxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IEZvcm1FcnJvciB9IGZyb20gJy4uL2Zvcm0tZXJyb3InO1xuaW1wb3J0IHsgR3JlY2FwdGNoYUNvbXBvbmVudCB9IGZyb20gJy4vZ3JlY2FwdGNoYS9ncmVjYXB0Y2hhLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBSZWNhcHRjaGFTZXJ2aWNlIH0gZnJvbSAnLi9yZWNhcHRjaGEuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSAgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvclxuICAgIHNlbGVjdG9yOiAnY2FwdGNoYScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3Nkay1yZWNhcHRjaGEuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFNka1JlY2FwdGNoYUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICBAVmlld0NoaWxkKEdyZWNhcHRjaGFDb21wb25lbnQpXG4gICAgZ3JlY2FwdGNoYTogR3JlY2FwdGNoYUNvbXBvbmVudDtcblxuICAgIHNob3VsZERpc3BsYXk6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gICAgaXNMb2FkZWQ6IGJvb2xlYW47XG4gICAgaGFzTG9hZGluZ0Vycm9yID0gZmFsc2U7XG4gICAgZXJyb3JzOiBPYnNlcnZhYmxlPEZvcm1FcnJvcltdPjtcbiAgICBwdWJsaWNLZXk6IE9ic2VydmFibGU8c3RyaW5nPjtcbiAgICByZWNhcHRjaGFVcmxGb3JVc2VyRXJyb3I6IE9ic2VydmFibGU8c3RyaW5nPjtcblxuICAgIHByaXZhdGUgZXJyb3JzU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gICAgcHJpdmF0ZSBmb3JjZURldGVjdENoYW5nZTogKCkgPT4gdm9pZDtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlY2FwdGNoYVNlcnZpY2U6IFJlY2FwdGNoYVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZlxuICAgICkge1xuICAgICAgICB0aGlzLnJlY2FwdGNoYVVybEZvclVzZXJFcnJvciA9IHRoaXMucmVjYXB0Y2hhU2VydmljZVxuICAgICAgICAgICAgLmdldENhcHRjaGFTY3JpcHRVcmwoKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKGNhcHRjaGFTY3JpcHRVcmwgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB1cmwgPSBuZXcgVVJMKGNhcHRjaGFTY3JpcHRVcmwpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYCR7dXJsLnByb3RvY29sfS8vJHt1cmwuaG9zdG5hbWV9YDtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yZWNhcHRjaGFTZXJ2aWNlLmNsZWFyRXJyb3JzKCk7XG4gICAgICAgIHRoaXMuc2hvdWxkRGlzcGxheSA9IHRoaXMucmVjYXB0Y2hhU2VydmljZS5nZXRTaG91bGREaXNwbGF5KCk7XG4gICAgICAgIHRoaXMuZXJyb3JzID0gdGhpcy5yZWNhcHRjaGFTZXJ2aWNlLmdldEVycm9ycygpO1xuICAgICAgICB0aGlzLnB1YmxpY0tleSA9IHRoaXMucmVjYXB0Y2hhU2VydmljZS5nZXRQdWJsaWNLZXkoKTtcblxuICAgICAgICB0aGlzLmVycm9yc1N1YnNjcmlwdGlvbiA9IHRoaXMuZXJyb3JzXG4gICAgICAgICAgICAucGlwZShkZWJvdW5jZVRpbWUoNTAwKSlcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByeGpzLWFuZ3VsYXIvcHJlZmVyLWFzeW5jLXBpcGVcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoZXJyb3JzID0+IHtcbiAgICAgICAgICAgICAgICAvLyBIYWNrIGJlY2F1c2UgdGhlIGNhcHRjaGEgY29uZnVzZXMgQW5ndWxhciBkZXRlY3Rpb24gY2hhbmdlLlxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmZvcmNlRGV0ZWN0Q2hhbmdlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9yY2VEZXRlY3RDaGFuZ2UoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gSW4gY2FzZSBvZiBlcnJvcnMsIHJlc2V0IHRoZSBjYXB0Y2hhIGZvciBhIGJldHRlciB1c2VyXG4gICAgICAgICAgICAgICAgLy8gZXhwZXJpZW5jZS5cbiAgICAgICAgICAgICAgICBpZiAoZXJyb3JzLmxlbmd0aCAmJiB0aGlzLmdyZWNhcHRjaGEpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ncmVjYXB0Y2hhLnJlc2V0KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5mb3JjZURldGVjdENoYW5nZSA9ICgpID0+IHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZXJyb3JzU3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLmVycm9yc1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQXZvaWQgY2RyIG9uIGRlc3Ryb3llZCBjb21wb25lbnRzLlxuICAgICAgICB0aGlzLmZvcmNlRGV0ZWN0Q2hhbmdlID0gbnVsbDtcbiAgICB9XG5cbiAgICBzZXRJc0xvYWRlZChpc0xvYWRlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLmlzTG9hZGVkID0gaXNMb2FkZWQ7XG5cbiAgICAgICAgLy8gQW5ndWxhciBkb2Vzbid0IGRldGVjdCB0aGUgY2hhbmdlIHByb3Blcmx5XG4gICAgICAgIGlmICh0aGlzLmZvcmNlRGV0ZWN0Q2hhbmdlKSB7XG4gICAgICAgICAgICB0aGlzLmZvcmNlRGV0ZWN0Q2hhbmdlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzZXRTY3JpcHRFcnJvcihzY3JpcHRFcnJvcjogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLmhhc0xvYWRpbmdFcnJvciA9IHNjcmlwdEVycm9yO1xuXG4gICAgICAgIC8vIEFuZ3VsYXIgZG9lc24ndCBkZXRlY3QgdGhlIGNoYW5nZSBwcm9wZXJseVxuICAgICAgICBpZiAodGhpcy5mb3JjZURldGVjdENoYW5nZSkge1xuICAgICAgICAgICAgdGhpcy5mb3JjZURldGVjdENoYW5nZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdG9rZW5PblN1Y2Nlc3ModG9rZW46IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLnJlY2FwdGNoYVNlcnZpY2Uub25TdWNjZXNzKHRva2VuKTtcbiAgICB9XG59XG4iLCI8IS0tIE9ubHkgZGlzcGxheSB0aGUgY29udGVudCBpZiB0aGUgY2FwdGNoYSBzaG91bGQgYmUgZGlzcGxheWVkICh1c2VyIG5vdCBjb25uZWN0ZWQgZm9yIGluc3RhbmNlKSAtLT5cbjxkaXYgaWQ9XCJmb2Vobl9yZWNhcHRjaGFDb250YWluZXJcIiAqbmdJZj1cInNob3VsZERpc3BsYXkgfCBhc3luY1wiPlxuICAgIDwhLS0gTWFudWFsIGVycm9yIGhhbmRsaW5nIGJlY2F1c2UgZXJyb3JzIGNhbiBjb21lIGZyb20gbXVsdGlwbGUgc291cmNlcyAtLT5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZXJyb3JzIHwgYXN5bmMgYXMgZXJyXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sLWZlZWRiYWNrIHRleHQtZGFuZ2VyXCJcbiAgICAgICAgICAgICpuZ0lmPVwiZXJyICYmIGVyci5sZW5ndGhcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8cCAqbmdGb3I9XCJsZXQgZXJyb3Igb2YgZXJyXCI+e3sgZXJyb3IubWVzc2FnZSB9fTwvcD5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8IS0tIFdoaWxlIHRoZSBjYXB0Y2hhIGlzIGJlaW5nIGxvYWRlZCAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiYWxlcnQgYWxlcnQtaW5mb1wiICpuZ0lmPVwiIWlzTG9hZGVkICYmICFoYXNMb2FkaW5nRXJyb3JcIj5cbiAgICAgICAgQ2hhcmdlbWVudCBkdSBjYXB0Y2hhXG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIEluIGNhc2UgZ29vZ2xlLmNvbSBjYW5ub3QgYmUgcmVhY2hlZCBmb3IgaW5zdGFuY2UgLS0+XG4gICAgPGRpdiBjbGFzcz1cImFsZXJ0IGFsZXJ0LWRhbmdlclwiICpuZ0lmPVwiaGFzTG9hZGluZ0Vycm9yXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtdC0wIGFsZXJ0LWhlYWRpbmcgaDRcIj5cbiAgICAgICAgICAgIFVuZSBlcnJldXIgZXN0IHN1cnZlbnVlIGxvcnMgZHUgY2hhcmdlbWVudCBkdSBjYXB0Y2hhLlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPHA+XG4gICAgICAgICAgICBNZXJjaSBkZSB2w6lyaWZpZXIgcXVlIHZvdHJlIG5hdmlnYXRldXIgcGV1dCBhY2PDqWRlciDDoFxuICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAgICAgICByZWNhcHRjaGFVcmxGb3JVc2VyRXJyb3IgfCBhc3luYyBhcyByZWNhcHRjaGFVcmxVc2VyRXJyb3JcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgIFtocmVmXT1cInJlY2FwdGNoYVVybFVzZXJFcnJvclwiXG4gICAgICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7eyByZWNhcHRjaGFVcmxVc2VyRXJyb3IgfX1cbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgIC5cbiAgICAgICAgPC9wPlxuICAgIDwvZGl2PlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInB1YmxpY0tleSB8IGFzeW5jIGFzIGtleVwiPlxuICAgICAgICA8IS0tIFRoZSBjYXB0Y2hhIGl0c2VsZiBpcyBpbiBhIGRpZmZlcmVudCBjb250YWluZXIgbm90IHRvIGNvbmZ1c2VkIEFuZ3VsYXIgY2hhbmdlIGRldGVjdGlvbiAtLT5cbiAgICAgICAgPGFwcC1ncmVjYXB0Y2hhXG4gICAgICAgICAgICBbc2l0ZUtleV09XCJrZXlcIlxuICAgICAgICAgICAgKGxvYWRlZCk9XCJzZXRJc0xvYWRlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgIChzY3JpcHRFcnJvcik9XCJzZXRTY3JpcHRFcnJvcigkZXZlbnQpXCJcbiAgICAgICAgICAgICh0b2tlbk9uU3VjY2Vzcyk9XCJ0b2tlbk9uU3VjY2VzcygkZXZlbnQpXCJcbiAgICAgICAgPjwvYXBwLWdyZWNhcHRjaGE+XG4gICAgPC9uZy1jb250YWluZXI+XG48L2Rpdj5cbiJdfQ==
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Optional, Inject, Injectable, EventEmitter, Input, HostBinding, Output, forwardRef, ViewChildren, ViewChild, Directive, Pipe, Component, ContentChildren, HostListener, InjectionToken, NgModule, TemplateRef, ContentChild } from '@angular/core';
2
+ import { Optional, Inject, Injectable, EventEmitter, Input, HostBinding, Output, forwardRef, ViewChildren, ViewChild, Directive, Pipe, Component, ContentChildren, HostListener, NgModule, TemplateRef, ContentChild } from '@angular/core';
3
3
  import * as i1$1 from '@angular/router';
4
4
  import { ActivatedRoute, NavigationStart, RouterModule, NavigationEnd, RouterLink } from '@angular/router';
5
5
  import { of, Subject, BehaviorSubject, combineLatest, throwError, switchMap as switchMap$1, forkJoin, tap as tap$1, concat, toArray, EMPTY, startWith, filter as filter$1, merge, withLatestFrom, debounceTime as debounceTime$1, map as map$1 } from 'rxjs';
@@ -4315,12 +4315,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
4315
4315
 
4316
4316
  const RECAPTCHA_API_URL = 'api/recaptcha';
4317
4317
  const CAPTCHA_ERROR_NAME = 'recaptcha';
4318
- const CAPTCHA_URL_TOKEN = new InjectionToken('captchaScriptUrl', {
4319
- providedIn: 'root',
4320
- factory: () => 'https://challenges.cloudflare.com/turnstile/v0/api.js?onload=reCaptchaLoad&render=explicit&compat=recaptcha'
4321
- });
4322
4318
  class RecaptchaService {
4323
- constructor(http, sessionInfo, route, validationHandlerService, gesdemService, gesdemEventService, applicationInfoService, captchaScriptUrl) {
4319
+ constructor(http, sessionInfo, route, validationHandlerService, gesdemService, gesdemEventService, applicationInfoService) {
4324
4320
  this.http = http;
4325
4321
  this.sessionInfo = sessionInfo;
4326
4322
  this.route = route;
@@ -4328,11 +4324,11 @@ class RecaptchaService {
4328
4324
  this.gesdemService = gesdemService;
4329
4325
  this.gesdemEventService = gesdemEventService;
4330
4326
  this.applicationInfoService = applicationInfoService;
4331
- this.captchaScriptUrl = captchaScriptUrl;
4332
4327
  this.errorsSubject = new BehaviorSubject([]);
4333
4328
  this.errors = this.initErrorObservable(); // has to be first since it is used in initShouldDisplayObservable !
4334
4329
  this.shouldDisplay = this.initShouldDisplayObservable();
4335
4330
  this.publicKey = this.initPublicKeyObservable();
4331
+ this.captchaScriptUrl = this.initCaptchaScriptUrlObservable();
4336
4332
  }
4337
4333
  onSuccess(token) {
4338
4334
  // To be accessed by the gesdem service and to avoid to have a circular
@@ -4456,6 +4452,9 @@ class RecaptchaService {
4456
4452
  initPublicKeyObservable() {
4457
4453
  return this.applicationInfoService.data.pipe(map(applicationInfo => this.getPublicKeyOrNull(applicationInfo)));
4458
4454
  }
4455
+ initCaptchaScriptUrlObservable() {
4456
+ return this.applicationInfoService.data.pipe(map(applicationInfo => applicationInfo?.configuration?.captcha?.captchaUrlToken));
4457
+ }
4459
4458
  getPublicKeyOrNull(applicationInfo) {
4460
4459
  // Replace this whole shenanigan with applicationInfo?.configuration?.captcha?.publickey when
4461
4460
  // Typescript supports it.
@@ -4472,7 +4471,7 @@ class RecaptchaService {
4472
4471
  }
4473
4472
  return captcha.publickey || null;
4474
4473
  }
4475
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: RecaptchaService, deps: [{ token: i1.HttpClient }, { token: SessionInfo }, { token: i1$1.ActivatedRoute }, { token: ValidationHandlerService }, { token: GesdemHandlerService }, { token: GesdemEventService }, { token: ApplicationInfoService }, { token: CAPTCHA_URL_TOKEN }], target: i0.ɵɵFactoryTarget.Injectable }); }
4474
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: RecaptchaService, deps: [{ token: i1.HttpClient }, { token: SessionInfo }, { token: i1$1.ActivatedRoute }, { token: ValidationHandlerService }, { token: GesdemHandlerService }, { token: GesdemEventService }, { token: ApplicationInfoService }], target: i0.ɵɵFactoryTarget.Injectable }); }
4476
4475
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: RecaptchaService, providedIn: 'root' }); }
4477
4476
  }
4478
4477
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: RecaptchaService, decorators: [{
@@ -4480,10 +4479,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
4480
4479
  args: [{
4481
4480
  providedIn: 'root'
4482
4481
  }]
4483
- }], ctorParameters: () => [{ type: i1.HttpClient }, { type: SessionInfo }, { type: i1$1.ActivatedRoute }, { type: ValidationHandlerService }, { type: GesdemHandlerService }, { type: GesdemEventService }, { type: ApplicationInfoService }, { type: undefined, decorators: [{
4484
- type: Inject,
4485
- args: [CAPTCHA_URL_TOKEN]
4486
- }] }] });
4482
+ }], ctorParameters: () => [{ type: i1.HttpClient }, { type: SessionInfo }, { type: i1$1.ActivatedRoute }, { type: ValidationHandlerService }, { type: GesdemHandlerService }, { type: GesdemEventService }, { type: ApplicationInfoService }] });
4487
4483
 
4488
4484
  const SCRIPT_ID = 'prestations-ng-captcha-script';
4489
4485
  /**
@@ -4530,13 +4526,16 @@ class GrecaptchaComponent {
4530
4526
  this.loaded.emit(true);
4531
4527
  }
4532
4528
  appendScriptTag() {
4533
- const script = document.createElement('script');
4534
- script.id = SCRIPT_ID;
4535
- script.src = this.recaptchaService.getCaptchaScriptUrl();
4536
- script.async = true;
4537
- script.defer = true;
4538
- script.onerror = () => this.scriptError.emit(true);
4539
- this.recaptchaScriptContainer.nativeElement.appendChild(script);
4529
+ // eslint-disable-next-line rxjs-angular/prefer-async-pipe
4530
+ this.recaptchaService.getCaptchaScriptUrl().subscribe(url => {
4531
+ const script = document.createElement('script');
4532
+ script.id = SCRIPT_ID;
4533
+ script.src = url;
4534
+ script.async = true;
4535
+ script.defer = true;
4536
+ script.onerror = () => this.scriptError.emit(true);
4537
+ this.recaptchaScriptContainer.nativeElement.appendChild(script);
4538
+ });
4540
4539
  }
4541
4540
  removeScript() {
4542
4541
  this.scriptError.emit(false);
@@ -4597,8 +4596,12 @@ class SdkRecaptchaComponent {
4597
4596
  this.recaptchaService = recaptchaService;
4598
4597
  this.cdr = cdr;
4599
4598
  this.hasLoadingError = false;
4600
- const url = new URL(this.recaptchaService.getCaptchaScriptUrl());
4601
- this.recaptchaUrlForUserError = `${url.protocol}//${url.hostname}`;
4599
+ this.recaptchaUrlForUserError = this.recaptchaService
4600
+ .getCaptchaScriptUrl()
4601
+ .pipe(map(captchaScriptUrl => {
4602
+ const url = new URL(captchaScriptUrl);
4603
+ return `${url.protocol}//${url.hostname}`;
4604
+ }));
4602
4605
  }
4603
4606
  ngOnInit() {
4604
4607
  this.recaptchaService.clearErrors();
@@ -4646,11 +4649,11 @@ class SdkRecaptchaComponent {
4646
4649
  this.recaptchaService.onSuccess(token);
4647
4650
  }
4648
4651
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SdkRecaptchaComponent, deps: [{ token: RecaptchaService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
4649
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: SdkRecaptchaComponent, selector: "captcha", viewQueries: [{ propertyName: "grecaptcha", first: true, predicate: GrecaptchaComponent, descendants: true }], ngImport: i0, template: "<!-- Only display the content if the captcha should be displayed (user not connected for instance) -->\n<div id=\"foehn_recaptchaContainer\" *ngIf=\"shouldDisplay | async\">\n <!-- Manual error handling because errors can come from multiple sources -->\n <ng-container *ngIf=\"errors | async as err\">\n <div\n class=\"form-control-feedback text-danger\"\n *ngIf=\"err && err.length\"\n >\n <p *ngFor=\"let error of err\">{{ error.message }}</p>\n </div>\n </ng-container>\n\n <!-- While the captcha is being loaded -->\n <div class=\"alert alert-info\" *ngIf=\"!isLoaded && !hasLoadingError\">\n Chargement du captcha\n </div>\n\n <!-- In case google.com cannot be reached for instance -->\n <div class=\"alert alert-danger\" *ngIf=\"hasLoadingError\">\n <div class=\"mt-0 alert-heading h4\">\n Une erreur est survenue lors du chargement du captcha.\n </div>\n <p>\n Merci de v\u00E9rifier que votre navigateur peut acc\u00E9der \u00E0\n <a [href]=\"recaptchaUrlForUserError\" target=\"_blank\">\n {{ recaptchaUrlForUserError }}\n </a>\n .\n </p>\n </div>\n\n <ng-container *ngIf=\"publicKey | async as key\">\n <!-- The captcha itself is in a different container not to confused Angular change detection -->\n <app-grecaptcha\n [siteKey]=\"key\"\n (loaded)=\"setIsLoaded($event)\"\n (scriptError)=\"setScriptError($event)\"\n (tokenOnSuccess)=\"tokenOnSuccess($event)\"\n ></app-grecaptcha>\n </ng-container>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: GrecaptchaComponent, selector: "app-grecaptcha", inputs: ["siteKey"], outputs: ["loaded", "scriptError", "tokenOnSuccess", "destroyed"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }] }); }
4652
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: SdkRecaptchaComponent, selector: "captcha", viewQueries: [{ propertyName: "grecaptcha", first: true, predicate: GrecaptchaComponent, descendants: true }], ngImport: i0, template: "<!-- Only display the content if the captcha should be displayed (user not connected for instance) -->\n<div id=\"foehn_recaptchaContainer\" *ngIf=\"shouldDisplay | async\">\n <!-- Manual error handling because errors can come from multiple sources -->\n <ng-container *ngIf=\"errors | async as err\">\n <div\n class=\"form-control-feedback text-danger\"\n *ngIf=\"err && err.length\"\n >\n <p *ngFor=\"let error of err\">{{ error.message }}</p>\n </div>\n </ng-container>\n\n <!-- While the captcha is being loaded -->\n <div class=\"alert alert-info\" *ngIf=\"!isLoaded && !hasLoadingError\">\n Chargement du captcha\n </div>\n\n <!-- In case google.com cannot be reached for instance -->\n <div class=\"alert alert-danger\" *ngIf=\"hasLoadingError\">\n <div class=\"mt-0 alert-heading h4\">\n Une erreur est survenue lors du chargement du captcha.\n </div>\n <p>\n Merci de v\u00E9rifier que votre navigateur peut acc\u00E9der \u00E0\n <a\n *ngIf=\"\n recaptchaUrlForUserError | async as recaptchaUrlUserError\n \"\n [href]=\"recaptchaUrlUserError\"\n target=\"_blank\"\n >\n {{ recaptchaUrlUserError }}\n </a>\n .\n </p>\n </div>\n\n <ng-container *ngIf=\"publicKey | async as key\">\n <!-- The captcha itself is in a different container not to confused Angular change detection -->\n <app-grecaptcha\n [siteKey]=\"key\"\n (loaded)=\"setIsLoaded($event)\"\n (scriptError)=\"setScriptError($event)\"\n (tokenOnSuccess)=\"tokenOnSuccess($event)\"\n ></app-grecaptcha>\n </ng-container>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: GrecaptchaComponent, selector: "app-grecaptcha", inputs: ["siteKey"], outputs: ["loaded", "scriptError", "tokenOnSuccess", "destroyed"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }] }); }
4650
4653
  }
4651
4654
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SdkRecaptchaComponent, decorators: [{
4652
4655
  type: Component,
4653
- args: [{ selector: 'captcha', template: "<!-- Only display the content if the captcha should be displayed (user not connected for instance) -->\n<div id=\"foehn_recaptchaContainer\" *ngIf=\"shouldDisplay | async\">\n <!-- Manual error handling because errors can come from multiple sources -->\n <ng-container *ngIf=\"errors | async as err\">\n <div\n class=\"form-control-feedback text-danger\"\n *ngIf=\"err && err.length\"\n >\n <p *ngFor=\"let error of err\">{{ error.message }}</p>\n </div>\n </ng-container>\n\n <!-- While the captcha is being loaded -->\n <div class=\"alert alert-info\" *ngIf=\"!isLoaded && !hasLoadingError\">\n Chargement du captcha\n </div>\n\n <!-- In case google.com cannot be reached for instance -->\n <div class=\"alert alert-danger\" *ngIf=\"hasLoadingError\">\n <div class=\"mt-0 alert-heading h4\">\n Une erreur est survenue lors du chargement du captcha.\n </div>\n <p>\n Merci de v\u00E9rifier que votre navigateur peut acc\u00E9der \u00E0\n <a [href]=\"recaptchaUrlForUserError\" target=\"_blank\">\n {{ recaptchaUrlForUserError }}\n </a>\n .\n </p>\n </div>\n\n <ng-container *ngIf=\"publicKey | async as key\">\n <!-- The captcha itself is in a different container not to confused Angular change detection -->\n <app-grecaptcha\n [siteKey]=\"key\"\n (loaded)=\"setIsLoaded($event)\"\n (scriptError)=\"setScriptError($event)\"\n (tokenOnSuccess)=\"tokenOnSuccess($event)\"\n ></app-grecaptcha>\n </ng-container>\n</div>\n" }]
4656
+ args: [{ selector: 'captcha', template: "<!-- Only display the content if the captcha should be displayed (user not connected for instance) -->\n<div id=\"foehn_recaptchaContainer\" *ngIf=\"shouldDisplay | async\">\n <!-- Manual error handling because errors can come from multiple sources -->\n <ng-container *ngIf=\"errors | async as err\">\n <div\n class=\"form-control-feedback text-danger\"\n *ngIf=\"err && err.length\"\n >\n <p *ngFor=\"let error of err\">{{ error.message }}</p>\n </div>\n </ng-container>\n\n <!-- While the captcha is being loaded -->\n <div class=\"alert alert-info\" *ngIf=\"!isLoaded && !hasLoadingError\">\n Chargement du captcha\n </div>\n\n <!-- In case google.com cannot be reached for instance -->\n <div class=\"alert alert-danger\" *ngIf=\"hasLoadingError\">\n <div class=\"mt-0 alert-heading h4\">\n Une erreur est survenue lors du chargement du captcha.\n </div>\n <p>\n Merci de v\u00E9rifier que votre navigateur peut acc\u00E9der \u00E0\n <a\n *ngIf=\"\n recaptchaUrlForUserError | async as recaptchaUrlUserError\n \"\n [href]=\"recaptchaUrlUserError\"\n target=\"_blank\"\n >\n {{ recaptchaUrlUserError }}\n </a>\n .\n </p>\n </div>\n\n <ng-container *ngIf=\"publicKey | async as key\">\n <!-- The captcha itself is in a different container not to confused Angular change detection -->\n <app-grecaptcha\n [siteKey]=\"key\"\n (loaded)=\"setIsLoaded($event)\"\n (scriptError)=\"setScriptError($event)\"\n (tokenOnSuccess)=\"tokenOnSuccess($event)\"\n ></app-grecaptcha>\n </ng-container>\n</div>\n" }]
4654
4657
  }], ctorParameters: () => [{ type: RecaptchaService }, { type: i0.ChangeDetectorRef }], propDecorators: { grecaptcha: [{
4655
4658
  type: ViewChild,
4656
4659
  args: [GrecaptchaComponent]
@@ -16023,5 +16026,5 @@ class DropdownMenuItem {
16023
16026
  * Generated bundle index. Do not edit.
16024
16027
  */
16025
16028
 
16026
- export { APP_INFO_API_URL, AbstractFoehnUploaderComponent, AbstractListDetailPageComponent, AbstractMenuPageComponent, AbstractPageComponent, AbstractPageFromMenuComponent, ActionStatut, Address, AddressTypeLight, ApplicationInfo, ApplicationInfoService, BAD_PARAMS_HELP_TEXT, BoDocumentError, BoDocumentsWithErrors, BoMultiUploadService, Breadcrumb, BreadcrumbEventService, BreadcrumbItem, CAPTCHA_ERROR_NAME, CAPTCHA_URL_TOKEN, CURRENCY_REGEXP, Calendar, Canton, Captcha, ComponentError, Configuration, Country, CurrencyHelper, CurrentWeek, DECIMALS_SEPARATOR, DEFAULT_INTERNATIONAL_AND_NO_SWISS, DEFAULT_INTERNATIONAL_AND_NO_SWISS_MOBILE, DEFAULT_INTERNATIONAL_AND_NO_SWISS_PHONE, DEFAULT_INTERNATIONAL_HELP_TEXT, DEFAULT_PREFIX, DEFAULT_SWISS_HELP_TEXT, DEFAULT_SWISS_MOBILE_PHONE_HELP_TEXT, DEFAULT_SWISS_PHONE_HELP_TEXT, DICTIONARY_BASE_URL, DateHelper, DatePickerHelper, DatePickerNavigationHelper, DayMonth, DaySlots, DemandeExpirationService, DemandeHelper, DisplayCurrencyPipe, DisplayDatePipe, District, Document, DocumentError, DocumentReference, DocumentReferenceWithFile, DocumentsWithErrors, DropdownMenuGroup, DropdownMenuItem, EPaymentService, EtapeInfo, FEEDBACK_USAGERS_LOCAL_STORAGE_PREFIX, FORM_SUPPORT_CYBER_TITLE_FALLBACK, FocusedDay, FoehnAbbrComponent, FoehnAddressModule, FoehnAgendaComponent, FoehnAgendaModule, FoehnAgendaNavigationComponent, FoehnAgendaTimeslotPanelComponent, FoehnAutocompleteComponent, FoehnAutocompleteModule, FoehnBoMultiUploadComponent, FoehnBoMultiUploadModule, FoehnBooleanCheckboxComponent, FoehnBooleanModule, FoehnBooleanRadioComponent, FoehnBreadcrumbComponent, FoehnBreadcrumbModule, FoehnCheckableGroupComponent, FoehnCheckablesModule, FoehnCheckboxComponent, FoehnConfirmModalComponent, FoehnConfirmModalContent, FoehnConfirmModalModule, FoehnConfirmModalService, FoehnDateComponent, FoehnDatePickerButtonComponent, FoehnDatePickerButtonModule, FoehnDatePickerComponent, FoehnDatePickerModule, FoehnDateTimeComponent, FoehnDecisionElectroniqueComponent, FoehnDecisionElectroniqueModule, FoehnDisplayAddressComponent, FoehnDropdownMenuComponent, FoehnDropdownMenuModule, FoehnErrorPillComponent, FoehnFeedbackNotificationComponent, FoehnFeedbackNotificationModule, FoehnFormComponent, FoehnFormModule, FoehnHeaderComponent, FoehnHeaderModule, FoehnHelpModalComponent, FoehnHelpModalModule, FoehnIconCalendarComponent, FoehnIconCheckComponent, FoehnIconCheckSquareOComponent, FoehnIconChevronDownComponent, FoehnIconChevronLeftComponent, FoehnIconChevronRightComponent, FoehnIconChevronUpComponent, FoehnIconClockComponent, FoehnIconCommentDotsComponent, FoehnIconEditComponent, FoehnIconExternalLinkAltComponent, FoehnIconFilePdfComponent, FoehnIconInfoCircleComponent, FoehnIconLockComponent, FoehnIconMapMarkerComponent, FoehnIconMinusCircleComponent, FoehnIconPencilComponent, FoehnIconPlusCircleComponent, FoehnIconPlusSquareComponent, FoehnIconSearchComponent, FoehnIconTimesComponent, FoehnIconTrashAltComponent, FoehnIconUnlockAltComponent, FoehnIconUserComponent, FoehnIconsModule, FoehnInputAddressComponent, FoehnInputComponent, FoehnInputEmailComponent, FoehnInputForeignLocalityComponent, FoehnInputForeignStreetComponent, FoehnInputHiddenComponent, FoehnInputModule, FoehnInputNav13Component, FoehnInputNav13Module, FoehnInputNumberComponent, FoehnInputPasswordComponent, FoehnInputPhoneComponent, FoehnInputPrefixedTextComponent, FoehnInputStringComponent, FoehnInputTextComponent, FoehnInputTextareaComponent, FoehnListComponent, FoehnListItem, FoehnListModule, FoehnListSummaryComponent, FoehnMenuItemComponent, FoehnMenuItemTransmitComponent, FoehnMenuPrestationModule, FoehnMiscModule, FoehnModalComponent, FoehnModalModule, FoehnMultiUploadComponent, FoehnMultiUploadModule, FoehnMultiselectAutocompleteComponent, FoehnMultiselectAutocompleteModule, FoehnNavigationComponent, FoehnNavigationModule, FoehnNavigationService, FoehnNotFoundModule, FoehnNotfoundComponent, FoehnPageComponent, FoehnPageCounterComponent, FoehnPageExpirationTimerComponent, FoehnPageModalComponent, FoehnPageModule, FoehnPageService, FoehnPictureUploadComponent, FoehnPictureUploadModule, FoehnRadioComponent, FoehnRecapSectionComponent, FoehnRecapSectionModule, FoehnRemainingAlertsSummaryComponent, FoehnRemainingAlertsSummaryModule, FoehnSelectComponent, FoehnSimpleNavigationComponent, FoehnSkipLinkComponent, FoehnStatusProgressBarComponent, FoehnStatusProgressBarModule, FoehnTableColumnConfiguration, FoehnTableComponent, FoehnTableModule, FoehnTablePageChangeEvent, FoehnTimeComponent, FoehnTransmitWaitingModalComponent, FoehnTransmitWaitingModalService, FoehnUploadProgressBarComponent, FoehnUploadProgressBarModule, FoehnUserConnectedAsComponent, FoehnUserConnectedAsModule, FoehnValidationAlertSummaryComponent, FoehnValidationAlertSummaryModule, FoehnValidationAlertsComponent, FoehnValidationAlertsModule, FooterLink, FormMetadata, FormPostResponse, FormSelectOption, FormatIdePipe, FormatterModule, GESDEM_MAX_DATA_LENGTH, GesdemActionRecoveryLoginComponent, GesdemActionRecoveryModule, GesdemActionRecoveryRegistrationComponent, GesdemConfirmationComponent, GesdemConfirmationModule, GesdemErrorComponent, GesdemErrorModule, GesdemEventService, GesdemHandlerService, GesdemStatutUtils, GrowlBrokerService, GrowlMessage, GrowlType, HTTP_LOADER_FILTERED_URL, I18nForm, IbanFormatterDirective, IdeFormatterDirective, IntervalHelper, Locality, MonthYear, MultiUploadService, Municipality, NDCFormatterDirective, NavigationDirection, NumberCurrencyFormatterDirective, ObjectHelper, PORTAIL_BASE_URL_INT, PORTAIL_BASE_URL_PROD, PORTAIL_BASE_URL_VAL, PageChangeEvent, PageUploadLimitService, PaginationWeek, PendingFiles, PendingPaymentComponent, PendingUploadService, PipeModule, PlaceOfOrigin, Portail, PostalLocality, Preferences, PrestationsNgCoreModule, RECAPTCHA_API_URL, RecaptchaService, RedirectComponent, RegisterNgModelService, RowElement, SESSION_INFO_API_URL, SWISS_ISO_ID, SdkDictionaryModule, SdkDictionaryPipe, SdkDictionaryService, SdkEpaymentComponent, SdkEpaymentModule, SdkEvent, SdkEventType, SdkEventsLoggerService, SdkRecaptchaComponent, SdkRecaptchaModule, SdkRedirectModule, SdkStatisticsService, SelectedSlot, ServiceLocator, Session, SessionInfo, SessionInfoData, SessionInfoWithApplicationService, Street, StreetNumber, THOUSANDS_SEPARATOR, TRANSMIT_WAITING_MODAL_DELAY_IN_MILLISECONDS, TableSort, UploadProgress, UploadProgressService, UploaderHelper, ValidationHandlerService, formatDecimalCurrency, formatNonDecimalCurrency, formatNumberAsGiven, gesdemLoaderGuard, replaceAll };
16029
+ export { APP_INFO_API_URL, AbstractFoehnUploaderComponent, AbstractListDetailPageComponent, AbstractMenuPageComponent, AbstractPageComponent, AbstractPageFromMenuComponent, ActionStatut, Address, AddressTypeLight, ApplicationInfo, ApplicationInfoService, BAD_PARAMS_HELP_TEXT, BoDocumentError, BoDocumentsWithErrors, BoMultiUploadService, Breadcrumb, BreadcrumbEventService, BreadcrumbItem, CAPTCHA_ERROR_NAME, CURRENCY_REGEXP, Calendar, Canton, Captcha, ComponentError, Configuration, Country, CurrencyHelper, CurrentWeek, DECIMALS_SEPARATOR, DEFAULT_INTERNATIONAL_AND_NO_SWISS, DEFAULT_INTERNATIONAL_AND_NO_SWISS_MOBILE, DEFAULT_INTERNATIONAL_AND_NO_SWISS_PHONE, DEFAULT_INTERNATIONAL_HELP_TEXT, DEFAULT_PREFIX, DEFAULT_SWISS_HELP_TEXT, DEFAULT_SWISS_MOBILE_PHONE_HELP_TEXT, DEFAULT_SWISS_PHONE_HELP_TEXT, DICTIONARY_BASE_URL, DateHelper, DatePickerHelper, DatePickerNavigationHelper, DayMonth, DaySlots, DemandeExpirationService, DemandeHelper, DisplayCurrencyPipe, DisplayDatePipe, District, Document, DocumentError, DocumentReference, DocumentReferenceWithFile, DocumentsWithErrors, DropdownMenuGroup, DropdownMenuItem, EPaymentService, EtapeInfo, FEEDBACK_USAGERS_LOCAL_STORAGE_PREFIX, FORM_SUPPORT_CYBER_TITLE_FALLBACK, FocusedDay, FoehnAbbrComponent, FoehnAddressModule, FoehnAgendaComponent, FoehnAgendaModule, FoehnAgendaNavigationComponent, FoehnAgendaTimeslotPanelComponent, FoehnAutocompleteComponent, FoehnAutocompleteModule, FoehnBoMultiUploadComponent, FoehnBoMultiUploadModule, FoehnBooleanCheckboxComponent, FoehnBooleanModule, FoehnBooleanRadioComponent, FoehnBreadcrumbComponent, FoehnBreadcrumbModule, FoehnCheckableGroupComponent, FoehnCheckablesModule, FoehnCheckboxComponent, FoehnConfirmModalComponent, FoehnConfirmModalContent, FoehnConfirmModalModule, FoehnConfirmModalService, FoehnDateComponent, FoehnDatePickerButtonComponent, FoehnDatePickerButtonModule, FoehnDatePickerComponent, FoehnDatePickerModule, FoehnDateTimeComponent, FoehnDecisionElectroniqueComponent, FoehnDecisionElectroniqueModule, FoehnDisplayAddressComponent, FoehnDropdownMenuComponent, FoehnDropdownMenuModule, FoehnErrorPillComponent, FoehnFeedbackNotificationComponent, FoehnFeedbackNotificationModule, FoehnFormComponent, FoehnFormModule, FoehnHeaderComponent, FoehnHeaderModule, FoehnHelpModalComponent, FoehnHelpModalModule, FoehnIconCalendarComponent, FoehnIconCheckComponent, FoehnIconCheckSquareOComponent, FoehnIconChevronDownComponent, FoehnIconChevronLeftComponent, FoehnIconChevronRightComponent, FoehnIconChevronUpComponent, FoehnIconClockComponent, FoehnIconCommentDotsComponent, FoehnIconEditComponent, FoehnIconExternalLinkAltComponent, FoehnIconFilePdfComponent, FoehnIconInfoCircleComponent, FoehnIconLockComponent, FoehnIconMapMarkerComponent, FoehnIconMinusCircleComponent, FoehnIconPencilComponent, FoehnIconPlusCircleComponent, FoehnIconPlusSquareComponent, FoehnIconSearchComponent, FoehnIconTimesComponent, FoehnIconTrashAltComponent, FoehnIconUnlockAltComponent, FoehnIconUserComponent, FoehnIconsModule, FoehnInputAddressComponent, FoehnInputComponent, FoehnInputEmailComponent, FoehnInputForeignLocalityComponent, FoehnInputForeignStreetComponent, FoehnInputHiddenComponent, FoehnInputModule, FoehnInputNav13Component, FoehnInputNav13Module, FoehnInputNumberComponent, FoehnInputPasswordComponent, FoehnInputPhoneComponent, FoehnInputPrefixedTextComponent, FoehnInputStringComponent, FoehnInputTextComponent, FoehnInputTextareaComponent, FoehnListComponent, FoehnListItem, FoehnListModule, FoehnListSummaryComponent, FoehnMenuItemComponent, FoehnMenuItemTransmitComponent, FoehnMenuPrestationModule, FoehnMiscModule, FoehnModalComponent, FoehnModalModule, FoehnMultiUploadComponent, FoehnMultiUploadModule, FoehnMultiselectAutocompleteComponent, FoehnMultiselectAutocompleteModule, FoehnNavigationComponent, FoehnNavigationModule, FoehnNavigationService, FoehnNotFoundModule, FoehnNotfoundComponent, FoehnPageComponent, FoehnPageCounterComponent, FoehnPageExpirationTimerComponent, FoehnPageModalComponent, FoehnPageModule, FoehnPageService, FoehnPictureUploadComponent, FoehnPictureUploadModule, FoehnRadioComponent, FoehnRecapSectionComponent, FoehnRecapSectionModule, FoehnRemainingAlertsSummaryComponent, FoehnRemainingAlertsSummaryModule, FoehnSelectComponent, FoehnSimpleNavigationComponent, FoehnSkipLinkComponent, FoehnStatusProgressBarComponent, FoehnStatusProgressBarModule, FoehnTableColumnConfiguration, FoehnTableComponent, FoehnTableModule, FoehnTablePageChangeEvent, FoehnTimeComponent, FoehnTransmitWaitingModalComponent, FoehnTransmitWaitingModalService, FoehnUploadProgressBarComponent, FoehnUploadProgressBarModule, FoehnUserConnectedAsComponent, FoehnUserConnectedAsModule, FoehnValidationAlertSummaryComponent, FoehnValidationAlertSummaryModule, FoehnValidationAlertsComponent, FoehnValidationAlertsModule, FooterLink, FormMetadata, FormPostResponse, FormSelectOption, FormatIdePipe, FormatterModule, GESDEM_MAX_DATA_LENGTH, GesdemActionRecoveryLoginComponent, GesdemActionRecoveryModule, GesdemActionRecoveryRegistrationComponent, GesdemConfirmationComponent, GesdemConfirmationModule, GesdemErrorComponent, GesdemErrorModule, GesdemEventService, GesdemHandlerService, GesdemStatutUtils, GrowlBrokerService, GrowlMessage, GrowlType, HTTP_LOADER_FILTERED_URL, I18nForm, IbanFormatterDirective, IdeFormatterDirective, IntervalHelper, Locality, MonthYear, MultiUploadService, Municipality, NDCFormatterDirective, NavigationDirection, NumberCurrencyFormatterDirective, ObjectHelper, PORTAIL_BASE_URL_INT, PORTAIL_BASE_URL_PROD, PORTAIL_BASE_URL_VAL, PageChangeEvent, PageUploadLimitService, PaginationWeek, PendingFiles, PendingPaymentComponent, PendingUploadService, PipeModule, PlaceOfOrigin, Portail, PostalLocality, Preferences, PrestationsNgCoreModule, RECAPTCHA_API_URL, RecaptchaService, RedirectComponent, RegisterNgModelService, RowElement, SESSION_INFO_API_URL, SWISS_ISO_ID, SdkDictionaryModule, SdkDictionaryPipe, SdkDictionaryService, SdkEpaymentComponent, SdkEpaymentModule, SdkEvent, SdkEventType, SdkEventsLoggerService, SdkRecaptchaComponent, SdkRecaptchaModule, SdkRedirectModule, SdkStatisticsService, SelectedSlot, ServiceLocator, Session, SessionInfo, SessionInfoData, SessionInfoWithApplicationService, Street, StreetNumber, THOUSANDS_SEPARATOR, TRANSMIT_WAITING_MODAL_DELAY_IN_MILLISECONDS, TableSort, UploadProgress, UploadProgressService, UploaderHelper, ValidationHandlerService, formatDecimalCurrency, formatNonDecimalCurrency, formatNumberAsGiven, gesdemLoaderGuard, replaceAll };
16027
16030
  //# sourceMappingURL=dsivd-prestations-ng.mjs.map