angular-three-cannon 2.0.0-beta.230 → 2.0.0-beta.232

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.
@@ -1,57 +1,19 @@
1
1
  import { Injector } from '@angular/core';
2
- import type { BodyShapeType, BoxProps, CompoundBodyProps, ConvexPolyhedronArgs, ConvexPolyhedronProps, CylinderArgs, CylinderProps, HeightfieldArgs, HeightfieldProps, ParticleProps, PlaneProps, SphereArgs, SphereProps, TrimeshArgs, TrimeshProps, Triplet } from '@pmndrs/cannon-worker-api';
3
- import { type NgtInjectedRef } from 'angular-three';
2
+ import { BodyShapeType } from '@pmndrs/cannon-worker-api';
3
+ import { NgtInjectedRef } from 'angular-three';
4
4
  import { Object3D } from 'three';
5
- import type { NgtcBodyPublicApi, NgtcGetByIndex, NgtcTransformArg } from './types';
6
- interface NgtcBodyProps {
7
- Plane: {
8
- props: PlaneProps;
9
- args: unknown[];
10
- };
11
- Box: {
12
- props: BoxProps;
13
- args: Triplet;
14
- };
15
- Trimesh: {
16
- props: TrimeshProps;
17
- args: TrimeshArgs;
18
- };
19
- Cylinder: {
20
- props: CylinderProps;
21
- args: CylinderArgs;
22
- };
23
- Heightfield: {
24
- props: HeightfieldProps;
25
- args: HeightfieldArgs;
26
- };
27
- ConvexPolyhedron: {
28
- props: ConvexPolyhedronProps;
29
- args: ConvexPolyhedronArgs<Triplet>;
30
- };
31
- Particle: {
32
- props: ParticleProps;
33
- args: unknown[];
34
- };
35
- Sphere: {
36
- props: SphereProps;
37
- args: SphereArgs;
38
- };
39
- Compound: {
40
- props: CompoundBodyProps;
41
- args: unknown[];
42
- };
43
- }
44
- export interface NgtcBodyResult {
45
- ref: NgtInjectedRef<Object3D>;
46
- api: NgtcBodyPublicApi;
47
- }
48
- interface NgtcBodyOptions<TType extends BodyShapeType = BodyShapeType> {
49
- getPropFn: NgtcGetByIndex<NgtcBodyProps[TType]['props']>;
50
- transformArgs?: NgtcTransformArg<NgtcBodyProps[TType]['args']>;
51
- }
52
- export declare function injectBody<TType extends BodyShapeType>(type: TType, getPropFn: NgtcBodyOptions<TType>['getPropFn'], { injector, ref, transformArgs, }?: {
53
- injector?: Injector;
5
+ import { NgtcArgFn, NgtcBodyPropsMap, NgtcBodyReturn, NgtcGetByIndex } from './types';
6
+ export interface NgtcBodyOptions<TShape extends BodyShapeType> {
7
+ transformArgs?: NgtcArgFn<NgtcBodyPropsMap[TShape]>;
54
8
  ref?: NgtInjectedRef<Object3D>;
55
- transformArgs?: NgtcBodyOptions<TType>['transformArgs'];
56
- }): NgtcBodyResult;
57
- export {};
9
+ injector?: Injector;
10
+ }
11
+ export declare const injectBox: <TObject extends Object3D<import("three").Object3DEventMap>>(getPropFn: NgtcGetByIndex<import("@pmndrs/cannon-worker-api").BoxProps>, options?: NgtcBodyOptions<"Box"> | undefined) => NgtcBodyReturn<TObject>;
12
+ export declare const injectConvexPolyhedron: <TObject extends Object3D<import("three").Object3DEventMap>>(getPropFn: NgtcGetByIndex<import("@pmndrs/cannon-worker-api").ConvexPolyhedronProps>, options?: NgtcBodyOptions<"ConvexPolyhedron"> | undefined) => NgtcBodyReturn<TObject>;
13
+ export declare const injectCylinder: <TObject extends Object3D<import("three").Object3DEventMap>>(getPropFn: NgtcGetByIndex<import("@pmndrs/cannon-worker-api").CylinderProps>, options?: NgtcBodyOptions<"Cylinder"> | undefined) => NgtcBodyReturn<TObject>;
14
+ export declare const injectHeightfield: <TObject extends Object3D<import("three").Object3DEventMap>>(getPropFn: NgtcGetByIndex<import("@pmndrs/cannon-worker-api").HeightfieldProps>, options?: NgtcBodyOptions<"Heightfield"> | undefined) => NgtcBodyReturn<TObject>;
15
+ export declare const injectParticle: <TObject extends Object3D<import("three").Object3DEventMap>>(getPropFn: NgtcGetByIndex<import("@pmndrs/cannon-worker-api").ParticleProps>, options?: NgtcBodyOptions<"Particle"> | undefined) => NgtcBodyReturn<TObject>;
16
+ export declare const injectPlane: <TObject extends Object3D<import("three").Object3DEventMap>>(getPropFn: NgtcGetByIndex<import("@pmndrs/cannon-worker-api").PlaneProps>, options?: NgtcBodyOptions<"Plane"> | undefined) => NgtcBodyReturn<TObject>;
17
+ export declare const injectSphere: <TObject extends Object3D<import("three").Object3DEventMap>>(getPropFn: NgtcGetByIndex<import("@pmndrs/cannon-worker-api").SphereProps>, options?: NgtcBodyOptions<"Sphere"> | undefined) => NgtcBodyReturn<TObject>;
18
+ export declare const injectTrimesh: <TObject extends Object3D<import("three").Object3DEventMap>>(getPropFn: NgtcGetByIndex<import("@pmndrs/cannon-worker-api").TrimeshProps>, options?: NgtcBodyOptions<"Trimesh"> | undefined) => NgtcBodyReturn<TObject>;
19
+ export declare const injectCompound: <TObject extends Object3D<import("three").Object3DEventMap>>(getPropFn: NgtcGetByIndex<import("@pmndrs/cannon-worker-api").CompoundBodyProps>, options?: NgtcBodyOptions<"Compound"> | undefined) => NgtcBodyReturn<TObject>;
@@ -1,19 +1,20 @@
1
- import type { AtomicName, AtomicProps, BodyProps, Quad, Triplet, VectorName } from '@pmndrs/cannon-worker-api';
2
- import type { Euler, Quaternion, Vector3 } from 'three';
3
- export type NgtcAtomicApi<K extends AtomicName> = {
1
+ import { AtomicName, AtomicProps, BodyProps, BoxProps, CompoundBodyProps, ConvexPolyhedronProps, CylinderProps, HeightfieldProps, ParticleProps, PlaneProps, Quad, SphereProps, TrimeshProps, Triplet, VectorName } from '@pmndrs/cannon-worker-api';
2
+ import { NgtInjectedRef } from 'angular-three';
3
+ import { Euler, Object3D, Quaternion, Vector3 } from 'three';
4
+ export interface NgtcAtomicApi<K extends AtomicName> {
4
5
  set: (value: AtomicProps[K]) => void;
5
6
  subscribe: (callback: (value: AtomicProps[K]) => void) => () => void;
6
- };
7
- export type NgtcQuaternionApi = {
7
+ }
8
+ export interface NgtcQuaternionApi {
8
9
  copy: ({ w, x, y, z }: Quaternion) => void;
9
10
  set: (x: number, y: number, z: number, w: number) => void;
10
11
  subscribe: (callback: (value: Quad) => void) => () => void;
11
- };
12
- export type NgtcVectorApi = {
12
+ }
13
+ export interface NgtcVectorApi {
13
14
  copy: ({ x, y, z }: Vector3 | Euler) => void;
14
15
  set: (x: number, y: number, z: number) => void;
15
16
  subscribe: (callback: (value: Triplet) => void) => () => void;
16
- };
17
+ }
17
18
  export type NgtcWorkerApi = {
18
19
  [K in AtomicName]: NgtcAtomicApi<K>;
19
20
  } & {
@@ -34,5 +35,20 @@ export type NgtcWorkerApi = {
34
35
  export interface NgtcBodyPublicApi extends NgtcWorkerApi {
35
36
  at: (index: number) => NgtcWorkerApi;
36
37
  }
38
+ export interface NgtcBodyReturn<TObject extends Object3D> {
39
+ ref: NgtInjectedRef<TObject>;
40
+ api: NgtcBodyPublicApi;
41
+ }
42
+ export type NgtcBodyPropsMap = {
43
+ Plane: PlaneProps;
44
+ Box: BoxProps;
45
+ Particle: ParticleProps;
46
+ Cylinder: CylinderProps;
47
+ Sphere: SphereProps;
48
+ Trimesh: TrimeshProps;
49
+ Heightfield: HeightfieldProps;
50
+ ConvexPolyhedron: ConvexPolyhedronProps;
51
+ Compound: CompoundBodyProps;
52
+ };
37
53
  export type NgtcGetByIndex<T extends BodyProps> = (index: number) => T;
38
- export type NgtcTransformArg<T extends unknown[]> = (args: T) => T;
54
+ export type NgtcArgFn<T extends BodyProps> = (args: NonNullable<T['args']>) => typeof args;
@@ -1,11 +1,13 @@
1
- import { type ElementRef, type Signal } from '@angular/core';
2
- import type { BodyProps, CannonWorkerAPI, ConvexPolyhedronArgs, CylinderArgs, HeightfieldArgs, SphereArgs, TrimeshArgs, Triplet } from '@pmndrs/cannon-worker-api';
3
- import type { NgtcCannonEvents, NgtcPhysicsApi } from 'angular-three-cannon';
4
- import { type Object3D } from 'three';
5
- import type { NgtcWorkerApi } from './types';
1
+ import { ElementRef } from '@angular/core';
2
+ import { BodyProps, BoxProps, CannonWorkerAPI, CompoundBodyProps, ConvexPolyhedronArgs, CylinderArgs, HeightfieldArgs, ParticleProps, PlaneProps, PropValue, SphereArgs, SubscriptionName, SubscriptionTarget, Subscriptions, TrimeshArgs, Triplet } from '@pmndrs/cannon-worker-api';
3
+ import { NgtInjectedRef } from 'angular-three';
4
+ import { NgtcCannonEvents, NgtcPhysicsApi } from 'angular-three-cannon';
5
+ import { Object3D } from 'three';
6
+ import { NgtcWorkerApi } from './types';
7
+ export declare function createSubscribe<T extends SubscriptionName>(ref: ElementRef<Object3D>, worker: CannonWorkerAPI, subscriptions: Subscriptions, type: T, index?: number, target?: SubscriptionTarget): (callback: (value: PropValue<T>) => void) => () => void;
6
8
  export declare function prepare(object: Object3D, { position, rotation, userData }: BodyProps): void;
7
9
  export declare function setupCollision(events: NgtcCannonEvents, { onCollide, onCollideBegin, onCollideEnd }: Partial<BodyProps>, uuid: string): void;
8
- export declare function makeApi(worker: Signal<CannonWorkerAPI>, bodyRef: ElementRef<Object3D>, { subscriptions, bodies, scaleOverrides }: NgtcPhysicsApi): {
10
+ export declare function makeBodyApi(bodyRef: NgtInjectedRef<Object3D>, { subscriptions, bodies, scaleOverrides, worker }: NgtcPhysicsApi): {
9
11
  at: (index: number) => NgtcWorkerApi;
10
12
  allowSleep: import("./types").NgtcAtomicApi<"allowSleep">;
11
13
  angularDamping: import("./types").NgtcAtomicApi<"angularDamping">;
@@ -38,13 +40,13 @@ export declare function makeApi(worker: Signal<CannonWorkerAPI>, bodyRef: Elemen
38
40
  remove: () => void;
39
41
  };
40
42
  export declare const defaultTransformArgs: {
41
- Plane: (args: unknown[]) => never[];
42
- Box: (args?: Triplet) => Triplet;
43
+ Plane: (args: PlaneProps['args']) => never[];
44
+ Box: (args?: BoxProps['args']) => Triplet;
43
45
  Trimesh: (args: TrimeshArgs) => TrimeshArgs;
44
46
  Cylinder: (args?: CylinderArgs) => never[];
45
47
  Heightfield: (args: HeightfieldArgs) => HeightfieldArgs;
46
- ConvexPolyhedron: ([vertices, faces, normals, axes, boundingSphereRadius]?: ConvexPolyhedronArgs<Triplet>) => (number | number[][] | undefined)[];
47
- Particle: (args: unknown[]) => never[];
48
+ ConvexPolyhedron: ([vertices, faces, normals, axes, boundingSphereRadius]?: ConvexPolyhedronArgs) => (number | number[][] | undefined)[];
49
+ Particle: (args: ParticleProps['args']) => never[];
48
50
  Sphere: (args?: SphereArgs) => number[];
49
- Compound: (args: unknown[]) => unknown[];
51
+ Compound: (args: CompoundBodyProps['args']) => unknown[] | undefined;
50
52
  };
@@ -1,11 +1,7 @@
1
1
  import { Injector } from '@angular/core';
2
- import type { ConstraintOptns, ConstraintTypes, HingeConstraintOpts } from '@pmndrs/cannon-worker-api';
3
- import { type NgtInjectedRef } from 'angular-three';
2
+ import { ConeTwistConstraintOpts, ConstraintTypes, DistanceConstraintOpts, HingeConstraintOpts, LockConstraintOpts, PointToPointConstraintOpts } from '@pmndrs/cannon-worker-api';
3
+ import { NgtInjectedRef } from 'angular-three';
4
4
  import { Object3D } from 'three';
5
- export interface NgtcConstraintOptions<TConstraintType extends 'Hinge' | ConstraintTypes, TOptions extends HingeConstraintOpts | ConstraintOptns = TConstraintType extends 'Hinge' ? HingeConstraintOpts : ConstraintOptns> {
6
- injector?: Injector;
7
- options?: TOptions;
8
- }
9
5
  export interface NgtcConstraintApi {
10
6
  disable: () => void;
11
7
  enable: () => void;
@@ -18,9 +14,24 @@ export interface NgtcHingeConstraintApi extends NgtcConstraintApi {
18
14
  setMotorSpeed: (value: number) => void;
19
15
  }
20
16
  export type NgtcConstraintORHingeApi<T extends 'Hinge' | ConstraintTypes> = T extends ConstraintTypes ? NgtcConstraintApi : NgtcHingeConstraintApi;
21
- export interface NgtcConstraintResult<T extends 'Hinge' | ConstraintTypes, TObjectA extends Object3D = Object3D, TObjectB extends Object3D = Object3D> {
17
+ export interface NgtcConstraintReturn<T extends 'Hinge' | ConstraintTypes, TObjectA extends Object3D = Object3D, TObjectB extends Object3D = Object3D> {
22
18
  bodyA: NgtInjectedRef<TObjectA>;
23
19
  bodyB: NgtInjectedRef<TObjectB>;
24
20
  api: NgtcConstraintORHingeApi<T>;
25
21
  }
26
- export declare function injectConstraint<TType extends ConstraintTypes | 'Hinge', TBodyA extends Object3D = Object3D, TBodyB extends Object3D = Object3D>(type: TType, bodyA: TBodyA | NgtInjectedRef<TBodyA>, bodyB: TBodyB | NgtInjectedRef<TBodyB>, { injector, options }?: NgtcConstraintOptions<TType>): NgtcConstraintResult<TType, TBodyA, TBodyB>;
22
+ export type NgtcConstraintOptionsMap = {
23
+ ConeTwist: ConeTwistConstraintOpts;
24
+ PointToPoint: PointToPointConstraintOpts;
25
+ Distance: DistanceConstraintOpts;
26
+ Lock: LockConstraintOpts;
27
+ Hinge: HingeConstraintOpts;
28
+ };
29
+ export type NgtcConstraintOptions<TConstraintType extends 'Hinge' | ConstraintTypes> = {
30
+ injector?: Injector;
31
+ options?: NgtcConstraintOptionsMap[TConstraintType];
32
+ };
33
+ export declare const injectPointToPoint: <A extends Object3D<import("three").Object3DEventMap> = Object3D<import("three").Object3DEventMap>, B extends Object3D<import("three").Object3DEventMap> = Object3D<import("three").Object3DEventMap>>(bodyA: A | NgtInjectedRef<A>, bodyB: B | NgtInjectedRef<B>, options?: NgtcConstraintOptions<"PointToPoint"> | undefined) => NgtcConstraintReturn<"PointToPoint", A, B>;
34
+ export declare const injectConeTwist: <A extends Object3D<import("three").Object3DEventMap> = Object3D<import("three").Object3DEventMap>, B extends Object3D<import("three").Object3DEventMap> = Object3D<import("three").Object3DEventMap>>(bodyA: A | NgtInjectedRef<A>, bodyB: B | NgtInjectedRef<B>, options?: NgtcConstraintOptions<"ConeTwist"> | undefined) => NgtcConstraintReturn<"ConeTwist", A, B>;
35
+ export declare const injectDistance: <A extends Object3D<import("three").Object3DEventMap> = Object3D<import("three").Object3DEventMap>, B extends Object3D<import("three").Object3DEventMap> = Object3D<import("three").Object3DEventMap>>(bodyA: A | NgtInjectedRef<A>, bodyB: B | NgtInjectedRef<B>, options?: NgtcConstraintOptions<"Distance"> | undefined) => NgtcConstraintReturn<"Distance", A, B>;
36
+ export declare const injectLock: <A extends Object3D<import("three").Object3DEventMap> = Object3D<import("three").Object3DEventMap>, B extends Object3D<import("three").Object3DEventMap> = Object3D<import("three").Object3DEventMap>>(bodyA: A | NgtInjectedRef<A>, bodyB: B | NgtInjectedRef<B>, options?: NgtcConstraintOptions<"Lock"> | undefined) => NgtcConstraintReturn<"Lock", A, B>;
37
+ export declare const injectHinge: <A extends Object3D<import("three").Object3DEventMap> = Object3D<import("three").Object3DEventMap>, B extends Object3D<import("three").Object3DEventMap> = Object3D<import("three").Object3DEventMap>>(bodyA: A | NgtInjectedRef<A>, bodyB: B | NgtInjectedRef<B>, options?: NgtcConstraintOptions<"Hinge"> | undefined) => NgtcConstraintReturn<"Hinge", A, B>;
@@ -1,11 +1,10 @@
1
- import { type BodyProps, type BodyShapeType } from '@pmndrs/cannon-worker-api';
1
+ import { BodyProps, BodyShapeType } from '@pmndrs/cannon-worker-api';
2
2
  import CannonDebugger from 'cannon-es-debugger';
3
- import * as THREE from 'three';
4
3
  import * as i0 from "@angular/core";
5
4
  export declare const injectNgtcDebugApi: {
6
5
  (): {
7
6
  add: (uuid: string, props: BodyProps, type: BodyShapeType) => void;
8
- remove: (id: string) => void;
7
+ remove: (uuid: string) => void;
9
8
  };
10
9
  (injectOptions: import("@angular/core").InjectOptions & {
11
10
  optional?: false | undefined;
@@ -13,32 +12,35 @@ export declare const injectNgtcDebugApi: {
13
12
  injector?: import("@angular/core").Injector | undefined;
14
13
  }): {
15
14
  add: (uuid: string, props: BodyProps, type: BodyShapeType) => void;
16
- remove: (id: string) => void;
15
+ remove: (uuid: string) => void;
17
16
  };
18
17
  (injectOptions: import("@angular/core").InjectOptions & {
19
18
  injector?: import("@angular/core").Injector | undefined;
20
19
  }): {
21
20
  add: (uuid: string, props: BodyProps, type: BodyShapeType) => void;
22
- remove: (id: string) => void;
21
+ remove: (uuid: string) => void;
23
22
  } | null;
24
23
  }, provideNgtcDebugApi: () => import("@angular/core").Provider;
24
+ export interface NgtcDebugInputs {
25
+ enabled: boolean;
26
+ color: string;
27
+ impl: typeof CannonDebugger;
28
+ scale: number;
29
+ }
25
30
  export declare class NgtcDebug {
26
- color: import("@angular/core").InputSignal<string>;
27
- scale: import("@angular/core").InputSignal<number>;
28
- impl: import("@angular/core").InputSignal<typeof CannonDebugger>;
29
- debug: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
30
- protected scene: THREE.Scene;
31
- private bodies;
32
- private bodyMap;
33
31
  private store;
34
- private defaultScene;
35
32
  private physicsApi;
33
+ debug: import("@angular/core").InputSignalWithTransform<NgtcDebugInputs, Partial<NgtcDebugInputs>>;
34
+ private defaultScene;
35
+ private scene;
36
+ private bodies;
37
+ private bodyMap;
36
38
  private cannonDebugger;
37
39
  api: {
38
40
  add: (uuid: string, props: BodyProps, type: BodyShapeType) => void;
39
- remove: (id: string) => void;
41
+ remove: (uuid: string) => void;
40
42
  };
41
43
  constructor();
42
44
  static ɵfac: i0.ɵɵFactoryDeclaration<NgtcDebug, never>;
43
- static ɵdir: i0.ɵɵDirectiveDeclaration<NgtcDebug, "ngtc-physics[debug]", never, { "color": { "alias": "color"; "required": false; "isSignal": true; }; "scale": { "alias": "scale"; "required": false; "isSignal": true; }; "impl": { "alias": "impl"; "required": false; "isSignal": true; }; "debug": { "alias": "debug"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
45
+ static ɵdir: i0.ɵɵDirectiveDeclaration<NgtcDebug, "ngtc-physics[debug]", never, { "debug": { "alias": "debug"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
44
46
  }
@@ -1,26 +1,29 @@
1
- import { afterNextRender, effect, inject, Injector } from '@angular/core';
1
+ import { afterNextRender } from '@angular/core';
2
2
  import { injectNgtRef } from 'angular-three';
3
3
  import { injectNgtcPhysicsApi } from 'angular-three-cannon';
4
4
  import { injectNgtcDebugApi } from 'angular-three-cannon/debug';
5
5
  import { assertInjector } from 'ngxtension/assert-injector';
6
+ import { injectAutoEffect } from 'ngxtension/auto-effect';
6
7
  import { DynamicDrawUsage, InstancedMesh, Object3D } from 'three';
7
- import { defaultTransformArgs, makeApi, prepare, setupCollision } from './utils';
8
- export function injectBody(type, getPropFn, { injector, ref, transformArgs, } = {}) {
8
+ import { defaultTransformArgs, makeBodyApi, prepare, setupCollision } from './utils';
9
+ function createInjectBody(type) {
10
+ return (getPropFn, options) => injectBody(type, getPropFn, options);
11
+ }
12
+ function injectBody(type, getPropFn, { transformArgs, ref, injector } = {}) {
9
13
  return assertInjector(injectBody, injector, () => {
10
- const assertedInjector = inject(Injector);
11
- const physicsApi = injectNgtcPhysicsApi();
14
+ const physicsApi = injectNgtcPhysicsApi({ optional: true });
15
+ if (!physicsApi) {
16
+ throw new Error(`[NGT Cannon] injectBody was called outside of <ngtc-physics>`);
17
+ }
18
+ const autoEffect = injectAutoEffect();
12
19
  const debugApi = injectNgtcDebugApi({ optional: true });
13
- const [{ add: addToDebug, remove: removeFromDebug }, physics, worker] = [
14
- debugApi || {},
15
- physicsApi.get(),
16
- physicsApi.select('worker'),
17
- ];
20
+ const { add: addToDebug, remove: removeFromDebug } = debugApi || {};
18
21
  const transform = transformArgs ?? defaultTransformArgs[type];
19
22
  const bodyResult = { ref: ref ?? injectNgtRef() };
20
23
  afterNextRender(() => {
21
- Object.assign(bodyResult, { api: makeApi(worker, bodyResult.ref, physics) });
22
- effect((onCleanup) => {
23
- const currentWorker = worker();
24
+ Object.assign(bodyResult, { api: makeBodyApi(bodyResult.ref, physicsApi) });
25
+ autoEffect(() => {
26
+ const currentWorker = physicsApi.worker();
24
27
  if (!currentWorker)
25
28
  return;
26
29
  if (!bodyResult.ref.nativeElement) {
@@ -51,9 +54,9 @@ export function injectBody(type, getPropFn, { injector, ref, transformArgs, } =
51
54
  else {
52
55
  prepare(object, props);
53
56
  }
54
- physics.refs[id] = object;
57
+ physicsApi.refs[id] = object;
55
58
  addToDebug?.(id, props, type);
56
- setupCollision(physics.events, props, id);
59
+ setupCollision(physicsApi.events, props, id);
57
60
  // @ts-expect-error - if args is undefined, there's default
58
61
  return { ...props, args: transform(props.args) };
59
62
  }),
@@ -67,17 +70,26 @@ export function injectBody(type, getPropFn, { injector, ref, transformArgs, } =
67
70
  type,
68
71
  uuid,
69
72
  });
70
- onCleanup(() => {
73
+ return () => {
71
74
  uuid.forEach((id) => {
72
- delete physics.refs[id];
75
+ delete physicsApi.refs[id];
73
76
  removeFromDebug?.(id);
74
- delete physics.events[id];
77
+ delete physicsApi.events[id];
75
78
  });
76
- currentWorker.removeBodies({ uuid: uuid });
77
- });
78
- }, { injector: assertedInjector });
79
+ currentWorker.removeBodies({ uuid });
80
+ };
81
+ });
79
82
  });
80
83
  return bodyResult;
81
84
  });
82
85
  }
83
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9keS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2Fubm9uL2JvZHkvc3JjL2xpYi9ib2R5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFtQjFFLE9BQU8sRUFBRSxZQUFZLEVBQXVCLE1BQU0sZUFBZSxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzVELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUVsRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxTQUFTLENBQUM7QUF3QmpGLE1BQU0sVUFBVSxVQUFVLENBQ3pCLElBQVcsRUFDWCxTQUE4QyxFQUM5QyxFQUNDLFFBQVEsRUFDUixHQUFHLEVBQ0gsYUFBYSxNQUtWLEVBQUU7SUFFTixPQUFPLGNBQWMsQ0FBQyxVQUFVLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRTtRQUNoRCxNQUFNLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUUxQyxNQUFNLFVBQVUsR0FBRyxvQkFBb0IsRUFBRSxDQUFDO1FBQzFDLE1BQU0sUUFBUSxHQUFHLGtCQUFrQixDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFFeEQsTUFBTSxDQUFDLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsZUFBZSxFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxHQUFH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QUM7cUJBQ08sQ0FBQztnQkFDWixDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUVMLDJDQUEyQztnQkFDM0MsYUFBYSxDQUFDLFNBQVMsQ0FBQztvQkFDdkIsS0FBSyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsWUFBWSxFQUFFLEdBQUcsaUJBQWlCLEVBQUUsRUFBRSxFQUFFO3dCQUN0RixPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxHQUFHLGlCQUFpQixFQUFFLENBQUM7b0JBQ2hFLENBQUMsQ0FBQztvQkFDRixJQUFJO29CQUNKLElBQUk7aUJBQ0osQ0FBQyxDQUFDO2dCQUVILFNBQVMsQ0FBQyxHQUFHLEVBQUU7b0JBQ2QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFO3dCQUNuQixPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7d0JBQ3hCLGVBQWUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO3dCQUN0QixPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7b0JBQzNCLENBQUMsQ0FBQyxDQUFDO29CQUNILGFBQWEsQ0FBQyxZQUFZLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztnQkFDNUMsQ0FBQyxDQUFDLENBQUM7WUFDSixDQUFDLEVBQ0QsRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLEVBQUUsQ0FDOUIsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxVQUFVLENBQUM7SUFDbkIsQ0FBQyxDQUFDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYWZ0ZXJOZXh0UmVuZGVyLCBlZmZlY3QsIGluamVjdCwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB0eXBlIHtcblx0Qm9keVNoYXBlVHlwZSxcblx0Qm94UHJvcHMsXG5cdENvbXBvdW5kQm9keVByb3BzLFxuXHRDb252ZXhQb2x5aGVkcm9uQXJncyxcblx0Q29udmV4UG9seWhlZHJvblByb3BzLFxuXHRDeWxpbmRlckFyZ3MsXG5cdEN5bGluZGVyUHJvcHMsXG5cdEhlaWdodGZpZWxkQXJncyxcblx0SGVpZ2h0ZmllbGRQcm9wcyxcblx0UGFydGljbGVQcm9wcyxcblx0UGxhbmVQcm9wcyxcblx0U3BoZXJlQXJncyxcblx0U3BoZXJlUHJvcHMsXG5cdFRyaW1lc2hBcmdzLFxuXHRUcmltZXNoUHJvcHMsXG5cdFRyaXBsZXQsXG59IGZyb20gJ0BwbW5kcnMvY2Fubm9uLXdvcmtlci1hcGknO1xuaW1wb3J0IHsgaW5qZWN0Tmd0UmVmLCB0eXBlIE5ndEluamVjdGVkUmVmIH0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgeyBpbmplY3ROZ3RjUGh5c2ljc0FwaSB9IGZyb20gJ2FuZ3VsYXItdGhyZWUtY2Fubm9uJztcbmltcG9ydCB7IGluamVjdE5ndGNEZWJ1Z0FwaSB9IGZyb20gJ2FuZ3VsYXItdGhyZWUtY2Fubm9uL2RlYnVnJztcbmltcG9ydCB7IGFzc2VydEluamVjdG9yIH0gZnJvbSAnbmd4dGVuc2lvbi9hc3NlcnQtaW5qZWN0b3InO1xuaW1wb3J0IHsgRHluYW1pY0RyYXdVc2FnZSwgSW5zdGFuY2VkTWVzaCwgT2JqZWN0M0QgfSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgdHlwZSB7IE5ndGNCb2R5UHVibGljQXBpLCBOZ3RjR2V0QnlJbmRleCwgTmd0Y1RyYW5zZm9ybUFyZyB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgZGVmYXVsdFRyYW5zZm9ybUFyZ3MsIG1ha2VBcGksIHByZXBhcmUsIHNldHVwQ29sbGlzaW9uIH0gZnJvbSAnLi91dGlscyc7XG5cbmludGVyZmFjZSBOZ3RjQm9keVByb3BzIHtcblx0UGxhbmU6IHsgcHJvcHM6IFBsYW5lUHJvcHM7IGFyZ3M6IHVua25vd25bXSB9O1xuXHRCb3g6IHsgcHJvcHM6IEJveFByb3BzOyBhcmdzOiBUcmlwbGV0IH07XG5cdFRyaW1lc2g6IHsgcHJvcHM6IFRyaW1lc2hQcm9wczsgYXJnczogVHJpbWVzaEFyZ3MgfTtcblx0Q3lsaW5kZXI6IHsgcHJvcHM6IEN5bGluZGVyUHJvcHM7IGFyZ3M6IEN5bGluZGVyQXJncyB9O1xuXHRIZWlnaHRmaWVsZDogeyBwcm9wczogSGVpZ2h0ZmllbGRQcm9wczsgYXJnczogSGVpZ2h0ZmllbGRBcmdzIH07XG5cdENvbnZleFBvbHloZWRyb246IHsgcHJvcHM6IENvbnZleFBvbHloZWRyb25Qcm9wczsgYXJnczogQ29udmV4UG9seWhlZHJvbkFyZ3M8VHJpcGxldD4gfTtcblx0UGFydGljbGU6IHsgcHJvcHM6IFBhcnRpY2xlUHJvcHM7IGFyZ3M6IHVua25vd25bXSB9O1xuXHRTcGhlcmU6IHsgcHJvcHM6IFNwaGVyZVByb3BzOyBhcmdzOiBTcGhlcmVBcmdzIH07XG5cdENvbXBvdW5kOiB7IHByb3BzOiBDb21wb3VuZEJvZHlQcm9wczsgYXJnczogdW5rbm93bltdIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmd0Y0JvZHlSZXN1bHQge1xuXHRyZWY6IE5ndEluamVjdGVkUmVmPE9iamVjdDNEPjtcblx0YXBpOiBOZ3RjQm9keVB1YmxpY0FwaTtcbn1cblxuaW50ZXJmYWNlIE5ndGNCb2R5T3B0aW9uczxUVHlwZSBleHRlbmRzIEJvZHlTaGFwZVR5cGUgPSBCb2R5U2hhcGVUeXBlPiB7XG5cdGdldFByb3BGbjogTmd0Y0dldEJ5SW5kZXg8Tmd0Y0JvZHlQcm9wc1tUVHlwZV1bJ3Byb3BzJ10+O1xuXHR0cmFuc2Zvcm1BcmdzPzogTmd0Y1RyYW5zZm9ybUFyZzxOZ3RjQm9keVByb3BzW1RUeXBlXVsnYXJncyddPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdEJvZHk8VFR5cGUgZXh0ZW5kcyBCb2R5U2hhcGVUeXBlPihcblx0dHlwZTogVFR5cGUsXG5cdGdldFByb3BGbjogTmd0Y0JvZHlPcHRpb25zPFRUeXBlPlsnZ2V0UHJvcEZuJ10sXG5cdHtcblx0XHRpbmplY3Rvcixcblx0XHRyZWYsXG5cdFx0dHJhbnNmb3JtQXJncyxcblx0fToge1xuXHRcdGluamVjdG9yPzogSW5qZWN0b3I7XG5cdFx0cmVmPzogTmd0SW5qZWN0ZWRSZWY8T2JqZWN0M0Q+O1xuXHRcdHRyYW5zZm9ybUFyZ3M/OiBOZ3RjQm9keU9wdGlvbnM8VFR5cGU+Wyd0cmFuc2Zvcm1BcmdzJ107XG5cdH0gPSB7fSxcbik6IE5ndGNCb2R5UmVzdWx0IHtcblx0cmV0dXJuIGFzc2VydEluamVjdG9yKGluamVjdEJvZHksIGluamVjdG9yLCAoKSA9PiB7XG5cdFx0Y29uc3QgYXNzZXJ0ZWRJbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG5cblx0XHRjb25zdCBwaHlzaWNzQXBpID0gaW5qZWN0Tmd0Y1BoeXNpY3NBcGkoKTtcblx0XHRjb25zdCBkZWJ1Z0FwaSA9IGluamVjdE5ndGNEZWJ1Z0FwaSh7IG9wdGlvbmFsOiB0cnVlIH0pO1xuXG5cdFx0Y29uc3QgW3sgYWRkOiBhZGRUb0RlYnVnLCByZW1vdmU6IHJlbW92ZUZyb21EZWJ1ZyB9LCBwaHlzaWNzLCB3b3JrZXJdID0gW1xuXHRcdFx0ZGVidWdBcGkgfHwge30sXG5cdFx0XHRwaHlzaWNzQXBpLmdldCgpLFxuXHRcdFx0cGh5c2ljc0FwaS5zZWxlY3QoJ3dvcmtlcicpLFxuXHRcdF07XG5cdFx0Y29uc3QgdHJhbnNmb3JtID0gdHJhbnNmb3JtQXJncyA/PyBkZWZhdWx0VHJhbnNmb3JtQXJnc1t0eXBlXTtcblxuXHRcdGNvbnN0IGJvZHlSZXN1bHQgPSB7IHJlZjogcmVmID8/IGluamVjdE5ndFJlZigpIH0gYXMgTmd0Y0JvZHlSZXN1bHQ7XG5cblx0XHRhZnRlck5leHRSZW5kZXIoKCkgPT4ge1xuXHRcdFx0T2JqZWN0LmFzc2lnbihib2R5UmVzdWx0LCB7IGFwaTogbWFrZUFwaSh3b3JrZXIsIGJvZHlSZXN1bHQucmVmLCBwaHlzaWNzKSB9KTtcblxuXHRcdFx0ZWZmZWN0KFxuXHRcdFx0XHQob25DbGVhbnVwKSA9PiB7XG5cdFx0XHRcdFx0Y29uc3QgY3VycmVudFdvcmtlciA9IHdvcmtlcigpO1xuXHRcdFx0XHRcdGlmICghY3VycmVudFdvcmtlcikgcmV0dXJuO1xuXG5cdFx0XHRcdFx0aWYgKCFib2R5UmVzdWx0LnJlZi5uYXRpdmVFbGVtZW50KSB7XG5cdFx0XHRcdFx0XHRib2R5UmVzdWx0LnJlZi5uYXRpdmVFbGVtZW50ID0gbmV3IE9iamVjdDNEKCk7XG5cdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Y29uc3Qgb2JqZWN0ID0gYm9keVJlc3VsdC5yZWYubmF0aXZlRWxlbWVudDtcblxuXHRcdFx0XHRcdGNvbnN0IFt1dWlkLCBwcm9wc10gPSAoKCkgPT4ge1xuXHRcdFx0XHRcdFx0bGV0IHV1aWRzOiBzdHJpbmdbXSA9IFtdO1xuXHRcdFx0XHRcdFx0bGV0IHRlbXA6IE9iamVjdDNEO1xuXG5cdFx0XHRcdFx0XHRpZiAob2JqZWN0IGluc3RhbmNlb2YgSW5zdGFuY2VkTWVzaCkge1xuXHRcdFx0XHRcdFx0XHRvYmplY3QuaW5zdGFuY2VNYXRyaXguc2V0VXNhZ2UoRHluYW1pY0RyYXdVc2FnZSk7XG5cdFx0XHRcdFx0XHRcdHV1aWRzID0gbmV3IEFycmF5KG9iamVjdC5jb3VudCkuZmlsbCgwKS5tYXAoKF8sIGkpID0+IGAke29iamVjdC51dWlkfS8ke2l9YCk7XG5cdFx0XHRcdFx0XHRcdHRlbXAgPSBuZXcgT2JqZWN0M0QoKTtcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdHV1aWRzID0gW29iamVjdC51dWlkXTtcblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0cmV0dXJuIFtcblx0XHRcdFx0XHRcdFx0dXVpZHMsXG5cdFx0XHRcdFx0XHRcdHV1aWRzLm1hcCgoaWQsIGluZGV4KSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc3QgcHJvcHMgPSBnZXRQcm9wRm4oaW5kZXgpO1xuXHRcdFx0XHRcdFx0XHRcdGlmICh0ZW1wKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRwcmVwYXJlKHRlbXAsIHByb3BzKTtcblx0XHRcdFx0XHRcdFx0XHRcdChvYmplY3QgYXMgSW5zdGFuY2VkTWVzaCkuc2V0TWF0cml4QXQoaW5kZXgsIHRlbXAubWF0cml4KTtcblx0XHRcdFx0XHRcdFx0XHRcdChvYmplY3QgYXMgSW5zdGFuY2VkTWVzaCkuaW5zdGFuY2VNYXRyaXgubmVlZHNVcGRhdGUgPSB0cnVlO1xuXHRcdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRwcmVwYXJlKG9iamVjdCwgcHJvcHMpO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRwaHlzaWNzLnJlZnNbaWRdID0gb2JqZWN0O1xuXHRcdFx0XHRcdFx0XHRcdGFkZFRvRGVidWc/LihpZCwgcHJvcHMsIHR5cGUpO1xuXHRcdFx0XHRcdFx0XHRcdHNldHVwQ29sbGlzaW9uKHBoeXNpY3MuZXZlbnRzLCBwcm9wcywgaWQpO1xuXHRcdFx0XHRcdFx0XHRcdC8vIEB0cy1leHBlY3QtZXJyb3IgLSBpZiBhcmdzIGlzIHVuZGVmaW5lZCwgdGhlcmUncyBkZWZhdWx0XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHsgLi4ucHJvcHMsIGFyZ3M6IHRyYW5zZm9ybShwcm9wcy5hcmdzKSB9O1xuXHRcdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRcdF0gYXMgY29uc3Q7XG5cdFx0XHRcdFx0fSkoKTtcblxuXHRcdFx0XHRcdC8vIFJlZ2lzdGVyIG9uIG1vdW50LCB1bnJlZ2lzdGVyIG9uIHVubW91bnRcblx0XHRcdFx0XHRjdXJyZW50V29ya2VyLmFkZEJvZGllcyh7XG5cdFx0XHRcdFx0XHRwcm9wczogcHJvcHMubWFwKCh7IG9uQ29sbGlkZSwgb25Db2xsaWRlQmVnaW4sIG9uQ29sbGlkZUVuZCwgLi4uc2VyaWFsaXphYmxlUHJvcHMgfSkgPT4ge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4geyBvbkNvbGxpZGU6IEJvb2xlYW4ob25Db2xsaWRlKSwgLi4uc2VyaWFsaXphYmxlUHJvcHMgfTtcblx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdFx0dHlwZSxcblx0XHRcdFx0XHRcdHV1aWQsXG5cdFx0XHRcdFx0fSk7XG5cblx0XHRcdFx0XHRvbkNsZWFudXAoKCkgPT4ge1xuXHRcdFx0XHRcdFx0dXVpZC5mb3JFYWNoKChpZCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRkZWxldGUgcGh5c2ljcy5yZWZzW2lkXTtcblx0XHRcdFx0XHRcdFx0cmVtb3ZlRnJvbURlYnVnPy4oaWQpO1xuXHRcdFx0XHRcdFx0XHRkZWxldGUgcGh5c2ljcy5ldmVudHNbaWRdO1xuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRjdXJyZW50V29ya2VyLnJlbW92ZUJvZGllcyh7IHV1aWQ6IHV1aWQgfSk7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH0sXG5cdFx0XHRcdHsgaW5qZWN0b3I6IGFzc2VydGVkSW5qZWN0b3IgfSxcblx0XHRcdCk7XG5cdFx0fSk7XG5cblx0XHRyZXR1cm4gYm9keVJlc3VsdDtcblx0fSk7XG59XG4iXX0=
86
+ export const injectBox = createInjectBody('Box');
87
+ export const injectConvexPolyhedron = createInjectBody('ConvexPolyhedron');
88
+ export const injectCylinder = createInjectBody('Cylinder');
89
+ export const injectHeightfield = createInjectBody('Heightfield');
90
+ export const injectParticle = createInjectBody('Particle');
91
+ export const injectPlane = createInjectBody('Plane');
92
+ export const injectSphere = createInjectBody('Sphere');
93
+ export const injectTrimesh = createInjectBody('Trimesh');
94
+ export const injectCompound = createInjectBody('Compound');
95
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9keS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2Fubm9uL2JvZHkvc3JjL2xpYi9ib2R5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBWSxlQUFlLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFMUQsT0FBTyxFQUFrQixZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzVELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzFELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBRWxFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQVFyRixTQUFTLGdCQUFnQixDQUErQixJQUFZO0lBQ25FLE9BQU8sQ0FDTixTQUFtRCxFQUNuRCxPQUFpQyxFQUNoQyxFQUFFLENBQUMsVUFBVSxDQUFrQixJQUFJLEVBQUUsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQzVELENBQUM7QUFFRCxTQUFTLFVBQVUsQ0FDbEIsSUFBWSxFQUNaLFNBQW1ELEVBQ25ELEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBRSxRQUFRLEtBQThCLEVBQUU7SUFFOUQsT0FBTyxjQUFjLENBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUU7UUFDaEQsTUFBTSxVQUFVLEdBQUcsb0JBQW9CLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUU1RCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7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QyxNQUFNLHNCQUFzQixHQUFHLGdCQUFnQixDQUFDLGtCQUFrQixDQUFDLENBQUM7QUFDM0UsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQzNELE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxDQUFDO0FBQ2pFLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUMzRCxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDckQsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3ZELE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUN6RCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RvciwgYWZ0ZXJOZXh0UmVuZGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCb2R5U2hhcGVUeXBlIH0gZnJvbSAnQHBtbmRycy9jYW5ub24td29ya2VyLWFwaSc7XG5pbXBvcnQgeyBOZ3RJbmplY3RlZFJlZiwgaW5qZWN0Tmd0UmVmIH0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgeyBpbmplY3ROZ3RjUGh5c2ljc0FwaSB9IGZyb20gJ2FuZ3VsYXItdGhyZWUtY2Fubm9uJztcbmltcG9ydCB7IGluamVjdE5ndGNEZWJ1Z0FwaSB9IGZyb20gJ2FuZ3VsYXItdGhyZWUtY2Fubm9uL2RlYnVnJztcbmltcG9ydCB7IGFzc2VydEluamVjdG9yIH0gZnJvbSAnbmd4dGVuc2lvbi9hc3NlcnQtaW5qZWN0b3InO1xuaW1wb3J0IHsgaW5qZWN0QXV0b0VmZmVjdCB9IGZyb20gJ25neHRlbnNpb24vYXV0by1lZmZlY3QnO1xuaW1wb3J0IHsgRHluYW1pY0RyYXdVc2FnZSwgSW5zdGFuY2VkTWVzaCwgT2JqZWN0M0QgfSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBOZ3RjQXJnRm4sIE5ndGNCb2R5UHJvcHNNYXAsIE5ndGNCb2R5UmV0dXJuLCBOZ3RjR2V0QnlJbmRleCB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgZGVmYXVsdFRyYW5zZm9ybUFyZ3MsIG1ha2VCb2R5QXBpLCBwcmVwYXJlLCBzZXR1cENvbGxpc2lvbiB9IGZyb20gJy4vdXRpbHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIE5ndGNCb2R5T3B0aW9uczxUU2hhcGUgZXh0ZW5kcyBCb2R5U2hhcGVUeXBlPiB7XG5cdHRyYW5zZm9ybUFyZ3M/OiBOZ3RjQXJnRm48Tmd0Y0JvZHlQcm9wc01hcFtUU2hhcGVdPjtcblx0cmVmPzogTmd0SW5qZWN0ZWRSZWY8T2JqZWN0M0Q+O1xuXHRpbmplY3Rvcj86IEluamVjdG9yO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVJbmplY3RCb2R5PFRTaGFwZSBleHRlbmRzIEJvZHlTaGFwZVR5cGU+KHR5cGU6IFRTaGFwZSkge1xuXHRyZXR1cm4gPFRPYmplY3QgZXh0ZW5kcyBPYmplY3QzRD4oXG5cdFx0Z2V0UHJvcEZuOiBOZ3RjR2V0QnlJbmRleDxOZ3RjQm9keVByb3BzTWFwW1RTaGFwZV0+LFxuXHRcdG9wdGlvbnM/OiBOZ3RjQm9keU9wdGlvbnM8VFNoYXBlPixcblx0KSA9PiBpbmplY3RCb2R5PFRTaGFwZSwgVE9iamVjdD4odHlwZSwgZ2V0UHJvcEZuLCBvcHRpb25zKTtcbn1cblxuZnVuY3Rpb24gaW5qZWN0Qm9keTxUU2hhcGUgZXh0ZW5kcyBCb2R5U2hhcGVUeXBlLCBUT2JqZWN0IGV4dGVuZHMgT2JqZWN0M0Q+KFxuXHR0eXBlOiBUU2hhcGUsXG5cdGdldFByb3BGbjogTmd0Y0dldEJ5SW5kZXg8Tmd0Y0JvZHlQcm9wc01hcFtUU2hhcGVdPixcblx0eyB0cmFuc2Zvcm1BcmdzLCByZWYsIGluamVjdG9yIH06IE5ndGNCb2R5T3B0aW9uczxUU2hhcGU+ID0ge30sXG4pOiBOZ3RjQm9keVJldHVybjxUT2JqZWN0PiB7XG5cdHJldHVybiBhc3NlcnRJbmplY3RvcihpbmplY3RCb2R5LCBpbmplY3RvciwgKCkgPT4ge1xuXHRcdGNvbnN0IHBoeXNpY3NBcGkgPSBpbmplY3ROZ3RjUGh5c2ljc0FwaSh7IG9wdGlvbmFsOiB0cnVlIH0pO1xuXG5cdFx0aWYgKCFwaHlzaWNzQXBpKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoYFtOR1QgQ2Fubm9uXSBpbmplY3RCb2R5IHdhcyBjYWxsZWQgb3V0c2lkZSBvZiA8bmd0Yy1waHlzaWNzPmApO1xuXHRcdH1cblxuXHRcdGNvbnN0IGF1dG9FZmZlY3QgPSBpbmplY3RBdXRvRWZmZWN0KCk7XG5cdFx0Y29uc3QgZGVidWdBcGkgPSBpbmplY3ROZ3RjRGVidWdBcGkoeyBvcHRpb25hbDogdHJ1ZSB9KTtcblxuXHRcdGNvbnN0IHsgYWRkOiBhZGRUb0RlYnVnLCByZW1vdmU6IHJlbW92ZUZyb21EZWJ1ZyB9ID0gZGVidWdBcGkgfHwge307XG5cdFx0Y29uc3QgdHJhbnNmb3JtID0gdHJhbnNmb3JtQXJncyA/PyBkZWZhdWx0VHJhbnNmb3JtQXJnc1t0eXBlXTtcblx0XHRjb25zdCBib2R5UmVzdWx0ID0geyByZWY6IHJlZiA/PyBpbmplY3ROZ3RSZWYoKSB9O1xuXG5cdFx0YWZ0ZXJOZXh0UmVuZGVyKCgpID0+IHtcblx0XHRcdE9iamVjdC5hc3NpZ24oYm9keVJlc3VsdCwgeyBhcGk6IG1ha2VCb2R5QXBpKGJvZHlSZXN1bHQucmVmLCBwaHlzaWNzQXBpKSB9KTtcblx0XHRcdGF1dG9FZmZlY3QoKCkgPT4ge1xuXHRcdFx0XHRjb25zdCBjdXJyZW50V29ya2VyID0gcGh5c2ljc0FwaS53b3JrZXIoKTtcblx0XHRcdFx0aWYgKCFjdXJyZW50V29ya2VyKSByZXR1cm47XG5cblx0XHRcdFx0aWYgKCFib2R5UmVzdWx0LnJlZi5uYXRpdmVFbGVtZW50KSB7XG5cdFx0XHRcdFx0Ym9keVJlc3VsdC5yZWYubmF0aXZlRWxlbWVudCA9IG5ldyBPYmplY3QzRCgpO1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGNvbnN0IG9iamVjdCA9IGJvZHlSZXN1bHQucmVmLm5hdGl2ZUVsZW1lbnQ7XG5cdFx0XHRcdGNvbnN0IFt1dWlkLCBwcm9wc10gPSAoKCkgPT4ge1xuXHRcdFx0XHRcdGxldCB1dWlkczogc3RyaW5nW10gPSBbXTtcblx0XHRcdFx0XHRsZXQgdGVtcDogT2JqZWN0M0Q7XG5cdFx0XHRcdFx0aWYgKG9iamVjdCBpbnN0YW5jZW9mIEluc3RhbmNlZE1lc2gpIHtcblx0XHRcdFx0XHRcdG9iamVjdC5pbnN0YW5jZU1hdHJpeC5zZXRVc2FnZShEeW5hbWljRHJhd1VzYWdlKTtcblx0XHRcdFx0XHRcdHV1aWRzID0gbmV3IEFycmF5KG9iamVjdC5jb3VudCkuZmlsbCgwKS5tYXAoKF8sIGkpID0+IGAke29iamVjdC51dWlkfS8ke2l9YCk7XG5cdFx0XHRcdFx0XHR0ZW1wID0gbmV3IE9iamVjdDNEKCk7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdHV1aWRzID0gW29iamVjdC51dWlkXTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0cmV0dXJuIFtcblx0XHRcdFx0XHRcdHV1aWRzLFxuXHRcdFx0XHRcdFx0dXVpZHMubWFwKChpZCwgaW5kZXgpID0+IHtcblx0XHRcdFx0XHRcdFx0Y29uc3QgcHJvcHMgPSBnZXRQcm9wRm4oaW5kZXgpO1xuXHRcdFx0XHRcdFx0XHRpZiAodGVtcCkge1xuXHRcdFx0XHRcdFx0XHRcdHByZXBhcmUodGVtcCwgcHJvcHMpO1xuXHRcdFx0XHRcdFx0XHRcdChvYmplY3QgYXMgSW5zdGFuY2VkTWVzaCkuc2V0TWF0cml4QXQoaW5kZXgsIHRlbXAubWF0cml4KTtcblx0XHRcdFx0XHRcdFx0XHQob2JqZWN0IGFzIEluc3RhbmNlZE1lc2gpLmluc3RhbmNlTWF0cml4Lm5lZWRzVXBkYXRlID0gdHJ1ZTtcblx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRwcmVwYXJlKG9iamVjdCwgcHJvcHMpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdHBoeXNpY3NBcGkucmVmc1tpZF0gPSBvYmplY3Q7XG5cdFx0XHRcdFx0XHRcdGFkZFRvRGVidWc/LihpZCwgcHJvcHMsIHR5cGUpO1xuXHRcdFx0XHRcdFx0XHRzZXR1cENvbGxpc2lvbihwaHlzaWNzQXBpLmV2ZW50cywgcHJvcHMsIGlkKTtcblx0XHRcdFx0XHRcdFx0Ly8gQHRzLWV4cGVjdC1lcnJvciAtIGlmIGFyZ3MgaXMgdW5kZWZpbmVkLCB0aGVyZSdzIGRlZmF1bHRcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHsgLi4ucHJvcHMsIGFyZ3M6IHRyYW5zZm9ybShwcm9wcy5hcmdzKSB9O1xuXHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0XTtcblx0XHRcdFx0fSkoKTtcblx0XHRcdFx0Ly8gUmVnaXN0ZXIgb24gbW91bnQsIHVucmVnaXN0ZXIgb24gdW5tb3VudFxuXHRcdFx0XHRjdXJyZW50V29ya2VyLmFkZEJvZGllcyh7XG5cdFx0XHRcdFx0cHJvcHM6IHByb3BzLm1hcCgoeyBvbkNvbGxpZGUsIG9uQ29sbGlkZUJlZ2luLCBvbkNvbGxpZGVFbmQsIC4uLnNlcmlhbGl6YWJsZVByb3BzIH0pID0+IHtcblx0XHRcdFx0XHRcdHJldHVybiB7IG9uQ29sbGlkZTogQm9vbGVhbihvbkNvbGxpZGUpLCAuLi5zZXJpYWxpemFibGVQcm9wcyB9O1xuXHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdHR5cGUsXG5cdFx0XHRcdFx0dXVpZCxcblx0XHRcdFx0fSk7XG5cblx0XHRcdFx0cmV0dXJuICgpID0+IHtcblx0XHRcdFx0XHR1dWlkLmZvckVhY2goKGlkKSA9PiB7XG5cdFx0XHRcdFx0XHRkZWxldGUgcGh5c2ljc0FwaS5yZWZzW2lkXTtcblx0XHRcdFx0XHRcdHJlbW92ZUZyb21EZWJ1Zz8uKGlkKTtcblx0XHRcdFx0XHRcdGRlbGV0ZSBwaHlzaWNzQXBpLmV2ZW50c1tpZF07XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0Y3VycmVudFdvcmtlci5yZW1vdmVCb2RpZXMoeyB1dWlkIH0pO1xuXHRcdFx0XHR9O1xuXHRcdFx0fSk7XG5cdFx0fSk7XG5cblx0XHRyZXR1cm4gYm9keVJlc3VsdCBhcyBOZ3RjQm9keVJldHVybjxUT2JqZWN0Pjtcblx0fSk7XG59XG5cbmV4cG9ydCBjb25zdCBpbmplY3RCb3ggPSBjcmVhdGVJbmplY3RCb2R5KCdCb3gnKTtcbmV4cG9ydCBjb25zdCBpbmplY3RDb252ZXhQb2x5aGVkcm9uID0gY3JlYXRlSW5qZWN0Qm9keSgnQ29udmV4UG9seWhlZHJvbicpO1xuZXhwb3J0IGNvbnN0IGluamVjdEN5bGluZGVyID0gY3JlYXRlSW5qZWN0Qm9keSgnQ3lsaW5kZXInKTtcbmV4cG9ydCBjb25zdCBpbmplY3RIZWlnaHRmaWVsZCA9IGNyZWF0ZUluamVjdEJvZHkoJ0hlaWdodGZpZWxkJyk7XG5leHBvcnQgY29uc3QgaW5qZWN0UGFydGljbGUgPSBjcmVhdGVJbmplY3RCb2R5KCdQYXJ0aWNsZScpO1xuZXhwb3J0IGNvbnN0IGluamVjdFBsYW5lID0gY3JlYXRlSW5qZWN0Qm9keSgnUGxhbmUnKTtcbmV4cG9ydCBjb25zdCBpbmplY3RTcGhlcmUgPSBjcmVhdGVJbmplY3RCb2R5KCdTcGhlcmUnKTtcbmV4cG9ydCBjb25zdCBpbmplY3RUcmltZXNoID0gY3JlYXRlSW5qZWN0Qm9keSgnVHJpbWVzaCcpO1xuZXhwb3J0IGNvbnN0IGluamVjdENvbXBvdW5kID0gY3JlYXRlSW5qZWN0Qm9keSgnQ29tcG91bmQnKTtcbiJdfQ==
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nhbm5vbi9ib2R5L3NyYy9saWIvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQXRvbWljTmFtZSwgQXRvbWljUHJvcHMsIEJvZHlQcm9wcywgUXVhZCwgVHJpcGxldCwgVmVjdG9yTmFtZSB9IGZyb20gJ0BwbW5kcnMvY2Fubm9uLXdvcmtlci1hcGknO1xuaW1wb3J0IHR5cGUgeyBFdWxlciwgUXVhdGVybmlvbiwgVmVjdG9yMyB9IGZyb20gJ3RocmVlJztcblxuZXhwb3J0IHR5cGUgTmd0Y0F0b21pY0FwaTxLIGV4dGVuZHMgQXRvbWljTmFtZT4gPSB7XG5cdHNldDogKHZhbHVlOiBBdG9taWNQcm9wc1tLXSkgPT4gdm9pZDtcblx0c3Vic2NyaWJlOiAoY2FsbGJhY2s6ICh2YWx1ZTogQXRvbWljUHJvcHNbS10pID0+IHZvaWQpID0+ICgpID0+IHZvaWQ7XG59O1xuZXhwb3J0IHR5cGUgTmd0Y1F1YXRlcm5pb25BcGkgPSB7XG5cdGNvcHk6ICh7IHcsIHgsIHksIHogfTogUXVhdGVybmlvbikgPT4gdm9pZDtcblx0c2V0OiAoeDogbnVtYmVyLCB5OiBudW1iZXIsIHo6IG51bWJlciwgdzogbnVtYmVyKSA9PiB2b2lkO1xuXHRzdWJzY3JpYmU6IChjYWxsYmFjazogKHZhbHVlOiBRdWFkKSA9PiB2b2lkKSA9PiAoKSA9PiB2b2lkO1xufTtcbmV4cG9ydCB0eXBlIE5ndGNWZWN0b3JBcGkgPSB7XG5cdGNvcHk6ICh7IHgsIHksIHogfTogVmVjdG9yMyB8IEV1bGVyKSA9PiB2b2lkO1xuXHRzZXQ6ICh4OiBudW1iZXIsIHk6IG51bWJlciwgejogbnVtYmVyKSA9PiB2b2lkO1xuXHRzdWJzY3JpYmU6IChjYWxsYmFjazogKHZhbHVlOiBUcmlwbGV0KSA9PiB2b2lkKSA9PiAoKSA9PiB2b2lkO1xufTtcbmV4cG9ydCB0eXBlIE5ndGNXb3JrZXJBcGkgPSB7XG5cdFtLIGluIEF0b21pY05hbWVdOiBOZ3RjQXRvbWljQXBpPEs+O1xufSAmIHtcblx0W0sgaW4gVmVjdG9yTmFtZV06IE5ndGNWZWN0b3JBcGk7XG59ICYge1xuXHRhcHBseUZvcmNlOiAoZm9yY2U6IFRyaXBsZXQsIHdvcmxkUG9pbnQ6IFRyaXBsZXQpID0+IHZvaWQ7XG5cdGFwcGx5SW1wdWxzZTogKGltcHVsc2U6IFRyaXBsZXQsIHdvcmxkUG9pbnQ6IFRyaXBsZXQpID0+IHZvaWQ7XG5cdGFwcGx5TG9jYWxGb3JjZTogKGZvcmNlOiBUcmlwbGV0LCBsb2NhbFBvaW50OiBUcmlwbGV0KSA9PiB2b2lkO1xuXHRhcHBseUxvY2FsSW1wdWxzZTogKGltcHVsc2U6IFRyaXBsZXQsIGxvY2FsUG9pbnQ6IFRyaXBsZXQpID0+IHZvaWQ7XG5cdGFwcGx5VG9ycXVlOiAodG9ycXVlOiBUcmlwbGV0KSA9PiB2b2lkO1xuXHRxdWF0ZXJuaW9uOiBOZ3RjUXVhdGVybmlvbkFwaTtcblx0cm90YXRpb246IE5ndGNWZWN0b3JBcGk7XG5cdHNjYWxlT3ZlcnJpZGU6IChzY2FsZTogVHJpcGxldCkgPT4gdm9pZDtcblx0c2xlZXA6ICgpID0+IHZvaWQ7XG5cdHdha2VVcDogKCkgPT4gdm9pZDtcblx0cmVtb3ZlOiAoKSA9PiB2b2lkO1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBOZ3RjQm9keVB1YmxpY0FwaSBleHRlbmRzIE5ndGNXb3JrZXJBcGkge1xuXHRhdDogKGluZGV4OiBudW1iZXIpID0+IE5ndGNXb3JrZXJBcGk7XG59XG5cbmV4cG9ydCB0eXBlIE5ndGNHZXRCeUluZGV4PFQgZXh0ZW5kcyBCb2R5UHJvcHM+ID0gKGluZGV4OiBudW1iZXIpID0+IFQ7XG5leHBvcnQgdHlwZSBOZ3RjVHJhbnNmb3JtQXJnPFQgZXh0ZW5kcyB1bmtub3duW10+ID0gKGFyZ3M6IFQpID0+IFQ7XG4iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nhbm5vbi9ib2R5L3NyYy9saWIvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG5cdEF0b21pY05hbWUsXG5cdEF0b21pY1Byb3BzLFxuXHRCb2R5UHJvcHMsXG5cdEJveFByb3BzLFxuXHRDb21wb3VuZEJvZHlQcm9wcyxcblx0Q29udmV4UG9seWhlZHJvblByb3BzLFxuXHRDeWxpbmRlclByb3BzLFxuXHRIZWlnaHRmaWVsZFByb3BzLFxuXHRQYXJ0aWNsZVByb3BzLFxuXHRQbGFuZVByb3BzLFxuXHRRdWFkLFxuXHRTcGhlcmVQcm9wcyxcblx0VHJpbWVzaFByb3BzLFxuXHRUcmlwbGV0LFxuXHRWZWN0b3JOYW1lLFxufSBmcm9tICdAcG1uZHJzL2Nhbm5vbi13b3JrZXItYXBpJztcbmltcG9ydCB7IE5ndEluamVjdGVkUmVmIH0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgeyBFdWxlciwgT2JqZWN0M0QsIFF1YXRlcm5pb24sIFZlY3RvcjMgfSBmcm9tICd0aHJlZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmd0Y0F0b21pY0FwaTxLIGV4dGVuZHMgQXRvbWljTmFtZT4ge1xuXHRzZXQ6ICh2YWx1ZTogQXRvbWljUHJvcHNbS10pID0+IHZvaWQ7XG5cdHN1YnNjcmliZTogKGNhbGxiYWNrOiAodmFsdWU6IEF0b21pY1Byb3BzW0tdKSA9PiB2b2lkKSA9PiAoKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE5ndGNRdWF0ZXJuaW9uQXBpIHtcblx0Y29weTogKHsgdywgeCwgeSwgeiB9OiBRdWF0ZXJuaW9uKSA9PiB2b2lkO1xuXHRzZXQ6ICh4OiBudW1iZXIsIHk6IG51bWJlciwgejogbnVtYmVyLCB3OiBudW1iZXIpID0+IHZvaWQ7XG5cdHN1YnNjcmliZTogKGNhbGxiYWNrOiAodmFsdWU6IFF1YWQpID0+IHZvaWQpID0+ICgpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmd0Y1ZlY3RvckFwaSB7XG5cdGNvcHk6ICh7IHgsIHksIHogfTogVmVjdG9yMyB8IEV1bGVyKSA9PiB2b2lkO1xuXHRzZXQ6ICh4OiBudW1iZXIsIHk6IG51bWJlciwgejogbnVtYmVyKSA9PiB2b2lkO1xuXHRzdWJzY3JpYmU6IChjYWxsYmFjazogKHZhbHVlOiBUcmlwbGV0KSA9PiB2b2lkKSA9PiAoKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgdHlwZSBOZ3RjV29ya2VyQXBpID0ge1xuXHRbSyBpbiBBdG9taWNOYW1lXTogTmd0Y0F0b21pY0FwaTxLPjtcbn0gJiB7XG5cdFtLIGluIFZlY3Rvck5hbWVdOiBOZ3RjVmVjdG9yQXBpO1xufSAmIHtcblx0YXBwbHlGb3JjZTogKGZvcmNlOiBUcmlwbGV0LCB3b3JsZFBvaW50OiBUcmlwbGV0KSA9PiB2b2lkO1xuXHRhcHBseUltcHVsc2U6IChpbXB1bHNlOiBUcmlwbGV0LCB3b3JsZFBvaW50OiBUcmlwbGV0KSA9PiB2b2lkO1xuXHRhcHBseUxvY2FsRm9yY2U6IChmb3JjZTogVHJpcGxldCwgbG9jYWxQb2ludDogVHJpcGxldCkgPT4gdm9pZDtcblx0YXBwbHlMb2NhbEltcHVsc2U6IChpbXB1bHNlOiBUcmlwbGV0LCBsb2NhbFBvaW50OiBUcmlwbGV0KSA9PiB2b2lkO1xuXHRhcHBseVRvcnF1ZTogKHRvcnF1ZTogVHJpcGxldCkgPT4gdm9pZDtcblx0cXVhdGVybmlvbjogTmd0Y1F1YXRlcm5pb25BcGk7XG5cdHJvdGF0aW9uOiBOZ3RjVmVjdG9yQXBpO1xuXHRzY2FsZU92ZXJyaWRlOiAoc2NhbGU6IFRyaXBsZXQpID0+IHZvaWQ7XG5cdHNsZWVwOiAoKSA9PiB2b2lkO1xuXHR3YWtlVXA6ICgpID0+IHZvaWQ7XG5cdHJlbW92ZTogKCkgPT4gdm9pZDtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmd0Y0JvZHlQdWJsaWNBcGkgZXh0ZW5kcyBOZ3RjV29ya2VyQXBpIHtcblx0YXQ6IChpbmRleDogbnVtYmVyKSA9PiBOZ3RjV29ya2VyQXBpO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE5ndGNCb2R5UmV0dXJuPFRPYmplY3QgZXh0ZW5kcyBPYmplY3QzRD4ge1xuXHRyZWY6IE5ndEluamVjdGVkUmVmPFRPYmplY3Q+O1xuXHRhcGk6IE5ndGNCb2R5UHVibGljQXBpO1xufVxuXG5leHBvcnQgdHlwZSBOZ3RjQm9keVByb3BzTWFwID0ge1xuXHRQbGFuZTogUGxhbmVQcm9wcztcblx0Qm94OiBCb3hQcm9wcztcblx0UGFydGljbGU6IFBhcnRpY2xlUHJvcHM7XG5cdEN5bGluZGVyOiBDeWxpbmRlclByb3BzO1xuXHRTcGhlcmU6IFNwaGVyZVByb3BzO1xuXHRUcmltZXNoOiBUcmltZXNoUHJvcHM7XG5cdEhlaWdodGZpZWxkOiBIZWlnaHRmaWVsZFByb3BzO1xuXHRDb252ZXhQb2x5aGVkcm9uOiBDb252ZXhQb2x5aGVkcm9uUHJvcHM7XG5cdENvbXBvdW5kOiBDb21wb3VuZEJvZHlQcm9wcztcbn07XG5cbmV4cG9ydCB0eXBlIE5ndGNHZXRCeUluZGV4PFQgZXh0ZW5kcyBCb2R5UHJvcHM+ID0gKGluZGV4OiBudW1iZXIpID0+IFQ7XG5leHBvcnQgdHlwZSBOZ3RjQXJnRm48VCBleHRlbmRzIEJvZHlQcm9wcz4gPSAoYXJnczogTm9uTnVsbGFibGU8VFsnYXJncyddPikgPT4gdHlwZW9mIGFyZ3M7XG4iXX0=