angular-three-rapier 2.7.0 → 2.8.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/esm2022/lib/colliders.mjs +46 -46
- package/esm2022/lib/debug.mjs +4 -4
- package/esm2022/lib/frame-stepper.mjs +4 -4
- package/esm2022/lib/instanced-rigid-bodies.mjs +4 -4
- package/esm2022/lib/mesh-collider.mjs +4 -4
- package/esm2022/lib/physics.mjs +7 -7
- package/esm2022/lib/rigid-body.mjs +7 -7
- package/fesm2022/angular-three-rapier.mjs +69 -69
- package/fesm2022/angular-three-rapier.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -26,8 +26,8 @@ export class NgtrMeshCollider {
|
|
|
26
26
|
this.objectRef.nativeElement.userData ??= {};
|
|
27
27
|
this.objectRef.nativeElement.userData['ngtrRapierType'] = 'MeshCollider';
|
|
28
28
|
}
|
|
29
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
30
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.
|
|
29
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: NgtrMeshCollider, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
30
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.11", type: NgtrMeshCollider, isStandalone: true, selector: "ngt-object3D[ngtrMeshCollider]", inputs: { colliders: { classPropertyName: "colliders", publicName: "ngtrMeshCollider", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: `
|
|
31
31
|
<ng-content />
|
|
32
32
|
@for (childColliderOption of childColliderOptions(); track $index) {
|
|
33
33
|
<ngt-object3D
|
|
@@ -42,7 +42,7 @@ export class NgtrMeshCollider {
|
|
|
42
42
|
}
|
|
43
43
|
`, isInline: true, dependencies: [{ kind: "directive", type: NgtrAnyCollider, selector: "ngt-object3D[ngtrCollider]", inputs: ["position", "rotation", "scale", "quaternion", "userData", "name", "options", "ngtrCollider", "args"], outputs: ["ngtrColliderChange", "argsChange", "collisionEnter", "collisionExit", "intersectionEnter", "intersectionExit", "contactForce"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
44
44
|
}
|
|
45
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
45
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: NgtrMeshCollider, decorators: [{
|
|
46
46
|
type: Component,
|
|
47
47
|
args: [{
|
|
48
48
|
selector: 'ngt-object3D[ngtrMeshCollider]',
|
|
@@ -66,4 +66,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
|
|
|
66
66
|
imports: [NgtrAnyCollider],
|
|
67
67
|
}]
|
|
68
68
|
}], ctorParameters: () => [] });
|
|
69
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
69
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzaC1jb2xsaWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvcmFwaWVyL3NyYy9saWIvbWVzaC1jb2xsaWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ04sdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1Isc0JBQXNCLEVBQ3RCLFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxHQUNMLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxNQUFNLEVBQUUsYUFBYSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDakMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN4QyxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUU5RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxTQUFTLENBQUM7O0FBdUJoRCxNQUFNLE9BQU8sZ0JBQWdCO0lBQzVCLFNBQVMsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUE0QixFQUFFLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxDQUFDLENBQUM7SUFFckYsU0FBUyxHQUFHLE1BQU0sQ0FBdUIsVUFBVSxDQUFDLENBQUM7SUFDckQsU0FBUyxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUNsQyxPQUFPLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBRXBCLG9CQUFvQixHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7UUFDOUMsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2xELGdCQUFnQixDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFFOUMsTUFBTSxnQkFBZ0IsR0FBRyxhQUFhLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNyRSxJQUFJLENBQUMsZ0JBQWdCO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFFakMsMEJBQTBCO1FBQzFCLGdCQUFnQixDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQzlCLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxDQUFDO1FBRTNCLE9BQU8scUJBQXFCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDckYsQ0FBQyxDQUFDLENBQUM7SUFFSDtRQUNDLE1BQU0sQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDckIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsUUFBUSxLQUFLLEVBQUUsQ0FBQztRQUM3QyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxjQUFjLENBQUM7SUFDMUUsQ0FBQzt3R0F6QlcsZ0JBQWdCOzRGQUFoQixnQkFBZ0IsZ1BBbEJsQjs7Ozs7Ozs7Ozs7OztFQWFULDREQUdTLGVBQWU7OzRGQUViLGdCQUFnQjtrQkFyQjVCLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLGdDQUFnQztvQkFDMUMsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7OztFQWFUO29CQUNELE9BQU8sRUFBRSxDQUFDLHNCQUFzQixDQUFDO29CQUNqQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsT0FBTyxFQUFFLENBQUMsZUFBZSxDQUFDO2lCQUMxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG5cdENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuXHRDb21wb25lbnQsXG5cdGNvbXB1dGVkLFxuXHRDVVNUT01fRUxFTUVOVFNfU0NIRU1BLFxuXHRFbGVtZW50UmVmLFxuXHRpbmplY3QsXG5cdGlucHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGV4dGVuZCwgZ2V0TG9jYWxTdGF0ZSB9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0IHsgT2JqZWN0M0QgfSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBOZ3RyUGh5c2ljcyB9IGZyb20gJy4vcGh5c2ljcyc7XG5pbXBvcnQgeyBOZ3RyQW55Q29sbGlkZXIsIE5ndHJSaWdpZEJvZHkgfSBmcm9tICcuL3JpZ2lkLWJvZHknO1xuaW1wb3J0IHsgTmd0clJpZ2lkQm9keUF1dG9Db2xsaWRlciB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgY3JlYXRlQ29sbGlkZXJPcHRpb25zIH0gZnJvbSAnLi91dGlscyc7XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ25ndC1vYmplY3QzRFtuZ3RyTWVzaENvbGxpZGVyXScsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdHRlbXBsYXRlOiBgXG5cdFx0PG5nLWNvbnRlbnQgLz5cblx0XHRAZm9yIChjaGlsZENvbGxpZGVyT3B0aW9uIG9mIGNoaWxkQ29sbGlkZXJPcHRpb25zKCk7IHRyYWNrICRpbmRleCkge1xuXHRcdFx0PG5ndC1vYmplY3QzRFxuXHRcdFx0XHRbbmd0ckNvbGxpZGVyXT1cImNoaWxkQ29sbGlkZXJPcHRpb24uc2hhcGVcIlxuXHRcdFx0XHRbYXJnc109XCJjaGlsZENvbGxpZGVyT3B0aW9uLmFyZ3NcIlxuXHRcdFx0XHRbcG9zaXRpb25dPVwiY2hpbGRDb2xsaWRlck9wdGlvbi5wb3NpdGlvblwiXG5cdFx0XHRcdFtyb3RhdGlvbl09XCJjaGlsZENvbGxpZGVyT3B0aW9uLnJvdGF0aW9uXCJcblx0XHRcdFx0W3NjYWxlXT1cImNoaWxkQ29sbGlkZXJPcHRpb24uc2NhbGVcIlxuXHRcdFx0XHRbbmFtZV09XCJvYmplY3RSZWYubmF0aXZlRWxlbWVudC5uYW1lICsgJy1tZXNoLWNvbGxpZGVyLScgKyAkaW5kZXhcIlxuXHRcdFx0XHRbb3B0aW9uc109XCJjaGlsZENvbGxpZGVyT3B0aW9uLmNvbGxpZGVyT3B0aW9uc1wiXG5cdFx0XHQvPlxuXHRcdH1cblx0YCxcblx0c2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxuXHRjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcblx0aW1wb3J0czogW05ndHJBbnlDb2xsaWRlcl0sXG59KVxuZXhwb3J0IGNsYXNzIE5ndHJNZXNoQ29sbGlkZXIge1xuXHRjb2xsaWRlcnMgPSBpbnB1dC5yZXF1aXJlZDxOZ3RyUmlnaWRCb2R5QXV0b0NvbGxpZGVyPih7IGFsaWFzOiAnbmd0ck1lc2hDb2xsaWRlcicgfSk7XG5cblx0b2JqZWN0UmVmID0gaW5qZWN0PEVsZW1lbnRSZWY8T2JqZWN0M0Q+PihFbGVtZW50UmVmKTtcblx0cmlnaWRCb2R5ID0gaW5qZWN0KE5ndHJSaWdpZEJvZHkpO1xuXHRwaHlzaWNzID0gaW5qZWN0KE5ndHJQaHlzaWNzKTtcblxuXHRwcm90ZWN0ZWQgY2hpbGRDb2xsaWRlck9wdGlvbnMgPSBjb21wdXRlZCgoKSA9PiB7XG5cdFx0Y29uc3QgcmlnaWRCb2R5T3B0aW9ucyA9IHRoaXMucmlnaWRCb2R5Lm9wdGlvbnMoKTtcblx0XHRyaWdpZEJvZHlPcHRpb25zLmNvbGxpZGVycyA9IHRoaXMuY29sbGlkZXJzKCk7XG5cblx0XHRjb25zdCBvYmplY3RMb2NhbFN0YXRlID0gZ2V0TG9jYWxTdGF0ZSh0aGlzLm9iamVjdFJlZi5uYXRpdmVFbGVtZW50KTtcblx0XHRpZiAoIW9iamVjdExvY2FsU3RhdGUpIHJldHVybiBbXTtcblxuXHRcdC8vIHRyYWNrIG9iamVjdCdzIGNoaWxkcmVuXG5cdFx0b2JqZWN0TG9jYWxTdGF0ZS5ub25PYmplY3RzKCk7XG5cdFx0b2JqZWN0TG9jYWxTdGF0ZS5vYmplY3RzKCk7XG5cblx0XHRyZXR1cm4gY3JlYXRlQ29sbGlkZXJPcHRpb25zKHRoaXMub2JqZWN0UmVmLm5hdGl2ZUVsZW1lbnQsIHJpZ2lkQm9keU9wdGlvbnMsIGZhbHNlKTtcblx0fSk7XG5cblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0ZXh0ZW5kKHsgT2JqZWN0M0QgfSk7XG5cdFx0dGhpcy5vYmplY3RSZWYubmF0aXZlRWxlbWVudC51c2VyRGF0YSA/Pz0ge307XG5cdFx0dGhpcy5vYmplY3RSZWYubmF0aXZlRWxlbWVudC51c2VyRGF0YVsnbmd0clJhcGllclR5cGUnXSA9ICdNZXNoQ29sbGlkZXInO1xuXHR9XG59XG4iXX0=
|
package/esm2022/lib/physics.mjs
CHANGED
|
@@ -32,10 +32,10 @@ export class NgtrPhysicsFallback {
|
|
|
32
32
|
static ngTemplateContextGuard(_, ctx) {
|
|
33
33
|
return true;
|
|
34
34
|
}
|
|
35
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
36
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.
|
|
35
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: NgtrPhysicsFallback, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
36
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.11", type: NgtrPhysicsFallback, isStandalone: true, selector: "ng-template[rapierFallback]", ngImport: i0 });
|
|
37
37
|
}
|
|
38
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
38
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: NgtrPhysicsFallback, decorators: [{
|
|
39
39
|
type: Directive,
|
|
40
40
|
args: [{ selector: 'ng-template[rapierFallback]', standalone: true }]
|
|
41
41
|
}] });
|
|
@@ -336,8 +336,8 @@ export class NgtrPhysics {
|
|
|
336
336
|
},
|
|
337
337
|
};
|
|
338
338
|
}
|
|
339
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
340
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.
|
|
339
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: NgtrPhysics, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
340
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.11", type: NgtrPhysics, isStandalone: true, selector: "ngtr-physics", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "content", first: true, predicate: TemplateRef, descendants: true, isSignal: true }, { propertyName: "fallbackContent", first: true, predicate: NgtrPhysicsFallback, descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
341
341
|
@if (rapierConstruct()) {
|
|
342
342
|
@if (debug()) {
|
|
343
343
|
<ngtr-debug [world]="worldSingleton()?.proxy" />
|
|
@@ -356,7 +356,7 @@ export class NgtrPhysics {
|
|
|
356
356
|
}
|
|
357
357
|
`, isInline: true, dependencies: [{ kind: "component", type: NgtrDebug, selector: "ngtr-debug", inputs: ["world"] }, { kind: "directive", type: NgtrFrameStepper, selector: "ngtr-frame-stepper", inputs: ["ready", "updatePriority", "stepFn", "type"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
358
358
|
}
|
|
359
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
359
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: NgtrPhysics, decorators: [{
|
|
360
360
|
type: Component,
|
|
361
361
|
args: [{
|
|
362
362
|
selector: 'ngtr-physics',
|
|
@@ -383,4 +383,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
|
|
|
383
383
|
imports: [NgtrDebug, NgtrFrameStepper, NgTemplateOutlet],
|
|
384
384
|
}]
|
|
385
385
|
}], ctorParameters: () => [] });
|
|
386
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGh5c2ljcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvcmFwaWVyL3NyYy9saWIvcGh5c2ljcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBQ04sdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1IsWUFBWSxFQUNaLFVBQVUsRUFDVixTQUFTLEVBQ1QsTUFBTSxFQUNOLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLFdBQVcsRUFDWCxTQUFTLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBZSxFQUFrQixVQUFVLEVBQTJCLE1BQU0sMkJBQTJCLENBQUM7QUFDeEcsT0FBTyxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsU0FBUyxFQUF1QixNQUFNLE9BQU8sQ0FBQztBQUN2RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFVbEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLDRCQUE0QixFQUFFLE1BQU0sU0FBUyxDQUFDOztBQUU3RSxNQUFNLGNBQWMsR0FBdUI7SUFDMUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUN0QixrQkFBa0IsRUFBRSxLQUFLO0lBQ3pCLG1CQUFtQixFQUFFLENBQUM7SUFDdEIsK0JBQStCLEVBQUUsQ0FBQztJQUNsQyx3QkFBd0IsRUFBRSxD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UUFBUSxDQUFDLE1BQU07Z0JBQ2hDLGNBQWMsRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxNQUFNO2dCQUM3QyxlQUFlLEVBQUUsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsTUFBTTthQUMvQztZQUNELEtBQUssRUFBRTtnQkFDTixTQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNO2dCQUNqQyxRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNO2dCQUMvQixjQUFjLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsTUFBTTtnQkFDNUMsZUFBZSxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLE1BQU07YUFDOUM7U0FDRCxDQUFDO0lBQ0gsQ0FBQzt1R0ExVlcsV0FBVzsyRkFBWCxXQUFXLHVQQUdTLFdBQVcsa0dBQ1osbUJBQW1CLGdFQXpCeEM7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBaUJULDREQUVTLFNBQVMsMEVBQUUsZ0JBQWdCLHNIQUFFLGdCQUFnQjs7MkZBRTNDLFdBQVc7a0JBeEJ2QixTQUFTO21CQUFDO29CQUNWLFFBQVEsRUFBRSxjQUFjO29CQUN4QixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7OztFQWlCVDtvQkFDRCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsT0FBTyxFQUFFLENBQUMsU0FBUyxFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixDQUFDO2lCQUN4RCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcblx0Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG5cdENvbXBvbmVudCxcblx0Y29tcHV0ZWQsXG5cdGNvbnRlbnRDaGlsZCxcblx0RGVzdHJveVJlZixcblx0RGlyZWN0aXZlLFxuXHRlZmZlY3QsXG5cdGluamVjdCxcblx0aW5wdXQsXG5cdHNpZ25hbCxcblx0VGVtcGxhdGVSZWYsXG5cdHVudHJhY2tlZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgUkFQSUVSLCB7IENvbGxpZGVySGFuZGxlLCBFdmVudFF1ZXVlLCBSb3RhdGlvbiwgVmVjdG9yLCBXb3JsZCB9IGZyb20gJ0BkaW1mb3JnZS9yYXBpZXIzZC1jb21wYXQnO1xuaW1wb3J0IHsgaW5qZWN0U3RvcmUsIHBpY2ssIHZlY3RvcjMgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IG1lcmdlSW5wdXRzIH0gZnJvbSAnbmd4dGVuc2lvbi9pbmplY3QtaW5wdXRzJztcbmltcG9ydCB7IE1hdGhVdGlscywgUXVhdGVybmlvbiwgVmVjdG9yMyB9IGZyb20gJ3RocmVlJztcbmltcG9ydCB7IE5ndHJEZWJ1ZyB9IGZyb20gJy4vZGVidWcnO1xuaW1wb3J0IHsgTmd0ckZyYW1lU3RlcHBlciB9IGZyb20gJy4vZnJhbWUtc3RlcHBlcic7XG5pbXBvcnQgeyBfbWF0cml4NCwgX3Bvc2l0aW9uLCBfcm90YXRpb24sIF9zY2FsZSB9IGZyb20gJy4vc2hhcmVkJztcbmltcG9ydCB7XG5cdE5ndHJDb2xsaWRlclN0YXRlTWFwLFxuXHROZ3RyQ29sbGlzaW9uUGF5bG9hZCxcblx0Tmd0ckNvbGxpc2lvblNvdXJjZSxcblx0Tmd0ckV2ZW50TWFwLFxuXHROZ3RyUGh5c2ljc09wdGlvbnMsXG5cdE5ndHJSaWdpZEJvZHlTdGF0ZU1hcCxcblx0Tmd0cldvcmxkU3RlcENhbGxiYWNrU2V0LFxufSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IGNyZWF0ZVNpbmdsZXRvblByb3h5LCByYXBpZXJRdWF0ZXJuaW9uVG9RdWF0ZXJuaW9uIH0gZnJvbSAnLi91dGlscyc7XG5cbmNvbnN0IGRlZmF1bHRPcHRpb25zOiBOZ3RyUGh5c2ljc09wdGlvbnMgPSB7XG5cdGdyYXZpdHk6IFswLCAtOS44MSwgMF0sXG5cdGFsbG93ZWRMaW5lYXJFcnJvcjogMC4wMDEsXG5cdG51bVNvbHZlckl0ZXJhdGlvbnM6IDQsXG5cdG51bUFkZGl0aW9uYWxGcmljdGlvbkl0ZXJhdGlvbnM6IDQsXG5cdG51bUludGVybmFsUGdzSXRlcmF0aW9uczogMSxcblx0cHJlZGljdGlvbkRpc3RhbmNlOiAwLjAwMixcblx0bWluSXNsYW5kU2l6ZTogMTI4LFxuXHRtYXhDY2RTdWJzdGVwczogMSxcblx0Y29udGFjdE5hdHVyYWxGcmVxdWVuY3k6IDMwLFxuXHRlcnA6IDAuOCxcblx0bGVuZ3RoVW5pdDogMSxcblx0Y29sbGlkZXJzOiAnY3Vib2lkJyxcblx0dXBkYXRlTG9vcDogJ2ZvbGxvdycsXG5cdGludGVycG9sYXRlOiB0cnVlLFxuXHRwYXVzZWQ6IGZhbHNlLFxuXHR0aW1lU3RlcDogMSAvIDYwLFxuXHRkZWJ1ZzogZmFsc2UsXG59O1xuXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICduZy10ZW1wbGF0ZVtyYXBpZXJGYWxsYmFja10nLCBzdGFuZGFsb25lOiB0cnVlIH0pXG5leHBvcnQgY2xhc3MgTmd0clBoeXNpY3NGYWxsYmFjayB7XG5cdHN0YXRpYyBuZ1RlbXBsYXRlQ29udGV4dEd1YXJkKF86IE5ndHJQaHlzaWNzRmFsbGJhY2ssIGN0eDogdW5rbm93bik6IGN0eCBpcyB7IGVycm9yOiBzdHJpbmcgfSB7XG5cdFx0cmV0dXJuIHRydWU7XG5cdH1cbn1cblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnbmd0ci1waHlzaWNzJyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0dGVtcGxhdGU6IGBcblx0XHRAaWYgKHJhcGllckNvbnN0cnVjdCgpKSB7XG5cdFx0XHRAaWYgKGRlYnVnKCkpIHtcblx0XHRcdFx0PG5ndHItZGVidWcgW3dvcmxkXT1cIndvcmxkU2luZ2xldG9uKCk/LnByb3h5XCIgLz5cblx0XHRcdH1cblxuXHRcdFx0PG5ndHItZnJhbWUtc3RlcHBlclxuXHRcdFx0XHRbcmVhZHldPVwicmVhZHkoKVwiXG5cdFx0XHRcdFtzdGVwRm5dPVwic3RlcC5iaW5kKHRoaXMpXCJcblx0XHRcdFx0W3R5cGVdPVwidXBkYXRlTG9vcCgpXCJcblx0XHRcdFx0W3VwZGF0ZVByaW9yaXR5XT1cInVwZGF0ZVByaW9yaXR5KClcIlxuXHRcdFx0Lz5cblxuXHRcdFx0PG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJjb250ZW50KClcIiAvPlxuXHRcdH0gQGVsc2UgaWYgKHJhcGllckVycm9yKCkgJiYgISFmYWxsYmFja0NvbnRlbnQoKSkge1xuXHRcdFx0PG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCIkYW55KGZhbGxiYWNrQ29udGVudCgpKVwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGVycm9yOiByYXBpZXJFcnJvcigpIH1cIiAvPlxuXHRcdH1cblx0YCxcblx0Y2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG5cdGltcG9ydHM6IFtOZ3RyRGVidWcsIE5ndHJGcmFtZVN0ZXBwZXIsIE5nVGVtcGxhdGVPdXRsZXRdLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3RyUGh5c2ljcyB7XG5cdG9wdGlvbnMgPSBpbnB1dChkZWZhdWx0T3B0aW9ucywgeyB0cmFuc2Zvcm06IG1lcmdlSW5wdXRzKGRlZmF1bHRPcHRpb25zKSB9KTtcblxuXHRjb250ZW50ID0gY29udGVudENoaWxkLnJlcXVpcmVkKFRlbXBsYXRlUmVmKTtcblx0ZmFsbGJhY2tDb250ZW50ID0gY29udGVudENoaWxkKE5ndHJQaHlzaWNzRmFsbGJhY2spO1xuXG5cdHByb3RlY3RlZCB1cGRhdGVQcmlvcml0eSA9IHBpY2sodGhpcy5vcHRpb25zLCAndXBkYXRlUHJpb3JpdHknKTtcblx0cHJvdGVjdGVkIHVwZGF0ZUxvb3AgPSBwaWNrKHRoaXMub3B0aW9ucywgJ3VwZGF0ZUxvb3AnKTtcblxuXHRwcml2YXRlIG51bVNvbHZlckl0ZXJhdGlvbnMgPSBwaWNrKHRoaXMub3B0aW9ucywgJ251bVNvbHZlckl0ZXJhdGlvbnMnKTtcblx0cHJpdmF0ZSBudW1BZGRpdGlvbmFsRnJpY3Rpb25JdGVyYXRpb25zID0gcGljayh0aGlzLm9wdGlvbnMsICdudW1BZGRpdGlvbmFsRnJpY3Rpb25JdGVyYXRpb25zJyk7XG5cdHByaXZhdGUgbnVtSW50ZXJuYWxQZ3NJdGVyYXRpb25zID0gcGljayh0aGlzLm9wdGlvbnMsICdudW1JbnRlcm5hbFBnc0l0ZXJhdGlvbnMnKTtcblx0cHJpdmF0ZSBhbGxvd2VkTGluZWFyRXJyb3IgPSBwaWNrKHRoaXMub3B0aW9ucywgJ2FsbG93ZWRMaW5lYXJFcnJvcicpO1xuXHRwcml2YXRlIG1pbklzbGFuZFNpemUgPSBwaWNrKHRoaXMub3B0aW9ucywgJ21pbklzbGFuZFNpemUnKTtcblx0cHJpdmF0ZSBtYXhDY2RTdWJzdGVwcyA9IHBpY2sodGhpcy5vcHRpb25zLCAnbWF4Q2NkU3Vic3RlcHMnKTtcblx0cHJpdmF0ZSBwcmVkaWN0aW9uRGlzdGFuY2UgPSBwaWNrKHRoaXMub3B0aW9ucywgJ3ByZWRpY3Rpb25EaXN0YW5jZScpO1xuXHRwcml2YXRlIGNvbnRhY3ROYXR1cmFsRnJlcXVlbmN5ID0gcGljayh0aGlzLm9wdGlvbnMsICdjb250YWN0TmF0dXJhbEZyZXF1ZW5jeScpO1xuXHRwcml2YXRlIGxlbmd0aFVuaXQgPSBwaWNrKHRoaXMub3B0aW9ucywgJ2xlbmd0aFVuaXQnKTtcblx0cHJpdmF0ZSB0aW1lU3RlcCA9IHBpY2sodGhpcy5vcHRpb25zLCAndGltZVN0ZXAnKTtcblx0cHJpdmF0ZSBpbnRlcnBvbGF0ZSA9IHBpY2sodGhpcy5vcHRpb25zLCAnaW50ZXJwb2xhdGUnKTtcblxuXHRwYXVzZWQgPSBwaWNrKHRoaXMub3B0aW9ucywgJ3BhdXNlZCcpO1xuXHRkZWJ1ZyA9IHBpY2sodGhpcy5vcHRpb25zLCAnZGVidWcnKTtcblx0Y29sbGlkZXJzID0gcGljayh0aGlzLm9wdGlvbnMsICdjb2xsaWRlcnMnKTtcblxuXHRwcml2YXRlIGdyYXZpdHkgPSB2ZWN0b3IzKHRoaXMub3B0aW9ucywgJ2dyYXZpdHknKTtcblxuXHRwcml2YXRlIHN0b3JlID0gaW5qZWN0U3RvcmUoKTtcblx0cHJpdmF0ZSBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuXG5cdHByb3RlY3RlZCByYXBpZXJDb25zdHJ1Y3QgPSBzaWduYWw8dHlwZW9mIFJBUElFUiB8IG51bGw+KG51bGwpO1xuXHRwcm90ZWN0ZWQgcmFwaWVyRXJyb3IgPSBzaWduYWw8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG5cdHJhcGllciA9IHRoaXMucmFwaWVyQ29uc3RydWN0LmFzUmVhZG9ubHkoKTtcblxuXHRyZWFkeSA9IGNvbXB1dGVkKCgpID0+ICEhdGhpcy5yYXBpZXIoKSk7XG5cdHdvcmxkU2luZ2xldG9uID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdGNvbnN0IHJhcGllciA9IHRoaXMucmFwaWVyKCk7XG5cdFx0aWYgKCFyYXBpZXIpIHJldHVybiBudWxsO1xuXHRcdHJldHVybiBjcmVhdGVTaW5nbGV0b25Qcm94eTxXb3JsZD4oKCkgPT4gbmV3IHJhcGllci5Xb3JsZCh1bnRyYWNrZWQodGhpcy5ncmF2aXR5KSkpO1xuXHR9KTtcblxuXHRyaWdpZEJvZHlTdGF0ZXM6IE5ndHJSaWdpZEJvZHlTdGF0ZU1hcCA9IG5ldyBNYXAoKTtcblx0Y29sbGlkZXJTdGF0ZXM6IE5ndHJDb2xsaWRlclN0YXRlTWFwID0gbmV3IE1hcCgpO1xuXHRyaWdpZEJvZHlFdmVudHM6IE5ndHJFdmVudE1hcCA9IG5ldyBNYXAoKTtcblx0Y29sbGlkZXJFdmVudHM6IE5ndHJFdmVudE1hcCA9IG5ldyBNYXAoKTtcblx0cHJpdmF0ZSBiZWZvcmVTdGVwQ2FsbGJhY2tzOiBOZ3RyV29ybGRTdGVwQ2FsbGJhY2tTZXQgPSBuZXcgU2V0KCk7XG5cdHByaXZhdGUgYWZ0ZXJTdGVwQ2FsbGJhY2tzOiBOZ3RyV29ybGRTdGVwQ2FsbGJhY2tTZXQgPSBuZXcgU2V0KCk7XG5cblx0cHJpdmF0ZSBldmVudFF1ZXVlID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdGNvbnN0IHJhcGllciA9IHRoaXMucmFwaWVyKCk7XG5cdFx0aWYgKCFyYXBpZXIpIHJldHVybiBudWxsO1xuXHRcdHJldHVybiBuZXcgRXZlbnRRdWV1ZShmYWxzZSk7XG5cdH0pO1xuXG5cdHByaXZhdGUgc3RlcHBpbmdTdGF0ZToge1xuXHRcdGFjY3VtdWxhdG9yOiBudW1iZXI7XG5cdFx0cHJldmlvdXNTdGF0ZTogUmVjb3JkPG51bWJlciwgeyBwb3NpdGlvbjogVmVjdG9yOyByb3RhdGlvbjogUm90YXRpb24gfT47XG5cdH0gPSB7IGFjY3VtdWxhdG9yOiAwLCBwcmV2aW91c1N0YXRlOiB7fSB9O1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdGltcG9ydCgnQGRpbWZvcmdlL3JhcGllcjNkLWNvbXBhdCcpXG5cdFx0XHQudGhlbigocmFwaWVyKSA9PiByYXBpZXIuaW5pdCgpLnRoZW4oKCkgPT4gcmFwaWVyKSlcblx0XHRcdC50aGVuKHRoaXMucmFwaWVyQ29uc3RydWN0LnNldC5iaW5kKHRoaXMucmFwaWVyQ29uc3RydWN0KSlcblx0XHRcdC5jYXRjaCgoZXJyKSA9PiB7XG5cdFx0XHRcdGNvbnNvbGUuZXJyb3IoYFtOR1RdIEZhaWxlZCB0byBsb2FkIHJhcGllcjNkLWNvbXBhdGAsIGVycik7XG5cdFx0XHRcdHRoaXMucmFwaWVyRXJyb3Iuc2V0KGVycj8ubWVzc2FnZSA/PyBlcnIudG9TdHJpbmcoKSk7XG5cdFx0XHR9KTtcblxuXHRcdGVmZmVjdCgoKSA9PiB7XG5cdFx0XHR0aGlzLnVwZGF0ZVdvcmxkRWZmZWN0KCk7XG5cdFx0fSk7XG5cblx0XHR0aGlzLmRlc3Ryb3lSZWYub25EZXN0cm95KCgpID0+IHtcblx0XHRcdGNvbnN0IHdvcmxkID0gdGhpcy53b3JsZFNpbmdsZXRvbigpO1xuXHRcdFx0aWYgKHdvcmxkKSB7XG5cdFx0XHRcdHdvcmxkLnByb3h5LmZyZWUoKTtcblx0XHRcdFx0d29ybGQucmVzZXQoKTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxuXG5cdHN0ZXAoZGVsdGE6IG51bWJlcikge1xuXHRcdGlmICghdGhpcy5wYXVzZWQoKSkge1xuXHRcdFx0dGhpcy5pbnRlcm5hbFN0ZXAoZGVsdGEpO1xuXHRcdH1cblx0fVxuXG5cdHByaXZhdGUgdXBkYXRlV29ybGRFZmZlY3QoKSB7XG5cdFx0Y29uc3Qgd29ybGQgPSB0aGlzLndvcmxkU2luZ2xldG9uKCk7XG5cdFx0aWYgKCF3b3JsZCkgcmV0dXJuO1xuXG5cdFx0d29ybGQucHJveHkuZ3Jhdml0eSA9IHRoaXMuZ3Jhdml0eSgpO1xuXHRcdHdvcmxkLnByb3h5LmludGVncmF0aW9uUGFyYW1ldGVycy5udW1Tb2x2ZXJJdGVyYXRpb25zID0gdGhpcy5udW1Tb2x2ZXJJdGVyYXRpb25zKCk7XG5cdFx0d29ybGQucHJveHkuaW50ZWdyYXRpb25QYXJhbWV0ZXJzLm51bUFkZGl0aW9uYWxGcmljdGlvbkl0ZXJhdGlvbnMgPSB0aGlzLm51bUFkZGl0aW9uYWxGcmljdGlvbkl0ZXJhdGlvbnMoKTtcblx0XHR3b3JsZC5wcm94eS5pbnRlZ3JhdGlvblBhcmFtZXRlcnMubnVtSW50ZXJuYWxQZ3NJdGVyYXRpb25zID0gdGhpcy5udW1JbnRlcm5hbFBnc0l0ZXJhdGlvbnMoKTtcblx0XHR3b3JsZC5wcm94eS5pbnRlZ3JhdGlvblBhcmFtZXRlcnMubm9ybWFsaXplZEFsbG93ZWRMaW5lYXJFcnJvciA9IHRoaXMuYWxsb3dlZExpbmVhckVycm9yKCk7XG5cdFx0d29ybGQucHJveHkuaW50ZWdyYXRpb25QYXJhbWV0ZXJzLm1pbklzbGFuZFNpemUgPSB0aGlzLm1pbklzbGFuZFNpemUoKTtcblx0XHR3b3JsZC5wcm94eS5pbnRlZ3JhdGlvblBhcmFtZXRlcnMubWF4Q2NkU3Vic3RlcHMgPSB0aGlzLm1heENjZFN1YnN0ZXBzKCk7XG5cdFx0d29ybGQucHJveHkuaW50ZWdyYXRpb25QYXJhbWV0ZXJzLm5vcm1hbGl6ZWRQcmVkaWN0aW9uRGlzdGFuY2UgPSB0aGlzLnByZWRpY3Rpb25EaXN0YW5jZSgpO1xuXHRcdHdvcmxkLnByb3h5LmludGVncmF0aW9uUGFyYW1ldGVycy5jb250YWN0X25hdHVyYWxfZnJlcXVlbmN5ID0gdGhpcy5jb250YWN0TmF0dXJhbEZyZXF1ZW5jeSgpO1xuXHRcdHdvcmxkLnByb3h5Lmxlbmd0aFVuaXQgPSB0aGlzLmxlbmd0aFVuaXQoKTtcblx0fVxuXG5cdHByaXZhdGUgaW50ZXJuYWxTdGVwKGRlbHRhOiBudW1iZXIpIHtcblx0XHRjb25zdCB3b3JsZFNpbmdsZXRvbiA9IHRoaXMud29ybGRTaW5nbGV0b24oKTtcblx0XHRpZiAoIXdvcmxkU2luZ2xldG9uKSByZXR1cm47XG5cblx0XHRjb25zdCBldmVudFF1ZXVlID0gdGhpcy5ldmVudFF1ZXVlKCk7XG5cdFx0aWYgKCFldmVudFF1ZXVlKSByZXR1cm47XG5cblx0XHRjb25zdCB3b3JsZCA9IHdvcmxkU2luZ2xldG9uLnByb3h5O1xuXHRcdGNvbnN0IFt0aW1lU3RlcCwgaW50ZXJwb2xhdGUsIHBhdXNlZF0gPSBbdGhpcy50aW1lU3RlcCgpLCB0aGlzLmludGVycG9sYXRlKCksIHRoaXMucGF1c2VkKCldO1xuXG5cdFx0LyogQ2hlY2sgaWYgdGhlIHRpbWVzdGVwIGlzIHN1cHBvc2VkIHRvIGJlIHZhcmlhYmxlLiBXZSdsbCBkbyB0aGlzIGhlcmVcbiAgICAgIG9uY2Ugc28gd2UgZG9uJ3QgaGF2ZSB0byBzdHJpbmctY2hlY2sgZXZlcnkgZnJhbWUuICovXG5cdFx0Y29uc3QgdGltZVN0ZXBWYXJpYWJsZSA9IHRpbWVTdGVwID09PSAndmFyeSc7XG5cblx0XHQvKipcblx0XHQgKiBGaXhlZCB0aW1lU3RlcCBzaW11bGF0aW9uIHByb2dyZXNzaW9uXG5cdFx0ICogQHNlZSBodHRwczovL2dhZmZlcm9uZ2FtZXMuY29tL3Bvc3QvZml4X3lvdXJfdGltZXN0ZXAvXG5cdFx0ICovXG5cdFx0Y29uc3QgY2xhbXBlZERlbHRhID0gTWF0aFV0aWxzLmNsYW1wKGRlbHRhLCAwLCAwLjUpO1xuXG5cdFx0Y29uc3Qgc3RlcFdvcmxkID0gKGlubmVyRGVsdGE6IG51bWJlcikgPT4ge1xuXHRcdFx0Ly8gVHJpZ2dlciBiZWZvcmVTdGVwIGNhbGxiYWNrc1xuXHRcdFx0dGhpcy5iZWZvcmVTdGVwQ2FsbGJhY2tzLmZvckVhY2goKGNhbGxiYWNrKSA9PiB7XG5cdFx0XHRcdGNhbGxiYWNrKHdvcmxkKTtcblx0XHRcdH0pO1xuXG5cdFx0XHR3b3JsZC50aW1lc3RlcCA9IGlubmVyRGVsdGE7XG5cdFx0XHR3b3JsZC5zdGVwKGV2ZW50UXVldWUpO1xuXG5cdFx0XHQvLyBUcmlnZ2VyIGFmdGVyU3RlcCBjYWxsYmFja3Ncblx0XHRcdHRoaXMuYWZ0ZXJTdGVwQ2FsbGJhY2tzLmZvckVhY2goKGNhbGxiYWNrKSA9PiB7XG5cdFx0XHRcdGNhbGxiYWNrKHdvcmxkKTtcblx0XHRcdH0pO1xuXHRcdH07XG5cblx0XHRpZiAodGltZVN0ZXBWYXJpYWJsZSkge1xuXHRcdFx0c3RlcFdvcmxkKGNsYW1wZWREZWx0YSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIGRvbid0IHN0ZXAgdGltZSBmb3J3YXJkcyBpZiBwYXVzZWRcblx0XHRcdC8vIEluY3JlYXNlIGFjY3VtdWxhdG9yXG5cdFx0XHR0aGlzLnN0ZXBwaW5nU3RhdGUuYWNjdW11bGF0b3IgKz0gY2xhbXBlZERlbHRhO1xuXG5cdFx0XHR3aGlsZSAodGhpcy5zdGVwcGluZ1N0YXRlLmFjY3VtdWxhdG9yID49IHRpbWVTdGVwKSB7XG5cdFx0XHRcdC8vIFNldCB1cCBwcmV2aW91cyBzdGF0ZVxuXHRcdFx0XHQvLyBuZWVkZWQgZm9yIGFjY3VyYXRlIGludGVycG9sYXRpb25zIGlmIHRoZSB3b3JsZCBzdGVwcyBtb3JlIHRoYW4gb25jZVxuXHRcdFx0XHRpZiAoaW50ZXJwb2xhdGUpIHtcblx0XHRcdFx0XHR0aGlzLnN0ZXBwaW5nU3RhdGUucHJldmlvdXNTdGF0ZSA9IHt9O1xuXHRcdFx0XHRcdHdvcmxkLmZvckVhY2hSaWdpZEJvZHkoKGJvZHkpID0+IHtcblx0XHRcdFx0XHRcdHRoaXMuc3RlcHBpbmdTdGF0ZS5wcmV2aW91c1N0YXRlW2JvZHkuaGFuZGxlXSA9IHtcblx0XHRcdFx0XHRcdFx0cG9zaXRpb246IGJvZHkudHJhbnNsYXRpb24oKSxcblx0XHRcdFx0XHRcdFx0cm90YXRpb246IGJvZHkucm90YXRpb24oKSxcblx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRzdGVwV29ybGQodGltZVN0ZXApO1xuXHRcdFx0XHR0aGlzLnN0ZXBwaW5nU3RhdGUuYWNjdW11bGF0b3IgLT0gdGltZVN0ZXA7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Y29uc3QgaW50ZXJwb2xhdGlvbkFscGhhID1cblx0XHRcdHRpbWVTdGVwVmFyaWFibGUgfHwgIWludGVycG9sYXRlIHx8IHBhdXNlZCA/IDEgOiB0aGlzLnN0ZXBwaW5nU3RhdGUuYWNjdW11bGF0b3IgLyB0aW1lU3RlcDtcblxuXHRcdC8vIFVwZGF0ZSBtZXNoZXNcblx0XHR0aGlzLnJpZ2lkQm9keVN0YXRlcy5mb3JFYWNoKChzdGF0ZSwgaGFuZGxlKSA9PiB7XG5cdFx0XHRjb25zdCByaWdpZEJvZHkgPSB3b3JsZC5nZXRSaWdpZEJvZHkoaGFuZGxlKTtcblxuXHRcdFx0Y29uc3QgZXZlbnRzID0gdGhpcy5yaWdpZEJvZHlFdmVudHMuZ2V0KGhhbmRsZSk7XG5cdFx0XHRpZiAoZXZlbnRzPy5vblNsZWVwIHx8IGV2ZW50cz8ub25XYWtlKSB7XG5cdFx0XHRcdGlmIChyaWdpZEJvZHkuaXNTbGVlcGluZygpICYmICFzdGF0ZS5pc1NsZWVwaW5nKSBldmVudHM/Lm9uU2xlZXA/LigpO1xuXHRcdFx0XHRpZiAoIXJpZ2lkQm9keS5pc1NsZWVwaW5nKCkgJiYgc3RhdGUuaXNTbGVlcGluZykgZXZlbnRzPy5vbldha2U/LigpO1xuXHRcdFx0XHRzdGF0ZS5pc1NsZWVwaW5nID0gcmlnaWRCb2R5LmlzU2xlZXBpbmcoKTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKCFyaWdpZEJvZHkgfHwgKHJpZ2lkQm9keS5pc1NsZWVwaW5nKCkgJiYgISgnaXNJbnN0YW5jZWRNZXNoJyBpbiBzdGF0ZS5vYmplY3QpKSB8fCAhc3RhdGUuc2V0TWF0cml4KSB7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0Ly8gTmV3IHN0YXRlc1xuXHRcdFx0bGV0IHQgPSByaWdpZEJvZHkudHJhbnNsYXRpb24oKSBhcyBWZWN0b3IzO1xuXHRcdFx0bGV0IHIgPSByaWdpZEJvZHkucm90YXRpb24oKSBhcyBRdWF0ZXJuaW9uO1xuXG5cdFx0XHRsZXQgcHJldmlvdXNTdGF0ZSA9IHRoaXMuc3RlcHBpbmdTdGF0ZS5wcmV2aW91c1N0YXRlW2hhbmRsZV07XG5cblx0XHRcdGlmIChwcmV2aW91c1N0YXRlKSB7XG5cdFx0XHRcdC8vIEdldCBwcmV2aW91cyBzaW11bGF0ZWQgd29ybGQgcG9zaXRpb25cblx0XHRcdFx0X21hdHJpeDRcblx0XHRcdFx0XHQuY29tcG9zZShwcmV2aW91c1N0YXRlLnBvc2l0aW9uIGFzIFZlY3RvcjMsIHJhcGllclF1YXRlcm5pb25Ub1F1YXRlcm5pb24ocHJldmlvdXNTdGF0ZS5yb3RhdGlvbiksIHN0YXRlLnNjYWxlKVxuXHRcdFx0XHRcdC5wcmVtdWx0aXBseShzdGF0ZS5pbnZlcnRlZFdvcmxkTWF0cml4KVxuXHRcdFx0XHRcdC5kZWNvbXBvc2UoX3Bvc2l0aW9uLCBfcm90YXRpb24sIF9zY2FsZSk7XG5cblx0XHRcdFx0Ly8gQXBwbHkgcHJldmlvdXMgdGljayBwb3NpdGlvblxuXHRcdFx0XHRpZiAoc3RhdGUubWVzaFR5cGUgPT0gJ21lc2gnKSB7XG5cdFx0XHRcdFx0c3RhdGUub2JqZWN0LnBvc2l0aW9uLmNvcHkoX3Bvc2l0aW9uKTtcblx0XHRcdFx0XHRzdGF0ZS5vYmplY3QucXVhdGVybmlvbi5jb3B5KF9yb3RhdGlvbik7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Ly8gR2V0IG5ldyBwb3NpdGlvblxuXHRcdFx0X21hdHJpeDRcblx0XHRcdFx0LmNvbXBvc2UodCwgcmFwaWVyUXVhdGVybmlvblRvUXVhdGVybmlvbihyKSwgc3RhdGUuc2NhbGUpXG5cdFx0XHRcdC5wcmVtdWx0aXBseShzdGF0ZS5pbnZlcnRlZFdvcmxkTWF0cml4KVxuXHRcdFx0XHQuZGVjb21wb3NlKF9wb3NpdGlvbiwgX3JvdGF0aW9uLCBfc2NhbGUpO1xuXG5cdFx0XHRpZiAoc3RhdGUubWVzaFR5cGUgPT0gJ2luc3RhbmNlZE1lc2gnKSB7XG5cdFx0XHRcdHN0YXRlLnNldE1hdHJpeChfbWF0cml4NCk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHQvLyBJbnRlcnBvbGF0ZSB0byBuZXcgcG9zaXRpb25cblx0XHRcdFx0c3RhdGUub2JqZWN0LnBvc2l0aW9uLmxlcnAoX3Bvc2l0aW9uLCBpbnRlcnBvbGF0aW9uQWxwaGEpO1xuXHRcdFx0XHRzdGF0ZS5vYmplY3QucXVhdGVybmlvbi5zbGVycChfcm90YXRpb24sIGludGVycG9sYXRpb25BbHBoYSk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cblx0XHRldmVudFF1ZXVlLmRyYWluQ29sbGlzaW9uRXZlbnRzKChoYW5kbGUxLCBoYW5kbGUyLCBzdGFydGVkKSA9PiB7XG5cdFx0XHRjb25zdCBzb3VyY2UxID0gdGhpcy5nZXRTb3VyY2VGcm9tQ29sbGlkZXJIYW5kbGUoaGFuZGxlMSk7XG5cdFx0XHRjb25zdCBzb3VyY2UyID0gdGhpcy5nZXRTb3VyY2VGcm9tQ29sbGlkZXJIYW5kbGUoaGFuZGxlMik7XG5cblx0XHRcdC8vIENvbGxpc2lvbiBFdmVudHNcblx0XHRcdGlmICghc291cmNlMT8uY29sbGlkZXIub2JqZWN0IHx8ICFzb3VyY2UyPy5jb2xsaWRlci5vYmplY3QpIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXG5cdFx0XHRjb25zdCBjb2xsaXNpb25QYXlsb2FkMSA9IHRoaXMuZ2V0Q29sbGlzaW9uUGF5bG9hZEZyb21Tb3VyY2Uoc291cmNlMSwgc291cmNlMik7XG5cdFx0XHRjb25zdCBjb2xsaXNpb25QYXlsb2FkMiA9IHRoaXMuZ2V0Q29sbGlzaW9uUGF5bG9hZEZyb21Tb3VyY2Uoc291cmNlMiwgc291cmNlMSk7XG5cblx0XHRcdGlmIChzdGFydGVkKSB7XG5cdFx0XHRcdHdvcmxkLmNvbnRhY3RQYWlyKHNvdXJjZTEuY29sbGlkZXIub2JqZWN0LCBzb3VyY2UyLmNvbGxpZGVyLm9iamVjdCwgKG1hbmlmb2xkLCBmbGlwcGVkKSA9PiB7XG5cdFx0XHRcdFx0LyogUmlnaWRCb2R5IGV2ZW50cyAqL1xuXHRcdFx0XHRcdHNvdXJjZTEucmlnaWRCb2R5LmV2ZW50cz8ub25Db2xsaXNpb25FbnRlcj8uKHsgLi4uY29sbGlzaW9uUGF5bG9hZDEsIG1hbmlmb2xkLCBmbGlwcGVkIH0pO1xuXHRcdFx0XHRcdHNvdXJjZTIucmlnaWRCb2R5LmV2ZW50cz8ub25Db2xsaXNpb25FbnRlcj8uKHsgLi4uY29sbGlzaW9uUGF5bG9hZDIsIG1hbmlmb2xkLCBmbGlwcGVkIH0pO1xuXG5cdFx0XHRcdFx0LyogQ29sbGlkZXIgZXZlbnRzICovXG5cdFx0XHRcdFx0c291cmNlMS5jb2xsaWRlci5ldmVudHM/Lm9uQ29sbGlzaW9uRW50ZXI/Lih7IC4uLmNvbGxpc2lvblBheWxvYWQxLCBtYW5pZm9sZCwgZmxpcHBlZCB9KTtcblx0XHRcdFx0XHRzb3VyY2UyLmNvbGxpZGVyLmV2ZW50cz8ub25Db2xsaXNpb25FbnRlcj8uKHsgLi4uY29sbGlzaW9uUGF5bG9hZDIsIG1hbmlmb2xkLCBmbGlwcGVkIH0pO1xuXHRcdFx0XHR9KTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHNvdXJjZTEucmlnaWRCb2R5LmV2ZW50cz8ub25Db2xsaXNpb25FeGl0Py4oY29sbGlzaW9uUGF5bG9hZDEpO1xuXHRcdFx0XHRzb3VyY2UyLnJpZ2lkQm9keS5ldmVudHM/Lm9uQ29sbGlzaW9uRXhpdD8uKGNvbGxpc2lvblBheWxvYWQyKTtcblx0XHRcdFx0c291cmNlMS5jb2xsaWRlci5ldmVudHM/Lm9uQ29sbGlzaW9uRXhpdD8uKGNvbGxpc2lvblBheWxvYWQxKTtcblx0XHRcdFx0c291cmNlMi5jb2xsaWRlci5ldmVudHM/Lm9uQ29sbGlzaW9uRXhpdD8uKGNvbGxpc2lvblBheWxvYWQyKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gU2Vuc29yIEludGVyc2VjdGlvbnNcblx0XHRcdGlmIChzdGFydGVkKSB7XG5cdFx0XHRcdGlmICh3b3JsZC5pbnRlcnNlY3Rpb25QYWlyKHNvdXJjZTEuY29sbGlkZXIub2JqZWN0LCBzb3VyY2UyLmNvbGxpZGVyLm9iamVjdCkpIHtcblx0XHRcdFx0XHRzb3VyY2UxLnJpZ2lkQm9keS5ldmVudHM/Lm9uSW50ZXJzZWN0aW9uRW50ZXI/Lihjb2xsaXNpb25QYXlsb2FkMSk7XG5cdFx0XHRcdFx0c291cmNlMi5yaWdpZEJvZHkuZXZlbnRzPy5vbkludGVyc2VjdGlvbkVudGVyPy4oY29sbGlzaW9uUGF5bG9hZDIpO1xuXHRcdFx0XHRcdHNvdXJjZTEuY29sbGlkZXIuZXZlbnRzPy5vbkludGVyc2VjdGlvbkVudGVyPy4oY29sbGlzaW9uUGF5bG9hZDEpO1xuXHRcdFx0XHRcdHNvdXJjZTIuY29sbGlkZXIuZXZlbnRzPy5vbkludGVyc2VjdGlvbkVudGVyPy4oY29sbGlzaW9uUGF5bG9hZDIpO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRzb3VyY2UxLnJpZ2lkQm9keS5ldmVudHM/Lm9uSW50ZXJzZWN0aW9uRXhpdD8uKGNvbGxpc2lvblBheWxvYWQxKTtcblx0XHRcdFx0c291cmNlMi5yaWdpZEJvZHkuZXZlbnRzPy5vbkludGVyc2VjdGlvbkV4aXQ/Lihjb2xsaXNpb25QYXlsb2FkMik7XG5cdFx0XHRcdHNvdXJjZTEuY29sbGlkZXIuZXZlbnRzPy5vbkludGVyc2VjdGlvbkV4aXQ/Lihjb2xsaXNpb25QYXlsb2FkMSk7XG5cdFx0XHRcdHNvdXJjZTIuY29sbGlkZXIuZXZlbnRzPy5vbkludGVyc2VjdGlvbkV4aXQ/Lihjb2xsaXNpb25QYXlsb2FkMik7XG5cdFx0XHR9XG5cdFx0fSk7XG5cblx0XHRldmVudFF1ZXVlLmRyYWluQ29udGFjdEZvcmNlRXZlbnRzKChldmVudCkgPT4ge1xuXHRcdFx0Y29uc3Qgc291cmNlMSA9IHRoaXMuZ2V0U291cmNlRnJvbUNvbGxpZGVySGFuZGxlKGV2ZW50LmNvbGxpZGVyMSgpKTtcblx0XHRcdGNvbnN0IHNvdXJjZTIgPSB0aGlzLmdldFNvdXJjZUZyb21Db2xsaWRlckhhbmRsZShldmVudC5jb2xsaWRlcjIoKSk7XG5cblx0XHRcdC8vIENvbGxpc2lvbiBFdmVudHNcblx0XHRcdGlmICghc291cmNlMT8uY29sbGlkZXIub2JqZWN0IHx8ICFzb3VyY2UyPy5jb2xsaWRlci5vYmplY3QpIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXG5cdFx0XHRjb25zdCBjb2xsaXNpb25QYXlsb2FkMSA9IHRoaXMuZ2V0Q29sbGlzaW9uUGF5bG9hZEZyb21Tb3VyY2Uoc291cmNlMSwgc291cmNlMik7XG5cdFx0XHRjb25zdCBjb2xsaXNpb25QYXlsb2FkMiA9IHRoaXMuZ2V0Q29sbGlzaW9uUGF5bG9hZEZyb21Tb3VyY2Uoc291cmNlMiwgc291cmNlMSk7XG5cblx0XHRcdHNvdXJjZTEucmlnaWRCb2R5LmV2ZW50cz8ub25Db250YWN0Rm9yY2U/Lih7XG5cdFx0XHRcdC4uLmNvbGxpc2lvblBheWxvYWQxLFxuXHRcdFx0XHR0b3RhbEZvcmNlOiBldmVudC50b3RhbEZvcmNlKCksXG5cdFx0XHRcdHRvdGFsRm9yY2VNYWduaXR1ZGU6IGV2ZW50LnRvdGFsRm9yY2VNYWduaXR1ZGUoKSxcblx0XHRcdFx0bWF4Rm9yY2VEaXJlY3Rpb246IGV2ZW50Lm1heEZvcmNlRGlyZWN0aW9uKCksXG5cdFx0XHRcdG1heEZvcmNlTWFnbml0dWRlOiBldmVudC5tYXhGb3JjZU1hZ25pdHVkZSgpLFxuXHRcdFx0fSk7XG5cblx0XHRcdHNvdXJjZTIucmlnaWRCb2R5LmV2ZW50cz8ub25Db250YWN0Rm9yY2U/Lih7XG5cdFx0XHRcdC4uLmNvbGxpc2lvblBheWxvYWQyLFxuXHRcdFx0XHR0b3RhbEZvcmNlOiBldmVudC50b3RhbEZvcmNlKCksXG5cdFx0XHRcdHRvdGFsRm9yY2VNYWduaXR1ZGU6IGV2ZW50LnRvdGFsRm9yY2VNYWduaXR1ZGUoKSxcblx0XHRcdFx0bWF4Rm9yY2VEaXJlY3Rpb246IGV2ZW50Lm1heEZvcmNlRGlyZWN0aW9uKCksXG5cdFx0XHRcdG1heEZvcmNlTWFnbml0dWRlOiBldmVudC5tYXhGb3JjZU1hZ25pdHVkZSgpLFxuXHRcdFx0fSk7XG5cblx0XHRcdHNvdXJjZTEuY29sbGlkZXIuZXZlbnRzPy5vbkNvbnRhY3RGb3JjZT8uKHtcblx0XHRcdFx0Li4uY29sbGlzaW9uUGF5bG9hZDEsXG5cdFx0XHRcdHRvdGFsRm9yY2U6IGV2ZW50LnRvdGFsRm9yY2UoKSxcblx0XHRcdFx0dG90YWxGb3JjZU1hZ25pdHVkZTogZXZlbnQudG90YWxGb3JjZU1hZ25pdHVkZSgpLFxuXHRcdFx0XHRtYXhGb3JjZURpcmVjdGlvbjogZXZlbnQubWF4Rm9yY2VEaXJlY3Rpb24oKSxcblx0XHRcdFx0bWF4Rm9yY2VNYWduaXR1ZGU6IGV2ZW50Lm1heEZvcmNlTWFnbml0dWRlKCksXG5cdFx0XHR9KTtcblxuXHRcdFx0c291cmNlMi5jb2xsaWRlci5ldmVudHM/Lm9uQ29udGFjdEZvcmNlPy4oe1xuXHRcdFx0XHQuLi5jb2xsaXNpb25QYXlsb2FkMixcblx0XHRcdFx0dG90YWxGb3JjZTogZXZlbnQudG90YWxGb3JjZSgpLFxuXHRcdFx0XHR0b3RhbEZvcmNlTWFnbml0dWRlOiBldmVudC50b3RhbEZvcmNlTWFnbml0dWRlKCksXG5cdFx0XHRcdG1heEZvcmNlRGlyZWN0aW9uOiBldmVudC5tYXhGb3JjZURpcmVjdGlvbigpLFxuXHRcdFx0XHRtYXhGb3JjZU1hZ25pdHVkZTogZXZlbnQubWF4Rm9yY2VNYWduaXR1ZGUoKSxcblx0XHRcdH0pO1xuXHRcdH0pO1xuXG5cdFx0d29ybGQuZm9yRWFjaEFjdGl2ZVJpZ2lkQm9keSgoKSA9PiB7XG5cdFx0XHR0aGlzLnN0b3JlLnNuYXBzaG90LmludmFsaWRhdGUoKTtcblx0XHR9KTtcblx0fVxuXG5cdHByaXZhdGUgZ2V0U291cmNlRnJvbUNvbGxpZGVySGFuZGxlKGhhbmRsZTogQ29sbGlkZXJIYW5kbGUpIHtcblx0XHRjb25zdCB3b3JsZCA9IHRoaXMud29ybGRTaW5nbGV0b24oKTtcblx0XHRpZiAoIXdvcmxkKSByZXR1cm47XG5cblx0XHRjb25zdCBjb2xsaWRlciA9IHdvcmxkLnByb3h5LmdldENvbGxpZGVyKGhhbmRsZSk7XG5cdFx0Y29uc3QgY29sRXZlbnRzID0gdGhpcy5jb2xsaWRlckV2ZW50cy5nZXQoaGFuZGxlKTtcblx0XHRjb25zdCBjb2xsaWRlclN0YXRlID0gdGhpcy5jb2xsaWRlclN0YXRlcy5nZXQoaGFuZGxlKTtcblxuXHRcdGNvbnN0IHJpZ2lkQm9keUhhbmRsZSA9IGNvbGxpZGVyLnBhcmVudCgpPy5oYW5kbGU7XG5cdFx0Y29uc3QgcmlnaWRCb2R5ID0gcmlnaWRCb2R5SGFuZGxlICE9PSB1bmRlZmluZWQgPyB3b3JsZC5wcm94eS5nZXRSaWdpZEJvZHkocmlnaWRCb2R5SGFuZGxlKSA6IHVuZGVmaW5lZDtcblx0XHRjb25zdCByaWdpZEJvZHlFdmVudHMgPVxuXHRcdFx0cmlnaWRCb2R5ICYmIHJpZ2lkQm9keUhhbmRsZSAhPT0gdW5kZWZpbmVkID8gdGhpcy5yaWdpZEJvZHlFdmVudHMuZ2V0KHJpZ2lkQm9keUhhbmRsZSkgOiB1bmRlZmluZWQ7XG5cdFx0Y29uc3QgcmlnaWRCb2R5U3RhdGUgPSByaWdpZEJvZHlIYW5kbGUgIT09IHVuZGVmaW5lZCA/IHRoaXMucmlnaWRCb2R5U3RhdGVzLmdldChyaWdpZEJvZHlIYW5kbGUpIDogdW5kZWZpbmVkO1xuXG5cdFx0cmV0dXJuIHtcblx0XHRcdGNvbGxpZGVyOiB7IG9iamVjdDogY29sbGlkZXIsIGV2ZW50czogY29sRXZlbnRzLCBzdGF0ZTogY29sbGlkZXJTdGF0ZSB9LFxuXHRcdFx0cmlnaWRCb2R5OiB7IG9iamVjdDogcmlnaWRCb2R5LCBldmVudHM6IHJpZ2lkQm9keUV2ZW50cywgc3RhdGU6IHJpZ2lkQm9keVN0YXRlIH0sXG5cdFx0fSBhcyBOZ3RyQ29sbGlzaW9uU291cmNlO1xuXHR9XG5cblx0cHJpdmF0ZSBnZXRDb2xsaXNpb25QYXlsb2FkRnJvbVNvdXJjZSh0YXJnZXQ6IE5ndHJDb2xsaXNpb25Tb3VyY2UsIG90aGVyOiBOZ3RyQ29sbGlzaW9uU291cmNlKTogTmd0ckNvbGxpc2lvblBheWxvYWQge1xuXHRcdHJldHVybiB7XG5cdFx0XHR0YXJnZXQ6IHtcblx0XHRcdFx0cmlnaWRCb2R5OiB0YXJnZXQucmlnaWRCb2R5Lm9iamVjdCxcblx0XHRcdFx0Y29sbGlkZXI6IHRhcmdldC5jb2xsaWRlci5vYmplY3QsXG5cdFx0XHRcdGNvbGxpZGVyT2JqZWN0OiB0YXJnZXQuY29sbGlkZXIuc3RhdGU/Lm9iamVjdCxcblx0XHRcdFx0cmlnaWRCb2R5T2JqZWN0OiB0YXJnZXQucmlnaWRCb2R5LnN0YXRlPy5vYmplY3QsXG5cdFx0XHR9LFxuXHRcdFx0b3RoZXI6IHtcblx0XHRcdFx0cmlnaWRCb2R5OiBvdGhlci5yaWdpZEJvZHkub2JqZWN0LFxuXHRcdFx0XHRjb2xsaWRlcjogb3RoZXIuY29sbGlkZXIub2JqZWN0LFxuXHRcdFx0XHRjb2xsaWRlck9iamVjdDogb3RoZXIuY29sbGlkZXIuc3RhdGU/Lm9iamVjdCxcblx0XHRcdFx0cmlnaWRCb2R5T2JqZWN0OiBvdGhlci5yaWdpZEJvZHkuc3RhdGU/Lm9iamVjdCxcblx0XHRcdH0sXG5cdFx0fTtcblx0fVxufVxuIl19
|
|
386
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGh5c2ljcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvcmFwaWVyL3NyYy9saWIvcGh5c2ljcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBQ04sdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1IsWUFBWSxFQUNaLFVBQVUsRUFDVixTQUFTLEVBQ1QsTUFBTSxFQUNOLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLFdBQVcsRUFDWCxTQUFTLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBZSxFQUFrQixVQUFVLEVBQTJCLE1BQU0sMkJBQTJCLENBQUM7QUFDeEcsT0FBTyxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsU0FBUyxFQUF1QixNQUFNLE9BQU8sQ0FBQztBQUN2RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFVbEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLDRCQUE0QixFQUFFLE1BQU0sU0FBUyxDQUFDOztBQUU3RSxNQUFNLGNBQWMsR0FBdUI7SUFDMUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUN0QixrQkFBa0IsRUFBRSxLQUFLO0lBQ3pCLG1CQUFtQixFQUFFLENBQUM7SUFDdEIsK0JBQStCLEVBQUUsQ0FBQztJQUNsQyx3QkFBd0IsRUFBRSxD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UUFBUSxDQUFDLE1BQU07Z0JBQ2hDLGNBQWMsRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxNQUFNO2dCQUM3QyxlQUFlLEVBQUUsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsTUFBTTthQUMvQztZQUNELEtBQUssRUFBRTtnQkFDTixTQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNO2dCQUNqQyxRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNO2dCQUMvQixjQUFjLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsTUFBTTtnQkFDNUMsZUFBZSxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLE1BQU07YUFDOUM7U0FDRCxDQUFDO0lBQ0gsQ0FBQzt3R0ExVlcsV0FBVzs0RkFBWCxXQUFXLHVQQUdTLFdBQVcsa0dBQ1osbUJBQW1CLGdFQXpCeEM7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBaUJULDREQUVTLFNBQVMsMEVBQUUsZ0JBQWdCLHNIQUFFLGdCQUFnQjs7NEZBRTNDLFdBQVc7a0JBeEJ2QixTQUFTO21CQUFDO29CQUNWLFFBQVEsRUFBRSxjQUFjO29CQUN4QixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7OztFQWlCVDtvQkFDRCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsT0FBTyxFQUFFLENBQUMsU0FBUyxFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixDQUFDO2lCQUN4RCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcblx0Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG5cdENvbXBvbmVudCxcblx0Y29tcHV0ZWQsXG5cdGNvbnRlbnRDaGlsZCxcblx0RGVzdHJveVJlZixcblx0RGlyZWN0aXZlLFxuXHRlZmZlY3QsXG5cdGluamVjdCxcblx0aW5wdXQsXG5cdHNpZ25hbCxcblx0VGVtcGxhdGVSZWYsXG5cdHVudHJhY2tlZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgUkFQSUVSLCB7IENvbGxpZGVySGFuZGxlLCBFdmVudFF1ZXVlLCBSb3RhdGlvbiwgVmVjdG9yLCBXb3JsZCB9IGZyb20gJ0BkaW1mb3JnZS9yYXBpZXIzZC1jb21wYXQnO1xuaW1wb3J0IHsgaW5qZWN0U3RvcmUsIHBpY2ssIHZlY3RvcjMgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IG1lcmdlSW5wdXRzIH0gZnJvbSAnbmd4dGVuc2lvbi9pbmplY3QtaW5wdXRzJztcbmltcG9ydCB7IE1hdGhVdGlscywgUXVhdGVybmlvbiwgVmVjdG9yMyB9IGZyb20gJ3RocmVlJztcbmltcG9ydCB7IE5ndHJEZWJ1ZyB9IGZyb20gJy4vZGVidWcnO1xuaW1wb3J0IHsgTmd0ckZyYW1lU3RlcHBlciB9IGZyb20gJy4vZnJhbWUtc3RlcHBlcic7XG5pbXBvcnQgeyBfbWF0cml4NCwgX3Bvc2l0aW9uLCBfcm90YXRpb24sIF9zY2FsZSB9IGZyb20gJy4vc2hhcmVkJztcbmltcG9ydCB7XG5cdE5ndHJDb2xsaWRlclN0YXRlTWFwLFxuXHROZ3RyQ29sbGlzaW9uUGF5bG9hZCxcblx0Tmd0ckNvbGxpc2lvblNvdXJjZSxcblx0Tmd0ckV2ZW50TWFwLFxuXHROZ3RyUGh5c2ljc09wdGlvbnMsXG5cdE5ndHJSaWdpZEJvZHlTdGF0ZU1hcCxcblx0Tmd0cldvcmxkU3RlcENhbGxiYWNrU2V0LFxufSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IGNyZWF0ZVNpbmdsZXRvblByb3h5LCByYXBpZXJRdWF0ZXJuaW9uVG9RdWF0ZXJuaW9uIH0gZnJvbSAnLi91dGlscyc7XG5cbmNvbnN0IGRlZmF1bHRPcHRpb25zOiBOZ3RyUGh5c2ljc09wdGlvbnMgPSB7XG5cdGdyYXZpdHk6IFswLCAtOS44MSwgMF0sXG5cdGFsbG93ZWRMaW5lYXJFcnJvcjogMC4wMDEsXG5cdG51bVNvbHZlckl0ZXJhdGlvbnM6IDQsXG5cdG51bUFkZGl0aW9uYWxGcmljdGlvbkl0ZXJhdGlvbnM6IDQsXG5cdG51bUludGVybmFsUGdzSXRlcmF0aW9uczogMSxcblx0cHJlZGljdGlvbkRpc3RhbmNlOiAwLjAwMixcblx0bWluSXNsYW5kU2l6ZTogMTI4LFxuXHRtYXhDY2RTdWJzdGVwczogMSxcblx0Y29udGFjdE5hdHVyYWxGcmVxdWVuY3k6IDMwLFxuXHRlcnA6IDAuOCxcblx0bGVuZ3RoVW5pdDogMSxcblx0Y29sbGlkZXJzOiAnY3Vib2lkJyxcblx0dXBkYXRlTG9vcDogJ2ZvbGxvdycsXG5cdGludGVycG9sYXRlOiB0cnVlLFxuXHRwYXVzZWQ6IGZhbHNlLFxuXHR0aW1lU3RlcDogMSAvIDYwLFxuXHRkZWJ1ZzogZmFsc2UsXG59O1xuXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICduZy10ZW1wbGF0ZVtyYXBpZXJGYWxsYmFja10nLCBzdGFuZGFsb25lOiB0cnVlIH0pXG5leHBvcnQgY2xhc3MgTmd0clBoeXNpY3NGYWxsYmFjayB7XG5cdHN0YXRpYyBuZ1RlbXBsYXRlQ29udGV4dEd1YXJkKF86IE5ndHJQaHlzaWNzRmFsbGJhY2ssIGN0eDogdW5rbm93bik6IGN0eCBpcyB7IGVycm9yOiBzdHJpbmcgfSB7XG5cdFx0cmV0dXJuIHRydWU7XG5cdH1cbn1cblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnbmd0ci1waHlzaWNzJyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0dGVtcGxhdGU6IGBcblx0XHRAaWYgKHJhcGllckNvbnN0cnVjdCgpKSB7XG5cdFx0XHRAaWYgKGRlYnVnKCkpIHtcblx0XHRcdFx0PG5ndHItZGVidWcgW3dvcmxkXT1cIndvcmxkU2luZ2xldG9uKCk/LnByb3h5XCIgLz5cblx0XHRcdH1cblxuXHRcdFx0PG5ndHItZnJhbWUtc3RlcHBlclxuXHRcdFx0XHRbcmVhZHldPVwicmVhZHkoKVwiXG5cdFx0XHRcdFtzdGVwRm5dPVwic3RlcC5iaW5kKHRoaXMpXCJcblx0XHRcdFx0W3R5cGVdPVwidXBkYXRlTG9vcCgpXCJcblx0XHRcdFx0W3VwZGF0ZVByaW9yaXR5XT1cInVwZGF0ZVByaW9yaXR5KClcIlxuXHRcdFx0Lz5cblxuXHRcdFx0PG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJjb250ZW50KClcIiAvPlxuXHRcdH0gQGVsc2UgaWYgKHJhcGllckVycm9yKCkgJiYgISFmYWxsYmFja0NvbnRlbnQoKSkge1xuXHRcdFx0PG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCIkYW55KGZhbGxiYWNrQ29udGVudCgpKVwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGVycm9yOiByYXBpZXJFcnJvcigpIH1cIiAvPlxuXHRcdH1cblx0YCxcblx0Y2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG5cdGltcG9ydHM6IFtOZ3RyRGVidWcsIE5ndHJGcmFtZVN0ZXBwZXIsIE5nVGVtcGxhdGVPdXRsZXRdLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3RyUGh5c2ljcyB7XG5cdG9wdGlvbnMgPSBpbnB1dChkZWZhdWx0T3B0aW9ucywgeyB0cmFuc2Zvcm06IG1lcmdlSW5wdXRzKGRlZmF1bHRPcHRpb25zKSB9KTtcblxuXHRjb250ZW50ID0gY29udGVudENoaWxkLnJlcXVpcmVkKFRlbXBsYXRlUmVmKTtcblx0ZmFsbGJhY2tDb250ZW50ID0gY29udGVudENoaWxkKE5ndHJQaHlzaWNzRmFsbGJhY2spO1xuXG5cdHByb3RlY3RlZCB1cGRhdGVQcmlvcml0eSA9IHBpY2sodGhpcy5vcHRpb25zLCAndXBkYXRlUHJpb3JpdHknKTtcblx0cHJvdGVjdGVkIHVwZGF0ZUxvb3AgPSBwaWNrKHRoaXMub3B0aW9ucywgJ3VwZGF0ZUxvb3AnKTtcblxuXHRwcml2YXRlIG51bVNvbHZlckl0ZXJhdGlvbnMgPSBwaWNrKHRoaXMub3B0aW9ucywgJ251bVNvbHZlckl0ZXJhdGlvbnMnKTtcblx0cHJpdmF0ZSBudW1BZGRpdGlvbmFsRnJpY3Rpb25JdGVyYXRpb25zID0gcGljayh0aGlzLm9wdGlvbnMsICdudW1BZGRpdGlvbmFsRnJpY3Rpb25JdGVyYXRpb25zJyk7XG5cdHByaXZhdGUgbnVtSW50ZXJuYWxQZ3NJdGVyYXRpb25zID0gcGljayh0aGlzLm9wdGlvbnMsICdudW1JbnRlcm5hbFBnc0l0ZXJhdGlvbnMnKTtcblx0cHJpdmF0ZSBhbGxvd2VkTGluZWFyRXJyb3IgPSBwaWNrKHRoaXMub3B0aW9ucywgJ2FsbG93ZWRMaW5lYXJFcnJvcicpO1xuXHRwcml2YXRlIG1pbklzbGFuZFNpemUgPSBwaWNrKHRoaXMub3B0aW9ucywgJ21pbklzbGFuZFNpemUnKTtcblx0cHJpdmF0ZSBtYXhDY2RTdWJzdGVwcyA9IHBpY2sodGhpcy5vcHRpb25zLCAnbWF4Q2NkU3Vic3RlcHMnKTtcblx0cHJpdmF0ZSBwcmVkaWN0aW9uRGlzdGFuY2UgPSBwaWNrKHRoaXMub3B0aW9ucywgJ3ByZWRpY3Rpb25EaXN0YW5jZScpO1xuXHRwcml2YXRlIGNvbnRhY3ROYXR1cmFsRnJlcXVlbmN5ID0gcGljayh0aGlzLm9wdGlvbnMsICdjb250YWN0TmF0dXJhbEZyZXF1ZW5jeScpO1xuXHRwcml2YXRlIGxlbmd0aFVuaXQgPSBwaWNrKHRoaXMub3B0aW9ucywgJ2xlbmd0aFVuaXQnKTtcblx0cHJpdmF0ZSB0aW1lU3RlcCA9IHBpY2sodGhpcy5vcHRpb25zLCAndGltZVN0ZXAnKTtcblx0cHJpdmF0ZSBpbnRlcnBvbGF0ZSA9IHBpY2sodGhpcy5vcHRpb25zLCAnaW50ZXJwb2xhdGUnKTtcblxuXHRwYXVzZWQgPSBwaWNrKHRoaXMub3B0aW9ucywgJ3BhdXNlZCcpO1xuXHRkZWJ1ZyA9IHBpY2sodGhpcy5vcHRpb25zLCAnZGVidWcnKTtcblx0Y29sbGlkZXJzID0gcGljayh0aGlzLm9wdGlvbnMsICdjb2xsaWRlcnMnKTtcblxuXHRwcml2YXRlIGdyYXZpdHkgPSB2ZWN0b3IzKHRoaXMub3B0aW9ucywgJ2dyYXZpdHknKTtcblxuXHRwcml2YXRlIHN0b3JlID0gaW5qZWN0U3RvcmUoKTtcblx0cHJpdmF0ZSBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuXG5cdHByb3RlY3RlZCByYXBpZXJDb25zdHJ1Y3QgPSBzaWduYWw8dHlwZW9mIFJBUElFUiB8IG51bGw+KG51bGwpO1xuXHRwcm90ZWN0ZWQgcmFwaWVyRXJyb3IgPSBzaWduYWw8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG5cdHJhcGllciA9IHRoaXMucmFwaWVyQ29uc3RydWN0LmFzUmVhZG9ubHkoKTtcblxuXHRyZWFkeSA9IGNvbXB1dGVkKCgpID0+ICEhdGhpcy5yYXBpZXIoKSk7XG5cdHdvcmxkU2luZ2xldG9uID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdGNvbnN0IHJhcGllciA9IHRoaXMucmFwaWVyKCk7XG5cdFx0aWYgKCFyYXBpZXIpIHJldHVybiBudWxsO1xuXHRcdHJldHVybiBjcmVhdGVTaW5nbGV0b25Qcm94eTxXb3JsZD4oKCkgPT4gbmV3IHJhcGllci5Xb3JsZCh1bnRyYWNrZWQodGhpcy5ncmF2aXR5KSkpO1xuXHR9KTtcblxuXHRyaWdpZEJvZHlTdGF0ZXM6IE5ndHJSaWdpZEJvZHlTdGF0ZU1hcCA9IG5ldyBNYXAoKTtcblx0Y29sbGlkZXJTdGF0ZXM6IE5ndHJDb2xsaWRlclN0YXRlTWFwID0gbmV3IE1hcCgpO1xuXHRyaWdpZEJvZHlFdmVudHM6IE5ndHJFdmVudE1hcCA9IG5ldyBNYXAoKTtcblx0Y29sbGlkZXJFdmVudHM6IE5ndHJFdmVudE1hcCA9IG5ldyBNYXAoKTtcblx0cHJpdmF0ZSBiZWZvcmVTdGVwQ2FsbGJhY2tzOiBOZ3RyV29ybGRTdGVwQ2FsbGJhY2tTZXQgPSBuZXcgU2V0KCk7XG5cdHByaXZhdGUgYWZ0ZXJTdGVwQ2FsbGJhY2tzOiBOZ3RyV29ybGRTdGVwQ2FsbGJhY2tTZXQgPSBuZXcgU2V0KCk7XG5cblx0cHJpdmF0ZSBldmVudFF1ZXVlID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdGNvbnN0IHJhcGllciA9IHRoaXMucmFwaWVyKCk7XG5cdFx0aWYgKCFyYXBpZXIpIHJldHVybiBudWxsO1xuXHRcdHJldHVybiBuZXcgRXZlbnRRdWV1ZShmYWxzZSk7XG5cdH0pO1xuXG5cdHByaXZhdGUgc3RlcHBpbmdTdGF0ZToge1xuXHRcdGFjY3VtdWxhdG9yOiBudW1iZXI7XG5cdFx0cHJldmlvdXNTdGF0ZTogUmVjb3JkPG51bWJlciwgeyBwb3NpdGlvbjogVmVjdG9yOyByb3RhdGlvbjogUm90YXRpb24gfT47XG5cdH0gPSB7IGFjY3VtdWxhdG9yOiAwLCBwcmV2aW91c1N0YXRlOiB7fSB9O1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdGltcG9ydCgnQGRpbWZvcmdlL3JhcGllcjNkLWNvbXBhdCcpXG5cdFx0XHQudGhlbigocmFwaWVyKSA9PiByYXBpZXIuaW5pdCgpLnRoZW4oKCkgPT4gcmFwaWVyKSlcblx0XHRcdC50aGVuKHRoaXMucmFwaWVyQ29uc3RydWN0LnNldC5iaW5kKHRoaXMucmFwaWVyQ29uc3RydWN0KSlcblx0XHRcdC5jYXRjaCgoZXJyKSA9PiB7XG5cdFx0XHRcdGNvbnNvbGUuZXJyb3IoYFtOR1RdIEZhaWxlZCB0byBsb2FkIHJhcGllcjNkLWNvbXBhdGAsIGVycik7XG5cdFx0XHRcdHRoaXMucmFwaWVyRXJyb3Iuc2V0KGVycj8ubWVzc2FnZSA/PyBlcnIudG9TdHJpbmcoKSk7XG5cdFx0XHR9KTtcblxuXHRcdGVmZmVjdCgoKSA9PiB7XG5cdFx0XHR0aGlzLnVwZGF0ZVdvcmxkRWZmZWN0KCk7XG5cdFx0fSk7XG5cblx0XHR0aGlzLmRlc3Ryb3lSZWYub25EZXN0cm95KCgpID0+IHtcblx0XHRcdGNvbnN0IHdvcmxkID0gdGhpcy53b3JsZFNpbmdsZXRvbigpO1xuXHRcdFx0aWYgKHdvcmxkKSB7XG5cdFx0XHRcdHdvcmxkLnByb3h5LmZyZWUoKTtcblx0XHRcdFx0d29ybGQucmVzZXQoKTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxuXG5cdHN0ZXAoZGVsdGE6IG51bWJlcikge1xuXHRcdGlmICghdGhpcy5wYXVzZWQoKSkge1xuXHRcdFx0dGhpcy5pbnRlcm5hbFN0ZXAoZGVsdGEpO1xuXHRcdH1cblx0fVxuXG5cdHByaXZhdGUgdXBkYXRlV29ybGRFZmZlY3QoKSB7XG5cdFx0Y29uc3Qgd29ybGQgPSB0aGlzLndvcmxkU2luZ2xldG9uKCk7XG5cdFx0aWYgKCF3b3JsZCkgcmV0dXJuO1xuXG5cdFx0d29ybGQucHJveHkuZ3Jhdml0eSA9IHRoaXMuZ3Jhdml0eSgpO1xuXHRcdHdvcmxkLnByb3h5LmludGVncmF0aW9uUGFyYW1ldGVycy5udW1Tb2x2ZXJJdGVyYXRpb25zID0gdGhpcy5udW1Tb2x2ZXJJdGVyYXRpb25zKCk7XG5cdFx0d29ybGQucHJveHkuaW50ZWdyYXRpb25QYXJhbWV0ZXJzLm51bUFkZGl0aW9uYWxGcmljdGlvbkl0ZXJhdGlvbnMgPSB0aGlzLm51bUFkZGl0aW9uYWxGcmljdGlvbkl0ZXJhdGlvbnMoKTtcblx0XHR3b3JsZC5wcm94eS5pbnRlZ3JhdGlvblBhcmFtZXRlcnMubnVtSW50ZXJuYWxQZ3NJdGVyYXRpb25zID0gdGhpcy5udW1JbnRlcm5hbFBnc0l0ZXJhdGlvbnMoKTtcblx0XHR3b3JsZC5wcm94eS5pbnRlZ3JhdGlvblBhcmFtZXRlcnMubm9ybWFsaXplZEFsbG93ZWRMaW5lYXJFcnJvciA9IHRoaXMuYWxsb3dlZExpbmVhckVycm9yKCk7XG5cdFx0d29ybGQucHJveHkuaW50ZWdyYXRpb25QYXJhbWV0ZXJzLm1pbklzbGFuZFNpemUgPSB0aGlzLm1pbklzbGFuZFNpemUoKTtcblx0XHR3b3JsZC5wcm94eS5pbnRlZ3JhdGlvblBhcmFtZXRlcnMubWF4Q2NkU3Vic3RlcHMgPSB0aGlzLm1heENjZFN1YnN0ZXBzKCk7XG5cdFx0d29ybGQucHJveHkuaW50ZWdyYXRpb25QYXJhbWV0ZXJzLm5vcm1hbGl6ZWRQcmVkaWN0aW9uRGlzdGFuY2UgPSB0aGlzLnByZWRpY3Rpb25EaXN0YW5jZSgpO1xuXHRcdHdvcmxkLnByb3h5LmludGVncmF0aW9uUGFyYW1ldGVycy5jb250YWN0X25hdHVyYWxfZnJlcXVlbmN5ID0gdGhpcy5jb250YWN0TmF0dXJhbEZyZXF1ZW5jeSgpO1xuXHRcdHdvcmxkLnByb3h5Lmxlbmd0aFVuaXQgPSB0aGlzLmxlbmd0aFVuaXQoKTtcblx0fVxuXG5cdHByaXZhdGUgaW50ZXJuYWxTdGVwKGRlbHRhOiBudW1iZXIpIHtcblx0XHRjb25zdCB3b3JsZFNpbmdsZXRvbiA9IHRoaXMud29ybGRTaW5nbGV0b24oKTtcblx0XHRpZiAoIXdvcmxkU2luZ2xldG9uKSByZXR1cm47XG5cblx0XHRjb25zdCBldmVudFF1ZXVlID0gdGhpcy5ldmVudFF1ZXVlKCk7XG5cdFx0aWYgKCFldmVudFF1ZXVlKSByZXR1cm47XG5cblx0XHRjb25zdCB3b3JsZCA9IHdvcmxkU2luZ2xldG9uLnByb3h5O1xuXHRcdGNvbnN0IFt0aW1lU3RlcCwgaW50ZXJwb2xhdGUsIHBhdXNlZF0gPSBbdGhpcy50aW1lU3RlcCgpLCB0aGlzLmludGVycG9sYXRlKCksIHRoaXMucGF1c2VkKCldO1xuXG5cdFx0LyogQ2hlY2sgaWYgdGhlIHRpbWVzdGVwIGlzIHN1cHBvc2VkIHRvIGJlIHZhcmlhYmxlLiBXZSdsbCBkbyB0aGlzIGhlcmVcbiAgICAgIG9uY2Ugc28gd2UgZG9uJ3QgaGF2ZSB0byBzdHJpbmctY2hlY2sgZXZlcnkgZnJhbWUuICovXG5cdFx0Y29uc3QgdGltZVN0ZXBWYXJpYWJsZSA9IHRpbWVTdGVwID09PSAndmFyeSc7XG5cblx0XHQvKipcblx0XHQgKiBGaXhlZCB0aW1lU3RlcCBzaW11bGF0aW9uIHByb2dyZXNzaW9uXG5cdFx0ICogQHNlZSBodHRwczovL2dhZmZlcm9uZ2FtZXMuY29tL3Bvc3QvZml4X3lvdXJfdGltZXN0ZXAvXG5cdFx0ICovXG5cdFx0Y29uc3QgY2xhbXBlZERlbHRhID0gTWF0aFV0aWxzLmNsYW1wKGRlbHRhLCAwLCAwLjUpO1xuXG5cdFx0Y29uc3Qgc3RlcFdvcmxkID0gKGlubmVyRGVsdGE6IG51bWJlcikgPT4ge1xuXHRcdFx0Ly8gVHJpZ2dlciBiZWZvcmVTdGVwIGNhbGxiYWNrc1xuXHRcdFx0dGhpcy5iZWZvcmVTdGVwQ2FsbGJhY2tzLmZvckVhY2goKGNhbGxiYWNrKSA9PiB7XG5cdFx0XHRcdGNhbGxiYWNrKHdvcmxkKTtcblx0XHRcdH0pO1xuXG5cdFx0XHR3b3JsZC50aW1lc3RlcCA9IGlubmVyRGVsdGE7XG5cdFx0XHR3b3JsZC5zdGVwKGV2ZW50UXVldWUpO1xuXG5cdFx0XHQvLyBUcmlnZ2VyIGFmdGVyU3RlcCBjYWxsYmFja3Ncblx0XHRcdHRoaXMuYWZ0ZXJTdGVwQ2FsbGJhY2tzLmZvckVhY2goKGNhbGxiYWNrKSA9PiB7XG5cdFx0XHRcdGNhbGxiYWNrKHdvcmxkKTtcblx0XHRcdH0pO1xuXHRcdH07XG5cblx0XHRpZiAodGltZVN0ZXBWYXJpYWJsZSkge1xuXHRcdFx0c3RlcFdvcmxkKGNsYW1wZWREZWx0YSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIGRvbid0IHN0ZXAgdGltZSBmb3J3YXJkcyBpZiBwYXVzZWRcblx0XHRcdC8vIEluY3JlYXNlIGFjY3VtdWxhdG9yXG5cdFx0XHR0aGlzLnN0ZXBwaW5nU3RhdGUuYWNjdW11bGF0b3IgKz0gY2xhbXBlZERlbHRhO1xuXG5cdFx0XHR3aGlsZSAodGhpcy5zdGVwcGluZ1N0YXRlLmFjY3VtdWxhdG9yID49IHRpbWVTdGVwKSB7XG5cdFx0XHRcdC8vIFNldCB1cCBwcmV2aW91cyBzdGF0ZVxuXHRcdFx0XHQvLyBuZWVkZWQgZm9yIGFjY3VyYXRlIGludGVycG9sYXRpb25zIGlmIHRoZSB3b3JsZCBzdGVwcyBtb3JlIHRoYW4gb25jZVxuXHRcdFx0XHRpZiAoaW50ZXJwb2xhdGUpIHtcblx0XHRcdFx0XHR0aGlzLnN0ZXBwaW5nU3RhdGUucHJldmlvdXNTdGF0ZSA9IHt9O1xuXHRcdFx0XHRcdHdvcmxkLmZvckVhY2hSaWdpZEJvZHkoKGJvZHkpID0+IHtcblx0XHRcdFx0XHRcdHRoaXMuc3RlcHBpbmdTdGF0ZS5wcmV2aW91c1N0YXRlW2JvZHkuaGFuZGxlXSA9IHtcblx0XHRcdFx0XHRcdFx0cG9zaXRpb246IGJvZHkudHJhbnNsYXRpb24oKSxcblx0XHRcdFx0XHRcdFx0cm90YXRpb246IGJvZHkucm90YXRpb24oKSxcblx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRzdGVwV29ybGQodGltZVN0ZXApO1xuXHRcdFx0XHR0aGlzLnN0ZXBwaW5nU3RhdGUuYWNjdW11bGF0b3IgLT0gdGltZVN0ZXA7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Y29uc3QgaW50ZXJwb2xhdGlvbkFscGhhID1cblx0XHRcdHRpbWVTdGVwVmFyaWFibGUgfHwgIWludGVycG9sYXRlIHx8IHBhdXNlZCA/IDEgOiB0aGlzLnN0ZXBwaW5nU3RhdGUuYWNjdW11bGF0b3IgLyB0aW1lU3RlcDtcblxuXHRcdC8vIFVwZGF0ZSBtZXNoZXNcblx0XHR0aGlzLnJpZ2lkQm9keVN0YXRlcy5mb3JFYWNoKChzdGF0ZSwgaGFuZGxlKSA9PiB7XG5cdFx0XHRjb25zdCByaWdpZEJvZHkgPSB3b3JsZC5nZXRSaWdpZEJvZHkoaGFuZGxlKTtcblxuXHRcdFx0Y29uc3QgZXZlbnRzID0gdGhpcy5yaWdpZEJvZHlFdmVudHMuZ2V0KGhhbmRsZSk7XG5cdFx0XHRpZiAoZXZlbnRzPy5vblNsZWVwIHx8IGV2ZW50cz8ub25XYWtlKSB7XG5cdFx0XHRcdGlmIChyaWdpZEJvZHkuaXNTbGVlcGluZygpICYmICFzdGF0ZS5pc1NsZWVwaW5nKSBldmVudHM/Lm9uU2xlZXA/LigpO1xuXHRcdFx0XHRpZiAoIXJpZ2lkQm9keS5pc1NsZWVwaW5nKCkgJiYgc3RhdGUuaXNTbGVlcGluZykgZXZlbnRzPy5vbldha2U/LigpO1xuXHRcdFx0XHRzdGF0ZS5pc1NsZWVwaW5nID0gcmlnaWRCb2R5LmlzU2xlZXBpbmcoKTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKCFyaWdpZEJvZHkgfHwgKHJpZ2lkQm9keS5pc1NsZWVwaW5nKCkgJiYgISgnaXNJbnN0YW5jZWRNZXNoJyBpbiBzdGF0ZS5vYmplY3QpKSB8fCAhc3RhdGUuc2V0TWF0cml4KSB7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0Ly8gTmV3IHN0YXRlc1xuXHRcdFx0bGV0IHQgPSByaWdpZEJvZHkudHJhbnNsYXRpb24oKSBhcyBWZWN0b3IzO1xuXHRcdFx0bGV0IHIgPSByaWdpZEJvZHkucm90YXRpb24oKSBhcyBRdWF0ZXJuaW9uO1xuXG5cdFx0XHRsZXQgcHJldmlvdXNTdGF0ZSA9IHRoaXMuc3RlcHBpbmdTdGF0ZS5wcmV2aW91c1N0YXRlW2hhbmRsZV07XG5cblx0XHRcdGlmIChwcmV2aW91c1N0YXRlKSB7XG5cdFx0XHRcdC8vIEdldCBwcmV2aW91cyBzaW11bGF0ZWQgd29ybGQgcG9zaXRpb25cblx0XHRcdFx0X21hdHJpeDRcblx0XHRcdFx0XHQuY29tcG9zZShwcmV2aW91c1N0YXRlLnBvc2l0aW9uIGFzIFZlY3RvcjMsIHJhcGllclF1YXRlcm5pb25Ub1F1YXRlcm5pb24ocHJldmlvdXNTdGF0ZS5yb3RhdGlvbiksIHN0YXRlLnNjYWxlKVxuXHRcdFx0XHRcdC5wcmVtdWx0aXBseShzdGF0ZS5pbnZlcnRlZFdvcmxkTWF0cml4KVxuXHRcdFx0XHRcdC5kZWNvbXBvc2UoX3Bvc2l0aW9uLCBfcm90YXRpb24sIF9zY2FsZSk7XG5cblx0XHRcdFx0Ly8gQXBwbHkgcHJldmlvdXMgdGljayBwb3NpdGlvblxuXHRcdFx0XHRpZiAoc3RhdGUubWVzaFR5cGUgPT0gJ21lc2gnKSB7XG5cdFx0XHRcdFx0c3RhdGUub2JqZWN0LnBvc2l0aW9uLmNvcHkoX3Bvc2l0aW9uKTtcblx0XHRcdFx0XHRzdGF0ZS5vYmplY3QucXVhdGVybmlvbi5jb3B5KF9yb3RhdGlvbik7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Ly8gR2V0IG5ldyBwb3NpdGlvblxuXHRcdFx0X21hdHJpeDRcblx0XHRcdFx0LmNvbXBvc2UodCwgcmFwaWVyUXVhdGVybmlvblRvUXVhdGVybmlvbihyKSwgc3RhdGUuc2NhbGUpXG5cdFx0XHRcdC5wcmVtdWx0aXBseShzdGF0ZS5pbnZlcnRlZFdvcmxkTWF0cml4KVxuXHRcdFx0XHQuZGVjb21wb3NlKF9wb3NpdGlvbiwgX3JvdGF0aW9uLCBfc2NhbGUpO1xuXG5cdFx0XHRpZiAoc3RhdGUubWVzaFR5cGUgPT0gJ2luc3RhbmNlZE1lc2gnKSB7XG5cdFx0XHRcdHN0YXRlLnNldE1hdHJpeChfbWF0cml4NCk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHQvLyBJbnRlcnBvbGF0ZSB0byBuZXcgcG9zaXRpb25cblx0XHRcdFx0c3RhdGUub2JqZWN0LnBvc2l0aW9uLmxlcnAoX3Bvc2l0aW9uLCBpbnRlcnBvbGF0aW9uQWxwaGEpO1xuXHRcdFx0XHRzdGF0ZS5vYmplY3QucXVhdGVybmlvbi5zbGVycChfcm90YXRpb24sIGludGVycG9sYXRpb25BbHBoYSk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cblx0XHRldmVudFF1ZXVlLmRyYWluQ29sbGlzaW9uRXZlbnRzKChoYW5kbGUxLCBoYW5kbGUyLCBzdGFydGVkKSA9PiB7XG5cdFx0XHRjb25zdCBzb3VyY2UxID0gdGhpcy5nZXRTb3VyY2VGcm9tQ29sbGlkZXJIYW5kbGUoaGFuZGxlMSk7XG5cdFx0XHRjb25zdCBzb3VyY2UyID0gdGhpcy5nZXRTb3VyY2VGcm9tQ29sbGlkZXJIYW5kbGUoaGFuZGxlMik7XG5cblx0XHRcdC8vIENvbGxpc2lvbiBFdmVudHNcblx0XHRcdGlmICghc291cmNlMT8uY29sbGlkZXIub2JqZWN0IHx8ICFzb3VyY2UyPy5jb2xsaWRlci5vYmplY3QpIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXG5cdFx0XHRjb25zdCBjb2xsaXNpb25QYXlsb2FkMSA9IHRoaXMuZ2V0Q29sbGlzaW9uUGF5bG9hZEZyb21Tb3VyY2Uoc291cmNlMSwgc291cmNlMik7XG5cdFx0XHRjb25zdCBjb2xsaXNpb25QYXlsb2FkMiA9IHRoaXMuZ2V0Q29sbGlzaW9uUGF5bG9hZEZyb21Tb3VyY2Uoc291cmNlMiwgc291cmNlMSk7XG5cblx0XHRcdGlmIChzdGFydGVkKSB7XG5cdFx0XHRcdHdvcmxkLmNvbnRhY3RQYWlyKHNvdXJjZTEuY29sbGlkZXIub2JqZWN0LCBzb3VyY2UyLmNvbGxpZGVyLm9iamVjdCwgKG1hbmlmb2xkLCBmbGlwcGVkKSA9PiB7XG5cdFx0XHRcdFx0LyogUmlnaWRCb2R5IGV2ZW50cyAqL1xuXHRcdFx0XHRcdHNvdXJjZTEucmlnaWRCb2R5LmV2ZW50cz8ub25Db2xsaXNpb25FbnRlcj8uKHsgLi4uY29sbGlzaW9uUGF5bG9hZDEsIG1hbmlmb2xkLCBmbGlwcGVkIH0pO1xuXHRcdFx0XHRcdHNvdXJjZTIucmlnaWRCb2R5LmV2ZW50cz8ub25Db2xsaXNpb25FbnRlcj8uKHsgLi4uY29sbGlzaW9uUGF5bG9hZDIsIG1hbmlmb2xkLCBmbGlwcGVkIH0pO1xuXG5cdFx0XHRcdFx0LyogQ29sbGlkZXIgZXZlbnRzICovXG5cdFx0XHRcdFx0c291cmNlMS5jb2xsaWRlci5ldmVudHM/Lm9uQ29sbGlzaW9uRW50ZXI/Lih7IC4uLmNvbGxpc2lvblBheWxvYWQxLCBtYW5pZm9sZCwgZmxpcHBlZCB9KTtcblx0XHRcdFx0XHRzb3VyY2UyLmNvbGxpZGVyLmV2ZW50cz8ub25Db2xsaXNpb25FbnRlcj8uKHsgLi4uY29sbGlzaW9uUGF5bG9hZDIsIG1hbmlmb2xkLCBmbGlwcGVkIH0pO1xuXHRcdFx0XHR9KTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHNvdXJjZTEucmlnaWRCb2R5LmV2ZW50cz8ub25Db2xsaXNpb25FeGl0Py4oY29sbGlzaW9uUGF5bG9hZDEpO1xuXHRcdFx0XHRzb3VyY2UyLnJpZ2lkQm9keS5ldmVudHM/Lm9uQ29sbGlzaW9uRXhpdD8uKGNvbGxpc2lvblBheWxvYWQyKTtcblx0XHRcdFx0c291cmNlMS5jb2xsaWRlci5ldmVudHM/Lm9uQ29sbGlzaW9uRXhpdD8uKGNvbGxpc2lvblBheWxvYWQxKTtcblx0XHRcdFx0c291cmNlMi5jb2xsaWRlci5ldmVudHM/Lm9uQ29sbGlzaW9uRXhpdD8uKGNvbGxpc2lvblBheWxvYWQyKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gU2Vuc29yIEludGVyc2VjdGlvbnNcblx0XHRcdGlmIChzdGFydGVkKSB7XG5cdFx0XHRcdGlmICh3b3JsZC5pbnRlcnNlY3Rpb25QYWlyKHNvdXJjZTEuY29sbGlkZXIub2JqZWN0LCBzb3VyY2UyLmNvbGxpZGVyLm9iamVjdCkpIHtcblx0XHRcdFx0XHRzb3VyY2UxLnJpZ2lkQm9keS5ldmVudHM/Lm9uSW50ZXJzZWN0aW9uRW50ZXI/Lihjb2xsaXNpb25QYXlsb2FkMSk7XG5cdFx0XHRcdFx0c291cmNlMi5yaWdpZEJvZHkuZXZlbnRzPy5vbkludGVyc2VjdGlvbkVudGVyPy4oY29sbGlzaW9uUGF5bG9hZDIpO1xuXHRcdFx0XHRcdHNvdXJjZTEuY29sbGlkZXIuZXZlbnRzPy5vbkludGVyc2VjdGlvbkVudGVyPy4oY29sbGlzaW9uUGF5bG9hZDEpO1xuXHRcdFx0XHRcdHNvdXJjZTIuY29sbGlkZXIuZXZlbnRzPy5vbkludGVyc2VjdGlvbkVudGVyPy4oY29sbGlzaW9uUGF5bG9hZDIpO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRzb3VyY2UxLnJpZ2lkQm9keS5ldmVudHM/Lm9uSW50ZXJzZWN0aW9uRXhpdD8uKGNvbGxpc2lvblBheWxvYWQxKTtcblx0XHRcdFx0c291cmNlMi5yaWdpZEJvZHkuZXZlbnRzPy5vbkludGVyc2VjdGlvbkV4aXQ/Lihjb2xsaXNpb25QYXlsb2FkMik7XG5cdFx0XHRcdHNvdXJjZTEuY29sbGlkZXIuZXZlbnRzPy5vbkludGVyc2VjdGlvbkV4aXQ/Lihjb2xsaXNpb25QYXlsb2FkMSk7XG5cdFx0XHRcdHNvdXJjZTIuY29sbGlkZXIuZXZlbnRzPy5vbkludGVyc2VjdGlvbkV4aXQ/Lihjb2xsaXNpb25QYXlsb2FkMik7XG5cdFx0XHR9XG5cdFx0fSk7XG5cblx0XHRldmVudFF1ZXVlLmRyYWluQ29udGFjdEZvcmNlRXZlbnRzKChldmVudCkgPT4ge1xuXHRcdFx0Y29uc3Qgc291cmNlMSA9IHRoaXMuZ2V0U291cmNlRnJvbUNvbGxpZGVySGFuZGxlKGV2ZW50LmNvbGxpZGVyMSgpKTtcblx0XHRcdGNvbnN0IHNvdXJjZTIgPSB0aGlzLmdldFNvdXJjZUZyb21Db2xsaWRlckhhbmRsZShldmVudC5jb2xsaWRlcjIoKSk7XG5cblx0XHRcdC8vIENvbGxpc2lvbiBFdmVudHNcblx0XHRcdGlmICghc291cmNlMT8uY29sbGlkZXIub2JqZWN0IHx8ICFzb3VyY2UyPy5jb2xsaWRlci5vYmplY3QpIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXG5cdFx0XHRjb25zdCBjb2xsaXNpb25QYXlsb2FkMSA9IHRoaXMuZ2V0Q29sbGlzaW9uUGF5bG9hZEZyb21Tb3VyY2Uoc291cmNlMSwgc291cmNlMik7XG5cdFx0XHRjb25zdCBjb2xsaXNpb25QYXlsb2FkMiA9IHRoaXMuZ2V0Q29sbGlzaW9uUGF5bG9hZEZyb21Tb3VyY2Uoc291cmNlMiwgc291cmNlMSk7XG5cblx0XHRcdHNvdXJjZTEucmlnaWRCb2R5LmV2ZW50cz8ub25Db250YWN0Rm9yY2U/Lih7XG5cdFx0XHRcdC4uLmNvbGxpc2lvblBheWxvYWQxLFxuXHRcdFx0XHR0b3RhbEZvcmNlOiBldmVudC50b3RhbEZvcmNlKCksXG5cdFx0XHRcdHRvdGFsRm9yY2VNYWduaXR1ZGU6IGV2ZW50LnRvdGFsRm9yY2VNYWduaXR1ZGUoKSxcblx0XHRcdFx0bWF4Rm9yY2VEaXJlY3Rpb246IGV2ZW50Lm1heEZvcmNlRGlyZWN0aW9uKCksXG5cdFx0XHRcdG1heEZvcmNlTWFnbml0dWRlOiBldmVudC5tYXhGb3JjZU1hZ25pdHVkZSgpLFxuXHRcdFx0fSk7XG5cblx0XHRcdHNvdXJjZTIucmlnaWRCb2R5LmV2ZW50cz8ub25Db250YWN0Rm9yY2U/Lih7XG5cdFx0XHRcdC4uLmNvbGxpc2lvblBheWxvYWQyLFxuXHRcdFx0XHR0b3RhbEZvcmNlOiBldmVudC50b3RhbEZvcmNlKCksXG5cdFx0XHRcdHRvdGFsRm9yY2VNYWduaXR1ZGU6IGV2ZW50LnRvdGFsRm9yY2VNYWduaXR1ZGUoKSxcblx0XHRcdFx0bWF4Rm9yY2VEaXJlY3Rpb246IGV2ZW50Lm1heEZvcmNlRGlyZWN0aW9uKCksXG5cdFx0XHRcdG1heEZvcmNlTWFnbml0dWRlOiBldmVudC5tYXhGb3JjZU1hZ25pdHVkZSgpLFxuXHRcdFx0fSk7XG5cblx0XHRcdHNvdXJjZTEuY29sbGlkZXIuZXZlbnRzPy5vbkNvbnRhY3RGb3JjZT8uKHtcblx0XHRcdFx0Li4uY29sbGlzaW9uUGF5bG9hZDEsXG5cdFx0XHRcdHRvdGFsRm9yY2U6IGV2ZW50LnRvdGFsRm9yY2UoKSxcblx0XHRcdFx0dG90YWxGb3JjZU1hZ25pdHVkZTogZXZlbnQudG90YWxGb3JjZU1hZ25pdHVkZSgpLFxuXHRcdFx0XHRtYXhGb3JjZURpcmVjdGlvbjogZXZlbnQubWF4Rm9yY2VEaXJlY3Rpb24oKSxcblx0XHRcdFx0bWF4Rm9yY2VNYWduaXR1ZGU6IGV2ZW50Lm1heEZvcmNlTWFnbml0dWRlKCksXG5cdFx0XHR9KTtcblxuXHRcdFx0c291cmNlMi5jb2xsaWRlci5ldmVudHM/Lm9uQ29udGFjdEZvcmNlPy4oe1xuXHRcdFx0XHQuLi5jb2xsaXNpb25QYXlsb2FkMixcblx0XHRcdFx0dG90YWxGb3JjZTogZXZlbnQudG90YWxGb3JjZSgpLFxuXHRcdFx0XHR0b3RhbEZvcmNlTWFnbml0dWRlOiBldmVudC50b3RhbEZvcmNlTWFnbml0dWRlKCksXG5cdFx0XHRcdG1heEZvcmNlRGlyZWN0aW9uOiBldmVudC5tYXhGb3JjZURpcmVjdGlvbigpLFxuXHRcdFx0XHRtYXhGb3JjZU1hZ25pdHVkZTogZXZlbnQubWF4Rm9yY2VNYWduaXR1ZGUoKSxcblx0XHRcdH0pO1xuXHRcdH0pO1xuXG5cdFx0d29ybGQuZm9yRWFjaEFjdGl2ZVJpZ2lkQm9keSgoKSA9PiB7XG5cdFx0XHR0aGlzLnN0b3JlLnNuYXBzaG90LmludmFsaWRhdGUoKTtcblx0XHR9KTtcblx0fVxuXG5cdHByaXZhdGUgZ2V0U291cmNlRnJvbUNvbGxpZGVySGFuZGxlKGhhbmRsZTogQ29sbGlkZXJIYW5kbGUpIHtcblx0XHRjb25zdCB3b3JsZCA9IHRoaXMud29ybGRTaW5nbGV0b24oKTtcblx0XHRpZiAoIXdvcmxkKSByZXR1cm47XG5cblx0XHRjb25zdCBjb2xsaWRlciA9IHdvcmxkLnByb3h5LmdldENvbGxpZGVyKGhhbmRsZSk7XG5cdFx0Y29uc3QgY29sRXZlbnRzID0gdGhpcy5jb2xsaWRlckV2ZW50cy5nZXQoaGFuZGxlKTtcblx0XHRjb25zdCBjb2xsaWRlclN0YXRlID0gdGhpcy5jb2xsaWRlclN0YXRlcy5nZXQoaGFuZGxlKTtcblxuXHRcdGNvbnN0IHJpZ2lkQm9keUhhbmRsZSA9IGNvbGxpZGVyLnBhcmVudCgpPy5oYW5kbGU7XG5cdFx0Y29uc3QgcmlnaWRCb2R5ID0gcmlnaWRCb2R5SGFuZGxlICE9PSB1bmRlZmluZWQgPyB3b3JsZC5wcm94eS5nZXRSaWdpZEJvZHkocmlnaWRCb2R5SGFuZGxlKSA6IHVuZGVmaW5lZDtcblx0XHRjb25zdCByaWdpZEJvZHlFdmVudHMgPVxuXHRcdFx0cmlnaWRCb2R5ICYmIHJpZ2lkQm9keUhhbmRsZSAhPT0gdW5kZWZpbmVkID8gdGhpcy5yaWdpZEJvZHlFdmVudHMuZ2V0KHJpZ2lkQm9keUhhbmRsZSkgOiB1bmRlZmluZWQ7XG5cdFx0Y29uc3QgcmlnaWRCb2R5U3RhdGUgPSByaWdpZEJvZHlIYW5kbGUgIT09IHVuZGVmaW5lZCA/IHRoaXMucmlnaWRCb2R5U3RhdGVzLmdldChyaWdpZEJvZHlIYW5kbGUpIDogdW5kZWZpbmVkO1xuXG5cdFx0cmV0dXJuIHtcblx0XHRcdGNvbGxpZGVyOiB7IG9iamVjdDogY29sbGlkZXIsIGV2ZW50czogY29sRXZlbnRzLCBzdGF0ZTogY29sbGlkZXJTdGF0ZSB9LFxuXHRcdFx0cmlnaWRCb2R5OiB7IG9iamVjdDogcmlnaWRCb2R5LCBldmVudHM6IHJpZ2lkQm9keUV2ZW50cywgc3RhdGU6IHJpZ2lkQm9keVN0YXRlIH0sXG5cdFx0fSBhcyBOZ3RyQ29sbGlzaW9uU291cmNlO1xuXHR9XG5cblx0cHJpdmF0ZSBnZXRDb2xsaXNpb25QYXlsb2FkRnJvbVNvdXJjZSh0YXJnZXQ6IE5ndHJDb2xsaXNpb25Tb3VyY2UsIG90aGVyOiBOZ3RyQ29sbGlzaW9uU291cmNlKTogTmd0ckNvbGxpc2lvblBheWxvYWQge1xuXHRcdHJldHVybiB7XG5cdFx0XHR0YXJnZXQ6IHtcblx0XHRcdFx0cmlnaWRCb2R5OiB0YXJnZXQucmlnaWRCb2R5Lm9iamVjdCxcblx0XHRcdFx0Y29sbGlkZXI6IHRhcmdldC5jb2xsaWRlci5vYmplY3QsXG5cdFx0XHRcdGNvbGxpZGVyT2JqZWN0OiB0YXJnZXQuY29sbGlkZXIuc3RhdGU/Lm9iamVjdCxcblx0XHRcdFx0cmlnaWRCb2R5T2JqZWN0OiB0YXJnZXQucmlnaWRCb2R5LnN0YXRlPy5vYmplY3QsXG5cdFx0XHR9LFxuXHRcdFx0b3RoZXI6IHtcblx0XHRcdFx0cmlnaWRCb2R5OiBvdGhlci5yaWdpZEJvZHkub2JqZWN0LFxuXHRcdFx0XHRjb2xsaWRlcjogb3RoZXIuY29sbGlkZXIub2JqZWN0LFxuXHRcdFx0XHRjb2xsaWRlck9iamVjdDogb3RoZXIuY29sbGlkZXIuc3RhdGU/Lm9iamVjdCxcblx0XHRcdFx0cmlnaWRCb2R5T2JqZWN0OiBvdGhlci5yaWdpZEJvZHkuc3RhdGU/Lm9iamVjdCxcblx0XHRcdH0sXG5cdFx0fTtcblx0fVxufVxuIl19
|
|
@@ -256,10 +256,10 @@ export class NgtrAnyCollider {
|
|
|
256
256
|
}
|
|
257
257
|
return scaledVerts;
|
|
258
258
|
}
|
|
259
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
260
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.
|
|
259
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: NgtrAnyCollider, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
260
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.11", type: NgtrAnyCollider, isStandalone: true, selector: "ngt-object3D[ngtrCollider]", inputs: { position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null }, rotation: { classPropertyName: "rotation", publicName: "rotation", isSignal: true, isRequired: false, transformFunction: null }, scale: { classPropertyName: "scale", publicName: "scale", isSignal: true, isRequired: false, transformFunction: null }, quaternion: { classPropertyName: "quaternion", publicName: "quaternion", isSignal: true, isRequired: false, transformFunction: null }, userData: { classPropertyName: "userData", publicName: "userData", isSignal: true, isRequired: false, transformFunction: null }, name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, shape: { classPropertyName: "shape", publicName: "ngtrCollider", isSignal: true, isRequired: false, transformFunction: null }, args: { classPropertyName: "args", publicName: "args", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { shape: "ngtrColliderChange", args: "argsChange", collisionEnter: "collisionEnter", collisionExit: "collisionExit", intersectionEnter: "intersectionEnter", intersectionExit: "intersectionExit", contactForce: "contactForce" }, host: { properties: { "position": "position()", "rotation": "rotation()", "scale": "scale()", "quaternion": "quaternion()", "userData": "userData()", "name": "name()" } }, ngImport: i0 });
|
|
261
261
|
}
|
|
262
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
262
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: NgtrAnyCollider, decorators: [{
|
|
263
263
|
type: Directive,
|
|
264
264
|
args: [{
|
|
265
265
|
selector: 'ngt-object3D[ngtrCollider]',
|
|
@@ -501,8 +501,8 @@ export class NgtrRigidBody {
|
|
|
501
501
|
meshType,
|
|
502
502
|
};
|
|
503
503
|
}
|
|
504
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
505
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.
|
|
504
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: NgtrRigidBody, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
505
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.11", type: NgtrRigidBody, isStandalone: true, selector: "ngt-object3D[ngtrRigidBody]", inputs: { type: { classPropertyName: "type", publicName: "ngtrRigidBody", isSignal: true, isRequired: false, transformFunction: null }, position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null }, rotation: { classPropertyName: "rotation", publicName: "rotation", isSignal: true, isRequired: false, transformFunction: null }, scale: { classPropertyName: "scale", publicName: "scale", isSignal: true, isRequired: false, transformFunction: null }, quaternion: { classPropertyName: "quaternion", publicName: "quaternion", isSignal: true, isRequired: false, transformFunction: null }, userData: { classPropertyName: "userData", publicName: "userData", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { wake: "wake", sleep: "sleep", collisionEnter: "collisionEnter", collisionExit: "collisionExit", intersectionEnter: "intersectionEnter", intersectionExit: "intersectionExit", contactForce: "contactForce" }, host: { properties: { "position": "position()", "rotation": "rotation()", "scale": "scale()", "quaternion": "quaternion()", "userData": "userData()" } }, exportAs: ["rigidBody"], ngImport: i0, template: `
|
|
506
506
|
<ng-content />
|
|
507
507
|
@for (childColliderOption of childColliderOptions(); track $index) {
|
|
508
508
|
<ngt-object3D
|
|
@@ -517,7 +517,7 @@ export class NgtrRigidBody {
|
|
|
517
517
|
}
|
|
518
518
|
`, isInline: true, dependencies: [{ kind: "directive", type: NgtrAnyCollider, selector: "ngt-object3D[ngtrCollider]", inputs: ["position", "rotation", "scale", "quaternion", "userData", "name", "options", "ngtrCollider", "args"], outputs: ["ngtrColliderChange", "argsChange", "collisionEnter", "collisionExit", "intersectionEnter", "intersectionExit", "contactForce"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
519
519
|
}
|
|
520
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
520
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: NgtrRigidBody, decorators: [{
|
|
521
521
|
type: Component,
|
|
522
522
|
args: [{
|
|
523
523
|
selector: 'ngt-object3D[ngtrRigidBody]',
|
|
@@ -549,4 +549,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
|
|
|
549
549
|
imports: [NgtrAnyCollider],
|
|
550
550
|
}]
|
|
551
551
|
}], ctorParameters: () => [] });
|
|
552
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmlnaWQtYm9keS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvcmFwaWVyL3NyYy9saWIvcmlnaWQtYm9keS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ04sdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1Isc0JBQXNCLEVBQ3RCLFNBQVMsRUFDVCxNQUFNLEVBQ04sVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBQ0wsS0FBSyxFQUNMLE1BQU0sRUFDTixTQUFTLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBWSxZQUFZLEVBQWEsYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0csT0FBTyxFQUNOLE1BQU0sRUFDTixVQUFVLEVBQ1YsYUFBYSxFQUNiLFdBQVcsRUFLWCxJQUFJLEdBQ0osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZELE9BQU8sRUFBVyxRQUFRLEVBQUUsT0FBTyxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQ25ELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDeEMsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFjNUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sU0FBUyxDQUFDOztBQUVoRCxNQUFNLHNCQUFzQixHQUF3QjtJQUNuRCxXQUFXLEVBQUUsQ0FBQztDQUNkLENBQUM7QUFjRixNQUFNLE9BQU8sZUFBZTtJQUMzQixRQUFRLEdBQUcsS0FBSyxDQUF5QixDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwRCxRQUFRLEdBQUcsS0FBSyxDQUF1QixDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsRCxLQUFLLEdBQUcsS0FBSyxDQUF5QixDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqRCxVQUFVLEdBQUcsS0FBSyxDQUE0QixDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUQsUUFBUSxHQUFHLEtBQUssQ0FBc0MsRUFBRSxDQUFDLENBQUM7SUFDMUQsSUFBSSxHQUFHLEtBQUssRUFBbUMsQ0FBQztJQUNoRCxPQUFPLEdBQUcsS0FBSyxDQUFDLHNCQUFzQixFQUFFLEVBQUUsU0FBUyxFQUFFLFdBQVcsQ0FBQyx1QkFBdUIsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUU3RixzRkFBc0Y7SUFDdEYsS0FBSyxHQUFHLEtBQUssQ0FBZ0MsU0FBUyxFQUFFLEVBQUUsS0FBSyxFQUFFLGNBQWMsRUFBRSxDQUFDLENBQUM7SUFDbkYsSUFBSSxHQUFHLEtBQUssQ0FBWSxFQUFFLENBQUMsQ0FBQztJQUU1QixjQUFjLEdBQUcsTUFBTSxFQUE2QixDQUFDO0lBQ3JELGFBQWEsR0FBRyxNQUFNLEVBQTRCLENBQUM7SUFDbkQsaUJBQWlCLEdBQUcsTUFBTSxFQUFnQyxDQUFDO0lBQzNELGdCQUFnQixHQUFHLE1BQU0sRUFBK0IsQ0FBQztJQUN6RCxZQUFZLEdBQUcsTUFBTSxFQUEyQixDQUFDO0lBRXpDLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQztJQUN0QyxlQUFlLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztJQUN4RCxZQUFZLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDbEQsUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQzFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLHFCQUFxQixDQUFDLENBQUM7SUFDaEUsV0FBVyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBQ2hELHNCQUFzQixHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLHdCQUF3QixDQUFDLENBQUM7SUFDdEUsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsc0JBQXNCLENBQUMsQ0FBQztJQUNsRSxXQUFXLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDaEQsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ2xDLGNBQWMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ3RELE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQztJQUV4QyxTQUFTLEdBQUcsTUFBTSxDQUFDLGFBQWEsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3RELE9BQU8sR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDdEMsU0FBUyxHQUFHLE1BQU0sQ0FBdUIsVUFBVSxDQUFDLENBQUM7SUFFN0MsVUFBVSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7UUFDbEMsTUFBTSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsR0FBRztZQUNyQixJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ1osSUFBSSxDQUFDLElBQUksRUFBMEU7U0FDbkYsQ0FBQztRQUVGLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUU1Qiw0QkFBNEI7UUFDNUIsSUFBSSxLQUFLLEtBQUssYUFBYSxFQUFFLENBQUM7WUFDN0IsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBd0MsQ0FBQztZQUMzRCxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1lBQ3pCLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7WUFDekIsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztZQUV6QixPQUFPLE1BQU0sQ0FBQztRQUNmLENBQUM7UUFFRCx3Q0FBd0M7UUFDeEMsSUFBSSxLQUFLLEtBQUssU0FBUyxJQUFJLEtBQUssS0FBSyxZQUFZLEVBQUUsQ0FBQztZQUNuRCxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFzQixFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUNoRixPQUFPLE1BQU0sQ0FBQztRQUNmLENBQUM7UUFFRCwwQkFBMEI7UUFDMUIsTUFBTSxVQUFVLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ25ILE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsR0FBSSxHQUFjLENBQUMsQ0FBQztJQUN4RSxDQUFDLENBQUMsQ0FBQztJQUVLLFFBQVEsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1FBQ2hDLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDckQsSUFBSSxDQUFDLGNBQWM7WUFBRSxPQUFPLElBQUksQ0FBQztRQUVqQyxNQUFNLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBRWhHLGtEQUFrRDtRQUNsRCxNQUFNLElBQUksR0FBRyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUMxQyxJQUFJLENBQUMsSUFBSTtZQUFFLE9BQU8sSUFBSSxDQUFDO1FBRXZCLE9BQU8sY0FBYyxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLFNBQVMsSUFBSSxTQUFTLENBQUMsQ0FBQztJQUMxRSxDQUFDLENBQUMsQ0FBQztJQUVIO1FBQ0MsTUFBTSxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUVyQixNQUFNLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRTtZQUNwQixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMseUJBQXlCLEVBQUUsQ0FBQztZQUNqRCxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzlCLENBQUMsQ0FBQyxDQUFDO1FBRUgsTUFBTSxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUU7WUFDcEIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7WUFDbEQsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQztRQUM5QixDQUFDLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDWCxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztZQUM1QixJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztRQUNuQyxDQUFDLENBQUMsQ0FBQztJQUNKLENBQUM7SUFFRCxJQUFJLFVBQVU7UUFDYixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxJQUFJLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVELFFBQVEsQ0FBQyxLQUF3QjtRQUNoQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2QixDQUFDO0lBRUQsT0FBTyxDQUFDLElBQWU7UUFDdEIsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDckIsQ0FBQztJQUVPLHlCQUF5QjtRQUNoQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDakMsSUFBSSxDQUFDLFFBQVE7WUFBRSxPQUFPO1FBRXRCLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDckQsSUFBSSxDQUFDLGNBQWM7WUFBRSxPQUFPO1FBRTVCLE1BQU0sVUFBVSxHQUFHLGFBQWEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQy9ELElBQUksQ0FBQyxVQUFVO1lBQUUsT0FBTztRQUV4QixNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDbkMsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFFLE1BQW1CLENBQUMsVUFBVTtZQUFFLE9BQU87UUFFeEQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUNyQyxRQUFRLEVBQ1IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLEVBQzVCLElBQUksQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDLGFBQWEsQ0FDdkMsQ0FBQztRQUNGLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRXhELE9BQU8sR0FBRyxFQUFFO1lBQ1gsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNwRCxJQUFJLGNBQWMsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO2dCQUN2RCxjQUFjLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDckQsQ0FBQztRQUNGLENBQUMsQ0FBQztJQUNILENBQUM7SUFFTywwQkFBMEI7UUFDakMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxRQUFRO1lBQUUsT0FBTztRQUV0QixNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3JELElBQUksQ0FBQyxjQUFjO1lBQUUsT0FBTztRQUU1QixNQUFNLGNBQWMsR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3ZELE1BQU0sYUFBYSxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDckQsTUFBTSxpQkFBaUIsR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDN0QsTUFBTSxnQkFBZ0IsR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDM0QsTUFBTSxZQUFZLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUVuRCxNQUFNLGlCQUFpQixHQUFHLFdBQVcsQ0FDcEMsSUFBSSxDQUFDLGNBQWMsRUFDbkIsSUFBSSxDQUFDLGFBQWEsRUFDbEIsSUFBSSxDQUFDLGlCQUFpQixFQUN0QixJQUFJLENBQUMsZ0JBQWdCLEVBQ3JCLElBQUksQ0FBQyxTQUFTLEVBQUUsY0FBYyxFQUM5QixJQUFJLENBQUMsU0FBUyxFQUFFLGFBQWEsRUFDN0IsSUFBSSxDQUFDLFNBQVMsRUFBRSxpQkFBaUIsRUFDakMsSUFBSSxDQUFDLFNBQVMsRUFBRSxnQkFBZ0IsQ0FDaEMsQ0FBQztRQUNGLE1BQU0sb0JBQW9CLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxZQUFZLENBQUMsQ0FBQztRQUUxRixJQUFJLGlCQUFpQixJQUFJLG9CQUFvQixFQUFFLENBQUM7WUFDL0MsUUFBUSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLEdBQUcsWUFBWSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDN0YsQ0FBQzthQUFNLElBQUksaUJBQWlCLEVBQUUsQ0FBQztZQUM5QixRQUFRLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3pELENBQUM7YUFBTSxJQUFJLG9CQUFvQixFQUFFLENBQUM7WUFDakMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUM3RCxDQUFDO1FBRUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUU7WUFDaEQsZ0JBQWdCLEVBQUUsY0FBYztZQUNoQyxlQUFlLEVBQUUsYUFBYTtZQUM5QixtQkFBbUIsRUFBRSxpQkFBaUI7WUFDdEMsa0JBQWtCLEVBQUUsZ0JBQWdCO1lBQ3BDLGNBQWMsRUFBRSxZQUFZO1NBQzVCLENBQUMsQ0FBQztRQUNILE9BQU8sR0FBRyxFQUFFO1lBQ1gsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNyRCxDQUFDLENBQUM7SUFDSCxDQUFDO0lBRU8sb0JBQW9CO1FBQzNCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNqQyxJQUFJLENBQUMsUUFBUTtZQUFFLE9BQU87UUFFdEIsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUNyRCxJQUFJLENBQUMsY0FBYztZQUFFLE9BQU87UUFFNUIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMvRCxJQUFJLENBQUMsS0FBSztZQUFFLE9BQU87UUFFbkIsMERBQTBEO1FBQzFELE1BQU0sZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFPLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3RFLE1BQU0seUJBQXlCLEdBQUcsS0FBSyxDQUFDLFdBQVcsRUFBRSxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUM7UUFFbEYsS0FBSyxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFNUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRXhDLElBQUkseUJBQXlCLEVBQUUsQ0FBQztZQUMvQixRQUFRLENBQUMsV0FBVyxDQUFDLHlCQUF5QixDQUFDLENBQUM7UUFDakQsQ0FBQztRQUVELFFBQVEsQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUVqRCxJQUFJLFFBQVEsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDO1lBQ3ZCLFFBQVEsQ0FBQyx1QkFBdUIsQ0FBQztnQkFDaEMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDLEdBQUcsZ0JBQWdCLENBQUMsQ0FBQztnQkFDbkMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDLEdBQUcsZ0JBQWdCLENBQUMsQ0FBQztnQkFDbkMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDLEdBQUcsZ0JBQWdCLENBQUMsQ0FBQzthQUNuQyxDQUFDLENBQUM7WUFDSCxRQUFRLENBQUMsb0JBQW9CLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDMUMsQ0FBQzthQUFNLENBQUM7WUFDUCxRQUFRLENBQUMsY0FBYyxDQUFDO2dCQUN2QixDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUMsR0FBRyxnQkFBZ0IsQ0FBQyxDQUFDO2dCQUNuQyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUMsR0FBRyxnQkFBZ0IsQ0FBQyxDQUFDO2dCQUNuQyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUMsR0FBRyxnQkFBZ0IsQ0FBQyxDQUFDO2FBQ25DLENBQUMsQ0FBQztZQUNILFFBQVEsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDakMsQ0FBQztRQUVELE1BQU0sQ0FDTCxNQUFNLEVBQ04sZUFBZSxFQUNmLFlBQVksRUFDWixRQUFRLEVBQ1IsbUJBQW1CLEVBQ25CLFdBQVcsRUFDWCxzQkFBc0IsRUFDdEIsb0JBQW9CLEVBQ3BCLFdBQVcsRUFDWCxHQUFHO1lBQ0gsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNiLElBQUksQ0FBQyxlQUFlLEVBQUU7WUFDdEIsSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNuQixJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2YsSUFBSSxDQUFDLG1CQUFtQixFQUFFO1lBQzFCLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDbEIsSUFBSSxDQUFDLHNCQUFzQixFQUFFO1lBQzdCLElBQUksQ0FBQyxvQkFBb0IsRUFBRTtZQUMzQixJQUFJLENBQUMsV0FBVyxFQUFFO1NBQ2xCLENBQUM7UUFFRixJQUFJLE1BQU0sS0FBSyxTQUFTO1lBQUUsUUFBUSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNyRCxJQUFJLGVBQWUsS0FBSyxTQUFTO1lBQUUsUUFBUSxDQUFDLGtCQUFrQixDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ2hGLElBQUksWUFBWSxLQUFLLFNBQVM7WUFBRSxRQUFRLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3ZFLElBQUksUUFBUSxLQUFLLFNBQVM7WUFBRSxRQUFRLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzNELElBQUksbUJBQW1CLEtBQUssU0FBUztZQUFFLFFBQVEsQ0FBQyxzQkFBc0IsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQzVGLElBQUksV0FBVyxLQUFLLFNBQVM7WUFBRSxRQUFRLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3BFLElBQUksc0JBQXNCLEtBQUssU0FBUztZQUFFLFFBQVEsQ0FBQyx5QkFBeUIsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBQ3JHLElBQUksb0JBQW9CLEtBQUssU0FBUztZQUFFLFFBQVEsQ0FBQyx1QkFBdUIsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQy9GLElBQUksV0FBVyxLQUFLLFNBQVM7WUFBRSxRQUFRLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFFTywwQkFBMEI7UUFDakMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxRQUFRO1lBQUUsT0FBTztRQUV0QixNQUFNLENBQUMsSUFBSSxFQUFFLGNBQWMsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxJQUFJLENBQUMsY0FBYyxFQUFFLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFFN0YsSUFBSSxPQUFPLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDM0IsSUFBSSxJQUFJLEtBQUssU0FBUyxJQUFJLGNBQWMsS0FBSyxTQUFTLEVBQUUsQ0FBQztnQkFDeEQsTUFBTSxJQUFJLEtBQUssQ0FBQyxvRUFBb0UsQ0FBQyxDQUFDO1lBQ3ZGLENBQUM7WUFFRCxRQUFRLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzdCLE9BQU87UUFDUixDQUFDO1FBRUQsSUFBSSxJQUFJLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDeEIsSUFBSSxjQUFjLEtBQUssU0FBUyxFQUFFLENBQUM7Z0JBQ2xDLE1BQU0sSUFBSSxLQUFLLENBQUMsd0RBQXdELENBQUMsQ0FBQztZQUMzRSxDQUFDO1lBQ0QsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN2QixPQUFPO1FBQ1IsQ0FBQztRQUVELElBQUksY0FBYyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ2xDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FDekIsY0FBYyxDQUFDLElBQUksRUFDbkIsY0FBYyxDQUFDLFlBQVksRUFDM0IsY0FBYyxDQUFDLHVCQUF1QixFQUN0QyxjQUFjLENBQUMsd0JBQXdCLENBQ3ZDLENBQUM7WUFDRixPQUFPO1FBQ1IsQ0FBQztJQUNGLENBQUM7SUFFTyxtQkFBbUIsQ0FDMUIsUUFBa0IsRUFDbEIsTUFBZ0IsRUFDaEIsZUFBaUM7UUFFakMsT0FBTyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsZUFBZSxJQUFJLFNBQVMsRUFBRSxNQUFNLEVBQUUsQ0FBQztJQUN4RSxDQUFDO0lBRU8sYUFBYSxDQUFDLFFBQTJCLEVBQUUsS0FBYztRQUNoRSxNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRXpDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQzlDLFdBQVcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQztZQUM5QixXQUFXLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ2xDLFdBQVcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDbkMsQ0FBQztRQUVELE9BQU8sV0FBVyxDQUFDO0lBQ3BCLENBQUM7dUdBblRXLGVBQWU7MkZBQWYsZUFBZTs7MkZBQWYsZUFBZTtrQkFaM0IsU0FBUzttQkFBQztvQkFDVixRQUFRLEVBQUUsNEJBQTRCO29CQUN0QyxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsSUFBSSxFQUFFO3dCQUNMLFlBQVksRUFBRSxZQUFZO3dCQUMxQixZQUFZLEVBQUUsWUFBWTt3QkFDMUIsU0FBUyxFQUFFLFNBQVM7d0JBQ3BCLGNBQWMsRUFBRSxjQUFjO3dCQUM5QixZQUFZLEVBQUUsWUFBWTt3QkFDMUIsUUFBUSxFQUFFLFFBQVE7cUJBQ2xCO2lCQUNEOztBQXVURCxNQUFNLG1CQUFtQixHQUFzQztJQUM5RCxLQUFLLEVBQUUsQ0FBQztJQUNSLE9BQU8sRUFBRSxDQUFDO0lBQ1YsaUJBQWlCLEVBQUUsQ0FBQztJQUNwQixpQkFBaUIsRUFBRSxDQUFDO0NBQ3BCLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBeUI7SUFDNUQsUUFBUSxFQUFFLElBQUk7SUFDZCxjQUFjLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN6QixlQUFlLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMxQixZQUFZLEVBQUUsQ0FBQztJQUNmLGNBQWMsRUFBRSxDQUFDO0lBQ2pCLEdBQUcsRUFBRSxLQUFLO0lBQ1YsaUJBQWlCLEVBQUUsQ0FBQztJQUNwQixXQUFXLEVBQUUsQ0FBQztDQUNkLENBQUM7QUErQkYsTUFBTSxPQUFPLGFBQWE7SUFDekIsSUFBSSxHQUFHLEtBQUssQ0FBQyxTQUFTLEVBQUU7UUFDdkIsS0FBSyxFQUFFLGVBQWU7UUFDdEIsU0FBUyxFQUFFLENBQUMsS0FBeUMsRUFBRSxFQUFFO1lBQ3hELElBQUksS0FBSyxLQUFLLEVBQUUsSUFBSSxLQUFLLEtBQUssU0FBUztnQkFBRSxPQUFPLFNBQThCLENBQUM7WUFDL0UsT0FBTyxLQUFLLENBQUM7UUFDZCxDQUFDO0tBQ0QsQ0FBQyxDQUFDO0lBQ0gsUUFBUSxHQUFHLEtBQUssQ0FBeUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEQsUUFBUSxHQUFHLEtBQUssQ0FBdUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEQsS0FBSyxHQUFHLEtBQUssQ0FBeUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakQsVUFBVSxHQUFHLEtBQUssQ0FBNEIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVELFFBQVEsR0FBRyxLQUFLLENBQXNDLEVBQUUsQ0FBQyxDQUFDO0lBQzFELE9BQU8sR0FBRyxLQUFLLENBQUMsdUJBQXVCLEVBQUUsRUFBRSxTQUFTLEVBQUUsV0FBVyxDQUFDLHVCQUF1QixDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBRTlGLElBQUksR0FBRyxNQUFNLEVBQVEsQ0FBQztJQUN0QixLQUFLLEdBQUcsTUFBTSxFQUFRLENBQUM7SUFDdkIsY0FBYyxHQUFHLE1BQU0sRUFBNkIsQ0FBQztJQUNyRCxhQUFhLEdBQUcsTUFBTSxFQUE0QixDQUFDO0lBQ25ELGlCQUFpQixHQUFHLE1BQU0sRUFBZ0MsQ0FBQztJQUMzRCxnQkFBZ0IsR0FBRyxNQUFNLEVBQStCLENBQUM7SUFDekQsWUFBWSxHQUFHLE1BQU0sRUFBMkIsQ0FBQztJQUV6QyxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDMUMsU0FBUyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQzVDLGNBQWMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ3RELFlBQVksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxjQUFjLENBQUMsQ0FBQztJQUNsRCxjQUFjLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztJQUN0RCxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDaEMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztJQUM1RCwwQkFBMEIsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSw0QkFBNEIsQ0FBQyxDQUFDO0lBQzlFLGFBQWEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxlQUFlLENBQUMsQ0FBQztJQUNwRCxjQUFjLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztJQUN0RCxhQUFhLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsZUFBZSxDQUFDLENBQUM7SUFDcEQsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztJQUMxRCxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO0lBQzFELG1CQUFtQixHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLHFCQUFxQixDQUFDLENBQUM7SUFDaEUsZUFBZSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLGlCQUFpQixDQUFDLENBQUM7SUFDeEQsY0FBYyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLGdCQUFnQixDQUFDLENBQUM7SUFFOUQsU0FBUyxHQUFHLE1BQU0sQ0FBdUIsVUFBVSxDQUFDLENBQUM7SUFDN0MsT0FBTyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUU5QixRQUFRLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDNUQsUUFBUSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7UUFDaEMsTUFBTSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQzNGLE9BQU8sSUFBSSxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzFELENBQUMsQ0FBQyxDQUFDO0lBQ0gsU0FBUyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7UUFDekIsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUNyRCxJQUFJLENBQUMsY0FBYztZQUFFLE9BQU8sSUFBSSxDQUFDO1FBQ2pDLE9BQU8sY0FBYyxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDOUQsQ0FBQyxDQUFDLENBQUM7SUFFTyxvQkFBb0IsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1FBQzlDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNuQywwRkFBMEY7UUFDMUYsSUFBSSxTQUFTLEtBQUssS0FBSztZQUFFLE9BQU8sRUFBRSxDQUFDO1FBRW5DLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNsRCxzSEFBc0g7UUFDdEgsSUFBSSxnQkFBZ0IsS0FBSyxLQUFLLElBQUksU0FBUyxLQUFLLFNBQVM7WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUVyRSxNQUFNLE9BQU8sR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3hDLDJEQUEyRDtRQUMzRCxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVM7WUFBRSxPQUFPLENBQUMsU0FBUyxHQUFHLGdCQUFnQixDQUFDO1FBRTdELE1BQU0sZ0JBQWdCLEdBQUcsYUFBYSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDckUsSUFBSSxDQUFDLGdCQUFnQjtZQUFFLE9BQU8sRUFBRSxDQUFDO1FBRWpDLGdEQUFnRDtRQUNoRCxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsRUFBRSxnQkFBZ0IsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO1FBQzVFLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBRSxNQUFtQixDQUFDLFVBQVU7WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUUzRCxPQUFPLHFCQUFxQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztJQUMzRSxDQUFDLENBQUMsQ0FBQztJQUVIO1FBQ0MsTUFBTSxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUVyQixNQUFNLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRTtZQUNwQixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztZQUNsRCxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzlCLENBQUMsQ0FBQyxDQUFDO1FBRUgsTUFBTSxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUU7WUFDcEIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLDJCQUEyQixFQUFFLENBQUM7WUFDbkQsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQztRQUM5QixDQUFDLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDWCxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUM5QixDQUFDLENBQUMsQ0FBQztJQUNKLENBQUM7SUFFTywwQkFBMEI7UUFDakMsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUNyRCxJQUFJLENBQUMsY0FBYztZQUFFLE9BQU87UUFFNUIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQzlCLElBQUksQ0FBQyxJQUFJO1lBQUUsT0FBTztRQUVsQixNQUFNLGNBQWMsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBRXRELE1BQU0sVUFBVSxHQUFHLGFBQWEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQy9ELElBQUksQ0FBQyxVQUFVO1lBQUUsT0FBTztRQUV4QixNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDbkMsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFFLE1BQW1CLENBQUMsVUFBVTtZQUFFLE9BQU87UUFFeEQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzVFLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLGNBQWMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUU5RixPQUFPLEdBQUcsRUFBRTtZQUNYLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDakQsSUFBSSxjQUFjLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztnQkFDcEQsY0FBYyxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDNUMsQ0FBQztRQUNGLENBQUMsQ0FBQztJQUNILENBQUM7SUFFTywyQkFBMkI7UUFDbEMsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUNyRCxJQUFJLENBQUMsY0FBYztZQUFFLE9BQU87UUFFNUIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQzlCLElBQUksQ0FBQyxJQUFJO1lBQUUsT0FBTztRQUVsQixNQUFNLElBQUksR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25DLE1BQU0sS0FBSyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckMsTUFBTSxjQUFjLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUN2RCxNQUFNLGFBQWEsR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3JELE1BQU0saUJBQWlCLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQzdELE1BQU0sZ0JBQWdCLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzNELE1BQU0sWUFBWSxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFbkQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDN0MsTUFBTSxFQUFFLElBQUk7WUFDWixPQUFPLEVBQUUsS0FBSztZQUNkLGdCQUFnQixFQUFFLGNBQWM7WUFDaEMsZUFBZSxFQUFFLGFBQWE7WUFDOUIsbUJBQW1CLEVBQUUsaUJBQWlCO1lBQ3RDLGtCQUFrQixFQUFFLGdCQUFnQjtZQUNwQyxjQUFjLEVBQUUsWUFBWTtTQUM1QixDQUFDLENBQUM7UUFFSCxPQUFPLEdBQUcsRUFBRTtZQUNYLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbEQsQ0FBQyxDQUFDO0lBQ0gsQ0FBQztJQUVPLHFCQUFxQjtRQUM1QixNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3JELElBQUksQ0FBQyxjQUFjO1lBQUUsT0FBTztRQUU1QixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDOUIsSUFBSSxDQUFDLElBQUk7WUFBRSxPQUFPO1FBRWxCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDNUQsSUFBSSxDQUFDLEtBQUs7WUFBRSxPQUFPO1FBRW5CLEtBQUssQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzVDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNoRixJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNyQyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUVsQyxNQUFNLENBQ0wsWUFBWSxFQUNaLDBCQUEwQixFQUMxQixhQUFhLEVBQ2IsY0FBYyxFQUNkLGFBQWEsRUFDYixnQkFBZ0IsRUFDaEIsZ0JBQWdCLEVBQ2hCLG1CQUFtQixFQUNuQixlQUFlLEVBQ2YsY0FBYyxFQUNkLEdBQUcsRUFDSCxpQkFBaUIsRUFDakIsY0FBYyxFQUNkLFFBQVEsRUFDUixRQUFRLEVBQ1IsR0FBRztZQUNILElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDbkIsSUFBSSxDQUFDLDBCQUEwQixFQUFFO1lBQ2pDLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDcEIsSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUNyQixJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3BCLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtZQUN2QixJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDdkIsSUFBSSxDQUFDLG1CQUFtQixFQUFFO1lBQzFCLElBQUksQ0FBQyxlQUFlLEVBQUU7WUFDdEIsSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUNyQixJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ1YsSUFBSSxDQUFDLGlCQUFpQixFQUFFO1lBQ3hCLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDckIsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNmLElBQUksQ0FBQyxRQUFRLEVBQUU7U0FDZixDQUFDO1FBRUYsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDekMsSUFBSSwwQkFBMEIsS0FBSyxTQUFTO1lBQUUsSUFBSSxDQUFDLDZCQUE2QixDQUFDLDBCQUEwQixDQUFDLENBQUM7UUFDN0csSUFBSSxhQUFhLEtBQUssU0FBUztZQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN0RSxJQUFJLGNBQWMsS0FBSyxTQUFTO1lBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3pFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUN2QyxJQUFJLGdCQUFnQixLQUFLLFNBQVM7WUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN4RixJQUFJLG1CQUFtQixLQUFLLFNBQVM7WUFBRSxJQUFJLENBQUMsc0JBQXNCLENBQUMsR0FBRyxtQkFBbUIsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNqRyxJQUFJLGFBQWEsS0FBSyxTQUFTO1lBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDekUsSUFBSSxnQkFBZ0IsS0FBSyxTQUFTO1lBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ2xGLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLEVBQUUsZUFBZSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxlQUFlLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLGVBQWUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzlGLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLEVBQUUsY0FBYyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLGNBQWMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzNGLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDcEIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDN0MsSUFBSSxRQUFRLEtBQUssU0FBUztZQUFFLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3JELElBQUksUUFBUSxLQUFLLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRU8sb0JBQW9CLENBQzNCLFNBQW9CLEVBQ3BCLE1BQWdCLEVBQ2hCLFNBQXFDLEVBQ3JDLFNBQXdDLEVBQ3hDLFVBQW9CLEVBQ3BCLFdBQTJDLE1BQU07UUFFakQsTUFBTSxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN0QyxNQUFNLG1CQUFtQixHQUFHLE1BQU0sQ0FBQyxNQUFPLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3hFLE9BQU87WUFDTixNQUFNO1lBQ04sU0FBUztZQUNULG1CQUFtQjtZQUNuQixTQUFTLEVBQUUsU0FBUztnQkFDbkIsQ0FBQyxDQUFDLFNBQVM7Z0JBQ1gsQ0FBQyxDQUFDLENBQUMsTUFBZSxFQUFFLEVBQUU7b0JBQ3BCLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUM1QixDQUFDO1lBQ0gsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQWUsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO1lBQ2xGLEtBQUssRUFBRSxVQUFVLElBQUksTUFBTSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUU7WUFDekQsVUFBVSxFQUFFLEtBQUs7WUFDakIsUUFBUTtTQUNSLENBQUM7SUFDSCxDQUFDO3VHQWpQVyxhQUFhOzJGQUFiLGFBQWEsNjJDQXpCZjs7Ozs7Ozs7Ozs7OztFQWFULDREQXpWVyxlQUFlOzsyRkFxV2YsYUFBYTtrQkE3QnpCLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLDZCQUE2QjtvQkFDdkMsUUFBUSxFQUFFLFdBQVc7b0JBQ3JCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7RUFhVDtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztvQkFDakMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLElBQUksRUFBRTt3QkFDTCxZQUFZLEVBQUUsWUFBWTt3QkFDMUIsWUFBWSxFQUFFLFlBQVk7d0JBQzFCLFNBQVMsRUFBRSxTQUFTO3dCQUNwQixjQUFjLEVBQUUsY0FBYzt3QkFDOUIsWUFBWSxFQUFFLFlBQVk7cUJBQzFCO29CQUNELE9BQU8sRUFBRSxDQUFDLGVBQWUsQ0FBQztpQkFDMUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuXHRDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcblx0Q29tcG9uZW50LFxuXHRjb21wdXRlZCxcblx0Q1VTVE9NX0VMRU1FTlRTX1NDSEVNQSxcblx0RGlyZWN0aXZlLFxuXHRlZmZlY3QsXG5cdEVsZW1lbnRSZWYsXG5cdGluamVjdCxcblx0aW5wdXQsXG5cdG1vZGVsLFxuXHRvdXRwdXQsXG5cdHVudHJhY2tlZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmVFdmVudHMsIENvbGxpZGVyLCBDb2xsaWRlckRlc2MsIFJpZ2lkQm9keSwgUmlnaWRCb2R5RGVzYyB9IGZyb20gJ0BkaW1mb3JnZS9yYXBpZXIzZC1jb21wYXQnO1xuaW1wb3J0IHtcblx0ZXh0ZW5kLFxuXHRnZXRFbWl0dGVyLFxuXHRnZXRMb2NhbFN0YXRlLFxuXHRoYXNMaXN0ZW5lcixcblx0Tmd0RXVsZXIsXG5cdE5ndE9iamVjdDNELFxuXHROZ3RRdWF0ZXJuaW9uLFxuXHROZ3RWZWN0b3IzLFxuXHRwaWNrLFxufSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IG1lcmdlSW5wdXRzIH0gZnJvbSAnbmd4dGVuc2lvbi9pbmplY3QtaW5wdXRzJztcbmltcG9ydCB7IE1hdHJpeDQsIE9iamVjdDNELCBWZWN0b3IzIH0gZnJvbSAndGhyZWUnO1xuaW1wb3J0IHsgTmd0clBoeXNpY3MgfSBmcm9tICcuL3BoeXNpY3MnO1xuaW1wb3J0IHsgX21hdHJpeDQsIF9wb3NpdGlvbiwgX3JvdGF0aW9uLCBfc2NhbGUsIF92ZWN0b3IzIH0gZnJvbSAnLi9zaGFyZWQnO1xuaW1wb3J0IHtcblx0Tmd0ckNvbGxpZGVyT3B0aW9ucyxcblx0Tmd0ckNvbGxpZGVyU2hhcGUsXG5cdE5ndHJDb2xsaWRlclN0YXRlLFxuXHROZ3RyQ29sbGlzaW9uRW50ZXJQYXlsb2FkLFxuXHROZ3RyQ29sbGlzaW9uRXhpdFBheWxvYWQsXG5cdE5ndHJDb250YWN0Rm9yY2VQYXlsb2FkLFxuXHROZ3RySW50ZXJzZWN0aW9uRW50ZXJQYXlsb2FkLFxuXHROZ3RySW50ZXJzZWN0aW9uRXhpdFBheWxvYWQsXG5cdE5ndHJSaWdpZEJvZHlPcHRpb25zLFxuXHROZ3RyUmlnaWRCb2R5U3RhdGUsXG5cdE5ndHJSaWdpZEJvZHlUeXBlLFxufSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IGNyZWF0ZUNvbGxpZGVyT3B0aW9ucyB9IGZyb20gJy4vdXRpbHMnO1xuXG5jb25zdCBjb2xsaWRlckRlZmF1bHRPcHRpb25zOiBOZ3RyQ29sbGlkZXJPcHRpb25zID0ge1xuXHRjb250YWN0U2tpbjogMCxcbn07XG5cbkBEaXJlY3RpdmUoe1xuXHRzZWxlY3RvcjogJ25ndC1vYmplY3QzRFtuZ3RyQ29sbGlkZXJdJyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0aG9zdDoge1xuXHRcdCdbcG9zaXRpb25dJzogJ3Bvc2l0aW9uKCknLFxuXHRcdCdbcm90YXRpb25dJzogJ3JvdGF0aW9uKCknLFxuXHRcdCdbc2NhbGVdJzogJ3NjYWxlKCknLFxuXHRcdCdbcXVhdGVybmlvbl0nOiAncXVhdGVybmlvbigpJyxcblx0XHQnW3VzZXJEYXRhXSc6ICd1c2VyRGF0YSgpJyxcblx0XHQnW25hbWVdJzogJ25hbWUoKScsXG5cdH0sXG59KVxuZXhwb3J0IGNsYXNzIE5ndHJBbnlDb2xsaWRlciB7XG5cdHBvc2l0aW9uID0gaW5wdXQ8Tmd0VmVjdG9yMyB8IHVuZGVmaW5lZD4oWzAsIDAsIDBdKTtcblx0cm90YXRpb24gPSBpbnB1dDxOZ3RFdWxlciB8IHVuZGVmaW5lZD4oWzAsIDAsIDBdKTtcblx0c2NhbGUgPSBpbnB1dDxOZ3RWZWN0b3IzIHwgdW5kZWZpbmVkPihbMSwgMSwgMV0pO1xuXHRxdWF0ZXJuaW9uID0gaW5wdXQ8Tmd0UXVhdGVybmlvbiB8IHVuZGVmaW5lZD4oWzAsIDAsIDAsIDFdKTtcblx0dXNlckRhdGEgPSBpbnB1dDxOZ3RPYmplY3QzRFsndXNlckRhdGEnXSB8IHVuZGVmaW5lZD4oe30pO1xuXHRuYW1lID0gaW5wdXQ8Tmd0T2JqZWN0M0RbJ25hbWUnXSB8IHVuZGVmaW5lZD4oKTtcblx0b3B0aW9ucyA9IGlucHV0KGNvbGxpZGVyRGVmYXVsdE9wdGlvbnMsIHsgdHJhbnNmb3JtOiBtZXJnZUlucHV0cyhyaWdpZEJvZHlEZWZhdWx0T3B0aW9ucykgfSk7XG5cblx0Ly8gVE9ETzogY2hhbmdlIHRoaXMgdG8gaW5wdXQgcmVxdWlyZWQgd2hlbiBBbmd1bGFyIGFsbG93cyBzZXR0aW5nIGhvc3REaXJlY3RpdmUgaW5wdXRcblx0c2hhcGUgPSBtb2RlbDxOZ3RyQ29sbGlkZXJTaGFwZSB8IHVuZGVmaW5lZD4odW5kZWZpbmVkLCB7IGFsaWFzOiAnbmd0ckNvbGxpZGVyJyB9KTtcblx0YXJncyA9IG1vZGVsPHVua25vd25bXT4oW10pO1xuXG5cdGNvbGxpc2lvbkVudGVyID0gb3V0cHV0PE5ndHJDb2xsaXNpb25FbnRlclBheWxvYWQ+KCk7XG5cdGNvbGxpc2lvbkV4aXQgPSBvdXRwdXQ8Tmd0ckNvbGxpc2lvbkV4aXRQYXlsb2FkPigpO1xuXHRpbnRlcnNlY3Rpb25FbnRlciA9IG91dHB1dDxOZ3RySW50ZXJzZWN0aW9uRW50ZXJQYXlsb2FkPigpO1xuXHRpbnRlcnNlY3Rpb25FeGl0ID0gb3V0cHV0PE5ndHJJbnRlcnNlY3Rpb25FeGl0UGF5bG9hZD4oKTtcblx0Y29udGFjdEZvcmNlID0gb3V0cHV0PE5ndHJDb250YWN0Rm9yY2VQYXlsb2FkPigpO1xuXG5cdHByaXZhdGUgc2Vuc29yID0gcGljayh0aGlzLm9wdGlvbnMsICdzZW5zb3InKTtcblx0cHJpdmF0ZSBjb2xsaXNpb25Hcm91cHMgPSBwaWNrKHRoaXMub3B0aW9ucywgJ2NvbGxpc2lvbkdyb3VwcycpO1xuXHRwcml2YXRlIHNvbHZlckdyb3VwcyA9IHBpY2sodGhpcy5vcHRpb25zLCAnc29sdmVyR3JvdXBzJyk7XG5cdHByaXZhdGUgZnJpY3Rpb24gPSBwaWNrKHRoaXMub3B0aW9ucywgJ2ZyaWN0aW9uJyk7XG5cdHByaXZhdGUgZnJpY3Rpb25Db21iaW5lUnVsZSA9IHBpY2sodGhpcy5vcHRpb25zLCAnZnJpY3Rpb25Db21iaW5lUnVsZScpO1xuXHRwcml2YXRlIHJlc3RpdHV0aW9uID0gcGljayh0aGlzLm9wdGlvbnMsICdyZXN0aXR1dGlvbicpO1xuXHRwcml2YXRlIHJlc3RpdHV0aW9uQ29tYmluZVJ1bGUgPSBwaWNrKHRoaXMub3B0aW9ucywgJ3Jlc3RpdHV0aW9uQ29tYmluZVJ1bGUnKTtcblx0cHJpdmF0ZSBhY3RpdmVDb2xsaXNpb25UeXBlcyA9IHBpY2sodGhpcy5vcHRpb25zLCAnYWN0aXZlQ29sbGlzaW9uVHlwZXMnKTtcblx0cHJpdmF0ZSBjb250YWN0U2tpbiA9IHBpY2sodGhpcy5vcHRpb25zLCAnY29udGFjdFNraW4nKTtcblx0cHJpdmF0ZSBtYXNzID0gcGljayh0aGlzLm9wdGlvbnMsICdtYXNzJyk7XG5cdHByaXZhdGUgbWFzc1Byb3BlcnRpZXMgPSBwaWNrKHRoaXMub3B0aW9ucywgJ21hc3NQcm9wZXJ0aWVzJyk7XG5cdHByaXZhdGUgZGVuc2l0eSA9IHBpY2sodGhpcy5vcHRpb25zLCAnZGVuc2l0eScpO1xuXG5cdHByaXZhdGUgcmlnaWRCb2R5ID0gaW5qZWN0KE5ndHJSaWdpZEJvZHksIHsgb3B0aW9uYWw6IHRydWUgfSk7XG5cdHByaXZhdGUgcGh5c2ljcyA9IGluamVjdChOZ3RyUGh5c2ljcyk7XG5cdG9iamVjdFJlZiA9IGluamVjdDxFbGVtZW50UmVmPE9iamVjdDNEPj4oRWxlbWVudFJlZik7XG5cblx0cHJpdmF0ZSBzY2FsZWRBcmdzID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdGNvbnN0IFtzaGFwZSwgYXJnc10gPSBbXG5cdFx0XHR0aGlzLnNoYXBlKCksXG5cdFx0XHR0aGlzLmFyZ3MoKSBhcyAobnVtYmVyIHwgQXJyYXlMaWtlPG51bWJlcj4gfCB7IHg6IG51bWJlcjsgeTogbnVtYmVyOyB6OiBudW1iZXIgfSlbXSxcblx0XHRdO1xuXG5cdFx0Y29uc3QgY2xvbmVkID0gYXJncy5zbGljZSgpO1xuXG5cdFx0Ly8gSGVpZ2h0ZmllbGQgdXNlcyBhIHZlY3RvclxuXHRcdGlmIChzaGFwZSA9PT0gJ2hlaWdodGZpZWxkJykge1xuXHRcdFx0Y29uc3QgcyA9IGNsb25lZFszXSBhcyB7IHg6IG51bWJlcjsgeTogbnVtYmVyOyB6OiBudW1iZXIgfTtcblx0XHRcdHMueCAqPSB0aGlzLndvcmxkU2NhbGUueDtcblx0XHRcdHMueSAqPSB0aGlzLndvcmxkU2NhbGUueTtcblx0XHRcdHMueiAqPSB0aGlzLndvcmxkU2NhbGUuejtcblxuXHRcdFx0cmV0dXJuIGNsb25lZDtcblx0XHR9XG5cblx0XHQvLyBUcmltZXNoIGFuZCBjb252ZXggc2NhbGUgdGhlIHZlcnRpY2VzXG5cdFx0aWYgKHNoYXBlID09PSAndHJpbWVzaCcgfHwgc2hhcGUgPT09ICdjb252ZXhIdWxsJykge1xuXHRcdFx0Y2xvbmVkWzBdID0gdGhpcy5zY2FsZVZlcnRpY2VzKGNsb25lZFswXSBhcyBBcnJheUxpa2U8bnVtYmVyPiwgdGhpcy53b3JsZFNjYWxlKTtcblx0XHRcdHJldHVybiBjbG9uZWQ7XG5cdFx0fVxuXG5cdFx0Ly8gcHJlZmlsbCB3aXRoIHNvbWUgZXh0cmFcblx0XHRjb25zdCBzY2FsZUFycmF5ID0gW3RoaXMud29ybGRTY2FsZS54LCB0aGlzLndvcmxkU2NhbGUueSwgdGhpcy53b3JsZFNjYWxlLnosIHRoaXMud29ybGRTY2FsZS54LCB0aGlzLndvcmxkU2NhbGUueF07XG5cdFx0cmV0dXJuIGNsb25lZC5tYXAoKGFyZywgaW5kZXgpID0+IHNjYWxlQXJyYXlbaW5kZXhdICogKGFyZyBhcyBudW1iZXIpKTtcblx0fSk7XG5cblx0cHJpdmF0ZSBjb2xsaWRlciA9IGNvbXB1dGVkKCgpID0+IHtcblx0XHRjb25zdCB3b3JsZFNpbmdsZXRvbiA9IHRoaXMucGh5c2ljcy53b3JsZFNpbmdsZXRvbigpO1xuXHRcdGlmICghd29ybGRTaW5nbGV0b24pIHJldHVybiBudWxsO1xuXG5cdFx0Y29uc3QgW3NoYXBlLCBhcmdzLCByaWdpZEJvZHldID0gW3RoaXMuc2hhcGUoKSwgdGhpcy5zY2FsZWRBcmdzKCksIHRoaXMucmlnaWRCb2R5Py5yaWdpZEJvZHkoKV07XG5cblx0XHQvLyBAdHMtZXhwZWN0LWVycm9yIC0gd2Uga25vdyB0aGUgdHlwZSBvZiB0aGUgZGF0YVxuXHRcdGNvbnN0IGRlc2MgPSBDb2xsaWRlckRlc2Nbc2hhcGVdKC4uLmFyZ3MpO1xuXHRcdGlmICghZGVzYykgcmV0dXJuIG51bGw7XG5cblx0XHRyZXR1cm4gd29ybGRTaW5nbGV0b24ucHJveHkuY3JlYXRlQ29sbGlkZXIoZGVzYywgcmlnaWRCb2R5ID8/IHVuZGVmaW5lZCk7XG5cdH0pO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdGV4dGVuZCh7IE9iamVjdDNEIH0pO1xuXG5cdFx0ZWZmZWN0KChvbkNsZWFudXApID0+IHtcblx0XHRcdGNvbnN0IGNsZWFudXAgPSB0aGlzLmNyZWF0ZUNvbGxpZGVyU3RhdGVFZmZlY3QoKTtcblx0XHRcdG9uQ2xlYW51cCgoKSA9PiBjbGVhbnVwPy4oKSk7XG5cdFx0fSk7XG5cblx0XHRlZmZlY3QoKG9uQ2xlYW51cCkgPT4ge1xuXHRcdFx0Y29uc3QgY2xlYW51cCA9IHRoaXMuY3JlYXRlQ29sbGlkZXJFdmVudHNFZmZlY3QoKTtcblx0XHRcdG9uQ2xlYW51cCgoKSA9PiBjbGVhbnVwPy4oKSk7XG5cdFx0fSk7XG5cblx0XHRlZmZlY3QoKCkgPT4ge1xuXHRcdFx0dGhpcy51cGRhdGVDb2xsaWRlckVmZmVjdCgpO1xuXHRcdFx0dGhpcy51cGRhdGVNYXNzUHJvcGVydGllc0VmZmVjdCgpO1xuXHRcdH0pO1xuXHR9XG5cblx0Z2V0IHdvcmxkU2NhbGUoKSB7XG5cdFx0cmV0dXJuIHRoaXMub2JqZWN0UmVmLm5hdGl2ZUVsZW1lbnQuZ2V0V29ybGRTY2FsZShuZXcgVmVjdG9yMygpKTtcblx0fVxuXG5cdHNldFNoYXBlKHNoYXBlOiBOZ3RyQ29sbGlkZXJTaGFwZSkge1xuXHRcdHRoaXMuc2hhcGUuc2V0KHNoYXBlKTtcblx0fVxuXG5cdHNldEFyZ3MoYXJnczogdW5rbm93bltdKSB7XG5cdFx0dGhpcy5hcmdzLnNldChhcmdzKTtcblx0fVxuXG5cdHByaXZhdGUgY3JlYXRlQ29sbGlkZXJTdGF0ZUVmZmVjdCgpIHtcblx0XHRjb25zdCBjb2xsaWRlciA9IHRoaXMuY29sbGlkZXIoKTtcblx0XHRpZiAoIWNvbGxpZGVyKSByZXR1cm47XG5cblx0XHRjb25zdCB3b3JsZFNpbmdsZXRvbiA9IHRoaXMucGh5c2ljcy53b3JsZFNpbmdsZXRvbigpO1xuXHRcdGlmICghd29ybGRTaW5nbGV0b24pIHJldHVybjtcblxuXHRcdGNvbnN0IGxvY2FsU3RhdGUgPSBnZXRMb2NhbFN0YXRlKHRoaXMub2JqZWN0UmVmLm5hdGl2ZUVsZW1lbnQpO1xuXHRcdGlmICghbG9jYWxTdGF0ZSkgcmV0dXJuO1xuXG5cdFx0Y29uc3QgcGFyZW50ID0gbG9jYWxTdGF0ZS5wYXJlbnQoKTtcblx0XHRpZiAoIXBhcmVudCB8fCAhKHBhcmVudCBhcyBPYmplY3QzRCkuaXNPYmplY3QzRCkgcmV0dXJuO1xuXG5cdFx0Y29uc3Qgc3RhdGUgPSB0aGlzLmNyZWF0ZUNvbGxpZGVyU3RhdGUoXG5cdFx0XHRjb2xsaWRlcixcblx0XHRcdHRoaXMub2JqZWN0UmVmLm5hdGl2ZUVsZW1lbnQsXG5cdFx0XHR0aGlzLnJpZ2lkQm9keT8ub2JqZWN0UmVmLm5hdGl2ZUVsZW1lbnQsXG5cdFx0KTtcblx0XHR0aGlzLnBoeXNpY3MuY29sbGlkZXJTdGF0ZXMuc2V0KGNvbGxpZGVyLmhhbmRsZSwgc3RhdGUpO1xuXG5cdFx0cmV0dXJuICgpID0+IHtcblx0XHRcdHRoaXMucGh5c2ljcy5jb2xsaWRlclN0YXRlcy5kZWxldGUoY29sbGlkZXIuaGFuZGxlKTtcblx0XHRcdGlmICh3b3JsZFNpbmdsZXRvbi5wcm94eS5nZXRDb2xsaWRlcihjb2xsaWRlci5oYW5kbGUpKSB7XG5cdFx0XHRcdHdvcmxkU2luZ2xldG9uLnByb3h5LnJlbW92ZUNvbGxpZGVyKGNvbGxpZGVyLCB0cnVlKTtcblx0XHRcdH1cblx0XHR9O1xuXHR9XG5cblx0cHJpdmF0ZSBjcmVhdGVDb2xsaWRlckV2ZW50c0VmZmVjdCgpIHtcblx0XHRjb25zdCBjb2xsaWRlciA9IHRoaXMuY29sbGlkZXIoKTtcblx0XHRpZiAoIWNvbGxpZGVyKSByZXR1cm47XG5cblx0XHRjb25zdCB3b3JsZFNpbmdsZXRvbiA9IHRoaXMucGh5c2ljcy53b3JsZFNpbmdsZXRvbigpO1xuXHRcdGlmICghd29ybGRTaW5nbGV0b24pIHJldHVybjtcblxuXHRcdGNvbnN0IGNvbGxpc2lvbkVudGVyID0gZ2V0RW1pdHRlcih0aGlzLmNvbGxpc2lvbkVudGVyKTtcblx0XHRjb25zdCBjb2xsaXNpb25FeGl0ID0gZ2V0RW1pdHRlcih0aGlzLmNvbGxpc2lvbkV4aXQpO1xuXHRcdGNvbnN0IGludGVyc2VjdGlvbkVudGVyID0gZ2V0RW1pdHRlcih0aGlzLmludGVyc2VjdGlvbkVudGVyKTtcblx0XHRjb25zdCBpbnRlcnNlY3Rpb25FeGl0ID0gZ2V0RW1pdHRlcih0aGlzLmludGVyc2VjdGlvbkV4aXQpO1xuXHRcdGNvbnN0IGNvbnRhY3RGb3JjZSA9IGdldEVtaXR0ZXIodGhpcy5jb250YWN0Rm9yY2UpO1xuXG5cdFx0Y29uc3QgaGFzQ29sbGlzaW9uRXZlbnQgPSBoYXNMaXN0ZW5lcihcblx0XHRcdHRoaXMuY29sbGlzaW9uRW50ZXIsXG5cdFx0XHR0aGlzLmNvbGxpc2lvbkV4aXQsXG5cdFx0XHR0aGlzLmludGVyc2VjdGlvbkVudGVyLFxuXHRcdFx0dGhpcy5pbnRlcnNlY3Rpb25FeGl0LFxuXHRcdFx0dGhpcy5yaWdpZEJvZHk/LmNvbGxpc2lvbkVudGVyLFxuXHRcdFx0dGhpcy5yaWdpZEJvZHk/LmNvbGxpc2lvbkV4aXQsXG5cdFx0XHR0aGlzLnJpZ2lkQm9keT8uaW50ZXJzZWN0aW9uRW50ZXIsXG5cdFx0XHR0aGlzLnJpZ2lkQm9keT8uaW50ZXJzZWN0aW9uRXhpdCxcblx0XHQpO1xuXHRcdGNvbnN0IGhhc0NvbnRhY3RGb3JjZUV2ZW50ID0gaGFzTGlzdGVuZXIodGhpcy5jb250YWN0Rm9yY2UsIHRoaXMucmlnaWRCb2R5Py5jb250YWN0Rm9yY2UpO1xuXG5cdFx0aWYgKGhhc0NvbGxpc2lvbkV2ZW50ICYmIGhhc0NvbnRhY3RGb3JjZUV2ZW50KSB7XG5cdFx0XHRjb2xsaWRlci5zZXRBY3RpdmVFdmVudHMoQWN0aXZlRXZlbnRzLkNPTExJU0lPTl9FVkVOVFMgfCBBY3RpdmVFdmVudHMuQ09OVEFDVF9GT1JDRV9FVkVOVFMpO1xuXHRcdH0gZWxzZSBpZiAoaGFzQ29sbGlzaW9uRXZlbnQpIHtcblx0XHRcdGNvbGxpZGVyLnNldEFjdGl2ZUV2ZW50cyhBY3RpdmVFdmVudHMuQ09MTElTSU9OX0VWRU5UUyk7XG5cdFx0fSBlbHNlIGlmIChoYXNDb250YWN0Rm9yY2VFdmVudCkge1xuXHRcdFx0Y29sbGlkZXIuc2V0QWN0aXZlRXZlbnRzKEFjdGl2ZUV2ZW50cy5DT05UQUNUX0ZPUkNFX0VWRU5UUyk7XG5cdFx0fVxuXG5cdFx0dGhpcy5waHlzaWNzLmNvbGxpZGVyRXZlbnRzLnNldChjb2xsaWRlci5oYW5kbGUsIHtcblx0XHRcdG9uQ29sbGlzaW9uRW50ZXI6IGNvbGxpc2lvbkVudGVyLFxuXHRcdFx0b25Db2xsaXNpb25FeGl0OiBjb2xsaXNpb25FeGl0LFxuXHRcdFx0b25JbnRlcnNlY3Rpb25FbnRlcjogaW50ZXJzZWN0aW9uRW50ZXIsXG5cdFx0XHRvbkludGVyc2VjdGlvbkV4aXQ6IGludGVyc2VjdGlvbkV4aXQsXG5cdFx0XHRvbkNvbnRhY3RGb3JjZTogY29udGFjdEZvcmNlLFxuXHRcdH0pO1xuXHRcdHJldHVybiAoKSA9PiB7XG5cdFx0XHR0aGlzLnBoeXNpY3MuY29sbGlkZXJFdmVudHMuZGVsZXRlKGNvbGxpZGVyLmhhbmRsZSk7XG5cdFx0fTtcblx0fVxuXG5cdHByaXZhdGUgdXBkYXRlQ29sbGlkZXJFZmZlY3QoKSB7XG5cdFx0Y29uc3QgY29sbGlkZXIgPSB0aGlzLmNvbGxpZGVyKCk7XG5cdFx0aWYgKCFjb2xsaWRlcikgcmV0dXJuO1xuXG5cdFx0Y29uc3Qgd29ybGRTaW5nbGV0b24gPSB0aGlzLnBoeXNpY3Mud29ybGRTaW5nbGV0b24oKTtcblx0XHRpZiAoIXdvcmxkU2luZ2xldG9uKSByZXR1cm47XG5cblx0XHRjb25zdCBzdGF0ZSA9IHRoaXMucGh5c2ljcy5jb2xsaWRlclN0YXRlcy5nZXQoY29sbGlkZXIuaGFuZGxlKTtcblx0XHRpZiAoIXN0YXRlKSByZXR1cm47XG5cblx0XHQvLyBVcGRhdGUgY29sbGlkZXIgcG9zaXRpb24gYmFzZWQgb24gdGhlIG9iamVjdCdzIHBvc2l0aW9uXG5cdFx0Y29uc3QgcGFyZW50V29ybGRTY2FsZSA9IHN0YXRlLm9iamVjdC5wYXJlbnQhLmdldFdvcmxkU2NhbGUoX3ZlY3RvcjMpO1xuXHRcdGNvbnN0IHBhcmVudEludmVydGVkV29ybGRNYXRyaXggPSBzdGF0ZS53b3JsZFBhcmVudD8ubWF0cml4V29ybGQuY2xvbmUoKS5pbnZlcnQoKTtcblxuXHRcdHN0YXRlLm9iamVjdC51cGRhdGVXb3JsZE1hdHJpeCh0cnVlLCBmYWxzZSk7XG5cblx0XHRfbWF0cml4NC5jb3B5KHN0YXRlLm9iamVjdC5tYXRyaXhXb3JsZCk7XG5cblx0XHRpZiAocGFyZW50SW52ZXJ0ZWRXb3JsZE1hdHJpeCkge1xuXHRcdFx0X21hdHJpeDQucHJlbXVsdGlwbHkocGFyZW50SW52ZXJ0ZWRXb3JsZE1hdHJpeCk7XG5cdFx0fVxuXG5cdFx0X21hdHJpeDQuZGVjb21wb3NlKF9wb3NpdGlvbiwgX3JvdGF0aW9uLCBfc2NhbGUpO1xuXG5cdFx0aWYgKGNvbGxpZGVyLnBhcmVudCgpKSB7XG5cdFx0XHRjb2xsaWRlci5zZXRUcmFuc2xhdGlvbldydFBhcmVudCh7XG5cdFx0XHRcdHg6IF9wb3NpdGlvbi54ICogcGFyZW50V29ybGRTY2FsZS54LFxuXHRcdFx0XHR5OiBfcG9zaXRpb24ueSAqIHBhcmVudFdvcmxkU2NhbGUueSxcblx0XHRcdFx0ejogX3Bvc2l0aW9uLnogKiBwYXJlbnRXb3JsZFNjYWxlLnosXG5cdFx0XHR9KTtcblx0XHRcdGNvbGxpZGVyLnNldFJvdGF0aW9uV3J0UGFyZW50KF9yb3RhdGlvbik7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGNvbGxpZGVyLnNldFRyYW5zbGF0aW9uKHtcblx0XHRcdFx0eDogX3Bvc2l0aW9uLnggKiBwYXJlbnRXb3JsZFNjYWxlLngsXG5cdFx0XHRcdHk6IF9wb3NpdGlvbi55ICogcGFyZW50V29ybGRTY2FsZS55LFxuXHRcdFx0XHR6OiBfcG9zaXRpb24ueiAqIHBhcmVudFdvcmxkU2NhbGUueixcblx0XHRcdH0pO1xuXHRcdFx0Y29sbGlkZXIuc2V0Um90YXRpb24oX3JvdGF0aW9uKTtcblx0XHR9XG5cblx0XHRjb25zdCBbXG5cdFx0XHRzZW5zb3IsXG5cdFx0XHRjb2xsaXNpb25Hcm91cHMsXG5cdFx0XHRzb2x2ZXJHcm91cHMsXG5cdFx0XHRmcmljdGlvbixcblx0XHRcdGZyaWN0aW9uQ29tYmluZVJ1bGUsXG5cdFx0XHRyZXN0aXR1dGlvbixcblx0XHRcdHJlc3RpdHV0aW9uQ29tYmluZVJ1bGUsXG5cdFx0XHRhY3RpdmVDb2xsaXNpb25UeXBlcyxcblx0XHRcdGNvbnRhY3RTa2luLFxuXHRcdF0gPSBbXG5cdFx0XHR0aGlzLnNlbnNvcigpLFxuXHRcdFx0dGhpcy5jb2xsaXNpb25Hcm91cHMoKSxcblx0XHRcdHRoaXMuc29sdmVyR3JvdXBzKCksXG5cdFx0XHR0aGlzLmZyaWN0aW9uKCksXG5cdFx0XHR0aGlzLmZyaWN0aW9uQ29tYmluZVJ1bGUoKSxcblx0XHRcdHRoaXMucmVzdGl0dXRpb24oKSxcblx0XHRcdHRoaXMucmVzdGl0dXRpb25Db21iaW5lUnVsZSgpLFxuXHRcdFx0dGhpcy5hY3RpdmVDb2xsaXNpb25UeXBlcygpLFxuXHRcdFx0dGhpcy5jb250YWN0U2tpbigpLFxuXHRcdF07XG5cblx0XHRpZiAoc2Vuc29yICE9PSB1bmRlZmluZWQpIGNvbGxpZGVyLnNldFNlbnNvcihzZW5zb3IpO1xuXHRcdGlmIChjb2xsaXNpb25Hcm91cHMgIT09IHVuZGVmaW5lZCkgY29sbGlkZXIuc2V0Q29sbGlzaW9uR3JvdXBzKGNvbGxpc2lvbkdyb3Vwcyk7XG5cdFx0aWYgKHNvbHZlckdyb3VwcyAhPT0gdW5kZWZpbmVkKSBjb2xsaWRlci5zZXRTb2x2ZXJHcm91cHMoc29sdmVyR3JvdXBzKTtcblx0XHRpZiAoZnJpY3Rpb24gIT09IHVuZGVmaW5lZCkgY29sbGlkZXIuc2V0RnJpY3Rpb24oZnJpY3Rpb24pO1xuXHRcdGlmIChmcmljdGlvbkNvbWJpbmVSdWxlICE9PSB1bmRlZmluZWQpIGNvbGxpZGVyLnNldEZyaWN0aW9uQ29tYmluZVJ1bGUoZnJpY3Rpb25Db21iaW5lUnVsZSk7XG5cdFx0aWYgKHJlc3RpdHV0aW9uICE9PSB1bmRlZmluZWQpIGNvbGxpZGVyLnNldFJlc3RpdHV0aW9uKHJlc3RpdHV0aW9uKTtcblx0XHRpZiAocmVzdGl0dXRpb25Db21iaW5lUnVsZSAhPT0gdW5kZWZpbmVkKSBjb2xsaWRlci5zZXRSZXN0aXR1dGlvbkNvbWJpbmVSdWxlKHJlc3RpdHV0aW9uQ29tYmluZVJ1bGUpO1xuXHRcdGlmIChhY3RpdmVDb2xsaXNpb25UeXBlcyAhPT0gdW5kZWZpbmVkKSBjb2xsaWRlci5zZXRBY3RpdmVDb2xsaXNpb25UeXBlcyhhY3RpdmVDb2xsaXNpb25UeXBlcyk7XG5cdFx0aWYgKGNvbnRhY3RTa2luICE9PSB1bmRlZmluZWQpIGNvbGxpZGVyLnNldENvbnRhY3RTa2luKGNvbnRhY3RTa2luKTtcblx0fVxuXG5cdHByaXZhdGUgdXBkYXRlTWFzc1Byb3BlcnRpZXNFZmZlY3QoKSB7XG5cdFx0Y29uc3QgY29sbGlkZXIgPSB0aGlzLmNvbGxpZGVyKCk7XG5cdFx0aWYgKCFjb2xsaWRlcikgcmV0dXJuO1xuXG5cdFx0Y29uc3QgW21hc3MsIG1hc3NQcm9wZXJ0aWVzLCBkZW5zaXR5XSA9IFt0aGlzLm1hc3MoKSwgdGhpcy5tYXNzUHJvcGVydGllcygpLCB0aGlzLmRlbnNpdHkoKV07XG5cblx0XHRpZiAoZGVuc2l0eSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRpZiAobWFzcyAhPT0gdW5kZWZpbmVkIHx8IG1hc3NQcm9wZXJ0aWVzICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKCdbTkdUIFJhcGllcl0gQ2Fubm90IHNldCBtYXNzIGFuZCBtYXNzUHJvcGVydGllcyBhbG9uZyB3aXRoIGRlbnNpdHknKTtcblx0XHRcdH1cblxuXHRcdFx0Y29sbGlkZXIuc2V0RGVuc2l0eShkZW5zaXR5KTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRpZiAobWFzcyAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRpZiAobWFzc1Byb3BlcnRpZXMgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoJ1tOR1QgUmFwaWVyXSBDYW5ub3Qgc2V0IG1hc3NQcm9wZXJ0aWVzIGFsb25nIHdpdGggbWFzcycpO1xuXHRcdFx0fVxuXHRcdFx0Y29sbGlkZXIuc2V0TWFzcyhtYXNzKTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRpZiAobWFzc1Byb3BlcnRpZXMgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0Y29sbGlkZXIuc2V0TWFzc1Byb3BlcnRpZXMoXG5cdFx0XHRcdG1hc3NQcm9wZXJ0aWVzLm1hc3MsXG5cdFx0XHRcdG1hc3NQcm9wZXJ0aWVzLmNlbnRlck9mTWFzcyxcblx0XHRcdFx0bWFzc1Byb3BlcnRpZXMucHJpbmNpcGFsQW5ndWxhckluZXJ0aWEsXG5cdFx0XHRcdG1hc3NQcm9wZXJ0aWVzLmFuZ3VsYXJJbmVydGlhTG9jYWxGcmFtZSxcblx0XHRcdCk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHR9XG5cblx0cHJpdmF0ZSBjcmVhdGVDb2xsaWRlclN0YXRlKFxuXHRcdGNvbGxpZGVyOiBDb2xsaWRlcixcblx0XHRvYmplY3Q6IE9iamVjdDNELFxuXHRcdHJpZ2lkQm9keU9iamVjdD86IE9iamVjdDNEIHwgbnVsbCxcblx0KTogTmd0ckNvbGxpZGVyU3RhdGUge1xuXHRcdHJldHVybiB7IGNvbGxpZGVyLCB3b3JsZFBhcmVudDogcmlnaWRCb2R5T2JqZWN0IHx8IHVuZGVmaW5lZCwgb2JqZWN0IH07XG5cdH1cblxuXHRwcml2YXRlIHNjYWxlVmVydGljZXModmVydGljZXM6IEFycmF5TGlrZTxudW1iZXI+LCBzY2FsZTogVmVjdG9yMykge1xuXHRcdGNvbnN0IHNjYWxlZFZlcnRzID0gQXJyYXkuZnJvbSh2ZXJ0aWNlcyk7XG5cblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHZlcnRpY2VzLmxlbmd0aCAvIDM7IGkrKykge1xuXHRcdFx0c2NhbGVkVmVydHNbaSAqIDNdICo9IHNjYWxlLng7XG5cdFx0XHRzY2FsZWRWZXJ0c1tpICogMyArIDFdICo9IHNjYWxlLnk7XG5cdFx0XHRzY2FsZWRWZXJ0c1tpICogMyArIDJdICo9IHNjYWxlLno7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHNjYWxlZFZlcnRzO1xuXHR9XG59XG5cbmNvbnN0IFJJR0lEX0JPRFlfVFlQRV9NQVA6IFJlY29yZDxOZ3RyUmlnaWRCb2R5VHlwZSwgbnVtYmVyPiA9IHtcblx0Zml4ZWQ6IDEsXG5cdGR5bmFtaWM6IDAsXG5cdGtpbmVtYXRpY1Bvc2l0aW9uOiAyLFxuXHRraW5lbWF0aWNWZWxvY2l0eTogMyxcbn07XG5cbmV4cG9ydCBjb25zdCByaWdpZEJvZHlEZWZhdWx0T3B0aW9uczogTmd0clJpZ2lkQm9keU9wdGlvbnMgPSB7XG5cdGNhblNsZWVwOiB0cnVlLFxuXHRsaW5lYXJWZWxvY2l0eTogWzAsIDAsIDBdLFxuXHRhbmd1bGFyVmVsb2NpdHk6IFswLCAwLCAwXSxcblx0Z3Jhdml0eVNjYWxlOiAxLFxuXHRkb21pbmFuY2VHcm91cDogMCxcblx0Y2NkOiBmYWxzZSxcblx0c29mdENjZFByZWRpY3Rpb246IDAsXG5cdGNvbnRhY3RTa2luOiAwLFxufTtcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnbmd0LW9iamVjdDNEW25ndHJSaWdpZEJvZHldJyxcblx0ZXhwb3J0QXM6ICdyaWdpZEJvZHknLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdDxuZy1jb250ZW50IC8+XG5cdFx0QGZvciAoY2hpbGRDb2xsaWRlck9wdGlvbiBvZiBjaGlsZENvbGxpZGVyT3B0aW9ucygpOyB0cmFjayAkaW5kZXgpIHtcblx0XHRcdDxuZ3Qtb2JqZWN0M0Rcblx0XHRcdFx0W25ndHJDb2xsaWRlcl09XCJjaGlsZENvbGxpZGVyT3B0aW9uLnNoYXBlXCJcblx0XHRcdFx0W2FyZ3NdPVwiY2hpbGRDb2xsaWRlck9wdGlvbi5hcmdzXCJcblx0XHRcdFx0W3Bvc2l0aW9uXT1cImNoaWxkQ29sbGlkZXJPcHRpb24ucG9zaXRpb25cIlxuXHRcdFx0XHRbcm90YXRpb25dPVwiY2hpbGRDb2xsaWRlck9wdGlvbi5yb3RhdGlvblwiXG5cdFx0XHRcdFtzY2FsZV09XCJjaGlsZENvbGxpZGVyT3B0aW9uLnNjYWxlXCJcblx0XHRcdFx0W25hbWVdPVwib2JqZWN0UmVmLm5hdGl2ZUVsZW1lbnQubmFtZSArICctY29sbGlkZXItJyArICRpbmRleFwiXG5cdFx0XHRcdFtvcHRpb25zXT1cImNoaWxkQ29sbGlkZXJPcHRpb24uY29sbGlkZXJPcHRpb25zXCJcblx0XHRcdC8+XG5cdFx0fVxuXHRgLFxuXHRzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG5cdGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuXHRob3N0OiB7XG5cdFx0J1twb3NpdGlvbl0nOiAncG9zaXRpb24oKScsXG5cdFx0J1tyb3RhdGlvbl0nOiAncm90YXRpb24oKScsXG5cdFx0J1tzY2FsZV0nOiAnc2NhbGUoKScsXG5cdFx0J1txdWF0ZXJuaW9uXSc6ICdxdWF0ZXJuaW9uKCknLFxuXHRcdCdbdXNlckRhdGFdJzogJ3VzZXJEYXRhKCknLFxuXHR9LFxuXHRpbXBvcnRzOiBbTmd0ckFueUNvbGxpZGVyXSxcbn0pXG5leHBvcnQgY2xhc3MgTmd0clJpZ2lkQm9keSB7XG5cdHR5cGUgPSBpbnB1dCgnZHluYW1pYycsIHtcblx0XHRhbGlhczogJ25ndHJSaWdpZEJvZHknLFxuXHRcdHRyYW5zZm9ybTogKHZhbHVlOiBOZ3RyUmlnaWRCb2R5VHlwZSB8ICcnIHwgdW5kZWZpbmVkKSA9PiB7XG5cdFx0XHRpZiAodmFsdWUgPT09ICcnIHx8IHZhbHVlID09PSB1bmRlZmluZWQpIHJldHVybiAnZHluYW1pYycgYXMgTmd0clJpZ2lkQm9keVR5cGU7XG5cdFx0XHRyZXR1cm4gdmFsdWU7XG5cdFx0fSxcblx0fSk7XG5cdHBvc2l0aW9uID0gaW5wdXQ8Tmd0VmVjdG9yMyB8IHVuZGVmaW5lZD4oWzAsIDAsIDBdKTtcblx0cm90YXRpb24gPSBpbnB1dDxOZ3RFdWxlciB8IHVuZGVmaW5lZD4oWzAsIDAsIDBdKTtcblx0c2NhbGUgPSBpbnB1dDxOZ3RWZWN0b3IzIHwgdW5kZWZpbmVkPihbMSwgMSwgMV0pO1xuXHRxdWF0ZXJuaW9uID0gaW5wdXQ8Tmd0UXVhdGVybmlvbiB8IHVuZGVmaW5lZD4oWzAsIDAsIDAsIDFdKTtcblx0dXNlckRhdGEgPSBpbnB1dDxOZ3RPYmplY3QzRFsndXNlckRhdGEnXSB8IHVuZGVmaW5lZD4oe30pO1xuXHRvcHRpb25zID0gaW5wdXQocmlnaWRCb2R5RGVmYXVsdE9wdGlvbnMsIHsgdHJhbnNmb3JtOiBtZXJnZUlucHV0cyhyaWdpZEJvZHlEZWZhdWx0T3B0aW9ucykgfSk7XG5cblx0d2FrZSA9IG91dHB1dDx2b2lkPigpO1xuXHRzbGVlcCA9IG91dHB1dDx2b2lkPigpO1xuXHRjb2xsaXNpb25FbnRlciA9IG91dHB1dDxOZ3RyQ29sbGlzaW9uRW50ZXJQYXlsb2FkPigpO1xuXHRjb2xsaXNpb25FeGl0ID0gb3V0cHV0PE5ndHJDb2xsaXNpb25FeGl0UGF5bG9hZD4oKTtcblx0aW50ZXJzZWN0aW9uRW50ZXIgPSBvdXRwdXQ8Tmd0ckludGVyc2VjdGlvbkVudGVyUGF5bG9hZD4oKTtcblx0aW50ZXJzZWN0aW9uRXhpdCA9IG91dHB1dDxOZ3RySW50ZXJzZWN0aW9uRXhpdFBheWxvYWQ+KCk7XG5cdGNvbnRhY3RGb3JjZSA9IG91dHB1dDxOZ3RyQ29udGFjdEZvcmNlUGF5bG9hZD4oKTtcblxuXHRwcml2YXRlIGNhblNsZWVwID0gcGljayh0aGlzLm9wdGlvbnMsICdjYW5TbGVlcCcpO1xuXHRwcml2YXRlIGNvbGxpZGVycyA9IHBpY2sodGhpcy5vcHRpb25zLCAnY29sbGlkZXJzJyk7XG5cdHByaXZhdGUgdHJhbnNmb3JtU3RhdGUgPSBwaWNrKHRoaXMub3B0aW9ucywgJ3RyYW5zZm9ybVN0YXRlJyk7XG5cdHByaXZhdGUgZ3Jhdml0eVNjYWxlID0gcGljayh0aGlzLm9wdGlvbnMsICdncmF2aXR5U2NhbGUnKTtcblx0cHJpdmF0ZSBkb21pbmFuY2VHcm91cCA9IHBpY2sodGhpcy5vcHRpb25zLCAnZG9taW5hbmNlR3JvdXAnKTtcblx0cHJpdmF0ZSBjY2QgPSBwaWNrKHRoaXMub3B0aW9ucywgJ2NjZCcpO1xuXHRwcml2YXRlIHNvZnRDY2RQcmVkaWN0aW9uID0gcGljayh0aGlzLm9wdGlvbnMsICdzb2Z0Q2NkUHJlZGljdGlvbicpO1xuXHRwcml2YXRlIGFkZGl0aW9uYWxTb2x2ZXJJdGVyYXRpb25zID0gcGljayh0aGlzLm9wdGlvbnMsICdhZGRpdGlvbmFsU29sdmVySXRlcmF0aW9ucycpO1xuXHRwcml2YXRlIGxpbmVhckRhbXBpbmcgPSBwaWNrKHRoaXMub3B0aW9ucywgJ2xpbmVhckRhbXBpbmcnKTtcblx0cHJpdmF0ZSBhbmd1bGFyRGFtcGluZyA9IHBpY2sodGhpcy5vcHRpb25zLCAnYW5ndWxhckRhbXBpbmcnKTtcblx0cHJpdmF0ZSBsb2NrUm90YXRpb25zID0gcGljayh0aGlzLm9wdGlvbnMsICdsb2NrUm90YXRpb25zJyk7XG5cdHByaXZhdGUgbG9ja1RyYW5zbGF0aW9ucyA9IHBpY2sodGhpcy5vcHRpb25zLCAnbG9ja1RyYW5zbGF0aW9ucycpO1xuXHRwcml2YXRlIGVuYWJsZWRSb3RhdGlvbnMgPSBwaWNrKHRoaXMub3B0aW9ucywgJ2VuYWJsZWRSb3RhdGlvbnMnKTtcblx0cHJpdmF0ZSBlbmFibGVkVHJhbnNsYXRpb25zID0gcGljayh0aGlzLm9wdGlvbnMsICdlbmFibGVkVHJhbnNsYXRpb25zJyk7XG5cdHByaXZhdGUgYW5ndWxhclZlbG9jaXR5ID0gcGljayh0aGlzLm9wdGlvbnMsICdhbmd1bGFyVmVsb2NpdHknKTtcblx0cHJpdmF0ZSBsaW5lYXJWZWxvY2l0eSA9IHBpY2sodGhpcy5vcHRpb25zLCAnbGluZWFyVmVsb2NpdHknKTtcblxuXHRvYmplY3RSZWYgPSBpbmplY3Q8RWxlbWVudFJlZjxPYmplY3QzRD4+KEVsZW1lbnRSZWYpO1xuXHRwcml2YXRlIHBoeXNpY3MgPSBpbmplY3QoTmd0clBoeXNpY3MpO1xuXG5cdHByaXZhdGUgYm9keVR5cGUgPSBjb21wdXRlZCgoKSA9PiBSSUdJRF9CT0RZX1RZUEVfTUFQW3RoaXMudHlwZSgpXSk7XG5cdHByaXZhdGUgYm9keURlc2MgPSBjb21wdXRlZCgoKSA9PiB7XG5cdFx0Y29uc3QgW2NhblNsZWVwLCBib2R5VHlwZV0gPSBbdGhpcy5jYW5TbGVlcCgpLCB1bnRyYWNrZWQodGhpcy5ib2R5VHlwZSksIHRoaXMuY29sbGlkZXJzKCldO1xuXHRcdHJldHVybiBuZXcgUmlnaWRCb2R5RGVzYyhib2R5VHlwZSkuc2V0Q2FuU2xlZXAoY2FuU2xlZXApO1xuXHR9KTtcblx0cmlnaWRCb2R5ID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdGNvbnN0IHdvcmxkU2luZ2xldG9uID0gdGhpcy5waHlzaWNzLndvcmxkU2luZ2xldG9uKCk7XG5cdFx0aWYgKCF3b3JsZFNpbmdsZXRvbikgcmV0dXJuIG51bGw7XG5cdFx0cmV0dXJuIHdvcmxkU2luZ2xldG9uLnByb3h5LmNyZWF0ZVJpZ2lkQm9keSh0aGlzLmJvZHlEZXNjKCkpO1xuXHR9KTtcblxuXHRwcm90ZWN0ZWQgY2hpbGRDb2xsaWRlck9wdGlvbnMgPSBjb21wdXRlZCgoKSA9PiB7XG5cdFx0Y29uc3QgY29sbGlkZXJzID0gdGhpcy5jb2xsaWRlcnMoKTtcblx0XHQvLyBpZiBzZWxmIGNvbGxpZGVycyBpcyBmYWxzZSBleHBsaWNpdGx5LCBkaXNhYmxlIGF1dG8gY29sbGlkZXJzIGZvciB0aGlzIG9iamVjdCBlbnRpcmVseS5cblx0XHRpZiAoY29sbGlkZXJzID09PSBmYWxzZSkgcmV0dXJuIFtdO1xuXG5cdFx0Y29uc3QgcGh5c2ljc0NvbGxpZGVycyA9IHRoaXMucGh5c2ljcy5jb2xsaWRlcnMoKTtcblx0XHQvLyBpZiBwaHlzaWNzIGNvbGxpZGVycyBpcyBmYWxzZSBleHBsaWNpdGx5IEFORCBjb2xsaWRlcnMgaXMgbm90IHNldCwgZGlzYWJsZSBhdXRvIGNvbGxpZGVycyBmb3IgdGhpcyBvYmplY3QgZW50aXJlbHkuXG5cdFx0aWYgKHBoeXNpY3NDb2xsaWRlcnMgPT09IGZhbHNlICYmIGNvbGxpZGVycyA9PT0gdW5kZWZpbmVkKSByZXR1cm4gW107XG5cblx0XHRjb25zdCBvcHRpb25zID0gdW50cmFja2VkKHRoaXMub3B0aW9ucyk7XG5cdFx0Ly8gaWYgY29sbGlkZXJzIG9uIG9iamVjdCBpcyBub3Qgc2V0LCB1c2UgcGh5c2ljcyBjb2xsaWRlcnNcblx0XHRpZiAoIW9wdGlvbnMuY29sbGlkZXJzKSBvcHRpb25zLmNvbGxpZGVycyA9IHBoeXNpY3NDb2xsaWRlcnM7XG5cblx0XHRjb25zdCBvYmplY3RMb2NhbFN0YXRlID0gZ2V0TG9jYWxTdGF0ZSh0aGlzLm9iamVjdFJlZi5uYXRpdmVFbGVtZW50KTtcblx0XHRpZiAoIW9iamVjdExvY2FsU3RhdGUpIHJldHVybiBbXTtcblxuXHRcdC8vIHRyYWNrIG9iamVjdCdzIHBhcmVudCBhbmQgbm9uLW9iamVjdCBjaGlsZHJlblxuXHRcdGNvbnN0IFtwYXJlbnRdID0gW29iamVjdExvY2FsU3RhdGUucGFyZW50KCksIG9iamVjdExvY2FsU3RhdGUubm9uT2JqZWN0cygpXTtcblx0XHRpZiAoIXBhcmVudCB8fCAhKHBhcmVudCBhcyBPYmplY3QzRCkuaXNPYmplY3QzRCkgcmV0dXJuIFtdO1xuXG5cdFx0cmV0dXJuIGNyZWF0ZUNvbGxpZGVyT3B0aW9ucyh0aGlzLm9iamVjdFJlZi5uYXRpdmVFbGVtZW50LCBvcHRpb25zLCB0cnVlKTtcblx0fSk7XG5cblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0ZXh0ZW5kKHsgT2JqZWN0M0QgfSk7XG5cblx0XHRlZmZlY3QoKG9uQ2xlYW51cCkgPT4ge1xuXHRcdFx0Y29uc3QgY2xlYW51cCA9IHRoaXMuY3JlYXRlUmlnaWRCb2R5U3RhdGVFZmZlY3QoKTtcblx0XHRcdG9uQ2xlYW51cCgoKSA9PiBjbGVhbnVwPy4oKSk7XG5cdFx0fSk7XG5cblx0XHRlZmZlY3QoKG9uQ2xlYW51cCkgPT4ge1xuXHRcdFx0Y29uc3QgY2xlYW51cCA9IHRoaXMuY3JlYXRlUmlnaWRCb2R5RXZlbnRzRWZmZWN0KCk7XG5cdFx0XHRvbkNsZWFudXAoKCkgPT4gY2xlYW51cD8uKCkpO1xuXHRcdH0pO1xuXG5cdFx0ZWZmZWN0KCgpID0+IHtcblx0XHRcdHRoaXMudXBkYXRlUmlnaWRCb2R5RWZmZWN0KCk7XG5cdFx0fSk7XG5cdH1cblxuXHRwcml2YXRlIGNyZWF0ZVJpZ2lkQm9keVN0YXRlRWZmZWN0KCkge1xuXHRcdGNvbnN0IHdvcmxkU2luZ2xldG9uID0gdGhpcy5waHlzaWNzLndvcmxkU2luZ2xldG9uKCk7XG5cdFx0aWYgKCF3b3JsZFNpbmdsZXRvbikgcmV0dXJuO1xuXG5cdFx0Y29uc3QgYm9keSA9IHRoaXMucmlnaWRCb2R5KCk7XG5cdFx0aWYgKCFib2R5KSByZXR1cm47XG5cblx0XHRjb25zdCB0cmFuc2Zvcm1TdGF0ZSA9IHVudHJhY2tlZCh0aGlzLnRyYW5zZm9ybVN0YXRlKTtcblxuXHRcdGNvbnN0IGxvY2FsU3RhdGUgPSBnZXRMb2NhbFN0YXRlKHRoaXMub2JqZWN0UmVmLm5hdGl2ZUVsZW1lbnQpO1xuXHRcdGlmICghbG9jYWxTdGF0ZSkgcmV0dXJuO1xuXG5cdFx0Y29uc3QgcGFyZW50ID0gbG9jYWxTdGF0ZS5wYXJlbnQoKTtcblx0XHRpZiAoIXBhcmVudCB8fCAhKHBhcmVudCBhcyBPYmplY3QzRCkuaXNPYmplY3QzRCkgcmV0dXJuO1xuXG5cdFx0Y29uc3Qgc3RhdGUgPSB0aGlzLmNyZWF0ZVJpZ2lkQm9keVN0YXRlKGJvZHksIHRoaXMub2JqZWN0UmVmLm5hdGl2ZUVsZW1lbnQpO1xuXHRcdHRoaXMucGh5c2ljcy5yaWdpZEJvZHlTdGF0ZXMuc2V0KGJvZHkuaGFuZGxlLCB0cmFuc2Zvcm1TdGF0ZSA/IHRyYW5zZm9ybVN0YXRlKHN0YXRlKSA6IHN0YXRlKTtcblxuXHRcdHJldHVybiAoKSA9PiB7XG5cdFx0XHR0aGlzLnBoeXNpY3MucmlnaWRCb2R5U3RhdGVzLmRlbGV0ZShib2R5LmhhbmRsZSk7XG5cdFx0XHRpZiAod29ybGRTaW5nbGV0b24ucHJveHkuZ2V0UmlnaWRCb2R5KGJvZHkuaGFuZGxlKSkge1xuXHRcdFx0XHR3b3JsZFNpbmdsZXRvbi5wcm94eS5yZW1vdmVSaWdpZEJvZHkoYm9keSk7XG5cdFx0XHR9XG5cdFx0fTtcblx0fVxuXG5cdHByaXZhdGUgY3JlYXRlUmlnaWRCb2R5RXZlbnRzRWZmZWN0KCkge1xuXHRcdGNvbnN0IHdvcmxkU2luZ2xldG9uID0gdGhpcy5waHlzaWNzLndvcmxkU2luZ2xldG9uKCk7XG5cdFx0aWYgKCF3b3JsZFNpbmdsZXRvbikgcmV0dXJuO1xuXG5cdFx0Y29uc3QgYm9keSA9IHRoaXMucmlnaWRCb2R5KCk7XG5cdFx0aWYgKCFib2R5KSByZXR1cm47XG5cblx0XHRjb25zdCB3YWtlID0gZ2V0RW1pdHRlcih0aGlzLndha2UpO1xuXHRcdGNvbnN0IHNsZWVwID0gZ2V0RW1pdHRlcih0aGlzLnNsZWVwKTtcblx0XHRjb25zdCBjb2xsaXNpb25FbnRlciA9IGdldEVtaXR0ZXIodGhpcy5jb2xsaXNpb25FbnRlcik7XG5cdFx0Y29uc3QgY29sbGlzaW9uRXhpdCA9IGdldEVtaXR0ZXIodGhpcy5jb2xsaXNpb25FeGl0KTtcblx0XHRjb25zdCBpbnRlcnNlY3Rpb25FbnRlciA9IGdldEVtaXR0ZXIodGhpcy5pbnRlcnNlY3Rpb25FbnRlcik7XG5cdFx0Y29uc3QgaW50ZXJzZWN0aW9uRXhpdCA9IGdldEVtaXR0ZXIodGhpcy5pbnRlcnNlY3Rpb25FeGl0KTtcblx0XHRjb25zdCBjb250YWN0Rm9yY2UgPSBnZXRFbWl0dGVyKHRoaXMuY29udGFjdEZvcmNlKTtcblxuXHRcdHRoaXMucGh5c2ljcy5yaWdpZEJvZHlFdmVudHMuc2V0KGJvZHkuaGFuZGxlLCB7XG5cdFx0XHRvbldha2U6IHdha2UsXG5cdFx0XHRvblNsZWVwOiBzbGVlcCxcblx0XHRcdG9uQ29sbGlzaW9uRW50ZXI6IGNvbGxpc2lvbkVudGVyLFxuXHRcdFx0b25Db2xsaXNpb25FeGl0OiBjb2xsaXNpb25FeGl0LFxuXHRcdFx0b25JbnRlcnNlY3Rpb25FbnRlcjogaW50ZXJzZWN0aW9uRW50ZXIsXG5cdFx0XHRvbkludGVyc2VjdGlvbkV4aXQ6IGludGVyc2VjdGlvbkV4aXQsXG5cdFx0XHRvbkNvbnRhY3RGb3JjZTogY29udGFjdEZvcmNlLFxuXHRcdH0pO1xuXG5cdFx0cmV0dXJuICgpID0+IHtcblx0XHRcdHRoaXMucGh5c2ljcy5yaWdpZEJvZHlFdmVudHMuZGVsZXRlKGJvZHkuaGFuZGxlKTtcblx0XHR9O1xuXHR9XG5cblx0cHJpdmF0ZSB1cGRhdGVSaWdpZEJvZHlFZmZlY3QoKSB7XG5cdFx0Y29uc3Qgd29ybGRTaW5nbGV0b24gPSB0aGlzLnBoeXNpY3Mud29ybGRTaW5nbGV0b24oKTtcblx0XHRpZiAoIXdvcmxkU2luZ2xldG9uKSByZXR1cm47XG5cblx0XHRjb25zdCBib2R5ID0gdGhpcy5yaWdpZEJvZHkoKTtcblx0XHRpZiAoIWJvZHkpIHJldHVybjtcblxuXHRcdGNvbnN0IHN0YXRlID0gdGhpcy5waHlzaWNzLnJpZ2lkQm9keVN0YXRlcy5nZXQoYm9keS5oYW5kbGUpO1xuXHRcdGlmICghc3RhdGUpIHJldHVybjtcblxuXHRcdHN0YXRlLm9iamVjdC51cGRhdGVXb3JsZE1hdHJpeCh0cnVlLCBmYWxzZSk7XG5cdFx0X21hdHJpeDQuY29weShzdGF0ZS5vYmplY3QubWF0cml4V29ybGQpLmRlY29tcG9zZShfcG9zaXRpb24sIF9yb3RhdGlvbiwgX3NjYWxlKTtcblx0XHRib2R5LnNldFRyYW5zbGF0aW9uKF9wb3NpdGlvbiwgdHJ1ZSk7XG5cdFx0Ym9keS5zZXRSb3RhdGlvbihfcm90YXRpb24sIHRydWUpO1xuXG5cdFx0Y29uc3QgW1xuXHRcdFx0Z3Jhdml0eVNjYWxlLFxuXHRcdFx0YWRkaXRpb25hbFNvbHZlckl0ZXJhdGlvbnMsXG5cdFx0XHRsaW5lYXJEYW1waW5nLFxuXHRcdFx0YW5ndWxhckRhbXBpbmcsXG5cdFx0XHRsb2NrUm90YXRpb25zLFxuXHRcdFx0bG9ja1RyYW5zbGF0aW9ucyxcblx0XHRcdGVuYWJsZWRSb3RhdGlvbnMsXG5cdFx0XHRlbmFibGVkVHJhbnNsYXRpb25zLFxuXHRcdFx0YW5ndWxhclZlbG9jaXR5LFxuXHRcdFx0bGluZWFyVmVsb2NpdHksXG5cdFx0XHRjY2QsXG5cdFx0XHRzb2Z0Q2NkUHJlZGljdGlvbixcblx0XHRcdGRvbWluYW5jZUdyb3VwLFxuXHRcdFx0dXNlckRhdGEsXG5cdFx0XHRib2R5VHlwZSxcblx0XHRdID0gW1xuXHRcdFx0dGhpcy5ncmF2aXR5U2NhbGUoKSxcblx0XHRcdHRoaXMuYWRkaXRpb25hbFNvbHZlckl0ZXJhdGlvbnMoKSxcblx0XHRcdHRoaXMubGluZWFyRGFtcGluZygpLFxuXHRcdFx0dGhpcy5hbmd1bGFyRGFtcGluZygpLFxuXHRcdFx0dGhpcy5sb2NrUm90YXRpb25zKCksXG5cdFx0XHR0aGlzLmxvY2tUcmFuc2xhdGlvbnMoKSxcblx0XHRcdHRoaXMuZW5hYmxlZFJvdGF0aW9ucygpLFxuXHRcdFx0dGhpcy5lbmFibGVkVHJhbnNsYXRpb25zKCksXG5cdFx0XHR0aGlzLmFuZ3VsYXJWZWxvY2l0eSgpLFxuXHRcdFx0dGhpcy5saW5lYXJWZWxvY2l0eSgpLFxuXHRcdFx0dGhpcy5jY2QoKSxcblx0XHRcdHRoaXMuc29mdENjZFByZWRpY3Rpb24oKSxcblx0XHRcdHRoaXMuZG9taW5hbmNlR3JvdXAoKSxcblx0XHRcdHRoaXMudXNlckRhdGEoKSxcblx0XHRcdHRoaXMuYm9keVR5cGUoKSxcblx0XHRdO1xuXG5cdFx0Ym9keS5zZXRHcmF2aXR5U2NhbGUoZ3Jhdml0eVNjYWxlLCB0cnVlKTtcblx0XHRpZiAoYWRkaXRpb25hbFNvbHZlckl0ZXJhdGlvbnMgIT09IHVuZGVmaW5lZCkgYm9keS5zZXRBZGRpdGlvbmFsU29sdmVySXRlcmF0aW9ucyhhZGRpdGlvbmFsU29sdmVySXRlcmF0aW9ucyk7XG5cdFx0aWYgKGxpbmVhckRhbXBpbmcgIT09IHVuZGVmaW5lZCkgYm9keS5zZXRMaW5lYXJEYW1waW5nKGxpbmVhckRhbXBpbmcpO1xuXHRcdGlmIChhbmd1bGFyRGFtcGluZyAhPT0gdW5kZWZpbmVkKSBib2R5LnNldEFuZ3VsYXJEYW1waW5nKGFuZ3VsYXJEYW1waW5nKTtcblx0XHRib2R5LnNldERvbWluYW5jZUdyb3VwKGRvbWluYW5jZUdyb3VwKTtcblx0XHRpZiAoZW5hYmxlZFJvdGF0aW9ucyAhPT0gdW5kZWZpbmVkKSBib2R5LnNldEVuYWJsZWRSb3RhdGlvbnMoLi4uZW5hYmxlZFJvdGF0aW9ucywgdHJ1ZSk7XG5cdFx0aWYgKGVuYWJsZWRUcmFuc2xhdGlvbnMgIT09IHVuZGVmaW5lZCkgYm9keS5zZXRFbmFibGVkVHJhbnNsYXRpb25zKC4uLmVuYWJsZWRUcmFuc2xhdGlvbnMsIHRydWUpO1xuXHRcdGlmIChsb2NrUm90YXRpb25zICE9PSB1bmRlZmluZWQpIGJvZHkubG9ja1JvdGF0aW9ucyhsb2NrUm90YXRpb25zLCB0cnVlKTtcblx0XHRpZiAobG9ja1RyYW5zbGF0aW9ucyAhPT0gdW5kZWZpbmVkKSBib2R5LmxvY2tUcmFuc2xhdGlvbnMobG9ja1RyYW5zbGF0aW9ucywgdHJ1ZSk7XG5cdFx0Ym9keS5zZXRBbmd2ZWwoeyB4OiBhbmd1bGFyVmVsb2NpdHlbMF0sIHk6IGFuZ3VsYXJWZWxvY2l0eVsxXSwgejogYW5ndWxhclZlbG9jaXR5WzJdIH0sIHRydWUpO1xuXHRcdGJvZHkuc2V0TGludmVsKHsgeDogbGluZWFyVmVsb2NpdHlbMF0sIHk6IGxpbmVhclZlbG9jaXR5WzFdLCB6OiBsaW5lYXJWZWxvY2l0eVsyXSB9LCB0cnVlKTtcblx0XHRib2R5LmVuYWJsZUNjZChjY2QpO1xuXHRcdGJvZHkuc2V0U29mdENjZFByZWRpY3Rpb24oc29mdENjZFByZWRpY3Rpb24pO1xuXHRcdGlmICh1c2VyRGF0YSAhPT0gdW5kZWZpbmVkKSBib2R5LnVzZXJEYXRhID0gdXNlckRhdGE7XG5cdFx0aWYgKGJvZHlUeXBlICE9PSBib2R5LmJvZHlUeXBlKCkpIGJvZHkuc2V0Qm9keVR5cGUoYm9keVR5cGUsIHRydWUpO1xuXHR9XG5cblx0cHJpdmF0ZSBjcmVhdGVSaWdpZEJvZHlTdGF0ZShcblx0XHRyaWdpZEJvZHk6IFJpZ2lkQm9keSxcblx0XHRvYmplY3Q6IE9iamVjdDNELFxuXHRcdHNldE1hdHJpeD86IChtYXRyaXg6IE1hdHJpeDQpID0+IHZvaWQsXG5cdFx0Z2V0TWF0cml4PzogKG1hdHJpeDogTWF0cml4NCkgPT4gTWF0cml4NCxcblx0XHR3b3JsZFNjYWxlPzogVmVjdG9yMyxcblx0XHRtZXNoVHlwZTogTmd0clJpZ2lkQm9keVN0YXRlWydtZXNoVHlwZSddID0gJ21lc2gnLFxuXHQpIHtcblx0XHRvYmplY3QudXBkYXRlV29ybGRNYXRyaXgodHJ1ZSwgZmFsc2UpO1xuXHRcdGNvbnN0IGludmVydGVkV29ybGRNYXRyaXggPSBvYmplY3QucGFyZW50IS5tYXRyaXhXb3JsZC5jbG9uZSgpLmludmVydCgpO1xuXHRcdHJldHVybiB7XG5cdFx0XHRvYmplY3QsXG5cdFx0XHRyaWdpZEJvZHksXG5cdFx0XHRpbnZlcnRlZFdvcmxkTWF0cml4LFxuXHRcdFx0c2V0TWF0cml4OiBzZXRNYXRyaXhcblx0XHRcdFx0PyBzZXRNYXRyaXhcblx0XHRcdFx0OiAobWF0cml4OiBNYXRyaXg0KSA9PiB7XG5cdFx0XHRcdFx0XHRvYmplY3QubWF0cml4LmNvcHkobWF0cml4KTtcblx0XHRcdFx0XHR9LFxuXHRcdFx0Z2V0TWF0cml4OiBnZXRNYXRyaXggPyBnZXRNYXRyaXggOiAobWF0cml4OiBNYXRyaXg0KSA9PiBtYXRyaXguY29weShvYmplY3QubWF0cml4KSxcblx0XHRcdHNjYWxlOiB3b3JsZFNjYWxlIHx8IG9iamVjdC5nZXRXb3JsZFNjYWxlKF9zY2FsZSkuY2xvbmUoKSxcblx0XHRcdGlzU2xlZXBpbmc6IGZhbHNlLFxuXHRcdFx0bWVzaFR5cGUsXG5cdFx0fTtcblx0fVxufVxuIl19
|
|
552
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmlnaWQtYm9keS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvcmFwaWVyL3NyYy9saWIvcmlnaWQtYm9keS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ04sdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1Isc0JBQXNCLEVBQ3RCLFNBQVMsRUFDVCxNQUFNLEVBQ04sVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBQ0wsS0FBSyxFQUNMLE1BQU0sRUFDTixTQUFTLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBWSxZQUFZLEVBQWEsYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0csT0FBTyxFQUNOLE1BQU0sRUFDTixVQUFVLEVBQ1YsYUFBYSxFQUNiLFdBQVcsRUFLWCxJQUFJLEdBQ0osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZELE9BQU8sRUFBVyxRQUFRLEVBQUUsT0FBTyxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQ25ELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDeEMsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFjNUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sU0FBUyxDQUFDOztBQUVoRCxNQUFNLHNCQUFzQixHQUF3QjtJQUNuRCxXQUFXLEVBQUUsQ0FBQztDQUNkLENBQUM7QUFjRixNQUFNLE9BQU8sZUFBZTtJQUMzQixRQUFRLEdBQUcsS0FBSyxDQUF5QixDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwRCxRQUFRLEdBQUcsS0FBSyxDQUF1QixDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FB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TSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUU7WUFDekQsVUFBVSxFQUFFLEtBQUs7WUFDakIsUUFBUTtTQUNSLENBQUM7SUFDSCxDQUFDO3dHQWpQVyxhQUFhOzRGQUFiLGFBQWEsNjJDQXpCZjs7Ozs7Ozs7Ozs7OztFQWFULDREQXpWVyxlQUFlOzs0RkFxV2YsYUFBYTtrQkE3QnpCLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLDZCQUE2QjtvQkFDdkMsUUFBUSxFQUFFLFdBQVc7b0JBQ3JCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7RUFhVDtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztvQkFDakMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLElBQUksRUFBRTt3QkFDTCxZQUFZLEVBQUUsWUFBWTt3QkFDMUIsWUFBWSxFQUFFLFlBQVk7d0JBQzFCLFNBQVMsRUFBRSxTQUFTO3dCQUNwQixjQUFjLEVBQUUsY0FBYzt3QkFDOUIsWUFBWSxFQUFFLFlBQVk7cUJBQzFCO29CQUNELE9BQU8sRUFBRSxDQUFDLGVBQWUsQ0FBQztpQkFDMUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuXHRDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcblx0Q29tcG9uZW50LFxuXHRjb21wdXRlZCxcblx0Q1VTVE9NX0VMRU1FTlRTX1NDSEVNQSxcblx0RGlyZWN0aXZlLFxuXHRlZmZlY3QsXG5cdEVsZW1lbnRSZWYsXG5cdGluamVjdCxcblx0aW5wdXQsXG5cdG1vZGVsLFxuXHRvdXRwdXQsXG5cdHVudHJhY2tlZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmVFdmVudHMsIENvbGxpZGVyLCBDb2xsaWRlckRlc2MsIFJpZ2lkQm9keSwgUmlnaWRCb2R5RGVzYyB9IGZyb20gJ0BkaW1mb3JnZS9yYXBpZXIzZC1jb21wYXQnO1xuaW1wb3J0IHtcblx0ZXh0ZW5kLFxuXHRnZXRFbWl0dGVyLFxuXHRnZXRMb2NhbFN0YXRlLFxuXHRoYXNMaXN0ZW5lcixcblx0Tmd0RXVsZXIsXG5cdE5ndE9iamVjdDNELFxuXHROZ3RRdWF0ZXJuaW9uLFxuXHROZ3RWZWN0b3IzLFxuXHRwaWNrLFxufSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IG1lcmdlSW5wdXRzIH0gZnJvbSAnbmd4dGVuc2lvbi9pbmplY3QtaW5wdXRzJztcbmltcG9ydCB7IE1hdHJpeDQsIE9iamVjdDNELCBWZWN0b3IzIH0gZnJvbSAndGhyZWUnO1xuaW1wb3J0IHsgTmd0clBoeXNpY3MgfSBmcm9tICcuL3BoeXNpY3MnO1xuaW1wb3J0IHsgX21hdHJpeDQsIF9wb3NpdGlvbiwgX3JvdGF0aW9uLCBfc2NhbGUsIF92ZWN0b3IzIH0gZnJvbSAnLi9zaGFyZWQnO1xuaW1wb3J0IHtcblx0Tmd0ckNvbGxpZGVyT3B0aW9ucyxcblx0Tmd0ckNvbGxpZGVyU2hhcGUsXG5cdE5ndHJDb2xsaWRlclN0YXRlLFxuXHROZ3RyQ29sbGlzaW9uRW50ZXJQYXlsb2FkLFxuXHROZ3RyQ29sbGlzaW9uRXhpdFBheWxvYWQsXG5cdE5ndHJDb250YWN0Rm9yY2VQYXlsb2FkLFxuXHROZ3RySW50ZXJzZWN0aW9uRW50ZXJQYXlsb2FkLFxuXHROZ3RySW50ZXJzZWN0aW9uRXhpdFBheWxvYWQsXG5cdE5ndHJSaWdpZEJvZHlPcHRpb25zLFxuXHROZ3RyUmlnaWRCb2R5U3RhdGUsXG5cdE5ndHJSaWdpZEJvZHlUeXBlLFxufSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IGNyZWF0ZUNvbGxpZGVyT3B0aW9ucyB9IGZyb20gJy4vdXRpbHMnO1xuXG5jb25zdCBjb2xsaWRlckRlZmF1bHRPcHRpb25zOiBOZ3RyQ29sbGlkZXJPcHRpb25zID0ge1xuXHRjb250YWN0U2tpbjogMCxcbn07XG5cbkBEaXJlY3RpdmUoe1xuXHRzZWxlY3RvcjogJ25ndC1vYmplY3QzRFtuZ3RyQ29sbGlkZXJdJyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0aG9zdDoge1xuXHRcdCdbcG9zaXRpb25dJzogJ3Bvc2l0aW9uKCknLFxuXHRcdCdbcm90YXRpb25dJzogJ3JvdGF0aW9uKCknLFxuXHRcdCdbc2NhbGVdJzogJ3NjYWxlKCknLFxuXHRcdCdbcXVhdGVybmlvbl0nOiAncXVhdGVybmlvbigpJyxcblx0XHQnW3VzZXJEYXRhXSc6ICd1c2VyRGF0YSgpJyxcblx0XHQnW25hbWVdJzogJ25hbWUoKScsXG5cdH0sXG59KVxuZXhwb3J0IGNsYXNzIE5ndHJBbnlDb2xsaWRlciB7XG5cdHBvc2l0aW9uID0gaW5wdXQ8Tmd0VmVjdG9yMyB8IHVuZGVmaW5lZD4oWzAsIDAsIDBdKTtcblx0cm90YXRpb24gPSBpbnB1dDxOZ3RFdWxlciB8IHVuZGVmaW5lZD4oWzAsIDAsIDBdKTtcblx0c2NhbGUgPSBpbnB1dDxOZ3RWZWN0b3IzIHwgdW5kZWZpbmVkPihbMSwgMSwgMV0pO1xuXHRxdWF0ZXJuaW9uID0gaW5wdXQ8Tmd0UXVhdGVybmlvbiB8IHVuZGVmaW5lZD4oWzAsIDAsIDAsIDFdKTtcblx0dXNlckRhdGEgPSBpbnB1dDxOZ3RPYmplY3QzRFsndXNlckRhdGEnXSB8IHVuZGVmaW5lZD4oe30pO1xuXHRuYW1lID0gaW5wdXQ8Tmd0T2JqZWN0M0RbJ25hbWUnXSB8IHVuZGVmaW5lZD4oKTtcblx0b3B0aW9ucyA9IGlucHV0KGNvbGxpZGVyRGVmYXVsdE9wdGlvbnMsIHsgdHJhbnNmb3JtOiBtZXJnZUlucHV0cyhyaWdpZEJvZHlEZWZhdWx0T3B0aW9ucykgfSk7XG5cblx0Ly8gVE9ETzogY2hhbmdlIHRoaXMgdG8gaW5wdXQgcmVxdWlyZWQgd2hlbiBBbmd1bGFyIGFsbG93cyBzZXR0aW5nIGhvc3REaXJlY3RpdmUgaW5wdXRcblx0c2hhcGUgPSBtb2RlbDxOZ3RyQ29sbGlkZXJTaGFwZSB8IHVuZGVmaW5lZD4odW5kZWZpbmVkLCB7IGFsaWFzOiAnbmd0ckNvbGxpZGVyJyB9KTtcblx0YXJncyA9IG1vZGVsPHVua25vd25bXT4oW10pO1xuXG5cdGNvbGxpc2lvbkVudGVyID0gb3V0cHV0PE5ndHJDb2xsaXNpb25FbnRlclBheWxvYWQ+KCk7XG5cdGNvbGxpc2lvbkV4aXQgPSBvdXRwdXQ8Tmd0ckNvbGxpc2lvbkV4aXRQYXlsb2FkPigpO1xuXHRpbnRlcnNlY3Rpb25FbnRlciA9IG91dHB1dDxOZ3RySW50ZXJzZWN0aW9uRW50ZXJQYXlsb2FkPigpO1xuXHRpbnRlcnNlY3Rpb25FeGl0ID0gb3V0cHV0PE5ndHJJbnRlcnNlY3Rpb25FeGl0UGF5bG9hZD4oKTtcblx0Y29udGFjdEZvcmNlID0gb3V0cHV0PE5ndHJDb250YWN0Rm9yY2VQYXlsb2FkPigpO1xuXG5cdHByaXZhdGUgc2Vuc29yID0gcGljayh0aGlzLm9wdGlvbnMsICdzZW5zb3InKTtcblx0cHJpdmF0ZSBjb2xsaXNpb25Hcm91cHMgPSBwaWNrKHRoaXMub3B0aW9ucywgJ2NvbGxpc2lvbkdyb3VwcycpO1xuXHRwcml2YXRlIHNvbHZlckdyb3VwcyA9IHBpY2sodGhpcy5vcHRpb25zLCAnc29sdmVyR3JvdXBzJyk7XG5cdHByaXZhdGUgZnJpY3Rpb24gPSBwaWNrKHRoaXMub3B0aW9ucywgJ2ZyaWN0aW9uJyk7XG5cdHByaXZhdGUgZnJpY3Rpb25Db21iaW5lUnVsZSA9IHBpY2sodGhpcy5vcHRpb25zLCAnZnJpY3Rpb25Db21iaW5lUnVsZScpO1xuXHRwcml2YXRlIHJlc3RpdHV0aW9uID0gcGljayh0aGlzLm9wdGlvbnMsICdyZXN0aXR1dGlvbicpO1xuXHRwcml2YXRlIHJlc3RpdHV0aW9uQ29tYmluZVJ1bGUgPSBwaWNrKHRoaXMub3B0aW9ucywgJ3Jlc3RpdHV0aW9uQ29tYmluZVJ1bGUnKTtcblx0cHJpdmF0ZSBhY3RpdmVDb2xsaXNpb25UeXBlcyA9IHBpY2sodGhpcy5vcHRpb25zLCAnYWN0aXZlQ29sbGlzaW9uVHlwZXMnKTtcblx0cHJpdmF0ZSBjb250YWN0U2tpbiA9IHBpY2sodGhpcy5vcHRpb25zLCAnY29udGFjdFNraW4nKTtcblx0cHJpdmF0ZSBtYXNzID0gcGljayh0aGlzLm9wdGlvbnMsICdtYXNzJyk7XG5cdHByaXZhdGUgbWFzc1Byb3BlcnRpZXMgPSBwaWNrKHRoaXMub3B0aW9ucywgJ21hc3NQcm9wZXJ0aWVzJyk7XG5cdHByaXZhdGUgZGVuc2l0eSA9IHBpY2sodGhpcy5vcHRpb25zLCAnZGVuc2l0eScpO1xuXG5cdHByaXZhdGUgcmlnaWRCb2R5ID0gaW5qZWN0KE5ndHJSaWdpZEJvZHksIHsgb3B0aW9uYWw6IHRydWUgfSk7XG5cdHByaXZhdGUgcGh5c2ljcyA9IGluamVjdChOZ3RyUGh5c2ljcyk7XG5cdG9iamVjdFJlZiA9IGluamVjdDxFbGVtZW50UmVmPE9iamVjdDNEPj4oRWxlbWVudFJlZik7XG5cblx0cHJpdmF0ZSBzY2FsZWRBcmdzID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdGNvbnN0IFtzaGFwZSwgYXJnc10gPSBbXG5cdFx0XHR0aGlzLnNoYXBlKCksXG5cdFx0XHR0aGlzLmFyZ3MoKSBhcyAobnVtYmVyIHwgQXJyYXlMaWtlPG51bWJlcj4gfCB7IHg6IG51bWJlcjsgeTogbnVtYmVyOyB6OiBudW1iZXIgfSlbXSxcblx0XHRdO1xuXG5cdFx0Y29uc3QgY2xvbmVkID0gYXJncy5zbGljZSgpO1xuXG5cdFx0Ly8gSGVpZ2h0ZmllbGQgdXNlcyBhIHZlY3RvclxuXHRcdGlmIChzaGFwZSA9PT0gJ2hlaWdodGZpZWxkJykge1xuXHRcdFx0Y29uc3QgcyA9IGNsb25lZFszXSBhcyB7IHg6IG51bWJlcjsgeTogbnVtYmVyOyB6OiBudW1iZXIgfTtcblx0XHRcdHMueCAqPSB0aGlzLndvcmxkU2NhbGUueDtcblx0XHRcdHMueSAqPSB0aGlzLndvcmxkU2NhbGUueTtcblx0XHRcdHMueiAqPSB0aGlzLndvcmxkU2NhbGUuejtcblxuXHRcdFx0cmV0dXJuIGNsb25lZDtcblx0XHR9XG5cblx0XHQvLyBUcmltZXNoIGFuZCBjb252ZXggc2NhbGUgdGhlIHZlcnRpY2VzXG5cdFx0aWYgKHNoYXBlID09PSAndHJpbWVzaCcgfHwgc2hhcGUgPT09ICdjb252ZXhIdWxsJykge1xuXHRcdFx0Y2xvbmVkWzBdID0gdGhpcy5zY2FsZVZlcnRpY2VzKGNsb25lZFswXSBhcyBBcnJheUxpa2U8bnVtYmVyPiwgdGhpcy53b3JsZFNjYWxlKTtcblx0XHRcdHJldHVybiBjbG9uZWQ7XG5cdFx0fVxuXG5cdFx0Ly8gcHJlZmlsbCB3aXRoIHNvbWUgZXh0cmFcblx0XHRjb25zdCBzY2FsZUFycmF5ID0gW3RoaXMud29ybGRTY2FsZS54LCB0aGlzLndvcmxkU2NhbGUueSwgdGhpcy53b3JsZFNjYWxlLnosIHRoaXMud29ybGRTY2FsZS54LCB0aGlzLndvcmxkU2NhbGUueF07XG5cdFx0cmV0dXJuIGNsb25lZC5tYXAoKGFyZywgaW5kZXgpID0+IHNjYWxlQXJyYXlbaW5kZXhdICogKGFyZyBhcyBudW1iZXIpKTtcblx0fSk7XG5cblx0cHJpdmF0ZSBjb2xsaWRlciA9IGNvbXB1dGVkKCgpID0+IHtcblx0XHRjb25zdCB3b3JsZFNpbmdsZXRvbiA9IHRoaXMucGh5c2ljcy53b3JsZFNpbmdsZXRvbigpO1xuXHRcdGlmICghd29ybGRTaW5nbGV0b24pIHJldHVybiBudWxsO1xuXG5cdFx0Y29uc3QgW3NoYXBlLCBhcmdzLCByaWdpZEJvZHldID0gW3RoaXMuc2hhcGUoKSwgdGhpcy5zY2FsZWRBcmdzKCksIHRoaXMucmlnaWRCb2R5Py5yaWdpZEJvZHkoKV07XG5cblx0XHQvLyBAdHMtZXhwZWN0LWVycm9yIC0gd2Uga25vdyB0aGUgdHlwZSBvZiB0aGUgZGF0YVxuXHRcdGNvbnN0IGRlc2MgPSBDb2xsaWRlckRlc2Nbc2hhcGVdKC4uLmFyZ3MpO1xuXHRcdGlmICghZGVzYykgcmV0dXJuIG51bGw7XG5cblx0XHRyZXR1cm4gd29ybGRTaW5nbGV0b24ucHJveHkuY3JlYXRlQ29sbGlkZXIoZGVzYywgcmlnaWRCb2R5ID8/IHVuZGVmaW5lZCk7XG5cdH0pO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdGV4dGVuZCh7IE9iamVjdDNEIH0pO1xuXG5cdFx0ZWZmZWN0KChvbkNsZWFudXApID0+IHtcblx0XHRcdGNvbnN0IGNsZWFudXAgPSB0aGlzLmNyZWF0ZUNvbGxpZGVyU3RhdGVFZmZlY3QoKTtcblx0XHRcdG9uQ2xlYW51cCgoKSA9PiBjbGVhbnVwPy4oKSk7XG5cdFx0fSk7XG5cblx0XHRlZmZlY3QoKG9uQ2xlYW51cCkgPT4ge1xuXHRcdFx0Y29uc3QgY2xlYW51cCA9IHRoaXMuY3JlYXRlQ29sbGlkZXJFdmVudHNFZmZlY3QoKTtcblx0XHRcdG9uQ2xlYW51cCgoKSA9PiBjbGVhbnVwPy4oKSk7XG5cdFx0fSk7XG5cblx0XHRlZmZlY3QoKCkgPT4ge1xuXHRcdFx0dGhpcy51cGRhdGVDb2xsaWRlckVmZmVjdCgpO1xuXHRcdFx0dGhpcy51cGRhdGVNYXNzUHJvcGVydGllc0VmZmVjdCgpO1xuXHRcdH0pO1xuXHR9XG5cblx0Z2V0IHdvcmxkU2NhbGUoKSB7XG5cdFx0cmV0dXJuIHRoaXMub2JqZWN0UmVmLm5hdGl2ZUVsZW1lbnQuZ2V0V29ybGRTY2FsZShuZXcgVmVjdG9yMygpKTtcblx0fVxuXG5cdHNldFNoYXBlKHNoYXBlOiBOZ3RyQ29sbGlkZXJTaGFwZSkge1xuXHRcdHRoaXMuc2hhcGUuc2V0KHNoYXBlKTtcblx0fVxuXG5cdHNldEFyZ3MoYXJnczogdW5rbm93bltdKSB7XG5cdFx0dGhpcy5hcmdzLnNldChhcmdzKTtcblx0fVxuXG5cdHByaXZhdGUgY3JlYXRlQ29sbGlkZXJTdGF0ZUVmZmVjdCgpIHtcblx0XHRjb25zdCBjb2xsaWRlciA9IHRoaXMuY29sbGlkZXIoKTtcblx0XHRpZiAoIWNvbGxpZGVyKSByZXR1cm47XG5cblx0XHRjb25zdCB3b3JsZFNpbmdsZXRvbiA9IHRoaXMucGh5c2ljcy53b3JsZFNpbmdsZXRvbigpO1xuXHRcdGlmICghd29ybGRTaW5nbGV0b24pIHJldHVybjtcblxuXHRcdGNvbnN0IGxvY2FsU3RhdGUgPSBnZXRMb2NhbFN0YXRlKHRoaXMub2JqZWN0UmVmLm5hdGl2ZUVsZW1lbnQpO1xuXHRcdGlmICghbG9jYWxTdGF0ZSkgcmV0dXJuO1xuXG5cdFx0Y29uc3QgcGFyZW50ID0gbG9jYWxTdGF0ZS5wYXJlbnQoKTtcblx0XHRpZiAoIXBhcmVudCB8fCAhKHBhcmVudCBhcyBPYmplY3QzRCkuaXNPYmplY3QzRCkgcmV0dXJuO1xuXG5cdFx0Y29uc3Qgc3RhdGUgPSB0aGlzLmNyZWF0ZUNvbGxpZGVyU3RhdGUoXG5cdFx0XHRjb2xsaWRlcixcblx0XHRcdHRoaXMub2JqZWN0UmVmLm5hdGl2ZUVsZW1lbnQsXG5cdFx0XHR0aGlzLnJpZ2lkQm9keT8ub2JqZWN0UmVmLm5hdGl2ZUVsZW1lbnQsXG5cdFx0KTtcblx0XHR0aGlzLnBoeXNpY3MuY29sbGlkZXJTdGF0ZXMuc2V0KGNvbGxpZGVyLmhhbmRsZSwgc3RhdGUpO1xuXG5cdFx0cmV0dXJuICgpID0+IHtcblx0XHRcdHRoaXMucGh5c2ljcy5jb2xsaWRlclN0YXRlcy5kZWxldGUoY29sbGlkZXIuaGFuZGxlKTtcblx0XHRcdGlmICh3b3JsZFNpbmdsZXRvbi5wcm94eS5nZXRDb2xsaWRlcihjb2xsaWRlci5oYW5kbGUpKSB7XG5cdFx0XHRcdHdvcmxkU2luZ2xldG9uLnByb3h5LnJlbW92ZUNvbGxpZGVyKGNvbGxpZGVyLCB0cnVlKTtcblx0XHRcdH1cblx0XHR9O1xuXHR9XG5cblx0cHJpdmF0ZSBjcmVhdGVDb2xsaWRlckV2ZW50c0VmZmVjdCgpIHtcblx0XHRjb25zdCBjb2xsaWRlciA9IHRoaXMuY29sbGlkZXIoKTtcblx0XHRpZiAoIWNvbGxpZGVyKSByZXR1cm47XG5cblx0XHRjb25zdCB3b3JsZFNpbmdsZXRvbiA9IHRoaXMucGh5c2ljcy53b3JsZFNpbmdsZXRvbigpO1xuXHRcdGlmICghd29ybGRTaW5nbGV0b24pIHJldHVybjtcblxuXHRcdGNvbnN0IGNvbGxpc2lvbkVudGVyID0gZ2V0RW1pdHRlcih0aGlzLmNvbGxpc2lvbkVudGVyKTtcblx0XHRjb25zdCBjb2xsaXNpb25FeGl0ID0gZ2V0RW1pdHRlcih0aGlzLmNvbGxpc2lvbkV4aXQpO1xuXHRcdGNvbnN0IGludGVyc2VjdGlvbkVudGVyID0gZ2V0RW1pdHRlcih0aGlzLmludGVyc2VjdGlvbkVudGVyKTtcblx0XHRjb25zdCBpbnRlcnNlY3Rpb25FeGl0ID0gZ2V0RW1pdHRlcih0aGlzLmludGVyc2VjdGlvbkV4aXQpO1xuXHRcdGNvbnN0IGNvbnRhY3RGb3JjZSA9IGdldEVtaXR0ZXIodGhpcy5jb250YWN0Rm9yY2UpO1xuXG5cdFx0Y29uc3QgaGFzQ29sbGlzaW9uRXZlbnQgPSBoYXNMaXN0ZW5lcihcblx0XHRcdHRoaXMuY29sbGlzaW9uRW50ZXIsXG5cdFx0XHR0aGlzLmNvbGxpc2lvbkV4aXQsXG5cdFx0XHR0aGlzLmludGVyc2VjdGlvbkVudGVyLFxuXHRcdFx0dGhpcy5pbnRlcnNlY3Rpb25FeGl0LFxuXHRcdFx0dGhpcy5yaWdpZEJvZHk/LmNvbGxpc2lvbkVudGVyLFxuXHRcdFx0dGhpcy5yaWdpZEJvZHk/LmNvbGxpc2lvbkV4aXQsXG5cdFx0XHR0aGlzLnJpZ2lkQm9keT8uaW50ZXJzZWN0aW9uRW50ZXIsXG5cdFx0XHR0aGlzLnJpZ2lkQm9keT8uaW50ZXJzZWN0aW9uRXhpdCxcblx0XHQpO1xuXHRcdGNvbnN0IGhhc0NvbnRhY3RGb3JjZUV2ZW50ID0gaGFzTGlzdGVuZXIodGhpcy5jb250YWN0Rm9yY2UsIHRoaXMucmlnaWRCb2R5Py5jb250YWN0Rm9yY2UpO1xuXG5cdFx0aWYgKGhhc0NvbGxpc2lvbkV2ZW50ICYmIGhhc0NvbnRhY3RGb3JjZUV2ZW50KSB7XG5cdFx0XHRjb2xsaWRlci5zZXRBY3RpdmVFdmVudHMoQWN0aXZlRXZlbnRzLkNPTExJU0lPTl9FVkVOVFMgfCBBY3RpdmVFdmVudHMuQ09OVEFDVF9GT1JDRV9FVkVOVFMpO1xuXHRcdH0gZWxzZSBpZiAoaGFzQ29sbGlzaW9uRXZlbnQpIHtcblx0XHRcdGNvbGxpZGVyLnNldEFjdGl2ZUV2ZW50cyhBY3RpdmVFdmVudHMuQ09MTElTSU9OX0VWRU5UUyk7XG5cdFx0fSBlbHNlIGlmIChoYXNDb250YWN0Rm9yY2VFdmVudCkge1xuXHRcdFx0Y29sbGlkZXIuc2V0QWN0aXZlRXZlbnRzKEFjdGl2ZUV2ZW50cy5DT05UQUNUX0ZPUkNFX0VWRU5UUyk7XG5cdFx0fVxuXG5cdFx0dGhpcy5waHlzaWNzLmNvbGxpZGVyRXZlbnRzLnNldChjb2xsaWRlci5oYW5kbGUsIHtcblx0XHRcdG9uQ29sbGlzaW9uRW50ZXI6IGNvbGxpc2lvbkVudGVyLFxuXHRcdFx0b25Db2xsaXNpb25FeGl0OiBjb2xsaXNpb25FeGl0LFxuXHRcdFx0b25JbnRlcnNlY3Rpb25FbnRlcjogaW50ZXJzZWN0aW9uRW50ZXIsXG5cdFx0XHRvbkludGVyc2VjdGlvbkV4aXQ6IGludGVyc2VjdGlvbkV4aXQsXG5cdFx0XHRvbkNvbnRhY3RGb3JjZTogY29udGFjdEZvcmNlLFxuXHRcdH0pO1xuXHRcdHJldHVybiAoKSA9PiB7XG5cdFx0XHR0aGlzLnBoeXNpY3MuY29sbGlkZXJFdmVudHMuZGVsZXRlKGNvbGxpZGVyLmhhbmRsZSk7XG5cdFx0fTtcblx0fVxuXG5cdHByaXZhdGUgdXBkYXRlQ29sbGlkZXJFZmZlY3QoKSB7XG5cdFx0Y29uc3QgY29sbGlkZXIgPSB0aGlzLmNvbGxpZGVyKCk7XG5cdFx0aWYgKCFjb2xsaWRlcikgcmV0dXJuO1xuXG5cdFx0Y29uc3Qgd29ybGRTaW5nbGV0b24gPSB0aGlzLnBoeXNpY3Mud29ybGRTaW5nbGV0b24oKTtcblx0XHRpZiAoIXdvcmxkU2luZ2xldG9uKSByZXR1cm47XG5cblx0XHRjb25zdCBzdGF0ZSA9IHRoaXMucGh5c2ljcy5jb2xsaWRlclN0YXRlcy5nZXQoY29sbGlkZXIuaGFuZGxlKTtcblx0XHRpZiAoIXN0YXRlKSByZXR1cm47XG5cblx0XHQvLyBVcGRhdGUgY29sbGlkZXIgcG9zaXRpb24gYmFzZWQgb24gdGhlIG9iamVjdCdzIHBvc2l0aW9uXG5cdFx0Y29uc3QgcGFyZW50V29ybGRTY2FsZSA9IHN0YXRlLm9iamVjdC5wYXJlbnQhLmdldFdvcmxkU2NhbGUoX3ZlY3RvcjMpO1xuXHRcdGNvbnN0IHBhcmVudEludmVydGVkV29ybGRNYXRyaXggPSBzdGF0ZS53b3JsZFBhcmVudD8ubWF0cml4V29ybGQuY2xvbmUoKS5pbnZlcnQoKTtcblxuXHRcdHN0YXRlLm9iamVjdC51cGRhdGVXb3JsZE1hdHJpeCh0cnVlLCBmYWxzZSk7XG5cblx0XHRfbWF0cml4NC5jb3B5KHN0YXRlLm9iamVjdC5tYXRyaXhXb3JsZCk7XG5cblx0XHRpZiAocGFyZW50SW52ZXJ0ZWRXb3JsZE1hdHJpeCkge1xuXHRcdFx0X21hdHJpeDQucHJlbXVsdGlwbHkocGFyZW50SW52ZXJ0ZWRXb3JsZE1hdHJpeCk7XG5cdFx0fVxuXG5cdFx0X21hdHJpeDQuZGVjb21wb3NlKF9wb3NpdGlvbiwgX3JvdGF0aW9uLCBfc2NhbGUpO1xuXG5cdFx0aWYgKGNvbGxpZGVyLnBhcmVudCgpKSB7XG5cdFx0XHRjb2xsaWRlci5zZXRUcmFuc2xhdGlvbldydFBhcmVudCh7XG5cdFx0XHRcdHg6IF9wb3NpdGlvbi54ICogcGFyZW50V29ybGRTY2FsZS54LFxuXHRcdFx0XHR5OiBfcG9zaXRpb24ueSAqIHBhcmVudFdvcmxkU2NhbGUueSxcblx0XHRcdFx0ejogX3Bvc2l0aW9uLnogKiBwYXJlbnRXb3JsZFNjYWxlLnosXG5cdFx0XHR9KTtcblx0XHRcdGNvbGxpZGVyLnNldFJvdGF0aW9uV3J0UGFyZW50KF9yb3RhdGlvbik7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGNvbGxpZGVyLnNldFRyYW5zbGF0aW9uKHtcblx0XHRcdFx0eDogX3Bvc2l0aW9uLnggKiBwYXJlbnRXb3JsZFNjYWxlLngsXG5cdFx0XHRcdHk6IF9wb3NpdGlvbi55ICogcGFyZW50V29ybGRTY2FsZS55LFxuXHRcdFx0XHR6OiBfcG9zaXRpb24ueiAqIHBhcmVudFdvcmxkU2NhbGUueixcblx0XHRcdH0pO1xuXHRcdFx0Y29sbGlkZXIuc2V0Um90YXRpb24oX3JvdGF0aW9uKTtcblx0XHR9XG5cblx0XHRjb25zdCBbXG5cdFx0XHRzZW5zb3IsXG5cdFx0XHRjb2xsaXNpb25Hcm91cHMsXG5cdFx0XHRzb2x2ZXJHcm91cHMsXG5cdFx0XHRmcmljdGlvbixcblx0XHRcdGZyaWN0aW9uQ29tYmluZVJ1bGUsXG5cdFx0XHRyZXN0aXR1dGlvbixcblx0XHRcdHJlc3RpdHV0aW9uQ29tYmluZVJ1bGUsXG5cdFx0XHRhY3RpdmVDb2xsaXNpb25UeXBlcyxcblx0XHRcdGNvbnRhY3RTa2luLFxuXHRcdF0gPSBbXG5cdFx0XHR0aGlzLnNlbnNvcigpLFxuXHRcdFx0dGhpcy5jb2xsaXNpb25Hcm91cHMoKSxcblx0XHRcdHRoaXMuc29sdmVyR3JvdXBzKCksXG5cdFx0XHR0aGlzLmZyaWN0aW9uKCksXG5cdFx0XHR0aGlzLmZyaWN0aW9uQ29tYmluZVJ1bGUoKSxcblx0XHRcdHRoaXMucmVzdGl0dXRpb24oKSxcblx0XHRcdHRoaXMucmVzdGl0dXRpb25Db21iaW5lUnVsZSgpLFxuXHRcdFx0dGhpcy5hY3RpdmVDb2xsaXNpb25UeXBlcygpLFxuXHRcdFx0dGhpcy5jb250YWN0U2tpbigpLFxuXHRcdF07XG5cblx0XHRpZiAoc2Vuc29yICE9PSB1bmRlZmluZWQpIGNvbGxpZGVyLnNldFNlbnNvcihzZW5zb3IpO1xuXHRcdGlmIChjb2xsaXNpb25Hcm91cHMgIT09IHVuZGVmaW5lZCkgY29sbGlkZXIuc2V0Q29sbGlzaW9uR3JvdXBzKGNvbGxpc2lvbkdyb3Vwcyk7XG5cdFx0aWYgKHNvbHZlckdyb3VwcyAhPT0gdW5kZWZpbmVkKSBjb2xsaWRlci5zZXRTb2x2ZXJHcm91cHMoc29sdmVyR3JvdXBzKTtcblx0XHRpZiAoZnJpY3Rpb24gIT09IHVuZGVmaW5lZCkgY29sbGlkZXIuc2V0RnJpY3Rpb24oZnJpY3Rpb24pO1xuXHRcdGlmIChmcmljdGlvbkNvbWJpbmVSdWxlICE9PSB1bmRlZmluZWQpIGNvbGxpZGVyLnNldEZyaWN0aW9uQ29tYmluZVJ1bGUoZnJpY3Rpb25Db21iaW5lUnVsZSk7XG5cdFx0aWYgKHJlc3RpdHV0aW9uICE9PSB1bmRlZmluZWQpIGNvbGxpZGVyLnNldFJlc3RpdHV0aW9uKHJlc3RpdHV0aW9uKTtcblx0XHRpZiAocmVzdGl0dXRpb25Db21iaW5lUnVsZSAhPT0gdW5kZWZpbmVkKSBjb2xsaWRlci5zZXRSZXN0aXR1dGlvbkNvbWJpbmVSdWxlKHJlc3RpdHV0aW9uQ29tYmluZVJ1bGUpO1xuXHRcdGlmIChhY3RpdmVDb2xsaXNpb25UeXBlcyAhPT0gdW5kZWZpbmVkKSBjb2xsaWRlci5zZXRBY3RpdmVDb2xsaXNpb25UeXBlcyhhY3RpdmVDb2xsaXNpb25UeXBlcyk7XG5cdFx0aWYgKGNvbnRhY3RTa2luICE9PSB1bmRlZmluZWQpIGNvbGxpZGVyLnNldENvbnRhY3RTa2luKGNvbnRhY3RTa2luKTtcblx0fVxuXG5cdHByaXZhdGUgdXBkYXRlTWFzc1Byb3BlcnRpZXNFZmZlY3QoKSB7XG5cdFx0Y29uc3QgY29sbGlkZXIgPSB0aGlzLmNvbGxpZGVyKCk7XG5cdFx0aWYgKCFjb2xsaWRlcikgcmV0dXJuO1xuXG5cdFx0Y29uc3QgW21hc3MsIG1hc3NQcm9wZXJ0aWVzLCBkZW5zaXR5XSA9IFt0aGlzLm1hc3MoKSwgdGhpcy5tYXNzUHJvcGVydGllcygpLCB0aGlzLmRlbnNpdHkoKV07XG5cblx0XHRpZiAoZGVuc2l0eSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRpZiAobWFzcyAhPT0gdW5kZWZpbmVkIHx8IG1hc3NQcm9wZXJ0aWVzICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKCdbTkdUIFJhcGllcl0gQ2Fubm90IHNldCBtYXNzIGFuZCBtYXNzUHJvcGVydGllcyBhbG9uZyB3aXRoIGRlbnNpdHknKTtcblx0XHRcdH1cblxuXHRcdFx0Y29sbGlkZXIuc2V0RGVuc2l0eShkZW5zaXR5KTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRpZiAobWFzcyAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRpZiAobWFzc1Byb3BlcnRpZXMgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoJ1tOR1QgUmFwaWVyXSBDYW5ub3Qgc2V0IG1hc3NQcm9wZXJ0aWVzIGFsb25nIHdpdGggbWFzcycpO1xuXHRcdFx0fVxuXHRcdFx0Y29sbGlkZXIuc2V0TWFzcyhtYXNzKTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRpZiAobWFzc1Byb3BlcnRpZXMgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0Y29sbGlkZXIuc2V0TWFzc1Byb3BlcnRpZXMoXG5cdFx0XHRcdG1hc3NQcm9wZXJ0aWVzLm1hc3MsXG5cdFx0XHRcdG1hc3NQcm9wZXJ0aWVzLmNlbnRlck9mTWFzcyxcblx0XHRcdFx0bWFzc1Byb3BlcnRpZXMucHJpbmNpcGFsQW5ndWxhckluZXJ0aWEsXG5cdFx0XHRcdG1hc3NQcm9wZXJ0aWVzLmFuZ3VsYXJJbmVydGlhTG9jYWxGcmFtZSxcblx0XHRcdCk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHR9XG5cblx0cHJpdmF0ZSBjcmVhdGVDb2xsaWRlclN0YXRlKFxuXHRcdGNvbGxpZGVyOiBDb2xsaWRlcixcblx0XHRvYmplY3Q6IE9iamVjdDNELFxuXHRcdHJpZ2lkQm9keU9iamVjdD86IE9iamVjdDNEIHwgbnVsbCxcblx0KTogTmd0ckNvbGxpZGVyU3RhdGUge1xuXHRcdHJldHVybiB7IGNvbGxpZGVyLCB3b3JsZFBhcmVudDogcmlnaWRCb2R5T2JqZWN0IHx8IHVuZGVmaW5lZCwgb2JqZWN0IH07XG5cdH1cblxuXHRwcml2YXRlIHNjYWxlVmVydGljZXModmVydGljZXM6IEFycmF5TGlrZTxudW1iZXI+LCBzY2FsZTogVmVjdG9yMykge1xuXHRcdGNvbnN0IHNjYWxlZFZlcnRzID0gQXJyYXkuZnJvbSh2ZXJ0aWNlcyk7XG5cblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHZlcnRpY2VzLmxlbmd0aCAvIDM7IGkrKykge1xuXHRcdFx0c2NhbGVkVmVydHNbaSAqIDNdICo9IHNjYWxlLng7XG5cdFx0XHRzY2FsZWRWZXJ0c1tpICogMyArIDFdICo9IHNjYWxlLnk7XG5cdFx0XHRzY2FsZWRWZXJ0c1tpICogMyArIDJdICo9IHNjYWxlLno7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHNjYWxlZFZlcnRzO1xuXHR9XG59XG5cbmNvbnN0IFJJR0lEX0JPRFlfVFlQRV9NQVA6IFJlY29yZDxOZ3RyUmlnaWRCb2R5VHlwZSwgbnVtYmVyPiA9IHtcblx0Zml4ZWQ6IDEsXG5cdGR5bmFtaWM6IDAsXG5cdGtpbmVtYXRpY1Bvc2l0aW9uOiAyLFxuXHRraW5lbWF0aWNWZWxvY2l0eTogMyxcbn07XG5cbmV4cG9ydCBjb25zdCByaWdpZEJvZHlEZWZhdWx0T3B0aW9uczogTmd0clJpZ2lkQm9keU9wdGlvbnMgPSB7XG5cdGNhblNsZWVwOiB0cnVlLFxuXHRsaW5lYXJWZWxvY2l0eTogWzAsIDAsIDBdLFxuXHRhbmd1bGFyVmVsb2NpdHk6IFswLCAwLCAwXSxcblx0Z3Jhdml0eVNjYWxlOiAxLFxuXHRkb21pbmFuY2VHcm91cDogMCxcblx0Y2NkOiBmYWxzZSxcblx0c29mdENjZFByZWRpY3Rpb246IDAsXG5cdGNvbnRhY3RTa2luOiAwLFxufTtcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnbmd0LW9iamVjdDNEW25ndHJSaWdpZEJvZHldJyxcblx0ZXhwb3J0QXM6ICdyaWdpZEJvZHknLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdDxuZy1jb250ZW50IC8+XG5cdFx0QGZvciAoY2hpbGRDb2xsaWRlck9wdGlvbiBvZiBjaGlsZENvbGxpZGVyT3B0aW9ucygpOyB0cmFjayAkaW5kZXgpIHtcblx0XHRcdDxuZ3Qtb2JqZWN0M0Rcblx0XHRcdFx0W25ndHJDb2xsaWRlcl09XCJjaGlsZENvbGxpZGVyT3B0aW9uLnNoYXBlXCJcblx0XHRcdFx0W2FyZ3NdPVwiY2hpbGRDb2xsaWRlck9wdGlvbi5hcmdzXCJcblx0XHRcdFx0W3Bvc2l0aW9uXT1cImNoaWxkQ29sbGlkZXJPcHRpb24ucG9zaXRpb25cIlxuXHRcdFx0XHRbcm90YXRpb25dPVwiY2hpbGRDb2xsaWRlck9wdGlvbi5yb3RhdGlvblwiXG5cdFx0XHRcdFtzY2FsZV09XCJjaGlsZENvbGxpZGVyT3B0aW9uLnNjYWxlXCJcblx0XHRcdFx0W25hbWVdPVwib2JqZWN0UmVmLm5hdGl2ZUVsZW1lbnQubmFtZSArICctY29sbGlkZXItJyArICRpbmRleFwiXG5cdFx0XHRcdFtvcHRpb25zXT1cImNoaWxkQ29sbGlkZXJPcHRpb24uY29sbGlkZXJPcHRpb25zXCJcblx0XHRcdC8+XG5cdFx0fVxuXHRgLFxuXHRzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG5cdGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuXHRob3N0OiB7XG5cdFx0J1twb3NpdGlvbl0nOiAncG9zaXRpb24oKScsXG5cdFx0J1tyb3RhdGlvbl0nOiAncm90YXRpb24oKScsXG5cdFx0J1tzY2FsZV0nOiAnc2NhbGUoKScsXG5cdFx0J1txdWF0ZXJuaW9uXSc6ICdxdWF0ZXJuaW9uKCknLFxuXHRcdCdbdXNlckRhdGFdJzogJ3VzZXJEYXRhKCknLFxuXHR9LFxuXHRpbXBvcnRzOiBbTmd0ckFueUNvbGxpZGVyXSxcbn0pXG5leHBvcnQgY2xhc3MgTmd0clJpZ2lkQm9keSB7XG5cdHR5cGUgPSBpbnB1dCgnZHluYW1pYycsIHtcblx0XHRhbGlhczogJ25ndHJSaWdpZEJvZHknLFxuXHRcdHRyYW5zZm9ybTogKHZhbHVlOiBOZ3RyUmlnaWRCb2R5VHlwZSB8ICcnIHwgdW5kZWZpbmVkKSA9PiB7XG5cdFx0XHRpZiAodmFsdWUgPT09ICcnIHx8IHZhbHVlID09PSB1bmRlZmluZWQpIHJldHVybiAnZHluYW1pYycgYXMgTmd0clJpZ2lkQm9keVR5cGU7XG5cdFx0XHRyZXR1cm4gdmFsdWU7XG5cdFx0fSxcblx0fSk7XG5cdHBvc2l0aW9uID0gaW5wdXQ8Tmd0VmVjdG9yMyB8IHVuZGVmaW5lZD4oWzAsIDAsIDBdKTtcblx0cm90YXRpb24gPSBpbnB1dDxOZ3RFdWxlciB8IHVuZGVmaW5lZD4oWzAsIDAsIDBdKTtcblx0c2NhbGUgPSBpbnB1dDxOZ3RWZWN0b3IzIHwgdW5kZWZpbmVkPihbMSwgMSwgMV0pO1xuXHRxdWF0ZXJuaW9uID0gaW5wdXQ8Tmd0UXVhdGVybmlvbiB8IHVuZGVmaW5lZD4oWzAsIDAsIDAsIDFdKTtcblx0dXNlckRhdGEgPSBpbnB1dDxOZ3RPYmplY3QzRFsndXNlckRhdGEnXSB8IHVuZGVmaW5lZD4oe30pO1xuXHRvcHRpb25zID0gaW5wdXQocmlnaWRCb2R5RGVmYXVsdE9wdGlvbnMsIHsgdHJhbnNmb3JtOiBtZXJnZUlucHV0cyhyaWdpZEJvZHlEZWZhdWx0T3B0aW9ucykgfSk7XG5cblx0d2FrZSA9IG91dHB1dDx2b2lkPigpO1xuXHRzbGVlcCA9IG91dHB1dDx2b2lkPigpO1xuXHRjb2xsaXNpb25FbnRlciA9IG91dHB1dDxOZ3RyQ29sbGlzaW9uRW50ZXJQYXlsb2FkPigpO1xuXHRjb2xsaXNpb25FeGl0ID0gb3V0cHV0PE5ndHJDb2xsaXNpb25FeGl0UGF5bG9hZD4oKTtcblx0aW50ZXJzZWN0aW9uRW50ZXIgPSBvdXRwdXQ8Tmd0ckludGVyc2VjdGlvbkVudGVyUGF5bG9hZD4oKTtcblx0aW50ZXJzZWN0aW9uRXhpdCA9IG91dHB1dDxOZ3RySW50ZXJzZWN0aW9uRXhpdFBheWxvYWQ+KCk7XG5cdGNvbnRhY3RGb3JjZSA9IG91dHB1dDxOZ3RyQ29udGFjdEZvcmNlUGF5bG9hZD4oKTtcblxuXHRwcml2YXRlIGNhblNsZWVwID0gcGljayh0aGlzLm9wdGlvbnMsICdjYW5TbGVlcCcpO1xuXHRwcml2YXRlIGNvbGxpZGVycyA9IHBpY2sodGhpcy5vcHRpb25zLCAnY29sbGlkZXJzJyk7XG5cdHByaXZhdGUgdHJhbnNmb3JtU3RhdGUgPSBwaWNrKHRoaXMub3B0aW9ucywgJ3RyYW5zZm9ybVN0YXRlJyk7XG5cdHByaXZhdGUgZ3Jhdml0eVNjYWxlID0gcGljayh0aGlzLm9wdGlvbnMsICdncmF2aXR5U2NhbGUnKTtcblx0cHJpdmF0ZSBkb21pbmFuY2VHcm91cCA9IHBpY2sodGhpcy5vcHRpb25zLCAnZG9taW5hbmNlR3JvdXAnKTtcblx0cHJpdmF0ZSBjY2QgPSBwaWNrKHRoaXMub3B0aW9ucywgJ2NjZCcpO1xuXHRwcml2YXRlIHNvZnRDY2RQcmVkaWN0aW9uID0gcGljayh0aGlzLm9wdGlvbnMsICdzb2Z0Q2NkUHJlZGljdGlvbicpO1xuXHRwcml2YXRlIGFkZGl0aW9uYWxTb2x2ZXJJdGVyYXRpb25zID0gcGljayh0aGlzLm9wdGlvbnMsICdhZGRpdGlvbmFsU29sdmVySXRlcmF0aW9ucycpO1xuXHRwcml2YXRlIGxpbmVhckRhbXBpbmcgPSBwaWNrKHRoaXMub3B0aW9ucywgJ2xpbmVhckRhbXBpbmcnKTtcblx0cHJpdmF0ZSBhbmd1bGFyRGFtcGluZyA9IHBpY2sodGhpcy5vcHRpb25zLCAnYW5ndWxhckRhbXBpbmcnKTtcblx0cHJpdmF0ZSBsb2NrUm90YXRpb25zID0gcGljayh0aGlzLm9wdGlvbnMsICdsb2NrUm90YXRpb25zJyk7XG5cdHByaXZhdGUgbG9ja1RyYW5zbGF0aW9ucyA9IHBpY2sodGhpcy5vcHRpb25zLCAnbG9ja1RyYW5zbGF0aW9ucycpO1xuXHRwcml2YXRlIGVuYWJsZWRSb3RhdGlvbnMgPSBwaWNrKHRoaXMub3B0aW9ucywgJ2VuYWJsZWRSb3RhdGlvbnMnKTtcblx0cHJpdmF0ZSBlbmFibGVkVHJhbnNsYXRpb25zID0gcGljayh0aGlzLm9wdGlvbnMsICdlbmFibGVkVHJhbnNsYXRpb25zJyk7XG5cdHByaXZhdGUgYW5ndWxhclZlbG9jaXR5ID0gcGljayh0aGlzLm9wdGlvbnMsICdhbmd1bGFyVmVsb2NpdHknKTtcblx0cHJpdmF0ZSBsaW5lYXJWZWxvY2l0eSA9IHBpY2sodGhpcy5vcHRpb25zLCAnbGluZWFyVmVsb2NpdHknKTtcblxuXHRvYmplY3RSZWYgPSBpbmplY3Q8RWxlbWVudFJlZjxPYmplY3QzRD4+KEVsZW1lbnRSZWYpO1xuXHRwcml2YXRlIHBoeXNpY3MgPSBpbmplY3QoTmd0clBoeXNpY3MpO1xuXG5cdHByaXZhdGUgYm9keVR5cGUgPSBjb21wdXRlZCgoKSA9PiBSSUdJRF9CT0RZX1RZUEVfTUFQW3RoaXMudHlwZSgpXSk7XG5cdHByaXZhdGUgYm9keURlc2MgPSBjb21wdXRlZCgoKSA9PiB7XG5cdFx0Y29uc3QgW2NhblNsZWVwLCBib2R5VHlwZV0gPSBbdGhpcy5jYW5TbGVlcCgpLCB1bnRyYWNrZWQodGhpcy5ib2R5VHlwZSksIHRoaXMuY29sbGlkZXJzKCldO1xuXHRcdHJldHVybiBuZXcgUmlnaWRCb2R5RGVzYyhib2R5VHlwZSkuc2V0Q2FuU2xlZXAoY2FuU2xlZXApO1xuXHR9KTtcblx0cmlnaWRCb2R5ID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdGNvbnN0IHdvcmxkU2luZ2xldG9uID0gdGhpcy5waHlzaWNzLndvcmxkU2luZ2xldG9uKCk7XG5cdFx0aWYgKCF3b3JsZFNpbmdsZXRvbikgcmV0dXJuIG51bGw7XG5cdFx0cmV0dXJuIHdvcmxkU2luZ2xldG9uLnByb3h5LmNyZWF0ZVJpZ2lkQm9keSh0aGlzLmJvZHlEZXNjKCkpO1xuXHR9KTtcblxuXHRwcm90ZWN0ZWQgY2hpbGRDb2xsaWRlck9wdGlvbnMgPSBjb21wdXRlZCgoKSA9PiB7XG5cdFx0Y29uc3QgY29sbGlkZXJzID0gdGhpcy5jb2xsaWRlcnMoKTtcblx0XHQvLyBpZiBzZWxmIGNvbGxpZGVycyBpcyBmYWxzZSBleHBsaWNpdGx5LCBkaXNhYmxlIGF1dG8gY29sbGlkZXJzIGZvciB0aGlzIG9iamVjdCBlbnRpcmVseS5cblx0XHRpZiAoY29sbGlkZXJzID09PSBmYWxzZSkgcmV0dXJuIFtdO1xuXG5cdFx0Y29uc3QgcGh5c2ljc0NvbGxpZGVycyA9IHRoaXMucGh5c2ljcy5jb2xsaWRlcnMoKTtcblx0XHQvLyBpZiBwaHlzaWNzIGNvbGxpZGVycyBpcyBmYWxzZSBleHBsaWNpdGx5IEFORCBjb2xsaWRlcnMgaXMgbm90IHNldCwgZGlzYWJsZSBhdXRvIGNvbGxpZGVycyBmb3IgdGhpcyBvYmplY3QgZW50aXJlbHkuXG5cdFx0aWYgKHBoeXNpY3NDb2xsaWRlcnMgPT09IGZhbHNlICYmIGNvbGxpZGVycyA9PT0gdW5kZWZpbmVkKSByZXR1cm4gW107XG5cblx0XHRjb25zdCBvcHRpb25zID0gdW50cmFja2VkKHRoaXMub3B0aW9ucyk7XG5cdFx0Ly8gaWYgY29sbGlkZXJzIG9uIG9iamVjdCBpcyBub3Qgc2V0LCB1c2UgcGh5c2ljcyBjb2xsaWRlcnNcblx0XHRpZiAoIW9wdGlvbnMuY29sbGlkZXJzKSBvcHRpb25zLmNvbGxpZGVycyA9IHBoeXNpY3NDb2xsaWRlcnM7XG5cblx0XHRjb25zdCBvYmplY3RMb2NhbFN0YXRlID0gZ2V0TG9jYWxTdGF0ZSh0aGlzLm9iamVjdFJlZi5uYXRpdmVFbGVtZW50KTtcblx0XHRpZiAoIW9iamVjdExvY2FsU3RhdGUpIHJldHVybiBbXTtcblxuXHRcdC8vIHRyYWNrIG9iamVjdCdzIHBhcmVudCBhbmQgbm9uLW9iamVjdCBjaGlsZHJlblxuXHRcdGNvbnN0IFtwYXJlbnRdID0gW29iamVjdExvY2FsU3RhdGUucGFyZW50KCksIG9iamVjdExvY2FsU3RhdGUubm9uT2JqZWN0cygpXTtcblx0XHRpZiAoIXBhcmVudCB8fCAhKHBhcmVudCBhcyBPYmplY3QzRCkuaXNPYmplY3QzRCkgcmV0dXJuIFtdO1xuXG5cdFx0cmV0dXJuIGNyZWF0ZUNvbGxpZGVyT3B0aW9ucyh0aGlzLm9iamVjdFJlZi5uYXRpdmVFbGVtZW50LCBvcHRpb25zLCB0cnVlKTtcblx0fSk7XG5cblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0ZXh0ZW5kKHsgT2JqZWN0M0QgfSk7XG5cblx0XHRlZmZlY3QoKG9uQ2xlYW51cCkgPT4ge1xuXHRcdFx0Y29uc3QgY2xlYW51cCA9IHRoaXMuY3JlYXRlUmlnaWRCb2R5U3RhdGVFZmZlY3QoKTtcblx0XHRcdG9uQ2xlYW51cCgoKSA9PiBjbGVhbnVwPy4oKSk7XG5cdFx0fSk7XG5cblx0XHRlZmZlY3QoKG9uQ2xlYW51cCkgPT4ge1xuXHRcdFx0Y29uc3QgY2xlYW51cCA9IHRoaXMuY3JlYXRlUmlnaWRCb2R5RXZlbnRzRWZmZWN0KCk7XG5cdFx0XHRvbkNsZWFudXAoKCkgPT4gY2xlYW51cD8uKCkpO1xuXHRcdH0pO1xuXG5cdFx0ZWZmZWN0KCgpID0+IHtcblx0XHRcdHRoaXMudXBkYXRlUmlnaWRCb2R5RWZmZWN0KCk7XG5cdFx0fSk7XG5cdH1cblxuXHRwcml2YXRlIGNyZWF0ZVJpZ2lkQm9keVN0YXRlRWZmZWN0KCkge1xuXHRcdGNvbnN0IHdvcmxkU2luZ2xldG9uID0gdGhpcy5waHlzaWNzLndvcmxkU2luZ2xldG9uKCk7XG5cdFx0aWYgKCF3b3JsZFNpbmdsZXRvbikgcmV0dXJuO1xuXG5cdFx0Y29uc3QgYm9keSA9IHRoaXMucmlnaWRCb2R5KCk7XG5cdFx0aWYgKCFib2R5KSByZXR1cm47XG5cblx0XHRjb25zdCB0cmFuc2Zvcm1TdGF0ZSA9IHVudHJhY2tlZCh0aGlzLnRyYW5zZm9ybVN0YXRlKTtcblxuXHRcdGNvbnN0IGxvY2FsU3RhdGUgPSBnZXRMb2NhbFN0YXRlKHRoaXMub2JqZWN0UmVmLm5hdGl2ZUVsZW1lbnQpO1xuXHRcdGlmICghbG9jYWxTdGF0ZSkgcmV0dXJuO1xuXG5cdFx0Y29uc3QgcGFyZW50ID0gbG9jYWxTdGF0ZS5wYXJlbnQoKTtcblx0XHRpZiAoIXBhcmVudCB8fCAhKHBhcmVudCBhcyBPYmplY3QzRCkuaXNPYmplY3QzRCkgcmV0dXJuO1xuXG5cdFx0Y29uc3Qgc3RhdGUgPSB0aGlzLmNyZWF0ZVJpZ2lkQm9keVN0YXRlKGJvZHksIHRoaXMub2JqZWN0UmVmLm5hdGl2ZUVsZW1lbnQpO1xuXHRcdHRoaXMucGh5c2ljcy5yaWdpZEJvZHlTdGF0ZXMuc2V0KGJvZHkuaGFuZGxlLCB0cmFuc2Zvcm1TdGF0ZSA/IHRyYW5zZm9ybVN0YXRlKHN0YXRlKSA6IHN0YXRlKTtcblxuXHRcdHJldHVybiAoKSA9PiB7XG5cdFx0XHR0aGlzLnBoeXNpY3MucmlnaWRCb2R5U3RhdGVzLmRlbGV0ZShib2R5LmhhbmRsZSk7XG5cdFx0XHRpZiAod29ybGRTaW5nbGV0b24ucHJveHkuZ2V0UmlnaWRCb2R5KGJvZHkuaGFuZGxlKSkge1xuXHRcdFx0XHR3b3JsZFNpbmdsZXRvbi5wcm94eS5yZW1vdmVSaWdpZEJvZHkoYm9keSk7XG5cdFx0XHR9XG5cdFx0fTtcblx0fVxuXG5cdHByaXZhdGUgY3JlYXRlUmlnaWRCb2R5RXZlbnRzRWZmZWN0KCkge1xuXHRcdGNvbnN0IHdvcmxkU2luZ2xldG9uID0gdGhpcy5waHlzaWNzLndvcmxkU2luZ2xldG9uKCk7XG5cdFx0aWYgKCF3b3JsZFNpbmdsZXRvbikgcmV0dXJuO1xuXG5cdFx0Y29uc3QgYm9keSA9IHRoaXMucmlnaWRCb2R5KCk7XG5cdFx0aWYgKCFib2R5KSByZXR1cm47XG5cblx0XHRjb25zdCB3YWtlID0gZ2V0RW1pdHRlcih0aGlzLndha2UpO1xuXHRcdGNvbnN0IHNsZWVwID0gZ2V0RW1pdHRlcih0aGlzLnNsZWVwKTtcblx0XHRjb25zdCBjb2xsaXNpb25FbnRlciA9IGdldEVtaXR0ZXIodGhpcy5jb2xsaXNpb25FbnRlcik7XG5cdFx0Y29uc3QgY29sbGlzaW9uRXhpdCA9IGdldEVtaXR0ZXIodGhpcy5jb2xsaXNpb25FeGl0KTtcblx0XHRjb25zdCBpbnRlcnNlY3Rpb25FbnRlciA9IGdldEVtaXR0ZXIodGhpcy5pbnRlcnNlY3Rpb25FbnRlcik7XG5cdFx0Y29uc3QgaW50ZXJzZWN0aW9uRXhpdCA9IGdldEVtaXR0ZXIodGhpcy5pbnRlcnNlY3Rpb25FeGl0KTtcblx0XHRjb25zdCBjb250YWN0Rm9yY2UgPSBnZXRFbWl0dGVyKHRoaXMuY29udGFjdEZvcmNlKTtcblxuXHRcdHRoaXMucGh5c2ljcy5yaWdpZEJvZHlFdmVudHMuc2V0KGJvZHkuaGFuZGxlLCB7XG5cdFx0XHRvbldha2U6IHdha2UsXG5cdFx0XHRvblNsZWVwOiBzbGVlcCxcblx0XHRcdG9uQ29sbGlzaW9uRW50ZXI6IGNvbGxpc2lvbkVudGVyLFxuXHRcdFx0b25Db2xsaXNpb25FeGl0OiBjb2xsaXNpb25FeGl0LFxuXHRcdFx0b25JbnRlcnNlY3Rpb25FbnRlcjogaW50ZXJzZWN0aW9uRW50ZXIsXG5cdFx0XHRvbkludGVyc2VjdGlvbkV4aXQ6IGludGVyc2VjdGlvbkV4aXQsXG5cdFx0XHRvbkNvbnRhY3RGb3JjZTogY29udGFjdEZvcmNlLFxuXHRcdH0pO1xuXG5cdFx0cmV0dXJuICgpID0+IHtcblx0XHRcdHRoaXMucGh5c2ljcy5yaWdpZEJvZHlFdmVudHMuZGVsZXRlKGJvZHkuaGFuZGxlKTtcblx0XHR9O1xuXHR9XG5cblx0cHJpdmF0ZSB1cGRhdGVSaWdpZEJvZHlFZmZlY3QoKSB7XG5cdFx0Y29uc3Qgd29ybGRTaW5nbGV0b24gPSB0aGlzLnBoeXNpY3Mud29ybGRTaW5nbGV0b24oKTtcblx0XHRpZiAoIXdvcmxkU2luZ2xldG9uKSByZXR1cm47XG5cblx0XHRjb25zdCBib2R5ID0gdGhpcy5yaWdpZEJvZHkoKTtcblx0XHRpZiAoIWJvZHkpIHJldHVybjtcblxuXHRcdGNvbnN0IHN0YXRlID0gdGhpcy5waHlzaWNzLnJpZ2lkQm9keVN0YXRlcy5nZXQoYm9keS5oYW5kbGUpO1xuXHRcdGlmICghc3RhdGUpIHJldHVybjtcblxuXHRcdHN0YXRlLm9iamVjdC51cGRhdGVXb3JsZE1hdHJpeCh0cnVlLCBmYWxzZSk7XG5cdFx0X21hdHJpeDQuY29weShzdGF0ZS5vYmplY3QubWF0cml4V29ybGQpLmRlY29tcG9zZShfcG9zaXRpb24sIF9yb3RhdGlvbiwgX3NjYWxlKTtcblx0XHRib2R5LnNldFRyYW5zbGF0aW9uKF9wb3NpdGlvbiwgdHJ1ZSk7XG5cdFx0Ym9keS5zZXRSb3RhdGlvbihfcm90YXRpb24sIHRydWUpO1xuXG5cdFx0Y29uc3QgW1xuXHRcdFx0Z3Jhdml0eVNjYWxlLFxuXHRcdFx0YWRkaXRpb25hbFNvbHZlckl0ZXJhdGlvbnMsXG5cdFx0XHRsaW5lYXJEYW1waW5nLFxuXHRcdFx0YW5ndWxhckRhbXBpbmcsXG5cdFx0XHRsb2NrUm90YXRpb25zLFxuXHRcdFx0bG9ja1RyYW5zbGF0aW9ucyxcblx0XHRcdGVuYWJsZWRSb3RhdGlvbnMsXG5cdFx0XHRlbmFibGVkVHJhbnNsYXRpb25zLFxuXHRcdFx0YW5ndWxhclZlbG9jaXR5LFxuXHRcdFx0bGluZWFyVmVsb2NpdHksXG5cdFx0XHRjY2QsXG5cdFx0XHRzb2Z0Q2NkUHJlZGljdGlvbixcblx0XHRcdGRvbWluYW5jZUdyb3VwLFxuXHRcdFx0dXNlckRhdGEsXG5cdFx0XHRib2R5VHlwZSxcblx0XHRdID0gW1xuXHRcdFx0dGhpcy5ncmF2aXR5U2NhbGUoKSxcblx0XHRcdHRoaXMuYWRkaXRpb25hbFNvbHZlckl0ZXJhdGlvbnMoKSxcblx0XHRcdHRoaXMubGluZWFyRGFtcGluZygpLFxuXHRcdFx0dGhpcy5hbmd1bGFyRGFtcGluZygpLFxuXHRcdFx0dGhpcy5sb2NrUm90YXRpb25zKCksXG5cdFx0XHR0aGlzLmxvY2tUcmFuc2xhdGlvbnMoKSxcblx0XHRcdHRoaXMuZW5hYmxlZFJvdGF0aW9ucygpLFxuXHRcdFx0dGhpcy5lbmFibGVkVHJhbnNsYXRpb25zKCksXG5cdFx0XHR0aGlzLmFuZ3VsYXJWZWxvY2l0eSgpLFxuXHRcdFx0dGhpcy5saW5lYXJWZWxvY2l0eSgpLFxuXHRcdFx0dGhpcy5jY2QoKSxcblx0XHRcdHRoaXMuc29mdENjZFByZWRpY3Rpb24oKSxcblx0XHRcdHRoaXMuZG9taW5hbmNlR3JvdXAoKSxcblx0XHRcdHRoaXMudXNlckRhdGEoKSxcblx0XHRcdHRoaXMuYm9keVR5cGUoKSxcblx0XHRdO1xuXG5cdFx0Ym9keS5zZXRHcmF2aXR5U2NhbGUoZ3Jhdml0eVNjYWxlLCB0cnVlKTtcblx0XHRpZiAoYWRkaXRpb25hbFNvbHZlckl0ZXJhdGlvbnMgIT09IHVuZGVmaW5lZCkgYm9keS5zZXRBZGRpdGlvbmFsU29sdmVySXRlcmF0aW9ucyhhZGRpdGlvbmFsU29sdmVySXRlcmF0aW9ucyk7XG5cdFx0aWYgKGxpbmVhckRhbXBpbmcgIT09IHVuZGVmaW5lZCkgYm9keS5zZXRMaW5lYXJEYW1waW5nKGxpbmVhckRhbXBpbmcpO1xuXHRcdGlmIChhbmd1bGFyRGFtcGluZyAhPT0gdW5kZWZpbmVkKSBib2R5LnNldEFuZ3VsYXJEYW1waW5nKGFuZ3VsYXJEYW1waW5nKTtcblx0XHRib2R5LnNldERvbWluYW5jZUdyb3VwKGRvbWluYW5jZUdyb3VwKTtcblx0XHRpZiAoZW5hYmxlZFJvdGF0aW9ucyAhPT0gdW5kZWZpbmVkKSBib2R5LnNldEVuYWJsZWRSb3RhdGlvbnMoLi4uZW5hYmxlZFJvdGF0aW9ucywgdHJ1ZSk7XG5cdFx0aWYgKGVuYWJsZWRUcmFuc2xhdGlvbnMgIT09IHVuZGVmaW5lZCkgYm9keS5zZXRFbmFibGVkVHJhbnNsYXRpb25zKC4uLmVuYWJsZWRUcmFuc2xhdGlvbnMsIHRydWUpO1xuXHRcdGlmIChsb2NrUm90YXRpb25zICE9PSB1bmRlZmluZWQpIGJvZHkubG9ja1JvdGF0aW9ucyhsb2NrUm90YXRpb25zLCB0cnVlKTtcblx0XHRpZiAobG9ja1RyYW5zbGF0aW9ucyAhPT0gdW5kZWZpbmVkKSBib2R5LmxvY2tUcmFuc2xhdGlvbnMobG9ja1RyYW5zbGF0aW9ucywgdHJ1ZSk7XG5cdFx0Ym9keS5zZXRBbmd2ZWwoeyB4OiBhbmd1bGFyVmVsb2NpdHlbMF0sIHk6IGFuZ3VsYXJWZWxvY2l0eVsxXSwgejogYW5ndWxhclZlbG9jaXR5WzJdIH0sIHRydWUpO1xuXHRcdGJvZHkuc2V0TGludmVsKHsgeDogbGluZWFyVmVsb2NpdHlbMF0sIHk6IGxpbmVhclZlbG9jaXR5WzFdLCB6OiBsaW5lYXJWZWxvY2l0eVsyXSB9LCB0cnVlKTtcblx0XHRib2R5LmVuYWJsZUNjZChjY2QpO1xuXHRcdGJvZHkuc2V0U29mdENjZFByZWRpY3Rpb24oc29mdENjZFByZWRpY3Rpb24pO1xuXHRcdGlmICh1c2VyRGF0YSAhPT0gdW5kZWZpbmVkKSBib2R5LnVzZXJEYXRhID0gdXNlckRhdGE7XG5cdFx0aWYgKGJvZHlUeXBlICE9PSBib2R5LmJvZHlUeXBlKCkpIGJvZHkuc2V0Qm9keVR5cGUoYm9keVR5cGUsIHRydWUpO1xuXHR9XG5cblx0cHJpdmF0ZSBjcmVhdGVSaWdpZEJvZHlTdGF0ZShcblx0XHRyaWdpZEJvZHk6IFJpZ2lkQm9keSxcblx0XHRvYmplY3Q6IE9iamVjdDNELFxuXHRcdHNldE1hdHJpeD86IChtYXRyaXg6IE1hdHJpeDQpID0+IHZvaWQsXG5cdFx0Z2V0TWF0cml4PzogKG1hdHJpeDogTWF0cml4NCkgPT4gTWF0cml4NCxcblx0XHR3b3JsZFNjYWxlPzogVmVjdG9yMyxcblx0XHRtZXNoVHlwZTogTmd0clJpZ2lkQm9keVN0YXRlWydtZXNoVHlwZSddID0gJ21lc2gnLFxuXHQpIHtcblx0XHRvYmplY3QudXBkYXRlV29ybGRNYXRyaXgodHJ1ZSwgZmFsc2UpO1xuXHRcdGNvbnN0IGludmVydGVkV29ybGRNYXRyaXggPSBvYmplY3QucGFyZW50IS5tYXRyaXhXb3JsZC5jbG9uZSgpLmludmVydCgpO1xuXHRcdHJldHVybiB7XG5cdFx0XHRvYmplY3QsXG5cdFx0XHRyaWdpZEJvZHksXG5cdFx0XHRpbnZlcnRlZFdvcmxkTWF0cml4LFxuXHRcdFx0c2V0TWF0cml4OiBzZXRNYXRyaXhcblx0XHRcdFx0PyBzZXRNYXRyaXhcblx0XHRcdFx0OiAobWF0cml4OiBNYXRyaXg0KSA9PiB7XG5cdFx0XHRcdFx0XHRvYmplY3QubWF0cml4LmNvcHkobWF0cml4KTtcblx0XHRcdFx0XHR9LFxuXHRcdFx0Z2V0TWF0cml4OiBnZXRNYXRyaXggPyBnZXRNYXRyaXggOiAobWF0cml4OiBNYXRyaXg0KSA9PiBtYXRyaXguY29weShvYmplY3QubWF0cml4KSxcblx0XHRcdHNjYWxlOiB3b3JsZFNjYWxlIHx8IG9iamVjdC5nZXRXb3JsZFNjYWxlKF9zY2FsZSkuY2xvbmUoKSxcblx0XHRcdGlzU2xlZXBpbmc6IGZhbHNlLFxuXHRcdFx0bWVzaFR5cGUsXG5cdFx0fTtcblx0fVxufVxuIl19
|