@angular/platform-server 18.2.12 → 18.2.14

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.
@@ -27,10 +27,10 @@ export class ServerXhr {
27
27
  }
28
28
  return new impl.XMLHttpRequest();
29
29
  }
30
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ServerXhr, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
31
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ServerXhr }); }
30
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ServerXhr, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
31
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ServerXhr }); }
32
32
  }
33
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ServerXhr, decorators: [{
33
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ServerXhr, decorators: [{
34
34
  type: Injectable
35
35
  }] });
36
36
  function relativeUrlsTransformerInterceptorFn(request, next) {
@@ -101,10 +101,10 @@ export class ServerPlatformLocation {
101
101
  getState() {
102
102
  return undefined;
103
103
  }
104
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ServerPlatformLocation, deps: [{ token: DOCUMENT }, { token: INITIAL_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
105
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ServerPlatformLocation }); }
104
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ServerPlatformLocation, deps: [{ token: DOCUMENT }, { token: INITIAL_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
105
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ServerPlatformLocation }); }
106
106
  }
107
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ServerPlatformLocation, decorators: [{
107
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ServerPlatformLocation, decorators: [{
108
108
  type: Injectable
109
109
  }], ctorParameters: () => [{ type: undefined, decorators: [{
110
110
  type: Inject,
@@ -30,10 +30,10 @@ export class PlatformState {
30
30
  getDocument() {
31
31
  return this._doc;
32
32
  }
33
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: PlatformState, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable }); }
34
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: PlatformState }); }
33
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PlatformState, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable }); }
34
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PlatformState }); }
35
35
  }
36
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: PlatformState, decorators: [{
36
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PlatformState, decorators: [{
37
37
  type: Injectable
38
38
  }], ctorParameters: () => [{ type: undefined, decorators: [{
39
39
  type: Inject,
@@ -7,7 +7,7 @@
7
7
  */
8
8
  import { DOCUMENT, PlatformLocation, ViewportScroller, ɵgetDOM as getDOM, ɵNullViewportScroller as NullViewportScroller, ɵPLATFORM_SERVER_ID as PLATFORM_SERVER_ID, } from '@angular/common';
9
9
  import { HttpClientModule } from '@angular/common/http';
10
- import { createPlatformFactory, Injector, NgModule, Optional, PLATFORM_ID, PLATFORM_INITIALIZER, platformCore, Testability, ɵALLOW_MULTIPLE_PLATFORMS as ALLOW_MULTIPLE_PLATFORMS, ɵsetDocument, ɵTESTABILITY as TESTABILITY, } from '@angular/core';
10
+ import { createPlatformFactory, Injector, NgModule, Optional, PLATFORM_ID, PLATFORM_INITIALIZER, platformCore, Testability, ɵsetDocument, ɵALLOW_MULTIPLE_PLATFORMS as ALLOW_MULTIPLE_PLATFORMS, ɵTESTABILITY as TESTABILITY, } from '@angular/core';
11
11
  import { BrowserModule, EVENT_MANAGER_PLUGINS } from '@angular/platform-browser';
12
12
  import { NoopAnimationsModule } from '@angular/platform-browser/animations';
13
13
  import { DominoAdapter, parseDocument } from './domino_adapter';
@@ -20,6 +20,8 @@ import { TRANSFER_STATE_SERIALIZATION_PROVIDERS } from './transfer_state';
20
20
  import * as i0 from "@angular/core";
21
21
  export const INTERNAL_SERVER_PLATFORM_PROVIDERS = [
22
22
  { provide: DOCUMENT, useFactory: _document, deps: [Injector] },
23
+ // Add special provider that allows multiple instances of platformServer* to be created.
24
+ { provide: ALLOW_MULTIPLE_PLATFORMS, useValue: true },
23
25
  { provide: PLATFORM_ID, useValue: PLATFORM_SERVER_ID },
24
26
  { provide: PLATFORM_INITIALIZER, useFactory: initDominoAdapter, multi: true },
25
27
  {
@@ -28,8 +30,6 @@ export const INTERNAL_SERVER_PLATFORM_PROVIDERS = [
28
30
  deps: [DOCUMENT, [Optional, INITIAL_CONFIG]],
29
31
  },
30
32
  { provide: PlatformState, deps: [DOCUMENT] },
31
- // Add special provider that allows multiple instances of platformServer* to be created.
32
- { provide: ALLOW_MULTIPLE_PLATFORMS, useValue: true },
33
33
  ];
34
34
  function initDominoAdapter() {
35
35
  return () => {
@@ -53,11 +53,11 @@ export const PLATFORM_SERVER_PROVIDERS = [
53
53
  * @publicApi
54
54
  */
55
55
  export class ServerModule {
56
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ServerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
57
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.12", ngImport: i0, type: ServerModule, imports: [HttpClientModule, NoopAnimationsModule], exports: [BrowserModule] }); }
58
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ServerModule, providers: PLATFORM_SERVER_PROVIDERS, imports: [HttpClientModule, NoopAnimationsModule, BrowserModule] }); }
56
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ServerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
57
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: ServerModule, imports: [HttpClientModule, NoopAnimationsModule], exports: [BrowserModule] }); }
58
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ServerModule, providers: PLATFORM_SERVER_PROVIDERS, imports: [HttpClientModule, NoopAnimationsModule, BrowserModule] }); }
59
59
  }
60
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ServerModule, decorators: [{
60
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ServerModule, decorators: [{
61
61
  type: NgModule,
62
62
  args: [{
63
63
  exports: [BrowserModule],
@@ -82,7 +82,14 @@ function _document(injector) {
82
82
  return document;
83
83
  }
84
84
  /**
85
+ * Creates a server-side instance of an Angular platform.
86
+ *
87
+ * This platform should be used when performing server-side rendering of an Angular application.
88
+ * Standalone applications can be bootstrapped on the server using the `bootstrapApplication`
89
+ * function from `@angular/platform-browser`. When using `bootstrapApplication`, the `platformServer`
90
+ * should be created first and passed to the bootstrap function using the `BootstrapContext`.
91
+ *
85
92
  * @publicApi
86
93
  */
87
94
  export const platformServer = createPlatformFactory(platformCore, 'server', INTERNAL_SERVER_PLATFORM_PROVIDERS);
88
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvcGxhdGZvcm0tc2VydmVyL3NyYy9zZXJ2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUNMLFFBQVEsRUFDUixnQkFBZ0IsRUFDaEIsZ0JBQWdCLEVBQ2hCLE9BQU8sSUFBSSxNQUFNLEVBQ2pCLHFCQUFxQixJQUFJLG9CQUFvQixFQUM3QyxtQkFBbUIsSUFBSSxrQkFBa0IsR0FDMUMsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RCxPQUFPLEVBQ0wscUJBQXFCLEVBQ3JCLFFBQVEsRUFDUixRQUFRLEVBQ1IsUUFBUSxFQUNSLFdBQVcsRUFDWCxvQkFBb0IsRUFDcEIsWUFBWSxFQUlaLFdBQVcsRUFDWCx5QkFBeUIsSUFBSSx3QkFBd0IsRUFDckQsWUFBWSxFQUNaLFlBQVksSUFBSSxXQUFXLEdBQzVCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxhQUFhLEVBQUUscUJBQXFCLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUMvRSxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUUxRSxPQUFPLEVBQUMsYUFBYSxFQUFFLGFBQWEsRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQzlELE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLFFBQVEsQ0FBQztBQUM3QyxPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSxZQUFZLENBQUM7QUFDbEQsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQy9DLE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBQyxjQUFjLEVBQWlCLE1BQU0sVUFBVSxDQUFDO0FBQ3hELE9BQU8sRUFBQyxz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WSxFQUFFLFFBQVEsRUFBRSxrQ0FBa0MsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuZGV2L2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge1xuICBET0NVTUVOVCxcbiAgUGxhdGZvcm1Mb2NhdGlvbixcbiAgVmlld3BvcnRTY3JvbGxlcixcbiAgybVnZXRET00gYXMgZ2V0RE9NLFxuICDJtU51bGxWaWV3cG9ydFNjcm9sbGVyIGFzIE51bGxWaWV3cG9ydFNjcm9sbGVyLFxuICDJtVBMQVRGT1JNX1NFUlZFUl9JRCBhcyBQTEFURk9STV9TRVJWRVJfSUQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge0h0dHBDbGllbnRNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7XG4gIGNyZWF0ZVBsYXRmb3JtRmFjdG9yeSxcbiAgSW5qZWN0b3IsXG4gIE5nTW9kdWxlLFxuICBPcHRpb25hbCxcbiAgUExBVEZPUk1fSUQsXG4gIFBMQVRGT1JNX0lOSVRJQUxJWkVSLFxuICBwbGF0Zm9ybUNvcmUsXG4gIFBsYXRmb3JtUmVmLFxuICBQcm92aWRlcixcbiAgU3RhdGljUHJvdmlkZXIsXG4gIFRlc3RhYmlsaXR5LFxuICDJtUFMTE9XX01VTFRJUExFX1BMQVRGT1JNUyBhcyBBTExPV19NVUxUSVBMRV9QTEFURk9STVMsXG4gIMm1c2V0RG9jdW1lbnQsXG4gIMm1VEVTVEFCSUxJVFkgYXMgVEVTVEFCSUxJVFksXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtCcm93c2VyTW9kdWxlLCBFVkVOVF9NQU5BR0VSX1BMVUdJTlN9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHtOb29wQW5pbWF0aW9uc01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlci9hbmltYXRpb25zJztcblxuaW1wb3J0IHtEb21pbm9BZGFwdGVyLCBwYXJzZURvY3VtZW50fSBmcm9tICcuL2RvbWlub19hZGFwdGVyJztcbmltcG9ydCB7U0VSVkVSX0hUVFBfUFJPVklERVJTfSBmcm9tICcuL2h0dHAnO1xuaW1wb3J0IHtTZXJ2ZXJQbGF0Zm9ybUxvY2F0aW9ufSBmcm9tICcuL2xvY2F0aW9uJztcbmltcG9ydCB7UGxhdGZvcm1TdGF0ZX0gZnJvbSAnLi9wbGF0Zm9ybV9zdGF0ZSc7XG5pbXBvcnQge1NlcnZlckV2ZW50TWFuYWdlclBsdWdpbn0gZnJvbSAnLi9zZXJ2ZXJfZXZlbnRzJztcbmltcG9ydCB7SU5JVElBTF9DT05GSUcsIFBsYXRmb3JtQ29uZmlnfSBmcm9tICcuL3Rva2Vucyc7XG5pbXBvcnQge1RSQU5TRkVSX1NUQVRFX1NFUklBTElaQVRJT05fUFJPVklERVJTfSBmcm9tICcuL3RyYW5zZmVyX3N0YXRlJztcblxuZXhwb3J0IGNvbnN0IElOVEVSTkFMX1NFUlZFUl9QTEFURk9STV9QUk9WSURFUlM6IFN0YXRpY1Byb3ZpZGVyW10gPSBbXG4gIHtwcm92aWRlOiBET0NVTUVOVCwgdXNlRmFjdG9yeTogX2RvY3VtZW50LCBkZXBzOiBbSW5qZWN0b3JdfSxcbiAge3Byb3ZpZGU6IFBMQVRGT1JNX0lELCB1c2VWYWx1ZTogUExBVEZPUk1fU0VSVkVSX0lEfSxcbiAge3Byb3ZpZGU6IFBMQVRGT1JNX0lOSVRJQUxJWkVSLCB1c2VGYWN0b3J5OiBpbml0RG9taW5vQWRhcHRlciwgbXVsdGk6IHRydWV9LFxuICB7XG4gICAgcHJvdmlkZTogUGxhdGZvcm1Mb2NhdGlvbixcbiAgICB1c2VDbGFzczogU2VydmVyUGxhdGZvcm1Mb2NhdGlvbixcbiAgICBkZXBzOiBbRE9DVU1FTlQsIFtPcHRpb25hbCwgSU5JVElBTF9DT05GSUddXSxcbiAgfSxcbiAge3Byb3ZpZGU6IFBsYXRmb3JtU3RhdGUsIGRlcHM6IFtET0NVTUVOVF19LFxuICAvLyBBZGQgc3BlY2lhbCBwcm92aWRlciB0aGF0IGFsbG93cyBtdWx0aXBsZSBpbnN0YW5jZXMgb2YgcGxhdGZvcm1TZXJ2ZXIqIHRvIGJlIGNyZWF0ZWQuXG4gIHtwcm92aWRlOiBBTExPV19NVUxUSVBMRV9QTEFURk9STVMsIHVzZVZhbHVlOiB0cnVlfSxcbl07XG5cbmZ1bmN0aW9uIGluaXREb21pbm9BZGFwdGVyKCkge1xuICByZXR1cm4gKCkgPT4ge1xuICAgIERvbWlub0FkYXB0ZXIubWFrZUN1cnJlbnQoKTtcbiAgfTtcbn1cblxuZXhwb3J0IGNvbnN0IFNFUlZFUl9SRU5ERVJfUFJPVklERVJTOiBQcm92aWRlcltdID0gW1xuICB7cHJvdmlkZTogRVZFTlRfTUFOQUdFUl9QTFVHSU5TLCBtdWx0aTogdHJ1ZSwgdXNlQ2xhc3M6IFNlcnZlckV2ZW50TWFuYWdlclBsdWdpbn0sXG5dO1xuXG5leHBvcnQgY29uc3QgUExBVEZPUk1fU0VSVkVSX1BST1ZJREVSUzogUHJvdmlkZXJbXSA9IFtcbiAgVFJBTlNGRVJfU1RBVEVfU0VSSUFMSVpBVElPTl9QUk9WSURFUlMsXG4gIFNFUlZFUl9SRU5ERVJfUFJPVklERVJTLFxuICBTRVJWRVJfSFRUUF9QUk9WSURFUlMsXG4gIHtwcm92aWRlOiBUZXN0YWJpbGl0eSwgdXNlVmFsdWU6IG51bGx9LCAvLyBLZWVwIGZvciBiYWNrd2FyZHMtY29tcGF0aWJpbGl0eS5cbiAge3Byb3ZpZGU6IFRFU1RBQklMSVRZLCB1c2VWYWx1ZTogbnVsbH0sXG4gIHtwcm92aWRlOiBWaWV3cG9ydFNjcm9sbGVyLCB1c2VDbGFzczogTnVsbFZpZXdwb3J0U2Nyb2xsZXJ9LFxuXTtcblxuLyoqXG4gKiBUaGUgbmcgbW9kdWxlIGZvciB0aGUgc2VydmVyLlxuICpcbiAqIEBwdWJsaWNBcGlcbiAqL1xuQE5nTW9kdWxlKHtcbiAgZXhwb3J0czogW0Jyb3dzZXJNb2R1bGVdLFxuICBpbXBvcnRzOiBbSHR0cENsaWVudE1vZHVsZSwgTm9vcEFuaW1hdGlvbnNNb2R1bGVdLFxuICBwcm92aWRlcnM6IFBMQVRGT1JNX1NFUlZFUl9QUk9WSURFUlMsXG59KVxuZXhwb3J0IGNsYXNzIFNlcnZlck1vZHVsZSB7fVxuXG5mdW5jdGlvbiBfZG9jdW1lbnQoaW5qZWN0b3I6IEluamVjdG9yKSB7XG4gIGNvbnN0IGNvbmZpZzogUGxhdGZvcm1Db25maWcgfCBudWxsID0gaW5qZWN0b3IuZ2V0KElOSVRJQUxfQ09ORklHLCBudWxsKTtcbiAgbGV0IGRvY3VtZW50OiBEb2N1bWVudDtcbiAgaWYgKGNvbmZpZyAmJiBjb25maWcuZG9jdW1lbnQpIHtcbiAgICBkb2N1bWVudCA9XG4gICAgICB0eXBlb2YgY29uZmlnLmRvY3VtZW50ID09PSAnc3RyaW5nJ1xuICAgICAgICA/IHBhcnNlRG9jdW1lbnQoY29uZmlnLmRvY3VtZW50LCBjb25maWcudXJsKVxuICAgICAgICA6IGNvbmZpZy5kb2N1bWVudDtcbiAgfSBlbHNlIHtcbiAgICBkb2N1bWVudCA9IGdldERPTSgpLmNyZWF0ZUh0bWxEb2N1bWVudCgpO1xuICB9XG4gIC8vIFRlbGwgaXZ5IGFib3V0IHRoZSBnbG9iYWwgZG9jdW1lbnRcbiAgybVzZXREb2N1bWVudChkb2N1bWVudCk7XG4gIHJldHVybiBkb2N1bWVudDtcbn1cblxuLyoqXG4gKiBAcHVibGljQXBpXG4gKi9cbmV4cG9ydCBjb25zdCBwbGF0Zm9ybVNlcnZlcjogKGV4dHJhUHJvdmlkZXJzPzogU3RhdGljUHJvdmlkZXJbXSB8IHVuZGVmaW5lZCkgPT4gUGxhdGZvcm1SZWYgPVxuICBjcmVhdGVQbGF0Zm9ybUZhY3RvcnkocGxhdGZvcm1Db3JlLCAnc2VydmVyJywgSU5URVJOQUxfU0VSVkVSX1BMQVRGT1JNX1BST1ZJREVSUyk7XG4iXX0=
95
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvcGxhdGZvcm0tc2VydmVyL3NyYy9zZXJ2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUNMLFFBQVEsRUFDUixnQkFBZ0IsRUFDaEIsZ0JBQWdCLEVBQ2hCLE9BQU8sSUFBSSxNQUFNLEVBQ2pCLHFCQUFxQixJQUFJLG9CQUFvQixFQUM3QyxtQkFBbUIsSUFBSSxrQkFBa0IsR0FDMUMsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RCxPQUFPLEVBQ0wscUJBQXFCLEVBQ3JCLFFBQVEsRUFDUixRQUFRLEVBQ1IsUUFBUSxFQUNSLFdBQVcsRUFDWCxvQkFBb0IsRUFDcEIsWUFBWSxFQUlaLFdBQVcsRUFDWCxZQUFZLEVBQ1oseUJBQXlCLElBQUksd0JBQXdCLEVBQ3JELFlBQVksSUFBSSxXQUFXLEdBQzVCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxhQUFhLEVBQUUscUJBQXFCLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUMvRSxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUUxRSxPQUFPLEVBQUMsYUFBYSxFQUFFLGFBQWEsRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQzlELE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLFFBQVEsQ0FBQztBQUM3QyxPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSxZQUFZLENBQUM7QUFDbEQsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQy9DLE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBQyxjQUFjLEVBQWlCLE1BQU0sVUFBVSxDQUFDO0FBQ3hELE9BQU8sRUFBQyxz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QUFDLFlBQVksRUFBRSxRQUFRLEVBQUUsa0NBQWtDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmRldi9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtcbiAgRE9DVU1FTlQsXG4gIFBsYXRmb3JtTG9jYXRpb24sXG4gIFZpZXdwb3J0U2Nyb2xsZXIsXG4gIMm1Z2V0RE9NIGFzIGdldERPTSxcbiAgybVOdWxsVmlld3BvcnRTY3JvbGxlciBhcyBOdWxsVmlld3BvcnRTY3JvbGxlcixcbiAgybVQTEFURk9STV9TRVJWRVJfSUQgYXMgUExBVEZPUk1fU0VSVkVSX0lELFxufSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtIdHRwQ2xpZW50TW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQge1xuICBjcmVhdGVQbGF0Zm9ybUZhY3RvcnksXG4gIEluamVjdG9yLFxuICBOZ01vZHVsZSxcbiAgT3B0aW9uYWwsXG4gIFBMQVRGT1JNX0lELFxuICBQTEFURk9STV9JTklUSUFMSVpFUixcbiAgcGxhdGZvcm1Db3JlLFxuICBQbGF0Zm9ybVJlZixcbiAgUHJvdmlkZXIsXG4gIFN0YXRpY1Byb3ZpZGVyLFxuICBUZXN0YWJpbGl0eSxcbiAgybVzZXREb2N1bWVudCxcbiAgybVBTExPV19NVUxUSVBMRV9QTEFURk9STVMgYXMgQUxMT1dfTVVMVElQTEVfUExBVEZPUk1TLFxuICDJtVRFU1RBQklMSVRZIGFzIFRFU1RBQklMSVRZLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QnJvd3Nlck1vZHVsZSwgRVZFTlRfTUFOQUdFUl9QTFVHSU5TfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7Tm9vcEFuaW1hdGlvbnNNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXIvYW5pbWF0aW9ucyc7XG5cbmltcG9ydCB7RG9taW5vQWRhcHRlciwgcGFyc2VEb2N1bWVudH0gZnJvbSAnLi9kb21pbm9fYWRhcHRlcic7XG5pbXBvcnQge1NFUlZFUl9IVFRQX1BST1ZJREVSU30gZnJvbSAnLi9odHRwJztcbmltcG9ydCB7U2VydmVyUGxhdGZvcm1Mb2NhdGlvbn0gZnJvbSAnLi9sb2NhdGlvbic7XG5pbXBvcnQge1BsYXRmb3JtU3RhdGV9IGZyb20gJy4vcGxhdGZvcm1fc3RhdGUnO1xuaW1wb3J0IHtTZXJ2ZXJFdmVudE1hbmFnZXJQbHVnaW59IGZyb20gJy4vc2VydmVyX2V2ZW50cyc7XG5pbXBvcnQge0lOSVRJQUxfQ09ORklHLCBQbGF0Zm9ybUNvbmZpZ30gZnJvbSAnLi90b2tlbnMnO1xuaW1wb3J0IHtUUkFOU0ZFUl9TVEFURV9TRVJJQUxJWkFUSU9OX1BST1ZJREVSU30gZnJvbSAnLi90cmFuc2Zlcl9zdGF0ZSc7XG5cbmV4cG9ydCBjb25zdCBJTlRFUk5BTF9TRVJWRVJfUExBVEZPUk1fUFJPVklERVJTOiBTdGF0aWNQcm92aWRlcltdID0gW1xuICB7cHJvdmlkZTogRE9DVU1FTlQsIHVzZUZhY3Rvcnk6IF9kb2N1bWVudCwgZGVwczogW0luamVjdG9yXX0sXG4gIC8vIEFkZCBzcGVjaWFsIHByb3ZpZGVyIHRoYXQgYWxsb3dzIG11bHRpcGxlIGluc3RhbmNlcyBvZiBwbGF0Zm9ybVNlcnZlciogdG8gYmUgY3JlYXRlZC5cbiAge3Byb3ZpZGU6IEFMTE9XX01VTFRJUExFX1BMQVRGT1JNUywgdXNlVmFsdWU6IHRydWV9LFxuICB7cHJvdmlkZTogUExBVEZPUk1fSUQsIHVzZVZhbHVlOiBQTEFURk9STV9TRVJWRVJfSUR9LFxuICB7cHJvdmlkZTogUExBVEZPUk1fSU5JVElBTElaRVIsIHVzZUZhY3Rvcnk6IGluaXREb21pbm9BZGFwdGVyLCBtdWx0aTogdHJ1ZX0sXG4gIHtcbiAgICBwcm92aWRlOiBQbGF0Zm9ybUxvY2F0aW9uLFxuICAgIHVzZUNsYXNzOiBTZXJ2ZXJQbGF0Zm9ybUxvY2F0aW9uLFxuICAgIGRlcHM6IFtET0NVTUVOVCwgW09wdGlvbmFsLCBJTklUSUFMX0NPTkZJR11dLFxuICB9LFxuICB7cHJvdmlkZTogUGxhdGZvcm1TdGF0ZSwgZGVwczogW0RPQ1VNRU5UXX0sXG5dO1xuXG5mdW5jdGlvbiBpbml0RG9taW5vQWRhcHRlcigpIHtcbiAgcmV0dXJuICgpID0+IHtcbiAgICBEb21pbm9BZGFwdGVyLm1ha2VDdXJyZW50KCk7XG4gIH07XG59XG5cbmV4cG9ydCBjb25zdCBTRVJWRVJfUkVOREVSX1BST1ZJREVSUzogUHJvdmlkZXJbXSA9IFtcbiAge3Byb3ZpZGU6IEVWRU5UX01BTkFHRVJfUExVR0lOUywgbXVsdGk6IHRydWUsIHVzZUNsYXNzOiBTZXJ2ZXJFdmVudE1hbmFnZXJQbHVnaW59LFxuXTtcblxuZXhwb3J0IGNvbnN0IFBMQVRGT1JNX1NFUlZFUl9QUk9WSURFUlM6IFByb3ZpZGVyW10gPSBbXG4gIFRSQU5TRkVSX1NUQVRFX1NFUklBTElaQVRJT05fUFJPVklERVJTLFxuICBTRVJWRVJfUkVOREVSX1BST1ZJREVSUyxcbiAgU0VSVkVSX0hUVFBfUFJPVklERVJTLFxuICB7cHJvdmlkZTogVGVzdGFiaWxpdHksIHVzZVZhbHVlOiBudWxsfSwgLy8gS2VlcCBmb3IgYmFja3dhcmRzLWNvbXBhdGliaWxpdHkuXG4gIHtwcm92aWRlOiBURVNUQUJJTElUWSwgdXNlVmFsdWU6IG51bGx9LFxuICB7cHJvdmlkZTogVmlld3BvcnRTY3JvbGxlciwgdXNlQ2xhc3M6IE51bGxWaWV3cG9ydFNjcm9sbGVyfSxcbl07XG5cbi8qKlxuICogVGhlIG5nIG1vZHVsZSBmb3IgdGhlIHNlcnZlci5cbiAqXG4gKiBAcHVibGljQXBpXG4gKi9cbkBOZ01vZHVsZSh7XG4gIGV4cG9ydHM6IFtCcm93c2VyTW9kdWxlXSxcbiAgaW1wb3J0czogW0h0dHBDbGllbnRNb2R1bGUsIE5vb3BBbmltYXRpb25zTW9kdWxlXSxcbiAgcHJvdmlkZXJzOiBQTEFURk9STV9TRVJWRVJfUFJPVklERVJTLFxufSlcbmV4cG9ydCBjbGFzcyBTZXJ2ZXJNb2R1bGUge31cblxuZnVuY3Rpb24gX2RvY3VtZW50KGluamVjdG9yOiBJbmplY3Rvcikge1xuICBjb25zdCBjb25maWc6IFBsYXRmb3JtQ29uZmlnIHwgbnVsbCA9IGluamVjdG9yLmdldChJTklUSUFMX0NPTkZJRywgbnVsbCk7XG4gIGxldCBkb2N1bWVudDogRG9jdW1lbnQ7XG4gIGlmIChjb25maWcgJiYgY29uZmlnLmRvY3VtZW50KSB7XG4gICAgZG9jdW1lbnQgPVxuICAgICAgdHlwZW9mIGNvbmZpZy5kb2N1bWVudCA9PT0gJ3N0cmluZydcbiAgICAgICAgPyBwYXJzZURvY3VtZW50KGNvbmZpZy5kb2N1bWVudCwgY29uZmlnLnVybClcbiAgICAgICAgOiBjb25maWcuZG9jdW1lbnQ7XG4gIH0gZWxzZSB7XG4gICAgZG9jdW1lbnQgPSBnZXRET00oKS5jcmVhdGVIdG1sRG9jdW1lbnQoKTtcbiAgfVxuICAvLyBUZWxsIGl2eSBhYm91dCB0aGUgZ2xvYmFsIGRvY3VtZW50XG4gIMm1c2V0RG9jdW1lbnQoZG9jdW1lbnQpO1xuICByZXR1cm4gZG9jdW1lbnQ7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIHNlcnZlci1zaWRlIGluc3RhbmNlIG9mIGFuIEFuZ3VsYXIgcGxhdGZvcm0uXG4gKlxuICogVGhpcyBwbGF0Zm9ybSBzaG91bGQgYmUgdXNlZCB3aGVuIHBlcmZvcm1pbmcgc2VydmVyLXNpZGUgcmVuZGVyaW5nIG9mIGFuIEFuZ3VsYXIgYXBwbGljYXRpb24uXG4gKiBTdGFuZGFsb25lIGFwcGxpY2F0aW9ucyBjYW4gYmUgYm9vdHN0cmFwcGVkIG9uIHRoZSBzZXJ2ZXIgdXNpbmcgdGhlIGBib290c3RyYXBBcHBsaWNhdGlvbmBcbiAqIGZ1bmN0aW9uIGZyb20gYEBhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXJgLiBXaGVuIHVzaW5nIGBib290c3RyYXBBcHBsaWNhdGlvbmAsIHRoZSBgcGxhdGZvcm1TZXJ2ZXJgXG4gKiBzaG91bGQgYmUgY3JlYXRlZCBmaXJzdCBhbmQgcGFzc2VkIHRvIHRoZSBib290c3RyYXAgZnVuY3Rpb24gdXNpbmcgdGhlIGBCb290c3RyYXBDb250ZXh0YC5cbiAqXG4gKiBAcHVibGljQXBpXG4gKi9cbmV4cG9ydCBjb25zdCBwbGF0Zm9ybVNlcnZlcjogKGV4dHJhUHJvdmlkZXJzPzogU3RhdGljUHJvdmlkZXJbXSB8IHVuZGVmaW5lZCkgPT4gUGxhdGZvcm1SZWYgPVxuICBjcmVhdGVQbGF0Zm9ybUZhY3RvcnkocGxhdGZvcm1Db3JlLCAnc2VydmVyJywgSU5URVJOQUxfU0VSVkVSX1BMQVRGT1JNX1BST1ZJREVSUyk7XG4iXX0=
@@ -21,10 +21,10 @@ export class ServerEventManagerPlugin extends EventManagerPlugin {
21
21
  addEventListener(element, eventName, handler) {
22
22
  return getDOM().onAndCancel(element, eventName, handler);
23
23
  }
24
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ServerEventManagerPlugin, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable }); }
25
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ServerEventManagerPlugin }); }
24
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ServerEventManagerPlugin, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable }); }
25
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ServerEventManagerPlugin }); }
26
26
  }
27
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ServerEventManagerPlugin, decorators: [{
27
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ServerEventManagerPlugin, decorators: [{
28
28
  type: Injectable
29
29
  }], ctorParameters: () => [{ type: undefined, decorators: [{
30
30
  type: Inject,
@@ -6,8 +6,8 @@
6
6
  * found in the LICENSE file at https://angular.dev/license
7
7
  */
8
8
  import { APP_ID, ApplicationRef, CSP_NONCE, InjectionToken, Renderer2, ɵannotateForHydration as annotateForHydration, ɵIS_HYDRATION_DOM_REUSE_ENABLED as IS_HYDRATION_DOM_REUSE_ENABLED, ɵSSR_CONTENT_INTEGRITY_MARKER as SSR_CONTENT_INTEGRITY_MARKER, ɵwhenStable as whenStable, } from '@angular/core';
9
- import { PlatformState } from './platform_state';
10
9
  import { platformServer } from './server';
10
+ import { PlatformState } from './platform_state';
11
11
  import { BEFORE_APP_SERIALIZED, INITIAL_CONFIG } from './tokens';
12
12
  import { createScript } from './transfer_state';
13
13
  import { runAndMeasurePerf } from './profiler';
@@ -203,14 +203,24 @@ export async function renderModule(moduleType, options) {
203
203
  }
204
204
  /**
205
205
  * Bootstraps an instance of an Angular application and renders it to a string.
206
-
207
- * ```typescript
208
- * const bootstrap = () => bootstrapApplication(RootComponent, appConfig);
209
- * const output: string = await renderApplication(bootstrap);
206
+ *
207
+ * @usageNotes
208
+ *
209
+ * ```ts
210
+ * import { BootstrapContext, bootstrapApplication } from '@angular/platform-browser';
211
+ * import { renderApplication } from '@angular/platform-server';
212
+ * import { ApplicationConfig } from '@angular/core';
213
+ * import { AppComponent } from './app.component';
214
+ *
215
+ * const appConfig: ApplicationConfig = { providers: [...] };
216
+ * const bootstrap = (context: BootstrapContext) =>
217
+ * bootstrapApplication(AppComponent, config, context);
218
+ * const output = await renderApplication(bootstrap);
210
219
  * ```
211
220
  *
212
221
  * @param bootstrap A method that when invoked returns a promise that returns an `ApplicationRef`
213
- * instance once resolved.
222
+ * instance once resolved. The method is invoked with an `Injector` instance that
223
+ * provides access to the platform-level dependency injection context.
214
224
  * @param options Additional configuration for the render operation:
215
225
  * - `document` - the document of the page to render, either as an HTML string or
216
226
  * as a reference to the `document` instance.
@@ -225,7 +235,7 @@ export async function renderApplication(bootstrap, options) {
225
235
  return runAndMeasurePerf('renderApplication', async () => {
226
236
  const platformRef = createServerPlatform(options);
227
237
  try {
228
- const applicationRef = await bootstrap();
238
+ const applicationRef = await bootstrap({ platformRef });
229
239
  return await _render(platformRef, applicationRef);
230
240
  }
231
241
  finally {
@@ -233,4 +243,4 @@ export async function renderApplication(bootstrap, options) {
233
243
  }
234
244
  });
235
245
  }
236
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wbGF0Zm9ybS1zZXJ2ZXIvc3JjL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sRUFDTCxNQUFNLEVBQ04sY0FBYyxFQUNkLFNBQVMsRUFDVCxjQUFjLEVBR2QsU0FBUyxFQUdULHFCQUFxQixJQUFJLG9CQUFvQixFQUM3QywrQkFBK0IsSUFBSSw4QkFBOEIsRUFDakUsNkJBQTZCLElBQUksNEJBQTRCLEVBQzdELFdBQVcsSUFBSSxVQUFVLEdBQzFCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUMvQyxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBQ3hDLE9BQU8sRUFBQyxxQkFBcUIsRUFBRSxjQUFjLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFDL0QsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQzlDLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLFlBQVksQ0FBQztBQUU3Qzs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsNEJBQTRCLENBQUM7QUFRckU7OztHQUdHO0FBQ0gsU0FBUyxvQkFBb0IsQ0FBQyxPQUF3QjtJQUNwRCxNQUFNLGNBQWMsR0FBRyxPQUFPLENBQUMsaUJBQWlCLElBQUksRUFBRSxDQUFDO0lBQ3ZELE9BQU8sY0FBYyxDQUFDO1FBQ3BCLEVBQUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsRUFBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUUsT0FBTyxDQUFDLEdBQUcsRUFBQyxFQUFDO1FBQ25GLGNBQWM7S0FDZixDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsU0FBUyx1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RyxNQUFNLFNBQVMsRUFBRSxDQUFDO1lBQ3pDLE9BQU8sTUFBTSxPQUFPLENBQUMsV0FBVyxFQUFFLGNBQWMsQ0FBQyxDQUFDO1FBQ3BELENBQUM7Z0JBQVMsQ0FBQztZQUNULE1BQU0sb0JBQW9CLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDMUMsQ0FBQztJQUNILENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmRldi9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtcbiAgQVBQX0lELFxuICBBcHBsaWNhdGlvblJlZixcbiAgQ1NQX05PTkNFLFxuICBJbmplY3Rpb25Ub2tlbixcbiAgUGxhdGZvcm1SZWYsXG4gIFByb3ZpZGVyLFxuICBSZW5kZXJlcjIsXG4gIFN0YXRpY1Byb3ZpZGVyLFxuICBUeXBlLFxuICDJtWFubm90YXRlRm9ySHlkcmF0aW9uIGFzIGFubm90YXRlRm9ySHlkcmF0aW9uLFxuICDJtUlTX0hZRFJBVElPTl9ET01fUkVVU0VfRU5BQkxFRCBhcyBJU19IWURSQVRJT05fRE9NX1JFVVNFX0VOQUJMRUQsXG4gIMm1U1NSX0NPTlRFTlRfSU5URUdSSVRZX01BUktFUiBhcyBTU1JfQ09OVEVOVF9JTlRFR1JJVFlfTUFSS0VSLFxuICDJtXdoZW5TdGFibGUgYXMgd2hlblN0YWJsZSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7UGxhdGZvcm1TdGF0ZX0gZnJvbSAnLi9wbGF0Zm9ybV9zdGF0ZSc7XG5pbXBvcnQge3BsYXRmb3JtU2VydmVyfSBmcm9tICcuL3NlcnZlcic7XG5pbXBvcnQge0JFRk9SRV9BUFBfU0VSSUFMSVpFRCwgSU5JVElBTF9DT05GSUd9IGZyb20gJy4vdG9rZW5zJztcbmltcG9ydCB7Y3JlYXRlU2NyaXB0fSBmcm9tICcuL3RyYW5zZmVyX3N0YXRlJztcbmltcG9ydCB7cnVuQW5kTWVhc3VyZVBlcmZ9IGZyb20gJy4vcHJvZmlsZXInO1xuXG4vKipcbiAqIEV2ZW50IGRpc3BhdGNoIChKU0FjdGlvbikgc2NyaXB0IGlzIGlubGluZWQgaW50byB0aGUgSFRNTCBieSB0aGUgYnVpbGRcbiAqIHByb2Nlc3MgdG8gYXZvaWQgZXh0cmEgYmxvY2tpbmcgcmVxdWVzdCBvbiBhIHBhZ2UuIFRoZSBzY3JpcHQgbG9va3MgbGlrZSB0aGlzOlxuICogYGBgXG4gKiA8c2NyaXB0IHR5cGU9XCJ0ZXh0L2phdmFzY3JpcHRcIiBpZD1cIm5nLWV2ZW50LWRpc3BhdGNoLWNvbnRyYWN0XCI+Li4uPC9zY3JpcHQ+XG4gKiBgYGBcbiAqIFRoaXMgY29uc3QgcmVwcmVzZW50cyB0aGUgXCJpZFwiIGF0dHJpYnV0ZSB2YWx1ZS5cbiAqL1xuZXhwb3J0IGNvbnN0IEVWRU5UX0RJU1BBVENIX1NDUklQVF9JRCA9ICduZy1ldmVudC1kaXNwYXRjaC1jb250cmFjdCc7XG5cbmludGVyZmFjZSBQbGF0Zm9ybU9wdGlvbnMge1xuICBkb2N1bWVudD86IHN0cmluZyB8IERvY3VtZW50O1xuICB1cmw/OiBzdHJpbmc7XG4gIHBsYXRmb3JtUHJvdmlkZXJzPzogUHJvdmlkZXJbXTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIGEgc2VydmVyIHBsYXRmb3JtICh3aXRoIG9yIHdpdGhvdXQgSklUIGNvbXBpbGVyIHN1cHBvcnRcbiAqIGRlcGVuZGluZyBvbiB0aGUgYG5nSml0TW9kZWAgZ2xvYmFsIGNvbnN0IHZhbHVlKSwgdXNpbmcgcHJvdmlkZWQgb3B0aW9ucy5cbiAqL1xuZnVuY3Rpb24gY3JlYXRlU2VydmVyUGxhdGZvcm0ob3B0aW9uczogUGxhdGZvcm1PcHRpb25zKTogUGxhdGZvcm1SZWYge1xuICBjb25zdCBleHRyYVByb3ZpZGVycyA9IG9wdGlvbnMucGxhdGZvcm1Qcm92aWRlcnMgPz8gW107XG4gIHJldHVybiBwbGF0Zm9ybVNlcnZlcihbXG4gICAge3Byb3ZpZGU6IElOSVRJQUxfQ09ORklHLCB1c2VWYWx1ZToge2RvY3VtZW50OiBvcHRpb25zLmRvY3VtZW50LCB1cmw6IG9wdGlvbnMudXJsfX0sXG4gICAgZXh0cmFQcm92aWRlcnMsXG4gIF0pO1xufVxuXG4vKipcbiAqIEZpbmRzIGFuZCByZXR1cm5zIGlubGluZWQgZXZlbnQgZGlzcGF0Y2ggc2NyaXB0IGlmIGl0IGV4aXN0cy5cbiAqIFNlZSB0aGUgYEVWRU5UX0RJU1BBVENIX1NDUklQVF9JRGAgY29uc3QgZG9jcyBmb3IgYWRkaXRpb25hbCBpbmZvLlxuICovXG5mdW5jdGlvbiBmaW5kRXZlbnREaXNwYXRjaFNjcmlwdChkb2M6IERvY3VtZW50KSB7XG4gIHJldHVybiBkb2MuZ2V0RWxlbWVudEJ5SWQoRVZFTlRfRElTUEFUQ0hfU0NSSVBUX0lEKTtcbn1cblxuLyoqXG4gKiBSZW1vdmVzIGlubGluZWQgZXZlbnQgZGlzcGF0Y2ggc2NyaXB0IGlmIGl0IGV4aXN0cy5cbiAqIFNlZSB0aGUgYEVWRU5UX0RJU1BBVENIX1NDUklQVF9JRGAgY29uc3QgZG9jcyBmb3IgYWRkaXRpb25hbCBpbmZvLlxuICovXG5mdW5jdGlvbiByZW1vdmVFdmVudERpc3BhdGNoU2NyaXB0KGRvYzogRG9jdW1lbnQpIHtcbiAgZmluZEV2ZW50RGlzcGF0Y2hTY3JpcHQoZG9jKT8ucmVtb3ZlKCk7XG59XG5cbi8qKlxuICogQW5ub3RhdGUgbm9kZXMgZm9yIGh5ZHJhdGlvbiBhbmQgcmVtb3ZlIGV2ZW50IGRpc3BhdGNoIHNjcmlwdCB3aGVuIG5vdCBuZWVkZWQuXG4gKi9cbmZ1bmN0aW9uIHByZXBhcmVGb3JIeWRyYXRpb24ocGxhdGZvcm1TdGF0ZTogUGxhdGZvcm1TdGF0ZSwgYXBwbGljYXRpb25SZWY6IEFwcGxpY2F0aW9uUmVmKTogdm9pZCB7XG4gIGNvbnN0IGVudmlyb25tZW50SW5qZWN0b3IgPSBhcHBsaWNhdGlvblJlZi5pbmplY3RvcjtcbiAgY29uc3QgZG9jID0gcGxhdGZvcm1TdGF0ZS5nZXREb2N1bWVudCgpO1xuXG4gIGlmICghZW52aXJvbm1lbnRJbmplY3Rvci5nZXQoSVNfSFlEUkFUSU9OX0RPTV9SRVVTRV9FTkFCTEVELCBmYWxzZSkpIHtcbiAgICAvLyBIeWRyYXRpb24gaXMgZGlhYmxlZCwgcmVtb3ZlIGlubGluZWQgZXZlbnQgZGlzcGF0Y2ggc2NyaXB0LlxuICAgIC8vICh3aGljaCB3YXMgaW5qZWN0ZWQgYnkgdGhlIGJ1aWxkIHByb2Nlc3MpIGZyb20gdGhlIEhUTUwuXG4gICAgcmVtb3ZlRXZlbnREaXNwYXRjaFNjcmlwdChkb2MpO1xuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgYXBwZW5kU3NyQ29udGVudEludGVncml0eU1hcmtlcihkb2MpO1xuXG4gIGNvbnN0IGV2ZW50VHlwZXNUb1JlcGxheSA9IGFubm90YXRlRm9ySHlkcmF0aW9uKGFwcGxpY2F0aW9uUmVmLCBkb2MpO1xuICBpZiAoZXZlbnRUeXBlc1RvUmVwbGF5LnJlZ3VsYXIuc2l6ZSB8fCBldmVudFR5cGVzVG9SZXBsYXkuY2FwdHVyZS5zaXplKSB7XG4gICAgaW5zZXJ0RXZlbnRSZWNvcmRTY3JpcHQoXG4gICAgICBlbnZpcm9ubWVudEluamVjdG9yLmdldChBUFBfSUQpLFxuICAgICAgZG9jLFxuICAgICAgZXZlbnRUeXBlc1RvUmVwbGF5LFxuICAgICAgZW52aXJvbm1lbnRJbmplY3Rvci5nZXQoQ1NQX05PTkNFLCBudWxsKSxcbiAgICApO1xuICB9IGVsc2Uge1xuICAgIC8vIE5vIGV2ZW50cyB0byByZXBsYXksIHdlIHNob3VsZCByZW1vdmUgaW5saW5lZCBldmVudCBkaXNwYXRjaCBzY3JpcHRcbiAgICAvLyAod2hpY2ggd2FzIGluamVjdGVkIGJ5IHRoZSBidWlsZCBwcm9jZXNzKSBmcm9tIHRoZSBIVE1MLlxuICAgIHJlbW92ZUV2ZW50RGlzcGF0Y2hTY3JpcHQoZG9jKTtcbiAgfVxufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBtYXJrZXIgY29tbWVudCBub2RlIGFuZCBhcHBlbmQgaXQgaW50byB0aGUgYDxib2R5PmAuXG4gKiBTb21lIENETnMgaGF2ZSBtZWNoYW5pc21zIHRvIHJlbW92ZSBhbGwgY29tbWVudCBub2RlIGZyb20gSFRNTC5cbiAqIFRoaXMgYmVoYXZpb3VyIGJyZWFrcyBoeWRyYXRpb24sIHNvIHdlJ2xsIGRldGVjdCBvbiB0aGUgY2xpZW50IHNpZGUgaWYgdGhpc1xuICogbWFya2VyIGNvbW1lbnQgaXMgc3RpbGwgYXZhaWxhYmxlIG9yIGVsc2UgdGhyb3cgYW4gZXJyb3JcbiAqL1xuZnVuY3Rpb24gYXBwZW5kU3NyQ29udGVudEludGVncml0eU1hcmtlcihkb2M6IERvY3VtZW50KSB7XG4gIC8vIEFkZGluZyBhIG5nIGh5ZHJhdGlvbiBtYXJrZXIgY29tbWVudFxuICBjb25zdCBjb21tZW50ID0gZG9jLmNyZWF0ZUNvbW1lbnQoU1NSX0NPTlRFTlRfSU5URUdSSVRZX01BUktFUik7XG4gIGRvYy5ib2R5LmZpcnN0Q2hpbGRcbiAgICA/IGRvYy5ib2R5Lmluc2VydEJlZm9yZShjb21tZW50LCBkb2MuYm9keS5maXJzdENoaWxkKVxuICAgIDogZG9jLmJvZHkuYXBwZW5kKGNvbW1lbnQpO1xufVxuXG4vKipcbiAqIEFkZHMgdGhlIGBuZy1zZXJ2ZXItY29udGV4dGAgYXR0cmlidXRlIHRvIGhvc3QgZWxlbWVudHMgb2YgYWxsIGJvb3RzdHJhcHBlZCBjb21wb25lbnRzXG4gKiB3aXRoaW4gYSBnaXZlbiBhcHBsaWNhdGlvbi5cbiAqL1xuZnVuY3Rpb24gYXBwZW5kU2VydmVyQ29udGV4dEluZm8oYXBwbGljYXRpb25SZWY6IEFwcGxpY2F0aW9uUmVmKSB7XG4gIGNvbnN0IGluamVjdG9yID0gYXBwbGljYXRpb25SZWYuaW5qZWN0b3I7XG4gIGxldCBzZXJ2ZXJDb250ZXh0ID0gc2FuaXRpemVTZXJ2ZXJDb250ZXh0KGluamVjdG9yLmdldChTRVJWRVJfQ09OVEVYVCwgREVGQVVMVF9TRVJWRVJfQ09OVEVYVCkpO1xuICBhcHBsaWNhdGlvblJlZi5jb21wb25lbnRzLmZvckVhY2goKGNvbXBvbmVudFJlZikgPT4ge1xuICAgIGNvbnN0IHJlbmRlcmVyID0gY29tcG9uZW50UmVmLmluamVjdG9yLmdldChSZW5kZXJlcjIpO1xuICAgIGNvbnN0IGVsZW1lbnQgPSBjb21wb25lbnRSZWYubG9jYXRpb24ubmF0aXZlRWxlbWVudDtcbiAgICBpZiAoZWxlbWVudCkge1xuICAgICAgcmVuZGVyZXIuc2V0QXR0cmlidXRlKGVsZW1lbnQsICduZy1zZXJ2ZXItY29udGV4dCcsIHNlcnZlckNvbnRleHQpO1xuICAgIH1cbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGluc2VydEV2ZW50UmVjb3JkU2NyaXB0KFxuICBhcHBJZDogc3RyaW5nLFxuICBkb2M6IERvY3VtZW50LFxuICBldmVudFR5cGVzVG9SZXBsYXk6IHtyZWd1bGFyOiBTZXQ8c3RyaW5nPjsgY2FwdHVyZTogU2V0PHN0cmluZz59LFxuICBub25jZTogc3RyaW5nIHwgbnVsbCxcbik6IHZvaWQge1xuICBjb25zdCB7cmVndWxhciwgY2FwdHVyZX0gPSBldmVudFR5cGVzVG9SZXBsYXk7XG4gIGNvbnN0IGV2ZW50RGlzcGF0Y2hTY3JpcHQgPSBmaW5kRXZlbnREaXNwYXRjaFNjcmlwdChkb2MpO1xuICBpZiAoZXZlbnREaXNwYXRjaFNjcmlwdCkge1xuICAgIC8vIFRoaXMgaXMgZGVmaW5lZCBpbiBwYWNrYWdlcy9jb3JlL3ByaW1pdGl2ZXMvZXZlbnQtZGlzcGF0Y2gvY29udHJhY3RfYmluYXJ5LnRzXG4gICAgY29uc3QgcmVwbGF5U2NyaXB0Q29udGVudHMgPVxuICAgICAgYHdpbmRvdy5fX2pzYWN0aW9uX2Jvb3RzdHJhcChgICtcbiAgICAgIGBkb2N1bWVudC5ib2R5LGAgK1xuICAgICAgYFwiJHthcHBJZH1cIixgICtcbiAgICAgIGAke0pTT04uc3RyaW5naWZ5KEFycmF5LmZyb20ocmVndWxhcikpfSxgICtcbiAgICAgIGAke0pTT04uc3RyaW5naWZ5KEFycmF5LmZyb20oY2FwdHVyZSkpfWAgK1xuICAgICAgYCk7YDtcblxuICAgIGNvbnN0IHJlcGxheVNjcmlwdCA9IGNyZWF0ZVNjcmlwdChkb2MsIHJlcGxheVNjcmlwdENvbnRlbnRzLCBub25jZSk7XG5cbiAgICAvLyBJbnNlcnQgcmVwbGF5IHNjcmlwdCByaWdodCBhZnRlciBpbmxpbmVkIGV2ZW50IGRpc3BhdGNoIHNjcmlwdCwgc2luY2UgaXRcbiAgICAvLyByZWxpZXMgb24gYF9fanNhY3Rpb25fYm9vdHN0cmFwYCB0byBiZSBkZWZpbmVkIGluIHRoZSBnbG9iYWwgc2NvcGUuXG4gICAgZXZlbnREaXNwYXRjaFNjcmlwdC5hZnRlcihyZXBsYXlTY3JpcHQpO1xuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIF9yZW5kZXIocGxhdGZvcm1SZWY6IFBsYXRmb3JtUmVmLCBhcHBsaWNhdGlvblJlZjogQXBwbGljYXRpb25SZWYpOiBQcm9taXNlPHN0cmluZz4ge1xuICAvLyBCbG9jayB1bnRpbCBhcHBsaWNhdGlvbiBpcyBzdGFibGUuXG4gIGF3YWl0IHdoZW5TdGFibGUoYXBwbGljYXRpb25SZWYpO1xuXG4gIGNvbnN0IHBsYXRmb3JtU3RhdGUgPSBwbGF0Zm9ybVJlZi5pbmplY3Rvci5nZXQoUGxhdGZvcm1TdGF0ZSk7XG4gIHByZXBhcmVGb3JIeWRyYXRpb24ocGxhdGZvcm1TdGF0ZSwgYXBwbGljYXRpb25SZWYpO1xuXG4gIC8vIFJ1biBhbnkgQkVGT1JFX0FQUF9TRVJJQUxJWkVEIGNhbGxiYWNrcyBqdXN0IGJlZm9yZSByZW5kZXJpbmcgdG8gc3RyaW5nLlxuICBjb25zdCBlbnZpcm9ubWVudEluamVjdG9yID0gYXBwbGljYXRpb25SZWYuaW5qZWN0b3I7XG4gIGNvbnN0IGNhbGxiYWNrcyA9IGVudmlyb25tZW50SW5qZWN0b3IuZ2V0KEJFRk9SRV9BUFBfU0VSSUFMSVpFRCwgbnVsbCk7XG4gIGlmIChjYWxsYmFja3MpIHtcbiAgICBjb25zdCBhc3luY0NhbGxiYWNrczogUHJvbWlzZTx2b2lkPltdID0gW107XG4gICAgZm9yIChjb25zdCBjYWxsYmFjayBvZiBjYWxsYmFja3MpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGNhbGxiYWNrUmVzdWx0ID0gY2FsbGJhY2soKTtcbiAgICAgICAgaWYgKGNhbGxiYWNrUmVzdWx0KSB7XG4gICAgICAgICAgYXN5bmNDYWxsYmFja3MucHVzaChjYWxsYmFja1Jlc3VsdCk7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgLy8gSWdub3JlIGV4Y2VwdGlvbnMuXG4gICAgICAgIGNvbnNvbGUud2FybignSWdub3JpbmcgQkVGT1JFX0FQUF9TRVJJQUxJWkVEIEV4Y2VwdGlvbjogJywgZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGFzeW5jQ2FsbGJhY2tzLmxlbmd0aCkge1xuICAgICAgZm9yIChjb25zdCByZXN1bHQgb2YgYXdhaXQgUHJvbWlzZS5hbGxTZXR0bGVkKGFzeW5jQ2FsbGJhY2tzKSkge1xuICAgICAgICBpZiAocmVzdWx0LnN0YXR1cyA9PT0gJ3JlamVjdGVkJykge1xuICAgICAgICAgIGNvbnNvbGUud2FybignSWdub3JpbmcgQkVGT1JFX0FQUF9TRVJJQUxJWkVEIEV4Y2VwdGlvbjogJywgcmVzdWx0LnJlYXNvbik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBhcHBlbmRTZXJ2ZXJDb250ZXh0SW5mbyhhcHBsaWNhdGlvblJlZik7XG5cbiAgcmV0dXJuIHBsYXRmb3JtU3RhdGUucmVuZGVyVG9TdHJpbmcoKTtcbn1cblxuLyoqXG4gKiBEZXN0cm95IHRoZSBhcHBsaWNhdGlvbiBpbiBhIG1hY3JvdGFzaywgdGhpcyBhbGxvd3MgcGVuZGluZyBwcm9taXNlcyB0byBiZSBzZXR0bGVkIGFuZCBlcnJvcnNcbiAqIHRvIGJlIHN1cmZhY2VkIHRvIHRoZSB1c2Vycy5cbiAqL1xuZnVuY3Rpb24gYXN5bmNEZXN0cm95UGxhdGZvcm0ocGxhdGZvcm1SZWY6IFBsYXRmb3JtUmVmKTogUHJvbWlzZTx2b2lkPiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSkgPT4ge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgcGxhdGZvcm1SZWYuZGVzdHJveSgpO1xuICAgICAgcmVzb2x2ZSgpO1xuICAgIH0sIDApO1xuICB9KTtcbn1cblxuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIHZhbHVlIHRoYXQgc2hvdWxkIGJlIHVzZWQgaWYgbm8gc2VydmVyIGNvbnRleHQgdmFsdWUgaGFzIGJlZW4gcHJvdmlkZWQuXG4gKi9cbmNvbnN0IERFRkFVTFRfU0VSVkVSX0NPTlRFWFQgPSAnb3RoZXInO1xuXG4vKipcbiAqIEFuIGludGVybmFsIHRva2VuIHRoYXQgYWxsb3dzIHByb3ZpZGluZyBleHRyYSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgc2VydmVyIGNvbnRleHRcbiAqIChlLmcuIHdoZXRoZXIgU1NSIG9yIFNTRyB3YXMgdXNlZCkuIFRoZSB2YWx1ZSBpcyBhIHN0cmluZyBhbmQgY2hhcmFjdGVycyBvdGhlclxuICogdGhhbiBbYS16QS1aMC05XFwtXSBhcmUgcmVtb3ZlZC4gU2VlIHRoZSBkZWZhdWx0IHZhbHVlIGluIGBERUZBVUxUX1NFUlZFUl9DT05URVhUYCBjb25zdC5cbiAqL1xuZXhwb3J0IGNvbnN0IFNFUlZFUl9DT05URVhUID0gbmV3IEluamVjdGlvblRva2VuPHN0cmluZz4oJ1NFUlZFUl9DT05URVhUJyk7XG5cbi8qKlxuICogU2FuaXRpemVzIHByb3ZpZGVkIHNlcnZlciBjb250ZXh0OlxuICogLSByZW1vdmVzIGFsbCBjaGFyYWN0ZXJzIG90aGVyIHRoYW4gYS16LCBBLVosIDAtOSBhbmQgYC1gXG4gKiAtIHJldHVybnMgYG90aGVyYCBpZiBub3RoaW5nIGlzIHByb3ZpZGVkIG9yIHRoZSBzdHJpbmcgaXMgZW1wdHkgYWZ0ZXIgc2FuaXRpemF0aW9uXG4gKi9cbmZ1bmN0aW9uIHNhbml0aXplU2VydmVyQ29udGV4dChzZXJ2ZXJDb250ZXh0OiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBjb250ZXh0ID0gc2VydmVyQ29udGV4dC5yZXBsYWNlKC9bXmEtekEtWjAtOVxcLV0vZywgJycpO1xuICByZXR1cm4gY29udGV4dC5sZW5ndGggPiAwID8gY29udGV4dCA6IERFRkFVTFRfU0VSVkVSX0NPTlRFWFQ7XG59XG5cbi8qKlxuICogQm9vdHN0cmFwcyBhbiBhcHBsaWNhdGlvbiB1c2luZyBwcm92aWRlZCBOZ01vZHVsZSBhbmQgc2VyaWFsaXplcyB0aGUgcGFnZSBjb250ZW50IHRvIHN0cmluZy5cbiAqXG4gKiBAcGFyYW0gbW9kdWxlVHlwZSBBIHJlZmVyZW5jZSB0byBhbiBOZ01vZHVsZSB0aGF0IHNob3VsZCBiZSB1c2VkIGZvciBib290c3RyYXAuXG4gKiBAcGFyYW0gb3B0aW9ucyBBZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSByZW5kZXIgb3BlcmF0aW9uOlxuICogIC0gYGRvY3VtZW50YCAtIHRoZSBkb2N1bWVudCBvZiB0aGUgcGFnZSB0byByZW5kZXIsIGVpdGhlciBhcyBhbiBIVE1MIHN0cmluZyBvclxuICogICAgICAgICAgICAgICAgIGFzIGEgcmVmZXJlbmNlIHRvIHRoZSBgZG9jdW1lbnRgIGluc3RhbmNlLlxuICogIC0gYHVybGAgLSB0aGUgVVJMIGZvciB0aGUgY3VycmVudCByZW5kZXIgcmVxdWVzdC5cbiAqICAtIGBleHRyYVByb3ZpZGVyc2AgLSBzZXQgb2YgcGxhdGZvcm0gbGV2ZWwgcHJvdmlkZXJzIGZvciB0aGUgY3VycmVudCByZW5kZXIgcmVxdWVzdC5cbiAqXG4gKiBAcHVibGljQXBpXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZW5kZXJNb2R1bGU8VD4oXG4gIG1vZHVsZVR5cGU6IFR5cGU8VD4sXG4gIG9wdGlvbnM6IHtkb2N1bWVudD86IHN0cmluZyB8IERvY3VtZW50OyB1cmw/OiBzdHJpbmc7IGV4dHJhUHJvdmlkZXJzPzogU3RhdGljUHJvdmlkZXJbXX0sXG4pOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCB7ZG9jdW1lbnQsIHVybCwgZXh0cmFQcm92aWRlcnM6IHBsYXRmb3JtUHJvdmlkZXJzfSA9IG9wdGlvbnM7XG4gIGNvbnN0IHBsYXRmb3JtUmVmID0gY3JlYXRlU2VydmVyUGxhdGZvcm0oe2RvY3VtZW50LCB1cmwsIHBsYXRmb3JtUHJvdmlkZXJzfSk7XG4gIHRyeSB7XG4gICAgY29uc3QgbW9kdWxlUmVmID0gYXdhaXQgcGxhdGZvcm1SZWYuYm9vdHN0cmFwTW9kdWxlKG1vZHVsZVR5cGUpO1xuICAgIGNvbnN0IGFwcGxpY2F0aW9uUmVmID0gbW9kdWxlUmVmLmluamVjdG9yLmdldChBcHBsaWNhdGlvblJlZik7XG4gICAgcmV0dXJuIGF3YWl0IF9yZW5kZXIocGxhdGZvcm1SZWYsIGFwcGxpY2F0aW9uUmVmKTtcbiAgfSBmaW5hbGx5IHtcbiAgICBhd2FpdCBhc3luY0Rlc3Ryb3lQbGF0Zm9ybShwbGF0Zm9ybVJlZik7XG4gIH1cbn1cblxuLyoqXG4gKiBCb290c3RyYXBzIGFuIGluc3RhbmNlIG9mIGFuIEFuZ3VsYXIgYXBwbGljYXRpb24gYW5kIHJlbmRlcnMgaXQgdG8gYSBzdHJpbmcuXG5cbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGJvb3RzdHJhcCA9ICgpID0+IGJvb3RzdHJhcEFwcGxpY2F0aW9uKFJvb3RDb21wb25lbnQsIGFwcENvbmZpZyk7XG4gKiBjb25zdCBvdXRwdXQ6IHN0cmluZyA9IGF3YWl0IHJlbmRlckFwcGxpY2F0aW9uKGJvb3RzdHJhcCk7XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gYm9vdHN0cmFwIEEgbWV0aG9kIHRoYXQgd2hlbiBpbnZva2VkIHJldHVybnMgYSBwcm9taXNlIHRoYXQgcmV0dXJucyBhbiBgQXBwbGljYXRpb25SZWZgXG4gKiAgICAgaW5zdGFuY2Ugb25jZSByZXNvbHZlZC5cbiAqIEBwYXJhbSBvcHRpb25zIEFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBmb3IgdGhlIHJlbmRlciBvcGVyYXRpb246XG4gKiAgLSBgZG9jdW1lbnRgIC0gdGhlIGRvY3VtZW50IG9mIHRoZSBwYWdlIHRvIHJlbmRlciwgZWl0aGVyIGFzIGFuIEhUTUwgc3RyaW5nIG9yXG4gKiAgICAgICAgICAgICAgICAgYXMgYSByZWZlcmVuY2UgdG8gdGhlIGBkb2N1bWVudGAgaW5zdGFuY2UuXG4gKiAgLSBgdXJsYCAtIHRoZSBVUkwgZm9yIHRoZSBjdXJyZW50IHJlbmRlciByZXF1ZXN0LlxuICogIC0gYHBsYXRmb3JtUHJvdmlkZXJzYCAtIHRoZSBwbGF0Zm9ybSBsZXZlbCBwcm92aWRlcnMgZm9yIHRoZSBjdXJyZW50IHJlbmRlciByZXF1ZXN0LlxuICpcbiAqIEByZXR1cm5zIEEgUHJvbWlzZSwgdGhhdCByZXR1cm5zIHNlcmlhbGl6ZWQgKHRvIGEgc3RyaW5nKSByZW5kZXJlZCBwYWdlLCBvbmNlIHJlc29sdmVkLlxuICpcbiAqIEBwdWJsaWNBcGlcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlbmRlckFwcGxpY2F0aW9uPFQ+KFxuICBib290c3RyYXA6ICgpID0+IFByb21pc2U8QXBwbGljYXRpb25SZWY+LFxuICBvcHRpb25zOiB7ZG9jdW1lbnQ/OiBzdHJpbmcgfCBEb2N1bWVudDsgdXJsPzogc3RyaW5nOyBwbGF0Zm9ybVByb3ZpZGVycz86IFByb3ZpZGVyW119LFxuKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgcmV0dXJuIHJ1bkFuZE1lYXN1cmVQZXJmKCdyZW5kZXJBcHBsaWNhdGlvbicsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBwbGF0Zm9ybVJlZiA9IGNyZWF0ZVNlcnZlclBsYXRmb3JtKG9wdGlvbnMpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGFwcGxpY2F0aW9uUmVmID0gYXdhaXQgYm9vdHN0cmFwKCk7XG4gICAgICByZXR1cm4gYXdhaXQgX3JlbmRlcihwbGF0Zm9ybVJlZiwgYXBwbGljYXRpb25SZWYpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBhd2FpdCBhc3luY0Rlc3Ryb3lQbGF0Zm9ybShwbGF0Zm9ybVJlZik7XG4gICAgfVxuICB9KTtcbn1cbiJdfQ==
246
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wbGF0Zm9ybS1zZXJ2ZXIvc3JjL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sRUFDTCxNQUFNLEVBQ04sY0FBYyxFQUNkLFNBQVMsRUFDVCxjQUFjLEVBR2QsU0FBUyxFQUdULHFCQUFxQixJQUFJLG9CQUFvQixFQUM3QywrQkFBK0IsSUFBSSw4QkFBOEIsRUFDakUsNkJBQTZCLElBQUksNEJBQTRCLEVBQzdELFdBQVcsSUFBSSxVQUFVLEdBQzFCLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFDeEMsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQy9DLE9BQU8sRUFBQyxxQkFBcUIsRUFBRSxjQUFjLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFDL0QsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQzlDLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLFlBQVksQ0FBQztBQUU3Qzs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsNEJBQTRCLENBQUM7QUFRckU7OztHQUdHO0FBQ0gsU0FBUyxvQkFBb0IsQ0FBQyxPQUF3QjtJQUNwRCxNQUFNLGNBQWMsR0FBRyxPQUFPLENBQUMsaUJBQWlCLElBQUksRUFBRSxDQUFDO0lBQ3ZELE9BQU8sY0FBYyxDQUFDO1FBQ3BCLEVBQUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsRUFBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUUsT0FBTyxDQUFDLEdBQUcsRUFBQyxFQUFDO1FBQ25GLGNBQWM7S0FDZixDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsU0FBUyx1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TSxjQUFjLEdBQUcsTUFBTSxTQUFTLENBQUMsRUFBQyxXQUFXLEVBQUMsQ0FBQyxDQUFDO1lBQ3RELE9BQU8sTUFBTSxPQUFPLENBQUMsV0FBVyxFQUFFLGNBQWMsQ0FBQyxDQUFDO1FBQ3BELENBQUM7Z0JBQVMsQ0FBQztZQUNULE1BQU0sb0JBQW9CLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDMUMsQ0FBQztJQUNILENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmRldi9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtcbiAgQVBQX0lELFxuICBBcHBsaWNhdGlvblJlZixcbiAgQ1NQX05PTkNFLFxuICBJbmplY3Rpb25Ub2tlbixcbiAgUGxhdGZvcm1SZWYsXG4gIFByb3ZpZGVyLFxuICBSZW5kZXJlcjIsXG4gIFN0YXRpY1Byb3ZpZGVyLFxuICBUeXBlLFxuICDJtWFubm90YXRlRm9ySHlkcmF0aW9uIGFzIGFubm90YXRlRm9ySHlkcmF0aW9uLFxuICDJtUlTX0hZRFJBVElPTl9ET01fUkVVU0VfRU5BQkxFRCBhcyBJU19IWURSQVRJT05fRE9NX1JFVVNFX0VOQUJMRUQsXG4gIMm1U1NSX0NPTlRFTlRfSU5URUdSSVRZX01BUktFUiBhcyBTU1JfQ09OVEVOVF9JTlRFR1JJVFlfTUFSS0VSLFxuICDJtXdoZW5TdGFibGUgYXMgd2hlblN0YWJsZSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0Jvb3RzdHJhcENvbnRleHR9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuXG5pbXBvcnQge3BsYXRmb3JtU2VydmVyfSBmcm9tICcuL3NlcnZlcic7XG5pbXBvcnQge1BsYXRmb3JtU3RhdGV9IGZyb20gJy4vcGxhdGZvcm1fc3RhdGUnO1xuaW1wb3J0IHtCRUZPUkVfQVBQX1NFUklBTElaRUQsIElOSVRJQUxfQ09ORklHfSBmcm9tICcuL3Rva2Vucyc7XG5pbXBvcnQge2NyZWF0ZVNjcmlwdH0gZnJvbSAnLi90cmFuc2Zlcl9zdGF0ZSc7XG5pbXBvcnQge3J1bkFuZE1lYXN1cmVQZXJmfSBmcm9tICcuL3Byb2ZpbGVyJztcblxuLyoqXG4gKiBFdmVudCBkaXNwYXRjaCAoSlNBY3Rpb24pIHNjcmlwdCBpcyBpbmxpbmVkIGludG8gdGhlIEhUTUwgYnkgdGhlIGJ1aWxkXG4gKiBwcm9jZXNzIHRvIGF2b2lkIGV4dHJhIGJsb2NraW5nIHJlcXVlc3Qgb24gYSBwYWdlLiBUaGUgc2NyaXB0IGxvb2tzIGxpa2UgdGhpczpcbiAqIGBgYFxuICogPHNjcmlwdCB0eXBlPVwidGV4dC9qYXZhc2NyaXB0XCIgaWQ9XCJuZy1ldmVudC1kaXNwYXRjaC1jb250cmFjdFwiPi4uLjwvc2NyaXB0PlxuICogYGBgXG4gKiBUaGlzIGNvbnN0IHJlcHJlc2VudHMgdGhlIFwiaWRcIiBhdHRyaWJ1dGUgdmFsdWUuXG4gKi9cbmV4cG9ydCBjb25zdCBFVkVOVF9ESVNQQVRDSF9TQ1JJUFRfSUQgPSAnbmctZXZlbnQtZGlzcGF0Y2gtY29udHJhY3QnO1xuXG5pbnRlcmZhY2UgUGxhdGZvcm1PcHRpb25zIHtcbiAgZG9jdW1lbnQ/OiBzdHJpbmcgfCBEb2N1bWVudDtcbiAgdXJsPzogc3RyaW5nO1xuICBwbGF0Zm9ybVByb3ZpZGVycz86IFByb3ZpZGVyW107XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBhIHNlcnZlciBwbGF0Zm9ybSAod2l0aCBvciB3aXRob3V0IEpJVCBjb21waWxlciBzdXBwb3J0XG4gKiBkZXBlbmRpbmcgb24gdGhlIGBuZ0ppdE1vZGVgIGdsb2JhbCBjb25zdCB2YWx1ZSksIHVzaW5nIHByb3ZpZGVkIG9wdGlvbnMuXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZVNlcnZlclBsYXRmb3JtKG9wdGlvbnM6IFBsYXRmb3JtT3B0aW9ucyk6IFBsYXRmb3JtUmVmIHtcbiAgY29uc3QgZXh0cmFQcm92aWRlcnMgPSBvcHRpb25zLnBsYXRmb3JtUHJvdmlkZXJzID8/IFtdO1xuICByZXR1cm4gcGxhdGZvcm1TZXJ2ZXIoW1xuICAgIHtwcm92aWRlOiBJTklUSUFMX0NPTkZJRywgdXNlVmFsdWU6IHtkb2N1bWVudDogb3B0aW9ucy5kb2N1bWVudCwgdXJsOiBvcHRpb25zLnVybH19LFxuICAgIGV4dHJhUHJvdmlkZXJzLFxuICBdKTtcbn1cblxuLyoqXG4gKiBGaW5kcyBhbmQgcmV0dXJucyBpbmxpbmVkIGV2ZW50IGRpc3BhdGNoIHNjcmlwdCBpZiBpdCBleGlzdHMuXG4gKiBTZWUgdGhlIGBFVkVOVF9ESVNQQVRDSF9TQ1JJUFRfSURgIGNvbnN0IGRvY3MgZm9yIGFkZGl0aW9uYWwgaW5mby5cbiAqL1xuZnVuY3Rpb24gZmluZEV2ZW50RGlzcGF0Y2hTY3JpcHQoZG9jOiBEb2N1bWVudCkge1xuICByZXR1cm4gZG9jLmdldEVsZW1lbnRCeUlkKEVWRU5UX0RJU1BBVENIX1NDUklQVF9JRCk7XG59XG5cbi8qKlxuICogUmVtb3ZlcyBpbmxpbmVkIGV2ZW50IGRpc3BhdGNoIHNjcmlwdCBpZiBpdCBleGlzdHMuXG4gKiBTZWUgdGhlIGBFVkVOVF9ESVNQQVRDSF9TQ1JJUFRfSURgIGNvbnN0IGRvY3MgZm9yIGFkZGl0aW9uYWwgaW5mby5cbiAqL1xuZnVuY3Rpb24gcmVtb3ZlRXZlbnREaXNwYXRjaFNjcmlwdChkb2M6IERvY3VtZW50KSB7XG4gIGZpbmRFdmVudERpc3BhdGNoU2NyaXB0KGRvYyk/LnJlbW92ZSgpO1xufVxuXG4vKipcbiAqIEFubm90YXRlIG5vZGVzIGZvciBoeWRyYXRpb24gYW5kIHJlbW92ZSBldmVudCBkaXNwYXRjaCBzY3JpcHQgd2hlbiBub3QgbmVlZGVkLlxuICovXG5mdW5jdGlvbiBwcmVwYXJlRm9ySHlkcmF0aW9uKHBsYXRmb3JtU3RhdGU6IFBsYXRmb3JtU3RhdGUsIGFwcGxpY2F0aW9uUmVmOiBBcHBsaWNhdGlvblJlZik6IHZvaWQge1xuICBjb25zdCBlbnZpcm9ubWVudEluamVjdG9yID0gYXBwbGljYXRpb25SZWYuaW5qZWN0b3I7XG4gIGNvbnN0IGRvYyA9IHBsYXRmb3JtU3RhdGUuZ2V0RG9jdW1lbnQoKTtcblxuICBpZiAoIWVudmlyb25tZW50SW5qZWN0b3IuZ2V0KElTX0hZRFJBVElPTl9ET01fUkVVU0VfRU5BQkxFRCwgZmFsc2UpKSB7XG4gICAgLy8gSHlkcmF0aW9uIGlzIGRpYWJsZWQsIHJlbW92ZSBpbmxpbmVkIGV2ZW50IGRpc3BhdGNoIHNjcmlwdC5cbiAgICAvLyAod2hpY2ggd2FzIGluamVjdGVkIGJ5IHRoZSBidWlsZCBwcm9jZXNzKSBmcm9tIHRoZSBIVE1MLlxuICAgIHJlbW92ZUV2ZW50RGlzcGF0Y2hTY3JpcHQoZG9jKTtcblxuICAgIHJldHVybjtcbiAgfVxuXG4gIGFwcGVuZFNzckNvbnRlbnRJbnRlZ3JpdHlNYXJrZXIoZG9jKTtcblxuICBjb25zdCBldmVudFR5cGVzVG9SZXBsYXkgPSBhbm5vdGF0ZUZvckh5ZHJhdGlvbihhcHBsaWNhdGlvblJlZiwgZG9jKTtcbiAgaWYgKGV2ZW50VHlwZXNUb1JlcGxheS5yZWd1bGFyLnNpemUgfHwgZXZlbnRUeXBlc1RvUmVwbGF5LmNhcHR1cmUuc2l6ZSkge1xuICAgIGluc2VydEV2ZW50UmVjb3JkU2NyaXB0KFxuICAgICAgZW52aXJvbm1lbnRJbmplY3Rvci5nZXQoQVBQX0lEKSxcbiAgICAgIGRvYyxcbiAgICAgIGV2ZW50VHlwZXNUb1JlcGxheSxcbiAgICAgIGVudmlyb25tZW50SW5qZWN0b3IuZ2V0KENTUF9OT05DRSwgbnVsbCksXG4gICAgKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBObyBldmVudHMgdG8gcmVwbGF5LCB3ZSBzaG91bGQgcmVtb3ZlIGlubGluZWQgZXZlbnQgZGlzcGF0Y2ggc2NyaXB0XG4gICAgLy8gKHdoaWNoIHdhcyBpbmplY3RlZCBieSB0aGUgYnVpbGQgcHJvY2VzcykgZnJvbSB0aGUgSFRNTC5cbiAgICByZW1vdmVFdmVudERpc3BhdGNoU2NyaXB0KGRvYyk7XG4gIH1cbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgbWFya2VyIGNvbW1lbnQgbm9kZSBhbmQgYXBwZW5kIGl0IGludG8gdGhlIGA8Ym9keT5gLlxuICogU29tZSBDRE5zIGhhdmUgbWVjaGFuaXNtcyB0byByZW1vdmUgYWxsIGNvbW1lbnQgbm9kZSBmcm9tIEhUTUwuXG4gKiBUaGlzIGJlaGF2aW91ciBicmVha3MgaHlkcmF0aW9uLCBzbyB3ZSdsbCBkZXRlY3Qgb24gdGhlIGNsaWVudCBzaWRlIGlmIHRoaXNcbiAqIG1hcmtlciBjb21tZW50IGlzIHN0aWxsIGF2YWlsYWJsZSBvciBlbHNlIHRocm93IGFuIGVycm9yXG4gKi9cbmZ1bmN0aW9uIGFwcGVuZFNzckNvbnRlbnRJbnRlZ3JpdHlNYXJrZXIoZG9jOiBEb2N1bWVudCkge1xuICAvLyBBZGRpbmcgYSBuZyBoeWRyYXRpb24gbWFya2VyIGNvbW1lbnRcbiAgY29uc3QgY29tbWVudCA9IGRvYy5jcmVhdGVDb21tZW50KFNTUl9DT05URU5UX0lOVEVHUklUWV9NQVJLRVIpO1xuICBkb2MuYm9keS5maXJzdENoaWxkXG4gICAgPyBkb2MuYm9keS5pbnNlcnRCZWZvcmUoY29tbWVudCwgZG9jLmJvZHkuZmlyc3RDaGlsZClcbiAgICA6IGRvYy5ib2R5LmFwcGVuZChjb21tZW50KTtcbn1cblxuLyoqXG4gKiBBZGRzIHRoZSBgbmctc2VydmVyLWNvbnRleHRgIGF0dHJpYnV0ZSB0byBob3N0IGVsZW1lbnRzIG9mIGFsbCBib290c3RyYXBwZWQgY29tcG9uZW50c1xuICogd2l0aGluIGEgZ2l2ZW4gYXBwbGljYXRpb24uXG4gKi9cbmZ1bmN0aW9uIGFwcGVuZFNlcnZlckNvbnRleHRJbmZvKGFwcGxpY2F0aW9uUmVmOiBBcHBsaWNhdGlvblJlZikge1xuICBjb25zdCBpbmplY3RvciA9IGFwcGxpY2F0aW9uUmVmLmluamVjdG9yO1xuICBsZXQgc2VydmVyQ29udGV4dCA9IHNhbml0aXplU2VydmVyQ29udGV4dChpbmplY3Rvci5nZXQoU0VSVkVSX0NPTlRFWFQsIERFRkFVTFRfU0VSVkVSX0NPTlRFWFQpKTtcbiAgYXBwbGljYXRpb25SZWYuY29tcG9uZW50cy5mb3JFYWNoKChjb21wb25lbnRSZWYpID0+IHtcbiAgICBjb25zdCByZW5kZXJlciA9IGNvbXBvbmVudFJlZi5pbmplY3Rvci5nZXQoUmVuZGVyZXIyKTtcbiAgICBjb25zdCBlbGVtZW50ID0gY29tcG9uZW50UmVmLmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQ7XG4gICAgaWYgKGVsZW1lbnQpIHtcbiAgICAgIHJlbmRlcmVyLnNldEF0dHJpYnV0ZShlbGVtZW50LCAnbmctc2VydmVyLWNvbnRleHQnLCBzZXJ2ZXJDb250ZXh0KTtcbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBpbnNlcnRFdmVudFJlY29yZFNjcmlwdChcbiAgYXBwSWQ6IHN0cmluZyxcbiAgZG9jOiBEb2N1bWVudCxcbiAgZXZlbnRUeXBlc1RvUmVwbGF5OiB7cmVndWxhcjogU2V0PHN0cmluZz47IGNhcHR1cmU6IFNldDxzdHJpbmc+fSxcbiAgbm9uY2U6IHN0cmluZyB8IG51bGwsXG4pOiB2b2lkIHtcbiAgY29uc3Qge3JlZ3VsYXIsIGNhcHR1cmV9ID0gZXZlbnRUeXBlc1RvUmVwbGF5O1xuICBjb25zdCBldmVudERpc3BhdGNoU2NyaXB0ID0gZmluZEV2ZW50RGlzcGF0Y2hTY3JpcHQoZG9jKTtcbiAgaWYgKGV2ZW50RGlzcGF0Y2hTY3JpcHQpIHtcbiAgICAvLyBUaGlzIGlzIGRlZmluZWQgaW4gcGFja2FnZXMvY29yZS9wcmltaXRpdmVzL2V2ZW50LWRpc3BhdGNoL2NvbnRyYWN0X2JpbmFyeS50c1xuICAgIGNvbnN0IHJlcGxheVNjcmlwdENvbnRlbnRzID1cbiAgICAgIGB3aW5kb3cuX19qc2FjdGlvbl9ib290c3RyYXAoYCArXG4gICAgICBgZG9jdW1lbnQuYm9keSxgICtcbiAgICAgIGBcIiR7YXBwSWR9XCIsYCArXG4gICAgICBgJHtKU09OLnN0cmluZ2lmeShBcnJheS5mcm9tKHJlZ3VsYXIpKX0sYCArXG4gICAgICBgJHtKU09OLnN0cmluZ2lmeShBcnJheS5mcm9tKGNhcHR1cmUpKX1gICtcbiAgICAgIGApO2A7XG5cbiAgICBjb25zdCByZXBsYXlTY3JpcHQgPSBjcmVhdGVTY3JpcHQoZG9jLCByZXBsYXlTY3JpcHRDb250ZW50cywgbm9uY2UpO1xuXG4gICAgLy8gSW5zZXJ0IHJlcGxheSBzY3JpcHQgcmlnaHQgYWZ0ZXIgaW5saW5lZCBldmVudCBkaXNwYXRjaCBzY3JpcHQsIHNpbmNlIGl0XG4gICAgLy8gcmVsaWVzIG9uIGBfX2pzYWN0aW9uX2Jvb3RzdHJhcGAgdG8gYmUgZGVmaW5lZCBpbiB0aGUgZ2xvYmFsIHNjb3BlLlxuICAgIGV2ZW50RGlzcGF0Y2hTY3JpcHQuYWZ0ZXIocmVwbGF5U2NyaXB0KTtcbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBfcmVuZGVyKHBsYXRmb3JtUmVmOiBQbGF0Zm9ybVJlZiwgYXBwbGljYXRpb25SZWY6IEFwcGxpY2F0aW9uUmVmKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgLy8gQmxvY2sgdW50aWwgYXBwbGljYXRpb24gaXMgc3RhYmxlLlxuICBhd2FpdCB3aGVuU3RhYmxlKGFwcGxpY2F0aW9uUmVmKTtcblxuICBjb25zdCBwbGF0Zm9ybVN0YXRlID0gcGxhdGZvcm1SZWYuaW5qZWN0b3IuZ2V0KFBsYXRmb3JtU3RhdGUpO1xuICBwcmVwYXJlRm9ySHlkcmF0aW9uKHBsYXRmb3JtU3RhdGUsIGFwcGxpY2F0aW9uUmVmKTtcblxuICAvLyBSdW4gYW55IEJFRk9SRV9BUFBfU0VSSUFMSVpFRCBjYWxsYmFja3MganVzdCBiZWZvcmUgcmVuZGVyaW5nIHRvIHN0cmluZy5cbiAgY29uc3QgZW52aXJvbm1lbnRJbmplY3RvciA9IGFwcGxpY2F0aW9uUmVmLmluamVjdG9yO1xuICBjb25zdCBjYWxsYmFja3MgPSBlbnZpcm9ubWVudEluamVjdG9yLmdldChCRUZPUkVfQVBQX1NFUklBTElaRUQsIG51bGwpO1xuICBpZiAoY2FsbGJhY2tzKSB7XG4gICAgY29uc3QgYXN5bmNDYWxsYmFja3M6IFByb21pc2U8dm9pZD5bXSA9IFtdO1xuICAgIGZvciAoY29uc3QgY2FsbGJhY2sgb2YgY2FsbGJhY2tzKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBjYWxsYmFja1Jlc3VsdCA9IGNhbGxiYWNrKCk7XG4gICAgICAgIGlmIChjYWxsYmFja1Jlc3VsdCkge1xuICAgICAgICAgIGFzeW5jQ2FsbGJhY2tzLnB1c2goY2FsbGJhY2tSZXN1bHQpO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIC8vIElnbm9yZSBleGNlcHRpb25zLlxuICAgICAgICBjb25zb2xlLndhcm4oJ0lnbm9yaW5nIEJFRk9SRV9BUFBfU0VSSUFMSVpFRCBFeGNlcHRpb246ICcsIGUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChhc3luY0NhbGxiYWNrcy5sZW5ndGgpIHtcbiAgICAgIGZvciAoY29uc3QgcmVzdWx0IG9mIGF3YWl0IFByb21pc2UuYWxsU2V0dGxlZChhc3luY0NhbGxiYWNrcykpIHtcbiAgICAgICAgaWYgKHJlc3VsdC5zdGF0dXMgPT09ICdyZWplY3RlZCcpIHtcbiAgICAgICAgICBjb25zb2xlLndhcm4oJ0lnbm9yaW5nIEJFRk9SRV9BUFBfU0VSSUFMSVpFRCBFeGNlcHRpb246ICcsIHJlc3VsdC5yZWFzb24pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgYXBwZW5kU2VydmVyQ29udGV4dEluZm8oYXBwbGljYXRpb25SZWYpO1xuXG4gIHJldHVybiBwbGF0Zm9ybVN0YXRlLnJlbmRlclRvU3RyaW5nKCk7XG59XG5cbi8qKlxuICogRGVzdHJveSB0aGUgYXBwbGljYXRpb24gaW4gYSBtYWNyb3Rhc2ssIHRoaXMgYWxsb3dzIHBlbmRpbmcgcHJvbWlzZXMgdG8gYmUgc2V0dGxlZCBhbmQgZXJyb3JzXG4gKiB0byBiZSBzdXJmYWNlZCB0byB0aGUgdXNlcnMuXG4gKi9cbmZ1bmN0aW9uIGFzeW5jRGVzdHJveVBsYXRmb3JtKHBsYXRmb3JtUmVmOiBQbGF0Zm9ybVJlZik6IFByb21pc2U8dm9pZD4ge1xuICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUpID0+IHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHBsYXRmb3JtUmVmLmRlc3Ryb3koKTtcbiAgICAgIHJlc29sdmUoKTtcbiAgICB9LCAwKTtcbiAgfSk7XG59XG5cbi8qKlxuICogU3BlY2lmaWVzIHRoZSB2YWx1ZSB0aGF0IHNob3VsZCBiZSB1c2VkIGlmIG5vIHNlcnZlciBjb250ZXh0IHZhbHVlIGhhcyBiZWVuIHByb3ZpZGVkLlxuICovXG5jb25zdCBERUZBVUxUX1NFUlZFUl9DT05URVhUID0gJ290aGVyJztcblxuLyoqXG4gKiBBbiBpbnRlcm5hbCB0b2tlbiB0aGF0IGFsbG93cyBwcm92aWRpbmcgZXh0cmEgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHNlcnZlciBjb250ZXh0XG4gKiAoZS5nLiB3aGV0aGVyIFNTUiBvciBTU0cgd2FzIHVzZWQpLiBUaGUgdmFsdWUgaXMgYSBzdHJpbmcgYW5kIGNoYXJhY3RlcnMgb3RoZXJcbiAqIHRoYW4gW2EtekEtWjAtOVxcLV0gYXJlIHJlbW92ZWQuIFNlZSB0aGUgZGVmYXVsdCB2YWx1ZSBpbiBgREVGQVVMVF9TRVJWRVJfQ09OVEVYVGAgY29uc3QuXG4gKi9cbmV4cG9ydCBjb25zdCBTRVJWRVJfQ09OVEVYVCA9IG5ldyBJbmplY3Rpb25Ub2tlbjxzdHJpbmc+KCdTRVJWRVJfQ09OVEVYVCcpO1xuXG4vKipcbiAqIFNhbml0aXplcyBwcm92aWRlZCBzZXJ2ZXIgY29udGV4dDpcbiAqIC0gcmVtb3ZlcyBhbGwgY2hhcmFjdGVycyBvdGhlciB0aGFuIGEteiwgQS1aLCAwLTkgYW5kIGAtYFxuICogLSByZXR1cm5zIGBvdGhlcmAgaWYgbm90aGluZyBpcyBwcm92aWRlZCBvciB0aGUgc3RyaW5nIGlzIGVtcHR5IGFmdGVyIHNhbml0aXphdGlvblxuICovXG5mdW5jdGlvbiBzYW5pdGl6ZVNlcnZlckNvbnRleHQoc2VydmVyQ29udGV4dDogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgY29udGV4dCA9IHNlcnZlckNvbnRleHQucmVwbGFjZSgvW15hLXpBLVowLTlcXC1dL2csICcnKTtcbiAgcmV0dXJuIGNvbnRleHQubGVuZ3RoID4gMCA/IGNvbnRleHQgOiBERUZBVUxUX1NFUlZFUl9DT05URVhUO1xufVxuXG4vKipcbiAqIEJvb3RzdHJhcHMgYW4gYXBwbGljYXRpb24gdXNpbmcgcHJvdmlkZWQgTmdNb2R1bGUgYW5kIHNlcmlhbGl6ZXMgdGhlIHBhZ2UgY29udGVudCB0byBzdHJpbmcuXG4gKlxuICogQHBhcmFtIG1vZHVsZVR5cGUgQSByZWZlcmVuY2UgdG8gYW4gTmdNb2R1bGUgdGhhdCBzaG91bGQgYmUgdXNlZCBmb3IgYm9vdHN0cmFwLlxuICogQHBhcmFtIG9wdGlvbnMgQWRkaXRpb25hbCBjb25maWd1cmF0aW9uIGZvciB0aGUgcmVuZGVyIG9wZXJhdGlvbjpcbiAqICAtIGBkb2N1bWVudGAgLSB0aGUgZG9jdW1lbnQgb2YgdGhlIHBhZ2UgdG8gcmVuZGVyLCBlaXRoZXIgYXMgYW4gSFRNTCBzdHJpbmcgb3JcbiAqICAgICAgICAgICAgICAgICBhcyBhIHJlZmVyZW5jZSB0byB0aGUgYGRvY3VtZW50YCBpbnN0YW5jZS5cbiAqICAtIGB1cmxgIC0gdGhlIFVSTCBmb3IgdGhlIGN1cnJlbnQgcmVuZGVyIHJlcXVlc3QuXG4gKiAgLSBgZXh0cmFQcm92aWRlcnNgIC0gc2V0IG9mIHBsYXRmb3JtIGxldmVsIHByb3ZpZGVycyBmb3IgdGhlIGN1cnJlbnQgcmVuZGVyIHJlcXVlc3QuXG4gKlxuICogQHB1YmxpY0FwaVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVuZGVyTW9kdWxlPFQ+KFxuICBtb2R1bGVUeXBlOiBUeXBlPFQ+LFxuICBvcHRpb25zOiB7ZG9jdW1lbnQ/OiBzdHJpbmcgfCBEb2N1bWVudDsgdXJsPzogc3RyaW5nOyBleHRyYVByb3ZpZGVycz86IFN0YXRpY1Byb3ZpZGVyW119LFxuKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgY29uc3Qge2RvY3VtZW50LCB1cmwsIGV4dHJhUHJvdmlkZXJzOiBwbGF0Zm9ybVByb3ZpZGVyc30gPSBvcHRpb25zO1xuICBjb25zdCBwbGF0Zm9ybVJlZiA9IGNyZWF0ZVNlcnZlclBsYXRmb3JtKHtkb2N1bWVudCwgdXJsLCBwbGF0Zm9ybVByb3ZpZGVyc30pO1xuICB0cnkge1xuICAgIGNvbnN0IG1vZHVsZVJlZiA9IGF3YWl0IHBsYXRmb3JtUmVmLmJvb3RzdHJhcE1vZHVsZShtb2R1bGVUeXBlKTtcbiAgICBjb25zdCBhcHBsaWNhdGlvblJlZiA9IG1vZHVsZVJlZi5pbmplY3Rvci5nZXQoQXBwbGljYXRpb25SZWYpO1xuICAgIHJldHVybiBhd2FpdCBfcmVuZGVyKHBsYXRmb3JtUmVmLCBhcHBsaWNhdGlvblJlZik7XG4gIH0gZmluYWxseSB7XG4gICAgYXdhaXQgYXN5bmNEZXN0cm95UGxhdGZvcm0ocGxhdGZvcm1SZWYpO1xuICB9XG59XG5cbi8qKlxuICogQm9vdHN0cmFwcyBhbiBpbnN0YW5jZSBvZiBhbiBBbmd1bGFyIGFwcGxpY2F0aW9uIGFuZCByZW5kZXJzIGl0IHRvIGEgc3RyaW5nLlxuICpcbiAqIEB1c2FnZU5vdGVzXG4gKlxuICogYGBgdHNcbiAqIGltcG9ydCB7IEJvb3RzdHJhcENvbnRleHQsIGJvb3RzdHJhcEFwcGxpY2F0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG4gKiBpbXBvcnQgeyByZW5kZXJBcHBsaWNhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLXNlcnZlcic7XG4gKiBpbXBvcnQgeyBBcHBsaWNhdGlvbkNvbmZpZyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuICogaW1wb3J0IHsgQXBwQ29tcG9uZW50IH0gZnJvbSAnLi9hcHAuY29tcG9uZW50JztcbiAqXG4gKiBjb25zdCBhcHBDb25maWc6IEFwcGxpY2F0aW9uQ29uZmlnID0geyBwcm92aWRlcnM6IFsuLi5dIH07XG4gKiBjb25zdCBib290c3RyYXAgPSAoY29udGV4dDogQm9vdHN0cmFwQ29udGV4dCkgPT5cbiAqICAgYm9vdHN0cmFwQXBwbGljYXRpb24oQXBwQ29tcG9uZW50LCBjb25maWcsIGNvbnRleHQpO1xuICogY29uc3Qgb3V0cHV0ID0gYXdhaXQgcmVuZGVyQXBwbGljYXRpb24oYm9vdHN0cmFwKTtcbiAqIGBgYFxuICpcbiAqIEBwYXJhbSBib290c3RyYXAgQSBtZXRob2QgdGhhdCB3aGVuIGludm9rZWQgcmV0dXJucyBhIHByb21pc2UgdGhhdCByZXR1cm5zIGFuIGBBcHBsaWNhdGlvblJlZmBcbiAqICAgICBpbnN0YW5jZSBvbmNlIHJlc29sdmVkLiBUaGUgbWV0aG9kIGlzIGludm9rZWQgd2l0aCBhbiBgSW5qZWN0b3JgIGluc3RhbmNlIHRoYXRcbiAqICAgICBwcm92aWRlcyBhY2Nlc3MgdG8gdGhlIHBsYXRmb3JtLWxldmVsIGRlcGVuZGVuY3kgaW5qZWN0aW9uIGNvbnRleHQuXG4gKiBAcGFyYW0gb3B0aW9ucyBBZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSByZW5kZXIgb3BlcmF0aW9uOlxuICogIC0gYGRvY3VtZW50YCAtIHRoZSBkb2N1bWVudCBvZiB0aGUgcGFnZSB0byByZW5kZXIsIGVpdGhlciBhcyBhbiBIVE1MIHN0cmluZyBvclxuICogICAgICAgICAgICAgICAgIGFzIGEgcmVmZXJlbmNlIHRvIHRoZSBgZG9jdW1lbnRgIGluc3RhbmNlLlxuICogIC0gYHVybGAgLSB0aGUgVVJMIGZvciB0aGUgY3VycmVudCByZW5kZXIgcmVxdWVzdC5cbiAqICAtIGBwbGF0Zm9ybVByb3ZpZGVyc2AgLSB0aGUgcGxhdGZvcm0gbGV2ZWwgcHJvdmlkZXJzIGZvciB0aGUgY3VycmVudCByZW5kZXIgcmVxdWVzdC5cbiAqXG4gKiBAcmV0dXJucyBBIFByb21pc2UsIHRoYXQgcmV0dXJucyBzZXJpYWxpemVkICh0byBhIHN0cmluZykgcmVuZGVyZWQgcGFnZSwgb25jZSByZXNvbHZlZC5cbiAqXG4gKiBAcHVibGljQXBpXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZW5kZXJBcHBsaWNhdGlvbihcbiAgYm9vdHN0cmFwOiAoY29udGV4dDogQm9vdHN0cmFwQ29udGV4dCkgPT4gUHJvbWlzZTxBcHBsaWNhdGlvblJlZj4sXG4gIG9wdGlvbnM6IHtkb2N1bWVudD86IHN0cmluZyB8IERvY3VtZW50OyB1cmw/OiBzdHJpbmc7IHBsYXRmb3JtUHJvdmlkZXJzPzogUHJvdmlkZXJbXX0sXG4pOiBQcm9taXNlPHN0cmluZz4ge1xuICByZXR1cm4gcnVuQW5kTWVhc3VyZVBlcmYoJ3JlbmRlckFwcGxpY2F0aW9uJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHBsYXRmb3JtUmVmID0gY3JlYXRlU2VydmVyUGxhdGZvcm0ob3B0aW9ucyk7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgYXBwbGljYXRpb25SZWYgPSBhd2FpdCBib290c3RyYXAoe3BsYXRmb3JtUmVmfSk7XG4gICAgICByZXR1cm4gYXdhaXQgX3JlbmRlcihwbGF0Zm9ybVJlZiwgYXBwbGljYXRpb25SZWYpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBhd2FpdCBhc3luY0Rlc3Ryb3lQbGF0Zm9ybShwbGF0Zm9ybVJlZik7XG4gICAgfVxuICB9KTtcbn1cbiJdfQ==
@@ -14,5 +14,5 @@ import { Version } from '@angular/core';
14
14
  /**
15
15
  * @publicApi
16
16
  */
17
- export const VERSION = new Version('18.2.12');
17
+ export const VERSION = new Version('18.2.14');
18
18
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3BsYXRmb3JtLXNlcnZlci9zcmMvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSDs7OztHQUlHO0FBRUgsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUV0Qzs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxJQUFJLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuZGV2L2xpY2Vuc2VcbiAqL1xuXG4vKipcbiAqIEBtb2R1bGVcbiAqIEBkZXNjcmlwdGlvblxuICogRW50cnkgcG9pbnQgZm9yIGFsbCBwdWJsaWMgQVBJcyBvZiB0aGUgcGxhdGZvcm0tc2VydmVyIHBhY2thZ2UuXG4gKi9cblxuaW1wb3J0IHtWZXJzaW9ufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiBAcHVibGljQXBpXG4gKi9cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gbmV3IFZlcnNpb24oJzAuMC4wLVBMQUNFSE9MREVSJyk7XG4iXX0=
@@ -22,11 +22,11 @@ export const platformServerTesting = createPlatformFactory(platformCoreDynamicTe
22
22
  * @publicApi
23
23
  */
24
24
  export class ServerTestingModule {
25
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ServerTestingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
26
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.12", ngImport: i0, type: ServerTestingModule, imports: [NoopAnimationsModule], exports: [BrowserDynamicTestingModule] }); }
27
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ServerTestingModule, providers: SERVER_RENDER_PROVIDERS, imports: [NoopAnimationsModule, BrowserDynamicTestingModule] }); }
25
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ServerTestingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
26
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: ServerTestingModule, imports: [NoopAnimationsModule], exports: [BrowserDynamicTestingModule] }); }
27
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ServerTestingModule, providers: SERVER_RENDER_PROVIDERS, imports: [NoopAnimationsModule, BrowserDynamicTestingModule] }); }
28
28
  }
29
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ServerTestingModule, decorators: [{
29
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ServerTestingModule, decorators: [{
30
30
  type: NgModule,
31
31
  args: [{
32
32
  exports: [BrowserDynamicTestingModule],
package/fesm2022/init.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v18.2.12
2
+ * @license Angular v18.2.14
3
3
  * (c) 2010-2024 Google LLC. https://angular.io/
4
4
  * License: MIT
5
5
  */
@@ -1,12 +1,12 @@
1
1
  /**
2
- * @license Angular v18.2.12
2
+ * @license Angular v18.2.14
3
3
  * (c) 2010-2024 Google LLC. https://angular.io/
4
4
  * License: MIT
5
5
  */
6
6
 
7
7
  import { ɵsetRootDomAdapter, DOCUMENT, PlatformLocation, XhrFactory, ɵgetDOM, ɵPLATFORM_SERVER_ID, ViewportScroller, ɵNullViewportScroller } from '@angular/common';
8
8
  import * as i0 from '@angular/core';
9
- import { Injectable, Inject, inject, InjectionToken, Optional, APP_ID, TransferState, Injector, PLATFORM_ID, PLATFORM_INITIALIZER, ɵALLOW_MULTIPLE_PLATFORMS, Testability, ɵTESTABILITY, NgModule, ɵsetDocument, createPlatformFactory, platformCore, makeEnvironmentProviders, ɵIS_HYDRATION_DOM_REUSE_ENABLED, ɵannotateForHydration, CSP_NONCE, ɵSSR_CONTENT_INTEGRITY_MARKER, Renderer2, ɵwhenStable, ApplicationRef, Version } from '@angular/core';
9
+ import { Injectable, Inject, inject, InjectionToken, Optional, APP_ID, TransferState, Injector, ɵALLOW_MULTIPLE_PLATFORMS, PLATFORM_ID, PLATFORM_INITIALIZER, Testability, ɵTESTABILITY, NgModule, ɵsetDocument, createPlatformFactory, platformCore, makeEnvironmentProviders, ɵIS_HYDRATION_DOM_REUSE_ENABLED, ɵannotateForHydration, CSP_NONCE, ɵSSR_CONTENT_INTEGRITY_MARKER, Renderer2, ɵwhenStable, ApplicationRef, Version } from '@angular/core';
10
10
  import { ɵBrowserDomAdapter, EventManagerPlugin, EVENT_MANAGER_PLUGINS, BrowserModule } from '@angular/platform-browser';
11
11
  import { NoopAnimationsModule, provideNoopAnimations } from '@angular/platform-browser/animations';
12
12
  import { ɵHTTP_ROOT_INTERCEPTOR_FNS, HttpClientModule } from '@angular/common/http';
@@ -16216,10 +16216,10 @@ class PlatformState {
16216
16216
  getDocument() {
16217
16217
  return this._doc;
16218
16218
  }
16219
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: PlatformState, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable }); }
16220
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: PlatformState }); }
16219
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PlatformState, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable }); }
16220
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PlatformState }); }
16221
16221
  }
16222
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: PlatformState, decorators: [{
16222
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PlatformState, decorators: [{
16223
16223
  type: Injectable
16224
16224
  }], ctorParameters: () => [{ type: undefined, decorators: [{
16225
16225
  type: Inject,
@@ -16244,10 +16244,10 @@ class ServerXhr {
16244
16244
  }
16245
16245
  return new impl.XMLHttpRequest();
16246
16246
  }
16247
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ServerXhr, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
16248
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ServerXhr }); }
16247
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ServerXhr, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
16248
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ServerXhr }); }
16249
16249
  }
16250
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ServerXhr, decorators: [{
16250
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ServerXhr, decorators: [{
16251
16251
  type: Injectable
16252
16252
  }] });
16253
16253
  function relativeUrlsTransformerInterceptorFn(request, next) {
@@ -16379,10 +16379,10 @@ class ServerPlatformLocation {
16379
16379
  getState() {
16380
16380
  return undefined;
16381
16381
  }
16382
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ServerPlatformLocation, deps: [{ token: DOCUMENT }, { token: INITIAL_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
16383
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ServerPlatformLocation }); }
16382
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ServerPlatformLocation, deps: [{ token: DOCUMENT }, { token: INITIAL_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
16383
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ServerPlatformLocation }); }
16384
16384
  }
16385
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ServerPlatformLocation, decorators: [{
16385
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ServerPlatformLocation, decorators: [{
16386
16386
  type: Injectable
16387
16387
  }], ctorParameters: () => [{ type: undefined, decorators: [{
16388
16388
  type: Inject,
@@ -16406,10 +16406,10 @@ class ServerEventManagerPlugin extends EventManagerPlugin {
16406
16406
  addEventListener(element, eventName, handler) {
16407
16407
  return ɵgetDOM().onAndCancel(element, eventName, handler);
16408
16408
  }
16409
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ServerEventManagerPlugin, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable }); }
16410
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ServerEventManagerPlugin }); }
16409
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ServerEventManagerPlugin, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable }); }
16410
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ServerEventManagerPlugin }); }
16411
16411
  }
16412
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ServerEventManagerPlugin, decorators: [{
16412
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ServerEventManagerPlugin, decorators: [{
16413
16413
  type: Injectable
16414
16414
  }], ctorParameters: () => [{ type: undefined, decorators: [{
16415
16415
  type: Inject,
@@ -16460,6 +16460,8 @@ function serializeTransferStateFactory(doc, appId, transferStore) {
16460
16460
 
16461
16461
  const INTERNAL_SERVER_PLATFORM_PROVIDERS = [
16462
16462
  { provide: DOCUMENT, useFactory: _document, deps: [Injector] },
16463
+ // Add special provider that allows multiple instances of platformServer* to be created.
16464
+ { provide: ɵALLOW_MULTIPLE_PLATFORMS, useValue: true },
16463
16465
  { provide: PLATFORM_ID, useValue: ɵPLATFORM_SERVER_ID },
16464
16466
  { provide: PLATFORM_INITIALIZER, useFactory: initDominoAdapter, multi: true },
16465
16467
  {
@@ -16468,8 +16470,6 @@ const INTERNAL_SERVER_PLATFORM_PROVIDERS = [
16468
16470
  deps: [DOCUMENT, [Optional, INITIAL_CONFIG]],
16469
16471
  },
16470
16472
  { provide: PlatformState, deps: [DOCUMENT] },
16471
- // Add special provider that allows multiple instances of platformServer* to be created.
16472
- { provide: ɵALLOW_MULTIPLE_PLATFORMS, useValue: true },
16473
16473
  ];
16474
16474
  function initDominoAdapter() {
16475
16475
  return () => {
@@ -16493,11 +16493,11 @@ const PLATFORM_SERVER_PROVIDERS = [
16493
16493
  * @publicApi
16494
16494
  */
16495
16495
  class ServerModule {
16496
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ServerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
16497
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.12", ngImport: i0, type: ServerModule, imports: [HttpClientModule, NoopAnimationsModule], exports: [BrowserModule] }); }
16498
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ServerModule, providers: PLATFORM_SERVER_PROVIDERS, imports: [HttpClientModule, NoopAnimationsModule, BrowserModule] }); }
16496
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ServerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
16497
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: ServerModule, imports: [HttpClientModule, NoopAnimationsModule], exports: [BrowserModule] }); }
16498
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ServerModule, providers: PLATFORM_SERVER_PROVIDERS, imports: [HttpClientModule, NoopAnimationsModule, BrowserModule] }); }
16499
16499
  }
16500
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ServerModule, decorators: [{
16500
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ServerModule, decorators: [{
16501
16501
  type: NgModule,
16502
16502
  args: [{
16503
16503
  exports: [BrowserModule],
@@ -16522,6 +16522,13 @@ function _document(injector) {
16522
16522
  return document;
16523
16523
  }
16524
16524
  /**
16525
+ * Creates a server-side instance of an Angular platform.
16526
+ *
16527
+ * This platform should be used when performing server-side rendering of an Angular application.
16528
+ * Standalone applications can be bootstrapped on the server using the `bootstrapApplication`
16529
+ * function from `@angular/platform-browser`. When using `bootstrapApplication`, the `platformServer`
16530
+ * should be created first and passed to the bootstrap function using the `BootstrapContext`.
16531
+ *
16525
16532
  * @publicApi
16526
16533
  */
16527
16534
  const platformServer = createPlatformFactory(platformCore, 'server', INTERNAL_SERVER_PLATFORM_PROVIDERS);
@@ -16785,14 +16792,24 @@ async function renderModule(moduleType, options) {
16785
16792
  }
16786
16793
  /**
16787
16794
  * Bootstraps an instance of an Angular application and renders it to a string.
16788
-
16789
- * ```typescript
16790
- * const bootstrap = () => bootstrapApplication(RootComponent, appConfig);
16791
- * const output: string = await renderApplication(bootstrap);
16795
+ *
16796
+ * @usageNotes
16797
+ *
16798
+ * ```ts
16799
+ * import { BootstrapContext, bootstrapApplication } from '@angular/platform-browser';
16800
+ * import { renderApplication } from '@angular/platform-server';
16801
+ * import { ApplicationConfig } from '@angular/core';
16802
+ * import { AppComponent } from './app.component';
16803
+ *
16804
+ * const appConfig: ApplicationConfig = { providers: [...] };
16805
+ * const bootstrap = (context: BootstrapContext) =>
16806
+ * bootstrapApplication(AppComponent, config, context);
16807
+ * const output = await renderApplication(bootstrap);
16792
16808
  * ```
16793
16809
  *
16794
16810
  * @param bootstrap A method that when invoked returns a promise that returns an `ApplicationRef`
16795
- * instance once resolved.
16811
+ * instance once resolved. The method is invoked with an `Injector` instance that
16812
+ * provides access to the platform-level dependency injection context.
16796
16813
  * @param options Additional configuration for the render operation:
16797
16814
  * - `document` - the document of the page to render, either as an HTML string or
16798
16815
  * as a reference to the `document` instance.
@@ -16807,7 +16824,7 @@ async function renderApplication(bootstrap, options) {
16807
16824
  return runAndMeasurePerf('renderApplication', async () => {
16808
16825
  const platformRef = createServerPlatform(options);
16809
16826
  try {
16810
- const applicationRef = await bootstrap();
16827
+ const applicationRef = await bootstrap({ platformRef });
16811
16828
  return await _render(platformRef, applicationRef);
16812
16829
  }
16813
16830
  finally {
@@ -16824,7 +16841,7 @@ async function renderApplication(bootstrap, options) {
16824
16841
  /**
16825
16842
  * @publicApi
16826
16843
  */
16827
- const VERSION = new Version('18.2.12');
16844
+ const VERSION = new Version('18.2.14');
16828
16845
 
16829
16846
  /// <reference types="node" />
16830
16847
  // This file only reexports content of the `src` folder. Keep it that way.