@angular/platform-browser 17.0.0-next.7 → 17.0.0-rc.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/animations/async/index.d.ts +1 -1
- package/animations/index.d.ts +1 -14
- package/esm2022/animations/async/src/async_animation_renderer.mjs +42 -5
- package/esm2022/animations/src/module.mjs +8 -8
- package/esm2022/animations/src/private_export.mjs +1 -2
- package/esm2022/animations/src/providers.mjs +4 -7
- package/esm2022/src/browser/meta.mjs +3 -3
- package/esm2022/src/browser/title.mjs +3 -3
- package/esm2022/src/browser/xhr.mjs +3 -3
- package/esm2022/src/browser.mjs +4 -4
- package/esm2022/src/dom/dom_renderer.mjs +19 -19
- package/esm2022/src/dom/events/dom_events.mjs +3 -3
- package/esm2022/src/dom/events/event_manager.mjs +3 -3
- package/esm2022/src/dom/events/hammer_gestures.mjs +10 -10
- package/esm2022/src/dom/events/key_events.mjs +3 -3
- package/esm2022/src/dom/shared_styles_host.mjs +20 -47
- package/esm2022/src/errors.mjs +1 -1
- package/esm2022/src/hydration.mjs +31 -52
- package/esm2022/src/platform-browser.mjs +2 -2
- package/esm2022/src/private_export.mjs +1 -1
- package/esm2022/src/security/dom_sanitization_service.mjs +6 -6
- package/esm2022/src/version.mjs +1 -1
- package/esm2022/testing/src/browser.mjs +4 -4
- package/fesm2022/animations/async.mjs +42 -6
- package/fesm2022/animations/async.mjs.map +1 -1
- package/fesm2022/animations.mjs +14 -111
- package/fesm2022/animations.mjs.map +1 -1
- package/fesm2022/platform-browser.mjs +106 -154
- package/fesm2022/platform-browser.mjs.map +1 -1
- package/fesm2022/testing.mjs +5 -5
- package/index.d.ts +37 -47
- package/package.json +4 -4
- package/testing/index.d.ts +1 -1
- package/esm2022/animations/src/animation_builder.mjs +0 -106
package/fesm2022/testing.mjs
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
/**
|
2
|
-
* @license Angular v17.0.0-
|
2
|
+
* @license Angular v17.0.0-rc.0
|
3
3
|
* (c) 2010-2022 Google LLC. https://angular.io/
|
4
4
|
* License: MIT
|
5
5
|
*/
|
@@ -26,9 +26,9 @@ const platformBrowserTesting = createPlatformFactory(platformCore, 'browserTesti
|
|
26
26
|
* @publicApi
|
27
27
|
*/
|
28
28
|
class BrowserTestingModule {
|
29
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-
|
30
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.0-
|
31
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.0-
|
29
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-rc.0", ngImport: i0, type: BrowserTestingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
30
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.0-rc.0", ngImport: i0, type: BrowserTestingModule, exports: [BrowserModule] }); }
|
31
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.0-rc.0", ngImport: i0, type: BrowserTestingModule, providers: [
|
32
32
|
{ provide: APP_ID, useValue: 'a' },
|
33
33
|
provideZoneChangeDetection(),
|
34
34
|
{ provide: PlatformLocation, useClass: MockPlatformLocation },
|
@@ -36,7 +36,7 @@ class BrowserTestingModule {
|
|
36
36
|
{ provide: ɵEffectScheduler, useExisting: ɵZoneAwareQueueingScheduler },
|
37
37
|
], imports: [BrowserModule] }); }
|
38
38
|
}
|
39
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-
|
39
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-rc.0", ngImport: i0, type: BrowserTestingModule, decorators: [{
|
40
40
|
type: NgModule,
|
41
41
|
args: [{
|
42
42
|
exports: [BrowserModule],
|
package/index.d.ts
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
/**
|
2
|
-
* @license Angular v17.0.0-
|
2
|
+
* @license Angular v17.0.0-rc.0
|
3
3
|
* (c) 2010-2022 Google LLC. https://angular.io/
|
4
4
|
* License: MIT
|
5
5
|
*/
|
@@ -12,6 +12,7 @@ import { DebugElement } from '@angular/core';
|
|
12
12
|
import { DebugNode } from '@angular/core';
|
13
13
|
import { EnvironmentProviders } from '@angular/core';
|
14
14
|
import { GetTestability } from '@angular/core';
|
15
|
+
import { HttpTransferCacheOptions } from '@angular/common/http';
|
15
16
|
import * as i0 from '@angular/core';
|
16
17
|
import * as i1 from '@angular/common';
|
17
18
|
import { InjectionToken } from '@angular/core';
|
@@ -474,7 +475,6 @@ export declare class HammerModule {
|
|
474
475
|
* Helper type to represent a Hydration feature.
|
475
476
|
*
|
476
477
|
* @publicApi
|
477
|
-
* @developerPreview
|
478
478
|
*/
|
479
479
|
export declare interface HydrationFeature<FeatureKind extends HydrationFeatureKind> {
|
480
480
|
ɵkind: FeatureKind;
|
@@ -486,11 +486,10 @@ export declare interface HydrationFeature<FeatureKind extends HydrationFeatureKi
|
|
486
486
|
* @see {@link HydrationFeature}
|
487
487
|
*
|
488
488
|
* @publicApi
|
489
|
-
* @developerPreview
|
490
489
|
*/
|
491
490
|
export declare const enum HydrationFeatureKind {
|
492
|
-
|
493
|
-
|
491
|
+
NoHttpTransferCache = 0,
|
492
|
+
HttpTransferCacheOptions = 1
|
494
493
|
}
|
495
494
|
|
496
495
|
/**
|
@@ -635,19 +634,16 @@ export declare const platformBrowser: (extraProviders?: StaticProvider[]) => Pla
|
|
635
634
|
* Sets up providers necessary to enable hydration functionality for the application.
|
636
635
|
*
|
637
636
|
* By default, the function enables the recommended set of features for the optimal
|
638
|
-
* performance for most of the applications.
|
639
|
-
* passing special functions (from the `HydrationFeatures` set) as arguments to the
|
640
|
-
* `provideClientHydration` function. It includes the following features:
|
637
|
+
* performance for most of the applications. It includes the following features:
|
641
638
|
*
|
642
639
|
* * Reconciling DOM hydration. Learn more about it [here](guide/hydration).
|
643
640
|
* * [`HttpClient`](api/common/http/HttpClient) response caching while running on the server and
|
644
641
|
* transferring this cache to the client to avoid extra HTTP requests. Learn more about data caching
|
645
642
|
* [here](/guide/universal#caching-data-when-using-httpclient).
|
646
643
|
*
|
647
|
-
* These functions
|
648
|
-
* * {@link withNoDomReuse} to disable DOM nodes reuse during hydration
|
644
|
+
* These functions allow you to disable some of the default features or configure features
|
649
645
|
* * {@link withNoHttpTransferCache} to disable HTTP transfer cache
|
650
|
-
*
|
646
|
+
* * {@link withHttpTransferCacheOptions} to configure some HTTP transfer cache options
|
651
647
|
*
|
652
648
|
* @usageNotes
|
653
649
|
*
|
@@ -670,14 +666,13 @@ export declare const platformBrowser: (extraProviders?: StaticProvider[]) => Pla
|
|
670
666
|
* export class AppModule {}
|
671
667
|
* ```
|
672
668
|
*
|
673
|
-
* @see {@link withNoDomReuse}
|
674
669
|
* @see {@link withNoHttpTransferCache}
|
670
|
+
* @see {@link withHttpTransferCacheOptions}
|
675
671
|
*
|
676
672
|
* @param features Optional features to configure additional router behaviors.
|
677
673
|
* @returns A set of providers to enable hydration.
|
678
674
|
*
|
679
675
|
* @publicApi
|
680
|
-
* @developerPreview
|
681
676
|
*/
|
682
677
|
export declare function provideClientHydration(...features: HydrationFeature<HydrationFeatureKind>[]): EnvironmentProviders;
|
683
678
|
|
@@ -696,7 +691,7 @@ export declare function provideProtractorTestingSupport(): Provider[];
|
|
696
691
|
|
697
692
|
/**
|
698
693
|
* A [DI token](guide/glossary#di-token "DI token definition") that indicates whether styles
|
699
|
-
* of destroyed components should be
|
694
|
+
* of destroyed components should be removed from DOM.
|
700
695
|
*
|
701
696
|
* By default, the value is set to `true`.
|
702
697
|
* @publicApi
|
@@ -825,44 +820,20 @@ export declare const TransferState: {
|
|
825
820
|
export declare const VERSION: Version;
|
826
821
|
|
827
822
|
/**
|
828
|
-
*
|
829
|
-
*
|
830
|
-
*
|
831
|
-
*
|
832
|
-
* option is configured for the Router as `enabledBlocking` by using the
|
833
|
-
* `withEnabledBlockingInitialNavigation` in the `provideRouter` call:
|
834
|
-
*
|
835
|
-
* ```
|
836
|
-
* bootstrapApplication(RootComponent, {
|
837
|
-
* providers: [
|
838
|
-
* provideRouter(
|
839
|
-
* // ... other features ...
|
840
|
-
* withEnabledBlockingInitialNavigation()
|
841
|
-
* ),
|
842
|
-
* provideClientHydration(withNoDomReuse())
|
843
|
-
* ]
|
844
|
-
* });
|
845
|
-
* ```
|
846
|
-
*
|
847
|
-
* This would ensure that the application is rerendered after all async
|
848
|
-
* operations in the Router (such as lazy-loading of components,
|
849
|
-
* waiting for async guards and resolvers) are completed to avoid
|
850
|
-
* clearing the DOM on the client too soon, thus causing content flicker.
|
851
|
-
*
|
852
|
-
* @see {@link provideRouter}
|
853
|
-
* @see {@link withEnabledBlockingInitialNavigation}
|
823
|
+
* The function accepts a an object, which allows to configure cache parameters,
|
824
|
+
* such as which headers should be included (no headers are included by default),
|
825
|
+
* wether POST requests should be cached or a callback function to determine if a
|
826
|
+
* particular request should be cached.
|
854
827
|
*
|
855
828
|
* @publicApi
|
856
|
-
* @developerPreview
|
857
829
|
*/
|
858
|
-
export declare function
|
830
|
+
export declare function withHttpTransferCacheOptions(options: HttpTransferCacheOptions): HydrationFeature<HydrationFeatureKind.HttpTransferCacheOptions>;
|
859
831
|
|
860
832
|
/**
|
861
833
|
* Disables HTTP transfer cache. Effectively causes HTTP requests to be performed twice: once on the
|
862
834
|
* server and other one on the browser.
|
863
835
|
*
|
864
836
|
* @publicApi
|
865
|
-
* @developerPreview
|
866
837
|
*/
|
867
838
|
export declare function withNoHttpTransferCache(): HydrationFeature<HydrationFeatureKind.NoHttpTransferCache>;
|
868
839
|
|
@@ -908,7 +879,7 @@ export declare class ɵDomRendererFactory2 implements RendererFactory2, OnDestro
|
|
908
879
|
private readonly eventManager;
|
909
880
|
private readonly sharedStylesHost;
|
910
881
|
private readonly appId;
|
911
|
-
private
|
882
|
+
private removeStylesOnCompDestroy;
|
912
883
|
private readonly doc;
|
913
884
|
readonly platformId: Object;
|
914
885
|
readonly ngZone: NgZone;
|
@@ -916,7 +887,7 @@ export declare class ɵDomRendererFactory2 implements RendererFactory2, OnDestro
|
|
916
887
|
private readonly rendererByCompId;
|
917
888
|
private readonly defaultRenderer;
|
918
889
|
private readonly platformIsServer;
|
919
|
-
constructor(eventManager: EventManager, sharedStylesHost: ɵSharedStylesHost, appId: string,
|
890
|
+
constructor(eventManager: EventManager, sharedStylesHost: ɵSharedStylesHost, appId: string, removeStylesOnCompDestroy: boolean, doc: Document, platformId: Object, ngZone: NgZone, nonce?: string | null);
|
920
891
|
createRenderer(element: any, type: RendererType2 | null): Renderer2;
|
921
892
|
private getOrCreateRenderer;
|
922
893
|
ngOnDestroy(): void;
|
@@ -1021,6 +992,25 @@ export declare class ɵKeyEventsPlugin extends EventManagerPlugin {
|
|
1021
992
|
static ɵprov: i0.ɵɵInjectableDeclaration<ɵKeyEventsPlugin>;
|
1022
993
|
}
|
1023
994
|
|
995
|
+
|
996
|
+
/**
|
997
|
+
* The list of error codes used in runtime code of the `platform-browser` package.
|
998
|
+
* Reserved error code range: 5000-5500.
|
999
|
+
*/
|
1000
|
+
export declare const enum ɵRuntimeErrorCode {
|
1001
|
+
UNSUPPORTED_ZONEJS_INSTANCE = -5000,
|
1002
|
+
BROWER_MODULE_ALREADY_LOADED = 5100,
|
1003
|
+
NO_PLUGIN_FOR_EVENT = 5101,
|
1004
|
+
UNSUPPORTED_EVENT_TARGET = 5102,
|
1005
|
+
TESTABILITY_NOT_FOUND = 5103,
|
1006
|
+
ROOT_NODE_NOT_FOUND = -5104,
|
1007
|
+
UNEXPECTED_SYNTHETIC_PROPERTY = 5105,
|
1008
|
+
SANITIZATION_UNSAFE_SCRIPT = 5200,
|
1009
|
+
SANITIZATION_UNSAFE_RESOURCE_URL = 5201,
|
1010
|
+
SANITIZATION_UNEXPECTED_CTX = 5202,
|
1011
|
+
ANIMATION_RENDERER_ASYNC_LOADING_FAILURE = 5300
|
1012
|
+
}
|
1013
|
+
|
1024
1014
|
export declare class ɵSharedStylesHost implements OnDestroy {
|
1025
1015
|
private readonly doc;
|
1026
1016
|
private readonly appId;
|
@@ -1032,13 +1022,13 @@ export declare class ɵSharedStylesHost implements OnDestroy {
|
|
1032
1022
|
private readonly platformIsServer;
|
1033
1023
|
constructor(doc: Document, appId: string, nonce?: string | null | undefined, platformId?: object);
|
1034
1024
|
addStyles(styles: string[]): void;
|
1035
|
-
|
1036
|
-
visitStyleElement(style: string, callback: (node: HTMLStyleElement) => void): void;
|
1025
|
+
removeStyles(styles: string[]): void;
|
1037
1026
|
ngOnDestroy(): void;
|
1038
1027
|
addHost(hostNode: Node): void;
|
1039
1028
|
removeHost(hostNode: Node): void;
|
1040
1029
|
private getAllStyles;
|
1041
1030
|
private onStyleAdded;
|
1031
|
+
private onStyleRemoved;
|
1042
1032
|
private collectServerRenderedStyles;
|
1043
1033
|
private changeUsageCount;
|
1044
1034
|
private getStyleElement;
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@angular/platform-browser",
|
3
|
-
"version": "17.0.0-
|
3
|
+
"version": "17.0.0-rc.0",
|
4
4
|
"description": "Angular - library for using Angular in a web browser",
|
5
5
|
"author": "angular",
|
6
6
|
"license": "MIT",
|
@@ -11,9 +11,9 @@
|
|
11
11
|
"tslib": "^2.3.0"
|
12
12
|
},
|
13
13
|
"peerDependencies": {
|
14
|
-
"@angular/animations": "17.0.0-
|
15
|
-
"@angular/core": "17.0.0-
|
16
|
-
"@angular/common": "17.0.0-
|
14
|
+
"@angular/animations": "17.0.0-rc.0",
|
15
|
+
"@angular/core": "17.0.0-rc.0",
|
16
|
+
"@angular/common": "17.0.0-rc.0"
|
17
17
|
},
|
18
18
|
"peerDependenciesMeta": {
|
19
19
|
"@angular/animations": {
|
package/testing/index.d.ts
CHANGED
@@ -1,106 +0,0 @@
|
|
1
|
-
/**
|
2
|
-
* @license
|
3
|
-
* Copyright Google LLC All Rights Reserved.
|
4
|
-
*
|
5
|
-
* Use of this source code is governed by an MIT-style license that can be
|
6
|
-
* found in the LICENSE file at https://angular.io/license
|
7
|
-
*/
|
8
|
-
import { AnimationBuilder, AnimationFactory, sequence } from '@angular/animations';
|
9
|
-
import { DOCUMENT } from '@angular/common';
|
10
|
-
import { Inject, Injectable, RendererFactory2, ViewEncapsulation } from '@angular/core';
|
11
|
-
import * as i0 from "@angular/core";
|
12
|
-
export class BrowserAnimationBuilder extends AnimationBuilder {
|
13
|
-
constructor(rootRenderer, doc) {
|
14
|
-
super();
|
15
|
-
this._nextAnimationId = 0;
|
16
|
-
const typeData = { id: '0', encapsulation: ViewEncapsulation.None, styles: [], data: { animation: [] } };
|
17
|
-
this._renderer = rootRenderer.createRenderer(doc.body, typeData);
|
18
|
-
}
|
19
|
-
build(animation) {
|
20
|
-
const id = this._nextAnimationId.toString();
|
21
|
-
this._nextAnimationId++;
|
22
|
-
const entry = Array.isArray(animation) ? sequence(animation) : animation;
|
23
|
-
issueAnimationCommand(this._renderer, null, id, 'register', [entry]);
|
24
|
-
return new BrowserAnimationFactory(id, this._renderer);
|
25
|
-
}
|
26
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.7", ngImport: i0, type: BrowserAnimationBuilder, deps: [{ token: i0.RendererFactory2 }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
27
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.7", ngImport: i0, type: BrowserAnimationBuilder }); }
|
28
|
-
}
|
29
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.7", ngImport: i0, type: BrowserAnimationBuilder, decorators: [{
|
30
|
-
type: Injectable
|
31
|
-
}], ctorParameters: () => [{ type: i0.RendererFactory2 }, { type: Document, decorators: [{
|
32
|
-
type: Inject,
|
33
|
-
args: [DOCUMENT]
|
34
|
-
}] }] });
|
35
|
-
class BrowserAnimationFactory extends AnimationFactory {
|
36
|
-
constructor(_id, _renderer) {
|
37
|
-
super();
|
38
|
-
this._id = _id;
|
39
|
-
this._renderer = _renderer;
|
40
|
-
}
|
41
|
-
create(element, options) {
|
42
|
-
return new RendererAnimationPlayer(this._id, element, options || {}, this._renderer);
|
43
|
-
}
|
44
|
-
}
|
45
|
-
export class RendererAnimationPlayer {
|
46
|
-
constructor(id, element, options, _renderer) {
|
47
|
-
this.id = id;
|
48
|
-
this.element = element;
|
49
|
-
this._renderer = _renderer;
|
50
|
-
this.parentPlayer = null;
|
51
|
-
this._started = false;
|
52
|
-
this.totalTime = 0;
|
53
|
-
this._command('create', options);
|
54
|
-
}
|
55
|
-
_listen(eventName, callback) {
|
56
|
-
return this._renderer.listen(this.element, `@@${this.id}:${eventName}`, callback);
|
57
|
-
}
|
58
|
-
_command(command, ...args) {
|
59
|
-
return issueAnimationCommand(this._renderer, this.element, this.id, command, args);
|
60
|
-
}
|
61
|
-
onDone(fn) {
|
62
|
-
this._listen('done', fn);
|
63
|
-
}
|
64
|
-
onStart(fn) {
|
65
|
-
this._listen('start', fn);
|
66
|
-
}
|
67
|
-
onDestroy(fn) {
|
68
|
-
this._listen('destroy', fn);
|
69
|
-
}
|
70
|
-
init() {
|
71
|
-
this._command('init');
|
72
|
-
}
|
73
|
-
hasStarted() {
|
74
|
-
return this._started;
|
75
|
-
}
|
76
|
-
play() {
|
77
|
-
this._command('play');
|
78
|
-
this._started = true;
|
79
|
-
}
|
80
|
-
pause() {
|
81
|
-
this._command('pause');
|
82
|
-
}
|
83
|
-
restart() {
|
84
|
-
this._command('restart');
|
85
|
-
}
|
86
|
-
finish() {
|
87
|
-
this._command('finish');
|
88
|
-
}
|
89
|
-
destroy() {
|
90
|
-
this._command('destroy');
|
91
|
-
}
|
92
|
-
reset() {
|
93
|
-
this._command('reset');
|
94
|
-
this._started = false;
|
95
|
-
}
|
96
|
-
setPosition(p) {
|
97
|
-
this._command('setPosition', p);
|
98
|
-
}
|
99
|
-
getPosition() {
|
100
|
-
return this._renderer.engine.players[+this.id]?.getPosition() ?? 0;
|
101
|
-
}
|
102
|
-
}
|
103
|
-
function issueAnimationCommand(renderer, element, id, command, args) {
|
104
|
-
return renderer.setProperty(element, `@@${id}:${command}`, args);
|
105
|
-
}
|
106
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5pbWF0aW9uX2J1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wbGF0Zm9ybS1icm93c2VyL2FuaW1hdGlvbnMvc3JjL2FuaW1hdGlvbl9idWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUNILE9BQU8sRUFBQyxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBd0QsUUFBUSxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFFdkksT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLGdCQUFnQixFQUFpQixpQkFBaUIsRUFBQyxNQUFNLGVBQWUsQ0FBQzs7QUFHckcsTUFBTSxPQUFPLHVCQUF3QixTQUFRLGdCQUFnQjtJQUkzRCxZQUFZLFlBQThCLEVBQW9CLEdBQWE7UUFDekUsS0FBSyxFQUFFLENBQUM7UUFKRixxQkFBZ0IsR0FBRyxDQUFDLENBQUM7UUFLM0IsTUFBTSxRQUFRLEdBQ1YsRUFBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBQyxTQUFTLEVBQUUsRUFBRSxFQUFDLEVBQ3JFLENBQUM7UUFDbEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxZQUFZLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFzQixDQUFDO0lBQ3hGLENBQUM7SUFFUSxLQUFLLENBQUMsU0FBZ0Q7UUFDN0QsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzVDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3hCLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FB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LElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVELE9BQU87UUFDTCxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN2QixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUN4QixDQUFDO0lBRUQsV0FBVyxDQUFDLENBQVM7UUFDbkIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVELFdBQVc7UUFDVCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxXQUFXLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDckUsQ0FBQztDQUdGO0FBRUQsU0FBUyxxQkFBcUIsQ0FDMUIsUUFBMkIsRUFBRSxPQUFZLEVBQUUsRUFBVSxFQUFFLE9BQWUsRUFBRSxJQUFXO0lBQ3JGLE9BQU8sUUFBUSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksT0FBTyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDbkUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuaW1wb3J0IHtBbmltYXRpb25CdWlsZGVyLCBBbmltYXRpb25GYWN0b3J5LCBBbmltYXRpb25NZXRhZGF0YSwgQW5pbWF0aW9uT3B0aW9ucywgQW5pbWF0aW9uUGxheWVyLCBzZXF1ZW5jZX0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQgdHlwZSB7ybVBbmltYXRpb25SZW5kZXJlciBhcyBBbmltYXRpb25SZW5kZXJlcn0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucy9icm93c2VyJztcbmltcG9ydCB7RE9DVU1FTlR9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge0luamVjdCwgSW5qZWN0YWJsZSwgUmVuZGVyZXJGYWN0b3J5MiwgUmVuZGVyZXJUeXBlMiwgVmlld0VuY2Fwc3VsYXRpb259IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQnJvd3NlckFuaW1hdGlvbkJ1aWxkZXIgZXh0ZW5kcyBBbmltYXRpb25CdWlsZGVyIHtcbiAgcHJpdmF0ZSBfbmV4dEFuaW1hdGlvbklkID0gMDtcbiAgcHJpdmF0ZSBfcmVuZGVyZXI6IEFuaW1hdGlvblJlbmRlcmVyO1xuXG4gIGNvbnN0cnVjdG9yKHJvb3RSZW5kZXJlcjogUmVuZGVyZXJGYWN0b3J5MiwgQEluamVjdChET0NVTUVOVCkgZG9jOiBEb2N1bWVudCkge1xuICAgIHN1cGVyKCk7XG4gICAgY29uc3QgdHlwZURhdGEgPVxuICAgICAgICB7aWQ6ICcwJywgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSwgc3R5bGVzOiBbXSwgZGF0YToge2FuaW1hdGlvbjogW119fSBhc1xuICAgICAgICBSZW5kZXJlclR5cGUyO1xuICAgIHRoaXMuX3JlbmRlcmVyID0gcm9vdFJlbmRlcmVyLmNyZWF0ZVJlbmRlcmVyKGRvYy5ib2R5LCB0eXBlRGF0YSkgYXMgQW5pbWF0aW9uUmVuZGVyZXI7XG4gIH1cblxuICBvdmVycmlkZSBidWlsZChhbmltYXRpb246IEFuaW1hdGlvbk1ldGFkYXRhfEFuaW1hdGlvbk1ldGFkYXRhW10pOiBBbmltYXRpb25GYWN0b3J5IHtcbiAgICBjb25zdCBpZCA9IHRoaXMuX25leHRBbmltYXRpb25JZC50b1N0cmluZygpO1xuICAgIHRoaXMuX25leHRBbmltYXRpb25JZCsrO1xuICAgIGNvbnN0IGVudHJ5ID0gQXJyYXkuaXNBcnJheShhbmltYXRpb24pID8gc2VxdWVuY2UoYW5pbWF0aW9uKSA6IGFuaW1hdGlvbjtcbiAgICBpc3N1ZUFuaW1hdGlvbkNvbW1hbmQodGhpcy5fcmVuZGVyZXIsIG51bGwsIGlkLCAncmVnaXN0ZXInLCBbZW50cnldKTtcbiAgICByZXR1cm4gbmV3IEJyb3dzZXJBbmltYXRpb25GYWN0b3J5KGlkLCB0aGlzLl9yZW5kZXJlcik7XG4gIH1cbn1cblxuY2xhc3MgQnJvd3NlckFuaW1hdGlvbkZhY3RvcnkgZXh0ZW5kcyBBbmltYXRpb25GYWN0b3J5IHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfaWQ6IHN0cmluZywgcHJpdmF0ZSBfcmVuZGVyZXI6IEFuaW1hdGlvblJlbmRlcmVyKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIG92ZXJyaWRlIGNyZWF0ZShlbGVtZW50OiBhbnksIG9wdGlvbnM/OiBBbmltYXRpb25PcHRpb25zKTogQW5pbWF0aW9uUGxheWVyIHtcbiAgICByZXR1cm4gbmV3IFJlbmRlcmVyQW5pbWF0aW9uUGxheWVyKHRoaXMuX2lkLCBlbGVtZW50LCBvcHRpb25zIHx8IHt9LCB0aGlzLl9yZW5kZXJlcik7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJlbmRlcmVyQW5pbWF0aW9uUGxheWVyIGltcGxlbWVudHMgQW5pbWF0aW9uUGxheWVyIHtcbiAgcHVibGljIHBhcmVudFBsYXllcjogQW5pbWF0aW9uUGxheWVyfG51bGwgPSBudWxsO1xuICBwcml2YXRlIF9zdGFydGVkID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgICBwdWJsaWMgaWQ6IHN0cmluZywgcHVibGljIGVsZW1lbnQ6IGFueSwgb3B0aW9uczogQW5pbWF0aW9uT3B0aW9ucyxcbiAgICAgIHByaXZhdGUgX3JlbmRlcmVyOiBBbmltYXRpb25SZW5kZXJlcikge1xuICAgIHRoaXMuX2NvbW1hbmQoJ2NyZWF0ZScsIG9wdGlvbnMpO1xuICB9XG5cbiAgcHJpdmF0ZSBfbGlzdGVuKGV2ZW50TmFtZTogc3RyaW5nLCBjYWxsYmFjazogKGV2ZW50OiBhbnkpID0+IGFueSk6ICgpID0+IHZvaWQge1xuICAgIHJldHVybiB0aGlzLl9yZW5kZXJlci5saXN0ZW4odGhpcy5lbGVtZW50LCBgQEAke3RoaXMuaWR9OiR7ZXZlbnROYW1lfWAsIGNhbGxiYWNrKTtcbiAgfVxuXG4gIHByaXZhdGUgX2NvbW1hbmQoY29tbWFuZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiBpc3N1ZUFuaW1hdGlvbkNvbW1hbmQodGhpcy5fcmVuZGVyZXIsIHRoaXMuZWxlbWVudCwgdGhpcy5pZCwgY29tbWFuZCwgYXJncyk7XG4gIH1cblxuICBvbkRvbmUoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLl9saXN0ZW4oJ2RvbmUnLCBmbik7XG4gIH1cblxuICBvblN0YXJ0KGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5fbGlzdGVuKCdzdGFydCcsIGZuKTtcbiAgfVxuXG4gIG9uRGVzdHJveShmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMuX2xpc3RlbignZGVzdHJveScsIGZuKTtcbiAgfVxuXG4gIGluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5fY29tbWFuZCgnaW5pdCcpO1xuICB9XG5cbiAgaGFzU3RhcnRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fc3RhcnRlZDtcbiAgfVxuXG4gIHBsYXkoKTogdm9pZCB7XG4gICAgdGhpcy5fY29tbWFuZCgncGxheScpO1xuICAgIHRoaXMuX3N0YXJ0ZWQgPSB0cnVlO1xuICB9XG5cbiAgcGF1c2UoKTogdm9pZCB7XG4gICAgdGhpcy5fY29tbWFuZCgncGF1c2UnKTtcbiAgfVxuXG4gIHJlc3RhcnQoKTogdm9pZCB7XG4gICAgdGhpcy5fY29tbWFuZCgncmVzdGFydCcpO1xuICB9XG5cbiAgZmluaXNoKCk6IHZvaWQge1xuICAgIHRoaXMuX2NvbW1hbmQoJ2ZpbmlzaCcpO1xuICB9XG5cbiAgZGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9jb21tYW5kKCdkZXN0cm95Jyk7XG4gIH1cblxuICByZXNldCgpOiB2b2lkIHtcbiAgICB0aGlzLl9jb21tYW5kKCdyZXNldCcpO1xuICAgIHRoaXMuX3N0YXJ0ZWQgPSBmYWxzZTtcbiAgfVxuXG4gIHNldFBvc2l0aW9uKHA6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuX2NvbW1hbmQoJ3NldFBvc2l0aW9uJywgcCk7XG4gIH1cblxuICBnZXRQb3NpdGlvbigpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9yZW5kZXJlci5lbmdpbmUucGxheWVyc1srdGhpcy5pZF0/LmdldFBvc2l0aW9uKCkgPz8gMDtcbiAgfVxuXG4gIHB1YmxpYyB0b3RhbFRpbWUgPSAwO1xufVxuXG5mdW5jdGlvbiBpc3N1ZUFuaW1hdGlvbkNvbW1hbmQoXG4gICAgcmVuZGVyZXI6IEFuaW1hdGlvblJlbmRlcmVyLCBlbGVtZW50OiBhbnksIGlkOiBzdHJpbmcsIGNvbW1hbmQ6IHN0cmluZywgYXJnczogYW55W10pOiBhbnkge1xuICByZXR1cm4gcmVuZGVyZXIuc2V0UHJvcGVydHkoZWxlbWVudCwgYEBAJHtpZH06JHtjb21tYW5kfWAsIGFyZ3MpO1xufVxuIl19
|