mnemonica 0.9.9977 → 0.9.99778

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/README.md CHANGED
@@ -815,8 +815,372 @@ defaultTypes[SymbolConfig].blockErrors = false;
815
815
 
816
816
  ```
817
817
 
818
+ ---
819
+
820
+ # API Reference
821
+
822
+ ## Core Functions
823
+
824
+ ### `define(typeName, constructHandler, config?)`
825
+ Defines a new type constructor. Returns a TypeClass that can be used to create instances.
826
+
827
+ ### `lookup(typeNestedPath)`
828
+ Looks up a type by its nested path (e.g., `'SomeType.SomeNestedType'`).
829
+
830
+ ### `apply(entity, Constructor, args?)`
831
+ Applies a constructor to an entity with the given arguments array.
832
+
833
+ ### `call(entity, Constructor, ...args)`
834
+ Calls a constructor on an entity with spread arguments.
835
+
836
+ ### `bind(entity, Constructor)`
837
+ Binds a constructor to an entity, returning a function that can be called later.
838
+
839
+ ### `registerHook(Constructor, hookType, callback)`
840
+ Registers a hook for a specific constructor.
841
+
842
+ ## Type Management
843
+
844
+ ### `defaultTypes`
845
+ The default types collection. All types defined with the top-level `define()` function are stored here.
846
+
847
+ ### `createTypesCollection()`
848
+ Creates a new isolated types collection.
849
+
850
+ ```js
851
+ const myCollection = createTypesCollection();
852
+ const MyType = myCollection.define('MyType', function() {});
853
+ ```
854
+
855
+ ### `getProps(instance)` / `setProps(instance, values)`
856
+ Get or set internal properties of an instance.
857
+
858
+ ```js
859
+ const { getProps, setProps } = require('mnemonica');
860
+ const props = getProps(instance);
861
+ console.log(props.__type__, props.__args__);
862
+ ```
863
+
864
+ ## Instance Methods
865
+
866
+ All mnemonica instances have the following methods:
867
+
868
+ ### `.extract()`
869
+ Extracts all inherited properties into a single flat object.
870
+
871
+ ### `.pick(...keys)` / `.pick([keys])`
872
+ Picks specific properties from the instance and its inheritance chain.
873
+
874
+ ```js
875
+ const picked = instance.pick('email', 'password');
876
+ // or
877
+ const picked = instance.pick(['email', 'password']);
878
+ ```
879
+
880
+ ### `.parent(constructorName?)`
881
+ Gets the parent instance. If `constructorName` is provided, walks up the chain to find that specific parent.
882
+
883
+ ```js
884
+ const immediateParent = instance.parent();
885
+ const specificParent = instance.parent('UserType');
886
+ ```
887
+
888
+ ### `.clone`
889
+ Property that returns a cloned instance (same as `.fork()` with no arguments).
890
+
891
+ ### `.fork(...args)`
892
+ Creates a forked instance from the same parent, optionally with different arguments.
893
+
894
+ ```js
895
+ const forked = instance.fork(); // same args
896
+ const forkedWithNewArgs = instance.fork('new', 'args');
897
+ ```
898
+
899
+ ### `.fork.call(thisArg, ...args)` / `.fork.apply(thisArg, args)`
900
+ Forks with a different `this` context (useful for DAG construction).
901
+
902
+ ```js
903
+ const dagInstance = instanceA.fork.call(instanceB, 'args');
904
+ ```
905
+
906
+ ### `.exception(error, ...args)`
907
+ Creates an exception instance from the current instance. Useful for typed errors.
908
+
909
+ ```js
910
+ const error = someInstance.exception(new Error('Something went wrong'));
911
+ throw error;
912
+ ```
913
+
914
+ ### `.sibling(typeName)` / `.sibling.TypeName`
915
+ Access sibling types from the same collection.
916
+
917
+ ```js
918
+ const siblingType = instance.sibling('OtherType');
919
+ const siblingInstance = new siblingType();
920
+ // or
921
+ const sibling = instance.sibling.OtherType;
922
+ ```
923
+
924
+ ## Utils
925
+
926
+ ### `utils.extract(instance)`
927
+ Standalone extract function.
928
+
929
+ ### `utils.pick(instance, ...keys)`
930
+ Standalone pick function.
931
+
932
+ ### `utils.parent(instance, constructorName?)`
933
+ Standalone parent function.
934
+
935
+ ### `utils.parse(instance)`
936
+ Parses an instance structure, returning detailed information about:
937
+ - `name`: constructor name
938
+ - `props`: extracted properties
939
+ - `self`: the instance itself
940
+ - `proto`: prototype object
941
+ - `joint`: prototype properties
942
+ - `parent`: parent prototype
943
+
944
+ ```js
945
+ const { utils: { parse } } = require('mnemonica');
946
+ const parsed = parse(instance);
947
+ ```
948
+
949
+ ### `utils.merge(A, B, ...args)`
950
+ Merges two instances using fork semantics.
951
+
952
+ ```js
953
+ const merged = merge(instanceA, instanceB, 'args');
954
+ ```
955
+
956
+ ### `utils.toJSON(instance)`
957
+ Serializes an instance to JSON.
958
+
959
+ ```js
960
+ const json = utils.toJSON(instance);
961
+ ```
962
+
963
+ ### `utils.collectConstructors(instance, flat?)`
964
+ Collects all constructors in the instance's prototype chain.
965
+
966
+ ```js
967
+ const constructors = utils.collectConstructors(instance, true);
968
+ ```
969
+
970
+ ## Instance Properties (via getProps)
971
+
972
+ All instances have non-enumerable internal properties accessible via `getProps()`:
973
+
974
+ | Property | Description |
975
+ |----------|-------------|
976
+ | `.__args__` | Arguments used for instance creation |
977
+ | `.__type__` | Type definition object |
978
+ | `.__parent__` | Parent instance reference |
979
+ | `.__subtypes__` | Map of available subtypes |
980
+ | `.__collection__` | Types collection where type was defined |
981
+ | `.__stack__` | Stack trace (if `submitStack: true` in config) |
982
+ | `.__creator__` | Instance creator reference |
983
+ | `.__timestamp__` | Creation timestamp (ms since epoch) |
984
+ | `.__self__` | Self reference to the instance |
985
+
986
+ ## Hooks
987
+
988
+ ### Hook Types
989
+
990
+ - `'preCreation'` - Called before instance creation
991
+ - `'postCreation'` - Called after instance creation
992
+ - `'creationError'` - Called when instance creation throws an error
993
+
994
+ ### `type.registerHook(hookType, callback)`
995
+ Register a hook on a specific type.
996
+
997
+ ```js
998
+ MyType.registerHook('preCreation', (hookData) => {
999
+ console.log('Creating:', hookData.TypeName);
1000
+ });
1001
+ ```
1002
+
1003
+ ### `collection.registerHook(hookType, callback)`
1004
+ Register a hook on a types collection.
1005
+
1006
+ ```js
1007
+ defaultTypes.registerHook('postCreation', (hookData) => {
1008
+ console.log('Created:', hookData.inheritedInstance.constructor.name);
1009
+ });
1010
+ ```
1011
+
1012
+ ### `collection.registerFlowChecker(callback)`
1013
+ Register a flow checker that runs before hooks.
1014
+
1015
+ ```js
1016
+ defaultTypes.registerFlowChecker((opts) => {
1017
+ // Perform validation or logging
1018
+ console.log('Flow check:', opts.TypeName);
1019
+ });
1020
+ ```
1021
+
1022
+ ### Hook Data Structure
1023
+
1024
+ ```js
1025
+ {
1026
+ TypeName: string, // Constructor name
1027
+ argumentsOfTypeModificator: [], // Arguments passed
1028
+ instanceUsedForInheritance: {}, // Parent instance
1029
+ inheritedInstance: {} // Newly created instance (postCreation only)
1030
+ }
1031
+ ```
1032
+
1033
+ ## Error Handling
1034
+
1035
+ ### `errors` Object
1036
+
1037
+ All mnemonica errors are accessible via the `errors` export:
1038
+
1039
+ ```js
1040
+ const { errors } = require('mnemonica');
1041
+
1042
+ // Available error types:
1043
+ errors.BASE_MNEMONICA_ERROR
1044
+ errors.WRONG_TYPE_DEFINITION
1045
+ errors.WRONG_INSTANCE_INVOCATION
1046
+ errors.WRONG_MODIFICATION_PATTERN
1047
+ errors.ALREADY_DECLARED
1048
+ errors.TYPENAME_MUST_BE_A_STRING
1049
+ errors.HANDLER_MUST_BE_A_FUNCTION
1050
+ errors.WRONG_ARGUMENTS_USED
1051
+ errors.WRONG_HOOK_TYPE
1052
+ errors.MISSING_HOOK_CALLBACK
1053
+ errors.MISSING_CALLBACK_ARGUMENT
1054
+ errors.FLOW_CHECKER_REDEFINITION
1055
+ errors.OPTIONS_ERROR
1056
+ errors.WRONG_STACK_CLEANER
1057
+ ```
1058
+
1059
+ ### Exception Instances
1060
+
1061
+ When you create an exception using `instance.exception()`, the resulting error has special properties:
1062
+
1063
+ ```js
1064
+ const error = instance.exception(new Error('Original error'));
1065
+
1066
+ // Properties:
1067
+ error.originalError // The original error
1068
+ error.exceptionReason // { methodName, ... }
1069
+ error.BaseStack // Base stack trace
1070
+ error.parse() // Parse the exception structure
1071
+ error.extract() // Extract properties from the exception
1072
+ ```
1073
+
1074
+ ## Symbols
1075
+
1076
+ Mnemonica exports the following symbols:
1077
+
1078
+ ```js
1079
+ const {
1080
+ SymbolParentType, // Parent type symbol
1081
+ SymbolConstructorName, // Constructor name symbol
1082
+ SymbolDefaultTypesCollection, // Default collection symbol
1083
+ SymbolConfig // Config symbol
1084
+ } = require('mnemonica');
1085
+ ```
1086
+
1087
+ ## TypeScript Types
1088
+
1089
+ The following types are exported for TypeScript users:
1090
+
1091
+ ```typescript
1092
+ import {
1093
+ IDEF, // Constructor function type
1094
+ ConstructorFunction, // Constructor with prototype
1095
+ TypeLookup, // Lookup function type
1096
+ TypeClass, // Type class interface
1097
+ TypeAbsorber, // Type absorber type
1098
+ ITypeClass, // Typed class interface
1099
+ IDefinitorInstance, // Definitor instance type
1100
+ hooksTypes, // 'preCreation' | 'postCreation' | 'creationError'
1101
+ hooksOpts, // Hook options type
1102
+ hook, // Hook callback type
1103
+ constructorOptions // Configuration options type
1104
+ } from 'mnemonica';
1105
+ ```
1106
+
1107
+ ## Decorator API
1108
+
1109
+ The `decorate` function provides TypeScript decorator support:
1110
+
1111
+ ### Basic Usage
1112
+
1113
+ ```typescript
1114
+ import { decorate } from 'mnemonica';
1115
+
1116
+ @decorate()
1117
+ class MyClass {
1118
+ field: number;
1119
+ constructor() {
1120
+ this.field = 123;
1121
+ }
1122
+ }
1123
+
1124
+ const instance = new MyClass();
1125
+ ```
1126
+
1127
+ ### With Configuration
1128
+
1129
+ ```typescript
1130
+ @decorate({ strictChain: false, blockErrors: true })
1131
+ class MyClass {
1132
+ // ...
1133
+ }
1134
+ ```
1135
+
1136
+ ### Nested Decoration
1137
+
1138
+ ```typescript
1139
+ @decorate()
1140
+ class ParentClass {
1141
+ // ...
1142
+ }
1143
+
1144
+ @decorate(ParentClass, { strictChain: false })
1145
+ class ChildClass {
1146
+ // ...
1147
+ }
1148
+
1149
+ const parent = new ParentClass();
1150
+ const child = apply(parent, ChildClass);
1151
+ ```
1152
+
1153
+ ### Decorator as Function
1154
+
1155
+ Decorated classes can be used as decorators themselves:
1156
+
1157
+ ```typescript
1158
+ @decorate()
1159
+ class Base {
1160
+ // ...
1161
+ }
1162
+
1163
+ @Base() // Use Base as a decorator
1164
+ class Extended {
1165
+ // ...
1166
+ }
1167
+
1168
+ const base = new Base();
1169
+ const extended = apply(base, Extended);
1170
+ ```
1171
+
1172
+ ## Configuration Options Reference
1173
+
1174
+ | Option | Type | Default | Description |
1175
+ |--------|------|---------|-------------|
1176
+ | `strictChain` | `boolean` | `true` | Only allow sub-instances from current type, not up-nested |
1177
+ | `blockErrors` | `boolean` | `true` | Disallow instance construction if error in prototype chain |
1178
+ | `submitStack` | `boolean` | `false` | Collect stack trace as `__stack__` property |
1179
+ | `awaitReturn` | `boolean` | `true` | Ensure `await new Constructor()` returns value |
1180
+ | `ModificationConstructor` | `Function` | internal | Custom modification constructor |
1181
+ | `asClass` | `boolean` | auto | Force class mode (auto-detected by default) |
818
1182
 
819
- # finally
1183
+ ## finally
820
1184
 
821
1185
  So, now you can craft as much types as you wish, combine them, re-define them and spend much more time playing with them:
822
1186
 
@@ -52,18 +52,28 @@ exports.TypeProxy.prototype.set = function (__, name, value) {
52
52
  type.define(TypeName, Constructor);
53
53
  return true;
54
54
  };
55
- exports.TypeProxy.prototype.apply = function (__, Uranus, args) {
55
+ const subTypeApply = (parentType, config, ...args) => {
56
+ const decorator = function (cstr) {
57
+ const { name } = cstr;
58
+ return parentType.define(name, cstr, config, ...args);
59
+ };
60
+ return decorator;
61
+ };
62
+ const primaryTypeApply = function (__, Uranus, args) {
56
63
  const type = this.__type__;
57
- let instance = null;
58
- if (Uranus) {
59
- const InstanceCreatorProxy = new exports.TypeProxy(type, Uranus);
60
- instance = new InstanceCreatorProxy(...args);
61
- }
62
- else {
63
- instance = this.construct(null, args);
64
+ if (Uranus === undefined) {
65
+ const decorator = subTypeApply(type, args[0]);
66
+ return decorator;
64
67
  }
68
+ const InstanceCreatorProxy = new exports.TypeProxy(type, Uranus);
69
+ const instance = new InstanceCreatorProxy(...args);
65
70
  return instance;
66
71
  };
72
+ Object.defineProperty(exports.TypeProxy.prototype, 'apply', {
73
+ get() {
74
+ return primaryTypeApply;
75
+ }
76
+ });
67
77
  exports.TypeProxy.prototype.construct = function (__, args) {
68
78
  const { __type__: type, Uranus } = this;
69
79
  const uranus = type.isSubType ? getDefaultPrototype() : Uranus;
@@ -71,4 +81,4 @@ exports.TypeProxy.prototype.construct = function (__, args) {
71
81
  const instance = new InstanceCreator_1.InstanceCreator(type, mnemosyneProxy, args);
72
82
  return instance;
73
83
  };
74
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVHlwZVByb3h5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwaS90eXBlcy9UeXBlUHJveHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsWUFBWSxDQUFDOzs7QUFLYixvQ0FBa0M7QUFDbEMsTUFBTSxFQUNMLFVBQVUsR0FDVixHQUFHLGVBQVUsQ0FBQztBQUVmLHlDQUFzQztBQUV0QyxxREFBdUQ7QUFDdkQsTUFBTSxFQUNMLHFCQUFxQixHQUNyQixHQUFHLG9CQUFXLENBQUM7QUFFaEIsMkNBQXFDO0FBQ3JDLE1BQU0sRUFBRSxlQUFlLEVBQUUsbUJBQW1CLEVBQUUsR0FBRyxtQkFBVSxDQUFDO0FBRTVELHVEQUFvRDtBQUl2QyxRQUFBLFNBQVMsR0FBRyxVQUFVLFFBQWEsRUFBRSxNQUFlO0lBQ2hFLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFO1FBQ25CLFFBQVE7UUFDUixNQUFNO0tBQ04sQ0FBQyxDQUFDO0lBQ0gsTUFBTSxTQUFTLEdBQUcsSUFBSSxLQUFLLENBQUMsaUNBQWUsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNuRCxPQUFPLFNBQVMsQ0FBQztBQUNsQixDQUE2QixDQUFDO0FBRTlCLGlCQUFTLENBQUMsU0FBUyxDQUFDLEdBQUcsR0FBRyxVQUFVLE1BQVcsRUFBRSxJQUFtQjtJQUluRSxNQUFNLEVBQ0wsUUFBUSxFQUFFLElBQUksRUFDZCxHQUFHLElBQUksQ0FBQztJQUtULElBQUksSUFBSSxLQUFLLFdBQVcsRUFBRSxDQUFDO1FBQzFCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNuQixDQUFDO0lBRUQsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFFLElBQUksQ0FBRSxDQUFDO0lBQ3JDLElBQUksZUFBZSxFQUFFLENBQUM7UUFDckIsT0FBTyxlQUFlLENBQUM7SUFDeEIsQ0FBQztJQUlELElBQUksSUFBQSxTQUFHLEVBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDckIsT0FBTyxlQUFlLENBQUM7SUFDeEIsQ0FBQztJQUdELElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUM3QixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBRWxDLENBQUMsQ0FBQztBQUVGLGlCQUFTLENBQUMsU0FBUyxDQUFDLEdBQUcsR0FBRyxVQUFVLEVBQU8sRUFBRSxJQUFZLEVBQUUsS0FBVTtJQUVwRSxNQUFNLEVBQ0wsUUFBUSxFQUFFLElBQUksRUFDZCxHQUFHLElBQUksQ0FBQztJQUdULElBQUksSUFBSSxLQUFLLFdBQVcsRUFBRSxDQUFDO1FBQzFCLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNsQixNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDakMsT0FBTyxJQUFJLENBQUM7SUFDYixDQUFDO0lBRUQsSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDOUMsTUFBTSxJQUFJLHFCQUFxQixDQUFDLHlDQUF5QyxDQUFDLENBQUM7SUFDNUUsQ0FBQztJQUVELElBQUksT0FBTyxLQUFLLEtBQUssVUFBVSxFQUFFLENBQUM7UUFDakMsTUFBTSxJQUFJLHFCQUFxQixDQUFDLHlDQUF5QyxDQUFDLENBQUM7SUFDNUUsQ0FBQztJQUVELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQztJQUN0QixNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUM7SUFFMUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDbkMsT0FBTyxJQUFJLENBQUM7QUFFYixDQUFDLENBQUM7QUFHRixpQkFBUyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEdBQUcsVUFBVSxFQUFXLEVBQUUsTUFBZSxFQUFFLElBQWU7SUFDbEYsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUMzQixJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUM7SUFDcEIsSUFBSSxNQUFNLEVBQUUsQ0FBQztRQUNaLE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxpQkFBUyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztRQUN6RCxRQUFRLEdBQUcsSUFBSSxvQkFBb0IsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQzlDLENBQUM7U0FBTSxDQUFDO1FBQ1AsUUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFDRCxPQUFPLFFBQVEsQ0FBQztBQUNqQixDQUFDLENBQUM7QUFLRixpQkFBUyxDQUFDLFNBQVMsQ0FBQyxTQUFTLEdBQUcsVUFBVSxFQUFXLEVBQUUsSUFBZTtJQUlyRSxNQUFNLEVBQ0wsUUFBUSxFQUFFLElBQUksRUFDZCxNQUFNLEVBQ04sR0FBRyxJQUFJLENBQUM7SUFLVCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFLL0QsTUFBTSxjQUFjLEdBQUcsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQy9DLE1BQU0sUUFBUSxHQUFHLElBQUksaUNBQWUsQ0FBRSxJQUFJLEVBQUUsY0FBYyxFQUFFLElBQUksQ0FBRSxDQUFDO0lBR25FLE9BQU8sUUFBUSxDQUFDO0FBRWpCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIiBcbid1c2Ugc3RyaWN0JztcblxuaW1wb3J0IHsgQ29uc3RydWN0b3JGdW5jdGlvbiB9IGZyb20gJy4uLy4uL3R5cGVzJztcblxuXG5pbXBvcnQgVHlwZXNVdGlscyBmcm9tICcuLi91dGlscyc7XG5jb25zdCB7XG5cdGNoZWNrUHJvdG8sXG59ID0gVHlwZXNVdGlscztcblxuaW1wb3J0IHsgaG9wIH0gZnJvbSAnLi4vLi4vdXRpbHMvaG9wJztcblxuaW1wb3J0IHsgRXJyb3JzVHlwZXMgfSBmcm9tICcuLi8uLi9kZXNjcmlwdG9ycy9lcnJvcnMnO1xuY29uc3Qge1xuXHRXUk9OR19UWVBFX0RFRklOSVRJT04sXG59ID0gRXJyb3JzVHlwZXM7XG5cbmltcG9ydCBtbmVtb3N5bmVzIGZyb20gJy4vTW5lbW9zeW5lJztcbmNvbnN0IHsgY3JlYXRlTW5lbW9zeW5lLCBnZXREZWZhdWx0UHJvdG90eXBlIH0gPSBtbmVtb3N5bmVzO1xuXG5pbXBvcnQgeyBJbnN0YW5jZUNyZWF0b3IgfSBmcm9tICcuL0luc3RhbmNlQ3JlYXRvcic7XG5cbmltcG9ydCB7IC8qIF9nZXRQcm9wcywgUHJvcHMsICovIFR5cGVEZWYgfSBmcm9tICcuL1Byb3BzJztcblxuZXhwb3J0IGNvbnN0IFR5cGVQcm94eSA9IGZ1bmN0aW9uIChfX3R5cGVfXzogYW55LCBVcmFudXM6IHVua25vd24pIHtcblx0T2JqZWN0LmFzc2lnbih0aGlzLCB7XG5cdFx0X190eXBlX18sXG5cdFx0VXJhbnVzXG5cdH0pO1xuXHRjb25zdCB0eXBlUHJveHkgPSBuZXcgUHJveHkoSW5zdGFuY2VDcmVhdG9yLCB0aGlzKTtcblx0cmV0dXJuIHR5cGVQcm94eTtcbn0gYXMgQ29uc3RydWN0b3JGdW5jdGlvbjxhbnk+O1xuXG5UeXBlUHJveHkucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uICh0YXJnZXQ6IGFueSwgcHJvcDoga2V5b2YgVHlwZURlZikge1xuXG5cdC8vIGNvbnN0IHByb3BzID0gX2dldFByb3BzKHRoaXMpIGFzIFByb3BzO1xuXG5cdGNvbnN0IHtcblx0XHRfX3R5cGVfXzogdHlwZVxuXHR9ID0gdGhpcztcblxuXHQvLyBwcm90b3R5cGUgb2YgcHJveHlcblx0Ly8gY29uc3QgaW5zdGFuY2UgPSBSZWZsZWN0LmdldFByb3RvdHlwZU9mKHJlY2VpdmVyKTtcblxuXHRpZiAocHJvcCA9PT0gJ3Byb3RvdHlwZScpIHtcblx0XHRyZXR1cm4gdHlwZS5wcm90bztcblx0fVxuXG5cdGNvbnN0IHByb3BEZWNsYXJhdGlvbiA9IHR5cGVbIHByb3AgXTtcblx0aWYgKHByb3BEZWNsYXJhdGlvbikge1xuXHRcdHJldHVybiBwcm9wRGVjbGFyYXRpb247XG5cdH1cblxuXHQvLyB1c2VkIGZvciBleGlzdGVudCBwcm9wcyB3aXRoIHZhbHVlXG5cdC8vIHVuZGVmaW5lZCB8fCBudWxsIHx8IGZhbHNlXG5cdGlmIChob3AodHlwZSwgcHJvcCkpIHtcblx0XHRyZXR1cm4gcHJvcERlY2xhcmF0aW9uO1xuXHR9XG5cblx0Ly8gU29tZVR5cGUuU29tZVN1YlR5cGVcblx0aWYgKHR5cGUuc3VidHlwZXMuaGFzKHByb3ApKSB7XG5cdFx0cmV0dXJuIHR5cGUuc3VidHlwZXMuZ2V0KHByb3ApO1xuXHR9XG5cblx0cmV0dXJuIFJlZmxlY3QuZ2V0KHRhcmdldCwgcHJvcCk7XG5cbn07XG5cblR5cGVQcm94eS5wcm90b3R5cGUuc2V0ID0gZnVuY3Rpb24gKF9fOiBhbnksIG5hbWU6IHN0cmluZywgdmFsdWU6IGFueSkge1xuXG5cdGNvbnN0IHtcblx0XHRfX3R5cGVfXzogdHlwZVxuXHR9ID0gdGhpcztcblxuXHQvLyBpcyBhYm91dCBzZXR0aW5nIGEgcHJvdG90eXBlIHRvIFR5cGVcblx0aWYgKG5hbWUgPT09ICdwcm90b3R5cGUnKSB7XG5cdFx0Y2hlY2tQcm90byh2YWx1ZSk7XG5cdFx0T2JqZWN0LmFzc2lnbih0eXBlLnByb3RvLCB2YWx1ZSk7XG5cdFx0cmV0dXJuIHRydWU7XG5cdH1cblxuXHRpZiAodHlwZW9mIG5hbWUgIT09ICdzdHJpbmcnIHx8ICFuYW1lLmxlbmd0aCkge1xuXHRcdHRocm93IG5ldyBXUk9OR19UWVBFX0RFRklOSVRJT04oJ3Nob3VsZCB1c2Ugbm9uIGVtcHR5IHN0cmluZyBhcyBUeXBlTmFtZScpO1xuXHR9XG5cblx0aWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ2Z1bmN0aW9uJykge1xuXHRcdHRocm93IG5ldyBXUk9OR19UWVBFX0RFRklOSVRJT04oJ3Nob3VsZCB1c2UgZnVuY3Rpb24gZm9yIHR5cGUgZGVmaW5pdGlvbicpO1xuXHR9XG5cblx0Y29uc3QgVHlwZU5hbWUgPSBuYW1lO1xuXHRjb25zdCBDb25zdHJ1Y3RvciA9IHZhbHVlO1xuXG5cdHR5cGUuZGVmaW5lKFR5cGVOYW1lLCBDb25zdHJ1Y3Rvcik7XG5cdHJldHVybiB0cnVlO1xuXG59O1xuXG5cblR5cGVQcm94eS5wcm90b3R5cGUuYXBwbHkgPSBmdW5jdGlvbiAoX186IHVua25vd24sIFVyYW51czogdW5rbm93biwgYXJnczogdW5rbm93bltdKSB7XG5cdGNvbnN0IHR5cGUgPSB0aGlzLl9fdHlwZV9fO1xuXHRsZXQgaW5zdGFuY2UgPSBudWxsO1xuXHRpZiAoVXJhbnVzKSB7XG5cdFx0Y29uc3QgSW5zdGFuY2VDcmVhdG9yUHJveHkgPSBuZXcgVHlwZVByb3h5KHR5cGUsIFVyYW51cyk7XG5cdFx0aW5zdGFuY2UgPSBuZXcgSW5zdGFuY2VDcmVhdG9yUHJveHkoLi4uYXJncyk7XG5cdH0gZWxzZSB7XG5cdFx0aW5zdGFuY2UgPSB0aGlzLmNvbnN0cnVjdChudWxsLCBhcmdzKTtcblx0fVxuXHRyZXR1cm4gaW5zdGFuY2U7XG59O1xuXG5cbi8vIHRoaXMgYWx3YXlzIGlzIGluaXRpYWwgdHlwZSBjcmVhdGlvbiAuLi5cbi8vIHNvIG5vIHdheSB0byBpbnZva2UgdGhpcyBvdGhlcndpc2UgdGhhbiBkaXJlY3QgdHlwZSBjYWxsXG5UeXBlUHJveHkucHJvdG90eXBlLmNvbnN0cnVjdCA9IGZ1bmN0aW9uIChfXzogdW5rbm93biwgYXJnczogdW5rbm93bltdKSB7XG5cblx0Ly8gbmV3LnRhcmdldCBpZCBlcXVhbCB3aXRoIHRhcmdldCBoZXJlXG5cblx0Y29uc3Qge1xuXHRcdF9fdHlwZV9fOiB0eXBlLFxuXHRcdFVyYW51c1xuXHR9ID0gdGhpcztcblxuXHQvLyBzbyB0aGlzIGlzIGEgZGlyZWN0IFN1Yi1UeXBlIGludm9jYXRpb25cblx0Ly8gaGF2aW5nIG5vIGV4aXN0ZW50SW5zdGFuY2UgY3JlYXRlZCBlYXJsaWVyXG5cdC8vIHRoZW4gd2Ugc2hvdWxkIHJlbHkgb24gdGhhdCBzb21laG93XG5cdGNvbnN0IHVyYW51cyA9IHR5cGUuaXNTdWJUeXBlID8gZ2V0RGVmYXVsdFByb3RvdHlwZSgpIDogVXJhbnVzO1x0XG5cblx0Ly8gXCJ0aGlzXCIgYXJndW1lbnQgbWF5IGJlIHBhc3NlZCBmb3IgdHJhY2tpbmcgd2h5IHNvbWV0aGluZyBoYXBwZW5lZFxuXHQvLyBidXQgdW5jb21tZW50IGl0IHRoZXJlIGluIGNyZWF0ZU1uZW1vc3luZSBpZiBuZWVkZWRcblx0Ly8gY29uc3QgbW5lbW9zeW5lUHJveHkgPSBjcmVhdGVNbmVtb3N5bmUodXJhbnVzLCB0aGlzKTtcblx0Y29uc3QgbW5lbW9zeW5lUHJveHkgPSBjcmVhdGVNbmVtb3N5bmUodXJhbnVzKTtcblx0Y29uc3QgaW5zdGFuY2UgPSBuZXcgSW5zdGFuY2VDcmVhdG9yKCB0eXBlLCBtbmVtb3N5bmVQcm94eSwgYXJncyApO1xuXG5cdC8vIGNvbnN0IGluc3RhbmNlID0gbmV3IEluc3RhbmNlQ3JlYXRvcih0eXBlLCBudWxsLCBhcmdzKTtcblx0cmV0dXJuIGluc3RhbmNlO1xuXG59O1xuIl19
84
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVHlwZVByb3h5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwaS90eXBlcy9UeXBlUHJveHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsWUFBWSxDQUFDOzs7QUFJYixvQ0FBa0M7QUFDbEMsTUFBTSxFQUNMLFVBQVUsR0FDVixHQUFHLGVBQVUsQ0FBQztBQUVmLHlDQUFzQztBQUV0QyxxREFBdUQ7QUFDdkQsTUFBTSxFQUNMLHFCQUFxQixHQUNyQixHQUFHLG9CQUFXLENBQUM7QUFFaEIsMkNBQXFDO0FBQ3JDLE1BQU0sRUFBRSxlQUFlLEVBQUUsbUJBQW1CLEVBQUUsR0FBRyxtQkFBVSxDQUFDO0FBRTVELHVEQUFvRDtBQUl2QyxRQUFBLFNBQVMsR0FBRyxVQUFVLFFBQWEsRUFBRSxNQUFlO0lBQ2hFLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFO1FBQ25CLFFBQVE7UUFDUixNQUFNO0tBQ04sQ0FBQyxDQUFDO0lBQ0gsTUFBTSxTQUFTLEdBQUcsSUFBSSxLQUFLLENBQUMsaUNBQWUsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNuRCxPQUFPLFNBQVMsQ0FBQztBQUNsQixDQUE2QixDQUFDO0FBRTlCLGlCQUFTLENBQUMsU0FBUyxDQUFDLEdBQUcsR0FBRyxVQUFVLE1BQVcsRUFBRSxJQUFtQjtJQUluRSxNQUFNLEVBQ0wsUUFBUSxFQUFFLElBQUksRUFDZCxHQUFHLElBQUksQ0FBQztJQUtULElBQUksSUFBSSxLQUFLLFdBQVcsRUFBRSxDQUFDO1FBQzFCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNuQixDQUFDO0lBRUQsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFFLElBQUksQ0FBRSxDQUFDO0lBQ3JDLElBQUksZUFBZSxFQUFFLENBQUM7UUFDckIsT0FBTyxlQUFlLENBQUM7SUFDeEIsQ0FBQztJQUlELElBQUksSUFBQSxTQUFHLEVBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUM7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LFNBQVMsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBSy9ELE1BQU0sY0FBYyxHQUFHLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMvQyxNQUFNLFFBQVEsR0FBRyxJQUFJLGlDQUFlLENBQUMsSUFBSSxFQUFFLGNBQWMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUdqRSxPQUFPLFFBQVEsQ0FBQztBQUVqQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJcbid1c2Ugc3RyaWN0JztcblxuaW1wb3J0IHsgY29uc3RydWN0b3JPcHRpb25zLCBDb25zdHJ1Y3RvckZ1bmN0aW9uIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuXG5pbXBvcnQgVHlwZXNVdGlscyBmcm9tICcuLi91dGlscyc7XG5jb25zdCB7XG5cdGNoZWNrUHJvdG8sXG59ID0gVHlwZXNVdGlscztcblxuaW1wb3J0IHsgaG9wIH0gZnJvbSAnLi4vLi4vdXRpbHMvaG9wJztcblxuaW1wb3J0IHsgRXJyb3JzVHlwZXMgfSBmcm9tICcuLi8uLi9kZXNjcmlwdG9ycy9lcnJvcnMnO1xuY29uc3Qge1xuXHRXUk9OR19UWVBFX0RFRklOSVRJT04sXG59ID0gRXJyb3JzVHlwZXM7XG5cbmltcG9ydCBtbmVtb3N5bmVzIGZyb20gJy4vTW5lbW9zeW5lJztcbmNvbnN0IHsgY3JlYXRlTW5lbW9zeW5lLCBnZXREZWZhdWx0UHJvdG90eXBlIH0gPSBtbmVtb3N5bmVzO1xuXG5pbXBvcnQgeyBJbnN0YW5jZUNyZWF0b3IgfSBmcm9tICcuL0luc3RhbmNlQ3JlYXRvcic7XG5cbmltcG9ydCB7IC8qIF9nZXRQcm9wcywgUHJvcHMsICovIFR5cGVEZWYgfSBmcm9tICcuL1Byb3BzJztcblxuZXhwb3J0IGNvbnN0IFR5cGVQcm94eSA9IGZ1bmN0aW9uIChfX3R5cGVfXzogYW55LCBVcmFudXM6IHVua25vd24pIHtcblx0T2JqZWN0LmFzc2lnbih0aGlzLCB7XG5cdFx0X190eXBlX18sXG5cdFx0VXJhbnVzXG5cdH0pO1xuXHRjb25zdCB0eXBlUHJveHkgPSBuZXcgUHJveHkoSW5zdGFuY2VDcmVhdG9yLCB0aGlzKTtcblx0cmV0dXJuIHR5cGVQcm94eTtcbn0gYXMgQ29uc3RydWN0b3JGdW5jdGlvbjxhbnk+O1xuXG5UeXBlUHJveHkucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uICh0YXJnZXQ6IGFueSwgcHJvcDoga2V5b2YgVHlwZURlZikge1xuXG5cdC8vIGNvbnN0IHByb3BzID0gX2dldFByb3BzKHRoaXMpIGFzIFByb3BzO1xuXG5cdGNvbnN0IHtcblx0XHRfX3R5cGVfXzogdHlwZVxuXHR9ID0gdGhpcztcblxuXHQvLyBwcm90b3R5cGUgb2YgcHJveHlcblx0Ly8gY29uc3QgaW5zdGFuY2UgPSBSZWZsZWN0LmdldFByb3RvdHlwZU9mKHJlY2VpdmVyKTtcblxuXHRpZiAocHJvcCA9PT0gJ3Byb3RvdHlwZScpIHtcblx0XHRyZXR1cm4gdHlwZS5wcm90bztcblx0fVxuXG5cdGNvbnN0IHByb3BEZWNsYXJhdGlvbiA9IHR5cGVbIHByb3AgXTtcblx0aWYgKHByb3BEZWNsYXJhdGlvbikge1xuXHRcdHJldHVybiBwcm9wRGVjbGFyYXRpb247XG5cdH1cblxuXHQvLyB1c2VkIGZvciBleGlzdGVudCBwcm9wcyB3aXRoIHZhbHVlXG5cdC8vIHVuZGVmaW5lZCB8fCBudWxsIHx8IGZhbHNlXG5cdGlmIChob3AodHlwZSwgcHJvcCkpIHtcblx0XHRyZXR1cm4gcHJvcERlY2xhcmF0aW9uO1xuXHR9XG5cblx0Ly8gU29tZVR5cGUuU29tZVN1YlR5cGVcblx0aWYgKHR5cGUuc3VidHlwZXMuaGFzKHByb3ApKSB7XG5cdFx0cmV0dXJuIHR5cGUuc3VidHlwZXMuZ2V0KHByb3ApO1xuXHR9XG5cblx0cmV0dXJuIFJlZmxlY3QuZ2V0KHRhcmdldCwgcHJvcCk7XG5cbn07XG5cblR5cGVQcm94eS5wcm90b3R5cGUuc2V0ID0gZnVuY3Rpb24gKF9fOiBhbnksIG5hbWU6IHN0cmluZywgdmFsdWU6IGFueSkge1xuXG5cdGNvbnN0IHtcblx0XHRfX3R5cGVfXzogdHlwZVxuXHR9ID0gdGhpcztcblxuXHQvLyBpcyBhYm91dCBzZXR0aW5nIGEgcHJvdG90eXBlIHRvIFR5cGVcblx0aWYgKG5hbWUgPT09ICdwcm90b3R5cGUnKSB7XG5cdFx0Y2hlY2tQcm90byh2YWx1ZSk7XG5cdFx0T2JqZWN0LmFzc2lnbih0eXBlLnByb3RvLCB2YWx1ZSk7XG5cdFx0cmV0dXJuIHRydWU7XG5cdH1cblxuXHRpZiAodHlwZW9mIG5hbWUgIT09ICdzdHJpbmcnIHx8ICFuYW1lLmxlbmd0aCkge1xuXHRcdHRocm93IG5ldyBXUk9OR19UWVBFX0RFRklOSVRJT04oJ3Nob3VsZCB1c2Ugbm9uIGVtcHR5IHN0cmluZyBhcyBUeXBlTmFtZScpO1xuXHR9XG5cblx0aWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ2Z1bmN0aW9uJykge1xuXHRcdHRocm93IG5ldyBXUk9OR19UWVBFX0RFRklOSVRJT04oJ3Nob3VsZCB1c2UgZnVuY3Rpb24gZm9yIHR5cGUgZGVmaW5pdGlvbicpO1xuXHR9XG5cblx0Y29uc3QgVHlwZU5hbWUgPSBuYW1lO1xuXHRjb25zdCBDb25zdHJ1Y3RvciA9IHZhbHVlO1xuXG5cdHR5cGUuZGVmaW5lKFR5cGVOYW1lLCBDb25zdHJ1Y3Rvcik7XG5cdHJldHVybiB0cnVlO1xuXG59O1xuXG5cbi8vIHNoYXJlIGRlY29yYXRvciBmcm9tIHByaW1hcnkgdHlwZVxuY29uc3Qgc3ViVHlwZUFwcGx5ID0gKFxuXHRwYXJlbnRUeXBlOiB1bmtub3duLFxuXHRjb25maWc/OiBjb25zdHJ1Y3Rvck9wdGlvbnMsXG5cdC4uLmFyZ3M6IHVua25vd25bXVxuKSA9PiB7XG5cdC8vIGNvbnN0IGRlY29yYXRvciA9IGZ1bmN0aW9uIDxUIGV4dGVuZHMgeyBuZXcgKCk6IHVua25vd24gfT4oY3N0cjogVCwgcz86IENsYXNzRGVjb3JhdG9yQ29udGV4dDxUPik6IFQge1xuXHRjb25zdCBkZWNvcmF0b3IgPSBmdW5jdGlvbiA8VCBleHRlbmRzIHsgbmV3ICgpOiB1bmtub3duIH0+KGNzdHI6IFQpOiBUIHtcblx0XHQvLyBjb25zdCBuYW1lID0gdHlwZW9mIHMgPT09ICdvYmplY3QnID8gcy5uYW1lIDogY3N0ci5jb25zdHJ1Y3Rvci5uYW1lO1xuXHRcdGNvbnN0IHsgbmFtZSB9ID0gY3N0cjtcblx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG5cdFx0Ly8gQHRzLWlnbm9yZVxuXHRcdHJldHVybiBwYXJlbnRUeXBlLmRlZmluZShuYW1lLCBjc3RyLCBjb25maWcsIC4uLmFyZ3MpIGFzIHVua25vd24gYXMgVDtcblx0fTtcblx0cmV0dXJuIGRlY29yYXRvcjtcbn07XG5cbi8vIHJlcGxhY2UgaW5zdGFuY2UgcHJvdG90eXBlXG5jb25zdCBwcmltYXJ5VHlwZUFwcGx5ID0gZnVuY3Rpb24gKFxuXHR0aGlzOiBJbnN0YW5jZVR5cGU8dHlwZW9mIFR5cGVQcm94eT4sXG5cdC8vIHByb3h5IHRhcmdldFxuXHRfXzogdW5rbm93bixcblx0VXJhbnVzOiB1bmtub3duLFxuXHRhcmdzOiBbY29uc3RydWN0b3JPcHRpb25zLCAuLi51bmtub3duW11dLFxuKSB7XG5cdGNvbnN0IHR5cGUgPSB0aGlzLl9fdHlwZV9fO1xuXHQvLyBjYXNlIG9mIGRlY29yYXRvciBsaWtlIHVzYWdlXG5cdGlmIChVcmFudXMgPT09IHVuZGVmaW5lZCkge1xuXHRcdC8vIHNvIGluc3RlYWQgb2Zcblx0XHQvLyBpbnN0YW5jZSA9IHRoaXMuY29uc3RydWN0KG51bGwsIGFyZ3MpO1xuXHRcdC8vIHdlIHdpbGwgcmV0dXJuIGRlY29yYXRvclxuXHRcdGNvbnN0IGRlY29yYXRvciA9IHN1YlR5cGVBcHBseSh0eXBlLCBhcmdzWyAwIF0pO1xuXHRcdHJldHVybiBkZWNvcmF0b3I7XG5cdH1cblxuXHQvLyB0aGlzIGlzIHRoZSBzY2VuYXJpbywgd2hlbiB3ZSAuY2FsbCBvciAuYXBwbHkgb3IgLmJpbmRcblx0Ly8gb3VyIFByaW1hcnlUeXBlIHdoaWNrIGlzID09PSBpbnN0YW5jZSBvZiBjdXJyZW50IFR5cGVQcm94eVxuXHRjb25zdCBJbnN0YW5jZUNyZWF0b3JQcm94eSA9IG5ldyBUeXBlUHJveHkodHlwZSwgVXJhbnVzKTtcblx0Y29uc3QgaW5zdGFuY2UgPSBuZXcgSW5zdGFuY2VDcmVhdG9yUHJveHkoLi4uYXJncyk7XG5cdHJldHVybiBpbnN0YW5jZTtcbn07XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShUeXBlUHJveHkucHJvdG90eXBlLCAnYXBwbHknLCB7XG5cdGdldCAoKSB7XG5cdFx0Ly8gY29uc3QgdHlwZSA9IHRoaXMuX190eXBlX187XG5cdFx0cmV0dXJuIHByaW1hcnlUeXBlQXBwbHk7XG5cdFx0Ly8gY29uc3QgYW5zd2VyID0gIXR5cGUuaXNTdWJUeXBlID8gcHJpbWFyeVR5cGVBcHBseSA6IFxuXHRcdC8vIFx0KF9fOiB1bmtub3duLCBfX186IHVua25vd24sIGNvbmZpZz86IGNvbnN0cnVjdG9yT3B0aW9ucywgLi4uYXJnczogdW5rbm93bltdKSA9PiB7XG5cdFx0Ly8gXHRcdHJldHVybiBzdWJUeXBlQXBwbHkodHlwZSwgY29uZmlnLCAuLi5hcmdzKTtcblx0XHQvLyBcdH07XG5cdFx0Ly8gcmV0dXJuIGFuc3dlcjtcblx0fVxufSk7XG5cblxuLy8gdGhpcyBhbHdheXMgaXMgaW5pdGlhbCB0eXBlIGNyZWF0aW9uIC4uLlxuLy8gc28gbm8gd2F5IHRvIGludm9rZSB0aGlzIG90aGVyd2lzZSB0aGFuIGRpcmVjdCB0eXBlIGNhbGxcblR5cGVQcm94eS5wcm90b3R5cGUuY29uc3RydWN0ID0gZnVuY3Rpb24gKF9fOiB1bmtub3duLCBhcmdzOiB1bmtub3duW10pIHtcblxuXHQvLyBuZXcudGFyZ2V0IGlkIGVxdWFsIHdpdGggdGFyZ2V0IGhlcmVcblxuXHRjb25zdCB7XG5cdFx0X190eXBlX186IHR5cGUsXG5cdFx0VXJhbnVzXG5cdH0gPSB0aGlzO1xuXG5cdC8vIHNvIHRoaXMgaXMgYSBkaXJlY3QgU3ViLVR5cGUgaW52b2NhdGlvblxuXHQvLyBoYXZpbmcgbm8gZXhpc3RlbnRJbnN0YW5jZSBjcmVhdGVkIGVhcmxpZXJcblx0Ly8gdGhlbiB3ZSBzaG91bGQgcmVseSBvbiB0aGF0IHNvbWVob3dcblx0Y29uc3QgdXJhbnVzID0gdHlwZS5pc1N1YlR5cGUgPyBnZXREZWZhdWx0UHJvdG90eXBlKCkgOiBVcmFudXM7XG5cblx0Ly8gXCJ0aGlzXCIgYXJndW1lbnQgbWF5IGJlIHBhc3NlZCBmb3IgdHJhY2tpbmcgd2h5IHNvbWV0aGluZyBoYXBwZW5lZFxuXHQvLyBidXQgdW5jb21tZW50IGl0IHRoZXJlIGluIGNyZWF0ZU1uZW1vc3luZSBpZiBuZWVkZWRcblx0Ly8gY29uc3QgbW5lbW9zeW5lUHJveHkgPSBjcmVhdGVNbmVtb3N5bmUodXJhbnVzLCB0aGlzKTtcblx0Y29uc3QgbW5lbW9zeW5lUHJveHkgPSBjcmVhdGVNbmVtb3N5bmUodXJhbnVzKTtcblx0Y29uc3QgaW5zdGFuY2UgPSBuZXcgSW5zdGFuY2VDcmVhdG9yKHR5cGUsIG1uZW1vc3luZVByb3h5LCBhcmdzKTtcblxuXHQvLyBjb25zdCBpbnN0YW5jZSA9IG5ldyBJbnN0YW5jZUNyZWF0b3IodHlwZSwgbnVsbCwgYXJncyk7XG5cdHJldHVybiBpbnN0YW5jZTtcblxufTtcbiJdfQ==
@@ -5,7 +5,7 @@ export type asyncStack = {
5
5
  };
6
6
  parent: () => asyncStack;
7
7
  };
8
- type parentSub = {
8
+ export type parentSub = {
9
9
  __type__: {
10
10
  subtypes: Map<string, parentSub>;
11
11
  };
@@ -21,7 +21,7 @@ declare const TypesUtils: {
21
21
  getTypeSplitPath: (path: string) => string[];
22
22
  getExistentAsyncStack: (existentInstance: asyncStack) => unknown;
23
23
  checkTypeName: (name: string) => void;
24
- findSubTypeFromParent: (instance: parentSub, subType: string) => parentSub | undefined;
24
+ findSubTypeFromParent: (instance: parentSub, subType: string) => parentSub | null;
25
25
  makeFakeModificatorType: (TypeName: string, fakeModificator?: () => void) => any;
26
26
  reflectPrimitiveWrappers: (_thisArg: unknown) => unknown;
27
27
  };
@@ -89,11 +89,16 @@ const checkTypeName = (name) => {
89
89
  const findSubTypeFromParent = (instance, subType) => {
90
90
  let subtype = null;
91
91
  const props = (0, Props_1._getProps)(instance);
92
- if (props.__type__.subtypes.has(subType)) {
93
- subtype = props.__type__.subtypes.get(subType);
94
- return subtype;
92
+ if (props) {
93
+ if (props.__type__.subtypes.has(subType)) {
94
+ const _subtype = props.__type__.subtypes.get(subType);
95
+ subtype = _subtype;
96
+ }
97
+ else {
98
+ subtype = findSubTypeFromParent(props.__parent__, subType);
99
+ }
95
100
  }
96
- return findSubTypeFromParent(props.__parent__, subType);
101
+ return subtype;
97
102
  };
98
103
  const isClass = (fn) => {
99
104
  const str = String(fn);
@@ -142,4 +147,4 @@ const TypesUtils = {
142
147
  reflectPrimitiveWrappers,
143
148
  };
144
149
  exports.default = TypesUtils;
145
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBpL3V0aWxzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVksQ0FBQzs7QUFFYiwrQ0FBNEM7QUFDNUMscURBQXVEO0FBQ3ZELHVDQUFvQztBQUVwQyxNQUFNLEVBQ0wsR0FBRyxFQUNILHFCQUFxQixFQUNyQixTQUFTLEVBQ1QsU0FBUyxHQUNULEdBQUcscUJBQVMsQ0FBQztBQUVkLE1BQU0sRUFDTCxxQkFBcUIsR0FDckIsR0FBRyxvQkFBVyxDQUFDO0FBRWhCLE1BQU0sRUFDTCxtQkFBbUIsRUFDbkIsR0FBRyxhQUFLLENBQUM7QUFFViwwQ0FBa0Q7QUFFbEQsTUFBTSxlQUFlLEdBQUcsVUFBMkQsa0JBQTJCO0lBYzdHLE9BQU8sa0JBQWtCLENBQUM7QUFNM0IsQ0FBQyxDQUFDO0FBRUYsa0dBQTJGO0FBRTNGLE1BQU0sVUFBVSxHQUFHLENBQUMsS0FBYyxFQUFFLEVBQUU7SUFDckMsSUFBSSxDQUFDLENBQUMsS0FBSyxZQUFZLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDaEMsTUFBTSxJQUFJLHFCQUFxQixDQUFDLGtDQUFrQyxDQUFDLENBQUM7SUFDckUsQ0FBQztBQUNGLENBQUMsQ0FBQztBQUVGLE1BQU0sY0FBYyxHQUFHLENBQUMsUUFBZ0IsRUFBRSxFQUFFO0lBQzNDLE1BQU0sTUFBTSxHQUFZLENBQUMsUUFBZ0IsRUFBRSxFQUFFO1FBRTVDLElBQUksT0FBTyxRQUFRLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDbEMsT0FBTyxLQUFLLENBQUM7UUFDZCxDQUFDO1FBR0QsSUFBSSxDQUFDLFFBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUM1QixPQUFPLEtBQUssQ0FBQztRQUNkLENBQUM7UUFHRCxJQUFJLE9BQU8sQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUMsV0FBVyxDQUFDLElBQUksS0FBSyxTQUFTLEVBQUUsQ0FBQztZ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T0FBTyxHQUFHLFFBQVEsQ0FBQztJQUV2QixJQUFJLFFBQVEsS0FBSyxJQUFJLEVBQUUsQ0FBQztRQUN2QixPQUFPLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM5QixHQUFHLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxXQUFXLEVBQUU7WUFDaEMsR0FBRztnQkFDRixPQUFPLEdBQUcsRUFBRTtvQkFDWCxPQUFPLFFBQVEsQ0FBQztnQkFDakIsQ0FBQyxDQUFDO1lBQ0gsQ0FBQztTQUNELENBQUMsQ0FBQztJQUNKLENBQUM7SUFFRCxJQUNDLFFBQVEsWUFBWSxNQUFNO1FBQzFCLFFBQVEsWUFBWSxPQUFPO1FBQzNCLFFBQVEsWUFBWSxNQUFNLEVBQ3pCLENBQUM7UUFDRixHQUFHLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxXQUFXLEVBQUU7WUFDaEMsR0FBRztnQkFDRixPQUFPLEdBQUcsRUFBRTtvQkFDWCxPQUFPLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDM0IsQ0FBQyxDQUFDO1lBQ0gsQ0FBQztTQUNELENBQUMsQ0FBQztJQUNKLENBQUM7SUFFRCxPQUFPLE9BQU8sQ0FBQztBQUNoQixDQUFDLENBQUM7QUFFRixNQUFNLFVBQVUsR0FBRztJQUNsQixPQUFPO0lBQ1AsZUFBZTtJQUNmLFVBQVU7SUFDVixjQUFjO0lBQ2QsZ0JBQWdCO0lBQ2hCLHFCQUFxQjtJQUNyQixhQUFhO0lBQ2IscUJBQXFCO0lBQ3JCLHVCQUF1QjtJQUN2Qix3QkFBd0I7Q0FDeEIsQ0FBQztBQUVGLGtCQUFlLFVBQVUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuaW1wb3J0IHsgY29uc3RhbnRzIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IEVycm9yc1R5cGVzIH0gZnJvbSAnLi4vLi4vZGVzY3JpcHRvcnMvZXJyb3JzJztcbmltcG9ydCB7IHV0aWxzIH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuXG5jb25zdCB7XG5cdG9kcCxcblx0U3ltYm9sQ29uc3RydWN0b3JOYW1lLFxuXHRNTkVNT05JQ0EsXG5cdE1ORU1PU1lORSxcbn0gPSBjb25zdGFudHM7XG5cbmNvbnN0IHtcblx0V1JPTkdfVFlQRV9ERUZJTklUSU9OLFxufSA9IEVycm9yc1R5cGVzO1xuXG5jb25zdCB7XG5cdGNvbGxlY3RDb25zdHJ1Y3RvcnNcbn0gPSB1dGlscztcblxuaW1wb3J0IHsgX2dldFByb3BzLCBQcm9wcyB9IGZyb20gJy4uL3R5cGVzL1Byb3BzJztcblxuY29uc3QgQ3JlYXRpb25IYW5kbGVyID0gZnVuY3Rpb24gKHRoaXM6IG9iamVjdCAmIHsgY29uc3RydWN0b3I6IE5ld2FibGVGdW5jdGlvbiB9LCBjb25zdHJ1Y3Rpb25BbnN3ZXI6IHVua25vd24pIHtcblx0Ly8gc3RhbmRhcmQgc2F5cyA6XG5cdC8vIGlmIGNvbnN0cnVjdG9yIHJldHVybnMgc29tZXRoaW5nXG5cdC8vIHRoZW4gdGhpcyBpcyBhIHRveVxuXHQvLyB3ZSBoYXZlIHRvIHBsYXkgd2l0aFxuXHQvLyByZXNwZWN0aXZlbHlcblx0Ly8gc28gd2Ugd2lsbCBub3QgZm9sbG93IHRoZSBydWxlXG5cdC8vIGlmIChjb25zdHJ1Y3Rpb25BbnN3ZXIgaW5zdGFuY2VvZiB0eXBlc1tUeXBlTmFtZV0pIHtcblx0Ly8gYW5kIGluc3RlYWQgZm9sbG93IHRoZSBsaW5lIGJlbG93XG5cblx0Ly8gYnV0IGlmIGl0IGlzIG5vdCBhbiBpbnN0YWNlIG9mIE9iamVjdCAuLi4gc28gLi4uXG5cdC8vIGlmICggY29uc3RydWN0aW9uQW5zd2VyIGluc3RhbmNlb2YgT2JqZWN0IClcblx0Ly8gaWYgKGNvbnN0cnVjdGlvbkFuc3dlciBpbnN0YW5jZW9mIHRoaXMuY29uc3RydWN0b3IpXG5cdC8vIHdpbGwgZmFsbCB0aGUgb24gcG9zdCBwcm9jZXNzaW5nXG5cdHJldHVybiBjb25zdHJ1Y3Rpb25BbnN3ZXI7XG5cblx0Ly8gVE9ETzogdGhpcyBjaGVjayB3YXMgbm90IGNvdmVyZWQgd2l0aCB0ZXN0c1xuXHQvLyBpZiAodGhpcyBpbnN0YW5jZW9mIFByb21pc2UpIHtcblx0Ly8gXHRyZXR1cm4gdGhpcztcblx0Ly8gfVxufTtcblxuaW1wb3J0IGNvbXBpbGVOZXdNb2RpZmljYXRvckZ1bmN0aW9uQm9keSBmcm9tICcuLi90eXBlcy9jb21waWxlTmV3TW9kaWZpY2F0b3JGdW5jdGlvbkJvZHknO1xuXG5jb25zdCBjaGVja1Byb3RvID0gKHByb3RvOiB1bmtub3duKSA9PiB7XG5cdGlmICghKHByb3RvIGluc3RhbmNlb2YgT2JqZWN0KSkge1xuXHRcdHRocm93IG5ldyBXUk9OR19UWVBFX0RFRklOSVRJT04oJ2V4cGVjdCBwcm90b3R5cGUgdG8gYmUgYW4gb2JqZWN0Jyk7XG5cdH1cbn07XG5cbmNvbnN0IGdldFR5cGVDaGVja2VyID0gKFR5cGVOYW1lOiBzdHJpbmcpID0+IHtcblx0Y29uc3Qgc2Vla2VyOiB1bmtub3duID0gKGluc3RhbmNlOiBvYmplY3QpID0+IHtcblxuXHRcdGlmICh0eXBlb2YgaW5zdGFuY2UgIT09ICdvYmplY3QnKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXG5cdFx0IFxuXHRcdGlmICghaW5zdGFuY2UhLmNvbnN0cnVjdG9yKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcblx0XHQvLyBAdHMtaWdub3JlXG5cdFx0aWYgKFJlZmxlY3QuZ2V0UHJvdG90eXBlT2YoaW5zdGFuY2UpLmNvbnN0cnVjdG9yLm5hbWUgPT09ICdQcm9taXNlJykge1xuXHRcdFx0Ly8gaWYgKCBpbnN0YW5jZSBpbnN0YW5jZW9mIFByb21pc2UgKSB7XG5cdFx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG5cdFx0XHQvLyBAdHMtaWdub3JlXG5cdFx0XHRyZXR1cm4gaW5zdGFuY2VbIFN5bWJvbENvbnN0cnVjdG9yTmFtZSBdID09PSBUeXBlTmFtZTtcblx0XHR9XG5cblx0XHRjb25zdCBjb25zdHJ1Y3RvcnM6IHtcblx0XHRcdHN0cmluZzogbmV3ICgpID0+IHVua25vd25cblx0XHR9ID0gY29sbGVjdENvbnN0cnVjdG9ycyhpbnN0YW5jZSk7XG5cdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuXHRcdC8vIEB0cy1pZ25vcmVcblx0XHRyZXR1cm4gY29uc3RydWN0b3JzWyBUeXBlTmFtZSBdIHx8IGZhbHNlO1xuXG5cdH07XG5cdHJldHVybiBzZWVrZXI7XG59O1xuXG5jb25zdCBnZXRUeXBlU3BsaXRQYXRoID0gKHBhdGg6IHN0cmluZykgPT4ge1xuXHRjb25zdCBzcGxpdCA9IHBhdGhcblx0XHQvLyBiZWF1dGlmdWxsIG5hbWVzXG5cdFx0LnJlcGxhY2UoL1xcbnxcXHR8IC9nLCAnJylcblx0XHQucmVwbGFjZSgvXFxbKFxcdyspXFxdL2csICcuJDEnKVxuXHRcdC5yZXBsYWNlKC9eXFwuLywgJycpXG5cdFx0LnNwbGl0KC9cXC58XFwvfDovKTtcblx0cmV0dXJuIHNwbGl0O1xufTtcblxuZXhwb3J0IHR5cGUgYXN5bmNTdGFjayA9IHtcblx0X19zdGFja19fPzogc3RyaW5nXG5cdF9fdHlwZV9fOiB7XG5cdFx0aXNTdWJUeXBlOiBib29sZWFuXG5cdH1cblx0cGFyZW50OiAoKSA9PiBhc3luY1N0YWNrXG59XG5cbmNvbnN0IGdldEV4aXN0ZW50QXN5bmNTdGFjayA9IChleGlzdGVudEluc3RhbmNlOiBhc3luY1N0YWNrKTogdW5rbm93biA9PiB7XG5cblx0Y29uc3Qgc3RhY2sgPSBbXTtcblx0bGV0IHByb3RvID0gZXhpc3RlbnRJbnN0YW5jZTtcblxuXHR3aGlsZSAocHJvdG8pIHtcblxuXHRcdGNvbnN0IHByb3BzID0gX2dldFByb3BzKHByb3RvKSBhcyBQcm9wcztcblxuXHRcdGlmICghcHJvcHMuX19zdGFja19fKSB7XG5cdFx0XHRicmVhaztcblx0XHR9XG5cblx0XHRjb25zdCBwc3RhY2sgPSBwcm9wc1xuXHRcdFx0Ll9fc3RhY2tfX1xuXHRcdFx0LnNwbGl0KCdcXG4nKVxuXHRcdFx0LnJlZHVjZSgoYXJyOiBzdHJpbmdbXSwgbGluZTogc3RyaW5nKSA9PiB7XG5cdFx0XHRcdGlmIChsaW5lLmxlbmd0aCkge1xuXHRcdFx0XHRcdGFyci5wdXNoKGxpbmUpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiBhcnI7XG5cdFx0XHR9LCBbXSk7XG5cblx0XHRwcm90byA9IHByb3RvLnBhcmVudCgpO1xuXG5cdFx0Y29uc3QgcHJvdG9Qcm9wcyA9IF9nZXRQcm9wcyhwcm90bykgYXMgUHJvcHM7XG5cblx0XHRpZiAocHJvdG8gJiYgcHJvdG9Qcm9wcyAmJiBwcm90b1Byb3BzLl9fdHlwZV9fKSB7XG5cblx0XHRcdGlmIChwcm90b1Byb3BzLl9fdHlwZV9fLmlzU3ViVHlwZSkge1xuXHRcdFx0XHRzdGFjay5wdXNoKC4uLnBzdGFjay5zbGljZSgwLCAxKSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRzdGFjay5wdXNoKC4uLnBzdGFjayk7XG5cdFx0XHR9XG5cblx0XHR9IGVsc2Uge1xuXHRcdFx0c3RhY2sucHVzaCguLi5wc3RhY2spO1xuXHRcdFx0YnJlYWs7XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIHN0YWNrO1xuXG59O1xuXG5jb25zdCBmb3JiaWRkZW5OYW1lcyA9IFsgTU5FTU9OSUNBLCBNTkVNT1NZTkUgXTtcblxuY29uc3QgY2hlY2tUeXBlTmFtZSA9IChuYW1lOiBzdHJpbmcpID0+IHtcblxuXHRpZiAoIW5hbWUubGVuZ3RoKSB7XG5cdFx0dGhyb3cgbmV3IFdST05HX1RZUEVfREVGSU5JVElPTignVHlwZU5hbWUgbXVzdCBub3QgYmUgZW1wdHknKTtcblx0fVxuXG5cdGlmIChuYW1lWyAwIF0gIT09IG5hbWVbIDAgXS50b1VwcGVyQ2FzZSgpKSB7XG5cdFx0dGhyb3cgbmV3IFdST05HX1RZUEVfREVGSU5JVElPTignVHlwZU5hbWUgc2hvdWxkIHN0YXJ0IHdpdGggVXBwZXJjYXNlIExldHRlcicpO1xuXHR9XG5cblx0aWYgKGZvcmJpZGRlbk5hbWVzLmluY2x1ZGVzKG5hbWUpKSB7XG5cdFx0dGhyb3cgbmV3IFdST05HX1RZUEVfREVGSU5JVElPTignVHlwZU5hbWUgb2YgcmVzZXJ2ZWQga2V5d29yZCcpO1xuXHR9XG5cbn07XG5cbnR5cGUgcGFyZW50U3ViID0ge1xuXHRfX3R5cGVfXzoge1xuXHRcdHN1YnR5cGVzOiBNYXA8c3RyaW5nLCBwYXJlbnRTdWI+XG5cdH1cblx0X19wYXJlbnRfXzogcGFyZW50U3ViXG59XG5cbmNvbnN0IGZpbmRTdWJUeXBlRnJvbVBhcmVudCA9IChpbnN0YW5jZTogcGFyZW50U3ViLCBzdWJUeXBlOiBzdHJpbmcpOiBwYXJlbnRTdWIgfCB1bmRlZmluZWQgPT4ge1xuXHRsZXQgc3VidHlwZSA9IG51bGw7XG5cblx0Ly8gaWYgKCFpbnN0YW5jZS5fX3N1YnR5cGVzX18pIHtcblxuXHQvLyBpZiAoICFpbnN0YW5jZS5fX3R5cGVfXyApIHtcblx0Ly8gXHQvLyBtb2NoYSArIGNoYWkgbWFrZXMgLmluc3BlY3QgNCBTaGFwZXIgY2xhc3Ncblx0Ly8gXHQvLyBvciAuc2hvd0RpZmYgaWYgc29tZXRoaW5nIHdyb25nIHdpdGggY29uc3RydWN0b3Jcblx0Ly8gXHQvLyBkZWJ1Z2dlcjtcblx0Ly8gXHRyZXR1cm4gbnVsbDtcblx0Ly8gfVxuXG5cdGNvbnN0IHByb3BzID0gX2dldFByb3BzKGluc3RhbmNlKSBhcyBQcm9wcztcblxuXHRpZiAocHJvcHMuX190eXBlX18uc3VidHlwZXMuaGFzKHN1YlR5cGUpKSB7XG5cdFx0c3VidHlwZSA9IHByb3BzLl9fdHlwZV9fLnN1YnR5cGVzLmdldChzdWJUeXBlKTtcblx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG5cdFx0Ly8gQHRzLWlnbm9yZVxuXHRcdHJldHVybiBzdWJ0eXBlO1xuXHR9XG5cdHJldHVybiBmaW5kU3ViVHlwZUZyb21QYXJlbnQocHJvcHMuX19wYXJlbnRfXywgc3ViVHlwZSk7XG59O1xuXG4vLyBjb25zdCBpc0NsYXNzID0gKCBmdW5jdGlvblBvaW50ZXI6IENhbGxhYmxlRnVuY3Rpb24gKSA9PiB7XG4vLyBcdGNvbnN0IHZhbHVlID0gRnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoIGZ1bmN0aW9uUG9pbnRlciApO1xuLy8gXHRyZXR1cm4gL15cXHMqY2xhc3NcXHMrLy50ZXN0KCB2YWx1ZS50cmltKCkgKTtcbi8vIH07XG5cbi8vIGFjY29yZGluZ2x5IHRvIHRoZSBnaXN0IGZyb20gaGVyZTpcbi8vIGh0dHBzOi8vZ2lzdC5naXRodWIuY29tL3dlbnRvdXQvZWEzYWZlOWM4MjJhNmI2ZWYzMmY5ZTRmM2U5OGIxYmFcbmNvbnN0IGlzQ2xhc3MgPSAoZm46IENhbGxhYmxlRnVuY3Rpb24pID0+IHtcblx0XG5cdGNvbnN0IHN0ciA9IFN0cmluZyhmbik7XG5cdHJldHVybiBzdHIuaW5kZXhPZignY2xhc3MgJykgPT09IDA7XG5cblx0LypcblxuXHQvLyBub3QgbmVjZXNzYXJ5IHRvIGNoZWNrIGZuIGZvciB0eXBlb2Zcblx0Ly8gYmVjYXVzZSBvZiBvdGhlciBjaGVja3MgbWFkZSBiZWZvcmVcblx0Ly8gaWYgKHR5cGVvZiBmbiAhPT0gJ2Z1bmN0aW9uJykge1xuXHQvLyBcdHJldHVybiBmYWxzZTtcblx0Ly8gfVxuXG5cdC8vIHNlZW1pbmdseVxuXHQvLyBjbGFzcyBwcm90b3R5cGUgaXMgYWx3YXlzIG9iamVjdFxuXHRpZiAoIShmbi5wcm90b3R5cGUgaW5zdGFuY2VvZiBPYmplY3QpKSB7XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cdC8vIGJ1dCBvbmx5IGlmIG5vdCBhdWdtZW50ZWRcblxuXHQvLyBjbGFzcyBwcm90b3R5cGUuY29uc3RydWN0b3IgY2Fubm90IGJlIHJlLWRlZmluZWQgKHVzdWFsbHkpXG5cdC8vIGJ1dCBmb3IgZnVuY3Rpb25zIHVzZXIgbWF5IHJlLWFzc2lnbiBpdCBlYXNpbHlcblx0Ly8ganVzdCBhc3NpZ25pbmcgdGhlIHdheSAucHJvdG90eXBlID0ge31cblx0Ly8gYW5kIHRoZXkgOTkuOSUgZG8gdGhpcywgY2F1c2Ugbm9ib2R5IGNhcmVzXG5cdC8vIGJ1dCB3ZSBhcmUgY2hlY2tpbmcgaWYgdGhpcyBpcyBjbGFzcywgc28gaXQgd29ya3MgLi4uXG5cdGlmIChmbi5wcm90b3R5cGUuY29uc3RydWN0b3IgIT09IGZuKSB7XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0Ly8gYW5kIHRoZSBtb3N0IHVua25vd24gdGhpbmcgaXMgdGhhdCxcblx0Ly8gY2F1c2UgZm9yIGZ1bmN0aW9ucyBpdCBpdCB3cml0ZWFibGUgKSkpXG5cdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tbm9uLW51bGwtYXNzZXJ0aW9uXG5cdHJldHVybiBSZWZsZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihmbiwgJ3Byb3RvdHlwZScpIS53cml0YWJsZSA9PT0gZmFsc2U7XG5cblx0Ki9cbn07XG5cbmNvbnN0IG1ha2VGYWtlTW9kaWZpY2F0b3JUeXBlID0gKFxuXHRUeXBlTmFtZTogc3RyaW5nLFxuXHRmYWtlTW9kaWZpY2F0b3IgPSBmdW5jdGlvbiAoKSB7IH1cbikgPT4ge1xuXG5cdGNvbnN0IG1vZGlmaWNhdG9yQm9keSA9IGNvbXBpbGVOZXdNb2RpZmljYXRvckZ1bmN0aW9uQm9keShUeXBlTmFtZSk7XG5cblx0Y29uc3QgbW9kaWZpY2F0b3JUeXBlID0gbW9kaWZpY2F0b3JCb2R5KFxuXHRcdGZha2VNb2RpZmljYXRvcixcblx0XHRDcmVhdGlvbkhhbmRsZXIsXG5cdFx0U3ltYm9sQ29uc3RydWN0b3JOYW1lXG5cdCk7XG5cblx0cmV0dXJuIG1vZGlmaWNhdG9yVHlwZSgpO1xuXG59O1xuXG5cbi8vIFRPRE86IC52YWx1ZU9mKCksIC50b1N0cmluZygpID8/P1xuY29uc3QgcmVmbGVjdFByaW1pdGl2ZVdyYXBwZXJzID0gKF90aGlzQXJnOiB1bmtub3duKSA9PiB7XG5cdGxldCB0aGlzQXJnID0gX3RoaXNBcmc7XG5cblx0aWYgKF90aGlzQXJnID09PSBudWxsKSB7XG5cdFx0dGhpc0FyZyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5cdFx0b2RwKHRoaXNBcmcsIFN5bWJvbC50b1ByaW1pdGl2ZSwge1xuXHRcdFx0Z2V0ICgpIHtcblx0XHRcdFx0cmV0dXJuICgpID0+IHtcblx0XHRcdFx0XHRyZXR1cm4gX3RoaXNBcmc7XG5cdFx0XHRcdH07XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cblxuXHRpZiAoXG5cdFx0X3RoaXNBcmcgaW5zdGFuY2VvZiBOdW1iZXIgfHxcblx0XHRfdGhpc0FyZyBpbnN0YW5jZW9mIEJvb2xlYW4gfHxcblx0XHRfdGhpc0FyZyBpbnN0YW5jZW9mIFN0cmluZ1xuXHQpIHtcblx0XHRvZHAodGhpc0FyZywgU3ltYm9sLnRvUHJpbWl0aXZlLCB7XG5cdFx0XHRnZXQgKCkge1xuXHRcdFx0XHRyZXR1cm4gKCkgPT4ge1xuXHRcdFx0XHRcdHJldHVybiBfdGhpc0FyZy52YWx1ZU9mKCk7XG5cdFx0XHRcdH07XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cblxuXHRyZXR1cm4gdGhpc0FyZztcbn07XG5cbmNvbnN0IFR5cGVzVXRpbHMgPSB7XG5cdGlzQ2xhc3MsXG5cdENyZWF0aW9uSGFuZGxlcixcblx0Y2hlY2tQcm90byxcblx0Z2V0VHlwZUNoZWNrZXIsXG5cdGdldFR5cGVTcGxpdFBhdGgsXG5cdGdldEV4aXN0ZW50QXN5bmNTdGFjayxcblx0Y2hlY2tUeXBlTmFtZSxcblx0ZmluZFN1YlR5cGVGcm9tUGFyZW50LFxuXHRtYWtlRmFrZU1vZGlmaWNhdG9yVHlwZSxcblx0cmVmbGVjdFByaW1pdGl2ZVdyYXBwZXJzLFxufTtcblxuZXhwb3J0IGRlZmF1bHQgVHlwZXNVdGlscztcbiJdfQ==
150
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBpL3V0aWxzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVksQ0FBQzs7QUFFYiwrQ0FBNEM7QUFDNUMscURBQXVEO0FBQ3ZELHVDQUFvQztBQUVwQyxNQUFNLEVBQ0wsR0FBRyxFQUNILHFCQUFxQixFQUNyQixTQUFTLEVBQ1QsU0FBUyxHQUNULEdBQUcscUJBQVMsQ0FBQztBQUVkLE1BQU0sRUFDTCxxQkFBcUIsR0FDckIsR0FBRyxvQkFBVyxDQUFDO0FBRWhCLE1BQU0sRUFDTCxtQkFBbUIsRUFDbkIsR0FBRyxhQUFLLENBQUM7QUFFViwwQ0FBa0Q7QUFFbEQsTUFBTSxlQUFlLEdBQUcsVUFBMkQsa0JBQTJCO0lBYzdHLE9BQU8sa0JBQWtCLENBQUM7QUFNM0IsQ0FBQyxDQUFDO0FBRUYsa0dBQTJGO0FBRTNGLE1BQU0sVUFBVSxHQUFHLENBQUMsS0FBYyxFQUFFLEVBQUU7SUFDckMsSUFBSSxDQUFDLENBQUMsS0FBSyxZQUFZLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDaEMsTUFBTSxJQUFJLHFCQUFxQixDQUFDLGtDQUFrQyxDQUFDLENBQUM7SUFDckUsQ0FBQztBQUNGLENBQUMsQ0FBQztBQUVGLE1BQU0sY0FBYyxHQUFHLENBQUMsUUFBZ0IsRUFBRSxFQUFFO0lBQzNDLE1BQU0sTUFBTSxHQUFZLENBQUMsUUFBZ0IsRUFBRSxFQUFFO1FBRTVDLElBQUksT0FBTyxRQUFRLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDbEMsT0FBTyxLQUFLLENBQUM7UUFDZCxDQUFDO1FBR0QsSUFBSSxDQUFDLFFBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUM1QixPQUFPLEtBQUssQ0FBQztRQUNkLENBQUM7UUFHRCxJQUFJLE9BQU8sQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUMsV0FBVyxDQUFDLElBQUksS0FBSyxTQUFTLEVBQUUsQ0FBQztZ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LE9BQU8sZUFBZSxFQUFFLENBQUM7QUFFMUIsQ0FBQyxDQUFDO0FBSUYsTUFBTSx3QkFBd0IsR0FBRyxDQUFDLFFBQWlCLEVBQUUsRUFBRTtJQUN0RCxJQUFJLE9BQU8sR0FBRyxRQUFRLENBQUM7SUFFdkIsSUFBSSxRQUFRLEtBQUssSUFBSSxFQUFFLENBQUM7UUFDdkIsT0FBTyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDOUIsR0FBRyxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsV0FBVyxFQUFFO1lBQ2hDLEdBQUc7Z0JBQ0YsT0FBTyxHQUFHLEVBQUU7b0JBQ1gsT0FBTyxRQUFRLENBQUM7Z0JBQ2pCLENBQUMsQ0FBQztZQUNILENBQUM7U0FDRCxDQUFDLENBQUM7SUFDSixDQUFDO0lBRUQsSUFDQyxRQUFRLFlBQVksTUFBTTtRQUMxQixRQUFRLFlBQVksT0FBTztRQUMzQixRQUFRLFlBQVksTUFBTSxFQUN6QixDQUFDO1FBQ0YsR0FBRyxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsV0FBVyxFQUFFO1lBQ2hDLEdBQUc7Z0JBQ0YsT0FBTyxHQUFHLEVBQUU7b0JBQ1gsT0FBTyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQzNCLENBQUMsQ0FBQztZQUNILENBQUM7U0FDRCxDQUFDLENBQUM7SUFDSixDQUFDO0lBRUQsT0FBTyxPQUFPLENBQUM7QUFDaEIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxVQUFVLEdBQUc7SUFDbEIsT0FBTztJQUNQLGVBQWU7SUFDZixVQUFVO0lBQ1YsY0FBYztJQUNkLGdCQUFnQjtJQUNoQixxQkFBcUI7SUFDckIsYUFBYTtJQUNiLHFCQUFxQjtJQUNyQix1QkFBdUI7SUFDdkIsd0JBQXdCO0NBQ3hCLENBQUM7QUFFRixrQkFBZSxVQUFVLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbmltcG9ydCB7IGNvbnN0YW50cyB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBFcnJvcnNUeXBlcyB9IGZyb20gJy4uLy4uL2Rlc2NyaXB0b3JzL2Vycm9ycyc7XG5pbXBvcnQgeyB1dGlscyB9IGZyb20gJy4uLy4uL3V0aWxzJztcblxuY29uc3Qge1xuXHRvZHAsXG5cdFN5bWJvbENvbnN0cnVjdG9yTmFtZSxcblx0TU5FTU9OSUNBLFxuXHRNTkVNT1NZTkUsXG59ID0gY29uc3RhbnRzO1xuXG5jb25zdCB7XG5cdFdST05HX1RZUEVfREVGSU5JVElPTixcbn0gPSBFcnJvcnNUeXBlcztcblxuY29uc3Qge1xuXHRjb2xsZWN0Q29uc3RydWN0b3JzXG59ID0gdXRpbHM7XG5cbmltcG9ydCB7IF9nZXRQcm9wcywgUHJvcHMgfSBmcm9tICcuLi90eXBlcy9Qcm9wcyc7XG5cbmNvbnN0IENyZWF0aW9uSGFuZGxlciA9IGZ1bmN0aW9uICh0aGlzOiBvYmplY3QgJiB7IGNvbnN0cnVjdG9yOiBOZXdhYmxlRnVuY3Rpb24gfSwgY29uc3RydWN0aW9uQW5zd2VyOiB1bmtub3duKSB7XG5cdC8vIHN0YW5kYXJkIHNheXMgOlxuXHQvLyBpZiBjb25zdHJ1Y3RvciByZXR1cm5zIHNvbWV0aGluZ1xuXHQvLyB0aGVuIHRoaXMgaXMgYSB0b3lcblx0Ly8gd2UgaGF2ZSB0byBwbGF5IHdpdGhcblx0Ly8gcmVzcGVjdGl2ZWx5XG5cdC8vIHNvIHdlIHdpbGwgbm90IGZvbGxvdyB0aGUgcnVsZVxuXHQvLyBpZiAoY29uc3RydWN0aW9uQW5zd2VyIGluc3RhbmNlb2YgdHlwZXNbVHlwZU5hbWVdKSB7XG5cdC8vIGFuZCBpbnN0ZWFkIGZvbGxvdyB0aGUgbGluZSBiZWxvd1xuXG5cdC8vIGJ1dCBpZiBpdCBpcyBub3QgYW4gaW5zdGFjZSBvZiBPYmplY3QgLi4uIHNvIC4uLlxuXHQvLyBpZiAoIGNvbnN0cnVjdGlvbkFuc3dlciBpbnN0YW5jZW9mIE9iamVjdCApXG5cdC8vIGlmIChjb25zdHJ1Y3Rpb25BbnN3ZXIgaW5zdGFuY2VvZiB0aGlzLmNvbnN0cnVjdG9yKVxuXHQvLyB3aWxsIGZhbGwgdGhlIG9uIHBvc3QgcHJvY2Vzc2luZ1xuXHRyZXR1cm4gY29uc3RydWN0aW9uQW5zd2VyO1xuXG5cdC8vIFRPRE86IHRoaXMgY2hlY2sgd2FzIG5vdCBjb3ZlcmVkIHdpdGggdGVzdHNcblx0Ly8gaWYgKHRoaXMgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG5cdC8vIFx0cmV0dXJuIHRoaXM7XG5cdC8vIH1cbn07XG5cbmltcG9ydCBjb21waWxlTmV3TW9kaWZpY2F0b3JGdW5jdGlvbkJvZHkgZnJvbSAnLi4vdHlwZXMvY29tcGlsZU5ld01vZGlmaWNhdG9yRnVuY3Rpb25Cb2R5JztcblxuY29uc3QgY2hlY2tQcm90byA9IChwcm90bzogdW5rbm93bikgPT4ge1xuXHRpZiAoIShwcm90byBpbnN0YW5jZW9mIE9iamVjdCkpIHtcblx0XHR0aHJvdyBuZXcgV1JPTkdfVFlQRV9ERUZJTklUSU9OKCdleHBlY3QgcHJvdG90eXBlIHRvIGJlIGFuIG9iamVjdCcpO1xuXHR9XG59O1xuXG5jb25zdCBnZXRUeXBlQ2hlY2tlciA9IChUeXBlTmFtZTogc3RyaW5nKSA9PiB7XG5cdGNvbnN0IHNlZWtlcjogdW5rbm93biA9IChpbnN0YW5jZTogb2JqZWN0KSA9PiB7XG5cblx0XHRpZiAodHlwZW9mIGluc3RhbmNlICE9PSAnb2JqZWN0Jykge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblxuXHRcdCBcblx0XHRpZiAoIWluc3RhbmNlIS5jb25zdHJ1Y3Rvcikge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG5cdFx0Ly8gQHRzLWlnbm9yZVxuXHRcdGlmIChSZWZsZWN0LmdldFByb3RvdHlwZU9mKGluc3RhbmNlKS5jb25zdHJ1Y3Rvci5uYW1lID09PSAnUHJvbWlzZScpIHtcblx0XHRcdC8vIGlmICggaW5zdGFuY2UgaW5zdGFuY2VvZiBQcm9taXNlICkge1xuXHRcdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuXHRcdFx0Ly8gQHRzLWlnbm9yZVxuXHRcdFx0cmV0dXJuIGluc3RhbmNlWyBTeW1ib2xDb25zdHJ1Y3Rvck5hbWUgXSA9PT0gVHlwZU5hbWU7XG5cdFx0fVxuXG5cdFx0Y29uc3QgY29uc3RydWN0b3JzOiB7XG5cdFx0XHRzdHJpbmc6IG5ldyAoKSA9PiB1bmtub3duXG5cdFx0fSA9IGNvbGxlY3RDb25zdHJ1Y3RvcnMoaW5zdGFuY2UpO1xuXHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcblx0XHQvLyBAdHMtaWdub3JlXG5cdFx0cmV0dXJuIGNvbnN0cnVjdG9yc1sgVHlwZU5hbWUgXSB8fCBmYWxzZTtcblxuXHR9O1xuXHRyZXR1cm4gc2Vla2VyO1xufTtcblxuY29uc3QgZ2V0VHlwZVNwbGl0UGF0aCA9IChwYXRoOiBzdHJpbmcpID0+IHtcblx0Y29uc3Qgc3BsaXQgPSBwYXRoXG5cdFx0Ly8gYmVhdXRpZnVsbCBuYW1lc1xuXHRcdC5yZXBsYWNlKC9cXG58XFx0fCAvZywgJycpXG5cdFx0LnJlcGxhY2UoL1xcWyhcXHcrKVxcXS9nLCAnLiQxJylcblx0XHQucmVwbGFjZSgvXlxcLi8sICcnKVxuXHRcdC5zcGxpdCgvXFwufFxcL3w6Lyk7XG5cdHJldHVybiBzcGxpdDtcbn07XG5cbmV4cG9ydCB0eXBlIGFzeW5jU3RhY2sgPSB7XG5cdF9fc3RhY2tfXz86IHN0cmluZ1xuXHRfX3R5cGVfXzoge1xuXHRcdGlzU3ViVHlwZTogYm9vbGVhblxuXHR9XG5cdHBhcmVudDogKCkgPT4gYXN5bmNTdGFja1xufVxuXG5jb25zdCBnZXRFeGlzdGVudEFzeW5jU3RhY2sgPSAoZXhpc3RlbnRJbnN0YW5jZTogYXN5bmNTdGFjayk6IHVua25vd24gPT4ge1xuXG5cdGNvbnN0IHN0YWNrID0gW107XG5cdGxldCBwcm90byA9IGV4aXN0ZW50SW5zdGFuY2U7XG5cblx0d2hpbGUgKHByb3RvKSB7XG5cblx0XHRjb25zdCBwcm9wcyA9IF9nZXRQcm9wcyhwcm90bykgYXMgUHJvcHM7XG5cblx0XHRpZiAoIXByb3BzLl9fc3RhY2tfXykge1xuXHRcdFx0YnJlYWs7XG5cdFx0fVxuXG5cdFx0Y29uc3QgcHN0YWNrID0gcHJvcHNcblx0XHRcdC5fX3N0YWNrX19cblx0XHRcdC5zcGxpdCgnXFxuJylcblx0XHRcdC5yZWR1Y2UoKGFycjogc3RyaW5nW10sIGxpbmU6IHN0cmluZykgPT4ge1xuXHRcdFx0XHRpZiAobGluZS5sZW5ndGgpIHtcblx0XHRcdFx0XHRhcnIucHVzaChsaW5lKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gYXJyO1xuXHRcdFx0fSwgW10pO1xuXG5cdFx0cHJvdG8gPSBwcm90by5wYXJlbnQoKTtcblxuXHRcdGNvbnN0IHByb3RvUHJvcHMgPSBfZ2V0UHJvcHMocHJvdG8pIGFzIFByb3BzO1xuXG5cdFx0aWYgKHByb3RvICYmIHByb3RvUHJvcHMgJiYgcHJvdG9Qcm9wcy5fX3R5cGVfXykge1xuXG5cdFx0XHRpZiAocHJvdG9Qcm9wcy5fX3R5cGVfXy5pc1N1YlR5cGUpIHtcblx0XHRcdFx0c3RhY2sucHVzaCguLi5wc3RhY2suc2xpY2UoMCwgMSkpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0c3RhY2sucHVzaCguLi5wc3RhY2spO1xuXHRcdFx0fVxuXG5cdFx0fSBlbHNlIHtcblx0XHRcdHN0YWNrLnB1c2goLi4ucHN0YWNrKTtcblx0XHRcdGJyZWFrO1xuXHRcdH1cblx0fVxuXG5cdHJldHVybiBzdGFjaztcblxufTtcblxuY29uc3QgZm9yYmlkZGVuTmFtZXMgPSBbIE1ORU1PTklDQSwgTU5FTU9TWU5FIF07XG5cbmNvbnN0IGNoZWNrVHlwZU5hbWUgPSAobmFtZTogc3RyaW5nKSA9PiB7XG5cblx0aWYgKCFuYW1lLmxlbmd0aCkge1xuXHRcdHRocm93IG5ldyBXUk9OR19UWVBFX0RFRklOSVRJT04oJ1R5cGVOYW1lIG11c3Qgbm90IGJlIGVtcHR5Jyk7XG5cdH1cblxuXHRpZiAobmFtZVsgMCBdICE9PSBuYW1lWyAwIF0udG9VcHBlckNhc2UoKSkge1xuXHRcdHRocm93IG5ldyBXUk9OR19UWVBFX0RFRklOSVRJT04oJ1R5cGVOYW1lIHNob3VsZCBzdGFydCB3aXRoIFVwcGVyY2FzZSBMZXR0ZXInKTtcblx0fVxuXG5cdGlmIChmb3JiaWRkZW5OYW1lcy5pbmNsdWRlcyhuYW1lKSkge1xuXHRcdHRocm93IG5ldyBXUk9OR19UWVBFX0RFRklOSVRJT04oJ1R5cGVOYW1lIG9mIHJlc2VydmVkIGtleXdvcmQnKTtcblx0fVxuXG59O1xuXG5leHBvcnQgdHlwZSBwYXJlbnRTdWIgPSB7XG5cdF9fdHlwZV9fOiB7XG5cdFx0c3VidHlwZXM6IE1hcDxzdHJpbmcsIHBhcmVudFN1Yj5cblx0fVxuXHRfX3BhcmVudF9fOiBwYXJlbnRTdWJcbn1cblxuY29uc3QgZmluZFN1YlR5cGVGcm9tUGFyZW50ID0gKGluc3RhbmNlOiBwYXJlbnRTdWIsIHN1YlR5cGU6IHN0cmluZyk6IHBhcmVudFN1YiB8IG51bGwgPT4ge1xuXHRsZXQgc3VidHlwZSA9IG51bGw7XG5cblx0Y29uc3QgcHJvcHMgPSBfZ2V0UHJvcHMoaW5zdGFuY2UpIGFzIFByb3BzO1xuXG5cdGlmIChwcm9wcykge1xuXHRcdGlmKHByb3BzLl9fdHlwZV9fLnN1YnR5cGVzLmhhcyhzdWJUeXBlKSkge1xuXHRcdFx0Y29uc3QgX3N1YnR5cGUgPSBwcm9wcy5fX3R5cGVfXy5zdWJ0eXBlcy5nZXQoc3ViVHlwZSk7XG5cdFx0XHRzdWJ0eXBlID0gX3N1YnR5cGU7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHN1YnR5cGUgPSBmaW5kU3ViVHlwZUZyb21QYXJlbnQocHJvcHMuX19wYXJlbnRfXywgc3ViVHlwZSk7XG5cdFx0fVxuXHR9XG5cdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcblx0Ly8gQHRzLWlnbm9yZVxuXHRyZXR1cm4gc3VidHlwZTtcbn07XG5cbi8vIGNvbnN0IGlzQ2xhc3MgPSAoIGZ1bmN0aW9uUG9pbnRlcjogQ2FsbGFibGVGdW5jdGlvbiApID0+IHtcbi8vIFx0Y29uc3QgdmFsdWUgPSBGdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCggZnVuY3Rpb25Qb2ludGVyICk7XG4vLyBcdHJldHVybiAvXlxccypjbGFzc1xccysvLnRlc3QoIHZhbHVlLnRyaW0oKSApO1xuLy8gfTtcblxuLy8gYWNjb3JkaW5nbHkgdG8gdGhlIGdpc3QgZnJvbSBoZXJlOlxuLy8gaHR0cHM6Ly9naXN0LmdpdGh1Yi5jb20vd2VudG91dC9lYTNhZmU5YzgyMmE2YjZlZjMyZjllNGYzZTk4YjFiYVxuY29uc3QgaXNDbGFzcyA9IChmbjogQ2FsbGFibGVGdW5jdGlvbikgPT4ge1xuXHRcblx0Y29uc3Qgc3RyID0gU3RyaW5nKGZuKTtcblx0cmV0dXJuIHN0ci5pbmRleE9mKCdjbGFzcyAnKSA9PT0gMDtcblxuXHQvKlxuXG5cdC8vIG5vdCBuZWNlc3NhcnkgdG8gY2hlY2sgZm4gZm9yIHR5cGVvZlxuXHQvLyBiZWNhdXNlIG9mIG90aGVyIGNoZWNrcyBtYWRlIGJlZm9yZVxuXHQvLyBpZiAodHlwZW9mIGZuICE9PSAnZnVuY3Rpb24nKSB7XG5cdC8vIFx0cmV0dXJuIGZhbHNlO1xuXHQvLyB9XG5cblx0Ly8gc2VlbWluZ2x5XG5cdC8vIGNsYXNzIHByb3RvdHlwZSBpcyBhbHdheXMgb2JqZWN0XG5cdGlmICghKGZuLnByb3RvdHlwZSBpbnN0YW5jZW9mIE9iamVjdCkpIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblx0Ly8gYnV0IG9ubHkgaWYgbm90IGF1Z21lbnRlZFxuXG5cdC8vIGNsYXNzIHByb3RvdHlwZS5jb25zdHJ1Y3RvciBjYW5ub3QgYmUgcmUtZGVmaW5lZCAodXN1YWxseSlcblx0Ly8gYnV0IGZvciBmdW5jdGlvbnMgdXNlciBtYXkgcmUtYXNzaWduIGl0IGVhc2lseVxuXHQvLyBqdXN0IGFzc2lnbmluZyB0aGUgd2F5IC5wcm90b3R5cGUgPSB7fVxuXHQvLyBhbmQgdGhleSA5OS45JSBkbyB0aGlzLCBjYXVzZSBub2JvZHkgY2FyZXNcblx0Ly8gYnV0IHdlIGFyZSBjaGVja2luZyBpZiB0aGlzIGlzIGNsYXNzLCBzbyBpdCB3b3JrcyAuLi5cblx0aWYgKGZuLnByb3RvdHlwZS5jb25zdHJ1Y3RvciAhPT0gZm4pIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHQvLyBhbmQgdGhlIG1vc3QgdW5rbm93biB0aGluZyBpcyB0aGF0LFxuXHQvLyBjYXVzZSBmb3IgZnVuY3Rpb25zIGl0IGl0IHdyaXRlYWJsZSApKSlcblx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1ub24tbnVsbC1hc3NlcnRpb25cblx0cmV0dXJuIFJlZmxlY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGZuLCAncHJvdG90eXBlJykhLndyaXRhYmxlID09PSBmYWxzZTtcblxuXHQqL1xufTtcblxuY29uc3QgbWFrZUZha2VNb2RpZmljYXRvclR5cGUgPSAoXG5cdFR5cGVOYW1lOiBzdHJpbmcsXG5cdGZha2VNb2RpZmljYXRvciA9IGZ1bmN0aW9uICgpIHsgfVxuKSA9PiB7XG5cblx0Y29uc3QgbW9kaWZpY2F0b3JCb2R5ID0gY29tcGlsZU5ld01vZGlmaWNhdG9yRnVuY3Rpb25Cb2R5KFR5cGVOYW1lKTtcblxuXHRjb25zdCBtb2RpZmljYXRvclR5cGUgPSBtb2RpZmljYXRvckJvZHkoXG5cdFx0ZmFrZU1vZGlmaWNhdG9yLFxuXHRcdENyZWF0aW9uSGFuZGxlcixcblx0XHRTeW1ib2xDb25zdHJ1Y3Rvck5hbWVcblx0KTtcblxuXHRyZXR1cm4gbW9kaWZpY2F0b3JUeXBlKCk7XG5cbn07XG5cblxuLy8gVE9ETzogLnZhbHVlT2YoKSwgLnRvU3RyaW5nKCkgPz8/XG5jb25zdCByZWZsZWN0UHJpbWl0aXZlV3JhcHBlcnMgPSAoX3RoaXNBcmc6IHVua25vd24pID0+IHtcblx0bGV0IHRoaXNBcmcgPSBfdGhpc0FyZztcblxuXHRpZiAoX3RoaXNBcmcgPT09IG51bGwpIHtcblx0XHR0aGlzQXJnID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcblx0XHRvZHAodGhpc0FyZywgU3ltYm9sLnRvUHJpbWl0aXZlLCB7XG5cdFx0XHRnZXQgKCkge1xuXHRcdFx0XHRyZXR1cm4gKCkgPT4ge1xuXHRcdFx0XHRcdHJldHVybiBfdGhpc0FyZztcblx0XHRcdFx0fTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxuXG5cdGlmIChcblx0XHRfdGhpc0FyZyBpbnN0YW5jZW9mIE51bWJlciB8fFxuXHRcdF90aGlzQXJnIGluc3RhbmNlb2YgQm9vbGVhbiB8fFxuXHRcdF90aGlzQXJnIGluc3RhbmNlb2YgU3RyaW5nXG5cdCkge1xuXHRcdG9kcCh0aGlzQXJnLCBTeW1ib2wudG9QcmltaXRpdmUsIHtcblx0XHRcdGdldCAoKSB7XG5cdFx0XHRcdHJldHVybiAoKSA9PiB7XG5cdFx0XHRcdFx0cmV0dXJuIF90aGlzQXJnLnZhbHVlT2YoKTtcblx0XHRcdFx0fTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxuXG5cdHJldHVybiB0aGlzQXJnO1xufTtcblxuY29uc3QgVHlwZXNVdGlscyA9IHtcblx0aXNDbGFzcyxcblx0Q3JlYXRpb25IYW5kbGVyLFxuXHRjaGVja1Byb3RvLFxuXHRnZXRUeXBlQ2hlY2tlcixcblx0Z2V0VHlwZVNwbGl0UGF0aCxcblx0Z2V0RXhpc3RlbnRBc3luY1N0YWNrLFxuXHRjaGVja1R5cGVOYW1lLFxuXHRmaW5kU3ViVHlwZUZyb21QYXJlbnQsXG5cdG1ha2VGYWtlTW9kaWZpY2F0b3JUeXBlLFxuXHRyZWZsZWN0UHJpbWl0aXZlV3JhcHBlcnMsXG59O1xuXG5leHBvcnQgZGVmYXVsdCBUeXBlc1V0aWxzO1xuIl19
@@ -3,5 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.descriptors = void 0;
4
4
  const errors_1 = require("./errors");
5
5
  const types_1 = require("./types");
6
- exports.descriptors = Object.assign(Object.assign({}, types_1.types), { ErrorsTypes: errors_1.ErrorsTypes });
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZGVzY3JpcHRvcnMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWSxDQUFDOzs7QUFFYixxQ0FBdUM7QUFDdkMsbUNBRWlCO0FBR0osUUFBQSxXQUFXLG1DQUVwQixhQUFLLEtBRVIsV0FBVyxFQUFYLG9CQUFXLElBRVYiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbmltcG9ydCB7IEVycm9yc1R5cGVzIH0gZnJvbSAnLi9lcnJvcnMnO1xuaW1wb3J0IHtcblx0dHlwZXNcbn0gZnJvbSAnLi90eXBlcyc7XG5cblxuZXhwb3J0IGNvbnN0IGRlc2NyaXB0b3JzID0ge1xuXG5cdC4uLnR5cGVzLFxuXG5cdEVycm9yc1R5cGVzXG5cbn07XG4iXX0=
6
+ exports.descriptors = {
7
+ ...types_1.types,
8
+ ErrorsTypes: errors_1.ErrorsTypes
9
+ };
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZGVzY3JpcHRvcnMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWSxDQUFDOzs7QUFFYixxQ0FBdUM7QUFDdkMsbUNBRWlCO0FBR0osUUFBQSxXQUFXLEdBQUc7SUFFMUIsR0FBRyxhQUFLO0lBRVIsV0FBVyxFQUFYLG9CQUFXO0NBRVgsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuaW1wb3J0IHsgRXJyb3JzVHlwZXMgfSBmcm9tICcuL2Vycm9ycyc7XG5pbXBvcnQge1xuXHR0eXBlc1xufSBmcm9tICcuL3R5cGVzJztcblxuXG5leHBvcnQgY29uc3QgZGVzY3JpcHRvcnMgPSB7XG5cblx0Li4udHlwZXMsXG5cblx0RXJyb3JzVHlwZXNcblxufTtcbiJdfQ==
package/build/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import { TypeLookup, IDEF, hook, hooksTypes, constructorOptions, Proto, SN, IDefinitorInstance } from './types';
2
+ export declare const isClass: (fn: CallableFunction) => boolean, findSubTypeFromParent: (instance: import("./api/utils/index").parentSub, subType: string) => import("./api/utils/index").parentSub | null;
2
3
  export type { IDEF, ConstructorFunction } from './types';
3
4
  export { getProps, setProps } from './api/types/Props';
4
5
  export declare const defaultTypes: any;
@@ -7,11 +8,13 @@ export declare const lookup: TypeLookup;
7
8
  export declare const apply: <E extends object, T extends object, S extends Proto<E, T>>(entity: E, Constructor: IDEF<T>, args?: unknown[]) => { [key in keyof S]: S[key]; };
8
9
  export declare const call: <E extends object, T extends object, S extends Proto<E, T>>(entity: E, Constructor: IDEF<T>, ...args: unknown[]) => { [key in keyof S]: S[key]; };
9
10
  export declare const bind: <E extends object, T extends object, S extends Proto<E, T>>(entity: E, Constructor: IDEF<T>) => (...args: unknown[]) => { [key in keyof S]: S[key]; };
10
- export declare const decorate: (parentClass?: {
11
- new (): unknown;
12
- } | constructorOptions | undefined, config?: constructorOptions) => <T extends {
13
- new (): unknown;
14
- }>(cstr: T, s: ClassDecoratorContext<T>) => T;
11
+ type Constructor<T = unknown> = new (...args: unknown[]) => T;
12
+ type DecoratedClass<T extends Constructor<object>> = T & (<U extends Constructor<object>>(target: U) => DecoratedClass<U>) & {
13
+ define: IDefinitorInstance<InstanceType<T>, unknown>['define'];
14
+ registerHook: IDefinitorInstance<InstanceType<T>, unknown>['registerHook'];
15
+ lookup: TypeLookup;
16
+ };
17
+ export declare const decorate: <T extends Constructor<object> | constructorOptions | undefined = undefined>(target?: T, config?: constructorOptions) => <U extends Constructor<object>>(cstr: U) => DecoratedClass<U>;
15
18
  export declare const registerHook: <T extends object>(Constructor: IDEF<T>, hookType: hooksTypes, cb: hook) => void;
16
19
  export declare const mnemonica: {
17
20
  [index: string]: unknown;
package/build/index.js CHANGED
@@ -1,6 +1,8 @@
1
1
  'use strict';
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.defineStackCleaner = exports.utils = exports.errors = exports.defaultCollection = exports.createTypesCollection = exports.ErrorMessages = exports.TYPE_TITLE_PREFIX = exports.MNEMOSYNE = exports.MNEMONICA = exports.SymbolConfig = exports.SymbolDefaultTypesCollection = exports.SymbolConstructorName = exports.SymbolParentType = exports.mnemonica = exports.registerHook = exports.decorate = exports.bind = exports.call = exports.apply = exports.lookup = exports.define = exports.defaultTypes = exports.setProps = exports.getProps = void 0;
3
+ exports.defineStackCleaner = exports.utils = exports.errors = exports.defaultCollection = exports.createTypesCollection = exports.ErrorMessages = exports.TYPE_TITLE_PREFIX = exports.MNEMOSYNE = exports.MNEMONICA = exports.SymbolConfig = exports.SymbolDefaultTypesCollection = exports.SymbolConstructorName = exports.SymbolParentType = exports.mnemonica = exports.registerHook = exports.decorate = exports.bind = exports.call = exports.apply = exports.lookup = exports.define = exports.defaultTypes = exports.setProps = exports.getProps = exports.findSubTypeFromParent = exports.isClass = void 0;
4
+ const index_1 = require("./api/utils/index");
5
+ exports.isClass = index_1.default.isClass, exports.findSubTypeFromParent = index_1.default.findSubTypeFromParent;
4
6
  var Props_1 = require("./api/types/Props");
5
7
  Object.defineProperty(exports, "getProps", { enumerable: true, get: function () { return Props_1.getProps; } });
6
8
  Object.defineProperty(exports, "setProps", { enumerable: true, get: function () { return Props_1.setProps; } });
@@ -8,6 +10,7 @@ const constants_1 = require("./constants");
8
10
  const { odp } = constants_1.constants;
9
11
  const errorsApi = require("./api/errors");
10
12
  const descriptors_1 = require("./descriptors");
13
+ const { WRONG_MODIFICATION_PATTERN } = descriptors_1.descriptors.ErrorsTypes;
11
14
  const Mnemosyne_1 = require("./api/types/Mnemosyne");
12
15
  const { prepareSubtypeForConstruction } = Mnemosyne_1.default;
13
16
  exports.defaultTypes = descriptors_1.descriptors.defaultTypes;
@@ -26,6 +29,9 @@ exports.lookup = function (TypeNestedPath) {
26
29
  const $run = function (entity, Constructor, args) {
27
30
  const { TypeName } = Constructor;
28
31
  const Cstr = prepareSubtypeForConstruction(TypeName, entity);
32
+ if (Cstr === undefined) {
33
+ throw new WRONG_MODIFICATION_PATTERN(`[ ${TypeName} ] is not defined as a Type Constructor on used instance`);
34
+ }
29
35
  const result = new Cstr(...args);
30
36
  return result;
31
37
  };
@@ -43,16 +49,20 @@ const bind = function (entity, Constructor) {
43
49
  };
44
50
  };
45
51
  exports.bind = bind;
46
- const decorate = function (parentClass, config) {
47
- if (config === undefined && typeof parentClass === 'object' && !(parentClass instanceof Function)) {
48
- config = parentClass;
49
- parentClass = undefined;
50
- }
51
- const decorator = function (cstr, s) {
52
- if (parentClass === undefined) {
53
- return (0, exports.define)(s.name, cstr, config);
52
+ const decorate = function (target, config) {
53
+ const opts = (config === undefined && typeof target === 'object' && !(target instanceof Function))
54
+ ? target
55
+ : config;
56
+ const parentType = (target instanceof Function)
57
+ ? target
58
+ : undefined;
59
+ const decorator = function (cstr) {
60
+ const { name } = cstr;
61
+ if (parentType === undefined) {
62
+ return (0, exports.define)(name, cstr, opts);
54
63
  }
55
- return parentClass.define(s.name, cstr, config);
64
+ const parent = parentType;
65
+ return parent.define(name, cstr, opts);
56
66
  };
57
67
  return decorator;
58
68
  };
@@ -61,13 +71,18 @@ const registerHook = function (Constructor, hookType, cb) {
61
71
  Constructor.registerHook(hookType, cb);
62
72
  };
63
73
  exports.registerHook = registerHook;
64
- exports.mnemonica = Object.entries(Object.assign(Object.assign(Object.assign({ define: exports.define,
74
+ exports.mnemonica = Object.entries({
75
+ define: exports.define,
65
76
  lookup: exports.lookup,
66
77
  apply: exports.apply,
67
78
  call: exports.call,
68
79
  bind: exports.bind,
69
80
  decorate: exports.decorate,
70
- registerHook: exports.registerHook }, descriptors_1.descriptors), errorsApi), constants_1.constants)).reduce((acc, entry) => {
81
+ registerHook: exports.registerHook,
82
+ ...descriptors_1.descriptors,
83
+ ...errorsApi,
84
+ ...constants_1.constants,
85
+ }).reduce((acc, entry) => {
71
86
  const [name, code] = entry;
72
87
  odp(acc, name, {
73
88
  get() {
@@ -84,4 +99,4 @@ var utils_1 = require("./utils");
84
99
  Object.defineProperty(exports, "utils", { enumerable: true, get: function () { return utils_1.utils; } });
85
100
  var utils_2 = require("./utils");
86
101
  Object.defineProperty(exports, "defineStackCleaner", { enumerable: true, get: function () { return utils_2.defineStackCleaner; } });
87
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsWUFBWSxDQUFDOzs7QUFhYiwyQ0FBdUQ7QUFBOUMsaUdBQUEsUUFBUSxPQUFBO0FBQUUsaUdBQUEsUUFBUSxPQUFBO0FBRTNCLDJDQUF3QztBQUN4QyxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcscUJBQVMsQ0FBQztBQUUxQiwwQ0FBMEM7QUFDMUMsK0NBQTRDO0FBRTVDLHFEQUErQztBQUMvQyxNQUFNLEVBQUUsNkJBQTZCLEVBQUUsR0FBRyxtQkFBVSxDQUFDO0FBR3BELG9CQUFZLEdBQ1QseUJBQVcsY0FBQztBQUVoQixTQUFTLFNBQVMsQ0FBQyxPQUFvRDtJQUN0RSxPQUFPLE9BQU8sS0FBSyxpQkFBUyxJQUFJLE9BQU8sS0FBSyxPQUFPLENBQUM7QUFDckQsQ0FBQztBQUVNLE1BQU0sTUFBTSxHQUFHLFVBYXJCLFFBQWlCLEVBQ2pCLGdCQUEwQixFQUMxQixNQUEyQjtJQUUzQixNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLG9CQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxvQkFBWSxDQUFDO0lBQ3BFLE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDekQsQ0FBQyxDQUFDO0FBbkJXLFFBQUEsTUFBTSxVQW1CakI7QUFFVyxRQUFBLE1BQU0sR0FBRyxVQUFVLGNBQWM7SUFDN0MsTUFBTSxLQUFLLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxvQkFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksb0JBQVksQ0FBQztJQUNwRSxPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7QUFDckMsQ0FBZSxDQUFDO0FBR2hCLE1BQU0sSUFBSSxHQUFH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T0FBTyxHQUFHLENBQUM7QUFDWixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFJTix3QkFBZ0IsR0FVYixpQkFBUyxtQkFUWiw2QkFBcUIsR0FTbEIsaUJBQVMsd0JBUlosb0NBQTRCLEdBUXpCLGlCQUFTLCtCQVBaLG9CQUFZLEdBT1QsaUJBQVMsZUFOWixpQkFBUyxHQU1OLGlCQUFTLFlBTFosaUJBQVMsR0FLTixpQkFBUyxZQUpaLHlCQUFpQixHQUlkLGlCQUFTLG9CQUhaLHFCQUFhLEdBR1YsaUJBQVMsZ0JBRlosNkJBQXFCLEdBRWxCLGlCQUFTLHVCQUFDO0FBR0QsUUFBQSxpQkFBaUIsR0FBRyxvQkFBWSxDQUFDLFFBQVEsQ0FBQztBQUMxQyxRQUFBLE1BQU0sR0FBRyx5QkFBVyxDQUFDLFdBQVcsQ0FBQztBQUU5QyxpQ0FBZ0M7QUFBdkIsOEZBQUEsS0FBSyxPQUFBO0FBQ2QsaUNBQTZDO0FBQXBDLDJHQUFBLGtCQUFrQixPQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50LCBzcGFjZS1iZWZvcmUtZnVuY3Rpb24tcGFyZW4gKi9cbid1c2Ugc3RyaWN0JztcblxuaW1wb3J0IHtcblx0VHlwZUxvb2t1cCxcblx0SURFRixcblx0aG9vayxcblx0aG9va3NUeXBlcyxcblx0Y29uc3RydWN0b3JPcHRpb25zLFxuXHRQcm90byxcblx0U04sXG5cdElEZWZpbml0b3JJbnN0YW5jZVxufSBmcm9tICcuL3R5cGVzJztcbmV4cG9ydCB0eXBlIHsgSURFRiwgQ29uc3RydWN0b3JGdW5jdGlvbiB9IGZyb20gJy4vdHlwZXMnO1xuZXhwb3J0IHsgZ2V0UHJvcHMsIHNldFByb3BzIH0gZnJvbSAnLi9hcGkvdHlwZXMvUHJvcHMnO1xuXG5pbXBvcnQgeyBjb25zdGFudHMgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5jb25zdCB7IG9kcCB9ID0gY29uc3RhbnRzO1xuXG5pbXBvcnQgKiBhcyBlcnJvcnNBcGkgZnJvbSAnLi9hcGkvZXJyb3JzJztcbmltcG9ydCB7IGRlc2NyaXB0b3JzIH0gZnJvbSAnLi9kZXNjcmlwdG9ycyc7XG5cbmltcG9ydCBtbmVtb3N5bmVzIGZyb20gJy4vYXBpL3R5cGVzL01uZW1vc3luZSc7XG5jb25zdCB7IHByZXBhcmVTdWJ0eXBlRm9yQ29uc3RydWN0aW9uIH0gPSBtbmVtb3N5bmVzO1xuXG5leHBvcnQgY29uc3Qge1xuXHRkZWZhdWx0VHlwZXMsXG59ID0gZGVzY3JpcHRvcnM7XG5cbmZ1bmN0aW9uIGNoZWNrVGhpcyhwb2ludGVyOiB0eXBlb2YgbW5lbW9uaWNhIHwgdHlwZW9mIGV4cG9ydHMgfCB1bmtub3duKTogYm9vbGVhbiB7XG5cdHJldHVybiBwb2ludGVyID09PSBtbmVtb25pY2EgfHwgcG9pbnRlciA9PT0gZXhwb3J0cztcbn1cblxuZXhwb3J0IGNvbnN0IGRlZmluZSA9IGZ1bmN0aW9uIDxcblx0VCxcblx0Ly8gSyBleHRlbmRzIElERUY8VD4sXG5cdC8vIEggZXh0ZW5kcyBUaGlzVHlwZTxJREVGPFQ+Pixcblx0UCBleHRlbmRzIG9iamVjdCxcblx0TiBleHRlbmRzIFByb3RvPFAsIFQ+LFxuXHQvLyBzbyBTIGl0IGp1c3QgYmFzaWNhbGx5IGFsbG93cyBuZXN0ZWQgY29uc3RydWN0b3JzXG5cdC8vIGFuZCBnaXZlcyBleHRyYWN0ZWQgcHJvcHMgZnJvbSBjb25zdHJ1Y3RIYW5kbGVyICYgcHJvdG9cblx0Ly8gdGhlbiBpdCBnb2VzIHRvIG5ldygpIGtleXdvcmQgb2YgZGVmaW5lIG91dHB1dFxuXHRTIGV4dGVuZHMgU04gJiBOLFxuXHRSIGV4dGVuZHMgSURlZmluaXRvckluc3RhbmNlPE4sIFM+XG4+KFxuXHR0aGlzOiB1bmtub3duLFxuXHRUeXBlTmFtZT86IHN0cmluZyxcblx0Y29uc3RydWN0SGFuZGxlcj86IElERUY8VD4sXG5cdGNvbmZpZz86IGNvbnN0cnVjdG9yT3B0aW9ucyxcbik6IFIge1xuXHRjb25zdCB0eXBlcyA9IGNoZWNrVGhpcyh0aGlzKSA/IGRlZmF1bHRUeXBlcyA6IHRoaXMgfHwgZGVmYXVsdFR5cGVzO1xuXHRyZXR1cm4gdHlwZXMuZGVmaW5lKFR5cGVOYW1lLCBjb25zdHJ1Y3RIYW5kbGVyLCBjb25maWcpO1xufTtcblxuZXhwb3J0IGNvbnN0IGxvb2t1cCA9IGZ1bmN0aW9uIChUeXBlTmVzdGVkUGF0aCkge1xuXHRjb25zdCB0eXBlcyA9IGNoZWNrVGhpcyh0aGlzKSA/IGRlZmF1bHRUeXBlcyA6IHRoaXMgfHwgZGVmYXVsdFR5cGVzO1xuXHRyZXR1cm4gdHlwZXMubG9va3VwKFR5cGVOZXN0ZWRQYXRoKTtcbn0gYXMgVHlwZUxvb2t1cDtcblxuXG5jb25zdCAkcnVuID0gZnVuY3Rpb24gPEUgZXh0ZW5kcyBvYmplY3QsIFQgZXh0ZW5kcyBvYmplY3QsIFMgZXh0ZW5kcyBQcm90bzxFLCBUPj4oXG5cdGVudGl0eTogRSxcblx0Q29uc3RydWN0b3I6IElERUY8VD4sXG5cdGFyZ3M6IHVua25vd25bXVxuKToge1xuXHRcdFtrZXkgaW4ga2V5b2YgU106IFNba2V5XVxuXHR9IHtcblx0IFxuXHQvLyBkZWJ1Z2dlcjtcblx0Ly8gQHRzLWlnbm9yZVxuXHRjb25zdCB7IFR5cGVOYW1lIH0gPSBDb25zdHJ1Y3Rvcjtcblx0Y29uc3QgQ3N0ciA9IHByZXBhcmVTdWJ0eXBlRm9yQ29uc3RydWN0aW9uKFR5cGVOYW1lLCBlbnRpdHkpIGFzIHsgbmV3KCAuLi5hcnM6IHVua25vd25bXSk6IHVua25vd259O1xuXHQvLyBUT0RPOiBjaGVjayBsaW5lcyBiZWxvdyBhbmQgaWYgQ29uc3RydWN0b3IgaXMgbm90IG1uZW1vbml6ZWQgLi4uXG5cdC8vIGlmIChDc3RyID09PSB1bmRlZmluZWQpIHtcblx0Ly8gXHR0aHJvdyBuZXcgVHlwZUVycm9yKGBUeXBlICR7VHlwZU5hbWV9IGlzIG5vdCBkZWZpbmVkIGFzIGEgLmApO1xuXHQvLyB9XG5cdGNvbnN0IHJlc3VsdCA9IG5ldyBDc3RyKC4uLmFyZ3MpO1xuXHQvLyBAdHMtaWdub3JlXG5cdHJldHVybiByZXN1bHQ7XG59O1xuXG4vLyBUT0RPOiBhcHBseSBpbnN0YW5jZSAudG8gdHlwZSAud2l0aCBhcmd1bWVudHNcbmV4cG9ydCBjb25zdCBhcHBseSA9IGZ1bmN0aW9uIDxFIGV4dGVuZHMgb2JqZWN0LCBUIGV4dGVuZHMgb2JqZWN0LCBTIGV4dGVuZHMgUHJvdG88RSwgVD4+KFxuXHRlbnRpdHk6IEUsXG5cdENvbnN0cnVjdG9yOiBJREVGPFQ+LFxuXHRhcmdzOiB1bmtub3duW10gPSBbXVxuKToge1xuXHRcdFtrZXkgaW4ga2V5b2YgU106IFNba2V5XVxuXHR9IHtcblx0cmV0dXJuICRydW48RSwgVCwgUz4oZW50aXR5LCBDb25zdHJ1Y3RvciwgYXJncyk7XG59O1xuXG4vLyBUT0RPOiBjYWxsIHR5cGUgLmJ5IGluc3RhbmNlIC53aXRoIGFyZ3VtZW50c1xuZXhwb3J0IGNvbnN0IGNhbGwgPSBmdW5jdGlvbiA8RSBleHRlbmRzIG9iamVjdCwgVCBleHRlbmRzIG9iamVjdCwgUyBleHRlbmRzIFByb3RvPEUsIFQ+Pihcblx0ZW50aXR5OiBFLFxuXHRDb25zdHJ1Y3RvcjogSURFRjxUPixcblx0Li4uYXJnczogdW5rbm93bltdXG4pOiB7XG5cdFx0W2tleSBpbiBrZXlvZiBTXTogU1trZXldXG5cdH0ge1xuXHRyZXR1cm4gJHJ1bjxFLCBULCBTPihlbnRpdHksIENvbnN0cnVjdG9yLCBhcmdzKTtcbn07XG5cbi8vIFRPRE86IGJpbmQgdHlwZSAud2l0aCBpbnN0YW5jZSDihpIgKC4uLmFyZ3MpXG5leHBvcnQgY29uc3QgYmluZCA9IGZ1bmN0aW9uIDxFIGV4dGVuZHMgb2JqZWN0LCBUIGV4dGVuZHMgb2JqZWN0LCBTIGV4dGVuZHMgUHJvdG88RSwgVD4+KFxuXHRlbnRpdHk6IEUsXG5cdENvbnN0cnVjdG9yOiBJREVGPFQ+XG4pOiAoLi4uYXJnczogdW5rbm93bltdKSA9PiB7XG5cdFtrZXkgaW4ga2V5b2YgU106IFNba2V5XVxufSB7XG5cdHJldHVybiAoLi4uYXJncykgPT4ge1xuXHRcdHJldHVybiAkcnVuPEUsIFQsIFM+KGVudGl0eSwgQ29uc3RydWN0b3IsIGFyZ3MpO1xuXHR9O1xufTtcblxuZXhwb3J0IGNvbnN0IGRlY29yYXRlID0gZnVuY3Rpb24gKFxuXHRwYXJlbnRDbGFzcz86IHsgbmV3KCk6IHVua25vd24gfSB8IGNvbnN0cnVjdG9yT3B0aW9ucyB8IHVuZGVmaW5lZCxcblx0Y29uZmlnPzogY29uc3RydWN0b3JPcHRpb25zXG4pIHtcblx0aWYgKGNvbmZpZyA9PT0gdW5kZWZpbmVkICYmIHR5cGVvZiBwYXJlbnRDbGFzcyA9PT0gJ29iamVjdCcgJiYgIShwYXJlbnRDbGFzcyBpbnN0YW5jZW9mIEZ1bmN0aW9uKSkge1xuXHRcdGNvbmZpZyA9IHBhcmVudENsYXNzIGFzIGNvbnN0cnVjdG9yT3B0aW9ucztcblx0XHRwYXJlbnRDbGFzcyA9IHVuZGVmaW5lZDtcblx0fVxuXHRjb25zdCBkZWNvcmF0b3IgPSBmdW5jdGlvbiA8VCBleHRlbmRzIHsgbmV3KCk6IHVua25vd24gfT4oY3N0cjogVCwgczogQ2xhc3NEZWNvcmF0b3JDb250ZXh0PFQ+KTogVCB7XG5cdFx0aWYgKHBhcmVudENsYXNzID09PSB1bmRlZmluZWQpIHtcblx0XHRcdHJldHVybiBkZWZpbmUocy5uYW1lLCBjc3RyLCBjb25maWcpIGFzIHVua25vd24gYXMgVDtcblx0XHR9XG5cdFx0Ly8gQHRzLWlnbm9yZVxuXHRcdHJldHVybiBwYXJlbnRDbGFzcy5kZWZpbmUocy5uYW1lLCBjc3RyLCBjb25maWcpIGFzIHVua25vd24gYXMgVDtcblx0fTtcblx0cmV0dXJuIGRlY29yYXRvcjtcbn07XG5cbmV4cG9ydCBjb25zdCByZWdpc3Rlckhvb2sgPSBmdW5jdGlvbiA8VCBleHRlbmRzIG9iamVjdD4oQ29uc3RydWN0b3I6IElERUY8VD4sIGhvb2tUeXBlOiBob29rc1R5cGVzLCBjYjogaG9vayk6IHZvaWQge1xuXHQvLyBAdHMtaWdub3JlXG5cdENvbnN0cnVjdG9yLnJlZ2lzdGVySG9vayhob29rVHlwZSwgY2IpO1xufTtcblxuZXhwb3J0IGNvbnN0IG1uZW1vbmljYSA9IE9iamVjdC5lbnRyaWVzKHtcblxuXHRkZWZpbmUsXG5cdGxvb2t1cCxcblx0YXBwbHksXG5cdGNhbGwsXG5cdGJpbmQsXG5cdGRlY29yYXRlLFxuXHRyZWdpc3Rlckhvb2ssXG5cblx0Li4uZGVzY3JpcHRvcnMsXG5cblx0Li4uZXJyb3JzQXBpLFxuXHQuLi5jb25zdGFudHMsXG5cbn0pLnJlZHVjZSgoYWNjOiB7IFtpbmRleDogc3RyaW5nXTogdW5rbm93biB9LCBlbnRyeTogW3N0cmluZywgdW5rbm93bl0pID0+IHtcblx0Y29uc3QgWyBuYW1lLCBjb2RlIF0gPSBlbnRyeTtcblx0b2RwKGFjYywgbmFtZSwge1xuXHRcdGdldCgpIHtcblx0XHRcdHJldHVybiBjb2RlO1xuXHRcdH0sXG5cdFx0ZW51bWVyYWJsZSA6IHRydWVcblx0fSk7XG5cdHJldHVybiBhY2M7XG59LCB7fSk7XG5cbmV4cG9ydCBjb25zdCB7XG5cblx0U3ltYm9sUGFyZW50VHlwZSxcblx0U3ltYm9sQ29uc3RydWN0b3JOYW1lLFxuXHRTeW1ib2xEZWZhdWx0VHlwZXNDb2xsZWN0aW9uLFxuXHRTeW1ib2xDb25maWcsXG5cdE1ORU1PTklDQSxcblx0TU5FTU9TWU5FLFxuXHRUWVBFX1RJVExFX1BSRUZJWCxcblx0RXJyb3JNZXNzYWdlcyxcblx0Y3JlYXRlVHlwZXNDb2xsZWN0aW9uLFxuXG59ID0gbW5lbW9uaWNhO1xuXG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0Q29sbGVjdGlvbiA9IGRlZmF1bHRUeXBlcy5zdWJ0eXBlcztcbmV4cG9ydCBjb25zdCBlcnJvcnMgPSBkZXNjcmlwdG9ycy5FcnJvcnNUeXBlcztcblxuZXhwb3J0IHsgdXRpbHMgfSBmcm9tICcuL3V0aWxzJztcbmV4cG9ydCB7IGRlZmluZVN0YWNrQ2xlYW5lciB9IGZyb20gJy4vdXRpbHMnO1xuLyogZXNsaW50LWVuYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnQsIHNwYWNlLWJlZm9yZS1mdW5jdGlvbi1wYXJlbiAqL1xuIl19
102
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsWUFBWSxDQUFDOzs7QUFhYiw2Q0FBMkM7QUFFMUMsZUFBTyxHQUVKLGVBQVUsVUFEYiw2QkFBcUIsR0FDbEIsZUFBVSx1QkFBQztBQUdmLDJDQUF1RDtBQUE5QyxpR0FBQSxRQUFRLE9BQUE7QUFBRSxpR0FBQSxRQUFRLE9BQUE7QUFFM0IsMkNBQXdDO0FBQ3hDLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxxQkFBUyxDQUFDO0FBRTFCLDBDQUEwQztBQUMxQywrQ0FBNEM7QUFFNUMsTUFBTSxFQUFFLDBCQUEwQixFQUFFLEdBQUcseUJBQVcsQ0FBQyxXQUFXLENBQUM7QUFFL0QscURBQStDO0FBQy9DLE1BQU0sRUFBRSw2QkFBNkIsRUFBRSxHQUFHLG1CQUFVLENBQUM7QUFHcEQsb0JBQVksR0FDVCx5QkFBVyxjQUFDO0FBRWhCLFNBQVMsU0FBUyxDQUFDLE9BQW9EO0lBQ3RFLE9BQU8sT0FBTyxLQUFLLGlCQUFTLElBQUksT0FBTyxLQUFLLE9BQU8sQ0FBQztBQUNyRCxDQUFDO0FBRU0sTUFBTSxNQUFNLEdBQUcsVUFhckIsUUFBaUIsRUFDakIsZ0JBQTBCLEVBQzFCLE1BQTJCO0lBRTNCLE1BQU0sS0FBSyxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsb0JBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLG9CQUFZLENBQUM7SUFDcEUsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUN6RCxDQUFDLENBQUM7QUFuQlcsUUFBQSxNQUFNLFVBbUJqQjtBQUVXLFFBQUEsTUFBTSxHQUFHLFVBQVUsY0FBYztJQUM3QyxNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLG9CQUFZLENB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QUssRUFBTCxhQUFLO0lBQ0wsSUFBSSxFQUFKLFlBQUk7SUFDSixJQUFJLEVBQUosWUFBSTtJQUNKLFFBQVEsRUFBUixnQkFBUTtJQUNSLFlBQVksRUFBWixvQkFBWTtJQUVaLEdBQUcseUJBQVc7SUFFZCxHQUFHLFNBQVM7SUFDWixHQUFHLHFCQUFTO0NBRVosQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQWlDLEVBQUUsS0FBd0IsRUFBRSxFQUFFO0lBQ3pFLE1BQU0sQ0FBRSxJQUFJLEVBQUUsSUFBSSxDQUFFLEdBQUcsS0FBSyxDQUFDO0lBQzdCLEdBQUcsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFO1FBQ2QsR0FBRztZQUNGLE9BQU8sSUFBSSxDQUFDO1FBQ2IsQ0FBQztRQUNELFVBQVUsRUFBRyxJQUFJO0tBQ2pCLENBQUMsQ0FBQztJQUNILE9BQU8sR0FBRyxDQUFDO0FBQ1osQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBSU4sd0JBQWdCLEdBVWIsaUJBQVMsbUJBVFosNkJBQXFCLEdBU2xCLGlCQUFTLHdCQVJaLG9DQUE0QixHQVF6QixpQkFBUywrQkFQWixvQkFBWSxHQU9ULGlCQUFTLGVBTlosaUJBQVMsR0FNTixpQkFBUyxZQUxaLGlCQUFTLEdBS04saUJBQVMsWUFKWix5QkFBaUIsR0FJZCxpQkFBUyxvQkFIWixxQkFBYSxHQUdWLGlCQUFTLGdCQUZaLDZCQUFxQixHQUVsQixpQkFBUyx1QkFBQztBQUdELFFBQUEsaUJBQWlCLEdBQUcsb0JBQVksQ0FBQyxRQUFRLENBQUM7QUFDMUMsUUFBQSxNQUFNLEdBQUcseUJBQVcsQ0FBQyxXQUFXLENBQUM7QUFFOUMsaUNBQWdDO0FBQXZCLDhGQUFBLEtBQUssT0FBQTtBQUNkLGlDQUE2QztBQUFwQywyR0FBQSxrQkFBa0IsT0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudCwgc3BhY2UtYmVmb3JlLWZ1bmN0aW9uLXBhcmVuICovXG4ndXNlIHN0cmljdCc7XG5cbmltcG9ydCB7XG5cdFR5cGVMb29rdXAsXG5cdElERUYsXG5cdGhvb2ssXG5cdGhvb2tzVHlwZXMsXG5cdGNvbnN0cnVjdG9yT3B0aW9ucyxcblx0UHJvdG8sXG5cdFNOLFxuXHRJRGVmaW5pdG9ySW5zdGFuY2Vcbn0gZnJvbSAnLi90eXBlcyc7XG5cbmltcG9ydCBUeXBlc1V0aWxzIGZyb20gJy4vYXBpL3V0aWxzL2luZGV4JztcbmV4cG9ydCBjb25zdCB7XG5cdGlzQ2xhc3MsXG5cdGZpbmRTdWJUeXBlRnJvbVBhcmVudCxcbn0gPSBUeXBlc1V0aWxzO1xuXG5leHBvcnQgdHlwZSB7IElERUYsIENvbnN0cnVjdG9yRnVuY3Rpb24gfSBmcm9tICcuL3R5cGVzJztcbmV4cG9ydCB7IGdldFByb3BzLCBzZXRQcm9wcyB9IGZyb20gJy4vYXBpL3R5cGVzL1Byb3BzJztcblxuaW1wb3J0IHsgY29uc3RhbnRzIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuY29uc3QgeyBvZHAgfSA9IGNvbnN0YW50cztcblxuaW1wb3J0ICogYXMgZXJyb3JzQXBpIGZyb20gJy4vYXBpL2Vycm9ycyc7XG5pbXBvcnQgeyBkZXNjcmlwdG9ycyB9IGZyb20gJy4vZGVzY3JpcHRvcnMnO1xuXG5jb25zdCB7IFdST05HX01PRElGSUNBVElPTl9QQVRURVJOIH0gPSBkZXNjcmlwdG9ycy5FcnJvcnNUeXBlcztcblxuaW1wb3J0IG1uZW1vc3luZXMgZnJvbSAnLi9hcGkvdHlwZXMvTW5lbW9zeW5lJztcbmNvbnN0IHsgcHJlcGFyZVN1YnR5cGVGb3JDb25zdHJ1Y3Rpb24gfSA9IG1uZW1vc3luZXM7XG5cbmV4cG9ydCBjb25zdCB7XG5cdGRlZmF1bHRUeXBlcyxcbn0gPSBkZXNjcmlwdG9ycztcblxuZnVuY3Rpb24gY2hlY2tUaGlzKHBvaW50ZXI6IHR5cGVvZiBtbmVtb25pY2EgfCB0eXBlb2YgZXhwb3J0cyB8IHVua25vd24pOiBib29sZWFuIHtcblx0cmV0dXJuIHBvaW50ZXIgPT09IG1uZW1vbmljYSB8fCBwb2ludGVyID09PSBleHBvcnRzO1xufVxuXG5leHBvcnQgY29uc3QgZGVmaW5lID0gZnVuY3Rpb24gPFxuXHRULFxuXHQvLyBLIGV4dGVuZHMgSURFRjxUPixcblx0Ly8gSCBleHRlbmRzIFRoaXNUeXBlPElERUY8VD4+LFxuXHRQIGV4dGVuZHMgb2JqZWN0LFxuXHROIGV4dGVuZHMgUHJvdG88UCwgVD4sXG5cdC8vIHNvIFMgaXQganVzdCBiYXNpY2FsbHkgYWxsb3dzIG5lc3RlZCBjb25zdHJ1Y3RvcnNcblx0Ly8gYW5kIGdpdmVzIGV4dHJhY3RlZCBwcm9wcyBmcm9tIGNvbnN0cnVjdEhhbmRsZXIgJiBwcm90b1xuXHQvLyB0aGVuIGl0IGdvZXMgdG8gbmV3KCkga2V5d29yZCBvZiBkZWZpbmUgb3V0cHV0XG5cdFMgZXh0ZW5kcyBTTiAmIE4sXG5cdFIgZXh0ZW5kcyBJRGVmaW5pdG9ySW5zdGFuY2U8TiwgUz5cbj4oXG5cdHRoaXM6IHVua25vd24sXG5cdFR5cGVOYW1lPzogc3RyaW5nLFxuXHRjb25zdHJ1Y3RIYW5kbGVyPzogSURFRjxUPixcblx0Y29uZmlnPzogY29uc3RydWN0b3JPcHRpb25zLFxuKTogUiB7XG5cdGNvbnN0IHR5cGVzID0gY2hlY2tUaGlzKHRoaXMpID8gZGVmYXVsdFR5cGVzIDogdGhpcyB8fCBkZWZhdWx0VHlwZXM7XG5cdHJldHVybiB0eXBlcy5kZWZpbmUoVHlwZU5hbWUsIGNvbnN0cnVjdEhhbmRsZXIsIGNvbmZpZyk7XG59O1xuXG5leHBvcnQgY29uc3QgbG9va3VwID0gZnVuY3Rpb24gKFR5cGVOZXN0ZWRQYXRoKSB7XG5cdGNvbnN0IHR5cGVzID0gY2hlY2tUaGlzKHRoaXMpID8gZGVmYXVsdFR5cGVzIDogdGhpcyB8fCBkZWZhdWx0VHlwZXM7XG5cdHJldHVybiB0eXBlcy5sb29rdXAoVHlwZU5lc3RlZFBhdGgpO1xufSBhcyBUeXBlTG9va3VwO1xuXG5cbmNvbnN0ICRydW4gPSBmdW5jdGlvbiA8RSBleHRlbmRzIG9iamVjdCwgVCBleHRlbmRzIG9iamVjdCwgUyBleHRlbmRzIFByb3RvPEUsIFQ+Pihcblx0ZW50aXR5OiBFLFxuXHRDb25zdHJ1Y3RvcjogSURFRjxUPixcblx0YXJnczogdW5rbm93bltdXG4pOiB7XG5cdFx0W2tleSBpbiBrZXlvZiBTXTogU1trZXldXG5cdH0ge1xuXG5cdC8vIGRlYnVnZ2VyO1xuXHQvLyBAdHMtaWdub3JlXG5cdGNvbnN0IHsgVHlwZU5hbWUgfSA9IENvbnN0cnVjdG9yO1xuXHRjb25zdCBDc3RyID0gcHJlcGFyZVN1YnR5cGVGb3JDb25zdHJ1Y3Rpb24oVHlwZU5hbWUsIGVudGl0eSkgYXMgeyBuZXcoLi4uYXJzOiB1bmtub3duW10pOiB1bmtub3duIH07XG5cdC8vIFRPRE86IGNoZWNrIGxpbmVzIGJlbG93IGFuZCBpZiBDb25zdHJ1Y3RvciBpcyBub3QgbW5lbW9uaXplZCAuLi5cblx0aWYgKENzdHIgPT09IHVuZGVmaW5lZCkge1xuXHRcdHRocm93IG5ldyBXUk9OR19NT0RJRklDQVRJT05fUEFUVEVSTihgWyAke1R5cGVOYW1lfSBdIGlzIG5vdCBkZWZpbmVkIGFzIGEgVHlwZSBDb25zdHJ1Y3RvciBvbiB1c2VkIGluc3RhbmNlYCk7XG5cdH1cblx0Y29uc3QgcmVzdWx0ID0gbmV3IENzdHIoLi4uYXJncyk7XG5cdC8vIEB0cy1pZ25vcmVcblx0cmV0dXJuIHJlc3VsdDtcbn07XG5cbi8vIFRPRE86IGFwcGx5IGluc3RhbmNlIC50byB0eXBlIC53aXRoIGFyZ3VtZW50c1xuZXhwb3J0IGNvbnN0IGFwcGx5ID0gZnVuY3Rpb24gPEUgZXh0ZW5kcyBvYmplY3QsIFQgZXh0ZW5kcyBvYmplY3QsIFMgZXh0ZW5kcyBQcm90bzxFLCBUPj4oXG5cdGVudGl0eTogRSxcblx0Q29uc3RydWN0b3I6IElERUY8VD4sXG5cdGFyZ3M6IHVua25vd25bXSA9IFtdXG4pOiB7XG5cdFx0W2tleSBpbiBrZXlvZiBTXTogU1trZXldXG5cdH0ge1xuXHRyZXR1cm4gJHJ1bjxFLCBULCBTPihlbnRpdHksIENvbnN0cnVjdG9yLCBhcmdzKTtcbn07XG5cbi8vIFRPRE86IGNhbGwgdHlwZSAuYnkgaW5zdGFuY2UgLndpdGggYXJndW1lbnRzXG5leHBvcnQgY29uc3QgY2FsbCA9IGZ1bmN0aW9uIDxFIGV4dGVuZHMgb2JqZWN0LCBUIGV4dGVuZHMgb2JqZWN0LCBTIGV4dGVuZHMgUHJvdG88RSwgVD4+KFxuXHRlbnRpdHk6IEUsXG5cdENvbnN0cnVjdG9yOiBJREVGPFQ+LFxuXHQuLi5hcmdzOiB1bmtub3duW11cbik6IHtcblx0XHRba2V5IGluIGtleW9mIFNdOiBTW2tleV1cblx0fSB7XG5cdHJldHVybiAkcnVuPEUsIFQsIFM+KGVudGl0eSwgQ29uc3RydWN0b3IsIGFyZ3MpO1xufTtcblxuLy8gVE9ETzogYmluZCB0eXBlIC53aXRoIGluc3RhbmNlIOKGkiAoLi4uYXJncylcbmV4cG9ydCBjb25zdCBiaW5kID0gZnVuY3Rpb24gPEUgZXh0ZW5kcyBvYmplY3QsIFQgZXh0ZW5kcyBvYmplY3QsIFMgZXh0ZW5kcyBQcm90bzxFLCBUPj4oXG5cdGVudGl0eTogRSxcblx0Q29uc3RydWN0b3I6IElERUY8VD5cbik6ICguLi5hcmdzOiB1bmtub3duW10pID0+IHtcblx0W2tleSBpbiBrZXlvZiBTXTogU1trZXldXG59IHtcblx0cmV0dXJuICguLi5hcmdzKSA9PiB7XG5cdFx0cmV0dXJuICRydW48RSwgVCwgUz4oZW50aXR5LCBDb25zdHJ1Y3RvciwgYXJncyk7XG5cdH07XG59O1xuXG5cblxuXG50eXBlIENvbnN0cnVjdG9yPFQgPSB1bmtub3duPiA9IG5ldyguLi5hcmdzOiB1bmtub3duW10pID0+IFQ7XG5cbi8vIFR5cGUgZm9yIGRlY29yYXRlZCBjbGFzc2VzIHRoYXQgY2FuIGJlIHVzZWQgYXM6XG4vLyAxLiBBIGNvbnN0cnVjdG9yOiBuZXcgTXlEZWNvcmF0ZWRDbGFzcygpXG4vLyAyLiBBIGRlY29yYXRvcjogQE15RGVjb3JhdGVkQ2xhc3MoKSBjbGFzcyBTdWIge31cbi8vIDMuIEV4dGVuZGVkOiBjbGFzcyBTdWIgZXh0ZW5kcyBNeURlY29yYXRlZENsYXNzIHt9XG4vLyA0LiBIYXZlIG1uZW1vbmljYSBtZXRob2RzOiBNeURlY29yYXRlZENsYXNzLmRlZmluZSguLi4pXG50eXBlIERlY29yYXRlZENsYXNzPFQgZXh0ZW5kcyBDb25zdHJ1Y3RvcjxvYmplY3Q+PiA9XG5cdC8vIEJhc2UgY29uc3RydWN0b3IgdHlwZVxuXHRUICZcblx0Ly8gQ2FsbGFibGUgYXMgZGVjb3JhdG9yOiBATXlEZWNvcmF0ZWRDbGFzcygpIGNsYXNzIFN1YiB7fVxuXHQoPFUgZXh0ZW5kcyBDb25zdHJ1Y3RvcjxvYmplY3Q+Pih0YXJnZXQ6IFUpID0+IERlY29yYXRlZENsYXNzPFU+KSAmXG5cdC8vIE1uZW1vbmljYSB0eXBlIHN5c3RlbSBtZXRob2RzXG5cdHtcblx0XHRkZWZpbmU6IElEZWZpbml0b3JJbnN0YW5jZTxJbnN0YW5jZVR5cGU8VD4sIHVua25vd24+WydkZWZpbmUnXTtcblx0XHRyZWdpc3Rlckhvb2s6IElEZWZpbml0b3JJbnN0YW5jZTxJbnN0YW5jZVR5cGU8VD4sIHVua25vd24+WydyZWdpc3Rlckhvb2snXTtcblx0XHRsb29rdXA6IFR5cGVMb29rdXA7XG5cdH07XG5cbmV4cG9ydCBjb25zdCBkZWNvcmF0ZSA9IGZ1bmN0aW9uIDxcblx0VCBleHRlbmRzIENvbnN0cnVjdG9yPG9iamVjdD4gfCBjb25zdHJ1Y3Rvck9wdGlvbnMgfCB1bmRlZmluZWQgPSB1bmRlZmluZWRcbj4oXG5cdHRhcmdldD86IFQsXG5cdGNvbmZpZz86IGNvbnN0cnVjdG9yT3B0aW9uc1xuKTogPFUgZXh0ZW5kcyBDb25zdHJ1Y3RvcjxvYmplY3Q+Pihjc3RyOiBVKSA9PiBEZWNvcmF0ZWRDbGFzczxVPiB7XG5cdGNvbnN0IG9wdHMgPSAoY29uZmlnID09PSB1bmRlZmluZWQgJiYgdHlwZW9mIHRhcmdldCA9PT0gJ29iamVjdCcgJiYgISh0YXJnZXQgaW5zdGFuY2VvZiBGdW5jdGlvbikpXG5cdFx0PyB0YXJnZXQgYXMgY29uc3RydWN0b3JPcHRpb25zXG5cdFx0OiBjb25maWc7XG5cblx0Y29uc3QgcGFyZW50VHlwZSA9ICh0YXJnZXQgaW5zdGFuY2VvZiBGdW5jdGlvbilcblx0XHQ/IHRhcmdldCBhcyBDb25zdHJ1Y3RvcjxvYmplY3Q+XG5cdFx0OiB1bmRlZmluZWQ7XG5cblx0Y29uc3QgZGVjb3JhdG9yID0gZnVuY3Rpb24gPFUgZXh0ZW5kcyBDb25zdHJ1Y3RvcjxvYmplY3Q+Pihjc3RyOiBVKTogRGVjb3JhdGVkQ2xhc3M8VT4ge1xuXHRcdGNvbnN0IHsgbmFtZSB9ID0gY3N0cjtcblx0XHRpZiAocGFyZW50VHlwZSA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRyZXR1cm4gZGVmaW5lKG5hbWUsIGNzdHIsIG9wdHMpIGFzIHVua25vd24gYXMgRGVjb3JhdGVkQ2xhc3M8VT47XG5cdFx0fVxuXHRcdGNvbnN0IHBhcmVudCA9IHBhcmVudFR5cGUgYXMgdW5rbm93biBhcyB7XG5cdFx0XHRkZWZpbmU6IChuYW1lOiBzdHJpbmcsIGNzdHI6IENvbnN0cnVjdG9yPHVua25vd24+LCBjb25maWc/OiBjb25zdHJ1Y3Rvck9wdGlvbnMpID0+IHVua25vd25cblx0XHR9O1xuXHRcdHJldHVybiBwYXJlbnQuZGVmaW5lKG5hbWUsIGNzdHIsIG9wdHMpIGFzIHVua25vd24gYXMgRGVjb3JhdGVkQ2xhc3M8VT47XG5cdH07XG5cdHJldHVybiBkZWNvcmF0b3I7XG59O1xuXG5cbmV4cG9ydCBjb25zdCByZWdpc3Rlckhvb2sgPSBmdW5jdGlvbiA8VCBleHRlbmRzIG9iamVjdD4oQ29uc3RydWN0b3I6IElERUY8VD4sIGhvb2tUeXBlOiBob29rc1R5cGVzLCBjYjogaG9vayk6IHZvaWQge1xuXHQvLyBAdHMtaWdub3JlXG5cdENvbnN0cnVjdG9yLnJlZ2lzdGVySG9vayhob29rVHlwZSwgY2IpO1xufTtcblxuZXhwb3J0IGNvbnN0IG1uZW1vbmljYSA9IE9iamVjdC5lbnRyaWVzKHtcblxuXHRkZWZpbmUsXG5cdGxvb2t1cCxcblx0YXBwbHksXG5cdGNhbGwsXG5cdGJpbmQsXG5cdGRlY29yYXRlLFxuXHRyZWdpc3Rlckhvb2ssXG5cblx0Li4uZGVzY3JpcHRvcnMsXG5cblx0Li4uZXJyb3JzQXBpLFxuXHQuLi5jb25zdGFudHMsXG5cbn0pLnJlZHVjZSgoYWNjOiB7IFtpbmRleDogc3RyaW5nXTogdW5rbm93biB9LCBlbnRyeTogW3N0cmluZywgdW5rbm93bl0pID0+IHtcblx0Y29uc3QgWyBuYW1lLCBjb2RlIF0gPSBlbnRyeTtcblx0b2RwKGFjYywgbmFtZSwge1xuXHRcdGdldCgpIHtcblx0XHRcdHJldHVybiBjb2RlO1xuXHRcdH0sXG5cdFx0ZW51bWVyYWJsZSA6IHRydWVcblx0fSk7XG5cdHJldHVybiBhY2M7XG59LCB7fSk7XG5cbmV4cG9ydCBjb25zdCB7XG5cblx0U3ltYm9sUGFyZW50VHlwZSxcblx0U3ltYm9sQ29uc3RydWN0b3JOYW1lLFxuXHRTeW1ib2xEZWZhdWx0VHlwZXNDb2xsZWN0aW9uLFxuXHRTeW1ib2xDb25maWcsXG5cdE1ORU1PTklDQSxcblx0TU5FTU9TWU5FLFxuXHRUWVBFX1RJVExFX1BSRUZJWCxcblx0RXJyb3JNZXNzYWdlcyxcblx0Y3JlYXRlVHlwZXNDb2xsZWN0aW9uLFxuXG59ID0gbW5lbW9uaWNhO1xuXG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0Q29sbGVjdGlvbiA9IGRlZmF1bHRUeXBlcy5zdWJ0eXBlcztcbmV4cG9ydCBjb25zdCBlcnJvcnMgPSBkZXNjcmlwdG9ycy5FcnJvcnNUeXBlcztcblxuZXhwb3J0IHsgdXRpbHMgfSBmcm9tICcuL3V0aWxzJztcbmV4cG9ydCB7IGRlZmluZVN0YWNrQ2xlYW5lciB9IGZyb20gJy4vdXRpbHMnO1xuLyogZXNsaW50LWVuYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnQsIHNwYWNlLWJlZm9yZS1mdW5jdGlvbi1wYXJlbiAqL1xuXG4iXX0=
@@ -46,8 +46,8 @@ export type SN = Record<string, new () => unknown>;
46
46
  export interface IDefinitorInstance<N extends object, S> {
47
47
  new (...arg: unknown[]): {
48
48
  [key in keyof S]: S[key];
49
- };
50
- define: IDefinitor<N, string>;
49
+ } & IDefinitor<N, string>;
50
+ define: IDefinitorInstance<N, string>;
51
51
  registerHook: (hookType: hooksTypes, cb: hook) => void;
52
52
  }
53
53
  export interface IDefinitor<P extends object, SubTypeName extends string> {
@@ -1,3 +1,3 @@
1
1
  'use strict';
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuLyogZXNsaW50IG5vLXVudXNlZC12YXJzOiBcIm9mZlwiICovXG5cbi8vIHR5cGUgUk4gPSBSZWNvcmQ8c3RyaW5nfHN5bWJvbCwgdW5rbm93bj5cblxuLy8gdHlwZSBuYXJyb3dhYmxlID0gc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IHN5bWJvbCB8IG9iamVjdCB8IHVuZGVmaW5lZCB8IHZvaWQgfCBudWxsIHwgW107XG4vLyBleHBvcnQgdHlwZSBJREVGPFQgZXh0ZW5kcyBSTj4gPSB7XHRuZXcoKTogVCB9IHwgeyAodGhpczogVCk6IHZvaWQgfTtcbiBcbmV4cG9ydCB0eXBlIElERUY8VD4gPSB7IG5ldygpOiBUIH0gfCB7ICggdGhpczogVCwgLi4uYXJnczogYW55W10gKTogdm9pZCB9O1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbnN0cnVjdG9yRnVuY3Rpb248Q29uc3RydWN0b3JJbnN0YW5jZSBleHRlbmRzIG9iamVjdD4ge1xuXHRuZXcoIC4uLmFyZ3M6IHVua25vd25bXSApOiBDb25zdHJ1Y3Rvckluc3RhbmNlO1xuXHQoIHRoaXM6IENvbnN0cnVjdG9ySW5zdGFuY2UsIC4uLmFyZ3M6IHVua25vd25bXSApOiBDb25zdHJ1Y3Rvckluc3RhbmNlO1xuXHRwcm90b3R5cGU6IENvbnN0cnVjdG9ySW5zdGFuY2U7XG59XG5cbmV4cG9ydCB0eXBlIFR5cGVMb29rdXAgPSAoIHRoaXM6IE1hcDxzdHJpbmcsIHVua25vd24+LCBUeXBlTmVzdGVkUGF0aDogc3RyaW5nICkgPT4gVHlwZUNsYXNzO1xuLy8gZXhwb3J0IHR5cGUgVHlwZUxvb2t1cCA9ICggdGhpczogTWFwPHN0cmluZywgdW5rbm93bj4sIFR5cGVOZXN0ZWRQYXRoOiBzdHJpbmcgKSA9PiBUeXBlQ2xhc3M8b2JqZWN0PjtcblxuZXhwb3J0IHR5cGUgVHlwZUNsYXNzID0ge1xuXHRuZXcoIC4uLmFyZ3M6IHVua25vd25bXSApOiB1bmtub3duO1xuXHRkZWZpbmU6IFR5cGVBYnNvcmJlcjtcblx0bG9va3VwOiBUeXBlTG9va3VwO1xuXHRyZWdpc3Rlckhvb2s6ICggdHlwZTogJ3ByZUNyZWF0aW9uJyB8ICdwb3N0Q3JlYXRpb24nIHwgJ2NyZWF0aW9uRXJyb3InLCBob29rQ2I6IENhbGxhYmxlRnVuY3Rpb24gKSA9PiB1bmtub3duO1xufTtcblxuZXhwb3J0IHR5cGUgVHlwZUFic29yYmVyID0gKFxuXHR0aGlzOiB1bmtub3duLFxuXHRUeXBlTmFtZTogc3RyaW5nLFxuXHQvLyBjb25zdHJ1Y3RIYW5kbGVyOiBOZXdhYmxlRnVuY3Rpb24sXG5cdGNvbnN0cnVjdEhhbmRsZXI6IENhbGxhYmxlRnVuY3Rpb24sXG5cdHByb3RvPzogb2JqZWN0LFxuXHRjb25maWc/OiBvYmplY3RcbikgPT4gVHlwZUNsYXNzO1xuXG4vLyBleHBvcnQgdHlwZSBJVHlwZUFic29yYmVyPFQgZXh0ZW5kcyBSTj4gPSAoXG5leHBvcnQgdHlwZSBJVHlwZUFic29yYmVyPFQ+ID0gKFxuXHR0aGlzOiB1bmtub3duLFxuXHRUeXBlTmFtZTogc3RyaW5nLFxuXHRjb25zdHJ1Y3RIYW5kbGVyOiBJREVGPFQ+LFxuXHRwcm90bz86IG9iamVjdCxcblx0Y29uZmlnPzogb2JqZWN0XG4pID0+IElUeXBlQ2xhc3M8VD47XG5cbi8vIGV4cG9ydCBpbnRlcmZhY2UgSVR5cGVDbGFzczxUIGV4dGVuZHMgUk4+IHtcbmV4cG9ydCBpbnRlcmZhY2UgSVR5cGVDbGFzczxUPiB7XG5cdC8vIGNvbnN0cnVjdFxuXHRuZXcoIC4uLmFyZ3M6IHVua25vd25bXSApOiBUO1xuXHQvLyBkZWZpbmUsIGxvb2t1cCwgcmVnaXN0ZXJIb29rXG5cdCggdGhpczogVCwgLi4uYXJnczogdW5rbm93bltdICk6IFQ7XG5cdC8vIHByb3BzXG5cdGRlZmluZTogSVR5cGVBYnNvcmJlcjxUPixcblx0Ly8gZGVmaW5lOiB0eXBlb2YgZGVmaW5lLFxuXHRsb29rdXA6IFR5cGVMb29rdXAsXG5cdHJlZ2lzdGVySG9vazogKCB0eXBlOiAncHJlQ3JlYXRpb24nIHwgJ3Bvc3RDcmVhdGlvbicgfCAnY3JlYXRpb25FcnJvcicsIGhvb2tDYjogQ2FsbGFibGVGdW5jdGlvbiApID0+IHVua25vd247XG59XG5cbmV4cG9ydCB0eXBlIGhvb2tzVHlwZXMgPSAncHJlQ3JlYXRpb24nIHwgJ3Bvc3RDcmVhdGlvbicgfCAnY3JlYXRpb25FcnJvcidcbmV4cG9ydCB0eXBlIGhvb2tzT3B0cyA9IHtcblx0VHlwZU5hbWU6IHN0cmluZyxcblx0YXJnczogdW5rbm93bltdLFxuXHRleGlzdGVudEluc3RhbmNlOiBvYmplY3QsXG5cdGluaGVyaXRlZEluc3RhbmNlOiBvYmplY3QsXG59XG5leHBvcnQgdHlwZSBob29rID0ge1xuXHQoIG9wdHM6IGhvb2tzT3B0cyApOiB2b2lkXG59XG5cbmV4cG9ydCB0eXBlIGNvbnN0cnVjdG9yT3B0aW9ucyA9IHtcblxuXHQvLyBleHBsaWNpdCBkZWNsYXJhdGlvbiB3ZSB3aXNoIHVzZVxuXHQvLyBhbiBvbGQgc3R5bGUgYmFzZWQgY29uc3RydWN0b3JzXG5cdC8vIGUuZy4gd2l0aCBwcm90b3R5cGUgZGVzY3JpYmVkIHdpdGg6XG5cdC8vICAgIGNyZWF0ZUluc3RhbmNlTW9kaWZpY2F0b3IyMDBYdGhXYXlcblx0Ly8gb3IgbW9yZSBnZW5lcmFsIHdpdGg6IGNyZWF0ZUluc3RhbmNlTW9kaWZpY2F0b3Jcblx0TW9kaWZpY2F0aW9uQ29uc3RydWN0b3I/OiBDYWxsYWJsZUZ1bmN0aW9uLFxuXG5cdC8vIHNoYWxsIG9yIG5vdCB3ZSB1c2Ugc3RyaWN0IGNoZWNraW5nXG5cdC8vIGZvciBjcmVhdGlvbiBzdWItaW5zdGFuY2VzIE9ubHkgZnJvbSBjdXJyZW50IHR5cGVcblx0Ly8gb3Igd2UgbWlnaHQgdXNlIHVwLW5lc3RlZCBzdWItaW5zdGFuY2VzIGZyb20gY2hhaW5cblx0c3RyaWN0Q2hhaW4/OiBib29sZWFuLFxuXG5cdC8vIHNob3VsZCB3ZSB1c2UgZm9yY2VkIGVycm9ycyBjaGVja2luZ1xuXHQvLyB0byBtYWtlIGFsbCBpbmhlcml0ZWQgdHlwZXMgZXJyb3JlZFxuXHQvLyBpZiB0aGVyZSBpcyBhbiBlcnJvciBzb21ld2hlcmUgaW4gY2hhaW5cblx0Ly8gZGlzYWxsb3cgaW5zdGFuY2UgY29uc3RydWN0aW9uXG5cdC8vIGlmIHRoZXJlIGlzIGFuIGVycm9yIGluIHByb3RvdHlwZSBjaGFpblxuXHRibG9ja0Vycm9ycz86IGJvb2xlYW4sXG5cblx0Ly8gaWYgaXQgaXMgbmVjZXNzYXJ5IHRvIGNvbGxlY3Qgc3RhY2tcblx0Ly8gYXMgYSBfX3N0YWNrX18gcHJvdG90eXBlIHByb3BlcnR5XG5cdC8vIGR1cmluZyB0aGUgcHJvY2VzcyBvZiBpbnN0YW5jZSBjcmVhdGlvblxuXHRzdWJtaXRTdGFjaz86IGJvb2xlYW4sXG5cblx0Ly8gYXdhaXQgbmV3IENvbnN0cnVjdG9yKClcblx0Ly8gbXVzdCByZXR1cm4gdmFsdWVcblx0Ly8gb3B0aW9uYWwgLi9pc3N1ZXMvMTA2XG5cdGF3YWl0UmV0dXJuPzogYm9vbGVhbixcblxufTtcblxuXG5leHBvcnQgdHlwZSBQcm90bzxQLCBUPiA9IFBpY2s8UCwgRXhjbHVkZTxrZXlvZiBQLCBrZXlvZiBUPj4gJiBUO1xuXG4vLyB0eXBlIE5hcnJvd2FibGUgPVxuLy8gICBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgc3ltYm9sIHwgb2JqZWN0IHwgdW5kZWZpbmVkIHwgdm9pZCB8IG51bGwgfCBbXTtcbi8vIHR5cGUgUk4gPSBSZWNvcmQ8c3RyaW5nfHN5bWJvbCwgdW5rbm93bj5cbmV4cG9ydCB0eXBlIFNOID0gUmVjb3JkPHN0cmluZywgbmV3ICgpID0+IHVua25vd24+XG5cbmV4cG9ydCBpbnRlcmZhY2UgSURlZmluaXRvckluc3RhbmNlPE4gZXh0ZW5kcyBvYmplY3QsIFM+IHtcblx0bmV3KCAuLi5hcmc6IHVua25vd25bXSApOiB7XG5cdFx0WyBrZXkgaW4ga2V5b2YgUyBdOiBTWyBrZXkgXVxuXHR9XG5cdGRlZmluZTogSURlZmluaXRvcjxOLCBzdHJpbmc+XG5cdHJlZ2lzdGVySG9vazogKCBob29rVHlwZTogaG9va3NUeXBlcywgY2I6IGhvb2sgKSA9PiB2b2lkXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSURlZmluaXRvcjxQIGV4dGVuZHMgb2JqZWN0LCBTdWJUeXBlTmFtZSBleHRlbmRzIHN0cmluZz4ge1xuXHQ8UFAgZXh0ZW5kcyBvYmplY3QsIFQsIE0gZXh0ZW5kcyBQcm90bzxQLCBQcm90bzxQUCwgVD4+LCBTIGV4dGVuZHMgU04gJiBNPiAoXG5cdFx0dGhpczogdW5rbm93bixcblx0XHRUeXBlTmFtZTogU3ViVHlwZU5hbWUsXG5cdFx0Y29uc3RydWN0SGFuZGxlcjogSURFRjxUPixcblx0XHRwcm90bz86IFBQLFxuXHRcdGNvbmZpZz86IGNvbnN0cnVjdG9yT3B0aW9ucyxcblx0KTogSURlZmluaXRvckluc3RhbmNlPE0sIFM+XG59XG5cbmV4cG9ydCB0eXBlIFR5cGVEZXNjcmlwdG9ySW5zdGFuY2UgPSB7XG5cdGRlZmluZTogQ2FsbGFibGVGdW5jdGlvbjtcblx0bG9va3VwOiBDYWxsYWJsZUZ1bmN0aW9uO1xuXHRzdWJ0eXBlczogb2JqZWN0O1xufTtcbiJdfQ==
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuLyogZXNsaW50IG5vLXVudXNlZC12YXJzOiBcIm9mZlwiICovXG5cbi8vIHR5cGUgUk4gPSBSZWNvcmQ8c3RyaW5nfHN5bWJvbCwgdW5rbm93bj5cblxuLy8gdHlwZSBuYXJyb3dhYmxlID0gc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IHN5bWJvbCB8IG9iamVjdCB8IHVuZGVmaW5lZCB8IHZvaWQgfCBudWxsIHwgW107XG4vLyBleHBvcnQgdHlwZSBJREVGPFQgZXh0ZW5kcyBSTj4gPSB7XHRuZXcoKTogVCB9IHwgeyAodGhpczogVCk6IHZvaWQgfTtcbiBcbmV4cG9ydCB0eXBlIElERUY8VD4gPSB7IG5ldygpOiBUIH0gfCB7ICggdGhpczogVCwgLi4uYXJnczogYW55W10gKTogdm9pZCB9O1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbnN0cnVjdG9yRnVuY3Rpb248Q29uc3RydWN0b3JJbnN0YW5jZSBleHRlbmRzIG9iamVjdD4ge1xuXHRuZXcoIC4uLmFyZ3M6IHVua25vd25bXSApOiBDb25zdHJ1Y3Rvckluc3RhbmNlO1xuXHQoIHRoaXM6IENvbnN0cnVjdG9ySW5zdGFuY2UsIC4uLmFyZ3M6IHVua25vd25bXSApOiBDb25zdHJ1Y3Rvckluc3RhbmNlO1xuXHRwcm90b3R5cGU6IENvbnN0cnVjdG9ySW5zdGFuY2U7XG59XG5cbmV4cG9ydCB0eXBlIFR5cGVMb29rdXAgPSAoIHRoaXM6IE1hcDxzdHJpbmcsIHVua25vd24+LCBUeXBlTmVzdGVkUGF0aDogc3RyaW5nICkgPT4gVHlwZUNsYXNzO1xuLy8gZXhwb3J0IHR5cGUgVHlwZUxvb2t1cCA9ICggdGhpczogTWFwPHN0cmluZywgdW5rbm93bj4sIFR5cGVOZXN0ZWRQYXRoOiBzdHJpbmcgKSA9PiBUeXBlQ2xhc3M8b2JqZWN0PjtcblxuZXhwb3J0IHR5cGUgVHlwZUNsYXNzID0ge1xuXHRuZXcoIC4uLmFyZ3M6IHVua25vd25bXSApOiB1bmtub3duO1xuXHRkZWZpbmU6IFR5cGVBYnNvcmJlcjtcblx0bG9va3VwOiBUeXBlTG9va3VwO1xuXHRyZWdpc3Rlckhvb2s6ICggdHlwZTogJ3ByZUNyZWF0aW9uJyB8ICdwb3N0Q3JlYXRpb24nIHwgJ2NyZWF0aW9uRXJyb3InLCBob29rQ2I6IENhbGxhYmxlRnVuY3Rpb24gKSA9PiB1bmtub3duO1xufTtcblxuZXhwb3J0IHR5cGUgVHlwZUFic29yYmVyID0gKFxuXHR0aGlzOiB1bmtub3duLFxuXHRUeXBlTmFtZTogc3RyaW5nLFxuXHQvLyBjb25zdHJ1Y3RIYW5kbGVyOiBOZXdhYmxlRnVuY3Rpb24sXG5cdGNvbnN0cnVjdEhhbmRsZXI6IENhbGxhYmxlRnVuY3Rpb24sXG5cdHByb3RvPzogb2JqZWN0LFxuXHRjb25maWc/OiBvYmplY3RcbikgPT4gVHlwZUNsYXNzO1xuXG4vLyBleHBvcnQgdHlwZSBJVHlwZUFic29yYmVyPFQgZXh0ZW5kcyBSTj4gPSAoXG5leHBvcnQgdHlwZSBJVHlwZUFic29yYmVyPFQ+ID0gKFxuXHR0aGlzOiB1bmtub3duLFxuXHRUeXBlTmFtZTogc3RyaW5nLFxuXHRjb25zdHJ1Y3RIYW5kbGVyOiBJREVGPFQ+LFxuXHRwcm90bz86IG9iamVjdCxcblx0Y29uZmlnPzogb2JqZWN0XG4pID0+IElUeXBlQ2xhc3M8VD47XG5cbi8vIGV4cG9ydCBpbnRlcmZhY2UgSVR5cGVDbGFzczxUIGV4dGVuZHMgUk4+IHtcbmV4cG9ydCBpbnRlcmZhY2UgSVR5cGVDbGFzczxUPiB7XG5cdC8vIGNvbnN0cnVjdFxuXHRuZXcoIC4uLmFyZ3M6IHVua25vd25bXSApOiBUO1xuXHQvLyBkZWZpbmUsIGxvb2t1cCwgcmVnaXN0ZXJIb29rXG5cdCggdGhpczogVCwgLi4uYXJnczogdW5rbm93bltdICk6IFQ7XG5cdC8vIHByb3BzXG5cdGRlZmluZTogSVR5cGVBYnNvcmJlcjxUPixcblx0Ly8gZGVmaW5lOiB0eXBlb2YgZGVmaW5lLFxuXHRsb29rdXA6IFR5cGVMb29rdXAsXG5cdHJlZ2lzdGVySG9vazogKCB0eXBlOiAncHJlQ3JlYXRpb24nIHwgJ3Bvc3RDcmVhdGlvbicgfCAnY3JlYXRpb25FcnJvcicsIGhvb2tDYjogQ2FsbGFibGVGdW5jdGlvbiApID0+IHVua25vd247XG59XG5cbmV4cG9ydCB0eXBlIGhvb2tzVHlwZXMgPSAncHJlQ3JlYXRpb24nIHwgJ3Bvc3RDcmVhdGlvbicgfCAnY3JlYXRpb25FcnJvcidcbmV4cG9ydCB0eXBlIGhvb2tzT3B0cyA9IHtcblx0VHlwZU5hbWU6IHN0cmluZyxcblx0YXJnczogdW5rbm93bltdLFxuXHRleGlzdGVudEluc3RhbmNlOiBvYmplY3QsXG5cdGluaGVyaXRlZEluc3RhbmNlOiBvYmplY3QsXG59XG5leHBvcnQgdHlwZSBob29rID0ge1xuXHQoIG9wdHM6IGhvb2tzT3B0cyApOiB2b2lkXG59XG5cbmV4cG9ydCB0eXBlIGNvbnN0cnVjdG9yT3B0aW9ucyA9IHtcblxuXHQvLyBleHBsaWNpdCBkZWNsYXJhdGlvbiB3ZSB3aXNoIHVzZVxuXHQvLyBhbiBvbGQgc3R5bGUgYmFzZWQgY29uc3RydWN0b3JzXG5cdC8vIGUuZy4gd2l0aCBwcm90b3R5cGUgZGVzY3JpYmVkIHdpdGg6XG5cdC8vICAgIGNyZWF0ZUluc3RhbmNlTW9kaWZpY2F0b3IyMDBYdGhXYXlcblx0Ly8gb3IgbW9yZSBnZW5lcmFsIHdpdGg6IGNyZWF0ZUluc3RhbmNlTW9kaWZpY2F0b3Jcblx0TW9kaWZpY2F0aW9uQ29uc3RydWN0b3I/OiBDYWxsYWJsZUZ1bmN0aW9uLFxuXG5cdC8vIHNoYWxsIG9yIG5vdCB3ZSB1c2Ugc3RyaWN0IGNoZWNraW5nXG5cdC8vIGZvciBjcmVhdGlvbiBzdWItaW5zdGFuY2VzIE9ubHkgZnJvbSBjdXJyZW50IHR5cGVcblx0Ly8gb3Igd2UgbWlnaHQgdXNlIHVwLW5lc3RlZCBzdWItaW5zdGFuY2VzIGZyb20gY2hhaW5cblx0c3RyaWN0Q2hhaW4/OiBib29sZWFuLFxuXG5cdC8vIHNob3VsZCB3ZSB1c2UgZm9yY2VkIGVycm9ycyBjaGVja2luZ1xuXHQvLyB0byBtYWtlIGFsbCBpbmhlcml0ZWQgdHlwZXMgZXJyb3JlZFxuXHQvLyBpZiB0aGVyZSBpcyBhbiBlcnJvciBzb21ld2hlcmUgaW4gY2hhaW5cblx0Ly8gZGlzYWxsb3cgaW5zdGFuY2UgY29uc3RydWN0aW9uXG5cdC8vIGlmIHRoZXJlIGlzIGFuIGVycm9yIGluIHByb3RvdHlwZSBjaGFpblxuXHRibG9ja0Vycm9ycz86IGJvb2xlYW4sXG5cblx0Ly8gaWYgaXQgaXMgbmVjZXNzYXJ5IHRvIGNvbGxlY3Qgc3RhY2tcblx0Ly8gYXMgYSBfX3N0YWNrX18gcHJvdG90eXBlIHByb3BlcnR5XG5cdC8vIGR1cmluZyB0aGUgcHJvY2VzcyBvZiBpbnN0YW5jZSBjcmVhdGlvblxuXHRzdWJtaXRTdGFjaz86IGJvb2xlYW4sXG5cblx0Ly8gYXdhaXQgbmV3IENvbnN0cnVjdG9yKClcblx0Ly8gbXVzdCByZXR1cm4gdmFsdWVcblx0Ly8gb3B0aW9uYWwgLi9pc3N1ZXMvMTA2XG5cdGF3YWl0UmV0dXJuPzogYm9vbGVhbixcblxufTtcblxuXG5leHBvcnQgdHlwZSBQcm90bzxQLCBUPiA9IFBpY2s8UCwgRXhjbHVkZTxrZXlvZiBQLCBrZXlvZiBUPj4gJiBUO1xuXG4vLyB0eXBlIE5hcnJvd2FibGUgPVxuLy8gICBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgc3ltYm9sIHwgb2JqZWN0IHwgdW5kZWZpbmVkIHwgdm9pZCB8IG51bGwgfCBbXTtcbi8vIHR5cGUgUk4gPSBSZWNvcmQ8c3RyaW5nfHN5bWJvbCwgdW5rbm93bj5cbmV4cG9ydCB0eXBlIFNOID0gUmVjb3JkPHN0cmluZywgbmV3ICgpID0+IHVua25vd24+XG5cbmV4cG9ydCBpbnRlcmZhY2UgSURlZmluaXRvckluc3RhbmNlPE4gZXh0ZW5kcyBvYmplY3QsIFM+IHtcblx0bmV3KCAuLi5hcmc6IHVua25vd25bXSApOiB7XG5cdFx0WyBrZXkgaW4ga2V5b2YgUyBdOiBTWyBrZXkgXVxuXHR9ICYgSURlZmluaXRvcjxOLCBzdHJpbmc+IFxuXHRkZWZpbmU6IElEZWZpbml0b3JJbnN0YW5jZTxOLCBzdHJpbmc+XG5cdHJlZ2lzdGVySG9vazogKCBob29rVHlwZTogaG9va3NUeXBlcywgY2I6IGhvb2sgKSA9PiB2b2lkXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSURlZmluaXRvcjxQIGV4dGVuZHMgb2JqZWN0LCBTdWJUeXBlTmFtZSBleHRlbmRzIHN0cmluZz4ge1xuXHQ8UFAgZXh0ZW5kcyBvYmplY3QsIFQsIE0gZXh0ZW5kcyBQcm90bzxQLCBQcm90bzxQUCwgVD4+LCBTIGV4dGVuZHMgU04gJiBNPiAoXG5cdFx0dGhpczogdW5rbm93bixcblx0XHRUeXBlTmFtZTogU3ViVHlwZU5hbWUsXG5cdFx0Y29uc3RydWN0SGFuZGxlcjogSURFRjxUPixcblx0XHRwcm90bz86IFBQLFxuXHRcdGNvbmZpZz86IGNvbnN0cnVjdG9yT3B0aW9ucyxcblx0KTogSURlZmluaXRvckluc3RhbmNlPE0sIFM+XG59XG5cbmV4cG9ydCB0eXBlIFR5cGVEZXNjcmlwdG9ySW5zdGFuY2UgPSB7XG5cdGRlZmluZTogQ2FsbGFibGVGdW5jdGlvbjtcblx0bG9va3VwOiBDYWxsYWJsZUZ1bmN0aW9uO1xuXHRzdWJ0eXBlczogb2JqZWN0O1xufTtcbiJdfQ==
@@ -24,12 +24,14 @@ const wrapThis = (method) => {
24
24
  return method(instance !== undefined ? instance : this, ...args);
25
25
  };
26
26
  };
27
- exports.utils = Object.assign({}, Object.entries(utilsUnWrapped)
28
- .reduce((methods, util) => {
29
- const [name, fn] = util;
30
- methods[name] = wrapThis(fn);
31
- return methods;
32
- }, {}));
27
+ exports.utils = {
28
+ ...Object.entries(utilsUnWrapped)
29
+ .reduce((methods, util) => {
30
+ const [name, fn] = util;
31
+ methods[name] = wrapThis(fn);
32
+ return methods;
33
+ }, {}),
34
+ };
33
35
  var defineStackCleaner_1 = require("./defineStackCleaner");
34
36
  Object.defineProperty(exports, "defineStackCleaner", { enumerable: true, get: function () { return defineStackCleaner_1.defineStackCleaner; } });
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWSxDQUFDOzs7QUFFYiwrREFBNEQ7QUFDNUQsdUNBQW9DO0FBQ3BDLHFDQUFrQztBQUNsQyxpQ0FBOEI7QUFDOUIscUNBQWtDO0FBQ2xDLG1DQUFnQztBQUNoQyxtQ0FBZ0M7QUFFaEMsTUFBTSxjQUFjLEdBQUc7SUFFdEIsT0FBTyxFQUFQLGlCQUFPO0lBQ1AsSUFBSSxFQUFKLFdBQUk7SUFFSixNQUFNLEVBQU4sZUFBTTtJQUVOLE1BQU0sRUFBTixlQUFNO0lBRU4sS0FBSyxFQUFMLGFBQUs7SUFDTCxLQUFLLEVBQUwsYUFBSztJQUVMLElBQUksbUJBQW1CO1FBQ3RCLE9BQU8seUNBQW1CLENBQUM7SUFDNUIsQ0FBQztDQUVELENBQUM7QUFFRixNQUFNLFFBQVEsR0FBRyxDQUFFLE1BQXdCLEVBQUcsRUFBRTtJQUMvQyxPQUFPLFVBQXNCLFFBQWEsRUFBRSxHQUFHLElBQVc7UUFDekQsT0FBTyxNQUFNLENBQUUsUUFBUSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUUsQ0FBQztJQUNwRSxDQUFDLENBQUM7QUFDSCxDQUFDLENBQUM7QUFFVyxRQUFBLEtBQUsscUJBRWQsTUFBTSxDQUFDLE9BQU8sQ0FBRSxjQUFjLENBQUU7S0FDakMsTUFBTSxDQUFFLENBQUUsT0FBbUMsRUFBRSxJQUFJLEVBQUcsRUFBRTtJQUN4RCxNQUFNLENBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBRSxHQUFHLElBQUksQ0FBQztJQUMxQixPQUFPLENBQUUsSUFBSSxDQUFFLEdBQUcsUUFBUSxDQUFFLEVBQUUsQ0FBRSxDQUFDO0lBQ2pDLE9BQU8sT0FBTyxDQUFDO0FBQ2hCLENBQUMsRUFBRSxFQUFFLENBQUUsRUFFUDtBQUVGLDJEQUEwRDtBQUFqRCx3SEFBQSxrQkFBa0IsT0FBQSIsInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuaW1wb3J0IHsgY29sbGVjdENvbnN0cnVjdG9ycyB9IGZyb20gJy4vY29sbGVjdENvbnN0cnVjdG9ycyc7XG5pbXBvcnQgeyBleHRyYWN0IH0gZnJvbSAnLi9leHRyYWN0JztcbmltcG9ydCB7IHBhcmVudCB9IGZyb20gJy4vcGFyZW50JztcbmltcG9ydCB7IHBpY2sgfSBmcm9tICcuL3BpY2snO1xuaW1wb3J0IHsgdG9KU09OIH0gZnJvbSAnLi90b0pTT04nO1xuaW1wb3J0IHsgcGFyc2UgfSBmcm9tICcuL3BhcnNlJztcbmltcG9ydCB7IG1lcmdlIH0gZnJvbSAnLi9tZXJnZSc7XG5cbmNvbnN0IHV0aWxzVW5XcmFwcGVkID0ge1xuXG5cdGV4dHJhY3QsXG5cdHBpY2ssXG5cblx0cGFyZW50LFxuXG5cdHRvSlNPTixcblxuXHRwYXJzZSxcblx0bWVyZ2UsXG5cblx0Z2V0IGNvbGxlY3RDb25zdHJ1Y3RvcnMgKCkge1xuXHRcdHJldHVybiBjb2xsZWN0Q29uc3RydWN0b3JzO1xuXHR9LFxuXG59O1xuXG5jb25zdCB3cmFwVGhpcyA9ICggbWV0aG9kOiBDYWxsYWJsZUZ1bmN0aW9uICkgPT4ge1xuXHRyZXR1cm4gZnVuY3Rpb24gKCB0aGlzOiBhbnksIGluc3RhbmNlOiBhbnksIC4uLmFyZ3M6IGFueVtdICkge1xuXHRcdHJldHVybiBtZXRob2QoIGluc3RhbmNlICE9PSB1bmRlZmluZWQgPyBpbnN0YW5jZSA6IHRoaXMsIC4uLmFyZ3MgKTtcblx0fTtcbn07XG5cbmV4cG9ydCBjb25zdCB1dGlsczogeyBbIGluZGV4OiBzdHJpbmcgXTogYW55IH0gPSB7XG5cblx0Li4uT2JqZWN0LmVudHJpZXMoIHV0aWxzVW5XcmFwcGVkIClcblx0XHQucmVkdWNlKCAoIG1ldGhvZHM6IHsgWyBpbmRleDogc3RyaW5nIF06IGFueSB9LCB1dGlsICkgPT4ge1xuXHRcdFx0Y29uc3QgWyBuYW1lLCBmbiBdID0gdXRpbDtcblx0XHRcdG1ldGhvZHNbIG5hbWUgXSA9IHdyYXBUaGlzKCBmbiApO1xuXHRcdFx0cmV0dXJuIG1ldGhvZHM7XG5cdFx0fSwge30gKSxcblxufTtcblxuZXhwb3J0IHsgZGVmaW5lU3RhY2tDbGVhbmVyIH0gZnJvbSAnLi9kZWZpbmVTdGFja0NsZWFuZXInO1xuIl19
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWSxDQUFDOzs7QUFFYiwrREFBNEQ7QUFDNUQsdUNBQW9DO0FBQ3BDLHFDQUFrQztBQUNsQyxpQ0FBOEI7QUFDOUIscUNBQWtDO0FBQ2xDLG1DQUFnQztBQUNoQyxtQ0FBZ0M7QUFFaEMsTUFBTSxjQUFjLEdBQUc7SUFFdEIsT0FBTyxFQUFQLGlCQUFPO0lBQ1AsSUFBSSxFQUFKLFdBQUk7SUFFSixNQUFNLEVBQU4sZUFBTTtJQUVOLE1BQU0sRUFBTixlQUFNO0lBRU4sS0FBSyxFQUFMLGFBQUs7SUFDTCxLQUFLLEVBQUwsYUFBSztJQUVMLElBQUksbUJBQW1CO1FBQ3RCLE9BQU8seUNBQW1CLENBQUM7SUFDNUIsQ0FBQztDQUVELENBQUM7QUFFRixNQUFNLFFBQVEsR0FBRyxDQUFFLE1BQXdCLEVBQUcsRUFBRTtJQUMvQyxPQUFPLFVBQXNCLFFBQWEsRUFBRSxHQUFHLElBQVc7UUFDekQsT0FBTyxNQUFNLENBQUUsUUFBUSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUUsQ0FBQztJQUNwRSxDQUFDLENBQUM7QUFDSCxDQUFDLENBQUM7QUFFVyxRQUFBLEtBQUssR0FBK0I7SUFFaEQsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFFLGNBQWMsQ0FBRTtTQUNqQyxNQUFNLENBQUUsQ0FBRSxPQUFtQyxFQUFFLElBQUksRUFBRyxFQUFFO1FBQ3hELE1BQU0sQ0FBRSxJQUFJLEVBQUUsRUFBRSxDQUFFLEdBQUcsSUFBSSxDQUFDO1FBQzFCLE9BQU8sQ0FBRSxJQUFJLENBQUUsR0FBRyxRQUFRLENBQUUsRUFBRSxDQUFFLENBQUM7UUFDakMsT0FBTyxPQUFPLENBQUM7SUFDaEIsQ0FBQyxFQUFFLEVBQUUsQ0FBRTtDQUVSLENBQUM7QUFFRiwyREFBMEQ7QUFBakQsd0hBQUEsa0JBQWtCLE9BQUEiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbmltcG9ydCB7IGNvbGxlY3RDb25zdHJ1Y3RvcnMgfSBmcm9tICcuL2NvbGxlY3RDb25zdHJ1Y3RvcnMnO1xuaW1wb3J0IHsgZXh0cmFjdCB9IGZyb20gJy4vZXh0cmFjdCc7XG5pbXBvcnQgeyBwYXJlbnQgfSBmcm9tICcuL3BhcmVudCc7XG5pbXBvcnQgeyBwaWNrIH0gZnJvbSAnLi9waWNrJztcbmltcG9ydCB7IHRvSlNPTiB9IGZyb20gJy4vdG9KU09OJztcbmltcG9ydCB7IHBhcnNlIH0gZnJvbSAnLi9wYXJzZSc7XG5pbXBvcnQgeyBtZXJnZSB9IGZyb20gJy4vbWVyZ2UnO1xuXG5jb25zdCB1dGlsc1VuV3JhcHBlZCA9IHtcblxuXHRleHRyYWN0LFxuXHRwaWNrLFxuXG5cdHBhcmVudCxcblxuXHR0b0pTT04sXG5cblx0cGFyc2UsXG5cdG1lcmdlLFxuXG5cdGdldCBjb2xsZWN0Q29uc3RydWN0b3JzICgpIHtcblx0XHRyZXR1cm4gY29sbGVjdENvbnN0cnVjdG9ycztcblx0fSxcblxufTtcblxuY29uc3Qgd3JhcFRoaXMgPSAoIG1ldGhvZDogQ2FsbGFibGVGdW5jdGlvbiApID0+IHtcblx0cmV0dXJuIGZ1bmN0aW9uICggdGhpczogYW55LCBpbnN0YW5jZTogYW55LCAuLi5hcmdzOiBhbnlbXSApIHtcblx0XHRyZXR1cm4gbWV0aG9kKCBpbnN0YW5jZSAhPT0gdW5kZWZpbmVkID8gaW5zdGFuY2UgOiB0aGlzLCAuLi5hcmdzICk7XG5cdH07XG59O1xuXG5leHBvcnQgY29uc3QgdXRpbHM6IHsgWyBpbmRleDogc3RyaW5nIF06IGFueSB9ID0ge1xuXG5cdC4uLk9iamVjdC5lbnRyaWVzKCB1dGlsc1VuV3JhcHBlZCApXG5cdFx0LnJlZHVjZSggKCBtZXRob2RzOiB7IFsgaW5kZXg6IHN0cmluZyBdOiBhbnkgfSwgdXRpbCApID0+IHtcblx0XHRcdGNvbnN0IFsgbmFtZSwgZm4gXSA9IHV0aWw7XG5cdFx0XHRtZXRob2RzWyBuYW1lIF0gPSB3cmFwVGhpcyggZm4gKTtcblx0XHRcdHJldHVybiBtZXRob2RzO1xuXHRcdH0sIHt9ICksXG5cbn07XG5cbmV4cG9ydCB7IGRlZmluZVN0YWNrQ2xlYW5lciB9IGZyb20gJy4vZGVmaW5lU3RhY2tDbGVhbmVyJztcbiJdfQ==
@@ -17,7 +17,7 @@ const parse = (self) => {
17
17
  throw new WRONG_ARGUMENTS_USED(`have to use "instance" itself: '${proto.constructor.name}' vs '${protoProto.constructor.name}'`);
18
18
  }
19
19
  const { name } = proto.constructor;
20
- const props = (0, extract_1.extract)(Object.assign({}, self));
20
+ const props = (0, extract_1.extract)({ ...self });
21
21
  delete props.constructor;
22
22
  const joint = (0, extract_1.extract)(Object.assign({}, proto));
23
23
  delete joint.constructor;
@@ -32,4 +32,4 @@ const parse = (self) => {
32
32
  };
33
33
  };
34
34
  exports.parse = parse;
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvcGFyc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWSxDQUFDOzs7QUFFYixrREFBb0Q7QUFDcEQsTUFBTSxFQUNMLDBCQUEwQixFQUMxQixvQkFBb0IsRUFDcEIsR0FBRyxvQkFBVyxDQUFDO0FBUWhCLHVDQUFvQztBQUU3QixNQUFNLEtBQUssR0FBRyxDQUFFLElBQVMsRUFBUSxFQUFFO0lBRXpDLElBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFHLENBQUM7UUFDbEMsTUFBTSxJQUFJLDBCQUEwQixDQUFDO0lBQ3RDLENBQUM7SUFFRCxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsY0FBYyxDQUFFLElBQUksQ0FBWSxDQUFDO0lBRXZELElBQUssSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEtBQUssS0FBSyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUcsQ0FBQztRQUM5RSxNQUFNLElBQUksb0JBQW9CLENBQUUsbUNBQW1DLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxTQUFTLEtBQUssQ0FBQyxXQUFXLENBQUMsSUFBSSxHQUFHLENBQUUsQ0FBQztJQUM5SCxDQUFDO0lBRUQsTUFBTSxVQUFVLEdBQVEsT0FBTyxDQUFDLGNBQWMsQ0FBRSxLQUFLLENBQUUsQ0FBQztJQUN4RCxJQUFLLFVBQVUsSUFBSSxLQUFLLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsS0FBSyxVQUFVLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRyxDQUFDO1FBQ2xHLE1BQU0sSUFBSSxvQkFBb0IsQ0FBRSxtQ0FBbUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxJQUFJLFNBQVMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEdBQUcsQ0FBRSxDQUFDO0lBQ3BJLENBQUM7SUFLRCxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQztJQUVuQyxNQUFNLEtBQUssR0FBUSxJQUFBLGlCQUFPLG9CQUFPLElBQUksRUFBSSxDQUFDO0lBRTFDLE9BQU8sS0FBSyxDQUFDLFdBQVcsQ0FBQztJQUV6QixNQUFNLEtBQUssR0FBUSxJQUFBLGlCQUFPLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBRSxFQUFFLEVBQUUsS0FBSyxDQUFFLENBQUUsQ0FBQztJQUN6RCxPQUFPLEtBQUssQ0FBQyxXQUFXLENBQUM7SUFFekIsTUFBTSxNQUFNLEdBQUcsVUFBVSxDQUFDO0lBUzFCLE9BQU87UUFFTixJQUFJO1FBRUosS0FBSztRQUdMLElBQUk7UUFDSixLQUFLO1FBRUwsS0FBSztRQUVMLE1BQU07S0FFTixDQUFDO0FBQ0gsQ0FBQyxDQUFDO0FBckRXLFFBQUEsS0FBSyxTQXFEaEIiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbmltcG9ydCB7IEVycm9yc1R5cGVzIH0gZnJvbSAnLi4vZGVzY3JpcHRvcnMvZXJyb3JzJztcbmNvbnN0IHtcblx0V1JPTkdfTU9ESUZJQ0FUSU9OX1BBVFRFUk4sXG5cdFdST05HX0FSR1VNRU5UU19VU0VEXG59ID0gRXJyb3JzVHlwZXM7XG5cbi8vIGltcG9ydCB7IGNvbnN0YW50cyB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG4vLyBjb25zdCB7XG4vLyBcdE1ORU1PTklDQSxcbi8vIFx0U3ltYm9sQ29uc3RydWN0b3JOYW1lXG4vLyB9ID0gY29uc3RhbnRzO1xuXG5pbXBvcnQgeyBleHRyYWN0IH0gZnJvbSAnLi9leHRyYWN0JztcblxuZXhwb3J0IGNvbnN0IHBhcnNlID0gKCBzZWxmOiBhbnkgKTogYW55ID0+IHtcblxuXHRpZiAoICFzZWxmIHx8ICFzZWxmLmNvbnN0cnVjdG9yICkge1xuXHRcdHRocm93IG5ldyBXUk9OR19NT0RJRklDQVRJT05fUEFUVEVSTjtcblx0fVxuXG5cdGNvbnN0IHByb3RvID0gUmVmbGVjdC5nZXRQcm90b3R5cGVPZiggc2VsZiApIGFzIG9iamVjdDtcblxuXHRpZiAoIHNlbGYuY29uc3RydWN0b3IubmFtZS50b1N0cmluZygpICE9PSBwcm90by5jb25zdHJ1Y3Rvci5uYW1lLnRvU3RyaW5nKCkgKSB7XG5cdFx0dGhyb3cgbmV3IFdST05HX0FSR1VNRU5UU19VU0VEKCBgaGF2ZSB0byB1c2UgXCJpbnN0YW5jZVwiIGl0c2VsZjogJyR7c2VsZi5jb25zdHJ1Y3Rvci5uYW1lfScgdnMgJyR7cHJvdG8uY29uc3RydWN0b3IubmFtZX0nYCApO1xuXHR9XG5cblx0Y29uc3QgcHJvdG9Qcm90bzogYW55ID0gUmVmbGVjdC5nZXRQcm90b3R5cGVPZiggcHJvdG8gKTtcblx0aWYgKCBwcm90b1Byb3RvICYmIHByb3RvLmNvbnN0cnVjdG9yLm5hbWUudG9TdHJpbmcoKSAhPT0gcHJvdG9Qcm90by5jb25zdHJ1Y3Rvci5uYW1lLnRvU3RyaW5nKCkgKSB7XG5cdFx0dGhyb3cgbmV3IFdST05HX0FSR1VNRU5UU19VU0VEKCBgaGF2ZSB0byB1c2UgXCJpbnN0YW5jZVwiIGl0c2VsZjogJyR7cHJvdG8uY29uc3RydWN0b3IubmFtZX0nIHZzICcke3Byb3RvUHJvdG8uY29uc3RydWN0b3IubmFtZX0nYCApO1xuXHR9XG5cblx0Ly8gY29uc3QgYXJncyA9IHNlbGZbU3ltYm9sQ29uc3RydWN0b3JOYW1lXSA/XG5cdC8vIHNlbGZbU3ltYm9sQ29uc3RydWN0b3JOYW1lXS5hcmdzIDogW107XG5cblx0Y29uc3QgeyBuYW1lIH0gPSBwcm90by5jb25zdHJ1Y3RvcjtcblxuXHRjb25zdCBwcm9wczogYW55ID0gZXh0cmFjdCggeyAuLi5zZWxmIH0gKTtcblx0Ly8gcHJvcHMuY29uc3RydWN0b3IgPSB1bmRlZmluZWQ7XG5cdGRlbGV0ZSBwcm9wcy5jb25zdHJ1Y3RvcjtcblxuXHRjb25zdCBqb2ludDogYW55ID0gZXh0cmFjdCggT2JqZWN0LmFzc2lnbigge30sIHByb3RvICkgKTtcblx0ZGVsZXRlIGpvaW50LmNvbnN0cnVjdG9yO1xuXG5cdGNvbnN0IHBhcmVudCA9IHByb3RvUHJvdG87XG5cdC8vIFRPRE86IGRlZXAgcGFyc2Vcblx0Ly8gbGV0IHBhcmVudDtcblx0Ly8gaWYgKCBwcm90b1Byb3RvWyBTeW1ib2xDb25zdHJ1Y3Rvck5hbWUgXSA9PT0gTU5FTU9OSUNBICkge1xuXHQvLyBcdHBhcmVudCA9IHBhcnNlKCBwcm90b1Byb3RvICk7XG5cdC8vIH0gZWxzZSB7XG5cdC8vIFx0cGFyZW50ID0gUmVmbGVjdC5nZXRQcm90b3R5cGVPZiggcHJvdG9Qcm90byApO1xuXHQvLyB9XG5cblx0cmV0dXJuIHtcblxuXHRcdG5hbWUsXG5cblx0XHRwcm9wcyxcblx0XHQvLyB0aGUgbGluZSBiZWxvdyBjb3B5IHN5bWJvbHMgYWxzb1xuXG5cdFx0c2VsZixcblx0XHRwcm90byxcblxuXHRcdGpvaW50LFxuXHRcdC8vIGFyZ3MsXG5cdFx0cGFyZW50LFxuXG5cdH07XG59O1xuIl19
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvcGFyc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWSxDQUFDOzs7QUFFYixrREFBb0Q7QUFDcEQsTUFBTSxFQUNMLDBCQUEwQixFQUMxQixvQkFBb0IsRUFDcEIsR0FBRyxvQkFBVyxDQUFDO0FBUWhCLHVDQUFvQztBQUU3QixNQUFNLEtBQUssR0FBRyxDQUFFLElBQVMsRUFBUSxFQUFFO0lBRXpDLElBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFHLENBQUM7UUFDbEMsTUFBTSxJQUFJLDBCQUEwQixDQUFDO0lBQ3RDLENBQUM7SUFFRCxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsY0FBYyxDQUFFLElBQUksQ0FBWSxDQUFDO0lBRXZELElBQUssSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEtBQUssS0FBSyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUcsQ0FBQztRQUM5RSxNQUFNLElBQUksb0JBQW9CLENBQUUsbUNBQW1DLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxTQUFTLEtBQUssQ0FBQyxXQUFXLENBQUMsSUFBSSxHQUFHLENBQUUsQ0FBQztJQUM5SCxDQUFDO0lBRUQsTUFBTSxVQUFVLEdBQVEsT0FBTyxDQUFDLGNBQWMsQ0FBRSxLQUFLLENBQUUsQ0FBQztJQUN4RCxJQUFLLFVBQVUsSUFBSSxLQUFLLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsS0FBSyxVQUFVLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRyxDQUFDO1FBQ2xHLE1BQU0sSUFBSSxvQkFBb0IsQ0FBRSxtQ0FBbUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxJQUFJLFNBQVMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEdBQUcsQ0FBRSxDQUFDO0lBQ3BJLENBQUM7SUFLRCxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQztJQUVuQyxNQUFNLEtBQUssR0FBUSxJQUFBLGlCQUFPLEVBQUUsRUFBRSxHQUFHLElBQUksRUFBRSxDQUFFLENBQUM7SUFFMUMsT0FBTyxLQUFLLENBQUMsV0FBVyxDQUFDO0lBRXpCLE1BQU0sS0FBSyxHQUFRLElBQUEsaUJBQU8sRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFFLEVBQUUsRUFBRSxLQUFLLENBQUUsQ0FBRSxDQUFDO0lBQ3pELE9BQU8sS0FBSyxDQUFDLFdBQVcsQ0FBQztJQUV6QixNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUM7SUFTMUIsT0FBTztRQUVOLElBQUk7UUFFSixLQUFLO1FBR0wsSUFBSTtRQUNKLEtBQUs7UUFFTCxLQUFLO1FBRUwsTUFBTTtLQUVOLENBQUM7QUFDSCxDQUFDLENBQUM7QUFyRFcsUUFBQSxLQUFLLFNBcURoQiIsInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuaW1wb3J0IHsgRXJyb3JzVHlwZXMgfSBmcm9tICcuLi9kZXNjcmlwdG9ycy9lcnJvcnMnO1xuY29uc3Qge1xuXHRXUk9OR19NT0RJRklDQVRJT05fUEFUVEVSTixcblx0V1JPTkdfQVJHVU1FTlRTX1VTRURcbn0gPSBFcnJvcnNUeXBlcztcblxuLy8gaW1wb3J0IHsgY29uc3RhbnRzIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbi8vIGNvbnN0IHtcbi8vIFx0TU5FTU9OSUNBLFxuLy8gXHRTeW1ib2xDb25zdHJ1Y3Rvck5hbWVcbi8vIH0gPSBjb25zdGFudHM7XG5cbmltcG9ydCB7IGV4dHJhY3QgfSBmcm9tICcuL2V4dHJhY3QnO1xuXG5leHBvcnQgY29uc3QgcGFyc2UgPSAoIHNlbGY6IGFueSApOiBhbnkgPT4ge1xuXG5cdGlmICggIXNlbGYgfHwgIXNlbGYuY29uc3RydWN0b3IgKSB7XG5cdFx0dGhyb3cgbmV3IFdST05HX01PRElGSUNBVElPTl9QQVRURVJOO1xuXHR9XG5cblx0Y29uc3QgcHJvdG8gPSBSZWZsZWN0LmdldFByb3RvdHlwZU9mKCBzZWxmICkgYXMgb2JqZWN0O1xuXG5cdGlmICggc2VsZi5jb25zdHJ1Y3Rvci5uYW1lLnRvU3RyaW5nKCkgIT09IHByb3RvLmNvbnN0cnVjdG9yLm5hbWUudG9TdHJpbmcoKSApIHtcblx0XHR0aHJvdyBuZXcgV1JPTkdfQVJHVU1FTlRTX1VTRUQoIGBoYXZlIHRvIHVzZSBcImluc3RhbmNlXCIgaXRzZWxmOiAnJHtzZWxmLmNvbnN0cnVjdG9yLm5hbWV9JyB2cyAnJHtwcm90by5jb25zdHJ1Y3Rvci5uYW1lfSdgICk7XG5cdH1cblxuXHRjb25zdCBwcm90b1Byb3RvOiBhbnkgPSBSZWZsZWN0LmdldFByb3RvdHlwZU9mKCBwcm90byApO1xuXHRpZiAoIHByb3RvUHJvdG8gJiYgcHJvdG8uY29uc3RydWN0b3IubmFtZS50b1N0cmluZygpICE9PSBwcm90b1Byb3RvLmNvbnN0cnVjdG9yLm5hbWUudG9TdHJpbmcoKSApIHtcblx0XHR0aHJvdyBuZXcgV1JPTkdfQVJHVU1FTlRTX1VTRUQoIGBoYXZlIHRvIHVzZSBcImluc3RhbmNlXCIgaXRzZWxmOiAnJHtwcm90by5jb25zdHJ1Y3Rvci5uYW1lfScgdnMgJyR7cHJvdG9Qcm90by5jb25zdHJ1Y3Rvci5uYW1lfSdgICk7XG5cdH1cblxuXHQvLyBjb25zdCBhcmdzID0gc2VsZltTeW1ib2xDb25zdHJ1Y3Rvck5hbWVdID9cblx0Ly8gc2VsZltTeW1ib2xDb25zdHJ1Y3Rvck5hbWVdLmFyZ3MgOiBbXTtcblxuXHRjb25zdCB7IG5hbWUgfSA9IHByb3RvLmNvbnN0cnVjdG9yO1xuXG5cdGNvbnN0IHByb3BzOiBhbnkgPSBleHRyYWN0KCB7IC4uLnNlbGYgfSApO1xuXHQvLyBwcm9wcy5jb25zdHJ1Y3RvciA9IHVuZGVmaW5lZDtcblx0ZGVsZXRlIHByb3BzLmNvbnN0cnVjdG9yO1xuXG5cdGNvbnN0IGpvaW50OiBhbnkgPSBleHRyYWN0KCBPYmplY3QuYXNzaWduKCB7fSwgcHJvdG8gKSApO1xuXHRkZWxldGUgam9pbnQuY29uc3RydWN0b3I7XG5cblx0Y29uc3QgcGFyZW50ID0gcHJvdG9Qcm90bztcblx0Ly8gVE9ETzogZGVlcCBwYXJzZVxuXHQvLyBsZXQgcGFyZW50O1xuXHQvLyBpZiAoIHByb3RvUHJvdG9bIFN5bWJvbENvbnN0cnVjdG9yTmFtZSBdID09PSBNTkVNT05JQ0EgKSB7XG5cdC8vIFx0cGFyZW50ID0gcGFyc2UoIHByb3RvUHJvdG8gKTtcblx0Ly8gfSBlbHNlIHtcblx0Ly8gXHRwYXJlbnQgPSBSZWZsZWN0LmdldFByb3RvdHlwZU9mKCBwcm90b1Byb3RvICk7XG5cdC8vIH1cblxuXHRyZXR1cm4ge1xuXG5cdFx0bmFtZSxcblxuXHRcdHByb3BzLFxuXHRcdC8vIHRoZSBsaW5lIGJlbG93IGNvcHkgc3ltYm9scyBhbHNvXG5cblx0XHRzZWxmLFxuXHRcdHByb3RvLFxuXG5cdFx0am9pbnQsXG5cdFx0Ly8gYXJncyxcblx0XHRwYXJlbnQsXG5cblx0fTtcbn07XG4iXX0=
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mnemonica",
3
- "version": "0.9.9977",
3
+ "version": "0.9.99778",
4
4
  "description": "abstract technique that aids information retention : instance inheritance system",
5
5
  "type": "commonjs",
6
6
  "main": "./build/index.js",
@@ -30,15 +30,17 @@
30
30
  ],
31
31
  "scripts": {
32
32
  "build": "rm -rf ./build && npx tsc --pretty --project tsconfig.json && npm run lint:src && npm run lint:test",
33
+ "build:all": "rm -rf ./build && npx tsc --pretty --project tsconfig.json && npm run decorate:ts && npm run lint:src && npm run lint:test",
33
34
  "example": "npm run build && node ./test/example.js",
34
35
  "example:ts": "npx tsc ./test-ts/*.ts && npx eslint --fix ./test-ts/*.js && node ./test-ts/test-no-types.js && node ./test-ts/test-with-types.js",
35
36
  "deopt": "node --trace-deopt --trace-opt ./node_modules/mocha/bin/mocha.js ./test/index.js",
37
+ "decorate:ts": "npx tsc --target ES2021 --moduleResolution NodeNext --module NodeNext --sourceMap ./test/decorate.ts",
36
38
  "lint": "npx eslint",
37
39
  "lint:src": "npx eslint --fix ./src",
38
40
  "lint:test": "npx eslint --fix ./test",
39
41
  "test": "mocha --allow-uncaught --enable-source-maps test/index.js",
40
- "test:cov": "npm run build && nyc --reporter=text-summary --reporter=lcov mocha --allow-uncaught --enable-source-maps --ui bdd --reporter spec ./test/index.js",
41
- "test:debug": "npx tsc --pretty --project tsconfig.json && npx mocha --allow-uncaught --enable-source-maps --reporter spec --inspect-brk test/index",
42
+ "test:cov": "npm run build:all && nyc --reporter=text-summary --reporter=lcov mocha --allow-uncaught --enable-source-maps --ui bdd --reporter spec ./test/index.js",
43
+ "debug": "npx tsc --pretty --project tsconfig.json && npx mocha --allow-uncaught --enable-source-maps --reporter spec --inspect-brk test/index",
42
44
  "test:jest": "npx jest",
43
45
  "test:jest:cov": "npx jest --collectCoverage",
44
46
  "test:jest:debug": "npx --node-options=--inspect-brk jest",
@@ -64,27 +66,27 @@
64
66
  "homepage": "https://github.com/wentout/mnemonica#readme",
65
67
  "devDependencies": {
66
68
  "@eslint/eslintrc": "^3.3.3",
67
- "@eslint/js": "^9.39.2",
69
+ "@eslint/js": "^9",
68
70
  "@types/jest": "^30.0.0",
69
- "@types/node": "^25.0.9",
70
- "@typescript-eslint/eslint-plugin": "^8.53.0",
71
- "@typescript-eslint/parser": "^8.53.0",
71
+ "@types/node": "^25.3.0",
72
+ "@typescript-eslint/eslint-plugin": "^8.56.0",
73
+ "@typescript-eslint/parser": "^8.56.0",
72
74
  "chai": "^6.2.2",
73
- "eslint": "^9.39.2",
75
+ "eslint": "^9",
74
76
  "eslint-plugin-import": "^2.32.0",
75
77
  "eslint-plugin-mocha": "^11.2.0",
76
78
  "eslint-plugin-no-arrow-this": "^1.2.0",
77
- "globals": "^17.0.0",
79
+ "globals": "^17.3.0",
78
80
  "husky": "^9.1.7",
79
81
  "jest": "^30.2.0",
80
82
  "json5": "^2.2.3",
81
83
  "lint-staged": "^16.2.7",
82
84
  "mocha": "^11.7.5",
83
85
  "mocha-lcov-reporter": "^1.3.0",
84
- "nyc": "^17.1.0",
85
- "oxlint": "^1.39.0",
86
+ "nyc": "^18.0.0",
87
+ "oxlint": "^1.49.0",
86
88
  "ts-jest": "^29.4.6",
87
- "typeomatica": "^0.3.4",
89
+ "typeomatica": "^0.3.55",
88
90
  "typescript": "^5.9.3"
89
91
  },
90
92
  "engines": {