ts-case-convert 2.3.2 → 2.3.3

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.
@@ -10,11 +10,14 @@ export declare function objectToScreamingSnake<T extends object>(obj: T): Object
10
10
  export declare function objectToScreamingSnakeNoSplitNumbers<T extends object>(obj: T): ObjectToScreamingSnake<T, false>;
11
11
  export declare function toPascal<T extends string>(term: T): ToPascal<T>;
12
12
  export declare function objectToPascal<T extends object>(obj: T): ObjectToPascal<T>;
13
- export type ToCamel<S extends string | number | symbol> = S extends string ? S extends NumericKey ? S : S extends `${infer Head}_${infer Tail}` ? `${ToCamel<Uncapitalize<Head>>}${Capitalize<ToCamel<Tail>>}` : S extends `${infer Head}-${infer Tail}` ? `${ToCamel<Uncapitalize<Head>>}${Capitalize<ToCamel<Tail>>}` : Uncapitalize<S> : never;
13
+ export type ToCamel<S extends string | number | symbol> = S extends string ? string extends S ? Uncapitalize<S> : S extends NumericKey ? S : CamelScan<CamelInitial<S>> : never;
14
+ type CamelInitial<S extends string> = S extends `${infer Head}${infer Tail}` ? Tail extends '' ? Lowercase<Head> : Head extends CapitalLetters ? `${Lowercase<Head>}${Tail}` : S : S;
15
+ type CamelScan<S extends string, Acc extends string = ''> = S extends `${infer Head}${infer Tail}` ? Head extends '_' | '-' ? Tail extends `${infer Next}${infer Rest}` ? Next extends LowercaseLetters | Numbers ? CamelScan<Rest, `${Acc}${Uppercase<Next>}`> : Extract<LowercaseLetters | Numbers, Next> extends never ? CamelScan<Tail, `${Acc}${Head}`> : `${Acc}${string}` : Tail extends '' ? `${Acc}${Head}` : `${Acc}${string}` : CamelScan<Tail, `${Acc}${Head}`> : S extends '' ? Acc : `${Acc}${string}`;
14
16
  export type ObjectToCamel<T extends object | undefined | null> = T extends undefined ? undefined : T extends null ? null : T extends Array<infer ArrayType> ? Array<ConvertArrayItem<ArrayType, 'camel'>> : T extends Uint8Array ? Uint8Array : T extends Date ? Date : {
15
17
  [K in keyof T as ToCamel<K>]: ConvertObjectValue<T[K], 'camel'>;
16
18
  };
17
- export type ToPascal<S extends string | number | symbol> = S extends string ? S extends NumericKey ? S : S extends `${infer Head}_${infer Tail}` ? `${Capitalize<ToCamel<Head>>}${Capitalize<ToCamel<Tail>>}` : S extends `${infer Head}-${infer Tail}` ? `${Capitalize<ToCamel<Head>>}${Capitalize<ToCamel<Tail>>}` : Capitalize<S> : never;
19
+ export type ToPascal<S extends string | number | symbol> = S extends string ? string extends S ? Capitalize<S> : PascalInitial<ToCamel<S>> : never;
20
+ type PascalInitial<S extends string> = S extends `${infer Head}${infer Tail}` ? Head extends LowercaseLetters ? `${Uppercase<Head>}${Tail}` : S : S;
18
21
  export type ObjectToPascal<T extends object | undefined | null> = T extends undefined ? undefined : T extends null ? null : T extends Array<infer ArrayType> ? Array<ConvertArrayItem<ArrayType, 'pascal'>> : T extends Uint8Array ? Uint8Array : T extends Date ? Date : {
19
22
  [K in keyof T as ToPascal<K>]: ConvertObjectValue<T[K], 'pascal'>;
20
23
  };
@@ -34,7 +37,7 @@ type SnakeScan<S extends string, Acc extends string, Previous extends CharacterK
34
37
  ] ? SnakeScan<AfterNumber, `${Acc}${NumberSeparator<Previous, AfterNumber, SplitNumbers>}${NumberRun}`, 'number', SplitNumbers> : never : Head extends CapitalLetters ? SnakeScan<Tail, `${Acc}${WordSeparator<Acc>}${Lowercase<Head>}`, 'upper', SplitNumbers> : Head extends LowercaseLetters ? SnakeScan<Tail, `${Acc}${Head}`, 'lower', SplitNumbers> : SnakeScan<Tail, `${Acc}${Head}`, 'other', SplitNumbers> : Acc;
35
38
  type TakeNumberRun<S extends string, Acc extends string = ''> = S extends `${infer Head}${infer Tail}` ? Head extends Numbers ? TakeNumberRun<Tail, `${Acc}${Head}`> : [Acc, S] : [Acc, ''];
36
39
  type NumberSeparator<Previous extends CharacterKind, AfterNumber extends string, SplitNumbers extends boolean> = SplitNumbers extends false ? '' : Previous extends 'lower' ? AfterNumber extends `${CapitalLetters}${LowercaseLetters}${string}` ? '' : '_' : '';
37
- type WordSeparator<Acc extends string> = Acc extends '' ? '' : Acc extends `${string}_` ? '' : '_';
40
+ type WordSeparator<Acc extends string> = Acc extends '' ? '' : '_';
38
41
  type CharacterKind = 'start' | 'lower' | 'upper' | 'number' | 'other';
39
42
  type Convert<T extends object | undefined | null, Mode extends CaseMode, SplitNumbers extends boolean> = Mode extends 'camel' ? ObjectToCamel<T> : Mode extends 'pascal' ? ObjectToPascal<T> : Mode extends 'snake' ? ObjectToSnake<T, SplitNumbers> : ObjectToScreamingSnake<T, SplitNumbers>;
40
43
  type ConvertArrayItem<T, Mode extends CaseMode, SplitNumbers extends boolean = true> = T extends object ? Convert<T, Mode, SplitNumbers> : T;
@@ -101,4 +101,4 @@ function objectToPascal(obj) {
101
101
  function isNumericKey(term) {
102
102
  return /^-?\d+(?:\.\d+)?$/.test(term);
103
103
  }
104
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZUNvbnZlcnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY2FzZUNvbnZlcnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFnREEsMEJBWUM7QUFFRCxzQ0FFQztBQWtDRCwwQkFFQztBQUVELHNEQUlDO0FBRUQsc0NBRUM7QUFFRCxrRUFJQztBQUVELDRDQUlDO0FBRUQsd0VBSUM7QUFFRCx3REFJQztBQUVELG9GQUlDO0FBRUQsNEJBUUM7QUFFRCx3Q0FFQztBQTFKRCxTQUFTLGFBQWEsQ0FDcEIsR0FBVyxFQUNYLFlBQXFDO0lBRXJDLElBQUksR0FBRyxLQUFLLElBQUksSUFBSSxPQUFPLEdBQUcsS0FBSyxXQUFXLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDMUUsT0FBTyxHQUF5QixDQUFDO0lBQ25DLENBQUM7SUFFRCxNQUFNLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFZLENBQUM7SUFDdEQsS0FBSyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUV6QyxhQUFhO1FBRWIsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBQ3JDLENBQUMsQ0FBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQTJCLElBQWUsRUFBRSxFQUFFLENBQ25ELE9BQU8sSUFBSSxLQUFLLFFBQVE7Z0JBQ3hCLENBQUMsQ0FBQyxJQUFJLFlBQVksVUFBVSxDQUFDO2dCQUM3QixDQUFDLENBQUMsSUFBSSxZQUFZLElBQUksQ0FBQztnQkFDckIsQ0FBQyxDQUFDLGFBQWEsQ0FTWCxJQUFJLEVBQUUsWUFBWSxDQUFDO2dCQUN2QixDQUFDLENB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Y3Rpb24gY29udmVydE9iamVjdDxUSW5wdXQgZXh0ZW5kcyBvYmplY3QsIFRSZXN1bHQ+KFxuICBvYmo6IFRJbnB1dCxcbiAga2V5Q29udmVydGVyOiAoYXJnOiBzdHJpbmcpID0+IHN0cmluZyxcbik6IFRSZXN1bHQge1xuICBpZiAob2JqID09PSBudWxsIHx8IHR5cGVvZiBvYmogPT09ICd1bmRlZmluZWQnIHx8IHR5cGVvZiBvYmogIT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIG9iaiBhcyB1bmtub3duIGFzIFRSZXN1bHQ7XG4gIH1cblxuICBjb25zdCBvdXQgPSAoQXJyYXkuaXNBcnJheShvYmopID8gW10gOiB7fSkgYXMgVFJlc3VsdDtcbiAgZm9yIChjb25zdCBbaywgdl0gb2YgT2JqZWN0LmVudHJpZXMob2JqKSkge1xuXG4gICAgLy8gQHRzLWlnbm9yZVxuXG4gICAgb3V0W2tleUNvbnZlcnRlcihrKV0gPSBBcnJheS5pc0FycmF5KHYpXG4gICAgICA/ICh2Lm1hcCg8QXJyYXlJdGVtIGV4dGVuZHMgb2JqZWN0PihpdGVtOiBBcnJheUl0ZW0pID0+XG4gICAgICAgICAgdHlwZW9mIGl0ZW0gPT09ICdvYmplY3QnICYmXG4gICAgICAgICAgIShpdGVtIGluc3RhbmNlb2YgVWludDhBcnJheSkgJiZcbiAgICAgICAgICAhKGl0ZW0gaW5zdGFuY2VvZiBEYXRlKVxuICAgICAgICAgICAgPyBjb252ZXJ0T2JqZWN0PFxuICAgICAgICAgICAgICAgIEFycmF5SXRlbSxcbiAgICAgICAgICAgICAgICBUUmVzdWx0IGV4dGVuZHMgT2JqZWN0VG9DYW1lbDxUSW5wdXQ+XG4gICAgICAgICAgICAgICAgICA/IE9iamVjdFRvQ2FtZWw8QXJyYXlJdGVtPlxuICAgICAgICAgICAgICAgICAgOiBUUmVzdWx0IGV4dGVuZHMgT2JqZWN0VG9QYXNjYWw8VElucHV0PlxuICAgICAgICAgICAgICAgICAgPyBPYmplY3RUb1Bhc2NhbDxBcnJheUl0ZW0+XG4gICAgICAgICAgICAgICAgICA6IFRSZXN1bHQgZXh0ZW5kcyBPYmplY3RUb1NjcmVhbWluZ1NuYWtlPFRJbnB1dD5cbiAgICAgICAgICAgICAgICAgID8gT2JqZWN0VG9TY3JlYW1pbmdTbmFrZTxBcnJheUl0ZW0+XG4gICAgICAgICAgICAgICAgICA6IE9iamVjdFRvU25ha2U8QXJyYXlJdGVtPlxuICAgICAgICAgICAgICA+KGl0ZW0sIGtleUNvbnZlcnRlcilcbiAgICAgICAgICAgIDogaXRlbSxcbiAgICAgICAgKSBhcyB1bmtub3duW10pXG4gICAgICA6IHYgaW5zdGFuY2VvZiBVaW50OEFycmF5IHx8IHYgaW5zdGFuY2VvZiBEYXRlXG4gICAgICA/IHZcbiAgICAgIDogdHlwZW9mIHYgPT09ICdvYmplY3QnXG4gICAgICA/IGNvbnZlcnRPYmplY3Q8XG4gICAgICAgICAgdHlwZW9mIHYsXG4gICAgICAgICAgVFJlc3VsdCBleHRlbmRzIE9iamVjdFRvQ2FtZWw8VElucHV0PlxuICAgICAgICAgICAgPyBPYmplY3RUb0NhbWVsPHR5cGVvZiB2PlxuICAgICAgICAgICAgOiBUUmVzdWx0IGV4dGVuZHMgT2JqZWN0VG9QYXNjYWw8VElucHV0PlxuICAgICAgICAgICAgPyBPYmplY3RUb1Bhc2NhbDx0eXBlb2Ygdj5cbiAgICAgICAgICAgIDogVFJlc3VsdCBleHRlbmRzIE9iamVjdFRvU2NyZWFtaW5nU25ha2U8VElucHV0PlxuICAgICAgICAgICAgPyBPYmplY3RUb1NjcmVhbWluZ1NuYWtlPHR5cGVvZiB2PlxuICAgICAgICAgICAgOiBPYmplY3RUb1NuYWtlPHR5cGVvZiB2PlxuICAgICAgICA+KHYsIGtleUNvbnZlcnRlcilcbiAgICAgIDogKHYgYXMgdW5rbm93bik7XG4gIH1cbiAgcmV0dXJuIG91dDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvQ2FtZWw8VCBleHRlbmRzIHN0cmluZz4odGVybTogVCk6IFRvQ2FtZWw8VD4ge1xuICBpZiAoaXNOdW1lcmljS2V5KHRlcm0pKSB7XG4gICAgcmV0dXJuIHRlcm0gYXMgVG9DYW1lbDxUPjtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgdGVybS5sZW5ndGggPT09IDFcbiAgICAgID8gdGVybS50b0xvd2VyQ2FzZSgpXG4gICAgICA6IHRlcm1cbiAgICAgICAgICAucmVwbGFjZSgvXihbQS1aXSkvLCAobSkgPT4gbVswXS50b0xvd2VyQ2FzZSgpKVxuICAgICAgICAgIC5yZXBsYWNlKC9bXy1dKFthLXowLTldKS9nLCAobSkgPT4gbVsxXS50b1VwcGVyQ2FzZSgpKVxuICApIGFzIFRvQ2FtZWw8VD47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBvYmplY3RUb0NhbWVsPFQgZXh0ZW5kcyBvYmplY3Q+KG9iajogVCk6IE9iamVjdFRvQ2FtZWw8VD4ge1xuICByZXR1cm4gY29udmVydE9iamVjdChvYmosIHRvQ2FtZWwpO1xufVxuXG5mdW5jdGlvbiB0b1NuYWtlV2l0aFNwbGl0TnVtYmVycyh0ZXJtOiBzdHJpbmcsIHNwbGl0TnVtYmVyczogYm9vbGVhbik6IHN0cmluZyB7XG4gIGlmIChpc051bWVyaWNLZXkodGVybSkpIHtcbiAgICByZXR1cm4gdGVybTtcbiAgfVxuXG4gIGxldCByZXN1bHQ6IHN0cmluZyA9IHRlcm07XG4gIGxldCBjaXJjdWl0QnJlYWtlciA9IDA7XG5cbiAgaWYgKHNwbGl0TnVtYmVycykge1xuICAgIHdoaWxlIChcbiAgICAgICgvKFthLXpdKShbMC05XSspKD8hWzAtOV0qW0EtWl1bYS16XSkvLmV4ZWMocmVzdWx0KT8ubGVuZ3RoIHx8IDApID5cbiAgICAgICAgMiAmJlxuICAgICAgY2lyY3VpdEJyZWFrZXIgPCAxMFxuICAgICkge1xuICAgICAgcmVzdWx0ID0gcmVzdWx0LnJlcGxhY2UoXG4gICAgICAgIC8oW2Etel0pKFswLTldKykoPyFbMC05XSpbQS1aXVthLXpdKS8sXG4gICAgICAgIChfYWxsLCBoZWFkOiBzdHJpbmcsIG51bWJlcnM6IHN0cmluZykgPT5cbiAgICAgICAgICBgJHtoZWFkLnRvTG93ZXJDYXNlKCl9XyR7bnVtYmVycy50b0xvd2VyQ2FzZSgpfWAsXG4gICAgICApO1xuXG4gICAgICBjaXJjdWl0QnJlYWtlciArPSAxO1xuICAgIH1cbiAgfVxuXG4gIC8vIE1hdGNoIG9ubHkgdGhlIGNoYXJhY3RlciBiZWZvcmUgYSBjYXBpdGFsIHRvIGF2b2lkIHJlc2Nhbm5pbmcgbG9uZyBwcmVmaXhlcy5cbiAgcmVzdWx0ID0gcmVzdWx0LnJlcGxhY2UoLyguKSg/PVtBLVpdKS9nLCAoaGVhZDogc3RyaW5nKSA9PlxuICAgIGNpcmN1aXRCcmVha2VyKysgPCAxMCA/IGAke2hlYWR9X2AgOiBoZWFkLFxuICApO1xuXG4gIHJldHVybiByZXN1bHQudG9Mb3dlckNhc2UoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvU25ha2U8VCBleHRlbmRzIHN0cmluZz4odGVybTogVCk6IFRvU25ha2U8VD4ge1xuICByZXR1cm4gdG9TbmFrZVdpdGhTcGxpdE51bWJlcnModGVybSwgdHJ1ZSkgYXMgVG9TbmFrZTxUPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvU25ha2VOb1NwbGl0TnVtYmVyczxUIGV4dGVuZHMgc3RyaW5nPihcbiAgdGVybTogVCxcbik6IFRvU25ha2U8VCwgZmFsc2U+IHtcbiAgcmV0dXJuIHRvU25ha2VXaXRoU3BsaXROdW1iZXJzKHRlcm0sIGZhbHNlKSBhcyBUb1NuYWtlPFQsIGZhbHNlPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG9iamVjdFRvU25ha2U8VCBleHRlbmRzIG9iamVjdD4ob2JqOiBUKTogT2JqZWN0VG9TbmFrZTxUPiB7XG4gIHJldHVybiBjb252ZXJ0T2JqZWN0KG9iaiwgKGtleSkgPT4gdG9TbmFrZVdpdGhTcGxpdE51bWJlcnMoa2V5LCB0cnVlKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBvYmplY3RUb1NuYWtlTm9TcGxpdE51bWJlcnM8VCBleHRlbmRzIG9iamVjdD4oXG4gIG9iajogVCxcbik6IE9iamVjdFRvU25ha2U8VCwgZmFsc2U+IHtcbiAgcmV0dXJuIGNvbnZlcnRPYmplY3Qob2JqLCAoa2V5KSA9PiB0b1NuYWtlV2l0aFNwbGl0TnVtYmVycyhrZXksIGZhbHNlKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0b1NjcmVhbWluZ1NuYWtlPFQgZXh0ZW5kcyBzdHJpbmc+KFxuICB0ZXJtOiBULFxuKTogVG9TY3JlYW1pbmdTbmFrZTxUPiB7XG4gIHJldHVybiB0b1NuYWtlKHRlcm0pLnRvVXBwZXJDYXNlKCkgYXMgVG9TY3JlYW1pbmdTbmFrZTxUPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvU2NyZWFtaW5nU25ha2VOb1NwbGl0TnVtYmVyczxUIGV4dGVuZHMgc3RyaW5nPihcbiAgdGVybTogVCxcbik6IFRvU2NyZWFtaW5nU25ha2U8VCwgZmFsc2U+IHtcbiAgcmV0dXJuIHRvU25ha2VOb1NwbGl0TnVtYmVycyh0ZXJtKS50b1VwcGVyQ2FzZSgpIGFzIFRvU2NyZWFtaW5nU25ha2U8VCwgZmFsc2U+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gb2JqZWN0VG9TY3JlYW1pbmdTbmFrZTxUIGV4dGVuZHMgb2JqZWN0PihcbiAgb2JqOiBULFxuKTogT2JqZWN0VG9TY3JlYW1pbmdTbmFrZTxUPiB7XG4gIHJldHVybiBjb252ZXJ0T2JqZWN0KG9iaiwgdG9TY3JlYW1pbmdTbmFrZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBvYmplY3RUb1NjcmVhbWluZ1NuYWtlTm9TcGxpdE51bWJlcnM8VCBleHRlbmRzIG9iamVjdD4oXG4gIG9iajogVCxcbik6IE9iamVjdFRvU2NyZWFtaW5nU25ha2U8VCwgZmFsc2U+IHtcbiAgcmV0dXJuIGNvbnZlcnRPYmplY3Qob2JqLCB0b1NjcmVhbWluZ1NuYWtlTm9TcGxpdE51bWJlcnMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdG9QYXNjYWw8VCBleHRlbmRzIHN0cmluZz4odGVybTogVCk6IFRvUGFzY2FsPFQ+IHtcbiAgaWYgKGlzTnVtZXJpY0tleSh0ZXJtKSkge1xuICAgIHJldHVybiB0ZXJtIGFzIFRvUGFzY2FsPFQ+O1xuICB9XG5cbiAgcmV0dXJuIHRvQ2FtZWwodGVybSkucmVwbGFjZSgvXihbYS16XSkvLCAobSkgPT5cbiAgICBtWzBdLnRvVXBwZXJDYXNlKCksXG4gICkgYXMgVG9QYXNjYWw8VD47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBvYmplY3RUb1Bhc2NhbDxUIGV4dGVuZHMgb2JqZWN0PihvYmo6IFQpOiBPYmplY3RUb1Bhc2NhbDxUPiB7XG4gIHJldHVybiBjb252ZXJ0T2JqZWN0KG9iaiwgdG9QYXNjYWwpO1xufVxuXG5leHBvcnQgdHlwZSBUb0NhbWVsPFMgZXh0ZW5kcyBzdHJpbmcgfCBudW1iZXIgfCBzeW1ib2w+ID0gUyBleHRlbmRzIHN0cmluZ1xuICA/IFMgZXh0ZW5kcyBOdW1lcmljS2V5XG4gICAgPyBTXG4gICAgOiBTIGV4dGVuZHMgYCR7aW5mZXIgSGVhZH1fJHtpbmZlciBUYWlsfWBcbiAgICA/IGAke1RvQ2FtZWw8VW5jYXBpdGFsaXplPEhlYWQ+Pn0ke0NhcGl0YWxpemU8VG9DYW1lbDxUYWlsPj59YFxuICAgIDogUyBleHRlbmRzIGAke2luZmVyIEhlYWR9LSR7aW5mZXIgVGFpbH1gXG4gICAgPyBgJHtUb0NhbWVsPFVuY2FwaXRhbGl6ZTxIZWFkPj59JHtDYXBpdGFsaXplPFRvQ2FtZWw8VGFpbD4+fWBcbiAgICA6IFVuY2FwaXRhbGl6ZTxTPlxuICA6IG5ldmVyO1xuXG5leHBvcnQgdHlwZSBPYmplY3RUb0NhbWVsPFQgZXh0ZW5kcyBvYmplY3QgfCB1bmRlZmluZWQgfCBudWxsPiA9XG4gIFQgZXh0ZW5kcyB1bmRlZmluZWRcbiAgICA/IHVuZGVmaW5lZFxuICAgIDogVCBleHRlbmRzIG51bGxcbiAgICA/IG51bGxcbiAgICA6IFQgZXh0ZW5kcyBBcnJheTxpbmZlciBBcnJheVR5cGU+XG4gICAgPyBBcnJheTxDb252ZXJ0QXJyYXlJdGVtPEFycmF5VHlwZSwgJ2NhbWVsJz4+XG4gICAgOiBUIGV4dGVuZHMgVWludDhBcnJheVxuICAgID8gVWludDhBcnJheVxuICAgIDogVCBleHRlbmRzIERhdGVcbiAgICA/IERhdGVcbiAgICA6IHtcbiAgICAgICAgW0sgaW4ga2V5b2YgVCBhcyBUb0NhbWVsPEs+XTogQ29udmVydE9iamVjdFZhbHVlPFRbS10sICdjYW1lbCc+O1xuICAgICAgfTtcblxuZXhwb3J0IHR5cGUgVG9QYXNjYWw8UyBleHRlbmRzIHN0cmluZyB8IG51bWJlciB8IHN5bWJvbD4gPSBTIGV4dGVuZHMgc3RyaW5nXG4gID8gUyBleHRlbmRzIE51bWVyaWNLZXlcbiAgICA/IFNcbiAgICA6IFMgZXh0ZW5kcyBgJHtpbmZlciBIZWFkfV8ke2luZmVyIFRhaWx9YFxuICAgID8gYCR7Q2FwaXRhbGl6ZTxUb0NhbWVsPEhlYWQ+Pn0ke0NhcGl0YWxpemU8VG9DYW1lbDxUYWlsPj59YFxuICAgIDogUyBleHRlbmRzIGAke2luZmVyIEhlYWR9LSR7aW5mZXIgVGFpbH1gXG4gICAgPyBgJHtDYXBpdGFsaXplPFRvQ2FtZWw8SGVhZD4+fSR7Q2FwaXRhbGl6ZTxUb0NhbWVsPFRhaWw+Pn1gXG4gICAgOiBDYXBpdGFsaXplPFM+XG4gIDogbmV2ZXI7XG5cbmV4cG9ydCB0eXBlIE9iamVjdFRvUGFzY2FsPFQgZXh0ZW5kcyBvYmplY3QgfCB1bmRlZmluZWQgfCBudWxsPiA9XG4gIFQgZXh0ZW5kcyB1bmRlZmluZWRcbiAgICA/IHVuZGVmaW5lZFxuICAgIDogVCBleHRlbmRzIG51bGxcbiAgICA/IG51bGxcbiAgICA6IFQgZXh0ZW5kcyBBcnJheTxpbmZlciBBcnJheVR5cGU+XG4gICAgPyBBcnJheTxDb252ZXJ0QXJyYXlJdGVtPEFycmF5VHlwZSwgJ3Bhc2NhbCc+PlxuICAgIDogVCBleHRlbmRzIFVpbnQ4QXJyYXlcbiAgICA/IFVpbnQ4QXJyYXlcbiAgICA6IFQgZXh0ZW5kcyBEYXRlXG4gICAgPyBEYXRlXG4gICAgOiB7XG4gICAgICAgIFtLIGluIGtleW9mIFQgYXMgVG9QYXNjYWw8Sz5dOiBDb252ZXJ0T2JqZWN0VmFsdWU8VFtLXSwgJ3Bhc2NhbCc+O1xuICAgICAgfTtcblxuZXhwb3J0IHR5cGUgVG9TbmFrZTxcbiAgUyBleHRlbmRzIHN0cmluZyB8IG51bWJlciB8IHN5bWJvbCxcbiAgU3BsaXROdW1iZXJzIGV4dGVuZHMgYm9vbGVhbiA9IHRydWUsXG4+ID0gUyBleHRlbmRzIHN0cmluZ1xuICA/IHN0cmluZyBleHRlbmRzIFNcbiAgICA/IHN0cmluZ1xuICAgIDogUyBleHRlbmRzIE51bWVyaWNLZXlcbiAgICA/IFNcbiAgICA6IFNuYWtlU2NhbjxTLCAnJywgJ3N0YXJ0JywgU3BsaXROdW1iZXJzPlxuICA6IG5ldmVyO1xuXG5leHBvcnQgdHlwZSBPYmplY3RUb1NuYWtlPFxuICBUIGV4dGVuZHMgb2JqZWN0IHwgdW5kZWZpbmVkIHwgbnVsbCxcbiAgU3BsaXROdW1iZXJzIGV4dGVuZHMgYm9vbGVhbiA9IHRydWUsXG4+ID1cbiAgVCBleHRlbmRzIHVuZGVmaW5lZFxuICAgID8gdW5kZWZpbmVkXG4gICAgOiBUIGV4dGVuZHMgbnVsbFxuICAgID8gbnVsbFxuICAgIDogVCBleHRlbmRzIEFycmF5PGluZmVyIEFycmF5VHlwZT5cbiAgICA/IEFycmF5PENvbnZlcnRBcnJheUl0ZW08QXJyYXlUeXBlLCAnc25ha2UnLCBTcGxpdE51bWJlcnM+PlxuICAgIDogVCBleHRlbmRzIFVpbnQ4QXJyYXlcbiAgICA/IFVpbnQ4QXJyYXlcbiAgICA6IFQgZXh0ZW5kcyBEYXRlXG4gICAgPyBEYXRlXG4gICAgOiB7XG4gICAgICAgIFtLIGluIGtleW9mIFQgYXMgVG9TbmFrZTxLLCBTcGxpdE51bWJlcnM+XTogQ29udmVydE9iamVjdFZhbHVlPFxuICAgICAgICAgIFRbS10sXG4gICAgICAgICAgJ3NuYWtlJyxcbiAgICAgICAgICBTcGxpdE51bWJlcnNcbiAgICAgICAgPjtcbiAgICAgIH07XG5cbmV4cG9ydCB0eXBlIFRvU2NyZWFtaW5nU25ha2U8XG4gIFMgZXh0ZW5kcyBzdHJpbmcgfCBudW1iZXIgfCBzeW1ib2wsXG4gIFNwbGl0TnVtYmVycyBleHRlbmRzIGJvb2xlYW4gPSB0cnVlLFxuPiA9IFVwcGVyY2FzZTxUb1NuYWtlPFMsIFNwbGl0TnVtYmVycz4+O1xuXG5leHBvcnQgdHlwZSBPYmplY3RUb1NjcmVhbWluZ1NuYWtlPFxuICBUIGV4dGVuZHMgb2JqZWN0IHwgdW5kZWZpbmVkIHwgbnVsbCxcbiAgU3BsaXROdW1iZXJzIGV4dGVuZHMgYm9vbGVhbiA9IHRydWUsXG4+ID1cbiAgVCBleHRlbmRzIHVuZGVmaW5lZFxuICAgID8gdW5kZWZpbmVkXG4gICAgOiBUIGV4dGVuZHMgbnVsbFxuICAgID8gbnVsbFxuICAgIDogVCBleHRlbmRzIEFycmF5PGluZmVyIEFycmF5VHlwZT5cbiAgICA/IEFycmF5PENvbnZlcnRBcnJheUl0ZW08QXJyYXlUeXBlLCAnc2NyZWFtaW5nU25ha2UnLCBTcGxpdE51bWJlcnM+PlxuICAgIDogVCBleHRlbmRzIFVpbnQ4QXJyYXlcbiAgICA/IFVpbnQ4QXJyYXlcbiAgICA6IFQgZXh0ZW5kcyBEYXRlXG4gICAgPyBEYXRlXG4gICAgOiB7XG4gICAgICAgIFtLIGluIGtleW9mIFQgYXMgVG9TY3JlYW1pbmdTbmFrZTxLLCBTcGxpdE51bWJlcnM+XTogQ29udmVydE9iamVjdFZhbHVlPFxuICAgICAgICAgIFRbS10sXG4gICAgICAgICAgJ3NjcmVhbWluZ1NuYWtlJyxcbiAgICAgICAgICBTcGxpdE51bWJlcnNcbiAgICAgICAgPjtcbiAgICAgIH07XG5cbnR5cGUgQ2FzZU1vZGUgPSAnY2FtZWwnIHwgJ3Bhc2NhbCcgfCAnc25ha2UnIHwgJ3NjcmVhbWluZ1NuYWtlJztcblxudHlwZSBOdW1lcmljS2V5ID0gYCR7bnVtYmVyfWA7XG5cbnR5cGUgU25ha2VTY2FuPFxuICBTIGV4dGVuZHMgc3RyaW5nLFxuICBBY2MgZXh0ZW5kcyBzdHJpbmcsXG4gIFByZXZpb3VzIGV4dGVuZHMgQ2hhcmFjdGVyS2luZCxcbiAgU3BsaXROdW1iZXJzIGV4dGVuZHMgYm9vbGVhbixcbj4gPSBTIGV4dGVuZHMgYCR7aW5mZXIgSGVhZH0ke2luZmVyIFRhaWx9YFxuICA/IEhlYWQgZXh0ZW5kcyBOdW1iZXJzXG4gICAgPyBUYWtlTnVtYmVyUnVuPFM+IGV4dGVuZHMgW1xuICAgICAgICBpbmZlciBOdW1iZXJSdW4gZXh0ZW5kcyBzdHJpbmcsXG4gICAgICAgIGluZmVyIEFmdGVyTnVtYmVyIGV4dGVuZHMgc3RyaW5nLFxuICAgICAgXVxuICAgICAgPyBTbmFrZVNjYW48XG4gICAgICAgICAgQWZ0ZXJOdW1iZXIsXG4gICAgICAgICAgYCR7QWNjfSR7TnVtYmVyU2VwYXJhdG9yPFxuICAgICAgICAgICAgUHJldmlvdXMsXG4gICAgICAgICAgICBBZnRlck51bWJlcixcbiAgICAgICAgICAgIFNwbGl0TnVtYmVyc1xuICAgICAgICAgID59JHtOdW1iZXJSdW59YCxcbiAgICAgICAgICAnbnVtYmVyJyxcbiAgICAgICAgICBTcGxpdE51bWJlcnNcbiAgICAgICAgPlxuICAgICAgOiBuZXZlclxuICAgIDogSGVhZCBleHRlbmRzIENhcGl0YWxMZXR0ZXJzXG4gICAgPyBTbmFrZVNjYW48XG4gICAgICAgIFRhaWwsXG4gICAgICAgIGAke0FjY30ke1dvcmRTZXBhcmF0b3I8QWNjPn0ke0xvd2VyY2FzZTxIZWFkPn1gLFxuICAgICAgICAndXBwZXInLFxuICAgICAgICBTcGxpdE51bWJlcnNcbiAgICAgID5cbiAgICA6IEhlYWQgZXh0ZW5kcyBMb3dlcmNhc2VMZXR0ZXJzXG4gICAgPyBTbmFrZVNjYW48VGFpbCwgYCR7QWNjfSR7SGVhZH1gLCAnbG93ZXInLCBTcGxpdE51bWJlcnM+XG4gICAgOiBTbmFrZVNjYW48VGFpbCwgYCR7QWNjfSR7SGVhZH1gLCAnb3RoZXInLCBTcGxpdE51bWJlcnM+XG4gIDogQWNjO1xuXG50eXBlIFRha2VOdW1iZXJSdW48XG4gIFMgZXh0ZW5kcyBzdHJpbmcsXG4gIEFjYyBleHRlbmRzIHN0cmluZyA9ICcnLFxuPiA9IFMgZXh0ZW5kcyBgJHtpbmZlciBIZWFkfSR7aW5mZXIgVGFpbH1gXG4gID8gSGVhZCBleHRlbmRzIE51bWJlcnNcbiAgICA/IFRha2VOdW1iZXJSdW48VGFpbCwgYCR7QWNjfSR7SGVhZH1gPlxuICAgIDogW0FjYywgU11cbiAgOiBbQWNjLCAnJ107XG5cbnR5cGUgTnVtYmVyU2VwYXJhdG9yPFxuICBQcmV2aW91cyBleHRlbmRzIENoYXJhY3RlcktpbmQsXG4gIEFmdGVyTnVtYmVyIGV4dGVuZHMgc3RyaW5nLFxuICBTcGxpdE51bWJlcnMgZXh0ZW5kcyBib29sZWFuLFxuPiA9IFNwbGl0TnVtYmVycyBleHRlbmRzIGZhbHNlXG4gID8gJydcbiAgOiBQcmV2aW91cyBleHRlbmRzICdsb3dlcidcbiAgPyBBZnRlck51bWJlciBleHRlbmRzIGAke0NhcGl0YWxMZXR0ZXJzfSR7TG93ZXJjYXNlTGV0dGVyc30ke3N0cmluZ31gXG4gICAgPyAnJ1xuICAgIDogJ18nXG4gIDogJyc7XG5cbnR5cGUgV29yZFNlcGFyYXRvcjxBY2MgZXh0ZW5kcyBzdHJpbmc+ID0gQWNjIGV4dGVuZHMgJydcbiAgPyAnJ1xuICA6IEFjYyBleHRlbmRzIGAke3N0cmluZ31fYFxuICA/ICcnXG4gIDogJ18nO1xuXG50eXBlIENoYXJhY3RlcktpbmQgPSAnc3RhcnQnIHwgJ2xvd2VyJyB8ICd1cHBlcicgfCAnbnVtYmVyJyB8ICdvdGhlcic7XG5cbnR5cGUgQ29udmVydDxcbiAgVCBleHRlbmRzIG9iamVjdCB8IHVuZGVmaW5lZCB8IG51bGwsXG4gIE1vZGUgZXh0ZW5kcyBDYXNlTW9kZSxcbiAgU3BsaXROdW1iZXJzIGV4dGVuZHMgYm9vbGVhbixcbj4gPVxuICBNb2RlIGV4dGVuZHMgJ2NhbWVsJ1xuICAgID8gT2JqZWN0VG9DYW1lbDxUPlxuICAgIDogTW9kZSBleHRlbmRzICdwYXNjYWwnXG4gICAgPyBPYmplY3RUb1Bhc2NhbDxUPlxuICAgIDogTW9kZSBleHRlbmRzICdzbmFrZSdcbiAgICA/IE9iamVjdFRvU25ha2U8VCwgU3BsaXROdW1iZXJzPlxuICAgIDogT2JqZWN0VG9TY3JlYW1pbmdTbmFrZTxULCBTcGxpdE51bWJlcnM+O1xuXG50eXBlIENvbnZlcnRBcnJheUl0ZW08XG4gIFQsXG4gIE1vZGUgZXh0ZW5kcyBDYXNlTW9kZSxcbiAgU3BsaXROdW1iZXJzIGV4dGVuZHMgYm9vbGVhbiA9IHRydWUsXG4+ID0gVCBleHRlbmRzIG9iamVjdFxuICA/IENvbnZlcnQ8VCwgTW9kZSwgU3BsaXROdW1iZXJzPlxuICA6IFQ7XG5cbnR5cGUgQ29udmVydE9iamVjdFZhbHVlPFxuICBULFxuICBNb2RlIGV4dGVuZHMgQ2FzZU1vZGUsXG4gIFNwbGl0TnVtYmVycyBleHRlbmRzIGJvb2xlYW4gPSB0cnVlLFxuPiA9IFQgZXh0ZW5kcyBBcnJheTxpbmZlciBBcnJheVR5cGU+XG4gID8gQXJyYXk8Q29udmVydEFycmF5SXRlbTxBcnJheVR5cGUsIE1vZGUsIFNwbGl0TnVtYmVycz4+XG4gIDogVCBleHRlbmRzIG9iamVjdCB8IHVuZGVmaW5lZCB8IG51bGxcbiAgPyBDb252ZXJ0PFQsIE1vZGUsIFNwbGl0TnVtYmVycz5cbiAgOiBUO1xuXG5mdW5jdGlvbiBpc051bWVyaWNLZXkodGVybTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiAvXi0/XFxkKyg/OlxcLlxcZCspPyQvLnRlc3QodGVybSk7XG59XG5cbnR5cGUgQ2FwaXRhbExldHRlcnMgPVxuICB8ICdBJ1xuICB8ICdCJ1xuICB8ICdDJ1xuICB8ICdEJ1xuICB8ICdFJ1xuICB8ICdGJ1xuICB8ICdHJ1xuICB8ICdIJ1xuICB8ICdJJ1xuICB8ICdKJ1xuICB8ICdLJ1xuICB8ICdMJ1xuICB8ICdNJ1xuICB8ICdOJ1xuICB8ICdPJ1xuICB8ICdQJ1xuICB8ICdRJ1xuICB8ICdSJ1xuICB8ICdTJ1xuICB8ICdUJ1xuICB8ICdVJ1xuICB8ICdWJ1xuICB8ICdXJ1xuICB8ICdYJ1xuICB8ICdZJ1xuICB8ICdaJztcblxudHlwZSBMb3dlcmNhc2VMZXR0ZXJzID1cbiAgfCAnYSdcbiAgfCAnYidcbiAgfCAnYydcbiAgfCAnZCdcbiAgfCAnZSdcbiAgfCAnZidcbiAgfCAnZydcbiAgfCAnaCdcbiAgfCAnaSdcbiAgfCAnaidcbiAgfCAnaydcbiAgfCAnbCdcbiAgfCAnbSdcbiAgfCAnbidcbiAgfCAnbydcbiAgfCAncCdcbiAgfCAncSdcbiAgfCAncidcbiAgfCAncydcbiAgfCAndCdcbiAgfCAndSdcbiAgfCAndidcbiAgfCAndydcbiAgfCAneCdcbiAgfCAneSdcbiAgfCAneic7XG5cbnR5cGUgTnVtYmVycyA9ICcwJyB8ICcxJyB8ICcyJyB8ICczJyB8ICc0JyB8ICc1JyB8ICc2JyB8ICc3JyB8ICc4JyB8ICc5JztcbiJdfQ==
104
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZUNvbnZlcnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY2FzZUNvbnZlcnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFnREEsMEJBWUM7QUFFRCxzQ0FFQztBQWtDRCwwQkFFQztBQUVELHNEQUlDO0FBRUQsc0NBRUM7QUFFRCxrRUFJQztBQUVELDRDQUlDO0FBRUQsd0VBSUM7QUFFRCx3REFJQztBQUVELG9GQUlDO0FBRUQsNEJBUUM7QUFFRCx3Q0FFQztBQTFKRCxTQUFTLGFBQWEsQ0FDcEIsR0FBVyxFQUNYLFlBQXFDO0lBRXJDLElBQUksR0FBRyxLQUFLLElBQUksSUFBSSxPQUFPLEdBQUcsS0FBSyxXQUFXLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDMUUsT0FBTyxHQUF5QixDQUFDO0lBQ25DLENBQUM7SUFFRCxNQUFNLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFZLENBQUM7SUFDdEQsS0FBSyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUV6QyxhQUFhO1FBRWIsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBQ3JDLENBQUMsQ0FBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQTJCLElBQWUsRUFBRSxFQUFFLENBQ25ELE9BQU8sSUFBSSxLQUFLLFFBQVE7Z0JBQ3hCLENBQUMsQ0FBQyxJQUFJLFlBQVksVUFBVSxDQUFDO2dCQUM3QixDQUFDLENBQUMsSUFBSSxZQUFZLElBQUksQ0FBQztnQkFDckIsQ0FBQyxDQUFDLGFBQWEsQ0FTWCxJQUFJLEVBQUUsWUFBWSxDQUFDO2dCQUN2QixDQUFDLENB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Y3Rpb24gY29udmVydE9iamVjdDxUSW5wdXQgZXh0ZW5kcyBvYmplY3QsIFRSZXN1bHQ+KFxuICBvYmo6IFRJbnB1dCxcbiAga2V5Q29udmVydGVyOiAoYXJnOiBzdHJpbmcpID0+IHN0cmluZyxcbik6IFRSZXN1bHQge1xuICBpZiAob2JqID09PSBudWxsIHx8IHR5cGVvZiBvYmogPT09ICd1bmRlZmluZWQnIHx8IHR5cGVvZiBvYmogIT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIG9iaiBhcyB1bmtub3duIGFzIFRSZXN1bHQ7XG4gIH1cblxuICBjb25zdCBvdXQgPSAoQXJyYXkuaXNBcnJheShvYmopID8gW10gOiB7fSkgYXMgVFJlc3VsdDtcbiAgZm9yIChjb25zdCBbaywgdl0gb2YgT2JqZWN0LmVudHJpZXMob2JqKSkge1xuXG4gICAgLy8gQHRzLWlnbm9yZVxuXG4gICAgb3V0W2tleUNvbnZlcnRlcihrKV0gPSBBcnJheS5pc0FycmF5KHYpXG4gICAgICA/ICh2Lm1hcCg8QXJyYXlJdGVtIGV4dGVuZHMgb2JqZWN0PihpdGVtOiBBcnJheUl0ZW0pID0+XG4gICAgICAgICAgdHlwZW9mIGl0ZW0gPT09ICdvYmplY3QnICYmXG4gICAgICAgICAgIShpdGVtIGluc3RhbmNlb2YgVWludDhBcnJheSkgJiZcbiAgICAgICAgICAhKGl0ZW0gaW5zdGFuY2VvZiBEYXRlKVxuICAgICAgICAgICAgPyBjb252ZXJ0T2JqZWN0PFxuICAgICAgICAgICAgICAgIEFycmF5SXRlbSxcbiAgICAgICAgICAgICAgICBUUmVzdWx0IGV4dGVuZHMgT2JqZWN0VG9DYW1lbDxUSW5wdXQ+XG4gICAgICAgICAgICAgICAgICA/IE9iamVjdFRvQ2FtZWw8QXJyYXlJdGVtPlxuICAgICAgICAgICAgICAgICAgOiBUUmVzdWx0IGV4dGVuZHMgT2JqZWN0VG9QYXNjYWw8VElucHV0PlxuICAgICAgICAgICAgICAgICAgPyBPYmplY3RUb1Bhc2NhbDxBcnJheUl0ZW0+XG4gICAgICAgICAgICAgICAgICA6IFRSZXN1bHQgZXh0ZW5kcyBPYmplY3RUb1NjcmVhbWluZ1NuYWtlPFRJbnB1dD5cbiAgICAgICAgICAgICAgICAgID8gT2JqZWN0VG9TY3JlYW1pbmdTbmFrZTxBcnJheUl0ZW0+XG4gICAgICAgICAgICAgICAgICA6IE9iamVjdFRvU25ha2U8QXJyYXlJdGVtPlxuICAgICAgICAgICAgICA+KGl0ZW0sIGtleUNvbnZlcnRlcilcbiAgICAgICAgICAgIDogaXRlbSxcbiAgICAgICAgKSBhcyB1bmtub3duW10pXG4gICAgICA6IHYgaW5zdGFuY2VvZiBVaW50OEFycmF5IHx8IHYgaW5zdGFuY2VvZiBEYXRlXG4gICAgICA/IHZcbiAgICAgIDogdHlwZW9mIHYgPT09ICdvYmplY3QnXG4gICAgICA/IGNvbnZlcnRPYmplY3Q8XG4gICAgICAgICAgdHlwZW9mIHYsXG4gICAgICAgICAgVFJlc3VsdCBleHRlbmRzIE9iamVjdFRvQ2FtZWw8VElucHV0PlxuICAgICAgICAgICAgPyBPYmplY3RUb0NhbWVsPHR5cGVvZiB2PlxuICAgICAgICAgICAgOiBUUmVzdWx0IGV4dGVuZHMgT2JqZWN0VG9QYXNjYWw8VElucHV0PlxuICAgICAgICAgICAgPyBPYmplY3RUb1Bhc2NhbDx0eXBlb2Ygdj5cbiAgICAgICAgICAgIDogVFJlc3VsdCBleHRlbmRzIE9iamVjdFRvU2NyZWFtaW5nU25ha2U8VElucHV0PlxuICAgICAgICAgICAgPyBPYmplY3RUb1NjcmVhbWluZ1NuYWtlPHR5cGVvZiB2PlxuICAgICAgICAgICAgOiBPYmplY3RUb1NuYWtlPHR5cGVvZiB2PlxuICAgICAgICA+KHYsIGtleUNvbnZlcnRlcilcbiAgICAgIDogKHYgYXMgdW5rbm93bik7XG4gIH1cbiAgcmV0dXJuIG91dDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvQ2FtZWw8VCBleHRlbmRzIHN0cmluZz4odGVybTogVCk6IFRvQ2FtZWw8VD4ge1xuICBpZiAoaXNOdW1lcmljS2V5KHRlcm0pKSB7XG4gICAgcmV0dXJuIHRlcm0gYXMgVG9DYW1lbDxUPjtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgdGVybS5sZW5ndGggPT09IDFcbiAgICAgID8gdGVybS50b0xvd2VyQ2FzZSgpXG4gICAgICA6IHRlcm1cbiAgICAgICAgICAucmVwbGFjZSgvXihbQS1aXSkvLCAobSkgPT4gbVswXS50b0xvd2VyQ2FzZSgpKVxuICAgICAgICAgIC5yZXBsYWNlKC9bXy1dKFthLXowLTldKS9nLCAobSkgPT4gbVsxXS50b1VwcGVyQ2FzZSgpKVxuICApIGFzIFRvQ2FtZWw8VD47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBvYmplY3RUb0NhbWVsPFQgZXh0ZW5kcyBvYmplY3Q+KG9iajogVCk6IE9iamVjdFRvQ2FtZWw8VD4ge1xuICByZXR1cm4gY29udmVydE9iamVjdChvYmosIHRvQ2FtZWwpO1xufVxuXG5mdW5jdGlvbiB0b1NuYWtlV2l0aFNwbGl0TnVtYmVycyh0ZXJtOiBzdHJpbmcsIHNwbGl0TnVtYmVyczogYm9vbGVhbik6IHN0cmluZyB7XG4gIGlmIChpc051bWVyaWNLZXkodGVybSkpIHtcbiAgICByZXR1cm4gdGVybTtcbiAgfVxuXG4gIGxldCByZXN1bHQ6IHN0cmluZyA9IHRlcm07XG4gIGxldCBjaXJjdWl0QnJlYWtlciA9IDA7XG5cbiAgaWYgKHNwbGl0TnVtYmVycykge1xuICAgIHdoaWxlIChcbiAgICAgICgvKFthLXpdKShbMC05XSspKD8hWzAtOV0qW0EtWl1bYS16XSkvLmV4ZWMocmVzdWx0KT8ubGVuZ3RoIHx8IDApID5cbiAgICAgICAgMiAmJlxuICAgICAgY2lyY3VpdEJyZWFrZXIgPCAxMFxuICAgICkge1xuICAgICAgcmVzdWx0ID0gcmVzdWx0LnJlcGxhY2UoXG4gICAgICAgIC8oW2Etel0pKFswLTldKykoPyFbMC05XSpbQS1aXVthLXpdKS8sXG4gICAgICAgIChfYWxsLCBoZWFkOiBzdHJpbmcsIG51bWJlcnM6IHN0cmluZykgPT5cbiAgICAgICAgICBgJHtoZWFkLnRvTG93ZXJDYXNlKCl9XyR7bnVtYmVycy50b0xvd2VyQ2FzZSgpfWAsXG4gICAgICApO1xuXG4gICAgICBjaXJjdWl0QnJlYWtlciArPSAxO1xuICAgIH1cbiAgfVxuXG4gIC8vIE1hdGNoIG9ubHkgdGhlIGNoYXJhY3RlciBiZWZvcmUgYSBjYXBpdGFsIHRvIGF2b2lkIHJlc2Nhbm5pbmcgbG9uZyBwcmVmaXhlcy5cbiAgcmVzdWx0ID0gcmVzdWx0LnJlcGxhY2UoLyguKSg/PVtBLVpdKS9nLCAoaGVhZDogc3RyaW5nKSA9PlxuICAgIGNpcmN1aXRCcmVha2VyKysgPCAxMCA/IGAke2hlYWR9X2AgOiBoZWFkLFxuICApO1xuXG4gIHJldHVybiByZXN1bHQudG9Mb3dlckNhc2UoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvU25ha2U8VCBleHRlbmRzIHN0cmluZz4odGVybTogVCk6IFRvU25ha2U8VD4ge1xuICByZXR1cm4gdG9TbmFrZVdpdGhTcGxpdE51bWJlcnModGVybSwgdHJ1ZSkgYXMgVG9TbmFrZTxUPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvU25ha2VOb1NwbGl0TnVtYmVyczxUIGV4dGVuZHMgc3RyaW5nPihcbiAgdGVybTogVCxcbik6IFRvU25ha2U8VCwgZmFsc2U+IHtcbiAgcmV0dXJuIHRvU25ha2VXaXRoU3BsaXROdW1iZXJzKHRlcm0sIGZhbHNlKSBhcyBUb1NuYWtlPFQsIGZhbHNlPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG9iamVjdFRvU25ha2U8VCBleHRlbmRzIG9iamVjdD4ob2JqOiBUKTogT2JqZWN0VG9TbmFrZTxUPiB7XG4gIHJldHVybiBjb252ZXJ0T2JqZWN0KG9iaiwgKGtleSkgPT4gdG9TbmFrZVdpdGhTcGxpdE51bWJlcnMoa2V5LCB0cnVlKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBvYmplY3RUb1NuYWtlTm9TcGxpdE51bWJlcnM8VCBleHRlbmRzIG9iamVjdD4oXG4gIG9iajogVCxcbik6IE9iamVjdFRvU25ha2U8VCwgZmFsc2U+IHtcbiAgcmV0dXJuIGNvbnZlcnRPYmplY3Qob2JqLCAoa2V5KSA9PiB0b1NuYWtlV2l0aFNwbGl0TnVtYmVycyhrZXksIGZhbHNlKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0b1NjcmVhbWluZ1NuYWtlPFQgZXh0ZW5kcyBzdHJpbmc+KFxuICB0ZXJtOiBULFxuKTogVG9TY3JlYW1pbmdTbmFrZTxUPiB7XG4gIHJldHVybiB0b1NuYWtlKHRlcm0pLnRvVXBwZXJDYXNlKCkgYXMgVG9TY3JlYW1pbmdTbmFrZTxUPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvU2NyZWFtaW5nU25ha2VOb1NwbGl0TnVtYmVyczxUIGV4dGVuZHMgc3RyaW5nPihcbiAgdGVybTogVCxcbik6IFRvU2NyZWFtaW5nU25ha2U8VCwgZmFsc2U+IHtcbiAgcmV0dXJuIHRvU25ha2VOb1NwbGl0TnVtYmVycyh0ZXJtKS50b1VwcGVyQ2FzZSgpIGFzIFRvU2NyZWFtaW5nU25ha2U8VCwgZmFsc2U+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gb2JqZWN0VG9TY3JlYW1pbmdTbmFrZTxUIGV4dGVuZHMgb2JqZWN0PihcbiAgb2JqOiBULFxuKTogT2JqZWN0VG9TY3JlYW1pbmdTbmFrZTxUPiB7XG4gIHJldHVybiBjb252ZXJ0T2JqZWN0KG9iaiwgdG9TY3JlYW1pbmdTbmFrZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBvYmplY3RUb1NjcmVhbWluZ1NuYWtlTm9TcGxpdE51bWJlcnM8VCBleHRlbmRzIG9iamVjdD4oXG4gIG9iajogVCxcbik6IE9iamVjdFRvU2NyZWFtaW5nU25ha2U8VCwgZmFsc2U+IHtcbiAgcmV0dXJuIGNvbnZlcnRPYmplY3Qob2JqLCB0b1NjcmVhbWluZ1NuYWtlTm9TcGxpdE51bWJlcnMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdG9QYXNjYWw8VCBleHRlbmRzIHN0cmluZz4odGVybTogVCk6IFRvUGFzY2FsPFQ+IHtcbiAgaWYgKGlzTnVtZXJpY0tleSh0ZXJtKSkge1xuICAgIHJldHVybiB0ZXJtIGFzIFRvUGFzY2FsPFQ+O1xuICB9XG5cbiAgcmV0dXJuIHRvQ2FtZWwodGVybSkucmVwbGFjZSgvXihbYS16XSkvLCAobSkgPT5cbiAgICBtWzBdLnRvVXBwZXJDYXNlKCksXG4gICkgYXMgVG9QYXNjYWw8VD47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBvYmplY3RUb1Bhc2NhbDxUIGV4dGVuZHMgb2JqZWN0PihvYmo6IFQpOiBPYmplY3RUb1Bhc2NhbDxUPiB7XG4gIHJldHVybiBjb252ZXJ0T2JqZWN0KG9iaiwgdG9QYXNjYWwpO1xufVxuXG5leHBvcnQgdHlwZSBUb0NhbWVsPFMgZXh0ZW5kcyBzdHJpbmcgfCBudW1iZXIgfCBzeW1ib2w+ID0gUyBleHRlbmRzIHN0cmluZ1xuICA/IHN0cmluZyBleHRlbmRzIFNcbiAgICA/IFVuY2FwaXRhbGl6ZTxTPlxuICAgIDogUyBleHRlbmRzIE51bWVyaWNLZXlcbiAgICA/IFNcbiAgICA6IENhbWVsU2NhbjxDYW1lbEluaXRpYWw8Uz4+XG4gIDogbmV2ZXI7XG5cbi8vIE1hdGNoIHRoZSBydW50aW1lJ3MgaW5pdGlhbCBBU0NJSSBjYXBpdGFsIHJlcGxhY2VtZW50IGFuZCBvbmUtY2hhcmFjdGVyIGNhc2UuXG50eXBlIENhbWVsSW5pdGlhbDxTIGV4dGVuZHMgc3RyaW5nPiA9IFMgZXh0ZW5kcyBgJHtpbmZlciBIZWFkfSR7aW5mZXIgVGFpbH1gXG4gID8gVGFpbCBleHRlbmRzICcnXG4gICAgPyBMb3dlcmNhc2U8SGVhZD5cbiAgICA6IEhlYWQgZXh0ZW5kcyBDYXBpdGFsTGV0dGVyc1xuICAgID8gYCR7TG93ZXJjYXNlPEhlYWQ+fSR7VGFpbH1gXG4gICAgOiBTXG4gIDogUztcblxuLy8gQSBzZXBhcmF0b3IgaXMgY29uc3VtZWQgb25seSBiZWZvcmUgYSBsb3dlcmNhc2UgQVNDSUkgbGV0dGVyIG9yIGEgZGlnaXQuXG4vLyBDb25zdW1lIGJvdGggY2hhcmFjdGVycyB0b2dldGhlciwganVzdCBhcyB0aGUgcnVudGltZSdzIGdsb2JhbCByZWdleCBkb2VzLlxudHlwZSBDYW1lbFNjYW48UyBleHRlbmRzIHN0cmluZywgQWNjIGV4dGVuZHMgc3RyaW5nID0gJyc+ID1cbiAgUyBleHRlbmRzIGAke2luZmVyIEhlYWR9JHtpbmZlciBUYWlsfWBcbiAgICA/IEhlYWQgZXh0ZW5kcyAnXycgfCAnLSdcbiAgICAgID8gVGFpbCBleHRlbmRzIGAke2luZmVyIE5leHR9JHtpbmZlciBSZXN0fWBcbiAgICAgICAgPyBOZXh0IGV4dGVuZHMgTG93ZXJjYXNlTGV0dGVycyB8IE51bWJlcnNcbiAgICAgICAgICA/IENhbWVsU2NhbjxSZXN0LCBgJHtBY2N9JHtVcHBlcmNhc2U8TmV4dD59YD5cbiAgICAgICAgICA6IEV4dHJhY3Q8TG93ZXJjYXNlTGV0dGVycyB8IE51bWJlcnMsIE5leHQ+IGV4dGVuZHMgbmV2ZXJcbiAgICAgICAgICA/IENhbWVsU2NhbjxUYWlsLCBgJHtBY2N9JHtIZWFkfWA+XG4gICAgICAgICAgOiBgJHtBY2N9JHtzdHJpbmd9YFxuICAgICAgICA6IFRhaWwgZXh0ZW5kcyAnJyA/IGAke0FjY30ke0hlYWR9YCA6IGAke0FjY30ke3N0cmluZ31gXG4gICAgICA6IENhbWVsU2NhbjxUYWlsLCBgJHtBY2N9JHtIZWFkfWA+XG4gICAgOiBTIGV4dGVuZHMgJycgPyBBY2MgOiBgJHtBY2N9JHtzdHJpbmd9YDtcblxuZXhwb3J0IHR5cGUgT2JqZWN0VG9DYW1lbDxUIGV4dGVuZHMgb2JqZWN0IHwgdW5kZWZpbmVkIHwgbnVsbD4gPVxuICBUIGV4dGVuZHMgdW5kZWZpbmVkXG4gICAgPyB1bmRlZmluZWRcbiAgICA6IFQgZXh0ZW5kcyBudWxsXG4gICAgPyBudWxsXG4gICAgOiBUIGV4dGVuZHMgQXJyYXk8aW5mZXIgQXJyYXlUeXBlPlxuICAgID8gQXJyYXk8Q29udmVydEFycmF5SXRlbTxBcnJheVR5cGUsICdjYW1lbCc+PlxuICAgIDogVCBleHRlbmRzIFVpbnQ4QXJyYXlcbiAgICA/IFVpbnQ4QXJyYXlcbiAgICA6IFQgZXh0ZW5kcyBEYXRlXG4gICAgPyBEYXRlXG4gICAgOiB7XG4gICAgICAgIFtLIGluIGtleW9mIFQgYXMgVG9DYW1lbDxLPl06IENvbnZlcnRPYmplY3RWYWx1ZTxUW0tdLCAnY2FtZWwnPjtcbiAgICAgIH07XG5cbmV4cG9ydCB0eXBlIFRvUGFzY2FsPFMgZXh0ZW5kcyBzdHJpbmcgfCBudW1iZXIgfCBzeW1ib2w+ID0gUyBleHRlbmRzIHN0cmluZ1xuICA/IHN0cmluZyBleHRlbmRzIFNcbiAgICA/IENhcGl0YWxpemU8Uz5cbiAgICA6IFBhc2NhbEluaXRpYWw8VG9DYW1lbDxTPj5cbiAgOiBuZXZlcjtcblxudHlwZSBQYXNjYWxJbml0aWFsPFMgZXh0ZW5kcyBzdHJpbmc+ID0gUyBleHRlbmRzIGAke2luZmVyIEhlYWR9JHtpbmZlciBUYWlsfWBcbiAgPyBIZWFkIGV4dGVuZHMgTG93ZXJjYXNlTGV0dGVyc1xuICAgID8gYCR7VXBwZXJjYXNlPEhlYWQ+fSR7VGFpbH1gXG4gICAgOiBTXG4gIDogUztcblxuZXhwb3J0IHR5cGUgT2JqZWN0VG9QYXNjYWw8VCBleHRlbmRzIG9iamVjdCB8IHVuZGVmaW5lZCB8IG51bGw+ID1cbiAgVCBleHRlbmRzIHVuZGVmaW5lZFxuICAgID8gdW5kZWZpbmVkXG4gICAgOiBUIGV4dGVuZHMgbnVsbFxuICAgID8gbnVsbFxuICAgIDogVCBleHRlbmRzIEFycmF5PGluZmVyIEFycmF5VHlwZT5cbiAgICA/IEFycmF5PENvbnZlcnRBcnJheUl0ZW08QXJyYXlUeXBlLCAncGFzY2FsJz4+XG4gICAgOiBUIGV4dGVuZHMgVWludDhBcnJheVxuICAgID8gVWludDhBcnJheVxuICAgIDogVCBleHRlbmRzIERhdGVcbiAgICA/IERhdGVcbiAgICA6IHtcbiAgICAgICAgW0sgaW4ga2V5b2YgVCBhcyBUb1Bhc2NhbDxLPl06IENvbnZlcnRPYmplY3RWYWx1ZTxUW0tdLCAncGFzY2FsJz47XG4gICAgICB9O1xuXG5leHBvcnQgdHlwZSBUb1NuYWtlPFxuICBTIGV4dGVuZHMgc3RyaW5nIHwgbnVtYmVyIHwgc3ltYm9sLFxuICBTcGxpdE51bWJlcnMgZXh0ZW5kcyBib29sZWFuID0gdHJ1ZSxcbj4gPSBTIGV4dGVuZHMgc3RyaW5nXG4gID8gc3RyaW5nIGV4dGVuZHMgU1xuICAgID8gc3RyaW5nXG4gICAgOiBTIGV4dGVuZHMgTnVtZXJpY0tleVxuICAgID8gU1xuICAgIDogU25ha2VTY2FuPFMsICcnLCAnc3RhcnQnLCBTcGxpdE51bWJlcnM+XG4gIDogbmV2ZXI7XG5cbmV4cG9ydCB0eXBlIE9iamVjdFRvU25ha2U8XG4gIFQgZXh0ZW5kcyBvYmplY3QgfCB1bmRlZmluZWQgfCBudWxsLFxuICBTcGxpdE51bWJlcnMgZXh0ZW5kcyBib29sZWFuID0gdHJ1ZSxcbj4gPVxuICBUIGV4dGVuZHMgdW5kZWZpbmVkXG4gICAgPyB1bmRlZmluZWRcbiAgICA6IFQgZXh0ZW5kcyBudWxsXG4gICAgPyBudWxsXG4gICAgOiBUIGV4dGVuZHMgQXJyYXk8aW5mZXIgQXJyYXlUeXBlPlxuICAgID8gQXJyYXk8Q29udmVydEFycmF5SXRlbTxBcnJheVR5cGUsICdzbmFrZScsIFNwbGl0TnVtYmVycz4+XG4gICAgOiBUIGV4dGVuZHMgVWludDhBcnJheVxuICAgID8gVWludDhBcnJheVxuICAgIDogVCBleHRlbmRzIERhdGVcbiAgICA/IERhdGVcbiAgICA6IHtcbiAgICAgICAgW0sgaW4ga2V5b2YgVCBhcyBUb1NuYWtlPEssIFNwbGl0TnVtYmVycz5dOiBDb252ZXJ0T2JqZWN0VmFsdWU8XG4gICAgICAgICAgVFtLXSxcbiAgICAgICAgICAnc25ha2UnLFxuICAgICAgICAgIFNwbGl0TnVtYmVyc1xuICAgICAgICA+O1xuICAgICAgfTtcblxuZXhwb3J0IHR5cGUgVG9TY3JlYW1pbmdTbmFrZTxcbiAgUyBleHRlbmRzIHN0cmluZyB8IG51bWJlciB8IHN5bWJvbCxcbiAgU3BsaXROdW1iZXJzIGV4dGVuZHMgYm9vbGVhbiA9IHRydWUsXG4+ID0gVXBwZXJjYXNlPFRvU25ha2U8UywgU3BsaXROdW1iZXJzPj47XG5cbmV4cG9ydCB0eXBlIE9iamVjdFRvU2NyZWFtaW5nU25ha2U8XG4gIFQgZXh0ZW5kcyBvYmplY3QgfCB1bmRlZmluZWQgfCBudWxsLFxuICBTcGxpdE51bWJlcnMgZXh0ZW5kcyBib29sZWFuID0gdHJ1ZSxcbj4gPVxuICBUIGV4dGVuZHMgdW5kZWZpbmVkXG4gICAgPyB1bmRlZmluZWRcbiAgICA6IFQgZXh0ZW5kcyBudWxsXG4gICAgPyBudWxsXG4gICAgOiBUIGV4dGVuZHMgQXJyYXk8aW5mZXIgQXJyYXlUeXBlPlxuICAgID8gQXJyYXk8Q29udmVydEFycmF5SXRlbTxBcnJheVR5cGUsICdzY3JlYW1pbmdTbmFrZScsIFNwbGl0TnVtYmVycz4+XG4gICAgOiBUIGV4dGVuZHMgVWludDhBcnJheVxuICAgID8gVWludDhBcnJheVxuICAgIDogVCBleHRlbmRzIERhdGVcbiAgICA/IERhdGVcbiAgICA6IHtcbiAgICAgICAgW0sgaW4ga2V5b2YgVCBhcyBUb1NjcmVhbWluZ1NuYWtlPEssIFNwbGl0TnVtYmVycz5dOiBDb252ZXJ0T2JqZWN0VmFsdWU8XG4gICAgICAgICAgVFtLXSxcbiAgICAgICAgICAnc2NyZWFtaW5nU25ha2UnLFxuICAgICAgICAgIFNwbGl0TnVtYmVyc1xuICAgICAgICA+O1xuICAgICAgfTtcblxudHlwZSBDYXNlTW9kZSA9ICdjYW1lbCcgfCAncGFzY2FsJyB8ICdzbmFrZScgfCAnc2NyZWFtaW5nU25ha2UnO1xuXG50eXBlIE51bWVyaWNLZXkgPSBgJHtudW1iZXJ9YDtcblxudHlwZSBTbmFrZVNjYW48XG4gIFMgZXh0ZW5kcyBzdHJpbmcsXG4gIEFjYyBleHRlbmRzIHN0cmluZyxcbiAgUHJldmlvdXMgZXh0ZW5kcyBDaGFyYWN0ZXJLaW5kLFxuICBTcGxpdE51bWJlcnMgZXh0ZW5kcyBib29sZWFuLFxuPiA9IFMgZXh0ZW5kcyBgJHtpbmZlciBIZWFkfSR7aW5mZXIgVGFpbH1gXG4gID8gSGVhZCBleHRlbmRzIE51bWJlcnNcbiAgICA/IFRha2VOdW1iZXJSdW48Uz4gZXh0ZW5kcyBbXG4gICAgICAgIGluZmVyIE51bWJlclJ1biBleHRlbmRzIHN0cmluZyxcbiAgICAgICAgaW5mZXIgQWZ0ZXJOdW1iZXIgZXh0ZW5kcyBzdHJpbmcsXG4gICAgICBdXG4gICAgICA/IFNuYWtlU2NhbjxcbiAgICAgICAgICBBZnRlck51bWJlcixcbiAgICAgICAgICBgJHtBY2N9JHtOdW1iZXJTZXBhcmF0b3I8XG4gICAgICAgICAgICBQcmV2aW91cyxcbiAgICAgICAgICAgIEFmdGVyTnVtYmVyLFxuICAgICAgICAgICAgU3BsaXROdW1iZXJzXG4gICAgICAgICAgPn0ke051bWJlclJ1bn1gLFxuICAgICAgICAgICdudW1iZXInLFxuICAgICAgICAgIFNwbGl0TnVtYmVyc1xuICAgICAgICA+XG4gICAgICA6IG5ldmVyXG4gICAgOiBIZWFkIGV4dGVuZHMgQ2FwaXRhbExldHRlcnNcbiAgICA/IFNuYWtlU2NhbjxcbiAgICAgICAgVGFpbCxcbiAgICAgICAgYCR7QWNjfSR7V29yZFNlcGFyYXRvcjxBY2M+fSR7TG93ZXJjYXNlPEhlYWQ+fWAsXG4gICAgICAgICd1cHBlcicsXG4gICAgICAgIFNwbGl0TnVtYmVyc1xuICAgICAgPlxuICAgIDogSGVhZCBleHRlbmRzIExvd2VyY2FzZUxldHRlcnNcbiAgICA/IFNuYWtlU2NhbjxUYWlsLCBgJHtBY2N9JHtIZWFkfWAsICdsb3dlcicsIFNwbGl0TnVtYmVycz5cbiAgICA6IFNuYWtlU2NhbjxUYWlsLCBgJHtBY2N9JHtIZWFkfWAsICdvdGhlcicsIFNwbGl0TnVtYmVycz5cbiAgOiBBY2M7XG5cbnR5cGUgVGFrZU51bWJlclJ1bjxcbiAgUyBleHRlbmRzIHN0cmluZyxcbiAgQWNjIGV4dGVuZHMgc3RyaW5nID0gJycsXG4+ID0gUyBleHRlbmRzIGAke2luZmVyIEhlYWR9JHtpbmZlciBUYWlsfWBcbiAgPyBIZWFkIGV4dGVuZHMgTnVtYmVyc1xuICAgID8gVGFrZU51bWJlclJ1bjxUYWlsLCBgJHtBY2N9JHtIZWFkfWA+XG4gICAgOiBbQWNjLCBTXVxuICA6IFtBY2MsICcnXTtcblxudHlwZSBOdW1iZXJTZXBhcmF0b3I8XG4gIFByZXZpb3VzIGV4dGVuZHMgQ2hhcmFjdGVyS2luZCxcbiAgQWZ0ZXJOdW1iZXIgZXh0ZW5kcyBzdHJpbmcsXG4gIFNwbGl0TnVtYmVycyBleHRlbmRzIGJvb2xlYW4sXG4+ID0gU3BsaXROdW1iZXJzIGV4dGVuZHMgZmFsc2VcbiAgPyAnJ1xuICA6IFByZXZpb3VzIGV4dGVuZHMgJ2xvd2VyJ1xuICA/IEFmdGVyTnVtYmVyIGV4dGVuZHMgYCR7Q2FwaXRhbExldHRlcnN9JHtMb3dlcmNhc2VMZXR0ZXJzfSR7c3RyaW5nfWBcbiAgICA/ICcnXG4gICAgOiAnXydcbiAgOiAnJztcblxudHlwZSBXb3JkU2VwYXJhdG9yPEFjYyBleHRlbmRzIHN0cmluZz4gPSBBY2MgZXh0ZW5kcyAnJyA/ICcnIDogJ18nO1xuXG50eXBlIENoYXJhY3RlcktpbmQgPSAnc3RhcnQnIHwgJ2xvd2VyJyB8ICd1cHBlcicgfCAnbnVtYmVyJyB8ICdvdGhlcic7XG5cbnR5cGUgQ29udmVydDxcbiAgVCBleHRlbmRzIG9iamVjdCB8IHVuZGVmaW5lZCB8IG51bGwsXG4gIE1vZGUgZXh0ZW5kcyBDYXNlTW9kZSxcbiAgU3BsaXROdW1iZXJzIGV4dGVuZHMgYm9vbGVhbixcbj4gPVxuICBNb2RlIGV4dGVuZHMgJ2NhbWVsJ1xuICAgID8gT2JqZWN0VG9DYW1lbDxUPlxuICAgIDogTW9kZSBleHRlbmRzICdwYXNjYWwnXG4gICAgPyBPYmplY3RUb1Bhc2NhbDxUPlxuICAgIDogTW9kZSBleHRlbmRzICdzbmFrZSdcbiAgICA/IE9iamVjdFRvU25ha2U8VCwgU3BsaXROdW1iZXJzPlxuICAgIDogT2JqZWN0VG9TY3JlYW1pbmdTbmFrZTxULCBTcGxpdE51bWJlcnM+O1xuXG50eXBlIENvbnZlcnRBcnJheUl0ZW08XG4gIFQsXG4gIE1vZGUgZXh0ZW5kcyBDYXNlTW9kZSxcbiAgU3BsaXROdW1iZXJzIGV4dGVuZHMgYm9vbGVhbiA9IHRydWUsXG4+ID0gVCBleHRlbmRzIG9iamVjdFxuICA/IENvbnZlcnQ8VCwgTW9kZSwgU3BsaXROdW1iZXJzPlxuICA6IFQ7XG5cbnR5cGUgQ29udmVydE9iamVjdFZhbHVlPFxuICBULFxuICBNb2RlIGV4dGVuZHMgQ2FzZU1vZGUsXG4gIFNwbGl0TnVtYmVycyBleHRlbmRzIGJvb2xlYW4gPSB0cnVlLFxuPiA9IFQgZXh0ZW5kcyBBcnJheTxpbmZlciBBcnJheVR5cGU+XG4gID8gQXJyYXk8Q29udmVydEFycmF5SXRlbTxBcnJheVR5cGUsIE1vZGUsIFNwbGl0TnVtYmVycz4+XG4gIDogVCBleHRlbmRzIG9iamVjdCB8IHVuZGVmaW5lZCB8IG51bGxcbiAgPyBDb252ZXJ0PFQsIE1vZGUsIFNwbGl0TnVtYmVycz5cbiAgOiBUO1xuXG5mdW5jdGlvbiBpc051bWVyaWNLZXkodGVybTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiAvXi0/XFxkKyg/OlxcLlxcZCspPyQvLnRlc3QodGVybSk7XG59XG5cbnR5cGUgQ2FwaXRhbExldHRlcnMgPVxuICB8ICdBJ1xuICB8ICdCJ1xuICB8ICdDJ1xuICB8ICdEJ1xuICB8ICdFJ1xuICB8ICdGJ1xuICB8ICdHJ1xuICB8ICdIJ1xuICB8ICdJJ1xuICB8ICdKJ1xuICB8ICdLJ1xuICB8ICdMJ1xuICB8ICdNJ1xuICB8ICdOJ1xuICB8ICdPJ1xuICB8ICdQJ1xuICB8ICdRJ1xuICB8ICdSJ1xuICB8ICdTJ1xuICB8ICdUJ1xuICB8ICdVJ1xuICB8ICdWJ1xuICB8ICdXJ1xuICB8ICdYJ1xuICB8ICdZJ1xuICB8ICdaJztcblxudHlwZSBMb3dlcmNhc2VMZXR0ZXJzID1cbiAgfCAnYSdcbiAgfCAnYidcbiAgfCAnYydcbiAgfCAnZCdcbiAgfCAnZSdcbiAgfCAnZidcbiAgfCAnZydcbiAgfCAnaCdcbiAgfCAnaSdcbiAgfCAnaidcbiAgfCAnaydcbiAgfCAnbCdcbiAgfCAnbSdcbiAgfCAnbidcbiAgfCAnbydcbiAgfCAncCdcbiAgfCAncSdcbiAgfCAncidcbiAgfCAncydcbiAgfCAndCdcbiAgfCAndSdcbiAgfCAndidcbiAgfCAndydcbiAgfCAneCdcbiAgfCAneSdcbiAgfCAneic7XG5cbnR5cGUgTnVtYmVycyA9ICcwJyB8ICcxJyB8ICcyJyB8ICczJyB8ICc0JyB8ICc1JyB8ICc2JyB8ICc3JyB8ICc4JyB8ICc5JztcbiJdfQ==
package/package.json CHANGED
@@ -62,7 +62,7 @@
62
62
  ]
63
63
  }
64
64
  },
65
- "version": "2.3.2",
65
+ "version": "2.3.3",
66
66
  "types": "lib/index.d.ts",
67
67
  "exports": {
68
68
  ".": {